From de59a7f3386b06e9799d0099311eafc31a8141a9 Mon Sep 17 00:00:00 2001 From: Cory McWilliams Date: Thu, 10 Nov 2022 02:39:00 +0000 Subject: [PATCH] Perfetto UI => speedscope. I'm not going to switch away from JSON traces like Perfetto UI wants me to, and this is light, fast, and sufficient. git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4031 ed5197a5-7fde-0310-b194-c3ffbd925b24 --- core/client.js | 39 +- core/core.js | 4 +- deps/perfetto/assets/MaterialIcons.woff2 | Bin 57944 -> 0 bytes deps/perfetto/assets/Raleway-Regular.woff2 | Bin 20444 -> 0 bytes deps/perfetto/assets/Raleway-Thin.woff2 | Bin 19660 -> 0 bytes deps/perfetto/assets/Roboto-100.woff2 | Bin 15712 -> 0 bytes deps/perfetto/assets/Roboto-300.woff2 | Bin 15732 -> 0 bytes deps/perfetto/assets/Roboto-400.woff2 | Bin 15688 -> 0 bytes deps/perfetto/assets/Roboto-500.woff2 | Bin 15920 -> 0 bytes .../assets/RobotoCondensed-Light.woff2 | Bin 11052 -> 0 bytes .../assets/RobotoCondensed-Regular.woff2 | Bin 10968 -> 0 bytes deps/perfetto/assets/RobotoMono-Regular.woff2 | Bin 16028 -> 0 bytes deps/perfetto/assets/brand.png | Bin 4000 -> 0 bytes .../assets/catapult_trace_viewer.html | 3946 - deps/perfetto/assets/catapult_trace_viewer.js | 7539 - deps/perfetto/assets/favicon.png | Bin 2238 -> 0 bytes deps/perfetto/assets/logo-128.png | Bin 14930 -> 0 bytes deps/perfetto/assets/logo-3d.png | Bin 48137 -> 0 bytes deps/perfetto/assets/rec_atrace.png | Bin 43695 -> 0 bytes deps/perfetto/assets/rec_battery_counters.png | Bin 27414 -> 0 bytes deps/perfetto/assets/rec_board_voltage.png | Bin 28263 -> 0 bytes deps/perfetto/assets/rec_cpu_coarse.png | Bin 53670 -> 0 bytes deps/perfetto/assets/rec_cpu_fine.png | Bin 84341 -> 0 bytes deps/perfetto/assets/rec_cpu_freq.png | Bin 29285 -> 0 bytes deps/perfetto/assets/rec_cpu_voltage.png | Bin 24619 -> 0 bytes deps/perfetto/assets/rec_frame_timeline.png | Bin 25975 -> 0 bytes deps/perfetto/assets/rec_ftrace.png | Bin 22382 -> 0 bytes deps/perfetto/assets/rec_gpu_mem_total.png | Bin 52638 -> 0 bytes deps/perfetto/assets/rec_java_heap_dump.png | Bin 62897 -> 0 bytes deps/perfetto/assets/rec_lmk.png | Bin 43733 -> 0 bytes deps/perfetto/assets/rec_logcat.png | Bin 42205 -> 0 bytes deps/perfetto/assets/rec_long_trace.png | Bin 21705 -> 0 bytes deps/perfetto/assets/rec_mem_hifreq.png | Bin 16988 -> 0 bytes deps/perfetto/assets/rec_meminfo.png | Bin 58545 -> 0 bytes .../assets/rec_native_heap_profiler.png | Bin 65155 -> 0 bytes deps/perfetto/assets/rec_one_shot.png | Bin 23210 -> 0 bytes deps/perfetto/assets/rec_ps_stats.png | Bin 72069 -> 0 bytes deps/perfetto/assets/rec_ring_buf.png | Bin 24968 -> 0 bytes deps/perfetto/assets/rec_syscalls.png | Bin 29115 -> 0 bytes deps/perfetto/assets/rec_vmstat.png | Bin 49966 -> 0 bytes deps/perfetto/controller_bundle.js | 99289 ------------- deps/perfetto/controller_bundle.js.map | 1 - deps/perfetto/engine_bundle.js | 6711 - deps/perfetto/engine_bundle.js.map | 1 - deps/perfetto/frontend_bundle.js | 115072 --------------- deps/perfetto/frontend_bundle.js.map | 1 - deps/perfetto/index.html | 118 - deps/perfetto/manifest.json | 49 - deps/perfetto/perfetto.css | 2687 - deps/perfetto/trace_processor.wasm | Bin 7066469 -> 0 bytes deps/perfetto/trace_to_text.wasm | Bin 7254782 -> 0 bytes deps/perfetto/traceconv_bundle.js | 7122 - deps/perfetto/traceconv_bundle.js.map | 1 - deps/speedscope/LICENSE | 21 + deps/speedscope/README | 2 + deps/speedscope/demangle-cpp.1768f4cc.js | 4 + deps/speedscope/demangle-cpp.1768f4cc.js.map | 1 + deps/speedscope/favicon-16x16.f74b3187.png | Bin 0 -> 679 bytes deps/speedscope/favicon-32x32.bc503437.png | Bin 0 -> 1585 bytes deps/speedscope/file-format-schema.json | 324 + deps/speedscope/import.a03bf119.js | 119 + deps/speedscope/import.a03bf119.js.map | 1 + deps/speedscope/index.html | 2 + ...vertx-stacks-01-collapsed-all.2681da68.txt | 199 + deps/speedscope/release.txt | 3 + deps/speedscope/reset.8c46b7a1.css | 2 + deps/speedscope/reset.8c46b7a1.css.map | 1 + deps/speedscope/source-map.438fa06b.js | 24 + deps/speedscope/source-map.438fa06b.js.map | 1 + deps/speedscope/speedscope.eee21de6.js | 193 + deps/speedscope/speedscope.eee21de6.js.map | 1 + 71 files changed, 901 insertions(+), 242577 deletions(-) delete mode 100644 deps/perfetto/assets/MaterialIcons.woff2 delete mode 100644 deps/perfetto/assets/Raleway-Regular.woff2 delete mode 100644 deps/perfetto/assets/Raleway-Thin.woff2 delete mode 100644 deps/perfetto/assets/Roboto-100.woff2 delete mode 100644 deps/perfetto/assets/Roboto-300.woff2 delete mode 100644 deps/perfetto/assets/Roboto-400.woff2 delete mode 100644 deps/perfetto/assets/Roboto-500.woff2 delete mode 100644 deps/perfetto/assets/RobotoCondensed-Light.woff2 delete mode 100644 deps/perfetto/assets/RobotoCondensed-Regular.woff2 delete mode 100644 deps/perfetto/assets/RobotoMono-Regular.woff2 delete mode 100644 deps/perfetto/assets/brand.png delete mode 100644 deps/perfetto/assets/catapult_trace_viewer.html delete mode 100644 deps/perfetto/assets/catapult_trace_viewer.js delete mode 100644 deps/perfetto/assets/favicon.png delete mode 100644 deps/perfetto/assets/logo-128.png delete mode 100644 deps/perfetto/assets/logo-3d.png delete mode 100644 deps/perfetto/assets/rec_atrace.png delete mode 100644 deps/perfetto/assets/rec_battery_counters.png delete mode 100644 deps/perfetto/assets/rec_board_voltage.png delete mode 100644 deps/perfetto/assets/rec_cpu_coarse.png delete mode 100644 deps/perfetto/assets/rec_cpu_fine.png delete mode 100644 deps/perfetto/assets/rec_cpu_freq.png delete mode 100644 deps/perfetto/assets/rec_cpu_voltage.png delete mode 100644 deps/perfetto/assets/rec_frame_timeline.png delete mode 100644 deps/perfetto/assets/rec_ftrace.png delete mode 100644 deps/perfetto/assets/rec_gpu_mem_total.png delete mode 100644 deps/perfetto/assets/rec_java_heap_dump.png delete mode 100644 deps/perfetto/assets/rec_lmk.png delete mode 100644 deps/perfetto/assets/rec_logcat.png delete mode 100644 deps/perfetto/assets/rec_long_trace.png delete mode 100644 deps/perfetto/assets/rec_mem_hifreq.png delete mode 100644 deps/perfetto/assets/rec_meminfo.png delete mode 100644 deps/perfetto/assets/rec_native_heap_profiler.png delete mode 100644 deps/perfetto/assets/rec_one_shot.png delete mode 100644 deps/perfetto/assets/rec_ps_stats.png delete mode 100644 deps/perfetto/assets/rec_ring_buf.png delete mode 100644 deps/perfetto/assets/rec_syscalls.png delete mode 100644 deps/perfetto/assets/rec_vmstat.png delete mode 100644 deps/perfetto/controller_bundle.js delete mode 100644 deps/perfetto/controller_bundle.js.map delete mode 100644 deps/perfetto/engine_bundle.js delete mode 100644 deps/perfetto/engine_bundle.js.map delete mode 100644 deps/perfetto/frontend_bundle.js delete mode 100644 deps/perfetto/frontend_bundle.js.map delete mode 100644 deps/perfetto/index.html delete mode 100644 deps/perfetto/manifest.json delete mode 100644 deps/perfetto/perfetto.css delete mode 100755 deps/perfetto/trace_processor.wasm delete mode 100755 deps/perfetto/trace_to_text.wasm delete mode 100644 deps/perfetto/traceconv_bundle.js delete mode 100644 deps/perfetto/traceconv_bundle.js.map create mode 100644 deps/speedscope/LICENSE create mode 100644 deps/speedscope/README create mode 100644 deps/speedscope/demangle-cpp.1768f4cc.js create mode 100644 deps/speedscope/demangle-cpp.1768f4cc.js.map create mode 100644 deps/speedscope/favicon-16x16.f74b3187.png create mode 100644 deps/speedscope/favicon-32x32.bc503437.png create mode 100644 deps/speedscope/file-format-schema.json create mode 100644 deps/speedscope/import.a03bf119.js create mode 100644 deps/speedscope/import.a03bf119.js.map create mode 100644 deps/speedscope/index.html create mode 100644 deps/speedscope/perf-vertx-stacks-01-collapsed-all.2681da68.txt create mode 100644 deps/speedscope/release.txt create mode 100644 deps/speedscope/reset.8c46b7a1.css create mode 100644 deps/speedscope/reset.8c46b7a1.css.map create mode 100644 deps/speedscope/source-map.438fa06b.js create mode 100644 deps/speedscope/source-map.438fa06b.js.map create mode 100644 deps/speedscope/speedscope.eee21de6.js create mode 100644 deps/speedscope/speedscope.eee21de6.js.map diff --git a/core/client.js b/core/client.js index f7a394c3..52d53390 100644 --- a/core/client.js +++ b/core/client.js @@ -140,44 +140,7 @@ function showFiles() { } function trace() { - fetch('/trace') - .then(function(response) { - if (!response.ok) { - throw new Error('Request failed: ' + response.status + ' ' + response.statusText); - } - return response.arrayBuffer(); - }).then(function(data) { - let perfetto = window.open('/perfetto/'); - let done = false; - if (perfetto) { - function message_handler(message) { - if (message.data == 'PONG') { - perfetto.postMessage({ - perfetto: { - buffer: data, - title: 'Tilde Friends Trace', - url: window.location.href, - } - }, '*'); - done = true; - } - } - window.addEventListener('message', message_handler); - function ping_perfetto() { - perfetto.postMessage('PING', window.location.origin); - if (!done && !perfetto.closed) { - setTimeout(ping_perfetto, 50); - } else { - window.removeEventListener('message', message_handler); - } - } - setTimeout(ping_perfetto, 50); - } else { - alert("Unable to open perfetto."); - } - }).catch(function(error) { - alert('Failed to load trace: ' + error); - }); + window.open(`/speedscope/#profileURL=${encodeURIComponent('/trace')}&title=Tilde%20Friends`); } function stats() { diff --git a/core/core.js b/core/core.js index 12f35733..90bc8a49 100644 --- a/core/core.js +++ b/core/core.js @@ -781,8 +781,8 @@ loadSettings().then(function() { return staticFileHandler(request, response, null, match[1]); } else if (match = /^\/codemirror\/([\.\w-/]*)$/.exec(request.uri)) { return staticDirectoryHandler(request, response, 'deps/codemirror/', match[1]); - } else if (match = /^\/perfetto\/([\.\w-/]*)$/.exec(request.uri)) { - return staticDirectoryHandler(request, response, 'deps/perfetto/', match[1]); + } else if (match = /^\/speedscope\/([\.\w-/]*)$/.exec(request.uri)) { + return staticDirectoryHandler(request, response, 'deps/speedscope/', match[1]); } else if (match = /^\/split\/([\.\w-/]*)$/.exec(request.uri)) { return staticDirectoryHandler(request, response, 'deps/split/', match[1]); } else if (match = /^\/smoothie\/([\.\w-/]*)$/.exec(request.uri)) { diff --git a/deps/perfetto/assets/MaterialIcons.woff2 b/deps/perfetto/assets/MaterialIcons.woff2 deleted file mode 100644 index 2bd9d8ab8eb6c6a0799b36451cedee4f461ab62f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57944 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 z 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 Xupf#F^(WeC^m$JzWd1YFgSg~(CVpYf diff --git a/deps/perfetto/assets/Raleway-Thin.woff2 b/deps/perfetto/assets/Raleway-Thin.woff2 deleted file mode 100644 index 4a891c3099bbc906d547e39660e28a8a8ae0198f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19660 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 T(>VT_Mi<$8vg@m4Z2$lO1cn2U1 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 SYT_{{QN5GB$em6A0000dHT^mO diff --git a/deps/perfetto/assets/RobotoCondensed-Light.woff2 b/deps/perfetto/assets/RobotoCondensed-Light.woff2 deleted file mode 100644 index cc64540809e634329d9c1ac44a3a12f68c93339d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11052 zcmV+{E7R0>Pew8T0RR9104pp24gdfE092F!04me~0RR9100000000000000000000 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

YGKb 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 GeR=2#?LZI! diff --git a/deps/perfetto/assets/RobotoMono-Regular.woff2 b/deps/perfetto/assets/RobotoMono-Regular.woff2 deleted file mode 100644 index 6163de7b0ab1b46dfa01699d5d520fe2bf24980d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16028 zcmV;NK4ZamPew8T0RR9106v@m4*&oF0D1HP06stf0RR9100000000000000000000 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 WRwDDpyt?1>|I0r2p_97nig5sB!Lbzp diff --git a/deps/perfetto/assets/brand.png b/deps/perfetto/assets/brand.png deleted file mode 100644 index dc6f8b6f57f1de6d85a4799693ae759b93541d1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 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 eVppT_OCY6Vh$m>MasLXr0Vr)lWW` - - - - - - - - - - - - - - - - - - chrome://tracing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/deps/perfetto/assets/catapult_trace_viewer.js b/deps/perfetto/assets/catapult_trace_viewer.js deleted file mode 100644 index 197b1ef3..00000000 --- a/deps/perfetto/assets/catapult_trace_viewer.js +++ /dev/null @@ -1,7539 +0,0 @@ - -// Copyright 2015 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/* WARNING: This file is auto generated. - * - * Do not edit directly. - */ - -(function(){window.WebComponents=window.WebComponents||{flags:{}};var file="webcomponents.js";var script=document.querySelector('script[src*="'+file+'"]');var flags={};if(!flags.noOpts){location.search.slice(1).split("&").forEach(function(option){var parts=option.split("=");var match;if(parts[0]&&(match=parts[0].match(/wc-(.+)/))){flags[match[1]]=parts[1]||true;}});if(script){for(var i=0,a;a=script.attributes[i];i++){if(a.name!=="src"){flags[a.name]=a.value||true;}}} -if(flags.log&&flags.log.split){var parts=flags.log.split(",");flags.log={};parts.forEach(function(f){flags.log[f]=true;});}else{flags.log={};}} -flags.shadow=flags.shadow||flags.shadowdom||flags.polyfill;if(flags.shadow==="native"){flags.shadow=false;}else{flags.shadow=flags.shadow||!HTMLElement.prototype.createShadowRoot;} -if(flags.register){window.CustomElements=window.CustomElements||{flags:{}};window.CustomElements.flags.register=flags.register;} -WebComponents.flags=flags;})();if(WebComponents.flags.shadow){if(typeof WeakMap==="undefined"){(function(){var defineProperty=Object.defineProperty;var counter=Date.now()%1e9;var WeakMap=function(){this.name="__st"+(Math.random()*1e9>>>0)+(counter++ +"__");};WeakMap.prototype={set:function(key,value){var entry=key[this.name];if(entry&&entry[0]===key)entry[1]=value;else defineProperty(key,this.name,{value:[key,value],writable:true});return this;},get:function(key){var entry;return(entry=key[this.name])&&entry[0]===key?entry[1]:undefined;},"delete":function(key){var entry=key[this.name];if(!entry||entry[0]!==key)return false;entry[0]=entry[1]=undefined;return true;},has:function(key){var entry=key[this.name];if(!entry)return false;return entry[0]===key;}};window.WeakMap=WeakMap;})();} -window.ShadowDOMPolyfill={};(function(scope){"use strict";var constructorTable=new WeakMap();var nativePrototypeTable=new WeakMap();var wrappers=Object.create(null);function detectEval(){if(typeof chrome!=="undefined"&&chrome.app&&chrome.app.runtime){return false;} -if(navigator.getDeviceStorage){return false;} -try{var f=new Function("return true;");return f();}catch(ex){return false;}} -var hasEval=detectEval();function assert(b){if(!b)throw new Error("Assertion failed");} -var defineProperty=Object.defineProperty;var getOwnPropertyNames=Object.getOwnPropertyNames;var getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor;function mixin(to,from){var names=getOwnPropertyNames(from);for(var i=0;i0||j>0){if(i==0){edits.push(EDIT_ADD);j--;continue;} -if(j==0){edits.push(EDIT_DELETE);i--;continue;} -var northWest=distances[i-1][j-1];var west=distances[i-1][j];var north=distances[i][j-1];var min;if(west0){for(var i=0;i0&&ancestorsB.length>0){var a=ancestorsA.pop();var b=ancestorsB.pop();if(a===b)result=a;else break;} -return result;} -function getTreeScopeRoot(ts){if(!ts.parent)return ts;return getTreeScopeRoot(ts.parent);} -function relatedTargetResolution(event,currentTarget,relatedTarget){if(currentTarget instanceof wrappers.Window)currentTarget=currentTarget.document;var currentTargetTree=getTreeScope(currentTarget);var relatedTargetTree=getTreeScope(relatedTarget);var relatedTargetEventPath=getEventPath(relatedTarget,event);var lowestCommonAncestorTree;var lowestCommonAncestorTree=lowestCommonInclusiveAncestor(currentTargetTree,relatedTargetTree);if(!lowestCommonAncestorTree)lowestCommonAncestorTree=relatedTargetTree.root;for(var commonAncestorTree=lowestCommonAncestorTree;commonAncestorTree;commonAncestorTree=commonAncestorTree.parent){var adjustedRelatedTarget;for(var i=0;i0;i--){if(!invoke(eventPath[i],event,phase,eventPath,overrideTarget))return false;} -return true;} -function dispatchAtTarget(event,eventPath,win,overrideTarget){var phase=AT_TARGET;var currentTarget=eventPath[0]||win;return invoke(currentTarget,event,phase,eventPath,overrideTarget);} -function dispatchBubbling(event,eventPath,win,overrideTarget){var phase=BUBBLING_PHASE;for(var i=1;i0){invoke(win,event,phase,eventPath,overrideTarget);}} -function invoke(currentTarget,event,phase,eventPath,overrideTarget){var listeners=listenersTable.get(currentTarget);if(!listeners)return true;var target=overrideTarget||eventRetargetting(eventPath,currentTarget);if(target===currentTarget){if(phase===CAPTURING_PHASE)return true;if(phase===BUBBLING_PHASE)phase=AT_TARGET;}else if(phase===BUBBLING_PHASE&&!event.bubbles){return true;} -if("relatedTarget"in event){var originalEvent=unwrap(event);var unwrappedRelatedTarget=originalEvent.relatedTarget;if(unwrappedRelatedTarget){if(unwrappedRelatedTarget instanceof Object&&unwrappedRelatedTarget.addEventListener){var relatedTarget=wrap(unwrappedRelatedTarget);var adjusted=relatedTargetResolution(event,currentTarget,relatedTarget);if(adjusted===target)return true;}else{adjusted=null;} -relatedTargetTable.set(event,adjusted);}} -eventPhaseTable.set(event,phase);var type=event.type;var anyRemoved=false;targetTable.set(event,target);currentTargetTable.set(event,currentTarget);listeners.depth++;for(var i=0,len=listeners.length;i=0;i--){node.removeChild(nodes[i]);nodes[i].parentNode_=parentNode;} -surpressMutations=false;for(var i=0;i>>/g," ");} -function shimMatchesSelector(selector){return String(selector).replace(/:host\(([^\s]+)\)/g,"$1").replace(/([^\s]):host/g,"$1").replace(":host","*").replace(/\^|\/shadow\/|\/shadow-deep\/|::shadow|\/deep\/|::content|>>>/g," ");} -function findOne(node,selector){var m,el=node.firstElementChild;while(el){if(el.matches(selector))return el;m=findOne(el,selector);if(m)return m;el=el.nextElementSibling;} -return null;} -function matchesSelector(el,selector){return el.matches(selector);} -var XHTML_NS="http://www.w3.org/1999/xhtml";function matchesTagName(el,localName,localNameLowerCase){var ln=el.localName;return ln===localName||ln===localNameLowerCase&&el.namespaceURI===XHTML_NS;} -function matchesEveryThing(){return true;} -function matchesLocalNameOnly(el,ns,localName){return el.localName===localName;} -function matchesNameSpace(el,ns){return el.namespaceURI===ns;} -function matchesLocalNameNS(el,ns,localName){return el.namespaceURI===ns&&el.localName===localName;} -function findElements(node,index,result,p,arg0,arg1){var el=node.firstElementChild;while(el){if(p(el,arg0,arg1))result[index++]=el;index=findElements(el,index,result,p,arg0,arg1);el=el.nextElementSibling;} -return index;} -function querySelectorAllFiltered(p,index,result,selector,deep){var target=unsafeUnwrap(this);var list;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findElements(this,index,result,p,selector,null);}else if(target instanceof OriginalElement){list=originalElementQuerySelectorAll.call(target,selector);}else if(target instanceof OriginalDocument){list=originalDocumentQuerySelectorAll.call(target,selector);}else{return findElements(this,index,result,p,selector,null);} -return filterNodeList(list,index,result,deep);} -var SelectorsInterface={querySelector:function(selector){var shimmed=shimSelector(selector);var deep=shimmed!==selector;selector=shimmed;var target=unsafeUnwrap(this);var wrappedItem;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findOne(this,selector);}else if(target instanceof OriginalElement){wrappedItem=wrap(originalElementQuerySelector.call(target,selector));}else if(target instanceof OriginalDocument){wrappedItem=wrap(originalDocumentQuerySelector.call(target,selector));}else{return findOne(this,selector);} -if(!wrappedItem){return wrappedItem;}else if(!deep&&(root=getTreeScope(wrappedItem).root)){if(root instanceof scope.wrappers.ShadowRoot){return findOne(this,selector);}} -return wrappedItem;},querySelectorAll:function(selector){var shimmed=shimSelector(selector);var deep=shimmed!==selector;selector=shimmed;var result=new NodeList();result.length=querySelectorAllFiltered.call(this,matchesSelector,0,result,selector,deep);return result;}};var MatchesInterface={matches:function(selector){selector=shimMatchesSelector(selector);return scope.originalMatches.call(unsafeUnwrap(this),selector);}};function getElementsByTagNameFiltered(p,index,result,localName,lowercase){var target=unsafeUnwrap(this);var list;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findElements(this,index,result,p,localName,lowercase);}else if(target instanceof OriginalElement){list=originalElementGetElementsByTagName.call(target,localName,lowercase);}else if(target instanceof OriginalDocument){list=originalDocumentGetElementsByTagName.call(target,localName,lowercase);}else{return findElements(this,index,result,p,localName,lowercase);} -return filterNodeList(list,index,result,false);} -function getElementsByTagNameNSFiltered(p,index,result,ns,localName){var target=unsafeUnwrap(this);var list;var root=getTreeScope(this).root;if(root instanceof scope.wrappers.ShadowRoot){return findElements(this,index,result,p,ns,localName);}else if(target instanceof OriginalElement){list=originalElementGetElementsByTagNameNS.call(target,ns,localName);}else if(target instanceof OriginalDocument){list=originalDocumentGetElementsByTagNameNS.call(target,ns,localName);}else{return findElements(this,index,result,p,ns,localName);} -return filterNodeList(list,index,result,false);} -var GetElementsByInterface={getElementsByTagName:function(localName){var result=new HTMLCollection();var match=localName==="*"?matchesEveryThing:matchesTagName;result.length=getElementsByTagNameFiltered.call(this,match,0,result,localName,localName.toLowerCase());return result;},getElementsByClassName:function(className){return this.querySelectorAll("."+className);},getElementsByTagNameNS:function(ns,localName){var result=new HTMLCollection();var match=null;if(ns==="*"){match=localName==="*"?matchesEveryThing:matchesLocalNameOnly;}else{match=localName==="*"?matchesNameSpace:matchesLocalNameNS;} -result.length=getElementsByTagNameNSFiltered.call(this,match,0,result,ns||null,localName);return result;}};scope.GetElementsByInterface=GetElementsByInterface;scope.SelectorsInterface=SelectorsInterface;scope.MatchesInterface=MatchesInterface;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var NodeList=scope.wrappers.NodeList;function forwardElement(node){while(node&&node.nodeType!==Node.ELEMENT_NODE){node=node.nextSibling;} -return node;} -function backwardsElement(node){while(node&&node.nodeType!==Node.ELEMENT_NODE){node=node.previousSibling;} -return node;} -var ParentNodeInterface={get firstElementChild(){return forwardElement(this.firstChild);},get lastElementChild(){return backwardsElement(this.lastChild);},get childElementCount(){var count=0;for(var child=this.firstElementChild;child;child=child.nextElementSibling){count++;} -return count;},get children(){var wrapperList=new NodeList();var i=0;for(var child=this.firstElementChild;child;child=child.nextElementSibling){wrapperList[i++]=child;} -wrapperList.length=i;return wrapperList;},remove:function(){var p=this.parentNode;if(p)p.removeChild(this);}};var ChildNodeInterface={get nextElementSibling(){return forwardElement(this.nextSibling);},get previousElementSibling(){return backwardsElement(this.previousSibling);}};var NonElementParentNodeInterface={getElementById:function(id){if(/[ \t\n\r\f]/.test(id))return null;return this.querySelector('[id="'+id+'"]');}};scope.ChildNodeInterface=ChildNodeInterface;scope.NonElementParentNodeInterface=NonElementParentNodeInterface;scope.ParentNodeInterface=ParentNodeInterface;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var ChildNodeInterface=scope.ChildNodeInterface;var Node=scope.wrappers.Node;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var OriginalCharacterData=window.CharacterData;function CharacterData(node){Node.call(this,node);} -CharacterData.prototype=Object.create(Node.prototype);mixin(CharacterData.prototype,{get nodeValue(){return this.data;},set nodeValue(data){this.data=data;},get textContent(){return this.data;},set textContent(value){this.data=value;},get data(){return unsafeUnwrap(this).data;},set data(value){var oldValue=unsafeUnwrap(this).data;enqueueMutation(this,"characterData",{oldValue:oldValue});unsafeUnwrap(this).data=value;}});mixin(CharacterData.prototype,ChildNodeInterface);registerWrapper(OriginalCharacterData,CharacterData,document.createTextNode(""));scope.wrappers.CharacterData=CharacterData;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var CharacterData=scope.wrappers.CharacterData;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;function toUInt32(x){return x>>>0;} -var OriginalText=window.Text;function Text(node){CharacterData.call(this,node);} -Text.prototype=Object.create(CharacterData.prototype);mixin(Text.prototype,{splitText:function(offset){offset=toUInt32(offset);var s=this.data;if(offset>s.length)throw new Error("IndexSizeError");var head=s.slice(0,offset);var tail=s.slice(offset);this.data=head;var newTextNode=this.ownerDocument.createTextNode(tail);if(this.parentNode)this.parentNode.insertBefore(newTextNode,this.nextSibling);return newTextNode;}});registerWrapper(OriginalText,Text,document.createTextNode(""));scope.wrappers.Text=Text;})(window.ShadowDOMPolyfill);(function(scope){"use strict";if(!window.DOMTokenList){console.warn("Missing DOMTokenList prototype, please include a "+"compatible classList polyfill such as http://goo.gl/uTcepH.");return;} -var unsafeUnwrap=scope.unsafeUnwrap;var enqueueMutation=scope.enqueueMutation;function getClass(el){return unsafeUnwrap(el).getAttribute("class");} -function enqueueClassAttributeChange(el,oldValue){enqueueMutation(el,"attributes",{name:"class",namespace:null,oldValue:oldValue});} -function invalidateClass(el){scope.invalidateRendererBasedOnAttribute(el,"class");} -function changeClass(tokenList,method,args){var ownerElement=tokenList.ownerElement_;if(ownerElement==null){return method.apply(tokenList,args);} -var oldValue=getClass(ownerElement);var retv=method.apply(tokenList,args);if(getClass(ownerElement)!==oldValue){enqueueClassAttributeChange(ownerElement,oldValue);invalidateClass(ownerElement);} -return retv;} -var oldAdd=DOMTokenList.prototype.add;DOMTokenList.prototype.add=function(){changeClass(this,oldAdd,arguments);};var oldRemove=DOMTokenList.prototype.remove;DOMTokenList.prototype.remove=function(){changeClass(this,oldRemove,arguments);};var oldToggle=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(){return changeClass(this,oldToggle,arguments);};})(window.ShadowDOMPolyfill);(function(scope){"use strict";var ChildNodeInterface=scope.ChildNodeInterface;var GetElementsByInterface=scope.GetElementsByInterface;var Node=scope.wrappers.Node;var ParentNodeInterface=scope.ParentNodeInterface;var SelectorsInterface=scope.SelectorsInterface;var MatchesInterface=scope.MatchesInterface;var addWrapNodeListMethod=scope.addWrapNodeListMethod;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var oneOf=scope.oneOf;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrappers=scope.wrappers;var OriginalElement=window.Element;var matchesNames=["matches","mozMatchesSelector","msMatchesSelector","webkitMatchesSelector"].filter(function(name){return OriginalElement.prototype[name];});var matchesName=matchesNames[0];var originalMatches=OriginalElement.prototype[matchesName];function invalidateRendererBasedOnAttribute(element,name){var p=element.parentNode;if(!p||!p.shadowRoot)return;var renderer=scope.getRendererForHost(p);if(renderer.dependsOnAttribute(name))renderer.invalidate();} -function enqueAttributeChange(element,name,oldValue){enqueueMutation(element,"attributes",{name:name,namespace:null,oldValue:oldValue});} -var classListTable=new WeakMap();function Element(node){Node.call(this,node);} -Element.prototype=Object.create(Node.prototype);mixin(Element.prototype,{createShadowRoot:function(){var newShadowRoot=new wrappers.ShadowRoot(this);unsafeUnwrap(this).polymerShadowRoot_=newShadowRoot;var renderer=scope.getRendererForHost(this);renderer.invalidate();return newShadowRoot;},get shadowRoot(){return unsafeUnwrap(this).polymerShadowRoot_||null;},setAttribute:function(name,value){var oldValue=unsafeUnwrap(this).getAttribute(name);unsafeUnwrap(this).setAttribute(name,value);enqueAttributeChange(this,name,oldValue);invalidateRendererBasedOnAttribute(this,name);},removeAttribute:function(name){var oldValue=unsafeUnwrap(this).getAttribute(name);unsafeUnwrap(this).removeAttribute(name);enqueAttributeChange(this,name,oldValue);invalidateRendererBasedOnAttribute(this,name);},get classList(){var list=classListTable.get(this);if(!list){list=unsafeUnwrap(this).classList;if(!list)return;list.ownerElement_=this;classListTable.set(this,list);} -return list;},get className(){return unsafeUnwrap(this).className;},set className(v){this.setAttribute("class",v);},get id(){return unsafeUnwrap(this).id;},set id(v){this.setAttribute("id",v);}});matchesNames.forEach(function(name){if(name!=="matches"){Element.prototype[name]=function(selector){return this.matches(selector);};}});if(OriginalElement.prototype.webkitCreateShadowRoot){Element.prototype.webkitCreateShadowRoot=Element.prototype.createShadowRoot;} -mixin(Element.prototype,ChildNodeInterface);mixin(Element.prototype,GetElementsByInterface);mixin(Element.prototype,ParentNodeInterface);mixin(Element.prototype,SelectorsInterface);mixin(Element.prototype,MatchesInterface);registerWrapper(OriginalElement,Element,document.createElementNS(null,"x"));scope.invalidateRendererBasedOnAttribute=invalidateRendererBasedOnAttribute;scope.matchesNames=matchesNames;scope.originalMatches=originalMatches;scope.wrappers.Element=Element;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var Element=scope.wrappers.Element;var defineGetter=scope.defineGetter;var enqueueMutation=scope.enqueueMutation;var mixin=scope.mixin;var nodesWereAdded=scope.nodesWereAdded;var nodesWereRemoved=scope.nodesWereRemoved;var registerWrapper=scope.registerWrapper;var snapshotNodeList=scope.snapshotNodeList;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var wrappers=scope.wrappers;var escapeAttrRegExp=/[&\u00A0"]/g;var escapeDataRegExp=/[&\u00A0<>]/g;function escapeReplace(c){switch(c){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";case" ":return" ";}} -function escapeAttr(s){return s.replace(escapeAttrRegExp,escapeReplace);} -function escapeData(s){return s.replace(escapeDataRegExp,escapeReplace);} -function makeSet(arr){var set={};for(var i=0;i";} -return s+">"+getInnerHTML(node)+"";case Node.TEXT_NODE:var data=node.data;if(parentNode&&plaintextParents[parentNode.localName])return data;return escapeData(data);case Node.COMMENT_NODE:return"";default:console.error(node);throw new Error("not implemented");}} -function getInnerHTML(node){if(node instanceof wrappers.HTMLTemplateElement)node=node.content;var s="";for(var child=node.firstChild;child;child=child.nextSibling){s+=getOuterHTML(child,node);} -return s;} -function setInnerHTML(node,value,opt_tagName){var tagName=opt_tagName||"div";node.textContent="";var tempElement=unwrap(node.ownerDocument.createElement(tagName));tempElement.innerHTML=value;var firstChild;while(firstChild=tempElement.firstChild){node.appendChild(wrap(firstChild));}} -var oldIe=/MSIE/.test(navigator.userAgent);var OriginalHTMLElement=window.HTMLElement;var OriginalHTMLTemplateElement=window.HTMLTemplateElement;function HTMLElement(node){Element.call(this,node);} -HTMLElement.prototype=Object.create(Element.prototype);mixin(HTMLElement.prototype,{get innerHTML(){return getInnerHTML(this);},set innerHTML(value){if(oldIe&&plaintextParents[this.localName]){this.textContent=value;return;} -var removedNodes=snapshotNodeList(this.childNodes);if(this.invalidateShadowRenderer()){if(this instanceof wrappers.HTMLTemplateElement)setInnerHTML(this.content,value);else setInnerHTML(this,value,this.tagName);}else if(!OriginalHTMLTemplateElement&&this instanceof wrappers.HTMLTemplateElement){setInnerHTML(this.content,value);}else{unsafeUnwrap(this).innerHTML=value;} -var addedNodes=snapshotNodeList(this.childNodes);enqueueMutation(this,"childList",{addedNodes:addedNodes,removedNodes:removedNodes});nodesWereRemoved(removedNodes);nodesWereAdded(addedNodes,this);},get outerHTML(){return getOuterHTML(this,this.parentNode);},set outerHTML(value){var p=this.parentNode;if(p){p.invalidateShadowRenderer();var df=frag(p,value);p.replaceChild(df,this);}},insertAdjacentHTML:function(position,text){var contextElement,refNode;switch(String(position).toLowerCase()){case"beforebegin":contextElement=this.parentNode;refNode=this;break;case"afterend":contextElement=this.parentNode;refNode=this.nextSibling;break;case"afterbegin":contextElement=this;refNode=this.firstChild;break;case"beforeend":contextElement=this;refNode=null;break;default:return;} -var df=frag(contextElement,text);contextElement.insertBefore(df,refNode);},get hidden(){return this.hasAttribute("hidden");},set hidden(v){if(v){this.setAttribute("hidden","");}else{this.removeAttribute("hidden");}}});function frag(contextElement,html){var p=unwrap(contextElement.cloneNode(false));p.innerHTML=html;var df=unwrap(document.createDocumentFragment());var c;while(c=p.firstChild){df.appendChild(c);} -return wrap(df);} -function getter(name){return function(){scope.renderAllPending();return unsafeUnwrap(this)[name];};} -function getterRequiresRendering(name){defineGetter(HTMLElement,name,getter(name));} -["clientHeight","clientLeft","clientTop","clientWidth","offsetHeight","offsetLeft","offsetTop","offsetWidth","scrollHeight","scrollWidth"].forEach(getterRequiresRendering);function getterAndSetterRequiresRendering(name){Object.defineProperty(HTMLElement.prototype,name,{get:getter(name),set:function(v){scope.renderAllPending();unsafeUnwrap(this)[name]=v;},configurable:true,enumerable:true});} -["scrollLeft","scrollTop"].forEach(getterAndSetterRequiresRendering);function methodRequiresRendering(name){Object.defineProperty(HTMLElement.prototype,name,{value:function(){scope.renderAllPending();return unsafeUnwrap(this)[name].apply(unsafeUnwrap(this),arguments);},configurable:true,enumerable:true});} -["focus","getBoundingClientRect","getClientRects","scrollIntoView"].forEach(methodRequiresRendering);registerWrapper(OriginalHTMLElement,HTMLElement,document.createElement("b"));scope.wrappers.HTMLElement=HTMLElement;scope.getInnerHTML=getInnerHTML;scope.setInnerHTML=setInnerHTML;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var OriginalHTMLCanvasElement=window.HTMLCanvasElement;function HTMLCanvasElement(node){HTMLElement.call(this,node);} -HTMLCanvasElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLCanvasElement.prototype,{getContext:function(){var context=unsafeUnwrap(this).getContext.apply(unsafeUnwrap(this),arguments);return context&&wrap(context);}});registerWrapper(OriginalHTMLCanvasElement,HTMLCanvasElement,document.createElement("canvas"));scope.wrappers.HTMLCanvasElement=HTMLCanvasElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var OriginalHTMLContentElement=window.HTMLContentElement;function HTMLContentElement(node){HTMLElement.call(this,node);} -HTMLContentElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLContentElement.prototype,{constructor:HTMLContentElement,get select(){return this.getAttribute("select");},set select(value){this.setAttribute("select",value);},setAttribute:function(n,v){HTMLElement.prototype.setAttribute.call(this,n,v);if(String(n).toLowerCase()==="select")this.invalidateShadowRenderer(true);}});if(OriginalHTMLContentElement)registerWrapper(OriginalHTMLContentElement,HTMLContentElement);scope.wrappers.HTMLContentElement=HTMLContentElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var wrapHTMLCollection=scope.wrapHTMLCollection;var unwrap=scope.unwrap;var OriginalHTMLFormElement=window.HTMLFormElement;function HTMLFormElement(node){HTMLElement.call(this,node);} -HTMLFormElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLFormElement.prototype,{get elements(){return wrapHTMLCollection(unwrap(this).elements);}});registerWrapper(OriginalHTMLFormElement,HTMLFormElement,document.createElement("form"));scope.wrappers.HTMLFormElement=HTMLFormElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var rewrap=scope.rewrap;var OriginalHTMLImageElement=window.HTMLImageElement;function HTMLImageElement(node){HTMLElement.call(this,node);} -HTMLImageElement.prototype=Object.create(HTMLElement.prototype);registerWrapper(OriginalHTMLImageElement,HTMLImageElement,document.createElement("img"));function Image(width,height){if(!(this instanceof Image)){throw new TypeError("DOM object constructor cannot be called as a function.");} -var node=unwrap(document.createElement("img"));HTMLElement.call(this,node);rewrap(node,this);if(width!==undefined)node.width=width;if(height!==undefined)node.height=height;} -Image.prototype=HTMLImageElement.prototype;scope.wrappers.HTMLImageElement=HTMLImageElement;scope.wrappers.Image=Image;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var NodeList=scope.wrappers.NodeList;var registerWrapper=scope.registerWrapper;var OriginalHTMLShadowElement=window.HTMLShadowElement;function HTMLShadowElement(node){HTMLElement.call(this,node);} -HTMLShadowElement.prototype=Object.create(HTMLElement.prototype);HTMLShadowElement.prototype.constructor=HTMLShadowElement;if(OriginalHTMLShadowElement)registerWrapper(OriginalHTMLShadowElement,HTMLShadowElement);scope.wrappers.HTMLShadowElement=HTMLShadowElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var contentTable=new WeakMap();var templateContentsOwnerTable=new WeakMap();function getTemplateContentsOwner(doc){if(!doc.defaultView)return doc;var d=templateContentsOwnerTable.get(doc);if(!d){d=doc.implementation.createHTMLDocument("");while(d.lastChild){d.removeChild(d.lastChild);} -templateContentsOwnerTable.set(doc,d);} -return d;} -function extractContent(templateElement){var doc=getTemplateContentsOwner(templateElement.ownerDocument);var df=unwrap(doc.createDocumentFragment());var child;while(child=templateElement.firstChild){df.appendChild(child);} -return df;} -var OriginalHTMLTemplateElement=window.HTMLTemplateElement;function HTMLTemplateElement(node){HTMLElement.call(this,node);if(!OriginalHTMLTemplateElement){var content=extractContent(node);contentTable.set(this,wrap(content));}} -HTMLTemplateElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTemplateElement.prototype,{constructor:HTMLTemplateElement,get content(){if(OriginalHTMLTemplateElement)return wrap(unsafeUnwrap(this).content);return contentTable.get(this);}});if(OriginalHTMLTemplateElement)registerWrapper(OriginalHTMLTemplateElement,HTMLTemplateElement);scope.wrappers.HTMLTemplateElement=HTMLTemplateElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var registerWrapper=scope.registerWrapper;var OriginalHTMLMediaElement=window.HTMLMediaElement;if(!OriginalHTMLMediaElement)return;function HTMLMediaElement(node){HTMLElement.call(this,node);} -HTMLMediaElement.prototype=Object.create(HTMLElement.prototype);registerWrapper(OriginalHTMLMediaElement,HTMLMediaElement,document.createElement("audio"));scope.wrappers.HTMLMediaElement=HTMLMediaElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLMediaElement=scope.wrappers.HTMLMediaElement;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var rewrap=scope.rewrap;var OriginalHTMLAudioElement=window.HTMLAudioElement;if(!OriginalHTMLAudioElement)return;function HTMLAudioElement(node){HTMLMediaElement.call(this,node);} -HTMLAudioElement.prototype=Object.create(HTMLMediaElement.prototype);registerWrapper(OriginalHTMLAudioElement,HTMLAudioElement,document.createElement("audio"));function Audio(src){if(!(this instanceof Audio)){throw new TypeError("DOM object constructor cannot be called as a function.");} -var node=unwrap(document.createElement("audio"));HTMLMediaElement.call(this,node);rewrap(node,this);node.setAttribute("preload","auto");if(src!==undefined)node.setAttribute("src",src);} -Audio.prototype=HTMLAudioElement.prototype;scope.wrappers.HTMLAudioElement=HTMLAudioElement;scope.wrappers.Audio=Audio;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var rewrap=scope.rewrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLOptionElement=window.HTMLOptionElement;function trimText(s){return s.replace(/\s+/g," ").trim();} -function HTMLOptionElement(node){HTMLElement.call(this,node);} -HTMLOptionElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLOptionElement.prototype,{get text(){return trimText(this.textContent);},set text(value){this.textContent=trimText(String(value));},get form(){return wrap(unwrap(this).form);}});registerWrapper(OriginalHTMLOptionElement,HTMLOptionElement,document.createElement("option"));function Option(text,value,defaultSelected,selected){if(!(this instanceof Option)){throw new TypeError("DOM object constructor cannot be called as a function.");} -var node=unwrap(document.createElement("option"));HTMLElement.call(this,node);rewrap(node,this);if(text!==undefined)node.text=text;if(value!==undefined)node.setAttribute("value",value);if(defaultSelected===true)node.setAttribute("selected","");node.selected=selected===true;} -Option.prototype=HTMLOptionElement.prototype;scope.wrappers.HTMLOptionElement=HTMLOptionElement;scope.wrappers.Option=Option;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLSelectElement=window.HTMLSelectElement;function HTMLSelectElement(node){HTMLElement.call(this,node);} -HTMLSelectElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLSelectElement.prototype,{add:function(element,before){if(typeof before==="object")before=unwrap(before);unwrap(this).add(unwrap(element),before);},remove:function(indexOrNode){if(indexOrNode===undefined){HTMLElement.prototype.remove.call(this);return;} -if(typeof indexOrNode==="object")indexOrNode=unwrap(indexOrNode);unwrap(this).remove(indexOrNode);},get form(){return wrap(unwrap(this).form);}});registerWrapper(OriginalHTMLSelectElement,HTMLSelectElement,document.createElement("select"));scope.wrappers.HTMLSelectElement=HTMLSelectElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var wrapHTMLCollection=scope.wrapHTMLCollection;var OriginalHTMLTableElement=window.HTMLTableElement;function HTMLTableElement(node){HTMLElement.call(this,node);} -HTMLTableElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTableElement.prototype,{get caption(){return wrap(unwrap(this).caption);},createCaption:function(){return wrap(unwrap(this).createCaption());},get tHead(){return wrap(unwrap(this).tHead);},createTHead:function(){return wrap(unwrap(this).createTHead());},createTFoot:function(){return wrap(unwrap(this).createTFoot());},get tFoot(){return wrap(unwrap(this).tFoot);},get tBodies(){return wrapHTMLCollection(unwrap(this).tBodies);},createTBody:function(){return wrap(unwrap(this).createTBody());},get rows(){return wrapHTMLCollection(unwrap(this).rows);},insertRow:function(index){return wrap(unwrap(this).insertRow(index));}});registerWrapper(OriginalHTMLTableElement,HTMLTableElement,document.createElement("table"));scope.wrappers.HTMLTableElement=HTMLTableElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var wrapHTMLCollection=scope.wrapHTMLCollection;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLTableSectionElement=window.HTMLTableSectionElement;function HTMLTableSectionElement(node){HTMLElement.call(this,node);} -HTMLTableSectionElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTableSectionElement.prototype,{constructor:HTMLTableSectionElement,get rows(){return wrapHTMLCollection(unwrap(this).rows);},insertRow:function(index){return wrap(unwrap(this).insertRow(index));}});registerWrapper(OriginalHTMLTableSectionElement,HTMLTableSectionElement,document.createElement("thead"));scope.wrappers.HTMLTableSectionElement=HTMLTableSectionElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLElement=scope.wrappers.HTMLElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var wrapHTMLCollection=scope.wrapHTMLCollection;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalHTMLTableRowElement=window.HTMLTableRowElement;function HTMLTableRowElement(node){HTMLElement.call(this,node);} -HTMLTableRowElement.prototype=Object.create(HTMLElement.prototype);mixin(HTMLTableRowElement.prototype,{get cells(){return wrapHTMLCollection(unwrap(this).cells);},insertCell:function(index){return wrap(unwrap(this).insertCell(index));}});registerWrapper(OriginalHTMLTableRowElement,HTMLTableRowElement,document.createElement("tr"));scope.wrappers.HTMLTableRowElement=HTMLTableRowElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var HTMLContentElement=scope.wrappers.HTMLContentElement;var HTMLElement=scope.wrappers.HTMLElement;var HTMLShadowElement=scope.wrappers.HTMLShadowElement;var HTMLTemplateElement=scope.wrappers.HTMLTemplateElement;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var OriginalHTMLUnknownElement=window.HTMLUnknownElement;function HTMLUnknownElement(node){switch(node.localName){case"content":return new HTMLContentElement(node);case"shadow":return new HTMLShadowElement(node);case"template":return new HTMLTemplateElement(node);} -HTMLElement.call(this,node);} -HTMLUnknownElement.prototype=Object.create(HTMLElement.prototype);registerWrapper(OriginalHTMLUnknownElement,HTMLUnknownElement);scope.wrappers.HTMLUnknownElement=HTMLUnknownElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var Element=scope.wrappers.Element;var HTMLElement=scope.wrappers.HTMLElement;var registerWrapper=scope.registerWrapper;var defineWrapGetter=scope.defineWrapGetter;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var mixin=scope.mixin;var SVG_NS="http://www.w3.org/2000/svg";var OriginalSVGElement=window.SVGElement;var svgTitleElement=document.createElementNS(SVG_NS,"title");if(!("classList"in svgTitleElement)){var descr=Object.getOwnPropertyDescriptor(Element.prototype,"classList");Object.defineProperty(HTMLElement.prototype,"classList",descr);delete Element.prototype.classList;} -function SVGElement(node){Element.call(this,node);} -SVGElement.prototype=Object.create(Element.prototype);mixin(SVGElement.prototype,{get ownerSVGElement(){return wrap(unsafeUnwrap(this).ownerSVGElement);}});registerWrapper(OriginalSVGElement,SVGElement,document.createElementNS(SVG_NS,"title"));scope.wrappers.SVGElement=SVGElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unwrap=scope.unwrap;var wrap=scope.wrap;var OriginalSVGUseElement=window.SVGUseElement;var SVG_NS="http://www.w3.org/2000/svg";var gWrapper=wrap(document.createElementNS(SVG_NS,"g"));var useElement=document.createElementNS(SVG_NS,"use");var SVGGElement=gWrapper.constructor;var parentInterfacePrototype=Object.getPrototypeOf(SVGGElement.prototype);var parentInterface=parentInterfacePrototype.constructor;function SVGUseElement(impl){parentInterface.call(this,impl);} -SVGUseElement.prototype=Object.create(parentInterfacePrototype);if("instanceRoot"in useElement){mixin(SVGUseElement.prototype,{get instanceRoot(){return wrap(unwrap(this).instanceRoot);},get animatedInstanceRoot(){return wrap(unwrap(this).animatedInstanceRoot);}});} -registerWrapper(OriginalSVGUseElement,SVGUseElement,useElement);scope.wrappers.SVGUseElement=SVGUseElement;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var EventTarget=scope.wrappers.EventTarget;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var wrap=scope.wrap;var OriginalSVGElementInstance=window.SVGElementInstance;if(!OriginalSVGElementInstance)return;function SVGElementInstance(impl){EventTarget.call(this,impl);} -SVGElementInstance.prototype=Object.create(EventTarget.prototype);mixin(SVGElementInstance.prototype,{get correspondingElement(){return wrap(unsafeUnwrap(this).correspondingElement);},get correspondingUseElement(){return wrap(unsafeUnwrap(this).correspondingUseElement);},get parentNode(){return wrap(unsafeUnwrap(this).parentNode);},get childNodes(){throw new Error("Not implemented");},get firstChild(){return wrap(unsafeUnwrap(this).firstChild);},get lastChild(){return wrap(unsafeUnwrap(this).lastChild);},get previousSibling(){return wrap(unsafeUnwrap(this).previousSibling);},get nextSibling(){return wrap(unsafeUnwrap(this).nextSibling);}});registerWrapper(OriginalSVGElementInstance,SVGElementInstance);scope.wrappers.SVGElementInstance=SVGElementInstance;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalCanvasRenderingContext2D=window.CanvasRenderingContext2D;function CanvasRenderingContext2D(impl){setWrapper(impl,this);} -mixin(CanvasRenderingContext2D.prototype,{get canvas(){return wrap(unsafeUnwrap(this).canvas);},drawImage:function(){arguments[0]=unwrapIfNeeded(arguments[0]);unsafeUnwrap(this).drawImage.apply(unsafeUnwrap(this),arguments);},createPattern:function(){arguments[0]=unwrap(arguments[0]);return unsafeUnwrap(this).createPattern.apply(unsafeUnwrap(this),arguments);}});registerWrapper(OriginalCanvasRenderingContext2D,CanvasRenderingContext2D,document.createElement("canvas").getContext("2d"));scope.wrappers.CanvasRenderingContext2D=CanvasRenderingContext2D;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var addForwardingProperties=scope.addForwardingProperties;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalWebGLRenderingContext=window.WebGLRenderingContext;if(!OriginalWebGLRenderingContext)return;function WebGLRenderingContext(impl){setWrapper(impl,this);} -mixin(WebGLRenderingContext.prototype,{get canvas(){return wrap(unsafeUnwrap(this).canvas);},texImage2D:function(){arguments[5]=unwrapIfNeeded(arguments[5]);unsafeUnwrap(this).texImage2D.apply(unsafeUnwrap(this),arguments);},texSubImage2D:function(){arguments[6]=unwrapIfNeeded(arguments[6]);unsafeUnwrap(this).texSubImage2D.apply(unsafeUnwrap(this),arguments);}});var OriginalWebGLRenderingContextBase=Object.getPrototypeOf(OriginalWebGLRenderingContext.prototype);if(OriginalWebGLRenderingContextBase!==Object.prototype){addForwardingProperties(OriginalWebGLRenderingContextBase,WebGLRenderingContext.prototype);} -var instanceProperties=/WebKit/.test(navigator.userAgent)?{drawingBufferHeight:null,drawingBufferWidth:null}:{};registerWrapper(OriginalWebGLRenderingContext,WebGLRenderingContext,instanceProperties);scope.wrappers.WebGLRenderingContext=WebGLRenderingContext;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var Node=scope.wrappers.Node;var GetElementsByInterface=scope.GetElementsByInterface;var NonElementParentNodeInterface=scope.NonElementParentNodeInterface;var ParentNodeInterface=scope.ParentNodeInterface;var SelectorsInterface=scope.SelectorsInterface;var mixin=scope.mixin;var registerObject=scope.registerObject;var registerWrapper=scope.registerWrapper;var OriginalDocumentFragment=window.DocumentFragment;function DocumentFragment(node){Node.call(this,node);} -DocumentFragment.prototype=Object.create(Node.prototype);mixin(DocumentFragment.prototype,ParentNodeInterface);mixin(DocumentFragment.prototype,SelectorsInterface);mixin(DocumentFragment.prototype,GetElementsByInterface);mixin(DocumentFragment.prototype,NonElementParentNodeInterface);registerWrapper(OriginalDocumentFragment,DocumentFragment,document.createDocumentFragment());scope.wrappers.DocumentFragment=DocumentFragment;var Comment=registerObject(document.createComment(""));scope.wrappers.Comment=Comment;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var DocumentFragment=scope.wrappers.DocumentFragment;var TreeScope=scope.TreeScope;var elementFromPoint=scope.elementFromPoint;var getInnerHTML=scope.getInnerHTML;var getTreeScope=scope.getTreeScope;var mixin=scope.mixin;var rewrap=scope.rewrap;var setInnerHTML=scope.setInnerHTML;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var shadowHostTable=new WeakMap();var nextOlderShadowTreeTable=new WeakMap();function ShadowRoot(hostWrapper){var node=unwrap(unsafeUnwrap(hostWrapper).ownerDocument.createDocumentFragment());DocumentFragment.call(this,node);rewrap(node,this);var oldShadowRoot=hostWrapper.shadowRoot;nextOlderShadowTreeTable.set(this,oldShadowRoot);this.treeScope_=new TreeScope(this,getTreeScope(oldShadowRoot||hostWrapper));shadowHostTable.set(this,hostWrapper);} -ShadowRoot.prototype=Object.create(DocumentFragment.prototype);mixin(ShadowRoot.prototype,{constructor:ShadowRoot,get innerHTML(){return getInnerHTML(this);},set innerHTML(value){setInnerHTML(this,value);this.invalidateShadowRenderer();},get olderShadowRoot(){return nextOlderShadowTreeTable.get(this)||null;},get host(){return shadowHostTable.get(this)||null;},invalidateShadowRenderer:function(){return shadowHostTable.get(this).invalidateShadowRenderer();},elementFromPoint:function(x,y){return elementFromPoint(this,this.ownerDocument,x,y);},getSelection:function(){return document.getSelection();},get activeElement(){var unwrappedActiveElement=unwrap(this).ownerDocument.activeElement;if(!unwrappedActiveElement||!unwrappedActiveElement.nodeType)return null;var activeElement=wrap(unwrappedActiveElement);while(!this.contains(activeElement)){while(activeElement.parentNode){activeElement=activeElement.parentNode;} -if(activeElement.host){activeElement=activeElement.host;}else{return null;}} -return activeElement;}});scope.wrappers.ShadowRoot=ShadowRoot;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var getTreeScope=scope.getTreeScope;var OriginalRange=window.Range;var ShadowRoot=scope.wrappers.ShadowRoot;function getHost(node){var root=getTreeScope(node).root;if(root instanceof ShadowRoot){return root.host;} -return null;} -function hostNodeToShadowNode(refNode,offset){if(refNode.shadowRoot){offset=Math.min(refNode.childNodes.length-1,offset);var child=refNode.childNodes[offset];if(child){var insertionPoint=scope.getDestinationInsertionPoints(child);if(insertionPoint.length>0){var parentNode=insertionPoint[0].parentNode;if(parentNode.nodeType==Node.ELEMENT_NODE){refNode=parentNode;}}}} -return refNode;} -function shadowNodeToHostNode(node){node=wrap(node);return getHost(node)||node;} -function Range(impl){setWrapper(impl,this);} -Range.prototype={get startContainer(){return shadowNodeToHostNode(unsafeUnwrap(this).startContainer);},get endContainer(){return shadowNodeToHostNode(unsafeUnwrap(this).endContainer);},get commonAncestorContainer(){return shadowNodeToHostNode(unsafeUnwrap(this).commonAncestorContainer);},setStart:function(refNode,offset){refNode=hostNodeToShadowNode(refNode,offset);unsafeUnwrap(this).setStart(unwrapIfNeeded(refNode),offset);},setEnd:function(refNode,offset){refNode=hostNodeToShadowNode(refNode,offset);unsafeUnwrap(this).setEnd(unwrapIfNeeded(refNode),offset);},setStartBefore:function(refNode){unsafeUnwrap(this).setStartBefore(unwrapIfNeeded(refNode));},setStartAfter:function(refNode){unsafeUnwrap(this).setStartAfter(unwrapIfNeeded(refNode));},setEndBefore:function(refNode){unsafeUnwrap(this).setEndBefore(unwrapIfNeeded(refNode));},setEndAfter:function(refNode){unsafeUnwrap(this).setEndAfter(unwrapIfNeeded(refNode));},selectNode:function(refNode){unsafeUnwrap(this).selectNode(unwrapIfNeeded(refNode));},selectNodeContents:function(refNode){unsafeUnwrap(this).selectNodeContents(unwrapIfNeeded(refNode));},compareBoundaryPoints:function(how,sourceRange){return unsafeUnwrap(this).compareBoundaryPoints(how,unwrap(sourceRange));},extractContents:function(){return wrap(unsafeUnwrap(this).extractContents());},cloneContents:function(){return wrap(unsafeUnwrap(this).cloneContents());},insertNode:function(node){unsafeUnwrap(this).insertNode(unwrapIfNeeded(node));},surroundContents:function(newParent){unsafeUnwrap(this).surroundContents(unwrapIfNeeded(newParent));},cloneRange:function(){return wrap(unsafeUnwrap(this).cloneRange());},isPointInRange:function(node,offset){return unsafeUnwrap(this).isPointInRange(unwrapIfNeeded(node),offset);},comparePoint:function(node,offset){return unsafeUnwrap(this).comparePoint(unwrapIfNeeded(node),offset);},intersectsNode:function(node){return unsafeUnwrap(this).intersectsNode(unwrapIfNeeded(node));},toString:function(){return unsafeUnwrap(this).toString();}};if(OriginalRange.prototype.createContextualFragment){Range.prototype.createContextualFragment=function(html){return wrap(unsafeUnwrap(this).createContextualFragment(html));};} -registerWrapper(window.Range,Range,document.createRange());scope.wrappers.Range=Range;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var Element=scope.wrappers.Element;var HTMLContentElement=scope.wrappers.HTMLContentElement;var HTMLShadowElement=scope.wrappers.HTMLShadowElement;var Node=scope.wrappers.Node;var ShadowRoot=scope.wrappers.ShadowRoot;var assert=scope.assert;var getTreeScope=scope.getTreeScope;var mixin=scope.mixin;var oneOf=scope.oneOf;var unsafeUnwrap=scope.unsafeUnwrap;var unwrap=scope.unwrap;var wrap=scope.wrap;var ArraySplice=scope.ArraySplice;function updateWrapperUpAndSideways(wrapper){wrapper.previousSibling_=wrapper.previousSibling;wrapper.nextSibling_=wrapper.nextSibling;wrapper.parentNode_=wrapper.parentNode;} -function updateWrapperDown(wrapper){wrapper.firstChild_=wrapper.firstChild;wrapper.lastChild_=wrapper.lastChild;} -function updateAllChildNodes(parentNodeWrapper){assert(parentNodeWrapper instanceof Node);for(var childWrapper=parentNodeWrapper.firstChild;childWrapper;childWrapper=childWrapper.nextSibling){updateWrapperUpAndSideways(childWrapper);} -updateWrapperDown(parentNodeWrapper);} -function insertBefore(parentNodeWrapper,newChildWrapper,refChildWrapper){var parentNode=unwrap(parentNodeWrapper);var newChild=unwrap(newChildWrapper);var refChild=refChildWrapper?unwrap(refChildWrapper):null;remove(newChildWrapper);updateWrapperUpAndSideways(newChildWrapper);if(!refChildWrapper){parentNodeWrapper.lastChild_=parentNodeWrapper.lastChild;if(parentNodeWrapper.lastChild===parentNodeWrapper.firstChild)parentNodeWrapper.firstChild_=parentNodeWrapper.firstChild;var lastChildWrapper=wrap(parentNode.lastChild);if(lastChildWrapper)lastChildWrapper.nextSibling_=lastChildWrapper.nextSibling;}else{if(parentNodeWrapper.firstChild===refChildWrapper)parentNodeWrapper.firstChild_=refChildWrapper;refChildWrapper.previousSibling_=refChildWrapper.previousSibling;} -scope.originalInsertBefore.call(parentNode,newChild,refChild);} -function remove(nodeWrapper){var node=unwrap(nodeWrapper);var parentNode=node.parentNode;if(!parentNode)return;var parentNodeWrapper=wrap(parentNode);updateWrapperUpAndSideways(nodeWrapper);if(nodeWrapper.previousSibling)nodeWrapper.previousSibling.nextSibling_=nodeWrapper;if(nodeWrapper.nextSibling)nodeWrapper.nextSibling.previousSibling_=nodeWrapper;if(parentNodeWrapper.lastChild===nodeWrapper)parentNodeWrapper.lastChild_=nodeWrapper;if(parentNodeWrapper.firstChild===nodeWrapper)parentNodeWrapper.firstChild_=nodeWrapper;scope.originalRemoveChild.call(parentNode,node);} -var distributedNodesTable=new WeakMap();var destinationInsertionPointsTable=new WeakMap();var rendererForHostTable=new WeakMap();function resetDistributedNodes(insertionPoint){distributedNodesTable.set(insertionPoint,[]);} -function getDistributedNodes(insertionPoint){var rv=distributedNodesTable.get(insertionPoint);if(!rv)distributedNodesTable.set(insertionPoint,rv=[]);return rv;} -function getChildNodesSnapshot(node){var result=[],i=0;for(var child=node.firstChild;child;child=child.nextSibling){result[i++]=child;} -return result;} -var request=oneOf(window,["requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","setTimeout"]);var pendingDirtyRenderers=[];var renderTimer;function renderAllPending(){for(var i=0;i=0;i--){var shadowTree=shadowTrees[i];var shadow=getShadowInsertionPoint(shadowTree);if(shadow){var olderShadowRoot=shadowTree.olderShadowRoot;if(olderShadowRoot){pool=poolPopulation(olderShadowRoot);} -for(var j=0;j=0;i--){newPrototype=Object.create(newPrototype);} -["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"].forEach(function(name){var f=prototype[name];if(!f)return;newPrototype[name]=function(){if(!(wrap(this)instanceof CustomElementConstructor)){rewrap(this);} -f.apply(wrap(this),arguments);};});var p={prototype:newPrototype};if(extendsOption)p.extends=extendsOption;function CustomElementConstructor(node){if(!node){if(extendsOption){return document.createElement(extendsOption,tagName);}else{return document.createElement(tagName);}} -setWrapper(node,this);} -CustomElementConstructor.prototype=prototype;CustomElementConstructor.prototype.constructor=CustomElementConstructor;scope.constructorTable.set(newPrototype,CustomElementConstructor);scope.nativePrototypeTable.set(prototype,newPrototype);var nativeConstructor=originalRegisterElement.call(unwrap(this),tagName,p);return CustomElementConstructor;};forwardMethodsToWrapper([window.HTMLDocument||window.Document],["registerElement"]);} -forwardMethodsToWrapper([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement,window.HTMLHtmlElement],["appendChild","compareDocumentPosition","contains","getElementsByClassName","getElementsByTagName","getElementsByTagNameNS","insertBefore","querySelector","querySelectorAll","removeChild","replaceChild"]);forwardMethodsToWrapper([window.HTMLBodyElement,window.HTMLHeadElement,window.HTMLHtmlElement],matchesNames);forwardMethodsToWrapper([window.HTMLDocument||window.Document],["adoptNode","importNode","contains","createComment","createDocumentFragment","createElement","createElementNS","createEvent","createEventNS","createRange","createTextNode","createTreeWalker","elementFromPoint","getElementById","getElementsByName","getSelection"]);mixin(Document.prototype,GetElementsByInterface);mixin(Document.prototype,ParentNodeInterface);mixin(Document.prototype,SelectorsInterface);mixin(Document.prototype,NonElementParentNodeInterface);mixin(Document.prototype,{get implementation(){var implementation=implementationTable.get(this);if(implementation)return implementation;implementation=new DOMImplementation(unwrap(this).implementation);implementationTable.set(this,implementation);return implementation;},get defaultView(){return wrap(unwrap(this).defaultView);}});registerWrapper(window.Document,Document,document.implementation.createHTMLDocument(""));if(window.HTMLDocument)registerWrapper(window.HTMLDocument,Document);wrapEventTargetMethods([window.HTMLBodyElement,window.HTMLDocument||window.Document,window.HTMLHeadElement]);function DOMImplementation(impl){setWrapper(impl,this);} -var originalCreateDocument=document.implementation.createDocument;DOMImplementation.prototype.createDocument=function(){arguments[2]=unwrap(arguments[2]);return wrap(originalCreateDocument.apply(unsafeUnwrap(this),arguments));};function wrapImplMethod(constructor,name){var original=document.implementation[name];constructor.prototype[name]=function(){return wrap(original.apply(unsafeUnwrap(this),arguments));};} -function forwardImplMethod(constructor,name){var original=document.implementation[name];constructor.prototype[name]=function(){return original.apply(unsafeUnwrap(this),arguments);};} -wrapImplMethod(DOMImplementation,"createDocumentType");wrapImplMethod(DOMImplementation,"createHTMLDocument");forwardImplMethod(DOMImplementation,"hasFeature");registerWrapper(window.DOMImplementation,DOMImplementation);forwardMethodsToWrapper([window.DOMImplementation],["createDocument","createDocumentType","createHTMLDocument","hasFeature"]);scope.adoptNodeNoRemove=adoptNodeNoRemove;scope.wrappers.DOMImplementation=DOMImplementation;scope.wrappers.Document=Document;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var EventTarget=scope.wrappers.EventTarget;var Selection=scope.wrappers.Selection;var mixin=scope.mixin;var registerWrapper=scope.registerWrapper;var renderAllPending=scope.renderAllPending;var unwrap=scope.unwrap;var unwrapIfNeeded=scope.unwrapIfNeeded;var wrap=scope.wrap;var OriginalWindow=window.Window;var originalGetComputedStyle=window.getComputedStyle;var originalGetDefaultComputedStyle=window.getDefaultComputedStyle;var originalGetSelection=window.getSelection;function Window(impl){EventTarget.call(this,impl);} -Window.prototype=Object.create(EventTarget.prototype);OriginalWindow.prototype.getComputedStyle=function(el,pseudo){return wrap(this||window).getComputedStyle(unwrapIfNeeded(el),pseudo);};if(originalGetDefaultComputedStyle){OriginalWindow.prototype.getDefaultComputedStyle=function(el,pseudo){return wrap(this||window).getDefaultComputedStyle(unwrapIfNeeded(el),pseudo);};} -OriginalWindow.prototype.getSelection=function(){return wrap(this||window).getSelection();};delete window.getComputedStyle;delete window.getDefaultComputedStyle;delete window.getSelection;["addEventListener","removeEventListener","dispatchEvent"].forEach(function(name){OriginalWindow.prototype[name]=function(){var w=wrap(this||window);return w[name].apply(w,arguments);};delete window[name];});mixin(Window.prototype,{getComputedStyle:function(el,pseudo){renderAllPending();return originalGetComputedStyle.call(unwrap(this),unwrapIfNeeded(el),pseudo);},getSelection:function(){renderAllPending();return new Selection(originalGetSelection.call(unwrap(this)));},get document(){return wrap(unwrap(this).document);}});if(originalGetDefaultComputedStyle){Window.prototype.getDefaultComputedStyle=function(el,pseudo){renderAllPending();return originalGetDefaultComputedStyle.call(unwrap(this),unwrapIfNeeded(el),pseudo);};} -registerWrapper(OriginalWindow,Window,window);scope.wrappers.Window=Window;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var unwrap=scope.unwrap;var OriginalDataTransfer=window.DataTransfer||window.Clipboard;var OriginalDataTransferSetDragImage=OriginalDataTransfer.prototype.setDragImage;if(OriginalDataTransferSetDragImage){OriginalDataTransfer.prototype.setDragImage=function(image,x,y){OriginalDataTransferSetDragImage.call(this,unwrap(image),x,y);};}})(window.ShadowDOMPolyfill);(function(scope){"use strict";var registerWrapper=scope.registerWrapper;var setWrapper=scope.setWrapper;var unwrap=scope.unwrap;var OriginalFormData=window.FormData;if(!OriginalFormData)return;function FormData(formElement){var impl;if(formElement instanceof OriginalFormData){impl=formElement;}else{impl=new OriginalFormData(formElement&&unwrap(formElement));} -setWrapper(impl,this);} -registerWrapper(OriginalFormData,FormData,new OriginalFormData());scope.wrappers.FormData=FormData;})(window.ShadowDOMPolyfill);(function(scope){"use strict";var unwrapIfNeeded=scope.unwrapIfNeeded;var originalSend=XMLHttpRequest.prototype.send;XMLHttpRequest.prototype.send=function(obj){return originalSend.call(this,unwrapIfNeeded(obj));};})(window.ShadowDOMPolyfill);(function(scope){"use strict";var isWrapperFor=scope.isWrapperFor;var elements={a:"HTMLAnchorElement",area:"HTMLAreaElement",audio:"HTMLAudioElement",base:"HTMLBaseElement",body:"HTMLBodyElement",br:"HTMLBRElement",button:"HTMLButtonElement",canvas:"HTMLCanvasElement",caption:"HTMLTableCaptionElement",col:"HTMLTableColElement",content:"HTMLContentElement",data:"HTMLDataElement",datalist:"HTMLDataListElement",del:"HTMLModElement",dir:"HTMLDirectoryElement",div:"HTMLDivElement",dl:"HTMLDListElement",embed:"HTMLEmbedElement",fieldset:"HTMLFieldSetElement",font:"HTMLFontElement",form:"HTMLFormElement",frame:"HTMLFrameElement",frameset:"HTMLFrameSetElement",h1:"HTMLHeadingElement",head:"HTMLHeadElement",hr:"HTMLHRElement",html:"HTMLHtmlElement",iframe:"HTMLIFrameElement",img:"HTMLImageElement",input:"HTMLInputElement",keygen:"HTMLKeygenElement",label:"HTMLLabelElement",legend:"HTMLLegendElement",li:"HTMLLIElement",link:"HTMLLinkElement",map:"HTMLMapElement",marquee:"HTMLMarqueeElement",menu:"HTMLMenuElement",menuitem:"HTMLMenuItemElement",meta:"HTMLMetaElement",meter:"HTMLMeterElement",object:"HTMLObjectElement",ol:"HTMLOListElement",optgroup:"HTMLOptGroupElement",option:"HTMLOptionElement",output:"HTMLOutputElement",p:"HTMLParagraphElement",param:"HTMLParamElement",pre:"HTMLPreElement",progress:"HTMLProgressElement",q:"HTMLQuoteElement",script:"HTMLScriptElement",select:"HTMLSelectElement",shadow:"HTMLShadowElement",source:"HTMLSourceElement",span:"HTMLSpanElement",style:"HTMLStyleElement",table:"HTMLTableElement",tbody:"HTMLTableSectionElement",template:"HTMLTemplateElement",textarea:"HTMLTextAreaElement",thead:"HTMLTableSectionElement",time:"HTMLTimeElement",title:"HTMLTitleElement",tr:"HTMLTableRowElement",track:"HTMLTrackElement",ul:"HTMLUListElement",video:"HTMLVideoElement"};function overrideConstructor(tagName){var nativeConstructorName=elements[tagName];var nativeConstructor=window[nativeConstructorName];if(!nativeConstructor)return;var element=document.createElement(tagName);var wrapperConstructor=element.constructor;window[nativeConstructorName]=wrapperConstructor;} -Object.keys(elements).forEach(overrideConstructor);Object.getOwnPropertyNames(scope.wrappers).forEach(function(name){window[name]=scope.wrappers[name];});})(window.ShadowDOMPolyfill);(function(scope){var ShadowCSS={strictStyling:false,registry:{},shimStyling:function(root,name,extendsName){var scopeStyles=this.prepareRoot(root,name,extendsName);var typeExtension=this.isTypeExtension(extendsName);var scopeSelector=this.makeScopeSelector(name,typeExtension);var cssText=stylesToCssText(scopeStyles,true);cssText=this.scopeCssText(cssText,scopeSelector);if(root){root.shimmedStyle=cssText;} -this.addCssToDocument(cssText,name);},shimStyle:function(style,selector){return this.shimCssText(style.textContent,selector);},shimCssText:function(cssText,selector){cssText=this.insertDirectives(cssText);return this.scopeCssText(cssText,selector);},makeScopeSelector:function(name,typeExtension){if(name){return typeExtension?"[is="+name+"]":name;} -return"";},isTypeExtension:function(extendsName){return extendsName&&extendsName.indexOf("-")<0;},prepareRoot:function(root,name,extendsName){var def=this.registerRoot(root,name,extendsName);this.replaceTextInStyles(def.rootStyles,this.insertDirectives);this.removeStyles(root,def.rootStyles);if(this.strictStyling){this.applyScopeToContent(root,name);} -return def.scopeStyles;},removeStyles:function(root,styles){for(var i=0,l=styles.length,s;i","+","~"],scoped=selector,attrName="["+scopeSelector+"]";splits.forEach(function(sep){var parts=scoped.split(sep);scoped=parts.map(function(p){var t=p.trim().replace(polyfillHostRe,"");if(t&&splits.indexOf(t)<0&&t.indexOf(attrName)<0){p=t.replace(/([^:]*)(:*)(.*)/,"$1"+attrName+"$2$3");} -return p;}).join(sep);});return scoped;},insertPolyfillHostInCssText:function(selector){return selector.replace(colonHostContextRe,polyfillHostContext).replace(colonHostRe,polyfillHost);},propertiesFromRule:function(rule){var cssText=rule.style.cssText;if(rule.style.content&&!rule.style.content.match(/['"]+|attr/)){cssText=cssText.replace(/content:[^;]*;/g,"content: '"+rule.style.content+"';");} -var style=rule.style;for(var i in style){if(style[i]==="initial"){cssText+=i+": initial; ";}} -return cssText;},replaceTextInStyles:function(styles,action){if(styles&&action){if(!(styles instanceof Array)){styles=[styles];} -Array.prototype.forEach.call(styles,function(s){s.textContent=action.call(this,s.textContent);},this);}},addCssToDocument:function(cssText,name){if(cssText.match("@import")){addOwnSheet(cssText,name);}else{addCssToDocument(cssText);}}};var selectorRe=/([^{]*)({[\s\S]*?})/gim,cssCommentRe=/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim,cssCommentNextSelectorRe=/\/\*\s*@polyfill ([^*]*\*+([^\/*][^*]*\*+)*\/)([^{]*?){/gim,cssContentNextSelectorRe=/polyfill-next-selector[^}]*content\:[\s]*?['"](.*?)['"][;\s]*}([^{]*?){/gim,cssCommentRuleRe=/\/\*\s@polyfill-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim,cssContentRuleRe=/(polyfill-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,cssCommentUnscopedRuleRe=/\/\*\s@polyfill-unscoped-rule([^*]*\*+([^\/*][^*]*\*+)*)\//gim,cssContentUnscopedRuleRe=/(polyfill-unscoped-rule)[^}]*(content\:[\s]*['"](.*?)['"])[;\s]*[^}]*}/gim,cssPseudoRe=/::(x-[^\s{,(]*)/gim,cssPartRe=/::part\(([^)]*)\)/gim,polyfillHost="-shadowcsshost",polyfillHostContext="-shadowcsscontext",parenSuffix=")(?:\\(("+"(?:\\([^)(]*\\)|[^)(]*)+?"+")\\))?([^,{]*)";var cssColonHostRe=new RegExp("("+polyfillHost+parenSuffix,"gim"),cssColonHostContextRe=new RegExp("("+polyfillHostContext+parenSuffix,"gim"),selectorReSuffix="([>\\s~+[.,{:][\\s\\S]*)?$",colonHostRe=/\:host/gim,colonHostContextRe=/\:host-context/gim,polyfillHostNoCombinator=polyfillHost+"-no-combinator",polyfillHostRe=new RegExp(polyfillHost,"gim"),polyfillHostContextRe=new RegExp(polyfillHostContext,"gim"),shadowDOMSelectorsRe=[/>>>/g,/::shadow/g,/::content/g,/\/deep\//g,/\/shadow\//g,/\/shadow-deep\//g,/\^\^/g,/\^(?!=)/g];function stylesToCssText(styles,preserveComments){var cssText="";Array.prototype.forEach.call(styles,function(s){cssText+=s.textContent+"\n\n";});if(!preserveComments){cssText=cssText.replace(cssCommentRe,"");} -return cssText;} -function cssTextToStyle(cssText){var style=document.createElement("style");style.textContent=cssText;return style;} -function cssToRules(cssText){var style=cssTextToStyle(cssText);document.head.appendChild(style);var rules=[];if(style.sheet){try{rules=style.sheet.cssRules;}catch(e){}}else{console.warn("sheet not found",style);} -style.parentNode.removeChild(style);return rules;} -var frame=document.createElement("iframe");frame.style.display="none";function initFrame(){frame.initialized=true;document.body.appendChild(frame);var doc=frame.contentDocument;var base=doc.createElement("base");base.href=document.baseURI;doc.head.appendChild(base);} -function inFrame(fn){if(!frame.initialized){initFrame();} -document.body.appendChild(frame);fn(frame.contentDocument);document.body.removeChild(frame);} -var isChrome=navigator.userAgent.match("Chrome");function withCssRules(cssText,callback){if(!callback){return;} -var rules;if(cssText.match("@import")&&isChrome){var style=cssTextToStyle(cssText);inFrame(function(doc){doc.head.appendChild(style.impl);rules=Array.prototype.slice.call(style.sheet.cssRules,0);callback(rules);});}else{rules=cssToRules(cssText);callback(rules);}} -function rulesToCss(cssRules){for(var i=0,css=[];i32&&unicode<127&&[34,35,60,62,63,96].indexOf(unicode)==-1){return c;} -return encodeURIComponent(c);} -function percentEscapeQuery(c){var unicode=c.charCodeAt(0);if(unicode>32&&unicode<127&&[34,35,60,62,96].indexOf(unicode)==-1){return c;} -return encodeURIComponent(c);} -var EOF=undefined,ALPHA=/[a-zA-Z]/,ALPHANUMERIC=/[a-zA-Z0-9\+\-\.]/;function parse(input,stateOverride,base){function err(message){errors.push(message);} -var state=stateOverride||"scheme start",cursor=0,buffer="",seenAt=false,seenBracket=false,errors=[];loop:while((input[cursor-1]!=EOF||cursor==0)&&!this._isInvalid){var c=input[cursor];switch(state){case"scheme start":if(c&&ALPHA.test(c)){buffer+=c.toLowerCase();state="scheme";}else if(!stateOverride){buffer="";state="no scheme";continue;}else{err("Invalid scheme.");break loop;} -break;case"scheme":if(c&&ALPHANUMERIC.test(c)){buffer+=c.toLowerCase();}else if(":"==c){this._scheme=buffer;buffer="";if(stateOverride){break loop;} -if(isRelativeScheme(this._scheme)){this._isRelative=true;} -if("file"==this._scheme){state="relative";}else if(this._isRelative&&base&&base._scheme==this._scheme){state="relative or authority";}else if(this._isRelative){state="authority first slash";}else{state="scheme data";}}else if(!stateOverride){buffer="";cursor=0;state="no scheme";continue;}else if(EOF==c){break loop;}else{err("Code point not allowed in scheme: "+c);break loop;} -break;case"scheme data":if("?"==c){this._query="?";state="query";}else if("#"==c){this._fragment="#";state="fragment";}else{if(EOF!=c&&"\t"!=c&&"\n"!=c&&"\r"!=c){this._schemeData+=percentEscape(c);}} -break;case"no scheme":if(!base||!isRelativeScheme(base._scheme)){err("Missing scheme.");invalid.call(this);}else{state="relative";continue;} -break;case"relative or authority":if("/"==c&&"/"==input[cursor+1]){state="authority ignore slashes";}else{err("Expected /, got: "+c);state="relative";continue;} -break;case"relative":this._isRelative=true;if("file"!=this._scheme)this._scheme=base._scheme;if(EOF==c){this._host=base._host;this._port=base._port;this._path=base._path.slice();this._query=base._query;this._username=base._username;this._password=base._password;break loop;}else if("/"==c||"\\"==c){if("\\"==c)err("\\ is an invalid code point.");state="relative slash";}else if("?"==c){this._host=base._host;this._port=base._port;this._path=base._path.slice();this._query="?";this._username=base._username;this._password=base._password;state="query";}else if("#"==c){this._host=base._host;this._port=base._port;this._path=base._path.slice();this._query=base._query;this._fragment="#";this._username=base._username;this._password=base._password;state="fragment";}else{var nextC=input[cursor+1];var nextNextC=input[cursor+2];if("file"!=this._scheme||!ALPHA.test(c)||nextC!=":"&&nextC!="|"||EOF!=nextNextC&&"/"!=nextNextC&&"\\"!=nextNextC&&"?"!=nextNextC&&"#"!=nextNextC){this._host=base._host;this._port=base._port;this._username=base._username;this._password=base._password;this._path=base._path.slice();this._path.pop();} -state="relative path";continue;} -break;case"relative slash":if("/"==c||"\\"==c){if("\\"==c){err("\\ is an invalid code point.");} -if("file"==this._scheme){state="file host";}else{state="authority ignore slashes";}}else{if("file"!=this._scheme){this._host=base._host;this._port=base._port;this._username=base._username;this._password=base._password;} -state="relative path";continue;} -break;case"authority first slash":if("/"==c){state="authority second slash";}else{err("Expected '/', got: "+c);state="authority ignore slashes";continue;} -break;case"authority second slash":state="authority ignore slashes";if("/"!=c){err("Expected '/', got: "+c);continue;} -break;case"authority ignore slashes":if("/"!=c&&"\\"!=c){state="authority";continue;}else{err("Expected authority, got: "+c);} -break;case"authority":if("@"==c){if(seenAt){err("@ already seen.");buffer+="%40";} -seenAt=true;for(var i=0;i0){var lastRecord=records[length-1];var recordToReplaceLast=selectRecord(lastRecord,record);if(recordToReplaceLast){records[length-1]=recordToReplaceLast;return;}}else{scheduleCallback(this.observer);} -records[length]=record;},addListeners:function(){this.addListeners_(this.target);},addListeners_:function(node){var options=this.options;if(options.attributes)node.addEventListener("DOMAttrModified",this,true);if(options.characterData)node.addEventListener("DOMCharacterDataModified",this,true);if(options.childList)node.addEventListener("DOMNodeInserted",this,true);if(options.childList||options.subtree)node.addEventListener("DOMNodeRemoved",this,true);},removeListeners:function(){this.removeListeners_(this.target);},removeListeners_:function(node){var options=this.options;if(options.attributes)node.removeEventListener("DOMAttrModified",this,true);if(options.characterData)node.removeEventListener("DOMCharacterDataModified",this,true);if(options.childList)node.removeEventListener("DOMNodeInserted",this,true);if(options.childList||options.subtree)node.removeEventListener("DOMNodeRemoved",this,true);},addTransientObserver:function(node){if(node===this.target)return;this.addListeners_(node);this.transientObservedNodes.push(node);var registrations=registrationsTable.get(node);if(!registrations)registrationsTable.set(node,registrations=[]);registrations.push(this);},removeTransientObservers:function(){var transientObservedNodes=this.transientObservedNodes;this.transientObservedNodes=[];transientObservedNodes.forEach(function(node){this.removeListeners_(node);var registrations=registrationsTable.get(node);for(var i=0;i=200&&request.status<300||request.status===304||request.status===0;},load:function(url,next,nextContext){var request=new XMLHttpRequest();if(scope.flags.debug||scope.flags.bust){url+="?"+Math.random();} -request.open("GET",url,xhr.async);request.addEventListener("readystatechange",function(e){if(request.readyState===4){var redirectedUrl=null;try{var locationHeader=request.getResponseHeader("Location");if(locationHeader){redirectedUrl=locationHeader.substr(0,1)==="/"?location.origin+locationHeader:locationHeader;}}catch(e){console.error(e.message);} -next.call(nextContext,!xhr.ok(request)&&request,request.response||request.responseText,redirectedUrl);}});request.send();return request;},loadDocument:function(url,next,nextContext){this.load(url,next,nextContext).responseType="document";}};scope.xhr=xhr;});window.HTMLImports.addModule(function(scope){var xhr=scope.xhr;var flags=scope.flags;var Loader=function(onLoad,onComplete){this.cache={};this.onload=onLoad;this.oncomplete=onComplete;this.inflight=0;this.pending={};};Loader.prototype={addNodes:function(nodes){this.inflight+=nodes.length;for(var i=0,l=nodes.length,n;i-1){body=atob(body);}else{body=decodeURIComponent(body);} -setTimeout(function(){this.receive(url,elt,null,body);}.bind(this),0);}else{var receiveXhr=function(err,resource,redirectedUrl){this.receive(url,elt,err,resource,redirectedUrl);}.bind(this);xhr.load(url,receiveXhr);}},receive:function(url,elt,err,resource,redirectedUrl){this.cache[url]=resource;var $p=this.pending[url];for(var i=0,l=$p.length,p;i=0){this.dynamicElements.splice(i,1);}},parseImport:function(elt){elt.import=elt.__doc;if(window.HTMLImports.__importsParsingHook){window.HTMLImports.__importsParsingHook(elt);} -if(elt.import){elt.import.__importParsed=true;} -this.markParsingComplete(elt);if(elt.__resource&&!elt.__error){elt.dispatchEvent(new CustomEvent("load",{bubbles:false}));}else{elt.dispatchEvent(new CustomEvent("error",{bubbles:false}));} -if(elt.__pending){var fn;while(elt.__pending.length){fn=elt.__pending.shift();if(fn){fn({target:elt});}}} -this.parseNext();},parseLink:function(linkElt){if(nodeIsImport(linkElt)){this.parseImport(linkElt);}else{linkElt.href=linkElt.href;this.parseGeneric(linkElt);}},parseStyle:function(elt){var src=elt;elt=cloneStyle(elt);src.__appliedElement=elt;elt.__importElement=src;this.parseGeneric(elt);},parseGeneric:function(elt){this.trackElement(elt);this.addElementToDocument(elt);},rootImportForElement:function(elt){var n=elt;while(n.ownerDocument.__importLink){n=n.ownerDocument.__importLink;} -return n;},addElementToDocument:function(elt){var port=this.rootImportForElement(elt.__importElement||elt);port.parentNode.insertBefore(elt,port);},trackElement:function(elt,callback){var self=this;var done=function(e){elt.removeEventListener("load",done);elt.removeEventListener("error",done);if(callback){callback(e);} -self.markParsingComplete(elt);self.parseNext();};elt.addEventListener("load",done);elt.addEventListener("error",done);if(isIE&&elt.localName==="style"){var fakeLoad=false;if(elt.textContent.indexOf("@import")==-1){fakeLoad=true;}else if(elt.sheet){fakeLoad=true;var csr=elt.sheet.cssRules;var len=csr?csr.length:0;for(var i=0,r;i=0;},hasResource:function(node){if(nodeIsImport(node)&&node.__doc===undefined){return false;} -return true;}};function nodeIsImport(elt){return elt.localName==="link"&&elt.rel===IMPORT_LINK_TYPE;} -function generateScriptDataUrl(script){var scriptContent=generateScriptContent(script);return"data:text/javascript;charset=utf-8,"+encodeURIComponent(scriptContent);} -function generateScriptContent(script){return script.textContent+generateSourceMapHint(script);} -function generateSourceMapHint(script){var owner=script.ownerDocument;owner.__importedScripts=owner.__importedScripts||0;var moniker=script.ownerDocument.baseURI;var num=owner.__importedScripts?"-"+owner.__importedScripts:"";owner.__importedScripts++;return"\n//# sourceURL="+moniker+num+".js\n";} -function cloneStyle(style){var clone=style.ownerDocument.createElement("style");clone.textContent=style.textContent;path.resolveUrlsInStyle(clone);return clone;} -scope.parser=importParser;scope.IMPORT_SELECTOR=IMPORT_SELECTOR;});window.HTMLImports.addModule(function(scope){var flags=scope.flags;var IMPORT_LINK_TYPE=scope.IMPORT_LINK_TYPE;var IMPORT_SELECTOR=scope.IMPORT_SELECTOR;var rootDocument=scope.rootDocument;var Loader=scope.Loader;var Observer=scope.Observer;var parser=scope.parser;var importer={documents:{},documentPreloadSelectors:IMPORT_SELECTOR,importsPreloadSelectors:[IMPORT_SELECTOR].join(","),loadNode:function(node){importLoader.addNode(node);},loadSubtree:function(parent){var nodes=this.marshalNodes(parent);importLoader.addNodes(nodes);},marshalNodes:function(parent){return parent.querySelectorAll(this.loadSelectorsForNode(parent));},loadSelectorsForNode:function(node){var doc=node.ownerDocument||node;return doc===rootDocument?this.documentPreloadSelectors:this.importsPreloadSelectors;},loaded:function(url,elt,resource,err,redirectedUrl){flags.load&&console.log("loaded",url,elt);elt.__resource=resource;elt.__error=err;if(isImportLink(elt)){var doc=this.documents[url];if(doc===undefined){doc=err?null:makeDocument(resource,redirectedUrl||url);if(doc){doc.__importLink=elt;this.bootDocument(doc);} -this.documents[url]=doc;} -elt.__doc=doc;} -parser.parseNext();},bootDocument:function(doc){this.loadSubtree(doc);this.observer.observe(doc);parser.parseNext();},loadedAll:function(){parser.parseNext();}};var importLoader=new Loader(importer.loaded.bind(importer),importer.loadedAll.bind(importer));importer.observer=new Observer();function isImportLink(elt){return isLinkRel(elt,IMPORT_LINK_TYPE);} -function isLinkRel(elt,rel){return elt.localName==="link"&&elt.getAttribute("rel")===rel;} -function hasBaseURIAccessor(doc){return!!Object.getOwnPropertyDescriptor(doc,"baseURI");} -function makeDocument(resource,url){var doc=document.implementation.createHTMLDocument(IMPORT_LINK_TYPE);doc._URL=url;var base=doc.createElement("base");base.setAttribute("href",url);if(!doc.baseURI&&!hasBaseURIAccessor(doc)){Object.defineProperty(doc,"baseURI",{value:url});} -var meta=doc.createElement("meta");meta.setAttribute("charset","utf-8");doc.head.appendChild(meta);doc.head.appendChild(base);doc.body.innerHTML=resource;if(window.HTMLTemplateElement&&HTMLTemplateElement.bootstrap){HTMLTemplateElement.bootstrap(doc);} -return doc;} -if(!document.baseURI){var baseURIDescriptor={get:function(){var base=document.querySelector("base");return base?base.href:window.location.href;},configurable:true};Object.defineProperty(document,"baseURI",baseURIDescriptor);Object.defineProperty(rootDocument,"baseURI",baseURIDescriptor);} -scope.importer=importer;scope.importLoader=importLoader;});window.HTMLImports.addModule(function(scope){var parser=scope.parser;var importer=scope.importer;var dynamic={added:function(nodes){var owner,parsed,loading;for(var i=0,l=nodes.length,n;i=0){return;} -processingDocuments.push(doc);var imports=doc.querySelectorAll("link[rel="+IMPORT_LINK_TYPE+"]");for(var i=0,l=imports.length,n;i=0){implementPrototype(element,HTMLElement);} -return element;} -var domCreateElement=document.createElement.bind(document);var domCreateElementNS=document.createElementNS.bind(document);var isInstance;if(!Object.__proto__&&!useNative){isInstance=function(obj,ctor){if(obj instanceof ctor){return true;} -var p=obj;while(p){if(p===ctor.prototype){return true;} -p=p.__proto__;} -return false;};}else{isInstance=function(obj,base){return obj instanceof base;};} -function wrapDomMethodToForceUpgrade(obj,methodName){var orig=obj[methodName];obj[methodName]=function(){var n=orig.apply(this,arguments);upgradeAll(n);return n;};} -wrapDomMethodToForceUpgrade(Node.prototype,"cloneNode");wrapDomMethodToForceUpgrade(document,"importNode");document.registerElement=register;document.createElement=createElement;document.createElementNS=createElementNS;scope.registry=registry;scope.instanceof=isInstance;scope.reservedTagList=reservedTagList;scope.getRegisteredDefinition=getRegisteredDefinition;document.register=document.registerElement;});(function(scope){var useNative=scope.useNative;var initializeModules=scope.initializeModules;var isIE=scope.isIE;if(useNative){var nop=function(){};scope.watchShadow=nop;scope.upgrade=nop;scope.upgradeAll=nop;scope.upgradeDocumentTree=nop;scope.upgradeSubtree=nop;scope.takeRecords=nop;scope.instanceof=function(obj,base){return obj instanceof base;};}else{initializeModules();} -var upgradeDocumentTree=scope.upgradeDocumentTree;var upgradeDocument=scope.upgradeDocument;if(!window.wrap){if(window.ShadowDOMPolyfill){window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded;window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded;}else{window.wrap=window.unwrap=function(node){return node;};}} -if(window.HTMLImports){window.HTMLImports.__importsParsingHook=function(elt){if(elt.import){upgradeDocument(wrap(elt.import));}};} -function bootstrap(){upgradeDocumentTree(window.wrap(document));window.CustomElements.ready=true;var requestAnimationFrame=window.requestAnimationFrame||function(f){setTimeout(f,16);};requestAnimationFrame(function(){setTimeout(function(){window.CustomElements.readyTime=Date.now();if(window.HTMLImports){window.CustomElements.elapsed=window.CustomElements.readyTime-window.HTMLImports.readyTime;} -document.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:true}));});});} -if(document.readyState==="complete"||scope.flags.eager){bootstrap();}else if(document.readyState==="interactive"&&!window.attachEvent&&(!window.HTMLImports||window.HTMLImports.ready)){bootstrap();}else{var loadEvent=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(loadEvent,bootstrap);}})(window.CustomElements);(function(scope){if(!Function.prototype.bind){Function.prototype.bind=function(scope){var self=this;var args=Array.prototype.slice.call(arguments,1);return function(){var args2=args.slice();args2.push.apply(args2,arguments);return self.apply(scope,args2);};};}})(window.WebComponents);(function(scope){var style=document.createElement("style");style.textContent=""+"body {"+"transition: opacity ease-in 0.2s;"+" } \n"+"body[unresolved] {"+"opacity: 0; display: block; overflow: hidden; position: relative;"+" } \n";var head=document.querySelector("head");head.insertBefore(style,head.firstChild);})(window.WebComponents);(function(scope){window.Platform=scope;})(window.WebComponents);'use strict';if(!window.CustomElements||window.CustomElements.hasNative){if(window.Polymer){throw new Error('Cannot proceed. Polymer already present.');} -window.Polymer={};window.Polymer.dom='shadow';} -(function(){function resolve(){document.body.removeAttribute('unresolved');} -if(window.WebComponents){addEventListener('WebComponentsReady',resolve);}else{if(document.readyState==='interactive'||document.readyState==='complete'){resolve();}else{addEventListener('DOMContentLoaded',resolve);}}}());window.Polymer={Settings:function(){var settings=window.Polymer||{};if(!settings.noUrlSettings){var parts=location.search.slice(1).split('&');for(var i=0,o;i=0&&(m=modules[i]);i--){if(m.__upgraded__){return;}else{CustomElements.upgrade(m);}}}}}());Polymer.Base._addFeature({_prepIs:function(){if(!this.is){var module=(document._currentScript||document.currentScript).parentNode;if(module.localName==='dom-module'){var id=module.id||module.getAttribute('name')||module.getAttribute('is');this.is=id;}} -if(this.is){this.is=this.is.toLowerCase();}}});Polymer.Base._addFeature({behaviors:[],_desugarBehaviors:function(){if(this.behaviors.length){this.behaviors=this._desugarSomeBehaviors(this.behaviors);}},_desugarSomeBehaviors:function(behaviors){var behaviorSet=[];behaviors=this._flattenBehaviorsList(behaviors);for(var i=behaviors.length-1;i>=0;i--){var b=behaviors[i];if(behaviorSet.indexOf(b)===-1){this._mixinBehavior(b);behaviorSet.unshift(b);}} -return behaviorSet;},_flattenBehaviorsList:function(behaviors){var flat=[];for(var i=0;i.'));} -if(this._template&&!this._template.content&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate){HTMLTemplateElement.decorate(this._template);}},_stampTemplate:function(){if(this._template){this.root=this.instanceTemplate(this._template);}},instanceTemplate:function(template){var dom=document.importNode(template._content||template.content,true);return dom;}});(function(){var baseAttachedCallback=Polymer.Base.attachedCallback;var baseDetachedCallback=Polymer.Base.detachedCallback;Polymer.Base._addFeature({_hostStack:[],ready:function(){},_registerHost:function(host){this.dataHost=host=host||Polymer.Base._hostStack[Polymer.Base._hostStack.length-1];if(host&&host._clients){host._clients.push(this);} -this._clients=null;this._clientsReadied=false;},_beginHosting:function(){Polymer.Base._hostStack.push(this);if(!this._clients){this._clients=[];}},_endHosting:function(){Polymer.Base._hostStack.pop();},_tryReady:function(){this._readied=false;if(this._canReady()){this._ready();}},_canReady:function(){return!this.dataHost||this.dataHost._clientsReadied;},_ready:function(){this._beforeClientsReady();if(this._template){this._setupRoot();this._readyClients();} -this._clientsReadied=true;this._clients=null;this._afterClientsReady();this._readySelf();},_readyClients:function(){this._beginDistribute();var c$=this._clients;if(c$){for(var i=0,l=c$.length,c;i0||j>0){if(i==0){edits.push(EDIT_ADD);j--;continue;} -if(j==0){edits.push(EDIT_DELETE);i--;continue;} -var northWest=distances[i-1][j-1];var west=distances[i-1][j];var north=distances[i][j-1];var min;if(west]/g;function escapeReplace(c){switch(c){case'&':return'&';case'<':return'<';case'>':return'>';case'"':return'"';case'\xA0':return' ';}} -function escapeAttr(s){return s.replace(escapeAttrRegExp,escapeReplace);} -function escapeData(s){return s.replace(escapeDataRegExp,escapeReplace);} -function makeSet(arr){var set={};for(var i=0;i';case Node.TEXT_NODE:var data=node.data;if(parentNode&&plaintextParents[parentNode.localName]){return data;} -return escapeData(data);case Node.COMMENT_NODE:return'';default:console.error(node);throw new Error('not implemented');}} -function getInnerHTML(node,composed){if(node instanceof HTMLTemplateElement) -node=node.content;var s='';var c$=Polymer.dom(node).childNodes;for(var i=0,l=c$.length,child;i=this._FLUSH_MAX){console.warn('Polymer.dom.flush aborted. Flush may not be complete.');}},_prepareFlush:function(){if(this._needsTakeRecords){CustomElements.takeRecords();} -for(var i=0;i=0){this._staticFlushList.splice(i,1);}},addDebouncer:function(debouncer){this._debouncers.push(debouncer);this._finishDebouncer=Polymer.Debounce(this._finishDebouncer,this._finishFlush);},_finishFlush:function(){Polymer.dom._debouncers=[];}});Polymer.EventApi=function(){'use strict';var DomApi=Polymer.DomApi.ctor;var Settings=Polymer.Settings;DomApi.Event=function(event){this.event=event;};if(Settings.useShadow){DomApi.Event.prototype={get rootTarget(){return this.event.path[0];},get localTarget(){return this.event.target;},get path(){var path=this.event.path;if(!Array.isArray(path)){path=Array.prototype.slice.call(path);} -return path;}};}else{DomApi.Event.prototype={get rootTarget(){return this.event.target;},get localTarget(){var current=this.event.currentTarget;var currentRoot=current&&Polymer.dom(current).getOwnerRoot();var p$=this.path;for(var i=0;i=0){this._listeners.splice(i,1);handle._nodes=[];} -if(!this._hasListeners()){this._cleanup();this._isSetup=false;}},_setup:function(){this._observeContentElements(this.domApi.childNodes);},_cleanup:function(){this._unobserveContentElements(this.domApi.childNodes);},_hasListeners:function(){return Boolean(this._listeners.length);},_scheduleNotify:function(){if(this._debouncer){this._debouncer.stop();} -this._debouncer=Polymer.Debounce(this._debouncer,this._notify);this._debouncer.context=this;Polymer.dom.addDebouncer(this._debouncer);},notify:function(){if(this._hasListeners()){this._scheduleNotify();}},_notify:function(){this._beforeCallListeners();this._callListeners();},_beforeCallListeners:function(){this._updateContentElements();},_updateContentElements:function(){this._observeContentElements(this.domApi.childNodes);},_observeContentElements:function(elements){for(var i=0,n;i0){return~setTimeout(callback,waitTime);}else{this._twiddle.textContent=this._twiddleContent++;this._callbacks.push(callback);return this._currVal++;}},cancel:function(handle){if(handle<0){clearTimeout(~handle);}else{var idx=handle-this._lastVal;if(idx>=0){if(!this._callbacks[idx]){throw'invalid async handle: '+handle;} -this._callbacks[idx]=null;}}},_atEndOfMicrotask:function(){var len=this._callbacks.length;for(var i=0;ilastIndex){parts.push({literal:text.slice(lastIndex,m.index)});} -var mode=m[1][0];var negate=Boolean(m[2]);var value=m[3].trim();var customEvent,notifyEvent,colon;if(mode=='{'&&(colon=value.indexOf('::'))>0){notifyEvent=value.substring(colon+2);value=value.substring(0,colon);customEvent=true;} -parts.push({compoundIndex:parts.length,value:value,mode:mode,negate:negate,event:notifyEvent,customEvent:customEvent});lastIndex=re.lastIndex;} -if(lastIndex&&lastIndex-1;} -var SUPPORTS_PASSIVE=false;(function(){try{var opts=Object.defineProperty({},'passive',{get:function(){SUPPORTS_PASSIVE=true;}});window.addEventListener('test',null,opts);window.removeEventListener('test',null,opts);}catch(e){}}());function PASSIVE_TOUCH(eventName){if(isMouseEvent(eventName)||eventName==='touchend'){return;} -if(HAS_NATIVE_TA&&SUPPORTS_PASSIVE&&Polymer.Settings.passiveTouchGestures){return{passive:true};}} -var IS_TOUCH_ONLY=navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/);var mouseCanceller=function(mouseEvent){var sc=mouseEvent.sourceCapabilities;if(sc&&!sc.firesTouchEvents){return;} -mouseEvent[HANDLED_OBJ]={skip:true};if(mouseEvent.type==='click'){var path=Polymer.dom(mouseEvent).path;if(path){for(var i=0;i=bcr.left&&x<=bcr.right&&(y>=bcr.top&&y<=bcr.bottom));} -return false;} -var POINTERSTATE={mouse:{target:null,mouseIgnoreJob:null},touch:{x:0,y:0,id:-1,scrollDecided:false}};function firstTouchAction(ev){var path=Polymer.dom(ev).path;var ta='auto';for(var i=0,n;i-1&&r.reset){r.reset();}}} -for(i=0,r;idx;}else if(ta==='pan-y'){prevent=dx>dy;} -if(prevent){ev.preventDefault();}else{Gestures.prevent('track');}}},add:function(node,evType,handler){node=wrap(node);var recognizer=this.gestures[evType];var deps=recognizer.deps;var name=recognizer.name;var gobj=node[GESTURE_KEY];if(!gobj){node[GESTURE_KEY]=gobj={};} -for(var i=0,dep,gd;iTRACK_LENGTH){this.moves.shift();} -this.moves.push(move);},movefn:null,upfn:null,prevent:false},reset:function(){this.info.state='start';this.info.started=false;this.info.moves=[];this.info.x=0;this.info.y=0;this.info.prevent=false;untrackDocument(this.info);},hasMovedEnough:function(x,y){if(this.info.prevent){return false;} -if(this.info.started){return true;} -var dx=Math.abs(this.info.x-x);var dy=Math.abs(this.info.y-y);return dx>=TRACK_DISTANCE||dy>=TRACK_DISTANCE;},mousedown:function(e){if(!hasLeftMouseButton(e)){return;} -var t=Gestures.findOriginalTarget(e);var self=this;var movefn=function movefn(e){var x=e.clientX,y=e.clientY;if(self.hasMovedEnough(x,y)){self.info.state=self.info.started?e.type==='mouseup'?'end':'track':'start';if(self.info.state==='start'){Gestures.prevent('tap');} -self.info.addMove({x:x,y:y});if(!hasLeftMouseButton(e)){self.info.state='end';untrackDocument(self.info);} -self.fire(t,e);self.info.started=true;}};var upfn=function upfn(e){if(self.info.started){movefn(e);} -untrackDocument(self.info);};trackDocument(this.info,movefn,upfn);this.info.x=e.clientX;this.info.y=e.clientY;},touchstart:function(e){var ct=e.changedTouches[0];this.info.x=ct.clientX;this.info.y=ct.clientY;},touchmove:function(e){var t=Gestures.findOriginalTarget(e);var ct=e.changedTouches[0];var x=ct.clientX,y=ct.clientY;if(this.hasMovedEnough(x,y)){if(this.info.state==='start'){Gestures.prevent('tap');} -this.info.addMove({x:x,y:y});this.fire(t,ct);this.info.state='track';this.info.started=true;}},touchend:function(e){var t=Gestures.findOriginalTarget(e);var ct=e.changedTouches[0];if(this.info.started){this.info.state='end';this.info.addMove({x:ct.clientX,y:ct.clientY});this.fire(t,ct,e);}},fire:function(target,touch,preventer){var secondlast=this.info.moves[this.info.moves.length-2];var lastmove=this.info.moves[this.info.moves.length-1];var dx=lastmove.x-this.info.x;var dy=lastmove.y-this.info.y;var ddx,ddy=0;if(secondlast){ddx=lastmove.x-secondlast.x;ddy=lastmove.y-secondlast.y;} -return Gestures.fire(target,'track',{state:this.info.state,x:touch.clientX,y:touch.clientY,dx:dx,dy:dy,ddx:ddx,ddy:ddy,sourceEvent:touch,preventer:preventer,hover:function(){return Gestures.deepTargetFind(touch.clientX,touch.clientY);}});}});Gestures.register({name:'tap',deps:['mousedown','click','touchstart','touchend'],flow:{start:['mousedown','touchstart'],end:['click','touchend']},emits:['tap'],info:{x:NaN,y:NaN,prevent:false},reset:function(){this.info.x=NaN;this.info.y=NaN;this.info.prevent=false;},save:function(e){this.info.x=e.clientX;this.info.y=e.clientY;},mousedown:function(e){if(hasLeftMouseButton(e)){this.save(e);}},click:function(e){if(hasLeftMouseButton(e)){this.forward(e);}},touchstart:function(e){this.save(e.changedTouches[0],e);},touchend:function(e){this.forward(e.changedTouches[0],e);},forward:function(e,preventer){var dx=Math.abs(e.clientX-this.info.x);var dy=Math.abs(e.clientY-this.info.y);var t=Gestures.findOriginalTarget(e);if(isNaN(dx)||isNaN(dy)||dx<=TAP_DISTANCE&&dy<=TAP_DISTANCE||isSyntheticClick(e)){if(!this.info.prevent){Gestures.fire(t,'tap',{x:e.clientX,y:e.clientY,sourceEvent:e,preventer:preventer});}}}});var DIRECTION_MAP={x:'pan-x',y:'pan-y',none:'none',all:'auto'};Polymer.Base._addFeature({_setupGestures:function(){this.__polymerGestures=null;},_listen:function(node,eventName,handler){if(Gestures.gestures[eventName]){Gestures.add(node,eventName,handler);}else{node.addEventListener(eventName,handler);}},_unlisten:function(node,eventName,handler){if(Gestures.gestures[eventName]){Gestures.remove(node,eventName,handler);}else{node.removeEventListener(eventName,handler);}},setScrollDirection:function(direction,node){node=node||this;Gestures.setTouchAction(node,DIRECTION_MAP[direction]||'auto');}});Polymer.Gestures=Gestures;}());(function(){'use strict';Polymer.Base._addFeature({$$:function(slctr){return Polymer.dom(this.root).querySelector(slctr);},toggleClass:function(name,bool,node){node=node||this;if(arguments.length==1){bool=!node.classList.contains(name);} -if(bool){Polymer.dom(node).classList.add(name);}else{Polymer.dom(node).classList.remove(name);}},toggleAttribute:function(name,bool,node){node=node||this;if(arguments.length==1){bool=!node.hasAttribute(name);} -if(bool){Polymer.dom(node).setAttribute(name,'');}else{Polymer.dom(node).removeAttribute(name);}},classFollows:function(name,toElement,fromElement){if(fromElement){Polymer.dom(fromElement).classList.remove(name);} -if(toElement){Polymer.dom(toElement).classList.add(name);}},attributeFollows:function(name,toElement,fromElement){if(fromElement){Polymer.dom(fromElement).removeAttribute(name);} -if(toElement){Polymer.dom(toElement).setAttribute(name,'');}},getEffectiveChildNodes:function(){return Polymer.dom(this).getEffectiveChildNodes();},getEffectiveChildren:function(){var list=Polymer.dom(this).getEffectiveChildNodes();return list.filter(function(n){return n.nodeType===Node.ELEMENT_NODE;});},getEffectiveTextContent:function(){var cn=this.getEffectiveChildNodes();var tc=[];for(var i=0,c;c=cn[i];i++){if(c.nodeType!==Node.COMMENT_NODE){tc.push(Polymer.dom(c).textContent);}} -return tc.join('');},queryEffectiveChildren:function(slctr){var e$=Polymer.dom(this).queryDistributedElements(slctr);return e$&&e$[0];},queryAllEffectiveChildren:function(slctr){return Polymer.dom(this).queryDistributedElements(slctr);},getContentChildNodes:function(slctr){var content=Polymer.dom(this.root).querySelector(slctr||'content');return content?Polymer.dom(content).getDistributedNodes():[];},getContentChildren:function(slctr){return this.getContentChildNodes(slctr).filter(function(n){return n.nodeType===Node.ELEMENT_NODE;});},fire:function(type,detail,options){options=options||Polymer.nob;var node=options.node||this;detail=detail===null||detail===undefined?{}:detail;var bubbles=options.bubbles===undefined?true:options.bubbles;var cancelable=Boolean(options.cancelable);var useCache=options._useCache;var event=this._getEvent(type,bubbles,cancelable,useCache);event.detail=detail;if(useCache){this.__eventCache[type]=null;} -node.dispatchEvent(event);if(useCache){this.__eventCache[type]=event;} -return event;},__eventCache:{},_getEvent:function(type,bubbles,cancelable,useCache){var event=useCache&&this.__eventCache[type];if(!event||(event.bubbles!=bubbles||event.cancelable!=cancelable)){event=new Event(type,{bubbles:Boolean(bubbles),cancelable:cancelable});} -return event;},async:function(callback,waitTime){var self=this;return Polymer.Async.run(function(){callback.call(self);},waitTime);},cancelAsync:function(handle){Polymer.Async.cancel(handle);},arrayDelete:function(path,item){var index;if(Array.isArray(path)){index=path.indexOf(item);if(index>=0){return path.splice(index,1);}}else{var arr=this._get(path);index=arr.indexOf(item);if(index>=0){return this.splice(path,index,1);}}},transform:function(transform,node){node=node||this;node.style.webkitTransform=transform;node.style.transform=transform;},translate3d:function(x,y,z,node){node=node||this;this.transform('translate3d('+x+','+y+','+z+')',node);},importHref:function(href,onload,onerror,optAsync){var link=document.createElement('link');link.rel='import';link.href=href;var list=Polymer.Base.importHref.imported=Polymer.Base.importHref.imported||{};var cached=list[link.href];var imprt=cached||link;var self=this;var loadListener=function(e){e.target.__firedLoad=true;e.target.removeEventListener('load',loadListener);e.target.removeEventListener('error',errorListener);return onload.call(self,e);};var errorListener=function(e){e.target.__firedError=true;e.target.removeEventListener('load',loadListener);e.target.removeEventListener('error',errorListener);return onerror.call(self,e);};if(onload){imprt.addEventListener('load',loadListener);} -if(onerror){imprt.addEventListener('error',errorListener);} -if(cached){if(cached.__firedLoad){cached.dispatchEvent(new Event('load'));} -if(cached.__firedError){cached.dispatchEvent(new Event('error'));}}else{list[link.href]=link;optAsync=Boolean(optAsync);if(optAsync){link.setAttribute('async','');} -document.head.appendChild(link);} -return imprt;},create:function(tag,props){var elt=document.createElement(tag);if(props){for(var n in props){elt[n]=props[n];}} -return elt;},isLightDescendant:function(node){return this!==node&&this.contains(node)&&Polymer.dom(this).getOwnerRoot()===Polymer.dom(node).getOwnerRoot();},isLocalDescendant:function(node){return this.root===Polymer.dom(node).getOwnerRoot();}});if(!Polymer.Settings.useNativeCustomElements){var importHref=Polymer.Base.importHref;Polymer.Base.importHref=function(href,onload,onerror,optAsync){CustomElements.ready=false;var loadFn=function(e){CustomElements.upgradeDocumentTree(document);CustomElements.ready=true;if(onload){return onload.call(this,e);}};return importHref.call(this,href,loadFn,onerror,optAsync);};}}());Polymer.Bind={prepareModel:function(model){Polymer.Base.mixin(model,this._modelApi);},_modelApi:{_notifyChange:function(source,event,value){value=value===undefined?this[source]:value;event=event||Polymer.CaseMap.camelToDashCase(source)+'-changed';this.fire(event,{value:value},{bubbles:false,cancelable:false,_useCache:Polymer.Settings.eventDataCache||!Polymer.Settings.isIE});},_propertySetter:function(property,value,effects,fromAbove){var old=this.__data__[property];if(old!==value&&(old===old||value===value)){this.__data__[property]=value;if(typeof value=='object'){this._clearPath(property);} -if(this._propertyChanged){this._propertyChanged(property,value,old);} -if(effects){this._effectEffects(property,value,effects,old,fromAbove);}} -return old;},__setProperty:function(property,value,quiet,node){node=node||this;var effects=node._propertyEffects&&node._propertyEffects[property];if(effects){node._propertySetter(property,value,effects,quiet);}else if(node[property]!==value){node[property]=value;}},_effectEffects:function(property,value,effects,old,fromAbove){for(var i=0,l=effects.length,fx;i1||effect.dynamicFn;for(var i=0,l=args.length;i='0'&&fc<='9'){fc='#';} -switch(fc){case'\'':case'"':a.value=arg.slice(1,-1);a.literal=true;break;case'#':a.value=Number(arg);a.literal=true;break;} -if(!a.literal){a.model=Polymer.Path.root(arg);a.structured=Polymer.Path.isDeep(arg);if(a.structured){a.wildcard=arg.slice(-2)=='.*';if(a.wildcard){a.name=arg.slice(0,-2);}}} -return a;},_marshalInstanceEffects:function(){Polymer.Bind.prepareInstance(this);if(this._bindListeners){Polymer.Bind.setupBindListeners(this);}},_applyEffectValue:function(info,value){var node=this._nodes[info.index];var property=info.name;value=this._computeFinalAnnotationValue(node,property,value,info);if(info.kind=='attribute'){this.serializeValueToAttribute(value,property,node);}else{var pinfo=node._propertyInfo&&node._propertyInfo[property];if(pinfo&&pinfo.readOnly){return;} -this.__setProperty(property,value,Polymer.Settings.suppressBindingNotifications,node);}},_computeFinalAnnotationValue:function(node,property,value,info){if(info.negate){value=!value;} -if(info.isCompound){var storage=node.__compoundStorage__[property];storage[info.compoundIndex]=value;value=storage.join('');} -if(info.kind!=='attribute'){if(property==='className'){value=this._scopeElementClass(node,value);} -if(property==='textContent'||node.localName=='input'&&property=='value'){value=value==undefined?'':value;}} -return value;},_executeStaticEffects:function(){if(this._propertyEffects&&this._propertyEffects.__static__){this._effectEffects('__static__',null,this._propertyEffects.__static__);}}});(function(){var usePolyfillProto=Polymer.Settings.usePolyfillProto;var avoidInstanceProperties=Boolean(Object.getOwnPropertyDescriptor(document.documentElement,'properties'));Polymer.Base._addFeature({_setupConfigure:function(initialConfig){this._config={};this._handlers=[];this._aboveConfig=null;if(initialConfig){for(var i in initialConfig){if(initialConfig[i]!==undefined){this._config[i]=initialConfig[i];}}}},_marshalAttributes:function(){this._takeAttributesToModel(this._config);},_attributeChangedImpl:function(name){var model=this._clientsReadied?this:this._config;this._setAttributeToProperty(model,name);},_configValue:function(name,value){var info=this._propertyInfo[name];if(!info||!info.readOnly){this._config[name]=value;}},_beforeClientsReady:function(){this._configure();},_configure:function(){this._configureAnnotationReferences();this._configureInstanceProperties();this._aboveConfig=this.mixin({},this._config);var config={};for(var i=0;i1){for(var i=0;i+~])'},resolveCss:Polymer.ResolveUrl.resolveCss,parser:Polymer.CssParse,ruleTypes:Polymer.CssParse.types};}();Polymer.StyleTransformer=function(){var styleUtil=Polymer.StyleUtil;var settings=Polymer.Settings;var api={dom:function(node,scope,useAttr,shouldRemoveScope){this._transformDom(node,scope||'',useAttr,shouldRemoveScope);},_transformDom:function(node,selector,useAttr,shouldRemoveScope){if(node.setAttribute){this.element(node,selector,useAttr,shouldRemoveScope);} -var c$=Polymer.dom(node).childNodes;for(var i=0;i *');rule.selector=self._dirShadowTransform(rule.selector);if(callback){callback(rule);}};} -for(var i=0,l=styles.length,s;i=0&&i *');selector=selector.replace(CONTENT_START,HOST+' $1');selector=this._ensureScopedDir(selector);selector=selector.replace(SIMPLE_SELECTOR_SEP,function(m,c,s){if(!stop){var info=self._transformCompoundSelector(s,c,scope,hostScope);stop=stop||info.stop;hostContext=hostContext||info.hostContext;dir=dir||info.dir;c=info.combinator;s=info.value;}else{s=s.replace(SCOPE_JUMP,' ');} -return c+s;});if(hostContext){selector=selector.replace(HOST_CONTEXT_PAREN,function(m,pre,paren,post){var replacement=pre+paren+' '+hostScope+post+COMPLEX_SELECTOR_SEP+' '+pre+hostScope+paren+post;if(dir){replacement+=self._additionalDirSelectors(paren,post,hostScope);} -return replacement;});} -return selector;},_transformDir:function(s){s=s.replace(HOST_DIR,HOST_DIR_REPLACE);s=s.replace(DIR_PAREN,DIR_REPLACE);return s;},_transformCompoundSelector:function(selector,combinator,scope,hostScope){var jumpIndex=selector.search(SCOPE_JUMP);var hostContext=false;var dir=false;if(selector.match(DIR_PAREN)){selector=this._transformDir(selector);dir=true;} -if(selector.indexOf(HOST_CONTEXT)>=0){hostContext=true;}else if(selector.indexOf(HOST)>=0){selector=this._transformHostSelector(selector,hostScope);}else if(jumpIndex!==0){selector=scope?this._transformSimpleSelector(selector,scope):selector;} -if(selector.indexOf(CONTENT)>=0){combinator='';} -var stop;if(jumpIndex>=0){selector=selector.replace(SCOPE_JUMP,' ');stop=true;} -return{value:selector,combinator:combinator,stop:stop,hostContext:hostContext,dir:dir};},_transformSimpleSelector:function(selector,scope){var p$=selector.split(PSEUDO_PREFIX);p$[0]+=scope;return p$.join(PSEUDO_PREFIX);},_transformHostSelector:function(selector,hostScope){var m=selector.match(HOST_PAREN);var paren=m&&m[2].trim()||'';if(paren){if(!paren[0].match(SIMPLE_SELECTOR_PREFIX)){var typeSelector=paren.split(SIMPLE_SELECTOR_PREFIX)[0];if(typeSelector===hostScope){return paren;}else{return SELECTOR_NO_MATCH;}}else{return selector.replace(HOST_PAREN,function(m,host,paren){return hostScope+paren;});}}else{return selector.replace(HOST,hostScope);}},documentRule:function(rule){rule.selector=rule.parsedSelector;this.normalizeRootSelector(rule);if(!settings.useNativeShadow){this._transformRule(rule,this._transformDocumentSelector);}},normalizeRootSelector:function(rule){rule.selector=rule.selector.replace(ROOT,'html');var parts=this._splitSelectorList(rule.selector);parts=parts.filter(function(part){return!part.match(HOST_OR_HOST_GT_STAR);});rule.selector=parts.join(COMPLEX_SELECTOR_SEP);},_transformDocumentSelector:function(selector){return this._transformComplexSelector(selector,SCOPE_DOC_SELECTOR);},_slottedToContent:function(cssText){return cssText.replace(SLOTTED_PAREN,CONTENT+'> $1');},_dirShadowTransform:function(selector){if(!selector.match(/:dir\(/)){return selector;} -return this._splitSelectorList(selector).map(function(s){s=this._ensureScopedDir(s);s=this._transformDir(s);var m=HOST_CONTEXT_PAREN.exec(s);if(m){s+=this._additionalDirSelectors(m[2],m[3],'');} -return s;},this).join(COMPLEX_SELECTOR_SEP);},SCOPE_NAME:'style-scope'};var SCOPE_NAME=api.SCOPE_NAME;var SCOPE_DOC_SELECTOR=':not(['+SCOPE_NAME+'])'+':not(.'+SCOPE_NAME+')';var COMPLEX_SELECTOR_SEP=',';var SIMPLE_SELECTOR_SEP=/(^|[\s>+~]+)((?:\[.+?\]|[^\s>+~=\[])+)/g;var SIMPLE_SELECTOR_PREFIX=/[[.:#*]/;var HOST=':host';var ROOT=':root';var HOST_PAREN=/(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/;var HOST_CONTEXT=':host-context';var HOST_CONTEXT_PAREN=/(.*)(?::host-context)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))(.*)/;var CONTENT='::content';var SCOPE_JUMP=/::content|::shadow|\/deep\//;var CSS_CLASS_PREFIX='.';var CSS_ATTR_PREFIX='['+SCOPE_NAME+'~=';var CSS_ATTR_SUFFIX=']';var PSEUDO_PREFIX=':';var CLASS='class';var CONTENT_START=new RegExp('^('+CONTENT+')');var SELECTOR_NO_MATCH='should_not_match';var SLOTTED_PAREN=/(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g;var HOST_OR_HOST_GT_STAR=/:host(?:\s*>\s*\*)?/;var DIR_PAREN=/(.*):dir\((ltr|rtl)\)/;var DIR_REPLACE=':host-context([dir="$2"]) $1';var HOST_DIR=/:host\(:dir\((rtl|ltr)\)\)/g;var HOST_DIR_REPLACE=':host-context([dir="$1"])';return api;}();Polymer.StyleExtends=function(){var styleUtil=Polymer.StyleUtil;return{hasExtends:function(cssText){return Boolean(cssText.match(this.rx.EXTEND));},transform:function(style){var rules=styleUtil.rulesForStyle(style);var self=this;styleUtil.forEachRule(rules,function(rule){self._mapRuleOntoParent(rule);if(rule.parent){var m;while(m=self.rx.EXTEND.exec(rule.cssText)){var extend=m[1];var extendor=self._findExtendor(extend,rule);if(extendor){self._extendRule(rule,extendor);}}} -rule.cssText=rule.cssText.replace(self.rx.EXTEND,'');});return styleUtil.toCssText(rules,function(rule){if(rule.selector.match(self.rx.STRIP)){rule.cssText='';}},true);},_mapRuleOntoParent:function(rule){if(rule.parent){var map=rule.parent.map||(rule.parent.map={});var parts=rule.selector.split(',');for(var i=0,p;i1){property=sp[0].trim();value=replaceInitialOrInherit(property,sp.slice(1).join(':'));out[property]=value;}}} -return out;} -function invalidateMixinEntry(mixinEntry){var currentProto=ApplyShim.__currentElementProto;var currentElementName=currentProto&¤tProto.is;for(var elementName in mixinEntry.dependants){if(elementName!==currentElementName){mixinEntry.dependants[elementName].__applyShimInvalid=true;}}} -function produceCssProperties(matchText,propertyName,valueProperty,valueMixin){if(valueProperty){styleUtil.processVariableAndFallback(valueProperty,function(prefix,value){if(value&&mapGet(value)){valueMixin='@apply '+value+';';}});} -if(!valueMixin){return matchText;} -var mixinAsProperties=consumeCssProperties(valueMixin);var prefix=matchText.slice(0,matchText.indexOf('--'));var mixinValues=cssTextToMap(mixinAsProperties);var combinedProps=mixinValues;var mixinEntry=mapGet(propertyName);var oldProps=mixinEntry&&mixinEntry.properties;if(oldProps){combinedProps=Object.create(oldProps);combinedProps=Polymer.Base.mixin(combinedProps,mixinValues);}else{mapSet(propertyName,combinedProps);} -var out=[];var p,v;var needToInvalidate=false;for(p in combinedProps){v=mixinValues[p];if(v===undefined){v='initial';} -if(oldProps&&!(p in oldProps)){needToInvalidate=true;} -out.push(propertyName+MIXIN_VAR_SEP+p+': '+v);} -if(needToInvalidate){invalidateMixinEntry(mixinEntry);} -if(mixinEntry){mixinEntry.properties=combinedProps;} -if(valueProperty){prefix=matchText+';'+prefix;} -return prefix+out.join('; ')+';';} -function fixVars(matchText,varA,varB){return'var('+varA+','+'var('+varB+'))';} -function atApplyToCssProperties(mixinName,fallbacks){mixinName=mixinName.replace(APPLY_NAME_CLEAN,'');var vars=[];var mixinEntry=mapGet(mixinName);if(!mixinEntry){mapSet(mixinName,{});mixinEntry=mapGet(mixinName);} -if(mixinEntry){var currentProto=ApplyShim.__currentElementProto;if(currentProto){mixinEntry.dependants[currentProto.is]=currentProto;} -var p,parts,f;for(p in mixinEntry.properties){f=fallbacks&&fallbacks[p];parts=[p,': var(',mixinName,MIXIN_VAR_SEP,p];if(f){parts.push(',',f);} -parts.push(')');vars.push(parts.join(''));}} -return vars.join('; ');} -function consumeCssProperties(text){var m;while(m=MIXIN_MATCH.exec(text)){var matchText=m[0];var mixinName=m[1];var idx=m.index;var applyPos=idx+matchText.indexOf('@apply');var afterApplyPos=idx+matchText.length;var textBeforeApply=text.slice(0,applyPos);var textAfterApply=text.slice(afterApplyPos);var defaults=cssTextToMap(textBeforeApply);var replacement=atApplyToCssProperties(mixinName,defaults);text=[textBeforeApply,replacement,textAfterApply].join('');MIXIN_MATCH.lastIndex=idx+replacement.length;} -return text;} -var ApplyShim={_measureElement:null,_map:mixinMap,_separator:MIXIN_VAR_SEP,transform:function(styles,elementProto){this.__currentElementProto=elementProto;styleUtil.forRulesInStyles(styles,this._boundFindDefinitions);styleUtil.forRulesInStyles(styles,this._boundFindApplications);if(elementProto){elementProto.__applyShimInvalid=false;} -this.__currentElementProto=null;},_findDefinitions:function(rule){var cssText=rule.parsedCssText;cssText=cssText.replace(BAD_VAR,fixVars);cssText=cssText.replace(VAR_ASSIGN,produceCssProperties);rule.cssText=cssText;if(rule.selector===':root'){rule.selector=':host > *';}},_findApplications:function(rule){rule.cssText=consumeCssProperties(rule.cssText);},transformRule:function(rule){this._findDefinitions(rule);this._findApplications(rule);},_getInitialValueForProperty:function(property){if(!this._measureElement){this._measureElement=document.createElement('meta');this._measureElement.style.all='initial';document.head.appendChild(this._measureElement);} -return window.getComputedStyle(this._measureElement).getPropertyValue(property);}};ApplyShim._boundTransformRule=ApplyShim.transformRule.bind(ApplyShim);ApplyShim._boundFindDefinitions=ApplyShim._findDefinitions.bind(ApplyShim);ApplyShim._boundFindApplications=ApplyShim._findApplications.bind(ApplyShim);return ApplyShim;}();(function(){var prepElement=Polymer.Base._prepElement;var nativeShadow=Polymer.Settings.useNativeShadow;var styleUtil=Polymer.StyleUtil;var styleTransformer=Polymer.StyleTransformer;var styleExtends=Polymer.StyleExtends;var applyShim=Polymer.ApplyShim;var settings=Polymer.Settings;Polymer.Base._addFeature({_prepElement:function(element){if(this._encapsulateStyle&&this.__cssBuild!=='shady'){styleTransformer.element(element,this.is,this._scopeCssViaAttr);} -prepElement.call(this,element);},_prepStyles:function(){if(this._encapsulateStyle===undefined){this._encapsulateStyle=!nativeShadow;} -if(!nativeShadow){this._scopeStyle=styleUtil.applyStylePlaceHolder(this.is);} -this.__cssBuild=styleUtil.cssBuildTypeForModule(this.is);},_prepShimStyles:function(){if(this._template){var hasTargetedCssBuild=styleUtil.isTargetedBuild(this.__cssBuild);if(settings.useNativeCSSProperties&&this.__cssBuild==='shadow'&&hasTargetedCssBuild){if(settings.preserveStyleIncludes){styleUtil.styleIncludesToTemplate(this._template);} -return;} -this._styles=this._styles||this._collectStyles();if(settings.useNativeCSSProperties&&!this.__cssBuild){applyShim.transform(this._styles,this);} -var cssText=settings.useNativeCSSProperties&&hasTargetedCssBuild?this._styles.length&&this._styles[0].textContent.trim():styleTransformer.elementStyles(this);this._prepStyleProperties();if(!this._needsStyleProperties()&&cssText){styleUtil.applyCss(cssText,this.is,nativeShadow?this._template.content:null,this._scopeStyle);}}else{this._styles=[];}},_collectStyles:function(){var styles=[];var cssText='',m$=this.styleModules;if(m$){for(var i=0,l=m$.length,m;i=0){property=this.valueForProperties(property,props);}else{var self=this;var fn=function(prefix,value,fallback,suffix){var propertyValue=self.valueForProperty(props[value],props);if(!propertyValue||propertyValue==='initial'){propertyValue=self.valueForProperty(props[fallback]||fallback,props)||fallback;}else if(propertyValue==='apply-shim-inherit'){propertyValue='inherit';} -return prefix+(propertyValue||'')+suffix;};property=styleUtil.processVariableAndFallback(property,fn);}} -return property&&property.trim()||'';},valueForProperties:function(property,props){var parts=property.split(';');for(var i=0,p,m;i\s*\*/,_checkRoot:function(hostScope,selector){return Boolean(selector.match(this._rootSelector))||hostScope==='html'&&selector.indexOf('html')>-1;},whenHostOrRootRule:function(scope,rule,style,callback){if(!rule.propertyInfo){self.decorateRule(rule);} -if(!rule.propertyInfo.properties){return;} -var hostScope=scope.is?styleTransformer._calcHostScope(scope.is,scope.extends):'html';var parsedSelector=rule.parsedSelector;var isRoot=this._checkRoot(hostScope,parsedSelector);var isHost=!isRoot&&parsedSelector.indexOf(':host')===0;var cssBuild=scope.__cssBuild||style.__cssBuild;if(cssBuild==='shady'){isRoot=parsedSelector===hostScope+' > *.'+hostScope||parsedSelector.indexOf('html')>-1;isHost=!isRoot&&parsedSelector.indexOf(hostScope)===0;} -if(!isRoot&&!isHost){return;} -var selectorToMatch=hostScope;if(isHost){if(settings.useNativeShadow&&!rule.transformedSelector){rule.transformedSelector=styleTransformer._transformRuleCss(rule,styleTransformer._transformComplexSelector,scope.is,hostScope);} -selectorToMatch=rule.transformedSelector||rule.parsedSelector;} -if(isRoot&&hostScope==='html'){selectorToMatch=rule.transformedSelector||rule.parsedSelector;} -callback({selector:selectorToMatch,isHost:isHost,isRoot:isRoot});},hostAndRootPropertiesForScope:function(scope){var hostProps={},rootProps={},self=this;styleUtil.forActiveRulesInStyles(scope._styles,function(rule,style){self.whenHostOrRootRule(scope,rule,style,function(info){var element=scope._element||scope;if(matchesSelector.call(element,info.selector)){if(info.isHost){self.collectProperties(rule,hostProps);}else{self.collectProperties(rule,rootProps);}}});});return{rootProps:rootProps,hostProps:hostProps};},transformStyles:function(element,properties,scopeSelector){var self=this;var hostSelector=styleTransformer._calcHostScope(element.is,element.extends);var rxHostSelector=element.extends?'\\'+hostSelector.slice(0,-1)+'\\]':hostSelector;var hostRx=new RegExp(this.rx.HOST_PREFIX+rxHostSelector+this.rx.HOST_SUFFIX);var keyframeTransforms=this._elementKeyframeTransforms(element,scopeSelector);return styleTransformer.elementStyles(element,function(rule){self.applyProperties(rule,properties);if(!settings.useNativeShadow&&!Polymer.StyleUtil.isKeyframesSelector(rule)&&rule.cssText){self.applyKeyframeTransforms(rule,keyframeTransforms);self._scopeSelector(rule,hostRx,hostSelector,element._scopeCssViaAttr,scopeSelector);}});},_elementKeyframeTransforms:function(element,scopeSelector){var keyframesRules=element._styles._keyframes;var keyframeTransforms={};if(!settings.useNativeShadow&&keyframesRules){for(var i=0,keyframesRule=keyframesRules[i];i-1){style.textContent=cssText;} -styleUtil.applyStyle(style,null,element._scopeStyle);}} -if(style){style._useCount=style._useCount||0;if(element._customStyle!=style){style._useCount++;} -element._customStyle=style;} -return style;},mixinCustomStyle:function(props,customStyle){var v;for(var i in customStyle){v=customStyle[i];if(v||v===0){props[i]=v;}}},updateNativeStyleProperties:function(element,properties){var oldPropertyNames=element.__customStyleProperties;if(oldPropertyNames){for(var i=0;ithis.MAX){s$.shift();}},retrieve:function(is,keyValues,keyStyles){var cache=this.cache[is];if(cache){for(var i=cache.length-1,data;i>=0;i--){data=cache[i];if(keyStyles===data.styles&&this._objectsEqual(keyValues,data.keyValues)){return data;}}}},clear:function(){this.cache={};},_objectsEqual:function(target,source){var t,s;for(var i in target){t=target[i],s=source[i];if(!(typeof t==='object'&&t?this._objectsStrictlyEqual(t,s):t===s)){return false;}} -if(Array.isArray(target)){return target.length===source.length;} -return true;},_objectsStrictlyEqual:function(target,source){return this._objectsEqual(target,source)&&this._objectsEqual(source,target);}};}());Polymer.StyleDefaults=function(){var styleProperties=Polymer.StyleProperties;var StyleCache=Polymer.StyleCache;var nativeVariables=Polymer.Settings.useNativeCSSProperties;var api={_styles:[],_properties:null,customStyle:{},_styleCache:new StyleCache(),_element:Polymer.DomApi.wrap(document.documentElement),addStyle:function(style){this._styles.push(style);this._properties=null;},get _styleProperties(){if(!this._properties){styleProperties.decorateStyles(this._styles,this);this._styles._scopeStyleProperties=null;this._properties=styleProperties.hostAndRootPropertiesForScope(this).rootProps;styleProperties.mixinCustomStyle(this._properties,this.customStyle);styleProperties.reify(this._properties);} -return this._properties;},hasStyleProperties:function(){return Boolean(this._properties);},_needsStyleProperties:function(){},_computeStyleProperties:function(){return this._styleProperties;},updateStyles:function(properties){this._properties=null;if(properties){Polymer.Base.mixin(this.customStyle,properties);} -this._styleCache.clear();for(var i=0,s;i0){added.push(key);}} -return[{removed:removed,added:added}];}};Polymer.Collection.get=function(userArray){return Polymer._collections.get(userArray)||new Polymer.Collection(userArray);};Polymer.Collection.applySplices=function(userArray,splices){var coll=Polymer._collections.get(userArray);return coll?coll._applySplices(splices):null;};Polymer({is:'dom-repeat',extends:'template',_template:null,properties:{items:{type:Array},as:{type:String,value:'item'},indexAs:{type:String,value:'index'},sort:{type:Function,observer:'_sortChanged'},filter:{type:Function,observer:'_filterChanged'},observe:{type:String,observer:'_observeChanged'},delay:Number,renderedItemCount:{type:Number,notify:!Polymer.Settings.suppressTemplateNotifications,readOnly:true},initialCount:{type:Number,observer:'_initializeChunking'},targetFramerate:{type:Number,value:20},notifyDomChange:{type:Boolean},_targetFrameTime:{type:Number,computed:'_computeFrameTime(targetFramerate)'}},behaviors:[Polymer.Templatizer],observers:['_itemsChanged(items.*)'],created:function(){this._instances=[];this._pool=[];this._limit=Infinity;var self=this;this._boundRenderChunk=function(){self._renderChunk();};},detached:function(){this.__isDetached=true;for(var i=0;i=0;i--){var inst=this._instances[i];if(inst.isPlaceholder&&i=this._limit){inst=this._downgradeInstance(i,inst.__key__);} -keyToIdx[inst.__key__]=i;if(!inst.isPlaceholder){inst.__setProperty(this.indexAs,i,true);}} -this._pool.length=0;this._setRenderedItemCount(this._instances.length);if(!Polymer.Settings.suppressTemplateNotifications||this.notifyDomChange){this.fire('dom-change');} -this._tryRenderChunk();},_applyFullRefresh:function(){var c=this.collection;var keys;if(this._sortFn){keys=c?c.getKeys():[];}else{keys=[];var items=this.items;if(items){for(var i=0;i=i;j--){this._detachAndRemoveInstance(j);}},_numericSort:function(a,b){return a-b;},_applySplicesUserSort:function(splices){var c=this.collection;var keyMap={};var key;for(var i=0,s;i=0;i--){var idx=removedIdxs[i];if(idx!==undefined){this._detachAndRemoveInstance(idx);}}} -var self=this;if(addedKeys.length){if(this._filterFn){addedKeys=addedKeys.filter(function(a){return self._filterFn(c.getItem(a));});} -addedKeys.sort(function(a,b){return self._sortFn(c.getItem(a),c.getItem(b));});var start=0;for(i=0;i>1;var midKey=this._instances[mid].__key__;var cmp=this._sortFn(c.getItem(midKey),item);if(cmp<0){start=mid+1;}else if(cmp>0){end=mid-1;}else{idx=mid;break;}} -if(idx<0){idx=end+1;} -this._insertPlaceholder(idx,key);return idx;},_applySplicesArrayOrder:function(splices){for(var i=0,s;i=0){path=this.as+'.'+path.substring(dot+1);inst._notifyPath(path,value,true);}else{inst.__setProperty(this.as,value,true);}}}},itemForElement:function(el){var instance=this.modelForElement(el);return instance&&instance[this.as];},keyForElement:function(el){var instance=this.modelForElement(el);return instance&&instance.__key__;},indexForElement:function(el){var instance=this.modelForElement(el);return instance&&instance[this.indexAs];}});Polymer({is:'array-selector',_template:null,properties:{items:{type:Array,observer:'clearSelection'},multi:{type:Boolean,value:false,observer:'clearSelection'},selected:{type:Object,notify:true},selectedItem:{type:Object,notify:true},toggle:{type:Boolean,value:false}},clearSelection:function(){if(Array.isArray(this.selected)){for(var i=0;i

';panicMessageEl.querySelector('#message').textContent=panicTitle;panicMessageEl.querySelector('#details').textContent=panicDetails;panicElement.appendChild(panicMessageEl);rawPanicMessages.push({title:panicTitle,details:panicDetails});}
-function hasPanic(){return rawPanicMessages.length!==0;}
-function getPanicText(){return rawPanicMessages.map(function(msg){return msg.title;}).join(', ');}
-function exportTo(namespace,fn){const obj=exportPath(namespace);const exports=fn();for(const propertyName in exports){const propertyDescriptor=Object.getOwnPropertyDescriptor(exports,propertyName);if(propertyDescriptor){Object.defineProperty(obj,propertyName,propertyDescriptor);}}}
-function initialize(){if(global.isVinn){tr.isVinn=true;}else if(global.process&&global.process.versions.node){tr.isNode=true;}else{tr.isVinn=false;tr.isNode=false;tr.doc=document;tr.isMac=/Mac/.test(navigator.platform);tr.isWindows=/Win/.test(navigator.platform);tr.isChromeOS=/CrOS/.test(navigator.userAgent);tr.isLinux=/Linux/.test(navigator.userAgent);}
-tr.isHeadless=tr.isVinn||tr.isNode;}
-return{initialize,exportTo,isExported,isDefined,showPanic,hasPanic,getPanicText,};})();tr.initialize();'use strict';tr.exportTo('tr.b',function(){function Base64(){}
-function b64ToUint6(nChr){if(nChr>64&&nChr<91)return nChr-65;if(nChr>96&&nChr<123)return nChr-71;if(nChr>47&&nChr<58)return nChr+4;if(nChr===43)return 62;if(nChr===47)return 63;return 0;}
-Base64.getDecodedBufferLength=function(input){let pad=0;if(input.substr(-2)==='=='){pad=2;}else if(input.substr(-1)==='='){pad=1;}
-return((input.length*3+1)>>2)-pad;};Base64.EncodeArrayBufferToString=function(input){let binary='';const bytes=new Uint8Array(input);const len=bytes.byteLength;for(let i=0;ioutput.byteLength){throw new Error('Output buffer too small to decode.');}
-for(let nInIdx=0;nInIdx>>(16>>>nMod3&24)&255);}
-nUint24=0;}}
-return nOutLen;};Base64.btoa=function(input){return btoa(input);};Base64.atob=function(input){return atob(input);};return{Base64,};});'use strict';tr.exportTo('tr.b',function(){let nextGUID=1;const UUID4_PATTERN='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';const GUID={allocateSimple(){return nextGUID++;},getLastSimpleGuid(){return nextGUID-1;},allocateUUID4(){return UUID4_PATTERN.replace(/[xy]/g,function(c){let r=parseInt(Math.random()*16);if(c==='y')r=(r&3)+8;return r.toString(16);});}};return{GUID,};});'use strict';tr.exportTo('tr.b',function(){const URL_REGEX=/^(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b|file:\/\/)([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/;function deepCopy(value){if(!(value instanceof Object)){if(value===undefined||value===null)return value;if(typeof value==='string')return value.substring();if(typeof value==='boolean')return value;if(typeof value==='number')return value;throw new Error('Unrecognized: '+typeof value);}
-const object=value;if(object instanceof Array){const res=new Array(object.length);for(let i=0;i0){high=i-1;continue;}else{hitPos=i;high=i-1;}}
-return hitPos!==-1?hitPos:low;}
-function findIndexInSortedIntervals(ary,mapLoFn,mapWidthFn,loVal){const first=findLowIndexInSortedArray(ary,mapLoFn,loVal);if(first===0){if(loVal>=mapLoFn(ary[0])&&loVal=mapLoFn(ary[first])&&loVal=mapLoFn(ary[first-1])&&loVal=mapLoFn(ary[first-1])&&loVal=mapLoFn(ary[0],0)&&val<=mapHiFn(ary[0],0)){return 0;}
-return-1;}
-if(i=mapLoFn(ary[i-1],i-1)&&val<=mapHiFn(ary[i-1],i-1)){return i-1;}
-if(val>=mapLoFn(ary[i],i)&&val<=mapHiFn(ary[i],i)){return i;}
-return ary.length;}
-if(i===ary.length){if(val>=mapLoFn(ary[i-1],i-1)&&val<=mapHiFn(ary[i-1],i-1)){return i-1;}
-return ary.length;}
-return ary.length;}
-function iterateOverIntersectingIntervals(ary,mapLoFn,mapWidthFn,loVal,hiVal,cb){if(ary.length===0)return;if(loVal>hiVal)return;let i=findLowIndexInSortedArray(ary,mapLoFn,loVal);if(i===-1){return;}
-if(i>0){const hi=mapLoFn(ary[i-1])+mapWidthFn(ary[i-1],i-1);if(hi>=loVal){cb(ary[i-1],i-1);}}
-if(i===ary.length){return;}
-for(let n=ary.length;i=hiVal)break;cb(ary[i],i);}}
-function findClosestElementInSortedArray(ary,mapFn,val,maxDiff){if(ary.length===0)return null;let aftIdx=findLowIndexInSortedArray(ary,mapFn,val);const befIdx=aftIdx>0?aftIdx-1:0;if(aftIdx===ary.length)aftIdx-=1;const befDiff=Math.abs(val-mapFn(ary[befIdx]));const aftDiff=Math.abs(val-mapFn(ary[aftIdx]));if(befDiff>maxDiff&&aftDiff>maxDiff)return null;const idx=befDiff0)idx-=1;const hiInt=ary[idx];let loInt=hiInt;if(val>mapHiFn(hiInt)&&idx+1maxDiff&&hiDiff>maxDiff)return null;if(loDiff=0){if(handlers.length===1){delete this.listeners_[type];}else{handlers.splice(index,1);}}}},dispatchEvent(event){if(!this.listeners_)return true;event.__defineGetter__('target',()=>this);const realPreventDefault=event.preventDefault;event.preventDefault=function(){realPreventDefault.call(this);this.rawReturnValue=false;};const type=event.type;let prevented=0;if(type in this.listeners_){const handlers=this.listeners_[type].concat();for(let i=0,handler;handler=handlers[i];i++){if(handler.handleEvent){prevented|=handler.handleEvent.call(handler,event)===false;}else{prevented|=handler.call(this,event)===false;}}}
-return!prevented&&event.rawReturnValue;},async dispatchAsync(event){if(!this.listeners_)return true;const listeners=this.listeners_[event.type];if(listeners===undefined)return;await Promise.all(listeners.slice().map(listener=>{if(listener.handleEvent){return listener.handleEvent.call(listener,event);}
-return listener.call(this,event);}));},hasEventListener(type){return(this.listeners_!==undefined&&this.listeners_[type]!==undefined);}};return{EventTarget,};});'use strict';tr.exportTo('tr.b',function(){function RegisteredTypeInfo(constructor,metadata){this.constructor=constructor;this.metadata=metadata;}
-const BASIC_REGISTRY_MODE='BASIC_REGISTRY_MODE';const TYPE_BASED_REGISTRY_MODE='TYPE_BASED_REGISTRY_MODE';const ALL_MODES={BASIC_REGISTRY_MODE:true,TYPE_BASED_REGISTRY_MODE:true};function ExtensionRegistryOptions(mode){if(mode===undefined){throw new Error('Mode is required');}
-if(!ALL_MODES[mode]){throw new Error('Not a mode.');}
-this.mode_=mode;this.defaultMetadata_={};this.defaultConstructor_=undefined;this.defaultTypeInfo_=undefined;this.frozen_=false;}
-ExtensionRegistryOptions.prototype={freeze(){if(this.frozen_){throw new Error('Frozen');}
-this.frozen_=true;},get mode(){return this.mode_;},get defaultMetadata(){return this.defaultMetadata_;},set defaultMetadata(defaultMetadata){if(this.frozen_){throw new Error('Frozen');}
-this.defaultMetadata_=defaultMetadata;this.defaultTypeInfo_=undefined;},get defaultConstructor(){return this.defaultConstructor_;},set defaultConstructor(defaultConstructor){if(this.frozen_){throw new Error('Frozen');}
-this.defaultConstructor_=defaultConstructor;this.defaultTypeInfo_=undefined;},get defaultTypeInfo(){if(this.defaultTypeInfo_===undefined&&this.defaultConstructor_){this.defaultTypeInfo_=new RegisteredTypeInfo(this.defaultConstructor,this.defaultMetadata);}
-return this.defaultTypeInfo_;},validateConstructor(constructor){if(!this.mandatoryBaseClass)return;let curProto=constructor.prototype.__proto__;let ok=false;while(curProto){if(curProto===this.mandatoryBaseClass.prototype){ok=true;break;}
-curProto=curProto.__proto__;}
-if(!ok){throw new Error(constructor+'must be subclass of '+registry);}}};return{BASIC_REGISTRY_MODE,TYPE_BASED_REGISTRY_MODE,ExtensionRegistryOptions,RegisteredTypeInfo,};});'use strict';tr.exportTo('tr.b',function(){let Event;if(tr.isHeadless){function HeadlessEvent(type,opt_bubbles,opt_preventable){this.type=type;this.bubbles=(opt_bubbles!==undefined?!!opt_bubbles:false);this.cancelable=(opt_preventable!==undefined?!!opt_preventable:false);this.defaultPrevented=false;this.cancelBubble=false;}
-HeadlessEvent.prototype={preventDefault(){this.defaultPrevented=true;},stopPropagation(){this.cancelBubble=true;}};Event=HeadlessEvent;}else{function TrEvent(type,opt_bubbles,opt_preventable){const e=tr.doc.createEvent('Event');e.initEvent(type,!!opt_bubbles,!!opt_preventable);e.__proto__=global.Event.prototype;return e;}
-TrEvent.prototype={__proto__:global.Event.prototype};Event=TrEvent;}
-function dispatchSimpleEvent(target,type,opt_bubbles,opt_cancelable,opt_fields){const e=new tr.b.Event(type,opt_bubbles,opt_cancelable);Object.assign(e,opt_fields);return target.dispatchEvent(e);}
-async function dispatchSimpleEventAsync(target,type,opt_fields){const e=new tr.b.Event(type,false,false);Object.assign(e,opt_fields);return await target.dispatchAsync(e);}
-return{Event,dispatchSimpleEvent,dispatchSimpleEventAsync,};});'use strict';tr.exportTo('tr.b',function(){const RegisteredTypeInfo=tr.b.RegisteredTypeInfo;const ExtensionRegistryOptions=tr.b.ExtensionRegistryOptions;function decorateBasicExtensionRegistry(registry,extensionRegistryOptions){const savedStateStack=[];registry.registeredTypeInfos_=[];registry.register=function(constructor,opt_metadata){if(registry.findIndexOfRegisteredConstructor(constructor)!==undefined){throw new Error('Handler already registered for '+constructor);}
-extensionRegistryOptions.validateConstructor(constructor);const metadata={};for(const k in extensionRegistryOptions.defaultMetadata){metadata[k]=extensionRegistryOptions.defaultMetadata[k];}
-if(opt_metadata){for(const k in opt_metadata){metadata[k]=opt_metadata[k];}}
-const typeInfo=new RegisteredTypeInfo(constructor,metadata);let e=new tr.b.Event('will-register');e.typeInfo=typeInfo;registry.dispatchEvent(e);registry.registeredTypeInfos_.push(typeInfo);e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.pushCleanStateBeforeTest=function(){savedStateStack.push(registry.registeredTypeInfos_);registry.registeredTypeInfos_=[];const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.popCleanStateAfterTest=function(){registry.registeredTypeInfos_=savedStateStack[0];savedStateStack.splice(0,1);const e=new tr.b.Event('registry-changed');registry.dispatchEvent(e);};registry.findIndexOfRegisteredConstructor=function(constructor){for(let i=0;irange.max){emptyRanges.push(tr.b.math.Range.fromExplicitRange(range.max,other.min));return;}
-if(other.max>range.max){return;}}
-if(opt_totalRange&&(range.maxa.value-b.value);if(name)UnitScale[name]=unitScale;return unitScale;};function definePrefixScaleFromUnitScale(prefixName,unitScale){if(!unitScale){throw new Error('Cannot create PrefixScale without a unit scale.');}
-const prefixScale={};for(const[curPrefix,curScale]of Object.entries(unitScale)){if(curPrefix==='AUTO'){continue;}
-if(curScale.symbol===undefined||!curScale.value){throw new Error(`Cannot create PrefixScale from malformed unit ${curScale}.`);}
-prefixScale[curPrefix]={value:curScale.value,symbol:curScale.symbol};}
-return defineUnitPrefixScale(prefixName,prefixScale);}
-UnitScale.defineUnitScaleFromPrefixScale=function(baseSymbol,baseName,prefixScale,opt_scaleName){if(baseSymbol===undefined){throw new Error('Cannot create UnitScale with undefined baseSymbol.');}
-if(!baseName){throw new Error('Cannot create UnitScale without a baseName.');}
-if(!prefixScale){throw new Error('Cannot create UnitScale without a prefix scale.');}
-const unitScale={};for(const curPrefix of Object.keys(prefixScale)){const curScale=prefixScale[curPrefix];if(curScale.symbol===undefined||!curScale.value){throw new Error(`Cannot convert PrefixScale with malformed prefix ${curScale}.`);}
-const name=curPrefix==='NONE'?baseName:`${curPrefix}_${baseName}`;unitScale[name]={value:curScale.value,symbol:curScale.symbol+baseSymbol,baseSymbol};}
-return UnitScale.defineUnitScale(opt_scaleName,unitScale);};function convertUnit(value,fromScale,toScale){if(value===undefined)return undefined;const fromScaleBase=fromScale.baseSymbol;const toScaleBase=toScale.baseSymbol;if(fromScaleBase!==undefined&&toScaleBase!==undefined&&fromScaleBase!==toScaleBase){throw new Error('Cannot convert between units with different base symbols.');}
-return value*(fromScale.value/toScale.value);}
-defineUnitPrefixScale('BINARY',{NONE:{value:Math.pow(1024,0),symbol:''},KIBI:{value:Math.pow(1024,1),symbol:'Ki'},MEBI:{value:Math.pow(1024,2),symbol:'Mi'},GIBI:{value:Math.pow(1024,3),symbol:'Gi'},TEBI:{value:Math.pow(1024,4),symbol:'Ti'}});defineUnitPrefixScale('METRIC',{NANO:{value:1e-9,symbol:'n'},MICRO:{value:1e-6,symbol:GREEK_SMALL_LETTER_MU},MILLI:{value:1e-3,symbol:'m'},NONE:{value:1,symbol:''},KILO:{value:1e3,symbol:'k'},MEGA:{value:1e6,symbol:'M'},GIGA:{value:1e9,symbol:'G'}});UnitScale.defineUnitScale('TIME',{NANO_SEC:{value:1e-9,symbol:'ns',baseSymbol:'s'},MICRO_SEC:{value:1e-6,symbol:GREEK_SMALL_LETTER_MU+'s',baseSymbol:'s'},MILLI_SEC:{value:1e-3,symbol:'ms',baseSymbol:'s'},SEC:{value:1,symbol:'s',baseSymbol:'s'},MINUTE:{value:SECONDS_IN_A_MINUTE,symbol:'min',baseSymbol:'s'},HOUR:{value:SECONDS_IN_AN_HOUR,symbol:'hr',baseSymbol:'s'},DAY:{value:SECONDS_IN_A_DAY,symbol:'days',baseSymbol:'s'},WEEK:{value:SECONDS_IN_A_WEEK,symbol:'weeks',baseSymbol:'s'},MONTH:{value:SECONDS_IN_A_MONTH,symbol:'months',baseSymbol:'s'},YEAR:{value:SECONDS_IN_A_YEAR,symbol:'years',baseSymbol:'s'}});UnitScale.defineUnitScaleFromPrefixScale('B','BYTE',UnitPrefixScale.BINARY,'MEMORY');definePrefixScaleFromUnitScale('DATA_SIZE',UnitScale.MEMORY);UnitScale.defineUnitScaleFromPrefixScale('/s','SECONDS',UnitPrefixScale.DATA_SIZE,'BANDWIDTH_BYTES');return{UnitPrefixScale,UnitScale,convertUnit,GREEK_SMALL_LETTER_MU,};});'use strict';tr.exportTo('tr.b',function(){const msDisplayMode={scale:1e-3,suffix:'ms',roundedLess(a,b){return Math.round(a*1000)maximumFractionDigits){if(minCtx!==undefined&&maxCtx===undefined){maximumFractionDigits=minimumFractionDigits;}else if(minCtx===undefined&&maxCtx!==undefined){minimumFractionDigits=maximumFractionDigits;}}
-formatter=new Intl.NumberFormat(undefined,{minimumFractionDigits,maximumFractionDigits,});CACHED_FORMATTERS[key]=formatter;}
-return formatter;}
-function max(a,b){if(a===undefined)return b;if(b===undefined)return a;return a.scale>b.scale?a:b;}
-const ImprovementDirection={DONT_CARE:0,BIGGER_IS_BETTER:1,SMALLER_IS_BETTER:2};function Unit(unitName,jsonName,scaleBaseUnit,isDelta,improvementDirection,formatSpec){this.unitName=unitName;this.jsonName=jsonName;this.scaleBaseUnit=scaleBaseUnit;this.isDelta=isDelta;this.improvementDirection=improvementDirection;this.formatSpec_=formatSpec;this.baseUnit=undefined;this.correspondingDeltaUnit=undefined;}
-Unit.prototype={asJSON(){return this.jsonName;},asJSON2(){return this.asJSON().replace('_smallerIsBetter','-').replace('_biggerIsBetter','+');},truncate(value){if(typeof value!=='number')return value;if(0===(value%1))return value;if(typeof this.formatSpec_!=='function'&&(!this.formatSpec_.unitScale||((this.formatSpec_.unitScale.length===1)&&(this.formatSpec_.unitScale[0].value===1)))){const digits=this.formatSpec_.maximumFractionDigits||this.formatSpec_.minimumFractionDigits;return tr.b.math.truncate(value,digits+1);}
-const formatted=this.format(value);let test=Math.round(value);if(formatted===this.format(test))return test;let lo=1;let hi=16;while(lo=1){i++;}
-const selectedSubUnit=scale[i];let formatSpec=this.formatSpec_;if(typeof formatSpec==='function')formatSpec=formatSpec();let unitString='';if(selectedSubUnit.symbol){if(!formatSpec.avoidSpacePrecedingUnit)unitString=' ';unitString+=selectedSubUnit.symbol;}
-value=tr.b.convertUnit(value,this.scaleBaseUnit,selectedSubUnit);const numberString=getNumberFormatter(formatSpec.minimumFractionDigits,formatSpec.maximumFractionDigits,context.minimumFractionDigits,context.maximumFractionDigits).format(value);return signString+numberString+unitString;}};Unit.reset=function(){Unit.currentTimeDisplayMode=TimeDisplayModes.ms;};Unit.timestampFromUs=function(us){return tr.b.convertUnit(us,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);};Object.defineProperty(Unit,'currentTimeDisplayMode',{get(){return Unit.currentTimeDisplayMode_;},set(value){if(Unit.currentTimeDisplayMode_===value)return;Unit.currentTimeDisplayMode_=value;Unit.dispatchEvent(new tr.b.Event('display-mode-changed'));}});Unit.didPreferredTimeDisplayUnitChange=function(){let largest=undefined;const els=tr.ui.b.findDeepElementsMatching(document.body,'tr-v-ui-preferred-display-unit');els.forEach(function(el){largest=max(largest,el.preferredTimeDisplayMode);});Unit.currentTimeDisplayMode=largest===undefined?TimeDisplayModes.ms:largest;};Unit.byName={};Unit.byJSONName={};Unit.fromJSON=function(object){if(typeof(object)==='string'){if(object.endsWith('+')){object=object.slice(0,object.length-1)+'_biggerIsBetter';}else if(object.endsWith('-')){object=object.slice(0,object.length-1)+'_smallerIsBetter';}
-const u=Unit.byJSONName[object];if(u)return u;}
-throw new Error(`Unrecognized unit "${object}"`);};Unit.define=function(params){const definedUnits=[];for(const improvementDirection of Object.values(ImprovementDirection)){const regularUnit=Unit.defineUnitVariant_(params,false,improvementDirection);const deltaUnit=Unit.defineUnitVariant_(params,true,improvementDirection);regularUnit.correspondingDeltaUnit=deltaUnit;deltaUnit.correspondingDeltaUnit=deltaUnit;definedUnits.push(regularUnit,deltaUnit);}
-const baseUnit=Unit.byName[params.baseUnitName];definedUnits.forEach(u=>u.baseUnit=baseUnit);};Unit.nameSuffixForImprovementDirection=function(improvementDirection){switch(improvementDirection){case ImprovementDirection.DONT_CARE:return'';case ImprovementDirection.BIGGER_IS_BETTER:return'_biggerIsBetter';case ImprovementDirection.SMALLER_IS_BETTER:return'_smallerIsBetter';default:throw new Error('Unknown improvement direction: '+improvementDirection);}};Unit.defineUnitVariant_=function(params,isDelta,improvementDirection){let nameSuffix=isDelta?'Delta':'';nameSuffix+=Unit.nameSuffixForImprovementDirection(improvementDirection);const unitName=params.baseUnitName+nameSuffix;const jsonName=params.baseJsonName+nameSuffix;if(Unit.byName[unitName]!==undefined){throw new Error('Unit \''+unitName+'\' already exists');}
-if(Unit.byJSONName[jsonName]!==undefined){throw new Error('JSON unit \''+jsonName+'\' alread exists');}
-let scaleBaseUnit=params.scaleBaseUnit;if(!scaleBaseUnit){let formatSpec=params.formatSpec;if(typeof formatSpec==='function')formatSpec=formatSpec();const baseSymbol=formatSpec.unitScale?formatSpec.unitScale[0].baseSymbol:(formatSpec.baseSymbol||'');scaleBaseUnit={value:1,symbol:baseSymbol,baseSymbol};}
-const unit=new Unit(unitName,jsonName,scaleBaseUnit,isDelta,improvementDirection,params.formatSpec);Unit.byName[unitName]=unit;Unit.byJSONName[jsonName]=unit;return unit;};tr.b.EventTarget.decorate(Unit);Unit.reset();Unit.define({baseUnitName:'timeInMsAutoFormat',baseJsonName:'msBestFitFormat',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec:{unitScale:tr.b.UnitScale.TIME.AUTO,minimumFractionDigits:0,maximumFractionDigits:3}});Unit.define({baseUnitName:'timeDurationInMs',baseJsonName:'ms',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec(){return Unit.currentTimeDisplayMode_.formatSpec;}});Unit.define({baseUnitName:'timeStampInMs',baseJsonName:'tsMs',scaleBaseUnit:tr.b.UnitScale.TIME.MILLI_SEC,formatSpec(){return Unit.currentTimeDisplayMode_.formatSpec;}});Unit.define({baseUnitName:'normalizedPercentage',baseJsonName:'n%',formatSpec:{unitScale:[{value:0.01,symbol:'%'}],avoidSpacePrecedingUnit:true,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'sizeInBytes',baseJsonName:'sizeInBytes',formatSpec:{unitScale:tr.b.UnitScale.MEMORY.AUTO,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'bandwidthInBytesPerSecond',baseJsonName:'bytesPerSecond',formatSpec:{unitScale:tr.b.UnitScale.BANDWIDTH_BYTES.AUTO,minimumFractionDigits:1,maximumFractionDigits:1}});Unit.define({baseUnitName:'energyInJoules',baseJsonName:'J',formatSpec:{unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('J','JOULE',tr.b.UnitPrefixScale.METRIC,'JOULE').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'powerInWatts',baseJsonName:'W',formatSpec:{unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('W','WATT',tr.b.UnitPrefixScale.METRIC,'WATT').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'electricCurrentInAmperes',baseJsonName:'A',formatSpec:{baseSymbol:'A',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('A','AMPERE',tr.b.UnitPrefixScale.METRIC,'AMPERE').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'electricPotentialInVolts',baseJsonName:'V',formatSpec:{baseSymbol:'V',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('V','VOLT',tr.b.UnitPrefixScale.METRIC,'VOLT').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'frequencyInHertz',baseJsonName:'Hz',formatSpec:{baseSymbol:'Hz',unitScale:tr.b.UnitScale.defineUnitScaleFromPrefixScale('Hz','HERTZ',tr.b.UnitPrefixScale.METRIC,'HERTZ').AUTO,minimumFractionDigits:3}});Unit.define({baseUnitName:'unitlessNumber',baseJsonName:'unitless',formatSpec:{minimumFractionDigits:3,maximumFractionDigits:3}});Unit.define({baseUnitName:'count',baseJsonName:'count',formatSpec:{minimumFractionDigits:0,maximumFractionDigits:0}});Unit.define({baseUnitName:'sigma',baseJsonName:'sigma',formatSpec:{baseSymbol:String.fromCharCode(963),minimumFractionDigits:1,maximumFractionDigits:1}});return{ImprovementDirection,Unit,};});!function(t,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define(n);else{var r=n();for(var a in r)("object"==typeof exports?exports:t)[a]=r[a]}}(this,function(){return function(t){function n(a){if(r[a])return r[a].exports;var e=r[a]={exports:{},id:a,loaded:!1};return t[a].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}var r={};return n.m=t,n.c=r,n.p="",n(0)}([function(t,n,r){n.glMatrix=r(1),n.mat2=r(2),n.mat2d=r(3),n.mat3=r(4),n.mat4=r(5),n.quat=r(6),n.vec2=r(9),n.vec3=r(7),n.vec4=r(8)},function(t,n,r){var a={};a.EPSILON=1e-6,a.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,a.RANDOM=Math.random,a.setMatrixArrayType=function(t){GLMAT_ARRAY_TYPE=t};var e=Math.PI/180;a.toRadian=function(t){return t*e},t.exports=a},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},e.clone=function(t){var n=new a.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1];t[1]=n[2],t[2]=r}else t[0]=n[0],t[1]=n[2],t[2]=n[1],t[3]=n[3];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*u-e*a;return o?(o=1/o,t[0]=u*o,t[1]=-a*o,t[2]=-e*o,t[3]=r*o,t):null},e.adjoint=function(t,n){var r=n[0];return t[0]=n[3],t[1]=-n[1],t[2]=-n[2],t[3]=r,t},e.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1],f=r[2],s=r[3];return t[0]=a*i+u*c,t[1]=e*i+o*c,t[2]=a*f+u*s,t[3]=e*f+o*s,t},e.mul=e.multiply,e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+u*i,t[1]=e*c+o*i,t[2]=a*-i+u*c,t[3]=e*-i+o*c,t},e.scale=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1];return t[0]=a*i,t[1]=e*i,t[2]=u*c,t[3]=o*c,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t},e.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},e.LDU=function(t,n,r,a){return t[2]=a[2]/a[0],r[0]=a[0],r[1]=a[1],r[3]=a[3]-t[2]*r[1],[t,n,r]},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(6);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=r*u-a*e;return c?(c=1/c,t[0]=u*c,t[1]=-a*c,t[2]=-e*c,t[3]=r*c,t[4]=(e*i-u*o)*c,t[5]=(a*o-r*i)*c,t):null},e.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1],h=r[2],M=r[3],l=r[4],v=r[5];return t[0]=a*f+u*s,t[1]=e*f+o*s,t[2]=a*h+u*M,t[3]=e*h+o*M,t[4]=a*l+u*v+i,t[5]=e*l+o*v+c,t},e.mul=e.multiply,e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=Math.sin(r),s=Math.cos(r);return t[0]=a*s+u*f,t[1]=e*s+o*f,t[2]=a*-f+u*s,t[3]=e*-f+o*s,t[4]=i,t[5]=c,t},e.scale=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1];return t[0]=a*f,t[1]=e*f,t[2]=u*s,t[3]=o*s,t[4]=i,t[5]=c,t},e.translate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=r[0],s=r[1];return t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=a*f+u*s+i,t[5]=e*f+o*s+c,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=-r,t[3]=a,t[4]=0,t[5]=0,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=n[1],t[4]=0,t[5]=0,t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=n[0],t[5]=n[1],t},e.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat4=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[4],t[4]=n[5],t[5]=n[6],t[6]=n[8],t[7]=n[9],t[8]=n[10],t},e.clone=function(t){var n=new a.ARRAY_TYPE(9);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1],a=n[2],e=n[5];t[1]=n[3],t[2]=n[6],t[3]=r,t[5]=n[7],t[6]=a,t[7]=e}else t[0]=n[0],t[1]=n[3],t[2]=n[6],t[3]=n[1],t[4]=n[4],t[5]=n[7],t[6]=n[2],t[7]=n[5],t[8]=n[8];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=s*o-i*f,M=-s*u+i*c,l=f*u-o*c,v=r*h+a*M+e*l;return v?(v=1/v,t[0]=h*v,t[1]=(-s*a+e*f)*v,t[2]=(i*a-e*o)*v,t[3]=M*v,t[4]=(s*r-e*c)*v,t[5]=(-i*r+e*u)*v,t[6]=l*v,t[7]=(-f*r+a*c)*v,t[8]=(o*r-a*u)*v,t):null},e.adjoint=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8];return t[0]=o*s-i*f,t[1]=e*f-a*s,t[2]=a*i-e*o,t[3]=i*c-u*s,t[4]=r*s-e*c,t[5]=e*u-r*i,t[6]=u*f-o*c,t[7]=a*c-r*f,t[8]=r*o-a*u,t},e.determinant=function(t){var n=t[0],r=t[1],a=t[2],e=t[3],u=t[4],o=t[5],i=t[6],c=t[7],f=t[8];return n*(f*u-o*c)+r*(-f*e+o*i)+a*(c*e-u*i)},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=r[0],l=r[1],v=r[2],m=r[3],p=r[4],d=r[5],A=r[6],R=r[7],w=r[8];return t[0]=M*a+l*o+v*f,t[1]=M*e+l*i+v*s,t[2]=M*u+l*c+v*h,t[3]=m*a+p*o+d*f,t[4]=m*e+p*i+d*s,t[5]=m*u+p*c+d*h,t[6]=A*a+R*o+w*f,t[7]=A*e+R*i+w*s,t[8]=A*u+R*c+w*h,t},e.mul=e.multiply,e.translate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=r[0],l=r[1];return t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=i,t[5]=c,t[6]=M*a+l*o+f,t[7]=M*e+l*i+s,t[8]=M*u+l*c+h,t},e.rotate=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=Math.sin(r),l=Math.cos(r);return t[0]=l*a+M*o,t[1]=l*e+M*i,t[2]=l*u+M*c,t[3]=l*o-M*a,t[4]=l*i-M*e,t[5]=l*c-M*u,t[6]=f,t[7]=s,t[8]=h,t},e.scale=function(t,n,r){var a=r[0],e=r[1];return t[0]=a*n[0],t[1]=a*n[1],t[2]=a*n[2],t[3]=e*n[3],t[4]=e*n[4],t[5]=e*n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t},e.fromTranslation=function(t,n){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=n[0],t[7]=n[1],t[8]=1,t},e.fromRotation=function(t,n){var r=Math.sin(n),a=Math.cos(n);return t[0]=a,t[1]=r,t[2]=0,t[3]=-r,t[4]=a,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromScaling=function(t,n){return t[0]=n[0],t[1]=0,t[2]=0,t[3]=0,t[4]=n[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},e.fromMat2d=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=0,t[3]=n[2],t[4]=n[3],t[5]=0,t[6]=n[4],t[7]=n[5],t[8]=1,t},e.fromQuat=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r+r,i=a+a,c=e+e,f=r*o,s=a*o,h=a*i,M=e*o,l=e*i,v=e*c,m=u*o,p=u*i,d=u*c;return t[0]=1-h-v,t[3]=s-d,t[6]=M+p,t[1]=s+d,t[4]=1-f-v,t[7]=l-m,t[2]=M-p,t[5]=l+m,t[8]=1-f-h,t},e.normalFromMat4=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15],A=r*i-a*o,R=r*c-e*o,w=r*f-u*o,q=a*c-e*i,Y=a*f-u*i,g=e*f-u*c,y=s*m-h*v,x=s*p-M*v,P=s*d-l*v,E=h*p-M*m,T=h*d-l*m,b=M*d-l*p,D=A*b-R*T+w*E+q*P-Y*x+g*y;return D?(D=1/D,t[0]=(i*b-c*T+f*E)*D,t[1]=(c*P-o*b-f*x)*D,t[2]=(o*T-i*P+f*y)*D,t[3]=(e*T-a*b-u*E)*D,t[4]=(r*b-e*P+u*x)*D,t[5]=(a*P-r*T-u*y)*D,t[6]=(m*g-p*Y+d*q)*D,t[7]=(p*w-v*g-d*R)*D,t[8]=(v*Y-m*w+d*A)*D,t):null},e.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},e.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.clone=function(t){var n=new a.ARRAY_TYPE(16);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t},e.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},e.transpose=function(t,n){if(t===n){var r=n[1],a=n[2],e=n[3],u=n[6],o=n[7],i=n[11];t[1]=n[4],t[2]=n[8],t[3]=n[12],t[4]=r,t[6]=n[9],t[7]=n[13],t[8]=a,t[9]=u,t[11]=n[14],t[12]=e,t[13]=o,t[14]=i}else t[0]=n[0],t[1]=n[4],t[2]=n[8],t[3]=n[12],t[4]=n[1],t[5]=n[5],t[6]=n[9],t[7]=n[13],t[8]=n[2],t[9]=n[6],t[10]=n[10],t[11]=n[14],t[12]=n[3],t[13]=n[7],t[14]=n[11],t[15]=n[15];return t},e.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15],A=r*i-a*o,R=r*c-e*o,w=r*f-u*o,q=a*c-e*i,Y=a*f-u*i,g=e*f-u*c,y=s*m-h*v,x=s*p-M*v,P=s*d-l*v,E=h*p-M*m,T=h*d-l*m,b=M*d-l*p,D=A*b-R*T+w*E+q*P-Y*x+g*y;return D?(D=1/D,t[0]=(i*b-c*T+f*E)*D,t[1]=(e*T-a*b-u*E)*D,t[2]=(m*g-p*Y+d*q)*D,t[3]=(M*Y-h*g-l*q)*D,t[4]=(c*P-o*b-f*x)*D,t[5]=(r*b-e*P+u*x)*D,t[6]=(p*w-v*g-d*R)*D,t[7]=(s*g-M*w+l*R)*D,t[8]=(o*T-i*P+f*y)*D,t[9]=(a*P-r*T-u*y)*D,t[10]=(v*Y-m*w+d*A)*D,t[11]=(h*w-s*Y-l*A)*D,t[12]=(i*x-o*E-c*y)*D,t[13]=(r*E-a*x+e*y)*D,t[14]=(m*R-v*q-p*A)*D,t[15]=(s*q-h*R+M*A)*D,t):null},e.adjoint=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=n[4],i=n[5],c=n[6],f=n[7],s=n[8],h=n[9],M=n[10],l=n[11],v=n[12],m=n[13],p=n[14],d=n[15];return t[0]=i*(M*d-l*p)-h*(c*d-f*p)+m*(c*l-f*M),t[1]=-(a*(M*d-l*p)-h*(e*d-u*p)+m*(e*l-u*M)),t[2]=a*(c*d-f*p)-i*(e*d-u*p)+m*(e*f-u*c),t[3]=-(a*(c*l-f*M)-i*(e*l-u*M)+h*(e*f-u*c)),t[4]=-(o*(M*d-l*p)-s*(c*d-f*p)+v*(c*l-f*M)),t[5]=r*(M*d-l*p)-s*(e*d-u*p)+v*(e*l-u*M),t[6]=-(r*(c*d-f*p)-o*(e*d-u*p)+v*(e*f-u*c)),t[7]=r*(c*l-f*M)-o*(e*l-u*M)+s*(e*f-u*c),t[8]=o*(h*d-l*m)-s*(i*d-f*m)+v*(i*l-f*h),t[9]=-(r*(h*d-l*m)-s*(a*d-u*m)+v*(a*l-u*h)),t[10]=r*(i*d-f*m)-o*(a*d-u*m)+v*(a*f-u*i),t[11]=-(r*(i*l-f*h)-o*(a*l-u*h)+s*(a*f-u*i)),t[12]=-(o*(h*p-M*m)-s*(i*p-c*m)+v*(i*M-c*h)),t[13]=r*(h*p-M*m)-s*(a*p-e*m)+v*(a*M-e*h),t[14]=-(r*(i*p-c*m)-o*(a*p-e*m)+v*(a*c-e*i)),t[15]=r*(i*M-c*h)-o*(a*M-e*h)+s*(a*c-e*i),t},e.determinant=function(t){var n=t[0],r=t[1],a=t[2],e=t[3],u=t[4],o=t[5],i=t[6],c=t[7],f=t[8],s=t[9],h=t[10],M=t[11],l=t[12],v=t[13],m=t[14],p=t[15],d=n*o-r*u,A=n*i-a*u,R=n*c-e*u,w=r*i-a*o,q=r*c-e*o,Y=a*c-e*i,g=f*v-s*l,y=f*m-h*l,x=f*p-M*l,P=s*m-h*v,E=s*p-M*v,T=h*p-M*m;return d*T-A*E+R*P+w*x-q*y+Y*g},e.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=n[9],l=n[10],v=n[11],m=n[12],p=n[13],d=n[14],A=n[15],R=r[0],w=r[1],q=r[2],Y=r[3];return t[0]=R*a+w*i+q*h+Y*m,t[1]=R*e+w*c+q*M+Y*p,t[2]=R*u+w*f+q*l+Y*d,t[3]=R*o+w*s+q*v+Y*A,R=r[4],w=r[5],q=r[6],Y=r[7],t[4]=R*a+w*i+q*h+Y*m,t[5]=R*e+w*c+q*M+Y*p,t[6]=R*u+w*f+q*l+Y*d,t[7]=R*o+w*s+q*v+Y*A,R=r[8],w=r[9],q=r[10],Y=r[11],t[8]=R*a+w*i+q*h+Y*m,t[9]=R*e+w*c+q*M+Y*p,t[10]=R*u+w*f+q*l+Y*d,t[11]=R*o+w*s+q*v+Y*A,R=r[12],w=r[13],q=r[14],Y=r[15],t[12]=R*a+w*i+q*h+Y*m,t[13]=R*e+w*c+q*M+Y*p,t[14]=R*u+w*f+q*l+Y*d,t[15]=R*o+w*s+q*v+Y*A,t},e.mul=e.multiply,e.translate=function(t,n,r){var a,e,u,o,i,c,f,s,h,M,l,v,m=r[0],p=r[1],d=r[2];return n===t?(t[12]=n[0]*m+n[4]*p+n[8]*d+n[12],t[13]=n[1]*m+n[5]*p+n[9]*d+n[13],t[14]=n[2]*m+n[6]*p+n[10]*d+n[14],t[15]=n[3]*m+n[7]*p+n[11]*d+n[15]):(a=n[0],e=n[1],u=n[2],o=n[3],i=n[4],c=n[5],f=n[6],s=n[7],h=n[8],M=n[9],l=n[10],v=n[11],t[0]=a,t[1]=e,t[2]=u,t[3]=o,t[4]=i,t[5]=c,t[6]=f,t[7]=s,t[8]=h,t[9]=M,t[10]=l,t[11]=v,t[12]=a*m+i*p+h*d+n[12],t[13]=e*m+c*p+M*d+n[13],t[14]=u*m+f*p+l*d+n[14],t[15]=o*m+s*p+v*d+n[15]),t},e.scale=function(t,n,r){var a=r[0],e=r[1],u=r[2];return t[0]=n[0]*a,t[1]=n[1]*a,t[2]=n[2]*a,t[3]=n[3]*a,t[4]=n[4]*e,t[5]=n[5]*e,t[6]=n[6]*e,t[7]=n[7]*e,t[8]=n[8]*u,t[9]=n[9]*u,t[10]=n[10]*u,t[11]=n[11]*u,t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t},e.rotate=function(t,n,r,e){var u,o,i,c,f,s,h,M,l,v,m,p,d,A,R,w,q,Y,g,y,x,P,E,T,b=e[0],D=e[1],L=e[2],_=Math.sqrt(b*b+D*D+L*L);return Math.abs(_)c?(u.cross(t,n,e),u.length(t)<1e-6&&u.cross(t,r,e),u.normalize(t,t),i.setAxisAngle(a,t,Math.PI),a):c>.999999?(a[0]=0,a[1]=0,a[2]=0,a[3]=1,a):(u.cross(t,e,o),a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=1+c,i.normalize(a,a))}}(),i.setAxes=function(){var t=e.create();return function(n,r,a,e){return t[0]=a[0],t[3]=a[1],t[6]=a[2],t[1]=e[0],t[4]=e[1],t[7]=e[2],t[2]=-r[0],t[5]=-r[1],t[8]=-r[2],i.normalize(n,i.fromMat3(n,t))}}(),i.clone=o.clone,i.fromValues=o.fromValues,i.copy=o.copy,i.set=o.set,i.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},i.setAxisAngle=function(t,n,r){r=.5*r;var a=Math.sin(r);return t[0]=a*n[0],t[1]=a*n[1],t[2]=a*n[2],t[3]=Math.cos(r),t},i.add=o.add,i.multiply=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3],i=r[0],c=r[1],f=r[2],s=r[3];return t[0]=a*s+o*i+e*f-u*c,t[1]=e*s+o*c+u*i-a*f,t[2]=u*s+o*f+a*c-e*i,t[3]=o*s-a*i-e*c-u*f,t},i.mul=i.multiply,i.scale=o.scale,i.rotateX=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+o*i,t[1]=e*c+u*i,t[2]=u*c-e*i,t[3]=o*c-a*i,t},i.rotateY=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c-u*i,t[1]=e*c+o*i,t[2]=u*c+a*i,t[3]=o*c-e*i,t},i.rotateZ=function(t,n,r){r*=.5;var a=n[0],e=n[1],u=n[2],o=n[3],i=Math.sin(r),c=Math.cos(r);return t[0]=a*c+e*i,t[1]=e*c-a*i,t[2]=u*c+o*i,t[3]=o*c-u*i,t},i.calculateW=function(t,n){var r=n[0],a=n[1],e=n[2];return t[0]=r,t[1]=a,t[2]=e,t[3]=Math.sqrt(Math.abs(1-r*r-a*a-e*e)),t},i.dot=o.dot,i.lerp=o.lerp,i.slerp=function(t,n,r,a){var e,u,o,i,c,f=n[0],s=n[1],h=n[2],M=n[3],l=r[0],v=r[1],m=r[2],p=r[3];return u=f*l+s*v+h*m+M*p,0>u&&(u=-u,l=-l,v=-v,m=-m,p=-p),1-u>1e-6?(e=Math.acos(u),o=Math.sin(e),i=Math.sin((1-a)*e)/o,c=Math.sin(a*e)/o):(i=1-a,c=a),t[0]=i*f+c*l,t[1]=i*s+c*v,t[2]=i*h+c*m,t[3]=i*M+c*p,t},i.sqlerp=function(){var t=i.create(),n=i.create();return function(r,a,e,u,o,c){return i.slerp(t,a,o,c),i.slerp(n,e,u,c),i.slerp(r,t,n,2*c*(1-c)),r}}(),i.invert=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*r+a*a+e*e+u*u,i=o?1/o:0;return t[0]=-r*i,t[1]=-a*i,t[2]=-e*i,t[3]=u*i,t},i.conjugate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=n[3],t},i.length=o.length,i.len=i.length,i.squaredLength=o.squaredLength,i.sqrLen=i.squaredLength,i.normalize=o.normalize,i.fromMat3=function(t,n){var r,a=n[0]+n[4]+n[8];if(a>0)r=Math.sqrt(a+1),t[3]=.5*r,r=.5/r,t[0]=(n[5]-n[7])*r,t[1]=(n[6]-n[2])*r,t[2]=(n[1]-n[3])*r;else{var e=0;n[4]>n[0]&&(e=1),n[8]>n[3*e+e]&&(e=2);var u=(e+1)%3,o=(e+2)%3;r=Math.sqrt(n[3*e+e]-n[3*u+u]-n[3*o+o]+1),t[e]=.5*r,r=.5/r,t[3]=(n[3*u+o]-n[3*o+u])*r,t[u]=(n[3*u+e]+n[3*e+u])*r,t[o]=(n[3*o+e]+n[3*e+o])*r}return t},i.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=i},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(3);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n},e.fromValues=function(t,n,r){var e=new a.ARRAY_TYPE(3);return e[0]=t,e[1]=n,e[2]=r,e},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t},e.set=function(t,n,r,a){return t[0]=n,t[1]=r,t[2]=a,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2];return Math.sqrt(r*r+a*a+e*e)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2];return r*r+a*a+e*e},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1],a=t[2];return Math.sqrt(n*n+r*r+a*a)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1],a=t[2];return n*n+r*r+a*a},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=n[2],u=r*r+a*a+e*e;return u>0&&(u=1/Math.sqrt(u),t[0]=n[0]*u,t[1]=n[1]*u,t[2]=n[2]*u),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]},e.cross=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2];return t[0]=e*c-u*i,t[1]=u*o-a*c,t[2]=a*i-e*o,t},e.lerp=function(t,n,r,a){var e=n[0],u=n[1],o=n[2];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t[2]=o+a*(r[2]-o),t},e.hermite=function(t,n,r,a,e,u){var o=u*u,i=o*(2*u-3)+1,c=o*(u-2)+u,f=o*(u-1),s=o*(3-2*u);return t[0]=n[0]*i+r[0]*c+a[0]*f+e[0]*s,t[1]=n[1]*i+r[1]*c+a[1]*f+e[1]*s,t[2]=n[2]*i+r[2]*c+a[2]*f+e[2]*s,t},e.bezier=function(t,n,r,a,e,u){var o=1-u,i=o*o,c=u*u,f=i*o,s=3*u*i,h=3*c*o,M=c*u;return t[0]=n[0]*f+r[0]*s+a[0]*h+e[0]*M,t[1]=n[1]*f+r[1]*s+a[1]*h+e[1]*M,t[2]=n[2]*f+r[2]*s+a[2]*h+e[2]*M,t},e.random=function(t,n){n=n||1;var r=2*a.RANDOM()*Math.PI,e=2*a.RANDOM()-1,u=Math.sqrt(1-e*e)*n;return t[0]=Math.cos(r)*u,t[1]=Math.sin(r)*u,t[2]=e*n,t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[3]*a+r[7]*e+r[11]*u+r[15];return o=o||1,t[0]=(r[0]*a+r[4]*e+r[8]*u+r[12])/o,t[1]=(r[1]*a+r[5]*e+r[9]*u+r[13])/o,t[2]=(r[2]*a+r[6]*e+r[10]*u+r[14])/o,t},e.transformMat3=function(t,n,r){var a=n[0],e=n[1],u=n[2];return t[0]=a*r[0]+e*r[3]+u*r[6],t[1]=a*r[1]+e*r[4]+u*r[7],t[2]=a*r[2]+e*r[5]+u*r[8],t},e.transformQuat=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2],f=r[3],s=f*a+i*u-c*e,h=f*e+c*a-o*u,M=f*u+o*e-i*a,l=-o*a-i*e-c*u;return t[0]=s*f+l*-o+h*-c-M*-i,t[1]=h*f+l*-i+M*-o-s*-c,t[2]=M*f+l*-c+s*-i-h*-o,t},e.rotateX=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[0],u[1]=e[1]*Math.cos(a)-e[2]*Math.sin(a),u[2]=e[1]*Math.sin(a)+e[2]*Math.cos(a),t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.rotateY=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[2]*Math.sin(a)+e[0]*Math.cos(a),u[1]=e[1],u[2]=e[2]*Math.cos(a)-e[0]*Math.sin(a),t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.rotateZ=function(t,n,r,a){var e=[],u=[];return e[0]=n[0]-r[0],e[1]=n[1]-r[1],e[2]=n[2]-r[2],u[0]=e[0]*Math.cos(a)-e[1]*Math.sin(a),u[1]=e[0]*Math.sin(a)+e[1]*Math.cos(a),u[2]=e[2],t[0]=u[0]+r[0],t[1]=u[1]+r[1],t[2]=u[2]+r[2],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=3),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],t[2]=n[i+2],u(t,t,o),n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2];return n}}(),e.angle=function(t,n){var r=e.fromValues(t[0],t[1],t[2]),a=e.fromValues(n[0],n[1],n[2]);e.normalize(r,r),e.normalize(a,a);var u=e.dot(r,a);return u>1?0:Math.acos(u)},e.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},e.fromValues=function(t,n,r,e){var u=new a.ARRAY_TYPE(4);return u[0]=t,u[1]=n,u[2]=r,u[3]=e,u},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},e.set=function(t,n,r,a,e){return t[0]=n,t[1]=r,t[2]=a,t[3]=e,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t[3]=n[3]+r[3],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t[2]=n[2]-r[2],t[3]=n[3]-r[3],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t[2]=n[2]*r[2],t[3]=n[3]*r[3],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t[2]=n[2]/r[2],t[3]=n[3]/r[3],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t[2]=Math.min(n[2],r[2]),t[3]=Math.min(n[3],r[3]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t[2]=Math.max(n[2],r[2]),t[3]=Math.max(n[3],r[3]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=n[3]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t[2]=n[2]+r[2]*a,t[3]=n[3]+r[3]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2],u=n[3]-t[3];return Math.sqrt(r*r+a*a+e*e+u*u)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1],e=n[2]-t[2],u=n[3]-t[3];return r*r+a*a+e*e+u*u},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1],a=t[2],e=t[3];return Math.sqrt(n*n+r*r+a*a+e*e)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1],a=t[2],e=t[3];return n*n+r*r+a*a+e*e},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=-n[3],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t[3]=1/n[3],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=n[2],u=n[3],o=r*r+a*a+e*e+u*u;return o>0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=a*o,t[2]=e*o,t[3]=u*o),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3]},e.lerp=function(t,n,r,a){var e=n[0],u=n[1],o=n[2],i=n[3];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t[2]=o+a*(r[2]-o),t[3]=i+a*(r[3]-i),t},e.random=function(t,n){return n=n||1,t[0]=a.RANDOM(),t[1]=a.RANDOM(),t[2]=a.RANDOM(),t[3]=a.RANDOM(),e.normalize(t,t),e.scale(t,t,n),t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=n[3];return t[0]=r[0]*a+r[4]*e+r[8]*u+r[12]*o,t[1]=r[1]*a+r[5]*e+r[9]*u+r[13]*o,t[2]=r[2]*a+r[6]*e+r[10]*u+r[14]*o,t[3]=r[3]*a+r[7]*e+r[11]*u+r[15]*o,t},e.transformQuat=function(t,n,r){var a=n[0],e=n[1],u=n[2],o=r[0],i=r[1],c=r[2],f=r[3],s=f*a+i*u-c*e,h=f*e+c*a-o*u,M=f*u+o*e-i*a,l=-o*a-i*e-c*u;return t[0]=s*f+l*-o+h*-c-M*-i,t[1]=h*f+l*-i+M*-o-s*-c,t[2]=M*f+l*-c+s*-i-h*-o,t[3]=n[3],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=4),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],t[2]=n[i+2],t[3]=n[i+3],u(t,t,o),n[i]=t[0],n[i+1]=t[1],n[i+2]=t[2],n[i+3]=t[3];return n}}(),e.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=e},function(t,n,r){var a=r(1),e={};e.create=function(){var t=new a.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},e.clone=function(t){var n=new a.ARRAY_TYPE(2);return n[0]=t[0],n[1]=t[1],n},e.fromValues=function(t,n){var r=new a.ARRAY_TYPE(2);return r[0]=t,r[1]=n,r},e.copy=function(t,n){return t[0]=n[0],t[1]=n[1],t},e.set=function(t,n,r){return t[0]=n,t[1]=r,t},e.add=function(t,n,r){return t[0]=n[0]+r[0],t[1]=n[1]+r[1],t},e.subtract=function(t,n,r){return t[0]=n[0]-r[0],t[1]=n[1]-r[1],t},e.sub=e.subtract,e.multiply=function(t,n,r){return t[0]=n[0]*r[0],t[1]=n[1]*r[1],t},e.mul=e.multiply,e.divide=function(t,n,r){return t[0]=n[0]/r[0],t[1]=n[1]/r[1],t},e.div=e.divide,e.min=function(t,n,r){return t[0]=Math.min(n[0],r[0]),t[1]=Math.min(n[1],r[1]),t},e.max=function(t,n,r){return t[0]=Math.max(n[0],r[0]),t[1]=Math.max(n[1],r[1]),t},e.scale=function(t,n,r){return t[0]=n[0]*r,t[1]=n[1]*r,t},e.scaleAndAdd=function(t,n,r,a){return t[0]=n[0]+r[0]*a,t[1]=n[1]+r[1]*a,t},e.distance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1];return Math.sqrt(r*r+a*a)},e.dist=e.distance,e.squaredDistance=function(t,n){var r=n[0]-t[0],a=n[1]-t[1];return r*r+a*a},e.sqrDist=e.squaredDistance,e.length=function(t){var n=t[0],r=t[1];return Math.sqrt(n*n+r*r)},e.len=e.length,e.squaredLength=function(t){var n=t[0],r=t[1];return n*n+r*r},e.sqrLen=e.squaredLength,e.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t},e.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t},e.normalize=function(t,n){var r=n[0],a=n[1],e=r*r+a*a;return e>0&&(e=1/Math.sqrt(e),t[0]=n[0]*e,t[1]=n[1]*e),t},e.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]},e.cross=function(t,n,r){var a=n[0]*r[1]-n[1]*r[0];return t[0]=t[1]=0,t[2]=a,t},e.lerp=function(t,n,r,a){var e=n[0],u=n[1];return t[0]=e+a*(r[0]-e),t[1]=u+a*(r[1]-u),t},e.random=function(t,n){n=n||1;var r=2*a.RANDOM()*Math.PI;return t[0]=Math.cos(r)*n,t[1]=Math.sin(r)*n,t},e.transformMat2=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[2]*e,t[1]=r[1]*a+r[3]*e,t},e.transformMat2d=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[2]*e+r[4],t[1]=r[1]*a+r[3]*e+r[5],t},e.transformMat3=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[3]*e+r[6],t[1]=r[1]*a+r[4]*e+r[7],t},e.transformMat4=function(t,n,r){var a=n[0],e=n[1];return t[0]=r[0]*a+r[4]*e+r[12],t[1]=r[1]*a+r[5]*e+r[13],t},e.forEach=function(){var t=e.create();return function(n,r,a,e,u,o){var i,c;for(r||(r=2),a||(a=0),c=e?Math.min(e*r+a,n.length):n.length,i=a;c>i;i+=r)t[0]=n[i],t[1]=n[i+1],u(t,t,o),n[i]=t[0],n[i+1]=t[1];return n}}(),e.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t.exports=e}])});'use strict';(function(global){if(tr.isNode){const glMatrixAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/gl-matrix-min.js');const glMatrixModule=require(glMatrixAbsPath);for(const exportName in glMatrixModule){global[exportName]=glMatrixModule[exportName];}}})(this);'use strict';tr.exportTo('tr.b.math',function(){const PREFERRED_NUMBER_SERIES_MULTIPLIERS=[1,2,5,10];function approximately(x,y,delta){if(delta===undefined)delta=1e-9;return Math.abs(x-y)=0)?1:-1;x=Math.abs(x);const a1=0.254829592;const a2=-0.284496736;const a3=1.421413741;const a4=-1.453152027;const a5=1.061405429;const p=0.3275911;const t=1.0/(1.0+p*x);const y=1.0-(((((a5*t+a4)*t)+a3)*t+a2)*t+a1)*t*Math.exp(-x*x);return sign*y;}
-const tmpVec2=vec2.create();const tmpVec2b=vec2.create();const tmpVec4=vec4.create();const tmpMat2d=mat2d.create();vec2.createFromArray=function(arr){if(arr.length!==2)throw new Error('Should be length 2');const v=vec2.create();vec2.set(v,arr[0],arr[1]);return v;};vec2.createXY=function(x,y){const v=vec2.create();vec2.set(v,x,y);return v;};vec2.toString=function(a){return'['+a[0]+', '+a[1]+']';};vec2.addTwoScaledUnitVectors=function(out,u1,scale1,u2,scale2){vec2.scale(tmpVec2,u1,scale1);vec2.scale(tmpVec2b,u2,scale2);vec2.add(out,tmpVec2,tmpVec2b);};vec2.interpolatePiecewiseFunction=function(points,x){if(x=absMin){minPreferedNumber=tightenedGuess;break;}}
-if(minPreferedNumber===undefined){throw new Error('Could not compute preferred number for '+min);}
-if(min<0)minPreferedNumber*=-1;return minPreferedNumber;}
-return{approximately,clamp,lerp,normalize,deg2rad,erf,lesserPower,greaterPower,lesserWholeNumber,greaterWholeNumber,preferredNumberLargerThanMin,truncate,};});'use strict';tr.exportTo('tr.b.math',function(){function Range(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;}
-Range.prototype={__proto__:Object.prototype,clone(){if(this.isEmpty)return new Range();return Range.fromExplicitRange(this.min_,this.max_);},reset(){this.isEmpty_=true;this.min_=undefined;this.max_=undefined;},get isEmpty(){return this.isEmpty_;},addRange(range){if(range.isEmpty)return;this.addValue(range.min);this.addValue(range.max);},addValue(value){if(this.isEmpty_){this.max_=value;this.min_=value;this.isEmpty_=false;return;}
-this.max_=Math.max(this.max_,value);this.min_=Math.min(this.min_,value);},set min(min){this.isEmpty_=false;this.min_=min;},get min(){if(this.isEmpty_)return undefined;return this.min_;},get max(){if(this.isEmpty_)return undefined;return this.max_;},set max(max){this.isEmpty_=false;this.max_=max;},get range(){if(this.isEmpty_)return undefined;return this.max_-this.min_;},get center(){return(this.min_+this.max_)*0.5;},get duration(){if(this.isEmpty_)return 0;return this.max_-this.min_;},enclosingPowers(opt_base){if(this.isEmpty)return new Range();return Range.fromExplicitRange(tr.b.math.lesserPower(this.min_,opt_base),tr.b.math.greaterPower(this.max_,opt_base));},normalize(x){return tr.b.math.normalize(x,this.min,this.max);},lerp(x){return tr.b.math.lerp(x,this.min,this.max);},clamp(x){return tr.b.math.clamp(x,this.min,this.max);},equals(that){if(this.isEmpty&&that.isEmpty)return true;if(this.isEmpty!==that.isEmpty)return false;return(tr.b.math.approximately(this.min,that.min)&&tr.b.math.approximately(this.max,that.max));},containsExplicitRangeInclusive(min,max){if(this.isEmpty)return false;return this.min_<=min&&max<=this.max_;},containsExplicitRangeExclusive(min,max){if(this.isEmpty)return false;return this.min_x);function getValue(obj){return keyFunc.call(opt_this,obj);}
-const first=tr.b.findFirstTrueIndexInSortedArray(sortedArray,obj=>this.min_===undefined||this.min_<=getValue(obj));const last=tr.b.findFirstTrueIndexInSortedArray(sortedArray,obj=>this.max_!==undefined&&this.max_0){resultRanges.push(leftRange);}
-const rightRange=tr.b.math.Range.fromExplicitRange(intersection.max,rangeA.max);if(rightRange.duration>0){resultRanges.push(rightRange);}
-return resultRanges;};Range.PERCENT_RANGE=Range.fromExplicitRange(0,1);Object.freeze(Range.PERCENT_RANGE);return{Range,};});'use strict';tr.exportTo('tr.model',function(){function EventRegistry(){}
-const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(EventRegistry,options);EventRegistry.addEventListener('will-register',function(e){const metadata=e.typeInfo.metadata;if(metadata.name===undefined){throw new Error('Registered events must provide name metadata');}
-if(metadata.pluralName===undefined){throw new Error('Registered events must provide pluralName metadata');}
-if(metadata.subTypes===undefined){metadata.subTypes={};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=e.typeInfo.constructor;options.defaultConstructor=e.typeInfo.constructor;tr.b.decorateExtensionRegistry(metadata.subTypes,options);}else{if(!metadata.subTypes.register){throw new Error('metadata.subTypes must be an extension registry.');}}
-e.typeInfo.constructor.subTypes=metadata.subTypes;});let eventsByTypeName=undefined;EventRegistry.getEventTypeInfoByTypeName=function(typeName){if(eventsByTypeName===undefined){eventsByTypeName={};EventRegistry.getAllRegisteredTypeInfos().forEach(function(typeInfo){eventsByTypeName[typeInfo.metadata.name]=typeInfo;});}
-return eventsByTypeName[typeName];};EventRegistry.addEventListener('registry-changed',function(){eventsByTypeName=undefined;});function convertCamelCaseToTitleCase(name){let result=name.replace(/[A-Z]/g,' $&');result=result.charAt(0).toUpperCase()+result.slice(1);return result;}
-EventRegistry.getUserFriendlySingularName=function(typeName){const typeInfo=EventRegistry.getEventTypeInfoByTypeName(typeName);const str=typeInfo.metadata.name;return convertCamelCaseToTitleCase(str);};EventRegistry.getUserFriendlyPluralName=function(typeName){const typeInfo=EventRegistry.getEventTypeInfoByTypeName(typeName);const str=typeInfo.metadata.pluralName;return convertCamelCaseToTitleCase(str);};return{EventRegistry,};});'use strict';tr.exportTo('tr.model',function(){const EventRegistry=tr.model.EventRegistry;const RequestSelectionChangeEvent=tr.b.Event.bind(undefined,'requestSelectionChange',true,false);function EventSet(opt_events){this.bounds_=new tr.b.math.Range();this.events_=new Set();this.guid_=tr.b.GUID.allocateSimple();if(opt_events){if(opt_events instanceof Array){for(const event of opt_events){this.push(event);}}else if(opt_events instanceof EventSet){this.addEventSet(opt_events);}else{this.push(opt_events);}}}
-EventSet.prototype={__proto__:Object.prototype,get bounds(){return this.bounds_;},get duration(){if(this.bounds_.isEmpty)return 0;return this.bounds_.max-this.bounds_.min;},get length(){return this.events_.size;},get guid(){return this.guid_;},*[Symbol.iterator](){for(const event of this.events_){yield event;}},clear(){this.bounds_=new tr.b.math.Range();this.events_.clear();},push(...events){let numPushed;for(const event of events){if(event.guid===undefined){throw new Error('Event must have a GUID');}
-if(!this.events_.has(event)){this.events_.add(event);if(event.addBoundsToRange){if(this.bounds_!==undefined){event.addBoundsToRange(this.bounds_);}}}
-numPushed++;}
-return numPushed;},contains(event){if(this.events_.has(event))return event;return undefined;},addEventSet(eventSet){for(const event of eventSet){this.push(event);}},intersectionIsEmpty(otherEventSet){return!this.some(event=>otherEventSet.contains(event));},equals(that){if(this.length!==that.length)return false;return this.every(event=>that.contains(event));},sortEvents(compare){const ary=this.toArray();ary.sort(compare);this.clear();for(const event of ary){this.push(event);}},getEventsOrganizedByBaseType(opt_pruneEmpty){const allTypeInfos=EventRegistry.getAllRegisteredTypeInfos();const events=this.getEventsOrganizedByCallback(function(event){let maxEventIndex=-1;let maxEventTypeInfo=undefined;allTypeInfos.forEach(function(eventTypeInfo,eventIndex){if(!(event instanceof eventTypeInfo.constructor))return;if(eventIndex>maxEventIndex){maxEventIndex=eventIndex;maxEventTypeInfo=eventTypeInfo;}});if(maxEventIndex===-1){throw new Error(`Unrecognized event type: ${event.constructor.name}`);}
-return maxEventTypeInfo.metadata.name;});if(!opt_pruneEmpty){allTypeInfos.forEach(function(eventTypeInfo){if(events[eventTypeInfo.metadata.name]===undefined){events[eventTypeInfo.metadata.name]=new EventSet();}});}
-return events;},getEventsOrganizedByTitle(){return this.getEventsOrganizedByCallback(function(event){if(event.title===undefined){throw new Error('An event didn\'t have a title!');}
-return event.title;});},getEventsOrganizedByCallback(cb,opt_this){const groupedEvents=tr.b.groupIntoMap(this,cb,opt_this||this);const groupedEventsDict={};for(const[k,events]of groupedEvents){groupedEventsDict[k]=new EventSet(events);}
-return groupedEventsDict;},enumEventsOfType(type,func){for(const event of this){if(event instanceof type){func(event);}}},get userFriendlyName(){if(this.length===0){throw new Error('Empty event set');}
-const eventsByBaseType=this.getEventsOrganizedByBaseType(true);const eventTypeName=Object.keys(eventsByBaseType)[0];if(this.length===1){const tmp=EventRegistry.getUserFriendlySingularName(eventTypeName);return tr.b.getOnlyElement(this.events_).userFriendlyName;}
-const numEventTypes=Object.keys(eventsByBaseType).length;if(numEventTypes!==1){return this.length+' events of various types';}
-const tmp=EventRegistry.getUserFriendlyPluralName(eventTypeName);return this.length+' '+tmp;},filter(fn,opt_this){const res=new EventSet();for(const event of this){if(fn.call(opt_this,event)){res.push(event);}}
-return res;},toArray(){const ary=[];for(const event of this){ary.push(event);}
-return ary;},forEach(fn,opt_this){for(const event of this){fn.call(opt_this,event);}},map(fn,opt_this){const res=[];for(const event of this){res.push(fn.call(opt_this,event));}
-return res;},every(fn,opt_this){for(const event of this){if(!fn.call(opt_this,event)){return false;}}
-return true;},some(fn,opt_this){for(const event of this){if(fn.call(opt_this,event)){return true;}}
-return false;},asDict(){const stableIds=[];for(const event of this){stableIds.push(event.stableId);}
-return{'events':stableIds};},asSet(){return this.events_;}};EventSet.IMMUTABLE_EMPTY_SET=(function(){const s=new EventSet();s.push=function(){throw new Error('Cannot push to an immutable event set');};s.addEventSet=function(){throw new Error('Cannot add to an immutable event set');};Object.freeze(s);return s;})();return{EventSet,RequestSelectionChangeEvent,};});'use strict';tr.exportTo('tr.b',function(){function clamp01(value){return Math.max(0,Math.min(1,value));}
-function Color(opt_r,opt_g,opt_b,opt_a){this.r=Math.floor(opt_r)||0;this.g=Math.floor(opt_g)||0;this.b=Math.floor(opt_b)||0;this.a=opt_a;}
-Color.fromString=function(str){let tmp;let values;if(str.substr(0,4)==='rgb('){tmp=str.substr(4,str.length-5);values=tmp.split(',').map(function(v){return v.replace(/^\s+/,'','g');});if(values.length!==3){throw new Error('Malformatted rgb-expression');}
-return new Color(parseInt(values[0]),parseInt(values[1]),parseInt(values[2]));}
-if(str.substr(0,5)==='rgba('){tmp=str.substr(5,str.length-6);values=tmp.split(',').map(function(v){return v.replace(/^\s+/,'','g');});if(values.length!==4){throw new Error('Malformatted rgb-expression');}
-return new Color(parseInt(values[0]),parseInt(values[1]),parseInt(values[2]),parseFloat(values[3]));}
-if(str[0]==='#'&&str.length===7){return new Color(parseInt(str.substr(1,2),16),parseInt(str.substr(3,2),16),parseInt(str.substr(5,2),16));}
-throw new Error('Unrecognized string format.');};Color.lerp=function(a,b,percent){if(a.a!==undefined&&b.a!==undefined){return Color.lerpRGBA(a,b,percent);}
-return Color.lerpRGB(a,b,percent);};Color.lerpRGB=function(a,b,percent){return new Color(((b.r-a.r)*percent)+a.r,((b.g-a.g)*percent)+a.g,((b.b-a.b)*percent)+a.b);};Color.lerpRGBA=function(a,b,percent){return new Color(((b.r-a.r)*percent)+a.r,((b.g-a.g)*percent)+a.g,((b.b-a.b)*percent)+a.b,((b.a-a.a)*percent)+a.a);};Color.fromDict=function(dict){return new Color(dict.r,dict.g,dict.b,dict.a);};Color.fromHSLExplicit=function(h,s,l,a){let r;let g;let b;function hue2rgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p;}
-if(s===0){r=g=b=l;}else{const q=l<0.5?l*(1+s):l+s-l*s;const p=2*l-q;r=hue2rgb(p,q,h+1/3);g=hue2rgb(p,q,h);b=hue2rgb(p,q,h-1/3);}
-return new Color(Math.floor(r*255),Math.floor(g*255),Math.floor(b*255),a);};Color.fromHSL=function(hsl){return Color.fromHSLExplicit(hsl.h,hsl.s,hsl.l,hsl.a);};Color.prototype={clone(){const c=new Color();c.r=this.r;c.g=this.g;c.b=this.b;c.a=this.a;return c;},blendOver(bgColor){const oneMinusThisAlpha=1-this.a;const outA=this.a+bgColor.a*oneMinusThisAlpha;const bgBlend=(bgColor.a*oneMinusThisAlpha)/bgColor.a;return new Color(this.r*this.a+bgColor.r*bgBlend,this.g*this.a+bgColor.g*bgBlend,this.b*this.a+bgColor.b*bgBlend,outA);},brighten(opt_k){const k=opt_k||0.45;return new Color(Math.min(255,this.r+Math.floor(this.r*k)),Math.min(255,this.g+Math.floor(this.g*k)),Math.min(255,this.b+Math.floor(this.b*k)),this.a);},lighten(k,opt_maxL){const maxL=opt_maxL!==undefined?opt_maxL:1.0;const hsl=this.toHSL();hsl.l=Math.min(hsl.l+k,maxL);return Color.fromHSL(hsl);},darken(opt_k){let k;if(opt_k!==undefined){k=opt_k;}else{k=0.45;}
-return new Color(Math.min(255,this.r-Math.floor(this.r*k)),Math.min(255,this.g-Math.floor(this.g*k)),Math.min(255,this.b-Math.floor(this.b*k)),this.a);},desaturate(opt_desaturateFactor){let desaturateFactor;if(opt_desaturateFactor!==undefined){desaturateFactor=opt_desaturateFactor;}else{desaturateFactor=1;}
-const hsl=this.toHSL();hsl.s=clamp01(hsl.s*(1-desaturateFactor));return Color.fromHSL(hsl);},withAlpha(a){return new Color(this.r,this.g,this.b,a);},toString(){if(this.a!==undefined){return'rgba('+
-this.r+','+this.g+','+
-this.b+','+this.a+')';}
-return'rgb('+this.r+','+this.g+','+this.b+')';},toHSL(){const r=this.r/255;const g=this.g/255;const b=this.b/255;const max=Math.max(r,g,b);const min=Math.min(r,g,b);let h;let s;const l=(max+min)/2;if(min===max){h=0;s=0;}else{const delta=max-min;if(l>0.5){s=delta/(2-max-min);}else{s=delta/(max+min);}
-if(r===max){h=(g-b)/delta;if(g0;return hasInProcessRendererThread?'webview':'chrome';},get mainThread(){return this.mainThread_;},get rendererHelpers(){return this.modelHelper.rendererHelpers;},getLoadingEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return slice.title.indexOf('WebContentsImpl Loading')===0&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},getCommitProvisionalLoadEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return slice.title==='RenderFrameImpl::didCommitProvisionalLoad'&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},get hasLatencyEvents(){let hasLatency=false;for(const thread of this.modelHelper.model.getAllThreads()){for(const event of thread.getDescendantEvents()){if(!event.isTopLevel)continue;if(!(event instanceof tr.e.cc.InputLatencyAsyncSlice)){continue;}
-hasLatency=true;}}
-return hasLatency;},getLatencyEventsInRange(rangeOfInterest){return this.getAllAsyncSlicesMatching(function(slice){return(slice.title.indexOf('InputLatency')===0)&&rangeOfInterest.intersectsExplicitRangeInclusive(slice.start,slice.end);});},getAllAsyncSlicesMatching(pred,opt_this){const events=[];this.iterAllThreads(function(thread){for(const slice of thread.getDescendantEvents()){if(pred.call(opt_this,slice)){events.push(slice);}}});return events;},iterAllThreads(func,opt_this){for(const thread of Object.values(this.process.threads)){func.call(opt_this,thread);}
-for(const rendererHelper of Object.values(this.rendererHelpers)){const rendererProcess=rendererHelper.process;for(const thread of Object.values(rendererProcess.threads)){func.call(opt_this,thread);}}}};return{ChromeBrowserHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){function ChromeGpuHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);if(!process.name){process.name=ChromeGpuHelper.PROCESS_NAME;}}
-ChromeGpuHelper.PROCESS_NAME='GPU Process';ChromeGpuHelper.isGpuProcess=function(process){if(process.findAtMostOneThreadNamed('CrBrowserMain')||process.findAtMostOneThreadNamed('CrRendererMain')){return false;}
-return process.findAllThreadsNamed('CrGpuMain').length>0;};ChromeGpuHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype};return{ChromeGpuHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){const NET_CATEGORIES=new Set(['net','netlog','disabled-by-default-netlog','disabled-by-default-network']);class ChromeThreadHelper{constructor(thread){this.thread=thread;}
-getNetworkEvents(){const networkEvents=[];for(const slice of this.thread.asyncSliceGroup.slices){const categories=tr.b.getCategoryParts(slice.category);const isNetEvent=category=>NET_CATEGORIES.has(category);if(categories.filter(isNetEvent).length===0)continue;networkEvents.push(slice);}
-return networkEvents;}}
-return{ChromeThreadHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){const ChromeThreadHelper=tr.model.helpers.ChromeThreadHelper;function ChromeRendererHelper(modelHelper,process){tr.model.helpers.ChromeProcessHelper.call(this,modelHelper,process);this.mainThread_=process.findAtMostOneThreadNamed('CrRendererMain')||process.findAtMostOneThreadNamed('Chrome_InProcRendererThread');this.compositorThread_=process.findAtMostOneThreadNamed('Compositor');this.rasterWorkerThreads_=process.findAllThreadsMatching(function(t){if(t.name===undefined)return false;if(t.name.startsWith('CompositorTileWorker'))return true;if(t.name.startsWith('CompositorRasterWorker'))return true;return false;});this.dedicatedWorkerThreads_=process.findAllThreadsMatching(function(t){return t.name&&t.name.startsWith('DedicatedWorker');});this.foregroundWorkerThreads_=process.findAllThreadsMatching(function(t){return t.name&&t.name.startsWith('ThreadPoolForegroundWorker');});if(!process.name){process.name=ChromeRendererHelper.PROCESS_NAME;}}
-ChromeRendererHelper.PROCESS_NAME='Renderer';ChromeRendererHelper.isRenderProcess=function(process){if(process.findAtMostOneThreadNamed('CrRendererMain'))return true;if(process.findAtMostOneThreadNamed('Compositor'))return true;return false;};ChromeRendererHelper.isTracingProcess=function(process){return process.labels!==undefined&&process.labels.length===1&&process.labels[0]==='chrome://tracing';};ChromeRendererHelper.prototype={__proto__:tr.model.helpers.ChromeProcessHelper.prototype,get mainThread(){return this.mainThread_;},get compositorThread(){return this.compositorThread_;},get rasterWorkerThreads(){return this.rasterWorkerThreads_;},get dedicatedWorkerThreads(){return this.dedicatedWorkerThreads_;},get foregroundWorkerThreads(){return this.foregroundWorkerThreads_;},get isChromeTracingUI(){return ChromeRendererHelper.isTracingProcess(this.process);},};return{ChromeRendererHelper,};});'use strict';tr.exportTo('tr.model.um',function(){class Segment extends tr.model.TimedEvent{constructor(start,duration){super(start);this.duration=duration;this.expectations_=[];}
-get expectations(){return this.expectations_;}
-clone(){const clone=new Segment(this.start,this.duration);clone.expectations.push(...this.expectations);return clone;}
-addSegment(other){this.duration+=other.duration;this.expectations.push(...other.expectations);}}
-return{Segment,};});'use strict';tr.exportTo('tr.model.helpers',function(){const GESTURE_EVENT='SyntheticGestureController::running';const IR_REG_EXP=/Interaction\.([^/]+)(\/[^/]*)?$/;const ChromeRendererHelper=tr.model.helpers.ChromeRendererHelper;class TelemetryHelper{constructor(modelHelper){this.modelHelper=modelHelper;this.renderersWithIR_=undefined;this.irSegments_=undefined;this.uiSegments_=undefined;this.animationSegments_=undefined;}
-get renderersWithIR(){this.findIRs_();return this.renderersWithIR_;}
-get irSegments(){this.findIRs_();return this.irSegments_;}
-get uiSegments(){this.findIRs_();return this.uiSegments_;}
-get animationSegments(){if(this.animationSegments_===undefined){const model=this.modelHelper.model;this.animationSegments_=model.userModel.segments.filter(segment=>segment.expectations.find(ue=>ue instanceof tr.model.um.AnimationExpectation));this.animationSegments_.sort((x,y)=>x.start-y.start);}
-return this.animationSegments_;}
-findIRs_(){if(this.irSegments_!==undefined)return;this.renderersWithIR_=[];const gestureEvents=[];const interactionRecords=[];const processes=Object.values(this.modelHelper.rendererHelpers).concat(this.modelHelper.browserHelpers).map(processHelper=>processHelper.process);for(const process of processes){let foundIR=false;for(const thread of Object.values(process.threads)){for(const slice of thread.asyncSliceGroup.slices){if(slice.title===GESTURE_EVENT){gestureEvents.push(slice);}else if(IR_REG_EXP.test(slice.title)){interactionRecords.push(slice);foundIR=true;}}}
-if(foundIR&&ChromeRendererHelper.isRenderProcess(process)&&!ChromeRendererHelper.isTracingProcess(process)){this.renderersWithIR_.push(new ChromeRendererHelper(this.modelHelper,process));}}
-this.irSegments_=[];this.uiSegments_=[];for(const ir of interactionRecords){const parts=IR_REG_EXP.exec(ir.title);let gestureEventFound=false;if(parts[1].startsWith('Gesture_')){for(const gestureEvent of gestureEvents){if(ir.boundsRange.intersectsRangeInclusive(gestureEvent.boundsRange)){this.irSegments_.push(new tr.model.um.Segment(gestureEvent.start,gestureEvent.duration));gestureEventFound=true;break;}}}else if(parts[1].startsWith('ui_')){this.uiSegments_.push(new tr.model.um.Segment(ir.start,ir.duration));}
-if(!gestureEventFound){this.irSegments_.push(new tr.model.um.Segment(ir.start,ir.duration));}}
-this.irSegments_.sort((x,y)=>x.start-y.start);this.uiSegments_.sort((x,y)=>x.start-y.start);}}
-return{TelemetryHelper,};});'use strict';tr.exportTo('tr.model.helpers',function(){function findChromeBrowserProcesses(model){return model.getAllProcesses(tr.model.helpers.ChromeBrowserHelper.isBrowserProcess);}
-function findChromeRenderProcesses(model){return model.getAllProcesses(tr.model.helpers.ChromeRendererHelper.isRenderProcess);}
-function findChromeGpuProcess(model){const gpuProcesses=model.getAllProcesses(tr.model.helpers.ChromeGpuHelper.isGpuProcess);if(gpuProcesses.length!==1)return undefined;return gpuProcesses[0];}
-function findTelemetrySurfaceFlingerProcess(model){const surfaceFlingerProcesses=model.getAllProcesses(process=>(process.name==='SurfaceFlinger'));if(surfaceFlingerProcesses.length!==1)return undefined;return surfaceFlingerProcesses[0];}
-function ChromeModelHelper(model){this.model_=model;const browserProcesses=findChromeBrowserProcesses(model);this.browserHelpers_=browserProcesses.map(p=>new tr.model.helpers.ChromeBrowserHelper(this,p));const gpuProcess=findChromeGpuProcess(model);if(gpuProcess){this.gpuHelper_=new tr.model.helpers.ChromeGpuHelper(this,gpuProcess);}else{this.gpuHelper_=undefined;}
-const rendererProcesses_=findChromeRenderProcesses(model);this.rendererHelpers_={};rendererProcesses_.forEach(function(renderProcess){const rendererHelper=new tr.model.helpers.ChromeRendererHelper(this,renderProcess);this.rendererHelpers_[rendererHelper.pid]=rendererHelper;},this);this.surfaceFlingerProcess_=findTelemetrySurfaceFlingerProcess(model);this.chromeBounds_=undefined;this.telemetryHelper_=new tr.model.helpers.TelemetryHelper(this);}
-ChromeModelHelper.guid=tr.b.GUID.allocateSimple();ChromeModelHelper.supportsModel=function(model){if(findChromeBrowserProcesses(model).length)return true;if(findChromeRenderProcesses(model).length)return true;return false;};ChromeModelHelper.prototype={get pid(){throw new Error('woah');},get process(){throw new Error('woah');},get model(){return this.model_;},get browserProcess(){if(this.browserHelper===undefined)return undefined;return this.browserHelper.process;},get browserHelper(){return this.browserHelpers_[0];},get browserHelpers(){return this.browserHelpers_;},get gpuHelper(){return this.gpuHelper_;},get rendererHelpers(){return this.rendererHelpers_;},get surfaceFlingerProcess(){return this.surfaceFlingerProcess_;},get chromeBounds(){if(!this.chromeBounds_){this.chromeBounds_=new tr.b.math.Range();for(const browserHelper of Object.values(this.browserHelpers)){this.chromeBounds_.addRange(browserHelper.process.bounds);}
-for(const rendererHelper of Object.values(this.rendererHelpers)){this.chromeBounds_.addRange(rendererHelper.process.bounds);}
-if(this.gpuHelper){this.chromeBounds_.addRange(this.gpuHelper.process.bounds);}}
-if(this.chromeBounds_.isEmpty){return undefined;}
-return this.chromeBounds_;},get telemetryHelper(){return this.telemetryHelper_;}};return{ChromeModelHelper,};});'use strict';tr.exportTo('tr.e.cc',function(){const AsyncSlice=tr.model.AsyncSlice;const EventSet=tr.model.EventSet;const UI_COMP_NAME='INPUT_EVENT_LATENCY_UI_COMPONENT';const ORIGINAL_COMP_NAME='INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT';const BEGIN_COMP_NAME='INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT';const END_COMP_NAME='INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT';const LEGACY_END_COMP_NAME='INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT';const MAIN_RENDERER_THREAD_NAME='CrRendererMain';const COMPOSITOR_THREAD_NAME='Compositor';const OLD_IPC_FLOW_EVENT='disabled-by-default-ipc.flow';const OLD_POSTTASK_FLOW_EVENT='disabled-by-default-toplevel.flow';const NEW_POSTTASK_FLOW_EVENT='toplevel.flow';const INPUT_EVENT_TYPE_NAMES={CHAR:'Char',CLICK:'GestureClick',CONTEXT_MENU:'ContextMenu',FLING_CANCEL:'GestureFlingCancel',FLING_START:'GestureFlingStart',KEY_DOWN:'KeyDown',KEY_DOWN_RAW:'RawKeyDown',KEY_UP:'KeyUp',LATENCY_SCROLL_UPDATE:'ScrollUpdate',MOUSE_DOWN:'MouseDown',MOUSE_ENTER:'MouseEnter',MOUSE_LEAVE:'MouseLeave',MOUSE_MOVE:'MouseMove',MOUSE_UP:'MouseUp',MOUSE_WHEEL:'MouseWheel',PINCH_BEGIN:'GesturePinchBegin',PINCH_END:'GesturePinchEnd',PINCH_UPDATE:'GesturePinchUpdate',SCROLL_BEGIN:'GestureScrollBegin',SCROLL_END:'GestureScrollEnd',SCROLL_UPDATE:'GestureScrollUpdate',SCROLL_UPDATE_RENDERER:'ScrollUpdate',SHOW_PRESS:'GestureShowPress',TAP:'GestureTap',TAP_CANCEL:'GestureTapCancel',TAP_DOWN:'GestureTapDown',TOUCH_CANCEL:'TouchCancel',TOUCH_END:'TouchEnd',TOUCH_MOVE:'TouchMove',TOUCH_START:'TouchStart',UNKNOWN:'UNKNOWN'};function InputLatencyAsyncSlice(){AsyncSlice.apply(this,arguments);this.associatedEvents_=new EventSet();this.typeName_=undefined;if(!this.isLegacyEvent){this.determineModernTypeName_();}}
-InputLatencyAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get isLegacyEvent(){return this.title==='InputLatency';},get typeName(){if(!this.typeName_){this.determineLegacyTypeName_();}
-return this.typeName_;},checkTypeName_(){if(!this.typeName_){throw new Error('Unable to determine typeName');}
-let found=false;for(const typeName in INPUT_EVENT_TYPE_NAMES){if(this.typeName===INPUT_EVENT_TYPE_NAMES[typeName]){found=true;break;}}
-if(!found){this.typeName_=INPUT_EVENT_TYPE_NAMES.UNKNOWN;}},determineModernTypeName_(){const lastColonIndex=this.title.lastIndexOf(':');if(lastColonIndex<0)return;const characterAfterLastColonIndex=lastColonIndex+1;this.typeName_=this.title.slice(characterAfterLastColonIndex);this.checkTypeName_();},determineLegacyTypeName_(){for(const subSlice of this.enumerateAllDescendents()){const subSliceIsAInputLatencyAsyncSlice=(subSlice instanceof InputLatencyAsyncSlice);if(!subSliceIsAInputLatencyAsyncSlice)continue;if(!subSlice.typeName)continue;if(this.typeName_&&subSlice.typeName_){const subSliceHasDifferentTypeName=(this.typeName_!==subSlice.typeName_);if(subSliceHasDifferentTypeName){throw new Error('InputLatencyAsyncSlice.determineLegacyTypeName_() '+' found multiple typeNames');}}
-this.typeName_=subSlice.typeName_;}
-if(!this.typeName_){throw new Error('InputLatencyAsyncSlice.determineLegacyTypeName_() failed');}
-this.checkTypeName_();},getRendererHelper(sourceSlices){const traceModel=this.startThread.parent.model;const modelHelper=traceModel.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper)return undefined;let mainThread=undefined;let compositorThread=undefined;for(const i in sourceSlices){if(sourceSlices[i].parentContainer.name===MAIN_RENDERER_THREAD_NAME){mainThread=sourceSlices[i].parentContainer;}else if(sourceSlices[i].parentContainer.name===COMPOSITOR_THREAD_NAME){compositorThread=sourceSlices[i].parentContainer;}
-if(mainThread&&compositorThread)break;}
-const rendererHelpers=modelHelper.rendererHelpers;const pids=Object.keys(rendererHelpers);for(let i=0;i-1){if(flowEvents.indexOf(inflow)===-1){fromOtherInputs=true;}}},this);},this);return fromOtherInputs;},triggerOtherInputs(event,flowEvents){if(event.outFlowEvents===undefined||event.outFlowEvents.length===0){return false;}
-const flow=event.outFlowEvents[0];const isPostTask=flow.category===NEW_POSTTASK_FLOW_EVENT||flow.category===OLD_POSTTASK_FLOW_EVENT;if(!isPostTask||!flow.endSlice){return false;}
-const endSlice=flow.endSlice;if(this.belongToOtherInputs(endSlice.mostTopLevelSlice,flowEvents)){return true;}
-return false;},followSubsequentSlices(event,queue,visited,flowEvents){let stopFollowing=false;let inputAck=false;event.iterateAllSubsequentSlices(function(slice){if(stopFollowing)return;if(slice.title==='TaskQueueManager::RunTask')return;if(slice.title==='ThreadProxy::ScheduledActionSendBeginMainFrame'){return;}
-if(slice.title==='Scheduler::ScheduleBeginImplFrameDeadline'){if(this.triggerOtherInputs(slice,flowEvents))return;}
-if(slice.title==='CompositorImpl::PostComposite'){if(this.triggerOtherInputs(slice,flowEvents))return;}
-if(slice.title==='InputRouterImpl::ProcessInputEventAck'){inputAck=true;}
-if(inputAck&&slice.title==='InputRouterImpl::FilterAndSendWebInputEvent'){stopFollowing=true;}
-this.followCurrentSlice(slice,queue,visited);},this);},followCurrentSlice(event,queue,visited){event.outFlowEvents.forEach(function(outflow){if((outflow.category===NEW_POSTTASK_FLOW_EVENT||outflow.category===OLD_POSTTASK_FLOW_EVENT||outflow.category===OLD_IPC_FLOW_EVENT)&&outflow.endSlice){this.associatedEvents_.push(outflow);const nextEvent=outflow.endSlice.mostTopLevelSlice;if(!visited.contains(nextEvent)){visited.push(nextEvent);queue.push(nextEvent);}}},this);},backtraceFromDraw(beginImplFrame,visited){const pendingEventQueue=[];pendingEventQueue.push(beginImplFrame.mostTopLevelSlice);while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);event.inFlowEvents.forEach(function(inflow){if(inflow.category===POSTTASK_FLOW_EVENT&&inflow.startSlice){const nextEvent=inflow.startSlice.mostTopLevelSlice;if(!visited.contains(nextEvent)){visited.push(nextEvent);pendingEventQueue.push(nextEvent);}}},this);}},sortRasterizerSlices(rasterWorkerThreads,sortedRasterizerSlices){rasterWorkerThreads.forEach(function(rasterizer){Array.prototype.push.apply(sortedRasterizerSlices,rasterizer.sliceGroup.slices);},this);sortedRasterizerSlices.sort(function(a,b){if(a.start!==b.start){return a.start-b.start;}
-return a.guid-b.guid;});},addRasterizationEvents(prepareTiles,rendererHelper,visited,flowEvents,sortedRasterizerSlices){if(!prepareTiles.args.prepare_tiles_id)return;if(!rendererHelper||!rendererHelper.rasterWorkerThreads){return;}
-const rasterWorkerThreads=rendererHelper.rasterWorkerThreads;const prepareTileId=prepareTiles.args.prepare_tiles_id;const pendingEventQueue=[];if(sortedRasterizerSlices.length===0){this.sortRasterizerSlices(rasterWorkerThreads,sortedRasterizerSlices);}
-let numFinishedTasks=0;const RASTER_TASK_TITLE='RasterizerTaskImpl::RunOnWorkerThread';const IMAGEDECODE_TASK_TITLE='ImageDecodeTaskImpl::RunOnWorkerThread';const FINISHED_TASK_TITLE='TaskSetFinishedTaskImpl::RunOnWorkerThread';for(let i=0;iprepareTiles.start){pendingEventQueue.push(task.mostTopLevelSlice);if(++numFinishedTasks===3)break;}}}
-while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);this.followSubsequentSlices(event,pendingEventQueue,visited,flowEvents);}},addOtherCausallyRelatedEvents(rendererHelper,sourceSlices,flowEvents,sortedRasterizerSlices){const pendingEventQueue=[];const visitedEvents=new EventSet();let beginImplFrame=undefined;let prepareTiles=undefined;sortedRasterizerSlices=[];sourceSlices.forEach(function(sourceSlice){if(!visitedEvents.contains(sourceSlice)){visitedEvents.push(sourceSlice);pendingEventQueue.push(sourceSlice);}},this);while(pendingEventQueue.length!==0){const event=pendingEventQueue.pop();this.addEntireSliceHierarchy(event);this.followCurrentSlice(event,pendingEventQueue,visitedEvents);this.followSubsequentSlices(event,pendingEventQueue,visitedEvents,flowEvents);const COMPOSITOR_PREPARE_TILES='TileManager::PrepareTiles';prepareTiles=event.findDescendentSlice(COMPOSITOR_PREPARE_TILES);if(prepareTiles){this.addRasterizationEvents(prepareTiles,rendererHelper,visitedEvents,flowEvents,sortedRasterizerSlices);}
-const COMPOSITOR_ON_BIFD='Scheduler::OnBeginImplFrameDeadline';beginImplFrame=event.findDescendentSlice(COMPOSITOR_ON_BIFD);if(beginImplFrame){this.backtraceFromDraw(beginImplFrame,visitedEvents);}}},get associatedEvents(){if(this.associatedEvents_.length!==0){return this.associatedEvents_;}
-const modelIndices=this.startThread.parent.model.modelIndices;const flowEvents=modelIndices.getFlowEventsWithId(this.id);if(flowEvents.length===0){return this.associatedEvents_;}
-const sourceSlices=this.addDirectlyAssociatedEvents(flowEvents);const rendererHelper=this.getRendererHelper(sourceSlices);this.addOtherCausallyRelatedEvents(rendererHelper,sourceSlices,flowEvents);return this.associatedEvents_;},get inputLatency(){if(!('data'in this.args))return undefined;const data=this.args.data;const endTimeComp=data[END_COMP_NAME]||data[LEGACY_END_COMP_NAME];if(endTimeComp===undefined)return undefined;let latency=0;const endTime=endTimeComp.time;if(ORIGINAL_COMP_NAME in data){latency=endTime-data[ORIGINAL_COMP_NAME].time;}else if(UI_COMP_NAME in data){latency=endTime-data[UI_COMP_NAME].time;}else if(BEGIN_COMP_NAME in data){latency=endTime-data[BEGIN_COMP_NAME].time;}else{throw new Error('No valid begin latency component');}
-return latency;}};const eventTypeNames=['Char','ContextMenu','GestureClick','GestureFlingCancel','GestureFlingStart','GestureScrollBegin','GestureScrollEnd','GestureScrollUpdate','GestureShowPress','GestureTap','GestureTapCancel','GestureTapDown','GesturePinchBegin','GesturePinchEnd','GesturePinchUpdate','KeyDown','KeyUp','MouseDown','MouseEnter','MouseLeave','MouseMove','MouseUp','MouseWheel','RawKeyDown','ScrollUpdate','TouchCancel','TouchEnd','TouchMove','TouchStart'];const allTypeNames=['InputLatency'];eventTypeNames.forEach(function(eventTypeName){allTypeNames.push('InputLatency:'+eventTypeName);allTypeNames.push('InputLatency::'+eventTypeName);});AsyncSlice.subTypes.register(InputLatencyAsyncSlice,{typeNames:allTypeNames,categoryParts:['latencyInfo']});return{InputLatencyAsyncSlice,INPUT_EVENT_TYPE_NAMES,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;function EventInfo(title,description,docLinks){this.title=title;this.description=description;this.docLinks=docLinks;this.colorId=ColorScheme.getColorIdForGeneralPurposeString(title);}
-return{EventInfo,};});'use strict';(function(exports){var rank={standard:function(array,key){array=array.sort(function(a,b){var x=a[key];var y=b[key];return((xy)?1:0));});for(var i=1;i0;j--){tmp=d;d=ty*d-dd+cof[j];dd=tmp;}
-res=t*Math.exp(-x*x+0.5*(cof[0]+ty*d)-dd);return isneg?res-1:1-res;};var dnorm=function(x,mean,std){return 0.5*(1+erf((x-mean)/Math.sqrt(2*std*std)));}
-var statistic=function(x,y){var ranked=rank.rank(x,y),nr=ranked.length,nx=x.length,ny=y.length,ranksums={x:0,y:0},i=0,t=0,nt=1,tcf,ux,uy;while(i0){if(ranked[i].val==ranked[i-1].val){nt++;}else{if(nt>1){t+=Math.pow(nt,3)-nt
-nt=1;}}}
-ranksums[ranked[i].set]+=ranked[i].rank
-i++;}
-tcf=1-(t/(Math.pow(nr,3)-nr))
-ux=nx*ny+(nx*(nx+1)/2)-ranksums.x;uy=nx*ny-ux;return{tcf:tcf,ux:ux,uy:uy,big:Math.max(ux,uy),small:Math.min(ux,uy)}}
-exports.test=function(x,y,alt,corr){alt=typeof alt!=='undefined'?alt:'two-sided';corr=typeof corr!=='undefined'?corr:true;var nx=x.length,ny=y.length,f=1,u,mu,std,z,p;u=statistic(x,y);if(corr){mu=(nx*ny/2)+0.5;}else{mu=nx*ny/2;}
-std=Math.sqrt(u.tcf*nx*ny*(nx+ny+1)/12);if(alt=='less'){z=(u.ux-mu)/std;}else if(alt=='greater'){z=(u.uy-mu)/std;}else if(alt=='two-sided'){z=Math.abs((u.big-mu)/std);}else{console.log('Unknown alternative argument');}
-if(alt=='two-sided'){f=2;}
-p=dnorm(-z,0,1)*f;return{U:u.small,p:p};}})(typeof exports==='undefined'?this['mannwhitneyu']={}:exports);'use strict';(function(global){if(tr.isNode){const mwuAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/mannwhitneyu.js');const mwuModule=require(mwuAbsPath);for(const exportName in mwuModule){global[exportName]=mwuModule[exportName];}}})(this);'use strict';tr.exportTo('tr.b.math',function(){const Statistics={};Statistics.divideIfPossibleOrZero=function(numerator,denominator){if(denominator===0)return 0;return numerator/denominator;};Statistics.sum=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=0;let i=0;for(const elt of ary){ret+=func.call(opt_this,elt,i++);}
-return ret;};Statistics.mean=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let sum=0;let i=0;for(const elt of ary){sum+=func.call(opt_this,elt,i++);}
-if(i===0)return undefined;return sum/i;};Statistics.geometricMean=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let i=0;let logsum=0;for(const elt of ary){const x=func.call(opt_this,elt,i++);if(x<=0)return 0;logsum+=Math.log(Math.abs(x));}
-if(i===0)return 1;return Math.exp(logsum/i);};Statistics.weightedMean=function(ary,weightCallback,opt_valueCallback,opt_this){const valueCallback=opt_valueCallback||(x=>x);let numerator=0;let denominator=0;let i=-1;for(const elt of ary){i++;const value=valueCallback.call(opt_this,elt,i);if(value===undefined)continue;const weight=weightCallback.call(opt_this,elt,i,value);numerator+=weight*value;denominator+=weight;}
-if(denominator===0)return undefined;return numerator/denominator;};Statistics.variance=function(ary,opt_func,opt_this){if(ary.length===0)return undefined;if(ary.length===1)return 0;const func=opt_func||(x=>x);const mean=Statistics.mean(ary,func,opt_this);const sumOfSquaredDistances=Statistics.sum(ary,function(d,i){const v=func.call(this,d,i)-mean;return v*v;},opt_this);return sumOfSquaredDistances/(ary.length-1);};Statistics.stddev=function(ary,opt_func,opt_this){if(ary.length===0)return undefined;return Math.sqrt(Statistics.variance(ary,opt_func,opt_this));};Statistics.max=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=-Infinity;let i=0;for(const elt of ary){ret=Math.max(ret,func.call(opt_this,elt,i++));}
-return ret;};Statistics.min=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);let ret=Infinity;let i=0;for(const elt of ary){ret=Math.min(ret,func.call(opt_this,elt,i++));}
-return ret;};Statistics.range=function(ary,opt_func,opt_this){const func=opt_func||(x=>x);const ret=new tr.b.math.Range();let i=0;for(const elt of ary){ret.addValue(func.call(opt_this,elt,i++));}
-return ret;};Statistics.percentile=function(ary,percent,opt_func,opt_this){if(!(percent>=0&&percent<=1)){throw new Error('percent must be [0,1]');}
-const func=opt_func||(x=>x);const tmp=new Array(ary.length);let i=0;for(const elt of ary){tmp[i]=func.call(opt_this,elt,i++);}
-tmp.sort((a,b)=>a-b);const idx=Math.floor((ary.length-1)*percent);return tmp[idx];};Statistics.normalizeSamples=function(samples){if(samples.length===0){return{normalized_samples:samples,scale:1.0};}
-samples=samples.slice().sort(function(a,b){return a-b;});const low=Math.min.apply(null,samples);const high=Math.max.apply(null,samples);const newLow=0.5/samples.length;const newHigh=(samples.length-0.5)/samples.length;if(high-low===0.0){samples=Array.apply(null,new Array(samples.length)).map(function(){return 0.5;});return{normalized_samples:samples,scale:1.0};}
-const scale=(newHigh-newLow)/(high-low);for(let i=0;i0.0){locations.push(0.0);countLess.push(0);countLessEqual.push(0);}
-for(let i=0;icount){const i=parseInt(Math.random()*samples.length);samples.splice(i,1);}
-return samples;};Statistics.uniformlySampleStream=function(samples,streamLength,newElement,numSamples){if(streamLength<=numSamples){if(samples.length>=streamLength){samples[streamLength-1]=newElement;}else{samples.push(newElement);}
-return;}
-const probToKeep=numSamples/streamLength;if(Math.random()>probToKeep)return;const index=Math.floor(Math.random()*numSamples);samples[index]=newElement;};Statistics.mergeSampledStreams=function(samplesA,streamLengthA,samplesB,streamLengthB,numSamples){if(streamLengthBthis.start;},containsTypeNames(typeNames){return this.associatedEvents.some(x=>typeNames.indexOf(x.typeName)>=0);},containsSliceTitle(title){return this.associatedEvents.some(x=>title===x.title);},createInteractionRecord(model){if(this.type!==ProtoExpectation.IGNORED_TYPE&&!this.isValid){model.importWarning({type:'ProtoExpectation',message:'Please file a bug with this trace. '+this.debug(),showToUser:true});return undefined;}
-const duration=this.end-this.start;let ir=undefined;switch(this.type){case ProtoExpectation.RESPONSE_TYPE:ir=new tr.model.um.ResponseExpectation(model,this.initiatorType,this.start,duration,this.isAnimationBegin);break;case ProtoExpectation.ANIMATION_TYPE:ir=new tr.model.um.AnimationExpectation(model,this.initiatorType,this.start,duration);break;}
-if(!ir)return undefined;ir.sourceEvents.addEventSet(this.associatedEvents);function pushAssociatedEvents(event){ir.associatedEvents.push(event);if(event.associatedEvents){ir.associatedEvents.addEventSet(event.associatedEvents);}}
-this.associatedEvents.forEach(function(event){pushAssociatedEvents(event);if(event.subSlices){event.subSlices.forEach(pushAssociatedEvents);}});return ir;},merge(other){this.initiatorType=combineInitiatorTypes(this.initiatorType,other.initiatorType);this.associatedEvents.addEventSet(other.associatedEvents);this.start=Math.min(this.start,other.start);this.end=Math.max(this.end,other.end);if(other.isAnimationBegin){this.isAnimationBegin=true;}},pushEvent(event){this.start=Math.min(this.start,event.start);this.end=Math.max(this.end,event.end);this.associatedEvents.push(event);},pushSample(sample){this.start=Math.min(this.start,sample.timestamp);this.end=Math.max(this.end,sample.timestamp);this.associatedEvents.push(sample);},containsTimestampInclusive(timestamp){return(this.start<=timestamp)&&(timestamp<=this.end);},intersects(other){return(other.startthis.start);},isNear(event,threshold){return(this.end+threshold)>event.start;},debug(){let debugString=this.type+'(';debugString+=parseInt(this.start)+' ';debugString+=parseInt(this.end);this.associatedEvents.forEach(function(event){debugString+=' '+event.typeName;});return debugString+')';}};return{ProtoExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const ProtoExpectation=tr.importer.ProtoExpectation;const INITIATOR_TYPE=tr.model.um.INITIATOR_TYPE;const INPUT_TYPE=tr.e.cc.INPUT_EVENT_TYPE_NAMES;const KEYBOARD_TYPE_NAMES=[INPUT_TYPE.CHAR,INPUT_TYPE.KEY_DOWN_RAW,INPUT_TYPE.KEY_DOWN,INPUT_TYPE.KEY_UP];const MOUSE_RESPONSE_TYPE_NAMES=[INPUT_TYPE.CLICK,INPUT_TYPE.CONTEXT_MENU];const MOUSE_WHEEL_TYPE_NAMES=[INPUT_TYPE.MOUSE_WHEEL];const MOUSE_DRAG_TYPE_NAMES=[INPUT_TYPE.MOUSE_DOWN,INPUT_TYPE.MOUSE_MOVE,INPUT_TYPE.MOUSE_UP];const TAP_TYPE_NAMES=[INPUT_TYPE.TAP,INPUT_TYPE.TAP_CANCEL,INPUT_TYPE.TAP_DOWN];const PINCH_TYPE_NAMES=[INPUT_TYPE.PINCH_BEGIN,INPUT_TYPE.PINCH_END,INPUT_TYPE.PINCH_UPDATE];const FLING_TYPE_NAMES=[INPUT_TYPE.FLING_CANCEL,INPUT_TYPE.FLING_START];const TOUCH_TYPE_NAMES=[INPUT_TYPE.TOUCH_END,INPUT_TYPE.TOUCH_MOVE,INPUT_TYPE.TOUCH_START];const SCROLL_TYPE_NAMES=[INPUT_TYPE.SCROLL_BEGIN,INPUT_TYPE.SCROLL_END,INPUT_TYPE.SCROLL_UPDATE];const ALL_HANDLED_TYPE_NAMES=[].concat(KEYBOARD_TYPE_NAMES,MOUSE_RESPONSE_TYPE_NAMES,MOUSE_WHEEL_TYPE_NAMES,MOUSE_DRAG_TYPE_NAMES,PINCH_TYPE_NAMES,TAP_TYPE_NAMES,FLING_TYPE_NAMES,TOUCH_TYPE_NAMES,SCROLL_TYPE_NAMES);const RENDERER_FLING_TITLE='InputHandlerProxy::HandleGestureFling::started';const PLAYBACK_EVENT_TITLE='VideoPlayback';const CSS_ANIMATION_TITLE='Animation';const VR_COUNTER_NAMES=['gpu.WebVR FPS','gpu.WebVR frame time (ms)','gpu.WebVR pose prediction (ms)','gpu.WebXR FPS',];const VR_EXPECTATION_EVENTS={'Vr.AcquireGvrFrame':{'histogramName':'acquire_frame','description':'Duration acquire a frame from GVR','hasCpuTime':true,},'Vr.DrawFrame':{'histogramName':'draw_frame','description':'Duration to render one frame','hasCpuTime':true,},'Vr.PostSubmitDrawOnGpu':{'histogramName':'post_submit_draw_on_gpu','description':'Duration to draw a frame on GPU post submit to '+'GVR. Note this duration may include time spent on '+'reprojection','hasCpuTime':false,},'Vr.ProcessControllerInput':{'histogramName':'update_controller','description':'Duration to query input from the controller','hasCpuTime':true,},'Vr.ProcessControllerInputForWebXr':{'histogramName':'update_controller_webxr','description':'Duration to query input from the controller for WebXR','hasCpuTime':true,},'Vr.SubmitFrameNow':{'histogramName':'submit_frame','description':'Duration to submit a frame to GVR','hasCpuTime':true,}};const WEBXR_INSTANT_EVENTS={'WebXR frame time (ms)':{'javascript':{'histogramName':'webxr_frame_time_javascript','description':'WebXR frame time spent on JavaScript',},'rendering':{'histogramName':'webxr_frame_time_rendering','description':'WebXR frame time spent on rendering'}},'WebXR pose prediction':{'milliseconds':{'histogramName':'webxr_pose_prediction','description':'WebXR pose prediction in ms',},},};const XR_DEVICE_SERVICE_PROCESS='Service: xr_device_service';function isXrDeviceServiceProcess(process){if(process.name===XR_DEVICE_SERVICE_PROCESS)return true;return false;}
-const VR_RESPONSE_MS=1000;const INPUT_MERGE_THRESHOLD_MS=200;const ANIMATION_MERGE_THRESHOLD_MS=32;const MOUSE_WHEEL_THRESHOLD_MS=40;const MOUSE_MOVE_THRESHOLD_MS=40;function compareEvents(x,y){if(x.start!==y.start){return x.start-y.start;}
-if(x.end!==y.end){return x.end-y.end;}
-if(x.guid&&y.guid){return x.guid-y.guid;}
-return 0;}
-function forEventTypesIn(events,typeNames,cb,opt_this){events.forEach(function(event){if(typeNames.indexOf(event.typeName)>=0){cb.call(opt_this,event);}});}
-function causedFrame(event){return event.associatedEvents.some(isImplFrameEvent);}
-function getSortedFrameEventsByProcess(modelHelper){const frameEventsByPid={};for(const[pid,rendererHelper]of
-Object.entries(modelHelper.rendererHelpers)){frameEventsByPid[pid]=rendererHelper.getFrameEventsInRange(tr.model.helpers.IMPL_FRAMETIME_TYPE,modelHelper.model.bounds);}
-return frameEventsByPid;}
-function getSortedInputEvents(modelHelper){const inputEvents=[];const browserProcess=modelHelper.browserHelper.process;const mainThread=browserProcess.findAtMostOneThreadNamed('CrBrowserMain');for(const slice of mainThread.asyncSliceGroup.getDescendantEvents()){if(!slice.isTopLevel)continue;if(!(slice instanceof tr.e.cc.InputLatencyAsyncSlice))continue;if(isNaN(slice.start)||isNaN(slice.duration)||isNaN(slice.end)){continue;}
-inputEvents.push(slice);}
-return inputEvents.sort(compareEvents);}
-function findProtoExpectations(modelHelper,sortedInputEvents,warn){const protoExpectations=[];const handlers=[handleKeyboardEvents,handleMouseResponseEvents,handleMouseWheelEvents,handleMouseDragEvents,handleTapResponseEvents,handlePinchEvents,handleFlingEvents,handleTouchEvents,handleScrollEvents,handleCSSAnimations,handleWebGLAnimations,handleVideoAnimations,handleVrAnimations,];handlers.forEach(function(handler){protoExpectations.push.apply(protoExpectations,handler(modelHelper,sortedInputEvents,warn));});protoExpectations.sort(compareEvents);return protoExpectations;}
-function handleKeyboardEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];forEventTypesIn(sortedInputEvents,KEYBOARD_TYPE_NAMES,function(event){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.KEYBOARD);pe.pushEvent(event);protoExpectations.push(pe);});return protoExpectations;}
-function handleMouseResponseEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];forEventTypesIn(sortedInputEvents,MOUSE_RESPONSE_TYPE_NAMES,function(event){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);});return protoExpectations;}
-function handleMouseWheelEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let prevEvent_=undefined;forEventTypesIn(sortedInputEvents,MOUSE_WHEEL_TYPE_NAMES,function(event){const prevEvent=prevEvent_;prevEvent_=event;if(currentPE&&(prevEvent.start+MOUSE_WHEEL_THRESHOLD_MS)>=event.start){if(currentPE.type===ProtoExpectation.ANIMATION_TYPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.MOUSE_WHEEL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-return;}
-currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE_WHEEL);currentPE.pushEvent(event);protoExpectations.push(currentPE);});return protoExpectations;}
-function handleMouseDragEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let mouseDownEvent=undefined;forEventTypesIn(sortedInputEvents,MOUSE_DRAG_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.MOUSE_DOWN:if(causedFrame(event)){const pe=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);}else{mouseDownEvent=event;}
-break;case INPUT_TYPE.MOUSE_MOVE:if(!causedFrame(event)){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}else if(!currentPE||!currentPE.isNear(event,MOUSE_MOVE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);currentPE.pushEvent(event);if(mouseDownEvent){currentPE.associatedEvents.push(mouseDownEvent);mouseDownEvent=undefined;}
-protoExpectations.push(currentPE);}else{if(currentPE.type===ProtoExpectation.ANIMATION_TYPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.MOUSE);currentPE.pushEvent(event);protoExpectations.push(currentPE);}}
-break;case INPUT_TYPE.MOUSE_UP:if(!mouseDownEvent){const pe=new ProtoExpectation(causedFrame(event)?ProtoExpectation.RESPONSE_TYPE:ProtoExpectation.IGNORED_TYPE,INITIATOR_TYPE.MOUSE);pe.pushEvent(event);protoExpectations.push(pe);break;}
-if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.MOUSE);if(mouseDownEvent){currentPE.associatedEvents.push(mouseDownEvent);}
-currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-mouseDownEvent=undefined;currentPE=undefined;break;}});if(mouseDownEvent){currentPE=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);currentPE.pushEvent(mouseDownEvent);protoExpectations.push(currentPE);}
-return protoExpectations;}
-function handleTapResponseEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;forEventTypesIn(sortedInputEvents,TAP_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.TAP_DOWN:currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);break;case INPUT_TYPE.TAP:if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-currentPE=undefined;break;case INPUT_TYPE.TAP_CANCEL:if(!currentPE){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}
-if(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TAP);currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-currentPE=undefined;break;}});return protoExpectations;}
-function handlePinchEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstUpdate=false;const modelBounds=modelHelper.model.bounds;forEventTypesIn(sortedInputEvents,PINCH_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.PINCH_BEGIN:if(currentPE&¤tPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);break;}
-currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.PINCH);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstUpdate=false;break;case INPUT_TYPE.PINCH_UPDATE:if(!currentPE||((currentPE.type===ProtoExpectation.RESPONSE_TYPE)&&sawFirstUpdate)||!currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.PINCH);currentPE.pushEvent(event);protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);sawFirstUpdate=true;}
-break;case INPUT_TYPE.PINCH_END:if(currentPE){currentPE.pushEvent(event);}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}
-currentPE=undefined;break;}});return protoExpectations;}
-function handleFlingEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;function isRendererFling(event){return event.title===RENDERER_FLING_TITLE;}
-const browserHelper=modelHelper.browserHelper;const flingEvents=browserHelper.getAllAsyncSlicesMatching(isRendererFling);forEventTypesIn(sortedInputEvents,FLING_TYPE_NAMES,function(event){flingEvents.push(event);});flingEvents.sort(compareEvents);flingEvents.forEach(function(event){if(event.title===RENDERER_FLING_TITLE){if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.FLING);currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-return;}
-switch(event.typeName){case INPUT_TYPE.FLING_START:if(currentPE){warn({type:'UserModelBuilder',message:'Unexpected FlingStart',showToUser:false,});currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.FLING);currentPE.pushEvent(event);currentPE.end=0;protoExpectations.push(currentPE);}
-break;case INPUT_TYPE.FLING_CANCEL:if(currentPE){currentPE.pushEvent(event);currentPE.end=event.start;currentPE=undefined;}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}
-break;}});if(currentPE&&!currentPE.end){currentPE.end=modelHelper.model.bounds.max;}
-return protoExpectations;}
-function handleTouchEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstMove=false;forEventTypesIn(sortedInputEvents,TOUCH_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.TOUCH_START:if(currentPE){currentPE.pushEvent(event);}else{currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstMove=false;}
-break;case INPUT_TYPE.TOUCH_MOVE:if(!currentPE){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);protoExpectations.push(currentPE);break;}
-if((sawFirstMove&&(currentPE.type===ProtoExpectation.RESPONSE_TYPE))||!currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){const prevEnd=currentPE.end;currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.TOUCH);currentPE.pushEvent(event);currentPE.start=prevEnd;protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);sawFirstMove=true;}
-break;case INPUT_TYPE.TOUCH_END:if(!currentPE){const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}
-if(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)){currentPE.pushEvent(event);}else{const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);}
-currentPE=undefined;break;}});return protoExpectations;}
-function handleScrollEvents(modelHelper,sortedInputEvents,warn){const protoExpectations=[];let currentPE=undefined;let sawFirstUpdate=false;forEventTypesIn(sortedInputEvents,SCROLL_TYPE_NAMES,function(event){switch(event.typeName){case INPUT_TYPE.SCROLL_BEGIN:currentPE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);currentPE.isAnimationBegin=true;protoExpectations.push(currentPE);sawFirstUpdate=false;break;case INPUT_TYPE.SCROLL_UPDATE:if(currentPE){if(currentPE.isNear(event,INPUT_MERGE_THRESHOLD_MS)&&((currentPE.type===ProtoExpectation.ANIMATION_TYPE)||!sawFirstUpdate)){currentPE.pushEvent(event);sawFirstUpdate=true;}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}}else{currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.SCROLL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-break;case INPUT_TYPE.SCROLL_END:if(!currentPE){warn({type:'UserModelBuilder',message:'Unexpected ScrollEnd',showToUser:false,});const pe=new ProtoExpectation(ProtoExpectation.IGNORED_TYPE);pe.pushEvent(event);protoExpectations.push(pe);break;}
-currentPE.pushEvent(event);break;}});return protoExpectations;}
-function handleVideoAnimations(modelHelper,sortedInputEvents,warn){const events=[];for(const pid in modelHelper.rendererHelpers){for(const tid in modelHelper.rendererHelpers[pid].process.threads){for(const asyncSlice of
-modelHelper.rendererHelpers[pid].process.threads[tid].asyncSliceGroup.slices){if(asyncSlice.title===PLAYBACK_EVENT_TITLE){events.push(asyncSlice);}}}}
-events.sort(tr.importer.compareEvents);const protoExpectations=[];for(const event of events){const currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.VIDEO);currentPE.start=event.start;currentPE.end=event.end;currentPE.pushEvent(event);protoExpectations.push(currentPE);}
-return protoExpectations;}
-function handleVrAnimations(modelHelper,sortedInputEvents,warn){const events=[];const processes=[];if(typeof modelHelper.gpuHelper!=='undefined'){processes.push(modelHelper.gpuHelper.process);}
-for(const helper of Object.values(modelHelper.rendererHelpers)){processes.push(helper.process);}
-for(const helper of Object.values(modelHelper.browserHelpers)){processes.push(helper.process);}
-for(const service of modelHelper.model.getAllProcesses(isXrDeviceServiceProcess)){processes.push(service);}
-let vrCounterStart=Number.MAX_SAFE_INTEGER;let vrEventStart=Number.MAX_SAFE_INTEGER;for(const proc of processes){for(const[counterName,counterSeries]of
-Object.entries(proc.counters)){if(VR_COUNTER_NAMES.includes(counterName)){for(const series of counterSeries.series){for(const sample of series.samples){events.push(sample);vrCounterStart=Math.min(vrCounterStart,sample.timestamp);}}}}
-for(const thread of Object.values(proc.threads)){for(const container of thread.childEventContainers()){for(const slice of container.slices){if(slice.title in VR_EXPECTATION_EVENTS||slice.title in WEBXR_INSTANT_EVENTS){events.push(slice);vrEventStart=Math.min(vrEventStart,slice.start);}}}}}
-if(events.length===0){return[];}
-events.sort(function(x,y){if(x.range.min!==y.range.min){return x.range.min-y.range.min;}
-return x.guid-y.guid;});vrCounterStart=(vrCounterStart===Number.MAX_SAFE_INTEGER)?0:vrCounterStart;vrEventStart=(vrEventStart===Number.MAX_SAFE_INTEGER)?0:vrEventStart;const vrAnimationStart=Math.max(vrCounterStart,vrEventStart)+
-VR_RESPONSE_MS;const responsePE=new ProtoExpectation(ProtoExpectation.RESPONSE_TYPE,INITIATOR_TYPE.VR);const animationPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.VR);let lastResponseEvent;for(const event of events){if(event.range.min0));});const animationRanges=[];function pushAnimationRange(start,end,animation){const range=tr.b.math.Range.fromExplicitRange(start,end);range.animation=animation;animationRanges.push(range);}
-animationEvents.forEach(function(animation){if(animation.subSlices.length===0){pushAnimationRange(animation.start,animation.end,animation);}else{let start=undefined;animation.subSlices.forEach(function(sub){if((sub.args.data.state==='running')&&(start===undefined)){start=sub.start;}else if((sub.args.data.state==='paused')||(sub.args.data.state==='idle')||(sub.args.data.state==='finished')){if(start===undefined){start=modelHelper.model.bounds.min;}
-pushAnimationRange(start,sub.start,animation);start=undefined;}});if(start!==undefined){pushAnimationRange(start,animation.end,animation);}}});return animationRanges.map(function(range){const protoExpectation=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.CSS);protoExpectation.start=range.min;protoExpectation.end=range.max;protoExpectation.associatedEvents.push(range.animation);return protoExpectation;});}
-function findWebGLEvents(modelHelper,mailboxEvents,animationEvents){for(const event of modelHelper.model.getDescendantEvents()){if(event.title==='DrawingBuffer::prepareMailbox'){mailboxEvents.push(event);}else if(event.title==='PageAnimator::serviceScriptedAnimations'){animationEvents.push(event);}}}
-function findMailboxEventsNearAnimationEvents(mailboxEvents,animationEvents){if(animationEvents.length===0)return[];mailboxEvents.sort(compareEvents);animationEvents.sort(compareEvents);const animationIterator=animationEvents[Symbol.iterator]();let animationEvent=animationIterator.next().value;const filteredEvents=[];for(const event of mailboxEvents){while(animationEvent&&(animationEvent.start<(event.start-ANIMATION_MERGE_THRESHOLD_MS))){animationEvent=animationIterator.next().value;}
-if(!animationEvent)break;if(animationEvent.start<(event.start+ANIMATION_MERGE_THRESHOLD_MS)){filteredEvents.push(event);}}
-return filteredEvents;}
-function createProtoExpectationsFromMailboxEvents(mailboxEvents){const protoExpectations=[];let currentPE=undefined;for(const event of mailboxEvents){if(currentPE===undefined||!currentPE.isNear(event,ANIMATION_MERGE_THRESHOLD_MS)){currentPE=new ProtoExpectation(ProtoExpectation.ANIMATION_TYPE,INITIATOR_TYPE.WEBGL);currentPE.pushEvent(event);protoExpectations.push(currentPE);}else{currentPE.pushEvent(event);}}
-return protoExpectations;}
-function handleWebGLAnimations(modelHelper,sortedInputEvents,warn){const prepareMailboxEvents=[];const scriptedAnimationEvents=[];findWebGLEvents(modelHelper,prepareMailboxEvents,scriptedAnimationEvents);const webGLMailboxEvents=findMailboxEventsNearAnimationEvents(prepareMailboxEvents,scriptedAnimationEvents);return createProtoExpectationsFromMailboxEvents(webGLMailboxEvents);}
-function postProcessProtoExpectations(modelHelper,protoExpectations){protoExpectations=findFrameEventsForAnimations(modelHelper,protoExpectations);protoExpectations=mergeIntersectingResponses(protoExpectations);protoExpectations=mergeIntersectingAnimations(protoExpectations);protoExpectations=fixResponseAnimationStarts(protoExpectations);protoExpectations=fixTapResponseTouchAnimations(protoExpectations);return protoExpectations;}
-function mergeIntersectingResponses(protoExpectations){const newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);if(pe.type!==ProtoExpectation.RESPONSE_TYPE)continue;for(let i=0;i(!isImplFrameEvent(e)||e.start>=ape.start));}});});return protoExpectations;}
-function isImplFrameEvent(event){return event.title===tr.model.helpers.IMPL_RENDERING_STATS;}
-function fixTapResponseTouchAnimations(protoExpectations){function isTapResponse(pe){return(pe.type===ProtoExpectation.RESPONSE_TYPE)&&pe.containsTypeNames([INPUT_TYPE.TAP]);}
-function isTouchAnimation(pe){return(pe.type===ProtoExpectation.ANIMATION_TYPE)&&pe.containsTypeNames([INPUT_TYPE.TOUCH_MOVE])&&!pe.containsTypeNames([INPUT_TYPE.SCROLL_UPDATE,INPUT_TYPE.PINCH_UPDATE]);}
-const newPEs=[];while(protoExpectations.length){const pe=protoExpectations.shift();newPEs.push(pe);const peIsTapResponse=isTapResponse(pe);const peIsTouchAnimation=isTouchAnimation(pe);if(!peIsTapResponse&&!peIsTouchAnimation){continue;}
-for(let i=0;ie.start));}
-if(frameEvents.length===0&&!(pe.initiatorType===INITIATOR_TYPE.WEBGL||pe.initiatorType===INITIATOR_TYPE.VR)){pe.type=ProtoExpectation.IGNORED_TYPE;newPEs.push(pe);continue;}
-pe.associatedEvents.addEventSet(frameEvents);newPEs.push(pe);}
-return newPEs;}
-function checkAllInputEventsHandled(modelHelper,sortedInputEvents,protoExpectations,warn){const handledEvents=[];protoExpectations.forEach(function(protoExpectation){protoExpectation.associatedEvents.forEach(function(event){if((event.title===CSS_ANIMATION_TITLE)&&(event.subSlices.length>0)){return;}
-if((handledEvents.indexOf(event)>=0)&&(!isImplFrameEvent(event))){warn({type:'UserModelBuilder',message:`double-handled event: ${event.typeName} @ ${event.start}`,showToUser:false,});return;}
-handledEvents.push(event);});});sortedInputEvents.forEach(function(event){if(handledEvents.indexOf(event)<0){warn({type:'UserModelBuilder',message:`double-handled event: ${event.typeName} @ ${event.start}`,showToUser:false,});}});}
-function findInputExpectations(modelHelper){let warning;function warn(w){if(warning)return;warning=w;}
-const sortedInputEvents=getSortedInputEvents(modelHelper);let protoExpectations=findProtoExpectations(modelHelper,sortedInputEvents,warn);protoExpectations=postProcessProtoExpectations(modelHelper,protoExpectations);checkAllInputEventsHandled(modelHelper,sortedInputEvents,protoExpectations,warn);if(warning)modelHelper.model.importWarning(warning);const expectations=[];protoExpectations.forEach(function(protoExpectation){const ir=protoExpectation.createInteractionRecord(modelHelper.model);if(ir){expectations.push(ir);}});return expectations;}
-return{findInputExpectations,compareEvents,CSS_ANIMATION_TITLE,VR_EXPECTATION_EVENTS,WEBXR_INSTANT_EVENTS,};});'use strict';tr.exportTo('tr.b',function(){class FixedColorScheme{constructor(namesToColors){this.namesToColors_=namesToColors;}
-static fromNames(names){const namesToColors=new Map();const generator=new tr.b.SinebowColorGenerator();for(const name of names){namesToColors.set(name,generator.colorForKey(name));}
-return new FixedColorScheme(namesToColors);}
-getColor(name){const color=this.namesToColors_.get(name);if(color===undefined)throw new Error('Unknown color: '+name);return color;}}
-const MemoryColumnColorScheme=new FixedColorScheme(new Map([['used_memory_column',new tr.b.Color(0,0,255)],['older_used_memory_column',new tr.b.Color(153,204,255)],['tracing_memory_column',new tr.b.Color(153,153,153)]]));function FixedColorSchemeRegistry(){}
-FixedColorSchemeRegistry.lookUp=function(name){const info=this.findTypeInfoMatching(info=>info.metadata.name===name);if(!info)return undefined;return info.constructor();};const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(FixedColorSchemeRegistry,options);return{MemoryColumnColorScheme,FixedColorScheme,FixedColorSchemeRegistry,};});'use strict';tr.exportTo('tr.e.chrome.chrome_processes',function(){const CHROME_PROCESS_NAMES={BROWSER:'browser_process',RENDERER:'renderer_processes',ALL:'all_processes',GPU:'gpu_process',PPAPI:'ppapi_process',UNKNOWN:'unknown_processes',};const PROCESS_COLOR_SCHEME_NAME='ChromeProcessNames';const PROCESS_COLOR_SCHEME=tr.b.FixedColorScheme.fromNames(Object.values(CHROME_PROCESS_NAMES));tr.b.FixedColorSchemeRegistry.register(()=>PROCESS_COLOR_SCHEME,{name:PROCESS_COLOR_SCHEME_NAME,});function canonicalizeName(name){return name.toLowerCase().replace(' ','_');}
-function canonicalizeProcessName(rawProcessName){if(!rawProcessName)return CHROME_PROCESS_NAMES.UNKNOWN;const baseCanonicalName=canonicalizeName(rawProcessName);switch(baseCanonicalName){case'renderer':return CHROME_PROCESS_NAMES.RENDERER;case'browser':return CHROME_PROCESS_NAMES.BROWSER;}
-if(Object.values(CHROME_PROCESS_NAMES).includes(baseCanonicalName)){return baseCanonicalName;}
-return CHROME_PROCESS_NAMES.UNKNOWN;}
-return{CHROME_PROCESS_NAMES,PROCESS_COLOR_SCHEME,PROCESS_COLOR_SCHEME_NAME,canonicalizeName,canonicalizeProcessName,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function perceptualBlend(ir,index,score){return Math.exp(1-score);}
-function filterExpectationsByRange(irs,opt_range){const filteredExpectations=[];irs.forEach(function(ir){if(!(ir instanceof tr.model.um.UserExpectation))return;if(!opt_range||opt_range.intersectsExplicitRangeInclusive(ir.start,ir.end)){filteredExpectations.push(ir);}});return filteredExpectations;}
-function splitGlobalDumpsByBrowserName(model,opt_rangeOfInterest){const chromeModelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const browserNameToGlobalDumps=new Map();const globalDumpToBrowserHelper=new WeakMap();if(chromeModelHelper){chromeModelHelper.browserHelpers.forEach(function(helper){const globalDumps=skipDumpsThatDoNotIntersectRange(helper.process.memoryDumps.map(d=>d.globalMemoryDump),opt_rangeOfInterest);globalDumps.forEach(function(globalDump){const existingHelper=globalDumpToBrowserHelper.get(globalDump);if(existingHelper!==undefined){throw new Error('Memory dump ID clash across multiple browsers '+'with PIDs: '+existingHelper.pid+' and '+helper.pid);}
-globalDumpToBrowserHelper.set(globalDump,helper);});makeKeyUniqueAndSet(browserNameToGlobalDumps,tr.e.chrome.chrome_processes.canonicalizeName(helper.browserName),globalDumps);});}
-const unclassifiedGlobalDumps=skipDumpsThatDoNotIntersectRange(model.globalMemoryDumps.filter(g=>!globalDumpToBrowserHelper.has(g)),opt_rangeOfInterest);if(unclassifiedGlobalDumps.length>0){makeKeyUniqueAndSet(browserNameToGlobalDumps,'unknown_browser',unclassifiedGlobalDumps);}
-return browserNameToGlobalDumps;}
-function makeKeyUniqueAndSet(map,key,value){let uniqueKey=key;let nextIndex=2;while(map.has(uniqueKey)){uniqueKey=key+nextIndex;nextIndex++;}
-map.set(uniqueKey,value);}
-function skipDumpsThatDoNotIntersectRange(dumps,opt_range){if(!opt_range)return dumps;return dumps.filter(d=>opt_range.intersectsExplicitRangeInclusive(d.start,d.end));}
-function hasCategoryAndName(event,category,title){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}
-return{hasCategoryAndName,filterExpectationsByRange,perceptualBlend,splitGlobalDumpsByBrowserName};});'use strict';tr.exportTo('tr.e.chrome',function(){const CHROME_INTERNAL_URLS=['','about:blank','data:text/html,pluginplaceholderdata','chrome-error://chromewebdata/'];const SCHEDULER_TOP_LEVEL_TASK_TITLE='ThreadControllerImpl::RunTask';const SCHEDULER_TOP_LEVEL_TASKS=new Set([SCHEDULER_TOP_LEVEL_TASK_TITLE,'ThreadControllerImpl::DoWork','TaskQueueManager::ProcessTaskFromWorkQueue']);class EventFinderUtils{static hasCategoryAndName(event,category,title){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}
-static*getMainThreadEvents(rendererHelper,eventTitle,eventCategory){if(!rendererHelper.mainThread)return;for(const ev of rendererHelper.mainThread.sliceGroup.childEvents()){if(rendererHelper.isTelemetryInternalEvent(ev))continue;if(!this.hasCategoryAndName(ev,eventCategory,eventTitle)){continue;}
-yield ev;}}
-static getNetworkEventsInRange(process,range){const networkEvents=[];for(const thread of Object.values(process.threads)){const threadHelper=new tr.model.helpers.ChromeThreadHelper(thread);const events=threadHelper.getNetworkEvents();for(const event of events){if(range.intersectsExplicitRangeInclusive(event.start,event.end)){networkEvents.push(event);}}}
-return networkEvents;}
-static getSortedMainThreadEventsByFrame(rendererHelper,eventTitle,eventCategory){const eventsByFrame=new Map();const events=this.getMainThreadEvents(rendererHelper,eventTitle,eventCategory);for(const ev of events){const frameIdRef=ev.args.frame;if(frameIdRef===undefined)continue;if(!eventsByFrame.has(frameIdRef)){eventsByFrame.set(frameIdRef,[]);}
-eventsByFrame.get(frameIdRef).push(ev);}
-return eventsByFrame;}
-static getSortedMainThreadEventsByNavId(rendererHelper,eventTitle,eventCategory){const eventsByNavId=new Map();const events=this.getMainThreadEvents(rendererHelper,eventTitle,eventCategory);for(const ev of events){if(ev.args.data===undefined)continue;const navIdRef=ev.args.data.navigationId;if(navIdRef===undefined)continue;eventsByNavId.set(navIdRef,ev);}
-return eventsByNavId;}
-static findLastEventStartingOnOrBeforeTimestamp(sortedEvents,timestamp){const firstIndexAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>timestamp);if(firstIndexAfterTimestamp===0)return undefined;return sortedEvents[firstIndexAfterTimestamp-1];}
-static findLastEventStartingBeforeTimestamp(sortedEvents,timestamp){const firstIndexAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>=timestamp);if(firstIndexAfterTimestamp===0)return undefined;return sortedEvents[firstIndexAfterTimestamp-1];}
-static findNextEventStartingOnOrAfterTimestamp(sortedEvents,timestamp){const firstIndexOnOrAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>=timestamp);if(firstIndexOnOrAfterTimestamp===sortedEvents.length){return undefined;}
-return sortedEvents[firstIndexOnOrAfterTimestamp];}
-static findNextEventStartingAfterTimestamp(sortedEvents,timestamp){const firstIndexOnOrAfterTimestamp=tr.b.findFirstTrueIndexInSortedArray(sortedEvents,e=>e.start>timestamp);if(firstIndexOnOrAfterTimestamp===sortedEvents.length){return undefined;}
-return sortedEvents[firstIndexOnOrAfterTimestamp];}
-static findToplevelSchedulerTasks(mainThread){const tasks=[];for(const task of mainThread.findTopmostSlices(slice=>slice.category==='toplevel'&&SCHEDULER_TOP_LEVEL_TASKS.has(slice.title))){tasks.push(task);}
-return tasks;}}
-return{EventFinderUtils,CHROME_INTERNAL_URLS,SCHEDULER_TOP_LEVEL_TASK_TITLE,};});'use strict';tr.exportTo('tr.e.chrome',function(){const TIME_TO_INTERACTIVE_WINDOW_SIZE_MS=5000;const ACTIVE_REQUEST_TOLERANCE=2;const FCI_MIN_CLUSTER_SEPARATION_MS=1000;const TASK_CLUSTER_HEAVINESS_THRESHOLD_MS=250;const ENDPOINT_TYPES={LONG_TASK_START:'LONG_TASK_START',LONG_TASK_END:'LONG_TASK_END',REQUEST_START:'REQUEST_START',REQUEST_END:'REQUEST_END'};function getEndpoints_(events,startType,endType){const endpoints=[];for(const event of events){endpoints.push({time:event.start,type:startType});endpoints.push({time:event.end,type:endType});}
-return endpoints;}
-function reachedTTIQuiscence_(timestamp,networkQuietWindowStart,mainThreadQuietWindowStart){if(networkQuietWindowStart===undefined||mainThreadQuietWindowStart===undefined){return false;}
-const mainThreadQuietForLongEnough=timestamp-mainThreadQuietWindowStart>=TIME_TO_INTERACTIVE_WINDOW_SIZE_MS;const networkQuietForLongEnough=timestamp-networkQuietWindowStart>=TIME_TO_INTERACTIVE_WINDOW_SIZE_MS;return mainThreadQuietForLongEnough&&networkQuietForLongEnough;}
-function findInteractiveTime(searchBegin,searchEnd,domContentLoadedEnd,longTasksInWindow,networkRequests){const longTaskEndpoints=getEndpoints_(longTasksInWindow,ENDPOINT_TYPES.LONG_TASK_START,ENDPOINT_TYPES.LONG_TASK_END);const networkRequestEndpoints=getEndpoints_(networkRequests,ENDPOINT_TYPES.REQUEST_START,ENDPOINT_TYPES.REQUEST_END);const endpoints=longTaskEndpoints.concat(networkRequestEndpoints);endpoints.sort((a,b)=>a.time-b.time);let networkQuietWindowStart=searchBegin;let mainThreadQuietWindowStart=searchBegin;let interactiveCandidate=undefined;let activeRequests=0;for(const endpoint of endpoints){if(reachedTTIQuiscence_(endpoint.time,networkQuietWindowStart,mainThreadQuietWindowStart)){interactiveCandidate=mainThreadQuietWindowStart;break;}
-switch(endpoint.type){case ENDPOINT_TYPES.LONG_TASK_START:mainThreadQuietWindowStart=undefined;break;case ENDPOINT_TYPES.LONG_TASK_END:mainThreadQuietWindowStart=endpoint.time;break;case ENDPOINT_TYPES.REQUEST_START:activeRequests++;if(activeRequests>ACTIVE_REQUEST_TOLERANCE){networkQuietWindowStart=undefined;}
-break;case ENDPOINT_TYPES.REQUEST_END:activeRequests--;if(activeRequests===ACTIVE_REQUEST_TOLERANCE){networkQuietWindowStart=endpoint.time;}
-break;default:throw new Error('Internal Error: Unhandled endpoint type.');}}
-if(interactiveCandidate===undefined&&reachedTTIQuiscence_(searchEnd,networkQuietWindowStart,mainThreadQuietWindowStart)){interactiveCandidate=mainThreadQuietWindowStart;}
-if(interactiveCandidate===undefined)return undefined;return Math.max(interactiveCandidate,domContentLoadedEnd);}
-function requiredFCIWindowSizeMs(timeSinceSearchBeginMs){const timeCoefficient=1/15*Math.log(2);const timeSinceSearchBeginSeconds=tr.b.convertUnit(timeSinceSearchBeginMs,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);const windowSizeSeconds=4*Math.exp(-timeCoefficient*timeSinceSearchBeginSeconds)+1;return tr.b.convertUnit(windowSizeSeconds,tr.b.UnitPrefixScale.METRIC.NONE,tr.b.UnitPrefixScale.METRIC.MILLI);}
-class TaskCluster{constructor(tasksInClusterSorted){if(tasksInClusterSorted.length===0){throw new Error('Internal Error: TaskCluster must have non zero tasks');}
-for(let i=0;i=FCI_MIN_CLUSTER_SEPARATION_MS){throw new Error('Internal Error: Tasks in a TaskCluster cannot be '+'more than '+FCI_MIN_CLUSTER_SEPARATION_MS+' miliseconds apart');}
-if(durationBetweenTasks<-1e7){throw new Error('Internal Error: List of tasks used to construct '+'TaskCluster must be sorted.');}}
-this._clusterTasks=tasksInClusterSorted;}
-get start(){return this._clusterTasks[0].start;}
-get end(){return this._clusterTasks[this._clusterTasks.length-1].end;}
-isHeavy(){return this.end-this.start>TASK_CLUSTER_HEAVINESS_THRESHOLD_MS;}}
-function findFCITaskClusters(sortedLongTasks){const clusters=[];if(sortedLongTasks.length===0)return clusters;const firstTask=sortedLongTasks[0];const restOfTasks=sortedLongTasks.slice(1);let currentClusterTasks=[firstTask];for(const currTask of restOfTasks){const prevTask=currentClusterTasks[currentClusterTasks.length-1];if(currTask.start-prevTask.endrequiredWindowSize;}
-function findFirstCpuIdleTime(searchBegin,searchEnd,domContentLoadedEnd,longTasksInWindow){const sortedLongTasks=longTasksInWindow.sort((a,b)=>a.start-b.start);const taskClusters=findFCITaskClusters(sortedLongTasks);const heavyTaskClusters=taskClusters.filter(cluster=>cluster.isHeavy());let quietWindowBegin=searchBegin;let fiCandidate=undefined;for(const cluster of heavyTaskClusters){if(reachedFCIQuiescence_(cluster.start,quietWindowBegin,searchBegin)){fiCandidate=quietWindowBegin;break;}
-quietWindowBegin=cluster.end;}
-if(fiCandidate===undefined){if(reachedFCIQuiescence_(searchEnd,quietWindowBegin,searchBegin)){fiCandidate=quietWindowBegin;}else{return undefined;}}
-return Math.max(fiCandidate,domContentLoadedEnd);}
-return{findInteractiveTime,findFirstCpuIdleTime,requiredFCIWindowSizeMs,findFCITaskClusters,};});'use strict';tr.exportTo('tr.model.um',function(){const LOAD_SUBTYPE_NAMES={SUCCESSFUL:'Successful',FAILED:'Failed',};const DOES_LOAD_SUBTYPE_NAME_EXIST={};for(const key in LOAD_SUBTYPE_NAMES){DOES_LOAD_SUBTYPE_NAME_EXIST[LOAD_SUBTYPE_NAMES[key]]=true;}
-function LoadExpectation(parentModel,initiatorTitle,start,duration,renderer,navigationStart,fmpEvent,fcpEvent,dclEndEvent,cpuIdleTime,timeToInteractive,totalBlockingTime,url,frameId){if(!DOES_LOAD_SUBTYPE_NAME_EXIST[initiatorTitle]){throw new Error(initiatorTitle+' is not in LOAD_SUBTYPE_NAMES');}
-tr.model.um.UserExpectation.call(this,parentModel,initiatorTitle,start,duration);this.renderProcess=renderer;this.renderMainThread=undefined;this.routingId=undefined;this.parentRoutingId=undefined;this.loadFinishedEvent=undefined;this.navigationStart=navigationStart;this.fmpEvent=fmpEvent;this.fcpEvent=fcpEvent;this.domContentLoadedEndEvent=dclEndEvent;this.firstCpuIdleTime=cpuIdleTime;this.timeToInteractive=timeToInteractive;this.totalBlockingTime=totalBlockingTime;this.url=url;this.frameId=frameId;}
-LoadExpectation.prototype={__proto__:tr.model.um.UserExpectation.prototype,constructor:LoadExpectation};tr.model.um.UserExpectation.subTypes.register(LoadExpectation,{stageTitle:'Load',colorId:tr.b.ColorScheme.getColorIdForReservedName('rail_load')});return{LOAD_SUBTYPE_NAMES,LoadExpectation,};});'use strict';tr.exportTo('tr.importer',function(){const LONG_TASK_THRESHOLD_MS=50;const IGNORE_URLS=['','about:blank',];function findFrameLoaderSnapshotAt(rendererHelper,frameIdRef,ts){const objects=rendererHelper.process.objects;const frameLoaderInstances=objects.instancesByTypeName_.FrameLoader;if(frameLoaderInstances===undefined)return undefined;let snapshot;for(const instance of frameLoaderInstances){if(!instance.isAliveAt(ts))continue;const maybeSnapshot=instance.getSnapshotAt(ts);if(frameIdRef!==maybeSnapshot.args.frame.id_ref)continue;snapshot=maybeSnapshot;}
-return snapshot;}
-function findFirstMeaningfulPaintCandidates(rendererHelper){const candidatesForFrameId={};for(const ev of rendererHelper.process.getDescendantEvents()){if(!tr.e.chrome.EventFinderUtils.hasCategoryAndName(ev,'loading','firstMeaningfulPaintCandidate')){continue;}
-if(rendererHelper.isTelemetryInternalEvent(ev))continue;const frameIdRef=ev.args.frame;if(frameIdRef===undefined)continue;let list=candidatesForFrameId[frameIdRef];if(list===undefined){candidatesForFrameId[frameIdRef]=list=[];}
-list.push(ev);}
-return candidatesForFrameId;}
-function computeTotalBlockingTime_(fcpTime,interactiveTime,topLevelTasks){let sumBlockingTime=0;for(const event of topLevelTasks){if(event.durationinteractiveTime)continue;const clippedStart=Math.max(event.start,fcpTime);const clippedEnd=Math.min(event.end,interactiveTime);const clippedDuration=clippedEnd-clippedStart;if(clippedDurationtask.duration>=LONG_TASK_THRESHOLD_MS);const longTasksInWindow=longTasks.filter(task=>task.range.intersectsExplicitRangeInclusive(firstContentfulPaintTime,searchWindowEnd));const resourceLoadEvents=tr.e.chrome.EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,tr.b.math.Range.fromExplicitRange(navigationStart.start,searchWindowEnd));const firstCpuIdleTime=tr.e.chrome.findFirstCpuIdleTime(firstContentfulPaintTime,searchWindowEnd,domContentLoadedEndEvent.start,longTasksInWindow);const interactiveTime=resourceLoadEvents.length>0?tr.e.chrome.findInteractiveTime(firstContentfulPaintTime,searchWindowEnd,domContentLoadedEndEvent.start,longTasksInWindow,resourceLoadEvents):undefined;const totalBlockingTime=interactiveTime?computeTotalBlockingTime_(fcpEvent.start,interactiveTime,longTasks):undefined;return{interactiveTime,firstCpuIdleTime,totalBlockingTime};}
-function constructLoadingExpectation_(rendererHelper,frameToDomContentLoadedEndEvents,frameToFcpEvents,navigationStart,fmpEvent,searchWindowEnd,url,frameId){const searchRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,searchWindowEnd);const dclTimesForFrame=frameToDomContentLoadedEndEvents.get(frameId)||[];const dclTimesInWindow=searchRange.filterArray(dclTimesForFrame,event=>event.start);let domContentLoadedEndEvent=undefined;if(dclTimesInWindow.length!==0){domContentLoadedEndEvent=dclTimesInWindow[dclTimesInWindow.length-1];}
-const fcpForFrame=frameToFcpEvents.get(frameId)||[];const fcpInWindow=searchRange.filterArray(fcpForFrame,event=>event.start);const fcpEvent=fcpInWindow[0];const{interactiveTime,firstCpuIdleTime,totalBlockingTime}=computeInteractivityMetricSample_(rendererHelper,navigationStart,fcpEvent,domContentLoadedEndEvent,searchWindowEnd);const duration=(interactiveTime===undefined)?searchWindowEnd-navigationStart.start:interactiveTime-navigationStart.start;return new tr.model.um.LoadExpectation(rendererHelper.modelHelper.model,tr.model.um.LOAD_SUBTYPE_NAMES.SUCCESSFUL,navigationStart.start,duration,rendererHelper.process,navigationStart,fmpEvent,fcpEvent,domContentLoadedEndEvent,firstCpuIdleTime,interactiveTime,totalBlockingTime,url,frameId);}
-function collectLoadExpectationsForRenderer(rendererHelper){const samples=[];const frameToNavStartEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'navigationStart','blink.user_timing');const frameToDomContentLoadedEndEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'domContentLoadedEventEnd','blink.user_timing');const frameToFcpEvents=tr.e.chrome.EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'firstContentfulPaint','loading');function addSamples(frameIdRef,navigationStart,fmpCandidateEvents,searchWindowEnd,url){let fmpMarkerEvent=tr.e.chrome.EventFinderUtils.findLastEventStartingOnOrBeforeTimestamp(fmpCandidateEvents,searchWindowEnd);if(fmpMarkerEvent!==undefined&&navigationStart.start>fmpMarkerEvent.start){fmpMarkerEvent=undefined;}
-samples.push(constructLoadingExpectation_(rendererHelper,frameToDomContentLoadedEndEvents,frameToFcpEvents,navigationStart,fmpMarkerEvent,searchWindowEnd,url,frameIdRef));}
-const candidatesForFrameId=findFirstMeaningfulPaintCandidates(rendererHelper);for(const[frameIdRef,navStartEvents]of frameToNavStartEvents){const fmpCandidateEvents=candidatesForFrameId[frameIdRef]||[];let prevNavigation={navigationEvent:undefined,url:undefined};for(let index=0;indexx-y);const segments=[];for(let i=0;i=expectation.start)&&(event.startthat.x;ok&=this.ythat.y;return ok;},equalTo(rect){return rect&&(this.x===rect.x)&&(this.y===rect.y)&&(this.width===rect.width)&&(this.height===rect.height);}};return{Rect,};});'use strict';tr.exportTo('tr.ui.b',function(){function instantiateTemplate(selector,doc){doc=doc||document;const el=Polymer.dom(doc).querySelector(selector);if(!el){throw new Error('Element not found: '+selector);}
-return doc.importNode(el.content,true);}
-function windowRectForElement(element){const position=[element.offsetLeft,element.offsetTop];const size=[element.offsetWidth,element.offsetHeight];let node=element.offsetParent;while(node){position[0]+=node.offsetLeft;position[1]+=node.offsetTop;node=node.offsetParent;}
-return tr.b.math.Rect.fromXYWH(position[0],position[1],size[0],size[1]);}
-function scrollIntoViewIfNeeded(el){const pr=el.parentElement.getBoundingClientRect();const cr=el.getBoundingClientRect();if(cr.toppr.bottom){el.scrollIntoView(false);}}
-function extractUrlString(url){let extracted=url.replace(/url\((.*)\)/,'$1');extracted=extracted.replace(/\"(.*)\"/,'$1');return extracted;}
-function toThreeDigitLocaleString(value){return value.toLocaleString(undefined,{minimumFractionDigits:3,maximumFractionDigits:3});}
-function isUnknownElementName(name){return document.createElement(name)instanceof HTMLUnknownElement;}
-return{isUnknownElementName,toThreeDigitLocaleString,instantiateTemplate,windowRectForElement,scrollIntoViewIfNeeded,extractUrlString,};});'use strict';tr.exportTo('tr.ui.b',function(){if(tr.isHeadless)return{};const THIS_DOC=document._currentScript.ownerDocument;const Overlay=tr.ui.b.define('overlay');Overlay.prototype={__proto__:HTMLDivElement.prototype,decorate(){Polymer.dom(this).classList.add('overlay');this.parentEl_=this.ownerDocument.body;this.visible_=false;this.userCanClose_=true;this.onKeyDown_=this.onKeyDown_.bind(this);this.onClick_=this.onClick_.bind(this);this.onFocusIn_=this.onFocusIn_.bind(this);this.onDocumentClick_=this.onDocumentClick_.bind(this);this.onClose_=this.onClose_.bind(this);this.addEventListener('visible-change',tr.ui.b.Overlay.prototype.onVisibleChange_.bind(this),true);const createShadowRoot=this.createShadowRoot||this.webkitCreateShadowRoot;this.shadow_=createShadowRoot.call(this);Polymer.dom(this.shadow_).appendChild(tr.ui.b.instantiateTemplate('#overlay-template',THIS_DOC));this.closeBtn_=Polymer.dom(this.shadow_).querySelector('close-button');this.closeBtn_.addEventListener('click',this.onClose_);Polymer.dom(this.shadow_).querySelector('overlay-frame').addEventListener('click',this.onClick_);this.observer_=new MutationObserver(this.didButtonBarMutate_.bind(this));this.observer_.observe(Polymer.dom(this.shadow_).querySelector('button-bar'),{childList:true});Object.defineProperty(this,'title',{get(){return Polymer.dom(Polymer.dom(this.shadow_).querySelector('title')).textContent;},set(title){Polymer.dom(Polymer.dom(this.shadow_).querySelector('title')).textContent=title;}});},set userCanClose(userCanClose){this.userCanClose_=userCanClose;this.closeBtn_.style.display=userCanClose?'block':'none';},get buttons(){return Polymer.dom(this.shadow_).querySelector('button-bar');},get visible(){return this.visible_;},set visible(newValue){if(this.visible_===newValue)return;this.visible_=newValue;const e=new tr.b.Event('visible-change');this.dispatchEvent(e);},onVisibleChange_(){this.visible_?this.show_():this.hide_();},show_(){Polymer.dom(this.parentEl_).appendChild(this);if(this.userCanClose_){this.addEventListener('keydown',this.onKeyDown_.bind(this));this.addEventListener('click',this.onDocumentClick_.bind(this));this.closeBtn_.addEventListener('click',this.onClose_);}
-this.parentEl_.addEventListener('focusin',this.onFocusIn_);this.tabIndex=0;const elList=Polymer.dom(this).querySelectorAll('button, input, list, select, a');if(elList.length>0){if(elList[0]===this.closeBtn_){if(elList.length>1)return elList[1].focus();}else{return elList[0].focus();}}
-this.focus();},hide_(){Polymer.dom(this.parentEl_).removeChild(this);this.parentEl_.removeEventListener('focusin',this.onFocusIn_);if(this.closeBtn_){this.closeBtn_.removeEventListener('click',this.onClose_);}
-document.removeEventListener('keydown',this.onKeyDown_);document.removeEventListener('click',this.onDocumentClick_);},onClose_(e){this.visible=false;if((e.type!=='keydown')||(e.type==='keydown'&&e.keyCode===27)){e.stopPropagation();}
-e.preventDefault();tr.b.dispatchSimpleEvent(this,'closeclick');},onFocusIn_(e){let node=e.target;while(node){if(node===this){return;}
-node=node.parentNode;}
-tr.b.timeout(0).then(()=>this.focus());e.preventDefault();e.stopPropagation();},didButtonBarMutate_(e){const hasButtons=this.buttons.children.length>0;if(hasButtons){Polymer.dom(this.shadow_).querySelector('button-bar').style.display=undefined;}else{Polymer.dom(this.shadow_).querySelector('button-bar').style.display='none';}},onKeyDown_(e){if(e.keyCode===9&&e.shiftKey&&e.target===this){e.preventDefault();return;}
-if(e.keyCode!==27)return;this.onClose_(e);},onClick_(e){e.stopPropagation();},onDocumentClick_(e){if(!this.userCanClose_)return;this.onClose_(e);}};Overlay.showError=function(msg,opt_err){const o=new Overlay();o.title='Error';Polymer.dom(o).textContent=msg;if(opt_err){const e=tr.b.normalizeException(opt_err);const stackDiv=document.createElement('pre');Polymer.dom(stackDiv).textContent=e.stack;stackDiv.style.paddingLeft='8px';stackDiv.style.margin=0;Polymer.dom(o).appendChild(stackDiv);}
-const b=document.createElement('button');Polymer.dom(b).textContent='OK';b.addEventListener('click',function(){o.visible=false;});Polymer.dom(o.buttons).appendChild(b);o.visible=true;return o;};return{Overlay,};});'use strict';tr.exportTo('tr.importer',function(){const Timing=tr.b.Timing;function ImportOptions(){this.shiftWorldToZero=true;this.pruneEmptyContainers=true;this.showImportWarnings=true;this.trackDetailedModelStats=false;this.customizeModelCallback=undefined;const auditorTypes=tr.c.Auditor.getAllRegisteredTypeInfos();this.auditorConstructors=auditorTypes.map(function(typeInfo){return typeInfo.constructor;});}
-function Import(model,opt_options){if(model===undefined){throw new Error('Must provide model to import into.');}
-this.importing_=false;this.importOptions_=opt_options||new ImportOptions();this.model_=model;this.model_.importOptions=this.importOptions_;}
-Import.prototype={__proto__:Object.prototype,importTraces(traces){const progressMeter={update(msg){}};tr.b.Task.RunSynchronously(this.createImportTracesTask(progressMeter,traces));},importTracesWithProgressDialog(traces){if(tr.isHeadless){throw new Error('Cannot use this method in headless mode.');}
-const overlay=tr.ui.b.Overlay();overlay.title='Importing...';overlay.userCanClose=false;overlay.msgEl=document.createElement('div');Polymer.dom(overlay).appendChild(overlay.msgEl);overlay.msgEl.style.margin='20px';overlay.update=function(msg){Polymer.dom(this.msgEl).textContent=msg;};overlay.visible=true;const promise=tr.b.Task.RunWhenIdle(this.createImportTracesTask(overlay,traces));promise.then(function(){overlay.visible=false;},function(err){overlay.visible=false;});return promise;},createImportTracesTask(progressMeter,traces){const importStartTimeMs=tr.b.Timing.getCurrentTimeMs();if(this.importing_){throw new Error('Already importing.');}
-this.importing_=true;const importTask=new tr.b.Task(function prepareImport(){progressMeter.update('I will now import your traces for you...');},this);let lastTask=importTask;const importers=[];function addImportStage(title,callback){lastTask=lastTask.after(()=>progressMeter.update(title));lastTask.updatesUi=true;lastTask=lastTask.after(callback);}
-function addStageForEachImporter(title,callback){lastTask=lastTask.after((task)=>{importers.forEach((importer,index)=>{const uiSubTask=task.subTask(()=>{progressMeter.update(`${title} ${index + 1} of ${importers.length}`);});uiSubTask.updatesUi=true;task.subTask(()=>callback(importer));});});}
-addImportStage('Creating importers...',()=>{traces=traces.slice(0);progressMeter.update('Creating importers...');for(let i=0;iimporter.importClockSyncMarkers());addStageForEachImporter('Importing',importer=>importer.importEvents());if(this.importOptions_.customizeModelCallback){addImportStage('Customizing',()=>{this.importOptions_.customizeModelCallback(this.model_);});}
-addStageForEachImporter('Importing sample data',importer=>importer.importSampleData());addImportStage('Autoclosing open slices...',()=>{this.model_.autoCloseOpenSlices();this.model_.createSubSlices();});addStageForEachImporter('Finalizing import',importer=>importer.finalizeImport());addImportStage('Initializing objects (step 1/2)...',()=>this.model_.preInitializeObjects());if(this.importOptions_.pruneEmptyContainers){addImportStage('Pruning empty containers...',()=>this.model_.pruneEmptyContainers());}
-addImportStage('Merging kernel with userland...',()=>this.model_.mergeKernelWithUserland());let auditors=[];addImportStage('Adding arbitrary data to model...',()=>{auditors=this.importOptions_.auditorConstructors.map(auditorConstructor=>new auditorConstructor(this.model_));auditors.forEach((auditor)=>{auditor.runAnnotate();auditor.installUserFriendlyCategoryDriverIfNeeded();});});addImportStage('Computing final world bounds...',()=>{this.model_.computeWorldBounds(this.importOptions_.shiftWorldToZero);});addImportStage('Building flow event map...',()=>this.model_.buildFlowEventIntervalTree());addImportStage('Joining object refs...',()=>this.model_.joinRefs());addImportStage('Cleaning up undeleted objects...',()=>this.model_.cleanupUndeletedObjects());addImportStage('Sorting memory dumps...',()=>this.model_.sortMemoryDumps());addImportStage('Finalizing memory dump graphs...',()=>this.model_.finalizeMemoryGraphs());addImportStage('Initializing objects (step 2/2)...',()=>this.model_.initializeObjects());addImportStage('Building event indices...',()=>this.model_.buildEventIndices());addImportStage('Building UserModel...',()=>{const userModelBuilder=new tr.importer.UserModelBuilder(this.model_);userModelBuilder.buildUserModel();});addImportStage('Sorting user expectations...',()=>this.model_.userModel.sortExpectations());addImportStage('Running auditors...',()=>{auditors.forEach(auditor=>auditor.runAudit());});addImportStage('Updating alerts...',()=>this.model_.sortAlerts());addImportStage('Update bounds...',()=>this.model_.updateBounds());addImportStage('Looking for warnings...',()=>{if(!this.model_.isTimeHighResolution){this.model_.importWarning({type:'low_resolution_timer',message:'Trace time is low resolution, trace may be unusable.',showToUser:true});}});lastTask.after(()=>{this.importing_=false;this.model_.stats.traceImportDurationMs=tr.b.Timing.getCurrentTimeMs()-importStartTimeMs;});return importTask;},createImporter_(eventData){const importerConstructor=tr.importer.Importer.findImporterFor(eventData);if(!importerConstructor){throw new Error('Couldn\'t create an importer for the provided '+'eventData.');}
-return new importerConstructor(this.model_,eventData);},hasEventDataDecoder_(importers){for(let i=0;i1){throw new Error('More than one hotKey is currently unsupported');}
-const hotKey=matchedHotKeys[0];let prevented=0;prevented|=hotKey.call(e);return!prevented&&e.defaultPrevented;}});'use strict';tr.exportTo('tr.b',function(){function getHotkeyControllerForElement(refElement){let curElement=refElement;while(curElement){if(curElement.tagName==='tv-ui-b-hotkey-controller'){return curElement;}
-if(curElement.__hotkeyController){return curElement.__hotkeyController;}
-if(curElement.parentElement){curElement=curElement.parentElement;continue;}
-curElement=findHost(curElement);}
-return undefined;}
-function findHost(initialNode){let node=initialNode;while(Polymer.dom(node).parentNode){node=Polymer.dom(node).parentNode;}
-return node.host;}
-return{getHotkeyControllerForElement,};});'use strict';tr.exportTo('tr.b',function(){function Settings(){return Settings;}
-if(tr.b.unittest&&tr.b.unittest.TestRunner){tr.b.unittest.TestRunner.addEventListener('tr-unittest-will-run',function(){if(tr.isHeadless){Settings.setAlternativeStorageInstance(new HeadlessStorage());}else{Settings.setAlternativeStorageInstance(global.sessionStorage);global.sessionStorage.clear();}});}
-function SessionSettings(){return SessionSettings;}
-function AddStaticStorageFunctionsToClass_(inputClass,storage){inputClass.storage_=storage;inputClass.get=function(key,opt_default,opt_namespace){key=inputClass.namespace_(key,opt_namespace);const rawVal=inputClass.storage_.getItem(key);if(rawVal===null||rawVal===undefined){return opt_default;}
-try{return JSON.parse(rawVal).value;}catch(e){inputClass.storage_.removeItem(key);return opt_default;}};inputClass.set=function(key,value,opt_namespace){if(value===undefined){throw new Error('Settings.set: value must not be undefined');}
-const v=JSON.stringify({value});inputClass.storage_.setItem(inputClass.namespace_(key,opt_namespace),v);};inputClass.keys=function(opt_namespace){const result=[];opt_namespace=opt_namespace||'';for(let i=0;iclickCallback(event,this));Polymer.dom(this.buttonsEl_).appendChild(button);return button;}});'use strict';Polymer({is:'tr-ui-b-info-bar-group',ready(){this.messages_=[];},get messageCount(){return this.messages_.length;},clearMessages(){this.messages_=[];this.updateContents_();},addMessage(text,opt_buttons){opt_buttons=opt_buttons||[];for(let i=0;i{pendingRequests.push(this.connection_.req('IO.read',{handle:this.streamHandle_,size:READ_REQUEST_BYTES,}));};const MAX_CONCURRENT_REQUESTS=2;for(let i=0;i1){chunks.push(',');}
-chunks.push(m[1]);}
-class InspectorTracingControllerClient extends
-tr.ui.e.about_tracing.TracingControllerClient{constructor(connection){super();this.recording_=false;this.bufferUsage_=0;this.conn_=connection;this.currentTraceTextChunks_=undefined;}
-beginMonitoring(monitoringOptions){throw new Error('Not implemented');}
-endMonitoring(){throw new Error('Not implemented');}
-captureMonitoring(){throw new Error('Not implemented');}
-getMonitoringStatus(){return createResolvedPromise({isMonitoring:false,categoryFilter:'',useSystemTracing:false,useContinuousTracing:false,useSampling:false});}
-getCategories(){const res=this.conn_.req('Tracing.getCategories',{});return res.then(function(result){return result.categories;},function(err){return[];});}
-beginRecording(recordingOptions){if(this.recording_){throw new Error('Already recording');}
-this.recording_='starting';function RewriteRecordMode(recordMode){if(recordMode==='record-until-full'){return'recordUntilFull';}
-if(recordMode==='record-continuously'){return'recordContinuously';}
-if(recordMode==='record-as-much-as-possible'){return'recordAsMuchAsPossible';}
-return'unsupported record mode';}
-const traceConfigStr={includedCategories:recordingOptions.included_categories,excludedCategories:recordingOptions.excluded_categories,recordMode:RewriteRecordMode(recordingOptions.record_mode),enableSystrace:recordingOptions.enable_systrace};if('memory_dump_config'in recordingOptions){traceConfigStr.memoryDumpConfig=recordingOptions.memory_dump_config;}
-let res=this.conn_.req('Tracing.start',{traceConfig:traceConfigStr,transferMode:'ReturnAsStream',streamCompression:'gzip',bufferUsageReportingInterval:1000});res=res.then(function ok(){this.conn_.setNotificationListener('Tracing.bufferUsage',this.onBufferUsageUpdateFromInspector_.bind(this));this.recording_=true;}.bind(this),function error(){this.recording_=false;}.bind(this));return res;}
-onBufferUsageUpdateFromInspector_(params){this.bufferUsage_=params.value||params.percentFull;}
-beginGetBufferPercentFull(){return tr.b.timeout(100).then(()=>this.bufferUsage_);}
-onDataCollected_(messageString){appendTraceChunksTo(this.currentTraceTextChunks_,messageString);}
-async endRecording(){if(this.recording_===false){return createResolvedPromise();}
-if(this.recording_!==true){throw new Error('Cannot end');}
-this.currentTraceTextChunks_=['['];const clearListeners=()=>{this.conn_.setNotificationListener('Tracing.bufferUsage',undefined);this.conn_.setNotificationListener('Tracing.tracingComplete',undefined);this.conn_.setNotificationListener('Tracing.dataCollected',undefined);};try{this.conn_.setNotificationListener('Tracing.dataCollected',this.onDataCollected_.bind(this));const tracingComplete=new Promise((resolve,reject)=>{this.conn_.setNotificationListener('Tracing.tracingComplete',resolve);});this.recording_='stopping';await this.conn_.req('Tracing.end',{});const params=await tracingComplete;this.traceName_='trace.json';if('stream'in params){const stream=new tr.ui.e.about_tracing.DevtoolsStream(this.conn_,params.stream);const streamCompression=params.streamCompression||'none';if(streamCompression==='gzip'){this.traceName_='trace.json.gz';}
-return await stream.readAndClose();}
-this.currentTraceTextChunks_.push(']');const traceText=this.currentTraceTextChunks_.join('');this.currentTraceTextChunks_=undefined;return traceText;}finally{clearListeners();this.recording_=false;}}
-defaultTraceName(){return this.traceName_;}}
-return{InspectorTracingControllerClient,appendTraceChunksTo,};});'use strict';tr.exportTo('tr.c',function(){function makeCaseInsensitiveRegex(pattern){pattern=pattern.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');return new RegExp(pattern,'i');}
-function Filter(){}
-Filter.prototype={__proto__:Object.prototype,matchCounter(counter){return true;},matchCpu(cpu){return true;},matchProcess(process){return true;},matchSlice(slice){return true;},matchThread(thread){return true;}};function TitleOrCategoryFilter(text){Filter.call(this);this.regex_=makeCaseInsensitiveRegex(text);if(!text.length){throw new Error('Filter text is empty.');}}
-TitleOrCategoryFilter.prototype={__proto__:Filter.prototype,matchSlice(slice){if(slice.title===undefined&&slice.category===undefined){return false;}
-return this.regex_.test(slice.title)||(!!slice.category&&this.regex_.test(slice.category));}};function ExactTitleFilter(text){Filter.call(this);this.text_=text;if(!text.length){throw new Error('Filter text is empty.');}}
-ExactTitleFilter.prototype={__proto__:Filter.prototype,matchSlice(slice){return slice.title===this.text_;}};function FullTextFilter(text){Filter.call(this);this.regex_=makeCaseInsensitiveRegex(text);this.titleOrCategoryFilter_=new TitleOrCategoryFilter(text);}
-FullTextFilter.prototype={__proto__:Filter.prototype,matchObject_(obj){for(const key in obj){if(!obj.hasOwnProperty(key))continue;if(this.regex_.test(key))return true;if(this.regex_.test(obj[key]))return true;}
-return false;},matchSlice(slice){if(this.titleOrCategoryFilter_.matchSlice(slice))return true;return this.matchObject_(slice.args);}};return{Filter,TitleOrCategoryFilter,ExactTitleFilter,FullTextFilter,};});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){const THIS_DOC=document.currentScript.ownerDocument;const RecordSelectionDialog=tr.ui.b.define('div');const DEFAULT_PRESETS=[{title:'Web developer',categoryFilter:['blink','cc','netlog','renderer.scheduler','sequence_manager','toplevel','v8']},{title:'Input latency',categoryFilter:['benchmark','input','evdev','renderer.scheduler','sequence_manager','toplevel']},{title:'Rendering',categoryFilter:['benchmark','blink','cc','gpu','toplevel','viz']},{title:'UI Rendering',categoryFilter:['benchmark','cc','gpu','input','toplevel','ui','views','viz']},{title:'Javascript and rendering',categoryFilter:['blink','cc','gpu','renderer.scheduler','sequence_manager','v8','toplevel','viz']},{title:'Frame Viewer',categoryFilter:['blink','cc','gpu','renderer.scheduler','sequence_manager','v8','toplevel','disabled-by-default-blink.invalidation','disabled-by-default-cc.debug','disabled-by-default-cc.debug.picture','disabled-by-default-cc.debug.display_items']},{title:'Chrome developer (overall)',categoryFilter:['benchmark','toplevel','ipc','base','ui','v8','renderer','blink','blink_gc','mojom','latency','latencyInfo','renderer_host','cc','memory','dwrite','fonts','browser','ServiceWorker','disabled-by-default-v8.gc','disabled-by-default-file','disabled-by-default-blink_gc','disabled-by-default-lifecycles','disabled-by-default-renderer.scheduler','disabled-by-default-system_stats','disabled-by-default-cpu_profiler','passwords','sql','disabled-by-default-user_action_samples','startup','disk_cache']},{title:'Chrome developer (navigation)',categoryFilter:['benchmark','toplevel','ipc','base','browser','navigation','omnibox','ui','shutdown','safe_browsing','Java','EarlyJava','loading','startup','mojom','renderer_host','disabled-by-default-system_stats','disabled-by-default-cpu_profiler','dwrite','fonts','ServiceWorker','passwords','disabled-by-default-file','sql','disabled-by-default-user_action_samples','disk_cache']},{title:'Manually select settings',categoryFilter:[]}];const RECORDING_MODES=[{'label':'Record until full','value':'record-until-full'},{'label':'Record continuously','value':'record-continuously'},{'label':'Record as much as possible','value':'record-as-much-as-possible'}];const DEFAULT_RECORD_MODE='record-until-full';const DEFAULT_CONTINUOUS_TRACING=true;const DEFAULT_SYSTEM_TRACING=true;const DEFAULT_SAMPLING_TRACING=false;RecordSelectionDialog.prototype={__proto__:tr.ui.b.Overlay.prototype,decorate(){tr.ui.b.Overlay.prototype.decorate.call(this);this.title='Record a new trace...';Polymer.dom(this).classList.add('record-dialog-overlay');const node=tr.ui.b.instantiateTemplate('#record-selection-dialog-template',THIS_DOC);Polymer.dom(this).appendChild(node);this.recordButtonEl_=document.createElement('button');Polymer.dom(this.recordButtonEl_).textContent='Record';this.recordButtonEl_.addEventListener('click',this.onRecordButtonClicked_.bind(this));this.recordButtonEl_.style.fontSize='110%';Polymer.dom(this.buttons).appendChild(this.recordButtonEl_);this.categoriesView_=Polymer.dom(this).querySelector('.categories-column-view');this.presetsEl_=Polymer.dom(this).querySelector('.category-presets');Polymer.dom(this.presetsEl_).appendChild(tr.ui.b.createOptionGroup(this,'currentlyChosenPreset','about_tracing.record_selection_dialog_preset',DEFAULT_PRESETS[0].categoryFilter,DEFAULT_PRESETS.map(function(p){return{label:p.title,value:p.categoryFilter};})));this.tracingRecordModeSltr_=tr.ui.b.createSelector(this,'tracingRecordMode','recordSelectionDialog.tracingRecordMode',DEFAULT_RECORD_MODE,RECORDING_MODES);this.systemTracingBn_=tr.ui.b.createCheckBox(undefined,undefined,'recordSelectionDialog.useSystemTracing',DEFAULT_SYSTEM_TRACING,'System tracing');this.samplingTracingBn_=tr.ui.b.createCheckBox(undefined,undefined,'recordSelectionDialog.useSampling',DEFAULT_SAMPLING_TRACING,'State sampling');this.tracingModesContainerEl_=Polymer.dom(this).querySelector('.tracing-modes');Polymer.dom(this.tracingModesContainerEl_).appendChild(this.tracingRecordModeSltr_);Polymer.dom(this.tracingModesContainerEl_).appendChild(this.systemTracingBn_);Polymer.dom(this.tracingModesContainerEl_).appendChild(this.samplingTracingBn_);this.enabledCategoriesContainerEl_=Polymer.dom(this).querySelector('.default-enabled-categories .categories');this.disabledCategoriesContainerEl_=Polymer.dom(this).querySelector('.default-disabled-categories .categories');this.createGroupSelectButtons_(Polymer.dom(this).querySelector('.default-enabled-categories'));this.createGroupSelectButtons_(Polymer.dom(this).querySelector('.default-disabled-categories'));this.createDefaultDisabledWarningDialog_(Polymer.dom(this).querySelector('.warning-default-disabled-categories'));this.editCategoriesOpened_=false;this.infoBarGroup_=Polymer.dom(this).querySelector('tr-ui-b-info-bar-group');this.addEventListener('visible-change',this.onVisibleChange_.bind(this));},set supportsSystemTracing(s){if(s){this.systemTracingBn_.style.display=undefined;}else{this.systemTracingBn_.style.display='none';this.useSystemTracing=false;}},get tracingRecordMode(){return this.tracingRecordModeSltr_.selectedValue;},set tracingRecordMode(value){this.tracingRecordMode_=value;},get useSystemTracing(){return this.systemTracingBn_.checked;},set useSystemTracing(value){this.systemTracingBn_.checked=!!value;},get useSampling(){return this.samplingTracingBn_.checked;},set useSampling(value){this.samplingTracingBn_.checked=!!value;},set categories(c){if(!(c instanceof Array)){throw new Error('categories must be an array');}
-this.categories_=c;for(let i=0;i0){this.categories_=this.categories_.concat(split);}}},set settings_key(k){this.settings_key_=k;},set settings(s){throw new Error('Dont use this!');},usingPreset_(){return this.currentlyChosenPreset_.length>0;},get currentlyChosenPreset(){return this.currentlyChosenPreset_;},set currentlyChosenPreset(preset){if(!(preset instanceof Array)){throw new Error('RecordSelectionDialog.currentlyChosenPreset:'+' preset must be an array.');}
-this.currentlyChosenPreset_=preset;if(this.usingPreset_()){this.changeEditCategoriesState_(false);}else{this.updateCategoryColumnView_(true);this.changeEditCategoriesState_(true);}
-this.updateManualSelectionView_();this.updatePresetDescription_();},updateManualSelectionView_(){const classList=Polymer.dom(this.categoriesView_).classList;if(!this.usingPreset_()){classList.remove('categories-column-view-hidden');}else{if(this.editCategoriesOpened_){classList.remove('categories-column-view-hidden');}else{classList.add('categories-column-view-hidden');}}},updateCategoryColumnView_(shouldReadFromSettings){const categorySet=Polymer.dom(this).querySelectorAll('.categories');for(let i=0;i=0){if(disabledByDefault){includedCategories.push(category);}}else{if(!disabledByDefault){excludedCategories.push(category);}}}
-return{included:includedCategories,excluded:excludedCategories};}
-excludedCategories=this.unselectedCategories_();includedCategories=this.enabledDisabledByDefaultCategories_();return{included:includedCategories,excluded:excludedCategories};},clickRecordButton(){this.recordButtonEl_.click();},onRecordButtonClicked_(){this.visible=false;tr.b.dispatchSimpleEvent(this,'recordclick');return false;},collectInputs_(inputs,isChecked){const inputsLength=inputs.length;const categories=[];for(let i=0;i0){this.disabledCategoriesContainerEl_.hidden=false;this.buildInputs_(disabledCategories,false,this.disabledCategoriesContainerEl_);}},updateSetting_(e){const checkbox=e.target;tr.b.Settings.set(checkbox.value,checkbox.checked,this.settings_key_);if(this.usingPreset_()){this.currentlyChosenPreset_=[];const categoryEl=this.querySelector('#category-preset-Manually-select-settings');categoryEl.checked=true;const description=Polymer.dom(this).querySelector('.category-description');description.innerText='';Polymer.dom(description).classList.add('category-description-hidden');}},createGroupSelectButtons_(parent){const flipInputs=function(dir){const inputs=Polymer.dom(parent).querySelectorAll('input');for(let i=0;i{line=line.replace(/^ */,'').split(':');if(line.length<4)return'';return line[line.length-3].split('/');}).filter(x=>x);}
-MetricRegistry.checkFilename=function(metricName,opt_metricPathForTest){if(metricName==='runtimeStatsTotalMetric'||metricName==='v8AndMemoryMetrics'){return;}
-const expectedFilename=camelCaseToHackerString(metricName)+'.html';const stack=getCallStack();let metricPath=opt_metricPathForTest;if(metricPath===undefined){const paths=getPathsFromStack(stack);const METRIC_STACK_INDEX=5;if(paths.length<=METRIC_STACK_INDEX||paths[METRIC_STACK_INDEX].join('/')===paths[0].join('/')){return;}
-metricPath=paths[METRIC_STACK_INDEX].slice(paths[METRIC_STACK_INDEX].length-2);}
-if(!metricPath[1].endsWith('_test.html')&&!metricPath[1].endsWith('_test.html.js')&&metricPath[1]!==expectedFilename&&metricPath[1]!==expectedFilename+'.js'&&metricPath.join('_')!==expectedFilename&&metricPath.join('_')!==expectedFilename+'.js'){throw new Error('Expected '+metricName+' to be in a file named '+
-expectedFilename+'; actual: '+metricPath.join('/')+'; stack: '+stack.replace(/\n/g,'\n  '));}};MetricRegistry.addEventListener('will-register',function(e){const metric=e.typeInfo.constructor;if(!(metric instanceof Function)){throw new Error('Metrics must be functions.');}
-if(!metric.name.endsWith('Metric')&&!metric.name.endsWith('Metrics')){throw new Error('Metric names must end with "Metric" or "Metrics".');}
-if(metric.length<2){throw new Error('Metrics take a HistogramSet and a Model and '+'optionally an options dictionary.');}
-MetricRegistry.checkFilename(metric.name);});return{MetricRegistry,};});'use strict';tr.exportTo('tr.b.math',function(){class RunningStatistics{constructor(){this.mean_=0;this.count_=0;this.max_=-Infinity;this.min_=Infinity;this.sum_=0;this.variance_=0;this.meanlogs_=0;}
-get count(){return this.count_;}
-get geometricMean(){if(this.meanlogs_===undefined)return 0;return Math.exp(this.meanlogs_);}
-get mean(){if(this.count_===0)return undefined;return this.mean_;}
-get max(){return this.max_;}
-get min(){return this.min_;}
-get sum(){return this.sum_;}
-get variance(){if(this.count_===0)return undefined;if(this.count_===1)return 0;return this.variance_/(this.count_-1);}
-get stddev(){if(this.count_===0)return undefined;return Math.sqrt(this.variance);}
-add(x){this.count_++;this.max_=Math.max(this.max_,x);this.min_=Math.min(this.min_,x);this.sum_+=x;if(x<=0){this.meanlogs_=undefined;}else if(this.meanlogs_!==undefined){this.meanlogs_+=(Math.log(Math.abs(x))-this.meanlogs_)/this.count;}
-if(this.count_===1){this.mean_=x;this.variance_=0;}else{const oldMean=this.mean_;const oldVariance=this.variance_;if(oldMean===Infinity||oldMean===-Infinity){this.mean_=this.sum_/this.count_;}else{this.mean_=oldMean+(x-oldMean)/this.count_;}
-this.variance_=oldVariance+(x-oldMean)*(x-this.mean_);}}
-merge(other){const result=new RunningStatistics();result.count_=this.count_+other.count_;result.sum_=this.sum_+other.sum_;result.min_=Math.min(this.min_,other.min_);result.max_=Math.max(this.max_,other.max_);if(result.count===0){result.mean_=0;result.variance_=0;result.meanlogs_=0;}else{result.mean_=result.sum/result.count;const deltaMean=(this.mean||0)-(other.mean||0);result.variance_=this.variance_+other.variance_+
-(this.count*other.count*deltaMean*deltaMean/result.count);if(this.meanlogs_===undefined||other.meanlogs_===undefined){result.meanlogs_=undefined;}else{result.meanlogs_=(this.count*this.meanlogs_+
-other.count*other.meanlogs_)/result.count;}}
-return result;}
-truncate(unit){this.max_=unit.truncate(this.max_);if(this.meanlogs_!==undefined){const formatted=unit.format(this.geometricMean);let lo=1;let hi=16;while(loserializer.getOrAllocateId(k))),...keys.map(k=>this.get(k)),];}
-asDictInto_(d){d.values={};for(const[name,value]of this){d.values[name]=tr.b.numberToJson(value);}
-if(this.colorScheme){d.colorScheme=this.colorScheme;}}
-static fromEntries(entries){const breakdown=new Breakdown();for(const[name,value]of entries){breakdown.set(name,value);}
-return breakdown;}
-static deserialize(data,deserializer){const breakdown=new Breakdown();breakdown.colorScheme=deserializer.getObject(data[0]);const keys=deserializer.getObject(data[1]);for(let i=0;inew tr.v.d.EventRef(e)));}
-return result;}
-get size(){return this.eventSetsByCanonicalUrl_.size;}
-get(canonicalUrl){return this.eventSetsByCanonicalUrl_.get(canonicalUrl);}*[Symbol.iterator](){for(const[canonicalUrl,eventSet]of this.eventSetsByCanonicalUrl_){yield[canonicalUrl,eventSet];}}
-canAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof tr.v.d.RelatedEventSet||otherDiagnostic instanceof tr.v.d.CollectedRelatedEventSet;}
-addEventSetForCanonicalUrl(canonicalUrl,events){let myEventSet=this.eventSetsByCanonicalUrl_.get(canonicalUrl);if(myEventSet===undefined){myEventSet=new Set();this.eventSetsByCanonicalUrl_.set(canonicalUrl,myEventSet);}
-for(const event of events){myEventSet.add(event);}}
-addDiagnostic(otherDiagnostic){if(otherDiagnostic instanceof tr.v.d.CollectedRelatedEventSet){for(const[canonicalUrl,otherEventSet]of otherDiagnostic){this.addEventSetForCanonicalUrl(canonicalUrl,otherEventSet);}
-return;}
-if(!otherDiagnostic.canonicalUrl)return;this.addEventSetForCanonicalUrl(otherDiagnostic.canonicalUrl,otherDiagnostic);}}
-tr.v.d.Diagnostic.register(CollectedRelatedEventSet,{elementName:'tr-v-ui-collected-related-event-set-span'});return{CollectedRelatedEventSet,};});'use strict';tr.exportTo('tr.v.d',function(){class DateRange extends tr.v.d.Diagnostic{constructor(ms){super();this.range_=new tr.b.math.Range();this.range_.addValue(ms);}
-get minTimestamp(){return this.range_.min;}
-get maxTimestamp(){return this.range_.max;}
-get minDate(){return new Date(this.range_.min);}
-get maxDate(){return new Date(this.range_.max);}
-get durationMs(){return this.range_.duration;}
-clone(){const clone=new tr.v.d.DateRange(this.range_.min);clone.addDiagnostic(this);return clone;}
-equals(other){if(!(other instanceof DateRange))return false;return this.range_.equals(other.range_);}
-canAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof DateRange;}
-addDiagnostic(other){this.range_.addRange(other.range_);}
-toString(){const minDate=tr.b.formatDate(this.minDate);if(this.durationMs===0)return minDate;const maxDate=tr.b.formatDate(this.maxDate);return`${minDate} - ${maxDate}`;}
-serialize(serializer){if(this.durationMs===0)return this.range_.min;return[this.range_.min,this.range_.max];}
-asDictInto_(d){d.min=this.range_.min;if(this.durationMs===0)return;d.max=this.range_.max;}
-static deserialize(data,deserializer){if(data instanceof Array){const dr=new DateRange(data[0]);dr.range_.addValue(data[1]);return dr;}
-return new DateRange(data);}
-static fromDict(d){const dateRange=new DateRange(d.min);if(d.max!==undefined)dateRange.range_.addValue(d.max);return dateRange;}}
-tr.v.d.Diagnostic.register(DateRange,{elementName:'tr-v-ui-date-range-span'});return{DateRange,};});'use strict';tr.exportTo('tr.v.d',function(){class DiagnosticRef{constructor(guid){this.guid=guid;}
-asDict(){return this.guid;}
-asDictOrReference(){return this.asDict();}}
-return{DiagnosticRef,};});'use strict';tr.exportTo('tr.v.d',function(){function stableStringify(obj){let replacer;if(!(obj instanceof Array)&&obj!==null){replacer=Object.keys(obj).sort();}
-return JSON.stringify(obj,replacer);}
-class GenericSet extends tr.v.d.Diagnostic{constructor(values){super();if(typeof values[Symbol.iterator]!=='function'){throw new Error('GenericSet must be constructed from an interable.');}
-this.values_=new Set(values);this.has_objects_=false;for(const value of values){if(typeof value==='object'){this.has_objects_=true;}}}
-get size(){return this.values_.size;}
-get length(){return this.values_.size;}*[Symbol.iterator](){for(const value of this.values_){yield value;}}
-has(value){if(typeof value!=='object')return this.values_.has(value);const json=JSON.stringify(value);for(const x of this){if(typeof x!=='object')continue;if(json===JSON.stringify(x))return true;}
-return false;}
-equals(other){if(!(other instanceof GenericSet))return false;if(this.size!==other.size)return false;for(const value of this){if(!other.has(value))return false;}
-return true;}
-get hashKey(){if(this.has_objects_)return undefined;if(this.hash_key_!==undefined){return this.hash_key_;}
-let key='';for(const value of Array.from(this.values_.values()).sort()){key+=value;}
-this.hash_key_=key;return key;}
-serialize(serializer){const i=[...this].map(x=>serializer.getOrAllocateId(x));return(i.length===1)?i[0]:i;}
-asDictInto_(d){d.values=Array.from(this);}
-static deserialize(data,deserializer){if(!(data instanceof Array)){data=[data];}
-return new GenericSet(data.map(datum=>deserializer.getObject(datum)));}
-static fromDict(d){return new GenericSet(d.values);}
-clone(){return new GenericSet(this.values_);}
-canAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof GenericSet;}
-addDiagnostic(otherDiagnostic){const jsons=new Set();for(const value of this){if(typeof value!=='object')continue;jsons.add(stableStringify(value));}
-for(const value of otherDiagnostic){if(typeof value==='object'){if(jsons.has(stableStringify(value))){continue;}
-this.has_objects_=true;}
-this.values_.add(value);}}}
-tr.v.d.Diagnostic.register(GenericSet,{elementName:'tr-v-ui-generic-set-span'});return{GenericSet,};});'use strict';tr.exportTo('tr.v.d',function(){class EventRef{constructor(event){this.stableId=event.stableId;this.title=event.title;this.start=event.start;this.duration=event.duration;this.end=this.start+this.duration;this.guid=tr.b.GUID.allocateSimple();}}
-return{EventRef,};});'use strict';tr.exportTo('tr.v.d',function(){class RelatedEventSet extends tr.v.d.Diagnostic{constructor(opt_events){super();this.eventsByStableId_=new Map();this.canonicalUrl_=undefined;if(opt_events){if(opt_events instanceof tr.model.EventSet||opt_events instanceof Array){for(const event of opt_events){this.add(event);}}else{this.add(opt_events);}}}
-clone(){const clone=new tr.v.d.CollectedRelatedEventSet();clone.addDiagnostic(this);return clone;}
-equals(other){if(this.length!==other.length)return false;for(const event of this){if(!other.has(event))return false;}
-return true;}
-add(event){this.eventsByStableId_.set(event.stableId,event);}
-has(event){return this.eventsByStableId_.has(event.stableId);}
-get length(){return this.eventsByStableId_.size;}*[Symbol.iterator](){for(const event of this.eventsByStableId_.values()){yield event;}}
-get canonicalUrl(){return this.canonicalUrl_;}
-resolve(model,opt_required){for(const[stableId,value]of this.eventsByStableId_){if(!(value instanceof tr.v.d.EventRef))continue;const event=model.getEventByStableId(stableId);if(event instanceof tr.model.Event){this.eventsByStableId_.set(stableId,event);}else if(opt_required){throw new Error('Unable to find Event '+stableId);}}}
-serialize(serializer){return[...this].map(event=>[event.stableId,serializer.getOrAllocateId(event.title),event.start,event.duration,]);}
-asDictInto_(d){d.events=[];for(const event of this){d.events.push({stableId:event.stableId,title:event.title,start:tr.b.Unit.byName.timeStampInMs.truncate(event.start),duration:tr.b.Unit.byName.timeDurationInMs.truncate(event.duration),});}}
-static deserialize(data,deserializer){return new RelatedEventSet(data.map(event=>new tr.v.d.EventRef({stableId:event[0],title:deserializer.getObject(event[1]),start:event[2],duration:event[3],})));}
-static fromDict(d){return new RelatedEventSet(d.events.map(event=>new tr.v.d.EventRef(event)));}}
-tr.v.d.Diagnostic.register(RelatedEventSet,{elementName:'tr-v-ui-related-event-set-span'});return{RelatedEventSet,};});'use strict';tr.exportTo('tr.v.d',function(){class RelatedNameMap extends tr.v.d.Diagnostic{constructor(opt_info){super();this.map_=new Map();if(opt_info){for(const[key,name]of Object.entries(opt_info)){this.set(key,name);}}}
-clone(){const clone=new RelatedNameMap();clone.addDiagnostic(this);return clone;}
-equals(other){if(!(other instanceof RelatedNameMap))return false;const keys1=new Set(this.map_.keys());const keys2=new Set(other.map_.keys());if(!tr.b.setsEqual(keys1,keys2))return false;for(const[key,name]of this){if(name!==other.get(key))return false;}
-return true;}
-canAddDiagnostic(otherDiagnostic){return otherDiagnostic instanceof RelatedNameMap;}
-addDiagnostic(otherDiagnostic){for(const[key,name]of otherDiagnostic){const existing=this.get(key);if(existing===undefined){this.set(key,name);}else if(existing!==name){throw new Error('Histogram names differ: '+`"${existing}" != "${name}"`);}}}
-serialize(serializer){const keys=[...this.map_.keys()];keys.sort();const names=keys.map(k=>serializer.getOrAllocateId(this.get(k)));const keysId=serializer.getOrAllocateId(keys.map(k=>serializer.getOrAllocateId(k)));return[keysId,...names];}
-asDictInto_(d){d.names={};for(const[key,name]of this)d.names[key]=name;}
-set(key,name){this.map_.set(key,name);}
-get(key){return this.map_.get(key);}*[Symbol.iterator](){for(const pair of this.map_)yield pair;}*values(){for(const value of this.map_.values())yield value;}
-static fromEntries(entries){const names=new RelatedNameMap();for(const[key,name]of entries){names.set(key,name);}
-return names;}
-static deserialize(data,deserializer){const names=new RelatedNameMap();const keys=deserializer.getObject(data[0]);for(let i=0;id.asDictOrReference());}
-static deserialize(data,deserializer){return new UnmergeableDiagnosticSet(d.map(i=>deserializer.getDiagnostic(i).diagnostic));}
-serialize(serializer){return this._diagnostics.map(d=>serializer.getOrAllocateDiagnosticId('',d));}
-static fromDict(d){return new UnmergeableDiagnosticSet(d.diagnostics.map(d=>((typeof d==='string')?new tr.v.d.DiagnosticRef(d):tr.v.d.Diagnostic.fromDict(d))));}}
-tr.v.d.Diagnostic.register(UnmergeableDiagnosticSet,{elementName:'tr-v-ui-unmergeable-diagnostic-set-span'});return{UnmergeableDiagnosticSet,};});'use strict';tr.exportTo('tr.v.d',function(){const RESERVED_INFOS={ANGLE_REVISIONS:{name:'angleRevisions',type:tr.v.d.GenericSet},ARCHITECTURES:{name:'architectures',type:tr.v.d.GenericSet},BENCHMARKS:{name:'benchmarks',type:tr.v.d.GenericSet},BENCHMARK_START:{name:'benchmarkStart',type:tr.v.d.DateRange},BENCHMARK_DESCRIPTIONS:{name:'benchmarkDescriptions',type:tr.v.d.GenericSet},BOTS:{name:'bots',type:tr.v.d.GenericSet},BUG_COMPONENTS:{name:'bugComponents',type:tr.v.d.GenericSet},BUILDS:{name:'builds',type:tr.v.d.GenericSet},CATAPULT_REVISIONS:{name:'catapultRevisions',type:tr.v.d.GenericSet},CHROMIUM_COMMIT_POSITIONS:{name:'chromiumCommitPositions',type:tr.v.d.GenericSet},CHROMIUM_REVISIONS:{name:'chromiumRevisions',type:tr.v.d.GenericSet},DESCRIPTION:{name:'description',type:tr.v.d.GenericSet},DEVICE_IDS:{name:'deviceIds',type:tr.v.d.GenericSet},DOCUMENTATION_URLS:{name:'documentationUrls',type:tr.v.d.GenericSet},FUCHSIA_GARNET_REVISIONS:{name:'fuchsiaGarnetRevisions',type:tr.v.d.GenericSet},FUCHSIA_PERIDOT_REVISIONS:{name:'fuchsiaPeridotRevisions',type:tr.v.d.GenericSet},FUCHSIA_TOPAZ_REVISIONS:{name:'fuchsiaTopazRevisions',type:tr.v.d.GenericSet},FUCHSIA_ZIRCON_REVISIONS:{name:'fuchsiaZirconRevisions',type:tr.v.d.GenericSet},GPUS:{name:'gpus',type:tr.v.d.GenericSet},IS_REFERENCE_BUILD:{name:'isReferenceBuild',type:tr.v.d.GenericSet},LABELS:{name:'labels',type:tr.v.d.GenericSet},LOG_URLS:{name:'logUrls',type:tr.v.d.GenericSet},MASTERS:{name:'masters',type:tr.v.d.GenericSet},MEMORY_AMOUNTS:{name:'memoryAmounts',type:tr.v.d.GenericSet},OS_NAMES:{name:'osNames',type:tr.v.d.GenericSet},OS_VERSIONS:{name:'osVersions',type:tr.v.d.GenericSet},OWNERS:{name:'owners',type:tr.v.d.GenericSet},POINT_ID:{name:'pointId',type:tr.v.d.GenericSet},PRODUCT_VERSIONS:{name:'productVersions',type:tr.v.d.GenericSet},REVISION_TIMESTAMPS:{name:'revisionTimestamps',type:tr.v.d.DateRange},SKIA_REVISIONS:{name:'skiaRevisions',type:tr.v.d.GenericSet},STATISTICS_NAMES:{name:'statisticsNames',type:tr.v.d.GenericSet},STORIES:{name:'stories',type:tr.v.d.GenericSet},STORYSET_REPEATS:{name:'storysetRepeats',type:tr.v.d.GenericSet},STORY_TAGS:{name:'storyTags',type:tr.v.d.GenericSet},SUMMARY_KEYS:{name:'summaryKeys',type:tr.v.d.GenericSet},TEST_PATH:{name:'testPath',type:tr.v.d.GenericSet},TRACE_START:{name:'traceStart',type:tr.v.d.DateRange},TRACE_URLS:{name:'traceUrls',type:tr.v.d.GenericSet},V8_COMMIT_POSITIONS:{name:'v8CommitPositions',type:tr.v.d.DateRange},V8_REVISIONS:{name:'v8Revisions',type:tr.v.d.GenericSet},WEBRTC_REVISIONS:{name:'webrtcRevisions',type:tr.v.d.GenericSet},WEBRTC_INTERNAL_REVISIONS:{name:'webrtcInternalRevisions',type:tr.v.d.GenericSet},};const RESERVED_NAMES={};const RESERVED_NAMES_TO_TYPES=new Map();for(const[codename,info]of Object.entries(RESERVED_INFOS)){RESERVED_NAMES[codename]=info.name;if(RESERVED_NAMES_TO_TYPES.has(info.name)){throw new Error(`Duplicate reserved name "${info.name}"`);}
-RESERVED_NAMES_TO_TYPES.set(info.name,info.type);}
-const RESERVED_NAMES_SET=new Set(Object.values(RESERVED_NAMES));return{RESERVED_INFOS,RESERVED_NAMES,RESERVED_NAMES_SET,RESERVED_NAMES_TO_TYPES,};});'use strict';tr.exportTo('tr.v.d',function(){class DiagnosticMap extends Map{constructor(opt_allowReservedNames){super();if(opt_allowReservedNames===undefined){opt_allowReservedNames=true;}
-this.allowReservedNames_=opt_allowReservedNames;}
-set(name,diagnostic){if(typeof(name)!=='string'){throw new Error(`name must be string, not ${name}`);}
-if(!(diagnostic instanceof tr.v.d.Diagnostic)&&!(diagnostic instanceof tr.v.d.DiagnosticRef)){throw new Error(`Must be instanceof Diagnostic: ${diagnostic}`);}
-if(!this.allowReservedNames_&&tr.v.d.RESERVED_NAMES_SET.has(name)&&!(diagnostic instanceof tr.v.d.UnmergeableDiagnosticSet)&&!(diagnostic instanceof tr.v.d.DiagnosticRef)){const type=tr.v.d.RESERVED_NAMES_TO_TYPES.get(name);if(type&&!(diagnostic instanceof type)){throw new Error(`Diagnostics named "${name}" must be ${type.name}, `+`not ${diagnostic.constructor.name}`);}}
-Map.prototype.set.call(this,name,diagnostic);}
-delete(name){if(name===undefined)throw new Error('missing name');Map.prototype.delete.call(this,name);}
-deserializeAdd(data,deserializer){for(const id of data){const{name,diagnostic}=deserializer.getDiagnostic(id);this.set(name,diagnostic);}}
-addDicts(dict){for(const[name,diagnosticDict]of Object.entries(dict)){if(name==='tagmap')continue;if(typeof diagnosticDict==='string'){this.set(name,new tr.v.d.DiagnosticRef(diagnosticDict));}else if(diagnosticDict.type!=='RelatedHistogramMap'&&diagnosticDict.type!=='RelatedHistogramBreakdown'&&diagnosticDict.type!=='TagMap'){this.set(name,tr.v.d.Diagnostic.fromDict(diagnosticDict));}}}
-resolveSharedDiagnostics(histograms,opt_required){for(const[name,value]of this){if(!(value instanceof tr.v.d.DiagnosticRef)){continue;}
-const guid=value.guid;const diagnostic=histograms.lookupDiagnostic(guid);if(diagnostic instanceof tr.v.d.Diagnostic){this.set(name,diagnostic);}else if(opt_required){throw new Error('Unable to find shared Diagnostic '+guid);}}}
-serialize(serializer){const data=[];for(const[name,diagnostic]of this){data.push(serializer.getOrAllocateDiagnosticId(name,diagnostic));}
-return data;}
-asDict(){const dict={};for(const[name,diagnostic]of this){dict[name]=diagnostic.asDictOrReference();}
-return dict;}
-static deserialize(data,deserializer){const diagnostics=new DiagnosticMap();diagnostics.deserializeAdd(data,deserializer);return diagnostics;}
-static fromDict(d){const diagnostics=new DiagnosticMap();diagnostics.addDicts(d);return diagnostics;}
-static fromObject(obj){const diagnostics=new DiagnosticMap();if(!(obj instanceof Map))obj=Object.entries(obj);for(const[name,diagnostic]of obj){if(!diagnostic)continue;diagnostics.set(name,diagnostic);}
-return diagnostics;}
-addDiagnostics(other){for(const[name,otherDiagnostic]of other){const myDiagnostic=this.get(name);if(myDiagnostic!==undefined&&myDiagnostic.canAddDiagnostic(otherDiagnostic)){myDiagnostic.addDiagnostic(otherDiagnostic);continue;}
-const clone=otherDiagnostic.clone();if(myDiagnostic===undefined){this.set(name,clone);continue;}
-this.set(name,new tr.v.d.UnmergeableDiagnosticSet([myDiagnostic,clone]));}}}
-return{DiagnosticMap};});'use strict';tr.exportTo('tr.v',function(){const MAX_DIAGNOSTIC_MAPS=16;const DEFAULT_SAMPLE_VALUES_PER_BIN=10;const DEFAULT_REBINNED_COUNT=40;const DEFAULT_BOUNDARIES_FOR_UNIT=new Map();const DEFAULT_ITERATION_FOR_BOOTSTRAP_RESAMPLING=500;const DELTA=String.fromCharCode(916);const Z_SCORE_NAME='z-score';const P_VALUE_NAME='p-value';const U_STATISTIC_NAME='U';function percentToString(percent,opt_force3){if(percent<0||percent>1){throw new Error('percent must be in [0,1]');}
-if(percent===0)return'000';if(percent===1)return'100';let str=percent.toString();if(str[1]!=='.'){throw new Error('Unexpected percent');}
-str=str+'0'.repeat(Math.max(4-str.length,0));if(str.length>4){if(opt_force3){str=str.slice(0,4);}else{str=str.slice(0,4)+'_'+str.slice(4);}}
-return'0'+str.slice(2);}
-function percentFromString(s){return parseFloat(s[0]+'.'+s.substr(1).replace(/_/g,''));}
-class HistogramBin{constructor(range){this.range=range;this.count=0;this.diagnosticMaps=[];}
-addSample(value){this.count+=1;}
-addDiagnosticMap(diagnostics){tr.b.math.Statistics.uniformlySampleStream(this.diagnosticMaps,this.count,diagnostics,MAX_DIAGNOSTIC_MAPS);}
-addBin(other){if(!this.range.equals(other.range)){throw new Error('Merging incompatible Histogram bins.');}
-tr.b.math.Statistics.mergeSampledStreams(this.diagnosticMaps,this.count,other.diagnosticMaps,other.count,MAX_DIAGNOSTIC_MAPS);this.count+=other.count;}
-deserialize(data,deserializer){if(!(data instanceof Array)){this.count=data;return;}
-this.count=data[0];for(const sample of data.slice(1)){if(!(sample instanceof Array))continue;this.diagnosticMaps.push(tr.v.d.DiagnosticMap.deserialize(sample.slice(1),deserializer));}}
-fromDict(dict){this.count=dict[0];if(dict.length>1){for(const map of dict[1]){this.diagnosticMaps.push(tr.v.d.DiagnosticMap.fromDict(map));}}}
-serialize(serializer){if(!this.diagnosticMaps.length){return this.count;}
-return[this.count,...this.diagnosticMaps.map(d=>[undefined,...d.serialize(serializer)])];}
-asDict(){if(!this.diagnosticMaps.length){return[this.count];}
-return[this.count,this.diagnosticMaps.map(d=>d.asDict())];}}
-const DEFAULT_SUMMARY_OPTIONS=new Map([['avg',true],['count',true],['geometricMean',false],['max',true],['min',true],['nans',false],['std',true],['sum',true],]);class Histogram{constructor(name,unit,opt_binBoundaries){if(!(unit instanceof tr.b.Unit)){throw new Error('unit must be a Unit: '+unit);}
-let binBoundaries=opt_binBoundaries;if(!binBoundaries){const baseUnit=unit.baseUnit?unit.baseUnit:unit;binBoundaries=DEFAULT_BOUNDARIES_FOR_UNIT.get(baseUnit.unitName);}
-this.binBoundariesDict_=binBoundaries.asDict();this.allBins=binBoundaries.bins.slice();this.description='';const allowReservedNames=false;this.diagnostics_=new tr.v.d.DiagnosticMap(allowReservedNames);this.maxNumSampleValues_=this.defaultMaxNumSampleValues_;this.name_=name;this.nanDiagnosticMaps=[];this.numNans=0;this.running_=undefined;this.sampleValues_=[];this.sampleMeans_=[];this.summaryOptions=new Map(DEFAULT_SUMMARY_OPTIONS);this.summaryOptions.set('percentile',[]);this.summaryOptions.set('iprs',[]);this.summaryOptions.set('ci',[]);this.unit=unit;}
-static create(name,unit,samples,opt_options){const options=opt_options||{};const hist=new Histogram(name,unit,options.binBoundaries);if(options.description)hist.description=options.description;if(options.summaryOptions){let summaryOptions=options.summaryOptions;if(!(summaryOptions instanceof Map)){summaryOptions=Object.entries(summaryOptions);}
-for(const[name,value]of summaryOptions){hist.summaryOptions.set(name,value);}}
-if(options.diagnostics!==undefined){let diagnostics=options.diagnostics;if(!(diagnostics instanceof Map)){diagnostics=Object.entries(diagnostics);}
-for(const[name,diagnostic]of diagnostics){if(!diagnostic)continue;hist.diagnostics.set(name,diagnostic);}}
-if(!(samples instanceof Array))samples=[samples];for(const sample of samples){if(typeof sample==='object'){hist.addSample(sample.value,sample.diagnostics);}else{hist.addSample(sample);}}
-return hist;}
-get diagnostics(){return this.diagnostics_;}
-get running(){return this.running_;}
-get maxNumSampleValues(){return this.maxNumSampleValues_;}
-set maxNumSampleValues(n){this.maxNumSampleValues_=n;tr.b.math.Statistics.uniformlySampleArray(this.sampleValues_,this.maxNumSampleValues_);}
-get name(){return this.name_;}
-deserializeStatistics_(){const statisticsNames=this.diagnostics.get(tr.v.d.RESERVED_NAMES.STATISTICS_NAMES);if(!statisticsNames)return;for(const statName of statisticsNames){if(statName.startsWith('pct_')){const percent=percentFromString(statName.substr(4));this.summaryOptions.get('percentile').push(percent);}else if(statName.startsWith('ipr_')){const lower=percentFromString(statName.substr(4,3));const upper=percentFromString(statName.substr(8));this.summaryOptions.get('iprs').push(tr.b.math.Range.fromExplicitRange(lower,upper));}else if(statName.startsWith('ci_')){const percent=percentFromString(statName.replace('_lower','').replace('_upper','').substr(3));if(!this.summaryOptions.get('ci').includes(percent)){this.summaryOptions.get('ci').push(percent);}}}
-for(const statName of this.summaryOptions.keys()){if(statName==='percentile'||statName==='iprs'||statName==='ci'){continue;}
-this.summaryOptions.set(statName,statisticsNames.has(statName));}}
-deserializeBin_(i,bin,deserializer){this.allBins[i]=new HistogramBin(this.allBins[i].range);this.allBins[i].deserialize(bin,deserializer);if(!(bin instanceof Array))return;for(let sample of bin.slice(1)){if(sample instanceof Array){sample=sample[0];}
-this.sampleValues_.push(sample);}}
-deserializeBins_(bins,deserializer){if(bins instanceof Array){for(let i=0;i=hist.allBins.length||i<0){throw new Error('Invalid index "'+i+'" out of bounds of [0..'+hist.allBins.length+')');}
-hist.allBins[i]=new HistogramBin(hist.allBins[i].range);hist.allBins[i].fromDict(binDict);}}}
-if(dict.running){hist.running_=tr.b.math.RunningStatistics.fromDict(dict.running);}
-if(dict.summaryOptions){if(dict.summaryOptions.iprs){dict.summaryOptions.iprs=dict.summaryOptions.iprs.map(r=>tr.b.math.Range.fromExplicitRange(r[0],r[1]));}
-hist.customizeSummaryOptions(dict.summaryOptions);}
-if(dict.maxNumSampleValues!==undefined){hist.maxNumSampleValues=dict.maxNumSampleValues;}
-if(dict.sampleValues){hist.sampleValues_=dict.sampleValues;}
-if(dict.numNans){hist.numNans=dict.numNans;}
-if(dict.nanDiagnostics){for(const map of dict.nanDiagnostics){hist.nanDiagnosticMaps.push(tr.v.d.DiagnosticMap.fromDict(map));}}
-return hist;}
-get numValues(){return this.running_?this.running_.count:0;}
-get average(){return this.running_?this.running_.mean:undefined;}
-get standardDeviation(){return this.running_?this.running_.stddev:undefined;}
-get geometricMean(){return this.running_?this.running_.geometricMean:0;}
-get sum(){return this.running_?this.running_.sum:0;}
-get min(){return this.running_?this.running_.min:Infinity;}
-get max(){return this.running_?this.running_.max:-Infinity;}
-getDifferenceSignificance(other,opt_alpha){if(this.unit!==other.unit){throw new Error('Cannot compare Histograms with different units');}
-if(this.unit.improvementDirection===tr.b.ImprovementDirection.DONT_CARE){return tr.b.math.Statistics.Significance.DONT_CARE;}
-if(!(other instanceof Histogram)){throw new Error('Unable to compute a p-value');}
-const testResult=tr.b.math.Statistics.mwu(this.sampleValues,other.sampleValues,opt_alpha);return testResult.significance;}
-getApproximatePercentile(percent){if(percent<0||percent>1){throw new Error('percent must be in [0,1]');}
-if(this.numValues===0)return undefined;if(this.allBins.length===1){const sortedSampleValues=this.sampleValues.slice().sort((x,y)=>x-y);return sortedSampleValues[Math.floor((sortedSampleValues.length-1)*percent)];}
-let valuesToSkip=Math.floor((this.numValues-1)*percent);for(const bin of this.allBins){valuesToSkip-=bin.count;if(valuesToSkip>=0)continue;if(bin.range.min===-Number.MAX_VALUE){return bin.range.max;}
-if(bin.range.max===Number.MAX_VALUE){return bin.range.min;}
-return bin.range.center;}
-return this.allBins[this.allBins.length-1].range.min;}
-getBinIndexForValue(value){const i=tr.b.findFirstTrueIndexInSortedArray(this.allBins,b=>valuetypeof(value)==='number'&&!isNaN(value));const sampleCount=filteredSamples.length;if(sampleCount===0||percent<=0.0||percent>=1.0){return[undefined,undefined];}else if(sampleCount===1){return[filteredSamples[0],filteredSamples[0]];}
-const iterations=DEFAULT_ITERATION_FOR_BOOTSTRAP_RESAMPLING;if(this.sampleMeans_.length!==iterations){this.sampleMeans_=[];for(let i=0;ia-b);}
-return[this.sampleMeans_[Math.floor((iterations-1)*(0.5-percent/2))],this.sampleMeans_[Math.ceil((iterations-1)*(0.5+percent/2))],];}
-sampleValuesInto(samples){for(const sampleValue of this.sampleValues){samples.push(sampleValue);}}
-canAddHistogram(other){if(this.unit!==other.unit){return false;}
-if(this.binBoundariesDict_===other.binBoundariesDict_){return true;}
-if(!this.binBoundariesDict_||!other.binBoundariesDict_){return true;}
-if(this.binBoundariesDict_.length!==other.binBoundariesDict_.length){return false;}
-for(let i=0;i=upper){throw new Error('Invalid inter-percentile range: '+statName);}
-lower=this.getApproximatePercentile(lower);upper=this.getApproximatePercentile(upper);const ipr=upper-lower;if(typeof(ipr)!=='number')return undefined;return new tr.b.Scalar(this.unit,ipr);}
-if(!this.canCompare(opt_referenceHistogram)){throw new Error('Cannot compute '+statName+' when histograms are not comparable');}
-const suffix=tr.b.Unit.nameSuffixForImprovementDirection(this.unit.improvementDirection);const deltaIndex=statName.indexOf(DELTA);if(deltaIndex>=0){const baseStatName=statName.substr(deltaIndex+1);const thisStat=this.getStatisticScalar(baseStatName);const otherStat=opt_referenceHistogram.getStatisticScalar(baseStatName);const deltaValue=thisStat.value-otherStat.value;if(statName[0]==='%'){return new tr.b.Scalar(tr.b.Unit.byName['normalizedPercentageDelta'+suffix],deltaValue/otherStat.value);}
-return new tr.b.Scalar(thisStat.unit.correspondingDeltaUnit,deltaValue);}
-if(statName===Z_SCORE_NAME){return new tr.b.Scalar(tr.b.Unit.byName['sigmaDelta'+suffix],(this.average-opt_referenceHistogram.average)/opt_referenceHistogram.standardDeviation);}
-const mwu=opt_mwu||tr.b.math.Statistics.mwu(this.sampleValues,opt_referenceHistogram.sampleValues);if(statName===P_VALUE_NAME){return new tr.b.Scalar(tr.b.Unit.byName.unitlessNumber,mwu.p);}
-if(statName===U_STATISTIC_NAME){return new tr.b.Scalar(tr.b.Unit.byName.unitlessNumber,mwu.U);}
-throw new Error('Unrecognized statistic name: '+statName);}
-get statisticsNames(){const statisticsNames=new Set();for(const[statName,option]of this.summaryOptions){if(statName==='percentile'){for(const pctile of option){statisticsNames.add('pct_'+tr.v.percentToString(pctile));}}else if(statName==='iprs'){for(const range of option){statisticsNames.add('ipr_'+tr.v.percentToString(range.min,true)+'_'+tr.v.percentToString(range.max,true));}}else if(statName==='ci'){for(const CIpctile of option){const CIpctStr=tr.v.percentToString(CIpctile);statisticsNames.add('ci_'+CIpctStr+'_lower');statisticsNames.add('ci_'+CIpctStr+'_upper');statisticsNames.add('ci_'+CIpctStr);}}else if(option){statisticsNames.add(statName);}}
-return statisticsNames;}
-canCompare(other){return other instanceof Histogram&&this.unit===other.unit&&this.numValues>0&&other.numValues>0;}
-getAvailableStatisticName(statName,opt_referenceHist){if(this.canCompare(opt_referenceHist))return statName;if(statName===Z_SCORE_NAME||statName===P_VALUE_NAME||statName===U_STATISTIC_NAME){return'avg';}
-const deltaIndex=statName.indexOf(DELTA);if(deltaIndex<0)return statName;return statName.substr(deltaIndex+1);}
-static getDeltaStatisticsNames(statNames){const deltaNames=[];for(const statName of statNames){deltaNames.push(`${DELTA}${statName}`);deltaNames.push(`%${DELTA}${statName}`);}
-return deltaNames.concat([Z_SCORE_NAME,P_VALUE_NAME,U_STATISTIC_NAME]);}
-get statisticsScalars(){const results=new Map();for(const statName of this.statisticsNames){const scalar=this.getStatisticScalar(statName);if(scalar===undefined)continue;results.set(statName,scalar);}
-return results;}
-get sampleValues(){return this.sampleValues_;}
-clone(){const binBoundaries=HistogramBinBoundaries.fromDict(this.binBoundariesDict_);const hist=new Histogram(this.name,this.unit,binBoundaries);for(const[stat,option]of this.summaryOptions){if(stat==='percentile'||stat==='iprs'||stat==='ci'){hist.summaryOptions.set(stat,Array.from(option));}else{hist.summaryOptions.set(stat,option);}}
-hist.addHistogram(this);return hist;}
-rebin(newBoundaries){const rebinned=new tr.v.Histogram(this.name,this.unit,newBoundaries);rebinned.description=this.description;for(const sample of this.sampleValues){rebinned.addSample(sample);}
-rebinned.running_=this.running_;for(const[name,diagnostic]of this.diagnostics){rebinned.diagnostics.set(name,diagnostic);}
-for(const[stat,option]of this.summaryOptions){if(stat==='percentile'||stat==='ci'){rebinned.summaryOptions.set(stat,Array.from(option));}else{rebinned.summaryOptions.set(stat,option);}}
-return rebinned;}
-serialize(serializer){let nanBin=this.numNans;if(this.nanDiagnosticMaps.length){nanBin=[nanBin,...this.nanDiagnosticMaps.map(dm=>[undefined,...dm.serialize(serializer)])];}
-this.diagnostics.set(tr.v.d.RESERVED_NAMES.STATISTICS_NAMES,new tr.v.d.GenericSet([...this.statisticsNames].sort()));this.diagnostics.set(tr.v.d.RESERVED_NAMES.DESCRIPTION,new tr.v.d.GenericSet([this.description].sort()));return[serializer.getOrAllocateId(this.name),this.unit.asJSON2(),serializer.getOrAllocateId(this.binBoundariesDict_),this.diagnostics.serialize(serializer),this.running_?this.running_.asDict():0,this.serializeBins_(serializer),nanBin,];}
-asDict(){const dict={};dict.name=this.name;dict.unit=this.unit.asJSON();if(this.binBoundariesDict_!==undefined){dict.binBoundaries=this.binBoundariesDict_;}
-if(this.description){dict.description=this.description;}
-if(this.diagnostics.size){dict.diagnostics=this.diagnostics.asDict();}
-if(this.maxNumSampleValues!==this.defaultMaxNumSampleValues_){dict.maxNumSampleValues=this.maxNumSampleValues;}
-if(this.numNans){dict.numNans=this.numNans;}
-if(this.nanDiagnosticMaps.length){dict.nanDiagnostics=this.nanDiagnosticMaps.map(dm=>dm.asDict());}
-if(this.numValues){dict.sampleValues=this.sampleValues.slice();this.running.truncate(this.unit);dict.running=this.running_.asDict();dict.allBins=this.allBinsAsDict_();}
-const summaryOptions={};let anyOverriddenSummaryOptions=false;for(const[name,value]of this.summaryOptions){let option;if(name==='percentile'){if(value.length===0)continue;option=Array.from(value);}else if(name==='iprs'){if(value.length===0)continue;option=value.map(r=>[r.min,r.max]);}else if(name==='ci'){if(value.length===0)continue;option=Array.from(value);}else if(value===DEFAULT_SUMMARY_OPTIONS.get(name)){continue;}else{option=value;}
-summaryOptions[name]=option;anyOverriddenSummaryOptions=true;}
-if(anyOverriddenSummaryOptions){dict.summaryOptions=summaryOptions;}
-return dict;}
-serializeBins_(serializer){const numBins=this.allBins.length;let emptyBins=0;for(let i=0;i(numBins/2)){const allBinsDict={};for(let i=0;i0){allBinsDict[i]=bin.serialize(serializer);}}
-return allBinsDict;}
-const allBinsArray=[];for(let i=0;i(numBins/2)){const allBinsDict={};for(let i=0;i0){allBinsDict[i]=bin.asDict();}}
-return allBinsDict;}
-const allBinsArray=[];for(let i=0;inew HistogramBin(r));}
-get binRanges(){if(this.binRanges_===undefined){this.buildBinRanges_();}
-return this.binRanges_;}
-buildBinRanges_(){if(typeof this.builder_[0]!=='number'){throw new Error('Invalid start of builder_');}
-this.binRanges_=[];let prevBoundary=this.builder_[0];if(prevBoundary>-Number.MAX_VALUE){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(-Number.MAX_VALUE,prevBoundary));}
-for(const slice of this.builder_.slice(1)){if(!(slice instanceof Array)){this.binRanges_.push(tr.b.math.Range.fromExplicitRange(prevBoundary,slice));prevBoundary=slice;continue;}
-const nextMaxBinBoundary=slice[1];const binCount=slice[2];const sliceMinBinBoundary=prevBoundary;switch(slice[0]){case HistogramBinBoundaries.SLICE_TYPE.LINEAR:{const binWidth=(nextMaxBinBoundary-prevBoundary)/binCount;for(let i=1;i=nextMaxBinBoundary){throw new Error('The last added max boundary must be greater than '+'the current max boundary boundary');}
-this.binRanges_=undefined;this.bins_=undefined;this.pushBuilderSlice_([HistogramBinBoundaries.SLICE_TYPE.EXPONENTIAL,nextMaxBinBoundary,binCount]);this.range.addValue(nextMaxBinBoundary);return this;}}
-HistogramBinBoundaries.SLICE_TYPE={LINEAR:0,EXPONENTIAL:1,};HistogramBinBoundaries.SINGULAR=new HistogramBinBoundaries(Number.MAX_VALUE);DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeDurationInMs.unitName,HistogramBinBoundaries.createExponential(1e-3,1e6,1e2));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeInMsAutoFormat.unitName,new HistogramBinBoundaries(0).addBinBoundary(1).addExponentialBins(1e3,3).addBinBoundary(tr.b.convertUnit(2,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(5,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(10,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(30,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(2*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(5*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(10*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(30*tr.b.convertUnit(tr.b.UnitScale.TIME.MINUTE.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(2*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(6*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(12*tr.b.convertUnit(tr.b.UnitScale.TIME.HOUR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.DAY.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.WEEK.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.MONTH.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)).addBinBoundary(tr.b.convertUnit(tr.b.UnitScale.TIME.YEAR.value,tr.b.UnitScale.TIME.SEC,tr.b.UnitScale.TIME.MILLI_SEC)));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.timeStampInMs.unitName,HistogramBinBoundaries.createLinear(0,1e10,1e3));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.normalizedPercentage.unitName,HistogramBinBoundaries.createLinear(0,1.0,20));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.sizeInBytes.unitName,HistogramBinBoundaries.createExponential(1,1e12,1e2));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.energyInJoules.unitName,HistogramBinBoundaries.createExponential(1e-3,1e3,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.powerInWatts.unitName,HistogramBinBoundaries.createExponential(1e-3,1,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.unitlessNumber.unitName,HistogramBinBoundaries.createExponential(1e-3,1e3,50));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.count.unitName,HistogramBinBoundaries.createExponential(1,1e3,20));DEFAULT_BOUNDARIES_FOR_UNIT.set(tr.b.Unit.byName.sigma.unitName,HistogramBinBoundaries.createLinear(-5,5,50));return{DEFAULT_REBINNED_COUNT,DELTA,Histogram,HistogramBinBoundaries,P_VALUE_NAME,U_STATISTIC_NAME,Z_SCORE_NAME,percentFromString,percentToString,};});'use strict';tr.exportTo('tr.metrics',function(){function accessibilityMetric(histograms,model){const browserAccessibilityEventsHist=new tr.v.Histogram('browser_accessibility_events',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);browserAccessibilityEventsHist.description='Browser accessibility events time';const renderAccessibilityEventsHist=new tr.v.Histogram('render_accessibility_events',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);renderAccessibilityEventsHist.description='Render accessibility events time';const renderAccessibilityLocationsHist=new tr.v.Histogram('render_accessibility_locations',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);renderAccessibilityLocationsHist.description='Render accessibility locations time';const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return;for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const mainThread=rendererHelper.mainThread;if(mainThread===undefined)continue;for(const slice of mainThread.getDescendantEvents()){if(!(slice instanceof tr.model.ThreadSlice))continue;if(slice.title==='RenderAccessibilityImpl::SendPendingAccessibilityEvents'){renderAccessibilityEventsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}
-if(slice.title==='RenderAccessibilityImpl::SendLocationChanges'){renderAccessibilityLocationsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}}}
-for(const browserHelper of Object.values(chromeHelper.browserHelpers)){const mainThread=browserHelper.mainThread;if(mainThread===undefined)continue;for(const slice of mainThread.getDescendantEvents()){if(slice.title==='BrowserAccessibilityManager::OnAccessibilityEvents'){browserAccessibilityEventsHist.addSample(slice.duration,{event:new tr.v.d.RelatedEventSet(slice)});}}}
-histograms.addHistogram(browserAccessibilityEventsHist);histograms.addHistogram(renderAccessibilityEventsHist);histograms.addHistogram(renderAccessibilityLocationsHist);}
-tr.metrics.MetricRegistry.register(accessibilityMetric);return{accessibilityMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const MESSAGE_LOOP_EVENT_NAME='Startup.BrowserMessageLoopStartTime';const CONTENT_START_EVENT_NAME='content::Start';const NAVIGATION_EVENT_NAME='Navigation StartToCommit';const FIRST_CONTENTFUL_PAINT_EVENT_NAME='firstContentfulPaint';function androidStartupMetric(histograms,model){let messageLoopStartEvents=[];let navigationEvents=[];const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;for(const helper of chromeHelper.browserHelpers){for(const ev of helper.mainThread.asyncSliceGroup.childEvents()){if(ev.title===MESSAGE_LOOP_EVENT_NAME){messageLoopStartEvents.push(ev);}else if(ev.title===NAVIGATION_EVENT_NAME){navigationEvents.push(ev);}}}
-let contentStartEvents=[];let firstContentfulPaintEvents=[];const rendererHelpers=chromeHelper.rendererHelpers;const pids=Object.keys(rendererHelpers);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(!rendererHelper.mainThread)continue;for(const ev of rendererHelper.mainThread.sliceGroup.childEvents()){if(ev.title===FIRST_CONTENTFUL_PAINT_EVENT_NAME){firstContentfulPaintEvents.push(ev);break;}else if(ev.title===CONTENT_START_EVENT_NAME){contentStartEvents.push(ev);}}}
-let totalBrowserStarts=messageLoopStartEvents.length;let totalContentStartEvents=contentStartEvents.length;let totalFcpEvents=firstContentfulPaintEvents.length;let totalNavigations=navigationEvents.length;if(totalFcpEvents!==totalBrowserStarts||totalNavigations!==totalBrowserStarts||totalContentStartEvents!==totalBrowserStarts||totalBrowserStarts===0){messageLoopStartEvents=[];contentStartEvents=[];navigationEvents=[];firstContentfulPaintEvents=[];for(const proc of Object.values(model.processes)){for(const ev of proc.getDescendantEvents()){if(ev.title===MESSAGE_LOOP_EVENT_NAME){messageLoopStartEvents.push(ev);}else if(ev.title===NAVIGATION_EVENT_NAME){navigationEvents.push(ev);}else if(ev.title===CONTENT_START_EVENT_NAME){contentStartEvents.push(ev);}}
-for(const ev of proc.getDescendantEvents()){if(ev.title===FIRST_CONTENTFUL_PAINT_EVENT_NAME){firstContentfulPaintEvents.push(ev);break;}}}
-totalBrowserStarts=messageLoopStartEvents.length;totalContentStartEvents=contentStartEvents.length;totalNavigations=navigationEvents.length;totalFcpEvents=firstContentfulPaintEvents.length;}
-function orderEvents(event1,event2){return event1.start-event2.start;}
-messageLoopStartEvents.sort(orderEvents);contentStartEvents.sort(orderEvents);navigationEvents.sort(orderEvents);firstContentfulPaintEvents.sort(orderEvents);if(totalFcpEventsstartNotBefore+MAX_DRAW_DELAY_IN_MS)continue;if(slice.title!=='draw')continue;if(drawSlice===undefined||slice.startendNotAfter||slice.endinputSlice.end){inputSlice=slice;}}
-return inputSlice;}
-function computeStartupTimeInMs(appName,launchSlice,model){let startupStart=launchSlice.start;let startupEnd=launchSlice.end;const drawSlice=findDrawSlice(appName,launchSlice.end,model);if(drawSlice!==undefined){startupEnd=drawSlice.end;}
-const inputSlice=findInputEventSlice(launchSlice.start,model);if(inputSlice!==undefined){startupStart=inputSlice.start;}
-return startupEnd-startupStart;}
-function measureStartup(histograms,model){const launches=findLaunchSlices(model);for(const sliceId in launches){const launchSlice=launches[sliceId];const appName=launchSlice.title.split(': ')[1];const startupMs=computeStartupTimeInMs(appName,launchSlice,model);histograms.createHistogram(`android:systrace:startup:${appName}`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,startupMs);}}
-function measureThreadStates(histograms,model,rangeOfInterest){for(const pid in model.processes){const process=model.processes[pid];if(process.name===undefined)continue;let hasSlices=false;let timeRunning=0;let timeRunnable=0;let timeSleeping=0;let timeUninterruptible=0;let timeBlockIO=0;let timeUnknown=0;for(const tid in process.threads){const thread=process.threads[tid];if(thread.timeSlices===undefined)continue;for(const sliceId in thread.timeSlices){const slice=thread.timeSlices[sliceId];const sliceRange=tr.b.math.Range.fromExplicitRange(slice.start,slice.end);const intersection=rangeOfInterest.findIntersection(sliceRange);const duration=intersection.duration;if(duration===0)continue;hasSlices=true;if(slice.title==='Running'){timeRunning+=duration;}else if(slice.title==='Runnable'){timeRunnable+=duration;}else if(slice.title==='Sleeping'){timeSleeping+=duration;}else if(slice.title.startsWith('Uninterruptible')){timeUninterruptible+=duration;if(slice.title.includes('Block I/O'))timeBlockIO+=duration;}else{timeUnknown+=duration;}}}
-if(hasSlices){const wall=rangeOfInterest.max-rangeOfInterest.min;histograms.createHistogram(`android:systrace:threadtime:${process.name}:running`,tr.b.Unit.byName.normalizedPercentage,timeRunning/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:runnable`,tr.b.Unit.byName.normalizedPercentage,timeRunnable/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:sleeping`,tr.b.Unit.byName.normalizedPercentage,timeSleeping/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:blockio`,tr.b.Unit.byName.normalizedPercentage,timeBlockIO/wall);histograms.createHistogram(`android:systrace:threadtime:${process.name}:uninterruptible`,tr.b.Unit.byName.normalizedPercentage,timeUninterruptible/wall);if(timeUnknown>0){histograms.createHistogram(`android:systrace:threadtime:${process.name}:unknown`,tr.b.Unit.byName.normalizedPercentage,timeUnknown/wall);}}}}
-function androidSystraceMetric(histograms,model,options){let rangeOfInterest=model.bounds;if(options!==undefined&&options.rangeOfInterest!==undefined){rangeOfInterest=options.rangeOfInterest;}
-measureStartup(histograms,model);measureThreadStates(histograms,model,rangeOfInterest);}
-tr.metrics.MetricRegistry.register(androidSystraceMetric,{supportsRangeOfInterest:true});return{androidSystraceMetric,};});'use strict';tr.exportTo('tr.b.math',function(){const PERCENTILE_PRECISION=1e-7;function PiecewiseLinearFunction(){this.pieces=[];}
-PiecewiseLinearFunction.prototype={push(x1,y1,x2,y2){if(x1>=x2){throw new Error('Invalid segment');}
-if(this.pieces.length>0&&this.pieces[this.pieces.length-1].x2>x1){throw new Error('Potentially overlapping segments');}
-if(x1(acc+p.partBelow(y)),0);},get min(){return this.pieces.reduce((acc,p)=>Math.min(acc,p.min),Infinity);},get max(){return this.pieces.reduce((acc,p)=>Math.max(acc,p.max),-Infinity);},get average(){let weightedSum=0;let totalWeight=0;this.pieces.forEach(function(piece){weightedSum+=piece.width*piece.average;totalWeight+=piece.width;});if(totalWeight===0)return 0;return weightedSum/totalWeight;},percentile(percent){if(!(percent>=0&&percent<=1)){throw new Error('percent must be [0,1]');}
-let lower=this.min;let upper=this.max;const total=this.partBelow(upper);if(total===0)return 0;while(upper-lower>PERCENTILE_PRECISION){const middle=(lower+upper)/2;const below=this.partBelow(middle);if(below/total=maxY)return width;if(y=0;i--){parentStack.push(curSlice.subSlices[i]);}}},get subsequentSlices(){const res=[];this.iterateAllSubsequentSlices(function(subseqSlice){res.push(subseqSlice);});return res;},*enumerateAllAncestors(){let curSlice=this.parentSlice;while(curSlice){yield curSlice;curSlice=curSlice.parentSlice;}},get ancestorSlices(){return Array.from(this.enumerateAllAncestors());},iterateEntireHierarchy(callback,opt_this){const mostTopLevelSlice=this.mostTopLevelSlice;callback.call(opt_this,mostTopLevelSlice);mostTopLevelSlice.iterateAllSubsequentSlices(callback,opt_this);},get entireHierarchy(){const res=[];this.iterateEntireHierarchy(function(slice){res.push(slice);});return res;},get ancestorAndSubsequentSlices(){const res=[];res.push(this);for(const aSlice of this.enumerateAllAncestors()){res.push(aSlice);}
-this.iterateAllSubsequentSlices(function(sSlice){res.push(sSlice);});return res;},*enumerateAllDescendents(){for(const slice of this.subSlices){yield slice;}
-for(const slice of this.subSlices){yield*slice.enumerateAllDescendents();}},get descendentSlices(){const res=[];for(const slice of this.enumerateAllDescendents()){res.push(slice);}
-return res;}};return{Slice,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;function ThreadSlice(cat,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId){Slice.call(this,cat,title,colorId,start,args,opt_duration,opt_cpuStart,opt_cpuDuration,opt_argsStripped,opt_bindId);this.subSlices=[];}
-ThreadSlice.prototype={__proto__:Slice.prototype,get overlappingSamples(){const samples=new tr.model.EventSet();if(!this.parentContainer||!this.parentContainer.samples){return samples;}
-this.parentContainer.samples.forEach(function(sample){if(this.start<=sample.start&&sample.start<=this.end){samples.push(sample);}},this);return samples;}};tr.model.EventRegistry.register(ThreadSlice,{name:'slice',pluralName:'slices'});return{ThreadSlice,};});'use strict';tr.exportTo('tr.e.v8',function(){const ThreadSlice=tr.model.ThreadSlice;function V8ThreadSlice(){ThreadSlice.apply(this,arguments);this.runtimeCallStats_=undefined;}
-V8ThreadSlice.prototype={__proto__:ThreadSlice.prototype,get runtimeCallStats(){if('runtime-call-stats'in this.args){this.runtimeCallStats_=this.args['runtime-call-stats'];delete this.args['runtime-call-stats'];}
-return this.runtimeCallStats_;}};ThreadSlice.subTypes.register(V8ThreadSlice,{categoryParts:['v8','disabled-by-default-v8.runtime_stats'],name:'v8 slice',pluralName:'v8 slices'});return{V8ThreadSlice,};});'use strict';tr.exportTo('tr.metrics.v8.utils',function(){const IDLE_TASK_EVENT='SingleThreadIdleTaskRunner::RunTask';const V8_EXECUTE='V8.Execute';const GC_EVENT_PREFIX='V8.GC';const FULL_GC_EVENT='V8.GCCompactor';const LOW_MEMORY_EVENT='V8.GCLowMemoryNotification';const MAJOR_GC_EVENT='MajorGC';const MINOR_GC_EVENT='MinorGC';const TOP_GC_EVENTS={'V8.GCCompactor':'v8-gc-full-mark-compactor','V8.GCFinalizeMC':'v8-gc-latency-mark-compactor','V8.GCFinalizeMCReduceMemory':'v8-gc-memory-mark-compactor','V8.GCIncrementalMarking':'v8-gc-incremental-step','V8.GCIncrementalMarkingFinalize':'v8-gc-incremental-finalize','V8.GCIncrementalMarkingStart':'v8-gc-incremental-start','V8.GCPhantomHandleProcessingCallback':'v8-gc-phantom-handle-callback','V8.GCScavenger':'v8-gc-scavenger'};const MARK_COMPACTOR_EVENTS=new Set(['V8.GCCompactor','V8.GCFinalizeMC','V8.GCFinalizeMCReduceMemory','V8.GCIncrementalMarking','V8.GCIncrementalMarkingFinalize','V8.GCIncrementalMarkingStart','V8.GCPhantomHandleProcessingCallback']);const LOW_MEMORY_MARK_COMPACTOR='v8-gc-low-memory-mark-compactor';function findParent(event,predicate){let parent=event.parentSlice;while(parent){if(predicate(parent)){return parent;}
-parent=parent.parentSlice;}
-return null;}
-function isIdleTask(event){return event.title===IDLE_TASK_EVENT;}
-function isLowMemoryEvent(event){return event.title===LOW_MEMORY_EVENT;}
-function isV8Event(event){return event.title.startsWith('V8.');}
-function isV8ExecuteEvent(event){return event.title===V8_EXECUTE;}
-function isTopV8ExecuteEvent(event){return isV8ExecuteEvent(event)&&findParent(isV8ExecuteEvent)===null;}
-function isGarbageCollectionEvent(event){return event.title&&event.title.startsWith(GC_EVENT_PREFIX)&&event.title!==LOW_MEMORY_EVENT;}
-function isTopGarbageCollectionEvent(event){return event.title in TOP_GC_EVENTS;}
-function isForcedGarbageCollectionEvent(event){return findParent(event,isLowMemoryEvent)!==null;}
-function isSubGarbageCollectionEvent(event){return isGarbageCollectionEvent(event)&&event.parentSlice&&(isTopGarbageCollectionEvent(event.parentSlice)||event.parentSlice.title===MAJOR_GC_EVENT||event.parentSlice.title===MINOR_GC_EVENT);}
-function isNotForcedTopGarbageCollectionEvent(event){return tr.metrics.v8.utils.isTopGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}
-function isNotForcedSubGarbageCollectionEvent(event){return tr.metrics.v8.utils.isSubGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}
-function isFullMarkCompactorEvent(event){return event.title==='V8.GCCompactor';}
-function isMarkCompactorSummaryEvent(event){return event.title==='V8.GCMarkCompactorSummary';}
-function isMarkCompactorMarkingSummaryEvent(event){return event.title==='V8.GCMarkCompactorMarkingSummary';}
-function isScavengerStackScanningEvent(event){return event.title==='V8.GCScavengerStackScanning';}
-function isIncrementalMarkingEvent(event){return event.title.startsWith('V8.GCIncrementalMarking');}
-function isLatencyMarkCompactorEvent(event){return event.title==='V8.GCFinalizeMC';}
-function isMemoryMarkCompactorEvent(event){return event.title==='V8.GCFinalizeMCReduceMemory';}
-function isScavengerEvent(event){return event.title==='V8.GCScavenger';}
-function isCompileOptimizeRCSCategory(name){return name==='Optimize';}
-function isCompileUnoptimizeRCSCategory(name){return name==='Compile';}
-function isCompileParseRCSCategory(name){return name==='Parse';}
-function isCompileRCSCategory(name){return name==='Compile'||name==='Optimize'||name==='Parse';}
-function isV8RCSEvent(event){return event instanceof tr.e.v8.V8ThreadSlice;}
-function isMarkCompactorEvent(event){return MARK_COMPACTOR_EVENTS.has(event.title);}
-function isNotForcedMarkCompactorEvent(event){return!isForcedGarbageCollectionEvent(event)&&isMarkCompactorEvent(event);}
-function forcedGCEventName(){return LOW_MEMORY_EVENT;}
-function topGarbageCollectionEventName(event){if(event.title===FULL_GC_EVENT){if(findParent(event,isLowMemoryEvent)){return LOW_MEMORY_MARK_COMPACTOR;}}
-return TOP_GC_EVENTS[event.title];}
-function topGarbageCollectionEventNames(){return Object.values(TOP_GC_EVENTS);}
-function subGarbageCollectionEventName(event){const topEvent=findParent(event,isTopGarbageCollectionEvent);const prefix=topEvent?topGarbageCollectionEventName(topEvent):'unknown';const name=event.title.replace('V8.GC_MC_','').replace('V8.GC_SCAVENGER_','').replace('V8.GC_','').replace(/_/g,'-').toLowerCase();return prefix+'-'+name;}
-function jsExecutionThreads(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let threads=[];for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.isChromeTracingUI)continue;threads.push(rendererHelper.mainThread);threads=threads.concat(rendererHelper.dedicatedWorkerThreads);threads=threads.concat(rendererHelper.foregroundWorkerThreads);}
-return threads;}
-function groupAndProcessEvents(model,filterCallback,groupCallback,processCallback,groups){const groupToEvents={};if(groups){for(const group of groups){groupToEvents[group]=[];}}
-const threads=jsExecutionThreads(model);for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;const group=groupCallback(event);if(groups&&!(group in groupToEvents)){continue;}
-groupToEvents[group]=groupToEvents[group]||[];groupToEvents[group].push(event);}}
-for(const[group,events]of Object.entries(groupToEvents)){processCallback(group,events);}}
-function filterEvents(model,filterCallback){const threads=jsExecutionThreads(model);const events=[];for(const thread of threads){for(const event of thread.sliceGroup.childEvents()){if(!filterCallback(event))continue;events.push(event);}}
-return events;}
-function unionOfIntervals(intervals){if(intervals.length===0)return[];return tr.b.math.mergeRanges(intervals.map(x=>{return{min:x.start,max:x.end};}),1e-6,function(ranges){return{start:ranges.reduce((acc,x)=>Math.min(acc,x.min),ranges[0].min),end:ranges.reduce((acc,x)=>Math.max(acc,x.max),ranges[0].max)};});}
-function hasV8Stats(globalMemoryDump){let v8stats=undefined;globalMemoryDump.iterateContainerDumps(function(dump){v8stats=v8stats||dump.getMemoryAllocatorDumpByFullName('v8');});return!!v8stats;}
-function rangeForMemoryDumps(model){const startOfFirstDumpWithV8=model.globalMemoryDumps.filter(hasV8Stats).reduce((start,dump)=>Math.min(start,dump.start),Infinity);if(startOfFirstDumpWithV8===Infinity)return new tr.b.math.Range();return tr.b.math.Range.fromExplicitRange(startOfFirstDumpWithV8,Infinity);}
-class WindowEndpoint{constructor(start,points){this.points=points;this.lastIndex=-1;this.position=start;this.distanceUntilNextPoint=points[0].position-start;this.cummulativePause=0;this.stackDepth=0;}
-advance(delta){if(delta0?delta:0;this.distanceUntilNextPoint=this.points[this.lastIndex+1].position-this.position;}else{this.position+=this.distanceUntilNextPoint;this.cummulativePause+=this.stackDepth>0?this.distanceUntilNextPoint:0;this.distanceUntilNextPoint=0;this.lastIndex++;if(this.lastIndexa.position-b.position);points.push({position:end,delta:0});const left=new WindowEndpoint(start,points);const right=new WindowEndpoint(start,points);const EPSILON=1e-6;while(right.position-left.position0){const position2=left.position;const value2=right.cummulativePause-left.cummulativePause;mu.push(position1,1.0-value1/timeWindow,position2,1.0-value2/timeWindow);}}
-return mu;}
-function addMutatorUtilization(metricName,eventFilter,timeWindows,rendererHelpers,histograms){const histogramMap=new Map();for(const timeWindow of timeWindows){const summaryOptions={avg:false,count:false,max:false,min:true,std:false,sum:false};const description=`The minimum mutator utilization in ${timeWindow}ms time window`;const histogram=histograms.createHistogram(`${metricName}-${timeWindow}ms_window`,tr.b.Unit.byName.normalizedPercentage_biggerIsBetter,[],{summaryOptions,description});histogramMap.set(timeWindow,histogram);}
-for(const rendererHelper of rendererHelpers){if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;const pauses=[];for(const event of rendererHelper.mainThread.sliceGroup.childEvents()){if(eventFilter(event)&&event.end>event.start){pauses.push({start:event.start,end:event.end});}}
-pauses.sort((a,b)=>a.start-b.start);const start=rendererHelper.mainThread.bounds.min;const end=rendererHelper.mainThread.bounds.max;for(const timeWindow of timeWindows){const mu=mutatorUtilization(start,end,timeWindow,pauses);histogramMap.get(timeWindow).addSample(mu.min);}}}
-return{addMutatorUtilization,findParent,forcedGCEventName,filterEvents,groupAndProcessEvents,isForcedGarbageCollectionEvent,isFullMarkCompactorEvent,isGarbageCollectionEvent,isIdleTask,isIncrementalMarkingEvent,isLatencyMarkCompactorEvent,isLowMemoryEvent,isMarkCompactorSummaryEvent,isMarkCompactorMarkingSummaryEvent,isMemoryMarkCompactorEvent,isNotForcedMarkCompactorEvent,isNotForcedTopGarbageCollectionEvent,isNotForcedSubGarbageCollectionEvent,isScavengerEvent,isScavengerStackScanningEvent,isSubGarbageCollectionEvent,isTopGarbageCollectionEvent,isTopV8ExecuteEvent,isV8Event,isV8ExecuteEvent,isV8RCSEvent,isCompileRCSCategory,isCompileOptimizeRCSCategory,isCompileUnoptimizeRCSCategory,isCompileParseRCSCategory,mutatorUtilization,rangeForMemoryDumps,subGarbageCollectionEventName,topGarbageCollectionEventName,topGarbageCollectionEventNames,unionOfIntervals,};});'use strict';tr.exportTo('tr.metrics.blink',function(){const BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP={'BlinkGC.AtomicPauseMarkEpilogue':'blink-gc-atomic-pause-mark-epilogue','BlinkGC.AtomicPauseMarkPrologue':'blink-gc-atomic-pause-mark-prologue','BlinkGC.AtomicPauseMarkRoots':'blink-gc-atomic-pause-mark-roots','BlinkGC.IncrementalMarkingStartMarking':'blink-gc-incremental-start','BlinkGC.IncrementalMarkingStep':'blink-gc-incremental-step','BlinkGC.UnifiedMarkingStep':'blink-gc-unified-marking-by-v8','BlinkGC.CompleteSweep':'blink-gc-complete-sweep','BlinkGC.LazySweepInIdle':'blink-gc-sweep-task-foreground','BlinkGC.LazySweepOnAllocation':'blink-gc-sweep-allocation','BlinkGC.AtomicPauseSweepAndCompact':'blink-gc-atomic-pause-sweep-and-compact'};const BLINK_TOP_GC_ROOTS_MARKING_EVENTS=['BlinkGC.VisitRoots'];const BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS=['BlinkGC.AtomicPauseMarkTransitiveClosure'];const BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS=['BlinkGC.AtomicPauseMarkTransitiveClosure','BlinkGC.IncrementalMarkingStep','BlinkGC.UnifiedMarkingStep'];const BLINK_TOP_GC_FOREGROUND_MARKING_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.IncrementalMarkingStartMarking',].concat(BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS);const BLINK_TOP_GC_BACKGROUND_MARKING_EVENTS=['BlinkGC.ConcurrentMarkingStep'];const BLINK_TOP_GC_FOREGROUND_SWEEPING_EVENTS=['BlinkGC.CompleteSweep','BlinkGC.LazySweepInIdle','BlinkGC.LazySweepOnAllocation'];const BLINK_TOP_GC_BACKGROUND_SWEEPING_EVENTS=['BlinkGC.ConcurrentSweepingStep'];const BLINK_TOP_GC_EVENTS=Object.keys(BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP).concat(BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS);const ATOMIC_PAUSE_EVENTS=['BlinkGC.AtomicPauseMarkEpilogue','BlinkGC.AtomicPauseMarkPrologue','BlinkGC.AtomicPauseMarkRoots','BlinkGC.AtomicPauseMarkTransitiveClosure','BlinkGC.AtomicPauseSweepAndCompact'];function blinkGarbageCollectionEventName(event){return BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP[event.title];}
-function blinkGarbageCollectionEventNames(){return Object.values(BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP);}
-function isNonForcedEvent(event){return(!event.args||!event.args.forced)&&!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event);}
-function isNonForcedBlinkGarbageCollectionEvent(event){return BLINK_TOP_GC_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonForcedNonAggregatedBlinkGarbageCollectionEvent(event){return event.title in BLINK_NON_AGGREGATED_GC_EVENTS_NAMES_MAP&&isNonForcedEvent(event);}
-function isNonForcedBlinkGarbageCollectionAtomicPauseEvent(event){return ATOMIC_PAUSE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonForcedBlinkGarbageCollectionRootsMarkingEvent(event){return BLINK_TOP_GC_ROOTS_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function
-isNonForcedBlinkGarbageCollectionMarkingTransitiveColsureEvent(event){return BLINK_GC_FOREGROUND_MARKING_TRANSITIVE_CLOSURE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function
-isNonForcedBlinkGarbageCollectionAtomicPauseTransitiveColsureEvent(event){return BLINK_GC_ATOMIC_PAUSE_TRANSITIVE_CLOSURE_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonForcedBlinkGarbageCollectionForegroundMarkingEvent(event){return BLINK_TOP_GC_FOREGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonForcedBlinkGarbageCollectionBackgroundMarkingEvent(event){return BLINK_TOP_GC_BACKGROUND_MARKING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonForcedBlinkGarbageCollectionForegroundSweepingEvent(event){return BLINK_TOP_GC_FOREGROUND_SWEEPING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonForcedBlinkGarbageCollectionBackgroundSweepingEvent(event){return BLINK_TOP_GC_BACKGROUND_SWEEPING_EVENTS.includes(event.title)&&isNonForcedEvent(event);}
-function isNonNestedNonForcedBlinkGarbageCollectionEvent(event){return isNonForcedBlinkGarbageCollectionEvent(event)&&!tr.metrics.v8.utils.findParent(event,tr.metrics.v8.utils.isGarbageCollectionEvent);}
-function blinkGcMetric(histograms,model){addDurationOfTopEvents(histograms,model);addDurationOfAtomicPause(histograms,model);addDurationOfAtomicPauseTransitiveClosure(histograms,model);addTotalDurationOfTopEvents(histograms,model);addTotalDurationOfBlinkAndV8TopEvents(histograms,model);addTotalDurationOfRootsMarking(histograms,model);addTotalDurationOfMarkingTransitiveClosure(histograms,model);addTotalDurationOfForegroundMarking(histograms,model);addTotalDurationOfBackgroundMarking(histograms,model);addTotalDurationOfForegroundSweeping(histograms,model);addTotalDurationOfBackgroundSweeping(histograms,model);}
-tr.metrics.MetricRegistry.register(blinkGcMetric);const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,20,200).addExponentialBins(200,100);function createNumericForTopEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:true,max:true,min:false,std:true,sum:true,percentile:[0.90]});return n;}
-function createNumericForTotalEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:true,max:false,min:false,std:false,sum:true,percentile:[0.90]});return n;}
-function createNumericForUnifiedEventTime(name){const n=new tr.v.Histogram(name,timeDurationInMs_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:true,max:true,min:false,std:false,sum:true,percentile:[0.90]});return n;}
-function addDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedNonAggregatedBlinkGarbageCollectionEvent,blinkGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForTopEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},blinkGarbageCollectionEventNames());}
-function addDurationOfAtomicPause(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionAtomicPauseEvent,event=>event.args.epoch,function(group,events){const cpuDuration=createNumericForTopEventTime('blink-gc-atomic-pause');cpuDuration.addSample(events.reduce((acc,current)=>acc+current.cpuDuration,0));histograms.addHistogram(cpuDuration);});}
-function addDurationOfAtomicPauseTransitiveClosure(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionAtomicPauseTransitiveColsureEvent,event=>event.args.epoch,function(group,events){const cpuDuration=createNumericForTopEventTime('blink-gc-atomic-pause-mark-transitive-closure');cpuDuration.addSample(events.reduce((acc,current)=>acc+current.cpuDuration,0));histograms.addHistogram(cpuDuration);});}
-function addTotalDurationOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionEvent,event=>'blink-gc-total',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-total']);}
-function addTotalDurationOfRootsMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionRootsMarkingEvent,event=>'blink-gc-mark-roots',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-mark-roots']);}
-function addTotalDurationOfMarkingTransitiveClosure(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionMarkingTransitiveColsureEvent,event=>'blink-gc-mark-transitive-closure',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-mark-transitive-closure']);}
-function addTotalDurationOfForegroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForegroundMarkingEvent,event=>'blink-gc-mark-foreground',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-mark-foreground']);}
-function addTotalDurationOfBackgroundMarking(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionBackgroundMarkingEvent,event=>'blink-gc-mark-background',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-mark-background']);}
-function addTotalDurationOfForegroundSweeping(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionForegroundSweepingEvent,event=>'blink-gc-sweep-foreground',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-sweep-foreground']);}
-function addTotalDurationOfBackgroundSweeping(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isNonForcedBlinkGarbageCollectionBackgroundSweepingEvent,event=>'blink-gc-sweep-background',function(name,events){const cpuDuration=createNumericForTotalEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['blink-gc-sweep-background']);}
-function isV8OrBlinkTopLevelGarbageCollectionEvent(event){return tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent(event)||isNonNestedNonForcedBlinkGarbageCollectionEvent(event);}
-function addTotalDurationOfBlinkAndV8TopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8OrBlinkTopLevelGarbageCollectionEvent,event=>'unified-gc-total',function(name,events){const cpuDuration=createNumericForUnifiedEventTime(name);for(const event of events){cpuDuration.addSample(event.cpuDuration);}
-histograms.addHistogram(cpuDuration);},['unified-gc-total']);}
-return{blinkGcMetric,};});'use strict';tr.exportTo('tr.metrics.blink',function(){function leakDetectionMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper===undefined){throw new Error('Chrome is not present.');}
-const rendererHelpers=modelHelper.rendererHelpers;if(Object.keys(rendererHelpers).length===0){throw new Error('Renderer process is not present.');}
-const pids=Object.keys(rendererHelpers);const chromeDumps=tr.metrics.sh.splitGlobalDumpsByBrowserName(model,undefined).get('chrome');const sumCounter=new Map();for(const pid of pids){for(const[key,count]of countLeakedBlinkObjects(chromeDumps,pid)){sumCounter.set(key,(sumCounter.get(key)||0)+count);}}
-for(const[key,count]of sumCounter){histograms.createHistogram('Leaked '+key,tr.b.Unit.byName.count_smallerIsBetter,count);}
-for(const[key,count]of sumCounter){if(count>0){throw new Error('Memory leak is found.');}}}
-tr.metrics.MetricRegistry.register(leakDetectionMetric);function countLeakedBlinkObjects(dumps,pid){if(dumps===undefined||dumps.length<2){throw new Error('Expected at least two memory dumps.');}
-const firstCounter=countBlinkObjects(dumps[0],pid);const lastCounter=countBlinkObjects(dumps[dumps.length-1],pid);const diffCounter=new Map();for(const[key,lastCount]of lastCounter){diffCounter.set(key,lastCount-firstCounter.get(key));}
-return diffCounter;}
-function countBlinkObjects(dump,pid){const counter=new Map();const processesMemoryDumps=dump.processMemoryDumps;if(processesMemoryDumps[pid]===undefined)return counter;const blinkObjectsDump=processesMemoryDumps[pid].memoryAllocatorDumps.find(dump=>dump.fullName==='blink_objects');for(const v of blinkObjectsDump.children){counter.set(v.name,v.numerics.object_count.value);}
-return counter;}
-return{leakDetectionMetric,};});'use strict';tr.exportTo('tr.metrics.console',function(){const COUNT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e4,30);const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;const SOURCES=['all','js','network'];function consoleErrorMetric(histograms,model){const counts={};for(const source of SOURCES){counts[source]=0;}
-for(const slice of model.getDescendantEvents()){if(slice.category==='blink.console'&&slice.title==='ConsoleMessage::Error'){const source=slice.args.source.toLowerCase();counts.all++;if(source in counts){counts[source]++;}}
-if(slice.category==='v8.console'&&(slice.title==='V8ConsoleMessage::Exception'||slice.title==='V8ConsoleMessage::Error'||slice.title==='V8ConsoleMessage::Assert')){counts.all++;counts.js++;}}
-for(const source of SOURCES){histograms.createHistogram(`console:error:${source}`,tr.b.Unit.byName.count_smallerIsBetter,counts[source],{description:`Number of ${source} console error messages`,summaryOptions:SUMMARY_OPTIONS});}}
-tr.metrics.MetricRegistry.register(consoleErrorMetric);return{consoleErrorMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){function getCpuSnapshotsFromModel(model){const snapshots=[];for(const pid in model.processes){const snapshotInstances=model.processes[pid].objects.getAllInstancesNamed('CPUSnapshots');if(!snapshotInstances)continue;for(const object of snapshotInstances[0].snapshots){snapshots.push(object.args.processes);}}
-return snapshots;}
-function getProcessSumsFromSnapshot(snapshot){const processSums=new Map();for(const processData of snapshot){const processName=processData.name;if(!(processSums.has(processName))){processSums.set(processName,{sum:0.0,paths:new Set()});}
-processSums.get(processName).sum+=parseFloat(processData.pCpu);if(processData.path){processSums.get(processName).paths.add(processData.path);}}
-return processSums;}
-function buildNumericsFromSnapshots(snapshots){const processNumerics=new Map();for(const snapshot of snapshots){const processSums=getProcessSumsFromSnapshot(snapshot);for(const[processName,processData]of processSums.entries()){if(!(processNumerics.has(processName))){processNumerics.set(processName,{numeric:new tr.v.Histogram('cpu:percent:'+processName,tr.b.Unit.byName.normalizedPercentage_smallerIsBetter),paths:new Set()});}
-processNumerics.get(processName).numeric.addSample(processData.sum/100.0);for(const path of processData.paths){processNumerics.get(processName).paths.add(path);}}}
-return processNumerics;}
-function cpuProcessMetric(histograms,model){const snapshots=getCpuSnapshotsFromModel(model);const processNumerics=buildNumericsFromSnapshots(snapshots);for(const[processName,processData]of processNumerics){const numeric=processData.numeric;const missingSnapshotCount=snapshots.length-numeric.numValues;for(let i=0;i(thread.name?thread.name.startsWith('ThreadPoolSingleThreadSharedForegroundBlocking'):false));const compositorThread=rendererHelper.compositorThread;if(compositorThread!==undefined){videoThreads.push(compositorThread);}
-const audioThreads=rendererHelper.process.findAllThreadsNamed('AudioOutputDevice');if(audioThreads.length===0&&videoThreads.length===0)continue;const processData=new PerProcessData();processData.recordPlayStarts(mainThread);if(!processData.hasPlaybacks)continue;if(videoThreads.length!==0){processData.calculateTimeToVideoPlays(videoThreads);processData.calculateDroppedFrameCounts(videoThreads);}
-if(audioThreads.length!==0){processData.calculateTimeToAudioPlays(audioThreads);}
-processData.calculateSeekTimes(mainThread);processData.calculateBufferingTimes(mainThread);processData.addMetricToHistograms(histograms);}}
-class PerProcessData{constructor(){this.playbackIdToDataMap_=new Map();}
-recordPlayStarts(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::DoLoad'){const id=event.args.id;if(this.playbackIdToDataMap_.has(id)){throw new Error('Unexpected multiple initialization of a media playback');}
-this.playbackIdToDataMap_.set(id,new PerPlaybackData(event.start));}}}
-get hasPlaybacks(){return this.playbackIdToDataMap_.size>0;}
-calculateTimeToVideoPlays(videoThreads){for(const thread of videoThreads){for(const event of thread.sliceGroup.getDescendantEvents()){if(event.title==='VideoRendererImpl::Render'){this.getPerPlaybackObject_(event.args.id).processVideoRenderTime(event.start);}}}}
-calculateTimeToAudioPlays(audioThreads){for(const audioThread of audioThreads){for(const event of audioThread.sliceGroup.getDescendantEvents()){if(event.title==='AudioRendererImpl::Render'){this.getPerPlaybackObject_(event.args.id).processAudioRenderTime(event.start);}}}}
-calculateSeekTimes(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::DoSeek'){this.getPerPlaybackObject_(event.args.id).processDoSeek(event.args.target,event.start);}else if(event.title==='WebMediaPlayerImpl::OnPipelineSeeked'){this.getPerPlaybackObject_(event.args.id).processOnPipelineSeeked(event.args.target,event.start);}else if(event.title==='WebMediaPlayerImpl::BufferingHaveEnough'){this.getPerPlaybackObject_(event.args.id).processBufferingHaveEnough(event.start);}}}
-calculateBufferingTimes(mainThread){for(const event of mainThread.sliceGroup.getDescendantEvents()){if(event.title==='WebMediaPlayerImpl::OnEnded'){this.getPerPlaybackObject_(event.args.id).processOnEnded(event.start,event.args.duration);}}}
-calculateDroppedFrameCounts(videoThreads){for(const thread of videoThreads){for(const event of thread.sliceGroup.getDescendantEvents()){if(event.title==='VideoFramesDropped'){this.getPerPlaybackObject_(event.args.id).processVideoFramesDropped(event.args.count);}}}}
-addMetricToHistograms(histograms){for(const[id,playbackData]of this.playbackIdToDataMap_){playbackData.addMetricToHistograms(histograms);}}
-getPerPlaybackObject_(playbackId){let perPlaybackObject=this.playbackIdToDataMap_.get(playbackId);if(perPlaybackObject===undefined){perPlaybackObject=new PerPlaybackData(undefined);this.playbackIdToDataMap_.set(playbackId,perPlaybackObject);}
-return perPlaybackObject;}}
-class PerPlaybackData{constructor(playStartTime){this.playStart_=playStartTime;this.timeToVideoPlay_=undefined;this.timeToAudioPlay_=undefined;this.bufferingTime_=undefined;this.droppedFrameCount_=0;this.seekError_=false;this.seekTimes_=new Map();this.currentSeek_=undefined;}
-get timeToVideoPlay(){return this.timeToVideoPlay_;}
-get timeToAudioPlay(){return this.timeToAudioPlay_;}
-get bufferingTime(){return this.bufferingTime_;}
-get droppedFrameCount(){return(this.timeToVideoPlay_!==undefined)?this.droppedFrameCount_:undefined;}
-get seekTimes(){if(this.seekError_||this.currentSeek_!==undefined)return new Map();return this.seekTimes_;}
-processVideoRenderTime(videoRenderTime){if(this.playStart_!==undefined&&this.timeToVideoPlay_===undefined){this.timeToVideoPlay_=videoRenderTime-this.playStart_;}}
-processAudioRenderTime(audioRenderTime){if(this.playStart_!==undefined&&this.timeToAudioPlay_===undefined){this.timeToAudioPlay_=audioRenderTime-this.playStart_;}}
-processVideoFramesDropped(count){this.droppedFrameCount_+=count;}
-processDoSeek(target,startTime){if(this.currentSeek_!==undefined){this.seekError_=true;return;}
-this.currentSeek_={target,startTime};this.seekTimes_.set(target,this.currentSeek_);}
-processOnPipelineSeeked(target,time){if(this.seekError_)return;const currentSeek=this.currentSeek_;if(currentSeek===undefined){return;}
-if(currentSeek.target!==target){this.seekError_=true;return;}
-if(currentSeek.pipelineSeekTime!==undefined){this.seekError_=true;return;}
-currentSeek.pipelineSeekTime=time-currentSeek.startTime;}
-processBufferingHaveEnough(time){if(this.seekError_)return;const currentSeek=this.currentSeek_;if(currentSeek===undefined){return;}
-if(currentSeek.pipelineSeekTime===undefined){return;}
-currentSeek.seekTime=time-currentSeek.startTime;this.currentSeek_=undefined;}
-processOnEnded(playEndTime,duration){if(this.playStart_===undefined)return;if(this.seekTimes_.size!==0||this.seekError_)return;if(this.bufferingTime_!==undefined)return;duration=tr.b.convertUnit(duration,tr.b.UnitPrefixScale.METRIC.NONE,tr.b.UnitPrefixScale.METRIC.MILLI);const playTime=playEndTime-this.playStart_;if(this.timeToVideoPlay_!==undefined){this.bufferingTime_=playTime-duration-this.timeToVideoPlay_;}else if(this.timeToAudioPlay!==undefined){this.bufferingTime_=playTime-duration-this.timeToAudioPlay_;}}
-addMetricToHistograms(histograms){this.addSample_(histograms,'time_to_video_play',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.timeToVideoPlay);this.addSample_(histograms,'time_to_audio_play',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.timeToAudioPlay);this.addSample_(histograms,'dropped_frame_count',tr.b.Unit.byName.count_smallerIsBetter,this.droppedFrameCount);for(const[key,value]of this.seekTimes.entries()){const keyString=key.toString().replace('.','_');this.addSample_(histograms,'pipeline_seek_time_'+keyString,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,value.pipelineSeekTime);this.addSample_(histograms,'seek_time_'+keyString,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,value.seekTime);}
-this.addSample_(histograms,'buffering_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,this.bufferingTime);}
-addSample_(histograms,name,unit,sample){if(sample===undefined)return;const histogram=histograms.getHistogramNamed(name);if(histogram===undefined){histograms.createHistogram(name,unit,sample);}else{histogram.addSample(sample);}}}
-tr.metrics.MetricRegistry.register(mediaMetric);return{mediaMetric,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const UNKNOWN_THREAD_NAME='Unknown';const CATEGORY_THREAD_MAP=new Map();CATEGORY_THREAD_MAP.set('total_all',[/.*/]);CATEGORY_THREAD_MAP.set('browser',[/^Browser Compositor$/,/^CrBrowserMain$/]);CATEGORY_THREAD_MAP.set('display_compositor',[/^VizCompositorThread$/]);CATEGORY_THREAD_MAP.set('GPU',[/^Chrome_InProcGpuThread$/,/^CrGpuMain$/]);CATEGORY_THREAD_MAP.set('IO',[/IOThread/]);CATEGORY_THREAD_MAP.set('raster',[/CompositorTileWorker/]);CATEGORY_THREAD_MAP.set('renderer_compositor',[/^Compositor$/]);CATEGORY_THREAD_MAP.set('renderer_main',[/^CrRendererMain$/]);CATEGORY_THREAD_MAP.set('total_rendering',[/^Browser Compositor$/,/^Chrome_InProcGpuThread$/,/^Compositor$/,/CompositorTileWorker/,/^CrBrowserMain$/,/^CrGpuMain$/,/^CrRendererMain$/,/IOThread/,/^VizCompositorThread$/]);const ALL_CATEGORIES=[...CATEGORY_THREAD_MAP.keys(),'other'];function addValueToMap_(map,key,value){const oldValue=map.get(key)||0;map.set(key,oldValue+value);}
-function categoryShouldHaveBreakdown(category){return category==='total_all'||category==='total_rendering';}
-function*getCategories_(threadName){let isOther=true;for(const[category,regexps]of CATEGORY_THREAD_MAP){for(const regexp of regexps){if(regexp.test(threadName)){if(category!=='total_all')isOther=false;yield category;break;}}}
-if(isOther)yield'other';}
-function isSubset_(regexps1,regexps2){for(const r1 of regexps1){if(regexps2.find(r2=>r2.toString()===r1.toString())===undefined){return false;}}
-return true;}
-function addCpuUtilizationHistograms(histograms,model,segments,segmentCostFunc,histogramNameFunc,description,unit){if(!unit)unit=tr.b.Unit.byName.unitlessNumber;const histogramMap=new Map();for(const category of ALL_CATEGORIES){const histogram=histograms.createHistogram(histogramNameFunc(category),unit,[],{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(1,50,20),description,summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histogramMap.set(category,histogram);}
-for(const[category,regexps]of CATEGORY_THREAD_MAP){const relatedCategories=new tr.v.d.RelatedNameMap();const histogram=histogramMap.get(category);for(const[otherCategory,otherRegexps]of CATEGORY_THREAD_MAP){if(otherCategory===category)continue;if(category!=='all'&&!isSubset_(otherRegexps,regexps))continue;const otherHistogram=histogramMap.get(otherCategory);relatedCategories.set(otherCategory,otherHistogram.name);}
-if([...relatedCategories.values()].length>0){histogram.diagnostics.set('breakdown',relatedCategories);}}
-for(const segment of segments){const threadValues=new Map();for(const thread of model.getAllThreads()){addValueToMap_(threadValues,thread.name||UNKNOWN_THREAD_NAME,segmentCostFunc(thread,segment));}
-const categoryValues=new Map();const breakdowns=new Map();for(const[threadName,coresPerSec]of threadValues){for(const category of getCategories_(threadName)){addValueToMap_(categoryValues,category,coresPerSec);if(!categoryShouldHaveBreakdown(category))continue;if(!breakdowns.has(category)){breakdowns.set(category,new tr.v.d.Breakdown());}
-breakdowns.get(category).set(threadName,coresPerSec);}}
-for(const category of ALL_CATEGORIES){const value=categoryValues.get(category)||0;const diagnostics=new tr.v.d.DiagnosticMap();const breakdown=breakdowns.get(category);if(breakdown)diagnostics.set('breakdown',breakdown);const histogram=histogramMap.get(category);histogram.addSample(value,diagnostics);}}}
-const SUMMARY_OPTIONS={percentile:[0.90,0.95],ci:[0.95],};return{addCpuUtilizationHistograms,SUMMARY_OPTIONS,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const PRESENT_EVENT='Display::FrameDisplayed';const DISPLAY_EVENT='BenchmarkInstrumentation::DisplayRenderingStats';const DRM_EVENT='DrmEventFlipComplete';const SURFACE_FLINGER_EVENT='vsync_before';const COMPOSITOR_FRAME_PRESENTED_EVENT='FramePresented';const MIN_FRAME_LENGTH=0.5;const MIN_FRAME_COUNT=10;const PAUSE_THRESHOLD=20;const ASH_ENVIRONMENT='ash';const BROWSER_ENVIRONMENT='browser';class FrameEvent{constructor(event){this.event_=event;}
-get eventStart(){return this.event_.start;}
-get frameStart(){if(this.event_.title!==DRM_EVENT)return this.event_.start;const data=this.event_.args.data;const TIME=tr.b.UnitScale.TIME;return tr.b.convertUnit(data['vblank.tv_sec'],TIME.SEC,TIME.MILLI_SEC)+
-tr.b.convertUnit(data['vblank.tv_usec'],TIME.MICRO_SEC,TIME.MILLI_SEC);}
-get event(){return this.event_;}}
-class FrameSegment{constructor(frameEvent,duration){this.frameEvent_=frameEvent;this.duration_=duration;this.segment_=new tr.model.um.Segment(frameEvent.eventStart,duration);this.length_=undefined;}
-updateLength(refreshPeriod){this.length_=this.duration_/refreshPeriod;}
-get segment(){return this.segment_;}
-get boundsRange(){return this.segment_.boundsRange;}
-get length(){return this.length_;}
-get duration(){return this.duration_;}
-get event(){return this.frameEvent_.event;}}
-function getDisplayCompositorPresentationEventsExp_(modelHelper){if(!modelHelper)return[];function findEventsFromProcess(process){const events=[];for(const event of process.findTopmostSlicesNamed(PRESENT_EVENT)){events.push(event);}
-return events;}
-if(modelHelper.gpuHelper){const events=findEventsFromProcess(modelHelper.gpuHelper.process);if(events.length>0)return events;}
-if(!modelHelper.browserProcess)return[];return findEventsFromProcess(modelHelper.browserProcess);}
-function getDisplayCompositorPresentationEvents_(modelHelper){if(!modelHelper||!modelHelper.browserProcess)return[];let events=[];if(modelHelper.surfaceFlingerProcess){events=[...modelHelper.surfaceFlingerProcess.findTopmostSlicesNamed(SURFACE_FLINGER_EVENT)];if(events.length>0)return events;}
-if(modelHelper.gpuHelper){const gpuProcess=modelHelper.gpuHelper.process;events=[...gpuProcess.findTopmostSlicesNamed(DRM_EVENT)];if(events.length>0)return events;events=[...gpuProcess.findTopmostSlicesNamed(DISPLAY_EVENT)];if(events.length>0)return events;}
-return[...modelHelper.browserProcess.findTopmostSlicesNamed(DISPLAY_EVENT)];}
-function getUIPresentationEvents_(modelHelper){if(!modelHelper||!modelHelper.browserProcess)return[];const legacyEvents=[];const eventsByEnvironment={};eventsByEnvironment[ASH_ENVIRONMENT]=[];eventsByEnvironment[BROWSER_ENVIRONMENT]=[];for(const event of modelHelper.browserProcess.findTopmostSlicesNamed(COMPOSITOR_FRAME_PRESENTED_EVENT)){if(!('environment'in event.args)){legacyEvents.push(event);}else{eventsByEnvironment[event.args.environment].push(event);}}
-if(eventsByEnvironment[ASH_ENVIRONMENT].length>0){return eventsByEnvironment[ASH_ENVIRONMENT];}
-if(eventsByEnvironment[BROWSER_ENVIRONMENT].length>0){return eventsByEnvironment[BROWSER_ENVIRONMENT];}
-return legacyEvents;}
-function computeFrameSegments_(events,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const frameEvents=events.map(e=>new FrameEvent(e));const frameSegments=[];for(const segment of segments){const filtered=segment.boundsRange.filterArray(frameEvents,x=>x.eventStart);if(filtered.lengthx.duration);histograms.createHistogram(`${prefix}frame_times`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,frameTimes,{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,50,20),description:'Raw frame times.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram(`${prefix}percentage_smooth`,tr.b.Unit.byName.unitlessNumber_biggerIsBetter,100*tr.b.math.Statistics.sum(frameTimes,(x=>(x<17?1:0)))/frameTimes.length,{description:'Percentage of frames that were hitting 60 FPS.',summaryOptions:{},});}
-function addFrameTimeHistograms(histograms,model,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const events=getDisplayCompositorPresentationEvents_(modelHelper);if(!events)return;addFrameTimeHistogramsHelper(histograms,model,segments,events,'',true,minFrameCount);const eventsExp=getDisplayCompositorPresentationEventsExp_(modelHelper);if(eventsExp&&eventsExp.length>0){addFrameTimeHistogramsHelper(histograms,model,segments,eventsExp,'exp_',false,minFrameCount);}}
-function addFrameTimeHistogramsHelper(histograms,model,segments,events,prefix,addCpuMetrics,minFrameCount){const frameSegments=computeFrameSegments_(events,segments,minFrameCount);addBasicFrameTimeHistograms_(histograms,frameSegments,prefix+'');if(addCpuMetrics){tr.metrics.rendering.addCpuUtilizationHistograms(histograms,model,frameSegments,(thread,segment)=>thread.getCpuTimeForRange(segment.boundsRange),category=>`thread_${category}_cpu_time_per_frame`,'CPU cores of a thread group per frame',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter);tr.metrics.rendering.addCpuUtilizationHistograms(histograms,model,frameSegments,(thread,segment)=>thread.getNumToplevelSlicesForRange(segment.boundsRange),category=>`tasks_per_frame_${category}`,'Number of tasks of a thread group per frame',tr.b.Unit.byName.unitlessNumber_smallerIsBetter);let totalWallTime=0;let totalCpuTime=0;for(const segment of frameSegments){for(const thread of model.getAllThreads()){totalCpuTime+=thread.getCpuTimeForRange(segment.boundsRange);totalWallTime+=thread.getWallTimeForRange(segment.boundsRange);}}
-histograms.createHistogram('cpu_wall_time_ratio',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,totalCpuTime/totalWallTime,{description:'Ratio of total cpu-time vs. wall-time.',summaryOptions:{},});}
-const refreshPeriod=getRefreshPeriod(model,frameSegments.map(fs=>fs.boundsRange));frameSegments.forEach(fs=>fs.updateLength(refreshPeriod));const validFrames=frameSegments.filter(fs=>fs.length>=MIN_FRAME_LENGTH);const totalFrameDuration=tr.b.math.Statistics.sum(frameSegments,fs=>fs.duration);addJankCountHistograms(histograms,validFrames,prefix);const frameLengths=validFrames.map(frame=>frame.length);histograms.createHistogram(prefix+'frame_lengths',tr.b.Unit.byName.unitlessNumber_smallerIsBetter,frameLengths,{binBoundaries:tr.v.HistogramBinBoundaries.createLinear(0,5,20),summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,description:'Frame times in vsyncs.'});histograms.createHistogram(prefix+'avg_surface_fps',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,frameLengths.length/tr.b.convertUnit(totalFrameDuration,tr.b.UnitScale.TIME.MILLI_SEC,tr.b.UnitScale.TIME.SEC),{description:'Average frames per second.',summaryOptions:{},});}
-function addUIFrameTimeHistograms(histograms,model,segments,opt_minFrameCount){const minFrameCount=opt_minFrameCount||MIN_FRAME_COUNT;const events=getUIPresentationEvents_(model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper));if(events.length===0)return;const frameSegments=computeFrameSegments_(events,segments,minFrameCount);addBasicFrameTimeHistograms_(histograms,frameSegments,'ui_');}
-function addJankCountHistograms(histograms,validFrames,prefix){const jankEvents=[];for(let i=1;i0&&changee.start)));const histogram=histograms.createHistogram(prefix+'jank_count',tr.b.Unit.byName.count_smallerIsBetter,{value:jankCount,diagnostics},{description:'Number of changes in frame rate.',summaryOptions:{},});}
-function getRefreshPeriod(model,ranges){for(const metadata of model.metadata){if(metadata.value&&metadata.value.surface_flinger){return metadata.value.surface_flinger.refresh_period;}}
-const FRAME_LENGTH=1000.0/60;const BEGIN_FRAME_ARGS='Scheduler::BeginFrame';const FRAME_INTERVAL='interval_us';const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.compositorThread===undefined)continue;const slices=rendererHelper.compositorThread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==BEGIN_FRAME_ARGS)continue;const data=slice.args.args;if(!(FRAME_INTERVAL in data)){throw new Error(`${FRAME_INTERVAL} is missing`);}
-return tr.b.convertUnit(data[FRAME_INTERVAL],tr.b.UnitScale.TIME.MICRO_SEC,tr.b.UnitScale.TIME.MILLI_SEC);}}
-return FRAME_LENGTH;}
-return{addFrameTimeHistograms,addUIFrameTimeHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const RGB_DECODE_EVENT='ImageFrameGenerator::decode';const YUV_DECODE_EVENT='ImageFrameGenerator::decodeToYUV';const BLINK_GPU_RASTER_DECODE_EVENT='GpuImageDecodeCache::DecodeImage';const BLINK_SOFTWARE_RASTER_DECODE_EVENT='SoftwareImageDecodeCache::'+'DecodeImageInTask';function getImageDecodingEvents_(modelHelper,ranges){if(!modelHelper||!modelHelper.rendererHelpers)return[];const events=[];for(const renderer of Object.values(modelHelper.rendererHelpers)){for(const thread of renderer.rasterWorkerThreads){const slices=thread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title===RGB_DECODE_EVENT||slice.title===YUV_DECODE_EVENT||slice.title===BLINK_GPU_RASTER_DECODE_EVENT||slice.title===BLINK_SOFTWARE_RASTER_DECODE_EVENT){events.push(slice);}}}}
-return events;}
-function addImageDecodeTimeHistograms(histograms,model,segments){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const decodeEvents=getImageDecodingEvents_(modelHelper,segments.map(s=>s.boundsRange));if(!decodeEvents)return;histograms.createHistogram('rgb_decode_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===RGB_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of the Blink RGB decoding path for a chunk '+'of image data (possibly the whole image).',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('yuv_decode_time',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===YUV_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of the Blink YUV decoding path for a '+'chunk of image data (possibly the whole image).',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('blink_decode_time_gpu_rasterization',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===BLINK_GPU_RASTER_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of decoding and scaling within the '+'GpuImageDecodeCache for a chunk of image data '+'(possibly the whole image)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});histograms.createHistogram('blink_decode_time_software_rasterization',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,decodeEvents.filter(slice=>slice.title===BLINK_SOFTWARE_RASTER_DECODE_EVENT).map(slice=>slice.cpuDuration),{description:'Duration of decoding and scaling within the '+'SoftwareImageDecodeCache for a chunk of image data '+'(possibly the whole image)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});}
-return{addImageDecodeTimeHistograms};});'use strict';tr.exportTo('tr.metrics.rendering',function(){function eventIsValidGraphicsEvent_(event,eventMap){if(event.title!=='Graphics.Pipeline'||!event.bindId||!event.args||!event.args.step){return false;}
-const bindId=event.bindId;if(eventMap.has(bindId)&&event.args.step in eventMap.get(bindId)){if(event.args.step==='IssueBeginFrame'||event.args.step==='ReceiveBeginFrame'){throw new Error('Unexpected duplicate step: '+event.args.step);}
-return false;}
-return true;}
-function generateBreakdownForCompositorPipelineInClient_(flow){const breakdown=new tr.v.d.Breakdown();breakdown.set('time before GenerateRenderPass',flow.GenerateRenderPass.start-flow.ReceiveBeginFrame.start);breakdown.set('GenerateRenderPass duration',flow.GenerateRenderPass.duration);breakdown.set('GenerateCompositorFrame duration',flow.GenerateCompositorFrame.duration);breakdown.set('SubmitCompositorFrame duration',flow.SubmitCompositorFrame.duration);return breakdown;}
-function generateBreakdownForCompositorPipelineInService_(flow){const breakdown=new tr.v.d.Breakdown();breakdown.set('Processing CompositorFrame on reception',flow.ReceiveCompositorFrame.duration);breakdown.set('Delay before SurfaceAggregation',flow.SurfaceAggregation.start-flow.ReceiveCompositorFrame.end);breakdown.set('SurfaceAggregation duration',flow.SurfaceAggregation.duration);return breakdown;}
-function generateBreakdownForDraw_(drawEvent){const breakdown=new tr.v.d.Breakdown();for(const slice of drawEvent.subSlices){breakdown.set(slice.title,slice.duration);}
-return breakdown;}
-function getDisplayCompositorThread_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const gpuHelper=chromeHelper.gpuHelper;if(gpuHelper){const thread=gpuHelper.process.findAtMostOneThreadNamed('VizCompositorThread');if(thread){return thread;}}
-if(!chromeHelper.browserProcess)return null;return chromeHelper.browserProcess.findAtMostOneThreadNamed('CrBrowserMain');}
-function getRasterTaskTimes(sourceFrameNumber,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const renderers=modelHelper.telemetryHelper.renderersWithIR;if(renderers.length===0)return;const rasterThreads=renderers[0].rasterWorkerThreads;let earliestStart=undefined;let lastEnd=undefined;for(const rasterThread of rasterThreads){for(const slice of[...rasterThread.findTopmostSlicesNamed('TaskGraphRunner::RunTask')]){if(slice.args&&slice.args.source_frame_number_&&slice.args.source_frame_number_===sourceFrameNumber){if(earliestStart===undefined||slice.startlastEnd){lastEnd=slice.end;}}}}
-return{start:earliestStart,end:lastEnd};}
-function addPipelineHistograms(histograms,model,segments){const ranges=segments.map(s=>s.boundsRange);const bindEvents=new Map();for(const thread of model.getAllThreads()){for(const event of thread.sliceGroup.childEvents()){if(!eventIsValidGraphicsEvent_(event,bindEvents))continue;for(const range of ranges){if(range.containsExplicitRangeInclusive(event.start,event.end)){if(!bindEvents.has(event.bindId))bindEvents.set(event.bindId,{});break;}}
-if(bindEvents.has(event.bindId)){bindEvents.get(event.bindId)[event.args.step]=event;}}}
-const dcThread=getDisplayCompositorThread_(model);const drawEvents={};if(dcThread){const events=[...dcThread.findTopmostSlicesNamed('Graphics.Pipeline.DrawAndSwap')];for(const segment of segments){const filteredEvents=segment.boundsRange.filterArray(events,evt=>evt.start);for(const event of filteredEvents){if((event.args&&event.args.status==='canceled')||!event.id.startsWith(':ptr:')){continue;}
-const id=parseInt(event.id.substring(5),16);if(id in drawEvents){throw new Error('Duplicate draw events: '+id);}
-drawEvents[id]=event;}}}
-const issueToReceipt=histograms.createHistogram('pipeline:begin_frame_transport',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency of begin-frame message from the display '+'compositor to the client, including the IPC latency and task-'+'queue time in the client.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const issueToRasterStart=histograms.createHistogram('pipeline:begin_frame_to_raster_start',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between begin-frame message and '+'the beginning of the first CompositorTask run in the compositor.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const issueToRasterEnd=histograms.createHistogram('pipeline:begin_frame_to_raster_end',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between begin-frame message and '+'the end of the last CompositorTask run in the compositor.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const receiptToSubmit=histograms.createHistogram('pipeline:begin_frame_to_frame_submission',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between begin-frame reception and '+'CompositorFrame submission in the renderer.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const submitToAggregate=histograms.createHistogram('pipeline:frame_submission_to_display',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'Latency between CompositorFrame submission in the '+'renderer to display in the display-compositor, including IPC '+'latency, task-queue time in the display-compositor, and '+'additional processing (e.g. surface-sync etc.)',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});const aggregateToDraw=histograms.createHistogram('pipeline:draw',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:'How long it takes for the gpu-swap step.',summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,});for(const flow of bindEvents.values()){if(!flow.IssueBeginFrame||!flow.ReceiveBeginFrame||!flow.SubmitCompositorFrame||!flow.SurfaceAggregation){continue;}
-issueToReceipt.addSample(flow.ReceiveBeginFrame.start-
-flow.IssueBeginFrame.start);receiptToSubmit.addSample(flow.SubmitCompositorFrame.end-flow.ReceiveBeginFrame.start,{breakdown:generateBreakdownForCompositorPipelineInClient_(flow)});submitToAggregate.addSample(flow.SurfaceAggregation.end-flow.SubmitCompositorFrame.end,{breakdown:generateBreakdownForCompositorPipelineInService_(flow)});if(flow.SubmitCompositorFrame.parentSlice){const sourceFrameNumber=flow.SubmitCompositorFrame.parentSlice.args.source_frame_number_;const rasterDuration=getRasterTaskTimes(sourceFrameNumber,model);if(rasterDuration&&rasterDuration.start&&rasterDuration.end){const receiveToStart=rasterDuration.start-
-flow.ReceiveBeginFrame.start;const receiveToEnd=rasterDuration.end-flow.ReceiveBeginFrame.end;if(receiveToEnd>0){issueToRasterStart.addSample(receiveToStart>0?receiveToStart:0);issueToRasterEnd.addSample(receiveToEnd);}}}
-if(flow.SurfaceAggregation.args&&flow.SurfaceAggregation.args.display_trace){const displayTrace=flow.SurfaceAggregation.args.display_trace;if(!(displayTrace in drawEvents))continue;const drawEvent=drawEvents[displayTrace];aggregateToDraw.addSample(drawEvent.duration,{breakdown:generateBreakdownForDraw_(drawEvent)});}}}
-return{addPipelineHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const IMPL_THREAD_RENDERING_STATS_EVENT='BenchmarkInstrumentation::ImplThreadRenderingStats';const VISIBLE_CONTENT_DATA='visible_content_area';const APPROXIMATED_VISIBLE_CONTENT_DATA='approximated_visible_content_area';const CHECKERBOARDED_VISIBLE_CONTENT_DATA='checkerboarded_visible_content_area';function addPixelsHistograms(histograms,model,segments){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;const approximatedPixelPercentages=[];const checkerboardedPixelPercentages=[];const ranges=segments.map(s=>s.boundsRange);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){if(rendererHelper.compositorThread===undefined)continue;const slices=rendererHelper.compositorThread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==IMPL_THREAD_RENDERING_STATS_EVENT)continue;const data=slice.args.data;if(!(VISIBLE_CONTENT_DATA in data)){throw new Error(`${VISIBLE_CONTENT_DATA} is missing`);}
-const visibleContentArea=data[VISIBLE_CONTENT_DATA];if(visibleContentArea===0){continue;}
-if(APPROXIMATED_VISIBLE_CONTENT_DATA in data){approximatedPixelPercentages.push(data[APPROXIMATED_VISIBLE_CONTENT_DATA]/visibleContentArea);}
-if(CHECKERBOARDED_VISIBLE_CONTENT_DATA in data){checkerboardedPixelPercentages.push(data[CHECKERBOARDED_VISIBLE_CONTENT_DATA]/visibleContentArea);}}}
-histograms.createHistogram('mean_pixels_approximated',tr.b.Unit.byName.normalizedPercentage_smallerIsBetter,100*tr.b.math.Statistics.mean(approximatedPixelPercentages),{description:'Percentage of pixels that were approximated '+'(checkerboarding, low-resolution tiles, etc.).',summaryOptions:{},});histograms.createHistogram('mean_pixels_checkerboarded',tr.b.Unit.byName.normalizedPercentage_smallerIsBetter,100*tr.b.math.Statistics.mean(checkerboardedPixelPercentages),{description:'Percentage of pixels that were checkerboarded.',summaryOptions:{},});}
-return{addPixelsHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const BEGIN_MAIN_FRAME_EVENT='ThreadProxy::BeginMainFrame';const SEND_BEGIN_FRAME_EVENT='ThreadProxy::ScheduledActionSendBeginMainFrame';function getEventTimesByBeginFrameId_(thread,title,ranges){const out=new Map();const slices=thread.sliceGroup;for(const slice of slices.getDescendantEventsInSortedRanges(ranges)){if(slice.title!==title)continue;const id=slice.args.begin_frame_id;if(id===undefined)throw new Error('Event is missing begin_frame_id');if(out.has(id))throw new Error(`There must be exactly one ${title}`);out.set(id,slice.start);}
-return out;}
-function addQueueingDurationHistograms(histograms,model,segments){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;let targetRenderers=chromeHelper.telemetryHelper.renderersWithIR;if(targetRenderers.length===0){targetRenderers=Object.values(chromeHelper.rendererHelpers);}
-const queueingDurations=[];const ranges=segments.map(s=>s.boundsRange);for(const rendererHelper of targetRenderers){const mainThread=rendererHelper.mainThread;const compositorThread=rendererHelper.compositorThread;if(mainThread===undefined||compositorThread===undefined)continue;const beginMainFrameTimes=getEventTimesByBeginFrameId_(mainThread,BEGIN_MAIN_FRAME_EVENT,ranges);const sendBeginFrameTimes=getEventTimesByBeginFrameId_(compositorThread,SEND_BEGIN_FRAME_EVENT,ranges);for(const[id,time]of sendBeginFrameTimes){queueingDurations.push(beginMainFrameTimes.get(id)-time);}}
-histograms.createHistogram('queueing_durations',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,queueingDurations,{binBoundaries:tr.v.HistogramBinBoundaries.createExponential(0.01,2,20),summaryOptions:tr.metrics.rendering.SUMMARY_OPTIONS,description:'Time between ScheduledActionSendBeginMainFrame in '+'the compositor thread and the corresponding '+'BeginMainFrame in the main thread.'});}
-return{addQueueingDurationHistograms,};});'use strict';tr.exportTo('tr.metrics.rendering',function(){const GESTURE_EVENT='SyntheticGestureController::running';function renderingMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!chromeHelper)return;let segments=chromeHelper.telemetryHelper.irSegments;if(segments.length===0){segments=chromeHelper.telemetryHelper.animationSegments;}
-if(segments.length>0){tr.metrics.rendering.addFrameTimeHistograms(histograms,model,segments);tr.metrics.rendering.addImageDecodeTimeHistograms(histograms,model,segments);tr.metrics.rendering.addPipelineHistograms(histograms,model,segments);tr.metrics.rendering.addPixelsHistograms(histograms,model,segments);tr.metrics.rendering.addQueueingDurationHistograms(histograms,model,segments);}
-const uiSegments=chromeHelper.telemetryHelper.uiSegments;if(uiSegments.length>0){tr.metrics.rendering.addUIFrameTimeHistograms(histograms,model,chromeHelper.telemetryHelper.uiSegments);}}
-tr.metrics.MetricRegistry.register(renderingMetric,{requiredCategories:['benchmark','toplevel'],});return{renderingMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_smallerIsBetter=tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(80e3,30);const SUMMARY_OPTIONS={avg:true,count:false,max:true,min:true,std:true,sum:false,};function reportedByPageMetric(histograms,model){const timeToViewable=histograms.createHistogram('reported_by_page:time_to_viewable',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from navigation start'+'to telemetry:reported_by_page:viewable',summaryOptions:SUMMARY_OPTIONS,});const timeToInteractive=histograms.createHistogram('reported_by_page:time_to_interactive',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from navigation start '+'to telemetry:reported_by_page:interactive',summaryOptions:SUMMARY_OPTIONS,});const benchmarkTime=histograms.createHistogram('reported_by_page:benchmark_time',timeDurationInMs_smallerIsBetter,[],{binBoundaries:METRIC_BOUNDARIES,description:'Time from telemetry:reported_by_page:benchmark_begin '+'to telemetry:reported_by_page:benchmark_end',summaryOptions:SUMMARY_OPTIONS,});const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;measureUserTime(rendererHelper,'navigationStart','telemetry:reported_by_page:viewable',timeToViewable);measureUserTime(rendererHelper,'navigationStart','telemetry:reported_by_page:interactive',timeToInteractive);measureUserTime(rendererHelper,'telemetry:reported_by_page:benchmark_begin','telemetry:reported_by_page:benchmark_end',benchmarkTime);}}
-function measureUserTime(rendererHelper,startName,endName,histogram){const startEventByNavId=new Map();for(const event of rendererHelper.mainThread.sliceGroup.childEvents()){const navId=getNavigationId(event);if(!navId)continue;if(EventFinderUtils.hasCategoryAndName(event,'blink.user_timing',startName)){startEventByNavId.set(navId,event);}
-if(EventFinderUtils.hasCategoryAndName(event,'blink.user_timing',endName)){if(!startEventByNavId.has(navId)){throw Error(`Missing ${startName} for ${endName} at {event.start}`);}
-const range=tr.b.math.Range.fromExplicitRange(startEventByNavId.get(navId).start,event.start);histogram.addSample(range.duration);startEventByNavId.delete(navId);}}}
-function getNavigationId(event){return event.args.data&&event.args.data.navigationId;}
-tr.metrics.MetricRegistry.register(reportedByPageMetric);return{reportedByPageMetric};});'use strict';tr.exportTo('tr.metrics',function(){function sampleExceptionMetric(histograms,model){const hist=new tr.v.Histogram('foo',tr.b.Unit.byName.sizeInBytes_smallerIsBetter);hist.addSample(9);hist.addSample(91,{bar:new tr.v.d.GenericSet([{hello:42}])});for(const expectation of model.userModel.expectations){if(expectation instanceof tr.model.um.ResponseExpectation){}else if(expectation instanceof tr.model.um.AnimationExpectation){}else if(expectation instanceof tr.model.um.IdleExpectation){}else if(expectation instanceof tr.model.um.LoadExpectation){}}
-const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const[pid,process]of Object.entries(model.processes)){}
-histograms.addHistogram(hist);throw new Error('There was an error');}
-tr.metrics.MetricRegistry.register(sampleExceptionMetric);return{sampleExceptionMetric,};});'use strict';tr.exportTo('tr.metrics',function(){function sampleMetric(histograms,model){const hist=new tr.v.Histogram('foo',tr.b.Unit.byName.sizeInBytes_smallerIsBetter);hist.addSample(9);hist.addSample(91,{bar:new tr.v.d.GenericSet([{hello:42}])});for(const expectation of model.userModel.expectations){if(expectation instanceof tr.model.um.ResponseExpectation){}else if(expectation instanceof tr.model.um.AnimationExpectation){}else if(expectation instanceof tr.model.um.IdleExpectation){}else if(expectation instanceof tr.model.um.LoadExpectation){}}
-const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const[pid,process]of Object.entries(model.processes)){}
-histograms.addHistogram(hist);}
-tr.metrics.MetricRegistry.register(sampleMetric);return{sampleMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const HANDLE_INPUT_EVENT_TITLE='WebViewImpl::handleInputEvent';function findPrecedingEvents_(eventsA,eventsB){const events=new Map();let eventsBIndex=0;for(const eventA of eventsA){for(;eventsBIndexeventA.start)break;}
-if(eventsBIndex>0){events.set(eventA,eventsB[eventsBIndex-1]);}}
-return events;}
-function findFollowingEvents_(eventsA,eventsB){const events=new Map();let eventsBIndex=0;for(const eventA of eventsA){for(;eventsBIndex=eventA.start)break;}
-if(eventsBIndex>=0&&eventsBIndex{if(e.title===HANDLE_INPUT_EVENT_TITLE&&e.args.type==='MouseUp'){return true;}
-return e.title==='NavigationControllerImpl::GoToIndex';};return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents(),...browserHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isNavStartEvent);}
-function getSpaNavigationEvents_(rendererHelper){const isNavEvent=e=>e.category==='blink'&&e.title==='FrameLoader::updateForSameDocumentNavigation';return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isNavEvent);}
-function getInputLatencyEvents_(browserHelper){const isInputLatencyEvent=e=>e.title==='InputLatency::MouseUp';return browserHelper.getAllAsyncSlicesMatching(isInputLatencyEvent);}
-function getInputLatencyEventByBindIdMap_(browserHelper){const inputLatencyEventByBindIdMap=new Map();for(const event of getInputLatencyEvents_(browserHelper)){inputLatencyEventByBindIdMap.set(event.args.data.trace_id,event);}
-return inputLatencyEventByBindIdMap;}
-function getSpaNavigationEventToNavigationStartMap_(rendererHelper,browserHelper){const mainThread=rendererHelper.mainThread;const spaNavEvents=getSpaNavigationEvents_(rendererHelper);const navStartCandidates=getSpaNavigationStartCandidates_(rendererHelper,browserHelper).sort(tr.importer.compareEvents);const spaNavEventToNavStartCandidateMap=findPrecedingEvents_(spaNavEvents,navStartCandidates);const inputLatencyEventByBindIdMap=getInputLatencyEventByBindIdMap_(browserHelper);const spaNavEventToNavStartEventMap=new Map();for(const[spaNavEvent,navStartCandidate]of
-spaNavEventToNavStartCandidateMap){if(navStartCandidate.title===HANDLE_INPUT_EVENT_TITLE){const inputLatencySlice=inputLatencyEventByBindIdMap.get(Number(navStartCandidate.parentSlice.bindId));if(inputLatencySlice){spaNavEventToNavStartEventMap.set(spaNavEvent,inputLatencySlice);}}else{spaNavEventToNavStartEventMap.set(spaNavEvent,navStartCandidate);}}
-return spaNavEventToNavStartEventMap;}
-function getFirstPaintEvents_(rendererHelper){const isFirstPaintEvent=e=>e.category==='blink'&&e.title==='PaintLayerCompositor::updateIfNeededRecursive';return[...rendererHelper.mainThread.sliceGroup.getDescendantEvents()].filter(isFirstPaintEvent);}
-function getSpaNavigationEventToFirstPaintEventMap_(rendererHelper){const spaNavEvents=getSpaNavigationEvents_(rendererHelper).sort(tr.importer.compareEvents);const firstPaintEvents=getFirstPaintEvents_(rendererHelper).sort(tr.importer.compareEvents);return findFollowingEvents_(spaNavEvents,firstPaintEvents);}
-function findSpaNavigationsOnRenderer(rendererHelper,browserHelper){const spaNavEventToNavStartMap=getSpaNavigationEventToNavigationStartMap_(rendererHelper,browserHelper);const spaNavEventToFirstPaintEventMap=getSpaNavigationEventToFirstPaintEventMap_(rendererHelper);const spaNavigations=[];for(const[spaNavEvent,navStartEvent]of
-spaNavEventToNavStartMap){if(spaNavEventToFirstPaintEventMap.has(spaNavEvent)){const firstPaintEvent=spaNavEventToFirstPaintEventMap.get(spaNavEvent);const isNavStartAsyncSlice=navStartEvent instanceof tr.model.AsyncSlice;spaNavigations.push({navStartCandidates:{inputLatencyAsyncSlice:isNavStartAsyncSlice?navStartEvent:undefined,goToIndexSlice:isNavStartAsyncSlice?undefined:navStartEvent},firstPaintEvent,url:spaNavEvent.args.url});}}
-return spaNavigations;}
-return{findSpaNavigationsOnRenderer,};});'use strict';tr.exportTo('tr.e.chrome',function(){const SAME_AS_PARENT='same-as-parent';const TITLES_FOR_USER_FRIENDLY_CATEGORY={composite:['CompositingInputsUpdater::update','ThreadProxy::SetNeedsUpdateLayers','LayerTreeHost::DoUpdateLayers','LayerTreeHost::UpdateLayers::BuildPropertyTrees','LocalFrameView::pushPaintArtifactToCompositor','LocalFrameView::updateCompositedSelectionIfNeeded','LocalFrameView::RunCompositingLifecyclePhase','UpdateLayerTree',],gc:['minorGC','majorGC','MajorGC','MinorGC','V8.GCScavenger','V8.GCIncrementalMarking','V8.GCIdleNotification','V8.GCContext','V8.GCCompactor','V8GCController::traceDOMWrappers',],iframe_creation:['WebLocalFrameImpl::createChildframe',],imageDecode:['Decode Image','ImageFrameGenerator::decode','ImageFrameGenerator::decodeAndScale','ImageFrameGenerator::decodeToYUV','ImageResourceContent::updateImage',],input:['HitTest','ScrollableArea::scrollPositionChanged','EventHandler::handleMouseMoveEvent',],layout:['IntersectionObserverController::computeTrackedIntersectionObservations','LocalFrameView::invalidateTree','LocalFrameView::layout','LocalFrameView::performLayout','LocalFrameView::performPostLayoutTasks','LocalFrameView::performPreLayoutTasks','LocalFrameView::RunStyleAndLayoutCompositingPhases','Layout','PaintLayer::updateLayerPositionsAfterLayout','ResourceLoadPriorityOptimizer::updateAllImageResourcePriorities','WebViewImpl::updateAllLifecyclePhases','WebViewImpl::beginFrame',],parseHTML:['BackgroundHTMLParser::pumpTokenizer','BackgroundHTMLParser::sendTokensToMainThread','HTMLDocumentParser::didReceiveParsedChunkFromBackgroundParser','HTMLDocumentParser::documentElementAvailable','HTMLDocumentParser::notifyPendingTokenizedChunks','HTMLDocumentParser::processParsedChunkFromBackgroundParser','HTMLDocumentParser::processTokenizedChunkFromBackgroundParser','ParseHTML',],raster:['DisplayListRasterSource::PerformSolidColorAnalysis','Picture::Raster','RasterBufferImpl::Playback','RasterTask','RasterizerTaskImpl::RunOnWorkerThread','SkCanvas::drawImageRect()','SkCanvas::drawPicture()','SkCanvas::drawTextBlob()','TileTaskWorkerPool::PlaybackToMemory',],record:['Canvas2DLayerBridge::flushRecordingOnly','CompositingInputsUpdater::update','CompositingRequirementsUpdater::updateRecursive','ContentLayerDelegate::paintContents','DisplayItemList::Finalize','LocalFrameView::RunPaintLifecyclePhase','LocalFrameView::RunPrePaintLifecyclePhase','Paint','PaintController::commitNewDisplayItems','PaintLayerCompositor::updateIfNeededRecursive','Picture::Record','PictureLayer::Update',],style:['CSSParserImpl::parseStyleSheet.parse','CSSParserImpl::parseStyleSheet.tokenize','Document::rebuildLayoutTree','Document::recalcStyle','Document::updateActiveStyle','Document::updateStyle','Document::updateStyleInvalidationIfNeeded','LocalFrameView::updateStyleAndLayoutIfNeededRecursive','ParseAuthorStyleSheet','RuleSet::addRulesFromSheet','StyleElement::processStyleSheet','StyleEngine::createResolver','StyleEngine::updateActiveStyleSheets','StyleSheetContents::parseAuthorStyleSheet','UpdateLayoutTree',],script_parse_and_compile:['V8.CompileFullCode','V8.NewContext','V8.Parse','V8.ParseLazy','V8.RecompileSynchronous','V8.ScriptCompiler','v8.compile','v8.parseOnBackground',],script_execute:['EvaluateScript','FunctionCall','HTMLParserScriptRunner ExecuteScript','V8.Execute','V8.RunMicrotasks','V8.Task','WindowProxy::initialize','v8.callFunction','v8.run',],resource_loading:['RenderFrameImpl::didFinishDocumentLoad','RenderFrameImpl::didFinishLoad','Resource::appendData','ResourceDispatcher::OnReceivedData','ResourceDispatcher::OnReceivedResponse','ResourceDispatcher::OnRequestComplete','ResourceFetcher::requestResource','WebURLLoaderImpl::Context::Cancel','WebURLLoaderImpl::Context::OnCompletedRequest','WebURLLoaderImpl::Context::OnReceivedData','WebURLLoaderImpl::Context::OnReceivedRedirect','WebURLLoaderImpl::Context::OnReceivedResponse','WebURLLoaderImpl::Context::Start','WebURLLoaderImpl::loadAsynchronously','WebURLLoaderImpl::loadSynchronously','content::mojom::URLLoaderClient',],renderer_misc:['DecodeFont','ThreadState::completeSweep',],v8_runtime:[],[SAME_AS_PARENT]:['SyncChannel::Send',]};const COLOR_FOR_USER_FRIENDLY_CATEGORY=new tr.b.SinebowColorGenerator();const USER_FRIENDLY_CATEGORY_FOR_TITLE=new Map();for(const category in TITLES_FOR_USER_FRIENDLY_CATEGORY){TITLES_FOR_USER_FRIENDLY_CATEGORY[category].forEach(function(title){USER_FRIENDLY_CATEGORY_FOR_TITLE.set(title,category);});}
-const USER_FRIENDLY_CATEGORY_FOR_EVENT_CATEGORY={netlog:'net',overhead:'overhead',startup:'startup',gpu:'gpu',};function ChromeUserFriendlyCategoryDriver(){}
-ChromeUserFriendlyCategoryDriver.fromEvent=function(event){let userFriendlyCategory=USER_FRIENDLY_CATEGORY_FOR_TITLE.get(event.title);if(userFriendlyCategory){if(userFriendlyCategory===SAME_AS_PARENT){if(event.parentSlice){return ChromeUserFriendlyCategoryDriver.fromEvent(event.parentSlice);}}else{return userFriendlyCategory;}}
-const eventCategoryParts=tr.b.getCategoryParts(event.category);for(let i=0;ir.duration);}
-function getCPUSelfTime_(event,rangeOfInterest){if(event.duration===0||event.selfTime===0)return 0;if(event.cpuSelfTime===undefined)return 0;const cpuTimeDensity=event.cpuSelfTime/event.selfTime;return getWallClockSelfTime_(event,rangeOfInterest)*cpuTimeDensity;}
-function generateTimeBreakdownTree(mainThread,rangeOfInterest,getEventSelfTime){if(mainThread===null)return;const breakdownTree={};for(const title of
-tr.e.chrome.ChromeUserFriendlyCategoryDriver.ALL_TITLES){breakdownTree[title]={total:0,events:{}};}
-for(const event of mainThread.sliceGroup.childEvents()){if(!rangeOfInterest.intersectsRangeExclusive(event.range))continue;const eventSelfTime=getEventSelfTime(event,rangeOfInterest);const title=tr.e.chrome.ChromeUserFriendlyCategoryDriver.fromEvent(event);breakdownTree[title].total+=eventSelfTime;if(breakdownTree[title].events[event.title]===undefined){breakdownTree[title].events[event.title]=0;}
-breakdownTree[title].events[event.title]+=eventSelfTime;let timeIntersectionRatio=0;if(event.duration>0){timeIntersectionRatio=rangeOfInterest.findExplicitIntersectionDuration(event.start,event.end)/event.duration;}
-const v8Runtime=event.args['runtime-call-stat'];if(v8Runtime!==undefined){const v8RuntimeObject=JSON.parse(v8Runtime);for(const runtimeCall in v8RuntimeObject){if(v8RuntimeObject[runtimeCall].length===2){if(breakdownTree.v8_runtime.events[runtimeCall]===undefined){breakdownTree.v8_runtime.events[runtimeCall]=0;}
-const runtimeTime=tr.b.Unit.timestampFromUs(v8RuntimeObject[runtimeCall][1]*timeIntersectionRatio);breakdownTree.v8_runtime.total+=runtimeTime;breakdownTree.v8_runtime.events[runtimeCall]+=runtimeTime;}}}}
-return breakdownTree;}
-function addIdleAndBlockByNetworkBreakdown_(breakdownTree,mainThreadEvents,networkEvents,rangeOfInterest){const mainThreadEventRanges=tr.b.math.convertEventsToRanges(mainThreadEvents);const networkEventRanges=tr.b.math.convertEventsToRanges(networkEvents);const eventRanges=mainThreadEventRanges.concat(networkEventRanges);const idleRanges=tr.b.math.findEmptyRangesBetweenRanges(eventRanges,rangeOfInterest);const totalFreeDuration=tr.b.math.Statistics.sum(idleRanges,range=>range.duration);breakdownTree.idle={total:totalFreeDuration,events:{}};let totalBlockedDuration=rangeOfInterest.duration;for(const[title,component]of Object.entries(breakdownTree)){if(title==='v8_runtime')continue;totalBlockedDuration-=component.total;}
-breakdownTree.blocked_on_network={total:Math.max(totalBlockedDuration,0),events:{}};}
-function generateWallClockTimeBreakdownTree(mainThread,networkEvents,rangeOfInterest){const breakdownTree=generateTimeBreakdownTree(mainThread,rangeOfInterest,getWallClockSelfTime_);const mainThreadEventsInRange=tr.model.helpers.getSlicesIntersectingRange(rangeOfInterest,mainThread.sliceGroup.topLevelSlices);addIdleAndBlockByNetworkBreakdown_(breakdownTree,mainThreadEventsInRange,networkEvents,rangeOfInterest);return breakdownTree;}
-function generateCpuTimeBreakdownTree(mainThread,rangeOfInterest){return generateTimeBreakdownTree(mainThread,rangeOfInterest,getCPUSelfTime_);}
-return{generateTimeBreakdownTree,generateWallClockTimeBreakdownTree,generateCpuTimeBreakdownTree,};});'use strict';tr.exportTo('tr.b',function(){const ESTIMATED_IDLE_PERIOD_LENGTH_MILLISECONDS=10;const REQUEST_IDLE_CALLBACK_TIMEOUT_MILLISECONDS=100;const recordRAFStacks=false;let pendingPreAFs=[];let pendingRAFs=[];const pendingIdleCallbacks=[];let currentRAFDispatchList=undefined;let rafScheduled=false;let idleWorkScheduled=false;function scheduleRAF(){if(rafScheduled)return;rafScheduled=true;if(tr.isHeadless){Promise.resolve().then(function(){processRequests(false,0);},function(e){throw e;});}else{if(window.requestAnimationFrame){window.requestAnimationFrame(processRequests.bind(this,false));}else{const delta=Date.now()-window.performance.now();window.webkitRequestAnimationFrame(function(domTimeStamp){processRequests(false,domTimeStamp-delta);});}}}
-function nativeRequestIdleCallbackSupported(){return!tr.isHeadless&&window.requestIdleCallback;}
-function scheduleIdleWork(){if(idleWorkScheduled)return;if(!nativeRequestIdleCallbackSupported()){scheduleRAF();return;}
-idleWorkScheduled=true;window.requestIdleCallback(function(deadline,didTimeout){processIdleWork(false,deadline);},{timeout:REQUEST_IDLE_CALLBACK_TIMEOUT_MILLISECONDS});}
-function onAnimationFrameError(e,opt_stack){console.log(e.stack);if(tr.isHeadless)throw e;if(opt_stack)console.log(opt_stack);if(e.message){console.error(e.message,e.stack);}else{console.error(e);}}
-function runTask(task,frameBeginTime){try{task.callback.call(task.context,frameBeginTime);}catch(e){tr.b.onAnimationFrameError(e,task.stack);}}
-function processRequests(forceAllTasksToRun,frameBeginTime){rafScheduled=false;const currentPreAFs=pendingPreAFs;currentRAFDispatchList=pendingRAFs;pendingPreAFs=[];pendingRAFs=[];const hasRAFTasks=currentPreAFs.length||currentRAFDispatchList.length;for(let i=0;i0){runTask(currentRAFDispatchList.shift(),frameBeginTime);}
-currentRAFDispatchList=undefined;if((!hasRAFTasks&&!nativeRequestIdleCallbackSupported())||forceAllTasksToRun){const rafCompletionDeadline=frameBeginTime+ESTIMATED_IDLE_PERIOD_LENGTH_MILLISECONDS;processIdleWork(forceAllTasksToRun,{timeRemaining(){return rafCompletionDeadline-window.performance.now();}});}
-if(pendingIdleCallbacks.length>0)scheduleIdleWork();}
-function processIdleWork(forceAllTasksToRun,deadline){idleWorkScheduled=false;while(pendingIdleCallbacks.length>0){runTask(pendingIdleCallbacks.shift());if(!forceAllTasksToRun&&(tr.isHeadless||deadline.timeRemaining()<=0)){break;}}
-if(pendingIdleCallbacks.length>0)scheduleIdleWork();}
-function getStack_(){if(!recordRAFStacks)return'';const stackLines=tr.b.stackTrace();stackLines.shift();return stackLines.join('\n');}
-function requestPreAnimationFrame(callback,opt_this){pendingPreAFs.push({callback,context:opt_this||global,stack:getStack_()});scheduleRAF();}
-function requestAnimationFrameInThisFrameIfPossible(callback,opt_this){if(!currentRAFDispatchList){requestAnimationFrame(callback,opt_this);return;}
-currentRAFDispatchList.push({callback,context:opt_this||global,stack:getStack_()});return;}
-function requestAnimationFrame(callback,opt_this){pendingRAFs.push({callback,context:opt_this||global,stack:getStack_()});scheduleRAF();}
-function animationFrame(){return new Promise(resolve=>requestAnimationFrame(resolve));}
-function requestIdleCallback(callback,opt_this){pendingIdleCallbacks.push({callback,context:opt_this||global,stack:getStack_()});scheduleIdleWork();}
-function forcePendingRAFTasksToRun(frameBeginTime){if(!rafScheduled)return;processRequests(false,frameBeginTime);}
-function forceAllPendingTasksToRunForTest(){if(!rafScheduled&&!idleWorkScheduled)return;processRequests(true,0);}
-function timeout(ms){return new Promise(resolve=>window.setTimeout(resolve,ms));}
-function idle(){return new Promise(resolve=>requestIdleCallback(resolve));}
-return{animationFrame,forceAllPendingTasksToRunForTest,forcePendingRAFTasksToRun,idle,onAnimationFrameError,requestAnimationFrame,requestAnimationFrameInThisFrameIfPossible,requestIdleCallback,requestPreAnimationFrame,timeout,};});'use strict';tr.exportTo('tr.e.cc',function(){function PictureAsImageData(picture,errorOrImageData){this.picture_=picture;if(errorOrImageData instanceof ImageData){this.error_=undefined;this.imageData_=errorOrImageData;}else{this.error_=errorOrImageData;this.imageData_=undefined;}}
-PictureAsImageData.Pending=function(picture){return new PictureAsImageData(picture,undefined);};PictureAsImageData.prototype={get picture(){return this.picture_;},get error(){return this.error_;},get imageData(){return this.imageData_;},isPending(){return this.error_===undefined&&this.imageData_===undefined;},asCanvas(){if(!this.imageData_)return;const canvas=document.createElement('canvas');const ctx=canvas.getContext('2d');canvas.width=this.imageData_.width;canvas.height=this.imageData_.height;ctx.putImageData(this.imageData_,0,0);return canvas;}};return{PictureAsImageData,};});'use strict';tr.exportTo('tr.b.math',function(){const tmpVec2s=[];for(let i=0;i<8;i++){tmpVec2s[i]=vec2.create();}
-const tmpVec2a=vec4.create();const tmpVec4a=vec4.create();const tmpVec4b=vec4.create();const tmpMat4=mat4.create();const tmpMat4b=mat4.create();const p00=vec2.createXY(0,0);const p10=vec2.createXY(1,0);const p01=vec2.createXY(0,1);const p11=vec2.createXY(1,1);const lerpingVecA=vec2.create();const lerpingVecB=vec2.create();function lerpVec2(out,a,b,amt){vec2.scale(lerpingVecA,a,amt);vec2.scale(lerpingVecB,b,1-amt);vec2.add(out,lerpingVecA,lerpingVecB);vec2.normalize(out,out);return out;}
-function Quad(){this.p1=vec2.create();this.p2=vec2.create();this.p3=vec2.create();this.p4=vec2.create();}
-Quad.fromXYWH=function(x,y,w,h){const q=new Quad();vec2.set(q.p1,x,y);vec2.set(q.p2,x+w,y);vec2.set(q.p3,x+w,y+h);vec2.set(q.p4,x,y+h);return q;};Quad.fromRect=function(r){return new Quad.fromXYWH(r.x,r.y,r.width,r.height);};Quad.from4Vecs=function(p1,p2,p3,p4){const q=new Quad();vec2.set(q.p1,p1[0],p1[1]);vec2.set(q.p2,p2[0],p2[1]);vec2.set(q.p3,p3[0],p3[1]);vec2.set(q.p4,p4[0],p4[1]);return q;};Quad.from8Array=function(arr){if(arr.length!==8){throw new Error('Array must be 8 long');}
-const q=new Quad();q.p1[0]=arr[0];q.p1[1]=arr[1];q.p2[0]=arr[2];q.p2[1]=arr[3];q.p3[0]=arr[4];q.p3[1]=arr[5];q.p4[0]=arr[6];q.p4[1]=arr[7];return q;};Quad.prototype={pointInside(point){return pointInImplicitQuad(point,this.p1,this.p2,this.p3,this.p4);},boundingRect(){const x0=Math.min(this.p1[0],this.p2[0],this.p3[0],this.p4[0]);const y0=Math.min(this.p1[1],this.p2[1],this.p3[1],this.p4[1]);const x1=Math.max(this.p1[0],this.p2[0],this.p3[0],this.p4[0]);const y1=Math.max(this.p1[1],this.p2[1],this.p3[1],this.p4[1]);return new tr.b.math.Rect.fromXYWH(x0,y0,x1-x0,y1-y0);},clone(){const q=new Quad();vec2.copy(q.p1,this.p1);vec2.copy(q.p2,this.p2);vec2.copy(q.p3,this.p3);vec2.copy(q.p4,this.p4);return q;},scale(s){const q=new Quad();this.scaleFast(q,s);return q;},scaleFast(dstQuad,s){vec2.copy(dstQuad.p1,this.p1,s);vec2.copy(dstQuad.p2,this.p2,s);vec2.copy(dstQuad.p3,this.p3,s);vec2.copy(dstQuad.p3,this.p3,s);},isRectangle(){const bounds=this.boundingRect();return(bounds.x===this.p1[0]&&bounds.y===this.p1[1]&&bounds.width===this.p2[0]-this.p1[0]&&bounds.y===this.p2[1]&&bounds.width===this.p3[0]-this.p1[0]&&bounds.height===this.p3[1]-this.p2[1]&&bounds.x===this.p4[0]&&bounds.height===this.p4[1]-this.p2[1]);},projectUnitRect(rect){const q=new Quad();this.projectUnitRectFast(q,rect);return q;},projectUnitRectFast(dstQuad,rect){const v12=tmpVec2s[0];const v14=tmpVec2s[1];const v23=tmpVec2s[2];const v43=tmpVec2s[3];vec2.sub(v12,this.p2,this.p1);const l12=vec2.length(v12);vec2.scale(v12,v12,1/l12);vec2.sub(v14,this.p4,this.p1);const l14=vec2.length(v14);vec2.scale(v14,v14,1/l14);vec2.sub(v23,this.p3,this.p2);const l23=vec2.length(v23);vec2.scale(v23,v23,1/l23);vec2.sub(v43,this.p3,this.p4);const l43=vec2.length(v43);vec2.scale(v43,v43,1/l43);const b12=tmpVec2s[0];const b14=tmpVec2s[1];const b23=tmpVec2s[2];const b43=tmpVec2s[3];lerpVec2(b12,v12,v43,rect.y);lerpVec2(b43,v12,v43,1-rect.bottom);lerpVec2(b14,v14,v23,rect.x);lerpVec2(b23,v14,v23,1-rect.right);vec2.addTwoScaledUnitVectors(tmpVec2a,b12,l12*rect.x,b14,l14*rect.y);vec2.add(dstQuad.p1,this.p1,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b12,l12*-(1.0-rect.right),b23,l23*rect.y);vec2.add(dstQuad.p2,this.p2,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b43,l43*-(1.0-rect.right),b23,l23*-(1.0-rect.bottom));vec2.add(dstQuad.p3,this.p3,tmpVec2a);vec2.addTwoScaledUnitVectors(tmpVec2a,b43,l43*rect.left,b14,l14*-(1.0-rect.bottom));vec2.add(dstQuad.p4,this.p4,tmpVec2a);},toString(){return'Quad('+
-vec2.toString(this.p1)+', '+
-vec2.toString(this.p2)+', '+
-vec2.toString(this.p3)+', '+
-vec2.toString(this.p4)+')';}};function sign(p1,p2,p3){return(p1[0]-p3[0])*(p2[1]-p3[1])-
-(p2[0]-p3[0])*(p1[1]-p3[1]);}
-function pointInTriangle2(pt,p1,p2,p3){const b1=sign(pt,p1,p2)<0.0;const b2=sign(pt,p2,p3)<0.0;const b3=sign(pt,p3,p1)<0.0;return((b1===b2)&&(b2===b3));}
-function pointInImplicitQuad(point,p1,p2,p3,p4){return pointInTriangle2(point,p1,p2,p3)||pointInTriangle2(point,p1,p3,p4);}
-return{pointInTriangle2,pointInImplicitQuad,Quad,};});'use strict';tr.exportTo('tr.model',function(){function ObjectSnapshot(objectInstance,ts,args){tr.model.Event.call(this);this.objectInstance=objectInstance;this.ts=ts;this.args=args;}
-ObjectSnapshot.prototype={__proto__:tr.model.Event.prototype,preInitialize(){},initialize(){},referencedAt(item,object,field){},addBoundsToRange(range){range.addValue(this.ts);},get userFriendlyName(){return'Snapshot of '+this.objectInstance.userFriendlyName+' @ '+
-tr.b.Unit.byName.timeStampInMs.format(this.ts);}};tr.model.EventRegistry.register(ObjectSnapshot,{name:'objectSnapshot',pluralName:'objectSnapshots'});return{ObjectSnapshot,};});'use strict';tr.exportTo('tr.model',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;function ObjectInstance(parent,scopedId,category,name,creationTs,opt_baseTypeName){tr.model.Event.call(this);this.parent=parent;this.scopedId=scopedId;this.category=category;this.baseTypeName=opt_baseTypeName?opt_baseTypeName:name;this.name=name;this.creationTs=creationTs;this.creationTsWasExplicit=false;this.deletionTs=Number.MAX_VALUE;this.deletionTsWasExplicit=false;this.colorId=0;this.bounds=new tr.b.math.Range();this.snapshots=[];this.hasImplicitSnapshots=false;}
-ObjectInstance.prototype={__proto__:tr.model.Event.prototype,get typeName(){return this.name;},addBoundsToRange(range){range.addRange(this.bounds);},addSnapshot(ts,args,opt_name,opt_baseTypeName){if(ts= instance.creationTs');}
-if(ts>=this.deletionTs){throw new Error('Snapshots cannot be added after '+'an objects deletion timestamp.');}
-let lastSnapshot;if(this.snapshots.length>0){lastSnapshot=this.snapshots[this.snapshots.length-1];if(lastSnapshot.ts===ts){throw new Error('Snapshots already exists at this time!');}
-if(ts0){lastSnapshot=this.snapshots[this.snapshots.length-1];if(lastSnapshot.ts>ts){throw new Error('Instance cannot be deleted at ts='+
-ts+'. A snapshot exists that is older.');}}
-this.deletionTs=ts;this.deletionTsWasExplicit=true;},preInitialize(){for(let i=0;ithis.deletionTs){return false;}
-return true;},getSnapshotAt(ts){if(tsthis.deletionTs){throw new Error('ts must be within lifetime of this instance');}
-const snapshots=this.snapshots;const i=tr.b.findIndexInSortedIntervals(snapshots,function(snapshot){return snapshot.ts;},function(snapshot,i){if(i===snapshots.length-1){return snapshots[i].objectInstance.deletionTs;}
-return snapshots[i+1].ts-snapshots[i].ts;},ts);if(i<0){return this.snapshots[0];}
-if(i>=this.snapshots.length){return this.snapshots[this.snapshots.length-1];}
-return this.snapshots[i];},updateBounds(){this.bounds.reset();this.bounds.addValue(this.creationTs);if(this.deletionTs!==Number.MAX_VALUE){this.bounds.addValue(this.deletionTs);}else if(this.snapshots.length>0){this.bounds.addValue(this.snapshots[this.snapshots.length-1].ts);}},shiftTimestampsForward(amount){this.creationTs+=amount;if(this.deletionTs!==Number.MAX_VALUE){this.deletionTs+=amount;}
-this.snapshots.forEach(function(snapshot){snapshot.ts+=amount;});},get userFriendlyName(){return this.typeName+' object '+this.scopedId;}};tr.model.EventRegistry.register(ObjectInstance,{name:'objectInstance',pluralName:'objectInstances'});return{ObjectInstance,};});'use strict';tr.exportTo('tr.e.cc',function(){const convertedNameCache={};function convertNameToJSConvention(name){if(name in convertedNameCache){return convertedNameCache[name];}
-if(name[0]==='_'||name[name.length-1]==='_'){convertedNameCache[name]=name;return name;}
-const words=name.split('_');if(words.length===1){convertedNameCache[name]=words[0];return words[0];}
-for(let i=1;i!LcpInvalidateEvent.isLcpInvalidateEvent(finalLcpEvent));return finalCandidates;}
-findFinalLcpEventOfEachNavigation(allBrowserEvents){const lcpEvents=[];for(const lcpEvent of allBrowserEvents){if(LcpCandidateEvent.isLcpCandidateEvent(lcpEvent)){lcpEvents.push(new LcpCandidateEvent(lcpEvent));}else if(LcpInvalidateEvent.isLcpInvalidateEvent(lcpEvent)){lcpEvents.push(new LcpInvalidateEvent(lcpEvent));}}
-const lcpEventsGroupedByNavigation=new Map();for(const e of lcpEvents){const key=e.mainFrameTreeNodeId;if(!lcpEventsGroupedByNavigation.has(key)){lcpEventsGroupedByNavigation.set(key,[]);}
-lcpEventsGroupedByNavigation.get(key).push(e);}
-const finalLcpEventOfEachNavigation=[];for(const lcpEventList of lcpEventsGroupedByNavigation.values()){lcpEventList.sort((a,b)=>a.start-b.start);finalLcpEventOfEachNavigation.push(lcpEventList[lcpEventList.length-1]);}
-return finalLcpEventOfEachNavigation;}}
-return{LCP_CANDIDATE_EVENT_TITLE,LCP_INVALIDATE_EVENT_TITLE,LargestContentfulPaint,};});'use strict';tr.exportTo('tr.b.math',function(){function earthMoversDistance(firstHistogram,secondHistogram){const buckets=firstHistogram.length;if(secondHistogram.length!==buckets){throw new Error('Histograms have a different number of bins.');}
-const arrSum=arr=>arr.reduce((a,b)=>a+b,0);if(arrSum(firstHistogram)!==arrSum(secondHistogram)){throw new Error('The histograms\' sizes don\'t match.');}
-let total=0;let remainder=0;for(let bucket=0;bucketviewport.x+viewport.width)continue;if(rightviewport.y+viewport.height)continue;if(bottoma.value-b.value);horizontalSweepEdges.sort((a,b)=>a.value-b.value);const active=new Array(lineSweepRects.length).fill(false);let area=0;active[verticalSweepEdges[0].id]=true;for(let i=1;i=0;i--){rects.push(timestampedPaintRects[i].rect);const currentAreaOfUnion=SpeedIndex.lineSweep(rects,viewport);areaAddedAtTimestamp[i]={value:currentAreaOfUnion-previousAreaOfUnion,ts:timestampedPaintRects[i].ts};totalAreaOfUnion+=areaAddedAtTimestamp[i].value;previousAreaOfUnion=currentAreaOfUnion;}
-const paintProgressAtTimestamp=new Array(numberOfRects);let lastProgressRecorded=0;for(let i=0;i=navigationStart&&event.start{const evData=events.pop().args.data;if(evData.is_main_frame){sample={value:evData.cumulative_score};}});return sample?[sample]:[];}
-function addFirstMeaningfulPaintSample(samples,rendererHelper,navigationStart,fmpMarkerEvent,url){const navStartToFMPRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,fmpMarkerEvent.start);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToFMPRange);const timeToFirstMeaningfulPaint=navStartToFMPRange.duration;const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToFMPRange);samples.push({value:timeToFirstMeaningfulPaint,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStart),end:new RelatedEventSet(fmpMarkerEvent),infos:new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,start:navigationStart.start,fmp:fmpMarkerEvent.start,}]),}});}
-function addFirstMeaningfulPaintCpuTimeSample(samples,rendererHelper,navigationStart,fmpMarkerEvent,url){const navStartToFMPRange=tr.b.math.Range.fromExplicitRange(navigationStart.start,fmpMarkerEvent.start);const mainThreadCpuTime=rendererHelper.mainThread.getCpuTimeForRange(navStartToFMPRange);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,navStartToFMPRange);samples.push({value:mainThreadCpuTime,breakdownTree,diagnostics:{breakdown:createBreakdownDiagnostic(breakdownTree),start:new RelatedEventSet(navigationStart),end:new RelatedEventSet(fmpMarkerEvent),infos:new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,start:navigationStart.start,fmp:fmpMarkerEvent.start,}]),}});}
-function decorateInteractivitySampleWithDiagnostics_(rendererHelper,eventTimestamp,navigationStartEvent,firstContentfulPaintTime,domContentLoadedEndTime,url){if(eventTimestamp===undefined)return undefined;const navigationStartTime=navigationStartEvent.start;const navStartToEventTimeRange=tr.b.math.Range.fromExplicitRange(navigationStartTime,eventTimestamp);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,navStartToEventTimeRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,navStartToEventTimeRange);const breakdownDiagnostic=createBreakdownDiagnostic(breakdownTree);return{value:navStartToEventTimeRange.duration,diagnostics:tr.v.d.DiagnosticMap.fromObject({'Start':new RelatedEventSet(navigationStartEvent),'Navigation infos':new tr.v.d.GenericSet([{url,pid:rendererHelper.pid,navigationStartTime,firstContentfulPaintTime,domContentLoadedEndTime,eventTimestamp,}]),'Breakdown of [navStart, eventTimestamp]':breakdownDiagnostic,}),};}
-function getCandidateIndex(entry){return entry.targetEvent.args.data.candidateIndex;}
-function findLastCandidateForEachNavigation(timeToXEntries){const entryMap=new Map();for(const e of timeToXEntries){const navStartEvent=e.navigationStartEvent;if(!entryMap.has(navStartEvent)){entryMap.set(navStartEvent,[]);}
-entryMap.get(navStartEvent).push(e);}
-const lastCandidates=[];for(const timeToXEntriesByNavigation of entryMap.values()){let lastCandidate=timeToXEntriesByNavigation.shift();for(const entry of timeToXEntriesByNavigation){if(getCandidateIndex(entry)>getCandidateIndex(lastCandidate)){lastCandidate=entry;}}
-lastCandidates.push(lastCandidate);}
-return lastCandidates;}
-function findLargestTextPaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const timeToPaintEntries=findTimeToXEntries('loading','LargestTextPaint::Candidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const timeToPaintBlockingEntries=findTimeToXEntries('loading','LargestTextPaint::NoCandidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const lastCandidateEvents=findLastCandidateForEachNavigation(timeToPaintEntries.concat(timeToPaintBlockingEntries)).filter(event=>event.targetEvent.title!=='LargestTextPaint::NoCandidate');return collectTimeToEvent(rendererHelper,lastCandidateEvents);}
-function findLargestImagePaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents){const timeToPaintEntries=findTimeToXEntries('loading','LargestImagePaint::Candidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const timeToPaintBlockingEntries=findTimeToXEntries('loading','LargestImagePaint::NoCandidate',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const lastCandidateEvents=findLastCandidateForEachNavigation(timeToPaintEntries.concat(timeToPaintBlockingEntries)).filter(event=>event.targetEvent.title!=='LargestImagePaint::NoCandidate');return collectTimeToEvent(rendererHelper,lastCandidateEvents);}
-function findLargestContentfulPaintHistogramSamples(allBrowserEvents){const lcp=new tr.e.chrome.LargestContentfulPaint(allBrowserEvents);const lcpSamples=lcp.findCandidates().map(candidate=>{const{durationInMilliseconds,size,type,inMainFrame,mainFrameTreeNodeId}=candidate;return{value:durationInMilliseconds,diagnostics:{size:new tr.v.d.GenericSet([size]),type:new tr.v.d.GenericSet([type]),inMainFrame:new tr.v.d.GenericSet([inMainFrame]),mainFrameTreeNodeId:new tr.v.d.GenericSet([mainFrameTreeNodeId]),},};});return lcpSamples;}
-function collectLoadingMetricsForRenderer(rendererHelper){const frameToNavStartEvents=EventFinderUtils.getSortedMainThreadEventsByFrame(rendererHelper,'navigationStart','blink.user_timing');const navIdToNavStartEvents=EventFinderUtils.getSortedMainThreadEventsByNavId(rendererHelper,'navigationStart','blink.user_timing');const firstPaintSamples=collectTimeToEvent(rendererHelper,findTimeToXEntries('loading','firstPaint',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents));const timeToFCPEntries=findTimeToXEntries('loading','firstContentfulPaint',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const firstContentfulPaintSamples=collectTimeToEvent(rendererHelper,timeToFCPEntries);const firstContentfulPaintCpuTimeSamples=collectTimeToEventInCpuTime(rendererHelper,timeToFCPEntries);const onLoadSamples=collectTimeToEvent(rendererHelper,findTimeToXEntries('blink.user_timing','loadEventStart',rendererHelper,frameToNavStartEvents,navIdToNavStartEvents));const aboveTheFoldLoadedToVisibleSamples=getAboveTheFoldLoadedToVisibleSamples(rendererHelper);const firstViewportReadySamples=getFirstViewportReadySamples(rendererHelper,navIdToNavStartEvents);const largestImagePaintSamples=findLargestImagePaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const largestTextPaintSamples=findLargestTextPaintSamples(rendererHelper,frameToNavStartEvents,navIdToNavStartEvents);const layoutShiftSamples=findLayoutShiftSamples(rendererHelper);const navigationStartSamples=timeToFCPEntries.map(entry=>{return{value:entry.navigationStartEvent.start};});return{frameToNavStartEvents,firstPaintSamples,firstContentfulPaintSamples,firstContentfulPaintCpuTimeSamples,onLoadSamples,aboveTheFoldLoadedToVisibleSamples,firstViewportReadySamples,largestImagePaintSamples,largestTextPaintSamples,layoutShiftSamples,navigationStartSamples,};}
-function collectMetricsFromLoadExpectations(model,chromeHelper){const interactiveSamples=[];const firstCpuIdleSamples=[];const firstMeaningfulPaintSamples=[];const firstMeaningfulPaintCpuTimeSamples=[];const totalBlockingTimeSamples=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}
-const rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];if(expectation.fmpEvent!==undefined){addFirstMeaningfulPaintSample(firstMeaningfulPaintSamples,rendererHelper,expectation.navigationStart,expectation.fmpEvent,expectation.url);addFirstMeaningfulPaintCpuTimeSample(firstMeaningfulPaintCpuTimeSamples,rendererHelper,expectation.navigationStart,expectation.fmpEvent,expectation.url);}
-if(expectation.firstCpuIdleTime!==undefined){firstCpuIdleSamples.push(decorateInteractivitySampleWithDiagnostics_(rendererHelper,expectation.firstCpuIdleTime,expectation.navigationStart,expectation.fcpEvent.start,expectation.domContentLoadedEndEvent.start,expectation.url));}
-if(expectation.timeToInteractive!==undefined){interactiveSamples.push(decorateInteractivitySampleWithDiagnostics_(rendererHelper,expectation.timeToInteractive,expectation.navigationStart,expectation.fcpEvent.start,expectation.domContentLoadedEndEvent.start,expectation.url));}
-if(expectation.totalBlockingTime!==undefined){totalBlockingTimeSamples.push({value:expectation.totalBlockingTime,diagnostics:{url:new tr.v.d.GenericSet([expectation.url]),navigationStart:new RelatedEventSet(expectation.navigationStart),firstContentfulPaint:new RelatedEventSet(expectation.fcpEvent),interactiveTime:new tr.v.d.GenericSet([expectation.timeToInteractive]),}});}}
-return{firstMeaningfulPaintSamples,firstMeaningfulPaintCpuTimeSamples,firstCpuIdleSamples,interactiveSamples,totalBlockingTimeSamples,};}
-function addSamplesToHistogram(samples,histogram,histograms){for(const sample of samples){histogram.addSample(sample.value,sample.diagnostics);if(histogram.name!=='timeToFirstContentfulPaint')continue;if(!sample.breakdownTree)continue;for(const[category,breakdown]of Object.entries(sample.breakdownTree)){const relatedName=`${histogram.name}:${category}`;let relatedHist=histograms.getHistogramsNamed(relatedName)[0];if(!relatedHist){relatedHist=histograms.createHistogram(relatedName,histogram.unit,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,summaryOptions:{count:false,max:false,min:false,sum:false,},});let relatedNames=histogram.diagnostics.get('breakdown');if(!relatedNames){relatedNames=new tr.v.d.RelatedNameMap();histogram.diagnostics.set('breakdown',relatedNames);}
-relatedNames.set(category,relatedName);}
-relatedHist.addSample(breakdown.total,{breakdown:tr.v.d.Breakdown.fromEntries(Object.entries(breakdown.events)),});}}}
-function loadingMetric(histograms,model){const firstPaintHistogram=histograms.createHistogram('timeToFirstPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first paint',summaryOptions:SUMMARY_OPTIONS,});const firstContentfulPaintHistogram=histograms.createHistogram('timeToFirstContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first contentful paint',summaryOptions:SUMMARY_OPTIONS,});const firstContentfulPaintCpuTimeHistogram=histograms.createHistogram('cpuTimeToFirstContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'CPU time to first contentful paint',summaryOptions:SUMMARY_OPTIONS,});const onLoadHistogram=histograms.createHistogram('timeToOnload',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to onload. '+'This is temporary metric used for PCv1/v2 sanity checking',summaryOptions:SUMMARY_OPTIONS,});const firstMeaningfulPaintHistogram=histograms.createHistogram('timeToFirstMeaningfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'time to first meaningful paint',summaryOptions:SUMMARY_OPTIONS,});const firstMeaningfulPaintCpuTimeHistogram=histograms.createHistogram('cpuTimeToFirstMeaningfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'CPU time to first meaningful paint',summaryOptions:SUMMARY_OPTIONS,});const timeToInteractiveHistogram=histograms.createHistogram('timeToInteractive',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time to Interactive',summaryOptions:SUMMARY_OPTIONS,});const totalBlockingTimeHistogram=histograms.createHistogram('totalBlockingTime',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Total Blocking Time',summaryOptions:SUMMARY_OPTIONS,});const timeToFirstCpuIdleHistogram=histograms.createHistogram('timeToFirstCpuIdle',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time to First CPU Idle',summaryOptions:SUMMARY_OPTIONS,});const aboveTheFoldLoadedToVisibleHistogram=histograms.createHistogram('aboveTheFoldLoadedToVisible',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time from first visible to load for AMP pages only.',summaryOptions:SUMMARY_OPTIONS,});const firstViewportReadyHistogram=histograms.createHistogram('timeToFirstViewportReady',timeDurationInMs_smallerIsBetter,[],{binBoundaries:TIME_TO_INTERACTIVE_BOUNDARIES,description:'Time from navigation to load for AMP pages only. ',summaryOptions:SUMMARY_OPTIONS,});const largestImagePaintHistogram=histograms.createHistogram('largestImagePaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Image Paint',summaryOptions:SUMMARY_OPTIONS,});const largestTextPaintHistogram=histograms.createHistogram('largestTextPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Text Paint',summaryOptions:SUMMARY_OPTIONS,});const largestContentfulPaintHistogram=histograms.createHistogram('largestContentfulPaint',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'Time to Largest Contentful Paint',summaryOptions:SUMMARY_OPTIONS,});const layoutShiftHistogram=histograms.createHistogram('mainFrameCumulativeLayoutShift',unitlessNumber_smallerIsBetter,[],{binBoundaries:LAYOUT_SHIFT_SCORE_BOUNDARIES,description:'Main Frame Document Cumulative Layout Shift Score',summaryOptions:SUMMARY_OPTIONS,});const navigationStartHistogram=histograms.createHistogram('navigationStart',timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:'navigationStart',summaryOptions:SUMMARY_OPTIONS,});tr.metrics.sh.rectsBasedSpeedIndexMetric(histograms,model);const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const pid in chromeHelper.rendererHelpers){const rendererHelper=chromeHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI)continue;const samplesSet=collectLoadingMetricsForRenderer(rendererHelper);const lcpSamples=findLargestContentfulPaintHistogramSamples(chromeHelper.browserHelper.mainThread.sliceGroup.slices);addSamplesToHistogram(lcpSamples,largestContentfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstPaintSamples,firstPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstContentfulPaintSamples,firstContentfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstContentfulPaintCpuTimeSamples,firstContentfulPaintCpuTimeHistogram,histograms);addSamplesToHistogram(samplesSet.onLoadSamples,onLoadHistogram,histograms);addSamplesToHistogram(samplesSet.aboveTheFoldLoadedToVisibleSamples,aboveTheFoldLoadedToVisibleHistogram,histograms);addSamplesToHistogram(samplesSet.firstViewportReadySamples,firstViewportReadyHistogram,histograms);addSamplesToHistogram(samplesSet.largestImagePaintSamples,largestImagePaintHistogram,histograms);addSamplesToHistogram(samplesSet.largestTextPaintSamples,largestTextPaintHistogram,histograms);addSamplesToHistogram(samplesSet.layoutShiftSamples,layoutShiftHistogram,histograms);addSamplesToHistogram(samplesSet.navigationStartSamples,navigationStartHistogram,histograms);}
-const samplesSet=collectMetricsFromLoadExpectations(model,chromeHelper);addSamplesToHistogram(samplesSet.firstMeaningfulPaintSamples,firstMeaningfulPaintHistogram,histograms);addSamplesToHistogram(samplesSet.firstMeaningfulPaintCpuTimeSamples,firstMeaningfulPaintCpuTimeHistogram,histograms);addSamplesToHistogram(samplesSet.interactiveSamples,timeToInteractiveHistogram,histograms);addSamplesToHistogram(samplesSet.firstCpuIdleSamples,timeToFirstCpuIdleHistogram,histograms);addSamplesToHistogram(samplesSet.totalBlockingTimeSamples,totalBlockingTimeHistogram,histograms);}
-tr.metrics.MetricRegistry.register(loadingMetric);return{loadingMetric,createBreakdownDiagnostic};});'use strict';tr.exportTo('tr.metrics',function(){const SPA_NAVIGATION_START_TO_FIRST_PAINT_DURATION_BIN_BOUNDARY=tr.v.HistogramBinBoundaries.createExponential(1,1000,50);function spaNavigationMetric(histograms,model){const histogram=new tr.v.Histogram('spaNavigationStartToFpDuration',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,SPA_NAVIGATION_START_TO_FIRST_PAINT_DURATION_BIN_BOUNDARY);histogram.description='Latency between the input event causing'+' a SPA navigation and the first paint event after it';histogram.customizeSummaryOptions({count:false,sum:false,});const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(!modelHelper){return;}
-const rendererHelpers=modelHelper.rendererHelpers;if(!rendererHelpers){return;}
-const browserHelper=modelHelper.browserHelper;for(const rendererHelper of Object.values(rendererHelpers)){const spaNavigations=tr.metrics.findSpaNavigationsOnRenderer(rendererHelper,browserHelper);for(const spaNav of spaNavigations){let beginTs=0;if(spaNav.navStartCandidates.inputLatencyAsyncSlice){const beginData=spaNav.navStartCandidates.inputLatencyAsyncSlice.args.data;beginTs=model.convertTimestampToModelTime('traceEventClock',beginData.INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT.time);}else{beginTs=spaNav.navStartCandidates.goToIndexSlice.start;}
-const rangeOfInterest=tr.b.math.Range.fromExplicitRange(beginTs,spaNav.firstPaintEvent.start);const networkEvents=tr.e.chrome.EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,rangeOfInterest);const breakdownDict=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,rangeOfInterest);const breakdownDiagnostic=new tr.v.d.Breakdown();breakdownDiagnostic.colorScheme=tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER;for(const label in breakdownDict){breakdownDiagnostic.set(label,parseInt(breakdownDict[label].total*1e3)/1e3);}
-histogram.addSample(rangeOfInterest.duration,{'Breakdown of [navStart, firstPaint]':breakdownDiagnostic,'Start':new tr.v.d.RelatedEventSet(spaNav.navigationStart),'End':new tr.v.d.RelatedEventSet(spaNav.firstPaintEvent),'Navigation infos':new tr.v.d.GenericSet([{url:spaNav.url,pid:rendererHelper.pid,navStart:beginTs,firstPaint:spaNav.firstPaintEvent.start}]),});}}
-histograms.addHistogram(histogram);}
-tr.metrics.MetricRegistry.register(spaNavigationMetric);return{spaNavigationMetric,};});'use strict';tr.exportTo('tr.b',function(){function max(a,b){if(a===undefined)return b;if(b===undefined)return a;return Math.max(a,b);}
-function IntervalTree(beginPositionCb,endPositionCb){this.beginPositionCb_=beginPositionCb;this.endPositionCb_=endPositionCb;this.root_=undefined;this.size_=0;}
-IntervalTree.prototype={insert(datum){const startPosition=this.beginPositionCb_(datum);const endPosition=this.endPositionCb_(datum);const node=new IntervalTreeNode(datum,startPosition,endPosition);this.size_++;this.root_=this.insertNode_(this.root_,node);this.root_.colour=Colour.BLACK;return datum;},insertNode_(root,node){if(root===undefined)return node;if(root.leftNode&&root.leftNode.isRed&&root.rightNode&&root.rightNode.isRed){this.flipNodeColour_(root);}
-if(node.key=queryHigh){if(!this.leftNode_)return;return this.leftNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}
-if(this.maxHighLeft_>queryLow){this.leftNode_.appendIntersectionsInto_(ret,queryLow,queryHigh);}
-if(this.highValue>queryLow){for(let i=(this.data.length-1);i>=0;--i){if(this.data[i].high0){queue.sort((domain1,domain2)=>domain1.transformer.error-domain2.transformer.error);const current=queue.shift();if(current.domainId===toDomainId){return current.transformer;}
-if(visitedDomainIds.has(current.domainId)){continue;}
-visitedDomainIds.add(current.domainId);const outgoingTransformers=this.transformerMapByDomainId_[current.domainId];if(!outgoingTransformers)continue;for(const outgoingDomainId in outgoingTransformers){const toNextDomainTransformer=outgoingTransformers[outgoingDomainId];const toCurrentDomainTransformer=current.transformer;queue.push({domainId:outgoingDomainId,transformer:Transformer.compose(toNextDomainTransformer,toCurrentDomainTransformer)});}}
-return undefined;},selectModelDomainId_(){this.ensureAllDomainsAreConnected_();for(const chromeDomainId of POSSIBLE_CHROME_CLOCK_DOMAINS){if(this.domainsSeen_.has(chromeDomainId)){this.modelDomainId_=chromeDomainId;return;}}
-const domainsSeenArray=Array.from(this.domainsSeen_);domainsSeenArray.sort();this.modelDomainId_=domainsSeenArray[0];},ensureAllDomainsAreConnected_(){let firstDomainId=undefined;for(const domainId of this.domainsSeen_){if(!firstDomainId){firstDomainId=domainId;continue;}
-if(!this.getTransformerBetween_(firstDomainId,domainId)){throw new Error('Unable to select a master clock domain because no '+'path can be found from "'+firstDomainId+'" to "'+domainId+'".');}}
-return true;},onDomainSeen_(domainId){if(domainId===ClockDomainId.UNKNOWN_CHROME_LEGACY&&!this.domainsSeen_.has(ClockDomainId.UNKNOWN_CHROME_LEGACY)){for(const chromeDomainId of POSSIBLE_CHROME_CLOCK_DOMAINS){if(chromeDomainId===ClockDomainId.UNKNOWN_CHROME_LEGACY){continue;}
-this.collapseDomains_(ClockDomainId.UNKNOWN_CHROME_LEGACY,chromeDomainId);}}
-this.domainsSeen_.add(domainId);},onSyncCompleted_(marker1,marker2){const forwardTransformer=Transformer.fromMarkers(marker1,marker2);const backwardTransformer=Transformer.fromMarkers(marker2,marker1);const existingTransformer=this.getOrCreateTransformerMap_(marker1.domainId)[marker2.domainId];if(!existingTransformer||forwardTransformer.errorsyncId1.localeCompare(syncId2));for(const[syncId,markers]of markersBySyncIdEntries){const sortedMarkers=markers.sort((a,b)=>a.domainId.localeCompare(b.domainId));for(const m of markers){dotString+=`  "${syncId}" -- ${m.domainId} `;dotString+=`[label="[${m.startTs}, ${m.endTs}]"]\n`;}}
-dotString+='}';return dotString;}};function ClockSyncMarker(domainId,startTs,opt_endTs){this.domainId=domainId;this.startTs=startTs;this.endTs=opt_endTs===undefined?startTs:opt_endTs;}
-ClockSyncMarker.prototype={get duration(){return this.endTs-this.startTs;},get ts(){return this.startTs+this.duration/2;}};function Transformer(fn,error){this.fn=fn;this.error=error;}
-Transformer.IDENTITY=new Transformer((x=>x),0);Transformer.compose=function(aToB,bToC){return new Transformer((ts)=>bToC.fn(aToB.fn(ts)),aToB.error+bToC.error);};Transformer.fromMarkers=function(fromMarker,toMarker){let fromTs=fromMarker.ts;let toTs=toMarker.ts;if(fromMarker.domainId===ClockDomainId.BATTOR&&toMarker.duration>BATTOR_FAST_SYNC_THRESHOLD_MS){toTs=toMarker.startTs;}else if(toMarker.domainId===ClockDomainId.BATTOR&&fromMarker.duration>BATTOR_FAST_SYNC_THRESHOLD_MS){fromTs=fromMarker.startTs;}
-const tsShift=toTs-fromTs;return new Transformer((ts)=>ts+tsShift,fromMarker.duration+toMarker.duration);};return{ClockDomainId,ClockSyncManager,};});'use strict';tr.exportTo('tr.model',function(){return{BROWSER_PROCESS_PID_REF:-1,OBJECT_DEFAULT_SCOPE:'ptr',LOCAL_ID_PHASES:new Set(['N','D','O','(',')'])};});'use strict';tr.exportTo('tr.model',function(){function CounterSample(series,timestamp,value){tr.model.Event.call(this);this.series_=series;this.timestamp_=timestamp;this.value_=value;}
-CounterSample.groupByTimestamp=function(samples){const samplesByTimestamp=tr.b.groupIntoMap(samples,s=>s.timestamp);const timestamps=Array.from(samplesByTimestamp.keys());timestamps.sort();const groups=[];for(const ts of timestamps){const group=samplesByTimestamp.get(ts);group.sort((x,y)=>x.series.seriesIndex-y.series.seriesIndex);groups.push(group);}
-return groups;};CounterSample.prototype={__proto__:tr.model.Event.prototype,get series(){return this.series_;},get timestamp(){return this.timestamp_;},get value(){return this.value_;},set timestamp(timestamp){this.timestamp_=timestamp;},addBoundsToRange(range){range.addValue(this.timestamp);},getSampleIndex(){return tr.b.findLowIndexInSortedArray(this.series.timestamps,function(x){return x;},this.timestamp_);},get userFriendlyName(){return'Counter sample from '+this.series_.title+' at '+
-tr.b.Unit.byName.timeStampInMs.format(this.timestamp);}};tr.model.EventRegistry.register(CounterSample,{name:'counterSample',pluralName:'counterSamples'});return{CounterSample,};});'use strict';tr.exportTo('tr.model',function(){function EventContainer(){this.guid_=tr.b.GUID.allocateSimple();this.important=true;this.bounds_=new tr.b.math.Range();}
-EventContainer.prototype={get guid(){return this.guid_;},get stableId(){throw new Error('Not implemented');},get bounds(){return this.bounds_;},updateBounds(){throw new Error('Not implemented');},shiftTimestampsForward(amount){throw new Error('Not implemented');},*childEvents(){},*getDescendantEvents(){yield*this.childEvents();for(const container of this.childEventContainers()){yield*container.getDescendantEvents();}},*childEventContainers(){},*getDescendantEventContainers(){yield this;for(const container of this.childEventContainers()){yield*container.getDescendantEventContainers();}},*getDescendantEventsInSortedRanges(ranges,opt_containerPredicate){if(opt_containerPredicate===undefined||opt_containerPredicate(this)){for(const event of this.childEvents()){const i=tr.b.findFirstTrueIndexInSortedArray(ranges,range=>event.start<=range.max);if(i=ranges[i].min)yield event;}}
-for(const container of this.childEventContainers()){yield*container.getDescendantEventsInSortedRanges(ranges,opt_containerPredicate);}},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){},*findTopmostSlices(eventPredicate){for(const ec of this.getDescendantEventContainers()){yield*ec.findTopmostSlicesInThisContainer(eventPredicate);}},*findTopmostSlicesNamed(name){yield*this.findTopmostSlices(e=>e.title===name);}};return{EventContainer,};});'use strict';tr.exportTo('tr.model',function(){const CounterSample=tr.model.CounterSample;function CounterSeries(name,color){tr.model.EventContainer.call(this);this.name_=name;this.color_=color;this.timestamps_=[];this.samples_=[];this.counter=undefined;this.seriesIndex=undefined;}
-CounterSeries.prototype={__proto__:tr.model.EventContainer.prototype,get length(){return this.timestamps_.length;},get name(){return this.name_;},get color(){return this.color_;},get samples(){return this.samples_;},get timestamps(){return this.timestamps_;},getSample(idx){return this.samples_[idx];},getTimestamp(idx){return this.timestamps_[idx];},addCounterSample(ts,val){const sample=new CounterSample(this,ts,val);this.addSample(sample);return sample;},addSample(sample){this.timestamps_.push(sample.timestamp);this.samples_.push(sample);},getStatistics(sampleIndices){let sum=0;let min=Number.MAX_VALUE;let max=-Number.MAX_VALUE;for(let i=0;i=0){const curSlice=this.thread.timeSlices[curIndex];if(!curSlice.cpuOnWhichThreadWasRunning){curIndex--;continue;}
-cpuSliceWhenLastRunning=curSlice.getAssociatedCpuSlice();break;}
-if(!cpuSliceWhenLastRunning)return undefined;const cpu=cpuSliceWhenLastRunning.cpu;const indexOfSliceOnCpuWhenLastRunning=cpu.indexOf(cpuSliceWhenLastRunning);const nextRunningSlice=cpu.slices[indexOfSliceOnCpuWhenLastRunning+1];if(!nextRunningSlice)return undefined;if(Math.abs(nextRunningSlice.start-cpuSliceWhenLastRunning.end)<0.00001){return nextRunningSlice;}
-return undefined;}};tr.model.EventRegistry.register(ThreadTimeSlice,{name:'threadTimeSlice',pluralName:'threadTimeSlices'});return{ThreadTimeSlice,SCHEDULING_STATE,};});'use strict';tr.exportTo('tr.model',function(){const Slice=tr.model.Slice;function CpuSlice(cat,title,colorId,start,args,opt_duration){Slice.apply(this,arguments);this.threadThatWasRunning=undefined;this.cpu=undefined;}
-CpuSlice.prototype={__proto__:Slice.prototype,get analysisTypeName(){return'tr.ui.analysis.CpuSlice';},getAssociatedTimeslice(){if(!this.threadThatWasRunning){return undefined;}
-const timeSlices=this.threadThatWasRunning.timeSlices;for(let i=0;iinstance.deletionTs||instance.creationTsWasExplicit){throw new Error('At the provided timestamp, no instance was still alive');}
-if(instance.snapshots.length!==0){throw new Error('Cannot shift creationTs forward, '+'snapshots have been added. First snap was at ts='+
-instance.snapshots[0].ts+' and creationTs was '+
-instance.creationTs);}
-instance.creationTs=ts;}else if(i>=this.instances.length){instance=this.instances[this.instances.length-1];if(ts>=instance.deletionTs){instance=this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts,opt_baseTypeName);this.instances.push(instance);}else{let lastValidIndex;for(let i=this.instances.length-1;i>=0;i--){const tmp=this.instances[i];if(ts>=tmp.deletionTs)break;if(tmp.creationTsWasExplicit===false&&tmp.snapshots.length===0){lastValidIndex=i;}}
-if(lastValidIndex===undefined){throw new Error('Cannot add snapshot. No instance was alive that was mutable.');}
-instance=this.instances[lastValidIndex];instance.creationTs=ts;}}else{instance=this.instances[i];}
-return instance.addSnapshot(ts,args,name,opt_baseTypeName);},get lastInstance(){if(this.instances.length===0)return undefined;return this.instances[this.instances.length-1];},idWasDeleted(category,name,ts){if(this.instances.length===0){this.instances.push(this.createObjectInstanceFunction_(this.parent,this.scopedId,category,name,ts));}
-let lastInstance=this.instances[this.instances.length-1];if(ts=this.instances.length){return undefined;}
-return this.instances[i];}};return{TimeToObjectInstanceMap,};});'use strict';tr.exportTo('tr.model',function(){const ObjectInstance=tr.model.ObjectInstance;const ObjectSnapshot=tr.model.ObjectSnapshot;function ObjectCollection(parent){tr.model.EventContainer.call(this);this.parent=parent;this.instanceMapsByScopedId_={};this.instancesByTypeName_={};this.createObjectInstance_=this.createObjectInstance_.bind(this);}
-ObjectCollection.prototype={__proto__:tr.model.EventContainer.prototype,*childEvents(){for(const instance of this.getAllObjectInstances()){yield instance;yield*instance.snapshots;}},createObjectInstance_(parent,scopedId,category,name,creationTs,opt_baseTypeName){const constructor=tr.model.ObjectInstance.subTypes.getConstructor(category,name);const instance=new constructor(parent,scopedId,category,name,creationTs,opt_baseTypeName);const typeName=instance.typeName;let instancesOfTypeName=this.instancesByTypeName_[typeName];if(!instancesOfTypeName){instancesOfTypeName=[];this.instancesByTypeName_[typeName]=instancesOfTypeName;}
-instancesOfTypeName.push(instance);return instance;},getOrCreateInstanceMap_(scopedId){let dict;if(scopedId.scope in this.instanceMapsByScopedId_){dict=this.instanceMapsByScopedId_[scopedId.scope];}else{dict={};this.instanceMapsByScopedId_[scopedId.scope]=dict;}
-let instanceMap=dict[scopedId.id];if(instanceMap)return instanceMap;instanceMap=new tr.model.TimeToObjectInstanceMap(this.createObjectInstance_,this.parent,scopedId);dict[scopedId.id]=instanceMap;return instanceMap;},idWasCreated(scopedId,category,name,ts){const instanceMap=this.getOrCreateInstanceMap_(scopedId);return instanceMap.idWasCreated(category,name,ts);},addSnapshot(scopedId,category,name,ts,args,opt_baseTypeName){const instanceMap=this.getOrCreateInstanceMap_(scopedId);const snapshot=instanceMap.addSnapshot(category,name,ts,args,opt_baseTypeName);if(snapshot.objectInstance.category!==category){const msg='Added snapshot name='+name+' with cat='+category+' impossible. It instance was created/snapshotted with cat='+
-snapshot.objectInstance.category+' name='+
-snapshot.objectInstance.name;throw new Error(msg);}
-if(opt_baseTypeName&&snapshot.objectInstance.baseTypeName!==opt_baseTypeName){throw new Error('Could not add snapshot with baseTypeName='+
-opt_baseTypeName+'. It '+'was previously created with name='+
-snapshot.objectInstance.baseTypeName);}
-if(snapshot.objectInstance.name!==name){throw new Error('Could not add snapshot with name='+name+'. It '+'was previously created with name='+
-snapshot.objectInstance.name);}
-return snapshot;},idWasDeleted(scopedId,category,name,ts){const instanceMap=this.getOrCreateInstanceMap_(scopedId);const deletedInstance=instanceMap.idWasDeleted(category,name,ts);if(!deletedInstance)return;if(deletedInstance.category!==category){const msg='Deleting object '+deletedInstance.name+' with a different category '+'than when it was created. It previous had cat='+
-deletedInstance.category+' but the delete command '+'had cat='+category;throw new Error(msg);}
-if(deletedInstance.baseTypeName!==name){throw new Error('Deletion requested for name='+
-name+' could not proceed: '+'An existing object with baseTypeName='+
-deletedInstance.baseTypeName+' existed.');}},autoDeleteObjects(maxTimestamp){for(const imapById of Object.values(this.instanceMapsByScopedId_)){for(const i2imap of Object.values(imapById)){const lastInstance=i2imap.lastInstance;if(lastInstance.deletionTs!==Number.MAX_VALUE)continue;i2imap.idWasDeleted(lastInstance.category,lastInstance.name,maxTimestamp);lastInstance.deletionTsWasExplicit=false;}}},getObjectInstanceAt(scopedId,ts){let instanceMap;if(scopedId.scope in this.instanceMapsByScopedId_){instanceMap=this.instanceMapsByScopedId_[scopedId.scope][scopedId.id];}
-if(!instanceMap)return undefined;return instanceMap.getInstanceAt(ts);},getSnapshotAt(scopedId,ts){const instance=this.getObjectInstanceAt(scopedId,ts);if(!instance)return undefined;return instance.getSnapshotAt(ts);},iterObjectInstances(iter,opt_this){opt_this=opt_this||this;for(const imapById of Object.values(this.instanceMapsByScopedId_)){for(const i2imap of Object.values(imapById)){i2imap.instances.forEach(iter,opt_this);}}},getAllObjectInstances(){const instances=[];this.iterObjectInstances(function(i){instances.push(i);});return instances;},getAllInstancesNamed(name){return this.instancesByTypeName_[name];},getAllInstancesByTypeName(){return this.instancesByTypeName_;},preInitializeAllObjects(){this.iterObjectInstances(function(instance){instance.preInitialize();});},initializeAllObjects(){this.iterObjectInstances(function(instance){instance.initialize();});},initializeInstances(){this.iterObjectInstances(function(instance){instance.initialize();});},updateBounds(){this.bounds.reset();this.iterObjectInstances(function(instance){instance.updateBounds();this.bounds.addRange(instance.bounds);},this);},shiftTimestampsForward(amount){this.iterObjectInstances(function(instance){instance.shiftTimestampsForward(amount);});},addCategoriesToDict(categoriesDict){this.iterObjectInstances(function(instance){categoriesDict[instance.category]=true;});}};return{ObjectCollection,};});'use strict';tr.exportTo('tr.model',function(){class AsyncSliceGroup extends tr.model.EventContainer{constructor(parentContainer,opt_name){super();this.parentContainer_=parentContainer;this.name_=opt_name;this.slices=[];this.viewSubGroups_=undefined;this.nestedLevel_=0;this.hasNestedSubGroups_=true;this.title_=undefined;}
-get parentContainer(){return this.parentContainer_;}
-get model(){return this.parentContainer_.parent.model;}
-get stableId(){return this.parentContainer_.stableId+'.AsyncSliceGroup';}
-get title(){if(this.nested_level_===0){return'';}
-return this.title_;}
-getSettingsKey(){if(this.name_===undefined){return undefined;}
-const parentKey=this.parentContainer_.getSettingsKey();if(parentKey===undefined){return undefined;}
-return parentKey+'.'+this.name_;}
-push(slice){if(this.viewSubGroups_!==undefined){throw new Error('No new slices are allowed when view sub-groups already formed.');}
-slice.parentContainer=this.parentContainer;this.slices.push(slice);return slice;}
-get length(){return this.slices.length;}
-shiftTimestampsForward(amount){for(const slice of this.childEvents()){slice.start+=amount;}}
-updateBounds(){this.bounds.reset();for(let i=0;ia.title.localeCompare(b.title));return this.viewSubGroups_;}*findTopmostSlicesInThisContainer(eventPredicate,opt_this){for(const slice of this.slices){if(slice.isTopLevel){yield*slice.findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this);}}}*childEvents(){for(const slice of this.slices){yield slice;yield*slice.enumerateAllDescendents();}}*childEventContainers(){}}
-return{AsyncSliceGroup,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const ThreadSlice=tr.model.ThreadSlice;function getSliceLo(s){return s.start;}
-function getSliceHi(s){return s.end;}
-function SliceGroup(parentContainer,opt_sliceConstructor,opt_name){tr.model.EventContainer.call(this);this.parentContainer_=parentContainer;const sliceConstructor=opt_sliceConstructor||ThreadSlice;this.sliceConstructor=sliceConstructor;this.sliceConstructorSubTypes=this.sliceConstructor.subTypes;if(!this.sliceConstructorSubTypes){throw new Error('opt_sliceConstructor must have a subtype registry.');}
-this.openPartialSlices_=[];this.slices=[];this.topLevelSlices=[];this.haveTopLevelSlicesBeenBuilt=false;this.name_=opt_name;if(this.model===undefined){throw new Error('SliceGroup must have model defined.');}}
-SliceGroup.prototype={__proto__:tr.model.EventContainer.prototype,get parentContainer(){return this.parentContainer_;},get model(){return this.parentContainer_.model;},get stableId(){return this.parentContainer_.stableId+'.SliceGroup';},getSettingsKey(){if(!this.name_)return undefined;const parentKey=this.parentContainer_.getSettingsKey();if(!parentKey)return undefined;return parentKey+'.'+this.name;},get length(){return this.slices.length;},pushSlice(slice){this.haveTopLevelSlicesBeenBuilt=false;slice.parentContainer=this.parentContainer_;this.slices.push(slice);return slice;},pushSlices(slices){this.haveTopLevelSlicesBeenBuilt=false;slices.forEach(function(slice){slice.parentContainer=this.parentContainer_;this.slices.push(slice);},this);},beginSlice(category,title,ts,opt_args,opt_tts,opt_argsStripped,opt_colorId,opt_bindId){const colorId=opt_colorId||ColorScheme.getColorIdForGeneralPurposeString(title);const sliceConstructorSubTypes=this.sliceConstructorSubTypes;const sliceType=sliceConstructorSubTypes.getConstructor(category,title);const slice=new sliceType(category,title,colorId,ts,opt_args?opt_args:{},null,opt_tts,undefined,opt_argsStripped,opt_bindId);this.openPartialSlices_.push(slice);slice.didNotFinish=true;this.pushSlice(slice);return slice;},isTimestampValidForBeginOrEnd(ts){if(!this.openPartialSlices_.length)return true;const top=this.openPartialSlices_[this.openPartialSlices_.length-1];return ts>=top.start;},get openSliceCount(){return this.openPartialSlices_.length;},get mostRecentlyOpenedPartialSlice(){if(!this.openPartialSlices_.length)return undefined;return this.openPartialSlices_[this.openPartialSlices_.length-1];},endSlice(ts,opt_tts,opt_colorId){if(!this.openSliceCount){throw new Error('endSlice called without an open slice');}
-const slice=this.openPartialSlices_[this.openSliceCount-1];this.openPartialSlices_.splice(this.openSliceCount-1,1);if(tsrange.max){rangeIndex++;if(rangeIndex>=ranges.length)return;range=ranges[rangeIndex];}
-if(event.end>=range.min)yield event;}},getSlicesOfName(title){const slices=[];for(let i=0;its)return slice;if(slice.guid<=refGuid)continue;return slice;}
-return undefined;},hasCpuDuration_(){if(this.slices.some(function(slice){return slice.cpuDuration!==undefined;}))return true;return false;},createSubSlices(){this.haveTopLevelSlicesBeenBuilt=true;this.createSubSlicesImpl_();if(!this.hasCpuDuration_()&&this.parentContainer.timeSlices){this.addCpuTimeToSubslices_(this.parentContainer.timeSlices);}
-this.slices.forEach(function(slice){let selfTime=slice.duration;for(let i=0;itimeSlice.end||slice.endtimeSlice.start){duration-=slice.start-timeSlice.start;}
-if(timeSlice.end>slice.end){duration-=timeSlice.end-slice.end;}
-if(slice.cpuDuration){slice.cpuDuration+=duration;}else{slice.cpuDuration=duration;}
-for(let i=0;i0){throw new Error('groupA has open partial slices');}
-if(groupB.openPartialSlices_.length>0){throw new Error('groupB has open partial slices');}
-if(groupA.parentContainer!==groupB.parentContainer){throw new Error('Different parent threads. Cannot merge');}
-if(groupA.sliceConstructor!==groupB.sliceConstructor){throw new Error('Different slice constructors. Cannot merge');}
-const result=new SliceGroup(groupA.parentContainer,groupA.sliceConstructor,groupA.name_);const slicesA=groupA.slices;const slicesB=groupB.slices;let idxA=0;let idxB=0;const openA=[];const openB=[];const splitOpenSlices=function(when){for(let i=0;i0||openB.length>0){const nextA=openA[openA.length-1];const nextB=openB[openB.length-1];const endA=nextA&&nextA.end;const endB=nextB&&nextB.end;if((endA===undefined||endA>upTo)&&(endB===undefined||endB>upTo)){return;}
-if(endB===undefined||endAsB.start)){nextSlice=result.copySlice(sB);isFromB=true;idxB++;}else{nextSlice=result.copySlice(sA);isFromB=false;idxA++;}
-closeOpenSlices(nextSlice.start);result.pushSlice(nextSlice);if(isFromB){openB.push(nextSlice);}else{splitOpenSlices(nextSlice.start);openA.push(nextSlice);}}
-closeOpenSlices();return result;};return{SliceGroup,};});'use strict';tr.exportTo('tr.model',function(){const AsyncSlice=tr.model.AsyncSlice;const AsyncSliceGroup=tr.model.AsyncSliceGroup;const SliceGroup=tr.model.SliceGroup;const ThreadSlice=tr.model.ThreadSlice;const ThreadTimeSlice=tr.model.ThreadTimeSlice;function Thread(parent,tid){if(!parent){throw new Error('Parent must be provided.');}
-tr.model.EventContainer.call(this);this.parent=parent;this.sortIndex=0;this.tid=tid;this.name=undefined;this.samples_=undefined;this.sliceGroup=new SliceGroup(this,ThreadSlice,'slices');this.timeSlices=undefined;this.kernelSliceGroup=new SliceGroup(this,ThreadSlice,'kernel-slices');this.asyncSliceGroup=new AsyncSliceGroup(this,'async-slices');}
-Thread.prototype={__proto__:tr.model.EventContainer.prototype,get model(){return this.parent.model;},get stableId(){return this.parent.stableId+'.'+this.tid;},compareTo(that){return Thread.compare(this,that);},*childEventContainers(){if(this.sliceGroup.length){yield this.sliceGroup;}
-if(this.kernelSliceGroup.length){yield this.kernelSliceGroup;}
-if(this.asyncSliceGroup.length){yield this.asyncSliceGroup;}},*childEvents(){if(this.timeSlices){yield*this.timeSlices;}},iterateAllPersistableObjects(cb){cb(this);if(this.sliceGroup.length){cb(this.sliceGroup);}
-this.asyncSliceGroup.viewSubGroups.forEach(cb);},shiftTimestampsForward(amount){this.sliceGroup.shiftTimestampsForward(amount);if(this.timeSlices){for(let i=0;i0){const newSlices=SliceGroup.merge(this.sliceGroup,this.kernelSliceGroup);this.sliceGroup.slices=newSlices.slices;this.kernelSliceGroup=new SliceGroup(this);this.updateBounds();}},createSubSlices(){this.sliceGroup.createSubSlices();this.samples_=this.parent.model.samples.filter(sample=>sample.thread===this);},get userFriendlyName(){return this.name||this.tid;},get userFriendlyDetails(){return'tid: '+this.tid+
-(this.name?', name: '+this.name:'');},getSettingsKey(){if(!this.name)return undefined;const parentKey=this.parent.getSettingsKey();if(!parentKey)return undefined;return parentKey+'.'+this.name;},getProcess(){return this.parent;},indexOfTimeSlice(timeSlice){const i=tr.b.findLowIndexInSortedArray(this.timeSlices,function(slice){return slice.start;},timeSlice.start);if(this.timeSlices[i]!==timeSlice)return undefined;return i;},sumOverToplevelSlicesInRange(range,func){let sum=0;tr.b.iterateOverIntersectingIntervals(this.sliceGroup.topLevelSlices,slice=>slice.start,slice=>slice.end,range.min,range.max,slice=>{let fractionOfSliceInsideRangeOfInterest=1;if(slice.duration>0){const intersection=range.findIntersection(slice.range);fractionOfSliceInsideRangeOfInterest=intersection.duration/slice.duration;}
-sum+=func(slice)*fractionOfSliceInsideRangeOfInterest;});return sum;},getCpuTimeForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>slice.cpuDuration||0);},getNumToplevelSlicesForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>1);},getWallTimeForRange(range){return this.sumOverToplevelSlicesInRange(range,slice=>slice.duration||0);},getSchedulingStatsForRange(start,end){const stats={};if(!this.timeSlices)return stats;function addStatsForSlice(threadTimeSlice){const overlapStart=Math.max(threadTimeSlice.start,start);const overlapEnd=Math.min(threadTimeSlice.end,end);const schedulingState=threadTimeSlice.schedulingState;if(!(schedulingState in stats))stats[schedulingState]=0;stats[schedulingState]+=overlapEnd-overlapStart;}
-tr.b.iterateOverIntersectingIntervals(this.timeSlices,function(x){return x.start;},function(x){return x.end;},start,end,addStatsForSlice);return stats;},get samples(){return this.samples_;},get type(){const re=/^[^0-9|\/]+/;const matches=re.exec(this.name);if(matches&&matches[0])return matches[0];throw new Error('Could not determine thread type for thread name '+
-this.name);}};Thread.compare=function(x,y){let tmp=x.parent.compareTo(y.parent);if(tmp)return tmp;tmp=x.sortIndex-y.sortIndex;if(tmp)return tmp;if(x.name!==undefined){if(y.name!==undefined){tmp=x.name.localeCompare(y.name);}else{tmp=-1;}}else if(y.name!==undefined){tmp=1;}
-if(tmp)return tmp;return x.tid-y.tid;};return{Thread,};});'use strict';tr.exportTo('tr.model',function(){const Thread=tr.model.Thread;const Counter=tr.model.Counter;function ProcessBase(model){if(!model){throw new Error('Must provide a model');}
-tr.model.EventContainer.call(this);this.model=model;this.threads={};this.counters={};this.objects=new tr.model.ObjectCollection(this);this.sortIndex=0;}
-ProcessBase.compare=function(x,y){return x.sortIndex-y.sortIndex;};ProcessBase.prototype={__proto__:tr.model.EventContainer.prototype,get stableId(){throw new Error('Not implemented');},*childEventContainers(){yield*Object.values(this.threads);yield*Object.values(this.counters);yield this.objects;},iterateAllPersistableObjects(cb){cb(this);for(const tid in this.threads){this.threads[tid].iterateAllPersistableObjects(cb);}},get numThreads(){let n=0;for(const p in this.threads){n++;}
-return n;},shiftTimestampsForward(amount){for(const child of this.childEventContainers()){child.shiftTimestampsForward(amount);}},autoCloseOpenSlices(){for(const tid in this.threads){const thread=this.threads[tid];thread.autoCloseOpenSlices();}},autoDeleteObjects(maxTimestamp){this.objects.autoDeleteObjects(maxTimestamp);},preInitializeObjects(){this.objects.preInitializeAllObjects();},initializeObjects(){this.objects.initializeAllObjects();},mergeKernelWithUserland(){for(const tid in this.threads){const thread=this.threads[tid];thread.mergeKernelWithUserland();}},updateBounds(){this.bounds.reset();for(const tid in this.threads){this.threads[tid].updateBounds();this.bounds.addRange(this.threads[tid].bounds);}
-for(const id in this.counters){this.counters[id].updateBounds();this.bounds.addRange(this.counters[id].bounds);}
-this.objects.updateBounds();this.bounds.addRange(this.objects.bounds);},addCategoriesToDict(categoriesDict){for(const tid in this.threads){this.threads[tid].addCategoriesToDict(categoriesDict);}
-for(const id in this.counters){categoriesDict[this.counters[id].category]=true;}
-this.objects.addCategoriesToDict(categoriesDict);},findAllThreadsMatching(predicate,opt_this){const threads=[];for(const tid in this.threads){const thread=this.threads[tid];if(predicate.call(opt_this,thread)){threads.push(thread);}}
-return threads;},findAllThreadsNamed(name){const threads=this.findAllThreadsMatching(function(thread){if(!thread.name)return false;return thread.name===name;});return threads;},findAtMostOneThreadNamed(name){const threads=this.findAllThreadsNamed(name);if(threads.length===0)return undefined;if(threads.length>1){throw new Error('Expected no more than one '+name);}
-return threads[0];},pruneEmptyContainers(){const threadsToKeep={};for(const tid in this.threads){const thread=this.threads[tid];if(!thread.isEmpty){threadsToKeep[tid]=thread;}}
-this.threads=threadsToKeep;},getThread(tid){return this.threads[tid];},getOrCreateThread(tid){if(!this.threads[tid]){this.threads[tid]=new Thread(this,tid);}
-return this.threads[tid];},getOrCreateCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){this.counters[id]=new Counter(this,id,cat,name);}
-return this.counters[id];},getSettingsKey(){throw new Error('Not implemented');},createSubSlices(){for(const tid in this.threads){this.threads[tid].createSubSlices();}}};return{ProcessBase,};});'use strict';tr.exportTo('tr.model',function(){const ColorScheme=tr.b.ColorScheme;const Counter=tr.model.Counter;const CpuSlice=tr.model.CpuSlice;function Cpu(kernel,number){if(kernel===undefined||number===undefined){throw new Error('Missing arguments');}
-this.kernel=kernel;this.cpuNumber=number;this.slices=[];this.counters={};this.bounds_=new tr.b.math.Range();this.samples_=undefined;this.lastActiveTimestamp_=undefined;this.lastActiveThread_=undefined;this.lastActiveName_=undefined;this.lastActiveArgs_=undefined;}
-Cpu.prototype={__proto__:tr.model.EventContainer.prototype,get samples(){return this.samples_;},get userFriendlyName(){return'CPU '+this.cpuNumber;},*findTopmostSlicesInThisContainer(eventPredicate,opt_this){for(const s of this.slices){yield*s.findTopmostSlicesRelativeToThisSlice(eventPredicate,opt_this);}},*childEvents(){yield*this.slices;if(this.samples_){yield*this.samples_;}},*childEventContainers(){yield*Object.values(this.counters);},getOrCreateCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){this.counters[id]=new Counter(this,id,cat,name);}
-return this.counters[id];},getCounter(cat,name){const id=cat+'.'+name;if(!this.counters[id]){return undefined;}
-return this.counters[id];},shiftTimestampsForward(amount){for(let sI=0;sIx.start,start)-1;const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);if(startIndex<0){startIndex=0;}
-for(let i=startIndex;ix.start,start);const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);return this.samples.slice(startIndex,endIndex);},shiftTimestampsForward(amount){for(let i=0;i=dependencySize)return;this.model.importWarning({type:'memory_dump_parse_error',message:'Size provided by memory allocator dump \''+
-dump.fullName+'\''+
-tr.b.Unit.byName.sizeInBytes.format(size)+') is less than '+dependencyName+' ('+
-tr.b.Unit.byName.sizeInBytes.format(dependencySize)+').'});dump.infos.push({type:dependencyInfoType,providedSize:size,dependencySize});}.bind(this);}
-let aggregatedChildrenSize=0;const allOverlaps={};dump.children.forEach(function(childDump){function aggregateDescendantDump(descendantDump){const ownedDumpLink=descendantDump.owns;if(ownedDumpLink!==undefined&&ownedDumpLink.target.isDescendantOf(dump)){let ownedChildDump=ownedDumpLink.target;while(ownedChildDump.parent!==dump){ownedChildDump=ownedChildDump.parent;}
-if(childDump!==ownedChildDump){const ownedBySiblingSize=getDependencySize(descendantDump);if(ownedBySiblingSize>0){const previousTotalOwnedBySiblingSize=ownedChildDump.ownedBySiblingSizes.get(childDump)||0;const updatedTotalOwnedBySiblingSize=previousTotalOwnedBySiblingSize+ownedBySiblingSize;ownedChildDump.ownedBySiblingSizes.set(childDump,updatedTotalOwnedBySiblingSize);}}
-return;}
-if(descendantDump.children.length===0){aggregatedChildrenSize+=getDependencySize(descendantDump);return;}
-descendantDump.children.forEach(aggregateDescendantDump);}
-aggregateDescendantDump(childDump);});checkDependencySizeIsConsistent(aggregatedChildrenSize,PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN,'the aggregated size of its children');let largestOwnerSize=0;dump.ownedBy.forEach(function(ownershipLink){const owner=ownershipLink.source;const ownerSize=getDependencySize(owner);largestOwnerSize=Math.max(largestOwnerSize,ownerSize);});checkDependencySizeIsConsistent(largestOwnerSize,PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER,'the size of its largest owner');if(!shouldDefineSize){delete dump.numerics[SIZE_NUMERIC_NAME];return;}
-size=Math.max(size,aggregatedChildrenSize,largestOwnerSize);dump.numerics[SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,size);if(aggregatedChildrenSize0){const virtualChild=new tr.model.MemoryAllocatorDump(dump.containerMemoryDump,dump.fullName+'/');virtualChild.parent=dump;dump.children.unshift(virtualChild);virtualChild.numerics[SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,size-aggregatedChildrenSize);}},calculateEffectiveSizes(){this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpSubSizes_.bind(this));this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpOwnershipCoefficient_.bind(this));this.traverseAllocatorDumpsInDepthFirstPreOrder(this.calculateDumpCumulativeOwnershipCoefficient_.bind(this));this.traverseAllocatorDumpsInDepthFirstPostOrder(this.calculateDumpEffectiveSize_.bind(this));},calculateDumpSubSizes_(dump){if(!hasSize(dump))return;if(dump.children===undefined||dump.children.length===0){const size=getSize(dump);dump.notOwningSubSize_=size;dump.notOwnedSubSize_=size;return;}
-let notOwningSubSize=0;dump.children.forEach(function(childDump){if(childDump.owns!==undefined)return;notOwningSubSize+=optional(childDump.notOwningSubSize_,0);});dump.notOwningSubSize_=notOwningSubSize;let notOwnedSubSize=0;dump.children.forEach(function(childDump){if(childDump.ownedBy.length===0){notOwnedSubSize+=optional(childDump.notOwnedSubSize_,0);return;}
-let largestChildOwnerSize=0;childDump.ownedBy.forEach(function(ownershipLink){largestChildOwnerSize=Math.max(largestChildOwnerSize,getSize(ownershipLink.source));});notOwnedSubSize+=getSize(childDump)-largestChildOwnerSize;});dump.notOwnedSubSize_=notOwnedSubSize;},calculateDumpOwnershipCoefficient_(dump){if(!hasSize(dump))return;if(dump.ownedBy.length===0)return;const owners=dump.ownedBy.map(function(ownershipLink){return{dump:ownershipLink.source,importance:optional(ownershipLink.importance,0),notOwningSubSize:optional(ownershipLink.source.notOwningSubSize_,0)};});owners.sort(function(a,b){if(a.importance===b.importance){return a.notOwningSubSize-b.notOwningSubSize;}
-return b.importance-a.importance;});let currentImportanceStartPos=0;let alreadyAttributedSubSize=0;while(currentImportanceStartPosalreadyAttributedSubSize){attributedNotOwningSubSize+=(notOwningSubSize-alreadyAttributedSubSize)/(nextImportanceStartPos-pos);alreadyAttributedSubSize=notOwningSubSize;}
-let owningCoefficient=0;if(notOwningSubSize!==0){owningCoefficient=attributedNotOwningSubSize/notOwningSubSize;}
-owner.dump.owningCoefficient_=owningCoefficient;}
-currentImportanceStartPos=nextImportanceStartPos;}
-const notOwnedSubSize=optional(dump.notOwnedSubSize_,0);const remainderSubSize=notOwnedSubSize-alreadyAttributedSubSize;let ownedCoefficient=0;if(notOwnedSubSize!==0){ownedCoefficient=remainderSubSize/notOwnedSubSize;}
-dump.ownedCoefficient_=ownedCoefficient;},calculateDumpCumulativeOwnershipCoefficient_(dump){if(!hasSize(dump))return;let cumulativeOwnedCoefficient=optional(dump.ownedCoefficient_,1);const parent=dump.parent;if(dump.parent!==undefined){cumulativeOwnedCoefficient*=dump.parent.cumulativeOwnedCoefficient_;}
-dump.cumulativeOwnedCoefficient_=cumulativeOwnedCoefficient;let cumulativeOwningCoefficient;if(dump.owns!==undefined){cumulativeOwningCoefficient=dump.owningCoefficient_*dump.owns.target.cumulativeOwningCoefficient_;}else if(dump.parent!==undefined){cumulativeOwningCoefficient=dump.parent.cumulativeOwningCoefficient_;}else{cumulativeOwningCoefficient=1;}
-dump.cumulativeOwningCoefficient_=cumulativeOwningCoefficient;},calculateDumpEffectiveSize_(dump){if(!hasSize(dump)){delete dump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME];return;}
-let effectiveSize;if(dump.children===undefined||dump.children.length===0){effectiveSize=getSize(dump)*dump.cumulativeOwningCoefficient_*dump.cumulativeOwnedCoefficient_;}else{effectiveSize=0;dump.children.forEach(function(childDump){if(!hasSize(childDump))return;effectiveSize+=childDump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME].value;});}
-dump.numerics[EFFECTIVE_SIZE_NUMERIC_NAME]=new tr.b.Scalar(tr.b.Unit.byName.sizeInBytes_smallerIsBetter,effectiveSize);},aggregateNumerics(){this.iterateRootAllocatorDumps(function(dump){dump.aggregateNumericsRecursively(this.model);});this.iterateRootAllocatorDumps(this.propagateNumericsAndDiagnosticsRecursively);for(const processMemoryDump of Object.values(this.processMemoryDumps)){processMemoryDump.iterateRootAllocatorDumps(function(dump){dump.aggregateNumericsRecursively(this.model);},this);}},propagateNumericsAndDiagnosticsRecursively(globalAllocatorDump){['numerics','diagnostics'].forEach(function(field){for(const[name,value]of
-Object.entries(globalAllocatorDump[field])){globalAllocatorDump.ownedBy.forEach(function(ownershipLink){const processAllocatorDump=ownershipLink.source;if(processAllocatorDump[field][name]!==undefined){return;}
-processAllocatorDump[field][name]=value;});}});globalAllocatorDump.children.forEach(this.propagateNumericsAndDiagnosticsRecursively,this);},setUpTracingOverheadOwnership(){for(const dump of Object.values(this.processMemoryDumps)){dump.setUpTracingOverheadOwnership(this.model);}},discountTracingOverheadFromVmRegions(){for(const dump of Object.values(this.processMemoryDumps)){dump.discountTracingOverheadFromVmRegions(this.model);}},forceRebuildingMemoryAllocatorDumpByFullNameIndices(){this.iterateContainerDumps(function(containerDump){containerDump.forceRebuildingMemoryAllocatorDumpByFullNameIndex();});},iterateContainerDumps(fn){fn.call(this,this);for(const processDump of Object.values(this.processMemoryDumps)){fn.call(this,processDump);}},iterateAllRootAllocatorDumps(fn){this.iterateContainerDumps(function(containerDump){containerDump.iterateRootAllocatorDumps(fn,this);});},traverseAllocatorDumpsInDepthFirstPostOrder(fn){const visitedDumps=new WeakSet();const openDumps=new WeakSet();function visit(dump){if(visitedDumps.has(dump))return;if(openDumps.has(dump)){throw new Error(dump.userFriendlyName+' contains a cycle');}
-openDumps.add(dump);dump.ownedBy.forEach(function(ownershipLink){visit.call(this,ownershipLink.source);},this);dump.children.forEach(visit,this);fn.call(this,dump);visitedDumps.add(dump);openDumps.delete(dump);}
-this.iterateAllRootAllocatorDumps(visit);},traverseAllocatorDumpsInDepthFirstPreOrder(fn){const visitedDumps=new WeakSet();function visit(dump){if(visitedDumps.has(dump))return;if(dump.owns!==undefined&&!visitedDumps.has(dump.owns.target)){return;}
-if(dump.parent!==undefined&&!visitedDumps.has(dump.parent)){return;}
-fn.call(this,dump);visitedDumps.add(dump);dump.ownedBy.forEach(function(ownershipLink){visit.call(this,ownershipLink.source);},this);dump.children.forEach(visit,this);}
-this.iterateAllRootAllocatorDumps(visit);}};tr.model.EventRegistry.register(GlobalMemoryDump,{name:'globalMemoryDump',pluralName:'globalMemoryDumps'});return{GlobalMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){const InstantEventType={GLOBAL:1,PROCESS:2};function InstantEvent(category,title,colorId,start,args,parent){tr.model.TimedEvent.call(this,start);this.category=category||'';this.title=title;this.colorId=colorId;this.args=args;this.parent_=parent;this.type=undefined;}
-InstantEvent.prototype={__proto__:tr.model.TimedEvent.prototype,};function GlobalInstantEvent(category,title,colorId,start,args,parent){InstantEvent.apply(this,arguments);this.type=InstantEventType.GLOBAL;}
-GlobalInstantEvent.prototype={__proto__:InstantEvent.prototype,get userFriendlyName(){return'Global instant event '+this.title+' @ '+
-tr.b.Unit.byName.timeStampInMs.format(start);},get stableId(){return'instant.'+this.parent_.instantEvents.indexOf(this);},};function ProcessInstantEvent(category,title,colorId,start,args,parent){InstantEvent.apply(this,arguments);this.type=InstantEventType.PROCESS;}
-ProcessInstantEvent.prototype={__proto__:InstantEvent.prototype,get userFriendlyName(){return'Process-level instant event '+this.title+' @ '+
-tr.b.Unit.byName.timeStampInMs.format(start);},get stableId(){return this.parent_.stableId+'.instant.'+
-this.parent_.instantEvents.indexOf(this);},};tr.model.EventRegistry.register(InstantEvent,{name:'instantEvent',pluralName:'instantEvents'});return{GlobalInstantEvent,ProcessInstantEvent,InstantEventType,InstantEvent,};});'use strict';tr.exportTo('tr.model',function(){const Cpu=tr.model.Cpu;const ProcessBase=tr.model.ProcessBase;function Kernel(model){ProcessBase.call(this,model);this.cpus={};this.softwareMeasuredCpuCount_=undefined;}
-Kernel.compare=function(x,y){return 0;};Kernel.prototype={__proto__:ProcessBase.prototype,compareTo(that){return Kernel.compare(this,that);},get userFriendlyName(){return'Kernel';},get userFriendlyDetails(){return'Kernel';},get stableId(){return'Kernel';},getOrCreateCpu(cpuNumber){if(!this.cpus[cpuNumber]){this.cpus[cpuNumber]=new Cpu(this,cpuNumber);}
-return this.cpus[cpuNumber];},get softwareMeasuredCpuCount(){return this.softwareMeasuredCpuCount_;},set softwareMeasuredCpuCount(softwareMeasuredCpuCount){if(this.softwareMeasuredCpuCount_!==undefined&&this.softwareMeasuredCpuCount_!==softwareMeasuredCpuCount){throw new Error('Cannot change the softwareMeasuredCpuCount once it is set');}
-this.softwareMeasuredCpuCount_=softwareMeasuredCpuCount;},get bestGuessAtCpuCount(){const realCpuCount=Object.keys(this.cpus).length;if(realCpuCount!==0){return realCpuCount;}
-return this.softwareMeasuredCpuCount;},updateBounds(){ProcessBase.prototype.updateBounds.call(this);for(const cpuNumber in this.cpus){const cpu=this.cpus[cpuNumber];cpu.updateBounds();this.bounds.addRange(cpu.bounds);}},createSubSlices(){ProcessBase.prototype.createSubSlices.call(this);for(const cpuNumber in this.cpus){const cpu=this.cpus[cpuNumber];cpu.createSubSlices();}},addCategoriesToDict(categoriesDict){ProcessBase.prototype.addCategoriesToDict.call(this,categoriesDict);for(const cpuNumber in this.cpus){this.cpus[cpuNumber].addCategoriesToDict(categoriesDict);}},getSettingsKey(){return'kernel';},*childEventContainers(){yield*ProcessBase.prototype.childEventContainers.call(this);yield*Object.values(this.cpus);},};return{Kernel,};});'use strict';tr.exportTo('tr.model',function(){function ModelIndices(model){this.flowEventsById_={};model.flowEvents.forEach(function(fe){if(fe.id!==undefined){if(!this.flowEventsById_.hasOwnProperty(fe.id)){this.flowEventsById_[fe.id]=[];}
-this.flowEventsById_[fe.id].push(fe);}},this);}
-ModelIndices.prototype={addEventWithId(id,event){if(!this.flowEventsById_.hasOwnProperty(id)){this.flowEventsById_[id]=[];}
-this.flowEventsById_[id].push(event);},getFlowEventsWithId(id){if(!this.flowEventsById_.hasOwnProperty(id)){return[];}
-return this.flowEventsById_[id];}};return{ModelIndices,};});'use strict';tr.exportTo('tr.model',function(){function ModelStats(){this.traceEventCountsByKey_=new Map();this.allTraceEventStats_=[];this.traceEventStatsInTimeIntervals_=new Map();this.allTraceEventStatsInTimeIntervals_=[];this.hasEventSizesinBytes_=false;this.traceImportDurationMs_=undefined;}
-ModelStats.prototype={TIME_INTERVAL_SIZE_IN_MS:100,willProcessBasicTraceEvent(phase,category,title,ts,opt_eventSizeinBytes){const key=phase+'/'+category+'/'+title;let eventStats=this.traceEventCountsByKey_.get(key);if(eventStats===undefined){eventStats={phase,category,title,numEvents:0,totalEventSizeinBytes:0};this.traceEventCountsByKey_.set(key,eventStats);this.allTraceEventStats_.push(eventStats);}
-eventStats.numEvents++;const timeIntervalKey=Math.floor(tr.b.Unit.timestampFromUs(ts)/this.TIME_INTERVAL_SIZE_IN_MS);let eventStatsByTimeInverval=this.traceEventStatsInTimeIntervals_.get(timeIntervalKey);if(eventStatsByTimeInverval===undefined){eventStatsByTimeInverval={timeInterval:timeIntervalKey,numEvents:0,totalEventSizeinBytes:0};this.traceEventStatsInTimeIntervals_.set(timeIntervalKey,eventStatsByTimeInverval);this.allTraceEventStatsInTimeIntervals_.push(eventStatsByTimeInverval);}
-eventStatsByTimeInverval.numEvents++;if(opt_eventSizeinBytes!==undefined){this.hasEventSizesinBytes_=true;eventStats.totalEventSizeinBytes+=opt_eventSizeinBytes;eventStatsByTimeInverval.totalEventSizeinBytes+=opt_eventSizeinBytes;}},get allTraceEventStats(){return this.allTraceEventStats_;},get allTraceEventStatsInTimeIntervals(){return this.allTraceEventStatsInTimeIntervals_;},get hasEventSizesinBytes(){return this.hasEventSizesinBytes_;},get traceImportDurationMs(){return this.traceImportDurationMs_;},set traceImportDurationMs(traceImportDurationMs){this.traceImportDurationMs_=traceImportDurationMs;}};return{ModelStats,};});'use strict';tr.exportTo('tr.model',function(){function VMRegion(startAddress,sizeInBytes,protectionFlags,mappedFile,byteStats){this.startAddress=startAddress;this.sizeInBytes=sizeInBytes;this.protectionFlags=protectionFlags;this.mappedFile=mappedFile||'';this.byteStats=byteStats||{};}
-VMRegion.PROTECTION_FLAG_READ=4;VMRegion.PROTECTION_FLAG_WRITE=2;VMRegion.PROTECTION_FLAG_EXECUTE=1;VMRegion.PROTECTION_FLAG_MAYSHARE=128;VMRegion.prototype={get uniqueIdWithinProcess(){return this.mappedFile+'#'+this.startAddress;},get protectionFlagsToString(){if(this.protectionFlags===undefined)return undefined;return((this.protectionFlags&VMRegion.PROTECTION_FLAG_READ?'r':'-')+
-(this.protectionFlags&VMRegion.PROTECTION_FLAG_WRITE?'w':'-')+
-(this.protectionFlags&VMRegion.PROTECTION_FLAG_EXECUTE?'x':'-')+
-(this.protectionFlags&VMRegion.PROTECTION_FLAG_MAYSHARE?'s':'p'));}};VMRegion.fromDict=function(dict){return new VMRegion(dict.startAddress,dict.sizeInBytes,dict.protectionFlags,dict.mappedFile,dict.byteStats);};function VMRegionClassificationNode(opt_rule){this.rule_=opt_rule||VMRegionClassificationNode.CLASSIFICATION_RULES;this.hasRegions=false;this.sizeInBytes=undefined;this.byteStats={};this.children_=undefined;this.regions_=[];}
-VMRegionClassificationNode.CLASSIFICATION_RULES={name:'Total',children:[{name:'Android',file:/^\/dev\/ashmem(?!\/libc malloc)/,children:[{name:'Java runtime',file:/^\/dev\/ashmem\/dalvik-/,children:[{name:'Spaces',file:/\/dalvik-(alloc|main|large object|non moving|zygote) space/,children:[{name:'Normal',file:/\/dalvik-(alloc|main)/},{name:'Large',file:/\/dalvik-large object/},{name:'Zygote',file:/\/dalvik-zygote/},{name:'Non-moving',file:/\/dalvik-non moving/}]},{name:'Linear Alloc',file:/\/dalvik-LinearAlloc/},{name:'Indirect Reference Table',file:/\/dalvik-indirect.ref/},{name:'Cache',file:/\/dalvik-jit-code-cache/},{name:'Accounting'}]},{name:'Cursor',file:/\/CursorWindow/},{name:'Ashmem'}]},{name:'Native heap',file:/^((\[heap\])|(\[anon:)|(\/dev\/ashmem\/libc malloc)|(\[discounted tracing overhead\])|$)/},{name:'Stack',file:/^\[stack/},{name:'Files',file:/\.((((jar)|(apk)|(ttf)|(odex)|(oat)|(art))$)|(dex)|(so))/,children:[{name:'so',file:/\.so/},{name:'jar',file:/\.jar$/},{name:'apk',file:/\.apk$/},{name:'ttf',file:/\.ttf$/},{name:'dex',file:/\.((dex)|(odex$))/},{name:'oat',file:/\.oat$/},{name:'art',file:/\.art$/}]},{name:'Devices',file:/(^\/dev\/)|(anon_inode:dmabuf)/,children:[{name:'GPU',file:/\/((nv)|(mali)|(kgsl))/},{name:'DMA',file:/anon_inode:dmabuf/}]}]};VMRegionClassificationNode.OTHER_RULE={name:'Other'};VMRegionClassificationNode.fromRegions=function(regions,opt_rules){const tree=new VMRegionClassificationNode(opt_rules);tree.regions_=regions;for(let i=0;i0)||((hasPrivateDirtyResident||hasProportionalResident)&&discountedResidentSize>0)){const byteStats={};if(hasPrivateDirtyResident){byteStats.privateDirtyResident=-discountedResidentSize;}
-if(hasProportionalResident){byteStats.proportionalResident=-discountedResidentSize;}
-this.vmRegions.addRegion(tr.model.VMRegion.fromDict({mappedFile:'[discounted tracing overhead]',sizeInBytes:hasSizeInBytes?-discountedSize:undefined,byteStats}));}}}};ProcessMemoryDump.hookUpMostRecentVmRegionsLinks=function(processDumps){let mostRecentVmRegions=undefined;processDumps.forEach(function(processDump){if(processDump.vmRegions!==undefined){mostRecentVmRegions=processDump.vmRegions;}
-processDump.mostRecentVmRegions=mostRecentVmRegions;});};tr.model.EventRegistry.register(ProcessMemoryDump,{name:'processMemoryDump',pluralName:'processMemoryDumps'});return{ProcessMemoryDump,};});'use strict';tr.exportTo('tr.model',function(){const ProcessBase=tr.model.ProcessBase;const ProcessInstantEvent=tr.model.ProcessInstantEvent;const Frame=tr.model.Frame;const ProcessMemoryDump=tr.model.ProcessMemoryDump;function Process(model,pid){if(model===undefined){throw new Error('model must be provided');}
-if(pid===undefined){throw new Error('pid must be provided');}
-tr.model.ProcessBase.call(this,model);this.pid=pid;this.name=undefined;this.labels=[];this.uptime_seconds=0;this.instantEvents=[];this.memoryDumps=[];this.frames=[];this.activities=[];}
-Process.compare=function(x,y){let tmp=tr.model.ProcessBase.compare(x,y);if(tmp)return tmp;if(x.name!==undefined){if(y.name!==undefined){tmp=x.name.localeCompare(y.name);}else{tmp=-1;}}else if(y.name!==undefined){tmp=1;}
-if(tmp)return tmp;tmp=tr.b.compareArrays(x.labels,y.labels,function(x,y){return x.localeCompare(y);});if(tmp)return tmp;return x.pid-y.pid;};Process.prototype={__proto__:tr.model.ProcessBase.prototype,get stableId(){return this.pid;},compareTo(that){return Process.compare(this,that);},*childEvents(){yield*ProcessBase.prototype.childEvents.call(this);yield*this.instantEvents;yield*this.frames;yield*this.memoryDumps;},addLabelIfNeeded(labelName){for(let i=0;i(x.start-y.start));}
-get expectations(){return this.expectations_;}
-shiftTimestampsForward(amount){}
-addCategoriesToDict(categoriesDict){}
-get segments(){return this.segments_;}*childEvents(){yield*this.expectations;}*childEventContainers(){}
-updateBounds(){this.bounds.reset();for(const expectation of this.expectations){expectation.addBoundsToRange(this.bounds);}}
-resegment(getKeyForSegment){const newSegments=[];let prevKey=undefined;let prevSegment=undefined;for(let i=0;if.start,(f)=>f.end);this.globalMemoryDumps=[];this.userFriendlyCategoryDrivers_=[];this.annotationsByGuid_={};this.modelIndices=undefined;this.stats=new tr.model.ModelStats();this.importWarnings_=[];this.reportedImportWarnings_={};this.isTimeHighResolution_=true;this.patchupsToApply_=[];this.doesHelperGUIDSupportThisModel_={};this.helpersByConstructorGUID_={};this.eventsByStableId_=undefined;}
-Model.prototype={__proto__:tr.model.EventContainer.prototype,getEventByStableId(stableId){if(this.eventsByStableId_===undefined){this.eventsByStableId_={};for(const event of this.getDescendantEvents()){this.eventsByStableId_[event.stableId]=event;}}
-return this.eventsByStableId_[stableId];},getOrCreateHelper(constructor){if(!constructor.guid){throw new Error('Helper constructors must have GUIDs');}
-if(this.helpersByConstructorGUID_[constructor.guid]===undefined){if(this.doesHelperGUIDSupportThisModel_[constructor.guid]===undefined){this.doesHelperGUIDSupportThisModel_[constructor.guid]=constructor.supportsModel(this);}
-if(!this.doesHelperGUIDSupportThisModel_[constructor.guid]){return undefined;}
-this.helpersByConstructorGUID_[constructor.guid]=new constructor(this);}
-return this.helpersByConstructorGUID_[constructor.guid];},*childEvents(){yield*this.globalMemoryDumps;yield*this.instantEvents;yield*this.flowEvents;yield*this.alerts;yield*this.samples;},*childEventContainers(){yield this.userModel;yield this.device;yield this.kernel;yield*Object.values(this.processes);},iterateAllPersistableObjects(callback){this.kernel.iterateAllPersistableObjects(callback);for(const pid in this.processes){this.processes[pid].iterateAllPersistableObjects(callback);}},updateBounds(){this.bounds.reset();const bounds=this.bounds;for(const ec of this.childEventContainers()){ec.updateBounds();bounds.addRange(ec.bounds);}
-for(const event of this.childEvents()){event.addBoundsToRange(bounds);}},shiftWorldToZero(){const shiftAmount=-this.bounds.min;this.timestampShiftToZeroAmount_=shiftAmount;for(const ec of this.childEventContainers()){ec.shiftTimestampsForward(shiftAmount);}
-for(const event of this.childEvents()){event.start+=shiftAmount;}
-this.updateBounds();},convertTimestampToModelTime(sourceClockDomainName,ts){if(sourceClockDomainName!=='traceEventClock'){throw new Error('Only traceEventClock is supported.');}
-return tr.b.Unit.timestampFromUs(ts)+
-this.timestampShiftToZeroAmount_;},get numProcesses(){let n=0;for(const p in this.processes){n++;}
-return n;},getProcess(pid){return this.processes[pid];},getOrCreateProcess(pid){if(!this.processes[pid]){this.processes[pid]=new Process(this,pid);}
-return this.processes[pid];},addStackFrame(stackFrame){if(this.stackFrames[stackFrame.id]){throw new Error('Stack frame already exists');}
-this.stackFrames[stackFrame.id]=stackFrame;return stackFrame;},updateCategories_(){const categoriesDict={};this.userModel.addCategoriesToDict(categoriesDict);this.device.addCategoriesToDict(categoriesDict);this.kernel.addCategoriesToDict(categoriesDict);for(const pid in this.processes){this.processes[pid].addCategoriesToDict(categoriesDict);}
-this.categories=[];for(const category in categoriesDict){if(category!==''){this.categories.push(category);}}},getAllThreads(){const threads=[];for(const tid in this.kernel.threads){threads.push(process.threads[tid]);}
-for(const pid in this.processes){const process=this.processes[pid];for(const tid in process.threads){threads.push(process.threads[tid]);}}
-return threads;},getAllProcesses(opt_predicate){const processes=[];for(const pid in this.processes){const process=this.processes[pid];if(opt_predicate===undefined||opt_predicate(process)){processes.push(process);}}
-return processes;},getAllCounters(){const counters=[];counters.push.apply(counters,Object.values(this.device.counters||{}));counters.push.apply(counters,Object.values(this.kernel.counters||{}));for(const pid in this.processes){const process=this.processes[pid];for(const tid in process.counters){counters.push(process.counters[tid]);}}
-return counters;},getAnnotationByGUID(guid){return this.annotationsByGuid_[guid];},addAnnotation(annotation){if(!annotation.guid){throw new Error('Annotation with undefined guid given');}
-this.annotationsByGuid_[annotation.guid]=annotation;tr.b.dispatchSimpleEvent(this,'annotationChange');},removeAnnotation(annotation){this.annotationsByGuid_[annotation.guid].onRemove();delete this.annotationsByGuid_[annotation.guid];tr.b.dispatchSimpleEvent(this,'annotationChange');},getAllAnnotations(){return Object.values(this.annotationsByGuid_);},addUserFriendlyCategoryDriver(ufcd){this.userFriendlyCategoryDrivers_.push(ufcd);},getUserFriendlyCategoryFromEvent(event){for(let i=0;i0);},get importWarnings(){return this.importWarnings_;},get importWarningsThatShouldBeShownToUser(){return this.importWarnings_.filter(function(warning){return warning.showToUser;});},autoCloseOpenSlices(){this.samples.sort(function(x,y){return x.start-y.start;});this.updateBounds();this.kernel.autoCloseOpenSlices();for(const pid in this.processes){this.processes[pid].autoCloseOpenSlices();}},createSubSlices(){this.kernel.createSubSlices();for(const pid in this.processes){this.processes[pid].createSubSlices();}},preInitializeObjects(){for(const pid in this.processes){this.processes[pid].preInitializeObjects();}},initializeObjects(){for(const pid in this.processes){this.processes[pid].initializeObjects();}},pruneEmptyContainers(){this.kernel.pruneEmptyContainers();for(const pid in this.processes){this.processes[pid].pruneEmptyContainers();}},mergeKernelWithUserland(){for(const pid in this.processes){this.processes[pid].mergeKernelWithUserland();}},computeWorldBounds(shiftWorldToZero){this.updateBounds();this.updateCategories_();if(shiftWorldToZero){this.shiftWorldToZero();}},buildFlowEventIntervalTree(){for(let i=0;i0){normalizedAllProcessCpuTime=allProcessCpuTime/rangeOfInterest.duration;}
-const unit=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const cpuTimeHist=new tr.v.Histogram('cpu_time_percentage',unit,CPU_TIME_PERCENTAGE_BOUNDARIES);cpuTimeHist.description='Percent CPU utilization, normalized against a single core. Can be '+'greater than 100% if machine has multiple cores.';cpuTimeHist.customizeSummaryOptions({avg:true,count:false,max:false,min:false,std:false,sum:false});cpuTimeHist.addSample(normalizedAllProcessCpuTime);histograms.addHistogram(cpuTimeHist);}
-tr.metrics.MetricRegistry.register(cpuTimeMetric,{supportsRangeOfInterest:true});return{cpuTimeMetric,};});'use strict';tr.exportTo('tr.v',function(){class HistogramDeserializer{static deserialize(data){const deserializer=new HistogramDeserializer(data[0],data[1]);return data.slice(2).map(datum=>tr.v.Histogram.deserialize(datum,deserializer));}
-constructor(objects,diagnostics){this.objects_=objects;this.diagnostics_=[];for(const[type,diagnosticsByName]of Object.entries(diagnostics||{})){for(const[name,diagnosticsById]of Object.entries(diagnosticsByName)){for(const[id,data]of Object.entries(diagnosticsById)){const diagnostic=tr.v.d.Diagnostic.deserialize(type,data,this);this.diagnostics_[parseInt(id)]={name,diagnostic};}}}}
-getObject(id){return this.objects_[id];}
-getDiagnostic(id){return this.diagnostics_[parseInt(id)];}}
-return{HistogramDeserializer};});'use strict';tr.exportTo('tr.v',function(){class HistogramGrouping{constructor(key,callback){this.key_=key;this.callback_=callback;HistogramGrouping.BY_KEY.set(key,this);}
-get key(){return this.key_;}
-get callback(){return this.callback_;}
-get label(){return this.key;}
-static buildFromTags(tags,diagnosticName){const booleanTags=new Set();const keyValueTags=new Set();for(const tag of tags){if(tag.includes(':')){const key=tag.split(':')[0];if(booleanTags.has(key)){throw new Error(`Tag "${key}" cannot be both boolean and key-value`);}
-keyValueTags.add(key);}else{if(keyValueTags.has(tag)){throw new Error(`Tag "${tag}" cannot be both boolean and key-value`);}
-booleanTags.add(tag);}}
-const groupings=[];for(const tag of booleanTags){groupings.push(HistogramGrouping.buildBooleanTagGrouping_(tag,diagnosticName));}
-for(const tag of keyValueTags){groupings.push(HistogramGrouping.buildKeyValueTagGrouping_(tag,diagnosticName));}
-return groupings;}
-static buildBooleanTagGrouping_(tag,diagnosticName){return new HistogramGrouping(`${tag}Tag`,h=>{const tags=h.diagnostics.get(diagnosticName);if(tags===undefined||!tags.has(tag))return`~${tag}`;return tag;});}
-static buildKeyValueTagGrouping_(tag,diagnosticName){return new HistogramGrouping(`${tag}Tag`,h=>{const tags=h.diagnostics.get(diagnosticName);if(tags===undefined)return`~${tag}`;const values=new Set();for(const value of tags){const kvp=value.split(':');if(kvp.length<2||kvp[0]!==tag)continue;values.add(kvp[1]);}
-if(values.size===0)return`~${tag}`;const sortedValues=Array.from(values);sortedValues.sort();return sortedValues.join(',');},`${tag} tag`);}}
-HistogramGrouping.BY_KEY=new Map();HistogramGrouping.HISTOGRAM_NAME=new HistogramGrouping('name',h=>h.name);HistogramGrouping.DISPLAY_LABEL=new HistogramGrouping('displayLabel',hist=>{const labels=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.LABELS);if(labels!==undefined&&labels.size>0){return Array.from(labels).join(',');}
-const benchmarks=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARKS);const start=hist.diagnostics.get(tr.v.d.RESERVED_NAMES.BENCHMARK_START);if(benchmarks===undefined){if(start===undefined)return'Value';return start.toString();}
-const benchmarksStr=Array.from(benchmarks).join('\n');if(start===undefined)return benchmarksStr;return benchmarksStr+'\n'+start.toString();});class GenericSetGrouping extends HistogramGrouping{constructor(name){super(name,undefined);this.callback_=this.compute_.bind(this);}
-compute_(hist){const diag=hist.diagnostics.get(this.key);if(diag===undefined)return'';const parts=Array.from(diag);parts.sort();return parts.join(',');}}
-GenericSetGrouping.NAMES=[tr.v.d.RESERVED_NAMES.ARCHITECTURES,tr.v.d.RESERVED_NAMES.BENCHMARKS,tr.v.d.RESERVED_NAMES.BOTS,tr.v.d.RESERVED_NAMES.BUILDS,tr.v.d.RESERVED_NAMES.DEVICE_IDS,tr.v.d.RESERVED_NAMES.MASTERS,tr.v.d.RESERVED_NAMES.MEMORY_AMOUNTS,tr.v.d.RESERVED_NAMES.OS_NAMES,tr.v.d.RESERVED_NAMES.OS_VERSIONS,tr.v.d.RESERVED_NAMES.PRODUCT_VERSIONS,tr.v.d.RESERVED_NAMES.STORIES,tr.v.d.RESERVED_NAMES.STORYSET_REPEATS,tr.v.d.RESERVED_NAMES.STORY_TAGS,tr.v.d.RESERVED_NAMES.TEST_PATH,];for(const name of GenericSetGrouping.NAMES){new GenericSetGrouping(name);}
-class DateRangeGrouping extends HistogramGrouping{constructor(name){super(name,undefined);this.callback_=this.compute_.bind(this);}
-compute_(hist){const diag=hist.diagnostics.get(this.key);if(diag===undefined)return'';return diag.toString();}}
-DateRangeGrouping.NAMES=[tr.v.d.RESERVED_NAMES.BENCHMARK_START,tr.v.d.RESERVED_NAMES.TRACE_START,];for(const name of DateRangeGrouping.NAMES){new DateRangeGrouping(name);}
-return{HistogramGrouping,GenericSetGrouping,DateRangeGrouping,};});'use strict';tr.exportTo('tr.v',function(){class HistogramSet{constructor(opt_histograms){this.histograms_=new Set();this.sharedDiagnosticsByGuid_=new Map();if(opt_histograms!==undefined){for(const hist of opt_histograms){this.addHistogram(hist);}}}
-has(hist){return this.histograms_.has(hist);}
-createHistogram(name,unit,samples,opt_options){const hist=tr.v.Histogram.create(name,unit,samples,opt_options);this.addHistogram(hist);return hist;}
-addHistogram(hist,opt_diagnostics){if(this.has(hist)){throw new Error('Cannot add same Histogram twice');}
-if(opt_diagnostics!==undefined){if(!(opt_diagnostics instanceof Map)){opt_diagnostics=Object.entries(opt_diagnostics);}
-for(const[name,diagnostic]of opt_diagnostics){hist.diagnostics.set(name,diagnostic);}}
-this.histograms_.add(hist);}
-addSharedDiagnosticToAllHistograms(name,diagnostic){this.addSharedDiagnostic(diagnostic);for(const hist of this){hist.diagnostics.set(name,diagnostic);}}
-addSharedDiagnostic(diagnostic){this.sharedDiagnosticsByGuid_.set(diagnostic.guid,diagnostic);}
-get length(){return this.histograms_.size;}*[Symbol.iterator](){for(const hist of this.histograms_){yield hist;}}
-getHistogramsNamed(name){return[...this].filter(h=>h.name===name);}
-getHistogramNamed(name){const histograms=this.getHistogramsNamed(name);if(histograms.length===0)return undefined;if(histograms.length>1){throw new Error(`Unexpectedly found multiple histograms named "${name}"`);}
-return histograms[0];}
-lookupDiagnostic(guid){return this.sharedDiagnosticsByGuid_.get(guid);}
-deserialize(data){for(const hist of tr.v.HistogramDeserializer.deserialize(data)){this.addHistogram(hist);}}
-importDicts(dicts){if((dicts instanceof Array)&&(dicts.length>2)&&(dicts[0]instanceof Array)){this.deserialize(dicts);return;}
-for(const dict of dicts){this.importLegacyDict(dict);}}
-importLegacyDict(dict){if(dict.type!==undefined){if(dict.type==='TagMap')return;if(!tr.v.d.Diagnostic.findTypeInfoWithName(dict.type)){throw new Error('Unrecognized shared diagnostic type '+dict.type);}
-this.sharedDiagnosticsByGuid_.set(dict.guid,tr.v.d.Diagnostic.fromDict(dict));}else{const hist=tr.v.Histogram.fromDict(dict);this.addHistogram(hist);hist.diagnostics.resolveSharedDiagnostics(this,true);}}
-asDicts(){const dicts=[];for(const diagnostic of this.sharedDiagnosticsByGuid_.values()){dicts.push(diagnostic.asDict());}
-for(const hist of this){dicts.push(hist.asDict());}
-return dicts;}
-get sourceHistograms(){const diagnosticNames=new Set();for(const hist of this){for(const diagnostic of hist.diagnostics.values()){if(!(diagnostic instanceof tr.v.d.RelatedNameMap))continue;for(const name of diagnostic.values()){diagnosticNames.add(name);}}}
-const sourceHistograms=new HistogramSet;for(const hist of this){if(!diagnosticNames.has(hist.name)){sourceHistograms.addHistogram(hist);}}
-return sourceHistograms;}
-groupHistogramsRecursively(groupings,opt_skipGroupingCallback){function recurse(histograms,level){if(level===groupings.length){return histograms;}
-const grouping=groupings[level];const groupedHistograms=tr.b.groupIntoMap(histograms,grouping.callback);if(opt_skipGroupingCallback&&opt_skipGroupingCallback(grouping,groupedHistograms)){return recurse(histograms,level+1);}
-for(const[key,group]of groupedHistograms){groupedHistograms.set(key,recurse(group,level+1));}
-return groupedHistograms;}
-return recurse([...this],0);}
-deduplicateDiagnostics(){const namesToCandidates=new Map();const diagnosticsToHistograms=new Map();const keysToDiagnostics=new Map();for(const hist of this){for(const[name,candidate]of hist.diagnostics){if(candidate.equals===undefined){this.sharedDiagnosticsByGuid_.set(candidate.guid,candidate);continue;}
-const hashKey=candidate.hashKey;if(candidate.hashKey!==undefined){if(keysToDiagnostics.has(hashKey)){hist.diagnostics.set(name,keysToDiagnostics.get(hashKey));}else{keysToDiagnostics.set(hashKey,candidate);this.sharedDiagnosticsByGuid_.set(candidate.guid,candidate);}
-continue;}
-if(diagnosticsToHistograms.get(candidate)===undefined){diagnosticsToHistograms.set(candidate,[hist]);}else{diagnosticsToHistograms.get(candidate).push(hist);}
-if(!namesToCandidates.has(name)){namesToCandidates.set(name,new Set());}
-namesToCandidates.get(name).add(candidate);}}
-for(const[name,candidates]of namesToCandidates){const deduplicatedDiagnostics=new Set();for(const candidate of candidates){let found=false;for(const test of deduplicatedDiagnostics){if(candidate.equals(test)){const hists=diagnosticsToHistograms.get(candidate);for(const hist of hists){hist.diagnostics.set(name,test);}
-found=true;break;}}
-if(!found){deduplicatedDiagnostics.add(candidate);}
-for(const diagnostic of deduplicatedDiagnostics){this.sharedDiagnosticsByGuid_.set(diagnostic.guid,diagnostic);}}}}
-buildGroupingsFromTags(names){const tags=new Map();for(const hist of this){for(const name of names){if(!hist.diagnostics.has(name))continue;if(!tags.has(name))tags.set(name,new Set());for(const tag of hist.diagnostics.get(name)){tags.get(name).add(tag);}}}
-const groupings=[];for(const[name,values]of tags){const built=tr.v.HistogramGrouping.buildFromTags(values,name);for(const grouping of built){groupings.push(grouping);}}
-return groupings;}}
-return{HistogramSet};});'use strict';tr.exportTo('tr.e.chrome',function(){function hasTitleAndCategory(event,title,category){return event.title===title&&event.category&&tr.b.getCategoryParts(event.category).includes(category);}
-function getNavStartTimestamps(rendererHelper){const navStartTimestamps=[];for(const e of rendererHelper.mainThread.sliceGroup.childEvents()){if(hasTitleAndCategory(e,'navigationStart','blink.user_timing')){navStartTimestamps.push(e.start);}}
-return navStartTimestamps;}
-function getInteractiveTimestamps(model){const interactiveTimestampsMap=new Map();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const rendererHelper of Object.values(chromeHelper.rendererHelpers)){const timestamps=[];interactiveTimestampsMap.set(rendererHelper.pid,timestamps);}
-for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}
-if(expectation.timeToInteractive===undefined)continue;if(interactiveTimestampsMap.get(expectation.renderProcess.pid)===undefined){interactiveTimestampsMap.set(expectation.renderProcess.pid,[]);}
-interactiveTimestampsMap.get(expectation.renderProcess.pid).push(expectation.timeToInteractive);}
-return interactiveTimestampsMap;}
-function getPostInteractiveTaskWindows(interactiveTimestamps,navStartTimestamps,traceEndTimestamp){let navStartTsIndex=0;let lastTaskWindowEndTs=undefined;const taskWindows=[];for(const currTTI of interactiveTimestamps){while(navStartTsIndexstartTimeendTime){throw Error('The sliding window must fit in the specified time range');}
-const sortedTasks=tasks.slice().sort((a,b)=>a.start-b.start);for(let i=1;isortedTasks[i].start){const midpoint=(sortedTasks[i-1].end+sortedTasks[i].start)/2;sortedTasks[i-1].end=midpoint;sortedTasks[i].start=midpoint;}}
-let endpoints=[];endpoints.push(startTime);endpoints.push(endTime-windowSize);for(const task of tasks){endpoints.push(task.start-windowSize);endpoints.push(task.start);endpoints.push(task.end-windowSize);endpoints.push(task.end);}
-endpoints=endpoints.filter(x=>(startTime<=x&&x+windowSize<=endTime));endpoints.sort((a,b)=>a-b);const slidingWindow=new SlidingWindow(endpoints[0],windowSize,sortedTasks);let maxEQT=0;for(const t of endpoints){slidingWindow.slide(t);maxEQT=Math.max(maxEQT,slidingWindow.getEQT);}
-return maxEQT;}
-return{getPostInteractiveTaskWindows,getNavStartTimestamps,getInteractiveTimestamps,expectedQueueingTime,maxExpectedQueueingTimeInSlidingWindow,weightedExpectedQueueingTime};});'use strict';tr.exportTo('tr.e.v8',function(){class RuntimeStatsEntry{constructor(name,count,time){this.name_=name;this.count_=count;this.time_=time;}
-get name(){return this.name_;}
-get count(){return this.count_;}
-get time(){return this.time_;}
-addSample(count,time){this.count_+=count;this.time_+=time;}}
-class RuntimeStatsGroup extends RuntimeStatsEntry{constructor(name,matchRegex){super(name,0,0);this.regex_=matchRegex;this.entries_=new Map();}
-match(name){return this.regex_&&name.match(this.regex_);}
-add(entry){const value=this.entries_.get(entry.name);if(value!==undefined){value.addSample(entry.count,entry.time);}else{this.entries_.set(entry.name,entry);}
-this.count_+=entry.count;this.time_+=entry.time;}
-get values(){return Array.from(this.entries_.values());}}
-class RuntimeStatsGroupCollection{constructor(){this.blink_cpp_group_=new RuntimeStatsGroup('Blink C++',/.*Callback.*/);this.api_group_=new RuntimeStatsGroup('API',/.*API.*/);this.groups_=[new RuntimeStatsGroup('Total'),new RuntimeStatsGroup('IC',/.*IC_.*/),new RuntimeStatsGroup('Optimize-Background',/(.*OptimizeBackground.*)|RecompileConcurrent.*/),new RuntimeStatsGroup('Optimize',/StackGuard|.*Optimize.*|.*Deoptimize.*|Recompile.*/),new RuntimeStatsGroup('Compile-Background',/(.*CompileBackground.*)/),new RuntimeStatsGroup('Compile',/(^Compile.*)|(.*_Compile.*)/),new RuntimeStatsGroup('Parse-Background',/.*ParseBackground.*/),new RuntimeStatsGroup('Parse',/.*Parse.*/),this.blink_cpp_group_,this.api_group_,new RuntimeStatsGroup('GC-Background-Marking',/.*GC.MC.BACKGROUND.*MARKING.*/),new RuntimeStatsGroup('GC-Background-Sweeping',/.*GC.MC.BACKGROUND.*SWEEPING.*/),new RuntimeStatsGroup('GC-Background-Scavenger',/.*GC.SCAVENGER.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-MinorMC',/.*GC.MINOR_MC.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-MajorMC',/.*GC.MC.BACKGROUND.*/),new RuntimeStatsGroup('GC-Background-Other',/.*GC.*BACKGROUND.*/),new RuntimeStatsGroup('GC',/GC|AllocateInTargetSpace/),new RuntimeStatsGroup('JavaScript',/JS_Execution/),new RuntimeStatsGroup('V8 C++',/.*/)];this.blink_group_collection_=null;}
-addSlices(slices){const blinkEntries=[];for(const slice of slices){if(!(slice instanceof tr.e.v8.V8ThreadSlice))return;let runtimeCallStats;try{runtimeCallStats=JSON.parse(slice.runtimeCallStats);}catch(e){runtimeCallStats=slice.runtimeCallStats;}
-if(runtimeCallStats===undefined)continue;for(const[name,stat]of Object.entries(runtimeCallStats)){if(name.match(/Blink_.*/)){if(name==='Blink_V8')continue;const entry=new RuntimeStatsEntry(name,stat[0],stat[1]);blinkEntries.push(entry);continue;}
-for(let i=1;ivalues.concat(group.values),[]);}
-get totalTime(){return this.total_group_.time;}
-get totalCount(){return this.total_group_.count;}}
-return{BlinkRuntimeStatsGroupCollection,RuntimeStatsEntry,RuntimeStatsGroup,RuntimeStatsGroupCollection,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const WINDOW_SIZE_MS=500;const EQT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.01,WINDOW_SIZE_MS,50);function containsForcedGC_(slice){return slice.findTopmostSlicesRelativeToThisSlice(tr.metrics.v8.utils.isForcedGarbageCollectionEvent).length>0;}
-function getOrCreateHistogram_(histograms,name,description){return histograms.getHistogramNamed(name)||histograms.createHistogram(name,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{binBoundaries:EQT_BOUNDARIES,description,summaryOptions:{avg:false,count:false,max:true,min:false,std:false,sum:false,},});}
-function expectedQueueingTimeMetric(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const rendererHelpers=Object.values(chromeHelper.rendererHelpers);addExpectedQueueingTimeMetric_('renderer_eqt',event=>{return{start:event.start,duration:event.duration};},false,rendererHelpers,histograms,model);}
-function addExpectedQueueingTimeMetric_(eqtName,getEventTimes,isCpuTime,rendererHelpers,histograms,model){function getTasks(rendererHelper){const tasks=[];for(const slice of
-tr.e.chrome.EventFinderUtils.findToplevelSchedulerTasks(rendererHelper.mainThread)){const times=getEventTimes(slice);if(times.duration>0&&!containsForcedGC_(slice)){tasks.push({start:times.start,end:times.start+times.duration});}}
-return tasks;}
-const totalHistogram=getOrCreateHistogram_(histograms,`total:${WINDOW_SIZE_MS}ms_window:${eqtName}`,`The maximum EQT in a ${WINDOW_SIZE_MS}ms sliding window`+' for a given renderer');for(const rendererHelper of rendererHelpers){if(rendererHelper.isChromeTracingUI)continue;if(rendererHelper.mainThread===undefined)continue;if(rendererHelper.mainThread.bounds.duration0&&!containsForcedGC_(slice)){const duration=durationOfTopmostSubSlices(slice,predicate,excludePredicate);result.push({start:times.start,end:times.start+duration});}}
-return result;};}
-return new Map([['v8',taskExtractor(tr.metrics.v8.utils.isV8Event)],['v8:execute',taskExtractor(tr.metrics.v8.utils.isV8ExecuteEvent)],['v8:gc',taskExtractor(tr.metrics.v8.utils.isGarbageCollectionEvent)]]);}
-function extractTaskRCS(getEventTimes,predicate,rendererHelper){const result=[];for(const topSlice of
-rendererHelper.mainThread.sliceGroup.topLevelSlices){const times=getEventTimes(topSlice);if(times.duration<=0||containsForcedGC_(topSlice)){continue;}
-const v8ThreadSlices=[];for(const slice of topSlice.descendentSlices){if(tr.metrics.v8.utils.isV8RCSEvent(slice)){v8ThreadSlices.push(slice);}}
-const runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(v8ThreadSlices);let duration=0;for(const runtimeGroup of runtimeGroupCollection.runtimeGroups){if(predicate(runtimeGroup.name)){duration+=runtimeGroup.time;}}
-duration=tr.b.convertUnit(duration,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);result.push({start:times.start,end:times.start+duration});}
-return result;}
-function getV8EventNamesWithTaskExtractorsUsingRCS_(getEventTimes){const extractors=new Map();extractors.set('v8:compile_rcs',rendererHelper=>extractTaskRCS(getEventTimes,tr.metrics.v8.utils.isCompileRCSCategory,rendererHelper));extractors.set('v8:compile:optimize_rcs',rendererHelper=>extractTaskRCS(getEventTimes,tr.metrics.v8.utils.isCompileOptimizeRCSCategory,rendererHelper));return extractors;}
-tr.metrics.MetricRegistry.register(expectedQueueingTimeMetric);return{expectedQueueingTimeMetric,};});'use strict';tr.exportTo('tr.b',function(){function MultiDimensionalViewNode(title,valueCount){this.title=title;const dimensions=title.length;this.children=new Array(dimensions);for(let i=0;i=this.dimensions_){throw new Error('Invalid dimension');}
-const dimensionChildren=parentNode.children[dimension];let childNode=dimensionChildren.get(childDimensionTitle);if(childNode!==undefined){return childNode;}
-const childTitle=parentNode.title.slice();childTitle[dimension]=childDimensionTitle;childNode=new MultiDimensionalViewNode(childTitle,this.valueCount_);dimensionChildren.set(childDimensionTitle,childNode);return childNode;},setUpMissingChildRelationships_(node,firstDimensionToSetUp){for(let d=firstDimensionToSetUp;d=firstDimensionToFinalize){this.finalizeTotalValues_(childNode,d,dimensionalSelfSumsMap);}
-const childNodeSelfSums=dimensionalSelfSumsMap.get(childNode);const childNodeValues=childNode.values;for(let v=0;vNOT_PROVIDED){nodeValues[v].totalState=Math.max(nodeValues[v].totalState,LOWER_BOUND);}}}
-dimensionalSelfSums[d]=nodeSelfSums.slice();for(let v=0;vNOT_PROVIDED){targetNodeValue.totalState=Math.max(targetNodeValue.totalState,LOWER_BOUND);}}}}};function RecursionDepthTracker(maxDepth,dimension){this.titlePath=new Array(maxDepth);this.viewNodePath=new Array(maxDepth);this.bottomIndex=this.topIndex=maxDepth;this.dimension_=dimension;this.currentTrackerNode_=this.createNode_(0,undefined);}
-RecursionDepthTracker.prototype={push(viewNode){if(this.bottomIndex===0){throw new Error('Cannot push to a full tracker');}
-const title=viewNode.title[this.dimension_];this.bottomIndex--;this.titlePath[this.bottomIndex]=title;this.viewNodePath[this.bottomIndex]=viewNode;let childTrackerNode=this.currentTrackerNode_.children.get(title);if(childTrackerNode!==undefined){this.currentTrackerNode_=childTrackerNode;return;}
-const maxLengths=zFunction(this.titlePath,this.bottomIndex);let recursionDepth=0;for(let i=0;iright){left=i;right=i+maxLength-1;}
-z[i]=maxLength;}
-return z;}
-return{MultiDimensionalViewBuilder,MultiDimensionalViewNode,RecursionDepthTracker,zFunction,};});'use strict';tr.exportTo('tr.e.chrome',function(){class CpuTime{static getStageToInitiatorToSegmentBounds(segments,rangeOfInterest){const stageToInitiatorToRanges=new Map();stageToInitiatorToRanges.set('all_stages',new Map([['all_initiators',new Set()]]));const allRanges=stageToInitiatorToRanges.get('all_stages').get('all_initiators');for(const segment of segments){if(!rangeOfInterest.intersectsRangeInclusive(segment.range))continue;const intersectingRange=rangeOfInterest.findIntersection(segment.range);allRanges.add(intersectingRange);for(const expectation of segment.expectations){const stageTitle=expectation.stageTitle;if(!stageToInitiatorToRanges.has(stageTitle)){stageToInitiatorToRanges.set(stageTitle,new Map([['all_initiators',new Set()]]));}
-const initiatorToRanges=stageToInitiatorToRanges.get(stageTitle);initiatorToRanges.get('all_initiators').add(intersectingRange);const initiatorType=expectation.initiatorType;if(initiatorType){if(!initiatorToRanges.has(initiatorType)){initiatorToRanges.set(initiatorType,new Set());}
-initiatorToRanges.get(initiatorType).add(intersectingRange);}}}
-return stageToInitiatorToRanges;}
-static constructMultiDimensionalView(model,rangeOfInterest){const mdvBuilder=new tr.b.MultiDimensionalViewBuilder(3,2);const stageToInitiatorToRanges=CpuTime.getStageToInitiatorToSegmentBounds(model.userModel.segments,rangeOfInterest);const allSegmentBoundsInRange=stageToInitiatorToRanges.get('all_stages').get('all_initiators');for(const[pid,process]of Object.entries(model.processes)){const processType=tr.e.chrome.chrome_processes.canonicalizeProcessName(process.name);for(const[tid,thread]of Object.entries(process.threads)){const rangeToCpuTime=new Map();for(const range of allSegmentBoundsInRange){rangeToCpuTime.set(range,thread.getCpuTimeForRange(range));}
-for(const[stage,initiatorToRanges]of stageToInitiatorToRanges){for(const[initiator,ranges]of initiatorToRanges){const cpuTime=tr.b.math.Statistics.sum(ranges,range=>rangeToCpuTime.get(range));const duration=tr.b.math.Statistics.sum(ranges,range=>range.duration);const cpuTimePerSecond=cpuTime/duration;mdvBuilder.addPath([[processType],[thread.type],[stage,initiator]],[cpuTimePerSecond,cpuTime],tr.b.MultiDimensionalViewBuilder.ValueKind.TOTAL);}}}}
-return mdvBuilder.buildTopDownTreeView();}}
-return{CpuTime,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CPU_PERCENTAGE_UNIT=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const CPU_TIME_UNIT=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;function clonePath_(previousPath){return previousPath.map(subPath=>subPath.map(x=>x));}
-function decodePath_(path){return{processType:path[0][0],threadType:path[1][0],railStage:path[2][0],initiatorType:path[2][1]};}
-function stringifyPathName_(path){const decodedPath=decodePath_(path);return[decodedPath.processType,decodedPath.threadType,decodedPath.railStage,decodedPath.initiatorType].join(':');}
-class CpuTimeTreeDataReporter{constructor(){this.visitedSet_=new Set();}
-reportValuesFromNode_(node,path){const decodedPath=decodePath_(path);const processType=decodedPath.processType||'all_processes';const threadType=decodedPath.threadType||'all_threads';if(!decodedPath.railStage||!decodedPath.initiatorType)return;const{railStage,initiatorType}=decodedPath;const serializedPathName=[processType,threadType,railStage,initiatorType].join(':');const cpuPercentageValue=node.values[0].total;const cpuTimeValue=node.values[1].total;this.histogramSet_.createHistogram(`cpuPercentage:${serializedPathName}`,CPU_PERCENTAGE_UNIT,cpuPercentageValue);this.histogramSet_.createHistogram(`cpuTime:${serializedPathName}`,CPU_TIME_UNIT,cpuTimeValue);}
-reportDataFromTree_(root,rootPath){const rootPathString=stringifyPathName_(rootPath);if(this.visitedSet_.has(rootPathString))return;this.visitedSet_.add(rootPathString);this.reportValuesFromNode_(root,rootPath);for(let dimension=0;dimensiontrue,function(processDump,addProcessScalar){addProcessScalar({source:'process_count',property:PROCESS_COUNT,value:1});if(processDump.totals!==undefined){addProcessScalar({source:'reported_by_os',property:RESIDENT_SIZE,component:['system_memory'],value:processDump.totals.residentBytes});addProcessScalar({source:'reported_by_os',property:PEAK_RESIDENT_SIZE,component:['system_memory'],value:processDump.totals.peakResidentBytes});addProcessScalar({source:'reported_by_os',property:PRIVATE_FOOTPRINT_SIZE,component:['system_memory'],value:processDump.totals.privateFootprintBytes,});}
-if(processDump.memoryAllocatorDumps===undefined)return;processDump.memoryAllocatorDumps.forEach(function(rootAllocatorDump){CHROME_VALUE_PROPERTIES.forEach(function(property){addProcessScalar({source:'reported_by_chrome',component:[rootAllocatorDump.name],property,value:rootAllocatorDump.numerics[property.name]});});if(rootAllocatorDump.numerics.allocated_objects_size===undefined){const allocatedObjectsDump=rootAllocatorDump.getDescendantDumpByFullName('allocated_objects');if(allocatedObjectsDump!==undefined){addProcessScalar({source:'reported_by_chrome',component:[rootAllocatorDump.name],property:ALLOCATED_OBJECTS_SIZE,value:allocatedObjectsDump.numerics.size});}}});addTopHeapDumpCategoryValue(processDump,addProcessScalar);addV8MemoryDumpValues(processDump,addProcessScalar);},function(componentTree){const tracingNode=componentTree.children[1].get('tracing');if(tracingNode===undefined)return;for(let i=0;i0){throw new Error('Unexpected process count non-empty component path: '+
-componentPath.join(':'));}
-return'total number of '+convertProcessNameToUserFriendlyName(processName,true);}};const EFFECTIVE_SIZE={name:'effective_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'effective size',componentPreposition:'of'});}};const ALLOCATED_OBJECTS_SIZE={name:'allocated_objects_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'size of all objects allocated',totalUserFriendlyPropertyName:'size of all allocated objects',componentPreposition:'by'});}};const SHIM_ALLOCATED_OBJECTS_SIZE={name:'shim_allocated_objects_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'size of all objects allocated through shim',totalUserFriendlyPropertyName:'size of all allocated objects through shim',componentPreposition:'by'});}};const LOCKED_SIZE={name:'locked_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'locked (pinned) size',componentPreposition:'of'});}};const PEAK_SIZE={name:'peak_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'peak size',componentPreposition:'of'});}};const HEAP_CATEGORY_SIZE={name:'heap_category_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyName:'heap profiler category size',componentPreposition:'for'});}};const CODE_AND_METADATA_SIZE={name:'code_and_metadata_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildChromeValueDescriptionPrefix(componentPath,processName,{userFriendlyPropertyNamePrefix:'size of',userFriendlyPropertyName:'code and metadata'});}};const CHROME_VALUE_PROPERTIES=[EFFECTIVE_SIZE,ALLOCATED_OBJECTS_SIZE,SHIM_ALLOCATED_OBJECTS_SIZE,LOCKED_SIZE,PEAK_SIZE];function buildChromeValueDescriptionPrefix(componentPath,processName,formatSpec){const nameParts=[];if(componentPath.length===0){nameParts.push('total');if(formatSpec.totalUserFriendlyPropertyName){nameParts.push(formatSpec.totalUserFriendlyPropertyName);}else{if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}
-nameParts.push(formatSpec.userFriendlyPropertyName);}
-nameParts.push('reported by Chrome for');}else{if(formatSpec.componentPreposition===undefined){if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}
-nameParts.push(componentPath.join(':'));nameParts.push(formatSpec.userFriendlyPropertyName);}else{if(formatSpec.userFriendlyPropertyNamePrefix){nameParts.push(formatSpec.userFriendlyPropertyNamePrefix);}
-nameParts.push(formatSpec.userFriendlyPropertyName);nameParts.push(formatSpec.componentPreposition);if(componentPath[componentPath.length-1]==='allocated_by_malloc'){nameParts.push('objects allocated by malloc for');nameParts.push(componentPath.slice(0,componentPath.length-1).join(':'));}else{nameParts.push(componentPath.join(':'));}}
-nameParts.push('in');}
-nameParts.push(convertProcessNameToUserFriendlyName(processName));return nameParts.join(' ');}
-const RESIDENT_SIZE={name:'resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'resident set size (RSS)');}};const PEAK_RESIDENT_SIZE={name:'peak_resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'peak resident set size');}};const PROPORTIONAL_RESIDENT_SIZE={name:'proportional_resident_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'proportional resident size (PSS)');}};const PRIVATE_DIRTY_SIZE={name:'private_dirty_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'private dirty size');}};const PRIVATE_FOOTPRINT_SIZE={name:'private_footprint_size',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'private footprint size');}};const JAVA_BASE_CLEAN_RESIDENT={name:'java_base_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'java base odex and vdex total clean resident size');}};const JAVA_BASE_PSS={name:'java_base_pss',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'java base odex and vdex proportional resident size');}};const NATIVE_LIBRARY_PRIVATE_CLEAN_RESIDENT={name:'native_library_private_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library private clean resident size');}};const NATIVE_LIBRARY_SHARED_CLEAN_RESIDENT={name:'native_library_shared_clean_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library shared clean resident size');}};const NATIVE_LIBRARY_PROPORTIONAL_RESIDENT={name:'native_library_proportional_resident',unit:sizeInBytes_smallerIsBetter,buildDescriptionPrefix(componentPath,processName){return buildOsValueDescriptionPrefix(componentPath,processName,'native library proportional resident size');}};function buildOsValueDescriptionPrefix(componentPath,processName,userFriendlyPropertyName){if(componentPath.length>2){throw new Error('OS value component path for \''+
-userFriendlyPropertyName+'\' too long: '+componentPath.join(':'));}
-const nameParts=[];if(componentPath.length<2){nameParts.push('total');}
-nameParts.push(userFriendlyPropertyName);if(componentPath.length>0){switch(componentPath[0]){case'system_memory':if(componentPath.length>1){const userFriendlyComponentName=SYSTEM_VALUE_COMPONENTS[componentPath[1]].userFriendlyName;if(userFriendlyComponentName===undefined){throw new Error('System value sub-component for \''+
-userFriendlyPropertyName+'\' unknown: '+
-componentPath.join(':'));}
-nameParts.push('of',userFriendlyComponentName,'in');}else{nameParts.push('of system memory (RAM) used by');}
-break;case'gpu_memory':if(componentPath.length>1){nameParts.push('of the',componentPath[1]);nameParts.push('Android memtrack component in');}else{nameParts.push('of GPU memory (Android memtrack) used by');}
-break;default:throw new Error('OS value component for \''+
-userFriendlyPropertyName+'\' unknown: '+
-componentPath.join(':'));}}else{nameParts.push('reported by the OS for');}
-nameParts.push(convertProcessNameToUserFriendlyName(processName));return nameParts.join(' ');}
-function addDetailedMemoryDumpValues(browserNameToGlobalDumps,values){addMemoryDumpValues(browserNameToGlobalDumps,g=>g.levelOfDetail===DETAILED,function(processDump,addProcessScalar){for(const[componentName,componentSpec]of
-Object.entries(SYSTEM_VALUE_COMPONENTS)){const node=getDescendantVmRegionClassificationNode(processDump.vmRegions,componentSpec.classificationPath);const componentPath=['system_memory'];if(componentName)componentPath.push(componentName);addProcessScalar({source:'reported_by_os',component:componentPath,property:PROPORTIONAL_RESIDENT_SIZE,value:node===undefined?0:(node.byteStats.proportionalResident||0)});addProcessScalar({source:'reported_by_os',component:componentPath,property:PRIVATE_DIRTY_SIZE,value:node===undefined?0:(node.byteStats.privateDirtyResident||0)});if(node){if(node.byteStats.javaBasePss){addProcessScalar({source:'reported_by_os',component:componentPath,property:JAVA_BASE_PSS,value:node.byteStats.javaBasePss});}
-if(node.byteStats.javaBaseCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:JAVA_BASE_CLEAN_RESIDENT,value:node.byteStats.javaBaseCleanResident});}}
-if(node){if(node.byteStats.nativeLibraryPrivateCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_PRIVATE_CLEAN_RESIDENT,value:node.byteStats.nativeLibraryPrivateCleanResident});}
-if(node.byteStats.nativeLibrarySharedCleanResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_SHARED_CLEAN_RESIDENT,value:node.byteStats.nativeLibrarySharedCleanResident});}
-if(node.byteStats.nativeLibraryProportionalResident){addProcessScalar({source:'reported_by_os',component:componentPath,property:NATIVE_LIBRARY_PROPORTIONAL_RESIDENT,value:node.byteStats.nativeLibraryProportionalResident});}}}
-const memtrackDump=processDump.getMemoryAllocatorDumpByFullName('gpu/android_memtrack');if(memtrackDump!==undefined){memtrackDump.children.forEach(function(memtrackChildDump){addProcessScalar({source:'reported_by_os',component:['gpu_memory',memtrackChildDump.name],property:PROPORTIONAL_RESIDENT_SIZE,value:memtrackChildDump.numerics.memtrack_pss});});}},function(componentTree){},values);}
-const SYSTEM_VALUE_COMPONENTS={'':{classificationPath:[],},'java_heap':{classificationPath:['Android','Java runtime','Spaces'],userFriendlyName:'the Java heap'},'ashmem':{classificationPath:['Android','Ashmem'],userFriendlyName:'ashmem'},'native_heap':{classificationPath:['Native heap'],userFriendlyName:'the native heap'},'stack':{classificationPath:['Stack'],userFriendlyName:'the thread stacks'}};function getDescendantVmRegionClassificationNode(node,path){for(let i=0;ic.title===path[i]);}
-return node;}
-function addMemoryDumpCountValues(browserNameToGlobalDumps,values){browserNameToGlobalDumps.forEach(function(globalDumps,browserName){let totalDumpCount=0;const levelOfDetailNameToDumpCount={};LEVEL_OF_DETAIL_NAMES.forEach(function(levelOfDetailName){levelOfDetailNameToDumpCount[levelOfDetailName]=0;});levelOfDetailNameToDumpCount[HEAP_PROFILER_DETAIL_NAME]=0;globalDumps.forEach(function(globalDump){totalDumpCount++;const levelOfDetailName=LEVEL_OF_DETAIL_NAMES.get(globalDump.levelOfDetail);if(levelOfDetailName===undefined){return;}
-levelOfDetailNameToDumpCount[levelOfDetailName]++;if(globalDump.levelOfDetail===DETAILED){if(detectHeapProfilerInMemoryDump(globalDump)){levelOfDetailNameToDumpCount[HEAP_PROFILER_DETAIL_NAME]++;}}});reportMemoryDumpCountAsValue(browserName,undefined,totalDumpCount,values);for(const[levelOfDetailName,levelOfDetailDumpCount]of
-Object.entries(levelOfDetailNameToDumpCount)){reportMemoryDumpCountAsValue(browserName,levelOfDetailName,levelOfDetailDumpCount,values);}});}
-function detectHeapProfilerInMemoryDump(globalDump){for(const processDump of Object.values(globalDump.processMemoryDumps)){if(processDump.heapDumps&&processDump.heapDumps.malloc){const mallocDump=processDump.heapDumps.malloc;if(mallocDump.entries&&mallocDump.entries.length>0){return true;}}}
-return false;}
-function reportMemoryDumpCountAsValue(browserName,levelOfDetailName,levelOfDetailDumpCount,values){const nameParts=['memory',browserName,'all_processes','dump_count'];if(levelOfDetailName!==undefined){nameParts.push(levelOfDetailName);}
-const name=nameParts.join(':');const histogram=new tr.v.Histogram(name,count_smallerIsBetter,BOUNDARIES_FOR_UNIT_MAP.get(count_smallerIsBetter));histogram.addSample(levelOfDetailDumpCount);const userFriendlyLevelOfDetail=(levelOfDetailName||'all').replace('_',' ');histogram.description=['total number of',userFriendlyLevelOfDetail,'memory dumps added by',convertBrowserNameToUserFriendlyName(browserName),'to the trace'].join(' ');values.addHistogram(histogram);}
-function addMemoryDumpValues(browserNameToGlobalDumps,customGlobalDumpFilter,customProcessDumpValueExtractor,customComponentTreeModifier,values){browserNameToGlobalDumps.forEach(function(globalDumps,browserName){const filteredGlobalDumps=globalDumps.filter(customGlobalDumpFilter);const sourceToPropertyToBuilder=extractDataFromGlobalDumps(filteredGlobalDumps,customProcessDumpValueExtractor);reportDataAsValues(sourceToPropertyToBuilder,browserName,customComponentTreeModifier,values);});}
-function extractDataFromGlobalDumps(globalDumps,customProcessDumpValueExtractor){const sourceToPropertyToBuilder=new Map();const dumpCount=globalDumps.length;globalDumps.forEach(function(globalDump,dumpIndex){for(const processDump of Object.values(globalDump.processMemoryDumps)){extractDataFromProcessDump(processDump,sourceToPropertyToBuilder,dumpIndex,dumpCount,customProcessDumpValueExtractor);}});return sourceToPropertyToBuilder;}
-function extractDataFromProcessDump(processDump,sourceToPropertyToBuilder,dumpIndex,dumpCount,customProcessDumpValueExtractor){const rawProcessName=processDump.process.name;const processNamePath=[tr.e.chrome.chrome_processes.canonicalizeProcessName(rawProcessName)];customProcessDumpValueExtractor(processDump,function addProcessScalar(spec){if(spec.value===undefined)return;const component=spec.component||[];function createDetailsForErrorMessage(){return['source=',spec.source,', property=',spec.property.name||'(undefined)',', component=',component.length===0?'(empty)':component.join(':'),' in ',processDump.process.userFriendlyName].join('');}
-let value;if(spec.value instanceof tr.b.Scalar){value=spec.value.value;if(spec.value.unit!==spec.property.unit){throw new Error('Scalar unit for '+
-createDetailsForErrorMessage()+' ('+
-spec.value.unit.unitName+') doesn\'t match the unit of the property ('+
-spec.property.unit.unitName+')');}}else{value=spec.value;}
-let propertyToBuilder=sourceToPropertyToBuilder.get(spec.source);if(propertyToBuilder===undefined){propertyToBuilder=new Map();sourceToPropertyToBuilder.set(spec.source,propertyToBuilder);}
-let builder=propertyToBuilder.get(spec.property);if(builder===undefined){builder=new tr.b.MultiDimensionalViewBuilder(2,dumpCount),propertyToBuilder.set(spec.property,builder);}
-const values=new Array(dumpCount);values[dumpIndex]=value;builder.addPath([processNamePath,component],values,tr.b.MultiDimensionalViewBuilder.ValueKind.TOTAL);});}
-function reportDataAsValues(sourceToPropertyToBuilder,browserName,customComponentTreeModifier,values){sourceToPropertyToBuilder.forEach(function(propertyToBuilder,sourceName){propertyToBuilder.forEach(function(builders,property){const tree=builders.buildTopDownTreeView();reportComponentDataAsValues(browserName,sourceName,property,[],[],tree,values,customComponentTreeModifier);});});}
-function reportComponentDataAsValues(browserName,sourceName,property,processPath,componentPath,tree,values,customComponentTreeModifier,opt_cachedHistograms){const cachedHistograms=opt_cachedHistograms||new Map();function recurse(processPath,componentPath,node){return reportComponentDataAsValues(browserName,sourceName,property,processPath,componentPath,node,values,customComponentTreeModifier,cachedHistograms);}
-function buildHistogram(processPath,componentPath,node){return buildNamedMemoryNumericFromNode(browserName,sourceName,property,processPath.length===0?'all_processes':processPath[0],componentPath,node);}
-customComponentTreeModifier(tree);const histogram=buildHistogram(processPath,componentPath,tree);if(cachedHistograms.has(histogram.name)){return cachedHistograms.get(histogram.name);}
-cachedHistograms.set(histogram.name,histogram);const processNames=new tr.v.d.RelatedNameMap();for(const[childProcessName,childProcessNode]of tree.children[0]){processPath.push(childProcessName);const childProcessHistogram=recurse(processPath,componentPath,childProcessNode);processNames.set(childProcessName,childProcessHistogram.name);processPath.pop();}
-const componentNames=new tr.v.d.RelatedNameMap();for(const[childComponentName,childComponentNode]of tree.children[1]){componentPath.push(childComponentName);const childComponentHistogram=recurse(processPath,componentPath,childComponentNode);componentNames.set(childComponentName,childComponentHistogram.name);componentPath.pop();}
-values.addHistogram(histogram);if(tree.children[0].size>0){histogram.diagnostics.set('processes',processNames);}
-if(tree.children[1].size>0){histogram.diagnostics.set('components',componentNames);}
-return histogram;}
-function getNumericName(browserName,sourceName,propertyName,processName,componentPath){const nameParts=['memory',browserName,processName,sourceName].concat(componentPath);if(propertyName!==undefined)nameParts.push(propertyName);return nameParts.join(':');}
-function getNumericDescription(property,browserName,processName,componentPath){return[property.buildDescriptionPrefix(componentPath,processName),'in',convertBrowserNameToUserFriendlyName(browserName)].join(' ');}
-function buildNamedMemoryNumericFromNode(browserName,sourceName,property,processName,componentPath,node){const name=getNumericName(browserName,sourceName,property.name,processName,componentPath);const description=getNumericDescription(property,browserName,processName,componentPath);const numeric=buildMemoryNumericFromNode(name,node,property.unit);numeric.description=description;return numeric;}
-function buildSampleDiagnostics(value,node){if(node.children.length<2)return undefined;const diagnostics=new Map();const i=node.values.indexOf(value);const processBreakdown=new tr.v.d.Breakdown();processBreakdown.colorScheme=tr.e.chrome.chrome_processes.PROCESS_COLOR_SCHEME_NAME;for(const[name,subNode]of node.children[0]){processBreakdown.set(name,subNode.values[i].total);}
-if(processBreakdown.size>0){diagnostics.set('processes',processBreakdown);}
-const componentBreakdown=new tr.v.d.Breakdown();for(const[name,subNode]of node.children[1]){componentBreakdown.set(name,subNode.values[i].total);}
-if(componentBreakdown.size>0){diagnostics.set('components',componentBreakdown);}
-if(diagnostics.size===0)return undefined;return diagnostics;}
-function buildMemoryNumericFromNode(name,node,unit){const histogram=new tr.v.Histogram(name,unit,BOUNDARIES_FOR_UNIT_MAP.get(unit));node.values.forEach(v=>histogram.addSample(v.total,buildSampleDiagnostics(v,node)));return histogram;}
-tr.metrics.MetricRegistry.register(memoryMetric,{supportsRangeOfInterest:true});return{memoryMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const BYTE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e9,1e2);function nativeCodeResidentMemoryMetric(histograms,model){const histogram=new tr.v.Histogram('NativeCodeResidentMemory',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);for(const slice of model.getDescendantEvents()){if(slice.category==='disabled-by-default-memory-infra'&&slice.title==='ReportGlobalNativeCodeResidentMemoryKb'&&slice.args.NativeCodeResidentMemory){histogram.addSample(slice.args.NativeCodeResidentMemory);}}
-histograms.addHistogram(histogram);}
-tr.metrics.MetricRegistry.register(nativeCodeResidentMemoryMetric);return{nativeCodeResidentMemoryMetric,};});'use strict';tr.exportTo('tr.metrics.sh',function(){const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const EventFinderUtils=tr.e.chrome.EventFinderUtils;const LOADING_METRIC_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(0,1e3,20).addLinearBins(3e3,20).addExponentialBins(20e3,20);const SUMMARY_OPTIONS={avg:true,count:false,max:false,min:false,std:false,sum:false,};function addSamplesToHistogram(pairInfo,breakdownTree,histogram,histograms,diagnostics){histogram.addSample(pairInfo.end-pairInfo.start,diagnostics);if(!breakdownTree){return;}
-for(const[category,breakdown]of Object.entries(breakdownTree)){const relatedName=`${histogram.name}:${category}`;if(!histograms.getHistogramNamed(relatedName)){const relatedHist=histograms.createHistogram(relatedName,histogram.unit,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,summaryOptions:{count:false,max:false,min:false,sum:false,},});}
-const relatedHist=histograms.getHistogramNamed(relatedName);let relatedNames=histogram.diagnostics.get('breakdown');if(!relatedNames){relatedNames=new tr.v.d.RelatedNameMap();histogram.diagnostics.set('breakdown',relatedNames);}
-relatedNames.set(category,relatedName);relatedHist.addSample(breakdown.total,{breakdown:tr.v.d.Breakdown.fromEntries(Object.entries(breakdown.events)),});}}
-function splitOneRangeIntoPerSecondRanges(startTime,endTime){const results=[];for(let i=0;startTime+(i+1)*1000<=endTime;i+=1){const start=i*1000;const end=(i+1)*1000;results.push({start,end,});}
-return results;}
-function getNavigationInfos(model){const navigationInfos=[];const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}
-const rendererHelper=chromeHelper.rendererHelpers[expectation.renderProcess.pid];if(rendererHelper.mainThread===undefined)continue;navigationInfos.push({navigationStart:expectation.navigationStart,rendererHelper,url:expectation.url});}
-navigationInfos.forEach((navInfo,i)=>{if(i===navigationInfos.length-1){navInfo.navigationEndTime=model.bounds.max;}else{navInfo.navigationEndTime=navigationInfos[i+1].navigationStart.start;}});return navigationInfos;}
-function getWallTimeBreakdownTree(rendererHelper,start,end){const startEndRange=tr.b.math.Range.fromExplicitRange(start,end);const networkEvents=EventFinderUtils.getNetworkEventsInRange(rendererHelper.process,startEndRange);const breakdownTree=tr.metrics.sh.generateWallClockTimeBreakdownTree(rendererHelper.mainThread,networkEvents,startEndRange);return breakdownTree;}
-function getCpuTimeBreakdownTree(rendererHelper,start,end){const startEndRange=tr.b.math.Range.fromExplicitRange(start,end);const breakdownTree=tr.metrics.sh.generateCpuTimeBreakdownTree(rendererHelper.mainThread,startEndRange);return breakdownTree;}
-function persecondMetric(histograms,model){const navigationInfos=getNavigationInfos(model);if(navigationInfos.length===0){return;}
-navigationInfos.forEach(navInfo=>{const navigationStart=navInfo.navigationStart.start;const navigationEnd=navInfo.navigationEndTime;const startEndPairs=splitOneRangeIntoPerSecondRanges(navigationStart,navigationEnd);const breakdownList=startEndPairs.map(p=>{const wallHistogramName=`wall_${p.start}_to_${p.end}`;const wallHistogramDescription=`Wall-clock time ${p.start} to ${p.end} breakdown`;const cpuHistogramName=`cpu_${p.start}_to_${p.end}`;const cpuHistogramDescription=`CPU time ${p.start} to ${p.end} breakdown`;const pid=navInfo.rendererHelper.pid;const breakdownTree=getWallTimeBreakdownTree(navInfo.rendererHelper,navigationStart+p.start,navigationStart+p.end);const cpuBreakdownTree=getCpuTimeBreakdownTree(navInfo.rendererHelper,navigationStart+p.start,navigationStart+p.end);const diagnostics={'Navigation infos':new tr.v.d.GenericSet([{url:navInfo.url,pid:navInfo.rendererHelper.pid,navStart:navigationStart,frameIdRef:navInfo.navigationStart.args.frame}]),'breakdown':tr.metrics.sh.createBreakdownDiagnostic(breakdownTree),};return Object.assign(p,{breakdownTree,cpuBreakdownTree,wallHistogramName,wallHistogramDescription,cpuHistogramName,cpuHistogramDescription,diagnostics,});});breakdownList.forEach(p=>{if(!histograms.getHistogramNamed(p.wallHistogramName)){histograms.createHistogram(p.wallHistogramName,timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:p.wallHistogramDescription,summaryOptions:SUMMARY_OPTIONS,});}
-const wallHistogram=histograms.getHistogramNamed(p.wallHistogramName);addSamplesToHistogram(p,p.breakdownTree,wallHistogram,histograms,p.diagnostics);if(!histograms.getHistogramNamed(p.cpuHistogramName)){histograms.createHistogram(p.cpuHistogramName,timeDurationInMs_smallerIsBetter,[],{binBoundaries:LOADING_METRIC_BOUNDARIES,description:p.cpuHistogramDescription,summaryOptions:SUMMARY_OPTIONS,});}
-const cpuHistogram=histograms.getHistogramNamed(p.cpuHistogramName);addSamplesToHistogram(p,p.cpuBreakdownTree,cpuHistogram,histograms,p.diagnostics);});});}
-tr.metrics.MetricRegistry.register(persecondMetric);return{persecondMetric,splitOneRangeIntoPerSecondRanges};});'use strict';tr.exportTo('tr.metrics.sh',function(){const CHROME_POWER_GRACE_PERIOD_MS=1;function createEmptyHistogram_(interval,histograms){if(interval.perSecond){return{perSecond:true,energy:histograms.createHistogram(`${interval.name}:power`,tr.b.Unit.byName.powerInWatts_smallerIsBetter,[],{description:`Energy consumption rate for ${interval.description}`,summaryOptions:{avg:true,count:false,max:true,min:true,std:false,sum:false,},}),};}
-return{perSecond:false,energy:histograms.createHistogram(`${interval.name}:energy`,tr.b.Unit.byName.energyInJoules_smallerIsBetter,[],{description:`Energy consumed in ${interval.description}`,summaryOptions:{avg:false,count:false,max:true,min:true,std:false,sum:true,},}),};}
-function createHistograms_(data,interval,histograms){if(data.histograms[interval.name]===undefined){data.histograms[interval.name]=createEmptyHistogram_(interval,histograms);}
-if(data.histograms[interval.name].perSecond){for(const sample of data.model.device.powerSeries.getSamplesWithinRange(interval.bounds.min,interval.bounds.max)){data.histograms[interval.name].energy.addSample(sample.powerInW);}}else{const energyInJ=data.model.device.powerSeries.getEnergyConsumedInJ(interval.bounds.min,interval.bounds.max);data.histograms[interval.name].energy.addSample(energyInJ);}}
-function getNavigationTTIIntervals_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const intervals=[];for(const expectation of model.userModel.expectations){if(!(expectation instanceof tr.model.um.LoadExpectation))continue;if(tr.e.chrome.CHROME_INTERNAL_URLS.includes(expectation.url)){continue;}
-if(expectation.timeToInteractive!==undefined){intervals.push(tr.b.math.Range.fromExplicitRange(expectation.navigationStart.start,expectation.timeToInteractive));}}
-return intervals.sort((x,y)=>x.min-y.min);}
-function*computeTimeIntervals_(model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const powerSeries=model.device.powerSeries;if(powerSeries===undefined||powerSeries.samples.length===0){return;}
-yield{bounds:model.bounds,name:'story',description:'user story',perSecond:true};const chromeBounds=computeChromeBounds_(model);if(chromeBounds.isEmpty)return;const powerSeriesBoundsWithGracePeriod=tr.b.math.Range.fromExplicitRange(powerSeries.bounds.min-CHROME_POWER_GRACE_PERIOD_MS,powerSeries.bounds.max+CHROME_POWER_GRACE_PERIOD_MS);if(!powerSeriesBoundsWithGracePeriod.containsRangeExclusive(chromeBounds)){return;}
-for(const interval of getRailStageIntervals_(model)){yield{bounds:interval.bounds.findIntersection(chromeBounds),name:interval.name,description:interval.description,perSecond:interval.perSecond};}
-for(const interval of getLoadingIntervals_(model,chromeBounds)){yield{bounds:interval.bounds.findIntersection(chromeBounds),name:interval.name,description:interval.description,perSecond:interval.perSecond};}}
-function*getRailStageIntervals_(model){for(const exp of model.userModel.expectations){const histogramName=exp.title.toLowerCase().replace(' ','_');const energyHist=undefined;if(histogramName.includes('response')){yield{bounds:tr.b.math.Range.fromExplicitRange(exp.start,exp.end),name:histogramName,description:'RAIL stage '+histogramName,perSecond:false};}else if(histogramName.includes('animation')||histogramName.includes('idle')){yield{bounds:tr.b.math.Range.fromExplicitRange(exp.start,exp.end),name:histogramName,description:'RAIL stage '+histogramName,perSecond:true};}}}
-function*getLoadingIntervals_(model,chromeBounds){const ttiIntervals=getNavigationTTIIntervals_(model);for(const ttiInterval of ttiIntervals){yield{bounds:ttiInterval,name:'load',description:'page loads',perSecond:false};}}
-function computeChromeBounds_(model){const chromeBounds=new tr.b.math.Range();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(chromeHelper===undefined)return chromeBounds;for(const helper of chromeHelper.browserHelpers){if(helper.mainThread){chromeBounds.addRange(helper.mainThread.bounds);}}
-for(const pid in chromeHelper.rendererHelpers){if(chromeHelper.rendererHelpers[pid].mainThread){chromeBounds.addRange(chromeHelper.rendererHelpers[pid].mainThread.bounds);}}
-return chromeBounds;}
-function powerMetric(histograms,model){const data={model,histograms:{}};for(const interval of computeTimeIntervals_(model)){createHistograms_(data,interval,histograms);}}
-tr.metrics.MetricRegistry.register(powerMetric);return{powerMetric};});'use strict';tr.exportTo('tr.metrics.sh',function(){function computeAnimationThroughput(animationExpectation){if(animationExpectation.frameEvents===undefined||animationExpectation.frameEvents.length===0){throw new Error('Animation missing frameEvents '+
-animationExpectation.stableId);}
-const durationInS=tr.b.convertUnit(animationExpectation.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);return animationExpectation.frameEvents.length/durationInS;}
-function computeAnimationframeTimeDiscrepancy(animationExpectation){if(animationExpectation.frameEvents===undefined||animationExpectation.frameEvents.length===0){throw new Error('Animation missing frameEvents '+
-animationExpectation.stableId);}
-let frameTimestamps=animationExpectation.frameEvents;frameTimestamps=frameTimestamps.toArray().map(function(event){return event.start;});const absolute=true;return tr.b.math.Statistics.timestampsDiscrepancy(frameTimestamps,absolute);}
-function responsivenessMetric(histograms,model,opt_options){const responseNumeric=new tr.v.Histogram('response latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(100,1e3,50));const throughputNumeric=new tr.v.Histogram('animation throughput',tr.b.Unit.byName.unitlessNumber_biggerIsBetter,tr.v.HistogramBinBoundaries.createLinear(10,60,10));const frameTimeDiscrepancyNumeric=new tr.v.Histogram('animation frameTimeDiscrepancy',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,1e3,50).addExponentialBins(1e4,10));const latencyNumeric=new tr.v.Histogram('animation latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tr.v.HistogramBinBoundaries.createLinear(0,300,60));model.userModel.expectations.forEach(function(ue){if(opt_options&&opt_options.rangeOfInterest&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){return;}
-const sampleDiagnosticMap=tr.v.d.DiagnosticMap.fromObject({relatedEvents:new tr.v.d.RelatedEventSet([ue])});if(ue instanceof tr.model.um.IdleExpectation){return;}else if(ue instanceof tr.model.um.StartupExpectation){return;}else if(ue instanceof tr.model.um.LoadExpectation){}else if(ue instanceof tr.model.um.ResponseExpectation){responseNumeric.addSample(ue.duration,sampleDiagnosticMap);}else if(ue instanceof tr.model.um.AnimationExpectation){if(ue.frameEvents===undefined||ue.frameEvents.length===0){return;}
-const throughput=computeAnimationThroughput(ue);if(throughput===undefined){throw new Error('Missing throughput for '+
-ue.stableId);}
-throughputNumeric.addSample(throughput,sampleDiagnosticMap);const frameTimeDiscrepancy=computeAnimationframeTimeDiscrepancy(ue);if(frameTimeDiscrepancy===undefined){throw new Error('Missing frameTimeDiscrepancy for '+
-ue.stableId);}
-frameTimeDiscrepancyNumeric.addSample(frameTimeDiscrepancy,sampleDiagnosticMap);ue.associatedEvents.forEach(function(event){if(!(event instanceof tr.e.cc.InputLatencyAsyncSlice)){return;}
-latencyNumeric.addSample(event.duration,sampleDiagnosticMap);});}else{throw new Error('Unrecognized stage for '+ue.stableId);}});[responseNumeric,throughputNumeric,frameTimeDiscrepancyNumeric,latencyNumeric].forEach(function(numeric){numeric.customizeSummaryOptions({avg:true,max:true,min:true,std:true});});histograms.addHistogram(responseNumeric);histograms.addHistogram(throughputNumeric);histograms.addHistogram(frameTimeDiscrepancyNumeric);histograms.addHistogram(latencyNumeric);}
-tr.metrics.MetricRegistry.register(responsivenessMetric,{supportsRangeOfInterest:true,requiredCategories:['rail'],});return{responsivenessMetric,};});var JpegImage=(function jpegImage(){"use strict";var dctZigZag=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);var dctCos1=4017
-var dctSin1=799
-var dctCos3=3406
-var dctSin3=2276
-var dctCos6=1567
-var dctSin6=3784
-var dctSqrt2=5793
-var dctSqrt1d2=2896
-function constructor(){}
-function buildHuffmanTable(codeLengths,values){var k=0,code=[],i,j,length=16;while(length>0&&!codeLengths[length-1])
-length--;code.push({children:[],index:0});var p=code[0],q;for(i=0;i0){p=code.pop();}
-p.index++;code.push(p);while(code.length<=i){code.push(q={children:[],index:0});p.children[p.index]=q.children;p=q;}
-k++;}
-if(i+10){bitsCount--;return(bitsData>>bitsCount)&1;}
-bitsData=data[offset++];if(bitsData==0xFF){var nextByte=data[offset++];if(nextByte){throw new Error("unexpected marker: "+((bitsData<<8)|nextByte).toString(16));}}
-bitsCount=7;return bitsData>>>7;}
-function decodeHuffman(tree){var node=tree,bit;while((bit=readBit())!==null){node=node[bit];if(typeof node==='number')
-return node;if(typeof node!=='object')
-throw new Error("invalid huffman sequence");}
-return null;}
-function receive(length){var n=0;while(length>0){var bit=readBit();if(bit===null)return;n=(n<<1)|bit;length--;}
-return n;}
-function receiveAndExtend(length){var n=receive(length);if(n>=1<<(length-1))
-return n;return n+(-1<>4;if(s===0){if(r<15)
-break;k+=16;continue;}
-k+=r;var z=dctZigZag[k];zz[z]=receiveAndExtend(s);k++;}}
-function decodeDCFirst(component,zz){var t=decodeHuffman(component.huffmanTableDC);var diff=t===0?0:(receiveAndExtend(t)<0){eobrun--;return;}
-var k=spectralStart,e=spectralEnd;while(k<=e){var rs=decodeHuffman(component.huffmanTableAC);var s=rs&15,r=rs>>4;if(s===0){if(r<15){eobrun=receive(r)+(1<>4;if(s===0){if(r<15){eobrun=receive(r)+(1<=0xFFD0&&marker<=0xFFD7){offset+=2;}
-else
-break;}
-return offset-startOffset;}
-function buildComponentData(frame,component){var lines=[];var blocksPerLine=component.blocksPerLine;var blocksPerColumn=component.blocksPerColumn;var samplesPerLine=blocksPerLine<<3;var R=new Int32Array(64),r=new Uint8Array(64);function quantizeAndInverse(zz,dataOut,dataIn){var qt=component.quantizationTable;var v0,v1,v2,v3,v4,v5,v6,v7,t;var p=dataIn;var i;for(i=0;i<64;i++)
-p[i]=zz[i]*qt[i];for(i=0;i<8;++i){var row=8*i;if(p[1+row]==0&&p[2+row]==0&&p[3+row]==0&&p[4+row]==0&&p[5+row]==0&&p[6+row]==0&&p[7+row]==0){t=(dctSqrt2*p[0+row]+512)>>10;p[0+row]=t;p[1+row]=t;p[2+row]=t;p[3+row]=t;p[4+row]=t;p[5+row]=t;p[6+row]=t;p[7+row]=t;continue;}
-v0=(dctSqrt2*p[0+row]+128)>>8;v1=(dctSqrt2*p[4+row]+128)>>8;v2=p[2+row];v3=p[6+row];v4=(dctSqrt1d2*(p[1+row]-p[7+row])+128)>>8;v7=(dctSqrt1d2*(p[1+row]+p[7+row])+128)>>8;v5=p[3+row]<<4;v6=p[5+row]<<4;t=(v0-v1+1)>>1;v0=(v0+v1+1)>>1;v1=t;t=(v2*dctSin6+v3*dctCos6+128)>>8;v2=(v2*dctCos6-v3*dctSin6+128)>>8;v3=t;t=(v4-v6+1)>>1;v4=(v4+v6+1)>>1;v6=t;t=(v7+v5+1)>>1;v5=(v7-v5+1)>>1;v7=t;t=(v0-v3+1)>>1;v0=(v0+v3+1)>>1;v3=t;t=(v1-v2+1)>>1;v1=(v1+v2+1)>>1;v2=t;t=(v4*dctSin3+v7*dctCos3+2048)>>12;v4=(v4*dctCos3-v7*dctSin3+2048)>>12;v7=t;t=(v5*dctSin1+v6*dctCos1+2048)>>12;v5=(v5*dctCos1-v6*dctSin1+2048)>>12;v6=t;p[0+row]=v0+v7;p[7+row]=v0-v7;p[1+row]=v1+v6;p[6+row]=v1-v6;p[2+row]=v2+v5;p[5+row]=v2-v5;p[3+row]=v3+v4;p[4+row]=v3-v4;}
-for(i=0;i<8;++i){var col=i;if(p[1*8+col]==0&&p[2*8+col]==0&&p[3*8+col]==0&&p[4*8+col]==0&&p[5*8+col]==0&&p[6*8+col]==0&&p[7*8+col]==0){t=(dctSqrt2*dataIn[i+0]+8192)>>14;p[0*8+col]=t;p[1*8+col]=t;p[2*8+col]=t;p[3*8+col]=t;p[4*8+col]=t;p[5*8+col]=t;p[6*8+col]=t;p[7*8+col]=t;continue;}
-v0=(dctSqrt2*p[0*8+col]+2048)>>12;v1=(dctSqrt2*p[4*8+col]+2048)>>12;v2=p[2*8+col];v3=p[6*8+col];v4=(dctSqrt1d2*(p[1*8+col]-p[7*8+col])+2048)>>12;v7=(dctSqrt1d2*(p[1*8+col]+p[7*8+col])+2048)>>12;v5=p[3*8+col];v6=p[5*8+col];t=(v0-v1+1)>>1;v0=(v0+v1+1)>>1;v1=t;t=(v2*dctSin6+v3*dctCos6+2048)>>12;v2=(v2*dctCos6-v3*dctSin6+2048)>>12;v3=t;t=(v4-v6+1)>>1;v4=(v4+v6+1)>>1;v6=t;t=(v7+v5+1)>>1;v5=(v7-v5+1)>>1;v7=t;t=(v0-v3+1)>>1;v0=(v0+v3+1)>>1;v3=t;t=(v1-v2+1)>>1;v1=(v1+v2+1)>>1;v2=t;t=(v4*dctSin3+v7*dctCos3+2048)>>12;v4=(v4*dctCos3-v7*dctSin3+2048)>>12;v7=t;t=(v5*dctSin1+v6*dctCos1+2048)>>12;v5=(v5*dctCos1-v6*dctSin1+2048)>>12;v6=t;p[0*8+col]=v0+v7;p[7*8+col]=v0-v7;p[1*8+col]=v1+v6;p[6*8+col]=v1-v6;p[2*8+col]=v2+v5;p[5*8+col]=v2-v5;p[3*8+col]=v3+v4;p[4*8+col]=v3-v4;}
-for(i=0;i<64;++i){var sample=128+((p[i]+8)>>4);dataOut[i]=sample<0?0:sample>0xFF?0xFF:sample;}}
-var i,j;for(var blockRow=0;blockRow255?255:a;}
-constructor.prototype={load:function load(path){var xhr=new XMLHttpRequest();xhr.open("GET",path,true);xhr.responseType="arraybuffer";xhr.onload=(function(){var data=new Uint8Array(xhr.response||xhr.mozResponseArrayBuffer);this.parse(data);if(this.onload)
-this.onload();}).bind(this);xhr.send(null);},parse:function parse(data){var offset=0,length=data.length;function readUint16(){var value=(data[offset]<<8)|data[offset+1];offset+=2;return value;}
-function readDataBlock(){var length=readUint16();var array=data.subarray(offset,offset+length-2);offset+=array.length;return array;}
-function prepareComponents(frame){var maxH=0,maxV=0;var component,componentId;for(componentId in frame.components){if(frame.components.hasOwnProperty(componentId)){component=frame.components[componentId];if(maxH>4)===0){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=data[offset++];}}else if((quantizationTableSpec>>4)===1){for(j=0;j<64;j++){var z=dctZigZag[j];tableData[z]=readUint16();}}else
-throw new Error("DQT: invalid table spec");quantizationTables[quantizationTableSpec&15]=tableData;}
-break;case 0xFFC0:case 0xFFC1:case 0xFFC2:readUint16();frame={};frame.extended=(fileMarker===0xFFC1);frame.progressive=(fileMarker===0xFFC2);frame.precision=data[offset++];frame.scanLines=readUint16();frame.samplesPerLine=readUint16();frame.components={};frame.componentsOrder=[];var componentsCount=data[offset++],componentId;var maxH=0,maxV=0;for(i=0;i>4;var v=data[offset+1]&15;var qId=data[offset+2];frame.componentsOrder.push(componentId);frame.components[componentId]={h:h,v:v,quantizationIdx:qId};offset+=3;}
-prepareComponents(frame);frames.push(frame);break;case 0xFFC4:var huffmanLength=readUint16();for(i=2;i>4)===0?huffmanTablesDC:huffmanTablesAC)[huffmanTableSpec&15]=buildHuffmanTable(codeLengths,huffmanValues);}
-break;case 0xFFDD:readUint16();resetInterval=readUint16();break;case 0xFFDA:var scanLength=readUint16();var selectorsCount=data[offset++];var components=[],component;for(i=0;i>4];component.huffmanTableAC=huffmanTablesAC[tableSpec&15];components.push(component);}
-var spectralStart=data[offset++];var spectralEnd=data[offset++];var successiveApproximation=data[offset++];var processed=decodeScan(data,offset,frame,components,resetInterval,spectralStart,spectralEnd,successiveApproximation>>4,successiveApproximation&15);offset+=processed;break;case 0xFFFF:if(data[offset]!==0xFF){offset--;}
-break;default:if(data[offset-3]==0xFF&&data[offset-2]>=0xC0&&data[offset-2]<=0xFE){offset-=3;break;}
-throw new Error("unknown JPEG marker "+fileMarker.toString(16));}
-fileMarker=readUint16();}
-if(frames.length!=1)
-throw new Error("only single frame JPEGs supported");for(var i=0;i{if(snapshot.ts>=navigationStart.start&&snapshot.tsstartTabSwitchVisibilityRequest){tabSwitchLatencies.push(legacy?slice.duration:slice.args.latency);}}}}
-extractLatencyFromHelpers(chromeHelper.browserHelpers);extractLatencyFromHelpers(Object.values(chromeHelper.rendererHelpers));if(tabSwitchLatencies.length===0){extractLatencyFromHelpers(chromeHelper.browserHelpers,true);}
-histograms.createHistogram('tab_switching_latency',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,tabSwitchLatencies,{description:'Tab switching time in ms',summaryOptions:{sum:false}});}
-tr.metrics.MetricRegistry.register(tabsMetric,{supportsRangeOfInterest:false,});return{tabsMetric,};});'use strict';tr.exportTo('tr.metrics',function(){const MEMORY_INFRA_TRACING_CATEGORY='disabled-by-default-memory-infra';const TIME_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1e-3,1e5,30);const BYTE_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e9,30);const COUNT_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1e5,30);const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;function addMemoryInfraHistograms(histograms,model,categoryNamesToTotalEventSizes){const memoryDumpCount=model.globalMemoryDumps.length;if(memoryDumpCount===0)return;let totalOverhead=0;let nonMemoryInfraThreadOverhead=0;const overheadByProvider={};for(const process of Object.values(model.processes)){for(const thread of Object.values(process.threads)){for(const slice of Object.values(thread.sliceGroup.slices)){if(slice.category!==MEMORY_INFRA_TRACING_CATEGORY)continue;totalOverhead+=slice.duration;if(thread.name!=='MemoryInfra'){nonMemoryInfraThreadOverhead+=slice.duration;}
-if(slice.args&&slice.args['dump_provider.name']){const providerName=slice.args['dump_provider.name'];let durationAndCount=overheadByProvider[providerName];if(durationAndCount===undefined){overheadByProvider[providerName]=durationAndCount={duration:0,count:0};}
-durationAndCount.duration+=slice.duration;durationAndCount.count++;}}}}
-histograms.createHistogram('memory_dump_cpu_overhead',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,totalOverhead/memoryDumpCount,{binBoundaries:TIME_BOUNDARIES,description:'Average CPU overhead on all threads per memory-infra dump',summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('nonmemory_thread_memory_dump_cpu_overhead',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,nonMemoryInfraThreadOverhead/memoryDumpCount,{binBoundaries:TIME_BOUNDARIES,description:'Average CPU overhead on non-memory-infra threads '+'per memory-infra dump',summaryOptions:SUMMARY_OPTIONS,});for(const[providerName,overhead]of Object.entries(overheadByProvider)){histograms.createHistogram(`${providerName}_memory_dump_cpu_overhead`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,overhead.duration/overhead.count,{binBoundaries:TIME_BOUNDARIES,description:`Average CPU overhead of ${providerName} per OnMemoryDump call`,summaryOptions:SUMMARY_OPTIONS,});}
-const memoryInfraEventsSize=categoryNamesToTotalEventSizes.get(MEMORY_INFRA_TRACING_CATEGORY);const memoryInfraTraceBytesValue=new tr.v.Histogram('total_memory_dump_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);memoryInfraTraceBytesValue.description='Total trace size of memory-infra dumps in bytes';memoryInfraTraceBytesValue.customizeSummaryOptions(SUMMARY_OPTIONS);memoryInfraTraceBytesValue.addSample(memoryInfraEventsSize);histograms.addHistogram(memoryInfraTraceBytesValue);const traceBytesPerDumpValue=new tr.v.Histogram('memory_dump_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);traceBytesPerDumpValue.description='Average trace size of memory-infra dumps in bytes';traceBytesPerDumpValue.customizeSummaryOptions(SUMMARY_OPTIONS);traceBytesPerDumpValue.addSample(memoryInfraEventsSize/memoryDumpCount);histograms.addHistogram(traceBytesPerDumpValue);}
-function tracingMetric(histograms,model){if(!model.stats.hasEventSizesinBytes)return;const eventStats=model.stats.allTraceEventStatsInTimeIntervals;eventStats.sort((a,b)=>a.timeInterval-b.timeInterval);const totalTraceBytes=eventStats.reduce((a,b)=>a+b.totalEventSizeinBytes,0);let maxEventCountPerSec=0;let maxEventBytesPerSec=0;const INTERVALS_PER_SEC=Math.floor(1000/model.stats.TIME_INTERVAL_SIZE_IN_MS);let runningEventNumPerSec=0;let runningEventBytesPerSec=0;let start=0;let end=0;while(end=INTERVALS_PER_SEC){runningEventNumPerSec-=eventStats[start].numEvents;runningEventBytesPerSec-=eventStats[start].totalEventSizeinBytes;start++;}
-maxEventCountPerSec=Math.max(maxEventCountPerSec,runningEventNumPerSec);maxEventBytesPerSec=Math.max(maxEventBytesPerSec,runningEventBytesPerSec);}
-const stats=model.stats.allTraceEventStats;const categoryNamesToTotalEventSizes=(stats.reduce((map,stat)=>(map.set(stat.category,((map.get(stat.category)||0)+
-stat.totalEventSizeinBytes))),new Map()));const maxCatNameAndBytes=Array.from(categoryNamesToTotalEventSizes.entries()).reduce((a,b)=>((b[1]>=a[1])?b:a));const maxEventBytesPerCategory=maxCatNameAndBytes[1];const categoryWithMaxEventBytes=maxCatNameAndBytes[0];const maxEventCountPerSecValue=new tr.v.Histogram('peak_event_rate',tr.b.Unit.byName.count_smallerIsBetter,COUNT_BOUNDARIES);maxEventCountPerSecValue.description='Max number of events per second';maxEventCountPerSecValue.customizeSummaryOptions(SUMMARY_OPTIONS);maxEventCountPerSecValue.addSample(maxEventCountPerSec);const maxEventBytesPerSecValue=new tr.v.Histogram('peak_event_size_rate',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);maxEventBytesPerSecValue.description='Max event size in bytes per second';maxEventBytesPerSecValue.customizeSummaryOptions(SUMMARY_OPTIONS);maxEventBytesPerSecValue.addSample(maxEventBytesPerSec);const totalTraceBytesValue=new tr.v.Histogram('trace_size',tr.b.Unit.byName.sizeInBytes_smallerIsBetter,BYTE_BOUNDARIES);totalTraceBytesValue.customizeSummaryOptions(SUMMARY_OPTIONS);totalTraceBytesValue.addSample(totalTraceBytes);const biggestCategory={name:categoryWithMaxEventBytes,size_in_bytes:maxEventBytesPerCategory};totalTraceBytesValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(totalTraceBytesValue);maxEventCountPerSecValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(maxEventCountPerSecValue);maxEventBytesPerSecValue.diagnostics.set('category_with_max_event_size',new tr.v.d.GenericSet([biggestCategory]));histograms.addHistogram(maxEventBytesPerSecValue);addMemoryInfraHistograms(histograms,model,categoryNamesToTotalEventSizes);}
-tr.metrics.MetricRegistry.register(tracingMetric);return{tracingMetric,MEMORY_INFRA_TRACING_CATEGORY,};});'use strict';tr.exportTo('tr.metrics',function(){function parseBuckets_(event,processName){const len=tr.b.Base64.getDecodedBufferLength(event.args.buckets);const buffer=new ArrayBuffer(len);const dataView=new DataView(buffer);tr.b.Base64.DecodeToTypedArray(event.args.buckets,dataView);const decoded=new Uint32Array(buffer);const sum=decoded[1]+decoded[2]*0x100000000;const bins=[];let position=4;while(position<=decoded.length-4){const min=decoded[position++];const max=decoded[position++]+decoded[position++]*0x100000000;const count=decoded[position++];const processes=new tr.v.d.Breakdown();processes.set(processName,count);const events=new tr.v.d.RelatedEventSet([event]);bins.push({min,max,count,processes,events});}
-return{sum,bins};}
-function mergeBins_(x,y){x.sum+=y.sum;const allBins=[...x.bins,...y.bins];allBins.sort((a,b)=>a.min-b.min);x.bins=[];let last=undefined;for(const bin of allBins){if(last!==undefined&&bin.min===last.min){if(last.max!==bin.max)throw new Error('Incompatible bins');if(bin.count===0)continue;last.count+=bin.count;for(const event of bin.events){last.events.add(event);}
-last.processes.addDiagnostic(bin.processes);}else{if(last!==undefined&&bin.min0.5)throw new Error('Samples sum is wrong');for(const bin of values.bins){if(bin.count===0)continue;const shiftedValue=(bin.min+bin.max)/2+shift*(bin.max-bin.min);for(const[processName,count]of bin.processes){bin.processes.set(processName,shiftedValue*count/bin.count);}
-for(let i=0;i'v8-gc-total',function(name,events){const cpuDuration=createNumericForTopEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);},['v8-gc-total']);}
-function isV8MarkCompactorSummary(event){return!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event)&&tr.metrics.v8.utils.isMarkCompactorSummaryEvent(event);}
-function isV8MarkCompactorMarkingSummary(event){return!tr.metrics.v8.utils.isForcedGarbageCollectionEvent(event)&&tr.metrics.v8.utils.isMarkCompactorMarkingSummaryEvent(event);}
-function createHistogramFromSummary(histograms,name,events){const foregroundDuration=createNumericForTopEventTime(name+'-foreground');const backgroundDuration=createNumericForTopEventTime(name+'-background');const totalDuration=createNumericForTopEventTime(name+'-total');const relatedNames=new tr.v.d.RelatedNameMap();relatedNames.set('foreground',foregroundDuration.name);relatedNames.set('background',backgroundDuration.name);for(const event of events){foregroundDuration.addSample(event.args.duration);backgroundDuration.addSample(event.args.background_duration);const breakdownForTotal=new tr.v.d.Breakdown();breakdownForTotal.set('foreground',event.args.duration);breakdownForTotal.set('background',event.args.background_duration);totalDuration.addSample(event.args.duration+event.args.background_duration,{breakdown:breakdownForTotal});}
-histograms.addHistogram(foregroundDuration);histograms.addHistogram(backgroundDuration);histograms.addHistogram(totalDuration,{breakdown:relatedNames});}
-function addTotalMarkCompactorTime(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8MarkCompactorSummary,event=>'v8-gc-mark-compactor',(name,events)=>createHistogramFromSummary(histograms,name,events),['v8-gc-mark-compactor']);}
-function addTotalMarkCompactorMarkingTime(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,isV8MarkCompactorMarkingSummary,event=>'v8-gc-mark-compactor-marking',(name,events)=>createHistogramFromSummary(histograms,name,events),['v8-gc-mark-compactor-marking']);}
-function createNumericForTotalBytes(name){const n=new tr.v.Histogram(name,bytes_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:false,count:false,max:false,min:false,std:false,sum:true,percentile:[]});return n;}
-function createNumericForSampledPercent(name){const n=new tr.v.Histogram(name,percentage_smallerIsBetter,CUSTOM_BOUNDARIES);n.customizeSummaryOptions({avg:true,count:false,max:true,min:true,std:true,sum:false,percentile:[]});return n;}
-function addScavengerSurvivedFromStackEvents(histograms,model){const baseName='v8-gc-scavenger-survived';tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isScavengerStackScanningEvent,event=>baseName,function(name,events){const sampledPercentage=createNumericForSampledPercent(baseName+'-percentage-from-stack');let survivedWithoutStack=0;let survivedWithStack=0;events.forEach(function(event){const bytesBefore=event.args.survived_bytes_before;const bytesAfter=event.args.survived_bytes_after;sampledPercentage.addSample((bytesAfter>0)?(bytesAfter-bytesBefore)/bytesAfter:0);survivedWithoutStack+=bytesBefore;survivedWithStack+=bytesAfter;});histograms.addHistogram(sampledPercentage);const totalBytesSurvivedWithoutStack=createNumericForTotalBytes(baseName+'-total-bytes-without-stack');totalBytesSurvivedWithoutStack.addSample(survivedWithoutStack);histograms.addHistogram(totalBytesSurvivedWithoutStack);const totalBytesSurvivedWithStack=createNumericForTotalBytes(baseName+'-total-bytes-with-stack');totalBytesSurvivedWithStack.addSample(survivedWithStack);histograms.addHistogram(totalBytesSurvivedWithStack);const overallPercentage=createPercentage(baseName+'-total-percentage-from-stack',survivedWithStack-survivedWithoutStack,survivedWithStack,percentage_smallerIsBetter);histograms.addHistogram(overallPercentage);},[baseName]);}
-function addDurationOfSubEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedSubGarbageCollectionEvent,tr.metrics.v8.utils.subGarbageCollectionEventName,function(name,events){const cpuDuration=createNumericForSubEventTime(name);events.forEach(function(event){cpuDuration.addSample(event.cpuDuration);});histograms.addHistogram(cpuDuration);});}
-function addPercentageInV8ExecuteOfTopEvents(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,tr.metrics.v8.utils.topGarbageCollectionEventName,function(name,events){addPercentageInV8Execute(histograms,model,name,events);},tr.metrics.v8.utils.topGarbageCollectionEventNames());}
-function addTotalPercentageInV8Execute(histograms,model){tr.metrics.v8.utils.groupAndProcessEvents(model,tr.metrics.v8.utils.isNotForcedTopGarbageCollectionEvent,event=>'v8-gc-total',function(name,events){addPercentageInV8Execute(histograms,model,name,events);},['v8-gc-total']);}
-function addPercentageInV8Execute(histograms,model,name,events){let cpuDurationInV8Execute=0;let cpuDurationTotal=0;events.forEach(function(event){const v8Execute=tr.metrics.v8.utils.findParent(event,tr.metrics.v8.utils.isV8ExecuteEvent);if(v8Execute){cpuDurationInV8Execute+=event.cpuDuration;}
-cpuDurationTotal+=event.cpuDuration;});const percentage=createPercentage(name+'_percentage_in_v8_execute',cpuDurationInV8Execute,cpuDurationTotal,percentage_smallerIsBetter);histograms.addHistogram(percentage);}
-function addMarkCompactorMutatorUtilization(histograms,model){const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);const rendererHelpers=Object.values(chromeHelper.rendererHelpers);tr.metrics.v8.utils.addMutatorUtilization('v8-gc-mark-compactor-mmu',tr.metrics.v8.utils.isNotForcedMarkCompactorEvent,[100],rendererHelpers,histograms);}
-return{gcMetric,WINDOW_SIZE_MS,};});'use strict';tr.exportTo('tr.metrics.v8',function(){const COUNT_CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(1,1000000,50);const DURATION_CUSTOM_BOUNDARIES=tr.v.HistogramBinBoundaries.createExponential(0.1,10000,50);const SUMMARY_OPTIONS={std:false,count:false,sum:false,min:false,max:false,};function convertMicroToMilli_(time){return tr.b.convertUnit(time,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);}
-function addDurationHistogram(histogramName,time,histograms){const value=convertMicroToMilli_(time);histograms.createHistogram(`${histogramName}:duration`,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,{value},{binBoundaries:DURATION_CUSTOM_BOUNDARIES,summaryOptions:SUMMARY_OPTIONS,});}
-function addCountHistogram(histogramName,value,histograms){histograms.createHistogram(`${histogramName}:count`,tr.b.Unit.byName.count_smallerIsBetter,{value},{binBoundaries:COUNT_CUSTOM_BOUNDARIES,summaryOptions:SUMMARY_OPTIONS});}
-function runtimeStatsTotalMetric(histograms,model){const v8Slices=tr.metrics.v8.utils.filterEvents(model,ev=>ev instanceof tr.e.v8.V8ThreadSlice);const runtimeGroupCollection=new tr.e.v8.RuntimeStatsGroupCollection();runtimeGroupCollection.addSlices(v8Slices);let overallV8Time=runtimeGroupCollection.totalTime;let overallV8Count=runtimeGroupCollection.totalCount;let mainThreadTime=runtimeGroupCollection.totalTime;let mainThreadCount=runtimeGroupCollection.totalCount;let mainThreadV8Time=runtimeGroupCollection.totalTime;let mainThreadV8Count=runtimeGroupCollection.totalCount;for(const runtimeGroup of runtimeGroupCollection.runtimeGroups){addDurationHistogram(runtimeGroup.name,runtimeGroup.time,histograms);if(runtimeGroup.name==='Blink C++'){overallV8Time-=runtimeGroup.time;mainThreadV8Time-=runtimeGroup.time;}else if(runtimeGroup.name.includes('Background')){mainThreadTime-=runtimeGroup.time;mainThreadV8Time-=runtimeGroup.time;}
-addCountHistogram(runtimeGroup.name,runtimeGroup.count,histograms);if(runtimeGroup.name==='Blink C++'){overallV8Count-=runtimeGroup.count;mainThreadV8Count-=runtimeGroup.count;}else if(runtimeGroup.name.includes('Background')){mainThreadCount-=runtimeGroup.count;mainThreadV8Count-=runtimeGroup.count;}}
-if(runtimeGroupCollection.blinkRCSGroupCollection.totalTime>0){const blinkRCSGroupCollection=runtimeGroupCollection.blinkRCSGroupCollection;for(const group of blinkRCSGroupCollection.runtimeGroups){addDurationHistogram(group.name,group.time,histograms);addCountHistogram(group.name,group.count,histograms);}}
-addDurationHistogram('V8-Only',overallV8Time,histograms);addCountHistogram('V8-Only',overallV8Count,histograms);addDurationHistogram('Total-Main-Thread',mainThreadTime,histograms);addCountHistogram('Total-Main-Thread',mainThreadCount,histograms);addDurationHistogram('V8-Only-Main-Thread',mainThreadV8Time,histograms);addCountHistogram('V8-Only-Main-Thread',mainThreadV8Count,histograms);}
-tr.metrics.MetricRegistry.register(runtimeStatsTotalMetric);return{runtimeStatsTotalMetric,};});'use strict';tr.exportTo('tr.metrics.v8',function(){function v8AndMemoryMetrics(histograms,model){tr.metrics.v8.executionMetric(histograms,model);tr.metrics.v8.gcMetric(histograms,model);tr.metrics.sh.memoryMetric(histograms,model,{rangeOfInterest:tr.metrics.v8.utils.rangeForMemoryDumps(model)});}
-tr.metrics.MetricRegistry.register(v8AndMemoryMetrics);return{v8AndMemoryMetrics,};});'use strict';tr.exportTo('tr.metrics.vr',function(){const VR_GL_THREAD_NAME='VrShellGL';function createHistograms(histograms,name,options,hasCpuTime){const createdHistograms={wall:histograms.createHistogram(name+'_wall',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],options)};if(hasCpuTime){createdHistograms.cpu=histograms.createHistogram(name+'_cpu',tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],options);}
-return createdHistograms;}
-function frameCycleDurationMetric(histograms,model,opt_options){const histogramsByEventTitle=new Map();const expectationEvents=tr.importer.VR_EXPECTATION_EVENTS;for(const eventName in expectationEvents){const extraInfo=expectationEvents[eventName];histogramsByEventTitle.set(eventName,createHistograms(histograms,extraInfo.histogramName,{description:extraInfo.description},extraInfo.hasCpuTime));}
-histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateAnimationsAndOpacity',createHistograms(histograms,'update_animations_and_opacity',{description:'Duration to apply animation and opacity changes'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateBindings',createHistograms(histograms,'update_bindings',{description:'Duration to push binding values'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateLayout',createHistograms(histograms,'update_layout',{description:'Duration to compute element sizes, layout and textures'},true));histogramsByEventTitle.set('UiScene::OnBeginFrame.UpdateWorldSpaceTransform',createHistograms(histograms,'update_world_space_transforms',{description:'Duration to calculate element transforms in world space'},true));histogramsByEventTitle.set('UiRenderer::DrawUiView',createHistograms(histograms,'draw_ui',{description:'Duration to draw the UI'},true));histogramsByEventTitle.set('UiElementRenderer::DrawTexturedQuad',createHistograms(histograms,'draw_textured_quad',{description:'Duration to draw a textured element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawGradientQuad',createHistograms(histograms,'draw_gradient_quad',{description:'Duration to draw a gradient element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawGradientGridQuad',createHistograms(histograms,'draw_gradient_grid_quad',{description:'Duration to draw a gradient grid element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawController',createHistograms(histograms,'draw_controller',{description:'Duration to draw the controller'},true));histogramsByEventTitle.set('UiElementRenderer::DrawLaser',createHistograms(histograms,'draw_laser',{description:'Duration to draw the laser'},true));histogramsByEventTitle.set('UiElementRenderer::DrawReticle',createHistograms(histograms,'draw_reticle',{description:'Duration to draw the reticle'},true));histogramsByEventTitle.set('UiElementRenderer::DrawShadow',createHistograms(histograms,'draw_shadow',{description:'Duration to draw a shadow element'},true));histogramsByEventTitle.set('UiElementRenderer::DrawStars',createHistograms(histograms,'draw_stars',{description:'Duration to draw the stars'},true));histogramsByEventTitle.set('UiElementRenderer::DrawBackground',createHistograms(histograms,'draw_background',{description:'Duration to draw the textured background'},true));histogramsByEventTitle.set('UiElementRenderer::DrawKeyboard',createHistograms(histograms,'draw_keyboard',{description:'Duration to draw the keyboard'},true));const drawUiSubSlicesMap=new Map();const chromeHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let rangeOfInterest=model.bounds;const userExpectationsOfInterest=[tr.model.um.AnimationExpectation];if(opt_options&&opt_options.rangeOfInterest){rangeOfInterest=opt_options.rangeOfInterest;userExpectationsOfInterest.push(tr.model.um.ResponseExpectation);}
-for(const ue of model.userModel.expectations){if(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR){continue;}
-if(!userExpectationsOfInterest.some(function(ueOfInterest){return ue instanceof ueOfInterest;})){continue;}
-if(!rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}
-for(const helper of chromeHelper.browserHelpers){const glThreads=helper.process.findAllThreadsNamed(VR_GL_THREAD_NAME);for(const glThread of glThreads){for(const event of glThread.getDescendantEvents()){if(!(histogramsByEventTitle.has(event.title))){continue;}
-if(event.startue.end){continue;}
-if(event.startrangeOfInterest.max){continue;}
-if(event.parentSlice&&event.parentSlice.title==='UiRenderer::DrawUiView'){const guid=event.parentSlice.guid;if(!drawUiSubSlicesMap.has(guid)){drawUiSubSlicesMap.set(guid,[]);}
-drawUiSubSlicesMap.get(guid).push(event);continue;}
-const{wall:wallHist,cpu:cpuHist}=histogramsByEventTitle.get(event.title);wallHist.addSample(event.duration);if(cpuHist!==undefined){cpuHist.addSample(event.cpuDuration);}}}}}
-for(const subSlices of drawUiSubSlicesMap.values()){const eventMap=new Map();for(const event of subSlices){if(!eventMap.has(event.title)){eventMap.set(event.title,{wall:0,cpu:0});}
-eventMap.get(event.title).wall+=event.duration;eventMap.get(event.title).cpu+=event.cpuDuration;}
-for(const[title,values]of eventMap.entries()){const{wall:wallHist,cpu:cpuHist}=histogramsByEventTitle.get(title);wallHist.addSample(values.wall);if(cpuHist!==undefined){cpuHist.addSample(values.cpu);}}}}
-tr.metrics.MetricRegistry.register(frameCycleDurationMetric,{supportsRangeOfInterest:true,});return{frameCycleDurationMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){function webvrMetric(histograms,model,opt_options){const WEBVR_COUNTERS=new Map([['gpu.WebVR FPS',{name:'webvr_fps',unit:tr.b.Unit.byName.count_biggerIsBetter,samples:{},options:{description:'WebVR frame per second',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],['gpu.WebVR frame time (ms)',{name:'webvr_frame_time',unit:tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,samples:{},options:{description:'WebVR frame time in ms',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],['gpu.WebVR pose prediction (ms)',{name:'webvr_pose_prediction',unit:tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,samples:{},options:{description:'WebVR pose prediction in ms',binBoundaries:tr.v.HistogramBinBoundaries.createLinear(20,120,25),},}],]);for(const ue of model.userModel.expectations){const rangeOfInterestEnabled=opt_options&&opt_options.rangeOfInterest;if(rangeOfInterestEnabled&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}
-if(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR)continue;if(!rangeOfInterestEnabled){if(!(ue instanceof tr.model.um.AnimationExpectation))continue;}else{if(!(ue instanceof tr.model.um.AnimationExpectation||ue instanceof tr.model.um.ResponseExpectation))continue;}
-for(const counter of model.getAllCounters()){if(!(WEBVR_COUNTERS.has(counter.id)))continue;for(const series of counter.series){if(!(series.name in WEBVR_COUNTERS.get(counter.id).samples)){WEBVR_COUNTERS.get(counter.id).samples[series.name]=[];}
-for(const sample of series.samples){if(sample.timestamp=ue.end){continue;}
-if(rangeOfInterestEnabled&&!opt_options.rangeOfInterest.intersectsExplicitRangeInclusive(sample.timestamp,sample.timestamp)){continue;}
-WEBVR_COUNTERS.get(counter.id).samples[series.name].push(sample.value);}}}}
-if(!('value'in WEBVR_COUNTERS.get('gpu.WebVR FPS').samples)){WEBVR_COUNTERS.get('gpu.WebVR FPS').samples.value=[0];}
-for(const[key,value]of WEBVR_COUNTERS){for(const[seriesName,samples]of Object.entries(value.samples)){let histogramName=value.name;if(seriesName!=='value'){histogramName=`${histogramName}_${seriesName}`;}
-histograms.createHistogram(histogramName,value.unit,samples,value.options);}}}
-tr.metrics.MetricRegistry.register(webvrMetric,{supportsRangeOfInterest:true,});return{webvrMetric,};});'use strict';tr.exportTo('tr.metrics.vr',function(){function webxrMetric(histograms,model,opt_options){const DEFAULT_BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(20,120,25);const counterHistogramsByTitle=new Map();counterHistogramsByTitle.set('gpu.WebXR FPS',histograms.createHistogram('webxr_fps',tr.b.Unit.byName.count_biggerIsBetter,[],{description:'WebXR frames per second',binBoundaries:DEFAULT_BIN_BOUNDARIES,}));const instantHistogramsByTitle=new Map();const expectationEvents=tr.importer.WEBXR_INSTANT_EVENTS;for(const[eventName,eventData]of Object.entries(expectationEvents)){const argsToHistograms={};for(const[argName,argData]of Object.entries(eventData)){argsToHistograms[argName]=histograms.createHistogram(argData.histogramName,tr.b.Unit.byName.timeDurationInMs_smallerIsBetter,[],{description:argData.description,binBoundaries:DEFAULT_BIN_BOUNDARIES,});}
-instantHistogramsByTitle.set(eventName,argsToHistograms);}
-const rangeOfInterestEnabled=opt_options&&opt_options.rangeOfInterest;const rangeOfInterest=(rangeOfInterestEnabled?opt_options.rangeOfInterest:tr.b.math.Range.fromExplicitRange(-Infinity,Infinity));for(const ue of model.userModel.expectations){if(!rangeOfInterest.intersectsExplicitRangeInclusive(ue.start,ue.end)){continue;}
-if(ue.initiatorType!==tr.model.um.INITIATOR_TYPE.VR)continue;if(!rangeOfInterestEnabled){if(!(ue instanceof tr.model.um.AnimationExpectation))continue;}else{if(!(ue instanceof tr.model.um.AnimationExpectation||ue instanceof tr.model.um.ResponseExpectation))continue;}
-for(const counter of model.getAllCounters()){if(!(counterHistogramsByTitle.has(counter.id)))continue;for(const series of counter.series){for(const sample of series.samples){if(sample.timestamp=ue.end){continue;}
-if(!rangeOfInterest.intersectsExplicitRangeInclusive(sample.timestamp,sample.timestamp)){continue;}
-counterHistogramsByTitle.get(counter.id).addSample(sample.value);}}}
-for(const event of ue.associatedEvents.asSet()){if(!(instantHistogramsByTitle.has(event.title))){continue;}
-if(!rangeOfInterest.intersectsExplicitRangeInclusive(event.start,event.start)){continue;}
-const eventHistograms=instantHistogramsByTitle.get(event.title);for(const[key,value]of Object.entries(event.args)){if(key in eventHistograms){eventHistograms[key].addSample(value,{event:new tr.v.d.RelatedEventSet(event)});}}}}
-if(counterHistogramsByTitle.get('gpu.WebXR FPS').numValues===0){counterHistogramsByTitle.get('gpu.WebXR FPS').addSample(0);}}
-tr.metrics.MetricRegistry.register(webxrMetric,{supportsRangeOfInterest:true,});return{webxrMetric,};});'use strict';tr.exportTo('tr.metrics.webrtc',function(){const DISPLAY_HERTZ=60.0;const VSYNC_DURATION_US=1e6/DISPLAY_HERTZ;const SEVERITY=3;const FROZEN_FRAME_VSYNC_COUNT_THRESHOLD=6;const WEB_MEDIA_PLAYER_UPDATE_TITLE='UpdateCurrentFrame';const IDEAL_RENDER_INSTANT_NAME='Ideal Render Instant';const ACTUAL_RENDER_BEGIN_NAME='Actual Render Begin';const ACTUAL_RENDER_END_NAME='Actual Render End';const STREAM_ID_NAME='Serial';const REQUIRED_EVENT_ARGS_NAMES=[IDEAL_RENDER_INSTANT_NAME,ACTUAL_RENDER_BEGIN_NAME,ACTUAL_RENDER_END_NAME,STREAM_ID_NAME];const SUMMARY_OPTIONS=tr.v.Histogram.AVERAGE_ONLY_SUMMARY_OPTIONS;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const percentage_biggerIsBetter=tr.b.Unit.byName.normalizedPercentage_biggerIsBetter;const percentage_smallerIsBetter=tr.b.Unit.byName.normalizedPercentage_smallerIsBetter;const timeDurationInMs_smallerIsBetter=tr.b.Unit.byName.timeDurationInMs_smallerIsBetter;const unitlessNumber_biggerIsBetter=tr.b.Unit.byName.unitlessNumber_biggerIsBetter;function isValidEvent(event){if(event.title!==WEB_MEDIA_PLAYER_UPDATE_TITLE||!event.args){return false;}
-for(const parameter of REQUIRED_EVENT_ARGS_NAMES){if(!(parameter in event.args)){return false;}}
-return true;}
-function webrtcRenderingMetric(histograms,model){const modelHelper=model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);let webMediaPlayerMSEvents=[];for(const rendererPid in modelHelper.rendererHelpers){const rendererHelper=modelHelper.rendererHelpers[rendererPid];const compositorThread=rendererHelper.compositorThread;if(compositorThread!==undefined){webMediaPlayerMSEvents=webMediaPlayerMSEvents.concat(compositorThread.sliceGroup.slices.filter(isValidEvent));}}
-const eventsByStreamName=tr.b.groupIntoMap(webMediaPlayerMSEvents,event=>event.args[STREAM_ID_NAME]);for(const[streamName,events]of eventsByStreamName){getTimeStats(histograms,streamName,events);}}
-tr.metrics.MetricRegistry.register(webrtcRenderingMetric);function getTimeStats(histograms,streamName,events){const frameHist=getFrameDistribution(histograms,events);addFpsFromFrameDistribution(histograms,frameHist);addFreezingScore(histograms,frameHist);const driftTimeStats=getDriftStats(events);histograms.createHistogram('WebRTCRendering_drift_time',timeDurationInMs_smallerIsBetter,driftTimeStats.driftTime,{summaryOptions:{count:false,min:false,percentile:[0.75,0.9],},});histograms.createHistogram('WebRTCRendering_rendering_length_error',percentage_smallerIsBetter,driftTimeStats.renderingLengthError,{summaryOptions:SUMMARY_OPTIONS,});const smoothnessStats=getSmoothnessStats(driftTimeStats.driftTime);histograms.createHistogram('WebRTCRendering_percent_badly_out_of_sync',percentage_smallerIsBetter,smoothnessStats.percentBadlyOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_percent_out_of_sync',percentage_smallerIsBetter,smoothnessStats.percentOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_smoothness_score',percentage_biggerIsBetter,smoothnessStats.smoothnessScore,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_frames_out_of_sync',count_smallerIsBetter,smoothnessStats.framesOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_frames_badly_out_of_sync',count_smallerIsBetter,smoothnessStats.framesSeverelyOutOfSync,{summaryOptions:SUMMARY_OPTIONS,});}
-const FRAME_DISTRIBUTION_BIN_BOUNDARIES=tr.v.HistogramBinBoundaries.createLinear(1,50,49);function getFrameDistribution(histograms,events){const cadence=tr.b.runLengthEncoding(events.map(e=>e.args[IDEAL_RENDER_INSTANT_NAME]));return histograms.createHistogram('WebRTCRendering_frame_distribution',count_smallerIsBetter,cadence.map(ticks=>ticks.count),{binBoundaries:FRAME_DISTRIBUTION_BIN_BOUNDARIES,summaryOptions:{percentile:[0.75,0.9],},});}
-function addFpsFromFrameDistribution(histograms,frameHist){let numberFrames=0;let numberVsyncs=0;for(let ticks=1;ticks=FROZEN_FRAME_VSYNC_COUNT_THRESHOLD){frozenFramesCount+=count*(ticks-1);freezingScore+=count*frozenPenaltyWeight(ticks-1);}}
-freezingScore=1-freezingScore/numberVsyncs;if(freezingScore<0){freezingScore=0;}
-histograms.createHistogram('WebRTCRendering_frozen_frames_count',count_smallerIsBetter,frozenFramesCount,{summaryOptions:SUMMARY_OPTIONS,});histograms.createHistogram('WebRTCRendering_freezing_score',percentage_biggerIsBetter,freezingScore,{summaryOptions:SUMMARY_OPTIONS,});}
-function getDriftStats(events){const driftTime=[];const discrepancy=[];let oldIdealRender=0;let expectedIdealRender=0;for(const event of events){const currentIdealRender=event.args[IDEAL_RENDER_INSTANT_NAME];expectedIdealRender+=VSYNC_DURATION_US;if(currentIdealRender===oldIdealRender){continue;}
-const actualRenderBegin=event.args[ACTUAL_RENDER_BEGIN_NAME];driftTime.push(actualRenderBegin-currentIdealRender);discrepancy.push(Math.abs(currentIdealRender-expectedIdealRender));expectedIdealRender=currentIdealRender;oldIdealRender=currentIdealRender;}
-const discrepancySum=tr.b.math.Statistics.sum(discrepancy)-
-discrepancy[0];const lastIdealRender=events[events.length-1].args[IDEAL_RENDER_INSTANT_NAME];const firstIdealRender=events[0].args[IDEAL_RENDER_INSTANT_NAME];const idealRenderSpan=lastIdealRender-firstIdealRender;const renderingLengthError=discrepancySum/idealRenderSpan;return{driftTime,renderingLengthError};}
-function getSmoothnessStats(driftTimes){const meanDriftTime=tr.b.math.Statistics.mean(driftTimes);const normDriftTimes=driftTimes.map(driftTime=>Math.abs(driftTime-meanDriftTime));const framesSeverelyOutOfSync=normDriftTimes.filter(driftTime=>driftTime>2*VSYNC_DURATION_US).length;const framesOutOfSync=normDriftTimes.filter(driftTime=>driftTime>VSYNC_DURATION_US).length;const percentBadlyOutOfSync=framesSeverelyOutOfSync/driftTimes.length;const percentOutOfSync=framesOutOfSync/driftTimes.length;const framesOutOfSyncOnlyOnce=framesOutOfSync-framesSeverelyOutOfSync;let smoothnessScore=1-(framesOutOfSyncOnlyOnce+
-SEVERITY*framesSeverelyOutOfSync)/driftTimes.length;if(smoothnessScore<0){smoothnessScore=0;}
-return{framesOutOfSync,framesSeverelyOutOfSync,percentBadlyOutOfSync,percentOutOfSync,smoothnessScore};}
-return{webrtcRenderingMetric,};});'use strict';tr.exportTo('tr.model',function(){function YComponent(stableId,yPercentOffset){this.stableId=stableId;this.yPercentOffset=yPercentOffset;}
-YComponent.prototype={toDict(){return{stableId:this.stableId,yPercentOffset:this.yPercentOffset};}};function Location(xWorld,yComponents){this.xWorld_=xWorld;this.yComponents_=yComponents;}
-Location.fromViewCoordinates=function(viewport,viewX,viewY){const dt=viewport.currentDisplayTransform;const xWorld=dt.xViewToWorld(viewX);const yComponents=[];let elem=document.elementFromPoint(viewX+viewport.modelTrackContainer.canvas.offsetLeft,viewY+viewport.modelTrackContainer.canvas.offsetTop);while(elem instanceof tr.ui.tracks.Track){if(elem.eventContainer){const boundRect=elem.getBoundingClientRect();const yPercentOffset=(viewY-boundRect.top)/boundRect.height;yComponents.push(new YComponent(elem.eventContainer.stableId,yPercentOffset));}
-elem=elem.parentElement;}
-if(yComponents.length===0)return;return new Location(xWorld,yComponents);};Location.fromStableIdAndTimestamp=function(viewport,stableId,ts){const xWorld=ts;const yComponents=[];const containerToTrack=viewport.containerToTrackMap;let elem=containerToTrack.getTrackByStableId(stableId);if(!elem)return;const firstY=elem.getBoundingClientRect().top;while(elem instanceof tr.ui.tracks.Track){if(elem.eventContainer){const boundRect=elem.getBoundingClientRect();const yPercentOffset=(firstY-boundRect.top)/boundRect.height;yComponents.push(new YComponent(elem.eventContainer.stableId,yPercentOffset));}
-elem=elem.parentElement;}
-if(yComponents.length===0)return;return new Location(xWorld,yComponents);};Location.prototype={get xWorld(){return this.xWorld_;},getContainingTrack(viewport){const containerToTrack=viewport.containerToTrackMap;for(const i in this.yComponents_){const yComponent=this.yComponents_[i];const track=containerToTrack.getTrackByStableId(yComponent.stableId);if(track!==undefined)return track;}},toViewCoordinates(viewport){const dt=viewport.currentDisplayTransform;const containerToTrack=viewport.containerToTrackMap;const viewX=dt.xWorldToView(this.xWorld_);let viewY=-1;for(const index in this.yComponents_){const yComponent=this.yComponents_[index];const track=containerToTrack.getTrackByStableId(yComponent.stableId);if(track!==undefined){const boundRect=track.getBoundingClientRect();viewY=yComponent.yPercentOffset*boundRect.height+boundRect.top;break;}}
-return{viewX,viewY};},toDict(){return{xWorld:this.xWorld_,yComponents:this.yComponents_};}};return{Location,};});'use strict';tr.exportTo('tr.ui.b',function(){const Location=tr.model.Location;function UIState(location,scaleX){this.location_=location;this.scaleX_=scaleX;}
-UIState.fromUserFriendlyString=function(model,viewport,stateString){const navByFinderPattern=/^(-?\d+(\.\d+)?)@(.+)x(\d+(\.\d+)?)$/g;const match=navByFinderPattern.exec(stateString);if(!match)return;const timestamp=parseFloat(match[1]);const stableId=match[3];const scaleX=parseFloat(match[4]);if(scaleX<=0){throw new Error('Invalid ScaleX value in UI State string.');}
-if(!viewport.containerToTrackMap.getTrackByStableId(stableId)){throw new Error('Invalid StableID given in UI State String.');}
-const loc=tr.model.Location.fromStableIdAndTimestamp(viewport,stableId,timestamp);return new UIState(loc,scaleX);};UIState.prototype={get location(){return this.location_;},get scaleX(){return this.scaleX_;},toUserFriendlyString(viewport){const timestamp=this.location_.xWorld;const stableId=this.location_.getContainingTrack(viewport).eventContainer.stableId;const scaleX=this.scaleX_;return timestamp.toFixed(5)+'@'+stableId+'x'+scaleX.toFixed(5);},toDict(){return{location:this.location_.toDict(),scaleX:this.scaleX_};}};return{UIState,};});'use strict';tr.exportTo('tr.ui.b',function(){const EventSet=tr.model.EventSet;const SelectionState=tr.model.SelectionState;function BrushingState(){this.guid_=tr.b.GUID.allocateSimple();this.selection_=new EventSet();this.findMatches_=new EventSet();this.analysisViewRelatedEvents_=new EventSet();this.analysisLinkHoveredEvents_=new EventSet();this.appliedToModel_=undefined;this.viewSpecificBrushingStates_={};}
-BrushingState.prototype={get guid(){return this.guid_;},clone(){const that=new BrushingState();that.selection_=this.selection_;that.findMatches_=this.findMatches_;that.analysisViewRelatedEvents_=this.analysisViewRelatedEvents_;that.analysisLinkHoveredEvents_=this.analysisLinkHoveredEvents_;that.viewSpecificBrushingStates_=this.viewSpecificBrushingStates_;return that;},equals(that){if(!this.selection_.equals(that.selection_)){return false;}
-if(!this.findMatches_.equals(that.findMatches_)){return false;}
-if(!this.analysisViewRelatedEvents_.equals(that.analysisViewRelatedEvents_)){return false;}
-if(!this.analysisLinkHoveredEvents_.equals(that.analysisLinkHoveredEvents_)){return false;}
-return true;},get selectionOfInterest(){if(this.selection_.length){return this.selection_;}
-if(this.highlight_.length){return this.highlight_;}
-if(this.analysisViewRelatedEvents_.length){return this.analysisViewRelatedEvents_;}
-if(this.analysisLinkHoveredEvents_.length){return this.analysisLinkHoveredEvents_;}
-return this.selection_;},get selection(){return this.selection_;},set selection(selection){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}
-if(selection===undefined){selection=new EventSet();}
-this.selection_=selection;},get findMatches(){return this.findMatches_;},set findMatches(findMatches){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}
-if(findMatches===undefined){findMatches=new EventSet();}
-this.findMatches_=findMatches;},get analysisViewRelatedEvents(){return this.analysisViewRelatedEvents_;},set analysisViewRelatedEvents(analysisViewRelatedEvents){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}
-if(!(analysisViewRelatedEvents instanceof EventSet)){analysisViewRelatedEvents=new EventSet();}
-this.analysisViewRelatedEvents_=analysisViewRelatedEvents;},get analysisLinkHoveredEvents(){return this.analysisLinkHoveredEvents_;},set analysisLinkHoveredEvents(analysisLinkHoveredEvents){if(this.appliedToModel_){throw new Error('Cannot mutate this state right now');}
-if(!(analysisLinkHoveredEvents instanceof EventSet)){analysisLinkHoveredEvents=new EventSet();}
-this.analysisLinkHoveredEvents_=analysisLinkHoveredEvents;},get isAppliedToModel(){return this.appliedToModel_!==undefined;},get viewSpecificBrushingStates(){return this.viewSpecificBrushingStates_;},set viewSpecificBrushingStates(viewSpecificBrushingStates){this.viewSpecificBrushingStates_=viewSpecificBrushingStates;},get defaultState_(){const standoutEventExists=(this.analysisLinkHoveredEvents_.length>0||this.analysisViewRelatedEvents_.length>0||this.findMatches_.length>0);return(standoutEventExists?SelectionState.DIMMED0:SelectionState.NONE);},get brightenedEvents_(){const brightenedEvents=new EventSet();brightenedEvents.addEventSet(this.findMatches);brightenedEvents.addEventSet(this.analysisViewRelatedEvents_);brightenedEvents.addEventSet(this.selection_);brightenedEvents.addEventSet(this.analysisLinkHoveredEvents_);return brightenedEvents;},applyToEventSelectionStates(model){this.appliedToModel_=model;if(model){const newDefaultState=this.defaultState_;const currentDefaultState=tr.b.getFirstElement(model.getDescendantEvents()).selectionState;if(currentDefaultState!==newDefaultState){for(const e of model.getDescendantEvents()){e.selectionState=newDefaultState;}}}
-let level;for(const e of this.brightenedEvents_){level=0;if(this.analysisViewRelatedEvents_.contains(e)||this.findMatches_.contains(e)){level++;}
-if(this.analysisLinkHoveredEvents_.contains(e)){level++;}
-if(this.selection_.contains(e)){level++;}
-e.selectionState=SelectionState.getFromBrighteningLevel(level);}},transferModelOwnershipToClone(that){if(!this.appliedToModel_){throw new Error('Not applied');}
-that.appliedToModel_=this.appliedToModel_;this.appliedToModel_=undefined;},unapplyFromEventSelectionStates(){if(!this.appliedToModel_){throw new Error('Not applied');}
-const model=this.appliedToModel_;this.appliedToModel_=undefined;const defaultState=this.defaultState_;for(const e of this.brightenedEvents_){e.selectionState=defaultState;}
-return defaultState;}};return{BrushingState,};});'use strict';tr.exportTo('tr.ui.b',function(){function Animation(){}
-Animation.prototype={canTakeOverFor(existingAnimation){throw new Error('Not implemented');},takeOverFor(existingAnimation,newStartTimestamp,target){throw new Error('Not implemented');},start(timestamp,target){throw new Error('Not implemented');},didStopEarly(timestamp,target,willBeTakenOverByAnotherAnimation){},tick(timestamp,target){throw new Error('Not implemented');}};return{Animation,};});'use strict';tr.exportTo('tr.ui.b',function(){function AnimationController(){tr.b.EventTarget.call(this);this.target_=undefined;this.activeAnimation_=undefined;this.tickScheduled_=false;}
-AnimationController.prototype={__proto__:tr.b.EventTarget.prototype,get target(){return this.target_;},set target(target){if(this.activeAnimation_){throw new Error('Cannot change target while animation is running.');}
-if(target.cloneAnimationState===undefined||typeof target.cloneAnimationState!=='function'){throw new Error('target must have a cloneAnimationState function');}
-this.target_=target;},get activeAnimation(){return this.activeAnimation_;},get hasActiveAnimation(){return!!this.activeAnimation_;},queueAnimation(animation,opt_now){if(this.target_===undefined){throw new Error('Cannot queue animations without a target');}
-let now;if(opt_now!==undefined){now=opt_now;}else{now=window.performance.now();}
-if(this.activeAnimation_){const done=this.activeAnimation_.tick(now,this.target_);if(done){this.activeAnimation_=undefined;}}
-if(this.activeAnimation_){if(animation.canTakeOverFor(this.activeAnimation_)){this.activeAnimation_.didStopEarly(now,this.target_,true);animation.takeOverFor(this.activeAnimation_,now,this.target_);}else{this.activeAnimation_.didStopEarly(now,this.target_,false);}}
-this.activeAnimation_=animation;this.activeAnimation_.start(now,this.target_);if(this.tickScheduled_)return;this.tickScheduled_=true;tr.b.requestAnimationFrame(this.tickActiveAnimation_,this);},cancelActiveAnimation(opt_now){if(!this.activeAnimation_)return;let now;if(opt_now!==undefined){now=opt_now;}else{now=window.performance.now();}
-this.activeAnimation_.didStopEarly(now,this.target_,false);this.activeAnimation_=undefined;},tickActiveAnimation_(frameBeginTime){this.tickScheduled_=false;if(!this.activeAnimation_)return;if(this.target_===undefined){this.activeAnimation_.didStopEarly(frameBeginTime,this.target_,false);return;}
-const oldTargetState=this.target_.cloneAnimationState();const done=this.activeAnimation_.tick(frameBeginTime,this.target_);if(done){this.activeAnimation_=undefined;}
-if(this.activeAnimation_){this.tickScheduled_=true;tr.b.requestAnimationFrame(this.tickActiveAnimation_,this);}
-if(oldTargetState){const e=new tr.b.Event('didtick');e.oldTargetState=oldTargetState;this.dispatchEvent(e,false,false);}}};return{AnimationController,};});'use strict';tr.exportTo('tr.ui.b',function(){const elidedTitleCacheDict=new Map();const elidedTitleCache=new ElidedTitleCache();function ElidedTitleCache(){this.textWidthMap=new Map();}
-ElidedTitleCache.prototype={get(ctx,pixWidth,title,width,sliceDuration){let elidedDict=elidedTitleCacheDict.get(title);if(!elidedDict){elidedDict=new Map();elidedTitleCacheDict.set(title,elidedDict);}
-let elidedDictForPixWidth=elidedDict.get(pixWidth);if(!elidedDictForPixWidth){elidedDict.set(pixWidth,new Map());elidedDictForPixWidth=elidedDict.get(pixWidth);}
-let stringWidthPair=elidedDictForPixWidth.get(sliceDuration);if(stringWidthPair===undefined){let newtitle=title;let elided=false;while(this.labelWidthWorld(ctx,newtitle,pixWidth)>sliceDuration){if(newtitle.length*0.75<1)break;newtitle=newtitle.substring(0,newtitle.length*0.75);elided=true;}
-if(elided&&newtitle.length>3){newtitle=newtitle.substring(0,newtitle.length-3)+'...';}
-stringWidthPair=new ElidedStringWidthPair(newtitle,this.labelWidth(ctx,newtitle));elidedDictForPixWidth.set(sliceDuration,stringWidthPair);}
-return stringWidthPair;},quickMeasureText_(ctx,text){let w=this.textWidthMap.get(text);if(!w){w=ctx.measureText(text).width;this.textWidthMap.set(text,w);}
-return w;},labelWidth(ctx,title){return this.quickMeasureText_(ctx,title)+2;},labelWidthWorld(ctx,title,pixWidth){return this.labelWidth(ctx,title)*pixWidth;}};function ElidedStringWidthPair(string,width){this.string=string;this.width=width;}
-return{ElidedTitleCache,};});'use strict';tr.exportTo('tr.ui.b',function(){const ColorScheme=tr.b.ColorScheme;const colors=ColorScheme.colors;const colorsAsStrings=ColorScheme.colorsAsStrings;const SelectionState=tr.model.SelectionState;const EventPresenter={getSelectableItemColorAsString(item){const offset=this.getColorIdOffset_(item);const colorId=ColorScheme.getVariantColorId(item.colorId,offset);return colorsAsStrings[colorId];},getColorIdOffset_(event){return event.selectionState;},getTextColor(event){if(event.selectionState===SelectionState.DIMMED){return'rgb(60,60,60)';}
-return'rgb(0,0,0)';},getSliceColorId(slice){const offset=this.getColorIdOffset_(slice);return ColorScheme.getVariantColorId(slice.colorId,offset);},getSliceAlpha(slice,async){let alpha=1;if(async){alpha*=0.3;}
-return alpha;},getInstantSliceColor(instant){const offset=this.getColorIdOffset_(instant);const colorId=ColorScheme.getVariantColorId(instant.colorId,offset);return colors[colorId].toStringWithAlphaOverride(1.0);},getObjectInstanceColor(instance){const offset=this.getColorIdOffset_(instance);const colorId=ColorScheme.getVariantColorId(instance.colorId,offset);return colors[colorId].toStringWithAlphaOverride(0.25);},getObjectSnapshotColor(snapshot){const offset=this.getColorIdOffset_(snapshot);let colorId=snapshot.objectInstance.colorId;colorId=ColorScheme.getVariantColorId(colorId,offset);return colors[colorId];},getCounterSeriesColor(colorId,selectionState,opt_alphaMultiplier){const event={selectionState};const offset=this.getColorIdOffset_(event);const c=colors[ColorScheme.getVariantColorId(colorId,offset)];return c.toStringWithAlphaOverride(opt_alphaMultiplier!==undefined?opt_alphaMultiplier:1.0);},getBarSnapshotColor(snapshot,offset){const snapshotOffset=this.getColorIdOffset_(snapshot);let colorId=snapshot.objectInstance.colorId;colorId=ColorScheme.getAnotherColorId(colorId,offset);colorId=ColorScheme.getVariantColorId(colorId,snapshotOffset);return colors[colorId].toStringWithAlphaOverride(1.0);}};return{EventPresenter,};});'use strict';tr.exportTo('tr.ui.b',function(){const elidedTitleCache=new tr.ui.b.ElidedTitleCache();const ColorScheme=tr.b.ColorScheme;const colorsAsStrings=ColorScheme.colorsAsStrings;const EventPresenter=tr.ui.b.EventPresenter;const blackColorId=ColorScheme.getColorIdForReservedName('black');const THIN_SLICE_HEIGHT=4;const SLICE_WAITING_WIDTH_DRAW_THRESHOLD=3;const SLICE_ACTIVE_WIDTH_DRAW_THRESHOLD=1;const SHOULD_ELIDE_TEXT=true;function drawLine(ctx,x1,y1,x2,y2){ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);}
-function drawTriangle(ctx,x1,y1,x2,y2,x3,y3){ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.lineTo(x3,y3);ctx.closePath();}
-function drawArrow(ctx,x1,y1,x2,y2,arrowLength,arrowWidth){const dx=x2-x1;const dy=y2-y1;const len=Math.sqrt(dx*dx+dy*dy);const perc=(len-arrowLength)/len;const bx=x1+perc*dx;const by=y1+perc*dy;const ux=dx/len;const uy=dy/len;const ax=uy*arrowWidth;const ay=-ux*arrowWidth;ctx.beginPath();drawLine(ctx,x1,y1,x2,y2);ctx.stroke();drawTriangle(ctx,bx+ax,by+ay,x2,y2,bx-ax,by-ay);ctx.fill();}
-function drawSlices(ctx,dt,viewLWorld,viewRWorld,viewHeight,slices,async){const pixelRatio=window.devicePixelRatio||1;const height=viewHeight*pixelRatio;const viewL=dt.xWorldToView(viewLWorld);const viewR=dt.xWorldToView(viewRWorld);let darkRectHeight=THIN_SLICE_HEIGHT*pixelRatio;if(heightviewRWorld)break;const xView=dt.xWorldToView(x);let wView=1;if(slice.duration>0){const w=Math.max(slice.duration,0.000001);wView=Math.max(dt.xWorldVectorToView(w),1);}
-const colorId=EventPresenter.getSliceColorId(slice);const alpha=EventPresenter.getSliceAlpha(slice,async);const lightAlpha=alpha*0.70;if(async&&slice.isTopLevel){rect.setYandH(3,height-3);hadTopLevel=true;}else{rect.setYandH(0,height);}
-if(!slice.cpuDuration){rect.fillRect(xView,wView,colorId,alpha);continue;}
-let activeWidth=wView*(slice.cpuDuration/slice.duration);let waitingWidth=wView-activeWidth;if(activeWidth0){rect.fillRect(xView,activeWidth,colorId,alpha);}
-if(waitingWidth>0){rect.setYandH(0,lightRectHeight);rect.fillRect(xView+activeWidth-1,waitingWidth+1,colorId,lightAlpha);rect.setYandH(lightRectHeight,darkRectHeight);rect.fillRect(xView+activeWidth-1,waitingWidth+1,colorId,alpha);rect.setYandH(0,height);}}
-rect.flush();if(async&&hadTopLevel){rect.setYandH(2,1);for(let i=lowSlice;iviewRWorld)break;if(!slice.isTopLevel)continue;const xView=dt.xWorldToView(x);let wView=1;if(slice.duration>0){const w=Math.max(slice.duration,0.000001);wView=Math.max(dt.xWorldVectorToView(w),1);}
-rect.fillRect(xView,wView,blackColorId,0.7);}
-rect.flush();}
-ctx.restore();}
-function drawInstantSlicesAsLines(ctx,dt,viewLWorld,viewRWorld,viewHeight,slices,lineWidthInPixels){const pixelRatio=window.devicePixelRatio||1;const height=viewHeight*pixelRatio;ctx.save();ctx.lineWidth=lineWidthInPixels*pixelRatio;const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start;},viewLWorld);for(let i=lowSlice;iviewRWorld)break;ctx.strokeStyle=EventPresenter.getInstantSliceColor(slice);const xView=dt.xWorldToView(x);ctx.beginPath();ctx.moveTo(xView,0);ctx.lineTo(xView,height);ctx.stroke();}
-ctx.restore();}
-function drawLabels(ctx,dt,viewLWorld,viewRWorld,slices,async,fontSize,yOffset){const pixelRatio=window.devicePixelRatio||1;const pixWidth=dt.xViewVectorToWorld(1);ctx.save();ctx.textAlign='center';ctx.textBaseline='top';ctx.font=(fontSize*pixelRatio)+'px sans-serif';if(async){ctx.font='italic '+ctx.font;}
-const cY=yOffset*pixelRatio;const lowSlice=tr.b.findLowIndexInSortedArray(slices,function(slice){return slice.start+slice.duration;},viewLWorld);const quickDiscardThreshold=pixWidth*20;for(let i=lowSlice;iviewRWorld)break;if(slice.duration<=quickDiscardThreshold)continue;const xLeftClipped=Math.max(slice.start,viewLWorld);const xRightClipped=Math.min(slice.start+slice.duration,viewRWorld);const visibleWidth=xRightClipped-xLeftClipped;const title=slice.title+
-(slice.didNotFinish?' (Did Not Finish)':'');let drawnTitle=title;let drawnWidth=elidedTitleCache.labelWidth(ctx,drawnTitle);const fullLabelWidth=elidedTitleCache.labelWidthWorld(ctx,drawnTitle,pixWidth);if(SHOULD_ELIDE_TEXT&&fullLabelWidth>visibleWidth){const elidedValues=elidedTitleCache.get(ctx,pixWidth,drawnTitle,drawnWidth,visibleWidth);drawnTitle=elidedValues.string;drawnWidth=elidedValues.width;}
-if(drawnWidth*pixWidthviewWidth){this.xPanWorldPosToViewPos(worldMax,'right',viewWidth);}},xSetWorldBounds(worldMin,worldMax,viewWidth){const worldWidth=worldMax-worldMin;const scaleX=viewWidth/worldWidth;const panX=-worldMin;this.setPanAndScale(panX,scaleX);},setPanAndScale(p,s){this.scaleX=s;this.panX=p;},xWorldToView(x){return(x+this.panX)*this.scaleX;},xWorldVectorToView(x){return x*this.scaleX;},xViewToWorld(x){return(x/this.scaleX)-this.panX;},xViewVectorToWorld(x){return x/this.scaleX;}};return{TimelineDisplayTransform,};});'use strict';tr.exportTo('tr.ui',function(){function SnapIndicator(y,height){this.y=y;this.height=height;}
-function TimelineInterestRange(vp){this.viewport_=vp;this.range_=new tr.b.math.Range();this.leftSelected_=false;this.rightSelected_=false;this.leftSnapIndicator_=undefined;this.rightSnapIndicator_=undefined;}
-TimelineInterestRange.prototype={get isEmpty(){return this.range_.isEmpty;},reset(){this.range_.reset();this.leftSelected_=false;this.rightSelected_=false;this.leftSnapIndicator_=undefined;this.rightSnapIndicator_=undefined;this.viewport_.dispatchChangeEvent();},get min(){return this.range_.min;},set min(min){this.range_.min=min;this.viewport_.dispatchChangeEvent();},get max(){return this.range_.max;},set max(max){this.range_.max=max;this.viewport_.dispatchChangeEvent();},set(range){this.range_.reset();this.range_.addRange(range);this.viewport_.dispatchChangeEvent();},setMinAndMax(min,max){this.range_.min=min;this.range_.max=max;this.viewport_.dispatchChangeEvent();},get range(){return this.range_.range;},asRangeObject(){const range=new tr.b.math.Range();range.addRange(this.range_);return range;},get leftSelected(){return this.leftSelected_;},set leftSelected(leftSelected){if(this.leftSelected_===leftSelected)return;this.leftSelected_=leftSelected;this.viewport_.dispatchChangeEvent();},get rightSelected(){return this.rightSelected_;},set rightSelected(rightSelected){if(this.rightSelected_===rightSelected)return;this.rightSelected_=rightSelected;this.viewport_.dispatchChangeEvent();},get leftSnapIndicator(){return this.leftSnapIndicator_;},set leftSnapIndicator(leftSnapIndicator){this.leftSnapIndicator_=leftSnapIndicator;this.viewport_.dispatchChangeEvent();},get rightSnapIndicator(){return this.rightSnapIndicator_;},set rightSnapIndicator(rightSnapIndicator){this.rightSnapIndicator_=rightSnapIndicator;this.viewport_.dispatchChangeEvent();},draw(ctx,viewLWorld,viewRWorld,viewHeight){if(this.range_.isEmpty)return;const dt=this.viewport_.currentDisplayTransform;const markerLWorld=this.min;const markerRWorld=this.max;const markerLView=Math.round(dt.xWorldToView(markerLWorld));const markerRView=Math.round(dt.xWorldToView(markerRWorld));ctx.fillStyle='rgba(0, 0, 0, 0.2)';if(markerLWorld>viewLWorld){ctx.fillRect(dt.xWorldToView(viewLWorld),0,markerLView,viewHeight);}
-if(markerRWorld0){this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.min,this.leftSelected_);this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.max,this.rightSelected_);}else{this.drawLine_(ctx,viewLWorld,viewRWorld,viewHeight,this.min,this.leftSelected_||this.rightSelected_);}
-ctx.lineWidth=1;},drawLine_(ctx,viewLWorld,viewRWorld,height,ts,selected){if(ts=viewRWorld)return;const dt=this.viewport_.currentDisplayTransform;const viewX=Math.round(dt.xWorldToView(ts));ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);ctx.beginPath();tr.ui.b.drawLine(ctx,viewX,0,viewX,height);if(selected){ctx.strokeStyle='rgb(255, 0, 0)';}else{ctx.strokeStyle='rgb(0, 0, 0)';}
-ctx.stroke();ctx.restore();},drawIndicators(ctx,viewLWorld,viewRWorld){if(this.leftSnapIndicator_){this.drawIndicator_(ctx,viewLWorld,viewRWorld,this.range_.min,this.leftSnapIndicator_,this.leftSelected_);}
-if(this.rightSnapIndicator_){this.drawIndicator_(ctx,viewLWorld,viewRWorld,this.range_.max,this.rightSnapIndicator_,this.rightSelected_);}},drawIndicator_(ctx,viewLWorld,viewRWorld,xWorld,si,selected){const dt=this.viewport_.currentDisplayTransform;const viewX=Math.round(dt.xWorldToView(xWorld));ctx.save();ctx.translate((Math.round(ctx.lineWidth)%2)/2,0);const pixelRatio=window.devicePixelRatio||1;const viewY=si.y*devicePixelRatio;const viewHeight=si.height*devicePixelRatio;const arrowSize=4*pixelRatio;if(selected){ctx.fillStyle='rgb(255, 0, 0)';}else{ctx.fillStyle='rgb(0, 0, 0)';}
-tr.ui.b.drawTriangle(ctx,viewX-arrowSize*0.75,viewY,viewX+arrowSize*0.75,viewY,viewX,viewY+arrowSize);ctx.fill();tr.ui.b.drawTriangle(ctx,viewX-arrowSize*0.75,viewY+viewHeight,viewX+arrowSize*0.75,viewY+viewHeight,viewX,viewY+viewHeight-arrowSize);ctx.fill();ctx.restore();}};return{SnapIndicator,TimelineInterestRange,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ContainerToTrackMap(){this.stableIdToTrackMap_={};}
-ContainerToTrackMap.prototype={addContainer(container,track){if(!track){throw new Error('Must provide a track.');}
-this.stableIdToTrackMap_[container.stableId]=track;},clear(){this.stableIdToTrackMap_={};},getTrackByStableId(stableId){return this.stableIdToTrackMap_[stableId];}};return{ContainerToTrackMap,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function EventToTrackMap(){}
-EventToTrackMap.prototype={addEvent(event,track){if(!track){throw new Error('Must provide a track.');}
-this[event.guid]=track;}};return{EventToTrackMap,};});'use strict';tr.exportTo('tr.ui',function(){const TimelineDisplayTransform=tr.ui.TimelineDisplayTransform;const TimelineInterestRange=tr.ui.TimelineInterestRange;const IDEAL_MAJOR_MARK_DISTANCE_PX=150;const MAJOR_MARK_ROUNDING_FACTOR=100000;class AnimationControllerProxy{constructor(target){this.target_=target;}
-get panX(){return this.target_.currentDisplayTransform_.panX;}
-set panX(panX){this.target_.currentDisplayTransform_.panX=panX;}
-get panY(){return this.target_.currentDisplayTransform_.panY;}
-set panY(panY){this.target_.currentDisplayTransform_.panY=panY;}
-get scaleX(){return this.target_.currentDisplayTransform_.scaleX;}
-set scaleX(scaleX){this.target_.currentDisplayTransform_.scaleX=scaleX;}
-cloneAnimationState(){return this.target_.currentDisplayTransform_.clone();}
-xPanWorldPosToViewPos(xWorld,xView){this.target_.currentDisplayTransform_.xPanWorldPosToViewPos(xWorld,xView,this.target_.modelTrackContainer_.canvas.clientWidth);}}
-function TimelineViewport(parentEl){this.parentEl_=parentEl;this.modelTrackContainer_=undefined;this.currentDisplayTransform_=new TimelineDisplayTransform();this.initAnimationController_();this.selectedFlowEvents_=new Set();this.highlightVSync_=false;this.highDetails_=false;this.gridTimebase_=0;this.gridStep_=1000/60;this.gridEnabled_=false;this.hasCalledSetupFunction_=false;this.onResize_=this.onResize_.bind(this);this.onModelTrackControllerScroll_=this.onModelTrackControllerScroll_.bind(this);this.timeMode_=TimelineViewport.TimeMode.TIME_IN_MS;this.majorMarkWorldPositions_=[];this.majorMarkUnit_=undefined;this.interestRange_=new TimelineInterestRange(this);this.eventToTrackMap_=new tr.ui.tracks.EventToTrackMap();this.containerToTrackMap=new tr.ui.tracks.ContainerToTrackMap();this.dispatchChangeEvent=this.dispatchChangeEvent.bind(this);}
-TimelineViewport.TimeMode={TIME_IN_MS:0,REVISIONS:1};TimelineViewport.prototype={__proto__:tr.b.EventTarget.prototype,get isAttachedToDocumentOrInTestMode(){if(this.parentEl_===undefined)return;return tr.ui.b.isElementAttachedToDocument(this.parentEl_);},onResize_(){this.dispatchChangeEvent();},dispatchChangeEvent(){tr.b.dispatchSimpleEvent(this,'change');},detach(){window.removeEventListener('resize',this.dispatchChangeEvent);},initAnimationController_(){this.dtAnimationController_=new tr.ui.b.AnimationController();this.dtAnimationController_.addEventListener('didtick',function(e){this.onCurentDisplayTransformChange_(e.oldTargetState);}.bind(this));this.dtAnimationController_.target=new AnimationControllerProxy(this);},get currentDisplayTransform(){return this.currentDisplayTransform_;},setDisplayTransformImmediately(displayTransform){this.dtAnimationController_.cancelActiveAnimation();const oldDisplayTransform=this.dtAnimationController_.target.cloneAnimationState();this.currentDisplayTransform_.set(displayTransform);this.onCurentDisplayTransformChange_(oldDisplayTransform);},queueDisplayTransformAnimation(animation){if(!(animation instanceof tr.ui.b.Animation)){throw new Error('animation must be instanceof tr.ui.b.Animation');}
-this.dtAnimationController_.queueAnimation(animation);},onCurentDisplayTransformChange_(oldDisplayTransform){if(this.modelTrackContainer_){this.currentDisplayTransform.panY=tr.b.math.clamp(this.currentDisplayTransform.panY,0,this.modelTrackContainer_.scrollHeight-
-this.modelTrackContainer_.clientHeight);}
-const changed=!this.currentDisplayTransform.equals(oldDisplayTransform);const yChanged=this.currentDisplayTransform.panY!==oldDisplayTransform.panY;if(yChanged){this.modelTrackContainer_.scrollTop=this.currentDisplayTransform.panY;}
-if(changed){this.dispatchChangeEvent();}},onModelTrackControllerScroll_(e){if(this.dtAnimationController_.activeAnimation&&this.dtAnimationController_.activeAnimation.affectsPanY){this.dtAnimationController_.cancelActiveAnimation();}
-const panY=this.modelTrackContainer_.scrollTop;this.currentDisplayTransform_.panY=panY;},get modelTrackContainer(){return this.modelTrackContainer_;},set modelTrackContainer(m){if(this.modelTrackContainer_){this.modelTrackContainer_.removeEventListener('scroll',this.onModelTrackControllerScroll_);}
-this.modelTrackContainer_=m;this.modelTrackContainer_.addEventListener('scroll',this.onModelTrackControllerScroll_);},get selectedFlowEvents(){return this.selectedFlowEvents_;},set selectedFlowEvents(selectedFlowEvents){this.selectedFlowEvents_=selectedFlowEvents;this.dispatchChangeEvent();},get highlightVSync(){return this.highlightVSync_;},set highlightVSync(highlightVSync){this.highlightVSync_=highlightVSync;this.dispatchChangeEvent();},get highDetails(){return this.highDetails_;},set highDetails(highDetails){this.highDetails_=highDetails;this.dispatchChangeEvent();},get gridEnabled(){return this.gridEnabled_;},set gridEnabled(enabled){if(this.gridEnabled_===enabled)return;this.gridEnabled_=enabled&&true;this.dispatchChangeEvent();},get gridTimebase(){return this.gridTimebase_;},set gridTimebase(timebase){if(this.gridTimebase_===timebase)return;this.gridTimebase_=timebase;this.dispatchChangeEvent();},get gridStep(){return this.gridStep_;},get interestRange(){return this.interestRange_;},get majorMarkWorldPositions(){return this.majorMarkWorldPositions_;},get majorMarkUnit(){switch(this.timeMode_){case TimelineViewport.TimeMode.TIME_IN_MS:return tr.b.Unit.byName.timeInMsAutoFormat;case TimelineViewport.TimeMode.REVISIONS:return tr.b.Unit.byName.count;default:throw new Error('Cannot get Unit for unsupported time mode '+this.timeMode_);}},get timeMode(){return this.timeMode_;},set timeMode(mode){this.timeMode_=mode;this.dispatchChangeEvent();},updateMajorMarkData(viewLWorld,viewRWorld){const pixelRatio=window.devicePixelRatio||1;const dt=this.currentDisplayTransform;const idealMajorMarkDistancePix=IDEAL_MAJOR_MARK_DISTANCE_PX*pixelRatio;const idealMajorMarkDistanceWorld=dt.xViewVectorToWorld(idealMajorMarkDistancePix);const majorMarkDistanceWorld=tr.b.math.preferredNumberLargerThanMin(idealMajorMarkDistanceWorld);const firstMajorMark=Math.floor(viewLWorld/majorMarkDistanceWorld)*majorMarkDistanceWorld;this.majorMarkWorldPositions_=[];if(firstMajorMark/majorMarkDistanceWorld>1e15)return;for(let curX=firstMajorMark;curX=viewLWorld){const vx=Math.floor(dt.xWorldToView(x));tr.ui.b.drawLine(ctx,vx,0,vx,viewHeight);}
-x+=this.gridStep;}
-ctx.strokeStyle='rgba(255, 0, 0, 0.25)';ctx.stroke();ctx.restore();},getShiftedSelection(selection,offset){const newSelection=new tr.model.EventSet();for(const event of selection){if(event instanceof tr.model.FlowEvent){if(offset>0){newSelection.push(event.endSlice);}else if(offset<0){newSelection.push(event.startSlice);}else{}
-continue;}
-const track=this.trackForEvent(event);track.addEventNearToProvidedEventToSelection(event,offset,newSelection);}
-if(newSelection.length===0)return undefined;return newSelection;},rebuildEventToTrackMap(){this.eventToTrackMap_=new tr.ui.tracks.EventToTrackMap();this.modelTrackContainer_.addEventsToTrackMap(this.eventToTrackMap_);},rebuildContainerToTrackMap(){this.containerToTrackMap.clear();this.modelTrackContainer_.addContainersToTrackMap(this.containerToTrackMap);},trackForEvent(event){return this.eventToTrackMap_[event.guid];}};return{TimelineViewport,};});'use strict';tr.exportTo('tr.c',function(){const BrushingState=tr.ui.b.BrushingState;const EventSet=tr.model.EventSet;const SelectionState=tr.model.SelectionState;const Viewport=tr.ui.TimelineViewport;function BrushingStateController(timelineView){tr.b.EventTarget.call(this);this.timelineView_=timelineView;this.currentBrushingState_=new BrushingState();this.onPopState_=this.onPopState_.bind(this);this.historyEnabled_=false;this.selections_={};}
-BrushingStateController.prototype={__proto__:tr.b.EventTarget.prototype,dispatchChangeEvent_(){const e=new tr.b.Event('change',false,false);this.dispatchEvent(e);},get model(){if(!this.timelineView_){return undefined;}
-return this.timelineView_.model;},get trackView(){if(!this.timelineView_){return undefined;}
-return this.timelineView_.trackView;},get viewport(){if(!this.timelineView_){return undefined;}
-if(!this.timelineView_.trackView){return undefined;}
-return this.timelineView_.trackView.viewport;},get historyEnabled(){return this.historyEnabled_;},set historyEnabled(historyEnabled){this.historyEnabled_=!!historyEnabled;if(historyEnabled){window.addEventListener('popstate',this.onPopState_);}else{window.removeEventListener('popstate',this.onPopState_);}},modelWillChange(){if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.unapplyFromEventSelectionStates();}},modelDidChange(){this.selections_={};this.currentBrushingState_=new BrushingState();this.currentBrushingState_.applyToEventSelectionStates(this.model);const e=new tr.b.Event('model-changed',false,false);this.dispatchEvent(e);this.dispatchChangeEvent_();},onUserInitiatedSelectionChange_(){const selection=this.selection;if(this.historyEnabled){this.selections_[selection.guid]=selection;const state={selection_guid:selection.guid};window.history.pushState(state,document.title);}},onPopState_(e){if(e.state===null)return;const selection=this.selections_[e.state.selection_guid];if(selection){const newState=this.currentBrushingState_.clone();newState.selection=selection;this.currentBrushingState=newState;}
-e.stopPropagation();},get selection(){return this.currentBrushingState_.selection;},get findMatches(){return this.currentBrushingState_.findMatches;},get selectionOfInterest(){return this.currentBrushingState_.selectionOfInterest;},get currentBrushingState(){return this.currentBrushingState_;},set currentBrushingState(newBrushingState){if(newBrushingState.isAppliedToModel){throw new Error('Cannot apply this state, it is applied');}
-const hasValueChanged=!this.currentBrushingState_.equals(newBrushingState);if(newBrushingState!==this.currentBrushingState_&&!hasValueChanged){if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.transferModelOwnershipToClone(newBrushingState);}
-this.currentBrushingState_=newBrushingState;return;}
-if(this.currentBrushingState_.isAppliedToModel){this.currentBrushingState_.unapplyFromEventSelectionStates();}
-this.currentBrushingState_=newBrushingState;this.currentBrushingState_.applyToEventSelectionStates(this.model);this.dispatchChangeEvent_();},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const timelineView=this.timelineView_.trackView;if(!timelineView){return new tr.b.Task();}
-return timelineView.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);},findTextChangedTo(allPossibleMatches){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.findMatches=allPossibleMatches;this.currentBrushingState=newBrushingState;},findFocusChangedTo(currentFocus){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=currentFocus;this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},findTextCleared(){if(this.xNavStringMarker_!==undefined){this.model.removeAnnotation(this.xNavStringMarker_);this.xNavStringMarker_=undefined;}
-if(this.guideLineAnnotation_!==undefined){this.model.removeAnnotation(this.guideLineAnnotation_);this.guideLineAnnotation_=undefined;}
-const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=new EventSet();newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},uiStateFromString(string){return tr.ui.b.UIState.fromUserFriendlyString(this.model,this.viewport,string);},navToPosition(uiState,showNavLine){this.trackView.navToPosition(uiState,showNavLine);},changeSelectionFromTimeline(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},showScriptControlSelection(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;},changeSelectionFromRequestSelectionChangeEvent(selection){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.selection=selection;newBrushingState.findMatches=new EventSet();this.currentBrushingState=newBrushingState;this.onUserInitiatedSelectionChange_();},changeAnalysisViewRelatedEvents(eventSet){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.analysisViewRelatedEvents=eventSet;this.currentBrushingState=newBrushingState;},changeAnalysisLinkHoveredEvents(eventSet){const newBrushingState=this.currentBrushingState_.clone();newBrushingState.analysisLinkHoveredEvents=eventSet;this.currentBrushingState=newBrushingState;},getViewSpecificBrushingState(viewId){return this.currentBrushingState.viewSpecificBrushingStates[viewId];},changeViewSpecificBrushingState(viewId,newState){const oldStates=this.currentBrushingState_.viewSpecificBrushingStates;const newStates={};for(const id in oldStates){newStates[id]=oldStates[id];}
-if(newState===undefined){delete newStates[viewId];}else{newStates[viewId]=newState;}
-const newBrushingState=this.currentBrushingState_.clone();newBrushingState.viewSpecificBrushingStates=newStates;this.currentBrushingState=newBrushingState;}};BrushingStateController.getControllerForElement=function(element){if(tr.isHeadless){throw new Error('Unsupported');}
-let currentElement=element;while(currentElement){if(currentElement.brushingStateController){return currentElement.brushingStateController;}
-if(currentElement.parentElement){currentElement=currentElement.parentElement;continue;}
-let currentNode=currentElement;while(Polymer.dom(currentNode).parentNode){currentNode=Polymer.dom(currentNode).parentNode;}
-currentElement=currentNode.host;}
-return undefined;};return{BrushingStateController,};});'use strict';Polymer({is:'tr-ui-a-analysis-link',properties:{href:{type:String}},listeners:{'click':'onClicked_','mouseenter':'onMouseEnter_','mouseleave':'onMouseLeave_'},ready(){this.selection_=undefined;},attached(){this.controller_=tr.c.BrushingStateController.getControllerForElement(this);},detached(){this.clearHighlight_();this.controller_=undefined;},set color(c){this.style.color=c;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;Polymer.dom(this).textContent=selection.userFriendlyName;},setSelectionAndContent(selection,opt_textContent){this.selection_=selection;if(opt_textContent){Polymer.dom(this).textContent=opt_textContent;}},getCurrentSelection_(){if(typeof this.selection_==='function'){return this.selection_();}
-return this.selection_;},setHighlight_(opt_eventSet){if(this.controller_){this.controller_.changeAnalysisLinkHoveredEvents(opt_eventSet);}},clearHighlight_(opt_eventSet){this.setHighlight_();},onClicked_(clickEvent){if(!this.selection_)return;clickEvent.stopPropagation();const event=new tr.model.RequestSelectionChangeEvent();event.selection=this.getCurrentSelection_();this.dispatchEvent(event);},onMouseEnter_(){this.setHighlight_(this.getCurrentSelection_());},onMouseLeave_(){this.clearHighlight_();}});'use strict';tr.exportTo('tr.ui.analysis',function(){const AnalysisSubView={set tabLabel(label){Polymer.dom(this).setAttribute('tab-label',label);},get tabLabel(){return this.getAttribute('tab-label');},get requiresTallView(){return false;},get relatedEventsToHighlight(){return undefined;},set selection(selection){throw new Error('Not implemented!');},get selection(){throw new Error('Not implemented!');}};const allTypeInfosByEventProto=new Map();let onlyRootTypeInfosByEventProto=undefined;let eventProtoToRootTypeInfoMap=undefined;function AnalysisSubViewTypeInfo(eventConstructor,options){if(options.multi===undefined){throw new Error('missing field: multi');}
-if(options.title===undefined){throw new Error('missing field: title');}
-this.eventConstructor=eventConstructor;this.singleTagName=undefined;this.singleTitle=undefined;this.multiTagName=undefined;this.multiTitle=undefined;this.childrenTypeInfos_=undefined;}
-AnalysisSubViewTypeInfo.prototype={get childrenTypeInfos(){return this.childrenTypeInfos_;},resetchildrenTypeInfos(){this.childrenTypeInfos_=[];}};AnalysisSubView.register=function(tagName,eventConstructor,options){let typeInfo=allTypeInfosByEventProto.get(eventConstructor.prototype);if(typeInfo===undefined){typeInfo=new AnalysisSubViewTypeInfo(eventConstructor,options);allTypeInfosByEventProto.set(typeInfo.eventConstructor.prototype,typeInfo);onlyRootTypeInfosByEventProto=undefined;}
-if(!options.multi){if(typeInfo.singleTagName!==undefined){throw new Error('SingleTagName already set');}
-typeInfo.singleTagName=tagName;typeInfo.singleTitle=options.title;}else{if(typeInfo.multiTagName!==undefined){throw new Error('MultiTagName already set');}
-typeInfo.multiTagName=tagName;typeInfo.multiTitle=options.title;}
-return typeInfo;};function rebuildRootSubViewTypeInfos(){onlyRootTypeInfosByEventProto=new Map();allTypeInfosByEventProto.forEach(function(typeInfo){typeInfo.resetchildrenTypeInfos();});allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;let lastEventProto=eventPrototype;let curEventProto=eventPrototype.__proto__;while(true){if(!allTypeInfosByEventProto.has(curEventProto)){const rootTypeInfo=allTypeInfosByEventProto.get(lastEventProto);const rootEventProto=lastEventProto;const isNew=onlyRootTypeInfosByEventProto.has(rootEventProto);onlyRootTypeInfosByEventProto.set(rootEventProto,rootTypeInfo);break;}
-lastEventProto=curEventProto;curEventProto=curEventProto.__proto__;}});allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;const parentEventProto=eventPrototype.__proto__;const parentTypeInfo=allTypeInfosByEventProto.get(parentEventProto);if(!parentTypeInfo)return;parentTypeInfo.childrenTypeInfos.push(typeInfo);});eventProtoToRootTypeInfoMap=new Map();allTypeInfosByEventProto.forEach(function(typeInfo,eventProto){const eventPrototype=typeInfo.eventConstructor.prototype;let curEventProto=eventPrototype;while(true){if(onlyRootTypeInfosByEventProto.has(curEventProto)){const rootTypeInfo=onlyRootTypeInfosByEventProto.get(curEventProto);eventProtoToRootTypeInfoMap.set(eventPrototype,rootTypeInfo);break;}
-curEventProto=curEventProto.__proto__;}});}
-function findLowestTypeInfoForEvents(thisTypeInfo,events){if(events.length===0)return thisTypeInfo;const event0=tr.b.getFirstElement(events);let candidateSubTypeInfo;for(let i=0;i0){td.style.paddingLeft=INDENT_SPACE+'px';td.style.display='flex';const expandButton=this.appendNewElement_(td,'expand-button');Polymer.dom(expandButton).textContent=RIGHT_ARROW;if(rowInfo.isExpanded){Polymer.dom(expandButton).classList.add('button-expanded');}}else{td.style.paddingLeft=INDENT_SPACE_NO_BUTTON+'px';}}
-if(value!==undefined){Polymer.dom(td).appendChild(tr.ui.b.asHTMLOrTextNode(value,this.ownerDocument));}
-td.addEventListener('click',function(i,clickEvent){clickEvent.preventDefault();if(!isBodyRow&&!isExpandableRow)return;clickEvent.stopPropagation();if(clickEvent.target.tagName==='EXPAND-BUTTON'){this.setExpandedForUserRow_(tableSection,rowInfoMap,rowInfo.userRow,!rowInfo.isExpanded);return;}
-if(isBodyRow&&this.selectionMode_!==SelectionMode.NONE){let shouldSelect=false;let shouldFocus=false;switch(this.selectionMode_){case SelectionMode.ROW:shouldSelect=this.selectedTableRowInfo_!==rowInfo;shouldFocus=true;break;case SelectionMode.CELL:if(this.doesColumnIndexSupportSelection(i)){shouldSelect=this.selectedTableRowInfo_!==rowInfo||this.selectedColumnIndex_!==i;shouldFocus=true;}
-break;default:throw new Error('Invalid selection mode '+
-this.selectionMode_);}
-if(shouldFocus){this.focus();}
-if(shouldSelect){this.didTableRowInfoGetClicked_(rowInfo,i);return;}}
-if(isExpandableRow){this.setExpandedForUserRow_(tableSection,rowInfoMap,rowInfo.userRow,!rowInfo.isExpanded);}}.bind(this,i));if(isBodyRow){td.addEventListener('dblclick',function(i,e){e.stopPropagation();this.dispatchStepIntoEvent_(rowInfo,i);}.bind(this,i));}
-i+=colSpan;}
-return rowInfo.htmlNode;},removeSubNodes_(tableSection,rowInfo,rowInfoMap){if(rowInfo.userRow[this.subRowsPropertyName_]===undefined)return;for(let i=0;i=this.tableColumns_.length){throw new Error('Invalid index');}
-if(!this.doesColumnIndexSupportSelection(selectedColumnIndex)){throw new Error('Selection is not supported on this column');}
-const e=this.prepareToChangeSelection_();if(this.selectedColumnIndex_===undefined){this.selectedTableRowInfo_=undefined;}else if(!this.selectedTableRowInfo_){if(this.tableRows_.length===0){throw new Error('No available row to be selected');}
-this.selectedTableRowInfo_=this.tableRowsInfo_.get(this.tableRows_[0]);}
-this.selectedColumnIndex_=selectedColumnIndex;this.updateSelectedState_();this.dispatchEvent(e);},onKeyDown_(e){if(this.selectionMode_===SelectionMode.NONE)return;const CODE_TO_COMMAND_NAMES={13:'ENTER',32:'SPACE',37:'ARROW_LEFT',38:'ARROW_UP',39:'ARROW_RIGHT',40:'ARROW_DOWN'};const cmdName=CODE_TO_COMMAND_NAMES[e.keyCode];if(cmdName===undefined)return;e.stopPropagation();e.preventDefault();this.performKeyCommand_(cmdName);},onFocus_(e){if(this.selectionMode_===SelectionMode.NONE||this.selectedTableRow||this.tableRows_.length===0){return;}
-if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}
-this.selectedTableRow=this.tableRows_[0];},focus(){this.$.body.focus();this.onFocus_();},blur(){this.$.body.blur();},get isFocused(){return this.root.activeElement===this.$.body;},performKeyCommand_(cmdName){this.rebuildIfNeeded_();switch(cmdName){case'ARROW_UP':this.selectPreviousOrFirstRowIfPossible_();return;case'ARROW_DOWN':this.selectNextOrFirstRowIfPossible_();return;case'ARROW_RIGHT':switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.ROW:this.expandRowAndSelectChildRowIfPossible_();return;case SelectionMode.CELL:this.selectNextSelectableCellToTheRightIfPossible_();return;default:throw new Error('Invalid selection mode '+this.selectionMode_);}
-case'ARROW_LEFT':switch(this.selectionMode_){case SelectionMode.NONE:return;case SelectionMode.ROW:this.collapseRowOrSelectParentRowIfPossible_();return;case SelectionMode.CELL:this.selectNextSelectableCellToTheLeftIfPossible_();return;default:throw new Error('Invalid selection mode '+this.selectionMode_);}
-case'SPACE':this.toggleRowExpansionStateIfPossible_();return;case'ENTER':this.stepIntoSelectionIfPossible_();return;default:throw new Error('Unrecognized command '+cmdName);}},selectPreviousOrFirstRowIfPossible_(){const prev=this.selectedTableRowInfo_?this.selectedTableRowInfo_.htmlNode.previousElementSibling:this.$.body.firstChild;if(!prev)return;if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}
-tr.ui.b.scrollIntoViewIfNeeded(prev);this.selectedTableRow=prev.rowInfo.userRow;},selectNextOrFirstRowIfPossible_(){this.getFirstSelectableColumnIndex_;const next=this.selectedTableRowInfo_?this.selectedTableRowInfo_.htmlNode.nextElementSibling:this.$.body.firstChild;if(!next)return;if(this.selectionMode_===SelectionMode.CELL&&this.getFirstSelectableColumnIndex_()===-1){return;}
-tr.ui.b.scrollIntoViewIfNeeded(next);this.selectedTableRow=next.rowInfo.userRow;},expandRowAndSelectChildRowIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo||selectedRowInfo.userRow[this.subRowsPropertyName_]===undefined||selectedRowInfo.userRow[this.subRowsPropertyName_].length===0){return;}
-if(!selectedRowInfo.isExpanded){this.setExpandedForTableRow(selectedRowInfo.userRow,true);}
-this.selectedTableRow=selectedRowInfo.htmlNode.nextElementSibling.rowInfo.userRow;},collapseRowOrSelectParentRowIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo)return;if(selectedRowInfo.isExpanded){this.setExpandedForTableRow(selectedRowInfo.userRow,false);}else{const parentRowInfo=selectedRowInfo.parentRowInfo;if(parentRowInfo){this.selectedTableRow=parentRowInfo.userRow;}}},selectNextSelectableCellToTheRightIfPossible_(){if(!this.selectedTableRowInfo_||this.selectedColumnIndex_===undefined){return;}
-for(let i=this.selectedColumnIndex_+1;i=0;i--){if(this.doesColumnIndexSupportSelection(i)){this.selectedColumnIndex=i;return;}}},toggleRowExpansionStateIfPossible_(){const selectedRowInfo=this.selectedTableRowInfo_;if(!selectedRowInfo||selectedRowInfo.userRow[this.subRowsPropertyName_]===undefined||selectedRowInfo.userRow[this.subRowsPropertyName_].length===0){return;}
-this.setExpandedForTableRow(selectedRowInfo.userRow,!selectedRowInfo.isExpanded);},stepIntoSelectionIfPossible_(){if(!this.selectedTableRowInfo_)return;this.dispatchStepIntoEvent_(this.selectedTableRowInfo_,this.selectedColumnIndex_);},dispatchSortingChangedEvent_(){const e=new tr.b.Event('sort-column-changed');e.sortColumnIndex=this.sortColumnIndex_;e.sortDescending=this.sortDescending_;this.dispatchEvent(e);}});})();'use strict';const ColumnAlignment=tr.ui.b.TableFormat.ColumnAlignment;Polymer({is:'tr-ui-b-table-header-cell',created(){this.tapCallback_=undefined;this.cellTitle_='';this.align_=undefined;this.selectable_=false;this.column_=undefined;},ready(){this.addEventListener('click',this.onTap_.bind(this));},set column(column){this.column_=column;this.align=column.align;this.cellTitle=column.title;},get column(){return this.column_;},set cellTitle(value){this.cellTitle_=value;const titleNode=tr.ui.b.asHTMLOrTextNode(this.cellTitle_,this.ownerDocument);this.$.title.innerText='';Polymer.dom(this.$.title).appendChild(titleNode);},get cellTitle(){return this.cellTitle_;},set align(align){switch(align){case undefined:case ColumnAlignment.LEFT:this.style.justifyContent='';break;case ColumnAlignment.RIGHT:this.style.justifyContent='flex-end';break;default:throw new Error('Invalid alignment of column (title=\''+
-this.cellTitle_+'\'): '+align);}
-this.align_=align;},get align(){return this.align_;},clearSideContent(){Polymer.dom(this.$.side).textContent='';},set sideContent(content){Polymer.dom(this.$.side).textContent=content;this.$.side.style.display=content?'inline':'none';},get sideContent(){return Polymer.dom(this.$.side).textContent;},set sideContentDisabled(sideContentDisabled){this.$.side.classList.toggle('disabled',sideContentDisabled);},get sideContentDisabled(){return this.$.side.classList.contains('disabled');},set tapCallback(callback){this.style.cursor='pointer';this.tapCallback_=callback;},get tapCallback(){return this.tapCallback_;},onTap_(){if(this.tapCallback_){this.tapCallback_();}}});'use strict';Polymer({is:'tr-ui-a-alert-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;this.$.table.tableColumns=[{title:'Label',value(row){return row.name;},width:'150px'},{title:'Value',width:'100%',value(row){return row.value;}}];this.$.table.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},getRowsForSingleAlert_(alert){const rows=[];for(const argName in alert.args){const argView=document.createElement('tr-ui-a-generic-object-view');argView.object=alert.args[argName];rows.push({name:argName,value:argView});}
-if(alert.associatedEvents.length){alert.associatedEvents.forEach(function(event,i){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(event),event.title);let valueString='';if(event instanceof tr.model.TimedEvent){valueString='took '+event.duration.toFixed(2)+'ms';}
-rows.push({name:linkEl,value:valueString});});}
-const descriptionEl=tr.ui.b.createDiv({textContent:alert.info.description,maxWidth:'300px'});rows.push({name:'Description',value:descriptionEl});if(alert.info.docLinks){alert.info.docLinks.forEach(function(linkObject){const linkEl=document.createElement('a');linkEl.target='_blank';linkEl.href=linkObject.href;Polymer.dom(linkEl).textContent=Polymer.dom(linkObject).textContent;rows.push({name:linkObject.label,value:linkEl});});}
-return rows;},getRowsForAlerts_(alerts){if(alerts.length===1){const rows=[{name:'Alert',value:tr.b.getOnlyElement(alerts).title}];const detailRows=this.getRowsForSingleAlert_(tr.b.getOnlyElement(alerts));rows.push.apply(rows,detailRows);return rows;}
-return alerts.map(function(alert){return{name:'Alert',value:alert.title,isExpanded:alerts.size<10,subRows:this.getRowsForSingleAlert_(alert)};},this);},updateContents_(){if(this.currentSelection_===undefined){this.$.table.rows=[];this.$.table.rebuild();return;}
-const alerts=this.currentSelection_;this.$.table.tableRows=this.getRowsForAlerts_(alerts);this.$.table.rebuild();},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const result=new tr.model.EventSet();for(const event of this.currentSelection_){result.addEventSet(event.associatedEvents);}
-return result;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-alert-sub-view',tr.model.Alert,{multi:false,title:'Alert',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-alert-sub-view',tr.model.Alert,{multi:true,title:'Alerts',});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-scalar-context-controller',created(){this.host_=undefined;this.groupToContext_=new Map();this.dirtyGroups_=new Set();},attached(){if(this.host_){throw new Error('Scalar context controller is already attached to a host');}
-const host=findParentOrHost(this);if(host.__scalarContextController){throw new Error('Multiple scalar context controllers attached to this host');}
-host.__scalarContextController=this;this.host_=host;},detached(){if(!this.host_){throw new Error('Scalar context controller is not attached to a host');}
-if(this.host_.__scalarContextController!==this){throw new Error('Scalar context controller is not attached to its host');}
-delete this.host_.__scalarContextController;this.host_=undefined;},getContext(group){return this.groupToContext_.get(group);},onScalarSpanAdded(group,span){let context=this.groupToContext_.get(group);if(context===undefined){context={spans:new Set(),range:new tr.b.math.Range()};this.groupToContext_.set(group,context);}
-if(context.spans.has(span)){throw new Error('Scalar span already registered with group: '+group);}
-context.spans.add(span);this.markGroupDirtyAndScheduleUpdate_(group);},onScalarSpanRemoved(group,span){const context=this.groupToContext_.get(group);if(!context.spans.has(span)){throw new Error('Scalar span not registered with group: '+group);}
-context.spans.delete(span);this.markGroupDirtyAndScheduleUpdate_(group);},onScalarSpanUpdated(group,span){const context=this.groupToContext_.get(group);if(!context.spans.has(span)){throw new Error('Scalar span not registered with group: '+group);}
-this.markGroupDirtyAndScheduleUpdate_(group);},markGroupDirtyAndScheduleUpdate_(group){const alreadyDirty=this.dirtyGroups_.size>0;this.dirtyGroups_.add(group);if(!alreadyDirty){tr.b.requestAnimationFrameInThisFrameIfPossible(this.updateContext,this);}},updateContext(){const groups=this.dirtyGroups_;if(groups.size===0)return;this.dirtyGroups_=new Set();for(const group of groups){this.updateGroup_(group);}
-const event=new tr.b.Event('context-updated');event.groups=groups;this.dispatchEvent(event);},updateGroup_(group){const context=this.groupToContext_.get(group);if(context.spans.size===0){this.groupToContext_.delete(group);return;}
-context.range.reset();for(const span of context.spans){context.range.addValue(span.value);}}});function getScalarContextControllerForElement(element){while(element){if(element.__scalarContextController){return element.__scalarContextController;}
-element=findParentOrHost(element);}
-return undefined;}
-function findParentOrHost(node){if(node.parentElement){return node.parentElement;}
-while(Polymer.dom(node).parentNode){node=Polymer.dom(node).parentNode;}
-return node.host;}
-return{getScalarContextControllerForElement,};});'use strict';tr.exportTo('tr.v.ui',function(){function createScalarSpan(value,opt_config){if(value===undefined)return'';const config=opt_config||{};const ownerDocument=config.ownerDocument||document;const span=unwrap(ownerDocument).createElement('tr-v-ui-scalar-span');let numericValue;if(value instanceof tr.b.Scalar){span.value=value;numericValue=value.value;}else if(value instanceof tr.v.Histogram){numericValue=value.average;if(numericValue===undefined)return'';span.setValueAndUnit(numericValue,value.unit);}else{const unit=config.unit;if(unit===undefined){throw new Error('Unit must be provided in config when value is a number');}
-span.setValueAndUnit(value,unit);numericValue=value;}
-if(config.context){span.context=config.context;}
-if(config.customContextRange){span.customContextRange=config.customContextRange;}
-if(config.leftAlign){span.leftAlign=true;}
-if(config.inline){span.inline=true;}
-if(config.significance!==undefined){span.significance=config.significance;}
-if(config.contextGroup!==undefined){span.contextGroup=config.contextGroup;}
-return span;}
-return{createScalarSpan,};});'use strict';Polymer({is:'tr-v-ui-scalar-span',properties:{contextGroup:{type:String,reflectToAttribute:true,observer:'contextGroupChanged_'}},created(){this.value_=undefined;this.unit_=undefined;this.context_=undefined;this.warning_=undefined;this.significance_=tr.b.math.Statistics.Significance.DONT_CARE;this.shouldSearchForContextController_=false;this.lazyContextController_=undefined;this.onContextUpdated_=this.onContextUpdated_.bind(this);this.updateContents_=this.updateContents_.bind(this);this.customContextRange_=undefined;},get significance(){return this.significance_;},set significance(s){this.significance_=s;this.updateContents_();},set contentTextDecoration(deco){this.$.content.style.textDecoration=deco;},get value(){return this.value_;},set value(value){if(value instanceof tr.b.Scalar){this.value_=value.value;this.unit_=value.unit;}else{this.value_=value;}
-this.updateContents_();if(this.hasContext_(this.contextGroup)){this.contextController_.onScalarSpanUpdated(this.contextGroup,this);}else{this.updateSparkline_();}},get contextController_(){if(this.shouldSearchForContextController_){this.lazyContextController_=tr.v.ui.getScalarContextControllerForElement(this);this.shouldSearchForContextController_=false;}
-return this.lazyContextController_;},hasContext_(contextGroup){return!!(contextGroup&&this.contextController_);},contextGroupChanged_(newContextGroup,oldContextGroup){this.detachFromContextControllerIfPossible_(oldContextGroup);if(!this.attachToContextControllerIfPossible_(newContextGroup)){this.onContextUpdated_();}},attachToContextControllerIfPossible_(contextGroup){if(!this.hasContext_(contextGroup))return false;this.contextController_.addEventListener('context-updated',this.onContextUpdated_);this.contextController_.onScalarSpanAdded(contextGroup,this);return true;},detachFromContextControllerIfPossible_(contextGroup){if(!this.hasContext_(contextGroup))return;this.contextController_.removeEventListener('context-updated',this.onContextUpdated_);this.contextController_.onScalarSpanRemoved(contextGroup,this);},attached(){tr.b.Unit.addEventListener('display-mode-changed',this.updateContents_);this.shouldSearchForContextController_=true;this.attachToContextControllerIfPossible_(this.contextGroup);},detached(){tr.b.Unit.removeEventListener('display-mode-changed',this.updateContents_);this.detachFromContextControllerIfPossible_(this.contextGroup);this.shouldSearchForContextController_=false;this.lazyContextController_=undefined;},onContextUpdated_(){this.updateSparkline_();},get context(){return this.context_;},set context(context){this.context_=context;this.updateContents_();},get unit(){return this.unit_;},set unit(unit){this.unit_=unit;this.updateContents_();this.updateSparkline_();},setValueAndUnit(value,unit){this.value_=value;this.unit_=unit;this.updateContents_();},get customContextRange(){return this.customContextRange_;},set customContextRange(customContextRange){this.customContextRange_=customContextRange;this.updateSparkline_();},get inline(){return Polymer.dom(this).classList.contains('inline');},set inline(inline){if(inline){Polymer.dom(this).classList.add('inline');}else{Polymer.dom(this).classList.remove('inline');}},get leftAlign(){return Polymer.dom(this).classList.contains('left-align');},set leftAlign(leftAlign){if(leftAlign){Polymer.dom(this).classList.add('left-align');}else{Polymer.dom(this).classList.remove('left-align');}},updateSparkline_(){Polymer.dom(this.$.sparkline).classList.remove('positive');Polymer.dom(this.$.sparkline).classList.remove('better');Polymer.dom(this.$.sparkline).classList.remove('worse');Polymer.dom(this.$.sparkline).classList.remove('same');this.$.sparkline.style.display='none';this.$.sparkline.style.left='0';this.$.sparkline.style.width='0';let range=this.customContextRange_;if(!range&&this.hasContext_(this.contextGroup)){const context=this.contextController_.getContext(this.contextGroup);if(context){range=context.range;}}
-if(!range||range.isEmpty)return;const leftPoint=Math.min(range.min,0);const rightPoint=Math.max(range.max,0);const pointDistance=rightPoint-leftPoint;if(pointDistance===0){return;}
-this.$.sparkline.style.display='block';let left;let width;if(this.value>0){width=Math.min(this.value,rightPoint);left=-leftPoint;Polymer.dom(this.$.sparkline).classList.add('positive');}else if(this.value<=0){width=-Math.max(this.value,leftPoint);left=(-leftPoint)-width;}
-this.$.sparkline.style.left=this.buildSparklineStyle_(left/pointDistance,false);this.$.sparkline.style.width=this.buildSparklineStyle_(width/pointDistance,true);const changeClass=this.changeClassName_;if(changeClass){Polymer.dom(this.$.sparkline).classList.add(changeClass);}},buildSparklineStyle_(ratio,isWidth){let position='calc('+ratio+' * (100% - 1px)';if(isWidth){position+=' + 1px';}
-position+=')';return position;},updateContents_(){Polymer.dom(this.$.content).textContent='';Polymer.dom(this.$.content).classList.remove('better');Polymer.dom(this.$.content).classList.remove('worse');Polymer.dom(this.$.content).classList.remove('same');this.$.insignificant.style.display='';this.$.significantly_better.style.display='';this.$.significantly_worse.style.display='';if(this.unit_===undefined)return;this.$.content.title='';Polymer.dom(this.$.content).textContent=this.unit_.format(this.value,this.context);this.updateDelta_();},updateDelta_(){let changeClass=this.changeClassName_;if(!changeClass){this.$.significance.style.display='none';return;}
-this.$.significance.style.display='inline';let title;switch(changeClass){case'better':title='improvement';break;case'worse':title='regression';break;case'same':title='no change';break;default:throw new Error('Unknown change class: '+changeClass);}
-Polymer.dom(this.$.content).classList.add(changeClass);switch(this.significance){case tr.b.math.Statistics.Significance.DONT_CARE:break;case tr.b.math.Statistics.Significance.INSIGNIFICANT:if(changeClass!=='same')title='insignificant '+title;this.$.insignificant.style.display='inline';changeClass='same';break;case tr.b.math.Statistics.Significance.SIGNIFICANT:if(changeClass==='same'){throw new Error('How can no change be significant?');}
-this.$['significantly_'+changeClass].style.display='inline';title='significant '+title;break;default:throw new Error('Unknown significance '+this.significance);}
-this.$.significance.title=title;this.$.content.title=title;},get changeClassName_(){if(!this.unit_||!this.unit_.isDelta)return undefined;switch(this.unit_.improvementDirection){case tr.b.ImprovementDirection.DONT_CARE:return undefined;case tr.b.ImprovementDirection.BIGGER_IS_BETTER:if(this.value===0)return'same';return this.value>0?'better':'worse';case tr.b.ImprovementDirection.SMALLER_IS_BETTER:if(this.value===0)return'same';return this.value<0?'better':'worse';default:throw new Error('Unknown improvement direction: '+
-this.unit_.improvementDirection);}},get warning(){return this.warning_;},set warning(warning){this.warning_=warning;const warningEl=this.$.warning;if(this.warning_){warningEl.title=warning;warningEl.style.display='inline';}else{warningEl.title='';warningEl.style.display='';}},get timestamp(){return this.value;},set timestamp(timestamp){if(timestamp instanceof tr.b.u.TimeStamp){this.value=timestamp;return;}
-this.setValueAndUnit(timestamp,tr.b.u.Units.timeStampInMs);},get duration(){return this.value;},set duration(duration){if(duration instanceof tr.b.u.TimeDuration){this.value=duration;return;}
-this.setValueAndUnit(duration,tr.b.u.Units.timeDurationInMs);}});'use strict';tr.exportTo('tr.ui.analysis',function(){const NO_BREAK_SPACE=String.fromCharCode(160);const RIGHTWARDS_ARROW=String.fromCharCode(8594);const COLLATOR=new Intl.Collator(undefined,{numeric:true});function TitleColumn(title){this.title=title;}
-TitleColumn.prototype={supportsCellSelection:false,value(row){const formattedTitle=this.formatTitle(row);const contexts=row.contexts;if(contexts===undefined||contexts.length===0){return formattedTitle;}
-const firstContext=contexts[0];const lastContext=contexts[contexts.length-1];let changeDefinedContextCount=0;for(let i=1;i1){color='purple';}
-if(color===undefined&&prefix===undefined){return formattedTitle;}
-const titleEl=document.createElement('span');if(prefix!==undefined){const prefixEl=tr.ui.b.createSpan({textContent:prefix});prefixEl.style.fontFamily='monospace';Polymer.dom(titleEl).appendChild(prefixEl);Polymer.dom(titleEl).appendChild(tr.ui.b.asHTMLOrTextNode(NO_BREAK_SPACE));}
-if(color!==undefined){titleEl.style.color=color;}
-Polymer.dom(titleEl).appendChild(tr.ui.b.asHTMLOrTextNode(formattedTitle));return titleEl;},formatTitle(row){return row.title;},cmp(rowA,rowB){return COLLATOR.compare(rowA.title,rowB.title);}};function MemoryColumn(name,cellPath,aggregationMode){this.name=name;this.cellPath=cellPath;this.shouldSetContextGroup=false;this.aggregationMode=aggregationMode;}
-MemoryColumn.fromRows=function(rows,config){const cellNames=new Set();function gatherCellNames(rows){rows.forEach(function(row){if(row===undefined)return;const fieldCells=row[config.cellKey];if(fieldCells!==undefined){for(const[fieldName,fieldCell]of Object.entries(fieldCells)){if(fieldCell===undefined||fieldCell.fields===undefined){continue;}
-cellNames.add(fieldName);}}
-const subRows=row.subRows;if(subRows!==undefined){gatherCellNames(subRows);}});}
-gatherCellNames(rows);const positions=[];cellNames.forEach(function(cellName){const cellPath=[config.cellKey,cellName];const matchingRule=MemoryColumn.findMatchingRule(cellName,config.rules);const constructor=matchingRule.columnConstructor;const column=new constructor(cellName,cellPath,config.aggregationMode);column.shouldSetContextGroup=!!config.shouldSetContextGroup;positions.push({importance:matchingRule.importance,column});});positions.sort(function(a,b){if(a.importance===b.importance){return COLLATOR.compare(a.column.name,b.column.name);}
-return b.importance-a.importance;});return positions.map(function(position){return position.column;});};MemoryColumn.spaceEqually=function(columns){const columnWidth=(100/columns.length).toFixed(3)+'%';columns.forEach(function(column){column.width=columnWidth;});};MemoryColumn.findMatchingRule=function(name,rules){for(let i=0;i0){return field;}
-return accumulator;}.bind(this),undefined);},addInfos(fields,contexts,infos){},getImportance(importanceRules){if(importanceRules.length===0)return 0;const matchingRule=MemoryColumn.findMatchingRule(this.name,importanceRules);if(matchingRule!==undefined){return matchingRule.importance;}
-let minImportance=importanceRules[0].importance;for(let i=1;i0){let nextLevelRowCount=0;currentLevelRows.forEach(function(currentLevelRow){const subRows=currentLevelRow.subRows;if(subRows===undefined||subRows.length===0)return;nextLevelRowCount+=subRows.length;});if(totalVisibleRowCount+nextLevelRowCount>RECURSIVE_EXPANSION_MAX_VISIBLE_ROW_COUNT){break;}
-const nextLevelRows=new Array(nextLevelRowCount);let nextLevelRowIndex=0;currentLevelRows.forEach(function(currentLevelRow){const subRows=currentLevelRow.subRows;if(subRows===undefined||subRows.length===0)return;table.setExpandedForTableRow(currentLevelRow,true);subRows.forEach(function(subRow){nextLevelRows[nextLevelRowIndex++]=subRow;});});totalVisibleRowCount+=nextLevelRowCount;currentLevelRows=nextLevelRows;}}
-function aggregateTableRowCellsRecursively(row,columns,opt_predicate){const subRows=row.subRows;if(subRows===undefined||subRows.length===0)return;subRows.forEach(function(subRow){aggregateTableRowCellsRecursively(subRow,columns,opt_predicate);});if(opt_predicate===undefined||opt_predicate(row.contexts)){aggregateTableRowCells(row,subRows,columns);}}
-function aggregateTableRowCells(row,subRows,columns){columns.forEach(function(column){if(!(column instanceof MemoryColumn))return;column.aggregateCells(row,subRows);});}
-function createCells(timeToValues,valueFieldsGetter,opt_this){opt_this=opt_this||this;const fieldNameToFields=tr.b.invertArrayOfDicts(timeToValues,valueFieldsGetter,opt_this);const result={};for(const[fieldName,fields]of Object.entries(fieldNameToFields)){result[fieldName]=new tr.ui.analysis.MemoryCell(fields);}
-return result;}
-function createWarningInfo(message){return{message,icon:String.fromCharCode(9888),color:'red'};}
-function DetailsNumericMemoryColumn(name,cellPath,aggregationMode){NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}
-DetailsNumericMemoryColumn.prototype={__proto__:NumericMemoryColumn.prototype,getFormattingContext(unit){if(unit.baseUnit===tr.b.Unit.byName.sizeInBytes){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.KIBI};}
-return undefined;}};return{TitleColumn,MemoryColumn,StringMemoryColumn,NumericMemoryColumn,MemoryCell,expandTableRowsRecursively,aggregateTableRowCellsRecursively,aggregateTableRowCells,createCells,createWarningInfo,DetailsNumericMemoryColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const LATIN_SMALL_LETTER_F_WITH_HOOK=String.fromCharCode(0x0192);const CIRCLED_LATIN_CAPITAL_LETTER_T=String.fromCharCode(0x24C9);const HeapDetailsRowDimension={ROOT:{},STACK_FRAME:{label:'Stack frame',symbol:LATIN_SMALL_LETTER_F_WITH_HOOK,color:'heap_dump_stack_frame'},OBJECT_TYPE:{label:'Object type',symbol:CIRCLED_LATIN_CAPITAL_LETTER_T,color:'heap_dump_object_type'}};function HeapDetailsTitleColumn(title){tr.ui.analysis.TitleColumn.call(this,title);}
-HeapDetailsTitleColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(row.dimension===HeapDetailsRowDimension.ROOT){return row.title;}
-const symbolEl=document.createElement('span');Polymer.dom(symbolEl).textContent=row.dimension.symbol;symbolEl.title=row.dimension.label;symbolEl.style.color=tr.b.ColorScheme.getColorForReservedNameAsString(row.dimension.color);symbolEl.style.paddingRight='4px';symbolEl.style.cursor='help';symbolEl.style.fontWeight='bold';const titleEl=document.createElement('span');Polymer.dom(titleEl).appendChild(symbolEl);Polymer.dom(titleEl).appendChild(document.createTextNode(row.title));return titleEl;}};function AllocationCountColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}
-AllocationCountColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,getFormattingContext(unit){return{minimumFractionDigits:0};}};const HEAP_DETAILS_COLUMN_RULES=[{condition:'Size',importance:2,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn},{condition:'Count',importance:1,columnConstructor:AllocationCountColumn},{importance:0,columnConstructor:tr.ui.analysis.DetailsNumericMemoryColumn}];return{HeapDetailsRowDimension,HeapDetailsTitleColumn,AllocationCountColumn,HEAP_DETAILS_COLUMN_RULES,};});'use strict';tr.exportTo('tr.ui.analysis',function(){const RebuildableBehavior={rebuild(){if(!this.paneDirty_){return;}
-this.paneDirty_=false;this.onRebuild_();},scheduleRebuild_(){if(this.paneDirty_)return;this.paneDirty_=true;tr.b.requestAnimationFrame(this.rebuild.bind(this));},onRebuild_(){}};return{RebuildableBehavior,};});'use strict';Polymer({is:'tr-ui-b-tab-view',properties:{label_:{type:String,value:()=>''},selectedSubView_:Object,subViews_:{type:Array,value:()=>[]},tabsHidden:{type:Boolean,value:false,observer:'tabsHiddenChanged_'}},ready(){this.$.tabs.addEventListener('keydown',this.onKeyDown_.bind(this),true);this.updateFocusability_();},set label(newLabel){this.set('label_',newLabel);},get tabs(){return this.get('subViews_');},get selectedSubView(){return this.selectedSubView_;},set selectedSubView(subView){if(subView===this.selectedSubView_)return;if(this.selectedSubView_){Polymer.dom(this.$.subView).removeChild(this.selectedSubView_);const oldInput=this.root.getElementById(this.computeRadioId_(this.selectedSubView_));if(oldInput){oldInput.checked=false;}}
-this.set('selectedSubView_',subView);if(subView){Polymer.dom(this.$.subView).appendChild(subView);const newInput=this.root.getElementById(this.computeRadioId_(subView));if(newInput){newInput.checked=true;}}
-this.fire('selected-tab-change');},clearSubViews(){this.splice('subViews_',0,this.subViews_.length);this.selectedSubView=undefined;this.updateFocusability_();},addSubView(subView){this.push('subViews_',subView);if(!this.selectedSubView_)this.selectedSubView=subView;this.updateFocusability_();},get subViews(){return this.subViews_;},resetSubViews(subViews){this.splice('subViews_',0,this.subViews_.length);if(subViews.length){for(const subView of subViews){this.push('subViews_',subView);}
-this.selectedSubView=subViews[0];}else{this.selectedSubView=undefined;}
-this.updateFocusability_();},onTabChanged_(event){this.selectedSubView=event.model.item;},isChecked_(subView){return this.selectedSubView_===subView;},tabsHiddenChanged_(){this.updateFocusability_();},onKeyDown_(e){if(this.tabsHidden)return;let keyHandled=false;switch(e.keyCode){case 37:keyHandled=this.selectPreviousTabIfPossible();break;case 39:keyHandled=this.selectNextTabIfPossible();break;}
-if(!keyHandled)return;e.stopPropagation();e.preventDefault();},selectNextTabIfPossible(){return this.selectTabByOffsetIfPossible_(1);},selectPreviousTabIfPossible(){return this.selectTabByOffsetIfPossible_(-1);},selectTabByOffsetIfPossible_(offset){if(!this.selectedSubView_)return false;const currentIndex=this.subViews_.indexOf(this.selectedSubView_);const newSubView=this.tabs[currentIndex+offset];if(!newSubView)return false;this.selectedSubView=newSubView;return true;},shouldBeFocusable_(){return!this.tabsHidden&&this.subViews_.length>0;},updateFocusability_(){if(this.shouldBeFocusable_()){Polymer.dom(this.$.tabs).setAttribute('tabindex',0);}else{Polymer.dom(this.$.tabs).removeAttribute('tabindex');}},computeRadioId_(subView){return subView.tagName+'-'+subView.tabLabel.replace(/ /g,'-');}});'use strict';tr.exportTo('tr.ui.analysis',function(){const RESONABLE_NUMBER_OF_ROWS=200;const TabUiState={NO_LONG_TAIL:0,HIDING_LONG_TAIL:1,SHOWING_LONG_TAIL:2,};function EmptyFillerColumn(){}
-EmptyFillerColumn.prototype={title:'',value(){return'';},};Polymer({is:'tr-ui-a-memory-dump-heap-details-breakdown-view',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.displayedNode_=undefined;this.dimensionToTab_=new Map();},ready(){this.scheduleRebuild_();this.root.addEventListener('keydown',this.onKeyDown_.bind(this),true);},get displayedNode(){return this.displayedNode_;},set displayedNode(node){this.displayedNode_=node;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;for(const tab of this.$.tabs.tabs){tab.aggregationMode=aggregationMode;}},onRebuild_(){const previouslySelectedTab=this.$.tabs.selectedSubView;let previouslySelectedTabFocused=false;let previouslySelectedDimension=undefined;if(previouslySelectedTab){previouslySelectedTabFocused=previouslySelectedTab.isFocused;previouslySelectedDimension=previouslySelectedTab.dimension;}
-for(const tab of this.$.tabs.tabs){tab.nodes=undefined;}
-this.$.tabs.clearSubViews();if(this.displayedNode_===undefined){this.$.tabs.label='No heap node provided.';return;}
-for(const[dimension,children]of this.displayedNode_.childNodes){if(!this.dimensionToTab_.has(dimension)){this.dimensionToTab_.set(dimension,document.createElement('tr-ui-a-memory-dump-heap-details-breakdown-view-tab'));}
-const tab=this.dimensionToTab_.get(dimension);tab.aggregationMode=this.aggregationMode_;tab.dimension=dimension;tab.nodes=children;this.$.tabs.addSubView(tab);tab.rebuild();if(dimension===previouslySelectedDimension){this.$.tabs.selectedSubView=tab;if(previouslySelectedTabFocused){tab.focus();}}}
-if(this.$.tabs.tabs.length>0){this.$.tabs.label='Break selected node further by:';}else{this.$.tabs.label='Selected node cannot be broken down any further.';}},onKeyDown_(keyEvent){if(!this.displayedNode_)return;let keyHandled=false;switch(keyEvent.keyCode){case 8:{if(!this.displayedNode_.parentNode)break;const viewEvent=new tr.b.Event('enter-node');viewEvent.node=this.displayedNode_.parentNode;this.dispatchEvent(viewEvent);keyHandled=true;break;}
-case 37:case 39:{const wasFocused=this.$.tabs.selectedSubView.isFocused;keyHandled=keyEvent.keyCode===37?this.$.tabs.selectPreviousTabIfPossible():this.$.tabs.selectNextTabIfPossible();if(wasFocused&&keyHandled){this.$.tabs.selectedSubView.focus();}}}
-if(!keyHandled)return;keyEvent.stopPropagation();keyEvent.preventDefault();}});Polymer({is:'tr-ui-a-memory-dump-heap-details-breakdown-view-tab',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.dimension_=undefined;this.nodes_=undefined;this.aggregationMode_=undefined;this.displayLongTail_=false;},ready(){this.$.table.addEventListener('step-into',function(tableEvent){const viewEvent=new tr.b.Event('enter-node');viewEvent.node=tableEvent.tableRow;this.dispatchEvent(viewEvent);}.bind(this));},get displayLongTail(){return this.displayLongTail_;},set displayLongTail(newValue){if(this.displayLongTail===newValue)return;this.displayLongTail_=newValue;this.scheduleRebuild_();},get dimension(){return this.dimension_;},set dimension(dimension){this.dimension_=dimension;this.scheduleRebuild_();},get nodes(){return this.nodes_;},set nodes(nodes){this.nodes_=nodes;this.scheduleRebuild_();},get nodes(){return this.nodes_||[];},get dimensionLabel_(){if(this.dimension_===undefined)return'(undefined)';return this.dimension_.label;},get tabLabel(){let nodeCount=0;if(this.nodes_){nodeCount=this.nodes_.length;}
-return this.dimensionLabel_+' ('+nodeCount+')';},get tabIcon(){if(this.dimension_===undefined||this.dimension_===tr.ui.analysis.HeapDetailsRowDimension.ROOT){return undefined;}
-return{text:this.dimension_.symbol,style:'color: '+tr.b.ColorScheme.getColorForReservedNameAsString(this.dimension_.color)+';'};},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},focus(){this.$.table.focus();},blur(){this.$.table.blur();},get isFocused(){return this.$.table.isFocused;},onRebuild_(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.emptyValue='Cannot break down by '+
-this.dimensionLabel_.toLowerCase()+' any further.';const[state,rows]=this.getRows_();const total=this.nodes.length;const displayed=rows.length;const hidden=total-displayed;this.updateInfoBar_(state,[total,displayed,hidden]);this.$.table.tableRows=rows;this.$.table.tableColumns=this.createColumns_(rows);if(this.$.table.sortColumnIndex===undefined){this.$.table.sortColumnIndex=0;this.$.table.sortDescending=false;}
-this.$.table.rebuild();},createColumns_(rows){const titleColumn=new tr.ui.analysis.HeapDetailsTitleColumn(this.dimensionLabel_);titleColumn.width='400px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'cells',aggregationMode:this.aggregationMode_,rules:tr.ui.analysis.HEAP_DETAILS_COLUMN_RULES,shouldSetContextGroup:true});if(numericColumns.length===0){numericColumns.push(new EmptyFillerColumn());}
-tr.ui.analysis.MemoryColumn.spaceEqually(numericColumns);const columns=[titleColumn].concat(numericColumns);return columns;},getRows_(){let rows=this.nodes;if(rows.length<=RESONABLE_NUMBER_OF_ROWS){return[TabUiState.NO_LONG_TAIL,rows];}else if(this.displayLongTail){return[TabUiState.SHOWING_LONG_TAIL,rows];}
-const absSize=row=>Math.max(row.cells.Size.fields[0].value);rows.sort((a,b)=>absSize(b)-absSize(a));rows=rows.slice(0,RESONABLE_NUMBER_OF_ROWS);return[TabUiState.HIDING_LONG_TAIL,rows];},updateInfoBar_(state,rowStats){if(state===TabUiState.SHOWING_LONG_TAIL){this.longTailVisibleInfoBar_(rowStats);}else if(state===TabUiState.HIDING_LONG_TAIL){this.longTailHiddenInfoBar_(rowStats);}else{this.hideInfoBar_();}},longTailVisibleInfoBar_(rowStats){const[total,visible,hidden]=rowStats;const couldHide=total-RESONABLE_NUMBER_OF_ROWS;this.$.info.message='Showing '+total+' rows. This may be slow.';this.$.info.removeAllButtons();const buttonText='Hide '+couldHide+' rows.';this.$.info.addButton(buttonText,()=>this.displayLongTail=false);this.$.info.visible=true;},longTailHiddenInfoBar_(rowStats){const[total,visible,hidden]=rowStats;this.$.info.message='Hiding the smallest '+hidden+' rows.';this.$.info.removeAllButtons();this.$.info.addButton('Show all.',()=>this.displayLongTail=true);this.$.info.visible=true;},hideInfoBar_(){this.$.info.visible=false;},});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS=String.fromCharCode(0x21B3);function HeapDetailsPathColumn(title){tr.ui.analysis.HeapDetailsTitleColumn.call(this,title);}
-HeapDetailsPathColumn.prototype={__proto__:tr.ui.analysis.HeapDetailsTitleColumn.prototype,formatTitle(row){const title=tr.ui.analysis.HeapDetailsTitleColumn.prototype.formatTitle.call(this,row);if(row.dimension===tr.ui.analysis.HeapDetailsRowDimension.ROOT){return title;}
-const arrowEl=document.createElement('span');Polymer.dom(arrowEl).textContent=DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS;arrowEl.style.paddingRight='2px';arrowEl.style.fontWeight='bold';arrowEl.style.color=tr.b.ColorScheme.getColorForReservedNameAsString('heap_dump_child_node_arrow');const rowEl=document.createElement('span');Polymer.dom(rowEl).appendChild(arrowEl);Polymer.dom(rowEl).appendChild(tr.ui.b.asHTMLOrTextNode(title));return rowEl;}};Polymer({is:'tr-ui-a-memory-dump-heap-details-path-view',behaviors:[tr.ui.analysis.RebuildableBehavior],created(){this.selectedNode_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.addEventListener('selection-changed',function(event){this.selectedNode_=this.$.table.selectedTableRow;this.didSelectedNodeChange_();}.bind(this));},didSelectedNodeChange_(){this.dispatchEvent(new tr.b.Event('selected-node-changed'));},get selectedNode(){return this.selectedNode_;},set selectedNode(node){this.selectedNode_=node;this.didSelectedNodeChange_();this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},onRebuild_(){if(this.selectedNode_===undefined){this.$.table.clear();return;}
-if(this.$.table.tableRows.includes(this.selectedNode_)){this.$.table.selectedTableRow=this.selectedNode_;return;}
-this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;this.$.table.userCanModifySortOrder=false;const rows=this.createRows_(this.selectedNode_);this.$.table.tableRows=rows;this.$.table.tableColumns=this.createColumns_(rows);this.$.table.selectedTableRow=rows[rows.length-1];},createRows_(node){const rows=[];while(node){rows.push(node);node=node.parentNode;}
-rows.reverse();return rows;},createColumns_(rows){const titleColumn=new HeapDetailsPathColumn('Current path');titleColumn.width='200px';const numericColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'cells',aggregationMode:this.aggregationMode_,rules:tr.ui.analysis.HEAP_DETAILS_COLUMN_RULES,shouldSetContextGroup:true});tr.ui.analysis.MemoryColumn.spaceEqually(numericColumns);return[titleColumn].concat(numericColumns);}});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const StackedPaneImpl={set childPaneBuilder(childPaneBuilder){this.childPaneBuilder_=childPaneBuilder;this.dispatchEvent(new tr.b.Event('request-child-pane-change'));},get childPaneBuilder(){return this.childPaneBuilder_;},appended(){this.rebuild();}};const StackedPane=[tr.ui.analysis.RebuildableBehavior,StackedPaneImpl];return{StackedPane,};});Polymer({is:'tr-ui-a-stacked-pane',behaviors:[tr.ui.analysis.StackedPane]});'use strict';Polymer({is:'tr-ui-b-drag-handle',created(){this.lastMousePos_=0;this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.addEventListener('mousedown',this.onMouseDown_);this.target_=undefined;this.horizontal=true;this.observer_=new MutationObserver(this.didTargetMutate_.bind(this));this.targetSizesByModeKey_={};this.currentDraggingSize_=undefined;},get modeKey_(){return this.target_.className===''?'.':this.target_.className;},get target(){return this.target_;},set target(target){this.observer_.disconnect();this.target_=target;if(!this.target_)return;this.observer_.observe(this.target_,{attributes:true,attributeFilter:['class']});},get horizontal(){return this.horizontal_;},set horizontal(h){this.horizontal_=h;if(this.horizontal_){this.className='horizontal-drag-handle';}else{this.className='vertical-drag-handle';}},get vertical(){return!this.horizontal_;},set vertical(v){this.horizontal=!v;},forceMutationObserverFlush_(){const records=this.observer_.takeRecords();if(records.length){this.didTargetMutate_(records);}},didTargetMutate_(e){const modeSize=this.targetSizesByModeKey_[this.modeKey_];if(modeSize!==undefined){this.setTargetSize_(modeSize);return;}
-this.target_.style[this.targetStyleKey_]='';},get targetStyleKey_(){return this.horizontal_?'height':'width';},getTargetSize_(){const size=parseInt(window.getComputedStyle(this.target_)[this.targetStyleKey_]);this.targetSizesByModeKey_[this.modeKey_]=size;return size;},setTargetSize_(s){this.target_.style[this.targetStyleKey_]=s+'px';this.targetSizesByModeKey_[this.modeKey_]=this.getTargetSize_();tr.b.dispatchSimpleEvent(this,'drag-handle-resize',true,false);},applyDelta_(delta){if(this.target_===this.nextElementSibling){this.currentDraggingSize_+=delta;}else{this.currentDraggingSize_-=delta;}
-this.setTargetSize_(this.currentDraggingSize_);},onMouseMove_(e){const curMousePos=this.horizontal_?e.clientY:e.clientX;const delta=this.lastMousePos_-curMousePos;this.applyDelta_(delta);this.lastMousePos_=curMousePos;e.preventDefault();return true;},onMouseDown_(e){if(!this.target_)return;this.forceMutationObserverFlush_();this.currentDraggingSize_=this.getTargetSize_();this.lastMousePos_=this.horizontal_?e.clientY:e.clientX;document.addEventListener('mousemove',this.onMouseMove_);document.addEventListener('mouseup',this.onMouseUp_);e.preventDefault();return true;},onMouseUp_(e){document.removeEventListener('mousemove',this.onMouseMove_);document.removeEventListener('mouseup',this.onMouseUp_);e.preventDefault();this.currentDraggingSize_=undefined;}});'use strict';tr.exportTo('tr.ui.analysis',function(){const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const count_smallerIsBetter=tr.b.Unit.byName.count_smallerIsBetter;const MultiDimensionalViewBuilder=tr.b.MultiDimensionalViewBuilder;const TotalState=tr.b.MultiDimensionalViewNode.TotalState;function HeapDumpTreeNode(stackFrameNodes,dimension,title,heavyView,parentNode){this.dimension=dimension;this.title=title;this.parentNode=parentNode;this.heavyView_=heavyView;this.stackFrameNodes_=stackFrameNodes;this.lazyCells_=undefined;this.lazyChildNodes_=undefined;}
-HeapDumpTreeNode.prototype={get minDisplayedTotalState_(){if(this.heavyView_){return TotalState.LOWER_BOUND;}
-return TotalState.EXACT;},get childNodes(){if(!this.lazyChildNodes_){this.lazyChildNodes_=new Map();this.addDimensionChildNodes_(tr.ui.analysis.HeapDetailsRowDimension.STACK_FRAME,0);this.addDimensionChildNodes_(tr.ui.analysis.HeapDetailsRowDimension.OBJECT_TYPE,1);this.releaseStackFrameNodesIfPossible_();}
-return this.lazyChildNodes_;},get cells(){if(!this.lazyCells_){this.addCells_();this.releaseStackFrameNodesIfPossible_();}
-return this.lazyCells_;},releaseStackFrameNodesIfPossible_(){if(this.lazyCells_&&this.lazyChildNodes_){this.stackFrameNodes_=undefined;}},addDimensionChildNodes_(dimension,dimensionIndex){const dimensionChildTitleToStackFrameNodes=tr.b.invertArrayOfDicts(this.stackFrameNodes_,node=>this.convertStackFrameNodeDimensionToChildDict_(node,dimensionIndex));const dimensionChildNodes=[];for(const[childTitle,childStackFrameNodes]of
-Object.entries(dimensionChildTitleToStackFrameNodes)){dimensionChildNodes.push(new HeapDumpTreeNode(childStackFrameNodes,dimension,childTitle,this.heavyView_,this));}
-this.lazyChildNodes_.set(dimension,dimensionChildNodes);},convertStackFrameNodeDimensionToChildDict_(stackFrameNode,dimensionIndex){const childDict={};let displayedChildrenTotalSize=0;let displayedChildrenTotalCount=0;let hasDisplayedChildren=false;let allDisplayedChildrenHaveDisplayedCounts=true;for(const child of stackFrameNode.children[dimensionIndex].values()){if(child.values[0].totalState';const otherNode=new tr.b.MultiDimensionalViewNode(otherTitle,2);childDict[otherTitle[dimensionIndex]]=otherNode;otherNode.values[0].total=nodeTotalSize-displayedChildrenTotalSize;otherNode.values[0].totalState=this.minDisplayedTotalState_;otherNode.values[1].total=nodeTotalCount-displayedChildrenTotalCount;otherNode.values[1].totalState=allDisplayedChildrenHaveDisplayedCounts?this.minDisplayedTotalState_:TotalState.NOT_PROVIDED;}
-return childDict;},addCells_(){this.lazyCells_=tr.ui.analysis.createCells(this.stackFrameNodes_,function(stackFrameNode){const size=stackFrameNode.values[0].total;const numerics={'Size':new Scalar(sizeInBytes_smallerIsBetter,size)};const countValue=stackFrameNode.values[1];if(countValue.totalState>=this.minDisplayedTotalState_){const count=countValue.total;numerics.Count=new Scalar(count_smallerIsBetter,count);}
-return numerics;},this);}};Polymer({is:'tr-ui-a-memory-dump-heap-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.heapDumps_=undefined;this.viewMode_=undefined;this.aggregationMode_=undefined;this.cachedBuilders_=new Map();},ready(){this.$.info_bar.message='Note: Values displayed in the heavy view '+'are lower bounds (except for the root).';Polymer.dom(this.$.view_mode_container).appendChild(tr.ui.b.createSelector(this,'viewMode','memoryDumpHeapDetailsPane.viewMode',MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW,[{label:'Top-down (Tree)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW},{label:'Top-down (Heavy)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW},{label:'Bottom-up (Heavy)',value:MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW}]));this.$.drag_handle.target=this.$.path_view;this.$.drag_handle.horizontal=false;this.$.path_view.addEventListener('selected-node-changed',(function(e){this.$.breakdown_view.displayedNode=this.$.path_view.selectedNode;}).bind(this));this.$.breakdown_view.addEventListener('enter-node',(function(e){this.$.path_view.selectedNode=e.node;}).bind(this));},set heapDumps(heapDumps){this.heapDumps_=heapDumps;this.scheduleRebuild_();},get heapDumps(){return this.heapDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.$.path_view.aggregationMode=aggregationMode;this.$.breakdown_view.aggregationMode=aggregationMode;},get aggregationMode(){return this.aggregationMode_;},set viewMode(viewMode){this.viewMode_=viewMode;this.scheduleRebuild_();},get viewMode(){return this.viewMode_;},get heavyView(){switch(this.viewMode){case MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW:case MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW:return true;default:return false;}},onRebuild_(){if(this.heapDumps_===undefined||this.heapDumps_.length===0){this.$.info_text.style.display='block';this.$.split_view.style.display='none';this.$.view_mode_container.style.display='none';this.$.info_bar.hidden=true;this.$.path_view.selectedNode=undefined;return;}
-this.$.info_text.style.display='none';this.$.split_view.style.display='flex';this.$.view_mode_container.style.display='block';this.$.info_bar.hidden=!this.heavyView;this.$.path_view.selectedNode=this.createHeapTree_();this.$.path_view.rebuild();this.$.breakdown_view.rebuild();},createHeapTree_(){const definedHeapDump=this.heapDumps_.find(x=>x);if(definedHeapDump===undefined)return undefined;const rootRowTitle=definedHeapDump.allocatorName;const stackFrameTrees=this.createStackFrameTrees_(this.heapDumps_);return new HeapDumpTreeNode(stackFrameTrees,tr.ui.analysis.HeapDetailsRowDimension.ROOT,rootRowTitle,this.heavyView);},createStackFrameTrees_(heapDumps){const builders=heapDumps.map(heapDump=>this.createBuilder_(heapDump));const views=builders.map(builder=>{if(builder===undefined)return undefined;return builder.buildView(this.viewMode);});return views;},createBuilder_(heapDump){if(heapDump===undefined)return undefined;if(this.cachedBuilders_.has(heapDump)){return this.cachedBuilders_.get(heapDump);}
-const dimensions=2;const valueCount=2;const builder=new MultiDimensionalViewBuilder(dimensions,valueCount);for(const entry of heapDump.entries){const leafStackFrame=entry.leafStackFrame;const stackTracePath=leafStackFrame===undefined?[]:leafStackFrame.getUserFriendlyStackTrace().reverse();const objectTypeName=entry.objectTypeName;const objectTypeNamePath=objectTypeName===undefined?[]:[objectTypeName];const valueKind=entry.valuesAreTotals?MultiDimensionalViewBuilder.ValueKind.TOTAL:MultiDimensionalViewBuilder.ValueKind.SELF;builder.addPath([stackTracePath,objectTypeNamePath],[entry.size,entry.count],valueKind);}
-builder.complete=heapDump.isComplete;this.cachedBuilders_.set(heapDump,builder);return builder;},});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const URL_TO_SIZE_VS_EFFECTIVE_SIZE='https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/README.md#effective_size-vs_size';const SUBALLOCATION_CONTEXT=true;const MemoryAllocatorDumpInfoType=tr.model.MemoryAllocatorDumpInfoType;const PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_AGGREGATED_CHILDREN;const PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER=MemoryAllocatorDumpInfoType.PROVIDED_SIZE_LESS_THAN_LARGEST_OWNER;const LEFTWARDS_OPEN_HEADED_ARROW=String.fromCharCode(0x21FD);const RIGHTWARDS_OPEN_HEADED_ARROW=String.fromCharCode(0x21FE);const EN_DASH=String.fromCharCode(0x2013);const CIRCLED_LATIN_SMALL_LETTER_I=String.fromCharCode(0x24D8);function AllocatorDumpNameColumn(){tr.ui.analysis.TitleColumn.call(this,'Component');}
-AllocatorDumpNameColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(!row.suballocation){return row.title;}
-return tr.ui.b.createSpan({textContent:row.title,italic:true,tooltip:row.fullNames===undefined?undefined:row.fullNames.join(', ')});}};function getAndUpdateEntry(map,name,createdCallback){let entry=map.get(name);if(entry===undefined){entry={count:0};createdCallback(entry);map.set(name,entry);}
-entry.count++;return entry;}
-function SizeInfoMessageBuilder(){this.parts_=[];this.indent_=0;}
-SizeInfoMessageBuilder.prototype={append(){this.parts_.push.apply(this.parts_,Array.prototype.slice.apply(arguments));},appendMap(map,hasPluralSuffix,emptyText,itemCallback,opt_this){opt_this=opt_this||this;if(map.size===0){if(emptyText){this.append(emptyText);}}else if(map.size===1){this.parts_.push(' ');const key=map.keys().next().value;itemCallback.call(opt_this,key,map.get(key));}else{if(hasPluralSuffix){this.parts_.push('s');}
-this.parts_.push(':');this.indent_++;for(const key of map.keys()){this.parts_.push('\n',' '.repeat(3*(this.indent_-1)),' - ');itemCallback.call(opt_this,key,map.get(key));}
-this.indent_--;}},appendImportanceRange(range){this.append(' (importance: ');if(range.min===range.max){this.append(range.min);}else{this.append(range.min,EN_DASH,range.max);}
-this.append(')');},appendSizeIfDefined(size){if(size!==undefined){this.append(' (',tr.b.Unit.byName.sizeInBytes.format(size),')');}},appendSomeTimestampsQuantifier(){this.append(' ',tr.ui.analysis.MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER);},build(){return this.parts_.join('');}};function EffectiveSizeColumn(name,cellPath,aggregationMode){tr.ui.analysis.DetailsNumericMemoryColumn.call(this,name,cellPath,aggregationMode);}
-EffectiveSizeColumn.prototype={__proto__:tr.ui.analysis.DetailsNumericMemoryColumn.prototype,get title(){return tr.ui.b.createLink({textContent:this.name,tooltip:'Memory used by this component',href:URL_TO_SIZE_VS_EFFECTIVE_SIZE});},addInfos(numerics,memoryAllocatorDumps,infos){if(memoryAllocatorDumps===undefined)return;const ownerNameToEntry=new Map();const ownedNameToEntry=new Map();for(let i=0;i0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('shared by');messageBuilder.appendMap(ownerNameToEntry,false,undefined,function(ownerName,ownerEntry){messageBuilder.append(ownerName);if(ownerEntry.count0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('shares');messageBuilder.appendMap(ownedNameToEntry,false,undefined,function(ownedName,ownedEntry){messageBuilder.append(ownedName);const ownedCount=ownedEntry.count;if(ownedCount0){const messageBuilder=new SizeInfoMessageBuilder();messageBuilder.append('overlaps with its sibling');messageBuilder.appendMap(siblingNameToEntry,true,undefined,function(siblingName,siblingEntry){messageBuilder.append('\'',siblingName,'\'');messageBuilder.appendSizeIfDefined(siblingEntry.size);if(siblingEntry.countx);const title=definedDump.name;const fullName=definedDump.fullName;const numericCells=tr.ui.analysis.createCells(dumps,function(dump){return dump.numerics;});const diagnosticCells=tr.ui.analysis.createCells(dumps,function(dump){return dump.diagnostics;});let suballocatedBy=undefined;if(title.startsWith('__')){for(let i=0;i1||dump.children.length>0||ownerDump.containerMemoryDump!==dump.containerMemoryDump){suballocatedBy=undefined;break;}
-if(suballocatedBy===undefined){suballocatedBy=ownerDump.fullName;}else if(suballocatedBy!==ownerDump.fullName){suballocatedBy=undefined;break;}}}
-const row={title,fullNames:[fullName],contexts:dumps,numericCells,diagnosticCells,suballocatedBy};const childDumpNameToDumps=tr.b.invertArrayOfDicts(dumps,function(dump){const results={};for(const child of dump.children){results[child.name]=child;}
-return results;});const subRows=[];let suballocationClassificationRootNode=undefined;for(const childDumps of Object.values(childDumpNameToDumps)){const childRow=this.createAllocatorRowRecursively_(childDumps);if(childRow.suballocatedBy===undefined){subRows.push(childRow);}else{suballocationClassificationRootNode=this.classifySuballocationRow_(childRow,suballocationClassificationRootNode);}}
-if(suballocationClassificationRootNode!==undefined){const suballocationRow=this.createSuballocationRowRecursively_('suballocations',suballocationClassificationRootNode);subRows.push(suballocationRow);}
-if(subRows.length>0){row.subRows=subRows;}
-return row;},classifySuballocationRow_(suballocationRow,rootNode){if(rootNode===undefined){rootNode={children:{},row:undefined};}
-const suballocationLevels=suballocationRow.suballocatedBy.split('/');let currentNode=rootNode;for(let i=0;i';row.suballocation=true;subRows.unshift(row);}
-const contexts=new Array(subRows[0].contexts.length);for(let i=0;i0;});}
-Polymer({is:'tr-ui-a-memory-dump-vm-regions-details-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.vmRegions_=undefined;this.aggregationMode_=undefined;},ready(){this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},set vmRegions(vmRegions){this.vmRegions_=vmRegions;this.scheduleRebuild_();},get vmRegions(){return this.vmRegions_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){if(this.vmRegions_===undefined||this.vmRegions_.length===0){this.$.info_text.style.display='block';this.$.table.style.display='none';this.$.table.clear();this.$.table.rebuild();return;}
-this.$.info_text.style.display='none';this.$.table.style.display='block';const rows=this.createRows_(this.vmRegions_);const columns=this.createColumns_(rows);this.$.table.tableRows=rows;this.$.table.tableColumns=columns;this.$.table.rebuild();tr.ui.analysis.expandTableRowsRecursively(this.$.table);},createRows_(timeToVmRegionTree){const is64BitAddress=timeToVmRegionTree.some(function(vmRegionTree){if(vmRegionTree===undefined)return false;return vmRegionTree.someRegion(function(region){if(region.startAddress===undefined)return false;return region.startAddress>=4294967296;});});return[this.createClassificationNodeRow(timeToVmRegionTree,is64BitAddress)];},createClassificationNodeRow(timeToNode,is64BitAddress){const definedNode=timeToNode.find(x=>x);const childNodeIdToTimeToNode=Object.values(tr.b.invertArrayOfDicts(timeToNode,function(node){const children=node.children;if(children===undefined)return undefined;const childMap={};children.forEach(function(childNode){if(!childNode.hasRegions)return;childMap[childNode.title]=childNode;});return childMap;}));const childNodeSubRows=childNodeIdToTimeToNode.map(function(timeToChildNode){return this.createClassificationNodeRow(timeToChildNode,is64BitAddress);},this);const regionIdToTimeToRegion=Object.values(tr.b.invertArrayOfDicts(timeToNode,function(node){const regions=node.regions;if(regions===undefined)return undefined;const results={};for(const region of regions){results[region.uniqueIdWithinProcess]=region;}
-return results;}));const regionSubRows=regionIdToTimeToRegion.map(function(timeToRegion){return this.createRegionRow_(timeToRegion,is64BitAddress);},this);const subRows=childNodeSubRows.concat(regionSubRows);return{title:definedNode.title,contexts:timeToNode,variableCells:this.createVariableCells_(timeToNode),subRows};},createRegionRow_(timeToRegion,is64BitAddress){const definedRegion=timeToRegion.find(x=>x);return{title:definedRegion.mappedFile,contexts:timeToRegion,constantCells:this.createConstantCells_(definedRegion,is64BitAddress),variableCells:this.createVariableCells_(timeToRegion)};},createConstantCells_(definedRegion,is64BitAddress){return tr.ui.analysis.createCells([definedRegion],function(region){const startAddress=region.startAddress;if(startAddress===undefined)return undefined;return{'Start address':hexString(startAddress,is64BitAddress)};});},createVariableCells_(timeToRegion){return tr.ui.analysis.createCells(timeToRegion,function(region){const fields={};const sizeInBytes=region.sizeInBytes;if(sizeInBytes!==undefined){fields['Virtual size']=new Scalar(sizeInBytes_smallerIsBetter,sizeInBytes);}
-const protectionFlags=region.protectionFlagsToString;if(protectionFlags!==undefined){fields['Protection flags']=protectionFlags;}
-for(const[byteStatName,columnName]of
-Object.entries(BYTE_STAT_COLUMN_MAP)){const byteStat=region.byteStats[byteStatName];if(byteStat===undefined)continue;fields[columnName]=new Scalar(sizeInBytes_smallerIsBetter,byteStat);}
-return fields;});},createColumns_(rows){const titleColumn=new tr.ui.analysis.TitleColumn('Mapped file');titleColumn.width='200px';const constantColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'constantCells',aggregationMode:undefined,rules:CONSTANT_COLUMN_RULES});const variableColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'variableCells',aggregationMode:this.aggregationMode_,rules:VARIABLE_COLUMN_RULES});const fieldColumns=constantColumns.concat(variableColumns);tr.ui.analysis.MemoryColumn.spaceEqually(fieldColumns);const columns=[titleColumn].concat(fieldColumns);return columns;}});return{};});'use strict';Polymer({is:'tr-ui-b-color-legend',ready(){const blackSquareCharCode=9632;this.$.square.innerText=String.fromCharCode(blackSquareCharCode);this.label_=undefined;this.compoundEventSelectionState_=tr.model.CompoundEventSelectionState.NOT_SELECTED;},set compoundEventSelectionState(compoundEventSelectionState){this.compoundEventSelectionState_=compoundEventSelectionState;},get label(){return this.label_;},set label(label){if(label===undefined){this.setLabelAndColorId(undefined,undefined);return;}
-const colorId=tr.b.ColorScheme.getColorIdForGeneralPurposeString(label);this.setLabelAndColorId(label,colorId);},setLabelAndColorId(label,colorId){this.label_=label;Polymer.dom(this.$.label).textContent='';Polymer.dom(this.$.label).appendChild(tr.ui.b.asHTMLOrTextNode(label));if(colorId===undefined){this.$.square.style.color='initial';}else{this.$.square.style.color=tr.b.ColorScheme.colorsAsStrings[colorId];}}});'use strict';Polymer({is:'tr-ui-b-view-specific-brushing-state',get viewId(){return this.getAttribute('view-id');},set viewId(viewId){Polymer.dom(this).setAttribute('view-id',viewId);},get(){const viewId=this.viewId;if(!viewId){throw new Error('Element must have a view-id attribute!');}
-const brushingStateController=tr.c.BrushingStateController.getControllerForElement(this);if(!brushingStateController)return undefined;return brushingStateController.getViewSpecificBrushingState(viewId);},set(state){const viewId=this.viewId;if(!viewId){throw new Error('Element must have a view-id attribute!');}
-const brushingStateController=tr.c.BrushingStateController.getControllerForElement(this);if(!brushingStateController)return;brushingStateController.changeViewSpecificBrushingState(viewId,state);}});'use strict';tr.exportTo('tr.ui.analysis',function(){const MemoryColumnColorScheme=tr.b.MemoryColumnColorScheme;const Scalar=tr.b.Scalar;const sizeInBytes_smallerIsBetter=tr.b.Unit.byName.sizeInBytes_smallerIsBetter;const PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX='_bytes';const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const SOME_TIMESTAMPS_INFO_QUANTIFIER=tr.ui.analysis.MemoryColumn.SOME_TIMESTAMPS_INFO_QUANTIFIER;const RIGHTWARDS_ARROW_WITH_HOOK=String.fromCharCode(0x21AA);const RIGHTWARDS_ARROW_FROM_BAR=String.fromCharCode(0x21A6);const GREATER_THAN_OR_EQUAL_TO=String.fromCharCode(0x2265);const UNMARRIED_PARTNERSHIP_SYMBOL=String.fromCharCode(0x26AF);const TRIGRAM_FOR_HEAVEN=String.fromCharCode(0x2630);function lazyMap(list,fn,opt_this){opt_this=opt_this||this;let result=undefined;list.forEach(function(item,index){const value=fn.call(opt_this,item,index);if(value===undefined)return;if(result===undefined){result=new Array(list.length);}
-result[index]=value;});return result;}
-function ProcessNameColumn(){tr.ui.analysis.TitleColumn.call(this,'Process');}
-ProcessNameColumn.prototype={__proto__:tr.ui.analysis.TitleColumn.prototype,formatTitle(row){if(row.contexts===undefined){return row.title;}
-const titleEl=document.createElement('tr-ui-b-color-legend');titleEl.label=row.title;return titleEl;}};function UsedMemoryColumn(name,cellPath,aggregationMode){tr.ui.analysis.NumericMemoryColumn.call(this,name,cellPath,aggregationMode);}
-UsedMemoryColumn.COLOR=MemoryColumnColorScheme.getColor('used_memory_column').toString();UsedMemoryColumn.OLDER_COLOR=MemoryColumnColorScheme.getColor('older_used_memory_column').toString();UsedMemoryColumn.prototype={__proto__:tr.ui.analysis.NumericMemoryColumn.prototype,get title(){return tr.ui.b.createSpan({textContent:this.name,color:UsedMemoryColumn.COLOR});},getFormattingContext(unit){return{unitPrefix:tr.b.UnitPrefixScale.BINARY.MEBI};},color(numerics,processMemoryDumps){return UsedMemoryColumn.COLOR;},getChildPaneBuilder(processMemoryDumps){if(processMemoryDumps===undefined)return undefined;const vmRegions=lazyMap(processMemoryDumps,function(pmd){if(pmd===undefined)return undefined;return pmd.mostRecentVmRegions;});if(vmRegions===undefined)return undefined;return function(){const pane=document.createElement('tr-ui-a-memory-dump-vm-regions-details-pane');pane.vmRegions=vmRegions;pane.aggregationMode=this.aggregationMode;return pane;}.bind(this);}};function PeakMemoryColumn(name,cellPath,aggregationMode){UsedMemoryColumn.call(this,name,cellPath,aggregationMode);}
-PeakMemoryColumn.prototype={__proto__:UsedMemoryColumn.prototype,addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let resettableValueCount=0;let nonResettableValueCount=0;for(let i=0;i0&&nonResettableValueCount>0){infos.push(tr.ui.analysis.createWarningInfo('Both resettable and '+'non-resettable peak RSS values were provided by the process'));}else if(resettableValueCount>0){infos.push({icon:RIGHTWARDS_ARROW_WITH_HOOK,message:'Peak RSS since previous memory dump.'});}else{infos.push({icon:RIGHTWARDS_ARROW_FROM_BAR,message:'Peak RSS since process startup. Finer grained '+'peaks require a Linux kernel version '+
-GREATER_THAN_OR_EQUAL_TO+' 4.0.'});}}};function ByteStatColumn(name,cellPath,aggregationMode){UsedMemoryColumn.call(this,name,cellPath,aggregationMode);}
-ByteStatColumn.prototype={__proto__:UsedMemoryColumn.prototype,color(numerics,processMemoryDumps){if(processMemoryDumps===undefined){return UsedMemoryColumn.COLOR;}
-const allOlderValues=processMemoryDumps.every(function(processMemoryDump){if(processMemoryDump===undefined)return true;return!processMemoryDump.hasOwnVmRegions;});if(allOlderValues){return UsedMemoryColumn.OLDER_COLOR;}
-return UsedMemoryColumn.COLOR;},addInfos(numerics,processMemoryDumps,infos){if(processMemoryDumps===undefined)return;let olderValueCount=0;for(let i=0;i0){const infoQuantifier=heapDumpCount0){const infoQuantifier=missingSizeCountx).process;const usedMemoryCells=tr.ui.analysis.createCells(timeToDump,function(dump){const sizes={};const totals=dump.totals;if(totals!==undefined){for(const[totalName,cellName]of
-Object.entries(UsedMemoryColumn.TOTALS_MAP)){const total=totals[totalName];if(total===undefined)continue;sizes[cellName]=new Scalar(sizeInBytes_smallerIsBetter,total);}
-const platformSpecific=totals.platformSpecific;if(platformSpecific!==undefined){for(const[name,size]of Object.entries(platformSpecific)){let newName=name;if(UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP[name]===undefined){if(name.endsWith(PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX)){newName=name.substring(0,name.length-
-PLATFORM_SPECIFIC_TOTAL_NAME_SUFFIX.length);}
-newName=newName.replace('_',' ').trim();newName=newName.charAt(0).toUpperCase()+newName.slice(1);}else{newName=UsedMemoryColumn.PLATFORM_SPECIFIC_TOTALS_MAP[name];}
-sizes[newName]=new Scalar(sizeInBytes_smallerIsBetter,size);}}}
-const vmRegions=dump.mostRecentVmRegions;if(vmRegions!==undefined){for(const[byteStatName,cellName]of
-Object.entries(UsedMemoryColumn.BYTE_STAT_MAP)){const byteStat=vmRegions.byteStats[byteStatName];if(byteStat===undefined)continue;sizes[cellName]=new Scalar(sizeInBytes_smallerIsBetter,byteStat);}}
-return sizes;});const allocatorCells=tr.ui.analysis.createCells(timeToDump,function(dump){const memoryAllocatorDumps=dump.memoryAllocatorDumps;if(memoryAllocatorDumps===undefined)return undefined;const sizes={};memoryAllocatorDumps.forEach(function(allocatorDump){let rootDisplayedSizeNumeric=allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];if(rootDisplayedSizeNumeric===undefined){rootDisplayedSizeNumeric=new Scalar(sizeInBytes_smallerIsBetter,0);}
-sizes[allocatorDump.fullName]=rootDisplayedSizeNumeric;});return sizes;});rows.push({title:process.userFriendlyName,contexts:timeToDump,usedMemoryCells,allocatorCells});}
-return rows;},createFooterRows_(rows,columns){if(rows.length<=1)return[];const totalRow={title:'Total'};tr.ui.analysis.aggregateTableRowCells(totalRow,rows,columns);return[totalRow];},createColumns_(rows){const titleColumn=new ProcessNameColumn();titleColumn.width='200px';const usedMemorySizeColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'usedMemoryCells',aggregationMode:this.aggregationMode_,rules:UsedMemoryColumn.RULES});const allocatorSizeColumns=tr.ui.analysis.MemoryColumn.fromRows(rows,{cellKey:'allocatorCells',aggregationMode:this.aggregationMode_,rules:AllocatorColumn.RULES});const sizeColumns=usedMemorySizeColumns.concat(allocatorSizeColumns);tr.ui.analysis.MemoryColumn.spaceEqually(sizeColumns);const columns=[titleColumn].concat(sizeColumns);return columns;},storeSelection_(){let selectedRowTitle;const selectedRow=this.$.table.selectedTableRow;if(selectedRow!==undefined){selectedRowTitle=selectedRow.title;}
-let selectedColumnName;const selectedColumnIndex=this.$.table.selectedColumnIndex;if(selectedColumnIndex!==undefined){const selectedColumn=this.$.table.tableColumns[selectedColumnIndex];selectedColumnName=selectedColumn.name;}
-this.$.state.set({rowTitle:selectedRowTitle,columnName:selectedColumnName});},restoreSelection_(){const settings=this.$.state.get();if(settings===undefined||settings.rowTitle===undefined||settings.columnName===undefined){return;}
-const selectedColumnIndex=this.$.table.tableColumns.findIndex(col=>col.name===settings.columnName);if(selectedColumnIndex===-1)return;const selectedRowTitle=settings.rowTitle;const selectedRow=this.$.table.tableRows.find(row=>row.title===selectedRowTitle);if(selectedRow===undefined)return;this.$.table.selectedTableRow=selectedRow;this.$.table.selectedColumnIndex=selectedColumnIndex;}});return{ProcessNameColumn,UsedMemoryColumn,PeakMemoryColumn,ByteStatColumn,AllocatorColumn,TracingColumn,};});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-memory-dump-header-pane',behaviors:[tr.ui.analysis.StackedPane],created(){this.containerMemoryDumps_=undefined;},ready(){Polymer.dom(this.$.aggregation_mode_container).appendChild(tr.ui.b.createSelector(this,'aggregationMode','memoryDumpHeaderPane.aggregationMode',tr.ui.analysis.MemoryColumn.AggregationMode.DIFF,[{label:'Diff',value:tr.ui.analysis.MemoryColumn.AggregationMode.DIFF},{label:'Max',value:tr.ui.analysis.MemoryColumn.AggregationMode.MAX}]));},set containerMemoryDumps(containerMemoryDumps){this.containerMemoryDumps_=containerMemoryDumps;this.scheduleRebuild_();},get containerMemoryDumps(){return this.containerMemoryDumps_;},set aggregationMode(aggregationMode){this.aggregationMode_=aggregationMode;this.scheduleRebuild_();},get aggregationMode(){return this.aggregationMode_;},onRebuild_(){this.updateLabel_();this.updateAggregationModeSelector_();this.changeChildPane_();},updateLabel_(){Polymer.dom(this.$.label).textContent='';if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=0){Polymer.dom(this.$.label).textContent='No memory dumps selected';return;}
-const containerDumpCount=this.containerMemoryDumps_.length;const isMultiSelection=containerDumpCount>1;Polymer.dom(this.$.label).appendChild(document.createTextNode('Selected '+containerDumpCount+' memory dump'+
-(isMultiSelection?'s':'')+' in '+this.containerMemoryDumps_[0].containerName+' at '));Polymer.dom(this.$.label).appendChild(document.createTextNode(tr.b.Unit.byName.timeStampInMs.format(this.containerMemoryDumps_[0].start)));if(isMultiSelection){const ELLIPSIS=String.fromCharCode(8230);Polymer.dom(this.$.label).appendChild(document.createTextNode(ELLIPSIS));Polymer.dom(this.$.label).appendChild(document.createTextNode(tr.b.Unit.byName.timeStampInMs.format(this.containerMemoryDumps_[containerDumpCount-1].start)));}},updateAggregationModeSelector_(){let displayStyle;if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=1){displayStyle='none';}else{displayStyle='initial';}
-this.$.aggregation_mode_container.style.display=displayStyle;},changeChildPane_(){this.childPaneBuilder=function(){if(this.containerMemoryDumps_===undefined||this.containerMemoryDumps_.length<=0){return undefined;}
-const overviewPane=document.createElement('tr-ui-a-memory-dump-overview-pane');overviewPane.processMemoryDumps=this.containerMemoryDumps_.map(function(containerDump){return containerDump.processMemoryDumps;});overviewPane.aggregationMode=this.aggregationMode;return overviewPane;}.bind(this);}});return{};});'use strict';Polymer({is:'tr-ui-a-stacked-pane-view',setPaneBuilder(paneBuilder,opt_parentPane){const paneContainer=this.$.pane_container;if(opt_parentPane){if(!(opt_parentPane instanceof HTMLElement)){throw new Error('Parent pane must be an HTML element');}
-if(opt_parentPane.parentElement!==paneContainer){throw new Error('Parent pane must be a child of the pane container');}}
-while(Polymer.dom(paneContainer).lastElementChild!==null&&Polymer.dom(paneContainer).lastElementChild!==opt_parentPane){const removedPane=Polymer.dom(this.$.pane_container).lastElementChild;const listener=this.listeners_.get(removedPane);if(listener===undefined){throw new Error('No listener associated with pane');}
-this.listeners_.delete(removedPane);removedPane.removeEventListener('request-child-pane-change',listener);Polymer.dom(paneContainer).removeChild(removedPane);}
-if(opt_parentPane&&opt_parentPane.parentElement!==paneContainer){throw new Error('Parent pane was removed from the pane container');}
-if(!paneBuilder)return;const pane=paneBuilder();if(!pane)return;if(!(pane instanceof HTMLElement)){throw new Error('Pane must be an HTML element');}
-const listener=function(event){this.setPaneBuilder(pane.childPaneBuilder,pane);}.bind(this);if(!this.listeners_){this.listeners_=new WeakMap();}
-this.listeners_.set(pane,listener);pane.addEventListener('request-child-pane-change',listener);Polymer.dom(paneContainer).appendChild(pane);pane.appended();},rebuild(){let currentPane=Polymer.dom(this.$.pane_container).firstElementChild;while(currentPane){currentPane.rebuild();currentPane=currentPane.nextElementSibling;}},get panesForTesting(){const panes=[];let currentChild=Polymer.dom(this.$.pane_container).firstElementChild;while(currentChild){panes.push(currentChild);currentChild=currentChild.nextElementSibling;}
-return panes;}});'use strict';tr.exportTo('tr.ui.analysis',function(){Polymer({is:'tr-ui-a-container-memory-dump-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],set selection(selection){if(selection===undefined){this.currentSelection_=undefined;this.dumpsByContainerName_=undefined;this.updateContents_();return;}
-selection.forEach(function(event){if(!(event instanceof tr.model.ContainerMemoryDump)){throw new Error('Memory dump sub-view only supports container memory dumps');}});this.currentSelection_=selection;this.dumpsByContainerName_=tr.b.groupIntoMap(this.currentSelection_.toArray(),dump=>dump.containerName);for(const dumps of this.dumpsByContainerName_.values()){dumps.sort((a,b)=>a.start-b.start);}
-this.updateContents_();},get selection(){return this.currentSelection_;},get requiresTallView(){return true;},updateContents_(){Polymer.dom(this.$.content).textContent='';if(this.dumpsByContainerName_===undefined)return;const containerNames=Array.from(this.dumpsByContainerName_.keys());if(containerNames.length===0)return;if(containerNames.length>1){this.buildViewForMultipleContainerNames_();}else{this.buildViewForSingleContainerName_();}},buildViewForSingleContainerName_(){const containerMemoryDumps=tr.b.getFirstElement(this.dumpsByContainerName_.values());const dumpView=unwrap(this.ownerDocument).createElement('tr-ui-a-stacked-pane-view');Polymer.dom(this.$.content).appendChild(dumpView);dumpView.setPaneBuilder(function(){const headerPane=document.createElement('tr-ui-a-memory-dump-header-pane');headerPane.containerMemoryDumps=containerMemoryDumps;return headerPane;});},buildViewForMultipleContainerNames_(){const ownerDocument=this.ownerDocument;const rows=[];for(const[containerName,dumps]of this.dumpsByContainerName_){rows.push({containerName,subRows:dumps,isExpanded:true,});}
-rows.sort(function(a,b){return a.containerName.localeCompare(b.containerName);});const columns=[{title:'Dump',value(row){if(row.subRows===undefined){return this.singleDumpValue_(row);}
-return this.groupedDumpValue_(row);},singleDumpValue_(row){const linkEl=unwrap(ownerDocument).createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet([row]));Polymer.dom(linkEl).appendChild(tr.v.ui.createScalarSpan(row.start,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument}));return linkEl;},groupedDumpValue_(row){const linkEl=unwrap(ownerDocument).createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(row.subRows));Polymer.dom(linkEl).appendChild(tr.ui.b.createSpan({ownerDocument,textContent:row.subRows.length+' memory dump'+
-(row.subRows.length===1?'':'s')+' in '}));Polymer.dom(linkEl).appendChild(tr.ui.b.createSpan({ownerDocument,textContent:row.containerName,bold:true}));return linkEl;}}];const table=unwrap(this.ownerDocument).createElement('tr-ui-b-table');table.tableColumns=columns;table.tableRows=rows;table.showHeader=false;table.rebuild();Polymer.dom(this.$.content).appendChild(table);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.GlobalMemoryDump,{multi:false,title:'Global Memory Dump',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.GlobalMemoryDump,{multi:true,title:'Global Memory Dumps',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.ProcessMemoryDump,{multi:false,title:'Process Memory Dump',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-container-memory-dump-sub-view',tr.model.ProcessMemoryDump,{multi:true,title:'Process Memory Dumps',});return{};});'use strict';(function(){const COUNTER_SAMPLE_TABLE_COLUMNS=[{title:'Counter',width:'150px',value(row){return row.counter;}},{title:'Series',width:'150px',value(row){return row.series;}},{title:'Time',width:'150px',value(row){return row.start;}},{title:'Value',width:'100%',value(row){return row.value;}}];Polymer({is:'tr-ui-a-counter-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;this.$.table.tableColumns=COUNTER_SAMPLE_TABLE_COLUMNS;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){this.$.table.tableRows=this.selection?this.getRows_(this.selection.toArray()):[];this.$.table.rebuild();},getRows_(samples){const samplesByCounter=tr.b.groupIntoMap(samples,sample=>sample.series.counter.guid);const rows=[];for(const counterSamples of samplesByCounter.values()){const samplesBySeries=tr.b.groupIntoMap(counterSamples,sample=>sample.series.guid);for(const seriesSamples of samplesBySeries.values()){const seriesRows=this.getRowsForSamples_(seriesSamples);seriesRows[0].counter=seriesSamples[0].series.counter.name;seriesRows[0].series=seriesSamples[0].series.name;if(seriesRows.length>1){seriesRows[0].subRows=seriesRows.slice(1);seriesRows[0].isExpanded=true;}
-rows.push(seriesRows[0]);}}
-return rows;},getRowsForSamples_(samples){return samples.map(function(sample){return{start:sample.timestamp,value:sample.value};});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-counter-sample-sub-view',tr.model.CounterSample,{multi:false,title:'Counter Sample',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-counter-sample-sub-view',tr.model.CounterSample,{multi:true,title:'Counter Samples',});})();'use strict';tr.exportTo('tr.ui.analysis',function(){function MultiEventSummary(title,events){this.title=title;this.duration_=undefined;this.selfTime_=undefined;this.events_=events;this.cpuTimesComputed_=false;this.cpuSelfTime_=undefined;this.cpuDuration_=undefined;this.maxDuration_=undefined;this.maxCpuDuration_=undefined;this.maxSelfTime_=undefined;this.maxCpuSelfTime_=undefined;this.untotallableArgs_=[];this.totalledArgs_=undefined;}
-MultiEventSummary.prototype={set title(title){if(title==='Totals'){this.totalsRow=true;}
-this.title_=title;},get title(){return this.title_;},get duration(){if(this.duration_===undefined){this.duration_=tr.b.math.Statistics.sum(this.events_,function(event){return event.duration;});}
-return this.duration_;},get cpuSelfTime(){this.computeCpuTimesIfNeeded_();return this.cpuSelfTime_;},get cpuDuration(){this.computeCpuTimesIfNeeded_();return this.cpuDuration_;},computeCpuTimesIfNeeded_(){if(this.cpuTimesComputed_)return;this.cpuTimesComputed_=true;let cpuSelfTime=0;let cpuDuration=0;let hasCpuData=false;for(const event of this.events_){if(event.cpuDuration!==undefined){cpuDuration+=event.cpuDuration;hasCpuData=true;}
-if(event.cpuSelfTime!==undefined){cpuSelfTime+=event.cpuSelfTime;hasCpuData=true;}}
-if(hasCpuData){this.cpuDuration_=cpuDuration;this.cpuSelfTime_=cpuSelfTime;}},get selfTime(){if(this.selfTime_===undefined){this.selfTime_=0;for(const event of this.events_){if(event.selfTime!==undefined){this.selfTime_+=event.selfTime;}}}
-return this.selfTime_;},get events(){return this.events_;},get numEvents(){return this.events_.length;},get numAlerts(){if(this.numAlerts_===undefined){this.numAlerts_=tr.b.math.Statistics.sum(this.events_,event=>event.associatedAlerts.length);}
-return this.numAlerts_;},get untotallableArgs(){this.updateArgsIfNeeded_();return this.untotallableArgs_;},get totalledArgs(){this.updateArgsIfNeeded_();return this.totalledArgs_;},get maxDuration(){if(this.maxDuration_===undefined){this.maxDuration_=tr.b.math.Statistics.max(this.events_,function(event){return event.duration;});}
-return this.maxDuration_;},get maxCpuDuration(){if(this.maxCpuDuration_===undefined){this.maxCpuDuration_=tr.b.math.Statistics.max(this.events_,function(event){return event.cpuDuration;});}
-return this.maxCpuDuration_;},get maxSelfTime(){if(this.maxSelfTime_===undefined){this.maxSelfTime_=tr.b.math.Statistics.max(this.events_,function(event){return event.selfTime;});}
-return this.maxSelfTime_;},get maxCpuSelfTime(){if(this.maxCpuSelfTime_===undefined){this.maxCpuSelfTime_=tr.b.math.Statistics.max(this.events_,function(event){return event.cpuSelfTime;});}
-return this.maxCpuSelfTime_;},updateArgsIfNeeded_(){if(this.totalledArgs_!==undefined)return;const untotallableArgs={};const totalledArgs={};for(const event of this.events_){for(const argName in event.args){const argVal=event.args[argName];const type=typeof argVal;if(type!=='number'){untotallableArgs[argName]=true;delete totalledArgs[argName];continue;}
-if(untotallableArgs[argName]){continue;}
-if(totalledArgs[argName]===undefined){totalledArgs[argName]=0;}
-totalledArgs[argName]+=argVal;}}
-this.untotallableArgs_=Object.keys(untotallableArgs);this.totalledArgs_=totalledArgs;}};return{MultiEventSummary,};});'use strict';Polymer({is:'tr-ui-a-multi-event-summary-table',ready(){this.showTotals_=false;this.eventsHaveDuration_=true;this.eventsHaveSubRows_=true;this.eventsByTitle_=undefined;},updateTableColumns_(rows,maxValues){let hasCpuData=false;let hasAlerts=false;rows.forEach(function(row){if(row.cpuDuration!==undefined){hasCpuData=true;}
-if(row.cpuSelfTime!==undefined){hasCpuData=true;}
-if(row.numAlerts){hasAlerts=true;}});const ownerDocument=this.ownerDocument;const columns=[];columns.push({title:'Name',value(row){if(row.title==='Totals')return'Totals';const container=document.createElement('div');const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(row.events);},row.title);container.appendChild(linkEl);if(tr.isExported('tr-ui-e-chrome-codesearch')){const link=document.createElement('tr-ui-e-chrome-codesearch');link.searchPhrase=row.title;container.appendChild(link);}
-return container;},width:'350px',cmp(rowA,rowB){return rowA.title.localeCompare(rowB.title);}});if(this.eventsHaveDuration_){columns.push({title:'Wall Duration',value(row){return tr.v.ui.createScalarSpan(row.duration,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.duration),ownerDocument,});},width:'',cmp(rowA,rowB){return rowA.duration-rowB.duration;}});}
-if(this.eventsHaveDuration_&&hasCpuData){columns.push({title:'CPU Duration',value(row){return tr.v.ui.createScalarSpan(row.cpuDuration,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.cpuDuration),ownerDocument,});},width:'',cmp(rowA,rowB){return rowA.cpuDuration-rowB.cpuDuration;}});}
-if(this.eventsHaveSubRows_&&this.eventsHaveDuration_){columns.push({title:'Self time',value(row){return tr.v.ui.createScalarSpan(row.selfTime,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.selfTime),ownerDocument,});},width:'',cmp(rowA,rowB){return rowA.selfTime-rowB.selfTime;}});}
-if(this.eventsHaveSubRows_&&this.eventsHaveDuration_&&hasCpuData){columns.push({title:'CPU Self Time',value(row){return tr.v.ui.createScalarSpan(row.cpuSelfTime,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.cpuSelfTime),ownerDocument,});},width:'',cmp(rowA,rowB){return rowA.cpuSelfTime-rowB.cpuSelfTime;}});}
-if(this.eventsHaveDuration_){columns.push({title:'Average '+(hasCpuData?'CPU':'Wall')+' Duration',value(row){const totalDuration=hasCpuData?row.cpuDuration:row.duration;return tr.v.ui.createScalarSpan(totalDuration/row.numEvents,{unit:tr.b.Unit.byName.timeDurationInMs,customContextRange:row.totalsRow?undefined:tr.b.math.Range.fromExplicitRange(0,maxValues.duration),ownerDocument,});},width:'',cmp(rowA,rowB){if(hasCpuData){return rowA.cpuDuration/rowA.numEvents-
-rowB.cpuDuration/rowB.numEvents;}
-return rowA.duration/rowA.numEvents-
-rowB.duration/rowB.numEvents;}});}
-columns.push({title:'Occurrences',value(row){return row.numEvents;},width:'',cmp(rowA,rowB){return rowA.numEvents-rowB.numEvents;}});let alertsColumnIndex;if(hasAlerts){columns.push({title:'Num Alerts',value(row){return row.numAlerts;},width:'',cmp(rowA,rowB){return rowA.numAlerts-rowB.numAlerts;}});alertsColumnIndex=columns.length-1;}
-let colWidthPercentage;if(columns.length===1){colWidthPercentage='100%';}else{colWidthPercentage=(100/(columns.length-1)).toFixed(3)+'%';}
-for(let i=1;i'});rows.push({title:'Selection extent',value:hasRange?tr.v.ui.createScalarSpan(selection.bounds.range,{unit:tr.b.Unit.byName.timeDurationInMs,ownerDocument:this.ownerDocument}):''});this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-b-radio-picker',created(){this.needsInit_=true;this.settingsKey_=undefined;this.isReady_=false;this.radioButtons_=undefined;this.selectedKey_=undefined;},ready(){this.isReady_=true;this.maybeInit_();this.maybeRenderRadioButtons_();},get vertical(){return this.getAttribute('vertical');},set vertical(vertical){if(vertical){this.setAttribute('vertical',true);}else{this.removeAttribute('vertical');}},get settingsKey(){return this.settingsKey_;},set settingsKey(settingsKey){if(!this.needsInit_){throw new Error('Already initialized.');}
-this.settingsKey_=settingsKey;this.maybeInit_();},maybeInit_(){if(!this.needsInit_)return;if(this.settingsKey_===undefined)return;this.needsInit_=false;this.select(tr.b.Settings.get(this.settingsKey_));},set items(items){this.radioButtons_={};items.forEach(function(e){if(e.key in this.radioButtons_){throw new Error(e.key+' already exists');}
-const radioButton=document.createElement('div');const input=document.createElement('input');const label=document.createElement('label');input.type='radio';input.id=e.label;input.addEventListener('click',function(){this.select(e.key);}.bind(this));Polymer.dom(label).innerHTML=e.label;label.htmlFor=e.label;label.style.display='inline';Polymer.dom(radioButton).appendChild(input);Polymer.dom(radioButton).appendChild(label);this.radioButtons_[e.key]=input;}.bind(this));this.maybeInit_();this.maybeRenderRadioButtons_();},maybeRenderRadioButtons_(){if(!this.isReady_)return;if(this.radioButtons_===undefined)return;for(const key in this.radioButtons_){Polymer.dom(this.$.container).appendChild(this.radioButtons_[key].parentElement);}
-if(this.selectedKey_!==undefined){this.select(this.selectedKey_);}},select(key){if(key===undefined||key===this.selectedKey_){return;}
-if(this.radioButtons_===undefined){this.selectedKey_=key;return;}
-if(!(key in this.radioButtons_)){throw new Error(key+' does not exists');}
-if(this.selectedKey_!==undefined){this.radioButtons_[this.selectedKey_].checked=false;}
-this.selectedKey_=key;tr.b.Settings.set(this.settingsKey_,this.selectedKey_);if(this.selectedKey_!==undefined){this.radioButtons_[this.selectedKey_].checked=true;}
-this.dispatchEvent(new tr.b.Event('change',false));},get selectedKey(){return this.selectedKey_;},});'use strict';Polymer({is:'tr-ui-b-chart-legend-key',ready(){this.$.checkbox.addEventListener('change',this.onCheckboxChange_.bind(this));},onCheckboxChange_(){tr.b.dispatchSimpleEvent(this,tr.ui.b.DataSeriesEnableChangeEventType,true,false,{key:Polymer.dom(this).textContent,enabled:this.enabled});},set textContent(t){Polymer.dom(this.$.label).textContent=t;Polymer.dom(this.$.link).textContent=t;this.updateContents_();},set width(w){w-=20;this.$.link.style.width=w+'px';this.$.label.style.width=w+'px';},get textContent(){return Polymer.dom(this.$.label).textContent;},set optional(optional){this.$.checkbox.style.visibility=optional?'visible':'hidden';},get optional(){return this.$.checkbox.style.visibility==='visible';},set enabled(enabled){this.$.checkbox.checked=enabled?'checked':'';},get enabled(){return this.$.checkbox.checked;},set color(c){this.$.label.style.color=c;this.$.link.color=c;},set target(target){this.$.link.setSelectionAndContent(target,Polymer.dom(this.$.label).textContent);this.updateContents_();},get target(){return this.$.link.selection;},set title(title){this.$.link.title=title;},updateContents_(){this.$.link.style.display=this.target?'':'none';this.$.label.style.display=this.target?'none':'';this.$.label.htmlFor=this.optional?'checkbox':'';}});'use strict';(function(window){window.define=function(x){window.d3=x;};window.define.amd=true;})(this);!function(){function n(n){return null!=n&&!isNaN(n)}function t(n){return n.length}function e(n){for(var t=1;n*t%1;)t*=10;return t}function r(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function u(){}function i(n){return aa+n in this}function o(n){return n=aa+n,n in this&&delete this[n]}function a(){var n=[];return this.forEach(function(t){n.push(t)}),n}function c(){var n=0;for(var t in this)t.charCodeAt(0)===ca&&++n;return n}function s(){for(var n in this)if(n.charCodeAt(0)===ca)return!1;return!0}function l(){}function f(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function h(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=sa.length;r>e;++e){var u=sa[e]+t;if(u in n)return u}}function g(){}function p(){}function v(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function D(n){return fa(n,ya),n}function P(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.substring(0,a));var s=Ma.get(n);return s&&(n=s,c=F),a?t?u:r:t?g:i}function H(n,t){return function(e){var r=Xo.event;Xo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Xo.event=r}}}function F(n,t){var e=H(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function O(){var n=".dragsuppress-"+ ++ba,t="click"+n,e=Xo.select(Go).on("touchmove"+n,d).on("dragstart"+n,d).on("selectstart"+n,d);if(_a){var r=Jo.style,u=r[_a];r[_a]="none"}return function(i){function o(){e.on(t,null)}e.on(n,null),_a&&(r[_a]=u),i&&(e.on(t,function(){d(),o()},!0),setTimeout(o,0))}}function Y(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>wa&&(Go.scrollX||Go.scrollY)){e=Xo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();wa=!(u.f||u.e),e.remove()}return wa?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function I(n){return n>0?1:0>n?-1:0}function Z(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function V(n){return n>1?0:-1>n?Sa:Math.acos(n)}function X(n){return n>1?Ea:-1>n?-Ea:Math.asin(n)}function $(n){return((n=Math.exp(n))-1/n)/2}function B(n){return((n=Math.exp(n))+1/n)/2}function W(n){return((n=Math.exp(2*n))-1)/(n+1)}function J(n){return(n=Math.sin(n/2))*n}function G(){}function K(n,t,e){return new Q(n,t,e)}function Q(n,t,e){this.h=n,this.s=t,this.l=e}function nt(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,gt(u(n+120),u(n),u(n-120))}function tt(n,t,e){return new et(n,t,e)}function et(n,t,e){this.h=n,this.c=t,this.l=e}function rt(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),ut(e,Math.cos(n*=Na)*t,Math.sin(n)*t)}function ut(n,t,e){return new it(n,t,e)}function it(n,t,e){this.l=n,this.a=t,this.b=e}function ot(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=ct(u)*Fa,r=ct(r)*Oa,i=ct(i)*Ya,gt(lt(3.2404542*u-1.5371385*r-.4985314*i),lt(-.969266*u+1.8760108*r+.041556*i),lt(.0556434*u-.2040259*r+1.0572252*i))}function at(n,t,e){return n>0?tt(Math.atan2(e,t)*La,Math.sqrt(t*t+e*e),n):tt(0/0,0/0,n)}function ct(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function st(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function lt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function ft(n){return gt(n>>16,255&n>>8,255&n)}function ht(n){return ft(n)+""}function gt(n,t,e){return new pt(n,t,e)}function pt(n,t,e){this.r=n,this.g=t,this.b=e}function vt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function dt(n,t,e){var r,u,i,o,a=0,c=0,s=0;if(u=/([a-z]+)\((.*)\)/i.exec(n))switch(i=u[2].split(","),u[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Mt(i[0]),Mt(i[1]),Mt(i[2]))}return(o=Va.get(n))?t(o.r,o.g,o.b):(null!=n&&"#"===n.charAt(0)&&(r=parseInt(n.substring(1),16),isNaN(r)||(4===n.length?(a=(3840&r)>>4,a=a>>4|a,c=240&r,c=c>>4|c,s=15&r,s=s<<4|s):7===n.length&&(a=(16711680&r)>>16,c=(65280&r)>>8,s=255&r))),t(a,c,s))}function mt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),K(r,u,c)}function yt(n,t,e){n=xt(n),t=xt(t),e=xt(e);var r=st((.4124564*n+.3575761*t+.1804375*e)/Fa),u=st((.2126729*n+.7151522*t+.072175*e)/Oa),i=st((.0193339*n+.119192*t+.9503041*e)/Ya);return ut(116*u-16,500*(r-u),200*(u-i))}function xt(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Mt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function _t(n){return"function"==typeof n?n:function(){return n}}function bt(n){return n}function wt(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),St(t,e,n,r)}}function St(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=Xo.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,s=null;return!Go.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=Xo.event;Xo.event=n;try{o.progress.call(i,c)}finally{Xo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(s=n,i):s},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Bo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var l in a)c.setRequestHeader(l,a[l]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=s&&(c.responseType=s),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},Xo.rebind(i,o,"on"),null==r?i:i.get(kt(r))}function kt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Et(){var n=At(),t=Ct()-n;t>24?(isFinite(t)&&(clearTimeout(Wa),Wa=setTimeout(Et,t)),Ba=0):(Ba=1,Ga(Et))}function At(){var n=Date.now();for(Ja=Xa;Ja;)n>=Ja.t&&(Ja.f=Ja.c(n-Ja.t)),Ja=Ja.n;return n}function Ct(){for(var n,t=Xa,e=1/0;t;)t.f?t=n?n.n=t.n:Xa=t.n:(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Tt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r?function(n){for(var t=n.length,u=[],i=0,o=r[0];t>0&&o>0;)u.push(n.substring(t-=o,t+o)),o=r[i=(i+1)%r.length];return u.reverse().join(e)}:bt;return function(n){var e=Qa.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"",c=e[4]||"",s=e[5],l=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1;switch(h&&(h=+h.substring(1)),(s||"0"===r&&"="===o)&&(s=r="0",o="=",f&&(l-=Math.floor((l-1)/4))),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=nc.get(g)||qt;var y=s&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):a;if(0>p){var c=Xo.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x=n.lastIndexOf("."),M=0>x?n:n.substring(0,x),_=0>x?"":t+n.substring(x+1);!s&&f&&(M=i(M));var b=v.length+M.length+_.length+(y?0:u.length),w=l>b?new Array(b=l-b+1).join(r):"";return y&&(M=i(w+M)),u+=v,n=M+_,("<"===o?u+n+w:">"===o?w+u+n:"^"===o?w.substring(0,b>>=1)+u+n+w.substring(b):u+(y?n:w+n))+e}}}function qt(n){return n+""}function zt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Rt(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new ec(e-1)),1),e}function i(n,e){return t(n=new ec(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{ec=zt;var r=new zt;return r._=n,o(r,t,e)}finally{ec=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Dt(n);return c.floor=c,c.round=Dt(r),c.ceil=Dt(u),c.offset=Dt(i),c.range=a,n}function Dt(n){return function(t,e){try{ec=zt;var r=new zt;return r._=t,n(r,e)._}finally{ec=Date}}}function Pt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++aa;){if(r>=s)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=N[o in uc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.substring(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){M.lastIndex=0;var r=M.exec(t.substring(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.substring(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.substring(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,C.c.toString(),t,r)}function c(n,t,r){return e(n,C.x.toString(),t,r)}function s(n,t,r){return e(n,C.X.toString(),t,r)}function l(n,t,e){var r=x.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{ec=zt;var t=new ec;return t._=n,r(t)}finally{ec=Date}}var r=t(n);return e.parse=function(n){try{ec=zt;var t=r.parse(n);return t&&t._}finally{ec=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ee;var x=Xo.map(),M=jt(v),_=Ht(v),b=jt(d),w=Ht(d),S=jt(m),k=Ht(m),E=jt(y),A=Ht(y);p.forEach(function(n,t){x.set(n.toLowerCase(),t)});var C={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Ut(n.getDate(),t,2)},e:function(n,t){return Ut(n.getDate(),t,2)},H:function(n,t){return Ut(n.getHours(),t,2)},I:function(n,t){return Ut(n.getHours()%12||12,t,2)},j:function(n,t){return Ut(1+tc.dayOfYear(n),t,3)},L:function(n,t){return Ut(n.getMilliseconds(),t,3)},m:function(n,t){return Ut(n.getMonth()+1,t,2)},M:function(n,t){return Ut(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Ut(n.getSeconds(),t,2)},U:function(n,t){return Ut(tc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Ut(tc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Ut(n.getFullYear()%100,t,2)},Y:function(n,t){return Ut(n.getFullYear()%1e4,t,4)},Z:ne,"%":function(){return"%"}},N={a:r,A:u,b:i,B:o,c:a,d:Bt,e:Bt,H:Jt,I:Jt,j:Wt,L:Qt,m:$t,M:Gt,p:l,S:Kt,U:Ot,w:Ft,W:Yt,x:c,X:s,y:Zt,Y:It,Z:Vt,"%":te};return t}function Ut(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function jt(n){return new RegExp("^(?:"+n.map(Xo.requote).join("|")+")","i")}function Ht(n){for(var t=new u,e=-1,r=n.length;++e68?1900:2e3)}function $t(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Bt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function Wt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function Jt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function Gt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function Kt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function Qt(n,t,e){ic.lastIndex=0;var r=ic.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ne(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(oa(t)/60),u=oa(t)%60;return e+Ut(r,"0",2)+Ut(u,"0",2)}function te(n,t,e){oc.lastIndex=0;var r=oc.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function ee(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,c=Math.cos(t),s=Math.sin(t),l=i*s,f=u*c+l*Math.cos(a),h=l*o*Math.sin(a);hc.add(Math.atan2(h,f)),r=n,u=c,i=s}var t,e,r,u,i;gc.point=function(o,a){gc.point=n,r=(t=o)*Na,u=Math.cos(a=(e=a)*Na/2+Sa/4),i=Math.sin(a)},gc.lineEnd=function(){n(t,e)}}function se(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function le(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function fe(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function he(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ge(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function pe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function ve(n){return[Math.atan2(n[1],n[0]),X(n[2])]}function de(n,t){return oa(n[0]-t[0])a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new ke(e,n,null,!0),s=new ke(e,null,c,!1);c.o=s,i.push(c),o.push(s),c=new ke(r,n,null,!1),s=new ke(r,null,c,!0),c.o=s,i.push(c),o.push(s)}}),o.sort(t),Se(i),Se(o),i.length){for(var a=0,c=e,s=o.length;s>a;++a)o[a].e=c=!c;for(var l,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;l=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,s=l.length;s>a;++a)u.point((f=l[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){l=g.p.z;for(var a=l.length-1;a>=0;--a)u.point((f=l[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,l=g.z,p=!p}while(!g.v);u.lineEnd()}}}function Se(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Ae))}}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:s,polygonStart:function(){y.point=l,y.lineStart=f,y.lineEnd=h,g=[],p=[],i.polygonStart()},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=s,g=Xo.merge(g);var n=Le(m,p);g.length?we(g,Ne,n,e,i):n&&(i.lineStart(),e(null,null,1,i),i.lineEnd()),i.polygonEnd(),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},x=Ce(),M=t(x);return y}}function Ae(n){return n.length>1}function Ce(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:g,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ne(n,t){return((n=n.x)[0]<0?n[1]-Ea-Aa:Ea-n[1])-((t=t.x)[0]<0?t[1]-Ea-Aa:Ea-t[1])}function Le(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;hc.reset();for(var a=0,c=t.length;c>a;++a){var s=t[a],l=s.length;if(l)for(var f=s[0],h=f[0],g=f[1]/2+Sa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===l&&(d=0),n=s[d];var m=n[0],y=n[1]/2+Sa/4,x=Math.sin(y),M=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>Sa,k=p*x;if(hc.add(Math.atan2(k*b*Math.sin(w),v*M+k*Math.cos(w))),i+=S?_+b*ka:_,S^h>=e^m>=e){var E=fe(se(f),se(n));pe(E);var A=fe(u,E);pe(A);var C=(S^_>=0?-1:1)*X(A[2]);(r>C||r===C&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!d++)break;h=m,p=x,v=M,f=n}}return(-Aa>i||Aa>i&&0>hc)^1&o}function Te(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Sa:-Sa,c=oa(i-e);oa(c-Sa)0?Ea:-Ea),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Sa&&(oa(e-u)Aa?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function ze(n,t,e,r){var u;if(null==n)u=e*Ea,r.point(-Sa,u),r.point(0,u),r.point(Sa,u),r.point(Sa,0),r.point(Sa,-u),r.point(0,-u),r.point(-Sa,-u),r.point(-Sa,0),r.point(-Sa,u);else if(oa(n[0]-t[0])>Aa){var i=n[0]i}function e(n){var e,i,c,s,l;return{lineStart:function(){s=c=!1,l=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Sa:-Sa),h):0;if(!e&&(s=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(de(e,g)||de(p,g))&&(p[0]+=Aa,p[1]+=Aa,v=t(p[0],p[1]))),v!==c)l=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(l=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&de(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return l|(s&&c)<<1}}}function r(n,t,e){var r=se(n),u=se(t),o=[1,0,0],a=fe(r,u),c=le(a,a),s=a[0],l=c-s*s;if(!l)return!e&&n;var f=i*c/l,h=-i*s/l,g=fe(o,a),p=ge(o,f),v=ge(a,h);he(p,v);var d=g,m=le(p,d),y=le(d,d),x=m*m-y*(le(p,p)-1);if(!(0>x)){var M=Math.sqrt(x),_=ge(d,(-m-M)/y);if(he(_,p),_=ve(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var A=S-w,C=oa(A-Sa)A;if(!C&&k>E&&(b=k,k=E,E=b),N?C?k+E>0^_[1]<(oa(_[0]-w)Sa^(w<=_[0]&&_[0]<=S)){var L=ge(d,(-m+M)/y);return he(L,p),[_,ve(L)]}}}function u(t,e){var r=o?n:Sa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=oa(i)>Aa,c=cr(n,6*Na);return Ee(t,e,c,o?[0,-n]:[-Sa,n-Sa])}function De(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,s=o.y,l=a.x,f=a.y,h=0,g=1,p=l-c,v=f-s;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-s,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-s,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:s+h*v}),1>g&&(u.b={x:c+g*p,y:s+g*v}),u}}}}}}function Pe(n,t,e,r){function u(r,u){return oa(r[0]-n)0?0:3:oa(r[0]-e)0?2:1:oa(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,s=a[0];c>o;++o)i=a[o],s[1]<=r?i[1]>r&&Z(s,i,n)>0&&++t:i[1]<=r&&Z(s,i,n)<0&&--t,s=i;return 0!==t}function s(i,a,c,s){var l=0,f=0;if(null==i||(l=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do s.point(0===l||3===l?n:e,l>1?r:t);while((l=(l+c+4)%4)!==f)}else s.point(a[0],a[1])}function l(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){l(n,t)&&a.point(n,t)}function h(){N.point=p,d&&d.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){v&&(p(y,x),M&&w&&A.rejoin(),v.push(A.buffer())),N.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Ac,Math.min(Ac,n)),t=Math.max(-Ac,Math.min(Ac,t));var e=l(n,t);if(d&&m.push([n,t]),S)y=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};C(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var v,d,m,y,x,M,_,b,w,S,k,E=a,A=Ce(),C=De(n,t,e,r),N={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=Xo.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),s(null,null,1,a),a.lineEnd()),u&&we(v,i,t,s,a),a.polygonEnd()),v=d=m=null}};return N}}function Ue(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function je(n){var t=0,e=Sa/3,r=nr(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Sa/180,e=n[1]*Sa/180):[180*(t/Sa),180*(e/Sa)]},u}function He(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,X((i-(n*n+e*e)*u*u)/(2*u))]},e}function Fe(){function n(n,t){Nc+=u*n-r*t,r=n,u=t}var t,e,r,u;Rc.point=function(i,o){Rc.point=n,t=r=i,e=u=o},Rc.lineEnd=function(){n(t,e)}}function Oe(n,t){Lc>n&&(Lc=n),n>qc&&(qc=n),Tc>t&&(Tc=t),t>zc&&(zc=t)}function Ye(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Ie(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Ie(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Ie(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Ze(n,t){dc+=n,mc+=t,++yc}function Ve(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);xc+=o*(t+n)/2,Mc+=o*(e+r)/2,_c+=o,Ze(t=n,e=r)}var t,e;Pc.point=function(r,u){Pc.point=n,Ze(t=r,e=u)}}function Xe(){Pc.point=Ze}function $e(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);xc+=o*(r+n)/2,Mc+=o*(u+t)/2,_c+=o,o=u*n-r*t,bc+=o*(r+n),wc+=o*(u+t),Sc+=3*o,Ze(r=n,u=t)}var t,e,r,u;Pc.point=function(i,o){Pc.point=n,Ze(t=r=i,e=u=o)},Pc.lineEnd=function(){n(t,e)}}function Be(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,ka)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:g};return a}function We(n){function t(n){return(a?r:e)(n)}function e(t){return Ke(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=0/0,S.point=i,t.lineStart()}function i(e,r){var i=se([e,r]),o=n(e,r);u(x,M,y,_,b,w,x=o[0],M=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=s,S.lineEnd=l}function s(n,t){i(f=n,h=t),g=x,p=M,v=_,d=b,m=w,S.point=i}function l(){u(x,M,y,_,b,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,s,l,f,h,g,p,v,d,m){var y=l-t,x=f-e,M=y*y+x*x;if(M>4*i&&d--){var _=a+g,b=c+p,w=s+v,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=oa(oa(w)-1)i||oa((y*L+x*T)/M-.5)>.3||o>a*g+c*p+s*v)&&(u(t,e,r,a,c,s,C,N,E,_/=S,b/=S,w,d,m),m.point(C,N),u(C,N,E,_,b,w,l,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Na),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function Je(n){var t=We(function(t,e){return n([t*La,e*La])});return function(n){return tr(t(n))}}function Ge(n){this.stream=n}function Ke(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function Qe(n){return nr(function(){return n})()}function nr(n){function t(n){return n=a(n[0]*Na,n[1]*Na),[n[0]*h+c,s-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(s-n[1])/h),n&&[n[0]*La,n[1]*La]}function r(){a=Ue(o=ur(m,y,x),i);var n=i(v,d);return c=g-n[0]*h,s=p+n[1]*h,u()}function u(){return l&&(l.valid=!1,l=null),t}var i,o,a,c,s,l,f=We(function(n,t){return n=i(n,t),[n[0]*h+c,s-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=Ec,_=bt,b=null,w=null;return t.stream=function(n){return l&&(l.valid=!1),l=tr(M(o,f(_(n)))),l.valid=!0,l},t.clipAngle=function(n){return arguments.length?(M=null==n?(b=n,Ec):Re((b=+n)*Na),u()):b},t.clipExtent=function(n){return arguments.length?(w=n,_=n?Pe(n[0][0],n[0][1],n[1][0],n[1][1]):bt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Na,d=n[1]%360*Na,r()):[v*La,d*La]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Na,y=n[1]%360*Na,x=n.length>2?n[2]%360*Na:0,r()):[m*La,y*La,x*La]},Xo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function tr(n){return Ke(n,function(t,e){n.point(t*Na,e*Na)})}function er(n,t){return[n,t]}function rr(n,t){return[n>Sa?n-ka:-Sa>n?n+ka:n,t]}function ur(n,t,e){return n?t||e?Ue(or(n),ar(t,e)):or(n):t||e?ar(t,e):rr}function ir(n){return function(t,e){return t+=n,[t>Sa?t-ka:-Sa>t?t+ka:t,e]}}function or(n){var t=ir(n);return t.invert=ir(-n),t}function ar(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*r+a*u;return[Math.atan2(c*i-l*o,a*r-s*u),X(l*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*i-c*o;return[Math.atan2(c*i+s*o,a*r+l*u),X(l*r-a*u)]},e}function cr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=sr(e,u),i=sr(e,i),(o>0?i>u:u>i)&&(u+=o*ka)):(u=n+o*ka,i=n-.5*c);for(var s,l=u;o>0?l>i:i>l;l-=c)a.point((s=ve([e,-r*Math.cos(l),-r*Math.sin(l)]))[0],s[1])}}function sr(n,t){var e=se(t);e[0]-=n,pe(e);var r=V(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Aa)%(2*Math.PI)}function lr(n,t,e){var r=Xo.range(n,t-Aa,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function fr(n,t,e){var r=Xo.range(n,t-Aa,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function hr(n){return n.source}function gr(n){return n.target}function pr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),s=u*Math.sin(n),l=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(J(r-t)+u*o*J(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*l,u=e*s+t*f,o=e*i+t*a;return[Math.atan2(u,r)*La,Math.atan2(o,Math.sqrt(r*r+u*u))*La]}:function(){return[n*La,t*La]};return p.distance=h,p}function vr(){function n(n,u){var i=Math.sin(u*=Na),o=Math.cos(u),a=oa((n*=Na)-t),c=Math.cos(a);Uc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;jc.point=function(u,i){t=u*Na,e=Math.sin(i*=Na),r=Math.cos(i),jc.point=n},jc.lineEnd=function(){jc.point=jc.lineEnd=g}}function dr(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function mr(n,t){function e(n,t){var e=oa(oa(t)-Ea)u;u++){for(;r>1&&Z(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function kr(n,t){return n[0]-t[0]||n[1]-t[1]}function Er(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Ar(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],s=e[1],l=t[1]-c,f=r[1]-s,h=(a*(c-s)-f*(u-i))/(f*o-a*l);return[u+h*o,c+h*l]}function Cr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Nr(){Jr(this),this.edge=this.site=this.circle=null}function Lr(n){var t=Jc.pop()||new Nr;return t.site=n,t}function Tr(n){Or(n),$c.remove(n),Jc.push(n),Jr(n)}function qr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Tr(n);for(var c=i;c.circle&&oa(e-c.circle.x)l;++l)s=a[l],c=a[l-1],$r(s.edge,c.site,s.site,u);c=a[0],s=a[f-1],s.edge=Vr(c.site,s.site,null,u),Fr(c),Fr(s)}function zr(n){for(var t,e,r,u,i=n.x,o=n.y,a=$c._;a;)if(r=Rr(a,o)-i,r>Aa)a=a.L;else{if(u=i-Dr(a,o),!(u>Aa)){r>-Aa?(t=a.P,e=a):u>-Aa?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Lr(n);if($c.insert(t,c),t||e){if(t===e)return Or(t),e=Lr(t.site),$c.insert(c,e),c.edge=e.edge=Vr(t.site,c.site),Fr(t),Fr(e),void 0;if(!e)return c.edge=Vr(t.site,c.site),void 0;Or(t),Or(e);var s=t.site,l=s.x,f=s.y,h=n.x-l,g=n.y-f,p=e.site,v=p.x-l,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+l,y:(h*x-v*y)/m+f};$r(e.edge,s,p,M),c.edge=Vr(s,n,null,M),e.edge=Vr(n,p,null,M),Fr(t),Fr(e)}}function Rr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,s=c-t;if(!s)return a;var l=a-r,f=1/i-1/s,h=l/s;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*s)-c+s/2+u-i/2)))/f+r:(r+a)/2}function Dr(n,t){var e=n.N;if(e)return Rr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Pr(n){this.site=n,this.edges=[]}function Ur(n){for(var t,e,r,u,i,o,a,c,s,l,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Xc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)l=a[o].end(),r=l.x,u=l.y,s=a[++o%c].start(),t=s.x,e=s.y,(oa(r-t)>Aa||oa(u-e)>Aa)&&(a.splice(o,0,new Br(Xr(i.site,l,oa(r-f)Aa?{x:f,y:oa(t-f)Aa?{x:oa(e-p)Aa?{x:h,y:oa(t-h)Aa?{x:oa(e-g)=-Ca)){var g=c*c+s*s,p=l*l+f*f,v=(f*g-s*p)/h,d=(c*p-l*g)/h,f=d+a,m=Gc.pop()||new Hr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,x=Wc._;x;)if(m.yd||d>=a)return;if(h>p){if(i){if(i.y>=s)return}else i={x:d,y:c};e={x:d,y:s}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=s)return}else i={x:(c-u)/r,y:c};e={x:(s-u)/r,y:s}}else{if(i){if(i.yg){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.xr;++r)if(o=l[r],o.x==e[0]){if(o.i)if(null==s[o.i+1])for(s[o.i-1]+=o.x,s.splice(o.i,1),u=r+1;i>u;++u)l[u].i--;else for(s[o.i-1]+=o.x+s[o.i+1],s.splice(o.i,2),u=r+1;i>u;++u)l[u].i-=2;else if(null==s[o.i+1])s[o.i]=o.x;else for(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1),u=r+1;i>u;++u)l[u].i--;l.splice(r,1),i--,r--}else o.x=su(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=l.pop(),null==s[o.i+1]?s[o.i]=o.x:(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1)),i--;return 1===s.length?null==s[0]?(o=l[0].x,function(n){return o(n)+""}):function(){return t}:function(n){for(r=0;i>r;++r)s[(o=l[r]).i]=o.x(n);return s.join("")}}function fu(n,t){for(var e,r=Xo.interpolators.length;--r>=0&&!(e=Xo.interpolators[r](n,t)););return e}function hu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(fu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function gu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function pu(n){return function(t){return 1-n(1-t)}}function vu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function du(n){return n*n}function mu(n){return n*n*n}function yu(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function xu(n){return function(t){return Math.pow(t,n)}}function Mu(n){return 1-Math.cos(n*Ea)}function _u(n){return Math.pow(2,10*(n-1))}function bu(n){return 1-Math.sqrt(1-n*n)}function wu(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/ka*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*ka/t)}}function Su(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function ku(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Eu(n,t){n=Xo.hcl(n),t=Xo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return rt(e+i*n,r+o*n,u+a*n)+""}}function Au(n,t){n=Xo.hsl(n),t=Xo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return nt(e+i*n,r+o*n,u+a*n)+""}}function Cu(n,t){n=Xo.lab(n),t=Xo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ot(e+i*n,r+o*n,u+a*n)+""}}function Nu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Lu(n){var t=[n.a,n.b],e=[n.c,n.d],r=qu(t),u=Tu(t,e),i=qu(zu(e,t,-u))||0;t[0]*e[1]180?l+=360:l-s>180&&(s+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:su(s,l)})):l&&r.push(r.pop()+"rotate("+l+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:su(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:su(g[0],p[0])},{i:e-2,x:su(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++ie;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function ei(n){return n.reduce(ri,0)}function ri(n,t){return n+t[1]}function ui(n,t){return ii(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ii(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function oi(n){return[Xo.min(n),Xo.max(n)]}function ai(n,t){return n.parent==t.parent?1:2}function ci(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function si(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function li(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i0&&(n=r);return n}function fi(n,t){return n.x-t.x}function hi(n,t){return t.x-n.x}function gi(n,t){return n.depth-t.depth}function pi(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function di(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function mi(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function yi(n,t){return n.value-t.value}function xi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Mi(n,t){n._pack_next=t,t._pack_prev=n}function _i(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function bi(n){function t(n){l=Math.min(n.x-n.r,l),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(s=e.length)){var e,r,u,i,o,a,c,s,l=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(wi),r=e[0],r.x=-r.r,r.y=0,t(r),s>1&&(u=e[1],u.x=u.r,u.y=0,t(u),s>2))for(i=e[2],Ei(r,u,i),t(i),xi(r,i),r._pack_prev=i,xi(i,u),u=r._pack_next,o=3;s>o;o++){Ei(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(_i(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!_i(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(Si)}}function wi(n){n._pack_next=n._pack_prev=n}function Si(n){delete n._pack_next,delete n._pack_prev}function ki(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++iu&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function zi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ri(n){return n.rangeExtent?n.rangeExtent():zi(n.range())}function Di(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Pi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Ui(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ls}function ji(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?ji:Di,c=r?Pu:Du;return o=u(n,t,c,e),a=u(t,n,c,fu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Nu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Ii(n,t)},i.tickFormat=function(t,e){return Zi(n,t,e)},i.nice=function(t){return Oi(n,t),u()},i.copy=function(){return Hi(n,t,e,r)},u()}function Fi(n,t){return Xo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Oi(n,t){return Pi(n,Ui(Yi(n,t)[2]))}function Yi(n,t){null==t&&(t=10);var e=zi(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Ii(n,t){return Xo.range.apply(Xo,Yi(n,t))}function Zi(n,t,e){var r=Yi(n,t);return Xo.format(e?e.replace(Qa,function(n,t,e,u,i,o,a,c,s,l){return[t,e,u,i,o,a,c,s||"."+Xi(l,r),l].join("")}):",."+Vi(r[2])+"f")}function Vi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Xi(n,t){var e=Vi(t[2]);return n in fs?Math.abs(e-Vi(Math.max(Math.abs(t[0]),Math.abs(t[1]))))+ +("e"!==n):e-2*("%"===n)}function $i(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Pi(r.map(u),e?Math:gs);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=zi(r),o=[],a=n[0],c=n[1],s=Math.floor(u(a)),l=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(l-s)){if(e){for(;l>s;s++)for(var h=1;f>h;h++)o.push(i(s)*h);o.push(i(s))}else for(o.push(i(s));s++0;h--)o.push(i(s)*h);for(s=0;o[s]c;l--);o=o.slice(s,l)}return o},o.tickFormat=function(n,t){if(!arguments.length)return hs;arguments.length<2?t=hs:"function"!=typeof t&&(t=Xo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return $i(n.copy(),t,e,r)},Fi(o,n)}function Bi(n,t,e){function r(t){return n(u(t))}var u=Wi(t),i=Wi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Ii(e,n)},r.tickFormat=function(n,t){return Zi(e,n,t)},r.nice=function(n){return r.domain(Oi(e,n))},r.exponent=function(o){return arguments.length?(u=Wi(t=o),i=Wi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Bi(n.copy(),t,e)},Fi(r,n)}function Wi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Ji(n,t){function e(e){return o[((i.get(e)||"range"===t.t&&i.set(e,n.push(e)))-1)%o.length]}function r(t,e){return Xo.range(n.length).map(function(n){return t+e*n})}var i,o,a;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new u;for(var o,a=-1,c=r.length;++ae?[0/0,0/0]:[e>0?u[e-1]:n[0],et?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return Ki(n,t,e)},u()}function Qi(n,t){function e(e){return e>=e?t[Xo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return Qi(n,t)},e}function no(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Ii(n,t)},t.tickFormat=function(t,e){return Zi(n,t,e)},t.copy=function(){return no(n)},t}function to(n){return n.innerRadius}function eo(n){return n.outerRadius}function ro(n){return n.startAngle}function uo(n){return n.endAngle}function io(n){function t(t){function o(){s.push("M",i(n(l),a))}for(var c,s=[],l=[],f=-1,h=t.length,g=_t(e),p=_t(r);++f1&&u.push("H",r[0]),u.join("")}function so(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var s=2;s9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function Eo(n){return n.length<3?oo(n):n[0]+po(n,ko(n))}function Ao(n){for(var t,e,r,u=-1,i=n.length;++ue?s():(i.active=e,o.event&&o.event.start.call(n,l,t),o.tween.forEach(function(e,r){(r=r.call(n,l,t))&&v.push(r)}),Xo.timer(function(){return p.c=c(r||1)?be:c,1},0,a),void 0)}function c(r){if(i.active!==e)return s();for(var u=r/g,a=f(u),c=v.length;c>0;)v[--c].call(n,a);return u>=1?(o.event&&o.event.end.call(n,l,t),s()):void 0}function s(){return--i.count?delete i[e]:delete n.__transition__,1}var l=n.__data__,f=o.ease,h=o.delay,g=o.duration,p=Ja,v=[];return p.t=h+a,r>=h?u(r-h):(p.c=u,void 0)},0,a)}}function Ho(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function Fo(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function Oo(n){return n.toISOString()}function Yo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Xo.bisect(js,u);return i==js.length?[t.year,Yi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/js[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=Io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=zi(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Yo(n.copy(),t,e)},Fi(r,n)}function Io(n){return new Date(n)}function Zo(n){return JSON.parse(n.responseText)}function Vo(n){var t=Wo.createRange();return t.selectNode(Wo.body),t.createContextualFragment(n.responseText)}var Xo={version:"3.4.3"};Date.now||(Date.now=function(){return+new Date});var $o=[].slice,Bo=function(n){return $o.call(n)},Wo=document,Jo=Wo.documentElement,Go=window;try{Bo(Jo.childNodes)[0].nodeType}catch(Ko){Bo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{Wo.createElement("div").style.setProperty("opacity",0,"")}catch(Qo){var na=Go.Element.prototype,ta=na.setAttribute,ea=na.setAttributeNS,ra=Go.CSSStyleDeclaration.prototype,ua=ra.setProperty;na.setAttribute=function(n,t){ta.call(this,n,t+"")},na.setAttributeNS=function(n,t,e){ea.call(this,n,t,e+"")},ra.setProperty=function(n,t,e){ua.call(this,n,t+"",e)}}Xo.ascending=function(n,t){return t>n?-1:n>t?1:n>=t?0:0/0},Xo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Xo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ur&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ur&&(e=r)}return e},Xo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ue&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ue&&(e=r)}return e},Xo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=e);)e=u=void 0;for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=e);)e=void 0;for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},Xo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i1&&(t=t.map(e)),t=t.filter(n),t.length?Xo.quantile(t.sort(Xo.ascending),.5):void 0},Xo.bisector=function(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n.call(t,t[i],i)r;){var i=r+u>>>1;er?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Xo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,e=Xo.min(arguments,t),r=new Array(e);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var oa=Math.abs;Xo.range=function(n,t,r){if(arguments.length<3&&(r=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/r)throw new Error("infinite range");var u,i=[],o=e(oa(r)),a=-1;if(n*=o,t*=o,r*=o,0>r)for(;(u=n+r*++a)>t;)i.push(u/o);else for(;(u=n+r*++a)=o.length)return r?r.call(i,a):e?a.sort(e):a;for(var s,l,f,h,g=-1,p=a.length,v=o[c++],d=new u;++g=o.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,i={},o=[],a=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(Xo.map,e,0),0)},i.key=function(n){return o.push(n),i},i.sortKeys=function(n){return a[o.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},Xo.set=function(n){var t=new l;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},r(l,{has:i,add:function(n){return this[aa+n]=!0,n},remove:function(n){return n=aa+n,n in this&&delete this[n]},values:a,size:c,empty:s,forEach:function(n){for(var t in this)t.charCodeAt(0)===ca&&n.call(this,t.substring(1))}}),Xo.behavior={},Xo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Xo.event=null,Xo.requote=function(n){return n.replace(la,"\\$&")};var la=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,fa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ha=function(n,t){return t.querySelector(n)},ga=function(n,t){return t.querySelectorAll(n)},pa=Jo[h(Jo,"matchesSelector")],va=function(n,t){return pa.call(n,t)};"function"==typeof Sizzle&&(ha=function(n,t){return Sizzle(n,t)[0]||null},ga=Sizzle,va=Sizzle.matchesSelector),Xo.selection=function(){return xa};var da=Xo.selection.prototype=[];da.select=function(n){var t,e,r,u,i=[];n=M(n);for(var o=-1,a=this.length;++o=0&&(e=n.substring(0,t),n=n.substring(t+1)),ma.hasOwnProperty(e)?{space:ma[e],local:n}:n}},da.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=Xo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(b(t,n[t]));return this}return this.each(b(n,t))},da.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=k(n)).length,u=-1;if(t=e.classList){for(;++ur){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(C(e,n[e],t));return this}if(2>r)return Go.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(C(n,t,e))},da.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(N(t,n[t]));return this}return this.each(N(n,t))},da.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},da.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},da.append=function(n){return n=L(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},da.insert=function(n,t){return n=L(n),t=M(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},da.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},da.data=function(n,t){function e(n,e){var r,i,o,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new u,y=new u,x=[];for(r=-1;++rr;++r)p[r]=T(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),s.push(g),l.push(v)}var r,i,o=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++oi;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return x(u)},da.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},da.sort=function(n){n=z.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},da.size=function(){var n=0;return this.each(function(){++n}),n};var ya=[];Xo.selection.enter=D,Xo.selection.enter.prototype=ya,ya.append=da.append,ya.empty=da.empty,ya.node=da.node,ya.call=da.call,ya.size=da.size,ya.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(j(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(j(n,t,e))};var Ma=Xo.map({mouseenter:"mouseover",mouseleave:"mouseout"});Ma.forEach(function(n){"on"+n in Wo&&Ma.remove(n)});var _a="onselectstart"in Wo?null:h(Jo.style,"userSelect"),ba=0;Xo.mouse=function(n){return Y(n,m())};var wa=/WebKit/.test(Go.navigator.userAgent)?-1:0;Xo.touches=function(n,t){return arguments.length<2&&(t=m().touches),t?Bo(t).map(function(t){var e=Y(n,t);return e.identifier=t.identifier,e}):[]},Xo.behavior.drag=function(){function n(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function t(){return Xo.event.changedTouches[0].identifier}function e(n,t){return Xo.touches(n).filter(function(n){return n.identifier===t})[0]}function r(n,t,e,r){return function(){function o(){var n=t(l,g),e=n[0]-v[0],r=n[1]-v[1];d|=e|r,v=n,f({type:"drag",x:n[0]+c[0],y:n[1]+c[1],dx:e,dy:r})}function a(){m.on(e+"."+p,null).on(r+"."+p,null),y(d&&Xo.event.target===h),f({type:"dragend"})}var c,s=this,l=s.parentNode,f=u.of(s,arguments),h=Xo.event.target,g=n(),p=null==g?"drag":"drag-"+g,v=t(l,g),d=0,m=Xo.select(Go).on(e+"."+p,o).on(r+"."+p,a),y=O();i?(c=i.apply(s,arguments),c=[c.x-v[0],c.y-v[1]]):c=[0,0],f({type:"dragstart"})}}var u=y(n,"drag","dragstart","dragend"),i=null,o=r(g,Xo.mouse,"mousemove","mouseup"),a=r(t,e,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},Xo.rebind(n,u,"on")};var Sa=Math.PI,ka=2*Sa,Ea=Sa/2,Aa=1e-6,Ca=Aa*Aa,Na=Sa/180,La=180/Sa,Ta=Math.SQRT2,qa=2,za=4;Xo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=B(v),o=i/(qa*h)*(e*W(Ta*t+v)-$(v));return[r+o*s,u+o*l,i*e/B(Ta*t+v)]}return[r+n*s,u+n*l,i*Math.exp(Ta*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],s=o-r,l=a-u,f=s*s+l*l,h=Math.sqrt(f),g=(c*c-i*i+za*f)/(2*i*qa*h),p=(c*c-i*i-za*f)/(2*c*qa*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Ta;return e.duration=1e3*y,e},Xo.behavior.zoom=function(){function n(n){n.on(A,s).on(Pa+".zoom",f).on(C,h).on("dblclick.zoom",g).on(L,l)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){_&&_.domain(M.range().map(function(n){return(n-S.x)/S.k}).map(M.invert)),w&&w.domain(b.range().map(function(n){return(n-S.y)/S.k}).map(b.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function s(){function n(){l=1,u(Xo.mouse(r),g),a(i)}function e(){f.on(C,Go===r?h:null).on(N,null),p(l&&Xo.event.target===s),c(i)}var r=this,i=T.of(r,arguments),s=Xo.event.target,l=0,f=Xo.select(Go).on(C,n).on(N,e),g=t(Xo.mouse(r)),p=O();U.call(r),o(i)}function l(){function n(){var n=Xo.touches(g);return h=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=Xo.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-x){var s=o[0],l=v[s.identifier];r(2*S.k),u(s,l),d(),a(p)}x=c}else if(o.length>1){var s=o[0],f=o[1],h=s[0]-f[0],g=s[1]-f[1];m=h*h+g*g}}function i(){for(var n,t,e,i,o=Xo.touches(g),c=0,s=o.length;s>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var l=(l=e[0]-n[0])*l+(l=e[1]-n[1])*l,f=m&&Math.sqrt(l/m);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}x=null,u(n,t),a(p)}function f(){if(Xo.event.touches.length){for(var t=Xo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}b.on(M,null).on(_,null),w.on(A,s).on(L,l),k(),c(p)}var h,g=this,p=T.of(g,arguments),v={},m=0,y=Xo.event.changedTouches[0].identifier,M="touchmove.zoom-"+y,_="touchend.zoom-"+y,b=Xo.select(Go).on(M,i).on(_,f),w=Xo.select(g).on(A,null).on(L,e),k=O();U.call(g),e(),o(p)}function f(){var n=T.of(this,arguments);m?clearTimeout(m):(U.call(this),o(n)),m=setTimeout(function(){m=null,c(n)},50),d();var e=v||Xo.mouse(this);p||(p=t(e)),r(Math.pow(2,.002*Ra())*S.k),u(e,p),a(n)}function h(){p=null}function g(){var n=T.of(this,arguments),e=Xo.mouse(this),i=t(e),s=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Xo.event.shiftKey?Math.ceil(s)-1:Math.floor(s)+1)),u(e,i),a(n),c(n)}var p,v,m,x,M,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=Da,A="mousedown.zoom",C="mousemove.zoom",N="mouseup.zoom",L="touchstart.zoom",T=y(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=T.of(this,arguments),t=S;ks?Xo.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Xo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(E=null==t?Da:[+t[0],+t[1]],n):E},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=function(t){return arguments.length?(_=t,M=t.copy(),S={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Xo.rebind(n,T,"on")};var Ra,Da=[0,1/0],Pa="onwheel"in Wo?(Ra=function(){return-Xo.event.deltaY*(Xo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in Wo?(Ra=function(){return Xo.event.wheelDelta},"mousewheel"):(Ra=function(){return-Xo.event.detail},"MozMousePixelScroll");G.prototype.toString=function(){return this.rgb()+""},Xo.hsl=function(n,t,e){return 1===arguments.length?n instanceof Q?K(n.h,n.s,n.l):dt(""+n,mt,K):K(+n,+t,+e)};var Ua=Q.prototype=new G;Ua.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),K(this.h,this.s,this.l/n)},Ua.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),K(this.h,this.s,n*this.l)},Ua.rgb=function(){return nt(this.h,this.s,this.l)},Xo.hcl=function(n,t,e){return 1===arguments.length?n instanceof et?tt(n.h,n.c,n.l):n instanceof it?at(n.l,n.a,n.b):at((n=yt((n=Xo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):tt(+n,+t,+e)};var ja=et.prototype=new G;ja.brighter=function(n){return tt(this.h,this.c,Math.min(100,this.l+Ha*(arguments.length?n:1)))},ja.darker=function(n){return tt(this.h,this.c,Math.max(0,this.l-Ha*(arguments.length?n:1)))},ja.rgb=function(){return rt(this.h,this.c,this.l).rgb()},Xo.lab=function(n,t,e){return 1===arguments.length?n instanceof it?ut(n.l,n.a,n.b):n instanceof et?rt(n.l,n.c,n.h):yt((n=Xo.rgb(n)).r,n.g,n.b):ut(+n,+t,+e)};var Ha=18,Fa=.95047,Oa=1,Ya=1.08883,Ia=it.prototype=new G;Ia.brighter=function(n){return ut(Math.min(100,this.l+Ha*(arguments.length?n:1)),this.a,this.b)},Ia.darker=function(n){return ut(Math.max(0,this.l-Ha*(arguments.length?n:1)),this.a,this.b)},Ia.rgb=function(){return ot(this.l,this.a,this.b)},Xo.rgb=function(n,t,e){return 1===arguments.length?n instanceof pt?gt(n.r,n.g,n.b):dt(""+n,gt,nt):gt(~~n,~~t,~~e)};var Za=pt.prototype=new G;Za.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),gt(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):gt(u,u,u)},Za.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),gt(~~(n*this.r),~~(n*this.g),~~(n*this.b))},Za.hsl=function(){return mt(this.r,this.g,this.b)},Za.toString=function(){return"#"+vt(this.r)+vt(this.g)+vt(this.b)};var Va=Xo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Va.forEach(function(n,t){Va.set(n,ft(t))}),Xo.functor=_t,Xo.xhr=wt(bt),Xo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=St(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(l>=s)return o;if(u)return u=!1,i;var t=l;if(34===n.charCodeAt(t)){for(var e=t;e++l;){var r=n.charCodeAt(l++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(l)&&(++l,++a);else if(r!==c)continue;return n.substring(t,l-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],s=n.length,l=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new l,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},Xo.csv=Xo.dsv(",","text/csv"),Xo.tsv=Xo.dsv("	","text/tab-separated-values");var Xa,$a,Ba,Wa,Ja,Ga=Go[h(Go,"requestAnimationFrame")]||function(n){setTimeout(n,17)};Xo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};$a?$a.n=i:Xa=i,$a=i,Ba||(Wa=clearTimeout(Wa),Ba=1,Ga(Et))},Xo.timer.flush=function(){At(),Ct()},Xo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Ka=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Lt);Xo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Xo.round(n,Nt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((0>=e?e+1:e-1)/3)))),Ka[8+e/3]};var Qa=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,nc=Xo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Xo.round(n,Nt(n,t))).toFixed(Math.max(0,Math.min(20,Nt(n*(1+1e-15),t))))}}),tc=Xo.time={},ec=Date;zt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){rc.setUTCDate.apply(this._,arguments)},setDay:function(){rc.setUTCDay.apply(this._,arguments)},setFullYear:function(){rc.setUTCFullYear.apply(this._,arguments)},setHours:function(){rc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){rc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){rc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){rc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){rc.setUTCSeconds.apply(this._,arguments)},setTime:function(){rc.setTime.apply(this._,arguments)}};var rc=Date.prototype;tc.year=Rt(function(n){return n=tc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),tc.years=tc.year.range,tc.years.utc=tc.year.utc.range,tc.day=Rt(function(n){var t=new ec(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),tc.days=tc.day.range,tc.days.utc=tc.day.utc.range,tc.dayOfYear=function(n){var t=tc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=tc[n]=Rt(function(n){return(n=tc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=tc.year(n).getDay();return Math.floor((tc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});tc[n+"s"]=e.range,tc[n+"s"].utc=e.utc.range,tc[n+"OfYear"]=function(n){var e=tc.year(n).getDay();return Math.floor((tc.dayOfYear(n)+(e+t)%7)/7)}}),tc.week=tc.sunday,tc.weeks=tc.sunday.range,tc.weeks.utc=tc.sunday.utc.range,tc.weekOfYear=tc.sundayOfYear;var uc={"-":"",_:" ",0:"0"},ic=/^\s*\d+/,oc=/^%/;Xo.locale=function(n){return{numberFormat:Tt(n),timeFormat:Pt(n)}};var ac=Xo.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Xo.format=ac.numberFormat,Xo.geo={},re.prototype={s:0,t:0,add:function(n){ue(n,this.t,cc),ue(cc.s,this.s,this),this.s?this.t+=cc.t:this.s=cc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var cc=new re;Xo.geo.stream=function(n,t){n&&sc.hasOwnProperty(n.type)?sc[n.type](n,t):ie(n,t)};var sc={Feature:function(n,t){ie(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*Sa+n:n,gc.lineStart=gc.lineEnd=gc.point=g}};Xo.geo.bounds=function(){function n(n,t){x.push(M=[l=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=se([t*Na,e*Na]);if(m){var u=fe(m,r),i=[u[1],-u[0],0],o=fe(i,u);pe(o),o=ve(o);var c=t-p,s=c>0?1:-1,v=o[0]*La*s,d=oa(c)>180;if(d^(v>s*p&&s*t>v)){var y=o[1]*La;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>s*p&&s*t>v)){var y=-o[1]*La;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t):h>=l?(l>t&&(l=t),t>h&&(h=t)):t>p?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=l,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=oa(r)>180?r+(r>0?360:-360):r}else v=n,d=e;gc.point(n,e),t(n,e)}function i(){gc.lineStart()}function o(){u(v,d),gc.lineEnd(),oa(y)>Aa&&(l=-(h=180)),M[0]=l,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function s(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nhc?(l=-(h=180),f=-(g=90)):y>Aa?g=90:-Aa>y&&(f=-90),M[0]=l,M[1]=h}};return function(n){g=h=-(l=f=1/0),x=[],Xo.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],s(e[0],u)||s(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,l=e[0],h=u[1])}return x=M=null,1/0===l||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[l,f],[h,g]]}}(),Xo.geo.centroid=function(n){pc=vc=dc=mc=yc=xc=Mc=_c=bc=wc=Sc=0,Xo.geo.stream(n,kc);var t=bc,e=wc,r=Sc,u=t*t+e*e+r*r;return Ca>u&&(t=xc,e=Mc,r=_c,Aa>vc&&(t=dc,e=mc,r=yc),u=t*t+e*e+r*r,Ca>u)?[0/0,0/0]:[Math.atan2(e,t)*La,X(r/Math.sqrt(u))*La]};var pc,vc,dc,mc,yc,xc,Mc,_c,bc,wc,Sc,kc={sphere:g,point:me,lineStart:xe,lineEnd:Me,polygonStart:function(){kc.lineStart=_e},polygonEnd:function(){kc.lineStart=xe}},Ec=Ee(be,Te,ze,[-Sa,-Sa/2]),Ac=1e9;Xo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Pe(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Xo.geo.conicEqualArea=function(){return je(He)}).raw=He,Xo.geo.albers=function(){return Xo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Xo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Xo.geo.albers(),o=Xo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Xo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var s=i.scale(),l=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[l-.455*s,f-.238*s],[l+.455*s,f+.238*s]]).stream(c).point,r=o.translate([l-.307*s,f+.201*s]).clipExtent([[l-.425*s+Aa,f+.12*s+Aa],[l-.214*s-Aa,f+.234*s-Aa]]).stream(c).point,u=a.translate([l-.205*s,f+.212*s]).clipExtent([[l-.214*s+Aa,f+.166*s+Aa],[l-.115*s-Aa,f+.234*s-Aa]]).stream(c).point,n},n.scale(1070)};var Cc,Nc,Lc,Tc,qc,zc,Rc={point:g,lineStart:g,lineEnd:g,polygonStart:function(){Nc=0,Rc.lineStart=Fe},polygonEnd:function(){Rc.lineStart=Rc.lineEnd=Rc.point=g,Cc+=oa(Nc/2)}},Dc={point:Oe,lineStart:g,lineEnd:g,polygonStart:g,polygonEnd:g},Pc={point:Ze,lineStart:Ve,lineEnd:Xe,polygonStart:function(){Pc.lineStart=$e},polygonEnd:function(){Pc.point=Ze,Pc.lineStart=Ve,Pc.lineEnd=Xe}};Xo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Xo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Cc=0,Xo.geo.stream(n,u(Rc)),Cc},n.centroid=function(n){return dc=mc=yc=xc=Mc=_c=bc=wc=Sc=0,Xo.geo.stream(n,u(Pc)),Sc?[bc/Sc,wc/Sc]:_c?[xc/_c,Mc/_c]:yc?[dc/yc,mc/yc]:[0/0,0/0]},n.bounds=function(n){return qc=zc=-(Lc=Tc=1/0),Xo.geo.stream(n,u(Dc)),[[Lc,Tc],[qc,zc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||Je(n):bt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Ye:new Be(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Xo.geo.albersUsa()).context(null)},Xo.geo.transform=function(n){return{stream:function(t){var e=new Ge(t);for(var r in n)e[r]=n[r];return e}}},Ge.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Xo.geo.projection=Qe,Xo.geo.projectionMutator=nr,(Xo.geo.equirectangular=function(){return Qe(er)}).raw=er.invert=er,Xo.geo.rotation=function(n){function t(t){return t=n(t[0]*Na,t[1]*Na),t[0]*=La,t[1]*=La,t}return n=ur(n[0]%360*Na,n[1]*Na,n.length>2?n[2]*Na:0),t.invert=function(t){return t=n.invert(t[0]*Na,t[1]*Na),t[0]*=La,t[1]*=La,t},t},rr.invert=er,Xo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=ur(-n[0]*Na,-n[1]*Na,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=La,n[1]*=La}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=cr((t=+r)*Na,u*Na),n):t},n.precision=function(r){return arguments.length?(e=cr(t*Na,(u=+r)*Na),n):u},n.angle(90)},Xo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Na,u=n[1]*Na,i=t[1]*Na,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),s=Math.cos(u),l=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=s*l-c*f*a)*e),c*l+s*f*a)},Xo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return Xo.range(Math.ceil(i/d)*d,u,d).map(h).concat(Xo.range(Math.ceil(s/m)*m,c,m).map(g)).concat(Xo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return oa(n%d)>Aa}).map(l)).concat(Xo.range(Math.ceil(a/v)*v,o,v).filter(function(n){return oa(n%m)>Aa}).map(f))}var e,r,u,i,o,a,c,s,l,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(s).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],s=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),s>c&&(t=s,s=c,c=t),n.precision(y)):[[i,s],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,l=lr(a,o,90),f=fr(r,e,y),h=lr(s,c,90),g=fr(i,u,y),n):y},n.majorExtent([[-180,-90+Aa],[180,90-Aa]]).minorExtent([[-180,-80-Aa],[180,80+Aa]])},Xo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=hr,u=gr;return n.distance=function(){return Xo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Xo.geo.interpolate=function(n,t){return pr(n[0]*Na,n[1]*Na,t[0]*Na,t[1]*Na)},Xo.geo.length=function(n){return Uc=0,Xo.geo.stream(n,jc),Uc};var Uc,jc={sphere:g,point:g,lineStart:vr,lineEnd:g,polygonStart:g,polygonEnd:g},Hc=dr(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Xo.geo.azimuthalEqualArea=function(){return Qe(Hc)}).raw=Hc;var Fc=dr(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},bt);(Xo.geo.azimuthalEquidistant=function(){return Qe(Fc)}).raw=Fc,(Xo.geo.conicConformal=function(){return je(mr)}).raw=mr,(Xo.geo.conicEquidistant=function(){return je(yr)}).raw=yr;var Oc=dr(function(n){return 1/n},Math.atan);(Xo.geo.gnomonic=function(){return Qe(Oc)}).raw=Oc,xr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Ea]},(Xo.geo.mercator=function(){return Mr(xr)}).raw=xr;var Yc=dr(function(){return 1},Math.asin);(Xo.geo.orthographic=function(){return Qe(Yc)}).raw=Yc;var Ic=dr(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Xo.geo.stereographic=function(){return Qe(Ic)}).raw=Ic,_r.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Ea]},(Xo.geo.transverseMercator=function(){var n=Mr(_r),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[-n[1],n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},n.rotate([0,0])}).raw=_r,Xo.geom={},Xo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=_t(e),i=_t(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(kr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var s=Sr(a),l=Sr(c),f=l[0]===s[0],h=l[l.length-1]===s[s.length-1],g=[];for(t=s.length-1;t>=0;--t)g.push(n[a[s[t]][2]]);for(t=+f;t=r&&s.x<=i&&s.y>=u&&s.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];l.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Aa)*Aa,y:Math.round(o(n,t)/Aa)*Aa,i:t}})}var r=br,u=wr,i=r,o=u,a=Kc;return n?t(n):(t.links=function(n){return nu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return nu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(jr),c=-1,s=a.length,l=a[s-1].edge,f=l.l===o?l.r:l.l;++c=s,h=r>=l,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=iu()),f?u=s:a=s,h?o=l:c=l,i(n,t,e,r,u,o,a,c)}var l,f,h,g,p,v,d,m,y,x=_t(a),M=_t(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)l=n[g],l.xm&&(m=l.x),l.y>y&&(y=l.y),f.push(l.x),h.push(l.y);else for(g=0;p>g;++g){var _=+x(l=n[g],g),b=+M(l,g);v>_&&(v=_),d>b&&(d=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=iu();if(k.add=function(n){i(k,n,+x(n,++g),+M(n,g),v,d,m,y)},k.visit=function(n){ou(n,k,v,d,m,y)},g=-1,null==t){for(;++g=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return e=ts.get(e)||ns,r=es.get(r)||bt,gu(r(e.apply(null,$o.call(arguments,1))))},Xo.interpolateHcl=Eu,Xo.interpolateHsl=Au,Xo.interpolateLab=Cu,Xo.interpolateRound=Nu,Xo.transform=function(n){var t=Wo.createElementNS(Xo.ns.prefix.svg,"g");return(Xo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Lu(e?e.matrix:rs)})(n)},Lu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var rs={a:1,b:0,c:0,d:1,e:0,f:0};Xo.interpolateTransform=Ru,Xo.layout={},Xo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/d){if(p>c){var s=t.charge/c;n.px-=i*s,n.py-=o*s}return!0}if(t.point&&c&&p>c){var s=t.pointCharge/c;n.px-=i*s,n.py-=o*s}}return!t.charge}}function t(n){n.px=Xo.event.x,n.py=Xo.event.y,a.resume()}var e,r,u,i,o,a={},c=Xo.dispatch("start","tick","end"),s=[1,1],l=.9,f=us,h=is,g=-30,p=os,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,x,M,_=m.length,b=y.length;for(e=0;b>e;++e)a=y[e],f=a.source,h=a.target,x=h.x-f.x,M=h.y-f.y,(p=x*x+M*M)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,x*=p,M*=p,h.x-=x*(d=f.weight/(h.weight+f.weight)),h.y-=M*d,f.x+=x*(d=1-d),f.y+=M*d);if((d=r*v)&&(x=s[0]/2,M=s[1]/2,e=-1,d))for(;++e<_;)a=m[e],a.x+=(x-a.x)*d,a.y+=(M-a.y)*d;if(g)for(Zu(t=Xo.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*l,a.y-=(a.py-(a.py=a.y))*l);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(s=n,a):s},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(l=+n,a):l},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),Xo.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,s=o.length;++at;++t)(r=m[t]).index=t,r.weight=0;for(t=0;l>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;l>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;l>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;l>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;l>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Xo.behavior.drag().origin(bt).on("dragstart.force",Fu).on("drag.force",t).on("dragend.force",Ou)),arguments.length?(this.on("mouseover.force",Yu).on("mouseout.force",Iu).call(e),void 0):e},Xo.rebind(a,c,"on")};var us=20,is=1,os=1/0;Xo.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(s=c.length)){for(var s,l,f=-1,h=t.children=new Array(s),g=0,p=o+1;++fg;++g)for(u.call(n,s[0][g],p=v[g],l[0][g][1]),h=1;d>h;++h)u.call(n,s[h][g],p+=l[h-1][g][1],l[h][g][1]);return a}var t=bt,e=Qu,r=ni,u=Ku,i=Ju,o=Gu;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:cs.get(t)||Qu,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:ss.get(t)||ni,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var cs=Xo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(ti),i=n.map(ei),o=Xo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,s=[],l=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],s.push(e)):(c+=i[e],l.push(e));return l.reverse().concat(s)},reverse:function(n){return Xo.range(n.length).reverse()},"default":Qu}),ss=Xo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,s,l=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=s=0,e=1;h>e;++e){for(t=0,u=0;l>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];l>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,s>c&&(s=c)}for(e=0;h>e;++e)g[e]-=s;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ni});Xo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],s=n.map(e,this),l=r.call(this,s,i),f=u.call(this,l,s,i),i=-1,h=s.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=l[0]&&a<=l[1]&&(o=c[Xo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=oi,u=ui;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=_t(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return ii(n,t)}:_t(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Xo.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,s,l=r[0],f=l,h=-1;++h0&&(di(mi(a,n,r),n,u),s+=u,l+=u),f+=a._tree.mod,s+=i._tree.mod,h+=c._tree.mod,l+=o._tree.mod;a&&!si(o)&&(o._tree.thread=a,o._tree.mod+=f-l),i&&!ci(c)&&(c._tree.thread=i,c._tree.mod+=s-h,r=n)}return r}var s=t.call(this,n,i),l=s[0];pi(l,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(l),a(l,-l._tree.prelim);var f=li(l,hi),h=li(l,fi),g=li(l,gi),p=f.x-e(f,h)/2,v=h.x+e(h,f)/2,d=g.depth||1;return pi(l,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(v-p)*r[0],n.y=n.depth/d*r[1],delete n._tree}),s}var t=Xo.layout.hierarchy().sort(null).value(null),e=ai,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Vu(n,t)},Xo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],s=u[1],l=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,pi(a,function(n){n.r=+l(n.value)}),pi(a,bi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/s))/2;pi(a,function(n){n.r+=f}),pi(a,bi),pi(a,function(n){n.r-=f})}return ki(a,c/2,s/2,t?1:1/Math.max(2*a.r/c,2*a.r/s)),o}var t,e=Xo.layout.hierarchy().sort(yi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Vu(n,e)},Xo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],s=0;pi(c,function(n){var t=n.children;t&&t.length?(n.x=Ci(t),n.y=Ai(t)):(n.x=o?s+=e(n,o):0,n.y=0,o=n)});var l=Ni(c),f=Li(c),h=l.x-e(l,f)/2,g=f.x+e(f,l)/2;return pi(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=Xo.layout.hierarchy().sort(null).value(null),e=ai,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Vu(n,t)},Xo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,s=f(e),l=[],h=i.slice(),p=1/0,v="slice"===g?s.dx:"dice"===g?s.dy:"slice-dice"===g?1&e.depth?s.dy:s.dx:Math.min(s.dx,s.dy);for(n(h,s.dx*s.dy/e.value),l.area=0;(c=h.length)>0;)l.push(o=h[c-1]),l.area+=o.area,"squarify"!==g||(a=r(l,v))<=p?(h.pop(),p=a):(l.area-=l.pop().area,u(l,v,s,!1),v=Math.min(s.dx,s.dy),l.length=l.area=0,p=1/0);l.length&&(u(l,v,s,!0),l.length=l.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,s=e.y,l=t?c(n.area/t):0;if(t==e.dx){for((r||l>e.dy)&&(l=e.dy);++ie.dx)&&(l=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Xo.random.normal.apply(Xo,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Xo.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Xo.scale={};var ls={floor:bt,ceil:bt};Xo.scale.linear=function(){return Hi([0,1],[0,1],fu,!1)};var fs={s:1,g:1,p:1,r:1,e:1};Xo.scale.log=function(){return $i(Xo.scale.linear().domain([0,1]),10,!0,[1,10])};var hs=Xo.format(".0e"),gs={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Xo.scale.pow=function(){return Bi(Xo.scale.linear(),1,[0,1])},Xo.scale.sqrt=function(){return Xo.scale.pow().exponent(.5)},Xo.scale.ordinal=function(){return Ji([],{t:"range",a:[[]]})},Xo.scale.category10=function(){return Xo.scale.ordinal().range(ps)},Xo.scale.category20=function(){return Xo.scale.ordinal().range(vs)},Xo.scale.category20b=function(){return Xo.scale.ordinal().range(ds)},Xo.scale.category20c=function(){return Xo.scale.ordinal().range(ms)};var ps=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(ht),vs=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(ht),ds=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(ht),ms=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(ht);Xo.scale.quantile=function(){return Gi([],[])},Xo.scale.quantize=function(){return Ki(0,1,[0,1])},Xo.scale.threshold=function(){return Qi([.5],[0,1])},Xo.scale.identity=function(){return no([0,1])},Xo.svg={},Xo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+ys,a=u.apply(this,arguments)+ys,c=(o>a&&(c=o,o=a,a=c),a-o),s=Sa>c?"0":"1",l=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=xs?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*l+","+i*f+"A"+i+","+i+" 0 "+s+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+s+",0 "+n*l+","+n*f+"Z":"M"+i*l+","+i*f+"A"+i+","+i+" 0 "+s+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=to,e=eo,r=ro,u=uo;return n.innerRadius=function(e){return arguments.length?(t=_t(e),n):t},n.outerRadius=function(t){return arguments.length?(e=_t(t),n):e},n.startAngle=function(t){return arguments.length?(r=_t(t),n):r},n.endAngle=function(t){return arguments.length?(u=_t(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+ys;return[Math.cos(i)*n,Math.sin(i)*n]},n};var ys=-Ea,xs=ka-Aa;Xo.svg.line=function(){return io(bt)};var Ms=Xo.map({linear:oo,"linear-closed":ao,step:co,"step-before":so,"step-after":lo,basis:mo,"basis-open":yo,"basis-closed":xo,bundle:Mo,cardinal:go,"cardinal-open":fo,"cardinal-closed":ho,monotone:Eo});Ms.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var _s=[0,2/3,1/3,0],bs=[0,1/3,2/3,0],ws=[0,1/6,2/3,1/6];Xo.svg.line.radial=function(){var n=io(Ao);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},so.reverse=lo,lo.reverse=so,Xo.svg.area=function(){return Co(bt)},Xo.svg.area.radial=function(){var n=Co(Ao);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Xo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),s=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,s)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,s.r,s.p0)+r(s.r,s.p1,s.a1-s.a0)+u(s.r,s.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+ys,l=s.call(n,u,r)+ys;return{r:i,a0:o,a1:l,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(l),i*Math.sin(l)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Sa)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=hr,o=gr,a=No,c=ro,s=uo;return n.radius=function(t){return arguments.length?(a=_t(t),n):a},n.source=function(t){return arguments.length?(i=_t(t),n):i},n.target=function(t){return arguments.length?(o=_t(t),n):o},n.startAngle=function(t){return arguments.length?(c=_t(t),n):c},n.endAngle=function(t){return arguments.length?(s=_t(t),n):s},n},Xo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=hr,e=gr,r=Lo;return n.source=function(e){return arguments.length?(t=_t(e),n):t},n.target=function(t){return arguments.length?(e=_t(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Xo.svg.diagonal.radial=function(){var n=Xo.svg.diagonal(),t=Lo,e=n.projection;return n.projection=function(n){return arguments.length?e(To(t=n)):t},n},Xo.svg.symbol=function(){function n(n,r){return(Ss.get(t.call(this,n,r))||Ro)(e.call(this,n,r))}var t=zo,e=qo;return n.type=function(e){return arguments.length?(t=_t(e),n):t},n.size=function(t){return arguments.length?(e=_t(t),n):e},n};var Ss=Xo.map({circle:Ro,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Cs)),e=t*Cs;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/As),e=t*As/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/As),e=t*As/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});Xo.svg.symbolTypes=Ss.keys();var ks,Es,As=Math.sqrt(3),Cs=Math.tan(30*Na),Ns=[],Ls=0;Ns.call=da.call,Ns.empty=da.empty,Ns.node=da.node,Ns.size=da.size,Xo.transition=function(n){return arguments.length?ks?n.transition():n:xa.transition()},Xo.transition.prototype=Ns,Ns.select=function(n){var t,e,r,u=this.id,i=[];n=M(n);for(var o=-1,a=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Do(u,this.id)},Ns.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):R(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Ns.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Ru:fu,a=Xo.ns.qualify(n);return Po(this,"attr."+n,t,a.local?i:u)},Ns.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Xo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Ns.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=Go.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=fu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Po(this,"style."+n,t,u)},Ns.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,Go.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Ns.text=function(n){return Po(this,"text",n,Uo)},Ns.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Ns.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=Xo.ease.apply(Xo,arguments)),R(this,function(e){e.__transition__[t].ease=n}))},Ns.delay=function(n){var t=this.id;return R(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Ns.duration=function(n){var t=this.id;return R(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Ns.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Es,u=ks;ks=e,R(this,function(t,r,u){Es=t.__transition__[e],n.call(t,t.__data__,r,u)}),Es=r,ks=u}else R(this,function(r){var u=r.__transition__[e];(u.event||(u.event=Xo.dispatch("start","end"))).on(n,t)});return this},Ns.transition=function(){for(var n,t,e,r,u=this.id,i=++Ls,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],s=0,l=t.length;l>s;s++)(e=t[s])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,jo(e,s,i,r)),n.push(e)}return Do(o,i)},Xo.svg.axis=function(){function n(n){n.each(function(){var n,s=Xo.select(this),l=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):bt:t,p=s.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Aa),d=Xo.transition(p.exit()).style("opacity",Aa).remove(),m=Xo.transition(p).style("opacity",1),y=Ri(f),x=s.selectAll(".domain").data([0]),M=(x.enter().append("path").attr("class","domain"),Xo.transition(x));v.append("line"),v.append("text");var _=v.select("line"),b=m.select("line"),w=p.select("text").text(g),S=v.select("text"),k=m.select("text");switch(r){case"bottom":n=Ho,_.attr("y2",u),S.attr("y",Math.max(u,0)+o),b.attr("x2",0).attr("y2",u),k.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+i+"V0H"+y[1]+"V"+i);break;case"top":n=Ho,_.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),b.attr("x2",0).attr("y2",-u),k.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+-i+"V0H"+y[1]+"V"+-i);break;case"left":n=Fo,_.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),b.attr("x2",-u).attr("y2",0),k.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),M.attr("d","M"+-i+","+y[0]+"H0V"+y[1]+"H"+-i);break;case"right":n=Fo,_.attr("x2",u),S.attr("x",Math.max(u,0)+o),b.attr("x2",u).attr("y2",0),k.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),M.attr("d","M"+i+","+y[0]+"H0V"+y[1]+"H"+i)}if(f.rangeBand){var E=f,A=E.rangeBand()/2;l=f=function(n){return E(n)+A}}else l.rangeBand?l=f:d.call(n,f);v.call(n,l),m.call(n,f)})}var t,e=Xo.scale.linear(),r=Ts,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in qs?t+"":Ts,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ts="bottom",qs={top:1,right:1,bottom:1,left:1};Xo.svg.brush=function(){function n(i){i.each(function(){var i=Xo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,bt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return zs[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,f=Xo.transition(i),h=Xo.transition(o);c&&(l=Ri(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),e(f)),s&&(l=Ri(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+l[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",l[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",l[1]-l[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==Xo.event.keyCode&&(C||(x=null,L[0]-=l[1],L[1]-=f[1],C=2),d())}function p(){32==Xo.event.keyCode&&2==C&&(L[0]+=l[1],L[1]+=f[1],C=0,d())}function v(){var n=Xo.mouse(_),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(Xo.event.altKey?(x||(x=[(l[0]+l[1])/2,(f[0]+f[1])/2]),L[0]=l[+(n[0]p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function y(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),Xo.select("body").style("cursor",null),T.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,M,_=this,b=Xo.select(Xo.event.target),w=a.of(_,arguments),S=Xo.select(_),k=b.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&s,C=b.classed("extent"),N=O(),L=Xo.mouse(_),T=Xo.select(Go).on("keydown.brush",u).on("keyup.brush",p);if(Xo.event.changedTouches?T.on("touchmove.brush",v).on("touchend.brush",y):T.on("mousemove.brush",v).on("mouseup.brush",y),S.interrupt().selectAll("*").interrupt(),C)L[0]=l[0]-L[0],L[1]=f[0]-L[1];else if(k){var q=+/w$/.test(k),z=+/^n/.test(k);M=[l[1-q]-L[0],f[1-z]-L[1]],L[0]=l[q],L[1]=f[z]}else Xo.event.altKey&&(x=L.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),Xo.select("body").style("cursor",b.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=y(n,"brushstart","brush","brushend"),c=null,s=null,l=[0,0],f=[0,0],h=!0,g=!0,p=Rs[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:l,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,ks?Xo.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,l=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=hu(l,t.x),r=hu(f,t.y);return i=o=null,function(u){l=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Rs[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,p=Rs[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(h=!!t[0],g=!!t[1]):c?h=!!t:s&&(g=!!t),n):c&&s?[h,g]:c?h:s?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=l[0]||r!=l[1])&&(l=[e,r])),s&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],s.invert&&(u=s(u),a=s(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=l[0],r=l[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),s&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],s.invert&&(u=s.invert(u),a=s.invert(a)),u>a&&(h=u,u=a,a=h))),c&&s?[[e,u],[r,a]]:c?[e,r]:s&&[u,a])},n.clear=function(){return n.empty()||(l=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&l[0]==l[1]||!!s&&f[0]==f[1]},Xo.rebind(n,a,"on")};var zs={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Rs=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Ds=tc.format=ac.timeFormat,Ps=Ds.utc,Us=Ps("%Y-%m-%dT%H:%M:%S.%LZ");Ds.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Oo:Us,Oo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Oo.toString=Us.toString,tc.second=Rt(function(n){return new ec(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),tc.seconds=tc.second.range,tc.seconds.utc=tc.second.utc.range,tc.minute=Rt(function(n){return new ec(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),tc.minutes=tc.minute.range,tc.minutes.utc=tc.minute.utc.range,tc.hour=Rt(function(n){var t=n.getTimezoneOffset()/60;return new ec(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),tc.hours=tc.hour.range,tc.hours.utc=tc.hour.utc.range,tc.month=Rt(function(n){return n=tc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),tc.months=tc.month.range,tc.months.utc=tc.month.utc.range;var js=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Hs=[[tc.second,1],[tc.second,5],[tc.second,15],[tc.second,30],[tc.minute,1],[tc.minute,5],[tc.minute,15],[tc.minute,30],[tc.hour,1],[tc.hour,3],[tc.hour,6],[tc.hour,12],[tc.day,1],[tc.day,2],[tc.week,1],[tc.month,1],[tc.month,3],[tc.year,1]],Fs=Ds.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",be]]),Os={range:function(n,t,e){return Xo.range(Math.ceil(n/e)*e,+t,e).map(Io)},floor:bt,ceil:bt};Hs.year=tc.year,tc.scale=function(){return Yo(Xo.scale.linear(),Hs,Fs)};var Ys=Hs.map(function(n){return[n[0].utc,n[1]]}),Is=Ps.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",be]]);Ys.year=tc.year.utc,tc.scale.utc=function(){return Yo(Xo.scale.linear(),Ys,Is)},Xo.text=wt(function(n){return n.responseText}),Xo.json=function(n,t){return St(n,"application/json",Zo,t)},Xo.html=function(n,t){return St(n,"text/html",Vo,t)},Xo.xml=wt(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(Xo):"object"==typeof module&&module.exports?module.exports=Xo:this.d3=Xo}();'use strict';(function(window){window.define=undefined;}).call(this,this);'use strict';tr.exportTo('tr.ui.b',function(){const DataSeriesEnableChangeEventType='data-series-enabled-change';const THIS_DOC=document._currentScript.ownerDocument;const svgNS='http://www.w3.org/2000/svg';const ColorScheme=tr.b.ColorScheme;function getColorOfKey(key,selected){let id=ColorScheme.getColorIdForGeneralPurposeString(key);if(selected){id+=ColorScheme.properties.brightenedOffsets[0];}
-return ColorScheme.colorsAsStrings[id];}
-function getSVGTextSize(parentNode,text,opt_callback,opt_this){const textNode=document.createElementNS('http://www.w3.org/2000/svg','text');textNode.setAttributeNS(null,'x',0);textNode.setAttributeNS(null,'y',0);textNode.setAttributeNS(null,'fill','black');textNode.appendChild(document.createTextNode(text));parentNode.appendChild(textNode);if(opt_callback){opt_callback.call(opt_this||parentNode,textNode);}
-const width=textNode.getComputedTextLength();const height=textNode.getBBox().height;parentNode.removeChild(textNode);return{width,height};}
-function DataSeries(key){this.key_=key;this.target_=undefined;this.title_='';this.optional_=false;this.enabled_=true;this.color_=getColorOfKey(key,false);this.highlightedColor_=getColorOfKey(key,true);}
-DataSeries.prototype={get key(){return this.key_;},get title(){return this.title_;},set title(t){this.title_=t;},get color(){return this.color_;},set color(c){this.color_=c;},get highlightedColor(){return this.highlightedColor_;},set highlightedColor(c){this.highlightedColor_=c;},get optional(){return this.optional_;},set optional(optional){this.optional_=optional;},get enabled(){return this.enabled_;},set enabled(enabled){if(!this.optional&&!enabled){this.optional=true;}
-this.enabled_=enabled;},get target(){return this.target_;},set target(t){this.target_=t;}};const ChartBase=tr.ui.b.define('svg',undefined,svgNS);ChartBase.prototype={__proto__:HTMLUnknownElement.prototype,getDataSeries(key){if(!this.seriesByKey_.has(key)){this.seriesByKey_.set(key,new DataSeries(key));}
-return this.seriesByKey_.get(key);},decorate(){Polymer.dom(this).classList.add('chart-base');this.setAttribute('style','cursor: default; user-select: none;');this.chartTitle_=undefined;this.seriesByKey_=new Map();this.graphWidth_=undefined;this.graphHeight_=undefined;this.margin={top:0,right:0,bottom:0,left:0,};this.hideLegend_=false;this.showTitleInLegend_=false;this.titleHeight_='16pt';const template=Polymer.dom(THIS_DOC).querySelector('#chart-base-template');const svgEl=Polymer.dom(template.content).querySelector('svg');for(let i=0;i{textNode.style.fontSize='16pt';});this.margin.top=Math.max(this.margin.top,titleSize.height+15);const horizontalOverhangPx=(titleSize.width-this.graphWidth)/2;this.margin.left=Math.max(this.margin.left,horizontalOverhangPx);this.margin.right=Math.max(this.margin.right,horizontalOverhangPx);}},computeLegendSize_(){let width=0;let height=0;if(this.hideLegend)return{width,height};let series=[...this.seriesByKey_.values()];if(this.showTitleInLegend){series=series.filter(series=>series.title!=='');}
-for(const seriesEntry of series){const legendText=this.showTitleInLegend?seriesEntry.title:seriesEntry.key;const textSize=getSVGTextSize(this,legendText);width=Math.max(width,textSize.width+30);height+=textSize.height;}
-return{width,height};},updateDimensions_(){const thisSel=d3.select(this);thisSel.attr('width',this.totalWidth);thisSel.attr('height',this.totalHeight);d3.select(this.chartAreaElement).attr('transform','translate('+this.margin.left+', '+this.margin.top+')');},updateContents_(){this.updateMargins_();this.updateDimensions_();this.updateTitle_();this.updateLegend_();},updateTitle_(){const titleSel=d3.select(this.chartAreaElement).select('#title');if(!this.chartTitle_){titleSel.style('display','none');return;}
-titleSel.attr('transform','translate('+this.graphWidth*0.5+',-15)').style('display',undefined).style('text-anchor','middle').style('font-size',this.titleHeight).attr('class','title').attr('width',this.graphWidth).text(this.chartTitle_);},updateLegend_(){const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.legend').remove();if(this.hideLegend)return;let series;let seriesText;if(this.showTitleInLegend){series=[...this.seriesByKey_.values()].filter(series=>series.title!=='').filter(series=>series.color!=='transparent').reverse();seriesText=series=>series.title;}else{series=[...this.seriesByKey_.values()].filter(series=>series.color!=='transparent').reverse();seriesText=series=>series.key;}
-const legendEntriesSel=chartAreaSel.selectAll('.legend').data(series);legendEntriesSel.enter().append('foreignObject').attr('class','legend').attr('x',this.graphWidth+2).attr('width',this.margin.right).attr('height',18).attr('transform',(series,i)=>'translate(0,'+i*18+')').append('xhtml:body').style('margin',0).append('tr-ui-b-chart-legend-key').property('color',series=>((this.currentHighlightedLegendKey===series.key)?series.highlightedColor:series.color)).property('width',this.margin.right).property('target',series=>series.target).property('title',series=>series.title).property('optional',series=>series.optional).property('enabled',series=>series.enabled).text(seriesText);legendEntriesSel.exit().remove();},get highlightedLegendKey(){return this.highlightedLegendKey_;},set highlightedLegendKey(highlightedLegendKey){this.highlightedLegendKey_=highlightedLegendKey;this.updateHighlight_();},get currentHighlightedLegendKey(){if(this.tempHighlightedLegendKey_){return this.tempHighlightedLegendKey_;}
-return this.highlightedLegendKey_;},pushTempHighlightedLegendKey(key){if(this.tempHighlightedLegendKey_){throw new Error('push cannot nest');}
-this.tempHighlightedLegendKey_=key;this.updateHighlight_();},popTempHighlightedLegendKey(key){if(this.tempHighlightedLegendKey_!==key){throw new Error('pop cannot happen');}
-this.tempHighlightedLegendKey_=undefined;this.updateHighlight_();},updateHighlight_(){const chartAreaSel=d3.select(this.chartAreaElement);const legendEntriesSel=chartAreaSel.selectAll('.legend');const getDataSeries=chart.getDataSeries.bind(chart);const currentHighlightedLegendKey=chart.currentHighlightedLegendKey;legendEntriesSel.each(function(key){const dataSeries=getDataSeries(key);if(key===currentHighlightedLegendKey){this.style.fill=dataSeries.highlightedColor;this.style.fontWeight='bold';}else{this.style.fill=dataSeries.color;this.style.fontWeight='';}});}};return{ChartBase,DataSeriesEnableChangeEventType,getColorOfKey,getSVGTextSize,};});'use strict';tr.exportTo('tr.ui.b',function(){function MouseTracker(opt_targetElement){this.onMouseDown_=this.onMouseDown_.bind(this);this.onMouseMove_=this.onMouseMove_.bind(this);this.onMouseUp_=this.onMouseUp_.bind(this);this.targetElement=opt_targetElement;}
-MouseTracker.prototype={get targetElement(){return this.targetElement_;},set targetElement(targetElement){if(this.targetElement_){this.targetElement_.removeEventListener('mousedown',this.onMouseDown_);}
-this.targetElement_=targetElement;if(this.targetElement_){this.targetElement_.addEventListener('mousedown',this.onMouseDown_);}},onMouseDown_(e){if(e.button!==0)return true;e=this.remakeEvent_(e,'mouse-tracker-start');this.targetElement_.dispatchEvent(e);document.addEventListener('mousemove',this.onMouseMove_);document.addEventListener('mouseup',this.onMouseUp_);this.targetElement_.addEventListener('blur',this.onMouseUp_);this.savePreviousUserSelect_=document.body.style['-webkit-user-select'];document.body.style['-webkit-user-select']='none';e.preventDefault();return true;},onMouseMove_(e){e=this.remakeEvent_(e,'mouse-tracker-move');this.targetElement_.dispatchEvent(e);},onMouseUp_(e){document.removeEventListener('mousemove',this.onMouseMove_);document.removeEventListener('mouseup',this.onMouseUp_);this.targetElement_.removeEventListener('blur',this.onMouseUp_);document.body.style['-webkit-user-select']=this.savePreviousUserSelect_;e=this.remakeEvent_(e,'mouse-tracker-end');this.targetElement_.dispatchEvent(e);},remakeEvent_(e,newType){const remade=new tr.b.Event(newType,true,true);remade.x=e.x;remade.y=e.y;remade.offsetX=e.offsetX;remade.offsetY=e.offsetY;remade.clientX=e.clientX;remade.clientY=e.clientY;return remade;}};function trackMouseMovesUntilMouseUp(mouseMoveHandler,opt_mouseUpHandler,opt_keyUpHandler){function cleanupAndDispatchToMouseUp(e){document.removeEventListener('mousemove',mouseMoveHandler);if(opt_keyUpHandler){document.removeEventListener('keyup',opt_keyUpHandler);}
-document.removeEventListener('mouseup',cleanupAndDispatchToMouseUp);if(opt_mouseUpHandler){opt_mouseUpHandler(e);}}
-document.addEventListener('mousemove',mouseMoveHandler);if(opt_keyUpHandler){document.addEventListener('keyup',opt_keyUpHandler);}
-document.addEventListener('mouseup',cleanupAndDispatchToMouseUp);}
-return{MouseTracker,trackMouseMovesUntilMouseUp,};});'use strict';tr.exportTo('tr.ui.b',function(){const D3_Y_AXIS_WIDTH_PX=9;const D3_X_AXIS_HEIGHT_PX=23;function sanitizePower(x,defaultValue){if(!isNaN(x)&&isFinite(x)&&(x!==0))return x;return defaultValue;}
-const ChartBase2D=tr.ui.b.define('chart-base-2d',tr.ui.b.ChartBase);ChartBase2D.prototype={__proto__:tr.ui.b.ChartBase.prototype,decorate(){super.decorate();Polymer.dom(this).classList.add('chart-base-2d');this.xScale_=d3.scale.linear();this.yScale_=d3.scale.linear();this.isYLogScale_=false;this.yLogScaleBase_=10;this.yLogScaleMin_=undefined;this.autoDataRange_=new tr.b.math.Range();this.overrideDataRange_=undefined;this.hideXAxis_=false;this.hideYAxis_=false;this.data_=[];this.xAxisLabel_='';this.yAxisLabel_='';this.textHeightPx_=0;this.unit_=undefined;d3.select(this.chartAreaElement).append('g').attr('id','brushes');d3.select(this.chartAreaElement).append('g').attr('id','series');this.addEventListener('mousedown',this.onMouseDown_.bind(this));},get yLogScaleBase(){return this.yLogScaleBase_;},set yLogScaleBase(b){this.yLogScaleBase_=b;},get unit(){return this.unit_;},set unit(unit){this.unit_=unit;this.updateContents_();},get xAxisLabel(){return this.xAxisLabel_;},set xAxisLabel(label){this.xAxisLabel_=label;},get yAxisLabel(){return this.yAxisLabel_;},set yAxisLabel(label){this.yAxisLabel_=label;},get hideXAxis(){return this.hideXAxis_;},set hideXAxis(h){this.hideXAxis_=h;this.updateContents_();},get hideYAxis(){return this.hideYAxis_;},set hideYAxis(h){this.hideYAxis_=h;this.updateContents_();},get data(){return this.data_;},set data(data){if(data===undefined){throw new Error('data must be an Array');}
-this.data_=data;this.updateSeriesKeys_();this.updateDataRange_();this.updateContents_();},set isYLogScale(logScale){if(logScale){this.yScale_=d3.scale.log().base(this.yLogScaleBase);}else{this.yScale_=d3.scale.linear();}
-this.isYLogScale_=logScale;},getYScaleMin_(){return this.isYLogScale_?this.yLogScaleMin_:0;},getYScaleDomain_(minValue,maxValue){if(this.overrideDataRange_!==undefined){return[this.dataRange.min,this.dataRange.max];}
-if(this.isYLogScale_){return[this.getYScaleMin_(),maxValue];}
-return[Math.min(minValue,this.getYScaleMin_()),maxValue];},getSampleWidth_(data,index,leftSide){let leftIndex;let rightIndex;if(leftSide){leftIndex=Math.max(index-1,0);rightIndex=index;}else{leftIndex=index;rightIndex=Math.min(index+1,data.length-1);}
-const leftWidth=this.getXForDatum_(data[index],index)-
-this.getXForDatum_(data[leftIndex],leftIndex);const rightWidth=this.getXForDatum_(data[rightIndex],rightIndex)-
-this.getXForDatum_(data[index],index);return tr.b.math.Statistics.mean([leftWidth,rightWidth]);},updateSeriesKeys_(){this.data_.forEach(function(datum){Object.keys(datum).forEach(function(key){if(this.isDatumFieldSeries_(key)){this.getDataSeries(key);}},this);},this);},isDatumFieldSeries_(fieldName){return fieldName!=='x';},getXForDatum_(datum,index){return datum.x;},updateMargins_(){this.margin.left=this.hideYAxis?0:this.yAxisWidth;this.margin.bottom=this.hideXAxis?0:this.xAxisHeight;if(this.hideXAxis&&!this.hideYAxis){this.margin.bottom=10;}
-if(this.hideYAxis&&!this.hideXAxis){this.margin.left=10;}
-this.margin.top=this.hideYAxis?0:10;if(this.yAxisLabel){this.margin.top+=this.textHeightPx_;}
-if(this.xAxisLabel){this.margin.right=Math.max(this.margin.right,16+tr.ui.b.getSVGTextSize(this,this.xAxisLabel).width);}
-super.updateMargins_();},get xAxisHeight(){return D3_X_AXIS_HEIGHT_PX;},computeScaleTickWidth_(scale){if(this.data.length===0)return 0;let tickValues=scale.ticks();let tickFormat=scale.tickFormat();if(this.isYLogScale_){const enclosingPowers=this.dataRange.enclosingPowers();tickValues=[];const maxPower=sanitizePower(enclosingPowers.max,this.yLogScaleBase);for(let power=sanitizePower(enclosingPowers.min,1);power<=maxPower;power*=this.yLogScaleBase){tickValues.push(power);}
-tickFormat=v=>v.toString();}
-if(this.unit){tickFormat=v=>this.unit.format(v);}
-let maxTickWidth=0;for(const tickValue of tickValues){maxTickWidth=Math.max(maxTickWidth,tr.ui.b.getSVGTextSize(this,tickFormat(tickValue)).width);}
-return D3_Y_AXIS_WIDTH_PX+maxTickWidth;},get yAxisWidth(){return this.computeScaleTickWidth_(this.yScale_);},updateScales_(){if(this.data_.length===0)return;this.xScale_.range([0,this.graphWidth]);this.xScale_.domain(d3.extent(this.data_,this.getXForDatum_.bind(this)));this.yScale_.range([this.graphHeight,0]);this.yScale_.domain([this.dataRange.min,this.dataRange.max]);},updateBrushContents_(brushSel){brushSel.selectAll('*').remove();},updateXAxis_(xAxis){xAxis.selectAll('*').remove();xAxis[0][0].style.opacity=0;if(this.hideXAxis)return;this.drawXAxis_(xAxis);const label=xAxis.append('text').attr('class','label');this.drawXAxisTicks_(xAxis);this.drawXAxisLabel_(label);xAxis[0][0].style.opacity=1;},drawXAxis_(xAxis){xAxis.attr('transform','translate(0,'+this.graphHeight+')').call(d3.svg.axis().scale(this.xScale_).orient('bottom'));},drawXAxisLabel_(label){label.attr('x',this.graphWidth+16).attr('y',8).text(this.xAxisLabel);},drawXAxisTicks_(xAxis){let previousRight=undefined;xAxis.selectAll('.tick')[0].forEach(function(tick){const currentLeft=tick.transform.baseVal[0].matrix.e;if((previousRight===undefined)||(currentLeft>(previousRight+3))){const currentWidth=tick.getBBox().width;previousRight=currentLeft+currentWidth;}else{tick.style.opacity=0;}});},set overrideDataRange(range){this.overrideDataRange_=range;},get dataRange(){if(this.overrideDataRange_!==undefined){return this.overrideDataRange_;}
-return this.autoDataRange_;},updateDataRange_(){if(this.overrideDataRange_!==undefined)return;const dataBySeriesKey=this.getDataBySeriesKey_();this.autoDataRange_.reset();for(const[series,values]of Object.entries(dataBySeriesKey)){for(let i=0;iv.toString();}
-if(this.unit){tickFormat=v=>this.unit.format(v);}
-if(tickFormat){axisModifier=axisModifier.tickFormat(tickFormat);}
-yAxis.call(axisModifier);},drawYAxisLabel_(label){const labelWidthPx=Math.ceil(tr.ui.b.getSVGTextSize(this.chartAreaElement,this.yAxisLabel).width);label.attr('x',-labelWidthPx).attr('y',-8).text(this.yAxisLabel);},drawYAxisTicks_(yAxis){let previousTop=undefined;yAxis.selectAll('.tick')[0].forEach(function(tick){const bbox=tick.getBBox();const currentTop=tick.transform.baseVal[0].matrix.f;const currentBottom=currentTop+bbox.height;if((previousTop===undefined)||(previousTop>(currentBottom+3))){previousTop=currentTop;}else{tick.style.opacity=0;}});yAxis[0][0].style.opacity=1;},updateContents_(){if(this.textHeightPx_===0){this.textHeightPx_=tr.ui.b.getSVGTextSize(this,'Ay').height;}
-this.updateScales_();super.updateContents_();const chartAreaSel=d3.select(this.chartAreaElement);this.updateXAxis_(chartAreaSel.select('.x.axis'));this.updateYAxis_(chartAreaSel.select('.y.axis'));for(const child of Array.from(this.querySelectorAll('.axis path, .axis line'))){child.style.fill='none';child.style.shapeRendering='crispEdges';child.style.stroke='black';}
-this.updateBrushContents_(chartAreaSel.select('#brushes'));this.updateDataContents_(chartAreaSel.select('#series'));},updateDataContents_(seriesSel){throw new Error('Not implemented');},getDataBySeriesKey_(){const dataBySeriesKey={};for(const[key,series]of this.seriesByKey_){dataBySeriesKey[key]=[];}
-this.data_.forEach(function(multiSeriesDatum,index){const x=this.getXForDatum_(multiSeriesDatum,index);d3.keys(multiSeriesDatum).forEach(function(seriesKey){if(seriesKey==='x')return;if(multiSeriesDatum[seriesKey]===undefined)return;if(!this.isDatumFieldSeries_(seriesKey))return;const singleSeriesDatum={x};singleSeriesDatum[seriesKey]=multiSeriesDatum[seriesKey];dataBySeriesKey[seriesKey].push(singleSeriesDatum);},this);},this);return dataBySeriesKey;},getChartPointAtClientPoint_(clientPoint){const rect=this.getBoundingClientRect();return{x:clientPoint.x-rect.left-this.margin.left,y:clientPoint.y-rect.top-this.margin.top};},getDataPointAtChartPoint_(chartPoint){return{x:tr.b.math.clamp(this.xScale_.invert(chartPoint.x),this.xScale_.domain()[0],this.xScale_.domain()[1]),y:tr.b.math.clamp(this.yScale_.invert(chartPoint.y),this.yScale_.domain()[0],this.yScale_.domain()[1])};},getDataPointAtClientPoint_(clientX,clientY){const chartPoint=this.getChartPointAtClientPoint_({x:clientX,y:clientY});return this.getDataPointAtChartPoint_(chartPoint);},prepareDataEvent_(mouseEvent,dataEvent){const dataPoint=this.getDataPointAtClientPoint_(mouseEvent.clientX,mouseEvent.clientY);dataEvent.x=dataPoint.x;dataEvent.y=dataPoint.y;},onMouseDown_(mouseEvent){tr.ui.b.trackMouseMovesUntilMouseUp(this.onMouseMove_.bind(this,mouseEvent.button),this.onMouseUp_.bind(this,mouseEvent.button));mouseEvent.preventDefault();mouseEvent.stopPropagation();const dataEvent=new tr.b.Event('item-mousedown');dataEvent.button=mouseEvent.button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(103, 199, 165)');}},onMouseMove_(button,mouseEvent){if(mouseEvent.buttons!==undefined){mouseEvent.preventDefault();mouseEvent.stopPropagation();}
-const dataEvent=new tr.b.Event('item-mousemove');dataEvent.button=button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(103, 199, 165)');}},onMouseUp_(button,mouseEvent){mouseEvent.preventDefault();mouseEvent.stopPropagation();const dataEvent=new tr.b.Event('item-mouseup');dataEvent.button=button;this.prepareDataEvent_(mouseEvent,dataEvent);this.dispatchEvent(dataEvent);for(const child of Array.from(this.querySelector('#brushes').children)){child.setAttribute('fill','rgb(213, 236, 229)');}}};return{ChartBase2D,};});'use strict';tr.exportTo('tr.ui.b',function(){const ChartBase2D=tr.ui.b.ChartBase2D;const ChartBase2DBrushX=tr.ui.b.define('chart-base-2d-brush-1d',ChartBase2D);ChartBase2DBrushX.prototype={__proto__:ChartBase2D.prototype,decorate(){super.decorate();this.brushedRange_=new tr.b.math.Range();},set brushedRange(range){this.brushedRange_.reset();this.brushedRange_.addRange(range);this.updateContents_();},get brushedRange(){return tr.b.math.Range.fromDict(this.brushedRange_.toJSON());},computeBrushRangeFromIndices(indexA,indexB){indexA=tr.b.math.clamp(indexA,0,this.data_.length-1);indexB=tr.b.math.clamp(indexB,0,this.data_.length-1);const leftIndex=Math.min(indexA,indexB);const rightIndex=Math.max(indexA,indexB);const brushRange=new tr.b.math.Range();brushRange.addValue(this.getXForDatum_(this.data_[leftIndex],leftIndex)-
-this.getSampleWidth_(this.data_,leftIndex,true));brushRange.addValue(this.getXForDatum_(this.data_[rightIndex],rightIndex)+
-this.getSampleWidth_(this.data_,rightIndex,false));return brushRange;},getDataIndex_(dataX){if(this.data.length===0)return undefined;const bisect=d3.bisector(this.getXForDatum_.bind(this)).right;return bisect(this.data_,dataX)-1;},prepareDataEvent_(mouseEvent,dataEvent){ChartBase2D.prototype.prepareDataEvent_.call(this,mouseEvent,dataEvent);dataEvent.index=this.getDataIndex_(dataEvent.x);if(dataEvent.index!==undefined){dataEvent.data=this.data_[dataEvent.index];}},updateBrushContents_(brushSel){brushSel.selectAll('*').remove();const brushes=this.brushedRange_.isEmpty?[]:[this.brushedRange_];const brushRectsSel=brushSel.selectAll('rect').data(brushes);brushRectsSel.enter().append('rect');brushRectsSel.exit().remove();this.drawBrush_(brushRectsSel);},drawBrush_(brushRectsSel){brushRectsSel.attr('x',d=>this.xScale_(d.min)).attr('y',0).attr('width',d=>this.xScale_(d.max)-this.xScale_(d.min)).attr('height',this.graphHeight).attr('fill','rgb(213, 236, 229)');}};return{ChartBase2DBrushX,};});'use strict';tr.exportTo('tr.ui.b',function(){const ColumnChart=tr.ui.b.define('column-chart',tr.ui.b.ChartBase2DBrushX);ColumnChart.prototype={__proto__:tr.ui.b.ChartBase2DBrushX.prototype,decorate(){super.decorate();this.xCushion_=1;this.isStacked_=false;this.isGrouped_=false;this.enableHoverBox=true;this.displayXInHover=false;this.enableToolTip=false;this.toolTipCallBack_=()=>{};},set toolTipCallBack(callback){this.toolTipCallBack_=callback;},get toolTipCallBack(){return this.toolTipCallBack_;},set isGrouped(grouped){this.isGrouped_=grouped;if(grouped){this.getDataSeries('group').color='transparent';}
-this.updateContents_();},get isGrouped(){return this.isGrouped_;},set isStacked(stacked){this.isStacked_=true;this.updateContents_();},get isStacked(){return this.isStacked_;},get defaultGraphHeight(){return 100;},get defaultGraphWidth(){return 10*this.data_.length;},updateScales_(){if(this.data_.length===0)return;let xDifferences=0;let currentX=undefined;let previousX=undefined;this.data_.forEach(function(datum,index){previousX=currentX;currentX=this.getXForDatum_(datum,index);if(previousX!==undefined){xDifferences+=currentX-previousX;}},this);this.xScale_.range([0,this.graphWidth]);const domain=d3.extent(this.data_,this.getXForDatum_.bind(this));if(this.data_.length>1){this.xCushion_=xDifferences/(this.data_.length-1);}
-this.xScale_.domain([domain[0],domain[1]+this.xCushion_]);this.yScale_.range([this.graphHeight,0]);this.yScale_.domain(this.getYScaleDomain_(this.dataRange.min,this.dataRange.max));},updateDataRange_(){if(!this.isStacked){super.updateDataRange_();return;}
-this.autoDataRange_.reset();this.autoDataRange_.addValue(0);for(const datum of this.data_){let sum=0;for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined){continue;}else if(this.isGrouped&&key==='group'){continue;}
-sum+=datum[key];}
-this.autoDataRange_.addValue(sum);}},getStackedRectsForDatum_(datum,index){const stacks=[];let bottom=this.yScale_.range()[0];let sum=0;for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined||!this.isSeriesEnabled(key)){continue;}else if(this.isGrouped&&key==='group'){continue;}
-sum+=this.dataRange.clamp(datum[key]);const heightPx=bottom-this.yScale_(sum);bottom-=heightPx;stacks.push({key,value:datum[key],color:this.getDataSeries(key).color,heightPx,topPx:bottom,underflow:sumthis.dataRange.max,});}
-return stacks;},getRectsForDatum_(datum,index){if(this.isStacked){return this.getStackedRectsForDatum_(datum,index);}
-const stacks=[];for(const[key,series]of this.seriesByKey_){if(datum[key]===undefined||!this.isSeriesEnabled(key)){continue;}
-const clampedValue=this.dataRange.clamp(datum[key]);const topPx=this.yScale_(Math.max(clampedValue,this.getYScaleMin_()));stacks.push({key,value:datum[key],topPx,heightPx:this.yScale_.range()[0]-topPx,color:this.getDataSeries(key).color,underflow:datum[key]this.dataRange.max,});}
-stacks.sort(function(a,b){return b.topPx-a.topPx;});return stacks;},drawToolTip_(rect){if(!this.enableToolTip)return;const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.tooltip').remove();const labelText='View Breakdown';const labelWidth=tr.ui.b.getSVGTextSize(this.chartAreaElement,labelText).width+5;const labelHeight=this.textHeightPx_;const toolTipLeftPx=rect.leftPx+(rect.widthPx/2);const toolTipTopPx=rect.topPx;chartAreaSel.append('rect').attr('class','tooltip').attr('fill','white').attr('opacity',0.8).attr('stroke','black').attr('x',toolTipLeftPx).attr('y',toolTipTopPx).attr('width',labelWidth+5).attr('height',labelHeight+10);chartAreaSel.append('text').style('cursor','pointer').attr('class','tooltip').on('mousedown',()=>this.toolTipCallBack_(rect)).attr('fill','blue').attr('x',toolTipLeftPx+4).attr('y',toolTipTopPx+labelHeight).attr('text-decoration','underline').text(labelText);},drawHoverValueBox_(rect){const rectHoverEvent=new tr.b.Event('rect-mouseenter');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);if(!this.enableHoverBox)return;const seriesKeys=[...this.seriesByKey_.keys()];const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.hover').remove();let keyWidthPx=0;let keyHeightPx=0;if(seriesKeys.length>1&&!this.isGrouped){keyWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.key).width+5;keyHeightPx=this.textHeightPx_;}
-let xLabelWidthPx=0;let xLabelHeightPx=0;if(this.displayXInHover){xLabelWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.x).width+5;xLabelHeightPx=this.textHeightPx_;}
-let groupWidthPx=0;let groupHeightPx=0;if(this.isGrouped&&rect.datum.group!==undefined){groupWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.group).width+5;groupHeightPx=this.textHeightPx_;}
-let value=rect.value;if(this.unit)value=this.unit.format(value);const valueWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,value).width+5;const valueHeightPx=this.textHeightPx_;const hoverWidthPx=Math.max(keyWidthPx,valueWidthPx,xLabelWidthPx,groupWidthPx);let hoverLeftPx=rect.leftPx+(rect.widthPx/2);hoverLeftPx=Math.max(hoverLeftPx-hoverWidthPx,-this.margin.left);const hoverHeightPx=keyHeightPx+valueHeightPx+
-xLabelHeightPx+groupHeightPx+2;const topOffSetPx=this.isGrouped?36:12;let hoverTopPx=rect.topPx;hoverTopPx=Math.min(hoverTopPx,this.getBoundingClientRect().height-
-hoverHeightPx-topOffSetPx);chartAreaSel.append('rect').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill','white').attr('stroke','black').attr('x',hoverLeftPx).attr('y',hoverTopPx).attr('width',hoverWidthPx).attr('height',hoverHeightPx);if(seriesKeys.length>1&&!this.isGrouped){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx-2).text(rect.key);}
-if(this.displayXInHover){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+xLabelHeightPx-2).text(rect.datum.x);}
-if(this.isGrouped&&rect.datum.group!==undefined){chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+
-xLabelHeightPx+groupHeightPx-2).text(rect.datum.group);}
-chartAreaSel.append('text').attr('class','hover').on('mouseleave',()=>this.clearHoverValueBox_(rect)).on('mousedown',this.drawToolTip_.bind(this,rect)).attr('fill',rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+hoverHeightPx-2).text(value);},clearHoverValueBox_(rect){const event=window.event;if(event.relatedTarget&&Array.from(event.relatedTarget.classList).includes('hover')){return;}
-const rectHoverEvent=new tr.b.Event('rect-mouseleave');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);d3.select(this.chartAreaElement).selectAll('.hover').remove();},drawRect_(rect,sel){sel=sel.data([rect]);sel.enter().append('rect').attr('fill',rect.color).attr('x',rect.leftPx).attr('y',rect.topPx).attr('width',rect.widthPx).attr('height',rect.heightPx).on('mousedown',this.drawToolTip_.bind(this,rect)).on('mouseenter',this.drawHoverValueBox_.bind(this,rect)).on('mouseleave',this.clearHoverValueBox_.bind(this,rect));sel.exit().remove();},drawUnderflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',rect.leftPx+(rect.widthPx/2)).attr('y',this.graphHeight).on('mousedown',this.drawToolTip_.bind(this,rect)).on('mouseenter',this.drawHoverValueBox_.bind(this,rect)).on('mouseleave',this.clearHoverValueBox_.bind(this,rect));sel.exit().remove();},drawOverflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',rect.leftPx+(rect.widthPx/2)).attr('y',0);sel.exit().remove();},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const chartAreaSel=d3.select(this.chartAreaElement);const seriesKeys=[...this.seriesByKey_.keys()];const rectsSel=dataSel.selectAll('path');this.data_.forEach(function(datum,index){const currentX=this.getXForDatum_(datum,index);let width=undefined;if(index<(this.data_.length-1)){const nextX=this.getXForDatum_(this.data_[index+1],index+1);width=nextX-currentX;}else{width=this.xCushion_;}
-for(const rect of this.getRectsForDatum_(datum,index)){rect.datum=datum;rect.index=index;rect.leftPx=this.xScale_(currentX);rect.rightPx=this.xScale_(currentX+width);rect.widthPx=rect.rightPx-rect.leftPx;this.drawRect_(rect,rectsSel);if(rect.underflow){this.drawUnderflow_(rect,rectsSel);}
-if(rect.overflow){this.drawOverflow_(rect,rectsSel);}}},this);}};return{ColumnChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const MIN_GUIDELINE_HEIGHT_PX=3;const CHECKBOX_WIDTH_PX=18;const NameColumnChart=tr.ui.b.define('name-column-chart',tr.ui.b.ColumnChart);NameColumnChart.prototype={__proto__:tr.ui.b.ColumnChart.prototype,get xAxisHeight(){return 5+(this.textHeightPx_*this.data_.length);},updateMargins_(){super.updateMargins_();let xAxisTickOverhangPx=0;for(let i=0;i'translate(0, '+
-this.textHeightPx_*(this.data_.length-index)+')').attr('x',(d,index)=>this.xScale_(index)).attr('y',d=>this.graphHeight).text(d=>d.x);nameTexts.exit().remove();const guideLines=xAxis.selectAll('line.guide').data(this.data_);guideLines.enter().append('line').attr('x1',(d,index)=>this.xScale_(index+this.xAxisTickOffset)).attr('x2',(d,index)=>this.xScale_(index+this.xAxisTickOffset)).attr('y1',()=>this.graphHeight).attr('y2',(d,index)=>this.graphHeight+Math.max(MIN_GUIDELINE_HEIGHT_PX,(this.textHeightPx_*(this.data_.length-index-1))));}};return{NameColumnChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const LineChart=tr.ui.b.define('line-chart',tr.ui.b.ChartBase2DBrushX);LineChart.prototype={__proto__:tr.ui.b.ChartBase2DBrushX.prototype,decorate(){super.decorate();this.enableHoverBox=true;this.displayXInHover=false;},get defaultGraphWidth(){return 20*this.data_.length;},get defaultGraphHeight(){return 100;},drawHoverValueBox_(circle){tr.ui.b.ColumnChart.prototype.drawHoverValueBox_.call(this,circle);},clearHoverValueBox_(circle){tr.ui.b.ColumnChart.prototype.clearHoverValueBox_.call(this,circle);},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const dataBySeriesKey=this.getDataBySeriesKey_();const seriesKeys=[...this.seriesByKey_.keys()];const pathsSel=dataSel.selectAll('path').data(seriesKeys);pathsSel.enter().append('path').style('fill','none').style('stroke-width','1.5px').style('stroke',key=>this.getDataSeries(key).color).attr('d',key=>{const line=d3.svg.line().x(d=>this.xScale_(d.x)).y(d=>this.yScale_(this.dataRange.clamp(d[key])));return line(dataBySeriesKey[key]);});pathsSel.exit().remove();if(this.enableHoverBox){for(let index=0;indexthis.drawHoverValueBox_(circle));circle.addEventListener('mouseleave',()=>this.clearHoverValueBox_(circle));dataSel[0][0].appendChild(circle);}}}}};return{LineChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const LineChart=tr.ui.b.LineChart;const NameLineChart=tr.ui.b.define('name-line-chart',LineChart);NameLineChart.prototype={__proto__:LineChart.prototype,getXForDatum_(datum,index){return index;},get xAxisHeight(){return 5+(this.textHeightPx_*this.data_.length);},get xAxisTickOffset(){return 0;},updateMargins_(){tr.ui.b.NameColumnChart.prototype.updateMargins_.call(this);},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;tr.ui.b.NameColumnChart.prototype.updateXAxis_.call(this,xAxis);const baseline=xAxis.selectAll('path').data([this]);baseline.enter().append('line').attr('stroke','black').attr('x1',this.xScale_(0)).attr('x2',this.xScale_(this.data_.length-1)).attr('y1',this.graphHeight).attr('y2',this.graphHeight);baseline.exit().remove();}};return{NameLineChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const BoxChart=tr.ui.b.define('box-chart',tr.ui.b.NameLineChart);BoxChart.prototype={__proto__:tr.ui.b.NameLineChart.prototype,get hideLegend(){return true;},updateDataRange_(){if(this.overrideDataRange_!==undefined){return;}
-this.autoDataRange_.reset();for(const datum of this.data_){this.autoDataRange_.addValue(datum.percentile_0);this.autoDataRange_.addValue(datum.percentile_100);}},updateScales_(){super.updateScales_();this.xScale_.domain([0,this.data_.length]);},get xAxisTickOffset(){return 0.5;},updateDataRange_(){if(this.overrideDataRange_!==undefined)return;this.autoDataRange_.reset();for(const datum of this.data_){this.autoDataRange_.addValue(datum.percentile_0);this.autoDataRange_.addValue(datum.percentile_100);}},updateXAxis_(xAxis){xAxis.selectAll('*').remove();if(this.hideXAxis)return;tr.ui.b.NameColumnChart.prototype.updateXAxis_.call(this,xAxis);const baseline=xAxis.selectAll('path').data([this]);baseline.enter().append('line').attr('stroke','black').attr('x1',this.xScale_(0)).attr('x2',this.xScale_(this.data_.length)).attr('y1',this.graphHeight).attr('y2',this.graphHeight);baseline.exit().remove();},updateDataContents_(dataSel){dataSel.selectAll('*').remove();const boxesSel=dataSel.selectAll('path');for(let index=0;indexthis.verticalScale_(d.max)).attr('height',d=>this.verticalScale_(d.min)-this.verticalScale_(d.max)).attr('fill','rgb(213, 236, 229)');},getDataPointAtChartPoint_(chartPoint){const flippedPoint={x:this.graphHeight-chartPoint.y,y:this.graphWidth-chartPoint.x};return super.getDataPointAtChartPoint_(flippedPoint);},drawXAxis_(xAxis){xAxis.attr('transform','translate(0,'+this.graphHeight+')').call(d3.svg.axis().scale(this.horizontalScale_).orient('bottom'));},get yAxisWidth(){return this.computeScaleTickWidth_(this.verticalScale_);},drawYAxis_(yAxis){const axisModifier=d3.svg.axis().scale(this.verticalScale_).orient('left');yAxis.call(axisModifier);},drawHoverValueBox_(rect){const rectHoverEvent=new tr.b.Event('rect-mouseenter');rectHoverEvent.rect=rect;this.dispatchEvent(rectHoverEvent);if(!this.enableHoverBox||(this.isWaterfall_&&rect.key==='hide')){return;}
-const seriesKeys=[...this.seriesByKey_.keys()];const chartAreaSel=d3.select(this.chartAreaElement);chartAreaSel.selectAll('.hover').remove();let keyWidthPx=0;let keyHeightPx=0;let xWidthPx=0;let xHeightPx=0;let groupWidthPx=0;let groupHeightPx=0;if(seriesKeys.length>1&&!this.isGrouped&&!this.isWaterfall_){keyWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.key).width;keyHeightPx=this.textHeightPx_;}
-if(this.data.length>1&&!this.isWaterfall_){xWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,''+rect.datum.x).width;xHeightPx=this.textHeightPx_;}
-if(this.isGrouped&&rect.datum.group!==undefined){groupWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.datum.group).width;groupHeightPx=this.textHeightPx_;}
-const valueWidthPx=tr.ui.b.getSVGTextSize(this.chartAreaElement,rect.value).width;const valueHeightPx=this.textHeightPx_;const maxWidthPx=Math.max(keyWidthPx,xWidthPx,groupWidthPx,valueWidthPx)+5;const hoverWidthPx=this.isGrouped?maxWidthPx:Math.min(maxWidthPx,Math.max(50,rect.widthPx));let hoverTopPx=rect.topPx;hoverTopPx=Math.min(hoverTopPx,this.getBoundingClientRect().height-
-valueHeightPx);let hoverLeftPx=rect.leftPx+(rect.widthPx/2);hoverLeftPx=Math.max(hoverLeftPx-hoverWidthPx,-this.margin.left);chartAreaSel.append('rect').attr('class','hover').attr('fill','white').attr('x',hoverLeftPx).attr('y',hoverTopPx).attr('width',hoverWidthPx).attr('height',keyHeightPx+xHeightPx+
-valueHeightPx+groupHeightPx);if(seriesKeys.length>1&&!this.isGrouped&&!this.isWaterfall_){chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx-3).text(rect.key);}
-if(this.data.length>1&&!this.isWaterfall_){chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+valueHeightPx-3).text(''+rect.datum.x);}
-if(this.isGrouped&&rect.datum.group!==undefined){chartAreaSel.append('text').on('mouseleave',()=>this.clearHoverValueBox_(rect)).attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+keyHeightPx+xHeightPx+groupHeightPx-3).text(rect.datum.group);}
-chartAreaSel.append('text').attr('class','hover').attr('fill',rect.color==='transparent'?'#000000':rect.color).attr('x',hoverLeftPx+2).attr('y',hoverTopPx+xHeightPx+keyHeightPx+
-groupHeightPx+valueHeightPx-3).text(rect.value);},flipRect_(rect){return{datum:rect.datum,index:rect.index,key:rect.key,value:rect.value,color:rect.color,topPx:this.graphHeight-rect.leftPx-rect.widthPx,leftPx:this.graphWidth-rect.topPx-rect.heightPx,widthPx:rect.heightPx,heightPx:rect.widthPx,underflow:rect.underflow,overflow:rect.overflow,};},drawRect_(rect,sel){super.drawRect_(this.flipRect_(rect),sel);},drawUnderflow_(rect,rectsSel){let sel=rectsSel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',0).attr('y',this.graphHeight-rect.leftPx+
-3+(rect.widthPx/2));sel.exit().remove();sel=rectsSel.data([rect]);sel.enter().append('rect').attr('fill','rgba(0, 0, 0, 0)').attr('x',0).attr('y',this.graphHeight-rect.leftPx-rect.widthPx).attr('width',10).attr('height',rect.widthPx).on('mouseenter',()=>this.drawHoverValueBox_(this.flipRect_(rect))).on('mouseleave',()=>this.clearHoverValueBox_(rect));sel.exit().remove();},drawOverflow_(rect,sel){sel=sel.data([rect]);sel.enter().append('text').text('*').attr('fill',rect.color).attr('x',this.graphWidth).attr('y',this.graphHeight-rect.leftPx+
-3+(rect.widthPx/2));sel.exit().remove();}};return{BarChart,};});'use strict';tr.exportTo('tr.ui.b',function(){const NameBarChart=tr.ui.b.define('name-bar-chart',tr.ui.b.BarChart);const Y_AXIS_PADDING=2;NameBarChart.prototype={__proto__:tr.ui.b.BarChart.prototype,getDataPointAtChartPoint_(chartPoint){return{x:tr.ui.b.BarChart.prototype.getDataPointAtChartPoint_.call(this,chartPoint).x,y:parseInt(Math.floor((this.graphHeight-chartPoint.y)/this.barHeight))};},getXForDatum_(datum,index){return index;},get yAxisWidth(){if(this.data.length===0)return 0;return Y_AXIS_PADDING+tr.b.math.Statistics.max(this.data_,d=>tr.ui.b.getSVGTextSize(this,d.x).width);},get defaultGraphHeight(){return(3+this.textHeightPx_)*this.data.length;},updateYAxis_(yAxis){if(tr.ui.b.getSVGTextSize(this,'test').width===0){tr.b.requestAnimationFrame(()=>this.updateYAxis_(yAxis));return;}
-yAxis.selectAll('*').remove();if(this.hideYAxis)return;const nameTexts=yAxis.selectAll('text').data(this.data_);nameTexts.enter().append('text').attr('x',d=>-(tr.ui.b.getSVGTextSize(this,d.x).width+Y_AXIS_PADDING)).attr('y',(d,index)=>this.verticalScale_(index)).text(d=>d.x);nameTexts.exit().remove();let previousTop=undefined;for(const text of nameTexts[0]){const bbox=text.getBBox();if((previousTop===undefined)||(previousTop>(bbox.y+bbox.height))){previousTop=bbox.y;}else{text.style.opacity=0;}}}};return{NameBarChart,};});'use strict';tr.exportTo('tr.v.ui',function(){const DIAGNOSTIC_SPAN_BEHAVIOR={created(){this.diagnostic_=undefined;this.name_=undefined;this.histogram_=undefined;},attached(){if(this.diagnostic_)this.updateContents_();},get diagnostic(){return this.diagnostic_;},build(diagnostic,name,histogram){this.diagnostic_=diagnostic;this.name_=name;this.histogram_=histogram;if(this.isAttached)this.updateContents_();},updateContents_(){throw new Error('dom-modules must override updateContents_()');}};return{DIAGNOSTIC_SPAN_BEHAVIOR,};});'use strict';tr.exportTo('tr.v.ui',function(){const DEFAULT_COLOR_SCHEME=new tr.b.SinebowColorGenerator();function getHistogramName(histogram,diagnosticName,key){if(histogram===undefined)return undefined;const nameMap=histogram.diagnostics.get(diagnosticName);if(nameMap===undefined)return undefined;return nameMap.get(key);}
-class BreakdownTableSummaryRow{constructor(displayElement,histogramNames){this.displayElement_=displayElement;this.histogramNames_=histogramNames;this.keySpan_=undefined;}
-get numberValue(){return undefined;}
-get keySpan(){if(this.keySpan_===undefined){if(this.histogramNames_.length){this.keySpan_=document.createElement('tr-ui-a-analysis-link');this.keySpan_.setSelectionAndContent(this.histogramNames_,'Select All');}else{this.keySpan_='Sum';}}
-return this.keySpan_;}
-get name(){return'Sum';}
-get displayElement(){return this.displayElement_;}
-get stringPercent(){return'100%';}}
-class BreakdownTableRow{constructor(name,value,histogramName,unit,color){this.name_=name;this.value_=value;this.histogramName_=histogramName;this.unit_=unit;if(typeof value!=='number'){throw new Error('unsupported value '+value);}
-this.tableSum_=undefined;this.keySpan_=undefined;this.color_=color;const hsl=this.color.toHSL();hsl.l*=0.85;this.highlightedColor_=tr.b.Color.fromHSL(hsl);if(this.unit_){this.displayElement_=tr.v.ui.createScalarSpan(this.numberValue,{unit:this.unit_,});}else{this.displayElement_=tr.ui.b.createSpan({textContent:this.stringValue,});}}
-get name(){return this.name_;}
-get color(){return this.color_;}
-get highlightedColor(){return this.highlightedColor_;}
-get keySpan(){if(this.keySpan_===undefined){if(this.histogramName_){this.keySpan_=document.createElement('tr-ui-a-analysis-link');this.keySpan_.setSelectionAndContent([this.histogramName_],this.name);this.keySpan_.color=this.color;this.keySpan_.title=this.histogramName_;}else{this.keySpan_=document.createElement('span');this.keySpan_.innerText=this.name;this.keySpan_.style.color=this.color;}}
-return this.keySpan_;}
-get numberValue(){if(!isNaN(this.value_)&&(this.value_!==Infinity)&&(this.value_!==-Infinity)&&(this.value_>0))return this.value_;return undefined;}
-get stringValue(){if((this.unit_!==undefined)&&!isNaN(this.value_)&&(this.value_!==Infinity)&&(this.value_!==-Infinity)){return this.unit_.format(this.value_);}
-return this.value_.toString();}
-set tableSum(s){this.tableSum_=s;}
-get stringPercent(){if(this.tableSum_===undefined)return'';const num=this.numberValue;if(num===undefined)return'';return Math.floor(num*100.0/this.tableSum_)+'%';}
-get displayElement(){return this.displayElement_;}
-compare(other){if(this.numberValue===undefined){if(other.numberValue===undefined){return this.name.localeCompare(other.name);}
-return 1;}
-if(other.numberValue===undefined){return-1;}
-if(this.numberValue===other.numberValue){return this.name.localeCompare(other.name);}
-return other.numberValue-this.numberValue;}}
-Polymer({is:'tr-v-ui-breakdown-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],created(){this.chart_=new tr.ui.b.ColumnChart();this.chart_.graphHeight=130;this.chart_.isStacked=true;this.chart_.hideXAxis=true;this.chart_.hideLegend=true;this.chart_.enableHoverBox=false;this.chart_.addEventListener('rect-mouseenter',event=>this.onRectMouseEnter_(event));this.chart_.addEventListener('rect-mouseleave',event=>this.onRectMouseLeave_(event));},onRectMouseEnter_(event){for(const row of this.$.table.tableRows){if(row.name===event.rect.key){row.displayElement.style.background=event.rect.color;row.keySpan.scrollIntoViewIfNeeded();}else{row.displayElement.style.background='';}}},onRectMouseLeave_(event){for(const row of this.$.table.tableRows){row.displayElement.style.background='';}},ready(){Polymer.dom(this.$.container).appendChild(this.chart_);this.$.table.zebra=true;this.$.table.showHeader=false;this.$.table.tableColumns=[{value:row=>row.keySpan,},{value:row=>row.displayElement,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,},{value:row=>row.stringPercent,align:tr.ui.b.TableFormat.ColumnAlignment.RIGHT,},];},updateContents_(){this.$.container.style.display='none';this.$.table.style.display='none';this.$.empty.style.display='block';if(!this.diagnostic_){this.chart_.data=[];return;}
-if(this.histogram_)this.chart_.unit=this.histogram_.unit;let colorScheme=undefined;if(this.diagnostic.colorScheme===tr.v.d.COLOR_SCHEME_CHROME_USER_FRIENDLY_CATEGORY_DRIVER){colorScheme=(name)=>{let cat=name.split(' ');cat=cat[cat.length-1];return tr.e.chrome.ChromeUserFriendlyCategoryDriver.getColor(cat);};}else if(this.diagnostic.colorScheme){colorScheme=(name)=>tr.b.FixedColorSchemeRegistry.lookUp(this.diagnostic.colorScheme).getColor(name);}else{colorScheme=(name)=>DEFAULT_COLOR_SCHEME.colorForKey(name);}
-const tableRows=[];let tableSum=0;const histogramNames=[];for(const[key,value]of this.diagnostic){const histogramName=getHistogramName(this.histogram_,this.name_,key);const row=new BreakdownTableRow(key,value,histogramName,this.chart_.unit,colorScheme(key));tableRows.push(row);if(row.numberValue!==undefined)tableSum+=row.numberValue;if(histogramName){histogramNames.push(histogramName);}}
-tableRows.sort((x,y)=>x.compare(y));if(tableSum>0){let summaryDisplayElement=tableSum;if(this.chart_.unit!==undefined){summaryDisplayElement=this.chart_.unit.format(tableSum);}
-summaryDisplayElement=tr.ui.b.createSpan({textContent:summaryDisplayElement,});tableRows.unshift(new BreakdownTableSummaryRow(summaryDisplayElement,histogramNames));}
-const chartData={x:0};for(const row of tableRows){if(row.numberValue===undefined)continue;row.tableSum=tableSum;chartData[row.name]=row.numberValue;const dataSeries=this.chart_.getDataSeries(row.name);dataSeries.color=row.color;dataSeries.highlightedColor=row.highlightedColor;}
-if(tableRows.length>0){this.$.table.style.display='block';this.$.empty.style.display='none';this.$.table.tableRows=tableRows;this.$.table.rebuild();}
-if(Object.keys(chartData).length>1){this.$.container.style.display='block';this.$.empty.style.display='none';this.chart_.data=[chartData];}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-collected-related-event-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';for(const[canonicalUrl,events]of this.diagnostic){const link=document.createElement('a');if(events.length===1){const event=tr.b.getOnlyElement(events);link.textContent=event.title+' '+
-tr.b.Unit.byName.timeDurationInMs.format(event.duration);}else{link.textContent=events.length+' events';}
-link.href=canonicalUrl;Polymer.dom(this).appendChild(link);Polymer.dom(this).appendChild(document.createElement('br'));}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-date-range-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){if(this.diagnostic===undefined){Polymer.dom(this).textContent='';return;}
-Polymer.dom(this).textContent=this.diagnostic.toString();}});return{};});'use strict';function isTable(object){if(!(object instanceof Array)||(object.length<2))return false;for(const colName in object[0]){if(typeof colName!=='string')return false;}
-for(let i=0;imaxDepth){this.appendSimpleText_(label,indent,'',suffix);return;}
-if(object===undefined){this.appendSimpleText_(label,indent,'undefined',suffix);return;}
-if(object===null){this.appendSimpleText_(label,indent,'null',suffix);return;}
-if(!(object instanceof Object)){const type=typeof object;if(type!=='string'){return this.appendSimpleText_(label,indent,object,suffix);}
-let objectReplaced=false;if((object[0]==='{'&&object[object.length-1]==='}')||(object[0]==='['&&object[object.length-1]===']')){try{object=JSON.parse(object);objectReplaced=true;}catch(e){}}
-if(!objectReplaced){if(object.includes('\n')){const lines=object.split('\n');lines.forEach(function(line,i){let text;let ioff;let ll;let ss;if(i===0){text='"'+line;ioff=0;ll=label;ss='';}else if(i1?',':']'+suffix);for(let i=1;i1?',':'}'+suffix);for(let i=1;ix-y);}else{values.sort();}
-for(const value of values){const link={textContent:''+value};if(isLinkTuple(value)){link.textContent=value[0];link.href=value[1];}else if(tr.b.isUrl(value)){link.href=value;}
-if(this.name_===tr.v.d.RESERVED_NAMES.TRACE_URLS){link.textContent=value.substr(1+value.lastIndexOf('/'));}
-const linkEl=tr.ui.b.createLink(link);if(link.href){linkEl.target='_blank';linkEl.addEventListener('click',e=>e.stopPropagation());}
-this.$.links.appendChild(linkEl);}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-related-event-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';const events=new tr.model.EventSet([...this.diagnostic]);const link=document.createElement('tr-ui-a-analysis-link');let label=events.length+' events';if(events.length===1){const event=tr.b.getOnlyElement(events);label=event.title+' ';label+=tr.b.Unit.byName.timeDurationInMs.format(event.duration);}
-link.setSelectionAndContent(events,label);Polymer.dom(this).appendChild(link);}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-scalar-diagnostic-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){this.$.scalar.setValueAndUnit(this.diagnostic.value.value,this.diagnostic.value.unit);}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){Polymer({is:'tr-v-ui-unmergeable-diagnostic-set-span',behaviors:[tr.v.ui.DIAGNOSTIC_SPAN_BEHAVIOR],updateContents_(){Polymer.dom(this).textContent='';for(const diagnostic of this.diagnostic){if(diagnostic instanceof tr.v.d.RelatedNameMap)continue;const div=document.createElement('div');div.appendChild(tr.v.ui.createDiagnosticSpan(diagnostic,this.name_,this.histogram_));Polymer.dom(this).appendChild(div);}}});return{};});'use strict';tr.exportTo('tr.v.ui',function(){function findElementNameForDiagnostic(diagnostic){let typeInfo=undefined;let curProto=diagnostic.constructor.prototype;while(curProto){typeInfo=tr.v.d.Diagnostic.findTypeInfo(curProto.constructor);if(typeInfo&&typeInfo.metadata.elementName)break;typeInfo=undefined;curProto=curProto.__proto__;}
-if(typeInfo===undefined){throw new Error(diagnostic.constructor.name+' or a base class must have a registered elementName');}
-const tagName=typeInfo.metadata.elementName;if(tr.ui.b.isUnknownElementName(tagName)){throw new Error('Element not registered: '+tagName);}
-return tagName;}
-function createDiagnosticSpan(diagnostic,name,histogram){const tagName=findElementNameForDiagnostic(diagnostic);const span=document.createElement(tagName);if(span.build===undefined)throw new Error(tagName);span.build(diagnostic,name,histogram);return span;}
-return{createDiagnosticSpan,};});'use strict';tr.exportTo('tr.v.ui',function(){function makeColumn(title,histogram){return{title,value(map){const diagnostic=map.get(title);if(!diagnostic)return'';return tr.v.ui.createDiagnosticSpan(diagnostic,title,histogram);}};}
-Polymer({is:'tr-v-ui-diagnostic-map-table',created(){this.diagnosticMaps_=undefined;this.histogram_=undefined;this.isMetadata_=false;},set histogram(h){this.histogram_=h;},set isMetadata(m){this.isMetadata_=m;this.$.table.showHeader=!this.isMetadata_;},set diagnosticMaps(maps){this.diagnosticMaps_=maps;this.updateContents_();},get diagnosticMaps(){return this.diagnosticMaps_;},updateContents_(){if(this.isMetadata_&&this.diagnosticMaps_.length!==1){throw new Error('Metadata diagnostic-map-tables require exactly 1 DiagnosticMap');}
-if(this.diagnosticMaps_===undefined||this.diagnosticMaps_.length===0){this.$.table.tableRows=[];this.$.table.tableColumns=[];return;}
-let names=new Set();for(const map of this.diagnosticMaps_){for(const[name,diagnostic]of map){if(diagnostic instanceof tr.v.d.UnmergeableDiagnosticSet)continue;if(diagnostic instanceof tr.v.d.CollectedRelatedEventSet)continue;names.add(name);}}
-names=Array.from(names).sort();const histogram=this.histogram_;if(this.isMetadata_){const diagnosticMap=this.diagnosticMaps_[0];this.$.table.tableColumns=[{value(name){return name.name;}},{value(name){const diagnostic=diagnosticMap.get(name.name);if(!diagnostic)return'';return tr.v.ui.createDiagnosticSpan(diagnostic,name.name,histogram);}},];this.$.table.tableRows=names.map(name=>{return{name};});}else{this.$.table.tableColumns=names.map(name=>makeColumn(name,histogram));this.$.table.tableRows=this.diagnosticMaps_;}
-this.$.table.rebuild();}});return{};});'use strict';tr.exportTo('tr.b',function(){class Serializable{constructor(){Object.defineProperty(this,'properties_',{configurable:false,enumerable:false,value:new Map(),});}
-define(name,initialValue){if(this[name]!==undefined){throw new Error(`"${name}" is already defined.`);}
-if(name[name.length-1]==='_'){throw new Error(`"${name}" cannot end with an underscore.`);}
-this.properties_.set(name,initialValue);Object.defineProperty(this,name,{configurable:false,enumerable:true,get:()=>this.properties_.get(name),set:value=>this.setProperty_(name,value),});}
-setProperty_(name,value){this.properties_.set(name,value);}
-clone(){return Serializable.fromDict(this.asDict());}
-asDict(){function visit(obj){if(obj instanceof Serializable)return obj.asDict();if(obj instanceof Set)return Array.from(obj);if(obj instanceof Array)return obj.map(visit);if(!(obj instanceof Map))return obj;const result={};for(const[name,value]of obj){result[name]=visit(value);}
-return result;}
-const dict={type:this.constructor.name};for(const[name,value]of this.properties_){dict[name.replace(/_$/,'')]=visit(value);}
-return dict;}
-static fromDict(dict){function visit(d){if(d instanceof Array)return d.map(visit);if(!(d instanceof Object))return d;if(typeof d.type==='string')return Serializable.fromDict(d);const result=new Map();for(const[name,value]of Object.entries(d)){result.set(name,visit(value));}
-return result;}
-const typeInfo=Serializable.findTypeInfoWithName(dict.type);const result=new typeInfo.constructor();for(const[name,value]of Object.entries(dict)){result[name]=visit(value);}
-return result;}}
-const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);options.defaultMetadata={};options.mandatoryBaseClass=Serializable;tr.b.decorateExtensionRegistry(Serializable,options);return{Serializable,};});'use strict';tr.exportTo('tr.b',function(){class ViewState extends tr.b.Serializable{constructor(){super();tr.b.EventTarget.decorate(this);}
-setProperty_(name,value){this.update(new Map([[name,value]]));}
-async updateFromViewState(other){await this.update(other.properties_);}
-async update(delta){if(!(delta instanceof Map))delta=new Map(Object.entries(delta));const actualDelta={};for(const[name,current]of delta){const previous=this[name];if(previous===current)continue;actualDelta[name]={previous,current};tr.b.Serializable.prototype.setProperty_.call(this,name,current);}
-if(Object.keys(actualDelta).length===0)return;await tr.b.dispatchSimpleEventAsync(this,this.updateEventName_,{delta:actualDelta});}
-get updateEventName_(){return this.constructor.name+'.update';}
-addUpdateListener(listener){this.addEventListener(this.updateEventName_,listener);}
-removeUpdateListener(listener){this.removeEventListener(this.updateEventName_,listener);}}
-return{ViewState,};});'use strict';tr.exportTo('tr.v.ui',function(){class HistogramSetViewState extends tr.b.ViewState{constructor(){super();this.define('searchQuery','');this.define('referenceDisplayLabel','');this.define('displayStatisticName','');this.define('showAll',true);this.define('groupings',[]);this.define('sortColumnIndex',0);this.define('sortDescending',false);this.define('constrainNameColumn',true);this.define('tableRowStates',new Map());this.define('alpha',0.01);}}
-tr.b.ViewState.register(HistogramSetViewState);class HistogramSetTableRowState extends tr.b.ViewState{constructor(){super();this.define('isExpanded',false);this.define('isOverviewed',false);this.define('cells',new Map());this.define('subRows',new Map());this.define('diagnosticsTab','');}
-asCompactDict(){const result={};if(this.isExpanded)result.e='1';if(this.isOverviewed)result.o='1';if(this.diagnosticsTab)result.d=this.diagnosticsTab;const cells={};for(const[name,cell]of this.cells){const cellDict=cell.asCompactDict();if(cellDict===undefined)continue;cells[name]=cellDict;}
-if(Object.keys(cells).length>0)result.c=cells;const subRows={};for(const[name,row]of this.subRows){const rowDict=row.asCompactDict();if(rowDict===undefined)continue;subRows[name]=rowDict;}
-if(Object.keys(subRows).length>0)result.r=subRows;if(Object.keys(result).length===0)return undefined;return result;}
-async updateFromCompactDict(dict){await this.update({isExpanded:dict.e==='1',isOverviewed:dict.o==='1',diagnosticsTab:dict.d||'',});for(const[name,cellDict]of Object.entries(dict.c||{})){const cell=this.cells.get(name);if(cell===undefined)continue;await cell.updateFromCompactDict(cellDict);}
-for(const[name,subRowDict]of Object.entries(dict.r||{})){const subRow=this.subRows.get(name);if(subRow===undefined)continue;await subRow.updateFromCompactDict(subRowDict);}}*walk(){yield this;for(const row of this.subRows.values())yield*row.walk();}
-static*walkAll(rootRows){for(const rootRow of rootRows)yield*rootRow.walk();}}
-tr.b.ViewState.register(HistogramSetTableRowState);class HistogramSetTableCellState extends tr.b.ViewState{constructor(){super();this.define('isOpen',false);this.define('brushedBinRange',new tr.b.math.Range());this.define('mergeSampleDiagnostics',true);}
-asCompactDict(){const result={};if(this.isOpen)result.o='1';if(!this.mergeSampleDiagnostics)result.m='0';if(!this.brushedBinRange.isEmpty){result.b=this.brushedBinRange.min+'_'+this.brushedBinRange.max;}
-if(Object.keys(result).length===0)return undefined;return result;}
-async updateFromCompactDict(dict){let binRange=this.brushedBinRange;if(dict.b){let[bMin,bMax]=dict.b.split('_');bMin=parseInt(bMin);bMax=parseInt(bMax);if(bMin!==binRange.min||bMax!==binRange.max){binRange=tr.b.math.Range.fromExplicitRange(bMin,bMax);}}
-await this.update({isOpen:dict.o==='1',brushedBinRange:binRange,mergeSampleDiagnostics:dict.m!=='0',});}}
-tr.b.ViewState.register(HistogramSetTableCellState);return{HistogramSetTableCellState,HistogramSetTableRowState,HistogramSetViewState,};});'use strict';Polymer({is:'tr-v-ui-scalar-map-table',created(){this.scalarMap_=new Map();this.significance_=new Map();},ready(){this.$.table.showHeader=false;this.$.table.tableColumns=[{value(row){return row.name;}},{value(row){const span=tr.v.ui.createScalarSpan(row.value);if(row.significance!==undefined){span.significance=row.significance;}else if(row.anyRowsHaveSignificance){span.style.marginRight='18px';}
-span.style.whiteSpace='nowrap';return span;}}];},get scalarMap(){return this.scalarMap_;},set scalarMap(map){this.scalarMap_=map;this.updateContents_();},setSignificanceForKey(key,significance){this.significance_.set(key,significance);this.updateContents_();},updateContents_(){const rows=[];for(const[key,scalar]of this.scalarMap){rows.push({name:key,value:scalar,significance:this.significance_.get(key),anyRowsHaveSignificance:(this.significance_.size>0)});}
-this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';tr.exportTo('tr.v.ui',function(){const DEFAULT_BAR_HEIGHT_PX=5;const TRUNCATE_BIN_MARGIN=0.15;const IGNORE_DELTA_STATISTICS_NAMES=[`${tr.v.DELTA}min`,`%${tr.v.DELTA}min`,`${tr.v.DELTA}max`,`%${tr.v.DELTA}max`,`${tr.v.DELTA}sum`,`%${tr.v.DELTA}sum`,`${tr.v.DELTA}count`,`%${tr.v.DELTA}count`,];Polymer({is:'tr-v-ui-histogram-span',created(){this.viewStateListener_=this.onViewStateUpdate_.bind(this);this.viewState=new tr.v.ui.HistogramSetTableCellState();this.rowStateListener_=this.onRowStateUpdate_.bind(this);this.rowState=new tr.v.ui.HistogramSetTableRowState();this.rootStateListener_=this.onRootStateUpdate_.bind(this);this.rootState=new tr.v.ui.HistogramSetViewState();this.histogram_=undefined;this.referenceHistogram_=undefined;this.graphWidth_=undefined;this.graphHeight_=undefined;this.mouseDownBin_=undefined;this.prevBrushedBinRange_=new tr.b.math.Range();this.anySampleDiagnostics_=false;this.canMergeSampleDiagnostics_=true;this.mwuResult_=undefined;},get rowState(){return this.rowState_;},set rowState(rs){if(this.rowState){this.rowState.removeUpdateListener(this.rowStateListener_);}
-this.rowState_=rs;this.rowState.addUpdateListener(this.rowStateListener_);if(this.isAttached)this.updateContents_();},get viewState(){return this.viewState_;},set viewState(vs){if(this.viewState){this.viewState.removeUpdateListener(this.viewStateListener_);}
-this.viewState_=vs;this.viewState.addUpdateListener(this.viewStateListener_);if(this.isAttached)this.updateContents_();},get rootState(){return this.rootState_;},set rootState(vs){if(this.rootState){this.rootState.removeUpdateListener(this.rootStateListener_);}
-this.rootState_=vs;this.rootState.addUpdateListener(this.rootStateListener_);if(this.isAttached)this.updateContents_();},build(histogram,opt_referenceHistogram){this.histogram_=histogram;this.$.metric_diagnostics.histogram=histogram;this.$.sample_diagnostics.histogram=histogram;this.referenceHistogram_=opt_referenceHistogram;if(this.histogram.canCompare(this.referenceHistogram)){this.mwuResult_=tr.b.math.Statistics.mwu(this.histogram.sampleValues,this.referenceHistogram.sampleValues,this.rootState.alpha);}
-this.anySampleDiagnostics_=false;for(const bin of this.histogram.allBins){if(bin.diagnosticMaps.length>0){this.anySampleDiagnostics_=true;break;}}
-if(this.isAttached)this.updateContents_();},onViewStateUpdate_(event){if(event.delta.brushedBinRange){if(this.chart_!==undefined){this.chart_.brushedRange=this.viewState.brushedBinRange;}
-this.updateDiagnostics_();}
-if(event.delta.mergeSampleDiagnostics&&(this.viewState.mergeSampleDiagnostics!==this.$.merge_sample_diagnostics.checked)){this.$.merge_sample_diagnostics.checked=this.canMergeSampleDiagnostics&&this.viewState.mergeSampleDiagnostics;this.updateDiagnostics_();}},updateSignificance_(){if(!this.mwuResult_)return;this.$.stats.setSignificanceForKey(`${tr.v.DELTA}avg`,this.mwuResult_.significance);},onRootStateUpdate_(event){if(event.delta.alpha&&this.mwuResult_){this.mwuResult_.compare(this.rootState.alpha);this.updateSignificance_();}},onRowStateUpdate_(event){if(event.delta.diagnosticsTab){if(this.rowState.diagnosticsTab===this.$.sample_diagnostics_container.tabLabel){this.updateDiagnostics_();}else{for(const tab of this.$.diagnostics.subViews){if(this.rowState.diagnosticsTab===tab.tabLabel){this.$.diagnostics.selectedSubView=tab;break;}}}}},ready(){this.$.metric_diagnostics.tabLabel='histogram diagnostics';this.$.sample_diagnostics_container.tabLabel='sample diagnostics';this.$.metadata_diagnostics.tabLabel='metadata';this.$.metadata_diagnostics.isMetadata=true;this.$.diagnostics.addEventListener('selected-tab-change',this.onSelectedDiagnosticsChanged_.bind(this));this.$.drag_handle.target=this.$.container;this.$.drag_handle.addEventListener('drag-handle-resize',this.onResize_.bind(this));},attached(){if(this.histogram_!==undefined)this.updateContents_();},get canMergeSampleDiagnostics(){return this.canMergeSampleDiagnostics_;},set canMergeSampleDiagnostics(merge){this.canMergeSampleDiagnostics_=merge;if(!merge)this.viewState.mergeSampleDiagnostics=false;this.$.merge_sample_diagnostics_container.style.display=(merge?'':'none');},onResize_(event){event.stopPropagation();let heightPx=parseInt(this.$.container.style.height);if(heightPxy-x);const dataRange=tr.b.math.Range.fromExplicitRange(0,binCounts[0]);if(binCounts[1]>0&&binCounts[0]>(binCounts[1]*2)){dataRange.max=binCounts[1]*(1+TRUNCATE_BIN_MARGIN);}
-if(binCounts[2]>0&&binCounts[1]>(binCounts[2]*2)){dataRange.max=binCounts[2]*(1+TRUNCATE_BIN_MARGIN);}
-this.chart_.overrideDataRange=dataRange;this.chart_.data=chartData;this.$.stats_container.style.maxHeight=this.chart_.getBoundingClientRect().height+'px';}});});'use strict';tr.exportTo('tr.ui.analysis',function(){const EVENT_FIELD=[{key:'start',label:'Start'},{key:'cpuDuration',label:'CPU Duration'},{key:'duration',label:'Duration'},{key:'cpuSelfTime',label:'CPU Self Time'},{key:'selfTime',label:'Self Time'}];function buildDiagnostics_(slice){const diagnostics={};for(const item of EVENT_FIELD){const fieldName=item.key;if(slice[fieldName]===undefined)continue;diagnostics[fieldName]=new tr.v.d.Scalar(new tr.b.Scalar(tr.b.Unit.byName.timeDurationInMs,slice[fieldName]));}
-diagnostics.args=new tr.v.d.GenericSet([slice.args]);diagnostics.event=new tr.v.d.RelatedEventSet(slice);return diagnostics;}
-Polymer({is:'tr-ui-a-multi-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;this.eventsHaveDuration_=true;this.eventsHaveSubRows_=true;},ready(){this.$.radioPicker.style.display='none';this.$.radioPicker.items=EVENT_FIELD;this.$.radioPicker.select('cpuSelfTime');this.$.radioPicker.addEventListener('change',()=>{if(this.isAttached)this.updateContents_();});this.$.histogramSpan.graphWidth=400;this.$.histogramSpan.canMergeSampleDiagnostics=false;this.$.histogramContainer.style.display='none';},attached(){if(this.currentSelection_!==undefined)this.updateContents_();},set selection(selection){if(selection.length<=1){throw new Error('Only supports multiple items');}
-this.setSelectionWithoutErrorChecks(selection);},get selection(){return this.currentSelection_;},setSelectionWithoutErrorChecks(selection){this.currentSelection_=selection;if(this.isAttached)this.updateContents_();},get eventsHaveDuration(){return this.eventsHaveDuration_;},set eventsHaveDuration(eventsHaveDuration){this.eventsHaveDuration_=eventsHaveDuration;if(this.isAttached)this.updateContents_();},get eventsHaveSubRows(){return this.eventsHaveSubRows_;},set eventsHaveSubRows(eventsHaveSubRows){this.eventsHaveSubRows_=eventsHaveSubRows;if(this.isAttached)this.updateContents_();},buildHistogram_(selectedKey){let leftBoundary=Number.MAX_VALUE;let rightBoundary=tr.b.math.Statistics.percentile(this.currentSelection_,0.95,function(value){leftBoundary=Math.min(leftBoundary,value[selectedKey]);return value[selectedKey];});if(leftBoundary===rightBoundary)rightBoundary+=1;const histogram=new tr.v.Histogram('',tr.b.Unit.byName.timeDurationInMs,tr.v.HistogramBinBoundaries.createLinear(leftBoundary,rightBoundary,Math.ceil(Math.sqrt(this.currentSelection_.length))));histogram.customizeSummaryOptions({sum:false,percentile:[0.5,0.9],});for(const slice of this.currentSelection_){histogram.addSample(slice[selectedKey],buildDiagnostics_(slice));}
-return histogram;},updateContents_(){const selection=this.currentSelection_;if(!selection)return;const eventsByTitle=selection.getEventsOrganizedByTitle();const numTitles=Object.keys(eventsByTitle).length;this.$.eventSummaryTable.configure({showTotals:numTitles>1,eventsByTitle,eventsHaveDuration:this.eventsHaveDuration_,eventsHaveSubRows:this.eventsHaveSubRows_});this.$.selectionSummaryTable.selection=this.currentSelection_;if(numTitles===1){this.$.radioPicker.style.display='block';this.$.histogramContainer.style.display='flex';this.$.histogramSpan.build(this.buildHistogram_(this.$.radioPicker.selectedKey));if(this.$.histogramSpan.histogram.numValues===0){this.$.histogramContainer.style.display='none';}}else{this.$.radioPicker.style.display='none';this.$.histogramContainer.style.display='none';}}});return{};});'use strict';tr.exportTo('tr.ui.analysis',function(){const FLOW_IN=0x1;const FLOW_OUT=0x2;const FLOW_IN_OUT=FLOW_IN|FLOW_OUT;function FlowClassifier(){this.numEvents_=0;this.eventsByGUID_={};}
-FlowClassifier.prototype={getFS_(event){let fs=this.eventsByGUID_[event.guid];if(fs===undefined){this.numEvents_++;fs={state:0,event};this.eventsByGUID_[event.guid]=fs;}
-return fs;},addInFlow(event){const fs=this.getFS_(event);fs.state|=FLOW_IN;return event;},addOutFlow(event){const fs=this.getFS_(event);fs.state|=FLOW_OUT;return event;},hasEvents(){return this.numEvents_>0;},get inFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_IN){selection.push(fs.event);}}
-return selection;},get outFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_OUT){selection.push(fs.event);}}
-return selection;},get internalFlowEvents(){const selection=new tr.model.EventSet();for(const guid in this.eventsByGUID_){const fs=this.eventsByGUID_[guid];if(fs.state===FLOW_IN_OUT){selection.push(fs.event);}}
-return selection;}};return{FlowClassifier,};});'use strict';function*getEventInFlowEvents(event){if(!event.inFlowEvents)return;yield*event.inFlowEvents;}
-function*getEventOutFlowEvents(event){if(!event.outFlowEvents)return;yield*event.outFlowEvents;}
-function*getEventAncestors(event){if(!event.enumerateAllAncestors)return;yield*event.enumerateAllAncestors();}
-function*getEventDescendents(event){if(!event.enumerateAllDescendents)return;yield*event.enumerateAllDescendents();}
-Polymer({is:'tr-ui-a-related-events',ready(){this.eventGroups_=[];this.cancelFunctions_=[];this.$.table.tableColumns=[{title:'Event(s)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.type;if(row.tooltip){typeEl.title=row.tooltip;}
-return typeEl;},width:'150px'},{title:'Link',width:'100%',value(row){const linkEl=document.createElement('tr-ui-a-analysis-link');if(row.name){linkEl.setSelectionAndContent(row.selection,row.name);}else{linkEl.selection=row.selection;}
-return linkEl;}}];},hasRelatedEvents(){return(this.eventGroups_&&this.eventGroups_.length>0);},setRelatedEvents(eventSet){this.cancelAllTasks_();this.eventGroups_=[];this.addRuntimeCallStats_(eventSet);this.addOverlappingV8ICStats_(eventSet);this.addV8GCObjectStats_(eventSet);this.addV8Slices_(eventSet);this.addConnectedFlows_(eventSet);this.addConnectedEvents_(eventSet);this.addOverlappingSamples_(eventSet);this.updateContents_();},addConnectedFlows_(eventSet){const classifier=new tr.ui.analysis.FlowClassifier();eventSet.forEach(function(slice){if(slice.inFlowEvents){slice.inFlowEvents.forEach(function(flow){classifier.addInFlow(flow);});}
-if(slice.outFlowEvents){slice.outFlowEvents.forEach(function(flow){classifier.addOutFlow(flow);});}});if(!classifier.hasEvents())return;const addToEventGroups=function(type,flowEvent){this.eventGroups_.push({type,selection:new tr.model.EventSet(flowEvent),name:flowEvent.title});};classifier.inFlowEvents.forEach(addToEventGroups.bind(this,'Incoming flow'));classifier.outFlowEvents.forEach(addToEventGroups.bind(this,'Outgoing flow'));classifier.internalFlowEvents.forEach(addToEventGroups.bind(this,'Internal flow'));},cancelAllTasks_(){this.cancelFunctions_.forEach(function(cancelFunction){cancelFunction();});this.cancelFunctions_=[];},addConnectedEvents_(eventSet){this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('Preceding events','Add all events that have led to the selected one(s), connected by '+'flow arrows or by call stack.',eventSet,function*(event){yield*getEventInFlowEvents(event);yield*getEventAncestors(event);if(event.startSlice){yield event.startSlice;}}.bind(this)));this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('Following events','Add all events that have been caused by the selected one(s), '+'connected by flow arrows or by call stack.',eventSet,function*(event){yield*getEventOutFlowEvents(event);yield*getEventDescendents(event);if(event.endSlice){yield event.endSlice;}}.bind(this)));this.cancelFunctions_.push(this.createEventsLinkIfNeeded_('All connected events','Add all events connected to the selected one(s) by flow arrows or '+'by call stack.',eventSet,function*(event){yield*getEventInFlowEvents(event);yield*getEventOutFlowEvents(event);yield*getEventAncestors(event);yield*getEventDescendents(event);if(event.startSlice){yield event.startSlice;}
-if(event.endSlice){yield event.endSlice;}}.bind(this)));},createEventsLinkIfNeeded_(title,tooltip,events,connectedFn){events=new tr.model.EventSet(events);const eventsToProcess=new Set(events);let wasChanged=false;let task;let isCanceled=false;function addEventsUntilTimeout(){if(isCanceled)return;const timeout=window.performance.now()+8;while(eventsToProcess.size>0&&window.performance.now()<=timeout){const nextEvent=tr.b.getFirstElement(eventsToProcess);eventsToProcess.delete(nextEvent);for(const eventToAdd of connectedFn(nextEvent)){if(!events.contains(eventToAdd)){events.push(eventToAdd);eventsToProcess.add(eventToAdd);wasChanged=true;}}}
-if(eventsToProcess.size>0){const newTask=new tr.b.Task(addEventsUntilTimeout.bind(this),this);task.after(newTask);task=newTask;return;}
-if(!wasChanged)return;this.eventGroups_.push({type:title,tooltip,selection:events});this.updateContents_();}
-function cancelTask(){isCanceled=true;}
-task=new tr.b.Task(addEventsUntilTimeout.bind(this),this);tr.b.Task.RunWhenIdle(task);return cancelTask;},addOverlappingSamples_(eventSet){const samples=new tr.model.EventSet();for(const slice of eventSet){if(!slice.parentContainer||!slice.parentContainer.samples){continue;}
-const candidates=slice.parentContainer.samples;const range=tr.b.math.Range.fromExplicitRange(slice.start,slice.start+slice.duration);const filteredSamples=range.filterArray(candidates,function(value){return value.start;});for(const sample of filteredSamples){samples.push(sample);}}
-if(samples.length>0){this.eventGroups_.push({type:'Overlapping samples',tooltip:'All samples overlapping the selected slice(s).',selection:samples});}},addV8Slices_(eventSet){const v8Slices=new tr.model.EventSet();for(const slice of eventSet){if(slice.category==='v8'){v8Slices.push(slice);}}
-if(v8Slices.length>0){this.eventGroups_.push({type:'V8 Slices',tooltip:'All V8 slices in the selected slice(s).',selection:v8Slices});}},addRuntimeCallStats_(eventSet){const slices=eventSet.filter(function(slice){return(slice.category==='v8'||slice.category==='disabled-by-default-v8.runtime_stats')&&slice.runtimeCallStats;});if(slices.length>0){this.eventGroups_.push({type:'Runtime call stats table',tooltip:'All V8 slices containing runtime call stats table in the selected slice(s).',selection:slices});}},addV8GCObjectStats_(eventSet){const slices=new tr.model.EventSet();for(const slice of eventSet){if(slice.title==='V8.GC_Objects_Stats'){slices.push(slice);}}
-if(slices.length>0){this.eventGroups_.push({type:'V8 GC stats table',tooltip:'All V8 GC statistics slices in the selected set.',selection:slices});}},addOverlappingV8ICStats_(eventSet){const slices=new tr.model.EventSet();for(const slice of eventSet){if(!slice.parentContainer||!slice.parentContainer.sliceGroup){continue;}
-const sliceGroup=slice.parentContainer.sliceGroup.slices;const range=tr.b.math.Range.fromExplicitRange(slice.start,slice.start+slice.duration);const filteredSlices=range.filterArray(sliceGroup,value=>value.start);const icSlices=filteredSlices.filter(x=>x.title==='V8.ICStats');for(const icSlice of icSlices){slices.push(icSlice);}}
-if(slices.length>0){this.eventGroups_.push({type:'Overlapping V8 IC stats',tooltip:'All V8 IC statistics overlapping the selected set.',selection:slices});}},updateContents_(){const table=this.$.table;if(this.eventGroups_===undefined){table.tableRows=[];}else{table.tableRows=this.eventGroups_.slice();}
-table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-multi-async-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}},get relatedEventsToHighlight(){if(!this.$.content.selection)return undefined;const selection=new tr.model.EventSet();this.$.content.selection.forEach(function(asyncEvent){if(!asyncEvent.associatedEvents)return;asyncEvent.associatedEvents.forEach(function(event){selection.push(event);});});if(selection.length)return selection;return undefined;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-async-slice-sub-view',tr.model.AsyncSlice,{multi:true,title:'Async Slices',});'use strict';Polymer({is:'tr-ui-a-multi-cpu-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveSubRows=false;},get selection(){return this.$.content.selection;},set selection(selection){this.$.content.setSelectionWithoutErrorChecks(selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-cpu-slice-sub-view',tr.model.CpuSlice,{multi:true,title:'CPU Slices',});'use strict';Polymer({is:'tr-ui-a-multi-flow-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveDuration=false;this.$.content.eventsHaveSubRows=false;},set selection(selection){this.$.content.selection=selection;},get selection(){return this.$.content.selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-flow-event-sub-view',tr.model.FlowEvent,{multi:true,title:'Flow Events',});'use strict';Polymer({is:'tr-ui-a-multi-frame-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this).textContent='';const realView=document.createElement('tr-ui-a-multi-event-sub-view');realView.eventsHaveDuration=false;realView.eventsHaveSubRows=false;Polymer.dom(this).appendChild(realView);realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;},get selection(){return this.currentSelection_;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const selection=new tr.model.EventSet();this.currentSelection_.forEach(function(frameEvent){frameEvent.associatedEvents.forEach(function(event){selection.push(event);});});return selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-frame-sub-view',tr.model.Frame,{multi:true,title:'Frames',});'use strict';Polymer({is:'tr-ui-a-multi-instant-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this.$.content).textContent='';const realView=document.createElement('tr-ui-a-multi-event-sub-view');realView.eventsHaveDuration=false;realView.eventsHaveSubRows=false;Polymer.dom(this.$.content).appendChild(realView);realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;},get selection(){return this.currentSelection_;}});'use strict';Polymer({is:'tr-ui-a-multi-object-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},ready(){this.$.content.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;const objectEvents=Array.from(selection).sort(tr.b.math.Range.compareByMinTimes);const timeSpanConfig={unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument};const table=this.$.content;table.tableColumns=[{title:'First',value(event){if(event instanceof tr.model.ObjectSnapshot){return tr.v.ui.createScalarSpan(event.ts,timeSpanConfig);}
-const spanEl=document.createElement('span');Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(event.creationTs,timeSpanConfig));Polymer.dom(spanEl).appendChild(tr.ui.b.createSpan({textContent:'-',marginLeft:'4px',marginRight:'4px'}));if(event.deletionTs!==Number.MAX_VALUE){Polymer.dom(spanEl).appendChild(tr.v.ui.createScalarSpan(event.deletionTs,timeSpanConfig));}
-return spanEl;},width:'200px'},{title:'Second',value(event){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(event);},event.userFriendlyName);return linkEl;},width:'100%'}];table.tableRows=objectEvents;table.rebuild();}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-object-sub-view',tr.model.ObjectInstance,{multi:true,title:'Object Instances',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-object-sub-view',tr.model.ObjectSnapshot,{multi:true,title:'Object Snapshots',});'use strict';const EventSet=tr.model.EventSet;const CHART_TITLE='Power (W) by ms since vertical sync';Polymer({is:'tr-ui-a-frame-power-usage-chart',ready(){this.chart_=undefined;this.samples_=new EventSet();this.vSyncTimestamps_=[];},attached(){if(this.samples_)this.updateContents_();},get chart(){return this.chart_;},get samples(){return this.samples_;},get vSyncTimestamps(){return this.vSyncTimestamps_;},setData(samples,vSyncTimestamps){this.samples_=(samples===undefined)?new EventSet():samples;this.vSyncTimestamps_=(vSyncTimestamps===undefined)?[]:vSyncTimestamps;if(this.isAttached)this.updateContents_();},updateContents_(){this.clearChart_();const data=this.getDataForLineChart_();if(data.length===0)return;this.chart_=new tr.ui.b.LineChart();Polymer.dom(this.$.content).appendChild(this.chart_);this.chart_.chartTitle=CHART_TITLE;this.chart_.data=data;},clearChart_(){const content=this.$.content;while(Polymer.dom(content).firstChild){Polymer.dom(content).removeChild(Polymer.dom(content).firstChild);}
-this.chart_=undefined;},getDataForLineChart_(){const sortedSamples=this.sortSamplesByTimestampAscending_(this.samples);const vSyncTimestamps=this.vSyncTimestamps.slice();let lastVSyncTimestamp=undefined;const points=[];let frameNumber=0;sortedSamples.forEach(function(sample){while(vSyncTimestamps.length>0&&vSyncTimestamps[0]<=sample.start){lastVSyncTimestamp=vSyncTimestamps.shift();frameNumber++;}
-if(lastVSyncTimestamp===undefined)return;const point={x:sample.start-lastVSyncTimestamp};point['f'+frameNumber]=sample.powerInW;points.push(point);});return points;},sortSamplesByTimestampAscending_(samples){return samples.toArray().sort(function(smpl1,smpl2){return smpl1.start-smpl2.start;});}});'use strict';Polymer({is:'tr-ui-a-power-sample-summary-table',ready(){this.$.table.tableColumns=[{title:'Min power',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.min);}},{title:'Max power',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.max);}},{title:'Time-weighted average',width:'100px',value(row){return tr.b.Unit.byName.powerInWatts.format(row.timeWeightedAverageInW);}},{title:'Energy consumed',width:'100px',value(row){return tr.b.Unit.byName.energyInJoules.format(row.energyConsumedInJ);}},{title:'Sample count',width:'100%',value(row){return row.sampleCount;}}];this.samples=new tr.model.EventSet();},get samples(){return this.samples_;},set samples(samples){if(samples===this.samples)return;this.samples_=(samples===undefined)?new tr.model.EventSet():samples;this.updateContents_();},updateContents_(){if(this.samples.length===0){this.$.table.tableRows=[];}else{this.$.table.tableRows=[{min:this.getMin(),max:this.getMax(),timeWeightedAverageInW:this.getTimeWeightedAverageInW(),energyConsumedInJ:this.getEnergyConsumedInJ(),sampleCount:this.samples.length}];}
-this.$.table.rebuild();},getMin(){return Math.min.apply(null,this.samples.map(function(sample){return sample.powerInW;}));},getMax(){return Math.max.apply(null,this.samples.map(function(sample){return sample.powerInW;}));},getTimeWeightedAverageInW(){const energyConsumedInJ=this.getEnergyConsumedInJ();if(energyConsumedInJ==='N/A')return'N/A';const durationInS=tr.b.convertUnit(this.samples.bounds.duration,tr.b.UnitPrefixScale.METRIC.MILLI,tr.b.UnitPrefixScale.METRIC.NONE);return energyConsumedInJ/durationInS;},getEnergyConsumedInJ(){if(this.samples.length<2)return'N/A';const bounds=this.samples.bounds;const series=tr.b.getFirstElement(this.samples).series;return series.getEnergyConsumedInJ(bounds.min,bounds.max);}});'use strict';Polymer({is:'tr-ui-a-multi-power-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){const samples=this.selection;const vSyncTimestamps=(!samples?[]:tr.b.getFirstElement(samples).series.device.vSyncTimestamps);this.$.summaryTable.samples=samples;this.$.chart.setData(this.selection,vSyncTimestamps);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-power-sample-sub-view',tr.model.PowerSample,{multi:true,title:'Power Samples',});'use strict';(function(){const MultiDimensionalViewBuilder=tr.b.MultiDimensionalViewBuilder;Polymer({is:'tr-ui-a-multi-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.viewOption_=undefined;this.selection_=undefined;},ready(){const viewSelector=tr.ui.b.createSelector(this,'viewOption','tracing.ui.analysis.multi_sample_sub_view',MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW,[{label:'Top-down (Tree)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_TREE_VIEW},{label:'Top-down (Heavy)',value:MultiDimensionalViewBuilder.ViewType.TOP_DOWN_HEAVY_VIEW},{label:'Bottom-up (Heavy)',value:MultiDimensionalViewBuilder.ViewType.BOTTOM_UP_HEAVY_VIEW}]);Polymer.dom(this.$.control).appendChild(viewSelector);this.$.table.selectionMode=tr.ui.b.TableFormat.SelectionMode.ROW;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;this.updateContents_();},get viewOption(){return this.viewOption_;},set viewOption(viewOption){this.viewOption_=viewOption;this.updateContents_();},createSamplingSummary_(selection,viewOption){const builder=new MultiDimensionalViewBuilder(1,1);const samples=selection.filter(event=>event instanceof tr.model.Sample);samples.forEach(function(sample){builder.addPath([sample.userFriendlyStack.reverse()],[1],MultiDimensionalViewBuilder.ValueKind.SELF);});return builder.buildView(viewOption);},processSampleRows_(rows){for(const row of rows){let title=row.title[0];let results=/(.*) (Deoptimized reason: .*)/.exec(title);if(results!==null){row.deoptReason=results[2];title=results[1];}
-results=/(.*) url: (.*)/.exec(title);if(results!==null){row.functionName=results[1];row.url=results[2];if(row.functionName===''){row.functionName='(anonymous function)';}
-if(row.url===''){row.url='unknown';}}else{row.functionName=title;row.url='unknown';}
-this.processSampleRows_(row.subRows);}},updateContents_(){if(this.selection===undefined){this.$.table.tableColumns=[];this.$.table.tableRows=[];this.$.table.rebuild();return;}
-const samplingData=this.createSamplingSummary_(this.selection,this.viewOption);const total=samplingData.values[0].total;const columns=[this.createPercentColumn_('Total',total),this.createSamplesColumn_('Total'),this.createPercentColumn_('Self',total),this.createSamplesColumn_('Self'),{title:'Function Name',value(row){if(row.deoptReason!==undefined){const spanEl=tr.ui.b.createSpan({italic:true,color:'#F44336',tooltip:row.deoptReason});spanEl.innerText=row.functionName;return spanEl;}
-return row.functionName;},width:'150px',cmp:(a,b)=>a.functionName.localeCompare(b.functionName),showExpandButtons:true},{title:'Location',value(row){return row.url;},width:'250px',cmp:(a,b)=>a.url.localeCompare(b.url),}];this.processSampleRows_(samplingData.subRows);this.$.table.tableColumns=columns;this.$.table.sortColumnIndex=1;this.$.table.sortDescending=true;this.$.table.tableRows=samplingData.subRows;this.$.table.rebuild();},createPercentColumn_(title,samplingDataTotal){const field=title.toLowerCase();return{title:title+' percent',value(row){return tr.v.ui.createScalarSpan(row.values[0][field]/samplingDataTotal,{customContextRange:tr.b.math.Range.PERCENT_RANGE,unit:tr.b.Unit.byName.normalizedPercentage,context:{minimumFractionDigits:2,maximumFractionDigits:2},});},width:'60px',cmp:(a,b)=>a.values[0][field]-b.values[0][field]};},createSamplesColumn_(title){const field=title.toLowerCase();return{title:title+' samples',value(row){return tr.v.ui.createScalarSpan(row.values[0][field],{unit:tr.b.Unit.byName.unitlessNumber,context:{maximumFractionDigits:0},});},width:'60px',cmp:(a,b)=>a.values[0][field]-b.values[0][field]};}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-sample-sub-view',tr.model.Sample,{multi:true,title:'Samples',});})();'use strict';Polymer({is:'tr-ui-a-multi-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.selection_=undefined;},get selection(){return this.selection_;},set selection(selection){this.selection_=selection;if(tr.isExported('tr.ui.e.chrome.cc.RasterTaskSelection')){if(tr.ui.e.chrome.cc.RasterTaskSelection.supports(selection)){const ltvSelection=new tr.ui.e.chrome.cc.RasterTaskSelection(selection);const ltv=new tr.ui.e.chrome.cc.LayerTreeHostImplSnapshotView();ltv.objectSnapshot=ltvSelection.containingSnapshot;ltv.selection=ltvSelection;ltv.extraHighlightsByLayerId=ltvSelection.extraHighlightsByLayerId;Polymer.dom(this.$.content).textContent='';Polymer.dom(this.$.content).appendChild(ltv);this.requiresTallView_=true;return;}}
-Polymer.dom(this.$.content).textContent='';const mesv=document.createElement('tr-ui-a-multi-event-sub-view');mesv.selection=selection;Polymer.dom(this.$.content).appendChild(mesv);const relatedEvents=document.createElement('tr-ui-a-related-events');relatedEvents.setRelatedEvents(selection);if(relatedEvents.hasRelatedEvents()){Polymer.dom(this.$.content).appendChild(relatedEvents);}},get requiresTallView(){if(this.$.content.children.length===0)return false;const childTagName=this.$.content.children[0].tagName;if(childTagName==='TR-UI-A-MULTI-EVENT-SUB-VIEW'){return false;}
-return true;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-thread-slice-sub-view',tr.model.ThreadSlice,{multi:true,title:'Slices',});'use strict';Polymer({is:'tr-ui-a-multi-thread-time-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.$.content.eventsHaveSubRows=false;},get selection(){return this.$.content.selection;},set selection(selection){this.$.content.setSelectionWithoutErrorChecks(selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-thread-time-slice-sub-view',tr.model.ThreadTimeSlice,{multi:true,title:'Thread Timeslices',});'use strict';Polymer({is:'tr-ui-a-user-expectation-related-samples-table',ready(){this.samples_=[];this.$.table.tableColumns=[{title:'Event(s)',value(row){const typeEl=document.createElement('span');typeEl.innerText=row.type;if(row.tooltip){typeEl.title=row.tooltip;}
-return typeEl;},width:'150px'},{title:'Link',width:'100%',value(row){const linkEl=document.createElement('tr-ui-a-analysis-link');if(row.name){linkEl.setSelectionAndContent(row.selection,row.name);}else{linkEl.selection=row.selection;}
-return linkEl;}}];},hasRelatedSamples(){return(this.samples_&&this.samples_.length>0);},set selection(eventSet){this.samples_=[];const samples=new tr.model.EventSet;eventSet.forEach(function(ue){samples.addEventSet(ue.associatedSamples);}.bind(this));if(samples.length>0){this.samples_.push({type:'Overlapping samples',tooltip:'All samples overlapping the selected user expectation(s).',selection:samples});}
-this.updateContents_();},updateContents_(){const table=this.$.table;if(this.samples_&&this.samples_.length>0){table.tableRows=this.samples_.slice();}else{table.tableRows=[];}
-table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-multi-interaction-record-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){this.currentSelection_=selection;this.$.realView.setSelectionWithoutErrorChecks(selection);this.currentSelection_=selection;this.$.relatedSamples.selection=selection;if(this.$.relatedSamples.hasRelatedSamples()){this.$.events.style.display='';}else{this.$.events.style.display='none';}},get selection(){return this.currentSelection_;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;const selection=new tr.model.EventSet();this.currentSelection_.forEach(function(ir){ir.associatedEvents.forEach(function(event){selection.push(event);});});return selection;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-user-expectation-sub-view',tr.model.um.UserExpectation,{multi:true,title:'User Expectations',});'use strict';Polymer({is:'tr-ui-a-stack-frame',ready(){this.stackFrame_=undefined;this.$.table.tableColumns=[];this.$.table.showHeader=true;},get stackFrame(){return this.stackFrame_;},set stackFrame(stackFrame){const table=this.$.table;this.stackFrame_=stackFrame;if(stackFrame===undefined){table.tableColumns=[];table.tableRows=[];table.rebuild();return;}
-let hasName=false;let hasTitle=false;table.tableRows=stackFrame.stackTrace;table.tableRows.forEach(function(row){hasName|=row.name!==undefined;hasTitle|=row.title!==undefined;});const cols=[];if(hasName){cols.push({title:'Name',value(row){return row.name;}});}
-if(hasTitle){cols.push({title:'Title',value(row){return row.title;}});}
-table.tableColumns=cols;table.rebuild();},tableForTesting(){return this.$.table;}});'use strict';Polymer({is:'tr-ui-a-single-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],properties:{isFlow:{type:Boolean,value:false}},ready(){this.currentSelection_=undefined;this.$.table.tableColumns=[{title:'Label',value(row){return row.name;},width:'150px'},{title:'Value',width:'100%',value(row){return row.value;}}];this.$.table.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){if(selection.length!==1){throw new Error('Only supports single slices');}
-this.setSelectionWithoutErrorChecks(selection);},setSelectionWithoutErrorChecks(selection){this.currentSelection_=selection;this.updateContents_();},getFlowEventRows_(event){const rows=this.getEventRowsHelper_(event);rows.splice(0,0,{name:'ID',value:event.id});function createLinkTo(slice){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(slice);});Polymer.dom(linkEl).textContent=slice.userFriendlyName;return linkEl;}
-rows.push({name:'From',value:createLinkTo(event.startSlice)});rows.push({name:'To',value:createLinkTo(event.endSlice)});return rows;},getEventRowsHelper_(event){const rows=[];if(event.error){rows.push({name:'Error',value:event.error});}
-if(event.title){let title=event.title;if(tr.isExported('tr-ui-e-chrome-codesearch')){const container=document.createElement('div');container.appendChild(document.createTextNode(title));const link=document.createElement('tr-ui-e-chrome-codesearch');link.searchPhrase=title;container.appendChild(link);title=container;}
-rows.push({name:'Title',value:title});}
-if(event.category){rows.push({name:'Category',value:event.category});}
-if(event.model!==undefined){const ufc=event.model.getUserFriendlyCategoryFromEvent(event);if(ufc!==undefined){rows.push({name:'User Friendly Category',value:ufc});}}
-if(event.name){rows.push({name:'Name',value:event.name});}
-rows.push({name:'Start',value:tr.v.ui.createScalarSpan(event.start,{unit:tr.b.Unit.byName.timeStampInMs})});if(event.duration){rows.push({name:'Wall Duration',value:tr.v.ui.createScalarSpan(event.duration,{unit:tr.b.Unit.byName.timeDurationInMs})});}
-if(event.cpuDuration){rows.push({name:'CPU Duration',value:tr.v.ui.createScalarSpan(event.cpuDuration,{unit:tr.b.Unit.byName.timeDurationInMs})});}
-if(event.subSlices!==undefined&&event.subSlices.length!==0){if(event.selfTime){rows.push({name:'Self Time',value:tr.v.ui.createScalarSpan(event.selfTime,{unit:tr.b.Unit.byName.timeDurationInMs})});}
-if(event.cpuSelfTime){const cpuSelfTimeEl=tr.v.ui.createScalarSpan(event.cpuSelfTime,{unit:tr.b.Unit.byName.timeDurationInMs});if(event.cpuSelfTime>event.selfTime){cpuSelfTimeEl.warning=' Note that CPU Self Time is larger than Self Time. '+'This is a known limitation of this system, which occurs '+'due to several subslices, rounding issues, and imprecise '+'time at which we get cpu- and real-time.';}
-rows.push({name:'CPU Self Time',value:cpuSelfTimeEl});}}
-if(event.durationInUserTime){rows.push({name:'Duration (U)',value:tr.v.ui.createScalarSpan(event.durationInUserTime,{unit:tr.b.Unit.byName.timeDurationInMs})});}
-function createStackFrameEl(sf){const sfEl=document.createElement('tr-ui-a-stack-frame');sfEl.stackFrame=sf;return sfEl;}
-if(event.startStackFrame&&event.endStackFrame){if(event.startStackFrame===event.endStackFrame){rows.push({name:'Start+End Stack Trace',value:createStackFrameEl(event.startStackFrame)});}else{rows.push({name:'Start Stack Trace',value:createStackFrameEl(event.startStackFrame)});rows.push({name:'End Stack Trace',value:createStackFrameEl(event.endStackFrame)});}}else if(event.startStackFrame){rows.push({name:'Start Stack Trace',value:createStackFrameEl(event.startStackFrame)});}else if(event.endStackFrame){rows.push({name:'End Stack Trace',value:createStackFrameEl(event.endStackFrame)});}
-if(event.info){const descriptionEl=tr.ui.b.createDiv({textContent:event.info.description,maxWidth:'300px'});rows.push({name:'Description',value:descriptionEl});if(event.info.docLinks){event.info.docLinks.forEach(function(linkObject){const linkEl=document.createElement('a');linkEl.target='_blank';linkEl.href=linkObject.href;Polymer.dom(linkEl).textContent=Polymer.dom(linkObject).textContent;rows.push({name:linkObject.label,value:linkEl});});}}
-if(event.associatedAlerts.length){const alertSubRows=[];event.associatedAlerts.forEach(function(alert){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(function(){return new tr.model.EventSet(alert);},alert.info.description);alertSubRows.push({name:alert.title,value:linkEl});});rows.push({name:'Alerts',value:'',isExpanded:true,subRows:alertSubRows});}
-return rows;},getEventRows_(event){if(this.isFlow){return this.getFlowEventRows_(event);}
-return this.getEventRowsHelper_(event);},addArgsToRows_(rows,args){let n=0;for(const argName in args){n+=1;}
-if(n>0){const subRows=[];for(const argName in args){n+=1;}
-if(n>0){const subRows=[];for(const argName in args){const argView=document.createElement('tr-ui-a-generic-object-view');argView.object=args[argName];subRows.push({name:argName,value:argView});}
-rows.push({name:'Args',value:'',isExpanded:true,subRows});}}},addContextsToRows_(rows,contexts){if(contexts.length){const subRows=contexts.map(function(context){const contextView=document.createElement('tr-ui-a-generic-object-view');contextView.object=context;return{name:'Context',value:contextView};});rows.push({name:'Contexts',value:'',isExpanded:true,subRows});}},updateContents_(){if(this.currentSelection_===undefined){this.$.table.rows=[];this.$.table.rebuild();return;}
-const event=tr.b.getOnlyElement(this.currentSelection_);const rows=this.getEventRows_(event);if(event.argsStripped){rows.push({name:'Args',value:'Stripped'});}else{this.addArgsToRows_(rows,event.args);}
-this.addContextsToRows_(rows,event.contexts);const customizeRowsEvent=new tr.b.Event('customize-rows');customizeRowsEvent.rows=rows;this.dispatchEvent(customizeRowsEvent);this.$.table.tableRows=rows;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-single-async-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){if(selection.length!==1){throw new Error('Only supports single slices');}
-this.$.content.setSelectionWithoutErrorChecks(selection);this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}},getEventRows_(event){const rows=this.__proto__.__proto__.getEventRows_(event);rows.splice(0,0,{name:'ID',value:event.id});return rows;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-async-slice-sub-view',tr.model.AsyncSlice,{multi:false,title:'Async Slice',});'use strict';Polymer({is:'tr-ui-a-single-cpu-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){const cpuSlice=tr.b.getOnlyElement(selection);if(!(cpuSlice instanceof tr.model.CpuSlice)){throw new Error('Only supports thread time slices');}
-this.currentSelection_=selection;const thread=cpuSlice.threadThatWasRunning;const root=Polymer.dom(this.root);if(thread){Polymer.dom(root.querySelector('#process-name')).textContent=thread.parent.userFriendlyName;Polymer.dom(root.querySelector('#thread-name')).textContent=thread.userFriendlyName;}else{root.querySelector('#process-name').parentElement.style.display='none';Polymer.dom(root.querySelector('#thread-name')).textContent=cpuSlice.title;}
-root.querySelector('#start').setValueAndUnit(cpuSlice.start,tr.b.Unit.byName.timeStampInMs);root.querySelector('#duration').setValueAndUnit(cpuSlice.duration,tr.b.Unit.byName.timeDurationInMs);const runningThreadEl=root.querySelector('#running-thread');const timeSlice=cpuSlice.getAssociatedTimeslice();if(!timeSlice){runningThreadEl.parentElement.style.display='none';}else{const threadLink=document.createElement('tr-ui-a-analysis-link');threadLink.selection=new tr.model.EventSet(timeSlice);Polymer.dom(threadLink).textContent='Click to select';runningThreadEl.parentElement.style.display='';Polymer.dom(runningThreadEl).textContent='';Polymer.dom(runningThreadEl).appendChild(threadLink);}
-root.querySelector('#args').object=cpuSlice.args;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-cpu-slice-sub-view',tr.model.CpuSlice,{multi:false,title:'CPU Slice',});'use strict';function createAnalysisLinkTo(event){const linkEl=document.createElement('tr-ui-a-analysis-link');linkEl.setSelectionAndContent(new tr.model.EventSet(event),event.userFriendlyName);return linkEl;}
-Polymer({is:'tr-ui-a-single-flow-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],listeners:{'singleEventSubView.customize-rows':'onCustomizeRows_'},set selection(selection){this.currentSelection_=selection;this.$.singleEventSubView.setSelectionWithoutErrorChecks(selection);},get selection(){return this.currentSelection_;},onCustomizeRows_(e){const event=tr.b.getOnlyElement(this.currentSelection_);const rows=e.rows;rows.unshift({name:'ID',value:event.id});rows.push({name:'From',value:createAnalysisLinkTo(event.startSlice)});rows.push({name:'To',value:createAnalysisLinkTo(event.endSlice)});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-flow-event-sub-view',tr.model.FlowEvent,{multi:false,title:'Flow Event',});'use strict';Polymer({is:'tr-ui-a-single-frame-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.$.asv.selection=tr.b.getOnlyElement(selection).associatedAlerts;},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-frame-sub-view',tr.model.Frame,{multi:false,title:'Frame',});'use strict';Polymer({is:'tr-ui-a-single-instant-event-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},set selection(selection){Polymer.dom(this.$.content).textContent='';const realView=document.createElement('tr-ui-a-single-event-sub-view');realView.setSelectionWithoutErrorChecks(selection);Polymer.dom(this.$.content).appendChild(realView);this.currentSelection_=selection;},get selection(){return this.currentSelection_;}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-instant-event-sub-view',tr.model.InstantEvent,{multi:false,title:'Instant Event',});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-multi-instant-event-sub-view',tr.model.InstantEvent,{multi:true,title:'Instant Events',});'use strict';tr.exportTo('tr.ui.analysis',function(){const ObjectInstanceView=tr.ui.b.define('object-instance-view');ObjectInstanceView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.objectInstance_=undefined;},get requiresTallView(){return true;},set modelEvent(obj){this.objectInstance=obj;},get modelEvent(){return this.objectInstance;},get objectInstance(){return this.objectInstance_;},set objectInstance(i){this.objectInstance_=i;this.updateContents();},updateContents(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=ObjectInstanceView;options.defaultMetadata={showInTrackView:true};tr.b.decorateExtensionRegistry(ObjectInstanceView,options);return{ObjectInstanceView,};});'use strict';Polymer({is:'tr-ui-a-single-object-instance-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get requiresTallView(){if(this.$.content.children.length===0){return false;}
-if(this.$.content.children[0]instanceof
-tr.ui.analysis.ObjectInstanceView){return this.$.content.children[0].requiresTallView;}},get selection(){return this.currentSelection_;},set selection(selection){const instance=tr.b.getOnlyElement(selection);if(!(instance instanceof tr.model.ObjectInstance)){throw new Error('Only supports object instances');}
-Polymer.dom(this.$.content).textContent='';this.currentSelection_=selection;const typeInfo=tr.ui.analysis.ObjectInstanceView.getTypeInfo(instance.category,instance.typeName);if(typeInfo){const customView=new typeInfo.constructor();Polymer.dom(this.$.content).appendChild(customView);customView.modelEvent=instance;}else{this.appendGenericAnalysis_(instance);}},appendGenericAnalysis_(instance){let html='';html+='
'+ -instance.typeName+' '+ -instance.id+'
\n';html+='';html+='';html+='\n';if(instance.deletionTs!==Number.MAX_VALUE){html+='\n';}else{html+='\n';} -html+='\n';html+='
creationTs:'+ -instance.creationTs+'
deletionTs:'+ -instance.deletionTs+'
deletionTs:not deleted
snapshots:
';Polymer.dom(this.$.content).innerHTML=html;const snapshotsEl=Polymer.dom(this.$.content).querySelector('#snapshots');instance.snapshots.forEach(function(snapshot){const snapshotLink=document.createElement('tr-ui-a-analysis-link');snapshotLink.selection=new tr.model.EventSet(snapshot);Polymer.dom(snapshotsEl).appendChild(snapshotLink);});}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-object-instance-sub-view',tr.model.ObjectInstance,{multi:false,title:'Object Instance',});'use strict';tr.exportTo('tr.ui.analysis',function(){const ObjectSnapshotView=tr.ui.b.define('object-snapshot-view');ObjectSnapshotView.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.objectSnapshot_=undefined;},get requiresTallView(){return true;},set modelEvent(obj){this.objectSnapshot=obj;},get modelEvent(){return this.objectSnapshot;},get objectSnapshot(){return this.objectSnapshot_;},set objectSnapshot(i){this.objectSnapshot_=i;this.updateContents();},updateContents(){throw new Error('Not implemented');}};const options=new tr.b.ExtensionRegistryOptions(tr.b.TYPE_BASED_REGISTRY_MODE);options.mandatoryBaseClass=ObjectSnapshotView;options.defaultMetadata={showInstances:true,showInTrackView:true};tr.b.decorateExtensionRegistry(ObjectSnapshotView,options);return{ObjectSnapshotView,};});'use strict';Polymer({is:'tr-ui-a-single-object-snapshot-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get requiresTallView(){if(this.children.length===0){return false;} -if(this.children[0]instanceof tr.ui.analysis.ObjectSnapshotView){return this.children[0].requiresTallView;}},get selection(){return this.currentSelection_;},set selection(selection){const snapshot=tr.b.getOnlyElement(selection);if(!(snapshot instanceof tr.model.ObjectSnapshot)){throw new Error('Only supports object instances');} -Polymer.dom(this).textContent='';this.currentSelection_=selection;const typeInfo=tr.ui.analysis.ObjectSnapshotView.getTypeInfo(snapshot.objectInstance.category,snapshot.objectInstance.typeName);if(typeInfo){const customView=new typeInfo.constructor();Polymer.dom(this).appendChild(customView);customView.modelEvent=snapshot;}else{this.appendGenericAnalysis_(snapshot);}},appendGenericAnalysis_(snapshot){const instance=snapshot.objectInstance;Polymer.dom(this).textContent='';const titleEl=document.createElement('div');Polymer.dom(titleEl).classList.add('title');Polymer.dom(titleEl).appendChild(document.createTextNode('Snapshot of '));Polymer.dom(this).appendChild(titleEl);const instanceLinkEl=document.createElement('tr-ui-a-analysis-link');instanceLinkEl.selection=new tr.model.EventSet(instance);Polymer.dom(titleEl).appendChild(instanceLinkEl);Polymer.dom(titleEl).appendChild(document.createTextNode(' @ '));Polymer.dom(titleEl).appendChild(tr.v.ui.createScalarSpan(snapshot.ts,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument,inline:true,}));const tableEl=document.createElement('table');Polymer.dom(this).appendChild(tableEl);const rowEl=document.createElement('tr');Polymer.dom(tableEl).appendChild(rowEl);const labelEl=document.createElement('td');Polymer.dom(labelEl).textContent='args:';Polymer.dom(rowEl).appendChild(labelEl);const argsEl=document.createElement('td');argsEl.id='args';Polymer.dom(rowEl).appendChild(argsEl);const objectViewEl=document.createElement('tr-ui-a-generic-object-view');objectViewEl.object=snapshot.args;Polymer.dom(argsEl).appendChild(objectViewEl);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-object-snapshot-sub-view',tr.model.ObjectSnapshot,{multi:false,title:'Object Snapshot',});'use strict';Polymer({is:'tr-ui-a-power-sample-table',ready(){this.$.table.tableColumns=[{title:'Time',width:'100px',value(row){return tr.v.ui.createScalarSpan(row.start,{unit:tr.b.Unit.byName.timeStampInMs});}},{title:'Power',width:'100%',value(row){return tr.v.ui.createScalarSpan(row.powerInW,{unit:tr.b.Unit.byName.powerInWatts});}}];this.sample=undefined;},get sample(){return this.sample_;},set sample(sample){this.sample_=sample;this.updateContents_();},updateContents_(){if(this.sample===undefined){this.$.table.tableRows=[];}else{this.$.table.tableRows=[this.sample];} -this.$.table.rebuild();}});'use strict';Polymer({is:'tr-ui-a-single-power-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],ready(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;this.updateContents_();},updateContents_(){if(this.selection.length!==1){throw new Error('Cannot pass multiple samples to sample table.');} -this.$.samplesTable.sample=tr.b.getOnlyElement(this.selection);}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-power-sample-sub-view',tr.model.PowerSample,{multi:false,title:'Power Sample',});'use strict';Polymer({is:'tr-ui-a-single-sample-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},ready(){this.$.content.tableColumns=[{title:'',value:row=>row.title,width:'100px'},{title:'',value:row=>row.value,width:'100%'}];this.$.content.showHeader=false;},get selection(){return this.currentSelection_;},set selection(selection){this.currentSelection_=selection;if(this.currentSelection_===undefined){this.$.content.tableRows=[];return;} -const sample=tr.b.getOnlyElement(this.currentSelection_);const table=this.$.content;const rows=[];rows.push({title:'Title',value:sample.title});rows.push({title:'Sample time',value:tr.v.ui.createScalarSpan(sample.start,{unit:tr.b.Unit.byName.timeStampInMs,ownerDocument:this.ownerDocument})});const callStackTableEl=document.createElement('tr-ui-b-table');callStackTableEl.tableRows=sample.getNodesAsArray().reverse();callStackTableEl.tableColumns=[{title:'function name',value:row=>row.functionName||'(anonymous function)'},{title:'location',value:row=>row.url}];callStackTableEl.rebuild();rows.push({title:'Call stack',value:callStackTableEl});table.tableRows=rows;table.rebuild();}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-sample-sub-view',tr.model.Sample,{multi:false,title:'Sample',});'use strict';Polymer({is:'tr-ui-a-single-thread-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],get selection(){return this.$.content.selection;},set selection(selection){this.$.content.selection=selection;this.$.relatedEvents.setRelatedEvents(selection);if(this.$.relatedEvents.hasRelatedEvents()){this.$.relatedEvents.style.display='';}else{this.$.relatedEvents.style.display='none';}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-thread-slice-sub-view',tr.model.ThreadSlice,{multi:false,title:'Slice',});'use strict';Polymer({is:'tr-ui-a-single-thread-time-slice-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){const timeSlice=tr.b.getOnlyElement(selection);if(!(timeSlice instanceof tr.model.ThreadTimeSlice)){throw new Error('Only supports thread time slices');} -this.currentSelection_=selection;const thread=timeSlice.thread;const root=Polymer.dom(this.root);Polymer.dom(root.querySelector('#state')).textContent=timeSlice.title;const stateColor=tr.b.ColorScheme.colorsAsStrings[timeSlice.colorId];root.querySelector('#state').style.backgroundColor=stateColor;Polymer.dom(root.querySelector('#process-name')).textContent=thread.parent.userFriendlyName;Polymer.dom(root.querySelector('#thread-name')).textContent=thread.userFriendlyName;root.querySelector('#start').setValueAndUnit(timeSlice.start,tr.b.Unit.byName.timeStampInMs);root.querySelector('#duration').setValueAndUnit(timeSlice.duration,tr.b.Unit.byName.timeDurationInMs);const onCpuEl=root.querySelector('#on-cpu');Polymer.dom(onCpuEl).textContent='';const runningInsteadEl=root.querySelector('#running-instead');if(timeSlice.cpuOnWhichThreadWasRunning){Polymer.dom(runningInsteadEl.parentElement).removeChild(runningInsteadEl);const cpuLink=document.createElement('tr-ui-a-analysis-link');cpuLink.selection=new tr.model.EventSet(timeSlice.getAssociatedCpuSlice());Polymer.dom(cpuLink).textContent=timeSlice.cpuOnWhichThreadWasRunning.userFriendlyName;Polymer.dom(onCpuEl).appendChild(cpuLink);}else{Polymer.dom(onCpuEl.parentElement).removeChild(onCpuEl);const cpuSliceThatTookCpu=timeSlice.getCpuSliceThatTookCpu();if(cpuSliceThatTookCpu){const cpuLink=document.createElement('tr-ui-a-analysis-link');cpuLink.selection=new tr.model.EventSet(cpuSliceThatTookCpu);if(cpuSliceThatTookCpu.thread){Polymer.dom(cpuLink).textContent=cpuSliceThatTookCpu.thread.userFriendlyName;}else{Polymer.dom(cpuLink).textContent=cpuSliceThatTookCpu.title;} -Polymer.dom(runningInsteadEl).appendChild(cpuLink);}else{Polymer.dom(runningInsteadEl.parentElement).removeChild(runningInsteadEl);}} -const argsEl=root.querySelector('#args');if(Object.keys(timeSlice.args).length>0){const argsView=document.createElement('tr-ui-a-generic-object-view');argsView.object=timeSlice.args;argsEl.parentElement.style.display='';Polymer.dom(argsEl).textContent='';Polymer.dom(argsEl).appendChild(argsView);}else{argsEl.parentElement.style.display='none';}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-thread-time-slice-sub-view',tr.model.ThreadTimeSlice,{multi:false,title:'Thread Timeslice',});'use strict';Polymer({is:'tr-ui-a-single-user-expectation-sub-view',behaviors:[tr.ui.analysis.AnalysisSubView],created(){this.currentSelection_=undefined;},get selection(){return this.currentSelection_;},set selection(selection){this.$.realView.addEventListener('customize-rows',this.onCustomizeRows_.bind(this));this.currentSelection_=selection;this.$.realView.setSelectionWithoutErrorChecks(selection);this.$.relatedSamples.selection=selection;if(this.$.relatedSamples.hasRelatedSamples()){this.$.events.style.display='';}else{this.$.events.style.display='none';}},get relatedEventsToHighlight(){if(!this.currentSelection_)return undefined;return tr.b.getOnlyElement(this.currentSelection_).associatedEvents;},onCustomizeRows_(event){const ue=tr.b.getOnlyElement(this.selection);if(ue.rawCpuMs){event.rows.push({name:'Total CPU',value:tr.v.ui.createScalarSpan(ue.totalCpuMs,{unit:tr.b.Unit.byName.timeDurationInMs})});}}});tr.ui.analysis.AnalysisSubView.register('tr-ui-a-single-user-expectation-sub-view',tr.model.um.UserExpectation,{multi:false,title:'User Expectation',});'use strict';(function(){const EventRegistry=tr.model.EventRegistry;function getTabStripLabel(numEvents){if(numEvents===0){return'Nothing selected. Tap stuff.';}else if(numEvents===1){return'1 item selected.';} -return numEvents+' items selected.';} -function createSubView(subViewTypeInfo,selection){let tagName;if(selection.length===1){tagName=subViewTypeInfo.singleTagName;}else{tagName=subViewTypeInfo.multiTagName;} -if(tagName===undefined){throw new Error('No view registered for '+ -subViewTypeInfo.eventConstructor.name);} -const subView=document.createElement(tagName);let title;if(selection.length===1){title=subViewTypeInfo.singleTitle;}else{title=subViewTypeInfo.multiTitle;} -title+=' ('+selection.length+')';subView.tabLabel=title;subView.selection=selection;return subView;} -Polymer({is:'tr-ui-a-analysis-view',ready(){this.brushingStateController_=undefined;this.lastSelection_=undefined;this.tabView_=document.createElement('tr-ui-b-tab-view');this.tabView_.addEventListener('selected-tab-change',this.onSelectedSubViewChanged_.bind(this));Polymer.dom(this).appendChild(this.tabView_);},set tallMode(value){Polymer.dom(this).classList.toggle('tall-mode',value);},get tallMode(){return Polymer.dom(this).classList.contains('tall-mode');},get tabView(){return this.tabView_;},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController_){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_.bind(this));} -this.brushingStateController_=brushingStateController;if(this.brushingStateController){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_.bind(this));} -this.onSelectionChanged_();},get selection(){return this.brushingStateController_.selection;},onSelectionChanged_(e){if(this.lastSelection_&&this.selection.equals(this.lastSelection_)){return;} -this.lastSelection_=this.selection;this.tallMode=false;this.tabView_.label=getTabStripLabel(this.selection.length);const eventsByBaseTypeName=this.selection.getEventsOrganizedByBaseType(true);const ASV=tr.ui.analysis.AnalysisSubView;const eventsByTagName=ASV.getEventsOrganizedByTypeInfo(this.selection);const newSubViews=[];eventsByTagName.forEach(function(events,typeInfo){newSubViews.push(createSubView(typeInfo,events));});this.tabView_.resetSubViews(newSubViews);},onSelectedSubViewChanged_(){const selectedSubView=this.tabView_.selectedSubView;if(!selectedSubView){this.tallMode=false;this.maybeChangeRelatedEvents_(undefined);return;} -this.tallMode=selectedSubView.requiresTallView;this.maybeChangeRelatedEvents_(selectedSubView.relatedEventsToHighlight);},maybeChangeRelatedEvents_(events){if(this.brushingStateController){this.brushingStateController.changeAnalysisViewRelatedEvents(events);}}});})();'use strict';tr.exportTo('tr.ui.b',function(){Polymer({is:'tr-ui-b-dropdown',properties:{label:{type:String,value:'',},},open(){if(this.isOpen)return;Polymer.dom(this.$.button).classList.add('open');const buttonRect=this.$.button.getBoundingClientRect();this.$.dialog.style.top=buttonRect.bottom-1+'px';this.$.dialog.style.left=buttonRect.left+'px';this.$.dialog.showModal();const dialogRect=this.$.dialog.getBoundingClientRect();if(dialogRect.right>window.innerWidth){this.$.dialog.style.left=Math.max(0,buttonRect.right- -dialogRect.width)+'px';}},onDialogTap_(event){if(event.detail.sourceEvent.srcElement!==unwrap(this.$.dialog))return;const dialogRect=this.$.dialog.getBoundingClientRect();let inside=true;inside&=event.detail.x>=dialogRect.left;inside&=event.detail.x=dialogRect.top;inside&=event.detail.yminDist*minDist){this.isClick_=false;}},dispatchClickEvents_(e){if(!this.isClick_)return;const modeInfo=MOUSE_SELECTOR_MODE_INFOS[MOUSE_SELECTOR_MODE.SELECTION];const eventNames=modeInfo.eventNames;let mouseEvent=this.createEvent_(eventNames.begin);mouseEvent.appendSelection=isCmdOrCtrlPressed(e);this.dispatchEvent(mouseEvent);mouseEvent=this.createEvent_(eventNames.end);this.dispatchEvent(mouseEvent);}});return{MIN_MOUSE_SELECTION_DISTANCE,MODIFIER,};});'use strict';tr.exportTo('tr.ui.b',function(){function TimingTool(viewport,targetElement){this.viewport_=viewport;this.onMouseMove_=this.onMouseMove_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.targetElement_=targetElement;this.isMovingLeftEdge_=false;} -TimingTool.prototype={onEnterTiming(e){this.targetElement_.addEventListener('mousemove',this.onMouseMove_);this.targetElement_.addEventListener('dblclick',this.onDblClick_);},onBeginTiming(e){if(!this.isTouchPointInsideTrackBounds_(e.clientX,e.clientY)){return;} -const pt=this.getSnappedToEventPosition_(e);this.mouseDownAt_(pt.x,pt.y);this.updateSnapIndicators_(pt);},updateSnapIndicators_(pt){if(!pt.snapped)return;const ir=this.viewport_.interestRange;if(ir.min===pt.x){ir.leftSnapIndicator=new tr.ui.SnapIndicator(pt.y,pt.height);} -if(ir.max===pt.x){ir.rightSnapIndicator=new tr.ui.SnapIndicator(pt.y,pt.height);}},onUpdateTiming(e){const pt=this.getSnappedToEventPosition_(e);this.mouseMoveAt_(pt.x,pt.y,true);this.updateSnapIndicators_(pt);},onEndTiming(e){this.mouseUp_();},onExitTiming(e){this.targetElement_.removeEventListener('mousemove',this.onMouseMove_);this.targetElement_.removeEventListener('dblclick',this.onDblClick_);},onMouseMove_(e){if(e.button)return;const worldX=this.getWorldXFromEvent_(e);this.mouseMoveAt_(worldX,e.clientY,false);},onDblClick_(e){},isTouchPointInsideTrackBounds_(clientX,clientY){if(!this.viewport_||!this.viewport_.modelTrackContainer||!this.viewport_.modelTrackContainer.canvas){return false;} -const canvas=this.viewport_.modelTrackContainer.canvas;const canvasRect=canvas.getBoundingClientRect();if(clientX>=canvasRect.left&&clientX<=canvasRect.right&&clientY>=canvasRect.top&&clientY<=canvasRect.bottom){return true;} -return false;},mouseDownAt_(worldX,y){const ir=this.viewport_.interestRange;const dt=this.viewport_.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const nearnessThresholdWorld=dt.xViewVectorToWorld(6*pixelRatio);if(ir.isEmpty){ir.setMinAndMax(worldX,worldX);ir.rightSelected=true;this.isMovingLeftEdge_=false;return;} -if(Math.abs(worldX-ir.min)=this.startTimeMs+this.durationMs;},get goalPanX(){return this.startPanX+this.deltaX;},get goalPanY(){return this.startPanY+this.deltaY;}};function TimelineDisplayTransformZoomToAnimation(goalFocalPointXWorld,goalFocalPointXView,goalFocalPointY,zoomInRatioX,opt_durationMs){this.goalFocalPointXWorld=goalFocalPointXWorld;this.goalFocalPointXView=goalFocalPointXView;this.goalFocalPointY=goalFocalPointY;this.zoomInRatioX=zoomInRatioX;if(opt_durationMs===undefined){this.durationMs=kDefaultPanAnimationDurationMs;}else{this.durationMs=opt_durationMs;} -this.startTimeMs=undefined;this.startScaleX=undefined;this.goalScaleX=undefined;this.startPanY=undefined;} -TimelineDisplayTransformZoomToAnimation.prototype={__proto__:tr.ui.b.Animation.prototype,get affectsPanY(){return this.startPanY!==this.goalFocalPointY;},canTakeOverFor(existingAnimation){return false;},takeOverFor(existingAnimation,timestamp,target){this.goalScaleX=target.scaleX*this.zoomInRatioX;},start(timestamp,target){this.startTimeMs=timestamp;this.startScaleX=target.scaleX;this.goalScaleX=this.zoomInRatioX*target.scaleX;this.startPanY=target.panY;},tick(timestamp,target){let percentDone=(timestamp-this.startTimeMs)/this.durationMs;percentDone=tr.b.math.clamp(percentDone,0,1);target.scaleX=lerp(percentDone,this.startScaleX,this.goalScaleX);if(this.affectsPanY){target.panY=lerp(percentDone,this.startPanY,this.goalFocalPointY);} -target.xPanWorldPosToViewPos(this.goalFocalPointXWorld,this.goalFocalPointXView);return timestamp>=this.startTimeMs+this.durationMs;}};return{TimelineDisplayTransformPanAnimation,TimelineDisplayTransformZoomToAnimation,};});'use strict';tr.exportTo('tr.ui.b',function(){const constants={HEADING_WIDTH:250};return{constants,};});'use strict';tr.exportTo('tr.ui.b',function(){const ContainerThatDecoratesItsChildren=tr.ui.b.define('div');ContainerThatDecoratesItsChildren.prototype={__proto__:HTMLDivElement.prototype,decorate(){this.observer_=new MutationObserver(this.didMutate_.bind(this));this.observer_.observe(this,{childList:true});Object.defineProperty(this,'textContent',{get:undefined,set:this.onSetTextContent_});},appendChild(x){HTMLDivElement.prototype.appendChild.call(this,x);this.didMutate_(this.observer_.takeRecords());},insertBefore(x,y){HTMLDivElement.prototype.insertBefore.call(this,x,y);this.didMutate_(this.observer_.takeRecords());},removeChild(x){HTMLDivElement.prototype.removeChild.call(this,x);this.didMutate_(this.observer_.takeRecords());},replaceChild(x,y){HTMLDivElement.prototype.replaceChild.call(this,x,y);this.didMutate_(this.observer_.takeRecords());},onSetTextContent_(textContent){if(textContent!==''){throw new Error('textContent can only be set to \'\'.');} -this.clear();},clear(){while(Polymer.dom(this).lastChild){HTMLDivElement.prototype.removeChild.call(this,Polymer.dom(this).lastChild);} -this.didMutate_(this.observer_.takeRecords());},didMutate_(records){this.beginDecorating_();for(let i=0;ib)return;this.addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){},addClosestInstantEventToSelection(instantEvents,worldX,worldMaxDist,selection){const instantEvent=tr.b.findClosestElementInSortedArray(instantEvents,function(x){return x.start;},worldX,worldMaxDist);if(!instantEvent)return;selection.push(instantEvent);}};return{Track,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const DrawType={GENERAL_EVENT:1,INSTANT_EVENT:2,BACKGROUND:3,GRID:4,FLOW_ARROWS:5,MARKERS:6,HIGHLIGHTS:7,ANNOTATIONS:8};const MAX_OVERSIZE_MULTIPLE=3.0;const REDRAW_SLOP=(MAX_OVERSIZE_MULTIPLE-1)/2;const DrawingContainer=tr.ui.b.define('drawing-container',tr.ui.tracks.Track);DrawingContainer.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('drawing-container');this.canvas_=document.createElement('canvas');this.canvas_.className='drawing-container-canvas';this.canvas_.style.left=tr.ui.b.constants.HEADING_WIDTH+'px';Polymer.dom(this).appendChild(this.canvas_);this.ctx_=this.canvas_.getContext('2d');this.offsetY_=0;this.viewportChange_=this.viewportChange_.bind(this);this.viewport.addEventListener('change',this.viewportChange_);window.addEventListener('resize',this.windowResized_.bind(this));this.addEventListener('scroll',this.scrollChanged_.bind(this));},get canvas(){return this.canvas_;},context(){return this.ctx_;},viewportChange_(){this.invalidate();},windowResized_(){this.invalidate();},scrollChanged_(){if(this.updateOffsetY_()){this.invalidate();}},invalidate(){if(this.rafPending_)return;this.rafPending_=true;tr.b.requestPreAnimationFrame(this.preDraw_,this);},preDraw_(){this.rafPending_=false;this.updateCanvasSizeIfNeeded_();tr.b.requestAnimationFrameInThisFrameIfPossible(this.draw_,this);},draw_(){this.ctx_.clearRect(0,0,this.canvas_.width,this.canvas_.height);const typesToDraw=[DrawType.BACKGROUND,DrawType.HIGHLIGHTS,DrawType.GRID,DrawType.INSTANT_EVENT,DrawType.GENERAL_EVENT,DrawType.MARKERS,DrawType.ANNOTATIONS,DrawType.FLOW_ARROWS];const children=this.children;for(const idx in typesToDraw){for(let i=0;iviewRWorld)break;if(item.selected!==selected)continue;const xView=dt.xWorldToView(x);ctx.fillStyle=EventPresenter.getSelectableItemColorAsString(item);ctx.beginPath();ctx.arc(xView,halfHeight,dumpRadiusView+0.5,0,twoPi);ctx.fill();if(item.selected){ctx.lineWidth=3;ctx.strokeStyle='rgb(100,100,0)';ctx.stroke();ctx.beginPath();ctx.arc(xView,halfHeight,dumpRadiusView,0,twoPi);ctx.lineWidth=1.5;ctx.strokeStyle='rgb(255,255,0)';ctx.stroke();}else{ctx.lineWidth=1;ctx.strokeStyle='rgb(0,0,0)';ctx.stroke();} -ctx.fillStyle='rgb(255, 255, 255)';ctx.fillText(item.dotLetter,xView,halfHeight);}};drawItems(false);drawItems(true);ctx.lineWidth=1;ctx.font=oldFont;},addEventsToTrackMap(eventToTrackMap){if(this.items_===undefined)return;this.items_.forEach(function(item){item.addToTrackMap(eventToTrackMap,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){if(this.items_===undefined)return;const itemRadiusWorld=viewPixWidthWorld*this.dumpRadiusView;tr.b.iterateOverIntersectingIntervals(this.items_,function(x){return x.start-itemRadiusWorld;},function(x){return 2*itemRadiusWorld;},loWX,hiWX,function(item){item.addToSelection(selection);}.bind(this));},addEventNearToProvidedEventToSelection(event,offset,selection){if(this.items_===undefined)return;const index=this.items_.findIndex(item=>item.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex>=0&&newIndex=this.points.length||this.points[lastVisibleIndex].x>rightTimestamp){lastVisibleIndex--;} -const viewSkipDistance=this.skipDistance_*pixelRatio;let selectedCircleRadius;let letterDotRadius;let squareSize;let squareHalfSize;let squareOpacity;let unselectedSeriesColor;let currentStateSeriesColor;ctx.save();ctx.font=DOT_LETTER_FONT_WEIGHT+' '+ -Math.floor(DOT_LETTER_FONT_SIZE_PX*pixelRatio)+'px '+ -DOT_LETTER_FONT;ctx.textBaseline='middle';ctx.textAlign='center';switch(component){case ChartSeriesComponent.DOTS:{selectedCircleRadius=(this.selectedPointSize_/2)*pixelRatio;letterDotRadius=Math.max(selectedCircleRadius,DOT_LETTER_RADIUS_PX*pixelRatio);squareSize=this.unselectedPointSize_*pixelRatio;squareHalfSize=squareSize/2;unselectedSeriesColor=EventPresenter.getCounterSeriesColor(this.colorId_,SelectionState.NONE);if(!highDetails){squareOpacity=0;break;} -const visibleIndexRange=lastVisibleIndex-firstVisibleIndex;if(visibleIndexRange<=0){squareOpacity=1;break;} -const visibleViewXRange=transform.worldXToViewX(this.points[lastVisibleIndex].x)- -transform.worldXToViewX(this.points[firstVisibleIndex].x);if(visibleViewXRange===0){squareOpacity=1;break;} -const density=visibleIndexRange/visibleViewXRange;const clampedDensity=tr.b.math.clamp(density,this.unselectedPointDensityOpaque_,this.unselectedPointDensityTransparent_);const densityRange=this.unselectedPointDensityTransparent_- -this.unselectedPointDensityOpaque_;squareOpacity=(this.unselectedPointDensityTransparent_-clampedDensity)/densityRange;break;} -case ChartSeriesComponent.LINE:ctx.strokeStyle=EventPresenter.getCounterSeriesColor(this.colorId_,SelectionState.NONE);ctx.lineWidth=this.lineWidth_*pixelRatio;break;case ChartSeriesComponent.BACKGROUND:break;default:throw new Error('Invalid component: '+component);} -let previousViewX=undefined;let previousViewY=undefined;let previousViewYBase=undefined;let lastSelectionState=undefined;let baseSteps=undefined;const startIndex=Math.max(firstVisibleIndex-1,0);let currentViewX;for(let i=startIndex;irightViewX){if(previousViewX!==undefined){previousViewX=currentViewX=rightViewX;if(component===ChartSeriesComponent.BACKGROUND||component===ChartSeriesComponent.LINE){ctx.lineTo(currentViewX,previousViewY);}} -break;} -if(i+10){ctx.fillStyle=currentStateSeriesColor;ctx.fillRect(currentViewX-squareHalfSize,currentViewY-squareHalfSize,squareSize,squareSize);}} -break;case ChartSeriesComponent.LINE:if(previousViewX===undefined){ctx.beginPath();ctx.moveTo(currentViewX,currentViewY);}else if(this.stepGraph_){ctx.lineTo(currentViewX,previousViewY);} -ctx.lineTo(currentViewX,currentViewY);break;case ChartSeriesComponent.BACKGROUND:if(previousViewX!==undefined&&this.stepGraph_){ctx.lineTo(currentViewX,previousViewY);}else{ctx.lineTo(currentViewX,currentViewY);} -if(currentSelectionState!==lastSelectionState){if(previousViewX!==undefined){let previousBaseStepViewX=currentViewX;for(let j=baseSteps.length-1;j>=0;j--){const baseStep=baseSteps[j];const baseStepViewX=baseStep.viewX;const baseStepViewY=baseStep.viewY;ctx.lineTo(previousBaseStepViewX,baseStepViewY);ctx.lineTo(baseStepViewX,baseStepViewY);previousBaseStepViewX=baseStepViewX;} -ctx.closePath();ctx.fill();} -ctx.beginPath();ctx.fillStyle=EventPresenter.getCounterSeriesColor(this.colorId_,currentSelectionState,this.backgroundOpacity_);ctx.moveTo(currentViewX,currentViewYBase);baseSteps=[];} -if(currentViewYBase!==previousViewYBase||currentSelectionState!==lastSelectionState){baseSteps.push({viewX:currentViewX,viewY:currentViewYBase});} -ctx.lineTo(currentViewX,currentViewY);break;default:throw new Error('Not reachable');} -previousViewX=currentViewX;previousViewY=currentViewY;previousViewYBase=currentViewYBase;lastSelectionState=currentSelectionState;} -if(previousViewX!==undefined){switch(component){case ChartSeriesComponent.DOTS:break;case ChartSeriesComponent.LINE:ctx.stroke();break;case ChartSeriesComponent.BACKGROUND:{let previousBaseStepViewX=currentViewX;for(let j=baseSteps.length-1;j>=0;j--){const baseStep=baseSteps[j];const baseStepViewX=baseStep.viewX;const baseStepViewY=baseStep.viewY;ctx.lineTo(previousBaseStepViewX,baseStepViewY);ctx.lineTo(baseStepViewX,baseStepViewY);previousBaseStepViewX=baseStepViewX;} -ctx.closePath();ctx.fill();break;} -default:throw new Error('Not reachable');}} -ctx.restore();},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){const points=this.points;function getPointWidth(point,i){if(i===points.length-1){return LAST_POINT_WIDTH*viewPixWidthWorld;} -const nextPoint=points[i+1];return nextPoint.x-point.x;} -function selectPoint(point){point.addToSelection(selection);} -tr.b.iterateOverIntersectingIntervals(this.points,function(point){return point.x;},getPointWidth,loWX,hiWX,selectPoint);},addEventNearToProvidedEventToSelection(event,offset,selection){if(this.points===undefined)return false;const index=this.points.findIndex(point=>point.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex<0||newIndex>=this.points.length)return false;this.points[newIndex].addToSelection(selection);return true;},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){if(this.points===undefined)return;const item=tr.b.findClosestElementInSortedArray(this.points,function(point){return point.x;},worldX,worldMaxDist);if(!item)return;item.addToSelection(selection);}};return{ChartSeries,ChartSeriesType,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const IDEAL_MAJOR_MARK_HEIGHT_PX=30;const AXIS_LABLE_MARGIN_PX=10;const AXIS_LABLE_FONT_SIZE_PX=9;const AXIS_LABLE_FONT='Arial';function ChartSeriesYAxis(opt_min,opt_max){this.guid_=tr.b.GUID.allocateSimple();this.bounds=new tr.b.math.Range();if(opt_min!==undefined)this.bounds.addValue(opt_min);if(opt_max!==undefined)this.bounds.addValue(opt_max);} -ChartSeriesYAxis.prototype={get guid(){return this.guid_;},valueToUnitRange(value){if(this.bounds.isEmpty){throw new Error('Chart series y-axis bounds are empty');} -const bounds=this.bounds;if(bounds.range===0)return 0;return(value-bounds.min)/bounds.range;},unitRangeToValue(unitRange){if(this.bounds.isEmpty){throw new Error('Chart series y-axis bounds are empty');} -return unitRange*this.bounds.range+this.bounds.min;},autoSetFromSeries(series,opt_config){const range=new tr.b.math.Range();series.forEach(function(s){range.addRange(s.range);},this);this.autoSetFromRange(range,opt_config);},autoSetFromRange(range,opt_config){if(range.isEmpty)return;const bounds=this.bounds;if(bounds.isEmpty){bounds.addRange(range);return;} -if(!opt_config)return;const useRangeMin=(opt_config.expandMin&&range.minbounds.min);const useRangeMax=(opt_config.expandMax&&range.max>bounds.max||opt_config.shrinkMax&&range.max=viewTop){if(showYAxisLabels){ctx.fillText(roundedUnitValue,viewLeft+AXIS_LABLE_MARGIN_PX,curViewYPositive-AXIS_LABLE_MARGIN_PX);} -if(showYGridLines){tr.ui.b.drawLine(ctx,viewLeft,curViewYPositive,viewRight,curViewYPositive);}} -const curViewYNegative=transform.worldYToViewY(-1*curWorldY);if(curViewYNegative<=viewBottom){if(showYAxisLabels){ctx.fillText(roundedUnitValue,viewLeft+AXIS_LABLE_MARGIN_PX,curViewYNegative-AXIS_LABLE_MARGIN_PX);} -if(showYGridLines){tr.ui.b.drawLine(ctx,viewLeft,curViewYNegative,viewRight,curViewYNegative);}}} -ctx.stroke();ctx.restore();}};return{ChartSeriesYAxis,};});'use strict';tr.exportTo('tr.ui.tracks',function(){function ChartTransform(displayTransform,axis,trackWidth,trackHeight,topPadding,bottomPadding,pixelRatio){this.pixelRatio=pixelRatio;this.leftViewX=0;this.rightViewX=trackWidth;this.leftTimestamp=displayTransform.xViewToWorld(this.leftViewX);this.rightTimestamp=displayTransform.xViewToWorld(this.rightViewX);this.displayTransform_=displayTransform;this.outerTopViewY=0;this.innerTopViewY=topPadding;this.innerBottomViewY=trackHeight-bottomPadding;this.outerBottomViewY=trackHeight;this.axis_=axis;this.innerHeight_=this.innerBottomViewY-this.innerTopViewY;} -ChartTransform.prototype={worldXToViewX(worldX){return this.displayTransform_.xWorldToView(worldX);},viewXToWorldX(viewX){return this.displayTransform_.xViewToWorld(viewX);},vectorToWorldDistance(viewY){return this.axis_.bounds.range*Math.abs(viewY/this.innerHeight_);},viewYToWorldY(viewY){return this.axis_.unitRangeToValue(1-(viewY-this.innerTopViewY)/this.innerHeight_);},worldYToViewY(worldY){const innerHeightCoefficient=1-this.axis_.valueToUnitRange(worldY);return innerHeightCoefficient*this.innerHeight_+this.innerTopViewY;}};return{ChartTransform,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ChartTrack=tr.ui.b.define('chart-track',tr.ui.tracks.Track);ChartTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('chart-track');this.series_=undefined;this.axes_=undefined;this.axisGuidToAxisData_=undefined;this.topPadding_=undefined;this.bottomPadding_=undefined;this.showYAxisLabels_=undefined;this.showGridLines_=undefined;this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},set heading(heading){this.heading_.heading=heading;},get heading(){return this.heading_.heading;},set tooltip(tooltip){this.heading_.tooltip=tooltip;},get series(){return this.series_;},set series(series){this.series_=series;this.calculateAxisDataAndPadding_();this.invalidateDrawingContainer();},get height(){return window.getComputedStyle(this).height;},set height(height){this.style.height=height;this.invalidateDrawingContainer();},get showYAxisLabels(){return this.showYAxisLabels_;},set showYAxisLabels(showYAxisLabels){this.showYAxisLabels_=showYAxisLabels;this.invalidateDrawingContainer();},get showGridLines(){return this.showGridLines_;},set showGridLines(showGridLines){this.showGridLines_=showGridLines;this.invalidateDrawingContainer();},get hasVisibleContent(){return!!this.series&&this.series.length>0;},calculateAxisDataAndPadding_(){if(!this.series_){this.axes_=undefined;this.axisGuidToAxisData_=undefined;this.topPadding_=undefined;this.bottomPadding_=undefined;return;} -const axisGuidToAxisData={};let topPadding=0;let bottomPadding=0;this.series_.forEach(function(series){const seriesYAxis=series.seriesYAxis;const axisGuid=seriesYAxis.guid;if(!(axisGuid in axisGuidToAxisData)){axisGuidToAxisData[axisGuid]={axis:seriesYAxis,series:[]};if(!this.axes_)this.axes_=[];this.axes_.push(seriesYAxis);} -axisGuidToAxisData[axisGuid].series.push(series);topPadding=Math.max(topPadding,series.topPadding);bottomPadding=Math.max(bottomPadding,series.bottomPadding);},this);this.axisGuidToAxisData_=axisGuidToAxisData;this.topPadding_=topPadding;this.bottomPadding_=bottomPadding;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawChart_(viewLWorld,viewRWorld);break;}},drawChart_(viewLWorld,viewRWorld){if(!this.series_)return;const ctx=this.context();const displayTransform=this.viewport.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const highDetails=this.viewport.highDetails;const width=bounds.width*pixelRatio;const height=bounds.height*pixelRatio;const topPadding=this.topPadding_*pixelRatio;const bottomPadding=this.bottomPadding_*pixelRatio;ctx.save();ctx.beginPath();ctx.rect(0,0,width,height);ctx.clip();if(this.axes_){if((this.showGridLines_||this.showYAxisLabels_)&&this.axes_.length>1){throw new Error('Only one axis allowed when showing grid lines.');} -for(const yAxis of this.axes_){const chartTransform=new tr.ui.tracks.ChartTransform(displayTransform,yAxis,width,height,topPadding,bottomPadding,pixelRatio);yAxis.draw(ctx,chartTransform,this.showYAxisLabels_,this.showGridLines_);}} -for(const series of this.series){const chartTransform=new tr.ui.tracks.ChartTransform(displayTransform,series.seriesYAxis,width,height,topPadding,bottomPadding,pixelRatio);series.draw(ctx,chartTransform,highDetails);} -ctx.restore();},addEventsToTrackMap(eventToTrackMap){this.series_.forEach(function(series){series.points.forEach(function(point){point.addToTrackMap(eventToTrackMap,this);},this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){this.series_.forEach(function(series){series.addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection);},this);},addEventNearToProvidedEventToSelection(event,offset,selection){let foundItem=false;this.series_.forEach(function(series){foundItem=foundItem||series.addEventNearToProvidedEventToSelection(event,offset,selection);},this);return foundItem;},addAllEventsMatchingFilterToSelection(filter,selection){},addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection){this.series_.forEach(function(series){series.addClosestEventToSelection(worldX,worldMaxDist,loY,hiY,selection);},this);},autoSetAllAxes(opt_config){for(const axisData of Object.values(this.axisGuidToAxisData_)){const seriesYAxis=axisData.axis;const series=axisData.series;seriesYAxis.autoSetFromSeries(series,opt_config);}},autoSetAxis(seriesYAxis,opt_config){const series=this.axisGuidToAxisData_[seriesYAxis.guid].series;seriesYAxis.autoSetFromSeries(series,opt_config);}};return{ChartTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const ChartTrack=tr.ui.tracks.ChartTrack;const CpuUsageTrack=tr.ui.b.define('cpu-usage-track',ChartTrack);CpuUsageTrack.prototype={__proto__:ChartTrack.prototype,decorate(viewport){ChartTrack.prototype.decorate.call(this,viewport);this.classList.add('cpu-usage-track');this.heading='CPU usage';this.cpuUsageSeries_=undefined;},initialize(model){if(model!==undefined){this.cpuUsageSeries_=model.device.cpuUsageSeries;}else{this.cpuUsageSeries_=undefined;} -this.series=this.buildChartSeries_();this.autoSetAllAxes({expandMax:true});},get hasVisibleContent(){return!!this.cpuUsageSeries_&&this.cpuUsageSeries_.samples.length>0;},addContainersToTrackMap(containerToTrackMap){containerToTrackMap.addContainer(this.series_,this);},buildChartSeries_(yAxis,color){if(!this.hasVisibleContent)return[];yAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const usageSamples=this.cpuUsageSeries_.samples;const pts=new Array(usageSamples.length+1);for(let i=0;i0);},addContainersToTrackMap(containerToTrackMap){containerToTrackMap.addContainer(this.powerSeries_,this);},buildChartSeries_(){if(!this.hasVisibleContent)return[];const seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0,undefined);const pts=this.powerSeries_.samples.map(function(smpl){return new tr.ui.tracks.ChartPoint(smpl,smpl.start,smpl.powerInW);});const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:ColorScheme.getColorIdForGeneralPurposeString(this.heading)};return[new tr.ui.tracks.ChartSeries(pts,seriesYAxis,renderingConfig)];}};return{PowerSeriesTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SpacingTrack=tr.ui.b.define('spacing-track',tr.ui.tracks.Track);SpacingTrack.prototype={__proto__:tr.ui.tracks.Track.prototype,decorate(viewport){tr.ui.tracks.Track.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('spacing-track');this.heading_=document.createElement('tr-ui-b-heading');Polymer.dom(this).appendChild(this.heading_);},addAllEventsMatchingFilterToSelection(filter,selection){}};return{SpacingTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ContainerTrack=tr.ui.tracks.ContainerTrack;const DeviceTrack=tr.ui.b.define('device-track',ContainerTrack);DeviceTrack.prototype={__proto__:ContainerTrack.prototype,decorate(viewport){ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('device-track');this.device_=undefined;this.powerSeriesTrack_=undefined;},get device(){return this.device_;},set device(device){this.device_=device;this.updateContents_();},get powerSeriesTrack(){return this.powerSeriesTrack_;},get hasVisibleContent(){return(this.powerSeriesTrack_&&this.powerSeriesTrack_.hasVisibleContent);},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.call(this,containerToTrackMap);containerToTrackMap.addContainer(this.device,this);},addEventsToTrackMap(eventToTrackMap){this.tracks_.forEach(function(track){track.addEventsToTrackMap(eventToTrackMap);});},appendPowerSeriesTrack_(){this.powerSeriesTrack_=new tr.ui.tracks.PowerSeriesTrack(this.viewport);this.powerSeriesTrack_.powerSeries=this.device.powerSeries;if(this.powerSeriesTrack_.hasVisibleContent){Polymer.dom(this).appendChild(this.powerSeriesTrack_);Polymer.dom(this).appendChild(new tr.ui.tracks.SpacingTrack(this.viewport));}},updateContents_(){this.clearTracks_();this.appendPowerSeriesTrack_();}};return{DeviceTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ColorScheme=tr.b.ColorScheme;const DISPLAYED_SIZE_NUMERIC_NAME=tr.model.MemoryAllocatorDump.DISPLAYED_SIZE_NUMERIC_NAME;const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const SYSTEM_MEMORY_CHART_RENDERING_CONFIG={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId:ColorScheme.getColorIdForGeneralPurposeString('systemMemory'),backgroundOpacity:0.8};const SYSTEM_MEMORY_SERIES_NAMES=['Used (KB)','Swapped (KB)'];function extractGlobalMemoryDumpUsedSizes(globalMemoryDump,addSize){for(const[pid,pmd]of -Object.entries(globalMemoryDump.processMemoryDumps)){const mostRecentVmRegions=pmd.mostRecentVmRegions;if(mostRecentVmRegions===undefined)continue;addSize(pid,mostRecentVmRegions.byteStats.proportionalResident||0,pmd.process.userFriendlyName);}} -function extractProcessMemoryDumpAllocatorSizes(processMemoryDump,addSize){const allocatorDumps=processMemoryDump.memoryAllocatorDumps;if(allocatorDumps===undefined)return;allocatorDumps.forEach(function(allocatorDump){if(allocatorDump.fullName==='tracing')return;const allocatorSize=allocatorDump.numerics[DISPLAYED_SIZE_NUMERIC_NAME];if(allocatorSize===undefined)return;const allocatorSizeValue=allocatorSize.value;if(allocatorSizeValue===undefined)return;addSize(allocatorDump.fullName,allocatorSizeValue);});} -function extractGlobalMemoryDumpAllocatorSizes(globalMemoryDump,addSize){for(const pmd of Object.values(globalMemoryDump.processMemoryDumps)){extractProcessMemoryDumpAllocatorSizes(pmd,addSize);}} -function buildMemoryChartSeries(memoryDumps,dumpSizeExtractor){const dumpCount=memoryDumps.length;const idToTimestampToPoint={};const idToName={};memoryDumps.forEach(function(dump,index){dumpSizeExtractor(dump,function addSize(id,size,opt_name){let timestampToPoint=idToTimestampToPoint[id];if(timestampToPoint===undefined){idToTimestampToPoint[id]=timestampToPoint=new Array(dumpCount);for(let i=0;i=0;j--){const point=idToTimestampToPoint[ids[j]][i];point.yBase=baseSize;point.y+=baseSize;baseSize=point.y;}} -const seriesYAxis=new tr.ui.tracks.ChartSeriesYAxis(0);const series=ids.map(function(id){const colorId=ColorScheme.getColorIdForGeneralPurposeString(idToName[id]||id);const renderingConfig={chartType:tr.ui.tracks.ChartSeriesType.AREA,colorId,backgroundOpacity:0.8};return new tr.ui.tracks.ChartSeries(idToTimestampToPoint[id],seriesYAxis,renderingConfig);});series.reverse();return series;} -function buildMemoryLetterDots(memoryDumps){const backgroundMemoryColorId=ColorScheme.getColorIdForReservedName('background_memory_dump');const lightMemoryColorId=ColorScheme.getColorIdForReservedName('light_memory_dump');const detailedMemoryColorId=ColorScheme.getColorIdForReservedName('detailed_memory_dump');return memoryDumps.map(function(memoryDump){let memoryColorId;switch(memoryDump.levelOfDetail){case BACKGROUND:memoryColorId=backgroundMemoryColorId;break;case DETAILED:memoryColorId=detailedMemoryColorId;break;case LIGHT:default:memoryColorId=lightMemoryColorId;} -return new tr.ui.tracks.LetterDot(memoryDump,'M',memoryColorId,memoryDump.start);});} -function buildGlobalUsedMemoryChartSeries(globalMemoryDumps){return buildMemoryChartSeries(globalMemoryDumps,extractGlobalMemoryDumpUsedSizes);} -function buildProcessAllocatedMemoryChartSeries(processMemoryDumps){return buildMemoryChartSeries(processMemoryDumps,extractProcessMemoryDumpAllocatorSizes);} -function buildGlobalAllocatedMemoryChartSeries(globalMemoryDumps){return buildMemoryChartSeries(globalMemoryDumps,extractGlobalMemoryDumpAllocatorSizes);} -function buildSystemMemoryChartSeries(model){if(model.kernel.counters===undefined)return;const memoryCounter=model.kernel.counters['global.SystemMemory'];if(memoryCounter===undefined)return;const tracks=[];for(const name of SYSTEM_MEMORY_SERIES_NAMES){const series=memoryCounter.series.find(series=>series.name===name);if(series===undefined||series.samples.length===0)return;const chartPoints=[];const valueRange=new tr.b.math.Range();for(const sample of series.samples){chartPoints.push(new tr.ui.tracks.ChartPoint(sample,sample.timestamp,sample.value,0));valueRange.addValue(sample.value);} -const baseLine=Math.max(0,valueRange.min-valueRange.range);const axisY=new tr.ui.tracks.ChartSeriesYAxis(baseLine,valueRange.max);const chartSeries=[new tr.ui.tracks.ChartSeries(chartPoints,axisY,SYSTEM_MEMORY_CHART_RENDERING_CONFIG)];tracks.push({name:'System Memory '+name,series:chartSeries});} -return tracks;} -return{buildMemoryLetterDots,buildGlobalUsedMemoryChartSeries,buildProcessAllocatedMemoryChartSeries,buildGlobalAllocatedMemoryChartSeries,buildSystemMemoryChartSeries,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const USED_MEMORY_TRACK_HEIGHT=50;const ALLOCATED_MEMORY_TRACK_HEIGHT=50;const GlobalMemoryDumpTrack=tr.ui.b.define('global-memory-dump-track',tr.ui.tracks.ContainerTrack);GlobalMemoryDumpTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.memoryDumps_=undefined;},get memoryDumps(){return this.memoryDumps_;},set memoryDumps(memoryDumps){this.memoryDumps_=memoryDumps;this.updateContents_();},updateContents_(){this.clearTracks_();if(!this.memoryDumps_||!this.memoryDumps_.length)return;this.appendDumpDotsTrack_();this.appendUsedMemoryTrack_();this.appendAllocatedMemoryTrack_();},appendDumpDotsTrack_(){const items=tr.ui.tracks.buildMemoryLetterDots(this.memoryDumps_);if(!items)return;const track=new tr.ui.tracks.LetterDotTrack(this.viewport);track.heading='Memory Dumps';track.items=items;Polymer.dom(this).appendChild(track);},appendUsedMemoryTrack_(){const tracks=[];const perProcessSeries=tr.ui.tracks.buildGlobalUsedMemoryChartSeries(this.memoryDumps_);if(perProcessSeries!==undefined){tracks.push({name:'Memory per process',series:perProcessSeries});}else{tracks.push.apply(tracks,tr.ui.tracks.buildSystemMemoryChartSeries(this.memoryDumps_[0].model));} -for(const{name,series}of tracks){const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading=name;track.height=USED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}},appendAllocatedMemoryTrack_(){const series=tr.ui.tracks.buildGlobalAllocatedMemoryChartSeries(this.memoryDumps_);if(!series)return;const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading='Memory per component';track.height=ALLOCATED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}};return{GlobalMemoryDumpTrack,};});'use strict';tr.exportTo('tr.ui.b',function(){function FastRectRenderer(ctx,xMin,xMax,minRectSize,maxMergeDist,palette){this.ctx_=ctx;this.xMin_=xMin;this.xMax_=xMax;this.minRectSize_=minRectSize;this.maxMergeDist_=maxMergeDist;this.palette_=palette;} -FastRectRenderer.prototype={y_:0,h_:0,merging_:false,mergeStartX_:0,mergeCurRight_:0,mergedColorId_:0,mergedAlpha_:0,setYandH(y,h){if(this.y_===y&&this.h_===h){return;} -this.flush();this.y_=y;this.h_=h;},fillRect(x,w,colorId,alpha){const r=x+w;if(wthis.maxMergeDist_){this.flush();} -if(!this.merging_){this.merging_=true;this.mergeStartX_=x;this.mergeCurRight_=r;this.mergedColorId_=colorId;this.mergedAlpha_=alpha;}else{this.mergeCurRight_=r;if(this.mergedAlpha_0;},draw(type,viewLWorld,viewRWorld,viewHeight){switch(type){case tr.ui.tracks.DrawType.GENERAL_EVENT:this.drawRects_(viewLWorld,viewRWorld);break;}},drawRects_(viewLWorld,viewRWorld){const ctx=this.context();ctx.save();const bounds=this.getBoundingClientRect();tr.ui.b.drawSlices(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.rects_,this.asyncStyle_);ctx.restore();if(bounds.height<=6)return;let fontSize;let yOffset;if(bounds.height<15){fontSize=6;yOffset=1.0;}else{fontSize=10;yOffset=2.5;} -tr.ui.b.drawLabels(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,this.rects_,this.asyncStyle_,fontSize,yOffset);},addEventsToTrackMap(eventToTrackMap){if(this.rects_===undefined||this.rects_===null){return;} -this.rects_.forEach(function(rect){rect.addToTrackMap(eventToTrackMap,this);},this);},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){function onRect(rect){rect.addToSelection(selection);} -onRect=onRect.bind(this);const instantEventWidth=2*viewPixWidthWorld;tr.b.iterateOverIntersectingIntervals(this.rects_,function(x){return x.start;},function(x){return x.duration===0?x.duration+instantEventWidth:x.duration;},loWX,hiWX,onRect);},addEventNearToProvidedEventToSelection(event,offset,selection){const index=this.rects_.findIndex(rect=>rect.modelItem===event);if(index===-1)return false;const newIndex=index+offset;if(newIndex<0||newIndex>=this.rects_.length)return false;this.rects_[newIndex].addToSelection(selection);return true;},addAllEventsMatchingFilterToSelection(filter,selection){for(let i=0;i0)return true;return false;},updateContents_(){this.detach();if(!this.cpu_)return;const slices=this.cpu_.slices;if(slices.length){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;track.heading=this.cpu_.userFriendlyName+':';Polymer.dom(this).appendChild(track);} -if(this.detailedMode_){this.appendSamplesTracks_();for(const counterName in this.cpu_.counters){const counter=this.cpu_.counters[counterName];const track=new tr.ui.tracks.CounterTrack(this.viewport);track.heading=this.cpu_.userFriendlyName+' '+ -counter.name+':';track.counter=counter;Polymer.dom(this).appendChild(track);}}},appendSamplesTracks_(){const samples=this.cpu_.samples;if(samples===undefined||samples.length===0){return;} -const samplesByTitle={};samples.forEach(function(sample){if(samplesByTitle[sample.title]===undefined){samplesByTitle[sample.title]=[];} -samplesByTitle[sample.title].push(sample);});const sampleTitles=Object.keys(samplesByTitle);sampleTitles.sort();sampleTitles.forEach(function(sampleTitle){const samples=samplesByTitle[sampleTitle];const samplesTrack=new tr.ui.tracks.SliceTrack(this.viewport);samplesTrack.group=this.cpu_;samplesTrack.slices=samples;samplesTrack.heading=this.cpu_.userFriendlyName+': '+ -sampleTitle;samplesTrack.tooltip=this.cpu_.userFriendlyDetails;samplesTrack.selectionGenerator=function(){const selection=new tr.model.EventSet();for(let i=0;ielem.row);},get hasVisibleContent(){return this.children.length>0;},get expanded(){return this.expanded_;},set expanded(expanded){if(this.expanded_===expanded)return;this.expanded_=expanded;this.expandedStateChanged_();},onHeadingClicked_(e){if(this.subRows.length<=1)return;this.expanded=!this.expanded;if(this.groupingSource_){const modelSettings=new tr.model.ModelSettings(this.groupingSource_.model);modelSettings.setSettingFor(this.groupingSource_,'expanded',this.expanded);} -e.stopPropagation();},updateExpandedStateFromGroupingSource_(){if(this.groupingSource_){const numSubRows=this.subRows.length;const modelSettings=new tr.model.ModelSettings(this.groupingSource_.model);if(numSubRows>1){let defaultExpanded;if(numSubRows>this.defaultToCollapsedWhenSubRowCountMoreThan){defaultExpanded=false;}else{defaultExpanded=true;} -this.expanded=modelSettings.getSettingFor(this.groupingSource_,'expanded',defaultExpanded);}else{this.expanded=undefined;}}},expandedStateChanged_(){const children=this.children;const minH=Math.max(2,Math.ceil(18/children.length));const h=(this.expanded_?18:minH)+'px';for(let i=0;i{return{row,heading:undefined};});} -if(this.currentSubRowsWithHeadings_===undefined||this.currentSubRowsWithHeadings_.length===0){return;} -const addSubTrackEx=(items,opt_heading)=>{const track=this.addSubTrack_(items);if(opt_heading!==undefined){track.heading=opt_heading;} -track.addEventListener('heading-clicked',this.onHeadingClicked_.bind(this));};if(this.currentSubRowsWithHeadings_[0].heading!==undefined&&this.currentSubRowsWithHeadings_[0].heading!==this.heading_){addSubTrackEx([]);} -for(const subRowWithHeading of this.currentSubRowsWithHeadings_){const subRow=subRowWithHeading.row;if(subRow.length===0){continue;} -addSubTrackEx(subRow,subRowWithHeading.heading);} -this.updateHeadingAndTooltip_();this.expandedStateChanged_();},updateHeadingAndTooltip_(){if(!Polymer.dom(this).firstChild)return;Polymer.dom(this).firstChild.heading=this.heading_;Polymer.dom(this).firstChild.tooltip=this.tooltip_;},buildSubRows_(itemsToGroup){throw new Error('Not implemented');},addSubTrack_(subRowItems){throw new Error('Not implemented');},areArrayContentsSame_(a,b){if(!a||!b)return false;if(!a.length||!b.length)return false;if(a.length!==b.length)return false;for(let i=0;iviewRWorld)break;const right=instance.deletionTs===Number.MAX_VALUE?viewRWorld:instance.deletionTs;const xView=dt.xWorldToView(x);const widthView=dt.xWorldVectorToView(right-x);ctx.fillStyle=EventPresenter.getObjectInstanceColor(instance);ctx.fillRect(xView,pixelRatio,widthView,height-2*pixelRatio);} -ctx.restore();const objectSnapshots=this.objectSnapshots_;loI=tr.b.findLowIndexInSortedArray(objectSnapshots,function(snapshot){return snapshot.ts+snapshotRadiusWorld;},viewLWorld);for(let i=loI;iviewRWorld)break;const xView=dt.xWorldToView(x);ctx.fillStyle=EventPresenter.getObjectSnapshotColor(snapshot);ctx.beginPath();ctx.arc(xView,halfHeight,snapshotRadiusView,0,twoPi);ctx.fill();if(snapshot.selected){ctx.lineWidth=5;ctx.strokeStyle='rgb(100,100,0)';ctx.stroke();ctx.beginPath();ctx.arc(xView,halfHeight,snapshotRadiusView-1,0,twoPi);ctx.lineWidth=2;ctx.strokeStyle='rgb(255,255,0)';ctx.stroke();}else{ctx.lineWidth=1;ctx.strokeStyle='rgb(0,0,0)';ctx.stroke();}} -ctx.lineWidth=1;let selectionState=SelectionState.NONE;if(objectInstances.length&&objectInstances[0].selectionState===SelectionState.DIMMED){selectionState=SelectionState.DIMMED;} -if(selectionState===SelectionState.DIMMED){const width=bounds.width*pixelRatio;ctx.fillStyle='rgba(255,255,255,0.5)';ctx.fillRect(0,0,width,height);ctx.restore();}},addEventsToTrackMap(eventToTrackMap){if(this.objectInstance_!==undefined){this.objectInstance_.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);} -if(this.objectSnapshots_!==undefined){this.objectSnapshots_.forEach(function(obj){eventToTrackMap.addEvent(obj,this);},this);}},addIntersectingEventsInRangeToSelectionInWorldSpace(loWX,hiWX,viewPixWidthWorld,selection){let foundSnapshot=false;function onSnapshot(snapshot){selection.push(snapshot);foundSnapshot=true;} -const snapshotRadiusView=this.snapshotRadiusView;const snapshotRadiusWorld=viewPixWidthWorld*snapshotRadiusView;tr.b.iterateOverIntersectingIntervals(this.objectSnapshots_,function(x){return x.ts-snapshotRadiusWorld;},function(x){return 2*snapshotRadiusWorld;},loWX,hiWX,onSnapshot);if(foundSnapshot)return;tr.b.iterateOverIntersectingIntervals(this.objectInstances_,function(x){return x.creationTs;},function(x){return x.deletionTs-x.creationTs;},loWX,hiWX,(value)=>{selection.push(value);});},addEventNearToProvidedEventToSelection(event,offset,selection){let events;if(event instanceof tr.model.ObjectSnapshot){events=this.objectSnapshots_;}else if(event instanceof tr.model.ObjectInstance){events=this.objectInstances_;}else{throw new Error('Unrecognized event');} -const index=events.indexOf(event);const newIndex=index+offset;if(newIndex>=0&&newIndex1;const track=new tr.ui.tracks.ObjectInstanceTrack(this.viewport);track.objectInstances=objectInstances;Polymer.dom(this).appendChild(track);return track;},buildSubRows_(objectInstances){objectInstances.sort(function(x,y){return x.creationTs-y.creationTs;});const subRows=[];for(let i=0;i=lastItemInSubRow.deletionTs){found=true;subRow.push(objectInstance);break;}} -if(!found){subRows.push([objectInstance]);}} -return subRows;},updateHeadingAndTooltip_(){}};return{ObjectInstanceGroupTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const AsyncSliceGroupTrack=tr.ui.b.define('async-slice-group-track',tr.ui.tracks.MultiRowTrack);AsyncSliceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('async-slice-group-track');this.group_=undefined;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);track.asyncStyle=true;return track;},get group(){return this.group_;},set group(group){this.group_=group;this.buildAndSetSubRows_();},get eventContainer(){return this.group;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.group,this);},buildAndSetSubRows_(){if(this.group_.viewSubGroups.length<=1){const rows=groupAsyncSlicesIntoSubRows(this.group_.slices);const rowsWithHeadings=rows.map(row=>{return{row,heading:undefined};});this.setPrebuiltSubRows(this.group_,rowsWithHeadings);return;} -const rowsWithHeadings=[];for(const subGroup of this.group_.viewSubGroups){const subGroupRows=groupAsyncSlicesIntoSubRows(subGroup.slices);if(subGroupRows.length===0){continue;} -for(let i=0;i{while(rows.length<=level){rows.push([]);} -rows[level].push(slice);};const putSliceRecursively=(slice,level)=>{putSlice(slice,level);if(slice.subSlices!==undefined){for(const subSlice of slice.subSlices){putSliceRecursively(subSlice,level+1);}}};for(const slice of slices){putSliceRecursively(stripSlice_(slice),0);} -return rows;} -function groupAsyncSlicesIntoSubRows(slices,opt_skipSort){if(!opt_skipSort){slices.sort((x,y)=>x.start-y.start);} -const rows=[];let slicesLeft=slices;while(slicesLeft.length!==0){const fit=[];const unfit=[];let levelEndTime=-1;for(const slice of slicesLeft){if(slice.start>=levelEndTime){levelEndTime=slice.end;fit.push(slice);}else{unfit.push(slice);}} -rows.push(...makeLevelSubRows_(fit));slicesLeft=unfit;} -return rows;} -return{AsyncSliceGroupTrack,groupAsyncSlicesIntoSubRows,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SampleTrack=tr.ui.b.define('sample-track',tr.ui.tracks.RectTrack);SampleTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get samples(){return this.rects;},set samples(samples){this.rects=samples;}};return{SampleTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const SliceGroupTrack=tr.ui.b.define('slice-group-track',tr.ui.tracks.MultiRowTrack);SliceGroupTrack.prototype={__proto__:tr.ui.tracks.MultiRowTrack.prototype,decorate(viewport){tr.ui.tracks.MultiRowTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('slice-group-track');this.group_=undefined;this.defaultToCollapsedWhenSubRowCountMoreThan=100;},addSubTrack_(slices){const track=new tr.ui.tracks.SliceTrack(this.viewport);track.slices=slices;Polymer.dom(this).appendChild(track);return track;},get group(){return this.group_;},set group(group){this.group_=group;this.setItemsToGroup(this.group_.slices,this.group_);},get eventContainer(){return this.group;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.MultiRowTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.group,this);},buildSubRows_(slices){const precisionUnit=this.group.model.intrinsicTimeUnit;if(!slices.length)return[];const ops=[];for(let i=0;i=0;j--){if(subRows[j].length===0)continue;const insertedSlice=subRows[j][subRows[j].length-1];if(slice.start0;},get hasSlices(){return this.thread_.asyncSliceGroup.length>0||this.thread_.sliceGroup.length>0;},get hasTimeSlices(){return this.thread_.timeSlices;},get eventContainer(){return this.thread;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ContainerTrack.prototype.addContainersToTrackMap.apply(this,arguments);containerToTrackMap.addContainer(this.thread,this);},updateContents_(){this.detach();if(!this.thread_)return;this.heading_.heading=this.thread_.userFriendlyName;this.heading_.tooltip=this.thread_.userFriendlyDetails;if(this.thread_.asyncSliceGroup.length){this.appendAsyncSliceTracks_();} -this.appendThreadSamplesTracks_();let needsHeading=false;if(this.thread_.timeSlices){const timeSlicesTrack=new tr.ui.tracks.SliceTrack(this.viewport);timeSlicesTrack.heading='';timeSlicesTrack.height=tr.ui.b.THIN_SLICE_HEIGHT+'px';timeSlicesTrack.slices=this.thread_.timeSlices;if(timeSlicesTrack.hasVisibleContent){needsHeading=true;Polymer.dom(this).appendChild(timeSlicesTrack);}} -if(this.thread_.sliceGroup.length){const track=new tr.ui.tracks.SliceGroupTrack(this.viewport);track.heading=this.thread_.userFriendlyName;track.tooltip=this.thread_.userFriendlyDetails;track.group=this.thread_.sliceGroup;if(track.hasVisibleContent){needsHeading=false;Polymer.dom(this).appendChild(track);}} -if(needsHeading){Polymer.dom(this).appendChild(this.heading_);}},appendAsyncSliceTracks_(){const subGroups=this.thread_.asyncSliceGroup.viewSubGroups;subGroups.forEach(function(subGroup){const asyncTrack=new tr.ui.tracks.AsyncSliceGroupTrack(this.viewport);asyncTrack.group=subGroup;asyncTrack.heading=subGroup.title;if(asyncTrack.hasVisibleContent){Polymer.dom(this).appendChild(asyncTrack);}},this);},appendThreadSamplesTracks_(){const threadSamples=this.thread_.samples;if(threadSamples===undefined||threadSamples.length===0){return;} -const samplesByTitle={};threadSamples.forEach(function(sample){if(samplesByTitle[sample.title]===undefined){samplesByTitle[sample.title]=[];} -samplesByTitle[sample.title].push(sample);});const sampleTitles=Object.keys(samplesByTitle);sampleTitles.sort();sampleTitles.forEach(function(sampleTitle){const samples=samplesByTitle[sampleTitle];const samplesTrack=new tr.ui.tracks.SampleTrack(this.viewport);samplesTrack.group=this.thread_;samplesTrack.samples=samples;samplesTrack.heading=this.thread_.userFriendlyName+': '+ -sampleTitle;samplesTrack.tooltip=this.thread_.userFriendlyDetails;samplesTrack.selectionGenerator=function(){const selection=new tr.model.EventSet();for(let i=0;i2){this.tracks[i].height=Math.floor(h)+'px';}else{this.tracks[i].style.display='none';} -h=h*0.5;}}else{for(let i=0;i=1?op.time:undefined;currentSlice=undefined;}}else{if(op.isStart){if(depth===1){lastStart=op.time;currentSlice=op.slice;}else if(op.slice){if(op.time!==lastStart){pushRect(lastStart,op.time,undefined);lastStart=op.time;} -currentSlice=op.slice;}}else{if(depth===0){pushRect(lastStart,op.time,undefined);lastStart=undefined;}}}});return rects;};ProcessSummaryTrack.prototype={__proto__:tr.ui.tracks.RectTrack.prototype,decorate(viewport){tr.ui.tracks.RectTrack.prototype.decorate.call(this,viewport);},get process(){return this.process_;},set process(process){this.process_=process;this.rects=ProcessSummaryTrack.buildRectsFromProcess(process);}};return{ProcessSummaryTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ObjectSnapshotView=tr.ui.analysis.ObjectSnapshotView;const ObjectInstanceView=tr.ui.analysis.ObjectInstanceView;const SpacingTrack=tr.ui.tracks.SpacingTrack;const ProcessTrackBase=tr.ui.b.define('process-track-base',tr.ui.tracks.ContainerTrack);ProcessTrackBase.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.processBase_=undefined;Polymer.dom(this).classList.add('process-track-base');Polymer.dom(this).classList.add('expanded');this.processNameEl_=tr.ui.b.createSpan();Polymer.dom(this.processNameEl_).classList.add('process-track-name');this.closeEl_=tr.ui.b.createSpan();Polymer.dom(this.closeEl_).classList.add('process-track-close');this.closeEl_.textContent='X';this.headerEl_=tr.ui.b.createDiv({className:'process-track-header'});Polymer.dom(this.headerEl_).appendChild(this.processNameEl_);Polymer.dom(this.headerEl_).appendChild(this.closeEl_);this.headerEl_.addEventListener('click',this.onHeaderClick_.bind(this));Polymer.dom(this).appendChild(this.headerEl_);},get processBase(){return this.processBase_;},set processBase(processBase){this.processBase_=processBase;if(this.processBase_){const modelSettings=new tr.model.ModelSettings(this.processBase_.model);const defaultValue=this.processBase_.important;this.expanded=modelSettings.getSettingFor(this.processBase_,'expanded',defaultValue);} -this.updateContents_();},get expanded(){return Polymer.dom(this).classList.contains('expanded');},set expanded(expanded){expanded=!!expanded;if(this.expanded===expanded)return;Polymer.dom(this).classList.toggle('expanded');this.viewport_.dispatchChangeEvent();if(!this.processBase_)return;const modelSettings=new tr.model.ModelSettings(this.processBase_.model);modelSettings.setSettingFor(this.processBase_,'expanded',expanded);this.updateContents_();this.viewport.rebuildEventToTrackMap();this.viewport.rebuildContainerToTrackMap();},set visible(visible){if(visible===this.visible)return;this.hidden=!visible;tr.b.dispatchSimpleEvent(this,'visibility');this.viewport_.dispatchChangeEvent();if(!this.processBase_)return;this.updateContents_();this.viewport.rebuildEventToTrackMap();this.viewport.rebuildContainerToTrackMap();},get visible(){return!this.hidden;},get hasVisibleContent(){if(this.expanded){return this.children.length>1;} -return true;},onHeaderClick_(e){e.stopPropagation();e.preventDefault();if(e.target===this.closeEl_){this.visible=false;}else{this.expanded=!this.expanded;}},updateContents_(){this.clearTracks_();if(!this.processBase_)return;if(!this.visible)return;Polymer.dom(this.processNameEl_).textContent=this.processBase_.userFriendlyName;this.headerEl_.title=this.processBase_.userFriendlyDetails;this.willAppendTracks_();if(this.expanded){this.appendMemoryDumpTrack_();this.appendObjectInstanceTracks_();this.appendCounterTracks_();this.appendFrameTrack_();this.appendThreadTracks_();}else{this.appendSummaryTrack_();} -this.didAppendTracks_();},willAppendTracks_(){},didAppendTracks_(){},appendMemoryDumpTrack_(){},appendSummaryTrack_(){const track=new tr.ui.tracks.ProcessSummaryTrack(this.viewport);track.process=this.process;if(!track.hasVisibleContent)return;Polymer.dom(this).appendChild(track);},appendFrameTrack_(){const frames=this.process?this.process.frames:undefined;if(!frames||!frames.length)return;const track=new tr.ui.tracks.FrameTrack(this.viewport);track.frames=frames;Polymer.dom(this).appendChild(track);},appendObjectInstanceTracks_(){const instancesByTypeName=this.processBase_.objects.getAllInstancesByTypeName();const instanceTypeNames=Object.keys(instancesByTypeName);instanceTypeNames.sort();let didAppendAtLeastOneTrack=false;instanceTypeNames.forEach(function(typeName){const allInstances=instancesByTypeName[typeName];let instanceViewInfo=ObjectInstanceView.getTypeInfo(undefined,typeName);let snapshotViewInfo=ObjectSnapshotView.getTypeInfo(undefined,typeName);if(instanceViewInfo&&!instanceViewInfo.metadata.showInTrackView){instanceViewInfo=undefined;} -if(snapshotViewInfo&&!snapshotViewInfo.metadata.showInTrackView){snapshotViewInfo=undefined;} -const hasViewInfo=instanceViewInfo||snapshotViewInfo;const visibleInstances=[];for(let i=0;i0){const track=new tr.ui.tracks.OtherThreadsTrack(this.viewport);track.threads=otherThreads;track.collapsible=otherThreads.length>1&&hasVisibleThreads;Polymer.dom(this).appendChild(track);}}};return{ProcessTrackBase,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const Cpu=tr.model.Cpu;const CpuTrack=tr.ui.tracks.cpu_track;const ProcessTrackBase=tr.ui.tracks.ProcessTrackBase;const SpacingTrack=tr.ui.tracks.SpacingTrack;const KernelTrack=tr.ui.b.define('kernel-track',ProcessTrackBase);KernelTrack.prototype={__proto__:ProcessTrackBase.prototype,decorate(viewport){ProcessTrackBase.prototype.decorate.call(this,viewport);},set kernel(kernel){this.processBase=kernel;},get kernel(){return this.processBase;},get eventContainer(){return this.kernel;},get hasVisibleContent(){return this.children.length>1;},addContainersToTrackMap(containerToTrackMap){tr.ui.tracks.ProcessTrackBase.prototype.addContainersToTrackMap.call(this,containerToTrackMap);containerToTrackMap.addContainer(this.kernel,this);},willAppendTracks_(){const cpus=Object.values(this.kernel.cpus);cpus.sort(tr.model.Cpu.compare);let didAppendAtLeastOneTrack=false;for(let i=0;inew tr.ui.tracks.LetterDot(memoryEvent,'K',ColorScheme.getColorIdForReservedName('background_memory_dump'),memoryEvent.start));},};return{MemoryTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ALLOCATED_MEMORY_TRACK_HEIGHT=50;const ProcessMemoryDumpTrack=tr.ui.b.define('process-memory-dump-track',tr.ui.tracks.ContainerTrack);ProcessMemoryDumpTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);this.memoryDumps_=undefined;},get memoryDumps(){return this.memoryDumps_;},set memoryDumps(memoryDumps){this.memoryDumps_=memoryDumps;this.updateContents_();},updateContents_(){this.clearTracks_();if(!this.memoryDumps_||!this.memoryDumps_.length)return;this.appendAllocatedMemoryTrack_();},appendAllocatedMemoryTrack_(){const series=tr.ui.tracks.buildProcessAllocatedMemoryChartSeries(this.memoryDumps_);if(!series)return;const track=new tr.ui.tracks.ChartTrack(this.viewport);track.heading='Memory per component';track.height=ALLOCATED_MEMORY_TRACK_HEIGHT+'px';track.series=series;track.autoSetAllAxes({expandMax:true});Polymer.dom(this).appendChild(track);}};return{ProcessMemoryDumpTrack,};});'use strict';tr.exportTo('tr.ui.tracks',function(){const ProcessTrackBase=tr.ui.tracks.ProcessTrackBase;const ProcessTrack=tr.ui.b.define('process-track',ProcessTrackBase);ProcessTrack.prototype={__proto__:ProcessTrackBase.prototype,decorate(viewport){tr.ui.tracks.ProcessTrackBase.prototype.decorate.call(this,viewport);},drawTrack(type){switch(type){case tr.ui.tracks.DrawType.INSTANT_EVENT:{if(!this.processBase.instantEvents||this.processBase.instantEvents.length===0){break;} -const ctx=this.context();const pixelRatio=window.devicePixelRatio||1;const bounds=this.getBoundingClientRect();const canvasBounds=ctx.canvas.getBoundingClientRect();ctx.save();ctx.translate(0,pixelRatio*(bounds.top-canvasBounds.top));const dt=this.viewport.currentDisplayTransform;const viewLWorld=dt.xViewToWorld(0);const viewRWorld=dt.xViewToWorld(canvasBounds.width*pixelRatio);tr.ui.b.drawInstantSlicesAsLines(ctx,this.viewport.currentDisplayTransform,viewLWorld,viewRWorld,bounds.height,this.processBase.instantEvents,2);ctx.restore();break;} -case tr.ui.tracks.DrawType.BACKGROUND:this.drawBackground_();return;} -tr.ui.tracks.ContainerTrack.prototype.drawTrack.call(this,type);},drawBackground_(){const ctx=this.context();const canvasBounds=ctx.canvas.getBoundingClientRect();const pixelRatio=window.devicePixelRatio||1;const children=this.children;let draw=false;ctx.fillStyle='#eee';for(let i=0;ix),minTime);let highIndex=lowIndex-1;while(times[highIndex+1]<=maxTime){highIndex++;} -const stripes=[];for(let i=lowIndex-(lowIndex%2);i<=highIndex;i+=2){const left=ihighIndex?maxTime:times[i+1];stripes.push(tr.b.math.Range.fromExplicitRange(left,right));} -return stripes;};ModelTrack.prototype={__proto__:tr.ui.tracks.ContainerTrack.prototype,decorate(viewport){tr.ui.tracks.ContainerTrack.prototype.decorate.call(this,viewport);Polymer.dom(this).classList.add('model-track');this.upperMode_=false;this.annotationViews_=[];this.vSyncTimes_=[];},get processViews(){return Polymer.dom(this).querySelectorAll('.process-track-base');},get upperMode(){return this.upperMode_;},set upperMode(upperMode){this.upperMode_=upperMode;this.updateContents_();},detach(){tr.ui.tracks.ContainerTrack.prototype.detach.call(this);},get model(){return this.model_;},set model(model){this.model_=model;this.updateContents_();this.model_.addEventListener('annotationChange',this.updateAnnotations_.bind(this));},get hasVisibleContent(){return this.children.length>0;},updateContents_(){Polymer.dom(this).textContent='';if(!this.model_)return;if(this.upperMode_){this.updateContentsForUpperMode_();}else{this.updateContentsForLowerMode_();}},updateContentsForUpperMode_(){},updateContentsForLowerMode_(){if(this.model_.userModel.expectations.length>1){const mrt=new tr.ui.tracks.InteractionTrack(this.viewport_);mrt.model=this.model_;Polymer.dom(this).appendChild(mrt);} -if(this.model_.alerts.length){const at=new tr.ui.tracks.AlertTrack(this.viewport_);at.alerts=this.model_.alerts;Polymer.dom(this).appendChild(at);} -if(this.model_.globalMemoryDumps.length){const gmdt=new tr.ui.tracks.GlobalMemoryDumpTrack(this.viewport_);gmdt.memoryDumps=this.model_.globalMemoryDumps;Polymer.dom(this).appendChild(gmdt);} -this.appendDeviceTrack_();this.appendCpuUsageTrack_();this.appendMemoryTrack_();this.appendKernelTrack_();const processes=this.model_.getAllProcesses();processes.sort(tr.model.Process.compare);for(let i=0;ithis.viewport.selectedFlowEvents.has(x));if(onlyHighlighted&&events[i].selectionState!==SelectionState.SELECTED&&events[i].selectionState!==SelectionState.HIGHLIGHTED){continue;} -this.drawFlowArrow_(ctx,events[i],canvasBounds);}},drawFlowArrow_(ctx,flowEvent,canvasBounds){const dt=this.viewport.currentDisplayTransform;const pixelRatio=window.devicePixelRatio||1;const startTrack=this.viewport.trackForEvent(flowEvent.startSlice);const endTrack=this.viewport.trackForEvent(flowEvent.endSlice);if(startTrack===undefined||endTrack===undefined)return;const startBounds=startTrack.getBoundingClientRect();const endBounds=endTrack.getBoundingClientRect();if(flowEvent.selectionState===SelectionState.SELECTED){ctx.shadowBlur=1;ctx.shadowColor='red';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else if(flowEvent.selectionState===SelectionState.HIGHLIGHTED){ctx.shadowBlur=1;ctx.shadowColor='red';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else if(flowEvent.selectionState===SelectionState.DIMMED){ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[flowEvent.colorId];}else{let hasBoost=false;const startSlice=flowEvent.startSlice;hasBoost|=startSlice.selectionState===SelectionState.SELECTED;hasBoost|=startSlice.selectionState===SelectionState.HIGHLIGHTED;const endSlice=flowEvent.endSlice;hasBoost|=endSlice.selectionState===SelectionState.SELECTED;hasBoost|=endSlice.selectionState===SelectionState.HIGHLIGHTED;if(hasBoost){ctx.shadowBlur=1;ctx.shadowColor='rgba(255, 0, 0, 0.4)';ctx.shadowOffsety=2;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[tr.b.ColorScheme.getVariantColorId(flowEvent.colorId,tr.b.ColorScheme.properties.brightenedOffsets[0])];}else{ctx.shadowBlur=0;ctx.shadowOffsetX=0;ctx.strokeStyle=tr.b.ColorScheme.colorsAsStrings[flowEvent.colorId];}} -const startSize=startBounds.left+startBounds.top+ -startBounds.bottom+startBounds.right;const endSize=endBounds.left+endBounds.top+ -endBounds.bottom+endBounds.right;if(startSize===0&&endSize===0)return;const startY=this.calculateTrackY_(startTrack,canvasBounds);const endY=this.calculateTrackY_(endTrack,canvasBounds);const worldOffset=this.getBoundingClientRect().top-canvasBounds.top;const pixelStartY=pixelRatio*(startY-worldOffset);const pixelEndY=pixelRatio*(endY-worldOffset);const startXView=dt.xWorldToView(flowEvent.start);const endXView=dt.xWorldToView(flowEvent.end);const midXView=(startXView+endXView)/2;ctx.beginPath();ctx.moveTo(startXView,pixelStartY);ctx.bezierCurveTo(midXView,pixelStartY,midXView,pixelEndY,endXView,pixelEndY);ctx.stroke();const arrowWidth=5*pixelRatio;const distance=endXView-startXView;if(distance<=(2*arrowWidth))return;const tipX=endXView;const tipY=pixelEndY;const arrowHeight=(endBounds.height/4)*pixelRatio;tr.ui.b.drawTriangle(ctx,tipX,tipY,tipX-arrowWidth,tipY-arrowHeight,tipX-arrowWidth,tipY+arrowHeight);ctx.fill();},drawVSyncHighlight(ctx,dt,viewLWorld,viewRWorld,viewHeight){if(!this.viewport_.highlightVSync){return;} -const stripes=ModelTrack.generateStripes_(this.vSyncTimes_,viewLWorld,viewRWorld);if(stripes.length===0){return;} -const vSyncHighlightColor=new tr.b.Color(ColorScheme.getColorForReservedNameAsString('vsync_highlight_color'));const stripeRange=stripes[stripes.length-1].max-stripes[0].min;const stripeDensity=stripeRange?stripes.length/(dt.scaleX*stripeRange):0;const clampedStripeDensity=tr.b.math.clamp(stripeDensity,ModelTrack.VSYNC_DENSITY_OPAQUE,ModelTrack.VSYNC_DENSITY_TRANSPARENT);const opacity=(ModelTrack.VSYNC_DENSITY_TRANSPARENT-clampedStripeDensity)/ModelTrack.VSYNC_DENSITY_RANGE;if(opacity===0){return;} -ctx.fillStyle=vSyncHighlightColor.toStringWithAlphaOverride(ModelTrack.VSYNC_HIGHLIGHT_ALPHA*opacity);for(let i=0;i1?vp.majorMarkWorldPositions[1]-vp.majorMarkWorldPositions[0]:0;const numTicksPerMajor=5;const minorMarkDistanceWorld=majorMarkDistanceWorld/numTicksPerMajor;const minorMarkDistancePx=dt.xWorldVectorToView(minorMarkDistanceWorld);const minorTickHeight=Math.floor(xAxisHeightPx*0.25);ctx.save();ctx.lineWidth=Math.round(pixelRatio);const crispLineCorrection=(ctx.lineWidth%2)/2;ctx.translate(crispLineCorrection,-crispLineCorrection);ctx.fillStyle='rgb(0, 0, 0)';ctx.strokeStyle='rgb(0, 0, 0)';ctx.textAlign='left';ctx.textBaseline='top';ctx.font=(9*pixelRatio)+'px sans-serif';const tickLabels=[];ctx.beginPath();for(let i=0;iwidth){textLeftView=markerView-4*pixelRatio-textWidthView;} -ctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);return;} -const leftMarker=interestRange.min;const rightMarker=interestRange.max;const leftMarkerView=dt.xWorldToView(leftMarker);const rightMarkerView=dt.xWorldToView(rightMarker);const distanceBetweenMarkers=interestRange.range;const distanceBetweenMarkersView=dt.xWorldVectorToView(distanceBetweenMarkers);const positionInMiddleOfMarkersView=leftMarkerView+(distanceBetweenMarkersView/2);const textToDraw=vp.majorMarkUnit.format(distanceBetweenMarkers);const textWidthView=ctx.measureText(textToDraw).width;const spaceForArrowsAndTextView=textWidthView+spaceForArrowsView+arrowSpacing;let textLeftView=positionInMiddleOfMarkersView-textWidthView/2;const textRightView=textLeftView+textWidthView;if(spaceForArrowsAndTextView>distanceBetweenMarkersView){textLeftView=rightMarkerView+2*arrowSpacing;if(textLeftView+textWidthView>width){textLeftView=leftMarkerView-2*arrowSpacing-textWidthView;} -ctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);ctx.strokeStyle=arrowColor;ctx.beginPath();tr.ui.b.drawLine(ctx,leftMarkerView,arrowPosY,rightMarkerView,arrowPosY);ctx.stroke();ctx.fillStyle=arrowColor;tr.ui.b.drawArrow(ctx,leftMarkerView-1.5*arrowSpacing,arrowPosY,leftMarkerView,arrowPosY,arrowLengthView,arrowWidthView);tr.ui.b.drawArrow(ctx,rightMarkerView+1.5*arrowSpacing,arrowPosY,rightMarkerView,arrowPosY,arrowLengthView,arrowWidthView);}else if(spaceForArrowsView<=distanceBetweenMarkersView){let leftArrowStart;let rightArrowStart;if(spaceForArrowsAndTextView<=distanceBetweenMarkersView){ctx.fillStyle=displayTextColor;ctx.fillText(textToDraw,textLeftView,textPosY);leftArrowStart=textLeftView-arrowSpacing;rightArrowStart=textRightView+arrowSpacing;}else{leftArrowStart=positionInMiddleOfMarkersView;rightArrowStart=positionInMiddleOfMarkersView;} -ctx.strokeStyle=arrowColor;ctx.fillStyle=arrowColor;tr.ui.b.drawArrow(ctx,leftArrowStart,arrowPosY,leftMarkerView,arrowPosY,arrowLengthView,arrowWidthView);tr.ui.b.drawArrow(ctx,rightArrowStart,arrowPosY,rightMarkerView,arrowPosY,arrowLengthView,arrowWidthView);} -ctx.restore();},drawMarkers_(viewLWorld,viewRWorld){const pixelRatio=window.devicePixelRatio||1;const trackBounds=this.getBoundingClientRect();const viewHeight=trackBounds.height*pixelRatio;if(!this.viewport.interestRange.isEmpty){this.viewport.interestRange.draw(this.context(),viewLWorld,viewRWorld,viewHeight);}},addIntersectingEventsInRangeToSelection(loVX,hiVX,loY,hiY,selection){},addAllEventsMatchingFilterToSelection(filter,selection){}};return{XAxisTrack,};});'use strict';Polymer({is:'tr-ui-timeline-track-view',ready(){this.displayTransform_=new tr.ui.TimelineDisplayTransform();this.model_=undefined;this.timelineView_=undefined;this.pollIfViewportAttachedInterval_=undefined;this.viewport_=new tr.ui.TimelineViewport(this);this.viewportDisplayTransformAtMouseDown_=undefined;this.brushingStateController_=undefined;this.rulerTrackContainer_=new tr.ui.tracks.DrawingContainer(this.viewport_);Polymer.dom(this).appendChild(this.rulerTrackContainer_);this.rulerTrackContainer_.invalidate();this.rulerTrackContainer_.style.overflowY='hidden';this.rulerTrackContainer_.style.flexShrink='0';this.rulerTrack_=new tr.ui.tracks.XAxisTrack(this.viewport_);Polymer.dom(this.rulerTrackContainer_).appendChild(this.rulerTrack_);this.upperModelTrack_=new tr.ui.tracks.ModelTrack(this.viewport_);this.upperModelTrack_.upperMode=true;Polymer.dom(this.rulerTrackContainer_).appendChild(this.upperModelTrack_);this.modelTrackContainer_=new tr.ui.tracks.DrawingContainer(this.viewport_);Polymer.dom(this).appendChild(this.modelTrackContainer_);this.modelTrackContainer_.style.display='block';this.modelTrackContainer_.style.flexGrow='1';this.modelTrackContainer_.invalidate();this.viewport_.modelTrackContainer=this.modelTrackContainer_;this.modelTrack_=new tr.ui.tracks.ModelTrack(this.viewport_);Polymer.dom(this.modelTrackContainer_).appendChild(this.modelTrack_);this.timingTool_=new tr.ui.b.TimingTool(this.viewport_,this);this.initMouseModeSelector();this.hideDragBox_();this.initHintText_();this.onSelectionChanged_=this.onSelectionChanged_.bind(this);this.onDblClick_=this.onDblClick_.bind(this);this.addEventListener('dblclick',this.onDblClick_);this.onMouseWheel_=this.onMouseWheel_.bind(this);this.addEventListener('mousewheel',this.onMouseWheel_);this.onMouseDown_=this.onMouseDown_.bind(this);this.addEventListener('mousedown',this.onMouseDown_);this.onMouseMove_=this.onMouseMove_.bind(this);this.addEventListener('mousemove',this.onMouseMove_);this.onTouchStart_=this.onTouchStart_.bind(this);this.addEventListener('touchstart',this.onTouchStart_);this.onTouchMove_=this.onTouchMove_.bind(this);this.addEventListener('touchmove',this.onTouchMove_);this.onTouchEnd_=this.onTouchEnd_.bind(this);this.addEventListener('touchend',this.onTouchEnd_);this.addHotKeys_();this.mouseViewPosAtMouseDown_={x:0,y:0};this.lastMouseViewPos_={x:0,y:0};this.lastTouchViewPositions_=[];this.alert_=undefined;this.isPanningAndScanning_=false;this.isZooming_=false;},initMouseModeSelector(){this.mouseModeSelector_=document.createElement('tr-ui-b-mouse-mode-selector');this.mouseModeSelector_.targetElement=this;Polymer.dom(this).appendChild(this.mouseModeSelector_);this.mouseModeSelector_.addEventListener('beginpan',this.onBeginPanScan_.bind(this));this.mouseModeSelector_.addEventListener('updatepan',this.onUpdatePanScan_.bind(this));this.mouseModeSelector_.addEventListener('endpan',this.onEndPanScan_.bind(this));this.mouseModeSelector_.addEventListener('beginselection',this.onBeginSelection_.bind(this));this.mouseModeSelector_.addEventListener('updateselection',this.onUpdateSelection_.bind(this));this.mouseModeSelector_.addEventListener('endselection',this.onEndSelection_.bind(this));this.mouseModeSelector_.addEventListener('beginzoom',this.onBeginZoom_.bind(this));this.mouseModeSelector_.addEventListener('updatezoom',this.onUpdateZoom_.bind(this));this.mouseModeSelector_.addEventListener('endzoom',this.onEndZoom_.bind(this));this.mouseModeSelector_.addEventListener('entertiming',this.timingTool_.onEnterTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('begintiming',this.timingTool_.onBeginTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('updatetiming',this.timingTool_.onUpdateTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('endtiming',this.timingTool_.onEndTiming.bind(this.timingTool_));this.mouseModeSelector_.addEventListener('exittiming',this.timingTool_.onExitTiming.bind(this.timingTool_));const m=tr.ui.b.MOUSE_SELECTOR_MODE;this.mouseModeSelector_.supportedModeMask=m.SELECTION|m.PANSCAN|m.ZOOM|m.TIMING;this.mouseModeSelector_.settingsKey='timelineTrackView.mouseModeSelector';this.mouseModeSelector_.setKeyCodeForMode(m.PANSCAN,'2'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.SELECTION,'1'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.ZOOM,'3'.charCodeAt(0));this.mouseModeSelector_.setKeyCodeForMode(m.TIMING,'4'.charCodeAt(0));this.mouseModeSelector_.setModifierForAlternateMode(m.SELECTION,tr.ui.b.MODIFIER.SHIFT);this.mouseModeSelector_.setModifierForAlternateMode(m.PANSCAN,tr.ui.b.MODIFIER.SPACE);},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController_){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_);} -this.brushingStateController_=brushingStateController;if(this.brushingStateController_){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_);}},set timelineView(view){this.timelineView_=view;},get processViews(){return this.modelTrack_.processViews;},onSelectionChanged_(){this.showHintText_('Press \'m\' to mark current selection');this.viewport_.dispatchChangeEvent();},set selection(selection){throw new Error('DO NOT CALL THIS');},set highlight(highlight){throw new Error('DO NOT CALL THIS');},detach(){this.modelTrack_.detach();this.upperModelTrack_.detach();if(this.pollIfViewportAttachedInterval_){window.clearInterval(this.pollIfViewportAttachedInterval_);this.pollIfViewportAttachedInterval_=undefined;} -this.viewport_.detach();},get viewport(){return this.viewport_;},get model(){return this.model_;},set model(model){if(!model){throw new Error('Model cannot be undefined');} -const modelInstanceChanged=this.model_!==model;this.model_=model;this.modelTrack_.model=model;this.upperModelTrack_.model=model;if(modelInstanceChanged){this.pollIfViewportAttachedInterval_=window.setInterval(this.pollIfViewportAttached_.bind(this),250);}},get hasVisibleContent(){return this.modelTrack_.hasVisibleContent||this.upperModelTrack_.hasVisibleContent;},pollIfViewportAttached_(){if(!this.viewport_.isAttachedToDocumentOrInTestMode||this.viewport_.clientWidth===0){return;} -window.addEventListener('resize',this.viewport_.dispatchChangeEvent);window.clearInterval(this.pollIfViewportAttachedInterval_);this.pollIfViewportAttachedInterval_=undefined;this.setInitialViewport_();},setInitialViewport_(){this.modelTrackContainer_.updateCanvasSizeIfNeeded_();const w=this.modelTrackContainer_.canvas.width;let min;let range;if(this.model_.bounds.isEmpty){min=0;range=1000;}else if(this.model_.bounds.range===0){min=this.model_.bounds.min;range=1000;}else{min=this.model_.bounds.min;range=this.model_.bounds.range;} -const boost=range*0.15;this.displayTransform_.set(this.viewport_.currentDisplayTransform);this.displayTransform_.xSetWorldBounds(min-boost,min+range+boost,w);this.viewport_.setDisplayTransformImmediately(this.displayTransform_);},addAllEventsMatchingFilterToSelectionAsTask(filter,selection){const modelTrack=this.modelTrack_;const firstT=modelTrack.addAllEventsMatchingFilterToSelectionAsTask(filter,selection);const lastT=firstT.after(function(){this.upperModelTrack_.addAllEventsMatchingFilterToSelection(filter,selection);},this);return firstT;},onMouseMove_(e){if(this.isZooming_)return;this.storeLastMousePos_(e);},onTouchStart_(e){this.storeLastTouchPositions_(e);this.focusElements_();},onTouchMove_(e){e.preventDefault();this.onUpdateTransformForTouch_(e);},onTouchEnd_(e){this.storeLastTouchPositions_(e);this.focusElements_();},addHotKeys_(){this.addKeyDownHotKeys_();this.addKeyPressHotKeys_();},addKeyPressHotKey(dict){dict.eventType='keypress';dict.useCapture=false;dict.thisArg=this;const binding=new tr.ui.b.HotKey(dict);this.$.hotkey_controller.addHotKey(binding);},addKeyPressHotKeys_(){this.addKeyPressHotKey({keyCodes:['w'.charCodeAt(0),','.charCodeAt(0)],callback(e){this.zoomBy_(1.5,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['s'.charCodeAt(0),'o'.charCodeAt(0)],callback(e){this.zoomBy_(1/1.5,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'g'.charCodeAt(0),callback(e){this.onGridToggle_(true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'G'.charCodeAt(0),callback(e){this.onGridToggle_(false);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['W'.charCodeAt(0),'<'.charCodeAt(0)],callback(e){this.zoomBy_(10,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['S'.charCodeAt(0),'O'.charCodeAt(0)],callback(e){this.zoomBy_(1/10,true);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'a'.charCodeAt(0),callback(e){this.queueSmoothPan_(this.viewWidth_*0.3,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCodes:['d'.charCodeAt(0),'e'.charCodeAt(0)],callback(e){this.queueSmoothPan_(this.viewWidth_*-0.3,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'A'.charCodeAt(0),callback(e){this.queueSmoothPan_(viewWidth*0.5,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'D'.charCodeAt(0),callback(e){this.queueSmoothPan_(viewWidth*-0.5,0);e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'0'.charCodeAt(0),callback(e){this.setInitialViewport_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'f'.charCodeAt(0),callback(e){this.zoomToSelection();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'m'.charCodeAt(0),callback(e){this.setCurrentSelectionAsInterestRange_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'p'.charCodeAt(0),callback(e){this.selectPowerSamplesInCurrentTimeRange_();e.stopPropagation();}});this.addKeyPressHotKey({keyCode:'h'.charCodeAt(0),callback(e){this.toggleHighDetails_();e.stopPropagation();}});},get viewWidth_(){return this.modelTrackContainer_.canvas.clientWidth;},addKeyDownHotKeys_(){const addBinding=function(dict){dict.eventType='keydown';dict.useCapture=false;dict.thisArg=this;const binding=new tr.ui.b.HotKey(dict);this.$.hotkey_controller.addHotKey(binding);}.bind(this);addBinding({keyCode:37,callback(e){const curSel=this.brushingStateController_.selection;const sel=this.viewport.getShiftedSelection(curSel,-1);if(sel){this.brushingStateController.changeSelectionFromTimeline(sel);this.panToSelection();}else{this.queueSmoothPan_(this.viewWidth_*0.3,0);} -e.preventDefault();e.stopPropagation();}});addBinding({keyCode:39,callback(e){const curSel=this.brushingStateController_.selection;const sel=this.viewport.getShiftedSelection(curSel,1);if(sel){this.brushingStateController.changeSelectionFromTimeline(sel);this.panToSelection();}else{this.queueSmoothPan_(-this.viewWidth_*0.3,0);} -e.preventDefault();e.stopPropagation();}});},onDblClick_(e){if(this.mouseModeSelector_.mode!==tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION){return;} -const curSelection=this.brushingStateController_.selection;if(!curSelection.length||!tr.b.getOnlyElement(curSelection).title){return;} -const selection=new tr.model.EventSet();const filter=new tr.c.ExactTitleFilter(tr.b.getOnlyElement(curSelection).title);this.modelTrack_.addAllEventsMatchingFilterToSelection(filter,selection);this.brushingStateController.changeSelectionFromTimeline(selection);},onMouseWheel_(e){if(!e.altKey)return;const delta=e.wheelDelta/120;const zoomScale=Math.pow(1.5,delta);this.zoomBy_(zoomScale);e.preventDefault();},onMouseDown_(e){if(this.mouseModeSelector_.mode!==tr.ui.b.MOUSE_SELECTOR_MODE.SELECTION){return;} -if(e.target!==this.rulerTrack_)return;this.dragBeginEvent_=undefined;if(this.xNavStringMarker_){this.model.removeAnnotation(this.xNavStringMarker_);this.xNavStringMarker_=undefined;} -const dt=this.viewport_.currentDisplayTransform;tr.ui.b.trackMouseMovesUntilMouseUp(function(e){if(e.target===this.rulerTrack_)return;const relativePosition=this.extractRelativeMousePosition_(e);const loc=tr.model.Location.fromViewCoordinates(this.viewport_,relativePosition.x,relativePosition.y);if(!loc)return;if(this.guideLineAnnotation_===undefined){this.guideLineAnnotation_=new tr.model.XMarkerAnnotation(loc.xWorld);this.model.addAnnotation(this.guideLineAnnotation_);}else{this.guideLineAnnotation_.timestamp=loc.xWorld;this.modelTrackContainer_.invalidate();} -const state=new tr.ui.b.UIState(loc,this.viewport_.currentDisplayTransform.scaleX);this.timelineView_.setFindCtlText(state.toUserFriendlyString(this.viewport_));}.bind(this),undefined,function onKeyUpDuringDrag(){if(this.dragBeginEvent_){this.setDragBoxPosition_(this.dragBoxXStart_,this.dragBoxYStart_,this.dragBoxXEnd_,this.dragBoxYEnd_);}}.bind(this));},queueSmoothPan_(viewDeltaX,deltaY){const deltaX=this.viewport_.currentDisplayTransform.xViewVectorToWorld(viewDeltaX);const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,deltaY);this.viewport_.queueDisplayTransformAnimation(animation);},zoomBy_(scale,smooth){if(scale<=0){return;} -smooth=!!smooth;const vp=this.viewport_;const pixelRatio=window.devicePixelRatio||1;const goalFocalPointXView=this.lastMouseViewPos_.x*pixelRatio;const goalFocalPointXWorld=vp.currentDisplayTransform.xViewToWorld(goalFocalPointXView);if(smooth){const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(goalFocalPointXWorld,goalFocalPointXView,vp.currentDisplayTransform.panY,scale);vp.queueDisplayTransformAnimation(animation);}else{this.displayTransform_.set(vp.currentDisplayTransform);this.displayTransform_.scaleX*=scale;this.displayTransform_.xPanWorldPosToViewPos(goalFocalPointXWorld,goalFocalPointXView,this.viewWidth_);vp.setDisplayTransformImmediately(this.displayTransform_);}},zoomToSelection(){if(!this.brushingStateController.selectionOfInterest.length)return;const bounds=this.brushingStateController.selectionOfInterest.bounds;if(!bounds.range)return;const worldCenter=bounds.center;const viewCenter=this.modelTrackContainer_.canvas.width/2;const adjustedWorldRange=bounds.range*1.25;const newScale=this.modelTrackContainer_.canvas.width/adjustedWorldRange;const zoomInRatio=newScale/this.viewport_.currentDisplayTransform.scaleX;const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(worldCenter,viewCenter,this.viewport_.currentDisplayTransform.panY,zoomInRatio);this.viewport_.queueDisplayTransformAnimation(animation);},panToSelection(){if(!this.brushingStateController.selectionOfInterest.length)return;const bounds=this.brushingStateController.selectionOfInterest.bounds;const worldCenter=bounds.center;const viewWidth=this.viewWidth_;const dt=this.viewport_.currentDisplayTransform;if(false&&!bounds.range){if(dt.xWorldToView(bounds.center)<0||dt.xWorldToView(bounds.center)>viewWidth){this.displayTransform_.set(dt);this.displayTransform_.xPanWorldPosToViewPos(worldCenter,'center',viewWidth);const deltaX=this.displayTransform_.panX-dt.panX;const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,0);this.viewport_.queueDisplayTransformAnimation(animation);} -return;} -this.displayTransform_.set(dt);this.displayTransform_.xPanWorldBoundsIntoView(bounds.min,bounds.max,viewWidth);const deltaX=this.displayTransform_.panX-dt.panX;const animation=new tr.ui.TimelineDisplayTransformPanAnimation(deltaX,0);this.viewport_.queueDisplayTransformAnimation(animation);},navToPosition(uiState,showNavLine){const location=uiState.location;const scaleX=uiState.scaleX;const track=location.getContainingTrack(this.viewport_);const worldCenter=location.xWorld;const viewCenter=this.modelTrackContainer_.canvas.width/5;const zoomInRatio=scaleX/this.viewport_.currentDisplayTransform.scaleX;track.scrollIntoViewIfNeeded();const animation=new tr.ui.TimelineDisplayTransformZoomToAnimation(worldCenter,viewCenter,this.viewport_.currentDisplayTransform.panY,zoomInRatio);this.viewport_.queueDisplayTransformAnimation(animation);if(!showNavLine)return;if(this.xNavStringMarker_){this.model.removeAnnotation(this.xNavStringMarker_);} -this.xNavStringMarker_=new tr.model.XMarkerAnnotation(worldCenter);this.model.addAnnotation(this.xNavStringMarker_);},selectPowerSamplesInCurrentTimeRange_(){const selectionBounds=this.brushingStateController_.selection.bounds;if(this.model.device.powerSeries&&!selectionBounds.empty){const events=this.model.device.powerSeries.getSamplesWithinRange(selectionBounds.min,selectionBounds.max);const selection=new tr.model.EventSet(events);this.brushingStateController_.changeSelectionFromTimeline(selection);}},setCurrentSelectionAsInterestRange_(){const selectionBounds=this.brushingStateController_.selection.bounds;if(selectionBounds.empty){this.viewport_.interestRange.reset();return;} -if(this.viewport_.interestRange.min===selectionBounds.min&&this.viewport_.interestRange.max===selectionBounds.max){this.viewport_.interestRange.reset();}else{this.viewport_.interestRange.set(selectionBounds);}},toggleHighDetails_(){this.viewport_.highDetails=!this.viewport_.highDetails;},hideDragBox_(){this.$.drag_box.style.left='-1000px';this.$.drag_box.style.top='-1000px';this.$.drag_box.style.width=0;this.$.drag_box.style.height=0;},setDragBoxPosition_(xStart,yStart,xEnd,yEnd){const loY=Math.min(yStart,yEnd);const hiY=Math.max(yStart,yEnd);const loX=Math.min(xStart,xEnd);const hiX=Math.max(xStart,xEnd);const modelTrackRect=this.modelTrack_.getBoundingClientRect();const dragRect={left:loX,top:loY,width:hiX-loX,height:hiY-loY};dragRect.right=dragRect.left+dragRect.width;dragRect.bottom=dragRect.top+dragRect.height;const modelTrackContainerRect=this.modelTrackContainer_.getBoundingClientRect();const clipRect={left:modelTrackContainerRect.left,top:modelTrackContainerRect.top,right:modelTrackContainerRect.right,bottom:modelTrackContainerRect.bottom};const headingWidth=window.getComputedStyle(Polymer.dom(this).querySelector('tr-ui-b-heading')).width;const trackTitleWidth=parseInt(headingWidth);clipRect.left=clipRect.left+trackTitleWidth;const intersectRect_=function(r1,r2){if(r2.left>r1.right||r2.rightr1.bottom||r2.bottom=rect.left&&e.clientX=rect.top&&e.clientY=canvRect.left&&e.clientX10?newSpan/currentSpan:1;const viewFocus=pixelRatio*newCenter.x;const worldFocus=vp.currentDisplayTransform.xViewToWorld(viewFocus);this.displayTransform_.set(vp.currentDisplayTransform);this.displayTransform_.scaleX*=zoomScaleValue;this.displayTransform_.xPanWorldPosToViewPos(worldFocus,viewFocus,viewWidth);this.displayTransform_.incrementPanXInViewUnits(xDelta);this.displayTransform_.panY-=yDelta;vp.setDisplayTransformImmediately(this.displayTransform_);this.storeLastTouchPositions_(e);},initHintText_(){this.$.hint_text.style.display='none';this.pendingHintTextClearTimeout_=undefined;},showHintText_(text){if(this.pendingHintTextClearTimeout_){window.clearTimeout(this.pendingHintTextClearTimeout_);this.pendingHintTextClearTimeout_=undefined;} -this.pendingHintTextClearTimeout_=setTimeout(this.hideHintText_.bind(this),1000);Polymer.dom(this.$.hint_text).textContent=text;this.$.hint_text.style.display='';},hideHintText_(){this.pendingHintTextClearTimeout_=undefined;this.$.hint_text.style.display='none';}});'use strict';Polymer({is:'tr-ui-find-control',filterKeyDown(e){if(e.keyCode===27){const hkc=tr.b.getHotkeyControllerForElement(this);if(hkc){hkc.childRequestsBlur(this);}else{this.blur();} -e.preventDefault();e.stopPropagation();return;}else if(e.keyCode===13){if(e.shiftKey){this.findPrevious();}else{this.findNext();}}},filterBlur(e){this.updateHitCountEl();},filterFocus(e){this.$.filter.select();},filterMouseUp(e){e.preventDefault();},get controller(){return this.controller_;},set controller(c){this.controller_=c;this.updateHitCountEl();},focus(){this.$.filter.focus();},get hasFocus(){return this===document.activeElement;},filterTextChanged(){Polymer.dom(this.$.hitCount).textContent='';this.$.spinner.style.visibility='visible';this.$.spinner.style.animation='spin 1s linear infinite';this.controller.startFiltering(this.$.filter.value).then(function(){this.$.spinner.style.visibility='hidden';this.$.spinner.style.animation='';this.updateHitCountEl();}.bind(this));},findNext(){if(this.controller){this.controller.findNext();} -this.updateHitCountEl();},findPrevious(){if(this.controller){this.controller.findPrevious();} -this.updateHitCountEl();},updateHitCountEl(){if(!this.controller||this.$.filter.value.length===0){Polymer.dom(this.$.hitCount).textContent='';return;} -const n=this.controller.filterHits.length;const i=n===0?-1:this.controller.currentHitIndex;Polymer.dom(this.$.hitCount).textContent=(i+1)+' of '+n;},setText(string){this.$.filter.value=string;}});'use strict';tr.exportTo('tr.e.tquery',function(){function Context(){this.event=undefined;this.ancestors=[];} -Context.prototype={push(event){const ctx=new Context();ctx.ancestors=this.ancestors.slice();ctx.ancestors.push(event);return ctx;},pop(event){const ctx=new Context();ctx.event=this.ancestors[this.ancestors.length-1];ctx.ancestors=this.ancestors.slice(0,this.ancestors.length-1);return ctx;}};return{Context,};});'use strict';tr.exportTo('tr.e.tquery',function(){function Filter(){tr.c.ScriptingObject.call(this);} -Filter.normalizeFilterExpression=function(filterExpression){if(filterExpression instanceof String||typeof(filterExpression)==='string'||filterExpression instanceof RegExp){const filter=new tr.e.tquery.FilterHasTitle(filterExpression);return filter;} -return filterExpression;};Filter.prototype={__proto__:tr.c.ScriptingObject.prototype,evaluate(context){throw new Error('Not implemented');},matchValue_(value,expected){if(expected instanceof RegExp){return expected.test(value);}else if(expected instanceof Function){return expected(value);} -return value===expected;}};return{Filter,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterAllOf(opt_subExpressions){tr.e.tquery.Filter.call(this);this.subExpressions=opt_subExpressions||[];} -FilterAllOf.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpressions(exprs){this.subExpressions_=[];for(let i=0;i0;} -while(context.ancestors.length){context=context.pop();if(this.subExpression.evaluate(context))return true;} -return false;}};tr.c.ScriptingObjectRegistry.register(function(subExpression){return new FilterHasAncestor(subExpression);},{name:'hasAncestor'});return{FilterHasAncestor,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasDuration(minValueOrExpected,opt_maxValue){if(minValueOrExpected!==undefined&&opt_maxValue!==undefined){this.minValue=minValueOrExpected;this.maxValue=opt_maxValue;}else{this.expected=minValueOrExpected;}} -FilterHasDuration.prototype={__proto__:tr.e.tquery.Filter.prototype,evaluate(context){if(context.event.duration===undefined)return false;if(this.minValue!==undefined&&this.maxValue!==undefined){return context.event.duration>=this.minValue&&context.event.duration<=this.maxValue;} -return this.matchValue_(context.event.duration,this.expected);}};tr.c.ScriptingObjectRegistry.register(function(minValueOrExpected,opt_maxValue){return new FilterHasDuration(minValueOrExpected,opt_maxValue);},{name:'hasDuration'});return{FilterHasDuration,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterHasTitle(expected){tr.e.tquery.Filter.call(this);this.expected=expected;} -FilterHasTitle.prototype={__proto__:tr.e.tquery.Filter.prototype,evaluate(context){return this.matchValue_(context.event.title,this.expected);}};tr.c.ScriptingObjectRegistry.register(function(expected){const filter=new tr.e.tquery.FilterHasTitle(expected);return filter;},{name:'hasTitle'});return{FilterHasTitle,};});'use strict';tr.exportTo('tr.e.tquery',function(){function FilterIsTopLevel(opt_subExpression){this.subExpression=opt_subExpression;} -FilterIsTopLevel.prototype={__proto__:tr.e.tquery.Filter.prototype,set subExpression(expr){this.subExpression_=tr.e.tquery.Filter.normalizeFilterExpression(expr);},get subExpression(){return this.subExpression_;},evaluate(context){if(context.ancestors.length>0)return false;if(!this.subExpression)return true;return this.subExpression.evaluate(context);}};tr.c.ScriptingObjectRegistry.register(function(subExpression){return new FilterIsTopLevel(subExpression);},{name:'isTopLevel'});return{FilterIsTopLevel,};});'use strict';tr.exportTo('tr.e.tquery',function(){function addEventTreeToSelection(selection,event){selection.push(event);if(!event.subSlices)return;event.subSlices.forEach(addEventTreeToSelection.bind(undefined,selection));} -function TQuery(model){tr.c.ScriptingObject.call(this);this.model_=model;this.parent_=undefined;this.filterExpression_=undefined;this.selection_=undefined;} -TQuery.prototype={__proto__:tr.c.ScriptingObject.prototype,onModelChanged(model){this.model_=model;this.selection_=undefined;},get brushingStateController(){return this.brushingStateController_;},filter(filterExpression){const result=new TQuery(this.model_);result.parent_=this;result.filterExpression_=tr.e.tquery.Filter.normalizeFilterExpression(filterExpression);return result;},createFilterTaskGraph_(){const nodes=[this];while(nodes[nodes.length-1].parent_){nodes.push(nodes[nodes.length-1].parent_);} -const rootTask=new tr.b.Task();let lastTask=rootTask;let node;for(let i=nodes.length-1;i>=0;i--){node=nodes[i];if(node.selection_!==undefined)continue;node.selection_=new tr.model.EventSet();if(node.parent_===undefined){lastTask=lastTask.after(this.selectEverythingAsTask_(node.selection_));}else{const prevNode=nodes[i+1];lastTask=this.createFilterTaskForNode_(lastTask,node,prevNode);}} -return{rootTask,lastTask,lastNode:node};},createFilterTaskForNode_(lastTask,node,prevNode){return lastTask.after(function(){node.evaluateFilterExpression_(prevNode.selection_,node.selection_);},this);},evaluateFilterExpression_(inputSelection,outputSelection){const seenEvents={};inputSelection.forEach(function(event){const context=new tr.e.tquery.Context();context.event=event;this.evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents);}.bind(this));},evaluateFilterExpressionForEvent_(context,inputSelection,outputSelection,seenEvents){const event=context.event;if(inputSelection.contains(event)&&!seenEvents[event.guid]){seenEvents[event.guid]=true;if(!this.filterExpression_||this.filterExpression_.evaluate(context)){outputSelection.push(event);}} -if(!event.subSlices)return;context=context.push(event);for(let i=0;i{for(const event of container.childEvents()){addEventTreeToSelection(selection,event);}},this);} -return filterTask;},ready(){return new Promise(function(resolve,reject){const graph=this.createFilterTaskGraph_();graph.lastTask=graph.lastTask.after(function(){resolve(this.selection_);},this);tr.b.Task.RunWhenIdle(graph.rootTask);}.bind(this));},get selection(){if(this.selection_===undefined){const graph=this.createFilterTaskGraph_();tr.b.Task.RunSynchronously(graph.rootTask);} -return this.selection_;}};tr.c.ScriptingObjectRegistry.register(new TQuery(),{name:'$t'});return{TQuery,};});'use strict';Polymer({is:'tr-ui-scripting-control',isEnterKey_(event){return event.keyCode!==229&&(event.key==='Enter'||event.keyIdentifier==='Enter');},setFocus_(focused){const promptEl=this.$.prompt;if(focused){promptEl.focus();Polymer.dom(this.$.root).classList.add('focused');if(promptEl.value.length>0){const sel=window.getSelection();sel.collapse(Polymer.dom(promptEl).firstChild,promptEl.value.length);}}else{promptEl.blur();Polymer.dom(this.$.root).classList.remove('focused');const parent=promptEl.parentElement;const nextEl=Polymer.dom(promptEl).nextSibling;promptEl.remove();Polymer.dom(parent).insertBefore(promptEl,nextEl);}},onConsoleFocus(e){e.stopPropagation();this.setFocus_(true);},onConsoleBlur(e){e.stopPropagation();this.setFocus_(false);},promptKeyDown(e){e.stopPropagation();if(!this.isEnterKey_(e))return;e.preventDefault();const promptEl=this.$.prompt;const command=promptEl.value;if(command.length===0)return;promptEl.value='';this.addLine_(String.fromCharCode(187)+' '+command);let result;try{result=this.controller_.executeCommand(command);}catch(e){result=e.stack||e.stackTrace;} -if(result instanceof tr.e.tquery.TQuery){result.ready().then(function(selection){this.addLine_(selection.length+' matches');this.controller_.brushingStateController.showScriptControlSelection(selection);}.bind(this));}else{this.addLine_(result);} -promptEl.scrollIntoView();},addLine_(line){const historyEl=this.$.history;if(historyEl.innerText.length!==0){historyEl.innerText+='\n';} -historyEl.innerText+=line;},promptKeyPress(e){e.stopPropagation();},toggleVisibility(){const root=this.$.root;if(!this.visible){Polymer.dom(root).classList.remove('hidden');this.setFocus_(true);}else{Polymer.dom(root).classList.add('hidden');this.setFocus_(false);}},get hasFocus(){return this===document.activeElement;},get visible(){const root=this.$.root;return!Polymer.dom(root).classList.contains('hidden');},get controller(){return this.controller_;},set controller(c){this.controller_=c;}});'use strict';tr.exportTo('tr.ui.behaviors',function(){const SidePanel={get rangeOfInterest(){throw new Error('Not implemented');},set rangeOfInterest(rangeOfInterest){throw new Error('Not implemented');},get selection(){throw new Error('Not implemented');},set selection(selection){throw new Error('Not implemented');},get model(){throw new Error('Not implemented');},set model(model){throw new Error('Not implemented');},supportsModel(m){throw new Error('Not implemented');}};return{SidePanel,};});'use strict';tr.exportTo('tr.ui.side_panel',function(){function SidePanelRegistry(){} -const options=new tr.b.ExtensionRegistryOptions(tr.b.BASIC_REGISTRY_MODE);tr.b.decorateExtensionRegistry(SidePanelRegistry,options);return{SidePanelRegistry,};});'use strict';Polymer({is:'tr-ui-side-panel-container',ready(){this.activePanelContainer_=this.$.active_panel_container;this.tabStrip_=this.$.tab_strip;this.dragHandle_=this.$.side_panel_drag_handle;this.dragHandle_.horizontal=false;this.dragHandle_.target=this.activePanelContainer_;this.rangeOfInterest_=new tr.b.math.Range();this.brushingStateController_=undefined;this.onSelectionChanged_=this.onSelectionChanged_.bind(this);this.onModelChanged_=this.onModelChanged_.bind(this);},get brushingStateController(){return this.brushingStateController_;},set brushingStateController(brushingStateController){if(this.brushingStateController){this.brushingStateController_.removeEventListener('change',this.onSelectionChanged_);this.brushingStateController_.removeEventListener('model-changed',this.onModelChanged_);} -this.brushingStateController_=brushingStateController;if(this.brushingStateController){this.brushingStateController_.addEventListener('change',this.onSelectionChanged_);this.brushingStateController_.addEventListener('model-changed',this.onModelChanged_);if(this.model){this.onModelChanged_();}}},onSelectionChanged_(){if(this.activePanel){this.activePanel.selection=this.selection;}},get model(){return this.brushingStateController_.model;},onModelChanged_(){this.activePanelType_=undefined;this.updateContents_();},get expanded(){this.hasAttribute('expanded');},get activePanel(){return this.activePanelContainer_.children[0];},get activePanelType(){return this.activePanelType_;},set activePanelType(panelType){if(this.model===undefined){throw new Error('Cannot activate panel without a model');} -let panel=undefined;if(panelType){panel=document.createElement(panelType);} -if(panel!==undefined&&!panel.supportsModel(this.model)){throw new Error('Cannot activate panel: does not support this model');} -if(this.activePanelType){Polymer.dom(this.getLabelElementForPanelType_(this.activePanelType)).removeAttribute('selected');} -if(this.activePanelType){this.getLabelElementForPanelType_(this.activePanelType).removeAttribute('selected');} -if(this.activePanel){this.activePanelContainer_.removeChild(this.activePanel);} -if(panelType===undefined){Polymer.dom(this).removeAttribute('expanded');this.activePanelType_=undefined;return;} -Polymer.dom(this.getLabelElementForPanelType_(panelType)).setAttribute('selected',true);Polymer.dom(this).setAttribute('expanded',true);Polymer.dom(this.activePanelContainer_).appendChild(panel);panel.rangeOfInterest=this.rangeOfInterest_;panel.selection=this.selection_;panel.model=this.model;this.activePanelType_=panelType;},getPanelTypeForConstructor_(constructor){for(let i=0;id.name,},{title:'value',value:d=>{const gov=document.createElement('tr-ui-a-generic-object-view');gov.object=d.value;return gov;},}];},get metadata(){return this.metadata_;},set metadata(metadata){this.metadata_=metadata;this.$.table.tableRows=this.metadata_;this.$.table.rebuild();}});'use strict';Polymer({is:'tr-v-ui-preferred-display-unit',ready(){this.preferredTimeDisplayMode_=undefined;},attached(){tr.b.Unit.didPreferredTimeDisplayUnitChange();},detached(){tr.b.Unit.didPreferredTimeDisplayUnitChange();},get preferredTimeDisplayMode(){return this.preferredTimeDisplayMode_;},set preferredTimeDisplayMode(v){if(this.preferredTimeDisplayMode_===v)return;this.preferredTimeDisplayMode_=v;tr.b.Unit.didPreferredTimeDisplayUnitChange();}});'use strict';const POLYFILL_WARNING_MESSAGE='Trace Viewer is running with WebComponentsV0 polyfill, and some '+'features may be broken. As a workaround, you may try running chrome '+'with "--enable-blink-features=ShadowDOMV0,CustomElementsV0,HTMLImports" '+'flag. See crbug.com/1036492.';Polymer({is:'tr-ui-timeline-view',created(){this.trackViewContainer_=undefined;this.queuedModel_=undefined;this.builtPromise_=undefined;this.doneBuilding_=undefined;},attached(){this.async(function(){this.trackViewContainer_=Polymer.dom(this).querySelector('#track_view_container');if(!this.trackViewContainer_){throw new Error('missing trackviewContainer');} -if(this.queuedModel_)this.updateContents_();});},ready(){this.tabIndex=0;this.polyfillWarnedOnce_=false;this.titleEl_=this.$.title;this.leftControlsEl_=this.$.left_controls;this.rightControlsEl_=this.$.right_controls;this.collapsingControlsEl_=this.$.collapsing_controls;this.sidePanelContainer_=this.$.side_panel_container;this.brushingStateController_=new tr.c.BrushingStateController(this);this.findCtl_=this.$.view_find_control;this.findCtl_.controller=new tr.ui.FindController(this.brushingStateController_);this.scriptingCtl_=document.createElement('tr-ui-scripting-control');this.scriptingCtl_.controller=new tr.c.ScriptingController(this.brushingStateController_);this.sidePanelContainer_.brushingStateController=this.brushingStateController_;if(window.tr.metrics&&window.tr.metrics.sh&&window.tr.metrics.sh.SystemHealthMetric){this.railScoreSpan_=document.createElement('tr-metrics-ui-sh-system-health-span');Polymer.dom(this.rightControls).appendChild(this.railScoreSpan_);}else{this.railScoreSpan_=undefined;} -this.flowEventFilter_=this.$.flow_event_filter_dropdown;this.processFilter_=this.$.process_filter_dropdown;this.optionsDropdown_=this.$.view_options_dropdown;this.selectedFlowEvents_=new Set();this.highlightVSync_=false;this.highlightVSyncCheckbox_=tr.ui.b.createCheckBox(this,'highlightVSync','tr.ui.TimelineView.highlightVSync',false,'Highlight VSync');Polymer.dom(this.optionsDropdown_).appendChild(this.highlightVSyncCheckbox_);this.initMetadataButton_();this.initConsoleButton_();this.initHelpButton_();Polymer.dom(this.collapsingControls).appendChild(this.scriptingCtl_);this.dragEl_=this.$.drag_handle;this.analysisEl_=this.$.analysis;this.analysisEl_.brushingStateController=this.brushingStateController_;this.addEventListener('requestSelectionChange',function(e){const sc=this.brushingStateController_;sc.changeSelectionFromRequestSelectionChangeEvent(e.selection);}.bind(this));this.onViewportChanged_=this.onViewportChanged_.bind(this);this.bindKeyListeners_();this.dragEl_.target=this.analysisEl_;},get globalMode(){return this.hotkeyController.globalMode;},set globalMode(globalMode){globalMode=!!globalMode;this.brushingStateController_.historyEnabled=globalMode;this.hotkeyController.globalMode=globalMode;},get hotkeyController(){return this.$.hkc;},warnPolyfill(){if(this.polyfillWarnedOnce_)return;console.warn(POLYFILL_WARNING_MESSAGE);this.polyfillWarnedOnce_=true;if(!window.__hideTraceViewerPolyfillWarning){const polyfillWarningsEl=Polymer.dom(this.root).querySelector('#polyfill-warning');polyfillWarningsEl.addMessage(POLYFILL_WARNING_MESSAGE,[{buttonText:'Hide',onClick:()=>polyfillWarningsEl.clearMessages()}]);}},updateDocumentFavicon(){let hue;if(!this.model){hue='blue';}else{hue=this.model.faviconHue;} -let faviconData=tr.ui.b.FaviconsByHue[hue];if(faviconData===undefined){faviconData=tr.ui.b.FaviconsByHue.blue;} -let link=Polymer.dom(document.head).querySelector('link[rel="shortcut icon"]');if(!link){link=document.createElement('link');link.rel='shortcut icon';Polymer.dom(document.head).appendChild(link);} -link.href=faviconData;},get selectedFlowEvents(){return this.selectedFlowEvents_;},set selectedFlowEvents(selectedFlowEvents){this.selectedFlowEvents_=selectedFlowEvents;},get highlightVSync(){return this.highlightVSync_;},set highlightVSync(highlightVSync){this.highlightVSync_=highlightVSync;if(!this.trackView_)return;this.trackView_.viewport.highlightVSync=highlightVSync;},initHelpButton_(){const helpButtonEl=this.$.view_help_button;const dlg=new tr.ui.b.Overlay();dlg.title='Chrome Tracing Help';dlg.visible=false;dlg.appendChild(document.createElement('tr-ui-timeline-view-help-overlay'));function onClick(e){dlg.visible=!dlg.visible;e.stopPropagation();} -helpButtonEl.addEventListener('click',onClick.bind(this));},initConsoleButton_(){const toggleEl=this.$.view_console_button;function onClick(e){this.scriptingCtl_.toggleVisibility();e.stopPropagation();return false;} -toggleEl.addEventListener('click',onClick.bind(this));},initMetadataButton_(){const showEl=this.$.view_metadata_button;function onClick(e){const dlg=new tr.ui.b.Overlay();dlg.title='Metadata for trace';const metadataOverlay=document.createElement('tr-ui-timeline-view-metadata-overlay');metadataOverlay.metadata=this.model.metadata;Polymer.dom(dlg).appendChild(metadataOverlay);dlg.visible=true;e.stopPropagation();return false;} -showEl.addEventListener('click',onClick.bind(this));this.updateMetadataButtonVisibility_();},updateMetadataButtonVisibility_(){const showEl=this.$.view_metadata_button;showEl.style.display=(this.model&&this.model.metadata.length)?'':'none';},updateFlowEventList_(){const dropdown=Polymer.dom(this.flowEventFilter_);while(dropdown.firstChild){dropdown.removeChild(dropdown.firstChild);} -if(!this.model)return;const cboxes=[];const updateAll=(checked)=>{for(const cbox of cboxes){cbox.checked=checked;}};dropdown.appendChild(tr.ui.b.createButton('All',()=>updateAll(true)));dropdown.appendChild(tr.ui.b.createButton('None',()=>updateAll(false)));const categories=new Set();for(const event of this.model.flowEvents){for(const category of tr.b.getCategoryParts(event.category)){categories.add(category);}} -const sortedCategories=[...categories].sort((a,b)=>a.localeCompare(b,'en',{sensitivity:'base'}));for(const category of sortedCategories){const cbox=tr.ui.b.createCheckBox(undefined,undefined,'tr.ui.TimelineView.selectedFlowEvents.'+category,false,category,()=>{if(cbox.checked){this.selectedFlowEvents.add(category);}else{this.selectedFlowEvents.delete(category);} -if(this.trackView_){this.trackView_.viewport.dispatchChangeEvent();}});if(cbox.checked){this.selectedFlowEvents.add(category);} -cboxes.push(cbox);dropdown.appendChild(cbox);}},updateProcessList_(){const dropdown=Polymer.dom(this.processFilter_);while(dropdown.firstChild){dropdown.removeChild(dropdown.firstChild);} -if(!this.model)return;const trackView=this.trackViewContainer_.querySelector('tr-ui-timeline-track-view');const processViews=trackView.processViews;const cboxes=[];const updateAll=(checked)=>{for(const cbox of cboxes){cbox.checked=checked;}};dropdown.appendChild(tr.ui.b.createButton('All',()=>updateAll(true)));dropdown.appendChild(tr.ui.b.createButton('None',()=>updateAll(false)));for(const view of processViews){const cbox=tr.ui.b.createCheckBox(undefined,undefined,undefined,true,view.processBase.userFriendlyName,()=>view.visible=cbox.checked);cbox.checked=view.visible;cboxes.push(cbox);view.addEventListener('visibility',()=>cbox.checked=view.visible);dropdown.appendChild(cbox);}},get leftControls(){return this.leftControlsEl_;},get rightControls(){return this.rightControlsEl_;},get collapsingControls(){return this.collapsingControlsEl_;},get viewTitle(){return Polymer.dom(this.titleEl_).textContent.substring(Polymer.dom(this.titleEl_).textContent.length-2);},set viewTitle(text){if(text===undefined){Polymer.dom(this.titleEl_).textContent='';this.titleEl_.hidden=true;return;} -this.titleEl_.hidden=false;Polymer.dom(this.titleEl_).textContent=text;},get model(){if(this.trackView_){return this.trackView_.model;} -return undefined;},set model(model){this.build(model);},async build(model){this.queuedModel_=model;this.builtPromise_=new Promise((resolve,reject)=>{this.doneBuilding_=resolve;});if(this.trackViewContainer_)await this.updateContents_();},get builtPromise(){return this.builtPromise_;},async updateContents_(){if(this.trackViewContainer_===undefined){throw new Error('timeline-view.updateContents_ requires trackViewContainer_');} -const model=this.queuedModel_;this.queuedModel_=undefined;const modelInstanceChanged=model!==this.model;const modelValid=model&&!model.bounds.isEmpty;const importWarningsEl=Polymer.dom(this.root).querySelector('#import-warnings');Polymer.dom(importWarningsEl).textContent='';if(modelInstanceChanged){if(this.railScoreSpan_){this.railScoreSpan_.model=undefined;} -Polymer.dom(this.trackViewContainer_).textContent='';if(this.trackView_){this.trackView_.viewport.removeEventListener('change',this.onViewportChanged_);this.trackView_.brushingStateController=undefined;this.trackView_.detach();this.trackView_=undefined;} -this.brushingStateController_.modelWillChange();} -if(modelValid&&!this.trackView_){this.trackView_=document.createElement('tr-ui-timeline-track-view');this.trackView_.timelineView=this;this.trackView.brushingStateController=this.brushingStateController_;Polymer.dom(this.trackViewContainer_).appendChild(this.trackView_);this.trackView_.viewport.addEventListener('change',this.onViewportChanged_);} -if(modelValid){this.trackView_.model=model;this.trackView_.viewport.selectedFlowEvents=this.selectedFlowEvents;this.trackView_.viewport.highlightVSync=this.highlightVSync;if(this.railScoreSpan_){this.railScoreSpan_.model=model;} -this.$.display_unit.preferredTimeDisplayMode=model.intrinsicTimeUnit;} -if(window.CustomElements&&!window.CustomElements.hasNative){this.warnPolyfill();} -if(model){for(const warning of model.importWarningsThatShouldBeShownToUser){importWarningsEl.addMessage(`Import Warning: ${warning.type}: ${warning.message}`,[{buttonText:'Dismiss',onClick(event,infobar){infobar.visible=false;}}]);}} -if(modelInstanceChanged){this.updateFlowEventList_();this.updateProcessList_();this.updateMetadataButtonVisibility_();this.brushingStateController_.modelDidChange();this.onViewportChanged_();} -this.doneBuilding_();},get brushingStateController(){return this.brushingStateController_;},get trackView(){return this.trackView_;},get settings(){if(!this.settings_){this.settings_=new tr.b.Settings();} -return this.settings_;},set focusElement(value){throw new Error('This is deprecated. Please set globalMode to true.');},bindKeyListeners_(){const hkc=this.hotkeyController;hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'`'.charCodeAt(0),useCapture:true,thisArg:this,callback(e){this.scriptingCtl_.toggleVisibility();if(!this.scriptingCtl_.hasFocus){this.focus();} -e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'/'.charCodeAt(0),useCapture:true,thisArg:this,callback(e){if(this.scriptingCtl_.hasFocus)return;if(this.findCtl_.hasFocus){this.focus();}else{this.findCtl_.focus();} -e.preventDefault();e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'?'.charCodeAt(0),useCapture:false,thisArg:this,callback(e){this.$.view_help_button.click();e.stopPropagation();}}));hkc.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'v'.charCodeAt(0),useCapture:false,thisArg:this,callback(e){this.toggleHighlightVSync_();e.stopPropagation();}}));},onViewportChanged_(e){const spc=this.sidePanelContainer_;if(!this.trackView_){spc.rangeOfInterest.reset();return;} -const vr=this.trackView_.viewport.interestRange.asRangeObject();if(!spc.rangeOfInterest.equals(vr)){spc.rangeOfInterest=vr;} -if(this.railScoreSpan_&&this.model){this.railScoreSpan_.model=this.model;}},toggleHighlightVSync_(){this.highlightVSyncCheckbox_.checked=!this.highlightVSyncCheckbox_.checked;},setFindCtlText(string){this.findCtl_.setText(string);}});'use strict';tr.exportTo('tr.ui.e.about_tracing',function(){const ProfilingView=tr.ui.b.define('x-profiling-view');const THIS_DOC=document.currentScript.ownerDocument;ProfilingView.prototype={__proto__:HTMLDivElement.prototype,decorate(tracingControllerClient){Polymer.dom(this).appendChild(tr.ui.b.instantiateTemplate('#profiling-view-template',THIS_DOC));this.timelineView_=Polymer.dom(this).querySelector('tr-ui-timeline-view');this.infoBarGroup_=Polymer.dom(this).querySelector('tr-ui-b-info-bar-group');this.recordButton_=Polymer.dom(this).querySelector('#record-button');this.loadButton_=Polymer.dom(this).querySelector('#load-button');this.saveButton_=Polymer.dom(this).querySelector('#save-button');const buttons=Polymer.dom(this).querySelector('x-timeline-view-buttons');Polymer.dom(buttons.parentElement).removeChild(buttons);Polymer.dom(this.timelineView_.leftControls).appendChild(buttons);this.initButtons_();this.timelineView_.hotkeyController.addHotKey(new tr.ui.b.HotKey({eventType:'keypress',keyCode:'r'.charCodeAt(0),callback(e){this.beginRecording();event.stopPropagation();},thisArg:this}));this.initDragAndDrop_();if(tracingControllerClient){this.tracingControllerClient_=tracingControllerClient;}else if(window.DevToolsHost!==undefined){this.tracingControllerClient_=new tr.ui.e.about_tracing.InspectorTracingControllerClient(new tr.ui.e.about_tracing.InspectorConnection(window));}else{this.tracingControllerClient_=new tr.ui.e.about_tracing.XhrBasedTracingControllerClient();} -this.isRecording_=false;this.activeTrace_=undefined;this.updateTracingControllerSpecificState_();},detach_(){this.detachDragAndDrop_();},get isRecording(){return this.isRecording_;},set tracingControllerClient(tracingControllerClient){this.tracingControllerClient_=tracingControllerClient;this.updateTracingControllerSpecificState_();},updateTracingControllerSpecificState_(){const isInspector=this.tracingControllerClient_ instanceof -tr.ui.e.about_tracing.InspectorTracingControllerClient;if(isInspector){this.infoBarGroup_.addMessage('This about:tracing is connected to a remote device...',[{buttonText:'Wow!',onClick(){}}]);}},beginRecording(){if(this.isRecording_){throw new Error('Already recording');} -this.isRecording_=true;const resultPromise=tr.ui.e.about_tracing.beginRecording(this.tracingControllerClient_);resultPromise.then(function(data){this.isRecording_=false;const traceName=tr.ui.e.about_tracing.defaultTraceName(this.tracingControllerClient_);this.setActiveTrace(traceName,data,false);}.bind(this),function(err){this.isRecording_=false;if(err instanceof tr.ui.e.about_tracing.UserCancelledError){return;} -tr.ui.b.Overlay.showError('Error while recording',err);}.bind(this));return resultPromise;},get timelineView(){return this.timelineView_;},clearActiveTrace(){this.saveButton_.disabled=true;this.activeTrace_=undefined;},setActiveTrace(filename,data){this.activeTrace_={filename,data};this.infoBarGroup_.clearMessages();this.updateTracingControllerSpecificState_();this.saveButton_.disabled=false;this.timelineView_.viewTitle=filename;const m=new tr.Model();const i=new tr.importer.Import(m);const p=i.importTracesWithProgressDialog([data]);p.then(function(){this.timelineView_.model=m;this.timelineView_.updateDocumentFavicon();}.bind(this),function(err){tr.ui.b.Overlay.showError('While importing: ',err);}.bind(this));},initButtons_(){this.recordButton_.addEventListener('click',function(event){event.stopPropagation();this.beginRecording();}.bind(this));this.loadButton_.addEventListener('click',function(event){event.stopPropagation();this.onLoadClicked_();}.bind(this));this.saveButton_.addEventListener('click',this.onSaveClicked_.bind(this));this.saveButton_.disabled=true;},requestFilename_(){const illegalRe=/[\/\?<>\\:\*\|":]/g;const controlRe=/[\x00-\x1f\x80-\x9f]/g;const reservedRe=/^\.+$/;const defaultName=this.activeTrace_.filename;let fileExtension='.json';let fileRegex=/\.json$/;if(/[.]gz$/.test(defaultName)){fileExtension+='.gz';fileRegex=/\.json\.gz$/;}else if(/[.]zip$/.test(defaultName)){fileExtension='.zip';fileRegex=/\.zip$/;} -const custom=prompt('Filename? ('+fileExtension+' appended) Or leave blank:');if(custom===null){return undefined;} -let name;if(custom){name=' '+custom;}else{const date=new Date();const dateText=' '+date.toDateString()+' '+date.toLocaleTimeString();name=dateText;} -const filename=defaultName.replace(fileRegex,name)+fileExtension;return filename.replace(illegalRe,'.').replace(controlRe,'\u2022').replace(reservedRe,'').replace(/\s+/g,'_');},onSaveClicked_(){const blob=new Blob([this.activeTrace_.data],{type:'application/octet-binary'});const blobUrl=window.webkitURL.createObjectURL(blob);const link=document.createElementNS('http://www.w3.org/1999/xhtml','a');link.href=blobUrl;const filename=this.requestFilename_();if(filename){link.download=filename;link.click();}},onLoadClicked_(){const inputElement=document.createElement('input');inputElement.type='file';inputElement.multiple=false;let changeFired=false;inputElement.addEventListener('change',function(e){if(changeFired)return;changeFired=true;const file=inputElement.files[0];tr.ui.b.readFile(file).then(function(data){this.setActiveTrace(file.name,data);}.bind(this),function(err){tr.ui.b.Overlay.showError('Error while loading file: '+err);});}.bind(this),false);inputElement.click();},initDragAndDrop_(){this.dropHandler_=this.dropHandler_.bind(this);this.ignoreDragEvent_=this.ignoreDragEvent_.bind(this);document.addEventListener('dragstart',this.ignoreDragEvent_,false);document.addEventListener('dragend',this.ignoreDragEvent_,false);document.addEventListener('dragenter',this.ignoreDragEvent_,false);document.addEventListener('dragleave',this.ignoreDragEvent_,false);document.addEventListener('dragover',this.ignoreDragEvent_,false);document.addEventListener('drop',this.dropHandler_,false);},detachDragAndDrop_(){document.removeEventListener('dragstart',this.ignoreDragEvent_);document.removeEventListener('dragend',this.ignoreDragEvent_);document.removeEventListener('dragenter',this.ignoreDragEvent_);document.removeEventListener('dragleave',this.ignoreDragEvent_);document.removeEventListener('dragover',this.ignoreDragEvent_);document.removeEventListener('drop',this.dropHandler_);},ignoreDragEvent_(e){e.preventDefault();return false;},dropHandler_(e){if(this.isAnyDialogUp_)return;e.stopPropagation();e.preventDefault();const files=e.dataTransfer.files;if(files.length!==1){tr.ui.b.Overlay.showError('1 file supported at a time.');return;} -tr.ui.b.readFile(files[0]).then(function(data){this.setActiveTrace(files[0].name,data);}.bind(this),function(err){tr.ui.b.Overlay.showError('Error while loading file: '+err);});return false;}};return{ProfilingView,};});'use strict';tr.exportTo('tr.e.importer.gcloud_trace',function(){function GcloudTraceImporter(model,eventData){this.importPriority=2;this.eventData_=eventData;} -GcloudTraceImporter.canImport=function(eventData){if(typeof(eventData)!=='string'&&!(eventData instanceof String)){return false;} -const normalizedEventData=eventData.slice(0,20).replace(/\s/g,'');if(normalizedEventData.length<14)return false;return normalizedEventData.slice(0,14)==='{"projectId":"';};GcloudTraceImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'GcloudTraceImporter';},extractSubtraces(){const traceEvents=this.createEventsForTrace();return traceEvents?[traceEvents]:[];},createEventsForTrace(){const events=[];const trace=JSON.parse(this.eventData_);const spanLength=trace.spans.length;for(let i=0;i=uiDrawSlice.start&&rtSyncSlice.end<=uiDrawSlice.end){overlappingDrawFrame=rtDrawSlice;}}});return overlappingDrawFrame;} -function getPreTraversalWorkRanges(uiThread){if(!uiThread)return[];const preFrameEvents=[];uiThread.sliceGroup.slices.forEach(function(slice){if(slice.title==='obtainView'||slice.title==='setupListItem'||slice.title==='deliverInputEvent'||slice.title==='RV Scroll'){preFrameEvents.push(slice);}});uiThread.asyncSliceGroup.slices.forEach(function(slice){if(slice.title==='deliverInputEvent'){preFrameEvents.push(slice);}});return tr.b.math.mergeRanges(tr.b.math.convertEventsToRanges(preFrameEvents),3,function(events){return{start:events[0].min,end:events[events.length-1].max};});} -function getFrameStartTime(traversalStart,preTraversalWorkRanges){const preTraversalWorkRange=tr.b.findClosestIntervalInSortedIntervals(preTraversalWorkRanges,function(range){return range.start;},function(range){return range.end;},traversalStart,3);if(preTraversalWorkRange){return preTraversalWorkRange.start;} -return traversalStart;} -function getRtFrameEndTime(rtDrawSlice){const rtQueueSlice=rtDrawSlice.findDescendentSlice(RENDER_THREAD_QUEUE_NAME);if(rtQueueSlice){return rtQueueSlice.end;} -const rtSwapSlice=rtDrawSlice.findDescendentSlice(RENDER_THREAD_SWAP_NAME);if(rtSwapSlice){return rtSwapSlice.end;} -return rtDrawSlice.end;} -function getUiThreadDrivenFrames(app){if(!app.uiThread)return[];let preTraversalWorkRanges=[];if(app.uiDrawType===UI_DRAW_TYPE.LEGACY){preTraversalWorkRanges=getPreTraversalWorkRanges(app.uiThread);} -const frames=[];app.uiThread.sliceGroup.slices.forEach(function(slice){if(!(slice.title in UI_THREAD_DRAW_NAMES)){return;} -const threadTimeRanges=[];const uiThreadTimeRange={thread:app.uiThread,start:getFrameStartTime(slice.start,preTraversalWorkRanges),end:slice.end};threadTimeRanges.push(uiThreadTimeRange);const rtDrawSlice=findOverlappingDrawFrame(app.renderThread,slice);if(rtDrawSlice){const rtSyncSlice=rtDrawSlice.findDescendentSlice(THREAD_SYNC_NAME);if(rtSyncSlice){uiThreadTimeRange.end=Math.min(uiThreadTimeRange.end,rtSyncSlice.start);} -threadTimeRanges.push({thread:app.renderThread,start:rtDrawSlice.start,end:getRtFrameEndTime(rtDrawSlice)});} -frames.push(makeFrame(threadTimeRanges,app.surfaceFlinger));});return frames;} -function getRenderThreadDrivenFrames(app){if(!app.renderThread)return[];const frames=[];app.renderThread.sliceGroup.getSlicesOfName(RENDER_THREAD_INDEP_DRAW_NAME).forEach(function(slice){const threadTimeRanges=[{thread:app.renderThread,start:slice.start,end:slice.end}];frames.push(makeFrame(threadTimeRanges,app.surfaceFlinger));});return frames;} -function getUiDrawType(uiThread){if(!uiThread){return UI_DRAW_TYPE.NONE;} -const slices=uiThread.sliceGroup.slices;for(let i=0;ilastValue){inputSamples.push(sample);} -lastValue=sample.value;});return inputSamples;} -function getAnimationAsyncSlices(uiThread){if(!uiThread)return[];const slices=[];for(const slice of uiThread.asyncSliceGroup.getDescendantEvents()){if(/^animator\:/.test(slice.title)){slices.push(slice);}} -return slices;} -function AndroidApp(process,uiThread,renderThread,surfaceFlinger,uiDrawType){this.process=process;this.uiThread=uiThread;this.renderThread=renderThread;this.surfaceFlinger=surfaceFlinger;this.uiDrawType=uiDrawType;this.frames_=undefined;this.inputs_=undefined;} -AndroidApp.createForProcessIfPossible=function(process,surfaceFlinger){let uiThread=process.getThread(process.pid);const uiDrawType=getUiDrawType(uiThread);if(uiDrawType===UI_DRAW_TYPE.NONE){uiThread=undefined;} -const renderThreads=process.findAllThreadsNamed('RenderThread');const renderThread=(renderThreads.length===1?renderThreads[0]:undefined);if(uiThread||renderThread){return new AndroidApp(process,uiThread,renderThread,surfaceFlinger,uiDrawType);}};AndroidApp.prototype={getFrames(){if(!this.frames_){const uiFrames=getUiThreadDrivenFrames(this);const rtFrames=getRenderThreadDrivenFrames(this);this.frames_=uiFrames.concat(rtFrames);this.frames_.sort(function(a,b){a.end-b.end;});} -return this.frames_;},getInputSamples(){if(!this.inputs_){this.inputs_=getInputSamples(this.process);} -return this.inputs_;},getAnimationAsyncSlices(){if(!this.animations_){this.animations_=getAnimationAsyncSlices(this.uiThread);} -return this.animations_;}};return{AndroidApp,};});'use strict';tr.exportTo('tr.model.helpers',function(){const findLowIndexInSortedArray=tr.b.findLowIndexInSortedArray;const VSYNC_SF_NAME='android.VSYNC-sf';const VSYNC_APP_NAME='android.VSYNC-app';const VSYNC_FALLBACK_NAME='android.VSYNC';const TIMESTAMP_FUDGE_MS=0.01;function getVsyncTimestamps(process,counterName){let vsync=process.counters[counterName];if(!vsync){vsync=process.counters[VSYNC_FALLBACK_NAME];} -if(vsync&&vsync.numSeries===1&&vsync.numSamples>1){return vsync.series[0].timestamps;} -return undefined;} -function AndroidSurfaceFlinger(process,thread){this.process=process;this.thread=thread;this.appVsync_=undefined;this.sfVsync_=undefined;this.appVsyncTimestamps_=getVsyncTimestamps(process,VSYNC_APP_NAME);this.sfVsyncTimestamps_=getVsyncTimestamps(process,VSYNC_SF_NAME);this.deadlineDelayMs_=this.appVsyncTimestamps_!==this.sfVsyncTimestamps_?5:TIMESTAMP_FUDGE_MS;} -AndroidSurfaceFlinger.createForProcessIfPossible=function(process){const mainThread=process.getThread(process.pid);if(mainThread&&mainThread.name&&/surfaceflinger/.test(mainThread.name)){return new AndroidSurfaceFlinger(process,mainThread);} -const primaryThreads=process.findAllThreadsNamed('SurfaceFlinger');if(primaryThreads.length===1){return new AndroidSurfaceFlinger(process,primaryThreads[0]);} -return undefined;};AndroidSurfaceFlinger.prototype={get hasVsyncs(){return!!this.appVsyncTimestamps_&&!!this.sfVsyncTimestamps_;},getFrameKickoff(timestamp){if(!this.hasVsyncs){throw new Error('cannot query vsync info without vsyncs');} -const firstGreaterIndex=findLowIndexInSortedArray(this.appVsyncTimestamps_,function(x){return x;},timestamp+TIMESTAMP_FUDGE_MS);if(firstGreaterIndex<1)return undefined;return this.appVsyncTimestamps_[firstGreaterIndex-1];},getFrameDeadline(timestamp){if(!this.hasVsyncs){throw new Error('cannot query vsync info without vsyncs');} -const firstGreaterIndex=findLowIndexInSortedArray(this.sfVsyncTimestamps_,function(x){return x;},timestamp+this.deadlineDelayMs_);if(firstGreaterIndex>=this.sfVsyncTimestamps_.length){return undefined;} -return this.sfVsyncTimestamps_[firstGreaterIndex];}};return{AndroidSurfaceFlinger,};});'use strict';tr.exportTo('tr.model.helpers',function(){const AndroidApp=tr.model.helpers.AndroidApp;const AndroidSurfaceFlinger=tr.model.helpers.AndroidSurfaceFlinger;const IMPORTANT_SURFACE_FLINGER_SLICES={'doComposition':true,'updateTexImage':true,'postFramebuffer':true};const IMPORTANT_UI_THREAD_SLICES={'Choreographer#doFrame':true,'performTraversals':true,'deliverInputEvent':true};const IMPORTANT_RENDER_THREAD_SLICES={'doFrame':true};function iterateImportantThreadSlices(thread,important,callback){if(!thread)return;thread.sliceGroup.slices.forEach(function(slice){if(slice.title in important){callback(slice);}});} -function AndroidModelHelper(model){this.model=model;this.apps=[];this.surfaceFlinger=undefined;const processes=model.getAllProcesses();for(let i=0;ix.title==='activityStart');} -function frameMissedDeadline(frame){return frame.args.deadline&&frame.args.deadlineret.length){const unclippedSeen=Statistics.sum(events,function(slice){return saveLayerRegEx.exec(slice.title)[1]?1:0;});const clippedSeen=events.length-unclippedSeen;const earliestStart=Statistics.min(events,function(slice){return slice.start;});const args={'Unclipped saveLayer count (especially bad!)':unclippedSeen,'Clipped saveLayer count':clippedSeen};events.push(frame);ret.push(new Alert(AndroidAuditor.saveLayerAlertInfo_,earliestStart,events,args));} -return ret;};AndroidAuditor.pathAlertInfo_=new EventInfo('Path texture churn','Paths are drawn with a mask texture, so when a path is modified / newly drawn, that texture must be generated and uploaded to the GPU. Ensure that you cache paths between frames and do not unnecessarily call Path#reset(). You can cut down on this cost by sharing Path object instances between drawables/views.');AndroidAuditor.getPathAlert_=function(frame){const uploadRegEx=/^Generate Path Texture$/;const events=frame.associatedEvents.filter(function(event){return event.title==='Generate Path Texture';});const start=Statistics.min(events,getStart);const duration=Statistics.sum(events,getDuration);if(duration<3)return undefined;events.push(frame);return new Alert(AndroidAuditor.pathAlertInfo_,start,events,{'Time spent':new Scalar(timeDurationInMs,duration)});};AndroidAuditor.uploadAlertInfo_=new EventInfo('Expensive Bitmap uploads','Bitmaps that have been modified / newly drawn must be uploaded to the GPU. Since this is expensive if the total number of pixels uploaded is large, reduce the amount of Bitmap churn in this animation/context, per frame.');AndroidAuditor.getUploadAlert_=function(frame){const uploadRegEx=/^Upload (\d+)x(\d+) Texture$/;const events=[];let start=Number.POSITIVE_INFINITY;let duration=0;let pixelsUploaded=0;frame.associatedEvents.forEach(function(event){const match=uploadRegEx.exec(event.title);if(match){events.push(event);start=Math.min(start,event.start);duration+=event.duration;pixelsUploaded+=parseInt(match[1])*parseInt(match[2]);}});if(events.length===0||duration<3)return undefined;const mPixels=(pixelsUploaded/1000000).toFixed(2)+' million';const args={'Pixels uploaded':mPixels,'Time spent':new Scalar(timeDurationInMs,duration)};events.push(frame);return new Alert(AndroidAuditor.uploadAlertInfo_,start,events,args);};AndroidAuditor.ListViewInflateAlertInfo_=new EventInfo('Inflation during ListView recycling','ListView item recycling involved inflating views. Ensure your Adapter#getView() recycles the incoming View, instead of constructing a new one.');AndroidAuditor.ListViewBindAlertInfo_=new EventInfo('Inefficient ListView recycling/rebinding','ListView recycling taking too much time per frame. Ensure your Adapter#getView() binds data efficiently.');AndroidAuditor.getListViewAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='obtainView'||event.title==='setupListItem';});const duration=Statistics.sum(events,getCpuDuration);if(events.length===0||duration<3)return undefined;let hasInflation=false;for(const event of events){if(event.findDescendentSlice('inflate')){hasInflation=true;}} -const start=Statistics.min(events,getStart);const args={'Time spent':new Scalar(timeDurationInMs,duration)};args['ListView items '+(hasInflation?'inflated':'rebound')]=events.length/2;const eventInfo=hasInflation?AndroidAuditor.ListViewInflateAlertInfo_:AndroidAuditor.ListViewBindAlertInfo_;events.push(frame);return new Alert(eventInfo,start,events,args);};AndroidAuditor.measureLayoutAlertInfo_=new EventInfo('Expensive measure/layout pass','Measure/Layout took a significant time, contributing to jank. Avoid triggering layout during animations.',new DocLinkBuilder().addAppVideo('Invalidations, Layouts, and Performance','we6poP0kw6E').build());AndroidAuditor.getMeasureLayoutAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='measure'||event.title==='layout';});const duration=Statistics.sum(events,getCpuDuration);if(events.length===0||duration<3)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.measureLayoutAlertInfo_,start,events,{'Time spent':new Scalar(timeDurationInMs,duration)});};AndroidAuditor.viewDrawAlertInfo_=new EventInfo('Long View#draw()','Recording the drawing commands of invalidated Views took a long time. Avoid significant work in View or Drawable custom drawing, especially allocations or drawing to Bitmaps.',new DocLinkBuilder().addAppVideo('Invalidations, Layouts, and Performance','we6poP0kw6E').addAppVideo('Avoiding Allocations in onDraw()','HAK5acHQ53E').build());AndroidAuditor.getViewDrawAlert_=function(frame){let slice=undefined;for(const event of frame.associatedEvents){if(event.title==='getDisplayList'||event.title==='Record View#draw()'){slice=event;break;}} -if(!slice||getCpuDuration(slice)<3)return undefined;return new Alert(AndroidAuditor.viewDrawAlertInfo_,slice.start,[slice,frame],{'Time spent':new Scalar(timeDurationInMs,getCpuDuration(slice))});};AndroidAuditor.blockingGcAlertInfo_=new EventInfo('Blocking Garbage Collection','Blocking GCs are caused by object churn, and made worse by having large numbers of objects in the heap. Avoid allocating objects during animations/scrolling, and recycle Bitmaps to avoid triggering garbage collection.',new DocLinkBuilder().addAppVideo('Garbage Collection in Android','pzfzz50W5Uo').addAppVideo('Avoiding Allocations in onDraw()','HAK5acHQ53E').build());AndroidAuditor.getBlockingGcAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return event.title==='DVM Suspend'||event.title==='GC: Wait For Concurrent';});const blockedDuration=Statistics.sum(events,getDuration);if(blockedDuration<3)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.blockingGcAlertInfo_,start,events,{'Blocked duration':new Scalar(timeDurationInMs,blockedDuration)});};AndroidAuditor.lockContentionAlertInfo_=new EventInfo('Lock contention','UI thread lock contention is caused when another thread holds a lock that the UI thread is trying to use. UI thread progress is blocked until the lock is released. Inspect locking done within the UI thread, and ensure critical sections are short.');AndroidAuditor.getLockContentionAlert_=function(frame){const events=frame.associatedEvents.filter(function(event){return/^Lock Contention on /.test(event.title);});const blockedDuration=Statistics.sum(events,getDuration);if(blockedDuration<1)return undefined;const start=Statistics.min(events,getStart);events.push(frame);return new Alert(AndroidAuditor.lockContentionAlertInfo_,start,events,{'Blocked duration':new Scalar(timeDurationInMs,blockedDuration)});};AndroidAuditor.schedulingAlertInfo_=new EventInfo('Scheduling delay','Work to produce this frame was descheduled for several milliseconds, contributing to jank. Ensure that code on the UI thread doesn\'t block on work being done on other threads, and that background threads (doing e.g. network or bitmap loading) are running at android.os.Process#THREAD_PRIORITY_BACKGROUND or lower so they are less likely to interrupt the UI thread. These background threads should show up with a priority number of 130 or higher in the scheduling section under the Kernel process.');AndroidAuditor.getSchedulingAlert_=function(frame){let totalDuration=0;const totalStats={};for(const ttr of frame.threadTimeRanges){const stats=ttr.thread.getSchedulingStatsForRange(ttr.start,ttr.end);for(const[key,value]of Object.entries(stats)){if(!(key in totalStats)){totalStats[key]=0;} -totalStats[key]+=value;totalDuration+=value;}} -if(!(SCHEDULING_STATE.RUNNING in totalStats)||totalDuration===0||totalDuration-totalStats[SCHEDULING_STATE.RUNNING]<3){return;} -const args={};for(const[key,value]of Object.entries(totalStats)){let newKey=key;if(key===SCHEDULING_STATE.RUNNABLE){newKey='Not scheduled, but runnable';}else if(key===SCHEDULING_STATE.UNINTR_SLEEP){newKey='Blocking I/O delay';} -args[newKey]=new Scalar(timeDurationInMs,value);} -return new Alert(AndroidAuditor.schedulingAlertInfo_,frame.start,[frame],args);};AndroidAuditor.prototype={__proto__:Auditor.prototype,renameAndSort_(){this.model.kernel.important=false;this.model.getAllProcesses().forEach(function(process){if(this.helper.surfaceFlinger&&process===this.helper.surfaceFlinger.process){if(!process.name){process.name='SurfaceFlinger';} -process.sortIndex=Number.NEGATIVE_INFINITY;process.important=false;return;} -const uiThread=process.getThread(process.pid);if(!process.name&&uiThread&&uiThread.name){if(/^ndroid\./.test(uiThread.name)){uiThread.name='a'+uiThread.name;} -process.name=uiThread.name;uiThread.name='UI Thread';} -process.sortIndex=0;for(const tid in process.threads){process.sortIndex-=process.threads[tid].sliceGroup.slices.length;}},this);this.model.getAllThreads().forEach(function(thread){if(thread.tid===thread.parent.pid){thread.sortIndex=-3;} -if(thread.name==='RenderThread'){thread.sortIndex=-2;} -if(/^hwuiTask/.test(thread.name)){thread.sortIndex=-1;}});},pushFramesAndJudgeJank_(){let badFramesObserved=0;let framesObserved=0;const surfaceFlinger=this.helper.surfaceFlinger;this.helper.apps.forEach(function(app){app.process.frames=app.getFrames();app.process.frames.forEach(function(frame){if(frame.totalDuration>EXPECTED_FRAME_TIME_MS*2){badFramesObserved+=2;frame.perfClass=FRAME_PERF_CLASS.TERRIBLE;}else if(frame.totalDuration>EXPECTED_FRAME_TIME_MS||frameMissedDeadline(frame)){badFramesObserved++;frame.perfClass=FRAME_PERF_CLASS.BAD;}else{frame.perfClass=FRAME_PERF_CLASS.GOOD;}});framesObserved+=app.process.frames.length;});if(framesObserved){const portionBad=badFramesObserved/framesObserved;if(portionBad>0.3){this.model.faviconHue='red';}else if(portionBad>0.05){this.model.faviconHue='yellow';}else{this.model.faviconHue='green';}}},pushEventInfo_(){const appAnnotator=new AppAnnotator();this.helper.apps.forEach(function(app){if(app.uiThread){appAnnotator.applyEventInfos(app.uiThread.sliceGroup);} -if(app.renderThread){appAnnotator.applyEventInfos(app.renderThread.sliceGroup);}});},runAnnotate(){if(!this.helper)return;this.renameAndSort_();this.pushFramesAndJudgeJank_();this.pushEventInfo_();this.helper.iterateImportantSlices(function(slice){slice.important=true;});},runAudit(){if(!this.helper)return;const alerts=this.model.alerts;this.helper.apps.forEach(function(app){app.getFrames().forEach(function(frame){alerts.push.apply(alerts,AndroidAuditor.getSaveLayerAlerts_(frame));if(frame.perfClass===FRAME_PERF_CLASS.NEUTRAL||frame.perfClass===FRAME_PERF_CLASS.GOOD){return;} -let alert=AndroidAuditor.getPathAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getUploadAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getListViewAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getMeasureLayoutAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getViewDrawAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getBlockingGcAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getLockContentionAlert_(frame);if(alert)alerts.push(alert);alert=AndroidAuditor.getSchedulingAlert_(frame);if(alert)alerts.push(alert);});},this);this.addRenderingInteractionRecords();this.addInputInteractionRecords();},addRenderingInteractionRecords(){const events=[];this.helper.apps.forEach(function(app){events.push.apply(events,app.getAnimationAsyncSlices());events.push.apply(events,app.getFrames());});const mergerFunction=function(events){const ir=new tr.model.um.ResponseExpectation(this.model,'Rendering',events[0].min,events[events.length-1].max-events[0].min);this.model.userModel.expectations.push(ir);}.bind(this);tr.b.math.mergeRanges(tr.b.math.convertEventsToRanges(events),30,mergerFunction);},addInputInteractionRecords(){const inputSamples=[];this.helper.apps.forEach(function(app){inputSamples.push.apply(inputSamples,app.getInputSamples());});const mergerFunction=function(events){const ir=new tr.model.um.ResponseExpectation(this.model,'Input',events[0].min,events[events.length-1].max-events[0].min);this.model.userModel.expectations.push(ir);}.bind(this);const inputRanges=inputSamples.map(function(sample){return tr.b.math.Range.fromExplicitRange(sample.timestamp,sample.timestamp);});tr.b.math.mergeRanges(inputRanges,30,mergerFunction);}};Auditor.register(AndroidAuditor);function AppAnnotator(){this.titleInfoLookup=new Map();this.titleParentLookup=new Map();this.build_();} -AppAnnotator.prototype={build_(){const registerEventInfo=function(dict){this.titleInfoLookup.set(dict.title,new EventInfo(dict.title,dict.description,dict.docLinks));if(dict.parents){this.titleParentLookup.set(dict.title,dict.parents);}}.bind(this);registerEventInfo({title:'inflate',description:'Constructing a View hierarchy from pre-processed XML via LayoutInflater#layout. This includes constructing all of the View objects in the hierarchy, and applying styled attributes.'});registerEventInfo({title:'obtainView',description:'Adapter#getView() called to bind content to a recycled View that is being presented.'});registerEventInfo({title:'setupListItem',description:'Attached a newly-bound, recycled View to its parent ListView.'});registerEventInfo({title:'setupGridItem',description:'Attached a newly-bound, recycled View to its parent GridView.'});const choreographerLinks=new DocLinkBuilder().addDacRef('Choreographer','android/view/Choreographer.html').build();registerEventInfo({title:'Choreographer#doFrame',docLinks:choreographerLinks,description:'Choreographer executes frame callbacks for inputs, animations, and rendering traversals. When this work is done, a frame will be presented to the user.'});registerEventInfo({title:'input',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Input callbacks are processed. This generally encompasses dispatching input to Views, as well as any work the Views do to process this input/gesture.'});registerEventInfo({title:'animation',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Animation callbacks are processed. This is generally minimal work, as animations determine progress for the frame, and push new state to animated objects (such as setting View properties).'});registerEventInfo({title:'traversals',parents:['Choreographer#doFrame'],docLinks:choreographerLinks,description:'Primary draw traversals. This is the primary traversal of the View hierarchy, including layout and draw passes.'});const traversalParents=['Choreographer#doFrame','performTraversals'];const layoutLinks=new DocLinkBuilder().addDacRef('View#Layout','android/view/View.html#Layout').build();registerEventInfo({title:'performTraversals',description:'A drawing traversal of the View hierarchy, comprised of all layout and drawing needed to produce the frame.'});registerEventInfo({title:'measure',parents:traversalParents,docLinks:layoutLinks,description:'First of two phases in view hierarchy layout. Views are asked to size themselves according to constraints supplied by their parent. Some ViewGroups may measure a child more than once to help satisfy their own constraints. Nesting ViewGroups that measure children more than once can lead to excessive and repeated work.'});registerEventInfo({title:'layout',parents:traversalParents,docLinks:layoutLinks,description:'Second of two phases in view hierarchy layout, repositioning content and child Views into their new locations.'});const drawString='Draw pass over the View hierarchy. Every invalidated View will have its drawing commands recorded. On Android versions prior to Lollipop, this would also include the issuing of draw commands to the GPU. Starting with Lollipop, it only includes the recording of commands, and syncing that information to the RenderThread.';registerEventInfo({title:'draw',parents:traversalParents,description:drawString});const recordString='Every invalidated View\'s drawing commands are recorded. Each will have View#draw() called, and is passed a Canvas that will record and store its drawing commands until it is next invalidated/rerecorded.';registerEventInfo({title:'getDisplayList',parents:['draw'],description:recordString});registerEventInfo({title:'Record View#draw()',parents:['draw'],description:recordString});registerEventInfo({title:'drawDisplayList',parents:['draw'],description:'Execution of recorded draw commands to generate a frame. This represents the actual formation and issuing of drawing commands to the GPU. On Android L and higher devices, this work is done on a dedicated RenderThread, instead of on the UI Thread.'});registerEventInfo({title:'DrawFrame',description:'RenderThread portion of the standard UI/RenderThread split frame. This represents the actual formation and issuing of drawing commands to the GPU.'});registerEventInfo({title:'doFrame',description:'RenderThread animation frame. Represents drawing work done by the RenderThread on a frame where the UI thread did not produce new drawing content.'});registerEventInfo({title:'syncFrameState',description:'Sync stage between the UI thread and the RenderThread, where the UI thread hands off a frame (including information about modified Views). Time in this method primarily consists of uploading modified Bitmaps to the GPU. After this sync is completed, the UI thread is unblocked, and the RenderThread starts to render the frame.'});registerEventInfo({title:'flush drawing commands',description:'Issuing the now complete drawing commands to the GPU.'});registerEventInfo({title:'eglSwapBuffers',description:'Complete GPU rendering of the frame.'});registerEventInfo({title:'RV Scroll',description:'RecyclerView is calculating a scroll. If there are too many of these in Systrace, some Views inside RecyclerView might be causing it. Try to avoid using EditText, focusable views or handle them with care.'});registerEventInfo({title:'RV OnLayout',description:'OnLayout has been called by the View system. If this shows up too many times in Systrace, make sure the children of RecyclerView do not update themselves directly. This will cause a full re-layout but when it happens via the Adapter notifyItemChanged, RecyclerView can avoid full layout calculation.'});registerEventInfo({title:'RV FullInvalidate',description:'NotifyDataSetChanged or equal has been called. If this is taking a long time, try sending granular notify adapter changes instead of just calling notifyDataSetChanged or setAdapter / swapAdapter. Adding stable ids to your adapter might help.'});registerEventInfo({title:'RV PartialInvalidate',description:'RecyclerView is rebinding a View. If this is taking a lot of time, consider optimizing your layout or make sure you are not doing extra operations in onBindViewHolder call.'});registerEventInfo({title:'RV OnBindView',description:'RecyclerView is rebinding a View. If this is taking a lot of time, consider optimizing your layout or make sure you are not doing extra operations in onBindViewHolder call.'});registerEventInfo({title:'RV CreateView',description:'RecyclerView is creating a new View. If too many of these are present: 1) There might be a problem in Recycling (e.g. custom Animations that set transient state and prevent recycling or ItemAnimator not implementing the contract properly. See Adapter#onFailedToRecycleView(ViewHolder). 2) There may be too many item view types. Try merging them. 3) There might be too many itemChange animations and not enough space in RecyclerPool. Try increasing your pool size and item cache size.'});registerEventInfo({title:'eglSwapBuffers',description:'The CPU has finished producing drawing commands, and is flushing drawing work to the GPU, and posting that buffer to the consumer (which is often SurfaceFlinger window composition). Once this is completed, the GPU can produce the frame content without any involvement from the CPU.'});},applyEventInfosRecursive_(parentNames,slice){const checkExpectedParentNames=function(expectedParentNames){if(!expectedParentNames)return true;return expectedParentNames.some(function(name){return parentNames.has(name);});};if(this.titleInfoLookup.has(slice.title)){if(checkExpectedParentNames(this.titleParentLookup.get(slice.title))){slice.info=this.titleInfoLookup.get(slice.title);}} -if(slice.subSlices.length>0){if(!parentNames.has(slice.title)){parentNames.set(slice.title,0);} -parentNames.set(slice.title,parentNames.get(slice.title)+1);slice.subSlices.forEach(function(subSlice){this.applyEventInfosRecursive_(parentNames,subSlice);},this);parentNames.set(slice.title,parentNames.get(slice.title)-1);if(parentNames.get(slice.title)===0){delete parentNames[slice.title];}}},applyEventInfos(sliceGroup){sliceGroup.topLevelSlices.forEach(function(slice){this.applyEventInfosRecursive_(new Map(),slice);},this);}};return{AndroidAuditor,};});'use strict';tr.exportTo('tr.e.chrome',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function BlameContextSnapshot(){ObjectSnapshot.apply(this,arguments);} -BlameContextSnapshot.prototype={__proto__:ObjectSnapshot.prototype,get parentContext(){if(this.args.parent instanceof BlameContextSnapshot){return this.args.parent;} -return undefined;},get userFriendlyName(){return'BlameContext';}};function BlameContextInstance(){ObjectInstance.apply(this,arguments);} -BlameContextInstance.prototype={__proto__:ObjectInstance.prototype,get blameContextType(){throw new Error('Not implemented');}};return{BlameContextSnapshot,BlameContextInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function FrameTreeNodeSnapshot(){BlameContextSnapshot.apply(this,arguments);} -FrameTreeNodeSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,get renderFrame(){if(this.args.renderFrame instanceof tr.e.chrome.RenderFrameSnapshot){return this.args.renderFrame;} -return undefined;},get url(){return this.args.url;},get userFriendlyName(){return'FrameTreeNode';}};tr.model.ObjectSnapshot.subTypes.register(FrameTreeNodeSnapshot,{typeName:'FrameTreeNode'});function FrameTreeNodeInstance(){BlameContextInstance.apply(this,arguments);} -FrameTreeNodeInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'Frame';}};tr.model.ObjectInstance.subTypes.register(FrameTreeNodeInstance,{typeName:'FrameTreeNode'});return{FrameTreeNodeSnapshot,FrameTreeNodeInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function RenderFrameSnapshot(){BlameContextSnapshot.apply(this,arguments);} -RenderFrameSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,referencedAt(item,object,field){if(item instanceof tr.e.chrome.FrameTreeNodeSnapshot&&object===item.args&&field==='renderFrame'){this.args.frameTreeNode=item;}},get frameTreeNode(){if(this.args.frameTreeNode instanceof -tr.e.chrome.FrameTreeNodeSnapshot){return this.args.frameTreeNode;} -return undefined;},get url(){if(this.frameTreeNode){return this.frameTreeNode.url;} -return undefined;},get userFriendlyName(){return'RenderFrame';}};tr.model.ObjectSnapshot.subTypes.register(RenderFrameSnapshot,{typeName:'RenderFrame'});function RenderFrameInstance(){BlameContextInstance.apply(this,arguments);} -RenderFrameInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'Frame';}};tr.model.ObjectInstance.subTypes.register(RenderFrameInstance,{typeName:'RenderFrame'});return{RenderFrameSnapshot,RenderFrameInstance,};});'use strict';tr.exportTo('tr.e.chrome',function(){const BlameContextSnapshot=tr.e.chrome.BlameContextSnapshot;const BlameContextInstance=tr.e.chrome.BlameContextInstance;function TopLevelSnapshot(){BlameContextSnapshot.apply(this,arguments);} -TopLevelSnapshot.prototype={__proto__:BlameContextSnapshot.prototype,get userFriendlyName(){return'TopLevel';}};tr.model.ObjectSnapshot.subTypes.register(TopLevelSnapshot,{typeName:'TopLevel'});function TopLevelInstance(){BlameContextInstance.apply(this,arguments);} -TopLevelInstance.prototype={__proto__:BlameContextInstance.prototype,get blameContextType(){return'TopLevel';}};tr.model.ObjectInstance.subTypes.register(TopLevelInstance,{typeName:'TopLevel'});return{TopLevelSnapshot,TopLevelInstance,};});'use strict';tr.exportTo('tr.e.blink',function(){class BlinkSchedulerAsyncSlice extends tr.model.AsyncSlice{get viewSubGroupGroupingKey(){if(this.title.startsWith('FrameScheduler.')){return'Frame'+this.id;} -if(this.title.startsWith('Scheduler.')){return'Renderer Scheduler';} -return undefined;} -get viewSubGroupTitle(){if(this.title.startsWith('FrameScheduler.')){return this.title.substring(15);} -if(this.title.startsWith('Scheduler.')){return this.title.substring(10);} -return this.title;}} -tr.model.AsyncSlice.subTypes.register(BlinkSchedulerAsyncSlice,{categoryParts:['renderer.scheduler','disabled-by-default-renderer.scheduler','disabled-by-default-renderer.scheduler.debug',]});return{BlinkSchedulerAsyncSlice,};});'use strict';tr.exportTo('tr.e.audits',function(){const Auditor=tr.c.Auditor;const Alert=tr.model.Alert;const EventInfo=tr.model.EventInfo;function ChromeAuditor(model){Auditor.call(this,model);const modelHelper=this.model.getOrCreateHelper(tr.model.helpers.ChromeModelHelper);if(modelHelper&&modelHelper.browserHelper){this.modelHelper=modelHelper;}else{this.modelHelper=undefined;}} -function getMissedFrameAlerts(rendererHelpers){const alerts=[];for(const rendererHelper of rendererHelpers){if(!rendererHelper.compositorThread)continue;const thread=rendererHelper.compositorThread;const asyncSlices=Object.values(thread.asyncSliceGroup.slices);for(const slice of asyncSlices){if(slice.title!=='PipelineReporter'||!slice.args.termination_status||slice.args.termination_status!=='missed_frame')continue;const alertSlices=[slice].concat(slice.subSlices);alerts.push(new Alert(new EventInfo('Missed Frame','Frame was not submitted before deadline.'),slice.start,alertSlices));}} -return alerts;} -ChromeAuditor.prototype={__proto__:Auditor.prototype,runAnnotate(){if(!this.modelHelper)return;for(const pid in this.modelHelper.rendererHelpers){const rendererHelper=this.modelHelper.rendererHelpers[pid];if(rendererHelper.isChromeTracingUI){rendererHelper.process.important=false;}}},installUserFriendlyCategoryDriverIfNeeded(){this.model.addUserFriendlyCategoryDriver(tr.e.chrome.ChromeUserFriendlyCategoryDriver);},runAudit(){if(!this.modelHelper)return;this.model.replacePIDRefsInPatchups(tr.model.BROWSER_PROCESS_PID_REF,this.modelHelper.browserProcess.pid);this.model.applyObjectRefPatchups();const alerts=getMissedFrameAlerts(Object.values(this.modelHelper.rendererHelpers));this.model.alerts=this.model.alerts.concat(alerts);}};Auditor.register(ChromeAuditor);return{ChromeAuditor,};});'use strict';tr.exportTo('tr.e.chrome',function(){const KNOWN_PROPERTIES={absX:1,absY:1,address:1,anonymous:1,childNeeds:1,children:1,classNames:1,col:1,colSpan:1,float:1,height:1,htmlId:1,name:1,posChildNeeds:1,positioned:1,positionedMovement:1,relX:1,relY:1,relativePositioned:1,row:1,rowSpan:1,selfNeeds:1,stickyPositioned:1,tag:1,width:1};function LayoutObject(snapshot,args){this.snapshot_=snapshot;this.id_=args.address;this.name_=args.name;this.childLayoutObjects_=[];this.otherProperties_={};this.tag_=args.tag;this.relativeRect_=tr.b.math.Rect.fromXYWH(args.relX,args.relY,args.width,args.height);this.absoluteRect_=tr.b.math.Rect.fromXYWH(args.absX,args.absY,args.width,args.height);this.isFloat_=args.float;this.isStickyPositioned_=args.stickyPositioned;this.isPositioned_=args.positioned;this.isRelativePositioned_=args.relativePositioned;this.isAnonymous_=args.anonymous;this.htmlId_=args.htmlId;this.classNames_=args.classNames;this.needsLayoutReasons_=[];if(args.selfNeeds){this.needsLayoutReasons_.push('self');} -if(args.childNeeds){this.needsLayoutReasons_.push('child');} -if(args.posChildNeeds){this.needsLayoutReasons_.push('positionedChild');} -if(args.positionedMovement){this.needsLayoutReasons_.push('positionedMovement');} -this.tableRow_=args.row;this.tableCol_=args.col;this.tableRowSpan_=args.rowSpan;this.tableColSpan_=args.colSpan;if(args.children){args.children.forEach(function(child){this.childLayoutObjects_.push(new LayoutObject(snapshot,child));}.bind(this));} -for(const property in args){if(!KNOWN_PROPERTIES[property]){this.otherProperties_[property]=args[property];}}} -LayoutObject.prototype={get snapshot(){return this.snapshot_;},get id(){return this.id_;},get name(){return this.name_;},get tag(){return this.tag_;},get relativeRect(){return this.relativeRect_;},get absoluteRect(){return this.absoluteRect_;},get isPositioned(){return this.isPositioned_;},get isFloat(){return this.isFloat_;},get isStickyPositioned(){return this.isStickyPositioned_;},get isRelativePositioned(){return this.isRelativePositioned_;},get isAnonymous(){return this.isAnonymous_;},get tableRow(){return this.tableRow_;},get tableCol(){return this.tableCol_;},get tableRowSpan(){return this.tableRowSpan_;},get tableColSpan(){return this.tableColSpan_;},get htmlId(){return this.htmlId_;},get classNames(){return this.classNames_;},get needsLayoutReasons(){return this.needsLayoutReasons_;},get hasChildLayoutObjects(){return this.childLayoutObjects_.length>0;},get childLayoutObjects(){return this.childLayoutObjects_;},traverseTree(cb,opt_this){cb.call(opt_this,this);if(!this.hasChildLayoutObjects)return;this.childLayoutObjects.forEach(function(child){child.traverseTree(cb,opt_this);});},get otherPropertyNames(){const names=[];for(const name in this.otherProperties_){names.push(name);} -return names;},getProperty(name){return this.otherProperties_[name];},get previousSnapshotLayoutObject(){if(!this.snapshot.previousSnapshot)return undefined;return this.snapshot.previousSnapshot.getLayoutObjectById(this.id);},get nextSnapshotLayoutObject(){if(!this.snapshot.nextSnapshot)return undefined;return this.snapshot.nextSnapshot.getLayoutObjectById(this.id);}};return{LayoutObject,};});'use strict';tr.exportTo('tr.e.chrome',function(){const ObjectSnapshot=tr.model.ObjectSnapshot;const ObjectInstance=tr.model.ObjectInstance;function LayoutTreeInstance(){ObjectInstance.apply(this,arguments);} -LayoutTreeInstance.prototype={__proto__:ObjectInstance.prototype,};ObjectInstance.subTypes.register(LayoutTreeInstance,{typeName:'LayoutTree'});function LayoutTreeSnapshot(){ObjectSnapshot.apply(this,arguments);this.rootLayoutObject=new tr.e.chrome.LayoutObject(this,this.args);} -LayoutTreeSnapshot.prototype={__proto__:ObjectSnapshot.prototype,};ObjectSnapshot.subTypes.register(LayoutTreeSnapshot,{typeName:'LayoutTree'});return{LayoutTreeInstance,LayoutTreeSnapshot,};});'use strict';tr.exportTo('tr.model',function(){const Event=tr.model.Event;const EventRegistry=tr.model.EventRegistry;class ResourceUsageSample extends Event{constructor(series,start,usage){super();this.series_=series;this.start_=start;this.usage_=usage;} -get series(){return this.series_;} -get start(){return this.start_;} -set start(value){this.start_=value;} -get usage(){return this.usage_;} -set usage(value){this.usage_=value;} -addBoundsToRange(range){range.addValue(this.start);}} -EventRegistry.register(ResourceUsageSample,{name:'resourceUsageSample',pluralName:'resourceUsageSamples'});return{ResourceUsageSample,};});'use strict';tr.exportTo('tr.model',function(){const ResourceUsageSample=tr.model.ResourceUsageSample;class ResourceUsageSeries extends tr.model.EventContainer{constructor(device){super();this.device_=device;this.samples_=[];} -get device(){return this.device_;} -get samples(){return this.samples_;} -get stableId(){return this.device_.stableId+'.ResourceUsageSeries';} -addUsageSample(ts,val){const sample=new ResourceUsageSample(this,ts,val);this.samples_.push(sample);return sample;} -computeResourceTimeConsumedInMs(start,end){const measurementRange=tr.b.math.Range.fromExplicitRange(start,end);let resourceTimeInMs=0;let startIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,start)-1;const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);if(startIndex<0)startIndex=0;for(let i=startIndex;ix.start,start);const endIndex=tr.b.findLowIndexInSortedArray(this.samples,x=>x.start,end);return this.samples.slice(startIndex,endIndex);} -shiftTimestampsForward(amount){for(let i=0;i5){throw new Error('Incompatible Process event version.');} -let pageDirectoryBase;if(header.version===1){pageDirectoryBase=decoder.decodeUInteger(header.is64);} -let uniqueProcessKey;if(header.version>=2){uniqueProcessKey=decoder.decodeUInteger(header.is64);} -const processId=decoder.decodeUInt32();const parentId=decoder.decodeUInt32();let sessionId;let exitStatus;if(header.version>=1){sessionId=decoder.decodeUInt32();exitStatus=decoder.decodeInt32();} -let directoryTableBase;if(header.version>=3){directoryTableBase=decoder.decodeUInteger(header.is64);} -let flags;if(header.version>=4){flags=decoder.decodeUInt32();} -const userSID=decoder.decodeSID(header.is64);let imageFileName;if(header.version>=1){imageFileName=decoder.decodeString();} -let commandLine;if(header.version>=2){commandLine=decoder.decodeW16String();} -let packageFullName;let applicationId;if(header.version>=4){packageFullName=decoder.decodeW16String();applicationId=decoder.decodeW16String();} -let exitTime;if(header.version===5&&header.opcode===kProcessDefunctOpcode){exitTime=decoder.decodeUInt64ToString();} -return{pageDirectoryBase,uniqueProcessKey,processId,parentId,sessionId,exitStatus,directoryTableBase,flags,userSID,imageFileName,commandLine,packageFullName,applicationId,exitTime};},decodeStart(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);if(process.hasOwnProperty('has_ended')){throw new Error('Process clash detected.');} -process.name=fields.imageFileName;return true;},decodeEnd(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);process.has_ended=true;return true;},decodeDCStart(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);if(process.hasOwnProperty('has_ended')){throw new Error('Process clash detected.');} -process.name=fields.imageFileName;return true;},decodeDCEnd(header,decoder){const fields=this.decodeFields(header,decoder);const process=this.model.getOrCreateProcess(fields.processId);process.has_ended=true;return true;},decodeDefunct(header,decoder){const fields=this.decodeFields(header,decoder);return true;}};Parser.register(ProcessParser);return{ProcessParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const Parser=tr.e.importer.etw.Parser;const guid='3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C';const kThreadStartOpcode=1;const kThreadEndOpcode=2;const kThreadDCStartOpcode=3;const kThreadDCEndOpcode=4;const kThreadCSwitchOpcode=36;function ThreadParser(importer){Parser.call(this,importer);importer.registerEventHandler(guid,kThreadStartOpcode,ThreadParser.prototype.decodeStart.bind(this));importer.registerEventHandler(guid,kThreadEndOpcode,ThreadParser.prototype.decodeEnd.bind(this));importer.registerEventHandler(guid,kThreadDCStartOpcode,ThreadParser.prototype.decodeDCStart.bind(this));importer.registerEventHandler(guid,kThreadDCEndOpcode,ThreadParser.prototype.decodeDCEnd.bind(this));importer.registerEventHandler(guid,kThreadCSwitchOpcode,ThreadParser.prototype.decodeCSwitch.bind(this));} -ThreadParser.prototype={__proto__:Parser.prototype,decodeFields(header,decoder){if(header.version>3){throw new Error('Incompatible Thread event version '+ -header.version+'.');} -const processId=decoder.decodeUInt32();const threadId=decoder.decodeUInt32();let stackBase;let stackLimit;let userStackBase;let userStackLimit;let affinity;let startAddr;let win32StartAddr;let tebBase;let subProcessTag;let basePriority;let pagePriority;let ioPriority;let threadFlags;let waitMode;if(header.version===1){if(header.opcode===kThreadStartOpcode||header.opcode===kThreadDCStartOpcode){stackBase=decoder.decodeUInteger(header.is64);stackLimit=decoder.decodeUInteger(header.is64);userStackBase=decoder.decodeUInteger(header.is64);userStackLimit=decoder.decodeUInteger(header.is64);startAddr=decoder.decodeUInteger(header.is64);win32StartAddr=decoder.decodeUInteger(header.is64);waitMode=decoder.decodeInt8();decoder.skip(3);}}else{stackBase=decoder.decodeUInteger(header.is64);stackLimit=decoder.decodeUInteger(header.is64);userStackBase=decoder.decodeUInteger(header.is64);userStackLimit=decoder.decodeUInteger(header.is64);if(header.version===2){startAddr=decoder.decodeUInteger(header.is64);}else{affinity=decoder.decodeUInteger(header.is64);} -win32StartAddr=decoder.decodeUInteger(header.is64);tebBase=decoder.decodeUInteger(header.is64);subProcessTag=decoder.decodeUInt32();if(header.version===3){basePriority=decoder.decodeUInt8();pagePriority=decoder.decodeUInt8();ioPriority=decoder.decodeUInt8();threadFlags=decoder.decodeUInt8();}} -return{processId,threadId,stackBase,stackLimit,userStackBase,userStackLimit,affinity,startAddr,win32StartAddr,tebBase,subProcessTag,waitMode,basePriority,pagePriority,ioPriority,threadFlags};},decodeCSwitchFields(header,decoder){if(header.version<2||header.version>4){throw new Error('Incompatible cswitch event version '+ -header.version+'.');} -const newThreadId=decoder.decodeUInt32();const oldThreadId=decoder.decodeUInt32();const newThreadPriority=decoder.decodeInt8();const oldThreadPriority=decoder.decodeInt8();const previousCState=decoder.decodeUInt8();const spareByte=decoder.decodeInt8();const oldThreadWaitReason=decoder.decodeInt8();const oldThreadWaitMode=decoder.decodeInt8();const oldThreadState=decoder.decodeInt8();const oldThreadWaitIdealProcessor=decoder.decodeInt8();const newThreadWaitTime=decoder.decodeUInt32();const reserved=decoder.decodeUInt32();return{newThreadId,oldThreadId,newThreadPriority,oldThreadPriority,previousCState,spareByte,oldThreadWaitReason,oldThreadWaitMode,oldThreadState,oldThreadWaitIdealProcessor,newThreadWaitTime,reserved};},decodeStart(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.createThreadIfNeeded(fields.processId,fields.threadId);return true;},decodeEnd(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.removeThreadIfPresent(fields.threadId);return true;},decodeDCStart(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.createThreadIfNeeded(fields.processId,fields.threadId);return true;},decodeDCEnd(header,decoder){const fields=this.decodeFields(header,decoder);this.importer.removeThreadIfPresent(fields.threadId);return true;},decodeCSwitch(header,decoder){const fields=this.decodeCSwitchFields(header,decoder);const cpu=this.importer.getOrCreateCpu(header.cpu);const newThread=this.importer.getThreadFromWindowsTid(fields.newThreadId);let newThreadName;if(newThread&&newThread.userFriendlyName){newThreadName=newThread.userFriendlyName;}else{const newProcessId=this.importer.getPidFromWindowsTid(fields.newThreadId);const newProcess=this.model.getProcess(newProcessId);let newProcessName;if(newProcess){newProcessName=newProcess.name;}else{newProcessName='Unknown process';} -newThreadName=newProcessName+' (tid '+fields.newThreadId+')';} -cpu.switchActiveThread(header.timestamp,{},fields.newThreadId,newThreadName,fields);return true;}};Parser.register(ThreadParser);return{ThreadParser,};});'use strict';tr.exportTo('tr.e.importer.etw',function(){const kThreadGuid='3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C';const kThreadDCStartOpcode=3;function Decoder(){this.payload_=new DataView(new ArrayBuffer(256));} -Decoder.prototype={__proto__:Object.prototype,reset(base64Payload){const decodedSize=tr.b.Base64.getDecodedBufferLength(base64Payload);if(decodedSize>this.payload_.byteLength){this.payload_=new DataView(new ArrayBuffer(decodedSize));} -tr.b.Base64.DecodeToTypedArray(base64Payload,this.payload_);this.position_=0;},skip(length){this.position_+=length;},decodeUInt8(){const result=this.payload_.getUint8(this.position_,true);this.position_+=1;return result;},decodeUInt16(){const result=this.payload_.getUint16(this.position_,true);this.position_+=2;return result;},decodeUInt32(){const result=this.payload_.getUint32(this.position_,true);this.position_+=4;return result;},decodeUInt64ToString(){const low=this.decodeUInt32();const high=this.decodeUInt32();const lowStr=('0000000'+low.toString(16)).substr(-8);const highStr=('0000000'+high.toString(16)).substr(-8);const result=highStr+lowStr;return result;},decodeInt8(){const result=this.payload_.getInt8(this.position_,true);this.position_+=1;return result;},decodeInt16(){const result=this.payload_.getInt16(this.position_,true);this.position_+=2;return result;},decodeInt32(){const result=this.payload_.getInt32(this.position_,true);this.position_+=4;return result;},decodeInt64ToString(){return this.decodeUInt64ToString();},decodeUInteger(is64){if(is64){return this.decodeUInt64ToString();} -return this.decodeUInt32();},decodeString(){let str='';while(true){const c=this.decodeUInt8();if(!c)return str;str=str+String.fromCharCode(c);}},decodeW16String(){let str='';while(true){const c=this.decodeUInt16();if(!c)return str;str=str+String.fromCharCode(c);}},decodeFixedW16String(length){const oldPosition=this.position_;let str='';for(let i=0;i=52){this.is64bit_=true;}else{this.is64bit_=false;}}else if(event.ver===2){if(decodedSize>=64){this.is64bit_=true;}else{this.is64bit_=false;}}else if(event.ver===3){if(decodedSize>=60){this.is64bit_=true;}else{this.is64bit_=false;}}} -return true;},parseEvent(event){if(!event.hasOwnProperty('guid')||!event.hasOwnProperty('op')||!event.hasOwnProperty('ver')||!event.hasOwnProperty('cpu')||!event.hasOwnProperty('ts')||!event.hasOwnProperty('payload')){return false;} -const timestamp=this.importTimestamp(event.ts);const header={guid:event.guid,opcode:event.op,version:event.ver,cpu:event.cpu,timestamp,is64:this.is64bit_};const decoder=this.decoder_;decoder.reset(event.payload);const handler=this.getEventHandler(header.guid,header.opcode);if(!handler)return false;if(!handler(header,decoder)){this.model_.importWarning({type:'parse_error',message:'Malformed '+header.guid+' event ('+event.payload+')'});return false;} -return true;},registerEventHandler(guid,opcode,handler){if(this.handlers_[guid]===undefined){this.handlers_[guid]=[];} -this.handlers_[guid][opcode]=handler;},getEventHandler(guid,opcode){if(this.handlers_[guid]===undefined){return undefined;} -return this.handlers_[guid][opcode];}};tr.importer.Importer.register(EtwImporter);return{EtwImporter,};});'use strict';tr.exportTo('tr.b',function(){class TraceStream{static get HEADER_SIZE(){return Math.pow(2,10);} -static get CHUNK_SIZE(){return Math.pow(2,20);} -get isBinary(){throw new Error('Not implemented');} -get hasData(){throw new Error('Not implemented');} -get header(){throw new Error('Not implemented');} -readUntilDelimiter(delim){throw new Error('Not implemented');} -readNumBytes(opt_size){throw new Error('Not implemented');} -rewind(){throw new Error('Not implemented');} -substream(offset,opt_length,opt_headerSize){throw new Error('Not implemented');}} -return{TraceStream,};});'use strict';tr.exportTo('tr.e.importer.fuchsia',function(){const IMPORT_PRIORITY=0;const IDLE_THREAD_THRESHOLD=6444000000;const ZX_THREAD_STATE_NEW=0;const ZX_THREAD_STATE_RUNNING=1;const ZX_THREAD_STATE_SUSPENDED=2;const ZX_THREAD_STATE_BLOCKED=3;const ZX_THREAD_STATE_DYING=4;const ZX_THREAD_STATE_DEAD=5;class FuchsiaImporter extends tr.importer.Importer{constructor(model,eventData){super(model,eventData);this.importPriority=IMPORT_PRIORITY;this.model_=model;this.events_=eventData.events;this.parsers_=[];this.threadInfo_=new Map();this.processNames_=new Map();this.threadStates_=new Map();} -static canImport(eventData){if(eventData instanceof tr.b.TraceStream){if(eventData.isBinary)return false;eventData=eventData.header;} -if(eventData instanceof Object&&eventData.type==='fuchsia'){return true;} -return false;} -get importerName(){return'FuchsiaImporter';} -get model(){return this.model_;} -importClockSyncMarkers(){} -finalizeImport(){} -isIdleThread(prio,tid){if(prio===undefined){return tid>IDLE_THREAD_THRESHOLD;} -return prio===0;} -recordThreadState_(tid,timestamp,state,prio){if(this.isIdleThread(prio,tid)){return;} -const states=this.threadStates_.has(tid)?this.threadStates_.get(tid):[];states.push({'ts':timestamp,state});this.threadStates_.set(tid,states);} -processContextSwitchEvent_(event){let tid=event.in.tid;let threadName=tid.toString();let procName='';const prio=event.in.prio;if(this.threadInfo_.has(tid)){const threadInfo=this.threadInfo_.get(tid);threadName=threadInfo.name;const pid=threadInfo.pid;if(this.processNames_.has(pid)){procName=this.processNames_.get(pid)+':';}} -const name=procName+threadName;if(this.isIdleThread(prio,tid)){tid=undefined;} -const cpu=this.model_.kernel.getOrCreateCpu(event.cpu);const timestamp=tr.b.Unit.timestampFromUs(event.ts);cpu.switchActiveThread(timestamp,{},tid,name,tid);const SCHEDULING_STATE=tr.model.SCHEDULING_STATE;this.recordThreadState_(tid,timestamp,SCHEDULING_STATE.RUNNING,prio);let outState=SCHEDULING_STATE.UNKNOWN;switch(event.out.state){case ZX_THREAD_STATE_NEW:outState=SCHEDULING_STATE.RUNNABLE;break;case ZX_THREAD_STATE_RUNNING:outState=SCHEDULING_STATE.RUNNABLE;break;case ZX_THREAD_STATE_BLOCKED:outState=SCHEDULING_STATE.SLEEPING;break;case ZX_THREAD_STATE_SUSPENDED:outState=SCHEDULING_STATE.STOPPED;break;case ZX_THREAD_STATE_DEAD:outState=SCHEDULING_STATE.TASK_DEAD;break;} -this.recordThreadState_(event.out.tid,timestamp,outState,event.out.prio);} -processProcessInfoEvent_(event){const process=this.model_.getOrCreateProcess(event.pid);process.name=event.name;this.processNames_.set(event.pid,event.name);if('sort_index'in event){process.sortIndex=event.sort_index;}} -processThreadInfoEvent_(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.name=event.name;this.threadInfo_.set(event.tid,{'name':event.name,'pid':event.pid});if('sort_index'in event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);thread.sortIndex=event.sort_index;}} -processEvent_(event){switch(event.ph){case'k':this.processContextSwitchEvent_(event);break;case'p':this.processProcessInfoEvent_(event);break;case't':this.processThreadInfoEvent_(event);break;}} -postProcessStates_(){for(const[tid,states]of this.threadStates_){if(!this.threadInfo_.has(tid)){continue;} -const pid=this.threadInfo_.get(tid).pid;const thread=this.model_.getOrCreateProcess(pid).getOrCreateThread(tid);const slices=[];for(let i=0;i0?Math.min(offset,this.data_.length):this.data_.length);} -readNumBytes(opt_size){if(opt_size!==undefined&&opt_size<=0){throw new Error(`readNumBytes expects a positive size (${opt_size} given)`);} -const size=opt_size||tr.b.TraceStream.CHUNK_SIZE;const offset=Math.min(this.cursor_+size,this.data_.length);return this.readToOffset_(offset);} -rewind(){this.cursor_=0;} -substream(startOffset,opt_endOffset,opt_headerSize){return new InMemoryTraceStream(this.data_.subarray(startOffset,opt_endOffset),this.isBinary_,opt_headerSize);} -readToOffset_(offset){const out=InMemoryTraceStream.uint8ArrayToString_(this.data_.subarray(this.cursor_,offset));this.cursor_=offset;return out;} -static uint8ArrayToString_(arr){if(typeof TextDecoder!=='undefined'){const decoder=new TextDecoder('utf-8');return decoder.decode(arr);} -const c=[];for(let i=0;i0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var a=r.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==f)throw new Error(l[a]);if(e.header&&r.deflateSetHeader(this.strm,e.header),e.dictionary){var n;if(n="string"==typeof e.dictionary?o.string2buf(e.dictionary):"[object ArrayBuffer]"===d.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(a=r.deflateSetDictionary(this.strm,n))!==f)throw new Error(l[a]);this._dict_set=!0}}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||l[a.err];return a.result}var r=t("./zlib/deflate"),s=t("./utils/common"),o=t("./utils/strings"),l=t("./zlib/messages"),h=t("./zlib/zstream"),d=Object.prototype.toString,f=0,_=-1,u=0,c=8;i.prototype.push=function(t,e){var a,i,n=this.strm,l=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,"string"==typeof t?n.input=o.string2buf(t):"[object ArrayBuffer]"===d.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new s.Buf8(l),n.next_out=0,n.avail_out=l),1!==(a=r.deflate(n,i))&&a!==f)return this.onEnd(a),this.ended=!0,!1;0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||("string"===this.options.to?this.onData(o.buf2binstring(s.shrinkBuf(n.output,n.next_out))):this.onData(s.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||0===n.avail_out)&&1!==a);return 4===i?(a=r.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===f):2!==i||(this.onEnd(f),n.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Deflate=i,a.deflate=n,a.deflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.gzip=function(t,e){return e=e||{},e.gzip=!0,n(t,e)}},{"./utils/common":3,"./utils/strings":4,"./zlib/deflate":8,"./zlib/messages":13,"./zlib/zstream":15}],2:[function(t,e,a){"use strict";function i(t){if(!(this instanceof i))return new i(t);this.options=s.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new d,this.strm.avail_out=0;var a=r.inflateInit2(this.strm,e.windowBits);if(a!==l.Z_OK)throw new Error(h[a]);this.header=new f,r.inflateGetHeader(this.strm,this.header)}function n(t,e){var a=new i(e);if(a.push(t,!0),a.err)throw a.msg||h[a.err];return a.result}var r=t("./zlib/inflate"),s=t("./utils/common"),o=t("./utils/strings"),l=t("./zlib/constants"),h=t("./zlib/messages"),d=t("./zlib/zstream"),f=t("./zlib/gzheader"),_=Object.prototype.toString;i.prototype.push=function(t,e){var a,i,n,h,d,f,u=this.strm,c=this.options.chunkSize,b=this.options.dictionary,g=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?l.Z_FINISH:l.Z_NO_FLUSH,"string"==typeof t?u.input=o.binstring2buf(t):"[object ArrayBuffer]"===_.call(t)?u.input=new Uint8Array(t):u.input=t,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new s.Buf8(c),u.next_out=0,u.avail_out=c),(a=r.inflate(u,l.Z_NO_FLUSH))===l.Z_NEED_DICT&&b&&(f="string"==typeof b?o.string2buf(b):"[object ArrayBuffer]"===_.call(b)?new Uint8Array(b):b,a=r.inflateSetDictionary(this.strm,f)),a===l.Z_BUF_ERROR&&!0===g&&(a=l.Z_OK,g=!1),a!==l.Z_STREAM_END&&a!==l.Z_OK)return this.onEnd(a),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&a!==l.Z_STREAM_END&&(0!==u.avail_in||i!==l.Z_FINISH&&i!==l.Z_SYNC_FLUSH)||("string"===this.options.to?(n=o.utf8border(u.output,u.next_out),h=u.next_out-n,d=o.buf2string(u.output,n),u.next_out=h,u.avail_out=c-h,h&&s.arraySet(u.output,u.output,n,h,0),this.onData(d)):this.onData(s.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(g=!0)}while((u.avail_in>0||0===u.avail_out)&&a!==l.Z_STREAM_END);return a===l.Z_STREAM_END&&(i=l.Z_FINISH),i===l.Z_FINISH?(a=r.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===l.Z_OK):i!==l.Z_SYNC_FLUSH||(this.onEnd(l.Z_OK),u.avail_out=0,!0)},i.prototype.onData=function(t){this.chunks.push(t)},i.prototype.onEnd=function(t){t===l.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=s.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Inflate=i,a.inflate=n,a.inflateRaw=function(t,e){return e=e||{},e.raw=!0,n(t,e)},a.ungzip=n},{"./utils/common":3,"./utils/strings":4,"./zlib/constants":6,"./zlib/gzheader":9,"./zlib/inflate":11,"./zlib/messages":13,"./zlib/zstream":15}],3:[function(t,e,a){"use strict";function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;a.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(var n in a)i(a,n)&&(t[n]=a[n])}}return t},a.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;o[254]=o[254]=1,a.string2buf=function(t){var e,a,i,r,s,o=t.length,l=0;for(r=0;r>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},a.buf2binstring=function(t){return i(t,t.length)},a.binstring2buf=function(t){for(var e=new n.Buf8(t.length),a=0,i=e.length;a4)h[n++]=65533,a+=s-1;else{for(r&=2===s?31:3===s?15:7;s>1&&a1?h[n++]=65533:r<65536?h[n++]=r:(r-=65536,h[n++]=55296|r>>10&1023,h[n++]=56320|1023&r)}return i(h,n)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;a>=0&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+o[t[a]]>e?a:e}},{"./common":3}],5:[function(t,e,a){"use strict";e.exports=function(t,e,a,i){for(var n=65535&t|0,r=t>>>16&65535|0,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{r=r+(n=n+e[i++]|0)|0}while(--s);n%=65521,r%=65521}return n|r<<16|0}},{}],6:[function(t,e,a){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(t,e,a){"use strict";var i=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,n){var r=i,s=n+a;t^=-1;for(var o=n;o>>8^r[255&(t^e[o])];return-1^t}},{}],8:[function(t,e,a){"use strict";function i(t,e){return t.msg=A[e],e}function n(t){return(t<<1)-(t>4?9:0)}function r(t){for(var e=t.length;--e>=0;)t[e]=0}function s(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(z.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function o(t,e){B._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,s(t.strm)}function l(t,e){t.pending_buf[t.pending++]=e}function h(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function d(t,e,a,i){var n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,z.arraySet(e,t.input,t.next_in,n,a),1===t.state.wrap?t.adler=S(t.adler,e,n,a):2===t.state.wrap&&(t.adler=E(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)}function f(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-it?t.strstart-(t.w_size-it):0,h=t.window,d=t.w_mask,f=t.prev,_=t.strstart+at,u=h[r+s-1],c=h[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<_);if(i=at-(_-r),r=_-at,i>s){if(t.match_start=e,s=i,i>=o)break;u=h[r+s-1],c=h[r+s]}}}while((e=f[e&d])>l&&0!=--n);return s<=t.lookahead?s:t.lookahead}function _(t){var e,a,i,n,r,s=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=s+(s-it)){z.arraySet(t.window,t.window,s,s,0),t.match_start-=s,t.strstart-=s,t.block_start-=s,e=a=t.hash_size;do{i=t.head[--e],t.head[e]=i>=s?i-s:0}while(--a);e=a=s;do{i=t.prev[--e],t.prev[e]=i>=s?i-s:0}while(--a);n+=s}if(0===t.strm.avail_in)break;if(a=d(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=a,t.lookahead+t.insert>=et)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=(t.ins_h<=et&&(t.ins_h=(t.ins_h<=et)if(i=B._tr_tally(t,t.strstart-t.match_start,t.match_length-et),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=et){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=et&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=et-1)),t.prev_length>=et&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-et,i=B._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-et),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<=et&&t.strstart>0&&(n=t.strstart-1,(i=s[n])===s[++n]&&i===s[++n]&&i===s[++n])){r=t.strstart+at;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=et?(a=B._tr_tally(t,1,t.match_length-et),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function g(t,e){for(var a;;){if(0===t.lookahead&&(_(t),0===t.lookahead)){if(e===Z)return _t;break}if(t.match_length=0,a=B._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):t.last_lit&&(o(t,!1),0===t.strm.avail_out)?_t:ut}function m(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function w(t){t.window_size=2*t.w_size,r(t.head),t.max_lazy_match=x[t.level].max_lazy,t.good_match=x[t.level].good_length,t.nice_match=x[t.level].nice_length,t.max_chain_length=x[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=et-1,t.match_available=0,t.ins_h=0}function p(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=q,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new z.Buf16(2*$),this.dyn_dtree=new z.Buf16(2*(2*Q+1)),this.bl_tree=new z.Buf16(2*(2*V+1)),r(this.dyn_ltree),r(this.dyn_dtree),r(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new z.Buf16(tt+1),this.heap=new z.Buf16(2*J+1),r(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new z.Buf16(2*J+1),r(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function v(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=Y,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?rt:dt,t.adler=2===e.wrap?0:1,e.last_flush=Z,B._tr_init(e),D):i(t,U)}function k(t){var e=v(t);return e===D&&w(t.state),e}function y(t,e,a,n,r,s){if(!t)return U;var o=1;if(e===L&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),r<1||r>G||a!==q||n<8||n>15||e<0||e>9||s<0||s>M)return i(t,U);8===n&&(n=9);var l=new p;return t.state=l,l.strm=t,l.wrap=o,l.gzhead=null,l.w_bits=n,l.w_size=1<t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(_(t),0===t.lookahead&&e===Z)return _t;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,o(t,!1),0===t.strm.avail_out))return _t;if(t.strstart-t.block_start>=t.w_size-it&&(o(t,!1),0===t.strm.avail_out))return _t}return t.insert=0,e===N?(o(t,!0),0===t.strm.avail_out?ct:bt):(t.strstart>t.block_start&&(o(t,!1),t.strm.avail_out),_t)}),new m(4,4,8,4,u),new m(4,5,16,8,u),new m(4,6,32,32,u),new m(4,4,16,16,c),new m(8,16,32,32,c),new m(8,16,128,128,c),new m(8,32,128,256,c),new m(32,128,258,1024,c),new m(32,258,258,4096,c)],a.deflateInit=function(t,e){return y(t,e,q,X,W,P)},a.deflateInit2=y,a.deflateReset=k,a.deflateResetKeep=v,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?U:(t.state.gzhead=e,D):U},a.deflate=function(t,e){var a,o,d,f;if(!t||!t.state||e>O||e<0)return t?i(t,U):U;if(o=t.state,!t.output||!t.input&&0!==t.avail_in||o.status===ft&&e!==N)return i(t,0===t.avail_out?F:U);if(o.strm=t,a=o.last_flush,o.last_flush=e,o.status===rt)if(2===o.wrap)t.adler=0,l(o,31),l(o,139),l(o,8),o.gzhead?(l(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),l(o,255&o.gzhead.time),l(o,o.gzhead.time>>8&255),l(o,o.gzhead.time>>16&255),l(o,o.gzhead.time>>24&255),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(l(o,255&o.gzhead.extra.length),l(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(t.adler=E(t.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=st):(l(o,0),l(o,0),l(o,0),l(o,0),l(o,0),l(o,9===o.level?2:o.strategy>=j||o.level<2?4:0),l(o,gt),o.status=dt);else{var _=q+(o.w_bits-8<<4)<<8;_|=(o.strategy>=j||o.level<2?0:o.level<6?1:6===o.level?2:3)<<6,0!==o.strstart&&(_|=nt),_+=31-_%31,o.status=dt,h(o,_),0!==o.strstart&&(h(o,t.adler>>>16),h(o,65535&t.adler)),t.adler=1}if(o.status===st)if(o.gzhead.extra){for(d=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending!==o.pending_buf_size));)l(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=ot)}else o.status=ot;if(o.status===ot)if(o.gzhead.name){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindexd&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.gzindex=0,o.status=lt)}else o.status=lt;if(o.status===lt)if(o.gzhead.comment){d=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>d&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),s(t),d=o.pending,o.pending===o.pending_buf_size)){f=1;break}f=o.gzindexd&&(t.adler=E(t.adler,o.pending_buf,o.pending-d,d)),0===f&&(o.status=ht)}else o.status=ht;if(o.status===ht&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&s(t),o.pending+2<=o.pending_buf_size&&(l(o,255&t.adler),l(o,t.adler>>8&255),t.adler=0,o.status=dt)):o.status=dt),0!==o.pending){if(s(t),0===t.avail_out)return o.last_flush=-1,D}else if(0===t.avail_in&&n(e)<=n(a)&&e!==N)return i(t,F);if(o.status===ft&&0!==t.avail_in)return i(t,F);if(0!==t.avail_in||0!==o.lookahead||e!==Z&&o.status!==ft){var u=o.strategy===j?g(o,e):o.strategy===K?b(o,e):x[o.level].func(o,e);if(u!==ct&&u!==bt||(o.status=ft),u===_t||u===ct)return 0===t.avail_out&&(o.last_flush=-1),D;if(u===ut&&(e===R?B._tr_align(o):e!==O&&(B._tr_stored_block(o,0,0,!1),e===C&&(r(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),s(t),0===t.avail_out))return o.last_flush=-1,D}return e!==N?D:o.wrap<=0?I:(2===o.wrap?(l(o,255&t.adler),l(o,t.adler>>8&255),l(o,t.adler>>16&255),l(o,t.adler>>24&255),l(o,255&t.total_in),l(o,t.total_in>>8&255),l(o,t.total_in>>16&255),l(o,t.total_in>>24&255)):(h(o,t.adler>>>16),h(o,65535&t.adler)),s(t),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?D:I)},a.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==rt&&e!==st&&e!==ot&&e!==lt&&e!==ht&&e!==dt&&e!==ft?i(t,U):(t.state=null,e===dt?i(t,T):D):U},a.deflateSetDictionary=function(t,e){var a,i,n,s,o,l,h,d,f=e.length;if(!t||!t.state)return U;if(a=t.state,2===(s=a.wrap)||1===s&&a.status!==rt||a.lookahead)return U;for(1===s&&(t.adler=S(t.adler,e,f,0)),a.wrap=0,f>=a.w_size&&(0===s&&(r(a.head),a.strstart=0,a.block_start=0,a.insert=0),d=new z.Buf8(a.w_size),z.arraySet(d,e,f-a.w_size,a.w_size,0),e=d,f=a.w_size),o=t.avail_in,l=t.next_in,h=t.input,t.avail_in=f,t.next_in=0,t.input=e,_(a);a.lookahead>=et;){i=a.strstart,n=a.lookahead-(et-1);do{a.ins_h=(a.ins_h<>>24,u>>>=v,c-=v,0===(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(0==(64&v)){p=b[(65535&p)+(u&(1<>>=v,c-=v),c<15&&(u+=B[i++]<>>24,u>>>=v,c-=v,!(16&(v=p>>>16&255))){if(0==(64&v)){p=g[(65535&p)+(u&(1<l){t.msg="invalid distance too far back",a.mode=30;break t}if(u>>>=v,c-=v,v=r-s,y>v){if((v=y-v)>d&&a.sane){t.msg="invalid distance too far back",a.mode=30;break t}if(x=0,z=_,0===f){if(x+=h-v,v2;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],k>1&&(S[r++]=z[x++]))}else{x=r-y;do{S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],k-=3}while(k>2);k&&(S[r++]=S[x++],k>1&&(S[r++]=S[x++]))}break}}break}}while(i>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function n(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new u.Buf16(320),this.work=new u.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function r(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=N,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new u.Buf32(dt),e.distcode=e.distdyn=new u.Buf32(ft),e.sane=1,e.back=-1,z):E}function s(t){var e;return t&&t.state?(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,r(t)):E}function o(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?E:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,s(t))):E}function l(t,e){var a,i;return t?(i=new n,t.state=i,i.window=null,(a=o(t,e))!==z&&(t.state=null),a):E}function h(t){if(ut){var e;for(f=new u.Buf32(512),_=new u.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(m(p,t.lens,0,288,f,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;m(v,t.lens,0,32,_,0,t.work,{bits:5}),ut=!1}t.lencode=f,t.lenbits=9,t.distcode=_,t.distbits=5}function d(t,e,a,i){var n,r=t.state;return null===r.window&&(r.wsize=1<=r.wsize?(u.arraySet(r.window,e,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((n=r.wsize-r.wnext)>i&&(n=i),u.arraySet(r.window,e,a-i,n,r.wnext),(i-=n)?(u.arraySet(r.window,e,a-i,i,0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,a.check=b(a.check,Et,2,0),_=0,dt=0,a.mode=O;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&_)<<8)+(_>>8))%31){t.msg="incorrect header check",a.mode=ot;break}if((15&_)!==C){t.msg="unknown compression method",a.mode=ot;break}if(_>>>=4,dt-=4,yt=8+(15&_),0===a.wbits)a.wbits=yt;else if(yt>a.wbits){t.msg="invalid window size",a.mode=ot;break}a.dmax=1<>8&1),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=D;case D:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<>>8&255,Et[2]=_>>>16&255,Et[3]=_>>>24&255,a.check=b(a.check,Et,4,0)),_=0,dt=0,a.mode=I;case I:for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<>8),512&a.flags&&(Et[0]=255&_,Et[1]=_>>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0,a.mode=U;case U:if(1024&a.flags){for(;dt<16;){if(0===l)break t;l--,_+=n[s++]<>>8&255,a.check=b(a.check,Et,2,0)),_=0,dt=0}else a.head&&(a.head.extra=null);a.mode=T;case T:if(1024&a.flags&&((ut=a.length)>l&&(ut=l),ut&&(a.head&&(yt=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),u.arraySet(a.head.extra,n,s,ut,yt)),512&a.flags&&(a.check=b(a.check,n,ut,s)),l-=ut,s+=ut,a.length-=ut),a.length))break t;a.length=0,a.mode=F;case F:if(2048&a.flags){if(0===l)break t;ut=0;do{yt=n[s+ut++],a.head&&yt&&a.length<65536&&(a.head.name+=String.fromCharCode(yt))}while(yt&&ut>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=M;break;case j:for(;dt<32;){if(0===l)break t;l--,_+=n[s++]<>>=7&dt,dt-=7&dt,a.mode=nt;break}for(;dt<3;){if(0===l)break t;l--,_+=n[s++]<>>=1,dt-=1,3&_){case 0:a.mode=Y;break;case 1:if(h(a),a.mode=Q,e===x){_>>>=2,dt-=2;break t}break;case 2:a.mode=X;break;case 3:t.msg="invalid block type",a.mode=ot}_>>>=2,dt-=2;break;case Y:for(_>>>=7&dt,dt-=7&dt;dt<32;){if(0===l)break t;l--,_+=n[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=ot;break}if(a.length=65535&_,_=0,dt=0,a.mode=q,e===x)break t;case q:a.mode=G;case G:if(ut=a.length){if(ut>l&&(ut=l),ut>f&&(ut=f),0===ut)break t;u.arraySet(r,n,s,ut,o),l-=ut,s+=ut,f-=ut,o+=ut,a.length-=ut;break}a.mode=M;break;case X:for(;dt<14;){if(0===l)break t;l--,_+=n[s++]<>>=5,dt-=5,a.ndist=1+(31&_),_>>>=5,dt-=5,a.ncode=4+(15&_),_>>>=4,dt-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=ot;break}a.have=0,a.mode=W;case W:for(;a.have>>=3,dt-=3}for(;a.have<19;)a.lens[At[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,zt={bits:a.lenbits},xt=m(w,a.lens,0,19,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg="invalid code lengths set",a.mode=ot;break}a.have=0,a.mode=J;case J:for(;a.have>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<>>=gt,dt-=gt,a.lens[a.have++]=wt;else{if(16===wt){for(Bt=gt+2;dt>>=gt,dt-=gt,0===a.have){t.msg="invalid bit length repeat",a.mode=ot;break}yt=a.lens[a.have-1],ut=3+(3&_),_>>>=2,dt-=2}else if(17===wt){for(Bt=gt+3;dt>>=gt)),_>>>=3,dt-=3}else{for(Bt=gt+7;dt>>=gt)),_>>>=7,dt-=7}if(a.have+ut>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=ot;break}for(;ut--;)a.lens[a.have++]=yt}}if(a.mode===ot)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=ot;break}if(a.lenbits=9,zt={bits:a.lenbits},xt=m(p,a.lens,0,a.nlen,a.lencode,0,a.work,zt),a.lenbits=zt.bits,xt){t.msg="invalid literal/lengths set",a.mode=ot;break}if(a.distbits=6,a.distcode=a.distdyn,zt={bits:a.distbits},xt=m(v,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,zt),a.distbits=zt.bits,xt){t.msg="invalid distances set",a.mode=ot;break}if(a.mode=Q,e===x)break t;case Q:a.mode=V;case V:if(l>=6&&f>=258){t.next_out=o,t.avail_out=f,t.next_in=s,t.avail_in=l,a.hold=_,a.bits=dt,g(t,_t),o=t.next_out,r=t.output,f=t.avail_out,s=t.next_in,n=t.input,l=t.avail_in,_=a.hold,dt=a.bits,a.mode===M&&(a.back=-1);break}for(a.back=0;St=a.lencode[_&(1<>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,a.length=wt,0===mt){a.mode=it;break}if(32&mt){a.back=-1,a.mode=M;break}if(64&mt){t.msg="invalid literal/length code",a.mode=ot;break}a.extra=15&mt,a.mode=$;case $:if(a.extra){for(Bt=a.extra;dt>>=a.extra,dt-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=tt;case tt:for(;St=a.distcode[_&(1<>>24,mt=St>>>16&255,wt=65535&St,!(gt<=dt);){if(0===l)break t;l--,_+=n[s++]<>pt)],gt=St>>>24,mt=St>>>16&255,wt=65535&St,!(pt+gt<=dt);){if(0===l)break t;l--,_+=n[s++]<>>=pt,dt-=pt,a.back+=pt}if(_>>>=gt,dt-=gt,a.back+=gt,64&mt){t.msg="invalid distance code",a.mode=ot;break}a.offset=wt,a.extra=15&mt,a.mode=et;case et:if(a.extra){for(Bt=a.extra;dt>>=a.extra,dt-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=ot;break}a.mode=at;case at:if(0===f)break t;if(ut=_t-f,a.offset>ut){if((ut=a.offset-ut)>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=ot;break}ut>a.wnext?(ut-=a.wnext,ct=a.wsize-ut):ct=a.wnext-ut,ut>a.length&&(ut=a.length),bt=a.window}else bt=r,ct=o-a.offset,ut=a.length;ut>f&&(ut=f),f-=ut,a.length-=ut;do{r[o++]=bt[ct++]}while(--ut);0===a.length&&(a.mode=V);break;case it:if(0===f)break t;r[o++]=a.length,f--,a.mode=V;break;case nt:if(a.wrap){for(;dt<32;){if(0===l)break t;l--,_|=n[s++]<=1&&0===I[S];S--);if(E>S&&(E=S),0===S)return h[d++]=20971520,h[d++]=20971520,_.bits=1,0;for(B=1;B0&&(0===t||1!==S))return-1;for(U[1]=0,x=1;x<15;x++)U[x+1]=U[x]+I[x];for(z=0;z852||2===t&&C>592)return 1;for(;;){p=x-Z,f[z]w?(v=T[F+f[z]],k=O[D+f[z]]):(v=96,k=0),u=1<>Z)+(c-=u)]=p<<24|v<<16|k|0}while(0!==c);for(u=1<>=1;if(0!==u?(N&=u-1,N+=u):N=0,z++,0==--I[x]){if(x===S)break;x=e[a+f[z]]}if(x>E&&(N&g)!==b){for(0===Z&&(Z=E),m+=B,R=1<<(A=x-Z);A+Z852||2===t&&C>592)return 1;h[b=N&g]=E<<24|A<<16|m-d|0}}return 0!==N&&(h[m+N]=x-Z<<24|64<<16|0),_.bits=E,0}},{"../utils/common":3}],13:[function(t,e,a){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],14:[function(t,e,a){"use strict";function i(t){for(var e=t.length;--e>=0;)t[e]=0}function n(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function s(t){return t<256?et[t]:et[256+(t>>>7)]}function o(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function l(t,e,a){t.bi_valid>M-a?(t.bi_buf|=e<>M-t.bi_valid,t.bi_valid+=a-M):(t.bi_buf|=e<>>=1,a<<=1}while(--e>0);return a>>>1}function f(t){16===t.bi_valid?(o(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}function _(t,e){var a,i,n,r,s,o,l=e.dyn_tree,h=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,_=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,b=0;for(r=0;r<=K;r++)t.bl_count[r]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;ac&&(r=c,b++),l[2*i+1]=r,i>h||(t.bl_count[r]++,s=0,i>=u&&(s=_[i-u]),o=l[2*i],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==b){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,b-=2}while(b>0);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)(n=t.heap[--a])>h||(l[2*n+1]!==r&&(t.opt_len+=(r-l[2*n+1])*l[2*n],l[2*n+1]=r),i--)}}function u(t,e,a){var i,n,r=new Array(K+1),s=0;for(i=1;i<=K;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=d(r[o]++,o))}}function c(){var t,e,a,i,r,s=new Array(K+1);for(a=0,i=0;i>=7;i8?o(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function m(t,e,a,i){g(t),i&&(o(t,a),o(t,~a)),A.arraySet(t.pending_buf,t.window,e,a,t.pending),t.pending+=a}function w(t,e,a,i){var n=2*e,r=2*a;return t[n]>1;a>=1;a--)p(t,r,a);n=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],p(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,p(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],_(t,e),u(r,h,t.bl_count)}function y(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o=3&&0===t.bl_tree[2*V[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}function B(t,e,a,i){var n;for(l(t,e-257,5),l(t,a-1,5),l(t,i-4,4),n=0;n>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return R;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return C;for(e=32;e0?(t.strm.data_type===N&&(t.strm.data_type=S(t)),k(t,t.l_desc),k(t,t.d_desc),s=z(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?E(t,e,a,i):t.strategy===Z||r===n?(l(t,(D<<1)+(i?1:0),3),v(t,$,tt)):(l(t,(I<<1)+(i?1:0),3),B(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),v(t,t.dyn_ltree,t.dyn_dtree)),b(t),i&&g(t)},a._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(at[a]+T+1)]++,t.dyn_dtree[2*s(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){l(t,D<<1,3),h(t,Y,$),f(t)}},{"../utils/common":3}],15:[function(t,e,a){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],"/":[function(t,e,a){"use strict";var i={};(0,t("./lib/utils/common").assign)(i,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),e.exports=i},{"./lib/deflate":1,"./lib/inflate":2,"./lib/utils/common":3,"./lib/zlib/constants":6}]},{},[])("/")});'use strict';tr.exportTo('tr.e.importer',function(){const GZIP_MEMBER_HEADER_ID_SIZE=3;const GZIP_HEADER_ID1=0x1f;const GZIP_HEADER_ID2=0x8b;const GZIP_DEFLATE_COMPRESSION=8;function _stringToUInt8Array(str){const array=new Uint8Array(str.length);for(let i=0;i=data.length){throw new Error('Unexpected end of gzip data');} -return data[position++];} -function getWord(){const low=getByte();const high=getByte();return(high<<8)+low;} -function skipBytes(amount){position+=amount;} -function skipZeroTerminatedString(){while(getByte()!==0){}} -const id1=getByte();const id2=getByte();if(id1!==GZIP_HEADER_ID1||id2!==GZIP_HEADER_ID2){throw new Error('Not gzip data');} -const compressionMethod=getByte();if(compressionMethod!==GZIP_DEFLATE_COMPRESSION){throw new Error('Unsupported compression method: '+compressionMethod);} -const flags=getByte();const haveHeaderCrc=flags&(1<<1);const haveExtraFields=flags&(1<<2);const haveFileName=flags&(1<<3);const haveComment=flags&(1<<4);skipBytes(4+1+1);if(haveExtraFields){const bytesToSkip=getWord();skipBytes(bytesToSkip);} -if(haveFileName)skipZeroTerminatedString();if(haveComment)skipZeroTerminatedString();if(haveHeaderCrc)getWord();const inflatedData=pako.inflateRaw(data.subarray(position));if(this.inflateAsTraceStream_){return GzipImporter.transformToStream(inflatedData);} -let string;try{string=GzipImporter.transformToString(inflatedData);}catch(err){return GzipImporter.transformToStream(inflatedData);} -if(inflatedData.length>0&&string.length===0){return GzipImporter.transformToStream(inflatedData);} -return string;};GzipImporter.transformToStream=function(data){if(data instanceof Uint8Array){return new tr.b.InMemoryTraceStream(data,false);} -throw new Error(`Cannot transform ${type} to TraceStream.`);};GzipImporter.transformToString=function(data){if(typeof(data)==='string')return data;if(typeof TextDecoder==='undefined'){if(data instanceof ArrayBuffer){data=new Uint8Array(data);} -const result=[];let chunk=65536;let k=0;const len=data.length;while(k1){try{const chunklen=Math.min(k+chunk,len);let dataslice;if(data instanceof Array){dataslice=data.slice(k,chunklen);}else{dataslice=data.subarray(k,chunklen);} -result.push(String.fromCharCode.apply(null,dataslice));k+=chunk;}catch(e){chunk=Math.floor(chunk/2);}} -return result.join('');} -if(data instanceof Array){data=new Uint8Array(data);} -return new TextDecoder('utf-8').decode(data);};GzipImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'GzipImporter';},isTraceDataContainer(){return true;},extractSubtraces(){const eventData=GzipImporter.inflateGzipData_(this.gzipData_);return eventData?[eventData]:[];}};tr.importer.Importer.register(GzipImporter);return{GzipImporter,};});'use strict';tr.exportTo('tr.importer',function(){class SimpleLineReader{constructor(text){this.data_=text instanceof tr.b.TraceStream?text:text.split(new RegExp('\r?\n'));this.curLine_=0;this.readLastLine_=false;this.savedLines_=undefined;}*[Symbol.iterator](){let lastLine=undefined;while(this.hasData_){if(this.readLastLine_){this.curLine_++;this.readLastLine_=false;}else if(this.data_ instanceof tr.b.TraceStream){this.curLine_++;const line=this.data_.readUntilDelimiter('\n');if(line.endsWith('\r\n')){lastLine=line.slice(0,-2);}else if(line.endsWith('\n')){lastLine=line.slice(0,-1);}else{lastLine=line;}}else{this.curLine_++;lastLine=this.data_[this.curLine_-1];} -yield lastLine;}} -get curLineNumber(){return this.curLine_;} -get hasData_(){if(this.data_ instanceof tr.b.TraceStream)return this.data_.hasData;return this.curLine_\r?$'))){break;} -r.beginSavingLines();if(!r.advanceToLineMatching(/^<\/\s*script>\r?$/))return;let rawEvents=r.endSavingLinesAndGetResult();rawEvents=rawEvents.slice(1,rawEvents.length-1);const data64=rawEvents.join('\n');const buffer=new ArrayBuffer(tr.b.Base64.getDecodedBufferLength(data64));const len=tr.b.Base64.DecodeToTypedArray(data64,new DataView(buffer));Trace2HTMLImporter.subtraces_.push(buffer.slice(0,len));}} -function _canImportFromHTML(text){if(!/^/.test(text))return false;_extractEventsFromHTML(text);if(Trace2HTMLImporter.subtraces_.length===0)return false;return true;} -Trace2HTMLImporter.canImport=function(events){if(events instanceof tr.b.TraceStream)return false;return _canImportFromHTML(events);};Trace2HTMLImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'Trace2HTMLImporter';},isTraceDataContainer(){return true;},extractSubtraces(){return Trace2HTMLImporter.subtraces_;},importEvents(){}};tr.importer.Importer.register(Trace2HTMLImporter);return{Trace2HTMLImporter,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function SplayTree(){} -SplayTree.prototype.root_=null;SplayTree.prototype.isEmpty=function(){return!this.root_;};SplayTree.prototype.insert=function(key,value){if(this.isEmpty()){this.root_=new SplayTree.Node(key,value);return;} -this.splay_(key);if(this.root_.key===key){return;} -const node=new SplayTree.Node(key,value);if(key>this.root_.key){node.left=this.root_;node.right=this.root_.right;this.root_.right=null;}else{node.right=this.root_;node.left=this.root_.left;this.root_.left=null;} -this.root_=node;};SplayTree.prototype.remove=function(key){if(this.isEmpty()){throw Error('Key not found: '+key);} -this.splay_(key);if(this.root_.key!==key){throw Error('Key not found: '+key);} -const removed=this.root_;if(!this.root_.left){this.root_=this.root_.right;}else{const right=this.root_.right;this.root_=this.root_.left;this.splay_(key);this.root_.right=right;} -return removed;};SplayTree.prototype.find=function(key){if(this.isEmpty())return null;this.splay_(key);return this.root_.key===key?this.root_:null;};SplayTree.prototype.findMin=function(){if(this.isEmpty())return null;let current=this.root_;while(current.left){current=current.left;} -return current;};SplayTree.prototype.findMax=function(opt_startNode){if(this.isEmpty())return null;let current=opt_startNode||this.root_;while(current.right){current=current.right;} -return current;};SplayTree.prototype.findGreatestLessThan=function(key){if(this.isEmpty())return null;this.splay_(key);if(this.root_.key<=key){return this.root_;} -if(this.root_.left){return this.findMax(this.root_.left);} -return null;};SplayTree.prototype.exportKeysAndValues=function(){const result=[];this.traverse_(function(node){result.push([node.key,node.value]);});return result;};SplayTree.prototype.exportValues=function(){const result=[];this.traverse_(function(node){result.push(node.value);});return result;};SplayTree.prototype.splay_=function(key){if(this.isEmpty())return;const dummy=new SplayTree.Node(null,null);let left=dummy;let right=dummy;let current=this.root_;while(true){if(keycurrent.key){if(!current.right){break;} -if(key>current.right.key){const tmp=current.right;current.right=tmp.left;tmp.left=current;current=tmp;if(!current.right){break;}} -left.right=current;left=current;current=current.right;}else{break;}} -left.right=current.left;right.left=current.right;current.left=dummy.right;current.right=dummy.left;this.root_=current;};SplayTree.prototype.traverse_=function(f){const nodesToVisit=[this.root_];while(nodesToVisit.length>0){const node=nodesToVisit.shift();if(node===null)continue;f(node);nodesToVisit.push(node.left);nodesToVisit.push(node.right);}};SplayTree.Node=function(key,value){this.key=key;this.value=value;};SplayTree.Node.prototype.left=null;SplayTree.Node.prototype.right=null;return{SplayTree,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function CodeMap(){this.dynamics_=new tr.e.importer.v8.SplayTree();this.dynamicsNameGen_=new tr.e.importer.v8.CodeMap.NameGenerator();this.statics_=new tr.e.importer.v8.SplayTree();this.libraries_=new tr.e.importer.v8.SplayTree();this.pages_=[];} -CodeMap.PAGE_ALIGNMENT=12;CodeMap.PAGE_SIZE=1<>>CodeMap.PAGE_ALIGNMENT]=1;}};CodeMap.prototype.deleteAllCoveredNodes_=function(tree,start,end){const toDelete=[];let addr=end-1;while(addr>=start){const node=tree.findGreatestLessThan(addr);if(!node)break;const start2=node.key;const end2=start2+node.value.size;if(start2=node.key&&addr<(node.key+node.value.size);};CodeMap.prototype.findInTree_=function(tree,addr){const node=tree.findGreatestLessThan(addr);return node&&this.isAddressBelongsTo_(addr,node)?node.value:null;};CodeMap.prototype.findEntryInLibraries=function(addr){const pageAddr=addr>>>CodeMap.PAGE_ALIGNMENT;if(pageAddr in this.pages_){return this.findInTree_(this.libraries_,addr);} -return undefined;};CodeMap.prototype.findEntry=function(addr){const pageAddr=addr>>>CodeMap.PAGE_ALIGNMENT;if(pageAddr in this.pages_){return this.findInTree_(this.statics_,addr)||this.findInTree_(this.libraries_,addr);} -const min=this.dynamics_.findMin();const max=this.dynamics_.findMax();if(max!==null&&addr<(max.key+max.value.size)&&addr>=min.key){const dynaEntry=this.findInTree_(this.dynamics_,addr);if(dynaEntry===null)return null;if(!dynaEntry.nameUpdated_){dynaEntry.name=this.dynamicsNameGen_.getName(dynaEntry.name);dynaEntry.nameUpdated_=true;} -return dynaEntry;} -return null;};CodeMap.prototype.findDynamicEntryByStartAddress=function(addr){const node=this.dynamics_.find(addr);return node?node.value:null;};CodeMap.prototype.getAllDynamicEntries=function(){return this.dynamics_.exportValues();};CodeMap.prototype.getAllDynamicEntriesWithAddresses=function(){return this.dynamics_.exportKeysAndValues();};CodeMap.prototype.getAllStaticEntries=function(){return this.statics_.exportValues();};CodeMap.prototype.getAllLibrariesEntries=function(){return this.libraries_.exportValues();};CodeMap.CodeState={COMPILED:0,OPTIMIZABLE:1,OPTIMIZED:2};CodeMap.CodeEntry=function(size,opt_name,opt_type){this.id=tr.b.GUID.allocateSimple();this.size=size;this.name_=opt_name||'';this.type=opt_type||'';this.nameUpdated_=false;};CodeMap.CodeEntry.prototype={__proto__:Object.prototype,get name(){return this.name_;},set name(value){this.name_=value;},toString(){this.name_+': '+this.size.toString(16);}};CodeMap.CodeEntry.TYPE={SHARED_LIB:'SHARED_LIB',CPP:'CPP'};CodeMap.DynamicFuncCodeEntry=function(size,type,func,state){CodeMap.CodeEntry.call(this,size,'',type);this.func=func;this.state=state;};CodeMap.DynamicFuncCodeEntry.STATE_PREFIX=['','~','*'];CodeMap.DynamicFuncCodeEntry.prototype={__proto__:CodeMap.CodeEntry.prototype,get name(){return CodeMap.DynamicFuncCodeEntry.STATE_PREFIX[this.state]+ -this.func.name;},set name(value){this.name_=value;},getRawName(){return this.func.getName();},isJSFunction(){return true;},toString(){return this.type+': '+this.name+': '+this.size.toString(16);}};CodeMap.FunctionEntry=function(name){CodeMap.CodeEntry.call(this,0,name);};CodeMap.FunctionEntry.prototype={__proto__:CodeMap.CodeEntry.prototype,get name(){let name=this.name_;if(name.length===0){name='';}else if(name.charAt(0)===' '){name=''+name;} -return name;},set name(value){this.name_=value;}};CodeMap.NameGenerator=function(){this.knownNames_={};};CodeMap.NameGenerator.prototype.getName=function(name){if(!(name in this.knownNames_)){this.knownNames_[name]=0;return name;} -const count=++this.knownNames_[name];return name+' {'+count+'}';};return{CodeMap,};});'use strict';tr.exportTo('tr.e.importer.v8',function(){function CsvParser(){} -CsvParser.CSV_FIELD_RE_=/^"((?:[^"]|"")*)"|([^,]*)/;CsvParser.DOUBLE_QUOTE_RE_=/""/g;CsvParser.prototype.parseLine=function(line){const fieldRe=CsvParser.CSV_FIELD_RE_;const doubleQuoteRe=CsvParser.DOUBLE_QUOTE_RE_;let pos=0;const endPos=line.length;const fields=[];if(endPos>0){do{const fieldMatch=fieldRe.exec(line.substr(pos));if(typeof fieldMatch[1]==='string'){const field=fieldMatch[1];pos+=field.length+3;fields.push(field.replace(doubleQuoteRe,'"'));}else{const field=fieldMatch[2];pos+=field.length+1;fields.push(field);}}while(pos<=endPos);} -return fields;};function LogReader(dispatchTable){this.dispatchTable_=dispatchTable;this.lineNum_=0;this.csvParser_=new CsvParser();} -LogReader.prototype.printError=function(str){};LogReader.prototype.processLogChunk=function(chunk){this.processLog_(chunk.split('\n'));};LogReader.prototype.processLogLine=function(line){this.processLog_([line]);};LogReader.prototype.processStack=function(pc,func,stack){const fullStack=func?[pc,func]:[pc];let prevFrame=pc;for(let i=0,n=stack.length;i=0){codeEntry.kind=-1;break;}} -this.code_map_.addLibrary(start,codeEntry);},processCppSymbol_(address,size,name){const codeEntry=new CodeEntry(size,name,CodeEntry.TYPE.CPP);codeEntry.kind=-1;this.code_map_.addStaticCode(address,codeEntry);},processTickEvent_(pc,startInUs,isExternalCallback,tosOrExternalCallback,vmstate,stack){const startInMs=tr.b.convertUnit(startInUs,tr.b.UnitPrefixScale.METRIC.MICRO,tr.b.UnitPrefixScale.METRIC.MILLI);function findChildWithEntryID(stackFrame,entryID){for(let i=0;i>2,g=(3&b)<<4|c>>4,h=(15&c)<<2|e>>6,i=63&e,isNaN(c)?h=i=64:isNaN(e)&&(i=64),j=j+d.charAt(f)+d.charAt(g)+d.charAt(h)+d.charAt(i);return j},c.decode=function(a){var b,c,e,f,g,h,i,j="",k=0;for(a=a.replace(/[^A-Za-z0-9\+\/\=]/g,"");k>4,c=(15&g)<<4|h>>2,e=(3&h)<<6|i,j+=String.fromCharCode(b),64!=h&&(j+=String.fromCharCode(c)),64!=i&&(j+=String.fromCharCode(e));return j}},{}],2:[function(a,b){"use strict";function c(){this.compressedSize=0,this.uncompressedSize=0,this.crc32=0,this.compressionMethod=null,this.compressedContent=null}c.prototype={getContent:function(){return null},getCompressedContent:function(){return null}},b.exports=c},{}],3:[function(a,b,c){"use strict";c.STORE={magic:"\x00\x00",compress:function(a){return a},uncompress:function(a){return a},compressInputType:null,uncompressInputType:null},c.DEFLATE=a("./flate")},{"./flate":8}],4:[function(a,b){"use strict";var c=a("./utils"),d=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];b.exports=function(a,b){if("undefined"==typeof a||!a.length)return 0;var e="string"!==c.getTypeOf(a);"undefined"==typeof b&&(b=0);var f=0,g=0,h=0;b=-1^b;for(var i=0,j=a.length;j>i;i++)h=e?a[i]:a.charCodeAt(i),g=255&(b^h),f=d[g],b=b>>>8^f;return-1^b}},{"./utils":21}],5:[function(a,b){"use strict";function c(){this.data=null,this.length=0,this.index=0}var d=a("./utils");c.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.lengtha)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var b,c=0;for(this.checkOffset(a),b=this.index+a-1;b>=this.index;b--)c=(c<<8)+this.byteAt(b);return this.index+=a,c},readString:function(a){return d.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date((a>>25&127)+1980,(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1)}},b.exports=c},{"./utils":21}],6:[function(a,b,c){"use strict";c.base64=!1,c.binary=!1,c.dir=!1,c.createFolders=!1,c.date=null,c.compression=null,c.comment=null},{}],7:[function(a,b,c){"use strict";var d=a("./utils");c.string2binary=function(a){return d.string2binary(a)},c.string2Uint8Array=function(a){return d.transformTo("uint8array",a)},c.uint8Array2String=function(a){return d.transformTo("string",a)},c.string2Blob=function(a){var b=d.transformTo("arraybuffer",a);return d.arrayBuffer2Blob(b)},c.arrayBuffer2Blob=function(a){return d.arrayBuffer2Blob(a)},c.transformTo=function(a,b){return d.transformTo(a,b)},c.getTypeOf=function(a){return d.getTypeOf(a)},c.checkSupport=function(a){return d.checkSupport(a)},c.MAX_VALUE_16BITS=d.MAX_VALUE_16BITS,c.MAX_VALUE_32BITS=d.MAX_VALUE_32BITS,c.pretty=function(a){return d.pretty(a)},c.findCompression=function(a){return d.findCompression(a)},c.isRegExp=function(a){return d.isRegExp(a)}},{"./utils":21}],8:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,e=a("pako");c.uncompressInputType=d?"uint8array":"array",c.compressInputType=d?"uint8array":"array",c.magic="\b\x00",c.compress=function(a){return e.deflateRaw(a)},c.uncompress=function(a){return e.inflateRaw(a)}},{pako:24}],9:[function(a,b){"use strict";function c(a,b){return this instanceof c?(this.files={},this.comment=null,this.root="",a&&this.load(a,b),void(this.clone=function(){var a=new c;for(var b in this)"function"!=typeof this[b]&&(a[b]=this[b]);return a})):new c(a,b)}var d=a("./base64");c.prototype=a("./object"),c.prototype.load=a("./load"),c.support=a("./support"),c.defaults=a("./defaults"),c.utils=a("./deprecatedPublicUtils"),c.base64={encode:function(a){return d.encode(a)},decode:function(a){return d.decode(a)}},c.compressions=a("./compressions"),b.exports=c},{"./base64":1,"./compressions":3,"./defaults":6,"./deprecatedPublicUtils":7,"./load":10,"./object":13,"./support":17}],10:[function(a,b){"use strict";var c=a("./base64"),d=a("./zipEntries");b.exports=function(a,b){var e,f,g,h;for(b=b||{},b.base64&&(a=c.decode(a)),f=new d(a,b),e=f.files,g=0;gc;c++)d+=String.fromCharCode(255&a),a>>>=8;return d},t=function(){var a,b,c={};for(a=0;a0?a.substring(0,b):""},x=function(a,b){return"/"!=a.slice(-1)&&(a+="/"),b="undefined"!=typeof b?b:!1,this.files[a]||v.call(this,a,null,{dir:!0,createFolders:b}),this.files[a]},y=function(a,b){var c,f=new j;return a._data instanceof j?(f.uncompressedSize=a._data.uncompressedSize,f.crc32=a._data.crc32,0===f.uncompressedSize||a.dir?(b=i.STORE,f.compressedContent="",f.crc32=0):a._data.compressionMethod===b.magic?f.compressedContent=a._data.getCompressedContent():(c=a._data.getContent(),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c)))):(c=p(a),(!c||0===c.length||a.dir)&&(b=i.STORE,c=""),f.uncompressedSize=c.length,f.crc32=e(c),f.compressedContent=b.compress(d.transformTo(b.compressInputType,c))),f.compressedSize=f.compressedContent.length,f.compressionMethod=b.magic,f},z=function(a,b,c,g){var h,i,j,k,m=(c.compressedContent,d.transformTo("string",l.utf8encode(b.name))),n=b.comment||"",o=d.transformTo("string",l.utf8encode(n)),p=m.length!==b.name.length,q=o.length!==n.length,r=b.options,t="",u="",v="";j=b._initialMetadata.dir!==b.dir?b.dir:r.dir,k=b._initialMetadata.date!==b.date?b.date:r.date,h=k.getHours(),h<<=6,h|=k.getMinutes(),h<<=5,h|=k.getSeconds()/2,i=k.getFullYear()-1980,i<<=4,i|=k.getMonth()+1,i<<=5,i|=k.getDate(),p&&(u=s(1,1)+s(e(m),4)+m,t+="up"+s(u.length,2)+u),q&&(v=s(1,1)+s(this.crc32(o),4)+o,t+="uc"+s(v.length,2)+v);var w="";w+="\n\x00",w+=p||q?"\x00\b":"\x00\x00",w+=c.compressionMethod,w+=s(h,2),w+=s(i,2),w+=s(c.crc32,4),w+=s(c.compressedSize,4),w+=s(c.uncompressedSize,4),w+=s(m.length,2),w+=s(t.length,2);var x=f.LOCAL_FILE_HEADER+w+m+t,y=f.CENTRAL_FILE_HEADER+"\x00"+w+s(o.length,2)+"\x00\x00\x00\x00"+(j===!0?"\x00\x00\x00":"\x00\x00\x00\x00")+s(g,4)+m+t+o;return{fileRecord:x,dirRecord:y,compressedObject:c}},A={load:function(){throw new Error("Load method is not defined. Is the file jszip-load.js included ?")},filter:function(a){var b,c,d,e,f=[];for(b in this.files)this.files.hasOwnProperty(b)&&(d=this.files[b],e=new r(d.name,d._data,t(d.options)),c=b.slice(this.root.length,b.length),b.slice(0,this.root.length)===this.root&&a(c,e)&&f.push(e));return f},file:function(a,b,c){if(1===arguments.length){if(d.isRegExp(a)){var e=a;return this.filter(function(a,b){return!b.dir&&e.test(a)})}return this.filter(function(b,c){return!c.dir&&b===a})[0]||null}return a=this.root+a,v.call(this,a,b,c),this},folder:function(a){if(!a)return this;if(d.isRegExp(a))return this.filter(function(b,c){return c.dir&&a.test(b)});var b=this.root+a,c=x.call(this,b),e=this.clone();return e.root=c.name,e},remove:function(a){a=this.root+a;var b=this.files[a];if(b||("/"!=a.slice(-1)&&(a+="/"),b=this.files[a]),b&&!b.dir)delete this.files[a];else for(var c=this.filter(function(b,c){return c.name.slice(0,a.length)===a}),d=0;d=0;--f)if(this.data[f]===b&&this.data[f+1]===c&&this.data[f+2]===d&&this.data[f+3]===e)return f;return-1},c.prototype.readData=function(a){if(this.checkOffset(a),0===a)return new Uint8Array(0);var b=this.data.subarray(this.index,this.index+a);return this.index+=a,b},b.exports=c},{"./dataReader":5}],19:[function(a,b){"use strict";var c=a("./utils"),d=function(a){this.data=new Uint8Array(a),this.index=0};d.prototype={append:function(a){0!==a.length&&(a=c.transformTo("uint8array",a),this.data.set(a,this.index),this.index+=a.length)},finalize:function(){return this.data}},b.exports=d},{"./utils":21}],20:[function(a,b,c){"use strict";for(var d=a("./utils"),e=a("./support"),f=a("./nodeBuffer"),g=new Array(256),h=0;256>h;h++)g[h]=h>=252?6:h>=248?5:h>=240?4:h>=224?3:h>=192?2:1;g[254]=g[254]=1;var i=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=e.uint8array?new Uint8Array(i):new Array(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},j=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+g[a[c]]>b?c:b},k=function(a){var b,c,e,f,h=a.length,i=new Array(2*h);for(c=0,b=0;h>b;)if(e=a[b++],128>e)i[c++]=e;else if(f=g[e],f>4)i[c++]=65533,b+=f-1;else{for(e&=2===f?31:3===f?15:7;f>1&&h>b;)e=e<<6|63&a[b++],f--;f>1?i[c++]=65533:65536>e?i[c++]=e:(e-=65536,i[c++]=55296|e>>10&1023,i[c++]=56320|1023&e)}return i.length!==c&&(i.subarray?i=i.subarray(0,c):i.length=c),d.applyFromCharCode(i)};c.utf8encode=function(a){return e.nodebuffer?f(a,"utf-8"):i(a)},c.utf8decode=function(a){if(e.nodebuffer)return d.transformTo("nodebuffer",a).toString("utf-8");a=d.transformTo(e.uint8array?"uint8array":"array",a);for(var b=[],c=0,f=a.length,g=65536;f>c;){var h=j(a,Math.min(c+g,f));b.push(e.uint8array?k(a.subarray(c,h)):k(a.slice(c,h))),c=h}return b.join("")}},{"./nodeBuffer":11,"./support":17,"./utils":21}],21:[function(a,b,c){"use strict";function d(a){return a}function e(a,b){for(var c=0;cg&&b>1;)try{d.push("array"===f||"nodebuffer"===f?String.fromCharCode.apply(null,a.slice(g,Math.min(g+b,e))):String.fromCharCode.apply(null,a.subarray(g,Math.min(g+b,e)))),g+=b}catch(i){b=Math.floor(b/2)}return d.join("")}function g(a,b){for(var c=0;cb?"0":"")+b.toString(16).toUpperCase();return d},c.findCompression=function(a){for(var b in i)if(i.hasOwnProperty(b)&&i[b].magic===a)return i[b];return null},c.isRegExp=function(a){return"[object RegExp]"===Object.prototype.toString.call(a)}},{"./compressions":3,"./nodeBuffer":11,"./support":17}],22:[function(a,b){"use strict";function c(a,b){this.files=[],this.loadOptions=b,a&&this.load(a)}var d=a("./stringReader"),e=a("./nodeBufferReader"),f=a("./uint8ArrayReader"),g=a("./utils"),h=a("./signature"),i=a("./zipEntry"),j=a("./support"),k=a("./object");c.prototype={checkSignature:function(a){var b=this.reader.readString(4);if(b!==a)throw new Error("Corrupted zip or bug : unexpected signature ("+g.pretty(b)+", expected "+g.pretty(a)+")")},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2),this.zipComment=this.reader.readString(this.zipCommentLength),this.zipComment=k.utf8decode(this.zipComment)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.versionMadeBy=this.reader.readString(2),this.versionNeeded=this.reader.readInt(2),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var a,b,c,d=this.zip64EndOfCentralSize-44,e=0;d>e;)a=this.reader.readInt(2),b=this.reader.readInt(4),c=this.reader.readString(b),this.zip64ExtensibleData[a]={id:a,length:b,value:c}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),this.disksCount>1)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var a,b;for(a=0;a0?b.windowBits=-b.windowBits:b.gzip&&b.windowBits>0&&b.windowBits<16&&(b.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=g.deflateInit2(this.strm,b.level,b.method,b.windowBits,b.memLevel,b.strategy);if(c!==n)throw new Error(j[c]);b.header&&g.deflateSetHeader(this.strm,b.header)};s.prototype.push=function(a,b){var c,d,e=this.strm,f=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?m:l,e.input="string"==typeof a?i.string2buf(a):a,e.next_in=0,e.avail_in=e.input.length;do{if(0===e.avail_out&&(e.output=new h.Buf8(f),e.next_out=0,e.avail_out=f),c=g.deflate(e,d),c!==o&&c!==n)return this.onEnd(c),this.ended=!0,!1;(0===e.avail_out||0===e.avail_in&&d===m)&&this.onData("string"===this.options.to?i.buf2binstring(h.shrinkBuf(e.output,e.next_out)):h.shrinkBuf(e.output,e.next_out))}while((e.avail_in>0||0===e.avail_out)&&c!==o);return d===m?(c=g.deflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===n):!0},s.prototype.onData=function(a){this.chunks.push(a)},s.prototype.onEnd=function(a){a===n&&(this.result="string"===this.options.to?this.chunks.join(""):h.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Deflate=s,c.deflate=d,c.deflateRaw=e,c.gzip=f},{"./utils/common":27,"./utils/strings":28,"./zlib/deflate.js":32,"./zlib/messages":37,"./zlib/zstream":39}],26:[function(a,b,c){"use strict";function d(a,b){var c=new m(b);if(c.push(a,!0),c.err)throw c.msg;return c.result}function e(a,b){return b=b||{},b.raw=!0,d(a,b)}var f=a("./zlib/inflate.js"),g=a("./utils/common"),h=a("./utils/strings"),i=a("./zlib/constants"),j=a("./zlib/messages"),k=a("./zlib/zstream"),l=a("./zlib/gzheader"),m=function(a){this.options=g.assign({chunkSize:16384,windowBits:0,to:""},a||{});var b=this.options;b.raw&&b.windowBits>=0&&b.windowBits<16&&(b.windowBits=-b.windowBits,0===b.windowBits&&(b.windowBits=-15)),!(b.windowBits>=0&&b.windowBits<16)||a&&a.windowBits||(b.windowBits+=32),b.windowBits>15&&b.windowBits<48&&0===(15&b.windowBits)&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new k,this.strm.avail_out=0;var c=f.inflateInit2(this.strm,b.windowBits);if(c!==i.Z_OK)throw new Error(j[c]);this.header=new l,f.inflateGetHeader(this.strm,this.header)};m.prototype.push=function(a,b){var c,d,e,j,k,l=this.strm,m=this.options.chunkSize;if(this.ended)return!1;d=b===~~b?b:b===!0?i.Z_FINISH:i.Z_NO_FLUSH,l.input="string"==typeof a?h.binstring2buf(a):a,l.next_in=0,l.avail_in=l.input.length;do{if(0===l.avail_out&&(l.output=new g.Buf8(m),l.next_out=0,l.avail_out=m),c=f.inflate(l,i.Z_NO_FLUSH),c!==i.Z_STREAM_END&&c!==i.Z_OK)return this.onEnd(c),this.ended=!0,!1;l.next_out&&(0===l.avail_out||c===i.Z_STREAM_END||0===l.avail_in&&d===i.Z_FINISH)&&("string"===this.options.to?(e=h.utf8border(l.output,l.next_out),j=l.next_out-e,k=h.buf2string(l.output,e),l.next_out=j,l.avail_out=m-j,j&&g.arraySet(l.output,l.output,e,j,0),this.onData(k)):this.onData(g.shrinkBuf(l.output,l.next_out)))}while(l.avail_in>0&&c!==i.Z_STREAM_END);return c===i.Z_STREAM_END&&(d=i.Z_FINISH),d===i.Z_FINISH?(c=f.inflateEnd(this.strm),this.onEnd(c),this.ended=!0,c===i.Z_OK):!0},m.prototype.onData=function(a){this.chunks.push(a)},m.prototype.onEnd=function(a){a===i.Z_OK&&(this.result="string"===this.options.to?this.chunks.join(""):g.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},c.Inflate=m,c.inflate=d,c.inflateRaw=e,c.ungzip=d},{"./utils/common":27,"./utils/strings":28,"./zlib/constants":30,"./zlib/gzheader":33,"./zlib/inflate.js":35,"./zlib/messages":37,"./zlib/zstream":39}],27:[function(a,b,c){"use strict";var d="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;c.assign=function(a){for(var b=Array.prototype.slice.call(arguments,1);b.length;){var c=b.shift();if(c){if("object"!=typeof c)throw new TypeError(c+"must be non-object");for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d])}}return a},c.shrinkBuf=function(a,b){return a.length===b?a:a.subarray?a.subarray(0,b):(a.length=b,a)};var e={arraySet:function(a,b,c,d,e){if(b.subarray&&a.subarray)return void a.set(b.subarray(c,c+d),e);for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){var b,c,d,e,f,g;for(d=0,b=0,c=a.length;c>b;b++)d+=a[b].length;for(g=new Uint8Array(d),e=0,b=0,c=a.length;c>b;b++)f=a[b],g.set(f,e),e+=f.length;return g}},f={arraySet:function(a,b,c,d,e){for(var f=0;d>f;f++)a[e+f]=b[c+f]},flattenChunks:function(a){return[].concat.apply([],a)}};c.setTyped=function(a){a?(c.Buf8=Uint8Array,c.Buf16=Uint16Array,c.Buf32=Int32Array,c.assign(c,e)):(c.Buf8=Array,c.Buf16=Array,c.Buf32=Array,c.assign(c,f))},c.setTyped(d)},{}],28:[function(a,b,c){"use strict";function d(a,b){if(65537>b&&(a.subarray&&g||!a.subarray&&f))return String.fromCharCode.apply(null,e.shrinkBuf(a,b));for(var c="",d=0;b>d;d++)c+=String.fromCharCode(a[d]);return c}var e=a("./common"),f=!0,g=!0;try{String.fromCharCode.apply(null,[0])}catch(h){f=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(h){g=!1}for(var i=new e.Buf8(256),j=0;256>j;j++)i[j]=j>=252?6:j>=248?5:j>=240?4:j>=224?3:j>=192?2:1;i[254]=i[254]=1,c.string2buf=function(a){var b,c,d,f,g,h=a.length,i=0;for(f=0;h>f;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),i+=128>c?1:2048>c?2:65536>c?3:4;for(b=new e.Buf8(i),g=0,f=0;i>g;f++)c=a.charCodeAt(f),55296===(64512&c)&&h>f+1&&(d=a.charCodeAt(f+1),56320===(64512&d)&&(c=65536+(c-55296<<10)+(d-56320),f++)),128>c?b[g++]=c:2048>c?(b[g++]=192|c>>>6,b[g++]=128|63&c):65536>c?(b[g++]=224|c>>>12,b[g++]=128|c>>>6&63,b[g++]=128|63&c):(b[g++]=240|c>>>18,b[g++]=128|c>>>12&63,b[g++]=128|c>>>6&63,b[g++]=128|63&c);return b},c.buf2binstring=function(a){return d(a,a.length)},c.binstring2buf=function(a){for(var b=new e.Buf8(a.length),c=0,d=b.length;d>c;c++)b[c]=a.charCodeAt(c);return b},c.buf2string=function(a,b){var c,e,f,g,h=b||a.length,j=new Array(2*h);for(e=0,c=0;h>c;)if(f=a[c++],128>f)j[e++]=f;else if(g=i[f],g>4)j[e++]=65533,c+=g-1;else{for(f&=2===g?31:3===g?15:7;g>1&&h>c;)f=f<<6|63&a[c++],g--;g>1?j[e++]=65533:65536>f?j[e++]=f:(f-=65536,j[e++]=55296|f>>10&1023,j[e++]=56320|1023&f)}return d(j,e)},c.utf8border=function(a,b){var c;for(b=b||a.length,b>a.length&&(b=a.length),c=b-1;c>=0&&128===(192&a[c]);)c--;return 0>c?b:0===c?b:c+i[a[c]]>b?c:b}},{"./common":27}],29:[function(a,b){"use strict";function c(a,b,c,d){for(var e=65535&a|0,f=a>>>16&65535|0,g=0;0!==c;){g=c>2e3?2e3:c,c-=g;do e=e+b[d++]|0,f=f+e|0;while(--g);e%=65521,f%=65521}return e|f<<16|0}b.exports=c},{}],30:[function(a,b){b.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],31:[function(a,b){"use strict";function c(){for(var a,b=[],c=0;256>c;c++){a=c;for(var d=0;8>d;d++)a=1&a?3988292384^a>>>1:a>>>1;b[c]=a}return b}function d(a,b,c,d){var f=e,g=d+c;a=-1^a;for(var h=d;g>h;h++)a=a>>>8^f[255&(a^b[h])];return-1^a}var e=c();b.exports=d},{}],32:[function(a,b,c){"use strict";function d(a,b){return a.msg=G[b],b}function e(a){return(a<<1)-(a>4?9:0)}function f(a){for(var b=a.length;--b>=0;)a[b]=0}function g(a){var b=a.state,c=b.pending;c>a.avail_out&&(c=a.avail_out),0!==c&&(C.arraySet(a.output,b.pending_buf,b.pending_out,c,a.next_out),a.next_out+=c,b.pending_out+=c,a.total_out+=c,a.avail_out-=c,b.pending-=c,0===b.pending&&(b.pending_out=0))}function h(a,b){D._tr_flush_block(a,a.block_start>=0?a.block_start:-1,a.strstart-a.block_start,b),a.block_start=a.strstart,g(a.strm)}function i(a,b){a.pending_buf[a.pending++]=b}function j(a,b){a.pending_buf[a.pending++]=b>>>8&255,a.pending_buf[a.pending++]=255&b}function k(a,b,c,d){var e=a.avail_in;return e>d&&(e=d),0===e?0:(a.avail_in-=e,C.arraySet(b,a.input,a.next_in,e,c),1===a.state.wrap?a.adler=E(a.adler,b,e,c):2===a.state.wrap&&(a.adler=F(a.adler,b,e,c)),a.next_in+=e,a.total_in+=e,e)}function l(a,b){var c,d,e=a.max_chain_length,f=a.strstart,g=a.prev_length,h=a.nice_match,i=a.strstart>a.w_size-jb?a.strstart-(a.w_size-jb):0,j=a.window,k=a.w_mask,l=a.prev,m=a.strstart+ib,n=j[f+g-1],o=j[f+g];a.prev_length>=a.good_match&&(e>>=2),h>a.lookahead&&(h=a.lookahead);do if(c=b,j[c+g]===o&&j[c+g-1]===n&&j[c]===j[f]&&j[++c]===j[f+1]){f+=2,c++;do;while(j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&j[++f]===j[++c]&&m>f);if(d=ib-(m-f),f=m-ib,d>g){if(a.match_start=b,g=d,d>=h)break;n=j[f+g-1],o=j[f+g]}}while((b=l[b&k])>i&&0!==--e);return g<=a.lookahead?g:a.lookahead}function m(a){var b,c,d,e,f,g=a.w_size;do{if(e=a.window_size-a.lookahead-a.strstart,a.strstart>=g+(g-jb)){C.arraySet(a.window,a.window,g,g,0),a.match_start-=g,a.strstart-=g,a.block_start-=g,c=a.hash_size,b=c;do d=a.head[--b],a.head[b]=d>=g?d-g:0;while(--c);c=g,b=c;do d=a.prev[--b],a.prev[b]=d>=g?d-g:0;while(--c);e+=g}if(0===a.strm.avail_in)break;if(c=k(a.strm,a.window,a.strstart+a.lookahead,e),a.lookahead+=c,a.lookahead+a.insert>=hb)for(f=a.strstart-a.insert,a.ins_h=a.window[f],a.ins_h=(a.ins_h<a.pending_buf_size-5&&(c=a.pending_buf_size-5);;){if(a.lookahead<=1){if(m(a),0===a.lookahead&&b===H)return sb;if(0===a.lookahead)break}a.strstart+=a.lookahead,a.lookahead=0;var d=a.block_start+c;if((0===a.strstart||a.strstart>=d)&&(a.lookahead=a.strstart-d,a.strstart=d,h(a,!1),0===a.strm.avail_out))return sb;if(a.strstart-a.block_start>=a.w_size-jb&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.strstart>a.block_start&&(h(a,!1),0===a.strm.avail_out)?sb:sb}function o(a,b){for(var c,d;;){if(a.lookahead=hb&&(a.ins_h=(a.ins_h<=hb)if(d=D._tr_tally(a,a.strstart-a.match_start,a.match_length-hb),a.lookahead-=a.match_length,a.match_length<=a.max_lazy_match&&a.lookahead>=hb){a.match_length--;do a.strstart++,a.ins_h=(a.ins_h<=hb&&(a.ins_h=(a.ins_h<4096)&&(a.match_length=hb-1)),a.prev_length>=hb&&a.match_length<=a.prev_length){e=a.strstart+a.lookahead-hb,d=D._tr_tally(a,a.strstart-1-a.prev_match,a.prev_length-hb),a.lookahead-=a.prev_length-1,a.prev_length-=2;do++a.strstart<=e&&(a.ins_h=(a.ins_h<=hb&&a.strstart>0&&(e=a.strstart-1,d=g[e],d===g[++e]&&d===g[++e]&&d===g[++e])){f=a.strstart+ib;do;while(d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&d===g[++e]&&f>e);a.match_length=ib-(f-e),a.match_length>a.lookahead&&(a.match_length=a.lookahead)}if(a.match_length>=hb?(c=D._tr_tally(a,1,a.match_length-hb),a.lookahead-=a.match_length,a.strstart+=a.match_length,a.match_length=0):(c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++),c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function r(a,b){for(var c;;){if(0===a.lookahead&&(m(a),0===a.lookahead)){if(b===H)return sb;break}if(a.match_length=0,c=D._tr_tally(a,0,a.window[a.strstart]),a.lookahead--,a.strstart++,c&&(h(a,!1),0===a.strm.avail_out))return sb}return a.insert=0,b===K?(h(a,!0),0===a.strm.avail_out?ub:vb):a.last_lit&&(h(a,!1),0===a.strm.avail_out)?sb:tb}function s(a){a.window_size=2*a.w_size,f(a.head),a.max_lazy_match=B[a.level].max_lazy,a.good_match=B[a.level].good_length,a.nice_match=B[a.level].nice_length,a.max_chain_length=B[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=hb-1,a.match_available=0,a.ins_h=0}function t(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Y,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(2*fb),this.dyn_dtree=new C.Buf16(2*(2*db+1)),this.bl_tree=new C.Buf16(2*(2*eb+1)),f(this.dyn_ltree),f(this.dyn_dtree),f(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16(gb+1),this.heap=new C.Buf16(2*cb+1),f(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*cb+1),f(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function u(a){var b;return a&&a.state?(a.total_in=a.total_out=0,a.data_type=X,b=a.state,b.pending=0,b.pending_out=0,b.wrap<0&&(b.wrap=-b.wrap),b.status=b.wrap?lb:qb,a.adler=2===b.wrap?0:1,b.last_flush=H,D._tr_init(b),M):d(a,O)}function v(a){var b=u(a);return b===M&&s(a.state),b}function w(a,b){return a&&a.state?2!==a.state.wrap?O:(a.state.gzhead=b,M):O}function x(a,b,c,e,f,g){if(!a)return O;var h=1;if(b===R&&(b=6),0>e?(h=0,e=-e):e>15&&(h=2,e-=16),1>f||f>Z||c!==Y||8>e||e>15||0>b||b>9||0>g||g>V)return d(a,O);8===e&&(e=9);var i=new t;return a.state=i,i.strm=a,i.wrap=h,i.gzhead=null,i.w_bits=e,i.w_size=1<>1,i.l_buf=3*i.lit_bufsize,i.level=b,i.strategy=g,i.method=c,v(a)}function y(a,b){return x(a,b,Y,$,_,W)}function z(a,b){var c,h,k,l;if(!a||!a.state||b>L||0>b)return a?d(a,O):O;if(h=a.state,!a.output||!a.input&&0!==a.avail_in||h.status===rb&&b!==K)return d(a,0===a.avail_out?Q:O);if(h.strm=a,c=h.last_flush,h.last_flush=b,h.status===lb)if(2===h.wrap)a.adler=0,i(h,31),i(h,139),i(h,8),h.gzhead?(i(h,(h.gzhead.text?1:0)+(h.gzhead.hcrc?2:0)+(h.gzhead.extra?4:0)+(h.gzhead.name?8:0)+(h.gzhead.comment?16:0)),i(h,255&h.gzhead.time),i(h,h.gzhead.time>>8&255),i(h,h.gzhead.time>>16&255),i(h,h.gzhead.time>>24&255),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,255&h.gzhead.os),h.gzhead.extra&&h.gzhead.extra.length&&(i(h,255&h.gzhead.extra.length),i(h,h.gzhead.extra.length>>8&255)),h.gzhead.hcrc&&(a.adler=F(a.adler,h.pending_buf,h.pending,0)),h.gzindex=0,h.status=mb):(i(h,0),i(h,0),i(h,0),i(h,0),i(h,0),i(h,9===h.level?2:h.strategy>=T||h.level<2?4:0),i(h,wb),h.status=qb);else{var m=Y+(h.w_bits-8<<4)<<8,n=-1;n=h.strategy>=T||h.level<2?0:h.level<6?1:6===h.level?2:3,m|=n<<6,0!==h.strstart&&(m|=kb),m+=31-m%31,h.status=qb,j(h,m),0!==h.strstart&&(j(h,a.adler>>>16),j(h,65535&a.adler)),a.adler=1}if(h.status===mb)if(h.gzhead.extra){for(k=h.pending;h.gzindex<(65535&h.gzhead.extra.length)&&(h.pending!==h.pending_buf_size||(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending!==h.pending_buf_size));)i(h,255&h.gzhead.extra[h.gzindex]),h.gzindex++;h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),h.gzindex===h.gzhead.extra.length&&(h.gzindex=0,h.status=nb)}else h.status=nb;if(h.status===nb)if(h.gzhead.name){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.gzindex=0,h.status=ob)}else h.status=ob;if(h.status===ob)if(h.gzhead.comment){k=h.pending;do{if(h.pending===h.pending_buf_size&&(h.gzhead.hcrc&&h.pending>k&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),g(a),k=h.pending,h.pending===h.pending_buf_size)){l=1;break}l=h.gzindexk&&(a.adler=F(a.adler,h.pending_buf,h.pending-k,k)),0===l&&(h.status=pb)}else h.status=pb;if(h.status===pb&&(h.gzhead.hcrc?(h.pending+2>h.pending_buf_size&&g(a),h.pending+2<=h.pending_buf_size&&(i(h,255&a.adler),i(h,a.adler>>8&255),a.adler=0,h.status=qb)):h.status=qb),0!==h.pending){if(g(a),0===a.avail_out)return h.last_flush=-1,M}else if(0===a.avail_in&&e(b)<=e(c)&&b!==K)return d(a,Q);if(h.status===rb&&0!==a.avail_in)return d(a,Q);if(0!==a.avail_in||0!==h.lookahead||b!==H&&h.status!==rb){var o=h.strategy===T?r(h,b):h.strategy===U?q(h,b):B[h.level].func(h,b);if((o===ub||o===vb)&&(h.status=rb),o===sb||o===ub)return 0===a.avail_out&&(h.last_flush=-1),M;if(o===tb&&(b===I?D._tr_align(h):b!==L&&(D._tr_stored_block(h,0,0,!1),b===J&&(f(h.head),0===h.lookahead&&(h.strstart=0,h.block_start=0,h.insert=0))),g(a),0===a.avail_out))return h.last_flush=-1,M}return b!==K?M:h.wrap<=0?N:(2===h.wrap?(i(h,255&a.adler),i(h,a.adler>>8&255),i(h,a.adler>>16&255),i(h,a.adler>>24&255),i(h,255&a.total_in),i(h,a.total_in>>8&255),i(h,a.total_in>>16&255),i(h,a.total_in>>24&255)):(j(h,a.adler>>>16),j(h,65535&a.adler)),g(a),h.wrap>0&&(h.wrap=-h.wrap),0!==h.pending?M:N)}function A(a){var b;return a&&a.state?(b=a.state.status,b!==lb&&b!==mb&&b!==nb&&b!==ob&&b!==pb&&b!==qb&&b!==rb?d(a,O):(a.state=null,b===qb?d(a,P):M)):O}var B,C=a("../utils/common"),D=a("./trees"),E=a("./adler32"),F=a("./crc32"),G=a("./messages"),H=0,I=1,J=3,K=4,L=5,M=0,N=1,O=-2,P=-3,Q=-5,R=-1,S=1,T=2,U=3,V=4,W=0,X=2,Y=8,Z=9,$=15,_=8,ab=29,bb=256,cb=bb+1+ab,db=30,eb=19,fb=2*cb+1,gb=15,hb=3,ib=258,jb=ib+hb+1,kb=32,lb=42,mb=69,nb=73,ob=91,pb=103,qb=113,rb=666,sb=1,tb=2,ub=3,vb=4,wb=3,xb=function(a,b,c,d,e){this.good_length=a,this.max_lazy=b,this.nice_length=c,this.max_chain=d,this.func=e};B=[new xb(0,0,0,0,n),new xb(4,4,8,4,o),new xb(4,5,16,8,o),new xb(4,6,32,32,o),new xb(4,4,16,16,p),new xb(8,16,32,32,p),new xb(8,16,128,128,p),new xb(8,32,128,256,p),new xb(32,128,258,1024,p),new xb(32,258,258,4096,p)],c.deflateInit=y,c.deflateInit2=x,c.deflateReset=v,c.deflateResetKeep=u,c.deflateSetHeader=w,c.deflate=z,c.deflateEnd=A,c.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":27,"./adler32":29,"./crc32":31,"./messages":37,"./trees":38}],33:[function(a,b){"use strict";function c(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}b.exports=c},{}],34:[function(a,b){"use strict";var c=30,d=12;b.exports=function(a,b){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C;e=a.state,f=a.next_in,B=a.input,g=f+(a.avail_in-5),h=a.next_out,C=a.output,i=h-(b-a.avail_out),j=h+(a.avail_out-257),k=e.dmax,l=e.wsize,m=e.whave,n=e.wnext,o=e.window,p=e.hold,q=e.bits,r=e.lencode,s=e.distcode,t=(1<q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,0===w)C[h++]=65535&v;else{if(!(16&w)){if(0===(64&w)){v=r[(65535&v)+(p&(1<q&&(p+=B[f++]<>>=w,q-=w),15>q&&(p+=B[f++]<>>24,p>>>=w,q-=w,w=v>>>16&255,!(16&w)){if(0===(64&w)){v=s[(65535&v)+(p&(1<q&&(p+=B[f++]<q&&(p+=B[f++]<k){a.msg="invalid distance too far back",e.mode=c;break a}if(p>>>=w,q-=w,w=h-i,y>w){if(w=y-w,w>m&&e.sane){a.msg="invalid distance too far back",e.mode=c;break a}if(z=0,A=o,0===n){if(z+=l-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}else if(w>n){if(z+=l+n-w,w-=n,x>w){x-=w;do C[h++]=o[z++];while(--w);if(z=0,x>n){w=n,x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}}}else if(z+=n-w,x>w){x-=w;do C[h++]=o[z++];while(--w);z=h-y,A=C}for(;x>2;)C[h++]=A[z++],C[h++]=A[z++],C[h++]=A[z++],x-=3;x&&(C[h++]=A[z++],x>1&&(C[h++]=A[z++]))}else{z=h-y;do C[h++]=C[z++],C[h++]=C[z++],C[h++]=C[z++],x-=3;while(x>2);x&&(C[h++]=C[z++],x>1&&(C[h++]=C[z++]))}break}}break}}while(g>f&&j>h);x=q>>3,f-=x,q-=x<<3,p&=(1<f?5+(g-f):5-(f-g),a.avail_out=j>h?257+(j-h):257-(h-j),e.hold=p,e.bits=q}},{}],35:[function(a,b,c){"use strict";function d(a){return(a>>>24&255)+(a>>>8&65280)+((65280&a)<<8)+((255&a)<<24)}function e(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(a){var b;return a&&a.state?(b=a.state,a.total_in=a.total_out=b.total=0,a.msg="",b.wrap&&(a.adler=1&b.wrap),b.mode=K,b.last=0,b.havedict=0,b.dmax=32768,b.head=null,b.hold=0,b.bits=0,b.lencode=b.lendyn=new r.Buf32(ob),b.distcode=b.distdyn=new r.Buf32(pb),b.sane=1,b.back=-1,C):F}function g(a){var b;return a&&a.state?(b=a.state,b.wsize=0,b.whave=0,b.wnext=0,f(a)):F}function h(a,b){var c,d;return a&&a.state?(d=a.state,0>b?(c=0,b=-b):(c=(b>>4)+1,48>b&&(b&=15)),b&&(8>b||b>15)?F:(null!==d.window&&d.wbits!==b&&(d.window=null),d.wrap=c,d.wbits=b,g(a))):F}function i(a,b){var c,d;return a?(d=new e,a.state=d,d.window=null,c=h(a,b),c!==C&&(a.state=null),c):F}function j(a){return i(a,rb)}function k(a){if(sb){var b;for(p=new r.Buf32(512),q=new r.Buf32(32),b=0;144>b;)a.lens[b++]=8;for(;256>b;)a.lens[b++]=9;for(;280>b;)a.lens[b++]=7;for(;288>b;)a.lens[b++]=8;for(v(x,a.lens,0,288,p,0,a.work,{bits:9}),b=0;32>b;)a.lens[b++]=5;v(y,a.lens,0,32,q,0,a.work,{bits:5}),sb=!1}a.lencode=p,a.lenbits=9,a.distcode=q,a.distbits=5}function l(a,b,c,d){var e,f=a.state;return null===f.window&&(f.wsize=1<=f.wsize?(r.arraySet(f.window,b,c-f.wsize,f.wsize,0),f.wnext=0,f.whave=f.wsize):(e=f.wsize-f.wnext,e>d&&(e=d),r.arraySet(f.window,b,c-d,e,f.wnext),d-=e,d?(r.arraySet(f.window,b,c-d,d,0),f.wnext=d,f.whave=f.wsize):(f.wnext+=e,f.wnext===f.wsize&&(f.wnext=0),f.whaven;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0),m=0,n=0,c.mode=L;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&m)<<8)+(m>>8))%31){a.msg="incorrect header check",c.mode=lb;break}if((15&m)!==J){a.msg="unknown compression method",c.mode=lb;break}if(m>>>=4,n-=4,wb=(15&m)+8,0===c.wbits)c.wbits=wb;else if(wb>c.wbits){a.msg="invalid window size",c.mode=lb;break}c.dmax=1<n;){if(0===i)break a;i--,m+=e[g++]<>8&1),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=M;case M:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,Bb[2]=m>>>16&255,Bb[3]=m>>>24&255,c.check=t(c.check,Bb,4,0)),m=0,n=0,c.mode=N;case N:for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>8),512&c.flags&&(Bb[0]=255&m,Bb[1]=m>>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0,c.mode=O;case O:if(1024&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>>8&255,c.check=t(c.check,Bb,2,0)),m=0,n=0}else c.head&&(c.head.extra=null);c.mode=P;case P:if(1024&c.flags&&(q=c.length,q>i&&(q=i),q&&(c.head&&(wb=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),r.arraySet(c.head.extra,e,g,q,wb)),512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,c.length-=q),c.length))break a;c.length=0,c.mode=Q;case Q:if(2048&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.name+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.name=null);c.length=0,c.mode=R;case R:if(4096&c.flags){if(0===i)break a;q=0;do wb=e[g+q++],c.head&&wb&&c.length<65536&&(c.head.comment+=String.fromCharCode(wb));while(wb&&i>q);if(512&c.flags&&(c.check=t(c.check,e,q,g)),i-=q,g+=q,wb)break a}else c.head&&(c.head.comment=null);c.mode=S;case S:if(512&c.flags){for(;16>n;){if(0===i)break a;i--,m+=e[g++]<>9&1,c.head.done=!0),a.adler=c.check=0,c.mode=V;break;case T:for(;32>n;){if(0===i)break a;i--,m+=e[g++]<>>=7&n,n-=7&n,c.mode=ib;break}for(;3>n;){if(0===i)break a;i--,m+=e[g++]<>>=1,n-=1,3&m){case 0:c.mode=X;break;case 1:if(k(c),c.mode=bb,b===B){m>>>=2,n-=2;break a}break;case 2:c.mode=$;break;case 3:a.msg="invalid block type",c.mode=lb}m>>>=2,n-=2;break;case X:for(m>>>=7&n,n-=7&n;32>n;){if(0===i)break a;i--,m+=e[g++]<>>16^65535)){a.msg="invalid stored block lengths",c.mode=lb;break}if(c.length=65535&m,m=0,n=0,c.mode=Y,b===B)break a;case Y:c.mode=Z;case Z:if(q=c.length){if(q>i&&(q=i),q>j&&(q=j),0===q)break a;r.arraySet(f,e,g,q,h),i-=q,g+=q,j-=q,h+=q,c.length-=q;break}c.mode=V;break;case $:for(;14>n;){if(0===i)break a;i--,m+=e[g++]<>>=5,n-=5,c.ndist=(31&m)+1,m>>>=5,n-=5,c.ncode=(15&m)+4,m>>>=4,n-=4,c.nlen>286||c.ndist>30){a.msg="too many length or distance symbols",c.mode=lb;break}c.have=0,c.mode=_;case _:for(;c.haven;){if(0===i)break a;i--,m+=e[g++]<>>=3,n-=3}for(;c.have<19;)c.lens[Cb[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,yb={bits:c.lenbits},xb=v(w,c.lens,0,19,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid code lengths set",c.mode=lb;break}c.have=0,c.mode=ab;case ab:for(;c.have>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<sb)m>>>=qb,n-=qb,c.lens[c.have++]=sb;else{if(16===sb){for(zb=qb+2;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,0===c.have){a.msg="invalid bit length repeat",c.mode=lb;break}wb=c.lens[c.have-1],q=3+(3&m),m>>>=2,n-=2}else if(17===sb){for(zb=qb+3;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=3+(7&m),m>>>=3,n-=3}else{for(zb=qb+7;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=qb,n-=qb,wb=0,q=11+(127&m),m>>>=7,n-=7}if(c.have+q>c.nlen+c.ndist){a.msg="invalid bit length repeat",c.mode=lb;break}for(;q--;)c.lens[c.have++]=wb}}if(c.mode===lb)break;if(0===c.lens[256]){a.msg="invalid code -- missing end-of-block",c.mode=lb;break}if(c.lenbits=9,yb={bits:c.lenbits},xb=v(x,c.lens,0,c.nlen,c.lencode,0,c.work,yb),c.lenbits=yb.bits,xb){a.msg="invalid literal/lengths set",c.mode=lb;break}if(c.distbits=6,c.distcode=c.distdyn,yb={bits:c.distbits},xb=v(y,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,yb),c.distbits=yb.bits,xb){a.msg="invalid distances set",c.mode=lb;break}if(c.mode=bb,b===B)break a;case bb:c.mode=cb;case cb:if(i>=6&&j>=258){a.next_out=h,a.avail_out=j,a.next_in=g,a.avail_in=i,c.hold=m,c.bits=n,u(a,p),h=a.next_out,f=a.output,j=a.avail_out,g=a.next_in,e=a.input,i=a.avail_in,m=c.hold,n=c.bits,c.mode===V&&(c.back=-1);break}for(c.back=0;Ab=c.lencode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,c.length=sb,0===rb){c.mode=hb;break}if(32&rb){c.back=-1,c.mode=V;break}if(64&rb){a.msg="invalid literal/length code",c.mode=lb;break}c.extra=15&rb,c.mode=db;case db:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=eb;case eb:for(;Ab=c.distcode[m&(1<>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=qb);){if(0===i)break a;i--,m+=e[g++]<>tb)],qb=Ab>>>24,rb=Ab>>>16&255,sb=65535&Ab,!(n>=tb+qb);){if(0===i)break a;i--,m+=e[g++]<>>=tb,n-=tb,c.back+=tb}if(m>>>=qb,n-=qb,c.back+=qb,64&rb){a.msg="invalid distance code",c.mode=lb;break}c.offset=sb,c.extra=15&rb,c.mode=fb;case fb:if(c.extra){for(zb=c.extra;zb>n;){if(0===i)break a;i--,m+=e[g++]<>>=c.extra,n-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){a.msg="invalid distance too far back",c.mode=lb;break}c.mode=gb;case gb:if(0===j)break a;if(q=p-j,c.offset>q){if(q=c.offset-q,q>c.whave&&c.sane){a.msg="invalid distance too far back",c.mode=lb;break}q>c.wnext?(q-=c.wnext,ob=c.wsize-q):ob=c.wnext-q,q>c.length&&(q=c.length),pb=c.window}else pb=f,ob=h-c.offset,q=c.length;q>j&&(q=j),j-=q,c.length-=q;do f[h++]=pb[ob++];while(--q);0===c.length&&(c.mode=cb);break;case hb:if(0===j)break a;f[h++]=c.length,j--,c.mode=cb;break;case ib:if(c.wrap){for(;32>n;){if(0===i)break a;i--,m|=e[g++]<n;){if(0===i)break a;i--,m+=e[g++]<=D;D++)P[D]=0;for(E=0;o>E;E++)P[b[n+E]]++;for(H=C,G=d;G>=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return p[q++]=20971520,p[q++]=20971520,s.bits=1,0;for(F=1;G>F&&0===P[F];F++);for(F>H&&(H=F),K=1,D=1;d>=D;D++)if(K<<=1,K-=P[D],0>K)return-1;if(K>0&&(a===g||1!==G))return-1;for(Q[1]=0,D=1;d>D;D++)Q[D+1]=Q[D]+P[D];for(E=0;o>E;E++)0!==b[n+E]&&(r[Q[b[n+E]]++]=E);if(a===g?(N=R=r,y=19):a===h?(N=j,O-=257,R=k,S-=257,y=256):(N=l,R=m,y=-1),M=0,E=0,D=F,x=q,I=H,J=0,v=-1,L=1<e||a===i&&L>f)return 1;for(var T=0;;){T++,z=D-J,r[E]y?(A=R[S+r[E]],B=N[O+r[E]]):(A=96,B=0),t=1<>J)+u]=z<<24|A<<16|B|0;while(0!==u);for(t=1<>=1;if(0!==t?(M&=t-1,M+=t):M=0,E++,0===--P[D]){if(D===G)break;D=b[n+r[E]]}if(D>H&&(M&w)!==v){for(0===J&&(J=H),x+=F,I=D-J,K=1<I+J&&(K-=P[I+J],!(0>=K));)I++,K<<=1;if(L+=1<e||a===i&&L>f)return 1;v=M&w,p[v]=H<<24|I<<16|x-q|0}}return 0!==M&&(p[x+M]=D-J<<24|64<<16|0),s.bits=H,0}},{"../utils/common":27}],37:[function(a,b){"use strict";b.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],38:[function(a,b,c){"use strict";function d(a){for(var b=a.length;--b>=0;)a[b]=0}function e(a){return 256>a?gb[a]:gb[256+(a>>>7)]}function f(a,b){a.pending_buf[a.pending++]=255&b,a.pending_buf[a.pending++]=b>>>8&255}function g(a,b,c){a.bi_valid>V-c?(a.bi_buf|=b<>V-a.bi_valid,a.bi_valid+=c-V):(a.bi_buf|=b<>>=1,c<<=1;while(--b>0);return c>>>1}function j(a){16===a.bi_valid?(f(a,a.bi_buf),a.bi_buf=0,a.bi_valid=0):a.bi_valid>=8&&(a.pending_buf[a.pending++]=255&a.bi_buf,a.bi_buf>>=8,a.bi_valid-=8)}function k(a,b){var c,d,e,f,g,h,i=b.dyn_tree,j=b.max_code,k=b.stat_desc.static_tree,l=b.stat_desc.has_stree,m=b.stat_desc.extra_bits,n=b.stat_desc.extra_base,o=b.stat_desc.max_length,p=0;for(f=0;U>=f;f++)a.bl_count[f]=0;for(i[2*a.heap[a.heap_max]+1]=0,c=a.heap_max+1;T>c;c++)d=a.heap[c],f=i[2*i[2*d+1]+1]+1,f>o&&(f=o,p++),i[2*d+1]=f,d>j||(a.bl_count[f]++,g=0,d>=n&&(g=m[d-n]),h=i[2*d],a.opt_len+=h*(f+g),l&&(a.static_len+=h*(k[2*d+1]+g)));if(0!==p){do{for(f=o-1;0===a.bl_count[f];)f--;a.bl_count[f]--,a.bl_count[f+1]+=2,a.bl_count[o]--,p-=2}while(p>0);for(f=o;0!==f;f--)for(d=a.bl_count[f];0!==d;)e=a.heap[--c],e>j||(i[2*e+1]!==f&&(a.opt_len+=(f-i[2*e+1])*i[2*e],i[2*e+1]=f),d--)}}function l(a,b,c){var d,e,f=new Array(U+1),g=0;for(d=1;U>=d;d++)f[d]=g=g+c[d-1]<<1;for(e=0;b>=e;e++){var h=a[2*e+1];0!==h&&(a[2*e]=i(f[h]++,h))}}function m(){var a,b,c,d,e,f=new Array(U+1);for(c=0,d=0;O-1>d;d++)for(ib[d]=c,a=0;a<1<<_[d];a++)hb[c++]=d;for(hb[c-1]=d,e=0,d=0;16>d;d++)for(jb[d]=e,a=0;a<1<>=7;R>d;d++)for(jb[d]=e<<7,a=0;a<1<=b;b++)f[b]=0;for(a=0;143>=a;)eb[2*a+1]=8,a++,f[8]++;for(;255>=a;)eb[2*a+1]=9,a++,f[9]++;for(;279>=a;)eb[2*a+1]=7,a++,f[7]++;for(;287>=a;)eb[2*a+1]=8,a++,f[8]++;for(l(eb,Q+1,f),a=0;R>a;a++)fb[2*a+1]=5,fb[2*a]=i(a,5);kb=new nb(eb,_,P+1,Q,U),lb=new nb(fb,ab,0,R,U),mb=new nb(new Array(0),bb,0,S,W)}function n(a){var b;for(b=0;Q>b;b++)a.dyn_ltree[2*b]=0;for(b=0;R>b;b++)a.dyn_dtree[2*b]=0;for(b=0;S>b;b++)a.bl_tree[2*b]=0;a.dyn_ltree[2*X]=1,a.opt_len=a.static_len=0,a.last_lit=a.matches=0}function o(a){a.bi_valid>8?f(a,a.bi_buf):a.bi_valid>0&&(a.pending_buf[a.pending++]=a.bi_buf),a.bi_buf=0,a.bi_valid=0}function p(a,b,c,d){o(a),d&&(f(a,c),f(a,~c)),E.arraySet(a.pending_buf,a.window,b,c,a.pending),a.pending+=c}function q(a,b,c,d){var e=2*b,f=2*c;return a[e]c;c++)0!==f[2*c]?(a.heap[++a.heap_len]=j=c,a.depth[c]=0):f[2*c+1]=0;for(;a.heap_len<2;)e=a.heap[++a.heap_len]=2>j?++j:0,f[2*e]=1,a.depth[e]=0,a.opt_len--,h&&(a.static_len-=g[2*e+1]);for(b.max_code=j,c=a.heap_len>>1;c>=1;c--)r(a,f,c);e=i;do c=a.heap[1],a.heap[1]=a.heap[a.heap_len--],r(a,f,1),d=a.heap[1],a.heap[--a.heap_max]=c,a.heap[--a.heap_max]=d,f[2*e]=f[2*c]+f[2*d],a.depth[e]=(a.depth[c]>=a.depth[d]?a.depth[c]:a.depth[d])+1,f[2*c+1]=f[2*d+1]=e,a.heap[1]=e++,r(a,f,1);while(a.heap_len>=2);a.heap[--a.heap_max]=a.heap[1],k(a,b),l(f,j,a.bl_count)}function u(a,b,c){var d,e,f=-1,g=b[1],h=0,i=7,j=4;for(0===g&&(i=138,j=3),b[2*(c+1)+1]=65535,d=0;c>=d;d++)e=g,g=b[2*(d+1)+1],++hh?a.bl_tree[2*e]+=h:0!==e?(e!==f&&a.bl_tree[2*e]++,a.bl_tree[2*Y]++):10>=h?a.bl_tree[2*Z]++:a.bl_tree[2*$]++,h=0,f=e,0===g?(i=138,j=3):e===g?(i=6,j=3):(i=7,j=4))}function v(a,b,c){var d,e,f=-1,i=b[1],j=0,k=7,l=4;for(0===i&&(k=138,l=3),d=0;c>=d;d++)if(e=i,i=b[2*(d+1)+1],!(++jj){do h(a,e,a.bl_tree);while(0!==--j)}else 0!==e?(e!==f&&(h(a,e,a.bl_tree),j--),h(a,Y,a.bl_tree),g(a,j-3,2)):10>=j?(h(a,Z,a.bl_tree),g(a,j-3,3)):(h(a,$,a.bl_tree),g(a,j-11,7));j=0,f=e,0===i?(k=138,l=3):e===i?(k=6,l=3):(k=7,l=4)}}function w(a){var b;for(u(a,a.dyn_ltree,a.l_desc.max_code),u(a,a.dyn_dtree,a.d_desc.max_code),t(a,a.bl_desc),b=S-1;b>=3&&0===a.bl_tree[2*cb[b]+1];b--);return a.opt_len+=3*(b+1)+5+5+4,b}function x(a,b,c,d){var e;for(g(a,b-257,5),g(a,c-1,5),g(a,d-4,4),e=0;d>e;e++)g(a,a.bl_tree[2*cb[e]+1],3);v(a,a.dyn_ltree,b-1),v(a,a.dyn_dtree,c-1)}function y(a){var b,c=4093624447;for(b=0;31>=b;b++,c>>>=1)if(1&c&&0!==a.dyn_ltree[2*b])return G;if(0!==a.dyn_ltree[18]||0!==a.dyn_ltree[20]||0!==a.dyn_ltree[26])return H;for(b=32;P>b;b++)if(0!==a.dyn_ltree[2*b])return H;return G}function z(a){pb||(m(),pb=!0),a.l_desc=new ob(a.dyn_ltree,kb),a.d_desc=new ob(a.dyn_dtree,lb),a.bl_desc=new ob(a.bl_tree,mb),a.bi_buf=0,a.bi_valid=0,n(a)}function A(a,b,c,d){g(a,(J<<1)+(d?1:0),3),p(a,b,c,!0)}function B(a){g(a,K<<1,3),h(a,X,eb),j(a)}function C(a,b,c,d){var e,f,h=0;a.level>0?(a.strm.data_type===I&&(a.strm.data_type=y(a)),t(a,a.l_desc),t(a,a.d_desc),h=w(a),e=a.opt_len+3+7>>>3,f=a.static_len+3+7>>>3,e>=f&&(e=f)):e=f=c+5,e>=c+4&&-1!==b?A(a,b,c,d):a.strategy===F||f===e?(g(a,(K<<1)+(d?1:0),3),s(a,eb,fb)):(g(a,(L<<1)+(d?1:0),3),x(a,a.l_desc.max_code+1,a.d_desc.max_code+1,h+1),s(a,a.dyn_ltree,a.dyn_dtree)),n(a),d&&o(a)}function D(a,b,c){return a.pending_buf[a.d_buf+2*a.last_lit]=b>>>8&255,a.pending_buf[a.d_buf+2*a.last_lit+1]=255&b,a.pending_buf[a.l_buf+a.last_lit]=255&c,a.last_lit++,0===b?a.dyn_ltree[2*c]++:(a.matches++,b--,a.dyn_ltree[2*(hb[c]+P+1)]++,a.dyn_dtree[2*e(b)]++),a.last_lit===a.lit_bufsize-1}var E=a("../utils/common"),F=4,G=0,H=1,I=2,J=0,K=1,L=2,M=3,N=258,O=29,P=256,Q=P+1+O,R=30,S=19,T=2*Q+1,U=15,V=16,W=7,X=256,Y=16,Z=17,$=18,_=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],ab=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],bb=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],cb=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],db=512,eb=new Array(2*(Q+2));d(eb);var fb=new Array(2*R);d(fb);var gb=new Array(db);d(gb);var hb=new Array(N-M+1);d(hb);var ib=new Array(O);d(ib);var jb=new Array(R);d(jb);var kb,lb,mb,nb=function(a,b,c,d,e){this.static_tree=a,this.extra_bits=b,this.extra_base=c,this.elems=d,this.max_length=e,this.has_stree=a&&a.length},ob=function(a,b){this.dyn_tree=a,this.max_code=0,this.stat_desc=b},pb=!1;c._tr_init=z,c._tr_stored_block=A,c._tr_flush_block=C,c._tr_tally=D,c._tr_align=B},{"../utils/common":27}],39:[function(a,b){"use strict";function c(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}b.exports=c},{}]},{},[9])(9)});'use strict';if(tr.isVinn){global.JSZip=global.window.JSZip;global.window=undefined;}else if(tr.isNode){const jsZipAbsPath=HTMLImportsLoader.hrefToAbsolutePath('/jszip.min.js');const jsZipModule=require(jsZipAbsPath);global.JSZip=jsZipModule;}'use strict';tr.exportTo('tr.e.importer',function(){function ZipImporter(model,eventData){if(eventData instanceof ArrayBuffer){eventData=new Uint8Array(eventData);} -this.model_=model;this.eventData_=eventData;} -ZipImporter.canImport=function(eventData){let header;if(eventData instanceof ArrayBuffer){header=new Uint8Array(eventData.slice(0,2));}else if(typeof(eventData)==='string'||eventData instanceof String){header=[eventData.charCodeAt(0),eventData.charCodeAt(1)];}else{return false;} -return header[0]==='P'.charCodeAt(0)&&header[1]==='K'.charCodeAt(0);};ZipImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'ZipImporter';},isTraceDataContainer(){return true;},extractSubtraces(){const zip=new JSZip(this.eventData_);const subtraces=[];for(const idx in zip.files){subtraces.push(zip.files[idx].asBinary());} -return subtraces;}};tr.importer.Importer.register(ZipImporter);return{ZipImporter,};});'use strict';tr.exportTo('tr.model',function(){function HeapEntry(heapDump,leafStackFrame,objectTypeName,size,count,valuesAreTotals){this.heapDump=heapDump;this.leafStackFrame=leafStackFrame;this.objectTypeName=objectTypeName;this.size=size;this.count=count;this.valuesAreTotals=valuesAreTotals;} -function HeapDump(processMemoryDump,allocatorName,isComplete){this.processMemoryDump=processMemoryDump;this.allocatorName=allocatorName;this.isComplete=isComplete;this.entries=[];} -HeapDump.prototype={addEntry(leafStackFrame,objectTypeName,size,count,opt_valuesAreTotals){if(opt_valuesAreTotals===undefined)opt_valuesAreTotals=true;const valuesAreTotals=opt_valuesAreTotals;const entry=new HeapEntry(this,leafStackFrame,objectTypeName,size,count,valuesAreTotals);this.entries.push(entry);return entry;}};return{HeapEntry,HeapDump,};});'use strict';tr.exportTo('tr.e.importer',function(){function HeapDumpTraceEventImporter(heapProfileExpander,stackFrames,processMemoryDump,idPrefix,model){this.expander=heapProfileExpander;this.stackFrames=stackFrames;this.processMemoryDump=processMemoryDump;this.idPrefix=idPrefix;this.model=model;} -HeapDumpTraceEventImporter.prototype={getLeafStackFrame(stackFrameId){if(stackFrameId==='')return undefined;const parentId=this.idPrefix+stackFrameId;const id=parentId+':self';if(!this.stackFrames[id]){const parentStackFrame=this.stackFrames[parentId];const stackFrame=new tr.model.StackFrame(parentStackFrame,id,'',undefined);this.model.addStackFrame(stackFrame);} -return this.stackFrames[id];},parseEntry(entry,heapDump){const size=entry.size;const count=entry.count;const leafStackFrame=this.getLeafStackFrame(entry.node.id);const objectTypeName=entry.type.name;const valuesAreTotals=false;if(objectTypeName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing object type name (ID '+typeId+')',});} -heapDump.addEntry(leafStackFrame,objectTypeName,size,count,valuesAreTotals);},parse(){const heapDumps={};const inflated=this.expander.inflated;for(const[allocatorName,entries]of Object.entries(inflated)){const heapDump=new tr.model.HeapDump(this.processMemoryDump,allocatorName);for(const entry of entries){this.parseEntry(entry,heapDump);} -heapDump.isComplete=true;heapDumps[allocatorName]=heapDump;} -return heapDumps;},};return{HeapDumpTraceEventImporter,};});'use strict';tr.exportTo('tr.e.importer',function(){function LegacyHeapDumpTraceEventImporter(model,processMemoryDump,processObjectTypeNameMap,idPrefix,dumpId,rawHeapDumps){this.model_=model;this.processObjectTypeNameMap_=processObjectTypeNameMap;this.idPrefix_=idPrefix;this.processMemoryDump_=processMemoryDump;this.pid_=this.processMemoryDump_.process.pid;this.dumpId_=dumpId;this.rawHeapDumps_=rawHeapDumps;} -LegacyHeapDumpTraceEventImporter.prototype={parseRawHeapDump(rawHeapDump,allocatorName){const model=this.model_;const processMemoryDump=this.processMemoryDump_;const heapDump=new tr.model.HeapDump(processMemoryDump,allocatorName);const entries=rawHeapDump.entries;if(entries===undefined||entries.length===0){this.model_.importWarning({type:'memory_dump_parse_error',message:'No heap entries in a '+allocatorName+' heap dump for PID='+this.pid_+' and dump ID='+this.dumpId_+'.'});return undefined;} -const isOldFormat=entries[0].bt===undefined;if(!isOldFormat&&this.processObjectTypeNameMap_===undefined){return undefined;} -for(let i=0;i',undefined);model.addStackFrame(leafStackFrame);}}}else{if(leafStackFrameIndex===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing stack frame ID of heap entry '+i+' (size '+size+') in a '+allocatorName+' heap dump for PID='+this.pid_+'.'});continue;} -const leafStackFrameId=this.idPrefix_+leafStackFrameIndex;if(leafStackFrameIndex===''){leafStackFrame=undefined;}else{leafStackFrame=model.stackFrames[leafStackFrameId];if(leafStackFrame===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing leaf stack frame (ID '+leafStackFrameId+') of heap entry '+i+' (size '+size+') in a '+ -allocatorName+' heap dump for PID='+this.pid_+'.'});continue;}}} -const objectTypeId=entry.type;let objectTypeName;if(objectTypeId===undefined){objectTypeName=undefined;}else if(this.processObjectTypeNameMap_===undefined){continue;}else{objectTypeName=this.processObjectTypeNameMap_[objectTypeId];if(objectTypeName===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Missing object type name (ID '+objectTypeId+') of heap entry '+i+' (size '+size+') in a '+ -allocatorName+' heap dump for PID='+this.pid_+'.'});continue;}} -const count=entry.count===undefined?undefined:parseInt(entry.count,16);heapDump.addEntry(leafStackFrame,objectTypeName,size,count);} -return heapDump;},parse(){const heapDumps={};for(const allocatorName in this.rawHeapDumps_){const rawHeapDump=this.rawHeapDumps_[allocatorName];const heapDump=this.parseRawHeapDump(rawHeapDump,allocatorName);if(heapDump!==undefined&&heapDump.entries.length>0){heapDumps[allocatorName]=heapDump;}} -return heapDumps;},};return{LegacyHeapDumpTraceEventImporter,};});'use strict';if(tr.isHeadless){global.window={};} -(function(window,Object,Array,Error,JSON,undefined){var partialComplete=varArgs(function(fn,args){var numBoundArgs=args.length;return varArgs(function(callArgs){for(var i=0;iMAX_BUFFER_LENGTH){emitError("Max buffer length exceeded: textNode");maxActual=Math.max(maxActual,textNode.length);} -if(numberNode.length>MAX_BUFFER_LENGTH){emitError("Max buffer length exceeded: numberNode");maxActual=Math.max(maxActual,numberNode.length);} -bufferCheckPosition=(MAX_BUFFER_LENGTH-maxActual) -+position;} -eventBus(STREAM_DATA).on(handleData);eventBus(STREAM_END).on(handleStreamEnd);function emitError(errorString){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;} -latestError=Error(errorString+"\nLn: "+line+"\nCol: "+column+"\nChr: "+c);emitFail(errorReport(undefined,undefined,latestError));} -function handleStreamEnd(){if(state==BEGIN){emitValueOpen({});emitValueClose();closed=true;return;} -if(state!==VALUE||depth!==0) -emitError("Unexpected end");if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;} -closed=true;} -function whitespace(c){return c=='\r'||c=='\n'||c==' '||c=='\t';} -function handleData(chunk){if(latestError) -return;if(closed){return emitError("Cannot write after close");} -var i=0;c=chunk[0];while(c){p=c;c=chunk[i++];if(!c)break;position++;if(c=="\n"){line++;column=0;}else column++;switch(state){case BEGIN:if(c==="{")state=OPEN_OBJECT;else if(c==="[")state=OPEN_ARRAY;else if(!whitespace(c)) -return emitError("Non-whitespace before {[.");continue;case OPEN_KEY:case OPEN_OBJECT:if(whitespace(c))continue;if(state===OPEN_KEY)stack.push(CLOSE_KEY);else{if(c==='}'){emitValueOpen({});emitValueClose();state=stack.pop()||VALUE;continue;}else stack.push(CLOSE_OBJECT);} -if(c==='"') -state=STRING;else -return emitError("Malformed object key should start with \" ");continue;case CLOSE_KEY:case CLOSE_OBJECT:if(whitespace(c))continue;if(c===':'){if(state===CLOSE_OBJECT){stack.push(CLOSE_OBJECT);if(textNode!==undefined){emitValueOpen({});emitSaxKey(textNode);textNode=undefined;} -depth++;}else{if(textNode!==undefined){emitSaxKey(textNode);textNode=undefined;}} -state=VALUE;}else if(c==='}'){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;} -emitValueClose();depth--;state=stack.pop()||VALUE;}else if(c===','){if(state===CLOSE_OBJECT) -stack.push(CLOSE_OBJECT);if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;} -state=OPEN_KEY;}else -return emitError('Bad object');continue;case OPEN_ARRAY:case VALUE:if(whitespace(c))continue;if(state===OPEN_ARRAY){emitValueOpen([]);depth++;state=VALUE;if(c===']'){emitValueClose();depth--;state=stack.pop()||VALUE;continue;}else{stack.push(CLOSE_ARRAY);}} -if(c==='"')state=STRING;else if(c==='{')state=OPEN_OBJECT;else if(c==='[')state=OPEN_ARRAY;else if(c==='t')state=TRUE;else if(c==='f')state=FALSE;else if(c==='n')state=NULL;else if(c==='-'){numberNode+=c;}else if(c==='0'){numberNode+=c;state=NUMBER_DIGIT;}else if('123456789'.indexOf(c)!==-1){numberNode+=c;state=NUMBER_DIGIT;}else -return emitError("Bad value");continue;case CLOSE_ARRAY:if(c===','){stack.push(CLOSE_ARRAY);if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;} -state=VALUE;}else if(c===']'){if(textNode!==undefined){emitValueOpen(textNode);emitValueClose();textNode=undefined;} -emitValueClose();depth--;state=stack.pop()||VALUE;}else if(whitespace(c)) -continue;else -return emitError('Bad array');continue;case STRING:if(textNode===undefined){textNode="";} -var starti=i-1;STRING_BIGLOOP:while(true){while(unicodeI>0){unicodeS+=c;c=chunk.charAt(i++);if(unicodeI===4){textNode+=String.fromCharCode(parseInt(unicodeS,16));unicodeI=0;starti=i-1;}else{unicodeI++;} -if(!c)break STRING_BIGLOOP;} -if(c==='"'&&!slashed){state=stack.pop()||VALUE;textNode+=chunk.substring(starti,i-1);break;} -if(c==='\\'&&!slashed){slashed=true;textNode+=chunk.substring(starti,i-1);c=chunk.charAt(i++);if(!c)break;} -if(slashed){slashed=false;if(c==='n'){textNode+='\n';} -else if(c==='r'){textNode+='\r';} -else if(c==='t'){textNode+='\t';} -else if(c==='f'){textNode+='\f';} -else if(c==='b'){textNode+='\b';} -else if(c==='u'){unicodeI=1;unicodeS='';}else{textNode+=c;} -c=chunk.charAt(i++);starti=i-1;if(!c)break;else continue;} -stringTokenPattern.lastIndex=i;var reResult=stringTokenPattern.exec(chunk);if(!reResult){i=chunk.length+1;textNode+=chunk.substring(starti,i-1);break;} -i=reResult.index+1;c=chunk.charAt(reResult.index);if(!c){textNode+=chunk.substring(starti,i-1);break;}} -continue;case TRUE:if(!c)continue;if(c==='r')state=TRUE2;else -return emitError('Invalid true started with t'+c);continue;case TRUE2:if(!c)continue;if(c==='u')state=TRUE3;else -return emitError('Invalid true started with tr'+c);continue;case TRUE3:if(!c)continue;if(c==='e'){emitValueOpen(true);emitValueClose();state=stack.pop()||VALUE;}else -return emitError('Invalid true started with tru'+c);continue;case FALSE:if(!c)continue;if(c==='a')state=FALSE2;else -return emitError('Invalid false started with f'+c);continue;case FALSE2:if(!c)continue;if(c==='l')state=FALSE3;else -return emitError('Invalid false started with fa'+c);continue;case FALSE3:if(!c)continue;if(c==='s')state=FALSE4;else -return emitError('Invalid false started with fal'+c);continue;case FALSE4:if(!c)continue;if(c==='e'){emitValueOpen(false);emitValueClose();state=stack.pop()||VALUE;}else -return emitError('Invalid false started with fals'+c);continue;case NULL:if(!c)continue;if(c==='u')state=NULL2;else -return emitError('Invalid null started with n'+c);continue;case NULL2:if(!c)continue;if(c==='l')state=NULL3;else -return emitError('Invalid null started with nu'+c);continue;case NULL3:if(!c)continue;if(c==='l'){emitValueOpen(null);emitValueClose();state=stack.pop()||VALUE;}else -return emitError('Invalid null started with nul'+c);continue;case NUMBER_DECIMAL_POINT:if(c==='.'){numberNode+=c;state=NUMBER_DIGIT;}else -return emitError('Leading zero not followed by .');continue;case NUMBER_DIGIT:if('0123456789'.indexOf(c)!==-1)numberNode+=c;else if(c==='.'){if(numberNode.indexOf('.')!==-1) -return emitError('Invalid number has two dots');numberNode+=c;}else if(c==='e'||c==='E'){if(numberNode.indexOf('e')!==-1||numberNode.indexOf('E')!==-1) -return emitError('Invalid number has two exponential');numberNode+=c;}else if(c==="+"||c==="-"){if(!(p==='e'||p==='E')) -return emitError('Invalid symbol in number');numberNode+=c;}else{if(numberNode){emitValueOpen(parseFloat(numberNode));emitValueClose();numberNode="";} -i--;state=stack.pop()||VALUE;} -continue;default:return emitError("Unknown state: "+state);}} -if(position>=bufferCheckPosition) -checkBufferLength();}} -function ascentManager(oboeBus,handlers){"use strict";var listenerId={},ascent;function stateAfter(handler){return function(param){ascent=handler(ascent,param);}} -for(var eventName in handlers){oboeBus(eventName).on(stateAfter(handlers[eventName]),listenerId);} -oboeBus(NODE_SWAP).on(function(newNode){var oldHead=head(ascent),key=keyOf(oldHead),ancestors=tail(ascent),parentNode;if(ancestors){parentNode=nodeOf(head(ancestors));parentNode[key]=newNode;}});oboeBus(NODE_DROP).on(function(){var oldHead=head(ascent),key=keyOf(oldHead),ancestors=tail(ascent),parentNode;if(ancestors){parentNode=nodeOf(head(ancestors));delete parentNode[key];}});oboeBus(ABORTING).on(function(){for(var eventName in handlers){oboeBus(eventName).un(listenerId);}});} -function parseResponseHeaders(headerStr){var headers={};headerStr&&headerStr.split('\u000d\u000a').forEach(function(headerPair){var index=headerPair.indexOf('\u003a\u0020');headers[headerPair.substring(0,index)]=headerPair.substring(index+2);});return headers;} -function isCrossOrigin(pageLocation,ajaxHost){function defaultPort(protocol){return{'http:':80,'https:':443}[protocol];} -function portOf(location){return location.port||defaultPort(location.protocol||pageLocation.protocol);} -return!!((ajaxHost.protocol&&(ajaxHost.protocol!=pageLocation.protocol))||(ajaxHost.host&&(ajaxHost.host!=pageLocation.host))||(ajaxHost.host&&(portOf(ajaxHost)!=portOf(pageLocation))));} -function parseUrlOrigin(url){var URL_HOST_PATTERN=/(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/,urlHostMatch=URL_HOST_PATTERN.exec(url)||[];return{protocol:urlHostMatch[1]||'',host:urlHostMatch[2]||'',port:urlHostMatch[3]||''};} -function httpTransport(){return new XMLHttpRequest();} -function streamingHttp(oboeBus,xhr,method,url,data,headers,withCredentials){"use strict";var emitStreamData=oboeBus(STREAM_DATA).emit,emitFail=oboeBus(FAIL_EVENT).emit,numberOfCharsAlreadyGivenToCallback=0,stillToSendStartEvent=true;oboeBus(ABORTING).on(function(){xhr.onreadystatechange=null;xhr.abort();});function handleProgress(){var textSoFar=xhr.responseText,newText=textSoFar.substr(numberOfCharsAlreadyGivenToCallback);if(newText){emitStreamData(newText);} -numberOfCharsAlreadyGivenToCallback=len(textSoFar);} -if('onprogress'in xhr){xhr.onprogress=handleProgress;} -xhr.onreadystatechange=function(){function sendStartIfNotAlready(){try{stillToSendStartEvent&&oboeBus(HTTP_START).emit(xhr.status,parseResponseHeaders(xhr.getAllResponseHeaders()));stillToSendStartEvent=false;}catch(e){}} -switch(xhr.readyState){case 2:case 3:return sendStartIfNotAlready();case 4:sendStartIfNotAlready();var successful=String(xhr.status)[0]==2;if(successful){handleProgress();oboeBus(STREAM_END).emit();}else{emitFail(errorReport(xhr.status,xhr.responseText));}}};try{xhr.open(method,url,true);for(var headerName in headers){xhr.setRequestHeader(headerName,headers[headerName]);} -if(!isCrossOrigin(window.location,parseUrlOrigin(url))){xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');} -xhr.withCredentials=withCredentials;xhr.send(data);}catch(e){window.setTimeout(partialComplete(emitFail,errorReport(undefined,undefined,e)),0);}} -var jsonPathSyntax=(function(){var -regexDescriptor=function regexDescriptor(regex){return regex.exec.bind(regex);},jsonPathClause=varArgs(function(componentRegexes){componentRegexes.unshift(/^/);return regexDescriptor(RegExp(componentRegexes.map(attr('source')).join('')));}),possiblyCapturing=/(\$?)/,namedNode=/([\w-_]+|\*)/,namePlaceholder=/()/,nodeInArrayNotation=/\["([^"]+)"\]/,numberedNodeInArrayNotation=/\[(\d+|\*)\]/,fieldList=/{([\w ]*?)}/,optionalFieldList=/(?:{([\w ]*?)})?/ -,jsonPathNamedNodeInObjectNotation=jsonPathClause(possiblyCapturing,namedNode,optionalFieldList),jsonPathNamedNodeInArrayNotation=jsonPathClause(possiblyCapturing,nodeInArrayNotation,optionalFieldList),jsonPathNumberedNodeInArrayNotation=jsonPathClause(possiblyCapturing,numberedNodeInArrayNotation,optionalFieldList),jsonPathPureDuckTyping=jsonPathClause(possiblyCapturing,namePlaceholder,fieldList),jsonPathDoubleDot=jsonPathClause(/\.\./),jsonPathDot=jsonPathClause(/\./),jsonPathBang=jsonPathClause(possiblyCapturing,/!/),emptyString=jsonPathClause(/$/);return function(fn){return fn(lazyUnion(jsonPathNamedNodeInObjectNotation,jsonPathNamedNodeInArrayNotation,jsonPathNumberedNodeInArrayNotation,jsonPathPureDuckTyping),jsonPathDoubleDot,jsonPathDot,jsonPathBang,emptyString);};}());function namedNode(key,node){return{key:key,node:node};} -var keyOf=attr('key');var nodeOf=attr('node');var ROOT_PATH={};function incrementalContentBuilder(oboeBus){var emitNodeOpened=oboeBus(NODE_OPENED).emit,emitNodeClosed=oboeBus(NODE_CLOSED).emit,emitRootOpened=oboeBus(ROOT_PATH_FOUND).emit,emitRootClosed=oboeBus(ROOT_NODE_FOUND).emit;function arrayIndicesAreKeys(possiblyInconsistentAscent,newDeepestNode){var parentNode=nodeOf(head(possiblyInconsistentAscent));return isOfType(Array,parentNode)?keyFound(possiblyInconsistentAscent,len(parentNode),newDeepestNode):possiblyInconsistentAscent;} -function nodeOpened(ascent,newDeepestNode){if(!ascent){emitRootOpened(newDeepestNode);return keyFound(ascent,ROOT_PATH,newDeepestNode);} -var arrayConsistentAscent=arrayIndicesAreKeys(ascent,newDeepestNode),ancestorBranches=tail(arrayConsistentAscent),previouslyUnmappedName=keyOf(head(arrayConsistentAscent));appendBuiltContent(ancestorBranches,previouslyUnmappedName,newDeepestNode);return cons(namedNode(previouslyUnmappedName,newDeepestNode),ancestorBranches);} -function appendBuiltContent(ancestorBranches,key,node){nodeOf(head(ancestorBranches))[key]=node;} -function keyFound(ascent,newDeepestName,maybeNewDeepestNode){if(ascent){appendBuiltContent(ascent,newDeepestName,maybeNewDeepestNode);} -var ascentWithNewPath=cons(namedNode(newDeepestName,maybeNewDeepestNode),ascent);emitNodeOpened(ascentWithNewPath);return ascentWithNewPath;} -function nodeClosed(ascent){emitNodeClosed(ascent);return tail(ascent)||emitRootClosed(nodeOf(head(ascent)));} -var contentBuilderHandlers={};contentBuilderHandlers[SAX_VALUE_OPEN]=nodeOpened;contentBuilderHandlers[SAX_VALUE_CLOSE]=nodeClosed;contentBuilderHandlers[SAX_KEY]=keyFound;return contentBuilderHandlers;} -var jsonPathCompiler=jsonPathSyntax(function(pathNodeSyntax,doubleDotSyntax,dotSyntax,bangSyntax,emptySyntax){var CAPTURING_INDEX=1;var NAME_INDEX=2;var FIELD_LIST_INDEX=3;var headKey=compose2(keyOf,head),headNode=compose2(nodeOf,head);function nameClause(previousExpr,detection){var name=detection[NAME_INDEX],matchesName=(!name||name=='*')?always:function(ascent){return headKey(ascent)==name};return lazyIntersection(matchesName,previousExpr);} -function duckTypeClause(previousExpr,detection){var fieldListStr=detection[FIELD_LIST_INDEX];if(!fieldListStr) -return previousExpr;var hasAllrequiredFields=partialComplete(hasAllProperties,arrayAsList(fieldListStr.split(/\W+/))),isMatch=compose2(hasAllrequiredFields,headNode);return lazyIntersection(isMatch,previousExpr);} -function capture(previousExpr,detection){var capturing=!!detection[CAPTURING_INDEX];if(!capturing) -return previousExpr;return lazyIntersection(previousExpr,head);} -function skip1(previousExpr){if(previousExpr==always){return always;} -function notAtRoot(ascent){return headKey(ascent)!=ROOT_PATH;} -return lazyIntersection(notAtRoot,compose2(previousExpr,tail));} -function skipMany(previousExpr){if(previousExpr==always){return always;} -var -terminalCaseWhenArrivingAtRoot=rootExpr(),terminalCaseWhenPreviousExpressionIsSatisfied=previousExpr,recursiveCase=skip1(function(ascent){return cases(ascent);}),cases=lazyUnion(terminalCaseWhenArrivingAtRoot,terminalCaseWhenPreviousExpressionIsSatisfied,recursiveCase);return cases;} -function rootExpr(){return function(ascent){return headKey(ascent)==ROOT_PATH;};} -function statementExpr(lastClause){return function(ascent){var exprMatch=lastClause(ascent);return exprMatch===true?head(ascent):exprMatch;};} -function expressionsReader(exprs,parserGeneratedSoFar,detection){return foldR(function(parserGeneratedSoFar,expr){return expr(parserGeneratedSoFar,detection);},parserGeneratedSoFar,exprs);} -function generateClauseReaderIfTokenFound(tokenDetector,clauseEvaluatorGenerators,jsonPath,parserGeneratedSoFar,onSuccess){var detected=tokenDetector(jsonPath);if(detected){var compiledParser=expressionsReader(clauseEvaluatorGenerators,parserGeneratedSoFar,detected),remainingUnparsedJsonPath=jsonPath.substr(len(detected[0]));return onSuccess(remainingUnparsedJsonPath,compiledParser);}} -function clauseMatcher(tokenDetector,exprs){return partialComplete(generateClauseReaderIfTokenFound,tokenDetector,exprs);} -var clauseForJsonPath=lazyUnion(clauseMatcher(pathNodeSyntax,list(capture,duckTypeClause,nameClause,skip1)),clauseMatcher(doubleDotSyntax,list(skipMany)),clauseMatcher(dotSyntax,list()),clauseMatcher(bangSyntax,list(capture,rootExpr)),clauseMatcher(emptySyntax,list(statementExpr)),function(jsonPath){throw Error('"'+jsonPath+'" could not be tokenised')});function returnFoundParser(_remainingJsonPath,compiledParser){return compiledParser} -function compileJsonPathToFunction(uncompiledJsonPath,parserGeneratedSoFar){var onFind=uncompiledJsonPath?compileJsonPathToFunction:returnFoundParser;return clauseForJsonPath(uncompiledJsonPath,parserGeneratedSoFar,onFind);} -return function(jsonPath){try{return compileJsonPathToFunction(jsonPath,always);}catch(e){throw Error('Could not compile "'+jsonPath+'" because '+e.message);}}});function singleEventPubSub(eventType,newListener,removeListener){var listenerTupleList,listenerList;function hasId(id){return function(tuple){return tuple.id==id;};} -return{on:function(listener,listenerId){var tuple={listener:listener,id:listenerId||listener};if(newListener){newListener.emit(eventType,listener,tuple.id);} -listenerTupleList=cons(tuple,listenerTupleList);listenerList=cons(listener,listenerList);return this;},emit:function(){applyEach(listenerList,arguments);},un:function(listenerId){var removed;listenerTupleList=without(listenerTupleList,hasId(listenerId),function(tuple){removed=tuple;});if(removed){listenerList=without(listenerList,function(listener){return listener==removed.listener;});if(removeListener){removeListener.emit(eventType,removed.listener,removed.id);}}},listeners:function(){return listenerList;},hasListener:function(listenerId){var test=listenerId?hasId(listenerId):always;return defined(first(test,listenerTupleList));}};} -function pubSub(){var singles={},newListener=newSingle('newListener'),removeListener=newSingle('removeListener');function newSingle(eventName){return singles[eventName]=singleEventPubSub(eventName,newListener,removeListener);} -function pubSubInstance(eventName){return singles[eventName]||newSingle(eventName);} -['emit','on','un'].forEach(function(methodName){pubSubInstance[methodName]=varArgs(function(eventName,parameters){apply(parameters,pubSubInstance(eventName)[methodName]);});});return pubSubInstance;} -var -_S=1,NODE_OPENED=_S++,NODE_CLOSED=_S++,NODE_SWAP=_S++,NODE_DROP=_S++,FAIL_EVENT='fail',ROOT_NODE_FOUND=_S++,ROOT_PATH_FOUND=_S++,HTTP_START='start',STREAM_DATA='data',STREAM_END='end',ABORTING=_S++,SAX_KEY=_S++,SAX_VALUE_OPEN=_S++,SAX_VALUE_CLOSE=_S++;function errorReport(statusCode,body,error){try{var jsonBody=JSON.parse(body);}catch(e){} -return{statusCode:statusCode,body:body,jsonBody:jsonBody,thrown:error};} -function patternAdapter(oboeBus,jsonPathCompiler){var predicateEventMap={node:oboeBus(NODE_CLOSED),path:oboeBus(NODE_OPENED)};function emitMatchingNode(emitMatch,node,ascent){var descent=reverseList(ascent);emitMatch(node,listAsArray(tail(map(keyOf,descent))),listAsArray(map(nodeOf,descent)));} -function addUnderlyingListener(fullEventName,predicateEvent,compiledJsonPath){var emitMatch=oboeBus(fullEventName).emit;predicateEvent.on(function(ascent){var maybeMatchingMapping=compiledJsonPath(ascent);if(maybeMatchingMapping!==false){emitMatchingNode(emitMatch,nodeOf(maybeMatchingMapping),ascent);}},fullEventName);oboeBus('removeListener').on(function(removedEventName){if(removedEventName==fullEventName){if(!oboeBus(removedEventName).listeners()){predicateEvent.un(fullEventName);}}});} -oboeBus('newListener').on(function(fullEventName){var match=/(node|path):(.*)/.exec(fullEventName);if(match){var predicateEvent=predicateEventMap[match[1]];if(!predicateEvent.hasListener(fullEventName)){addUnderlyingListener(fullEventName,predicateEvent,jsonPathCompiler(match[2]));}}})} -function instanceApi(oboeBus,contentSource){var oboeApi,fullyQualifiedNamePattern=/^(node|path):./,rootNodeFinishedEvent=oboeBus(ROOT_NODE_FOUND),emitNodeDrop=oboeBus(NODE_DROP).emit,emitNodeSwap=oboeBus(NODE_SWAP).emit,addListener=varArgs(function(eventId,parameters){if(oboeApi[eventId]){apply(parameters,oboeApi[eventId]);}else{var event=oboeBus(eventId),listener=parameters[0];if(fullyQualifiedNamePattern.test(eventId)){addForgettableCallback(event,listener);}else{event.on(listener);}} -return oboeApi;}),removeListener=function(eventId,p2,p3){if(eventId=='done'){rootNodeFinishedEvent.un(p2);}else if(eventId=='node'||eventId=='path'){oboeBus.un(eventId+':'+p2,p3);}else{var listener=p2;oboeBus(eventId).un(listener);} -return oboeApi;};function addProtectedCallback(eventName,callback){oboeBus(eventName).on(protectedCallback(callback),callback);return oboeApi;} -function addForgettableCallback(event,callback,listenerId){listenerId=listenerId||callback;var safeCallback=protectedCallback(callback);event.on(function(){var discard=false;oboeApi.forget=function(){discard=true;};apply(arguments,safeCallback);delete oboeApi.forget;if(discard){event.un(listenerId);}},listenerId);return oboeApi;} -function protectedCallback(callback){return function(){try{return callback.apply(oboeApi,arguments);}catch(e){setTimeout(function(){throw new Error(e.message);});}}} -function fullyQualifiedPatternMatchEvent(type,pattern){return oboeBus(type+':'+pattern);} -function wrapCallbackToSwapNodeIfSomethingReturned(callback){return function(){var returnValueFromCallback=callback.apply(this,arguments);if(defined(returnValueFromCallback)){if(returnValueFromCallback==oboe.drop){emitNodeDrop();}else{emitNodeSwap(returnValueFromCallback);}}}} -function addSingleNodeOrPathListener(eventId,pattern,callback){var effectiveCallback;if(eventId=='node'){effectiveCallback=wrapCallbackToSwapNodeIfSomethingReturned(callback);}else{effectiveCallback=callback;} -addForgettableCallback(fullyQualifiedPatternMatchEvent(eventId,pattern),effectiveCallback,callback);} -function addMultipleNodeOrPathListeners(eventId,listenerMap){for(var pattern in listenerMap){addSingleNodeOrPathListener(eventId,pattern,listenerMap[pattern]);}} -function addNodeOrPathListenerApi(eventId,jsonPathOrListenerMap,callback){if(isString(jsonPathOrListenerMap)){addSingleNodeOrPathListener(eventId,jsonPathOrListenerMap,callback);}else{addMultipleNodeOrPathListeners(eventId,jsonPathOrListenerMap);} -return oboeApi;} -oboeBus(ROOT_PATH_FOUND).on(function(rootNode){oboeApi.root=functor(rootNode);});oboeBus(HTTP_START).on(function(_statusCode,headers){oboeApi.header=function(name){return name?headers[name]:headers;}});return oboeApi={on:addListener,addListener:addListener,removeListener:removeListener,emit:oboeBus.emit,node:partialComplete(addNodeOrPathListenerApi,'node'),path:partialComplete(addNodeOrPathListenerApi,'path'),done:partialComplete(addForgettableCallback,rootNodeFinishedEvent),start:partialComplete(addProtectedCallback,HTTP_START),fail:oboeBus(FAIL_EVENT).on,abort:oboeBus(ABORTING).emit,write:oboeBus(STREAM_DATA).emit,finish:oboeBus(STREAM_END).emit,header:noop,root:noop,source:contentSource};} -function wire(httpMethodName,contentSource,body,headers,withCredentials){var oboeBus=pubSub();if(contentSource){streamingHttp(oboeBus,httpTransport(),httpMethodName,contentSource,body,headers,withCredentials);} -clarinet(oboeBus);ascentManager(oboeBus,incrementalContentBuilder(oboeBus));patternAdapter(oboeBus,jsonPathCompiler);return instanceApi(oboeBus,contentSource);} -function applyDefaults(passthrough,url,httpMethodName,body,headers,withCredentials,cached){headers=headers?JSON.parse(JSON.stringify(headers)):{};if(body){if(!isString(body)){body=JSON.stringify(body);headers['Content-Type']=headers['Content-Type']||'application/json';}}else{body=null;} -function modifiedUrl(baseUrl,cached){if(cached===false){if(baseUrl.indexOf('?')==-1){baseUrl+='?';}else{baseUrl+='&';} -baseUrl+='_='+new Date().getTime();} -return baseUrl;} -return passthrough(httpMethodName||'GET',modifiedUrl(url,cached),body,headers,withCredentials||false);} -function oboe(arg1){var nodeStreamMethodNames=list('resume','pause','pipe'),isStream=partialComplete(hasAllProperties,nodeStreamMethodNames);if(arg1){if(isStream(arg1)||isString(arg1)){return applyDefaults(wire,arg1);}else{return applyDefaults(wire,arg1.url,arg1.method,arg1.body,arg1.headers,arg1.withCredentials,arg1.cached);}}else{return wire();}} -oboe.drop=function(){return oboe.drop;};if(typeof define==="function"&&define.amd){define("oboe",[],function(){return oboe;});}else if(typeof exports==='object'){module.exports=oboe;}else{window.oboe=oboe;}})((function(){try{return window;}catch(e){return self;}}()),Object,Array,Error,JSON);'use strict';if(tr.isVinn){global.oboe=global.window.oboe;global.window=undefined;}else if(tr.isNode){global.window=undefined;const path=HTMLImportsLoader.hrefToAbsolutePath('/oboe/dist/oboe-node.js');global.oboe=require(path);}'use strict';tr.exportTo('tr.e.importer',function(){const STRING_ID_SUFFIX='_sid';const PLURAL_STRING_ID_SUFFIX='_sids';function isStringReference(s){return s.endsWith(STRING_ID_SUFFIX)||s.endsWith(PLURAL_STRING_ID_SUFFIX);} -function getStringReferenceName(name){if(name.endsWith(PLURAL_STRING_ID_SUFFIX)){return name.slice(0,-PLURAL_STRING_ID_SUFFIX.length);} -return name.slice(0,-STRING_ID_SUFFIX.length);} -function deferenceStrings(idToString,o){const clone=Object.assign({},o);for(const[key,value]of Object.entries(clone)){if(isStringReference(key)){const name=getStringReferenceName(key);clone[name]=idToString(value);}} -return clone;} -function singularize(word){if(word.endsWith('s')){return word.slice(0,-1);} -return word;} -function getMetadataPairs(dataJson){const isMetadata=v=>typeof v!=='object'||Array.isArray(v);const pairs=Object.entries(dataJson);const metadataPairs=pairs.filter(([_,v])=>isMetadata(v));return metadataPairs;} -function getGroupPairs(dataJson){const pairs=Object.entries(dataJson);const nonMapPairs=pairs.filter(([k,_])=>k!=='maps');const groupPairs=nonMapPairs.filter(([_,v])=>typeof v==='object');return groupPairs;} -function createMap(mapJson){const map=new Map();for(const entry of mapJson){if(entry.id===undefined){throw new Error('Missing required key "id" in streaming event.');} -map.set(entry.id,entry);} -return map;} -function createMaps(mapsJson){const maps=new Map();for(const[name,mapJson]of Object.entries(mapsJson)){maps.set(name,createMap(mapJson));} -return maps;} -function createGroup(groupJson,opt_startTime){const entries=[];const n=Object.values(groupJson)[0].length;for(let i=0;ideferenceStrings(this.boundGetString_,o);} -static empty(){return new ProfilingDictionaryReader();} -get parent(){return this.parent_;} -get raw(){if(this.raw_)return this.raw_;this.raw_={};for(const[name,group]of this.groups.entries()){this.raw_[name]=group;} -return this.raw_;} -get inflated(){if(this.inflated_)return this.inflated_;this.inflated_={};for(const[name,group]of this.groups.entries()){this.inflated_[name]=this.inflateGroup(group);} -return this.inflated_;} -getNewMap(name){return this.maps.get(name)||new Map();} -getMapValue(mapName,id){let value=this.getNewMap(mapName).get(id);if(value===undefined&&this.parent){value=this.parent.getMapValue(mapName,id);} -return value;} -getString(id){const value=this.getMapValue('strings',id);if(value===undefined)return undefined;return value.string;} -hasMap(name){if(this.maps.has(name))return true;if(this.parent===undefined)return false;return this.parent.hasMap(name);} -inflateGroup(group){return group.map(this.inflateEntry.bind(this));} -inflateEntry(entry){const inflatedEntry={};for(const[name,value]of Object.entries(entry)){let inflatedValue;if(this.hasMap(name)){const id=value;inflatedValue=this.deferenceStrings_(this.getMapValue(name,id));}else{inflatedValue=value;} -inflatedEntry[singularize(name)]=inflatedValue;} -return this.deferenceStrings_(inflatedEntry);} -expandData(data){const mapsJson=data.maps||{};const groupsJson=data.allocators||{};const metadataPairs=getMetadataPairs(data);const metadata=createMetadata(metadataPairs);const opt_startTime=metadata.get('startTime');const maps=createMaps(mapsJson);const groups=createGroups(groupsJson,opt_startTime);return new ProfilingDictionaryReader(metadata,maps,groups,this);} -expandEvent(event){return this.expandData(event.args.data);}} -return{ProfilingDictionaryReader,singularize,deferenceStringsForTest:deferenceStrings,};});'use strict';tr.exportTo('tr.model.source_info',function(){function SourceInfo(file,opt_line,opt_column){this.file_=file;this.line_=opt_line||-1;this.column_=opt_column||-1;} -SourceInfo.prototype={get file(){return this.file_;},get line(){return this.line_;},get column(){return this.column_;},get domain(){if(!this.file_)return undefined;const domain=this.file_.match(/(.*:\/\/[^:\/]*)/i);return domain?domain[1]:undefined;},toString(){let str='';if(this.file_){str+=this.file_;} -if(this.line_>0){str+=':'+this.line_;} -if(this.column_>0){str+=':'+this.column_;} -return str;}};return{SourceInfo,};});'use strict';tr.exportTo('tr.model.source_info',function(){function JSSourceInfo(file,line,column,isNative,scriptId,state){tr.model.source_info.SourceInfo.call(this,file,line,column);this.isNative_=isNative;this.scriptId_=scriptId;this.state_=state;} -JSSourceInfo.prototype={__proto__:tr.model.source_info.SourceInfo.prototype,get state(){return this.state_;},get isNative(){return this.isNative_;},get scriptId(){return this.scriptId_;},toString(){const str=this.isNative_?'[native v8] ':'';return str+ -tr.model.source_info.SourceInfo.prototype.toString.call(this);}};const JSSourceState={COMPILED:'compiled',OPTIMIZABLE:'optimizable',OPTIMIZED:'optimized',UNKNOWN:'unknown',};return{JSSourceInfo,JSSourceState,};});'use strict';tr.exportTo('tr.e.importer',function(){function TraceCodeEntry(address,size,name,scriptId){this.id_=tr.b.GUID.allocateSimple();this.address_=address;this.size_=size;const rePrefix=/^(\w*:)?([*~]?)(.*)$/m;const tokens=rePrefix.exec(name);const prefix=tokens[1];let state=tokens[2];const body=tokens[3];if(state==='*'){state=tr.model.source_info.JSSourceState.OPTIMIZED;}else if(state==='~'){state=tr.model.source_info.JSSourceState.OPTIMIZABLE;}else if(state===''){state=tr.model.source_info.JSSourceState.COMPILED;}else{state=tr.model.source_info.JSSourceState.UNKNOWN;} -let rawName;let rawUrl;if(prefix==='Script:'){rawName='';rawUrl=body;}else{const spacePos=body.lastIndexOf(' ');rawName=spacePos!==-1?body.substr(0,spacePos):body;rawUrl=spacePos!==-1?body.substr(spacePos+1):'';} -function splitLineAndColumn(url){const lineColumnRegEx=/(?::(\d+))?(?::(\d+))?$/;const lineColumnMatch=lineColumnRegEx.exec(url);let lineNumber;let columnNumber;if(typeof(lineColumnMatch[1])==='string'){lineNumber=parseInt(lineColumnMatch[1],10);lineNumber=isNaN(lineNumber)?undefined:lineNumber-1;} -if(typeof(lineColumnMatch[2])==='string'){columnNumber=parseInt(lineColumnMatch[2],10);columnNumber=isNaN(columnNumber)?undefined:columnNumber-1;} -return{url:url.substring(0,url.length-lineColumnMatch[0].length),lineNumber,columnNumber};} -const nativeSuffix=' native';const isNative=rawName.endsWith(nativeSuffix);this.name_=isNative?rawName.slice(0,-nativeSuffix.length):rawName;const urlData=splitLineAndColumn(rawUrl);const url=urlData.url||'';const line=urlData.lineNumber||0;const column=urlData.columnNumber||0;this.sourceInfo_=new tr.model.source_info.JSSourceInfo(url,line,column,isNative,scriptId,state);} -TraceCodeEntry.prototype={get id(){return this.id_;},get sourceInfo(){return this.sourceInfo_;},get name(){return this.name_;},set address(address){this.address_=address;},get address(){return this.address_;},set size(size){this.size_=size;},get size(){return this.size_;}};return{TraceCodeEntry,};});'use strict';tr.exportTo('tr.e.importer',function(){function TraceCodeMap(){this.banks_=new Map();} -TraceCodeMap.prototype={addEntry(addressHex,size,name,scriptId){const entry=new tr.e.importer.TraceCodeEntry(this.getAddress_(addressHex),size,name,scriptId);this.addEntry_(addressHex,entry);},moveEntry(oldAddressHex,newAddressHex,size){const entry=this.getBank_(oldAddressHex).removeEntry(this.getAddress_(oldAddressHex));if(!entry)return;entry.address=this.getAddress_(newAddressHex);entry.size=size;this.addEntry_(newAddressHex,entry);},lookupEntry(addressHex){return this.getBank_(addressHex).lookupEntry(this.getAddress_(addressHex));},addEntry_(addressHex,entry){this.getBank_(addressHex).addEntry(entry);},getAddress_(addressHex){const bankSizeHexDigits=13;addressHex=addressHex.slice(2);return parseInt(addressHex.slice(-bankSizeHexDigits),16);},getBank_(addressHex){addressHex=addressHex.slice(2);const bankSizeHexDigits=13;const maxHexDigits=16;const bankName=addressHex.slice(-maxHexDigits,-bankSizeHexDigits);let bank=this.banks_.get(bankName);if(!bank){bank=new TraceCodeBank();this.banks_.set(bankName,bank);} -return bank;}};function TraceCodeBank(){this.entries_=[];} -TraceCodeBank.prototype={removeEntry(address){if(this.entries_.length===0)return undefined;const index=tr.b.findLowIndexInSortedArray(this.entries_,function(entry){return entry.address;},address);const entry=this.entries_[index];if(!entry||entry.address!==address)return undefined;this.entries_.splice(index,1);return entry;},lookupEntry(address){const index=tr.b.findFirstTrueIndexInSortedArray(this.entries_,e=>(address=0;--index){const entry=this.entries_[index];const entryEndAddress=entry.address+entry.size;if(entryEndAddress<=newEntry.address)break;} -++index;this.entries_.splice(index,lastIndex-index,newEntry);}};return{TraceCodeMap,};});'use strict';tr.exportTo('tr.e.measure',function(){const AsyncSlice=tr.model.AsyncSlice;const MEASURE_NAME_REGEX=/([^\/:]+):(.*?)(?:\/([A-Za-z0-9+/]+=?=?))?$/;function MeasureAsyncSlice(){this.groupTitle_='Ungrouped Measure';const matched=MEASURE_NAME_REGEX.exec(arguments[1]);if(matched!==null){arguments[1]=matched[2];this.groupTitle_=matched[1];} -AsyncSlice.apply(this,arguments);} -MeasureAsyncSlice.prototype={__proto__:AsyncSlice.prototype,get viewSubGroupTitle(){return this.groupTitle_;},get title(){return this.title_;},set title(title){this.title_=title;}};AsyncSlice.subTypes.register(MeasureAsyncSlice,{categoryParts:['blink.user_timing']});return{MEASURE_NAME_REGEX,MeasureAsyncSlice,};});'use strict';tr.exportTo('tr.importer',function(){function ContextProcessor(model){this.model_=model;this.activeContexts_=[];this.stackPerType_={};this.contextCache_={};this.contextSetCache_={};this.cachedEntryForActiveContexts_=undefined;this.seenSnapshots_={};} -ContextProcessor.prototype={enterContext(contextType,scopedId){const newActiveContexts=[this.getOrCreateContext_(contextType,scopedId),];for(const oldContext of this.activeContexts_){if(oldContext.type===contextType){this.pushContext_(oldContext);}else{newActiveContexts.push(oldContext);}} -this.activeContexts_=newActiveContexts;this.cachedEntryForActiveContexts_=undefined;},leaveContext(contextType,scopedId){this.leaveContextImpl_(context=>context.type===contextType&&context.snapshot.scope===scopedId.scope&&context.snapshot.idRef===scopedId.id);},destroyContext(scopedId){for(const stack of Object.values(this.stackPerType_)){let newLength=0;for(let i=0;icontext.snapshot.scope===scopedId.scope&&context.snapshot.idRef===scopedId.id);},leaveContextImpl_(predicate){const newActiveContexts=[];for(const oldContext of this.activeContexts_){if(predicate(oldContext)){const previousContext=this.popContext_(oldContext.type);if(previousContext){newActiveContexts.push(previousContext);}}else{newActiveContexts.push(oldContext);}} -this.activeContexts_=newActiveContexts;this.cachedEntryForActiveContexts_=undefined;},getOrCreateContext_(contextType,scopedId){const context={type:contextType,snapshot:{scope:scopedId.scope,idRef:scopedId.id}};const key=this.getContextKey_(context);if(key in this.contextCache_){return this.contextCache_[key];} -this.contextCache_[key]=context;const snapshotKey=this.getSnapshotKey_(scopedId);this.seenSnapshots_[snapshotKey]=true;return context;},pushContext_(context){if(!(context.type in this.stackPerType_)){this.stackPerType_[context.type]=[];} -this.stackPerType_[context.type].push(context);},popContext_(contextType){if(!(contextType in this.stackPerType_)){return undefined;} -return this.stackPerType_[contextType].pop();},getContextKey_(context){return[context.type,context.snapshot.scope,context.snapshot.idRef].join('\x00');},getSnapshotKey_(scopedId){return[scopedId.scope,scopedId.idRef].join('\x00');},get activeContexts(){if(this.cachedEntryForActiveContexts_===undefined){let key=[];for(const context of this.activeContexts_){key.push(this.getContextKey_(context));} -key.sort();key=key.join('\x00');if(key in this.contextSetCache_){this.cachedEntryForActiveContexts_=this.contextSetCache_[key];}else{this.activeContexts_.sort(function(a,b){const keyA=this.getContextKey_(a);const keyB=this.getContextKey_(b);if(keyAkeyB){return 1;} -return 0;}.bind(this));this.contextSetCache_[key]=Object.freeze(this.activeContexts_);this.cachedEntryForActiveContexts_=this.contextSetCache_[key];}} -return this.cachedEntryForActiveContexts_;},invalidateContextCacheForSnapshot(scopedId){const snapshotKey=this.getSnapshotKey_(scopedId);if(!(snapshotKey in this.seenSnapshots_))return;this.contextCache_={};this.contextSetCache_={};this.cachedEntryForActiveContexts_=undefined;this.activeContexts_=this.activeContexts_.map(function(context){if(context.snapshot.scope!==scopedId.scope||context.snapshot.idRef!==scopedId.id){return context;} -return{type:context.type,snapshot:{scope:context.snapshot.scope,idRef:context.snapshot.idRef}};});this.seenSnapshots_={};},};return{ContextProcessor,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function RectAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;} -RectAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,draw(ctx){const dt=this.viewport_.currentDisplayTransform;const startCoords=this.annotation_.startLocation.toViewCoordinates(this.viewport_);const endCoords=this.annotation_.endLocation.toViewCoordinates(this.viewport_);let startY=startCoords.viewY-ctx.canvas.getBoundingClientRect().top;const sizeY=endCoords.viewY-startCoords.viewY;if(startY+sizeY<0){startY=sizeY;}else if(startY<0){startY=0;} -ctx.fillStyle=this.annotation_.fillStyle;ctx.fillRect(startCoords.viewX,startY,endCoords.viewX-startCoords.viewX,sizeY);}};return{RectAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function RectAnnotation(start,end){tr.model.Annotation.apply(this,arguments);this.startLocation_=start;this.endLocation_=end;this.fillStyle='rgba(255, 180, 0, 0.3)';} -RectAnnotation.fromDict=function(dict){const args=dict.args;const startLoc=new tr.model.Location(args.start.xWorld,args.start.yComponents);const endLoc=new tr.model.Location(args.end.xWorld,args.end.yComponents);return new tr.model.RectAnnotation(startLoc,endLoc);};RectAnnotation.prototype={__proto__:tr.model.Annotation.prototype,get startLocation(){return this.startLocation_;},get endLocation(){return this.endLocation_;},toDict(){return{typeName:'rect',args:{start:this.startLocation.toDict(),end:this.endLocation.toDict()}};},createView_(viewport){return new tr.ui.annotations.RectAnnotationView(viewport,this);}};tr.model.Annotation.register(RectAnnotation,{typeName:'rect'});return{RectAnnotation,};});'use strict';tr.exportTo('tr.ui.annotations',function(){function CommentBoxAnnotationView(viewport,annotation){this.viewport_=viewport;this.annotation_=annotation;this.textArea_=undefined;this.styleWidth=250;this.styleHeight=50;this.fontSize=10;this.rightOffset=50;this.topOffset=25;} -CommentBoxAnnotationView.prototype={__proto__:tr.ui.annotations.AnnotationView.prototype,removeTextArea(){Polymer.dom(Polymer.dom(this.textArea_).parentNode).removeChild(this.textArea_);},draw(ctx){const coords=this.annotation_.location.toViewCoordinates(this.viewport_);if(coords.viewX<0){if(this.textArea_){this.textArea_.style.visibility='hidden';} -return;} -if(!this.textArea_){this.textArea_=document.createElement('textarea');this.textArea_.style.position='absolute';this.textArea_.readOnly=true;this.textArea_.value=this.annotation_.text;this.textArea_.style.zIndex=1;Polymer.dom(Polymer.dom(ctx.canvas).parentNode).appendChild(this.textArea_);} -this.textArea_.style.width=this.styleWidth+'px';this.textArea_.style.height=this.styleHeight+'px';this.textArea_.style.fontSize=this.fontSize+'px';this.textArea_.style.visibility='visible';this.textArea_.style.left=coords.viewX+ctx.canvas.getBoundingClientRect().left+ -this.rightOffset+'px';this.textArea_.style.top=coords.viewY-ctx.canvas.getBoundingClientRect().top- -this.topOffset+'px';ctx.strokeStyle='rgb(0, 0, 0)';ctx.lineWidth=2;ctx.beginPath();tr.ui.b.drawLine(ctx,coords.viewX,coords.viewY-ctx.canvas.getBoundingClientRect().top,coords.viewX+this.rightOffset,coords.viewY-this.topOffset- -ctx.canvas.getBoundingClientRect().top);ctx.stroke();}};return{CommentBoxAnnotationView,};});'use strict';tr.exportTo('tr.model',function(){function CommentBoxAnnotation(location,text){tr.model.Annotation.apply(this,arguments);this.location=location;this.text=text;} -CommentBoxAnnotation.fromDict=function(dict){const args=dict.args;const location=new tr.model.Location(args.location.xWorld,args.location.yComponents);return new tr.model.CommentBoxAnnotation(location,args.text);};CommentBoxAnnotation.prototype={__proto__:tr.model.Annotation.prototype,onRemove(){this.view_.removeTextArea();},toDict(){return{typeName:'comment_box',args:{text:this.text,location:this.location.toDict()}};},createView_(viewport){return new tr.ui.annotations.CommentBoxAnnotationView(viewport,this);}};tr.model.Annotation.register(CommentBoxAnnotation,{typeName:'comment_box'});return{CommentBoxAnnotation,};});'use strict';tr.exportTo('tr.model',function(){function ScopedId(scope,id,pid){if(scope===undefined){throw new Error('Scope should be defined. Use \''+ -tr.model.OBJECT_DEFAULT_SCOPE+'\' as the default scope.');} -this.scope=scope;this.id=id;this.pid=pid;} -ScopedId.prototype={toString(){const pidStr=this.pid===undefined?'':'pid: '+this.pid+', ';return'{'+pidStr+'scope: '+this.scope+', id: '+this.id+'}';},toStringWithDelimiter(delim){return(this.pid===undefined?'':this.pid)+delim+ -this.scope+delim+this.id;}};return{ScopedId,};});'use strict';tr.exportTo('tr.e.importer',function(){const Base64=tr.b.Base64;const deepCopy=tr.b.deepCopy;const ColorScheme=tr.b.ColorScheme;const HeapDumpTraceEventImporter=tr.e.importer.HeapDumpTraceEventImporter;const LegacyHeapDumpTraceEventImporter=tr.e.importer.LegacyHeapDumpTraceEventImporter;const StreamingEventExpander=tr.e.importer.StreamingEventExpander;const ProfilingDictionaryReader=tr.e.importer.ProfilingDictionaryReader;const MEASURE_NAME_REGEX=tr.e.measure.MEASURE_NAME_REGEX;function getEventColor(event,opt_customName){if(event.cname){return ColorScheme.getColorIdForReservedName(event.cname);}else if(opt_customName||event.name){return ColorScheme.getColorIdForGeneralPurposeString(opt_customName||event.name);}} -function isLegacyChromeClockSyncEvent(event){return event.name!==undefined&&event.name.startsWith(LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX)&&((event.ph==='S')||(event.ph==='F'));} -const PRODUCER='producer';const CONSUMER='consumer';const STEP='step';const BACKGROUND=tr.model.ContainerMemoryDump.LevelOfDetail.BACKGROUND;const LIGHT=tr.model.ContainerMemoryDump.LevelOfDetail.LIGHT;const DETAILED=tr.model.ContainerMemoryDump.LevelOfDetail.DETAILED;const MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER=[undefined,BACKGROUND,LIGHT,DETAILED];const GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX='global/';const LEGACY_CHROME_CLOCK_SYNC_EVENT_NAME_PREFIX='ClockSyncEvent.';const BYTE_STAT_NAME_MAP={'pc':'privateCleanResident','pd':'privateDirtyResident','sc':'sharedCleanResident','sd':'sharedDirtyResident','pss':'proportionalResident','sw':'swapped'};const WEAK_MEMORY_ALLOCATOR_DUMP_FLAG=1<<0;const OBJECT_TYPE_NAME_PATTERNS=[{prefix:'const char *WTF::getStringWithTypeName() [T = ',suffix:']'},{prefix:'const char* WTF::getStringWithTypeName() [with T = ',suffix:']'},{prefix:'const char *__cdecl WTF::getStringWithTypeName<',suffix:'>(void)'}];const SUBTRACE_FIELDS=new Set(['powerTraceAsString','systemTraceEvents','androidProcessDump',]);const NON_METADATA_FIELDS=new Set(['displayTimeUnit','samples','stackFrames','traceAnnotations','traceEvents',...SUBTRACE_FIELDS]);function TraceEventImporter(model,eventData){this.hasEvents_=undefined;this.importPriority=1;this.model_=model;this.events_=undefined;this.sampleEvents_=undefined;this.stackFrameEvents_=undefined;this.stackFrameTree_=new tr.model.ProfileTree();this.subtraces_=[];this.eventsWereFromString_=false;this.softwareMeasuredCpuCount_=undefined;this.allAsyncEvents_=[];this.allFlowEvents_=[];this.allObjectEvents_=[];this.contextProcessorPerThread={};this.traceEventSampleStackFramesByName_={};this.v8ProcessCodeMaps_={};this.v8ProcessRootStackFrame_={};this.v8SamplingData_=[];this.profileTrees_=new Map();this.profileInfo_=new Map();this.legacyChromeClockSyncStartEvent_=undefined;this.legacyChromeClockSyncFinishEvent_=undefined;this.allMemoryDumpEvents_={};this.heapProfileExpander=new ProfilingDictionaryReader();this.objectTypeNameMap_={};this.clockDomainId_=tr.model.ClockDomainId.UNKNOWN_CHROME_LEGACY;this.toModelTime_=undefined;if(typeof(eventData)==='string'||eventData instanceof String){eventData=eventData.trim();if(eventData[0]==='['){eventData=eventData.replace(/\s*,\s*$/,'');if(eventData[eventData.length-1]!==']'){eventData=eventData+']';}} -this.events_=JSON.parse(eventData);this.eventsWereFromString_=true;}else{this.events_=eventData;} -if(this.events_.traceEvents){const container=this.events_;this.events_=this.events_.traceEvents;for(const subtraceField of SUBTRACE_FIELDS){if(container[subtraceField]){this.storeSubtrace_(container[subtraceField]);}} -this.storeSamples_(container.samples);this.storeStackFrames_(container.stackFrames);this.storeDisplayTimeUnit_(container.displayTimeUnit);this.storeTraceAnnotations_(container.traceAnnotations);this.storeMetadata_(container);}else if(this.events_ instanceof tr.b.TraceStream){const parser=oboe().node('{cat ph}',function(e){return oboe.drop;}).node('!.powerTraceAsString',this.storeSubtrace_.bind(this)).node('!.systemTraceEvents',this.storeSubtrace_.bind(this)).node('!.samples',this.storeSamples_.bind(this)).node('!.stackFrames',this.storeStackFrames_.bind(this)).node('!.displayTimeUnit',this.storeDisplayTimeUnit_.bind(this)).node('!.traceAnnotations',this.storeTraceAnnotations_.bind(this)).done(this.storeMetadata_.bind(this));this.events_.rewind();while(this.events_.hasData){parser.write(this.events_.readNumBytes());} -parser.finish();}} -TraceEventImporter.canImport=function(eventData){if(eventData instanceof tr.b.TraceStream){if(eventData.isBinary)return false;eventData=eventData.header;} -if(typeof(eventData)==='string'||eventData instanceof String){eventData=eventData.trim();return eventData[0]==='{'||eventData[0]==='[';} -if(eventData instanceof Array&&eventData.length&&eventData[0].ph){return true;} -if(eventData.traceEvents){if(eventData.traceEvents instanceof Array){if(eventData.traceEvents.length&&eventData.traceEvents[0].ph){return true;} -if(eventData.samples&&eventData.samples.length&&eventData.stackFrames!==undefined){return true;}}} -return false;};TraceEventImporter.scopedIdForEvent_=function(event){const scope=event.scope||tr.model.OBJECT_DEFAULT_SCOPE;let pid=undefined;if(event.id!==undefined){if(event.id2!==undefined){throw new Error('Event has both id and id2');} -pid=tr.model.LOCAL_ID_PHASES.has(event.ph)?event.pid:undefined;return new tr.model.ScopedId(scope,event.id,pid);}else if(event.id2!==undefined){if(event.id2.global!==undefined){return new tr.model.ScopedId(scope,event.id2.global);}else if(event.id2.local!==undefined){return new tr.model.ScopedId(scope,event.id2.local,event.pid);} -throw new Error('Event that uses id2 must have either a global or local ID');} -return undefined;};TraceEventImporter.prototype={__proto__:tr.importer.Importer.prototype,get importerName(){return'TraceEventImporter';},extractSubtraces(){const subtraces=this.subtraces_;this.subtraces_=[];return subtraces;},deepCopyIfNeeded_(obj){if(obj===undefined)obj={};if(this.eventsWereFromString_)return obj;return deepCopy(obj);},deepCopyAlways_(obj){if(obj===undefined)obj={};return deepCopy(obj);},processAsyncEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allAsyncEvents_.push({sequenceNumber:this.allAsyncEvents_.length,event,thread});},processFlowEvent(event,opt_slice){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allFlowEvents_.push({refGuid:tr.b.GUID.getLastSimpleGuid(),sequenceNumber:this.allFlowEvents_.length,event,slice:opt_slice,thread});},processCounterEvent(event){let ctrName;if(event.id!==undefined){ctrName=event.name+'['+event.id+']';}else{ctrName=event.name;} -const ctr=this.model_.getOrCreateProcess(event.pid).getOrCreateCounter(event.cat,ctrName);const reservedColorId=event.cname?getEventColor(event):undefined;if(ctr.numSeries===0){for(const seriesName in event.args){const colorId=reservedColorId||getEventColor(event,ctr.name+'.'+seriesName);ctr.addSeries(new tr.model.CounterSeries(seriesName,colorId));} -if(ctr.numSeries===0){this.model_.importWarning({type:'counter_parse_error',message:'Expected counter '+event.name+' to have at least one argument to use as a value.'});delete ctr.parent.counters[ctr.name];return;}} -const ts=this.toModelTimeFromUs_(event.ts);ctr.series.forEach(function(series){const val=event.args[series.name]?event.args[series.name]:0;series.addCounterSample(ts,val);});},processObjectEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);this.allObjectEvents_.push({sequenceNumber:this.allObjectEvents_.length,event,thread});if(thread.guid in this.contextProcessorPerThread){const processor=this.contextProcessorPerThread[thread.guid];const scopedId=TraceEventImporter.scopedIdForEvent_(event);if(event.ph==='D'){processor.destroyContext(scopedId);} -processor.invalidateContextCacheForSnapshot(scopedId);}},processContextEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);if(!(thread.guid in this.contextProcessorPerThread)){this.contextProcessorPerThread[thread.guid]=new tr.importer.ContextProcessor(this.model_);} -const scopedId=TraceEventImporter.scopedIdForEvent_(event);const contextType=event.name;const processor=this.contextProcessorPerThread[thread.guid];if(event.ph==='('){processor.enterContext(contextType,scopedId);}else if(event.ph===')'){processor.leaveContext(contextType,scopedId);}else{this.model_.importWarning({type:'unknown_context_phase',message:'Unknown context event phase: '+event.ph+'.'});}},setContextsFromThread_(thread,slice){if(thread.guid in this.contextProcessorPerThread){slice.contexts=this.contextProcessorPerThread[thread.guid].activeContexts;}},processDurationEvent(event){const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);const ts=this.toModelTimeFromUs_(event.ts);if(event.dur===0&&!thread.sliceGroup.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'duration_parse_error',message:'Timestamps are moving backward.'});return;} -if(event.ph==='B'){const slice=thread.sliceGroup.beginSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),this.toModelTimeFromUs_(event.tts),event.argsStripped,getEventColor(event),event.bind_id);slice.startStackFrame=this.getStackFrameForEvent_(event);this.setContextsFromThread_(thread,slice);}else if(event.ph==='I'||event.ph==='i'||event.ph==='R'){if(event.s!==undefined&&event.s!=='t'){throw new Error('This should never happen');} -thread.sliceGroup.beginSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.deepCopyIfNeeded_(event.args),this.toModelTimeFromUs_(event.tts),event.argsStripped,getEventColor(event),event.bind_id);const slice=thread.sliceGroup.endSlice(this.toModelTimeFromUs_(event.ts),this.toModelTimeFromUs_(event.tts));slice.startStackFrame=this.getStackFrameForEvent_(event);slice.endStackFrame=undefined;}else{if(!thread.sliceGroup.openSliceCount){this.model_.importWarning({type:'duration_parse_error',message:'E phase event without a matching B phase event.'});return;} -const slice=thread.sliceGroup.endSlice(this.toModelTimeFromUs_(event.ts),this.toModelTimeFromUs_(event.tts),getEventColor(event));if(event.name&&slice.title!==event.name){this.model_.importWarning({type:'title_match_error',message:'Titles do not match. Title is '+ -slice.title+' in openSlice, and is '+ -event.name+' in endSlice'});} -slice.endStackFrame=this.getStackFrameForEvent_(event);this.mergeArgsInto_(slice.args,event.args,slice.title);}},mergeArgsInto_(dstArgs,srcArgs,eventName){for(const arg in srcArgs){if(dstArgs[arg]!==undefined){this.model_.importWarning({type:'arg_merge_error',message:'Different phases of '+eventName+' provided values for argument '+arg+'.'+' The last provided value will be used.'});} -dstArgs[arg]=this.deepCopyIfNeeded_(srcArgs[arg]);}},processCompleteEvent(event){if(event.cat!==undefined&&event.cat.indexOf('trace_event_overhead')>-1){return undefined;} -const thread=this.model_.getOrCreateProcess(event.pid).getOrCreateThread(event.tid);if(event.flow_out){if(event.flow_in){event.flowPhase=STEP;}else{event.flowPhase=PRODUCER;}}else if(event.flow_in){event.flowPhase=CONSUMER;} -const slice=thread.sliceGroup.pushCompleteSlice(event.cat,event.name,this.toModelTimeFromUs_(event.ts),this.durationFromUs_(event.dur),this.maybeToModelTimeFromUs_(event.tts),this.durationFromUs_(event.tdur),this.deepCopyIfNeeded_(event.args),event.argsStripped,getEventColor(event),event.bind_id);slice.startStackFrame=this.getStackFrameForEvent_(event);slice.endStackFrame=this.getStackFrameForEvent_(event,true);this.setContextsFromThread_(thread,slice);return slice;},processJitCodeEvent(event){if(this.v8ProcessCodeMaps_[event.pid]===undefined){this.v8ProcessCodeMaps_[event.pid]=new tr.e.importer.TraceCodeMap();} -const map=this.v8ProcessCodeMaps_[event.pid];const data=event.args.data;if(event.name==='JitCodeMoved'){map.moveEntry(data.code_start,data.new_code_start,data.code_len);}else{map.addEntry(data.code_start,data.code_len,data.name,data.script_id);}},processMetadataEvent(event){if(event.name==='JitCodeAdded'||event.name==='JitCodeMoved'){this.v8SamplingData_.push(event);return;} -if(event.argsStripped)return;if(event.name==='process_name'){const process=this.model_.getOrCreateProcess(event.pid);process.name=event.args.name;}else if(event.name==='process_labels'){const process=this.model_.getOrCreateProcess(event.pid);const stackFrames=event.args.stackFrames;if(event.args.labels===undefined){this.model_.importWarning({type:'metadata_parse_error',message:'No labels found in a \''+event.name+'\' metadata event'});}else{const labels=event.args.labels.split(',');for(let i=0;i0&&this.v8ProcessCodeMaps_[event.pid]){const map=this.v8ProcessCodeMaps_[event.pid];data.stack.reverse();let parentNode=undefined;for(let i=0;i=0;--k){if(parentStack[k].event.name===eventStateEntry.event.name){parentIndex=k;break;}} -if(parentIndex===-1){eventStateEntry.finished=false;}else{parentStack[parentIndex].end=eventStateEntry;while(parentIndex0){eventStateEntry.parentEntry=parentStack[parentStack.length-1];} -if(eventStateEntry.event.ph==='b'){parentStack.push(eventStateEntry);}} -const topLevelSlices=[];for(let i=0;i-1){bindToParent=true;}else if(event.cat.indexOf('ipc.flow')>-1){bindToParent=true;}}else{if(event.bp!=='e'){this.model_.importWarning({type:'flow_slice_bind_point_error',message:'Flow event with invalid binding point (event.bp).'});continue;} -bindToParent=true;}} -const ok=finishFlowEventWith(flowEvent,thread,event,refGuid,bindToParent);if(ok){this.model_.flowEvents.push(flowEvent);}else{this.model_.importWarning({type:'flow_slice_end_error',message:'event id '+event.id+' does not end '+'at an actual slice, so cannot be created.'});} -flowIdToEvent[fullFlowId]=undefined;if(ok&&event.ph==='t'){flowEvent=createFlowEvent(thread,event);flowIdToEvent[fullFlowId]=flowEvent;}}}},createExplicitObjects_(){if(this.allObjectEvents_.length===0)return;const processEvent=function(objectEventState){const event=objectEventState.event;const scopedId=TraceEventImporter.scopedIdForEvent_(event);const thread=objectEventState.thread;if(event.name===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+JSON.stringify(event)+': '+'Object events require an name parameter.'});} -if(scopedId===undefined||scopedId.id===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+JSON.stringify(event)+': '+'Object events require an id parameter.'});} -const process=thread.parent;const ts=this.toModelTimeFromUs_(event.ts);let instance;if(event.ph==='N'){try{instance=process.objects.idWasCreated(scopedId,event.cat,event.name,ts);}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing create of '+ -scopedId+' at ts='+ts+': '+e});return;}}else if(event.ph==='O'){if(event.args.snapshot===undefined){this.model_.importWarning({type:'object_parse_error',message:'While processing '+scopedId+' at ts='+ts+': '+'Snapshots must have args: {snapshot: ...}'});return;} -let snapshot;try{const args=this.deepCopyIfNeeded_(event.args.snapshot);let cat;if(args.cat){cat=args.cat;delete args.cat;}else{cat=event.cat;} -let baseTypename;if(args.base_type){baseTypename=args.base_type;delete args.base_type;}else{baseTypename=undefined;} -snapshot=process.objects.addSnapshot(scopedId,cat,event.name,ts,args,baseTypename);snapshot.snapshottedOnThread=thread;}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing snapshot of '+ -scopedId+' at ts='+ts+': '+e});return;} -instance=snapshot.objectInstance;}else if(event.ph==='D'){try{process.objects.idWasDeleted(scopedId,event.cat,event.name,ts);const instanceMap=process.objects.getOrCreateInstanceMap_(scopedId);instance=instanceMap.lastInstance;}catch(e){this.model_.importWarning({type:'object_parse_error',message:'While processing delete of '+ -scopedId+' at ts='+ts+': '+e});return;}} -if(instance){instance.colorId=getEventColor(event,instance.typeName);}}.bind(this);this.allObjectEvents_.sort(function(x,y){const d=x.event.ts-y.event.ts;if(d!==0)return d;return x.sequenceNumber-y.sequenceNumber;});const allObjectEvents=this.allObjectEvents_;for(let i=0;ithis.minimalTimestampInPidToEvents_(x);pairs.sort((x,y)=>key(x[1])-key(y[1]));for(const[dumpId,pidToEvents]of pairs){this.createGlobalMemoryDump_(pidToEvents,dumpId);}},createGlobalMemoryDump_(dumpIdEvents,dumpId){const globalRange=new tr.b.math.Range();for(const pid in dumpIdEvents){const processEvents=dumpIdEvents[pid];for(let i=0;i0){processMemoryDump.heapDumps=heapDumps;}},addNewStackFramesFromExpander_(expander,idPrefix){const nodeMap=expander.getNewMap('nodes');const newStackFrames={};for(const[id,stackFrame]of nodeMap.entries()){if(!this.model_.stackFrames[idPrefix+id]){newStackFrames[id]={id,name:expander.getString(stackFrame.name_sid),};if(stackFrame.parent)newStackFrames[id].parent=stackFrame.parent;}} -this.importStackFrames_(newStackFrames,idPrefix);},parseMemoryDumpLevelOfDetail_(levelsOfDetail,dumps,pid,dumpId){const rawLevelOfDetail=dumps.level_of_detail;let level;switch(rawLevelOfDetail){case'background':level=BACKGROUND;break;case'light':level=LIGHT;break;case'detailed':level=DETAILED;break;case undefined:level=undefined;break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'unknown raw level of detail \''+rawLevelOfDetail+'\' of process memory dump for PID='+pid+' and dump ID='+dumpId+'.'});return;} -if(!this.updateMemoryDumpLevelOfDetail_(levelsOfDetail,'process',level)){this.model_.importWarning({type:'memory_dump_parse_error',message:'diffent levels of detail provided for process memory'+' dump for PID='+pid+' (dump ID='+dumpId+').'});}},updateMemoryDumpLevelOfDetail_(levelsOfDetail,scope,level){if(!(scope in levelsOfDetail)||level===levelsOfDetail[scope]){levelsOfDetail[scope]=level;return true;} -if(MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER.indexOf(level)>MEMORY_DUMP_LEVEL_OF_DETAIL_ORDER.indexOf(levelsOfDetail[scope])){levelsOfDetail[scope]=level;} -return false;},parseMemoryDumpAllocatorDumps_(processMemoryDump,globalMemoryDump,processMemoryAllocatorDumpsByFullName,globalMemoryAllocatorDumpsByFullName,allMemoryAllocatorDumpsByGuid,dumps,pid,dumpId){const rawAllocatorDumps=dumps.allocators;if(rawAllocatorDumps===undefined)return;for(let fullName in rawAllocatorDumps){const rawAllocatorDump=rawAllocatorDumps[fullName];const guid=rawAllocatorDump.guid;if(guid===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' for PID='+pid+' and dump ID='+dumpId+' does not have a GUID.'});} -const flags=rawAllocatorDump.flags||0;const isWeakDump=!!(flags&WEAK_MEMORY_ALLOCATOR_DUMP_FLAG);let containerMemoryDump;let dstIndex;if(fullName.startsWith(GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX)){fullName=fullName.substring(GLOBAL_MEMORY_ALLOCATOR_DUMP_PREFIX.length);containerMemoryDump=globalMemoryDump;dstIndex=globalMemoryAllocatorDumpsByFullName;}else{containerMemoryDump=processMemoryDump;dstIndex=processMemoryAllocatorDumpsByFullName;} -let allocatorDump=allMemoryAllocatorDumpsByGuid[guid];if(allocatorDump===undefined){if(fullName in dstIndex){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple GUIDs provided for'+' memory allocator dump '+fullName+': '+ -dstIndex[fullName].guid+', '+guid+' (ignored) for'+' PID='+pid+' and dump ID='+dumpId+'.'});continue;} -allocatorDump=new tr.model.MemoryAllocatorDump(containerMemoryDump,fullName,guid);allocatorDump.weak=isWeakDump;dstIndex[fullName]=allocatorDump;if(guid!==undefined){allMemoryAllocatorDumpsByGuid[guid]=allocatorDump;}}else{if(allocatorDump.containerMemoryDump!==containerMemoryDump){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+ -dumpId+' dumped in different contexts.'});continue;} -if(allocatorDump.fullName!==fullName){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump with GUID='+guid+' for PID='+ -pid+' and dump ID='+dumpId+' has multiple names: '+ -allocatorDump.fullName+', '+fullName+' (ignored).'});continue;} -if(!isWeakDump){allocatorDump.weak=false;}} -let attributes=rawAllocatorDump.attrs;if(attributes===undefined){this.model_.importWarning({type:'memory_dump_parse_error',message:'Memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+dumpId+' does not have attributes.'});attributes={};} -for(const attrName in attributes){const attrArgs=attributes[attrName];const attrType=attrArgs.type;const attrValue=attrArgs.value;switch(attrType){case'scalar':{if(attrName in allocatorDump.numerics){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple values provided for scalar attribute '+ -attrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+ -dumpId+'.'});break;} -const unit=attrArgs.units==='bytes'?tr.b.Unit.byName.sizeInBytes_smallerIsBetter:tr.b.Unit.byName.unitlessNumber_smallerIsBetter;const value=parseInt(attrValue,16);allocatorDump.addNumeric(attrName,new tr.b.Scalar(unit,value));break;} -case'string':if(attrName in allocatorDump.diagnostics){this.model_.importWarning({type:'memory_dump_parse_error',message:'Multiple values provided for string attribute '+ -attrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+ -dumpId+'.'});break;} -allocatorDump.addDiagnostic(attrName,attrValue);break;default:this.model_.importWarning({type:'memory_dump_parse_error',message:'Unknown type provided for attribute '+attrName+' of memory allocator dump '+fullName+' (GUID='+guid+') for PID='+pid+' and dump ID='+dumpId+': '+ -attrType});break;}}}},inferMemoryAllocatorDumpTree_(memoryAllocatorDumpsByFullName){const rootAllocatorDumps=[];const fullNames=Object.keys(memoryAllocatorDumpsByFullName);fullNames.sort();for(let i=0;i0){this.title_=this.url;}else if(this.args!==undefined&&this.args.source_type!==undefined){this.title_=this.args.source_type;} -this.isTitleComputed_=true;return this.title_;},set title(title){this.title_=title;},get url(){if(this.isUrlComputed_){return this.url_;} -if(this.args!==undefined&&this.args.params!==undefined&&this.args.params.url!==undefined){this.url_=this.args.params.url;}else if(this.subSlices!==undefined&&this.subSlices.length>0){for(let i=0;i-1);} -const TF_ONE_WAY=0x01;const TF_ROOT_OBJECT=0x04;const TF_STATUS_CODE=0x08;const TF_ACCEPT_FDS=0x10;const NO_FLAGS=0;function binderFlagsToHuman(num){const flag=parseInt(num,16);let str='';if(flag&TF_ONE_WAY){str+='this is a one-way call: async, no return; ';} -if(flag&TF_ROOT_OBJECT){str+='contents are the components root object; ';} -if(flag&TF_STATUS_CODE){str+='contents are a 32-bit status code; ';} -if(flag&TF_ACCEPT_FDS){str+='allow replies with file descriptors; ';} -if(flag===NO_FLAGS){str+='No Flags Set';} -return str;} -function isReplyToOrigin(calling,called){return(called.dest_proc===calling.calling_pid||called.dest_thread===calling.calling_pid);} -function binderCodeToHuman(code){return'Java Layer Dependent';} -function doInternalSlice(trans,slice,ts){if(slice.subSlices.length!==0){slice.subSlices[0].start=ts;return slice.subSlices[0];} -const kthread=trans.calling_kthread.thread;const internalSlice=kthread.sliceGroup.pushCompleteSlice('binder',slice.title,ts,.001,0,0,slice.args);internalSlice.title=slice.title;internalSlice.id=slice.id;internalSlice.colorId=slice.colorId;slice.subSlices.push(internalSlice);return internalSlice;} -function generateBinderArgsForSlice(trans,cThreadName){return{'Transaction Id':trans.transaction_key,'Destination Node':trans.dest_node,'Destination Process':trans.dest_proc,'Destination Thread':trans.dest_thread,'Destination Name':cThreadName,'Reply transaction?':trans.is_reply_transaction,'Flags':trans.flags+' '+ -binderFlagsToHuman(trans.flags),'Code':trans.code+' '+ -binderCodeToHuman(trans.code),'Calling PID':trans.calling_pid,'Calling tgid':trans.calling_kthread.thread.parent.pid};} -function BinderTransaction(events,callingPid,callingTs,callingKthread){this.transaction_key=parseInt(events[1]);this.dest_node=parseInt(events[2]);this.dest_proc=parseInt(events[3]);this.dest_thread=parseInt(events[4]);this.is_reply_transaction=parseInt(events[5])===1?true:false;this.expect_reply=((this.is_reply_transaction===false)&&(parseInt(events[6],16)&TF_ONE_WAY)===0);this.flags=events[6];this.code=events[7];this.calling_pid=callingPid;this.calling_ts=callingTs;this.calling_kthread=callingKthread;} -function BinderParser(importer){Parser.call(this,importer);importer.registerEventHandler('binder_locked',BinderParser.prototype.binderLocked.bind(this));importer.registerEventHandler('binder_unlock',BinderParser.prototype.binderUnlock.bind(this));importer.registerEventHandler('binder_lock',BinderParser.prototype.binderLock.bind(this));importer.registerEventHandler('binder_transaction',BinderParser.prototype.binderTransaction.bind(this));importer.registerEventHandler('binder_transaction_received',BinderParser.prototype.binderTransactionReceived.bind(this));importer.registerEventHandler('binder_transaction_alloc_buf',BinderParser.prototype.binderTransactionAllocBuf.bind(this));this.model_=importer.model;this.kthreadlookup={};this.importer_=importer;this.transWaitingRecv={};this.syncTransWaitingCompletion={};this.recursiveSyncTransWaitingCompletion_ByPID={};this.receivedTransWaitingConversion={};} -BinderParser.prototype={__proto__:Parser.prototype,binderLock(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;this.doNameMappings(pid,tgid,eventName.threadName);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);kthread.binderAttemptLockTS=ts;kthread.binderOpenTsA=ts;return true;},binderLocked(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const binderThread=isBinderThread(eventBase.threadName);const name=eventBase.threadName;const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);this.doNameMappings(pid,tgid,name);const rthread=kthread.thread;kthread.binderLockAquiredTS=ts;if(kthread.binderAttemptLockTS===undefined)return false;const args=this.generateArgsForSlice(tgid,pid,name,kthread);rthread.sliceGroup.pushCompleteSlice('binder','binder lock waiting',kthread.binderAttemptLockTS,ts-kthread.binderAttemptLockTS,0,0,args);kthread.binderAttemptLockTS=undefined;return true;},binderUnlock(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);if(kthread.binderLockAquiredTS===undefined)return false;const args=this.generateArgsForSlice(tgid,pid,eventBase.threadName,kthread);kthread.thread.sliceGroup.pushCompleteSlice('binder','binder lock held',kthread.binderLockAquiredTS,ts-kthread.binderLockAquiredTS,0,0,args);kthread.binderLockAquiredTS=undefined;return true;},binderTransaction(eventName,cpuNumber,pid,ts,eventBase){const event=binderTransRE.exec(eventBase.details);if(event===undefined)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;this.doNameMappings(pid,tgid,eventBase.threadName);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const trans=new BinderTransaction(event,pid,ts,kthread);const args=generateBinderArgsForSlice(trans,eventBase.threadName);const priorReceive=this.getPriorReceiveOnPID(pid);if(priorReceive!==false){return this.modelPriorReceive(priorReceive,ts,pid,tgid,kthread,trans,args,event);} -const recursiveTrans=this.getRecursiveTransactionNeedingCompletion(pid);if(recursiveTrans!==false){return this.modelRecursiveTransactions(recursiveTrans,ts,pid,kthread,trans,args);} -const slice=kthread.thread.sliceGroup.pushCompleteSlice('binder','',ts,.03,0,0,args);slice.colorId=ColorScheme.getColorIdForGeneralPurposeString(ts.toString());trans.slice=slice;if(trans.expect_reply){slice.title='binder transaction';}else{slice.title='binder transaction async';} -this.addTransactionWaitingForRecv(trans.transaction_key,trans);return true;},binderTransactionReceived(eventName,cpuNumber,pid,ts,eventBase){const event=binderTransReceivedRE.exec(eventBase.details);if(event===undefined)return false;const tgid=parseInt(eventBase.tgid);if(isNaN(tgid))return false;const transactionkey=parseInt(event[1]);const kthread=this.importer_.getOrCreateBinderKernelThread(eventBase.threadName,tgid,pid);const syncComplete=this.getSyncTransNeedsCompletion(transactionkey);if(syncComplete!==false){const syncTrans=syncComplete[0];const syncSlice=syncTrans.slice;const responseTrans=syncComplete[1];const responseSlice=responseTrans.slice;syncSlice.duration=ts-syncSlice.start;const syncInternal=doInternalSlice(syncTrans,syncSlice,ts);const responseTs=responseSlice.start+responseSlice.duration;const responseInternal=doInternalSlice(responseTrans,responseSlice,responseTs);if(responseSlice.outFlowEvents.length===0||syncSlice.inFlowEvents.length===0){const flow=this.generateFlow(responseInternal,syncInternal,responseTrans,syncTrans);syncSlice.inFlowEvents.push(flow);responseSlice.outFlowEvents.push(flow);this.model_.flowEvents.push(flow);} -for(let i=1;i0){thread.thread.sliceGroup.endSlice(ts);} -thread.lastActiveTs=ts;},fenceEnableSignalEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;} -const thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_enable('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);} -if(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);} -thread.lastActiveTs=ts;},fenceSignaledEvent(eventName,cpuNumber,pid,ts,eventBase){const event=fenceRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;} -const thread=this.importer.getOrCreatePseudoThread(event[2]);const name='fence_signal('+event[4]+')';const colorName='fence('+event[4]+')';if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;const slice=new tr.model.ThreadSlice('',name,ColorScheme.getColorIdForGeneralPurposeString(colorName),thread.lastActiveTs,{driver:event[1],context:event[3]},duration);thread.thread.sliceGroup.pushSlice(slice);} -if(thread.thread.sliceGroup.openSliceCount>0){thread.thread.sliceGroup.endSlice(ts);} -thread.lastActiveTs=ts;return true;},fenceWaitEvent(eventName,cpuNumber,pid,ts,eventBase){if(eventBase.tgid===undefined)return false;const event=fenceRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;} -const name='dma_fence_wait("'+event[2]+'")';if(eventName.endsWith('start')){const slice=slices.beginSlice(null,name,ts,{driver:event[1],context:event[3],seqno:event[4],});}else{if(slices.openSliceCount>0){slices.endSlice(ts);}} -return true;},};Parser.register(DmaFenceParser);return{DmaFenceParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function DrmParser(importer){Parser.call(this,importer);importer.registerEventHandler('drm_vblank_event',DrmParser.prototype.vblankEvent.bind(this));} -DrmParser.prototype={__proto__:Parser.prototype,drmVblankSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('drm_vblank');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},vblankEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/crtc=(\d+), seq=(\d+)/.exec(eventBase.details);if(!event)return false;const crtc=parseInt(event[1]);const seq=parseInt(event[2]);this.drmVblankSlice(ts,'vblank:'+crtc,{crtc,seq});return true;}};Parser.register(DrmParser);return{DrmParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function ExynosParser(importer){Parser.call(this,importer);importer.registerEventHandler('exynos_busfreq_target_int',ExynosParser.prototype.busfreqTargetIntEvent.bind(this));importer.registerEventHandler('exynos_busfreq_target_mif',ExynosParser.prototype.busfreqTargetMifEvent.bind(this));importer.registerEventHandler('exynos_page_flip_state',ExynosParser.prototype.pageFlipStateEvent.bind(this));} -ExynosParser.prototype={__proto__:Parser.prototype,exynosBusfreqSample(name,ts,frequency){const targetCpu=this.importer.getOrCreateCpu(0);const counter=targetCpu.getOrCreateCounter('',name);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries('frequency',ColorScheme.getColorIdForGeneralPurposeString(counter.name+'.'+'frequency')));} -counter.series.forEach(function(series){series.addCounterSample(ts,frequency);});},busfreqTargetIntEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\d+)/.exec(eventBase.details);if(!event)return false;this.exynosBusfreqSample('INT Frequency',ts,parseInt(event[1]));return true;},busfreqTargetMifEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\d+)/.exec(eventBase.details);if(!event)return false;this.exynosBusfreqSample('MIF Frequency',ts,parseInt(event[1]));return true;},exynosPageFlipStateOpenSlice(ts,pipe,fb,state){const kthread=this.importer.getOrCreatePseudoThread('exynos_flip_state (pipe:'+pipe+', fb:'+fb+')');kthread.openSliceTS=ts;kthread.openSlice=state;},exynosPageFlipStateCloseSlice(ts,pipe,fb,args){const kthread=this.importer.getOrCreatePseudoThread('exynos_flip_state (pipe:'+pipe+', fb:'+fb+')');if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,args,ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);} -kthread.openSlice=undefined;},pageFlipStateEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/pipe=(\d+), fb=(\d+), state=(.*)/.exec(eventBase.details);if(!event)return false;const pipe=parseInt(event[1]);const fb=parseInt(event[2]);const state=event[3];this.exynosPageFlipStateCloseSlice(ts,pipe,fb,{pipe,fb});if(state!=='flipped'){this.exynosPageFlipStateOpenSlice(ts,pipe,fb,state);} -return true;}};Parser.register(ExynosParser);return{ExynosParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function GestureParser(importer){Parser.call(this,importer);importer.registerEventHandler('tracing_mark_write:log',GestureParser.prototype.logEvent.bind(this));importer.registerEventHandler('tracing_mark_write:SyncInterpret',GestureParser.prototype.syncEvent.bind(this));importer.registerEventHandler('tracing_mark_write:HandleTimer',GestureParser.prototype.timerEvent.bind(this));} -GestureParser.prototype={__proto__:Parser.prototype,gestureOpenSlice(title,ts,opt_args){const thread=this.importer.getOrCreatePseudoThread('gesture').thread;thread.sliceGroup.beginSlice('touchpad_gesture',title,ts,opt_args);},gestureCloseSlice(title,ts){const thread=this.importer.getOrCreatePseudoThread('gesture').thread;if(thread.sliceGroup.openSliceCount){const slice=thread.sliceGroup.mostRecentlyOpenedPartialSlice;if(slice.title!==title){this.importer.model.importWarning({type:'title_match_error',message:'Titles do not match. Title is '+ -slice.title+' in openSlice, and is '+ -title+' in endSlice'});}else{thread.sliceGroup.endSlice(ts);}}},logEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\s*(\w+):\s*(\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('GestureLog',ts,{name:innerEvent[2]});break;case'end':this.gestureCloseSlice('GestureLog',ts);} -return true;},syncEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\s*(\w+):\s*(\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('SyncInterpret',ts,{interpreter:innerEvent[2]});break;case'end':this.gestureCloseSlice('SyncInterpret',ts);} -return true;},timerEvent(eventName,cpuNumber,pid,ts,eventBase){const innerEvent=/^\s*(\w+):\s*(\w+)$/.exec(eventBase.details);switch(innerEvent[1]){case'start':this.gestureOpenSlice('HandleTimer',ts,{interpreter:innerEvent[2]});break;case'end':this.gestureCloseSlice('HandleTimer',ts);} -return true;}};Parser.register(GestureParser);return{GestureParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function I2cParser(importer){Parser.call(this,importer);importer.registerEventHandler('i2c_write',I2cParser.prototype.i2cWriteEvent.bind(this));importer.registerEventHandler('i2c_read',I2cParser.prototype.i2cReadEvent.bind(this));importer.registerEventHandler('i2c_reply',I2cParser.prototype.i2cReplyEvent.bind(this));importer.registerEventHandler('i2c_result',I2cParser.prototype.i2cResultEvent.bind(this));} -const i2cWriteReplyRE=new RegExp('i2c-(\\d+) #(\\d+) a=([\\da-fA-F]+) f=([\\da-fA-F]+) l=(\\d+) '+'(\\[[\\da-fA-F\\-]+\\])');const i2cReadRE=/i2c-(\d+) #(\d+) a=([\da-fA-F]+) f=([\da-fA-F]+) l=(\d+)/;const i2cResultRE=/i2c-(\d+) n=(\d+) ret=(\d+)/;I2cParser.prototype={__proto__:Parser.prototype,i2cWriteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cWriteReplyRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const data=event[6];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c write';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength,'Data':data};return true;},i2cReadEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cReadRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c read';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength};return true;},i2cReplyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cWriteReplyRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const messageNumber=event[2];const address=event[3];const flags=event[4];const dataLength=event[5];const data=event[6];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle='i2c reply';thread.lastEntryTs=ts;thread.lastEntryArgs={'Message number':messageNumber,'Address':address,'Flags':flags,'Data Length':dataLength,'Data':data};return true;},i2cResultEvent(eventName,cpuNumber,pid,ts,eventBase){const event=i2cResultRE.exec(eventBase.details);if(!event)return false;const adapterNumber=parseInt(event[1]);const numMessages=event[2];const ret=event[3];const thread=this.importer.getOrCreatePseudoThread('i2c adapter '+adapterNumber);const args=thread.lastEntryArgs;if(args!==undefined){args['Number of messages']=numMessages;args.Return=ret;} -pushLastSliceIfNeeded(thread,event[1],ts);thread.lastEntryTitle=undefined;thread.lastEntryTs=undefined;thread.lastEntryArgs=undefined;return true;},};function pushLastSliceIfNeeded(thread,id,currentTs){if(thread.lastEntryTs!==undefined){const duration=currentTs-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.lastEntryTitle,ColorScheme.getColorIdForGeneralPurposeString(id),thread.lastEntryTs,thread.lastEntryArgs,duration);thread.thread.sliceGroup.pushSlice(slice);}} -Parser.register(I2cParser);return{I2cParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function I915Parser(importer){Parser.call(this,importer);importer.registerEventHandler('i915_gem_object_create',I915Parser.prototype.gemObjectCreateEvent.bind(this));importer.registerEventHandler('i915_gem_object_bind',I915Parser.prototype.gemObjectBindEvent.bind(this));importer.registerEventHandler('i915_gem_object_unbind',I915Parser.prototype.gemObjectBindEvent.bind(this));importer.registerEventHandler('i915_gem_object_change_domain',I915Parser.prototype.gemObjectChangeDomainEvent.bind(this));importer.registerEventHandler('i915_gem_object_pread',I915Parser.prototype.gemObjectPreadWriteEvent.bind(this));importer.registerEventHandler('i915_gem_object_pwrite',I915Parser.prototype.gemObjectPreadWriteEvent.bind(this));importer.registerEventHandler('i915_gem_object_fault',I915Parser.prototype.gemObjectFaultEvent.bind(this));importer.registerEventHandler('i915_gem_object_clflush',I915Parser.prototype.gemObjectDestroyEvent.bind(this));importer.registerEventHandler('i915_gem_object_destroy',I915Parser.prototype.gemObjectDestroyEvent.bind(this));importer.registerEventHandler('i915_gem_ring_dispatch',I915Parser.prototype.gemRingDispatchEvent.bind(this));importer.registerEventHandler('i915_gem_ring_flush',I915Parser.prototype.gemRingFlushEvent.bind(this));importer.registerEventHandler('i915_gem_request',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_add',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_complete',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_retire',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_wait_begin',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_request_wait_end',I915Parser.prototype.gemRequestEvent.bind(this));importer.registerEventHandler('i915_gem_ring_wait_begin',I915Parser.prototype.gemRingWaitEvent.bind(this));importer.registerEventHandler('i915_gem_ring_wait_end',I915Parser.prototype.gemRingWaitEvent.bind(this));importer.registerEventHandler('i915_reg_rw',I915Parser.prototype.regRWEvent.bind(this));importer.registerEventHandler('i915_flip_request',I915Parser.prototype.flipEvent.bind(this));importer.registerEventHandler('i915_flip_complete',I915Parser.prototype.flipEvent.bind(this));importer.registerEventHandler('intel_gpu_freq_change',I915Parser.prototype.gpuFrequency.bind(this));} -I915Parser.prototype={__proto__:Parser.prototype,i915FlipOpenSlice(ts,obj,plane){const kthread=this.importer.getOrCreatePseudoThread('i915_flip');kthread.openSliceTS=ts;kthread.openSlice='flip:'+obj+'/'+plane;},i915FlipCloseSlice(ts,args){const kthread=this.importer.getOrCreatePseudoThread('i915_flip');if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,args,ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);} -kthread.openSlice=undefined;},i915GemObjectSlice(ts,eventName,obj,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gem');kthread.openSlice=eventName+':'+obj;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915GemRingSlice(ts,eventName,dev,ring,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gem_ring');kthread.openSlice=eventName+':'+dev+'.'+ring;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915RegSlice(ts,eventName,reg,args){const kthread=this.importer.getOrCreatePseudoThread('i915_reg');kthread.openSlice=eventName+':'+reg;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},i915FreqChangeSlice(ts,eventName,args){const kthread=this.importer.getOrCreatePseudoThread('i915_gpu_freq');kthread.openSlice=eventName;const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),ts,args,0);kthread.thread.sliceGroup.pushSlice(slice);},gemObjectCreateEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\w+), size=(\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const size=parseInt(event[2]);this.i915GemObjectSlice(ts,eventName,obj,{obj,size});return true;},gemObjectBindEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\w+), offset=(\w+), size=(\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const offset=event[2];const size=parseInt(event[3]);this.i915ObjectGemSlice(ts,eventName+':'+obj,{obj,offset,size});return true;},gemObjectChangeDomainEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\w+), read=(\w+=>\w+), write=(\w+=>\w+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const read=event[2];const write=event[3];this.i915GemObjectSlice(ts,eventName,obj,{obj,read,write});return true;},gemObjectPreadWriteEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\w+), offset=(\d+), len=(\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const offset=parseInt(event[2]);const len=parseInt(event[3]);this.i915GemObjectSlice(ts,eventName,obj,{obj,offset,len});return true;},gemObjectFaultEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\w+), (\w+) index=(\d+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];const type=event[2];const index=parseInt(event[3]);this.i915GemObjectSlice(ts,eventName,obj,{obj,type,index});return true;},gemObjectDestroyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/obj=(\w+)/.exec(eventBase.details);if(!event)return false;const obj=event[1];this.i915GemObjectSlice(ts,eventName,obj,{obj});return true;},gemRingDispatchEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\d+), ring=(\d+), seqno=(\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const seqno=parseInt(event[3]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,seqno});return true;},gemRingFlushEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\d+), ring=(\w+), invalidate=(\w+), flush=(\w+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const invalidate=event[3];const flush=event[4];this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,invalidate,flush});return true;},gemRequestEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\d+), ring=(\d+), seqno=(\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);const seqno=parseInt(event[3]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring,seqno});return true;},gemRingWaitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/dev=(\d+), ring=(\d+)/.exec(eventBase.details);if(!event)return false;const dev=parseInt(event[1]);const ring=parseInt(event[2]);this.i915GemRingSlice(ts,eventName,dev,ring,{dev,ring});return true;},regRWEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/(\w+) reg=(\w+), len=(\d+), val=(\(\w+, \w+\))/.exec(eventBase.details);if(!event)return false;const rw=event[1];const reg=event[2];const len=event[3];const data=event[3];this.i915RegSlice(ts,rw,reg,{rw,reg,len,data});return true;},flipEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/plane=(\d+), obj=(\w+)/.exec(eventBase.details);if(!event)return false;const plane=parseInt(event[1]);const obj=event[2];if(eventName==='i915_flip_request'){this.i915FlipOpenSlice(ts,obj,plane);}else{this.i915FlipCloseSlice(ts,{obj,plane});} -return true;},gpuFrequency(eventName,cpuNumver,pid,ts,eventBase){const event=/new_freq=(\d+)/.exec(eventBase.details);if(!event)return false;const freq=parseInt(event[1]);this.i915FreqChangeSlice(ts,eventName,{freq});return true;}};Parser.register(I915Parser);return{I915Parser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function IonHeapParser(importer){Parser.call(this,importer);importer.registerEventHandler('ion_heap_shrink',IonHeapParser.prototype.traceIonHeapShrink.bind(this));importer.registerEventHandler('ion_heap_grow',IonHeapParser.prototype.traceIonHeapGrow.bind(this));this.model_=importer.model_;} -const TestExports={};const ionHeapRE=new RegExp('heap_name=(\\S+), len=(\\d+), total_allocated=(\\d+)');TestExports.ionHeapRE=ionHeapRE;IonHeapParser.prototype={__proto__:Parser.prototype,traceIonHeapShrink(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=ionHeapRE.exec(eventBase.details);if(!event)return false;const name=event[1];const len=parseInt(event[2]);const totalAllocated=parseInt(event[3]);const ionHeap=totalAllocated+len;const ctr=this.model_.kernel.getOrCreateCounter(null,name+' ion heap');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));} -ctr.series.forEach(function(series){series.addCounterSample(ts,ionHeap);});return true;},traceIonHeapGrow(eventName,cpuNumber,pid,ts,eventBase,threadName){const event=ionHeapRE.exec(eventBase.details);if(!event)return false;const name=event[1];const len=parseInt(event[2]);const totalAllocated=parseInt(event[3]);const ionHeap=totalAllocated+len;const ctr=this.model_.kernel.getOrCreateCounter(null,name+' ion heap');if(ctr.numSeries===0){ctr.addSeries(new tr.model.CounterSeries('value',ColorScheme.getColorIdForGeneralPurposeString(ctr.name+'.'+'value')));} -ctr.series.forEach(function(series){series.addCounterSample(ts,ionHeap);});return true;}};Parser.register(IonHeapParser);return{IonHeapParser,_IonHeapParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function IrqParser(importer){Parser.call(this,importer);importer.registerEventHandler('irq_handler_entry',IrqParser.prototype.irqHandlerEntryEvent.bind(this));importer.registerEventHandler('irq_handler_exit',IrqParser.prototype.irqHandlerExitEvent.bind(this));importer.registerEventHandler('softirq_raise',IrqParser.prototype.softirqRaiseEvent.bind(this));importer.registerEventHandler('softirq_entry',IrqParser.prototype.softirqEntryEvent.bind(this));importer.registerEventHandler('softirq_exit',IrqParser.prototype.softirqExitEvent.bind(this));importer.registerEventHandler('ipi_entry',IrqParser.prototype.ipiEntryEvent.bind(this));importer.registerEventHandler('ipi_exit',IrqParser.prototype.ipiExitEvent.bind(this));importer.registerEventHandler('preempt_disable',IrqParser.prototype.preemptStartEvent.bind(this));importer.registerEventHandler('preempt_enable',IrqParser.prototype.preemptEndEvent.bind(this));importer.registerEventHandler('irq_disable',IrqParser.prototype.irqoffStartEvent.bind(this));importer.registerEventHandler('irq_enable',IrqParser.prototype.irqoffEndEvent.bind(this));} -const irqHandlerEntryRE=/irq=(\d+) name=(.+)/;const irqHandlerExitRE=/irq=(\d+) ret=(.+)/;const softirqRE=/vec=(\d+) \[action=(.+)\]/;const ipiHandlerExitRE=/\((.+)\)/;const preemptirqRE=/caller=(.+) parent=(.+)/;IrqParser.prototype={__proto__:Parser.prototype,irqHandlerEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const event=irqHandlerEntryRE.exec(eventBase.details);if(!event)return false;const irq=parseInt(event[1]);const name=event[2];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);thread.lastEntryTs=ts;thread.irqName=name;return true;},irqHandlerExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=irqHandlerExitRE.exec(eventBase.details);if(!event)return false;const irq=parseInt(event[1]);const ret=event[2];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('','IRQ ('+thread.irqName+')',ColorScheme.getColorIdForGeneralPurposeString(event[1]),thread.lastEntryTs,{ret},duration);thread.thread.sliceGroup.pushSlice(slice);} -thread.lastEntryTs=undefined;thread.irqName=undefined;return true;},softirqRaiseEvent(eventName,cpuNumber,pid,ts,eventBase){return true;},softirqEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const event=softirqRE.exec(eventBase.details);if(!event)return false;const action=event[2];const thread=this.importer.getOrCreatePseudoThread('softirq cpu '+cpuNumber);thread.lastEntryTs=ts;return true;},softirqExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=softirqRE.exec(eventBase.details);if(!event)return false;const vec=parseInt(event[1]);const action=event[2];const thread=this.importer.getOrCreatePseudoThread('softirq cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',action,ColorScheme.getColorIdForGeneralPurposeString(event[1]),thread.lastEntryTs,{vec},duration);thread.thread.sliceGroup.pushSlice(slice);} -thread.lastEntryTs=undefined;return true;},ipiEntryEvent(eventName,cpuNumber,pid,ts,eventBase){const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);thread.lastEntryTs=ts;return true;},ipiExitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=ipiHandlerExitRE.exec(eventBase.details);if(!event)return false;const ipiName=event[1];const thread=this.importer.getOrCreatePseudoThread('irqs cpu '+cpuNumber);if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('','IPI ('+ipiName+')',ColorScheme.getColorIdForGeneralPurposeString(ipiName),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);} -thread.lastEntryTs=undefined;return true;},preemptStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('preempt cpu '+cpuNumber);thread.lastEntryTs=ts;thread.preemptStartCaller=event[1];thread.preemptStartParent=event[2];return true;},preemptEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('preempt cpu '+cpuNumber);thread.preemptEndCaller=event[1];thread.preemptEndParent=event[2];if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.preemptStartParent+': '+thread.preemptStartCaller,ColorScheme.getColorIdForGeneralPurposeString(thread.preemptEndCaller),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);} -thread.lastEntryTs=undefined;return true;},irqoffStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('irqoff cpu '+cpuNumber);thread.lastEntryTs=ts;thread.irqoffStartCaller=event[1];thread.irqoffStartParent=event[2];return true;},irqoffEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=preemptirqRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread('irqoff cpu '+cpuNumber);thread.irqoffEndCaller=event[1];thread.irqoffEndParent=event[2];if(thread.lastEntryTs!==undefined){const duration=ts-thread.lastEntryTs;const slice=new tr.model.ThreadSlice('',thread.irqoffStartParent+': '+thread.irqoffStartCaller,ColorScheme.getColorIdForGeneralPurposeString(thread.irqoffEndCaller),thread.lastEntryTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);} -thread.lastEntryTs=undefined;return true;}};Parser.register(IrqParser);return{IrqParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const LinuxPerfParser=tr.e.importer.linux_perf.Parser;function KernelFuncParser(importer){LinuxPerfParser.call(this,importer);importer.registerEventHandler('graph_ent',KernelFuncParser.prototype.traceKernelFuncEnterEvent.bind(this));importer.registerEventHandler('graph_ret',KernelFuncParser.prototype.traceKernelFuncReturnEvent.bind(this));this.model_=importer.model_;this.ppids_={};} -const TestExports={};const funcEnterRE=new RegExp('func=(.+)');TestExports.funcEnterRE=funcEnterRE;KernelFuncParser.prototype={__proto__:LinuxPerfParser.prototype,traceKernelFuncEnterEvent(eventName,cpuNumber,pid,ts,eventBase){const eventData=funcEnterRE.exec(eventBase.details);if(!eventData)return false;if(eventBase.tgid===undefined){return false;} -const tgid=parseInt(eventBase.tgid);const name=eventData[1];const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;} -const slice=slices.beginSlice(null,name,ts,{});return true;},traceKernelFuncReturnEvent(eventName,cpuNumber,pid,ts,eventBase){if(eventBase.tgid===undefined){return false;} -const tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;} -if(slices.openSliceCount>0){slices.endSlice(ts);} -return true;}};LinuxPerfParser.register(KernelFuncParser);return{KernelFuncParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function MaliParser(importer){Parser.call(this,importer);importer.registerEventHandler('mali_dvfs_event',MaliParser.prototype.dvfsEventEvent.bind(this));importer.registerEventHandler('mali_dvfs_set_clock',MaliParser.prototype.dvfsSetClockEvent.bind(this));importer.registerEventHandler('mali_dvfs_set_voltage',MaliParser.prototype.dvfsSetVoltageEvent.bind(this));this.addJMCounter('mali_hwc_MESSAGES_SENT','Messages Sent');this.addJMCounter('mali_hwc_MESSAGES_RECEIVED','Messages Received');this.addJMCycles('mali_hwc_GPU_ACTIVE','GPU Active');this.addJMCycles('mali_hwc_IRQ_ACTIVE','IRQ Active');for(let i=0;i<7;i++){const jobStr='JS'+i;const jobHWCStr='mali_hwc_'+jobStr;this.addJMCounter(jobHWCStr+'_JOBS',jobStr+' Jobs');this.addJMCounter(jobHWCStr+'_TASKS',jobStr+' Tasks');this.addJMCycles(jobHWCStr+'_ACTIVE',jobStr+' Active');this.addJMCycles(jobHWCStr+'_WAIT_READ',jobStr+' Wait Read');this.addJMCycles(jobHWCStr+'_WAIT_ISSUE',jobStr+' Wait Issue');this.addJMCycles(jobHWCStr+'_WAIT_DEPEND',jobStr+' Wait Depend');this.addJMCycles(jobHWCStr+'_WAIT_FINISH',jobStr+' Wait Finish');} -this.addTilerCounter('mali_hwc_TRIANGLES','Triangles');this.addTilerCounter('mali_hwc_QUADS','Quads');this.addTilerCounter('mali_hwc_POLYGONS','Polygons');this.addTilerCounter('mali_hwc_POINTS','Points');this.addTilerCounter('mali_hwc_LINES','Lines');this.addTilerCounter('mali_hwc_VCACHE_HIT','VCache Hit');this.addTilerCounter('mali_hwc_VCACHE_MISS','VCache Miss');this.addTilerCounter('mali_hwc_FRONT_FACING','Front Facing');this.addTilerCounter('mali_hwc_BACK_FACING','Back Facing');this.addTilerCounter('mali_hwc_PRIM_VISIBLE','Prim Visible');this.addTilerCounter('mali_hwc_PRIM_CULLED','Prim Culled');this.addTilerCounter('mali_hwc_PRIM_CLIPPED','Prim Clipped');this.addTilerCounter('mali_hwc_WRBUF_HIT','Wrbuf Hit');this.addTilerCounter('mali_hwc_WRBUF_MISS','Wrbuf Miss');this.addTilerCounter('mali_hwc_WRBUF_LINE','Wrbuf Line');this.addTilerCounter('mali_hwc_WRBUF_PARTIAL','Wrbuf Partial');this.addTilerCounter('mali_hwc_WRBUF_STALL','Wrbuf Stall');this.addTilerCycles('mali_hwc_ACTIVE','Tiler Active');this.addTilerCycles('mali_hwc_INDEX_WAIT','Index Wait');this.addTilerCycles('mali_hwc_INDEX_RANGE_WAIT','Index Range Wait');this.addTilerCycles('mali_hwc_VERTEX_WAIT','Vertex Wait');this.addTilerCycles('mali_hwc_PCACHE_WAIT','Pcache Wait');this.addTilerCycles('mali_hwc_WRBUF_WAIT','Wrbuf Wait');this.addTilerCycles('mali_hwc_BUS_READ','Bus Read');this.addTilerCycles('mali_hwc_BUS_WRITE','Bus Write');this.addTilerCycles('mali_hwc_TILER_UTLB_STALL','Tiler UTLB Stall');this.addTilerCycles('mali_hwc_TILER_UTLB_HIT','Tiler UTLB Hit');this.addFragCycles('mali_hwc_FRAG_ACTIVE','Active');this.addFragCounter('mali_hwc_FRAG_PRIMATIVES','Primitives');this.addFragCounter('mali_hwc_FRAG_PRIMATIVES_DROPPED','Primitives Dropped');this.addFragCycles('mali_hwc_FRAG_CYCLE_DESC','Descriptor Processing');this.addFragCycles('mali_hwc_FRAG_CYCLES_PLR','PLR Processing??');this.addFragCycles('mali_hwc_FRAG_CYCLES_VERT','Vertex Processing');this.addFragCycles('mali_hwc_FRAG_CYCLES_TRISETUP','Triangle Setup');this.addFragCycles('mali_hwc_FRAG_CYCLES_RAST','Rasterization???');this.addFragCounter('mali_hwc_FRAG_THREADS','Threads');this.addFragCounter('mali_hwc_FRAG_DUMMY_THREADS','Dummy Threads');this.addFragCounter('mali_hwc_FRAG_QUADS_RAST','Quads Rast');this.addFragCounter('mali_hwc_FRAG_QUADS_EZS_TEST','Quads EZS Test');this.addFragCounter('mali_hwc_FRAG_QUADS_EZS_KILLED','Quads EZS Killed');this.addFragCounter('mali_hwc_FRAG_QUADS_LZS_TEST','Quads LZS Test');this.addFragCounter('mali_hwc_FRAG_QUADS_LZS_KILLED','Quads LZS Killed');this.addFragCycles('mali_hwc_FRAG_CYCLE_NO_TILE','No Tiles');this.addFragCounter('mali_hwc_FRAG_NUM_TILES','Tiles');this.addFragCounter('mali_hwc_FRAG_TRANS_ELIM','Transactions Eliminated');this.addComputeCycles('mali_hwc_COMPUTE_ACTIVE','Active');this.addComputeCounter('mali_hwc_COMPUTE_TASKS','Tasks');this.addComputeCounter('mali_hwc_COMPUTE_THREADS','Threads Started');this.addComputeCycles('mali_hwc_COMPUTE_CYCLES_DESC','Waiting for Descriptors');this.addTripipeCycles('mali_hwc_TRIPIPE_ACTIVE','Active');this.addArithCounter('mali_hwc_ARITH_WORDS','Instructions (/Pipes)');this.addArithCycles('mali_hwc_ARITH_CYCLES_REG','Reg scheduling stalls (/Pipes)');this.addArithCycles('mali_hwc_ARITH_CYCLES_L0','L0 cache miss stalls (/Pipes)');this.addArithCounter('mali_hwc_ARITH_FRAG_DEPEND','Frag dep check failures (/Pipes)');this.addLSCounter('mali_hwc_LS_WORDS','Instruction Words Completed');this.addLSCounter('mali_hwc_LS_ISSUES','Full Pipeline Issues');this.addLSCounter('mali_hwc_LS_RESTARTS','Restarts (unpairable insts)');this.addLSCounter('mali_hwc_LS_REISSUES_MISS','Pipeline reissue (cache miss/uTLB)');this.addLSCounter('mali_hwc_LS_REISSUES_VD','Pipeline reissue (varying data)');this.addLSCounter('mali_hwc_LS_REISSUE_ATTRIB_MISS','Pipeline reissue (attribute cache miss)');this.addLSCounter('mali_hwc_LS_REISSUE_NO_WB','Writeback not used');this.addTexCounter('mali_hwc_TEX_WORDS','Words');this.addTexCounter('mali_hwc_TEX_BUBBLES','Bubbles');this.addTexCounter('mali_hwc_TEX_WORDS_L0','Words L0');this.addTexCounter('mali_hwc_TEX_WORDS_DESC','Words Desc');this.addTexCounter('mali_hwc_TEX_THREADS','Threads');this.addTexCounter('mali_hwc_TEX_RECIRC_FMISS','Recirc due to Full Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_DESC','Recirc due to Desc Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_MULTI','Recirc due to Multipass');this.addTexCounter('mali_hwc_TEX_RECIRC_PMISS','Recirc due to Partial Cache Miss');this.addTexCounter('mali_hwc_TEX_RECIRC_CONF','Recirc due to Cache Conflict');this.addLSCCounter('mali_hwc_LSC_READ_HITS','Read Hits');this.addLSCCounter('mali_hwc_LSC_READ_MISSES','Read Misses');this.addLSCCounter('mali_hwc_LSC_WRITE_HITS','Write Hits');this.addLSCCounter('mali_hwc_LSC_WRITE_MISSES','Write Misses');this.addLSCCounter('mali_hwc_LSC_ATOMIC_HITS','Atomic Hits');this.addLSCCounter('mali_hwc_LSC_ATOMIC_MISSES','Atomic Misses');this.addLSCCounter('mali_hwc_LSC_LINE_FETCHES','Line Fetches');this.addLSCCounter('mali_hwc_LSC_DIRTY_LINE','Dirty Lines');this.addLSCCounter('mali_hwc_LSC_SNOOPS','Snoops');this.addAXICounter('mali_hwc_AXI_TLB_STALL','Address channel stall');this.addAXICounter('mali_hwc_AXI_TLB_MISS','Cache Miss');this.addAXICounter('mali_hwc_AXI_TLB_TRANSACTION','Transactions');this.addAXICounter('mali_hwc_LS_TLB_MISS','LS Cache Miss');this.addAXICounter('mali_hwc_LS_TLB_HIT','LS Cache Hit');this.addAXICounter('mali_hwc_AXI_BEATS_READ','Read Beats');this.addAXICounter('mali_hwc_AXI_BEATS_WRITE','Write Beats');this.addMMUCounter('mali_hwc_MMU_TABLE_WALK','Page Table Walks');this.addMMUCounter('mali_hwc_MMU_REPLAY_MISS','Cache Miss from Replay Buffer');this.addMMUCounter('mali_hwc_MMU_REPLAY_FULL','Replay Buffer Full');this.addMMUCounter('mali_hwc_MMU_NEW_MISS','Cache Miss on New Request');this.addMMUCounter('mali_hwc_MMU_HIT','Cache Hit');this.addMMUCycles('mali_hwc_UTLB_STALL','UTLB Stalled');this.addMMUCycles('mali_hwc_UTLB_REPLAY_MISS','UTLB Replay Miss');this.addMMUCycles('mali_hwc_UTLB_REPLAY_FULL','UTLB Replay Full');this.addMMUCycles('mali_hwc_UTLB_NEW_MISS','UTLB New Miss');this.addMMUCycles('mali_hwc_UTLB_HIT','UTLB Hit');this.addL2Counter('mali_hwc_L2_READ_BEATS','Read Beats');this.addL2Counter('mali_hwc_L2_WRITE_BEATS','Write Beats');this.addL2Counter('mali_hwc_L2_ANY_LOOKUP','Any Lookup');this.addL2Counter('mali_hwc_L2_READ_LOOKUP','Read Lookup');this.addL2Counter('mali_hwc_L2_SREAD_LOOKUP','Shareable Read Lookup');this.addL2Counter('mali_hwc_L2_READ_REPLAY','Read Replayed');this.addL2Counter('mali_hwc_L2_READ_SNOOP','Read Snoop');this.addL2Counter('mali_hwc_L2_READ_HIT','Read Cache Hit');this.addL2Counter('mali_hwc_L2_CLEAN_MISS','CleanUnique Miss');this.addL2Counter('mali_hwc_L2_WRITE_LOOKUP','Write Lookup');this.addL2Counter('mali_hwc_L2_SWRITE_LOOKUP','Shareable Write Lookup');this.addL2Counter('mali_hwc_L2_WRITE_REPLAY','Write Replayed');this.addL2Counter('mali_hwc_L2_WRITE_SNOOP','Write Snoop');this.addL2Counter('mali_hwc_L2_WRITE_HIT','Write Cache Hit');this.addL2Counter('mali_hwc_L2_EXT_READ_FULL','ExtRD with BIU Full');this.addL2Counter('mali_hwc_L2_EXT_READ_HALF','ExtRD with BIU >1/2 Full');this.addL2Counter('mali_hwc_L2_EXT_WRITE_FULL','ExtWR with BIU Full');this.addL2Counter('mali_hwc_L2_EXT_WRITE_HALF','ExtWR with BIU >1/2 Full');this.addL2Counter('mali_hwc_L2_EXT_READ','External Read (ExtRD)');this.addL2Counter('mali_hwc_L2_EXT_READ_LINE','ExtRD (linefill)');this.addL2Counter('mali_hwc_L2_EXT_WRITE','External Write (ExtWR)');this.addL2Counter('mali_hwc_L2_EXT_WRITE_LINE','ExtWR (linefill)');this.addL2Counter('mali_hwc_L2_EXT_WRITE_SMALL','ExtWR (burst size <64B)');this.addL2Counter('mali_hwc_L2_EXT_BARRIER','External Barrier');this.addL2Counter('mali_hwc_L2_EXT_AR_STALL','Address Read stalls');this.addL2Counter('mali_hwc_L2_EXT_R_BUF_FULL','Response Buffer full stalls');this.addL2Counter('mali_hwc_L2_EXT_RD_BUF_FULL','Read Data Buffer full stalls');this.addL2Counter('mali_hwc_L2_EXT_R_RAW','RAW hazard stalls');this.addL2Counter('mali_hwc_L2_EXT_W_STALL','Write Data stalls');this.addL2Counter('mali_hwc_L2_EXT_W_BUF_FULL','Write Data Buffer full');this.addL2Counter('mali_hwc_L2_EXT_R_W_HAZARD','WAW or WAR hazard stalls');this.addL2Counter('mali_hwc_L2_TAG_HAZARD','Tag hazard replays');this.addL2Cycles('mali_hwc_L2_SNOOP_FULL','Snoop buffer full');this.addL2Cycles('mali_hwc_L2_REPLAY_FULL','Replay buffer full');importer.registerEventHandler('tracing_mark_write:mali_driver',MaliParser.prototype.maliDDKEvent.bind(this));importer.registerEventHandler('mali_job_systrace_event_start',MaliParser.prototype.maliJobEvent.bind(this));importer.registerEventHandler('mali_job_systrace_event_stop',MaliParser.prototype.maliJobEvent.bind(this));this.model_=importer.model_;this.deferredJobs_={};} -MaliParser.prototype={__proto__:Parser.prototype,maliDDKOpenSlice(pid,tid,ts,func,blockinfo){const thread=this.importer.model_.getOrCreateProcess(pid).getOrCreateThread(tid);const funcArgs=/^([\w\d_]*)(?:\(\))?:?\s*(.*)$/.exec(func);thread.sliceGroup.beginSlice('gpu-driver',funcArgs[1],ts,{'args':funcArgs[2],blockinfo});},maliDDKCloseSlice(pid,tid,ts,args,blockinfo){const thread=this.importer.model_.getOrCreateProcess(pid).getOrCreateThread(tid);if(!thread.sliceGroup.openSliceCount){return;} -thread.sliceGroup.endSlice(ts);},autoDetectLineRE(line){const lineREWithThread=/^\s*\(([\w\-]*)\)\s*(\w+):\s*([\w\\\/\.\-]*@\d*):?\s*(.*)$/;if(lineREWithThread.test(line)){return lineREWithThread;} -const lineRENoThread=/^s*()(\w+):\s*([\w\\\/.\-]*):?\s*(.*)$/;if(lineRENoThread.test(line)){return lineRENoThread;} -return null;},lineRE:null,maliDDKEvent(eventName,cpuNumber,pid,ts,eventBase){if(this.lineRE===null){this.lineRE=this.autoDetectLineRE(eventBase.details);if(this.lineRE===null)return false;} -const maliEvent=this.lineRE.exec(eventBase.details);const tid=(maliEvent[1]===''?'mali':maliEvent[1]);switch(maliEvent[2]){case'cros_trace_print_enter':this.maliDDKOpenSlice(pid,tid,ts,maliEvent[4],maliEvent[3]);break;case'cros_trace_print_exit':this.maliDDKCloseSlice(pid,tid,ts,[],maliEvent[3]);} -return true;},maliJobEvent(eventName,cpuNumber,pid,ts,eventBase){const jobEventRE=/^.*tracing_mark_write: (S|F)\|(\d+)\|(\w+)-job\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|(\d+)\|([a-z0-9]+)\|(\d+)$/;const jobEvent=jobEventRE.exec(eventBase.details);if(!jobEvent){this.model_.importWarning({type:'parse_error',args:'unexpected mali_job_systrace_event_* event syntax'});return;} -const jobType=jobEvent[3];const jobId=jobEvent[4];const thread=this.importer.model_.getOrCreateProcess(0).getOrCreateThread('mali:'+jobType);switch(jobEvent[1]){case'S':{const args={ctx:jobEvent[9],pid:parseInt(jobEvent[2],10),dep0:parseInt(jobEvent[5],10),dep1:parseInt(jobEvent[7],10)};if(thread.sliceGroup.openSliceCount){if(!(jobType in this.deferredJobs_)){this.deferredJobs_[jobType]=[];} -this.deferredJobs_[jobType].push({id:jobId,args});}else{thread.sliceGroup.beginSlice(null,jobId,ts,args);}}break;case'F':{if(!thread.sliceGroup.openSliceCount){return;} -if(thread.sliceGroup.mostRecentlyOpenedPartialSlice.title!==jobId){this.model_.importWarning({type:'invalid event nesting',message:'non-sequential jobs in same mali job slot'});} -thread.sliceGroup.endSlice(ts);const deferredJobs=this.deferredJobs_[jobType];if(deferredJobs&&deferredJobs.length){const job=deferredJobs.shift();thread.sliceGroup.beginSlice(null,job.id,ts,job.args);}}break;} -return true;},dvfsSample(counterName,seriesName,ts,s){const value=parseInt(s);const counter=this.model_.kernel.getOrCreateCounter('DVFS',counterName);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries(seriesName,ColorScheme.getColorIdForGeneralPurposeString(counter.name)));} -counter.series.forEach(function(series){series.addCounterSample(ts,value);});},dvfsEventEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/utilization=(\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Utilization','utilization',ts,event[1]);return true;},dvfsSetClockEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/frequency=(\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Frequency','frequency',ts,event[1]);return true;},dvfsSetVoltageEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/voltage=(\d+)/.exec(eventBase.details);if(!event)return false;this.dvfsSample('DVFS Voltage','voltage',ts,event[1]);return true;},hwcSample(cat,counterName,seriesName,ts,eventBase){const event=/val=(\d+)/.exec(eventBase.details);if(!event)return false;const value=parseInt(event[1]);const counter=this.model_.kernel.getOrCreateCounter(cat,counterName);if(counter.numSeries===0){counter.addSeries(new tr.model.CounterSeries(seriesName,ColorScheme.getColorIdForGeneralPurposeString(counter.name)));} -counter.series.forEach(function(series){series.addCounterSample(ts,value);});return true;},jmSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:jm','JM: '+ctrName,seriesName,ts,eventBase);},addJMCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.jmSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addJMCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.jmSample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},tilerSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:tiler','Tiler: '+ctrName,seriesName,ts,eventBase);},addTilerCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.tilerSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addTilerCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.tilerSample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},fragSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:fragment','Fragment: '+ctrName,seriesName,ts,eventBase);},addFragCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.fragSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addFragCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.fragSample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},computeSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:compute','Compute: '+ctrName,seriesName,ts,eventBase);},addComputeCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.computeSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addComputeCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.computeSample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addTripipeCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:shader','Tripipe: '+hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},arithSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:arith','Arith: '+ctrName,seriesName,ts,eventBase);},addArithCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.arithSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addArithCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.arithSample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addLSCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:ls','LS: '+hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},textureSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:texture','Texture: '+ctrName,seriesName,ts,eventBase);},addTexCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.textureSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addLSCCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:lsc','LSC: '+hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addAXICounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.hwcSample('mali:axi','AXI: '+hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},mmuSample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:mmu','MMU: '+ctrName,seriesName,ts,eventBase);},addMMUCounter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.mmuSample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addMMUCycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.mmuSample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},l2Sample(ctrName,seriesName,ts,eventBase){return this.hwcSample('mali:l2','L2: '+ctrName,seriesName,ts,eventBase);},addL2Counter(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.l2Sample(hwcTitle,'count',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));},addL2Cycles(hwcEventName,hwcTitle){function handler(eventName,cpuNumber,pid,ts,eventBase){return this.l2Sample(hwcTitle,'cycles',ts,eventBase);} -this.importer.registerEventHandler(hwcEventName,handler.bind(this));}};Parser.register(MaliParser);return{MaliParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function MemReclaimParser(importer){Parser.call(this,importer);importer.registerEventHandler('mm_vmscan_kswapd_wake',MemReclaimParser.prototype.kswapdWake.bind(this));importer.registerEventHandler('mm_vmscan_kswapd_sleep',MemReclaimParser.prototype.kswapdSleep.bind(this));importer.registerEventHandler('mm_vmscan_direct_reclaim_begin',MemReclaimParser.prototype.reclaimBegin.bind(this));importer.registerEventHandler('mm_vmscan_direct_reclaim_end',MemReclaimParser.prototype.reclaimEnd.bind(this));importer.registerEventHandler('lowmemory_kill',MemReclaimParser.prototype.lowmemoryKill.bind(this));} -const kswapdWakeRE=/nid=(\d+) order=(\d+)/;const kswapdSleepRE=/nid=(\d+)/;const reclaimBeginRE=/order=(\d+) may_writepage=\d+ gfp_flags=(.+)/;const reclaimEndRE=/nr_reclaimed=(\d+)/;const lowmemoryRE=/([^ ]+) \((\d+)\), page cache (\d+)kB \(limit (\d+)kB\), free (-?\d+)Kb/;MemReclaimParser.prototype={__proto__:Parser.prototype,kswapdWake(eventName,cpuNumber,pid,ts,eventBase){const event=kswapdWakeRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const nid=parseInt(event[1]);const order=parseInt(event[2]);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.openSliceTS){if(order>kthread.order){kthread.order=order;}}else{kthread.openSliceTS=ts;kthread.order=order;} -kthread.waitingFor='kswapSleep';return true;},kswapdSleep(eventName,cpuNumber,pid,ts,eventBase){const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.waitingFor!=='kswapSleep')return false;kthread.waitingFor=undefined;if(kthread.openSliceTS){kthread.thread.sliceGroup.pushCompleteSlice('memreclaim',eventBase.threadName,kthread.openSliceTS,ts-kthread.openSliceTS,0,0,{order:kthread.order});} -kthread.openSliceTS=undefined;kthread.order=undefined;return true;},reclaimBegin(eventName,cpuNumber,pid,ts,eventBase){const event=reclaimBeginRE.exec(eventBase.details);if(!event)return false;const order=parseInt(event[1]);const gfp=event[2];const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);kthread.openMemReclaimSliceTS=ts;kthread.order=order;kthread.gfp=gfp;kthread.waitingFor='reclaimEnd';return true;},reclaimEnd(eventName,cpuNumber,pid,ts,eventBase){const event=reclaimEndRE.exec(eventBase.details);if(!event)return false;const nrReclaimed=parseInt(event[1]);const tgid=parseInt(eventBase.tgid);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);if(kthread.waitingFor!=='reclaimEnd')return false;kthread.waitingFor=undefined;if(kthread.openMemReclaimSliceTS!==undefined){kthread.thread.sliceGroup.pushCompleteSlice('memreclaim','direct reclaim',kthread.openMemReclaimSliceTS,ts-kthread.openMemReclaimSliceTS,0,0,{order:kthread.order,gfp:kthread.gfp,nr_reclaimed:nrReclaimed});kthread.openMemReclaimSliceTS=undefined;kthread.order=undefined;kthread.gfp=undefined;return true;} -return false;},lowmemoryKill(eventName,cpuNumber,pid,ts,eventBase){const event=lowmemoryRE.exec(eventBase.details);if(!event)return false;const tgid=parseInt(eventBase.tgid);const killedName=event[1];const killedPid=parseInt(event[2]);const cache=parseInt(event[3]);const free=parseInt(event[5]);const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,tgid,pid);kthread.thread.sliceGroup.pushCompleteSlice('lowmemory','low memory kill',ts,0,0,0,{killed_name:killedName,killed_pid:killedPid,cache,free});return true;}};Parser.register(MemReclaimParser);return{MemReclaimParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function PowerParser(importer){Parser.call(this,importer);importer.registerEventHandler('power_start',PowerParser.prototype.powerStartEvent.bind(this));importer.registerEventHandler('power_frequency',PowerParser.prototype.powerFrequencyEvent.bind(this));importer.registerEventHandler('cpu_frequency',PowerParser.prototype.cpuFrequencyEvent.bind(this));importer.registerEventHandler('cpu_frequency_limits',PowerParser.prototype.cpuFrequencyLimitsEvent.bind(this));importer.registerEventHandler('cpu_idle',PowerParser.prototype.cpuIdleEvent.bind(this));} -PowerParser.prototype={__proto__:Parser.prototype,cpuStateSlice(ts,targetCpuNumber,eventType,cpuState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);if(eventType!=='1'){this.importer.model.importWarning({type:'parse_error',message:'Don\'t understand power_start events of '+'type '+eventType});return;} -const powerCounter=targetCpu.getOrCreateCounter('','C-State');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'state')));} -powerCounter.series.forEach(function(series){series.addCounterSample(ts,cpuState);});},cpuIdleSlice(ts,targetCpuNumber,cpuState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','C-State');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name)));} -const val=(cpuState!==4294967295?cpuState+1:0);powerCounter.series.forEach(function(series){series.addCounterSample(ts,val);});},cpuFrequencySlice(ts,targetCpuNumber,powerState){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Clock Frequency');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('state',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'state')));} -powerCounter.series.forEach(function(series){series.addCounterSample(ts,powerState);});},cpuFrequencyLimitsSlice(ts,targetCpuNumber,minFreq,maxFreq){const targetCpu=this.importer.getOrCreateCpu(targetCpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Clock Frequency Limits');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('Min Frequency',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'Min Frequency')));powerCounter.addSeries(new tr.model.CounterSeries('Max Frequency',ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'Max Frequency')));} -powerCounter.series.forEach(function(series){if(series.name==='Min Frequency'){series.addCounterSample(ts,minFreq);} -if(series.name==='Max Frequency'){series.addCounterSample(ts,maxFreq);}});},powerStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/type=(\d+) state=(\d) cpu_id=(\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const cpuState=parseInt(event[2]);this.cpuStateSlice(ts,targetCpuNumber,event[1],cpuState);return true;},powerFrequencyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/type=(\d+) state=(\d+) cpu_id=(\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const powerState=parseInt(event[2]);this.cpuFrequencySlice(ts,targetCpuNumber,powerState);return true;},cpuFrequencyEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/state=(\d+) cpu_id=(\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[2]);const powerState=parseInt(event[1]);this.cpuFrequencySlice(ts,targetCpuNumber,powerState);return true;},cpuFrequencyLimitsEvent(eventName,cpu,pid,ts,eventBase){const event=/min=(\d+) max=(\d+) cpu_id=(\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[3]);const minFreq=parseInt(event[1]);const maxFreq=parseInt(event[2]);this.cpuFrequencyLimitsSlice(ts,targetCpuNumber,minFreq,maxFreq);return true;},cpuIdleEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/state=(\d+) cpu_id=(\d+)/.exec(eventBase.details);if(!event)return false;const targetCpuNumber=parseInt(event[2]);const cpuState=parseInt(event[1]);this.cpuIdleSlice(ts,targetCpuNumber,cpuState);return true;}};Parser.register(PowerParser);return{PowerParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function RegulatorParser(importer){Parser.call(this,importer);importer.registerEventHandler('regulator_enable',RegulatorParser.prototype.regulatorEnableEvent.bind(this));importer.registerEventHandler('regulator_enable_delay',RegulatorParser.prototype.regulatorEnableDelayEvent.bind(this));importer.registerEventHandler('regulator_enable_complete',RegulatorParser.prototype.regulatorEnableCompleteEvent.bind(this));importer.registerEventHandler('regulator_disable',RegulatorParser.prototype.regulatorDisableEvent.bind(this));importer.registerEventHandler('regulator_disable_complete',RegulatorParser.prototype.regulatorDisableCompleteEvent.bind(this));importer.registerEventHandler('regulator_set_voltage',RegulatorParser.prototype.regulatorSetVoltageEvent.bind(this));importer.registerEventHandler('regulator_set_voltage_complete',RegulatorParser.prototype.regulatorSetVoltageCompleteEvent.bind(this));this.model_=importer.model_;} -const regulatorEnableRE=/name=(.+)/;const regulatorDisableRE=/name=(.+)/;const regulatorSetVoltageCompleteRE=/name=(\S+), val=(\d+)/;RegulatorParser.prototype={__proto__:Parser.prototype,getCtr_(ctrName,valueName){const ctr=this.model_.kernel.getOrCreateCounter(null,'vreg '+ctrName+' '+valueName);if(ctr.series[0]===undefined){ctr.addSeries(new tr.model.CounterSeries(valueName,ColorScheme.getColorIdForGeneralPurposeString(ctrName+'.'+valueName)));} -return ctr;},regulatorEnableEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorEnableRE.exec(eventBase.details);if(!event)return false;const name=event[1];const ctr=this.getCtr_(name,'enabled');ctr.series[0].addCounterSample(ts,1);return true;},regulatorEnableDelayEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorEnableCompleteEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorDisableEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorDisableRE.exec(eventBase.details);if(!event)return false;const name=event[1];const ctr=this.getCtr_(name,'enabled');ctr.series[0].addCounterSample(ts,0);return true;},regulatorDisableCompleteEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorSetVoltageEvent(eventName,cpuNum,pid,ts,eventBase){return true;},regulatorSetVoltageCompleteEvent(eventName,cpuNum,pid,ts,eventBase){const event=regulatorSetVoltageCompleteRE.exec(eventBase.details);if(!event)return false;const name=event[1];const voltage=parseInt(event[2]);const ctr=this.getCtr_(name,'voltage');ctr.series[0].addCounterSample(ts,voltage);return true;}};Parser.register(RegulatorParser);return{RegulatorParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function RssParser(importer){Parser.call(this,importer);importer.registerEventHandler('rss_stat',RssParser.prototype.rssStat.bind(this));} -const TestExports={};const rssStatRE=new RegExp('member=(\\d+) size=(\\d+)');TestExports.rssStatRE=rssStatRE;const unknownThreadName='<...>';RssParser.prototype={__proto__:Parser.prototype,rssStat(eventName,cpuNumber,pid,ts,eventBase){const event=rssStatRE.exec(eventBase.details);if(!event)return false;const member=parseInt(event[1]);const size=parseInt(event[2]);if(eventBase.tgid===undefined){return false;} -const tgid=parseInt(eventBase.tgid);const process=this.importer.model_.getOrCreateProcess(tgid);let subTitle='';if(member===0){subTitle=' (file pages)';}else if(member===1){subTitle=' (anon)';} -const rssCounter=process.getOrCreateCounter('RSS','RSS '+member+subTitle);if(rssCounter.numSeries===0){rssCounter.addSeries(new tr.model.CounterSeries('RSS',tr.b.ColorScheme.getColorIdForGeneralPurposeString(rssCounter.name)));} -rssCounter.series.forEach(function(series){series.addCounterSample(ts,size);});return true;},};Parser.register(RssParser);return{RssParser,_RssParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const Parser=tr.e.importer.linux_perf.Parser;function SchedParser(importer){Parser.call(this,importer);importer.registerEventHandler('sched_switch',SchedParser.prototype.schedSwitchEvent.bind(this));importer.registerEventHandler('sched_wakeup',SchedParser.prototype.schedWakeupEvent.bind(this));importer.registerEventHandler('sched_blocked_reason',SchedParser.prototype.schedBlockedEvent.bind(this));importer.registerEventHandler('sched_cpu_hotplug',SchedParser.prototype.schedCpuHotplugEvent.bind(this));} -const TestExports={};const schedSwitchRE=new RegExp('prev_comm=(.+) prev_pid=(\\d+) prev_prio=(\\d+) '+'prev_state=(\\S\\+?|\\S\\|\\S) ==> '+'next_comm=(.+) next_pid=(\\d+) next_prio=(\\d+)');const schedBlockedRE=new RegExp('pid=(\\d+) iowait=(\\d) caller=(.+)');TestExports.schedSwitchRE=schedSwitchRE;const schedWakeupRE=/comm=(.+) pid=(\d+) prio=(\d+)(?: success=\d+)? target_cpu=(\d+)/;TestExports.schedWakeupRE=schedWakeupRE;const unknownThreadName='<...>';SchedParser.prototype={__proto__:Parser.prototype,schedSwitchEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedSwitchRE.exec(eventBase.details);if(!event)return false;const prevState=event[4];const nextComm=event[5];const nextPid=parseInt(event[6]);const nextPrio=parseInt(event[7]);if(eventBase.tgid!==undefined){const tgid=parseInt(eventBase.tgid);const process=this.importer.model_.getOrCreateProcess(tgid);const storedThread=process.getThread(pid);if(!storedThread){const thread=process.getOrCreateThread(pid);thread.name=eventBase.threadName;}else if(storedThread.name===unknownThreadName){storedThread.name=eventBase.threadName;}} -const nextThread=this.importer.threadsByLinuxPid[nextPid];let nextName;if(nextThread){nextName=nextThread.userFriendlyName;}else{nextName=nextComm;} -const cpu=this.importer.getOrCreateCpu(cpuNumber);cpu.switchActiveThread(ts,{stateWhenDescheduled:prevState},nextPid,nextName,{comm:nextComm,tid:nextPid,prio:nextPrio});return true;},schedWakeupEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedWakeupRE.exec(eventBase.details);if(!event)return false;const fromPid=pid;const comm=event[1];pid=parseInt(event[2]);const prio=parseInt(event[3]);this.importer.markPidRunnable(ts,pid,comm,prio,fromPid);return true;},schedCpuHotplugEvent(eventName,cpuNumber,pid,ts,eventBase){const event=/cpu (\d+) (.+) error=(\d+)/.exec(eventBase.details);if(!event)return false;cpuNumber=event[1];const state=event[2];const targetCpu=this.importer.getOrCreateCpu(cpuNumber);const powerCounter=targetCpu.getOrCreateCounter('','Cpu Hotplug');if(powerCounter.numSeries===0){powerCounter.addSeries(new tr.model.CounterSeries('State',tr.b.ColorScheme.getColorIdForGeneralPurposeString(powerCounter.name+'.'+'State')));} -powerCounter.series.forEach(function(series){if(series.name==='State'){series.addCounterSample(ts,state.localeCompare('offline')?0:1);}});return true;},schedBlockedEvent(eventName,cpuNumber,pid,ts,eventBase){const event=schedBlockedRE.exec(eventBase.details);if(!event)return false;pid=parseInt(event[1]);const iowait=parseInt(event[2]);const caller=event[3];this.importer.addPidBlockedReason(ts,pid,iowait,caller);return true;}};Parser.register(SchedParser);return{SchedParser,_SchedParserTestExports:TestExports};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function SyncParser(importer){Parser.call(this,importer);importer.registerEventHandler('sync_timeline',SyncParser.prototype.timelineEvent.bind(this));importer.registerEventHandler('sync_wait',SyncParser.prototype.syncWaitEvent.bind(this));importer.registerEventHandler('sync_pt',SyncParser.prototype.syncPtEvent.bind(this));this.model_=importer.model_;} -const syncTimelineRE=/name=(\S+) value=(\S*)/;const syncWaitRE=/(\S+) name=(\S+) state=(\d+)/;const syncPtRE=/name=(\S+) value=(\S*)/;SyncParser.prototype={__proto__:Parser.prototype,timelineEvent(eventName,cpuNumber,pid,ts,eventBase){const event=syncTimelineRE.exec(eventBase.details);if(!event)return false;const thread=this.importer.getOrCreatePseudoThread(event[1]);if(thread.lastActiveTs!==undefined){const duration=ts-thread.lastActiveTs;let value=thread.lastActiveValue;if(value===undefined)value=' ';const slice=new tr.model.ThreadSlice('',value,ColorScheme.getColorIdForGeneralPurposeString(value),thread.lastActiveTs,{},duration);thread.thread.sliceGroup.pushSlice(slice);} -thread.lastActiveTs=ts;thread.lastActiveValue=event[2];return true;},syncWaitEvent(eventName,cpuNumber,pid,ts,eventBase){const event=syncWaitRE.exec(eventBase.details);if(!event)return false;if(eventBase.tgid===undefined){return false;} -const tgid=parseInt(eventBase.tgid);const thread=this.model_.getOrCreateProcess(tgid).getOrCreateThread(pid);thread.name=eventBase.threadName;const slices=thread.kernelSliceGroup;if(!slices.isTimestampValidForBeginOrEnd(ts)){this.model_.importWarning({type:'parse_error',message:'Timestamps are moving backward.'});return false;} -const name='fence_wait("'+event[2]+'")';if(event[1]==='begin'){const slice=slices.beginSlice(null,name,ts,{'Start state':event[3]});}else if(event[1]==='end'){if(slices.openSliceCount>0){slices.endSlice(ts);}}else{return false;} -return true;},syncPtEvent(eventName,cpuNumber,pid,ts,eventBase){return!!syncPtRE.exec(eventBase.details);}};Parser.register(SyncParser);return{SyncParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const ColorScheme=tr.b.ColorScheme;const Parser=tr.e.importer.linux_perf.Parser;function WorkqueueParser(importer){Parser.call(this,importer);importer.registerEventHandler('workqueue_execute_start',WorkqueueParser.prototype.executeStartEvent.bind(this));importer.registerEventHandler('workqueue_execute_end',WorkqueueParser.prototype.executeEndEvent.bind(this));importer.registerEventHandler('workqueue_queue_work',WorkqueueParser.prototype.executeQueueWork.bind(this));importer.registerEventHandler('workqueue_activate_work',WorkqueueParser.prototype.executeActivateWork.bind(this));} -const workqueueExecuteStartRE=/work struct (.+): function (\S+)/;const workqueueExecuteEndRE=/work struct (.+)/;WorkqueueParser.prototype={__proto__:Parser.prototype,executeStartEvent(eventName,cpuNumber,pid,ts,eventBase){const event=workqueueExecuteStartRE.exec(eventBase.details);if(!event)return false;const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,pid,pid);kthread.openSliceTS=ts;kthread.openSlice=event[2];return true;},executeEndEvent(eventName,cpuNumber,pid,ts,eventBase){const event=workqueueExecuteEndRE.exec(eventBase.details);if(!event)return false;const kthread=this.importer.getOrCreateKernelThread(eventBase.threadName,pid,pid);if(kthread.openSlice){const slice=new tr.model.ThreadSlice('',kthread.openSlice,ColorScheme.getColorIdForGeneralPurposeString(kthread.openSlice),kthread.openSliceTS,{},ts-kthread.openSliceTS);kthread.thread.sliceGroup.pushSlice(slice);} -kthread.openSlice=undefined;return true;},executeQueueWork(eventName,cpuNumber,pid,ts,eventBase){return true;},executeActivateWork(eventName,cpuNumber,pid,ts,eventBase){return true;}};Parser.register(WorkqueueParser);return{WorkqueueParser,};});'use strict';tr.exportTo('tr.e.importer.linux_perf',function(){const MONOTONIC_TO_FTRACE_GLOBAL_SYNC_ID='linux_clock_monotonic_to_ftrace_global';const IMPORT_PRIORITY=2;function FTraceImporter(model,events){this.importPriority=IMPORT_PRIORITY;this.model_=model;this.events_=events;this.wakeups_=[];this.blockedReasons_=[];this.kernelThreadStates_={};this.buildMapFromLinuxPidsToThreads_();this.lines_=[];this.pseudoThreadCounter=1;this.parsers_=[];this.eventHandlers_={};this.haveClockSyncedMonotonicToGlobal_=false;this.clockDomainId_=tr.model.ClockDomainId.LINUX_FTRACE_GLOBAL;} -const TestExports={};const lineREWithTGID=new RegExp('^\\s*(.+)-(\\d+)\\s+\\(\\s*(\\d+|-+)\\)\\s\\[(\\d+)\\]'+'\\s+[dX.][Nnp.][Hhs.][0-9a-f.]'+'\\s+(\\d+\\.\\d+):\\s+(\\S+):\\s(.*)$');const lineParserWithTGID=function(line){const groups=lineREWithTGID.exec(line);if(!groups)return groups;let tgid=groups[3];if(tgid[0]==='-')tgid=undefined;return{threadName:groups[1],pid:groups[2],tgid,cpuNumber:groups[4],timestamp:groups[5],eventName:groups[6],details:groups[7]};};TestExports.lineParserWithTGID=lineParserWithTGID;const lineREWithIRQInfo=new RegExp('^\\s*(.+)-(\\d+)\\s+\\[(\\d+)\\]'+'\\s+[dX.][Nnp.][Hhs.][0-9a-f.]'+'\\s+(\\d+\\.\\d+):\\s+(\\S+):\\s(.*)$');const lineParserWithIRQInfo=function(line){const groups=lineREWithIRQInfo.exec(line);if(!groups)return groups;return{threadName:groups[1],pid:groups[2],cpuNumber:groups[3],timestamp:groups[4],eventName:groups[5],details:groups[6]};};TestExports.lineParserWithIRQInfo=lineParserWithIRQInfo;const lineREWithLegacyFmt=/^\s*(.+)-(\d+)\s+\[(\d+)\]\s*(\d+\.\d+):\s+(\S+):\s(.*)$/;const lineParserWithLegacyFmt=function(line){const groups=lineREWithLegacyFmt.exec(line);if(!groups){return groups;} -return{threadName:groups[1],pid:groups[2],cpuNumber:groups[3],timestamp:groups[4],eventName:groups[5],details:groups[6]};};TestExports.lineParserWithLegacyFmt=lineParserWithLegacyFmt;const traceEventClockSyncRE=/trace_event_clock_sync: parent_ts=(\d+\.?\d*)/;TestExports.traceEventClockSyncRE=traceEventClockSyncRE;const realTimeClockSyncRE=/trace_event_clock_sync: realtime_ts=(\d+)/;const genericClockSyncRE=/trace_event_clock_sync: name=([\w\-]+)/;const pseudoKernelPID=0;function autoDetectLineParser(line){if(line[0]==='{')return false;if(lineREWithTGID.test(line))return lineParserWithTGID;if(lineREWithIRQInfo.test(line))return lineParserWithIRQInfo;if(lineREWithLegacyFmt.test(line))return lineParserWithLegacyFmt;return undefined;} -TestExports.autoDetectLineParser=autoDetectLineParser;FTraceImporter.canImport=function(events){if(events instanceof tr.b.TraceStream)events=events.header;if(!(typeof(events)==='string'||events instanceof String)){return false;} -if(FTraceImporter._extractEventsFromSystraceHTML(events,false).ok){return true;} -if(FTraceImporter._extractEventsFromSystraceMultiHTML(events,false).ok){return true;} -if(/^# tracer:/.test(events))return true;const lineBreakIndex=events.indexOf('\n');if(lineBreakIndex>-1)events=events.substring(0,lineBreakIndex);if(autoDetectLineParser(events))return true;return false;};FTraceImporter._extractEventsFromSystraceHTML=function(incomingEvents,produceResult){const failure={ok:false};if(produceResult===undefined)produceResult=true;const header=incomingEvents instanceof tr.b.TraceStream?incomingEvents.header:incomingEvents;if(!/^/.test(header))return failure;const r=new tr.importer.SimpleLineReader(incomingEvents);if(!r.advanceToLineMatching(/^ - - diff --git a/deps/perfetto/manifest.json b/deps/perfetto/manifest.json deleted file mode 100644 index 26ef734f..00000000 --- a/deps/perfetto/manifest.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "resources": { - "assets/MaterialIcons.woff2": "sha256-THB+Mug7hh5UeaNZ5yZK88pWnLWCNTJMm8MtHXhPdas=", - "assets/Raleway-Regular.woff2": "sha256-NlDei8Ldg1KwGqSenwriJQmOhqMdoysE2Bq7drWY0NY=", - "assets/Raleway-Thin.woff2": "sha256-ZRS1+Xh/dFZeWZi/dz8QMWg/8PYQHNdazsNX2oX8s70=", - "assets/Roboto-100.woff2": "sha256-IkglhK6qex103gcnkyRsZeOLQCrCMfOLsNkQKAJUMjA=", - "assets/Roboto-300.woff2": "sha256-M1MLAHBxKBqX55uqsT3ffMS53pQuvT4hIiSFczX3y5c=", - "assets/Roboto-400.woff2": "sha256-zEYyLVxNQdpEfyb3+nFIJ/LsmhEpaMEu9XNsdJSYXso=", - "assets/Roboto-500.woff2": "sha256-u0btB5w908Oa9QUbStpI8p9JFR2tT6IYEXutL9teYW8=", - "assets/RobotoCondensed-Light.woff2": "sha256-rELob/HQ/Hinhwpyz10bvwpQmoUtuh2Kvcc0iSsNSEQ=", - "assets/RobotoCondensed-Regular.woff2": "sha256-SaG04SlmRaovUTyHoOX+VqMFp+1njC9kmWMewfOzWFY=", - "assets/RobotoMono-Regular.woff2": "sha256-5DK7glyj4CZ9Yo+ttqjKY7DMo/xzRfFcfwgPeouCFl4=", - "assets/brand.png": "sha256-U34ng2vKNqzITxwkGF+PPLQiM6YdB5fvDdqyHPHqiLo=", - "assets/catapult_trace_viewer.html": "sha256-wLrVZQID01LZXrQygBUzpUlJcvHKCcoetygA1jrOjj8=", - "assets/catapult_trace_viewer.js": "sha256-tpvMkJYBPHRuDjmhKIiiuCVJzjgWa4LcIRxqsb3axf0=", - "assets/favicon.png": "sha256-0kge5x4UIrS2BqOEKGzZd9l7thrAOJsoiliiwpfn4aE=", - "assets/logo-128.png": "sha256-c+D898ryKYVcgkNLeV5Pf25yi/D/nIv0OIXwmsGv8ns=", - "assets/logo-3d.png": "sha256-cNpuyQnaU7JRoW+T+QldM5a5xk4HwKVffw45V2tiKe0=", - "assets/rec_atrace.png": "sha256-dIcpPtIGrnXSgJcwmLcsbwsg3ckX7msQ7b81ct3TnYc=", - "assets/rec_battery_counters.png": "sha256-ps4d9PYYa5i8n6wgMVauITCXGQrv+y7PBudZbZLnHyw=", - "assets/rec_board_voltage.png": "sha256-6w5TN3sBYJNevRdjj3ZkzhDDwMsUID/EsOyL/v+JA2c=", - "assets/rec_cpu_coarse.png": "sha256-gqTfM9LG4xSOLTC+auuWvy5ovTLbVG6wb4c9KP4dZSs=", - "assets/rec_cpu_fine.png": "sha256-2ncaNBPU78Waf+H1VHr8qfcwhfSrRW+2yIBW3FVShLE=", - "assets/rec_cpu_freq.png": "sha256-0GNig+HKE0ag4KNmpOZvh+12teGKnWpoyGVYyzeYSrA=", - "assets/rec_cpu_voltage.png": "sha256-ap0/YZ0p0Q3Py6GoOJqrb2mPg8i2H9/09JpotIWZYr0=", - "assets/rec_frame_timeline.png": "sha256-epQ2K8lt+sMTX7dN0iHEInzNdmJrVpfZeEGeSuZRM7w=", - "assets/rec_ftrace.png": "sha256-+SxCOHlHkJw84Ev/oJxa5IcyHjRJEgCHtJVj4YNNC7I=", - "assets/rec_gpu_mem_total.png": "sha256-M4ggVqemJEoIB14Zz0/wFL7nORk7B06q4pIM6u1U8vo=", - "assets/rec_java_heap_dump.png": "sha256-wMPAmG/jj8mZUeHj/1RLxEInic0jLm4osHKUPicLoKc=", - "assets/rec_lmk.png": "sha256-i5s7gC4FPJF898aRvxew1ob0qp77Ts7YE/I65FSnsTg=", - "assets/rec_logcat.png": "sha256-saca16fp7AqXCVCEJqZav1/h/FuiEZJOl0avdhBjUdM=", - "assets/rec_long_trace.png": "sha256-IAj0+L2YJWw/uW1mNwf0bSQF269HqNlkwowapWbRsvg=", - "assets/rec_mem_hifreq.png": "sha256-KrITVZhp3/D+MetAFyY31NC68kJsdgu1DyPiZQksBU0=", - "assets/rec_meminfo.png": "sha256-tj+d95JJdPLYN0jUgYuT6xtZe2oGvuI09yTT9iKi1ig=", - "assets/rec_native_heap_profiler.png": "sha256-u7omLys+opSmE/DJZjSzSoJdKh0zcsg9LxWo9IhBg9Q=", - "assets/rec_one_shot.png": "sha256-CLJP9CsfHBUSEFFfn/mXVVZLFjKmLJVSqVYPxPHw56U=", - "assets/rec_ps_stats.png": "sha256-KvVjhTipkSR3xOYFPxcyKOpO+NP220BTRmhr8h1F4gM=", - "assets/rec_ring_buf.png": "sha256-IddHPrwbieCGZctKKbAHW2/1+3VQE3qXs1QwlkyoGKc=", - "assets/rec_syscalls.png": "sha256-4ePrwW8K9bI4VLHtZU5CyE0HXuMVn+DrInWejtWtQ0c=", - "assets/rec_vmstat.png": "sha256-NPpW3mqNqAU9gLehEMmEJa0qFEPjIWTFgFb+shQzxoc=", - "controller_bundle.js": "sha256-j/nQrxa7rG8NGA4QEAXQo5gli9GuJC0FvS36yBCZtiQ=", - "engine_bundle.js": "sha256-aIy8D6rn4x6D9LTz0+lqQbLIrbeJ3VxsyaDnD3g8zZY=", - "frontend_bundle.js": "sha256-3DR0K2FN/TPeMECEHFvHZn6SpqcMxTBOpLioNth9EAE=", - "perfetto.css": "sha256-x2TuddbZFoMv+cdZajBAuesrGemnCnNl57hqIDJHB34=", - "trace_processor.wasm": "sha256-fHnhpZobgdJtVPo/fcXVcO7WC3Ap0kkaaRvSup83MZk=", - "trace_to_text.wasm": "sha256-17a4VaZ5ekQ2phy290Nw5sdqCbX2XVv0ZqvxMMdREh0=", - "traceconv_bundle.js": "sha256-W17jGEtwQZWCFu3yjJY4wL6aqQTgVYq3Zrh0+ZsnzUk=" - } -} \ No newline at end of file diff --git a/deps/perfetto/perfetto.css b/deps/perfetto/perfetto.css deleted file mode 100644 index ec5bc19d..00000000 --- a/deps/perfetto/perfetto.css +++ /dev/null @@ -1,2687 +0,0 @@ -@font-face { - font-family: 'Material Icons'; - font-style: normal; - font-weight: 400; - font-display: block; - src: url(assets/MaterialIcons.woff2) format("woff2"); } - -/* latin */ -@font-face { - font-family: 'Raleway'; - font-style: normal; - font-weight: 100; - src: url(assets/Raleway-Thin.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Raleway'; - font-style: normal; - font-weight: 400; - src: url(assets/Raleway-Regular.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: url(assets/Roboto-100.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: url(assets/Roboto-300.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: url(assets/Roboto-400.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: url(assets/Roboto-500.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto Condensed'; - font-style: normal; - font-weight: 300; - src: url(assets/RobotoCondensed-Light.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto Condensed'; - font-style: normal; - font-weight: 400; - src: url(assets/RobotoCondensed-Regular.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -/* latin */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 400; - src: url(assets/RobotoMono-Regular.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } - -.material-icons { - font-family: 'Material Icons'; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - vertical-align: middle; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: 'liga'; - -webkit-font-smoothing: antialiased; } - -:root { - --sidebar-width: 256px; - --topbar-height: 48px; - --monospace-font: 'Roboto Mono', monospace; - --track-shell-width: 250px; - --track-border-color: #00000025; - --anim-easing: cubic-bezier(0.4, 0.0, 0.2, 1) - -; } - -* { - box-sizing: border-box; - -webkit-tap-highlight-color: transparent; - touch-action: none; } - -html { - font-family: Roboto, verdana, sans-serif; - height: 100%; - width: 100%; } - -html, -body, -body > main { - height: 100%; - width: 100%; - padding: 0; - margin: 0; - overscroll-behavior: none; } - -pre, code { - font-family: var(--monospace-font); } - -body.testing { - -webkit-font-smoothing: antialiased !important; - font-kerning: none !important; } - -h1, -h2, -h3 { - font-family: inherit; - font-size: inherit; - font-weight: inherit; - padding: 0; - margin: 0; } - -table { - user-select: text; } - -body > main { - display: grid; - grid-template-areas: "sidebar topbar" "sidebar alerts" "sidebar page"; - grid-template-rows: auto auto 1fr; - grid-template-columns: auto 1fr; - color: #121212; - overflow: hidden; } - -body.filedrag::after { - content: 'Drop the trace file to open it'; - position: fixed; - z-index: 99; - top: 0; - left: 0; - right: 0; - bottom: 0; - border: 10px dashed #404854; - text-align: center; - font-size: 3rem; - line-height: 100vh; - color: #333; - background: rgba(255, 255, 255, 0.5); } - -button { - background: none; - color: inherit; - border: none; - padding: 0; - font: inherit; - cursor: pointer; - outline: inherit; } - -button.close { - font-family: var(--monospace-font); } - -.full-page-loading-screen { - position: absolute; - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - flex-direction: row; - background: #3e4a5a url("assets/logo-3d.png") no-repeat fixed center; } - -.page { - grid-area: page; - position: relative; - display: flex; - flex-direction: column; - overflow: hidden; } - -.split-panel { - flex: 1; - display: flex; - flex-flow: row; - position: relative; - overflow: hidden; } - -.alerts { - grid-area: alerts; - background-color: #f2f2f2; } - .alerts > div { - font-family: 'Raleway', sans-serif; - font-weight: 400; - letter-spacing: 0.25px; - padding: 1rem; - display: flex; - justify-content: space-between; } - .alerts > div button { - width: 24px; - height: 24px; } - -.query-table-container { - width: 100%; } - -.x-scrollable { - overflow-x: auto; } - -.query-table { - width: 100%; - font-size: 14px; - border: 0; } - .query-table.pivot-table thead, .query-table.pivot-table i { - cursor: pointer; } - .query-table.pivot-table thead td.drop-location, .query-table.pivot-table i td.drop-location { - background-color: #edf2f7; } - .query-table.pivot-table thead .total-aggregation, .query-table.pivot-table i .total-aggregation { - white-space: pre; - font-weight: 600; - font-size: 12px; } - .query-table.pivot-table td { - height: 25px; } - .query-table.pivot-table .disabled { - cursor: default; } - .query-table.pivot-table .dropdown { - display: inline-block; - position: relative; } - .query-table.pivot-table .popup-menu { - position: absolute; - background-color: white; - right: 0; - box-shadow: 0 0 4px 0 #999; } - .query-table.pivot-table .popup-menu.closed { - display: none; } - .query-table.pivot-table .popup-menu.open { - display: block; } - .query-table.pivot-table .popup-menu button { - border-radius: 0; - margin: 0; - height: auto; - background: transparent; - color: #111; - font-size: 12px; - padding: 0.4em 1em; - white-space: nowrap; - width: 100%; - text-align: right; - line-height: 1; } - .query-table.pivot-table .popup-menu button:hover { - background: #c7d0db; } - .query-table thead td { - position: sticky; - top: 0; - background-color: #e0e5eb; - color: #262f3c; - text-align: center; - padding: 1px 3px; - border-style: solid; - border-color: #fff; - border-right-width: 1px; - border-left-width: 1px; } - .query-table tbody tr { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - background-color: white; - font-family: var(--monospace-font); } - .query-table tbody tr:nth-child(even) { - background-color: #eff2f5; } - .query-table tbody tr td:first-child { - padding-left: 5px; } - .query-table tbody tr td:last-child { - padding-right: 5px; } - .query-table tbody tr:hover { - background-color: #e0e5eb; } - .query-table tbody tr[clickable] { - cursor: pointer; } - -.query-error { - padding: 20px 10px; - color: #bf4055; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; } - -.track { - display: grid; - grid-template-columns: auto 1fr; - grid-template-rows: 1fr 0; } - .track::after { - display: block; - content: ''; - grid-column: 1 / span 2; - border-top: 1px solid var(--track-border-color); - margin-top: -1px; - z-index: 2; } - .track .track-shell { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - padding-left: 10px; - display: grid; - cursor: grab; - grid-template-areas: "title buttons"; - grid-template-columns: 1fr auto; - align-items: center; - width: var(--track-shell-width); - background: #fff; - border-right: 1px solid #c7d0db; } - .track .track-shell.drag { - background-color: #eee; - box-shadow: 0 4px 12px -4px #999 inset; } - .track .track-shell.drop-before { - box-shadow: 0 4px 2px -1px #4d7ab3 inset; } - .track .track-shell.drop-after { - box-shadow: 0 -4px 2px -1px #4d7ab3 inset; } - .track .track-shell.selected { - background-color: #ebeef9; } - .track .track-shell .chip { - background-color: #bed6ff; - border-radius: 3px; - font-size: smaller; - padding: 0 0.1rem; - margin-left: 1ch; } - .track .track-shell h1 { - grid-area: title; - color: #3c4b5d; - font-size: 14px; - line-height: 15px; - max-height: 30px; - overflow: hidden; - text-align: left; - overflow-wrap: break-word; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - letter-spacing: -0.25px; } - .track .track-shell .track-buttons { - grid-area: buttons; - height: 18px; } - .track .track-shell .track-button { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - color: #3c5688; - cursor: pointer; - width: 22px; - font-size: 18px; - opacity: 0; } - .track .track-shell .track-button.show { - opacity: 1; } - .track .track-shell:hover .track-button { - opacity: 1; } - .track .track-shell.flash { - background-color: #ffe263; } - -.scrolling-panel-container { - position: relative; - overflow-x: hidden; - overflow-y: auto; - flex: 1 1 auto; - will-change: transform; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr; - grid-template-areas: "space"; } - -.details-panel-container { - position: relative; - overflow-x: hidden; - overflow-y: auto; - flex: 1 1 auto; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr; - grid-template-areas: "space"; } - -.pinned-panel-container { - position: relative; - overflow: visible; - box-shadow: 1px 3px 15px rgba(23, 32, 44, 0.3); - z-index: 2; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 1fr; - grid-template-areas: "space"; } - -.scroll-limiter { - position: relative; - grid-area: space; - overflow: hidden; } - -canvas.main-canvas { - z-index: -1; } - -.panels { - grid-area: space; - user-select: none; } - -.panel { - position: relative; } - -.pan-and-zoom-content { - flex: 1; - position: relative; - display: flex; - flex-flow: column nowrap; } - -.overview-timeline { - height: 100px; } - -.time-axis-panel { - height: 12px; } - -.tickbar { - height: 5px; } - -.notes-panel { - height: 20px; } - -header.overview { - display: flex; - align-content: center; - background-color: #c7d0db; - color: #28323e; - font-family: 'Roboto Condensed', sans-serif; - font-size: 15px; - font-weight: 400; - padding: 4px 10px; - vertical-align: middle; - border-color: #b1becd; - border-style: solid; - border-width: 1px 0; } - header.overview .code { - font-family: var(--monospace-font); - font-size: 12px; - margin-left: 10px; - color: #50647c; } - header.overview span.code { - flex-grow: 1; } - -button.query-ctrl { - background: #262f3c; - color: white; - border-radius: 10px; - font-size: 10px; - height: 18px; - line-height: 18px; - min-width: 7em; - margin: auto 0 auto 1rem; } - -.debug-panel-border { - position: absolute; - top: 0; - height: 100%; - width: 100%; - border: 1px solid rgba(69, 187, 73, 0.5); - pointer-events: none; } - -.perf-stats { - --stroke-color: hsl(217, 39%, 94%); - position: fixed; - bottom: 0; - left: 0; - width: 600px; - color: var(--stroke-color); - font-family: var(--monospace-font); - padding: 10px 24px; - z-index: 100; - background-color: rgba(27, 28, 29, 0.9); } - .perf-stats button { - text-decoration: underline; - color: #f5b800; } - .perf-stats button:hover { - color: #db4433; } - .perf-stats .close-button { - position: absolute; - right: 20px; - top: 10px; - width: 20px; - height: 20px; - color: var(--stroke-color); } - .perf-stats > section { - padding: 5px; - border-bottom: 1px solid var(--stroke-color); } - .perf-stats div { - margin: 2px 0; } - .perf-stats table, .perf-stats td, .perf-stats th { - border: 1px solid var(--stroke-color); - text-align: center; - padding: 4px; - margin: 4px 0; } - .perf-stats table { - border-collapse: collapse; } - -.track-group-panel { - --collapsed-background: hsla(190, 49%, 97%, 1); - --collapsed-transparent: hsla(190, 49%, 97%, 0); - --expanded-background: hsl(215, 22%, 19%); - --expanded-transparent: hsl(215, 22%, 19%, 0); - display: grid; - grid-template-columns: auto 1fr; - grid-template-rows: 1fr; - transition: background-color .4s, color .4s; - height: 40px; } - .track-group-panel::after { - display: block; - content: ''; - grid-column: 1 / span 2; - border-top: 1px solid var(--track-border-color); - margin-top: -1px; } - .track-group-panel[collapsed=true] { - background-color: var(--collapsed-transparent); } - .track-group-panel[collapsed=true] .shell { - border-right: 1px solid #c7d0db; - background-color: var(--collapsed-background); } - .track-group-panel[collapsed=true] .track-button { - color: #3c5688; } - .track-group-panel[collapsed=false] { - background-color: var(--expanded-transparent); - color: white; - font-weight: bold; } - .track-group-panel[collapsed=false] .shell.flash { - color: #121212; } - .track-group-panel[collapsed=false] .track-button { - color: white; } - .track-group-panel .shell { - padding: 4px 4px; - display: grid; - grid-template-areas: "fold-button title check"; - grid-template-columns: 28px 1fr 20px; - align-items: center; - line-height: 1; - width: var(--track-shell-width); - min-height: 40px; - transition: background-color .4s; } - .track-group-panel .shell .track-title { - user-select: text; } - .track-group-panel .shell .chip { - background-color: #bed6ff; - border-radius: 3px; - font-size: smaller; - padding: 0 0.1rem; - margin-left: 1ch; } - .track-group-panel .shell h1 { - grid-area: title; - font-size: 14px; - line-height: 15px; - max-height: 30px; - overflow: hidden; - text-align: left; - overflow-wrap: break-word; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - letter-spacing: -0.25px; } - .track-group-panel .shell .fold-button { - grid-area: fold-button; } - .track-group-panel .shell .track-button { - font-size: 20px; } - .track-group-panel .shell:hover { - cursor: pointer; } - .track-group-panel .shell:hover .fold-button { - color: #f5b800; } - .track-group-panel .shell.flash { - background-color: #ffe263; } - .track-group-panel .shell.selected { - background-color: #ebeef9; } - .track-group-panel .track-content { - font-size: 14px; - line-height: 15px; - max-height: 30px; - overflow: hidden; - text-align: left; - overflow-wrap: break-word; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - letter-spacing: -0.25px; } - -.time-selection-panel { - height: 10px; } - -.cookie-consent { - position: absolute; - z-index: 10; - left: 10px; - bottom: 10px; - width: 550px; - background-color: #19212b; - font-size: 14px; - color: #b4b7ba; - border-radius: 5px; - padding: 20px; } - .cookie-consent .buttons { - display: flex; - justify-content: flex-end; - margin-top: 10px; - font-size: 15px; } - .cookie-consent button { - padding: 10px; - border-radius: 3px; - color: #fff; - margin-left: 5px; } - .cookie-consent button a { - text-decoration: none; - color: #fff; } - .cookie-consent button:hover { - background-color: #373f4b; - cursor: pointer; } - -.disallow-selection { - user-select: none; } - -.pivot-table-editor-container { - font: inherit; - width: 670px; - height: 420px; } - .pivot-table-editor-container h2 { - font-weight: bold; - text-align: left; } - .pivot-table-editor-container label { - cursor: pointer; } - .pivot-table-editor-container select { - font-weight: 100; - margin: 3px; - color: #333; - font-size: 15px; - align-items: center; - cursor: pointer; } - .pivot-table-editor-container span:nth-of-type(2) { - margin-left: 1rem; } - .pivot-table-editor-container section.table-group { - display: table-row; } - .pivot-table-editor-container section.table-group table { - margin: 15px; } - .pivot-table-editor-container section.table-group table td { - width: 300px; - font-size: 17px; - cursor: pointer; } - .pivot-table-editor-container section.table-group table td.drop-location { - background-color: #d9d9d9; } - .pivot-table-editor-container section.table-group table th { - text-align: center; - width: 300px; - border-bottom: 1px solid rgba(60, 76, 92, 0.4); } - .pivot-table-editor-container section.table-group table:first-child { - float: left; } - .pivot-table-editor-container section.table-group table:last-child { - float: right; } - .pivot-table-editor-container .scroll { - height: 150px; - overflow: auto; } - .pivot-table-editor-container section.button-group { - text-align: center; } - .pivot-table-editor-container section.button-group button { - background-color: #262f3c; - color: #fff; - border-radius: 10px; - padding: 2px 5px; - font-weight: bold; - font-size: 13px; - min-width: 7em; - margin-right: 1rem; } - .pivot-table-editor-container section { - margin: 1rem; } - -.pivot-table-tab button { - background: #262f3c; - color: white; - border-radius: 10px; - font-size: 12px; - height: 20px; - line-height: 18px; - min-width: 7em; - margin: 0.2rem; } - .pivot-table-tab button:disabled { - opacity: 0.75; - cursor: default; } - -.pivot-table-tab span { - flex-grow: 1; } - -.pivot-table-spinner { - display: inline-block; - vertical-align: middle; - box-sizing: border-box; - width: 18px; - height: 18px; - margin-left: 10px; - border-radius: 50%; - border: 2px solid #408ee0; - border-color: #408ee0 transparent; - animation: spinner 1.25s linear infinite; } - -@keyframes spinner { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(360deg); } } - -.allow-white-space { - white-space: pre; } - -.home-page { - text-align: center; - align-items: center; - display: grid; - grid-template-columns: 1fr; - grid-template-rows: 2em 1fr 60px; - grid-template-areas: "." "center" "footer"; } - .home-page .home-page-center { - grid-area: center; } - .home-page .home-page-center .logo { - width: var(--track-shell-width); } - .home-page .home-page-center .home-page-title { - font-size: 60px; - margin: 25px; - text-align: center; - font-family: 'Raleway', sans-serif; - font-weight: 100; - color: #333; } - .home-page .home-page-center .channel-select { - font-family: 'Roboto', sans-serif; - font-size: 1.2rem; - font-weight: 200; - margin-top: 3em; - --chan-width: 100px; - --chan-num: 2; } - .home-page .home-page-center .channel-select input[type=radio] { - width: 0; - height: 0; - margin: 0; - padding: 0; - -moz-appearance: none; - -webkit-appearance: none; } - .home-page .home-page-center .channel-select input[type=radio]:nth-of-type(1):checked ~ .highlight { - margin-left: 0; } - .home-page .home-page-center .channel-select input[type=radio]:nth-of-type(2):checked ~ .highlight { - margin-left: 100px; - background-color: #ccb800; } - .home-page .home-page-center .channel-select input[type=radio]:nth-of-type(3):checked ~ .highlight { - margin-left: 200px; - background-color: #c15a15; } - .home-page .home-page-center .channel-select fieldset { - margin: 30px auto 10px auto; - padding: 0; - position: relative; - background-color: #464b53; - border-radius: 3px; - box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.4); - border: 0; - width: calc(var(--chan-width) * var(--chan-num)); - height: 40px; - line-height: 40px; - z-index: 0; } - .home-page .home-page-center .channel-select label { - display: inline-block; - cursor: pointer; - position: relative; - width: var(--chan-width); - height: 100%; - color: white; - z-index: 2; - text-transform: uppercase; - font-size: 16px; - font-family: 'Raleway'; - font-weight: 400; - letter-spacing: 0.3px; } - .home-page .home-page-center .channel-select .highlight { - width: var(--chan-width); - height: 100%; - position: absolute; - background: rgba(63, 166, 67, 0.99); - background-image: linear-gradient(rgba(255, 255, 255, 0.2), transparent); - top: 0; - left: 0; - z-index: 1; - border-radius: inherit; - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; } - .home-page .home-page-center .channel-select .home-page-reload { - font-size: 12px; - opacity: 0; - color: #da4534; - font-weight: 400; - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; } - .home-page .home-page-center .channel-select .home-page-reload.show { - opacity: 1; } - .home-page .privacy { - grid-area: footer; - text-decoration: none; - font-family: 'Roboto', sans-serif; - font-weight: 200; - color: #333; - font-size: 15px; } - -.analyze-page { - overflow-y: auto; - overflow-x: hidden; } - .analyze-page .query-input { - width: 100%; - background-color: #111; - min-height: 2em; - height: var(--height-before-resize); - color: #9ddc67; - font-size: inherit; - font-family: var(--monospace-font); - line-height: 1.2em; - padding: .5em; - overflow: auto; - resize: vertical; } - -.metrics-page { - padding: 30px; - font-family: 'Raleway', sans-serif; - overflow-y: auto; } - .metrics-page .metric-run-button { - background-color: #262f3c; - color: #fff; - border-radius: 4px; - padding: 5px 10px; - font-weight: bold; - font-family: 'Raleway'; } - .metrics-page select { - margin: 10px; - font-family: 'Raleway'; - font-size: 1em; - border: 1px solid black; - background-color: #eee; } - .metrics-page pre { - background-color: #eee; - padding: 20px; - font-family: 'Roboto Mono'; - line-height: 1.5em; - border-radius: 5px; - overflow-x: auto; } - .metrics-page pre.metric-error { - color: #EF6C00; } - -.sidebar { - --sidebar-padding-bottom: 40px; - --sidebar-timing: 0.15s; - grid-area: sidebar; - z-index: 4; - background-color: #262f3c; - overflow: hidden; - width: var(--sidebar-width); - display: flex; - flex-direction: column; - transition: margin-left var(--anim-easing) var(--sidebar-timing), visibility linear var(--sidebar-timing); } - .sidebar > * { - border-bottom: 1px solid #404854; } - .sidebar input[type=file] { - display: none; } - .sidebar > header { - font-family: 'Roboto Condensed', sans-serif; - font-weight: 700; - font-size: 24px; - height: var(--topbar-height); - line-height: var(--topbar-height); - vertical-align: middle; - padding: 0 20px; - color: #fff; - overflow: visible; } - .sidebar > header .brand { - height: 40px; - margin-top: 4px; } - .sidebar > header::before { - z-index: 10; } - .sidebar > header.canary::before, .sidebar > header.autopush::before { - display: block; - position: absolute; - font-size: 10px; - line-height: 10px; - font-family: 'Raleway', sans-serif; - left: 155px; - top: 7px; } - .sidebar > header.canary::before { - content: 'CANARY'; - color: #ffd700; } - .sidebar > header.autopush::before { - content: 'AUTOPUSH'; - color: #aed581; } - .sidebar .sidebar-button { - position: absolute; - z-index: 5; - background-color: #262f3c; - height: var(--topbar-height); - left: calc(var(--sidebar-width) - 50px); - border-radius: 0 5px 5px 0; - border-bottom: inherit; - visibility: visible; - transition: left var(--anim-easing) var(--sidebar-timing); - width: 48px; - overflow: hidden; } - .sidebar .sidebar-button > button { - vertical-align: middle; } - .sidebar.hide-sidebar { - visibility: hidden; - margin-left: calc(var(--sidebar-width) * -1); } - .sidebar.hide-sidebar .sidebar-button { - left: 0; } - .sidebar .sidebar-scroll { - overflow-y: auto; - flex: 1; } - .sidebar .sidebar-scroll::-webkit-scrollbar { - width: 0.5em; } - .sidebar .sidebar-scroll::-webkit-scrollbar-track { - background-color: #19212b; - border-radius: 2px; } - .sidebar .sidebar-scroll::-webkit-scrollbar-thumb { - background: #b4b7ba6e; - border-radius: 2px; } - .sidebar .sidebar-scroll > .sidebar-scroll-container { - position: relative; - min-height: 100%; - padding-bottom: var(--sidebar-padding-bottom); } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - padding: 20px 0; - max-height: 80px; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section .section-header { - cursor: pointer; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section .section-header > h1, - .sidebar .sidebar-scroll > .sidebar-scroll-container > section .section-header > h2 { - font-family: 'Raleway', sans-serif; - letter-spacing: 0.25px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - margin: 0 24px; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section .section-header > h1 { - color: #fff; - font-size: 15px; - font-weight: 500; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section .section-header > h2 { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - color: rgba(255, 255, 255, 0.5); - font-size: 12px; - margin-top: 8px; - font-weight: 400; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section:hover { - background-color: #373f4b; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section.expanded { - background-color: #19212b; - max-height: unset; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section.expanded .section-header h2 { - opacity: 0; } - .sidebar .sidebar-scroll > .sidebar-scroll-container > section.expanded .section-content { - pointer-events: inherit; - opacity: 1; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content { - pointer-events: none; - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - opacity: 0; - color: #b4b7ba; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content a { - color: #b4b7ba; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content ul { - list-style-type: none; - margin: 0; - padding: 0; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li a { - line-height: 24px; - font-size: 14px; - font-weight: 400; - font-family: 'Raleway', sans-serif; - letter-spacing: 0.5px; - padding: 5px 24px; - text-decoration: none; - display: block; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li a.pending { - color: rgba(255, 255, 255, 0.3); } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li a.pending::after { - content: ' '; - display: inline-block; - vertical-align: middle; - box-sizing: border-box; - width: 18px; - height: 18px; - margin-left: 10px; - border-radius: 50%; - border: 2px solid #b4b7ba; - border-color: #b4b7ba transparent; - animation: pending-spinner 1.25s linear infinite; } - -@keyframes pending-spinner { - 0% { - transform: rotate(0deg); } - 100% { - transform: rotate(360deg); } } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li a[disabled] { - text-decoration: line-through; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li .material-icons { - margin-right: 10px; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li:hover { - background-color: #373f4b; } - .sidebar .sidebar-scroll > .sidebar-scroll-container .section-content li .trace-file-name { - white-space: break-spaces; - font-family: 'Roboto Condensed', sans-serif; - word-break: break-all; - font-weight: 300; - letter-spacing: 0; - margin-top: -10px; - color: #fff; } - .sidebar .sidebar-footer { - position: absolute; - bottom: 0; - width: 100%; - padding: 2px 10px; - display: grid; - height: -var(--sidebar-padding-bottom); - grid-template-columns: repeat(4, min-content); - grid-gap: 10px; } - .sidebar .sidebar-footer > button { - color: #eaeef6; } - .sidebar .sidebar-footer > button i { - font-size: 24px; } - .sidebar .sidebar-footer > button:hover { - color: #f5b800; } - .sidebar .sidebar-footer > .dbg-info-square { - width: 24px; - height: 22px; - line-height: 22px; - margin: 1px 0; - background: #12161b; - color: #4e71b3; - border-radius: 5px; - font-size: 12px; - text-align: center; } - .sidebar .sidebar-footer > .dbg-info-square.green { - background: #7aca75; - color: #12161b; } - .sidebar .sidebar-footer > .dbg-info-square.amber { - background: #FFC107; - color: #333; } - .sidebar .sidebar-footer > .dbg-info-square.red { - background: #d32f2f; - color: #fff; } - .sidebar .sidebar-footer > .dbg-info-square > div { - font-size: 10px; - line-height: 11px; } - .sidebar .sidebar-footer .version { - position: absolute; - right: 8px; - bottom: 3px; - font-size: 12px; - font-family: 'Roboto Condensed', sans-serif; - margin-top: 11px; } - .sidebar .sidebar-footer .version a { - color: rgba(255, 255, 255, 0.5); - text-decoration: none; } - -body.testing .sidebar-footer { - visibility: hidden; } - -.keycap { - background-color: #fafbfc; - border: 1px solid #d1d5da; - border-bottom-color: #c6cbd1; - border-radius: 3px; - box-shadow: inset 0 -1px 0 #c6cbd1; - color: #444d56; - display: inline-block; - font-family: var(--monospace-font); - vertical-align: middle; - line-height: 20px; - padding: 3px 7px; } - -.topbar { - grid-area: topbar; - position: relative; - z-index: 3; - overflow: visible; - background-color: #f2f2f2; - box-shadow: 0 -3px 14px 2px #bbb; - min-height: var(--topbar-height); - display: flex; - justify-content: center; - align-items: center; } - .topbar .omnibox { - width: 90%; - max-width: 600px; - transition: opacity 0.25s ease, color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease, width 0.25s ease, height 0.25s ease, max-width 0.25s ease, max-height 0.25s ease, margin 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease, border-radius 0.25s ease; - display: grid; - grid-template-areas: "icon input stepthrough"; - grid-template-columns: 34px auto max-content; - border-radius: 20px; - background-color: #fcfcfc; - border: 0; - line-height: 34px; } - .topbar .omnibox:before { - direction: ltr; - display: inline-block; - font-family: 'Material Icons'; - font-size: 24px; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-height: 1; - text-transform: none; - white-space: nowrap; - word-wrap: normal; - -webkit-font-feature-settings: 'liga'; - -webkit-font-smoothing: antialiased; - content: "search"; - margin: 5px; - color: #aaa; - grid-area: icon; } - .topbar .omnibox input { - grid-area: input; - border: 0; - padding: 0 10px; - font-size: 18px; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - color: #666; - background-color: transparent; } - .topbar .omnibox input:focus { - outline: none; } - .topbar .omnibox input::placeholder { - color: #b4b7ba; - font-family: 'Raleway', sans-serif; - font-weight: 400; } - .topbar .omnibox.command-mode { - background-color: #111; - border-radius: 0; - width: 100%; - max-width: 100%; - margin-top: 0; - border-left: 1px solid #404854; - height: var(--topbar-height); } - .topbar .omnibox.command-mode input { - color: #9ddc67; - font-family: var(--monospace-font); - padding-left: 0; } - .topbar .omnibox.command-mode:before { - content: 'attach_money'; - color: #9ddc67; - font-size: 26px; - padding-top: 5px; } - .topbar .omnibox.message-mode { - background-color: #e3e3e3; - border-radius: 4px; } - .topbar .omnibox.message-mode input::placeholder { - font-weight: 400; - font-family: var(--monospace-font); - color: #4d7ab3; } - .topbar .omnibox.message-mode:before { - content: 'bubble_chart'; } - .topbar .omnibox .stepthrough { - grid-area: stepthrough; - display: flex; - font: inherit; - font-size: 14px; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - color: #aaa; } - .topbar .omnibox .stepthrough .current { - padding-right: 10px; } - .topbar .omnibox .stepthrough .material-icons.left { - border-right: #dad9d9 solid 1px; } - .topbar .progress { - position: absolute; - bottom: 0; - height: 1px; - width: 100%; } - .topbar .progress-anim:before { - content: ''; - position: absolute; - background-color: #406cbf; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } - .topbar .progress-anim:after { - content: ''; - position: absolute; - background-color: #406cbf; - top: 0; - left: 0; - bottom: 0; - will-change: left, right; - animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; - animation-delay: 1.15s; } - -@keyframes indeterminate { - 0% { - left: -35%; - right: 100%; } - 60% { - left: 100%; - right: -90%; } - 100% { - left: 100%; - right: -90%; } } - -@keyframes indeterminate-short { - 0% { - left: -35%; - right: 100%; } - 60% { - left: 100%; - right: -90%; } - 100% { - left: 100%; - right: -90%; } } - .topbar .notification-btn { - transition: opacity 0.25s ease, color 0.25s ease, background-color 0.25s ease, border-color 0.25s ease, width 0.25s ease, height 0.25s ease, max-width 0.25s ease, max-height 0.25s ease, margin 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease, border-radius 0.25s ease; - font-size: 16px; - padding: 8px 10px; - margin: 0 10px; - border-radius: 2px; - background: #b3bac1; } - .topbar .notification-btn:hover { - background: #cfd4d8; } - .topbar .notification-btn.preferred { - background: #1287fd; - color: #fff; } - .topbar .notification-btn.preferred:hover { - background: #44a1fd; } - -.error { - position: absolute; - right: 10px; - color: #EF6C00; } - .error:hover { - cursor: pointer; } - -.helpful-hint { - position: absolute; - z-index: 10; - right: 5px; - top: 5px; - width: 300px; - background-color: white; - font-size: 12px; - color: #3f4040; - display: grid; - border-radius: 5px; - padding: 8px; - box-shadow: 1px 3px 15px rgba(23, 32, 44, 0.3); } - -.hint-text { - padding-bottom: 5px; } - -.hint-dismiss-button { - color: #f4fafb; - background-color: #19212b; - width: fit-content; - padding: 3px; - border-radius: 3px; } - -.hide-sidebar .command-mode { - padding-left: 48px; } - -:root { - --record-text-color: #333; } - -.record-page { - position: relative; - overflow-y: scroll; - background-color: #fefefe; - padding: 40px 20px; } - -.record-container { - position: relative; - max-width: 900px; - min-height: 500px; - margin: auto; - border-radius: 5px; - box-shadow: 0 1px 2px 0 #aaa, 0 1px 3px 1px #eee; - background-color: #fff; - display: grid; - grid-template-columns: 2fr 5fr; - grid-template-rows: auto 1fr; - grid-template-areas: "header header" "sidebar section"; - overflow: hidden; - z-index: 6; } - -.hider { - transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease; - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - background: #000; - opacity: 0.2; - z-index: 5; } - -.record-header { - grid-area: header; - padding: 10px; - display: flex; - flex-direction: column; - border-bottom: 1px solid #eee; } - .record-header .top-part { - display: flex; - justify-content: space-between; - align-items: center; } - .record-header .top-part .button { - display: flex; - justify-content: flex-end; - align-items: center; - width: auto; - height: 50px; - margin: 0; } - .record-header .top-part .button > * { - transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease; - cursor: pointer; - border-radius: 10px; - margin: 10px; - text-align: center; - background-color: #eee; - font-family: 'Raleway', sans-serif; - font-size: 17px; - padding: 7px; } - @media (max-width: 1280px) { - .record-header .top-part .button > * { - font-size: 1.6vw; } } - .record-header .top-part .button > *:hover { - background-color: #d8ebc2; - box-shadow: 0 0 4px 0 #999; } - .record-header .top-part .button > *.selected { - background-color: #aed581; - box-shadow: 0 0 4px 0 #999; } - .record-header .top-part .button > *.disabled { - background-color: #f7f7f7; } - .record-header .top-part .target-and-status { - display: flex; - flex-direction: column; - justify-content: space-evenly; } - .record-header .top-part .target-and-status .target { - display: flex; - flex-direction: row; - align-items: center; } - .record-header .top-part .target-and-status label, .record-header .top-part .target-and-status select, .record-header .top-part .target-and-status button { - font-weight: 300; - margin: 3px; - color: #333; - font-size: 17px; - font-family: 'Roboto', sans-serif; - align-items: center; } - .record-header .top-part .target-and-status label.error-label, .record-header .top-part .target-and-status select.error-label, .record-header .top-part .target-and-status button.error-label { - max-width: 500px; - color: red; - font-size: 15px; } - .record-header .top-part .target-and-status .chip { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - display: flex; - align-items: center; - border: 1px solid #eee; - outline: none; - margin: 4px; - border-radius: 20px; - padding: 4px; - height: 30px; } - .record-header .top-part .target-and-status .chip:hover, .record-header .top-part .target-and-status .chip:active { - box-shadow: 0 0 4px 0 #ccc; - background-color: #fafafa; } - .record-header .top-part .target-and-status .chip i { - margin: 3px; - align-items: center; } - .record-header .note { - border-radius: 3px; - margin-bottom: 5px; - background: #f9eeba; - padding: 10px; - font-family: 'Roboto', sans-serif; - font-size: 14px; - line-height: 20px; } - .record-header select { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - margin-left: 10px; - border-radius: 0; - border: 1px solid #eee; - outline: none; } - .record-header select:hover, .record-header select:active { - box-shadow: 0 0 6px #ccc; } - -.record-menu { - grid-area: sidebar; - background-color: #fcfcfc; - border-right: 1px solid #eee; - padding-bottom: 1em; } - .record-menu .rec { - color: #ee3326; } - .record-menu header { - font-family: 'Roboto', sans-serif; - font-size: 14px; - font-weight: 700; - margin: 1em; } - .record-menu ul { - list-style-type: none; - margin: 0; - padding: 0; } - .record-menu a, .record-menu a:link, .record-menu a:visited { - text-decoration: none; } - .record-menu li { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - height: 55px; - padding: 0 1em; - font-size: 15px; - letter-spacing: 0.5px; - font-family: 'Raleway', sans-serif; - font-weight: 600; - color: #666; - display: grid; - grid-template-columns: 50px 1fr; - grid-template-rows: 40px 1fr; - grid-template-areas: "icon title" "icon subtext"; - cursor: pointer; - overflow: hidden; } - .record-menu li i { - margin: auto; - border-radius: 100%; - font-size: 32px; - width: 38px; - height: 38px; - padding: 3px; - background: #eee; - grid-area: icon; } - .record-menu li .title { - transition: line-height .25s ease; - grid-area: title; - line-height: 55px; - display: block; } - .record-menu li .sub { - transition: opacity 0.5s ease, color 0.5s ease, background-color 0.5s ease, border-color 0.5s ease, width 0.5s ease, height 0.5s ease, max-width 0.5s ease, max-height 0.5s ease, margin 0.5s ease, transform 0.5s ease, box-shadow 0.5s ease, border-radius 0.5s ease; - grid-area: subtext; - font-size: 10px; - line-height: 12.5px; - margin-top: -5px; - opacity: 0; } - .record-menu li:hover { - background-color: #e6e6e6; } - .record-menu li:hover .title { - line-height: 50px; } - .record-menu li:hover .sub { - opacity: 1; - transition-duration: 0.25s; - transition-delay: 0.0s; } - .record-menu li.active { - background-color: #75aaf0; } - .record-menu li.active .title, .record-menu li.active .sub { - color: white; } - .record-menu.disabled { - opacity: 0.50; - pointer-events: none; } - -.record-section { - grid-area: section; - background: #fff; - transition: opacity 0.25s ease; - opacity: 0; - display: none; - --record-section-padding: 20px; } - .record-section:not(.active) { - max-height: 0; } - .record-section.active { - display: block; - opacity: 1; } - .record-section .config { - height: auto; - width: 100%; - padding: 0; - display: flex; - align-items: center; } - .record-section .config:nth-of-type(2n) { - background-color: #e7e7e7; } - .record-section .parsing-errors { - padding: 1em; - border: 1px solid #dc143c; - color: #dc143c; } - .record-section .title-config { - display: inline-block; - margin: var(--record-section-padding); - flex-grow: 1; - word-break: break-all; } - .record-section .config-button { - border-radius: 100%; - margin-right: 10px; - text-align: center; - justify-items: center; - font-family: 'Raleway', sans-serif; - padding: 7px; } - .record-section .config-button:hover:enabled { - box-shadow: 0 0 3px 0 #aaa; } - .record-section .config-button:not(:enabled) { - background-color: #d4d4d4; - color: gray; } - .record-section .config-button.load:enabled { - background-color: #aed581; } - .record-section .config-button.delete { - background-color: #d58181; } - .record-section .config-button.save.long { - width: 160px; } - .record-section .config-button.save:enabled { - background-color: #81bdd5; } - .record-section .config-button.reset { - width: 300px; - background-color: #d58181; } - .record-section .reset-wrapper { - padding: 1em; } - .record-section .input-config { - margin-top: 20px; - margin-bottom: 20px; - display: flex; - align-items: center; - padding: 0; } - .record-section .input-config input { - border-radius: 20px; - border: 1px solid #eee; - line-height: 36px; - padding: 0 10px; - font-size: 18px; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - color: #666; - flex-grow: 1; - margin-right: 10px; - margin-left: 10px; - background-color: transparent; } - .record-section .input-config input:focus { - outline: none; } - .record-section .input-config input::placeholder { - color: #b4b7ba; - font-family: 'Raleway', sans-serif; - font-weight: 400; } - .record-section > * { - padding-left: var(--record-section-padding); - padding-right: var(--record-section-padding); } - .record-section > *:first-child { - padding-top: 20px; } - .record-section > *:last-child { - padding-bottom: 20px; } - .record-section > header { - text-align: center; - font-family: 'Raleway', sans-serif; - font-size: 20px; - padding: 15px 10px; - color: #333; - letter-spacing: 0.5px; } - .record-section .hide { - opacity: 0; - visibility: hidden; } - .record-section .probe { - display: grid; - grid-template-rows: 40px 1fr; - grid-template-columns: 220px 1fr; - grid-template-areas: "label label" "img descr"; - transition: color 0.2s ease; - padding-top: var(--record-section-padding); - padding-bottom: var(--record-section-padding); } - .record-section .probe.compact { - padding-top: 10px; - padding-bottom: 10px; } - .record-section .probe:nth-of-type(2n) { - background-color: #f9f9f9; } - .record-section .probe > img { - transition: filter 0.2s ease, opacity 0.2s ease; - grid-area: img; - width: 210px; - box-sizing: content-box; - cursor: pointer; - opacity: 0.5; - filter: saturate(0.15); } - .record-section .probe:hover > img { - opacity: 1; } - .record-section .probe:hover > label { - color: #333; } - .record-section .probe:hover > label input[type=checkbox]::after { - background: #5c9fd6; } - .record-section .probe > label { - grid-area: label; - cursor: pointer; - font-family: 'Roboto' , sans-serif; - font-size: 20px; - font-weight: 400; - color: #999; } - .record-section .probe > label input[type=checkbox] { - -moz-appearance: none; - -webkit-appearance: none; - cursor: pointer; - margin: 0 10px 0 3px; - position: relative; - display: inline-block; - height: 20px; - width: 44px; - background: #89898966; - border-radius: 100px; - transition: all 0.3s ease; - overflow: visible; - vertical-align: middle; } - .record-section .probe > label input[type=checkbox]:focus { - outline: none; } - .record-section .probe > label input[type=checkbox]::after { - position: absolute; - left: -2px; - top: -3px; - display: block; - width: 26px; - height: 26px; - border-radius: 100px; - background: #f5f5f5; - box-shadow: 0 3px 3px rgba(0, 0, 0, 0.15); - content: ''; - transition: all 0.3s ease; } - .record-section .probe > label input[type=checkbox]:checked { - background: #8398b7; } - .record-section .probe > label input[type=checkbox]:focus::after { - background: #5c9fd6; } - .record-section .probe > label input[type=checkbox]:checked::after { - left: 20px; - background: #27303d; } - .record-section .probe > div { - grid-area: descr; - font-size: 14px; - font-weight: 200; - min-height: 50px; - color: var(--record-text-color); - line-height: 20px; } - .record-section .probe .probe-config { - transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease; - opacity: 0; - visibility: hidden; - margin: 10px 10px 0 0; - max-height: 0; } - .record-section .probe.enabled .probe-config { - opacity: 1; - visibility: visible; - max-height: 100vh; } - .record-section .probe.enabled > label span { - color: #4e80b7; } - .record-section .probe.enabled > img { - filter: saturate(1); - opacity: 1; } - .record-section .toggle { - transition: color 0.2s ease; - padding-top: var(--record-section-padding); } - .record-section .toggle:hover > img { - opacity: 1; } - .record-section .toggle:hover > label { - color: #333; } - .record-section .toggle:hover > label input[type=checkbox]::after { - background: #5c9fd6; } - .record-section .toggle > label { - cursor: pointer; - font-size: 14px; - color: var(--record-text-color); } - .record-section .toggle > label input[type=checkbox] { - -moz-appearance: none; - -webkit-appearance: none; - cursor: pointer; - margin: 0 12px 0 2px; - position: relative; - display: inline-block; - height: 10px; - width: 22px; - background: #89898966; - border-radius: 100px; - transition: all 0.3s ease; - overflow: visible; - vertical-align: middle; } - .record-section .toggle > label input[type=checkbox]:focus { - outline: none; } - .record-section .toggle > label input[type=checkbox]::after { - position: absolute; - left: -5px; - top: -5px; - display: block; - width: 20px; - height: 20px; - border-radius: 100px; - background: #f5f5f5; - box-shadow: 0 3px 3px rgba(0, 0, 0, 0.15); - content: ''; - transition: all 0.3s ease; } - .record-section .toggle > label input[type=checkbox]:checked { - background: #8398b7; } - .record-section .toggle > label input[type=checkbox]:focus::after { - background: #5c9fd6; } - .record-section .toggle > label input[type=checkbox]:checked::after { - left: 12px; - background: #27303d; } - .record-section .toggle > div.descr { - font-size: 12px; - color: #666; } - .record-section .record-mode { - display: grid; - grid-template-columns: 1fr 1fr 1fr; - grid-template-areas: ". . ."; - grid-template-rows: 1fr; - padding-top: 0; } - .record-section .record-mode input[type=radio] { - appearance: none; - -webkit-appearance: none; - display: none; } - .record-section .record-mode > * { - transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease; - cursor: pointer; - border-radius: 15px; - margin: 5px; - text-align: center; - background-color: #eee; - font-family: 'Raleway', sans-serif; - font-size: 20px; - padding-bottom: 10px; } - @media (max-width: 1280px) { - .record-section .record-mode > * { - font-size: 1.6vw; } } - .record-section .record-mode > *:hover { - background-color: #d8ebc2; - box-shadow: 0 0 4px 0 #999; } - .record-section .record-mode > *.selected { - background-color: #aed581; - box-shadow: 0 0 4px 0 #999; } - .record-section .record-mode > * img { - width: 100%; } - .record-section .slider { - transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease; - display: grid; - grid-template-columns: 40px 1fr 130px 0; - grid-template-rows: 30px min-content 1fr; - grid-template-areas: "hdr hdr hdr hdr" "descr descr descr descr" "icon slider label unit"; - margin-top: var(--record-section-padding); } - .record-section .slider.thin { - grid-template-columns: 1fr 1fr 100px 0; - grid-template-areas: "hdr hdr hdr hdr" "descr descr descr descr" "slider slider label unit"; } - .record-section .slider.greyed-out { - opacity: 0.5; } - .record-section .slider > * { - height: 40px; - line-height: 40px; } - .record-section .slider > header { - transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease; - opacity: 0.6; - color: #333; - grid-area: hdr; } - .record-section .slider.thin > header { - opacity: 1; - color: var(--record-text-color); - font-size: 14px; } - .record-section .slider.thin > header.descr { - grid-area: descr; - font-size: 12px; - color: #666; - height: 20px; - line-height: 20px; } - .record-section .slider:hover > header { - opacity: 1; - transition-duration: 0.15s; } - .record-section .slider > i { - grid-area: icon; - font-size: 32px; - color: #333; } - .record-section .slider input[type=range] { - grid-area: slider; - width: 100%; - appearance: none; - -webkit-appearance: none; - scroll-snap-type: x mandatory; - background-color: transparent; - outline: none; - margin-left: -10px; - margin-top: -5px; } - .record-section .slider input[type=range]::-webkit-slider-runnable-track { - margin: 10px; - width: 100%; - height: 10px; - background-color: #ddd; - border-radius: 4px; } - .record-section .slider input[type=range]::-webkit-slider-thumb { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - appearance: none; - -webkit-appearance: none; - border: none; - border-radius: 3px; - height: 20px; - width: 40px; - background-color: #2196f3; - margin-top: -5px; - cursor: pointer; - content: ""; } - .record-section .slider input[type=range]:hover::-webkit-slider-thumb, .record-section .slider input[type=range]:focus::-webkit-slider-thumb { - box-shadow: 0 0 4px #105186; - transform: scale(1, 1.1); } - .record-section .slider.thin input[type=range]::-webkit-slider-runnable-track { - height: 8px; } - .record-section .slider.thin input[type=range]::-webkit-slider-thumb { - width: 20px; - border-radius: 100%; } - .record-section .slider .spinner { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - grid-area: label; - border: 1px solid #fafafa; - border-bottom: 2px solid #ddd; - padding: 0 5px; - border-radius: 2px; - background-color: white; - font-family: 'Roboto', sans-serif; - font-size: 16px; - font-weight: 100; - height: 35px; - outline: none; } - .record-section .slider .spinner::-webkit-inner-spin-button, .record-section .slider .spinner::-webkit-outer-spin-button, .record-section .slider .spinner::-webkit-clear-button { - -webkit-appearance: none; - margin: 0; } - .record-section .slider .spinner:hover, .record-section .slider .spinner:focus { - border-bottom-color: #2094f3; - background-color: #f4f8fb; } - .record-section .slider .spinner:invalid { - border-bottom-color: #f34020; - background-color: #fbf5f4; } - .record-section .slider.thin .spinner { - font-size: 14px; - margin-top: -5px; } - .record-section .slider .unit { - grid-area: unit; - font-size: 12px; - color: var(--record-text-color); - position: relative; - line-height: 37px; - overflow: hidden; - width: 35px; - left: -45px; - text-align: right; - margin-top: -5px; } - .record-section .chrome-categories { - margin: var(--record-section-padding) 0; - display: flex; - flex-direction: row; } - .record-section .chrome-categories .categories-list { - width: 50%; } - .record-section .dropdown { - border: 1px solid #eee; - outline: none; - -webkit-appearance: none; } - .record-section .dropdown option, .record-section .dropdown optgroup { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - min-height: 25px; - font-size: 12px; - color: var(--record-text-color); - cursor: pointer; - padding: 5px 0; } - .record-section .dropdown option { - padding: 2.5px 5px; - border-bottom: 1px solid #eee; } - .record-section .dropdown option:hover { - background-color: #d1e3fa; } - .record-section .dropdown option::before { - display: none; - content: ''; } - .record-section .dropdown.singlecolumn { - margin: var(--record-section-padding) 0; - padding: 0; - max-width: 100%; - width: 100%; - overflow-y: auto; - height: 400px; } - .record-section .dropdown.singlecolumn optgroup { - display: grid; - padding: 0; - grid-template-columns: 1fr; } - .record-section .dropdown.singlecolumn option { - margin: 0; } - .record-section .dropdown.multicolumn { - padding: 0; - max-width: 100%; - width: 100%; - overflow-y: auto; } - .record-section .dropdown.multicolumn optgroup { - display: grid; - padding: 0; - grid-template-columns: 1fr 1fr 1fr; } - .record-section .dropdown.multicolumn option { - margin: 0; } - .record-section .dropdown.multicolumn option:nth-of-type(3n + 1) { - border-left: 1px solid #eee; - border-right: 1px solid #eee; } - .record-section .dropdown.multicolumn.two-columns { - height: 400px; - margin: var(--record-section-padding); } - .record-section .dropdown.multicolumn.two-columns optgroup { - display: grid; - padding: 0; - grid-template-columns: 1fr 1fr; } - .record-section .dropdown.multicolumn.two-columns option { - margin: 0; } - .record-section .dropdown.multicolumn.two-columns option:nth-of-type(2n + 1) { - border-left: 1px solid #eee; - border-right: 1px solid #eee; } - .record-section .atrace-categories { - height: 227px; } - .record-section .ftrace-events { - height: 152px; } - .record-section textarea.extra-input { - width: 100%; - height: 60px; - border: 1px solid #eee; - resize: none; - outline: none; - font-family: var(--monospace-font); } - .record-section textarea.extra-input::placeholder { - color: #aaa; } - .record-section .code-snippet { - display: grid; - position: relative; - padding: 0; - margin: var(--record-section-padding); - background-color: #111; - border-radius: 4px; - box-shadow: 0 0 12px #999; } - -@keyframes ripple { - 0% { - transform: scale(1); } - 30% { - transform: scale(1.2); } - 60% { - transform: scale(1); } - 80% { - transform: scale(1.3); } - 100% { - transform: scale(1.2); } } - .record-section .code-snippet::before { - height: 20px; - content: ""; - display: block; - background-color: #598eca; } - .record-section .code-snippet.no-top-bar { - white-space: pre; } - .record-section .code-snippet.no-top-bar::before { - height: 0; } - .record-section .code-snippet > code { - display: block; - margin: 10px 5px 20px 20px; - color: #ccc; - font-family: var(--monospace-font); - font-size: 12px; - line-height: 20px; - overflow-y: auto; - white-space: pre-wrap; - word-wrap: break-word; - max-height: 510px; } - .record-section .code-snippet > button { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - display: inline-block; - position: absolute; - top: 30px; - right: 20px; - color: white; - border-radius: 100%; - background-color: #333; - box-shadow: 0 0 2px white; - padding: 5px; - font-size: 16px; - line-height: 13px; - user-select: none; } - .record-section .code-snippet > button:hover { - background-color: #444; - transform: scale(1.1); } - .record-section .code-snippet:active:hover > button:not(:hover) { - animation: ripple linear 0.5s; - background-color: #701d17; - transform: scale(1.1); } - .record-section .code-snippet > button:active:hover { - transform: scale(0.9); } - .record-section.instructions label, .record-section.instructions select { - font-weight: 100; - color: #333; - font-size: 16px; - font-family: 'Roboto', sans-serif; } - .record-section.instructions .note { - border: 1px dashed #ddd; - background: #f9eeba; - margin: var(--record-section-padding); - padding: 10px; - font-family: 'Roboto', sans-serif; - font-size: 14px; - line-height: 20px; } - .record-section.instructions select { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - margin-left: 10px; - border-radius: 0; - border: 1px solid #eee; - outline: none; } - .record-section.instructions select:hover, .record-section.instructions select:active { - box-shadow: 0 0 6px #ccc; } - .record-section.instructions .buttons { - display: flex; - justify-content: center; - align-items: center; - width: auto; - height: 70px; } - .record-section.instructions .buttons > * { - transition: opacity 0.2s ease, color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, width 0.2s ease, height 0.2s ease, max-width 0.2s ease, max-height 0.2s ease, margin 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-radius 0.2s ease; - cursor: pointer; - border-radius: 10px; - text-align: center; - margin: 3px; - background-color: #eee; - font-family: 'Raleway', sans-serif; - flex-grow: 1; - font-size: 17px; - padding: 7px; } - @media (max-width: 1280px) { - .record-section.instructions .buttons > * { - font-size: 1.6vw; } } - .record-section.instructions .buttons > *:hover { - background-color: #d8ebc2; - box-shadow: 0 0 4px 0 #999; } - .record-section.instructions .buttons > *.selected { - background-color: #aed581; - box-shadow: 0 0 4px 0 #999; } - .record-section.instructions .permalinkconfig { - margin: var(--record-section-padding); - height: 40px; - max-width: 200px; - border-radius: 10px; - text-align: center; - justify-items: center; - font-family: 'Raleway', sans-serif; - padding: 7px; - background-color: #aed581; } - .record-section.instructions .permalinkconfig:hover { - box-shadow: 0 0 4px 0 #999; } - .record-section.instructions progress { - -webkit-appearance: none; - appearance: none; - width: 600px; - height: 30px; - margin: var(--record-section-padding); - border-radius: 5px; } - .record-section.instructions ::-webkit-progress-value { - background-color: #aed581; } - .record-section.instructions ::-webkit-progress-bar { - background-color: #eee; } - -.inline-chip { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - line-height: 25px; - font-size: smaller; - padding: 2px 4px; - border: 1px solid #eee; - margin: 2px; - border-radius: 9px; } - .inline-chip:hover, .inline-chip:active { - box-shadow: 0 0 2px 0 #ccc; - background-color: #fafafa; } - .inline-chip > i.material-icons { - color: #3c3c3c; - font-size: 14px; } - -a.inline-chip, a.inline-chip:link, a.inline-chip:visited { - text-decoration: none; - color: var(--record-text-color); } - -/**************************\ - Basic Modal Styles -\**************************/ -.modal { - font-family: 'Raleway', sans-serif; } - -.modal-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.6); - display: flex; - justify-content: center; - align-items: center; - z-index: 999; } - -.modal-container { - background-color: #fff; - padding: 30px; - max-width: 90vw; - max-height: 90vh; - border-radius: 4px; - overflow-y: auto; - box-sizing: border-box; } - -.modal-header { - display: flex; - justify-content: space-between; - align-items: center; } - -.modal-title { - margin-top: 0; - margin-bottom: 0; - font-family: 'Raleway', sans-serif; - font-weight: 600; - font-size: 1.25rem; - line-height: 1.25; - color: #262f3c; - box-sizing: border-box; } - -.modal-close { - background: transparent; - border: 0; } - -.modal-header .modal-close:before { - content: "\2715"; } - -.modal-content { - margin-top: 2rem; - margin-bottom: 2rem; - line-height: 1.5; - color: rgba(0, 0, 0, 0.8); } - -.modal-btn { - font-size: .875rem; - padding-left: 1rem; - padding-right: 1rem; - padding-top: .5rem; - padding-bottom: .5rem; - background-color: #e6e6e6; - color: rgba(0, 0, 0, 0.8); - border-radius: .25rem; - border-style: none; - border-width: 0; - cursor: pointer; - -webkit-appearance: button; - text-transform: none; - overflow: visible; - line-height: 1.15; - margin: 5px; - will-change: transform; - -moz-osx-font-smoothing: grayscale; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - transform: translateZ(0); - transition: transform .25s ease-out; } - -.modal-btn:focus, .modal-btn:hover { - transform: scale(1.05); } - -.modal-btn-primary { - background-color: #262f3c; - color: #fff; } - -.modal-footer { - display: flex; - justify-content: space-around; } - -/**************************\ - Demo Animation Style -\**************************/ -@keyframes mmfadeIn { - from { - opacity: 0; } - to { - opacity: 1; } } - -@keyframes mmfadeOut { - from { - opacity: 1; } - to { - opacity: 0; } } - -@keyframes mmslideIn { - from { - transform: translateY(15%); } - to { - transform: translateY(0); } } - -@keyframes mmslideOut { - from { - transform: translateY(0); } - to { - transform: translateY(-10%); } } - -.micromodal-slide { - display: none; } - -.micromodal-slide.is-open { - display: block; } - -.micromodal-slide[aria-hidden="false"] .modal-overlay { - animation: mmfadeIn 0.3s cubic-bezier(0, 0, 0.2, 1); } - -.micromodal-slide[aria-hidden="false"] .modal-container { - animation: mmslideIn 0.3s cubic-bezier(0, 0, 0.2, 1); } - -.micromodal-slide[aria-hidden="true"] .modal-overlay { - animation: mmfadeOut 0.3s cubic-bezier(0, 0, 0.2, 1); } - -.micromodal-slide[aria-hidden="true"] .modal-container { - animation: mmslideOut 0.3s cubic-bezier(0, 0, 0.2, 1); } - -.micromodal-slide .modal-container, -.micromodal-slide .modal-overlay { - will-change: transform; } - -.help table { - margin-bottom: 15px; } - .help table td { - min-width: 250px; } - .help table td:first-child { - font-family: var(--monospace-font); } - -.help h2 { - font: inherit; - font-weight: bold; } - -.modal-pre { - white-space: pre-line; - font-size: 13px; } - -.modal-logs, .modal-bash { - white-space: pre-wrap; - border: 1px solid #999; - background: #eee; - font-size: 10px; - font-family: var(--monospace-font); - margin-top: 10px; - margin-bottom: 10px; - min-height: 50px; - max-height: 40vh; - overflow: scroll; } - -.modal-bash { - margin: 0; - padding: 5px 0; - overflow: auto; - min-height: 0; } - -.modal-textarea { - display: block; - margin-top: 10px; - margin-bottom: 10px; - width: 100%; } - -.modal-small { - font-size: 11px; } - -.details-content { - display: grid; - grid-template-rows: auto 1fr; } - .details-content .handle { - background-color: #f2f2f2; - border: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: none; - cursor: row-resize; - height: 28px; - min-height: 28px; - display: grid; - grid-auto-columns: 1fr 60px; - grid-template-areas: "tabs buttons"; } - .details-content .handle .tabs { - display: flex; - grid-area: tabs; - overflow: hidden; } - .details-content .handle .tabs .tab { - font-family: 'Roboto Condensed', sans-serif; - color: #3c4b5d; - padding: 3px 10px 0 10px; - margin-top: 3px; - font-size: 13px; - border-radius: 5px 5px 0 0; - background-color: #bfbfbf; - border-top: solid 1px #bfbfbf; - border-left: solid 1px #bfbfbf; - border-right: solid 1px #bfbfbf; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; } - .details-content .handle .tabs .tab[active] { - background-color: white; } - .details-content .handle .tabs .tab[active]:hover { - cursor: default; - background-color: white; } - .details-content .handle .tabs .tab:hover { - cursor: pointer; - background-color: #d9d9d9; } - .details-content .handle i.material-icons { - font-size: 24px; - margin-right: 5px; - margin-top: 1px; } - .details-content .handle i.material-icons:hover { - cursor: pointer; } - .details-content .handle i.material-icons[disabled] { - color: #dbdbdb; } - .details-content .handle i.material-icons[disabled]:hover { - cursor: default; } - .details-content .handle .buttons { - grid-area: buttons; - text-align: right; } - .details-content .handle .handle-title { - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - color: #3c4b5d; - margin-left: 5px; - padding: 5px; - font-size: 13px; } - -.details-panel { - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - color: #3c4b5d; } - .details-panel .material-icons { - transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, width 0.3s ease, height 0.3s ease, max-width 0.3s ease, max-height 0.3s ease, margin 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease, border-radius 0.3s ease; - font-size: 16px; - margin-left: 5px; } - .details-panel .material-icons:hover { - cursor: pointer; } - .details-panel .material-icons.grey { - border-radius: 3px; - border: 1px solid transparent; - background-color: #e8e8e8; } - .details-panel .material-icons.grey:hover { - border: #475566 solid 1px; } - .details-panel .details-panel-heading { - padding: 10px 0 5px 0; - position: sticky; - top: 0; - display: flex; - background: white; } - .details-panel .details-panel-heading.aggregation { - padding-top: 5px; - display: grid; - grid-template-areas: "description range" "heading heading"; - grid-template-columns: 1fr auto; } - .details-panel .details-panel-heading.aggregation .states { - font-size: 11px; - margin: 0 10px 2px 10px; - display: flex; - overflow: hidden; } - .details-panel .details-panel-heading.aggregation .states .state { - height: 20px; - line-height: 20px; - padding-left: 3px; - padding-right: 3px; - border-left: white 1px solid; } - .details-panel .details-panel-heading.aggregation .states .state:hover { - min-width: fit-content; } - .details-panel .details-panel-heading.aggregation .time-range { - text-align: right; - font-size: 11px; - font-weight: 400; - margin-right: 5px; } - .details-panel .details-panel-heading.aggregation table { - grid-area: heading; } - .details-panel .details-panel-heading.aggregation th { - cursor: pointer; } - .details-panel .details-panel-heading.aggregation th .material-icons { - margin-left: 2px; - font-size: 18px; } - .details-panel .details-panel-heading h2 { - font-size: 16px; - font-weight: 400; - padding: 0 10px; } - .details-panel .details-panel-heading h2.split { - width: 50%; } - .details-panel .details-panel-heading.flamegraph-profile { - display: flex; - justify-content: space-between; - align-content: center; - height: 30px; - padding: 0; - font-size: 12px; } - .details-panel .details-panel-heading.flamegraph-profile * { - align-self: center; } - .details-panel .details-panel-heading.flamegraph-profile .options { - display: inline-flex; - justify-content: space-around; } - .details-panel .details-panel-heading.flamegraph-profile .details { - display: inline-flex; - justify-content: flex-end; } - .details-panel .details-panel-heading.flamegraph-profile button { - width: fit-content; - height: 20px; - padding: 3px; - padding-top: 0; - margin: 2px; - font-size: 12px; - opacity: 0.5; } - .details-panel .details-panel-heading.flamegraph-profile button.download { - opacity: 1; - padding-top: 3px; - height: 21px; } - .details-panel .details-panel-heading.flamegraph-profile button.chosen { - opacity: 1; } - .details-panel .details-panel-heading.flamegraph-profile button .material-icons { - font-size: 15px; - margin-right: 3px; } - .details-panel .details-panel-heading.flamegraph-profile .title { - justify-self: start; - margin-left: 5px; - font-size: 14px; - margin-right: 10px; } - .details-panel .details-panel-heading.flamegraph-profile .time { - justify-self: end; - margin-right: 10px; } - .details-panel .details-panel-heading.flamegraph-profile .selected { - justify-self: end; - margin-right: 10px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - width: 200px; } - .details-panel table { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - font-size: 14px; - line-height: 18px; - width: 100%; - table-layout: fixed; - word-wrap: break-word; - padding: 0 10px; } - .details-panel table tr:hover { - background-color: #e0e5eb; } - .details-panel table th { - text-align: left; - width: 30%; - font-weight: normal; } - .details-panel table .array-index { - text-align: right; } - .details-panel .auto-layout { - table-layout: auto; } - .details-panel button { - background-color: #262f3c; - color: #fff; - font-size: 0.875rem; - padding-left: 1rem; - padding-right: 1rem; - padding-top: .5rem; - padding-bottom: .5rem; - border-radius: .25rem; - margin-top: 12px; - margin-left: 10px; } - -.flow-link:hover { - cursor: pointer; - text-decoration: underline; } - -.flow-info i.material-icons { - color: #3c5688; } - -.warning { - position: relative; - font-size: 13px; - color: #f5b800; } - -.warning i.material-icons { - font-size: 13px; } - -.warning .tooltip { - visibility: hidden; - background-color: white; - color: #3f4040; - box-shadow: 1px 3px 15px rgba(23, 32, 44, 0.3); - padding: 4px; - border-radius: 4px; - text-align: center; - white-space: nowrap; - position: absolute; - z-index: 1; - top: -5px; - left: 105%; } - -.warning:hover .tooltip { - visibility: visible; } - -.flow-button { - color: #3c5688; } - -table.half-width { - max-width: 50%; } - -.notes-editor-panel { - padding: 10px; - display: flex; - flex-direction: column; - height: 100%; - font-family: 'Roboto Condensed', sans-serif; - font-weight: 300; - color: #3c4b5d; } - .notes-editor-panel .notes-editor-panel-heading-bar { - display: flex; - padding-bottom: 8px; - font-size: 14px; } - .notes-editor-panel .notes-editor-panel-heading-bar .notes-editor-panel-heading { - padding-top: 3px; } - .notes-editor-panel .notes-editor-panel-heading-bar input { - vertical-align: middle; } - .notes-editor-panel button { - background: #262f3c; - color: white; - border-radius: 10px; - font-size: 10px; - height: 22px; - line-height: 18px; - min-width: 7em; - margin: auto 0 auto 1rem; } - .notes-editor-panel input[type=text] { - flex-grow: 1; - border-radius: 4px; - border: 1px solid #dcdcdc; - padding: 3px; - margin: 0 10px; } - .notes-editor-panel input[type=text]:focus { - outline: none; - box-shadow: 1px 1px 1px rgba(23, 32, 44, 0.3); } - -.sum { - font-weight: bolder; - font-size: 12px; } - .sum .sum-data { - border-bottom: 1px solid rgba(60, 76, 92, 0.4); } - -.log-panel { - width: 100%; - height: 100%; - display: grid; - grid-template-rows: auto 1fr; - font-family: 'Roboto Condensed', sans-serif; } - .log-panel header { - position: sticky; - top: 0; - z-index: 1; - background-color: white; - color: #3c4b5d; - padding: 5px; } - .log-panel header.stale { - color: grey; } - .log-panel .rows { - position: relative; - direction: ltr; - width: 100%; } - .log-panel .rows .row { - transition: opacity 0.1s ease, color 0.1s ease, background-color 0.1s ease, border-color 0.1s ease, width 0.1s ease, height 0.1s ease, max-width 0.1s ease, max-height 0.1s ease, margin 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease, border-radius 0.1s ease; - position: absolute; - width: 100%; - height: 20px; - line-height: 20px; - background-color: white; } - .log-panel .rows .row.D { - color: #527a53; } - .log-panel .rows .row.V { - color: #3d5c3e; } - .log-panel .rows .row.I { - color: #333333; } - .log-panel .rows .row.W { - color: #b8952e; } - .log-panel .rows .row.E { - color: #f44034; } - .log-panel .rows .row.F { - color: #9b27b0; } - .log-panel .rows .row.stale { - color: #aaa; } - .log-panel .rows .row:nth-child(even) { - background-color: #eff2f5; } - .log-panel .rows .row:hover { - background-color: #e0e5eb; } - .log-panel .rows .row .cell { - font-size: 11px; - font-family: var(--monospace-font); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - padding-left: 10px; - padding-right: 10px; - display: inline-block; } - .log-panel .rows .row .cell:first-child { - padding-left: 5px; } - .log-panel .rows .row .cell:last-child { - padding-right: 5px; } - .log-panel .rows .row .cell:nth-child(1) { - width: 110px; - text-overflow: clip; - text-align: right; } - .log-panel .rows .row .cell:nth-child(2) { - width: 20px; } - .log-panel .rows .row .cell:nth-child(3) { - width: 15%; } - .log-panel .rows .row .cell:nth-child(4) { - width: calc(100% - 110px - 20px - 15%); } - .log-panel .rows .row .cell:only-child { - width: 100%; } - -.trace-info-page { - overflow-y: auto; - overflow-x: hidden; - padding: 0 20px; } - .trace-info-page section { - margin: 20px auto; - max-width: 800px; - font-size: 1rem; - padding: 20px; - border-radius: 8px; } - .trace-info-page section.errors { - background-color: #F3E5F5; } - .trace-info-page section .metric-error { - font-family: var(--monospace-font); - font-size: 12px; - padding: 5px; - word-break: break-all; } - .trace-info-page section h2 { - font-family: 'Raleway', sans-serif; - font-weight: 400; - letter-spacing: 0.25px; - font-size: 2rem; - margin-bottom: 1rem; } - .trace-info-page section h3 { - font-size: 0.9rem; - font-weight: 400; - line-height: 1.25rem; - margin: 10px 0; - color: #333; } - .trace-info-page section .contextual-help { - font-size: 18px; - margin-left: 10px; - color: #43a047; - cursor: default; } - .trace-info-page section table { - border-spacing: 4px 1px; } - .trace-info-page section table thead td { - margin-bottom: 5px; - padding-bottom: 5px; - border-bottom: 1px solid #333; - font-weight: 500; } - .trace-info-page section table tr td { - min-height: 20px; } - .trace-info-page section table tbody tr:nth-child(2n + 1) td { - background-color: rgba(0, 0, 0, 0.04); } - .trace-info-page section table tbody td { - font-family: var(--monospace-font); - font-size: 12px; - padding: 5px; - word-break: break-all; - white-space: pre-wrap; } - .trace-info-page section table tbody td:first-of-type { - font-weight: 800; } - -.flags-page { - overflow-y: scroll; } - -.flags-content { - max-width: 90ch; - width: 60%; - margin: 0 auto; - padding: 3rem; - display: grid; - grid-row-gap: 1rem; } - .flags-content h1 { - font-size: larger; } - .flags-content button { - background: none; - border: 1px solid #dadce0; - border-radius: 3px; - color: #1967d2; - font-size: .8125rem; - padding: 8px 12px; - cursor: pointer; - font-weight: 500; } - -.flag-widget { - display: grid; - grid-template: "title control" auto "description control" auto / 1fr auto; - row-gap: 0.5rem; - align-content: center; } - .flag-widget select { - grid-area: control; - background: white; - border: 1px solid #1967d2; - color: #1967d2; - font-size: .8125rem; - height: 1.625rem; - letter-spacing: .01em; - max-width: 150px; - text-align-last: center; - width: 100%; } - .flag-widget label { - font-weight: bold; } - .flag-widget .description { - font-size: smaller; } diff --git a/deps/perfetto/trace_processor.wasm b/deps/perfetto/trace_processor.wasm deleted file mode 100755 index d17a7b0e8754cc62cbe21e88ae1a0d37ea0f9103..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7066469 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%0AsfD{u!AY`t+eyMRH{mOgyC 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

Kb8Tbem%R)o#e)68%>P}*r~*uR3L+0D zg3i#3NG{G}xRO7z<99FY`o(3PKm<6%NyOJ?5-6WP*ULwl168-n zqs<)n{eAqt#I$aU-yfvhZFf0^s1mr~{*%x4kwOk@JX;YEre6-#6c9+osen7V6oSxZ znX`M{A{>-eZWV$UX%6y;XMZ_^qwOI z+~LEV^&jM3BOcdMc3iDD0k?K`uSCk55m0e&F#`4&nJl#^0tr5h*UNF3{*Vzl| z2%=Ss_%ogXk1zHZ(dy3WvB$_Qs?RaMMe8xY=)~4ze!XUo(f$(*rN#2MWiwTbpqrJr z`Ti)s;Lx*HKx{8!0phTN03uZb#Un6@2`9*+Ah45sCo1yiPIeF72p7bhon;-)Dn#N} zsEKR_?Y?=wLB;Cp~LN>OoeH4~m)rYP6%;T%W<#^!M;}#z7N=os31&{TP=97WHFuLN^7j zqx#<(=>~He)ek5Xxbn=STo?}E0992#&`6Y`K(hcH@U9*h`k_zlgCT$IuG-KRbF?16 z^hQMsW?$`z*?E1JMhd1a#1;2fGHs&#Zf+j z1p8nwKT<}y8F)AzV&FW}kYLDM9hh{j!-{H>Mh}7jY{KVLzBgrXD+~_=@M0nPOk6g9Bz-skskWMTL4A`gbf5XIM<%KBFhQ*eZAa`h+|r>EpMvMc&HMxE6t zjAb_(JS({!jfA8nd*kb)ASMgLJ{*@?zK5rTq?mBt;uH<16#sw+97+^1h#Y%oK1g3X zI2qgLF{s5Cm^MRWy<+=3x0c0tLr-Uz3S6`#UPMbT0+)-_(!qqr86Vi3+vmCW>_Xsj zk-{n-K;X9ZqPD<2h;`DEu;E8v3NH~NR;Vmtl6gAd-9FK;|2htMpNerzK@m69Hx>vB zB(Nj&*5Qbp^=%HOV+}z&7IK>^tM$rbROdK$Jr1RIhq|R4U4K5l*$?+oeUt0)PYWOB z4jv+ue6aDM?hha~{PkTaX5JOGH2=73EJ4Q#H2Qiy zL>&YeIbuhvf zu_)>TUV+g|21!FONa?1%saH~LS0(=^>?27glsCOeD$%6DW2ySUlk6nM&Pc0U?7JUPwQ%;f+O-DE<0MKm9=qHh5=VJe@0{W{9h_a6sPR+#Y=W4Ua{)BsQ zAKRP-P7#k_zzt5}+FqdR3vD{oicFjfU*=N4J;*(P6Pgyxu~(FU7F*L2K-r8+ z0xKbaK(MqSVx^O{E&2vs?VBOA`i>kR1|)Cg$;biP4YAS=ay}u}X&@H+TUp$*oYbD+ zeQXBA$2*mYaVirSB#8+-$Ug80bwW~_{9RJ=Ef3GJX`EZmjMXx5WYNWyxjWbhF!W%w z%0dR!l7+pLg?uOrdnpUiOB-3pos@;WA`9{2wPhg}$U=P@tinsLc5_6hl7?l zq`TLP6T(x*LRd(25qrqo zSK#oXa-=0eg6#obnO?9cG1PiEiJ?64C>K%(HQS_)C|gRZn!^IGLvU2<6O1e-JjDsm z$2v-J?w>a95lsccg*q(qb1t7-3I00U2%4O9hl}#R9FmpgSiOc~sTyoR3~Ly=wih_Od!R; z#BzL%rcfGn&B*0&d~B(8e1wM!61a53`osL_x;XQ8(-D_w2_f*NJ@s8mNC+WHWVg0R ztOQA>?CvNxAkFnA%pBcuI_6>~S6paHZL1;sMtiaZ(fB zQ7c*giK@Gt?RIF;>vsBs^4q>{A;#Ty3lSpLEyS^qxDZMqQ!0dFdKyd$EDr0Io)@oC zntWexl4ZX|#=yySybD)zk;$W6%o@YiZD9+G9G^;ik#~7^7_6S1;L5OkXWw{slrkh< z?bpYjCQ&c6iT(RXg^Zo6E^YK-E$bns391#dxE>IIA^`5x=qev&az zoJQQp2R*Td$6!+d;3ZzbDYoZrys)E-yewO_cu(+}05$Z3!DHYxwk9R`GcUp0@+#&^;FG!}r^) z57u974*{N5iZogP?OZU4p0pqLej#xXn<4 zT{w&s9?99-Yx;iGo76_aP~LyW1(};gEn52fW5y^Xd9+yft;#0Vbq++f+(D0>uktd8 zRc)O=IHuL&C>> zs6X04Q4hO{rEZq~a_6-*djrG;AlJe7_O&c4;NbN5`ewg=yL+&2PB{kZ^tBt+k!R)? z-oYU+vx_wU2YnB3?)y4bocW~o@Hy_2oIs7>zFP{|63plH@!9!m@XQP;Y>gz)=Y^3c zM@G@Oy64vH9_FhWOs_AjE`95~Qf|Y%PE{{_PfBJ|gR1k6am{p-s5w2aE>?4|@7k)4 zZq4QZBT6Koxj)oBH>o^}X7++uGM}18QCtkk8D|gA@afO)?$hD5ZguxN<}a$|H#3U{ zuU^%B&bAKj86y)M2eLGwpiPdd0H>7USOV9^e^icU)Z`Vf6~{Wbxua0eK^{;oW47w9ik3_L#ZF;2Yk_1oMIN z=zIY0EH^=+d}qNs7e8ck^h6)U7#HL6ciZs0T~BnH%Sq*2IO+TtiA)Z{xe56BsvL0) zD!AlLsxMl?BI%d=+S;_Bf1yeGomVfq<(AgI_sGz`)_u#IvyJ~UOBzY10H7qshBx6D z%LRogV<0ZiL?`KwwdV_AC(}{@8=2RaI}ez2=TQhxdJu+p?x(iM+bM;ri> z#6OwMAc_~hWA*~tIL==xH_ld_9-k+LPpy6hN}QUHz9DM8=H-h?$~wbtbWvo!$xIV5 z<|M9@%;*5!p-BIIn8`X6!gW8z-5Hl)8%&P1q`YCs7#4Ege-*2^>2vyhvPITAt2L^- zjbAkh=hy~3gH(SHB%!)2$0+DRD8=CoV{m7Ejwj{fE4ND8{?vPCsf7Tv7{=@*_`C}0 z;+4Qs6sHJeA-uQ_9b&*WrZ;X9hA(mt0s{CyW}DXvJAotJ{nUGCjn}%>p;pq>IAhMj)E9d+a zatXD81n}SwBO6BD3I0G_nK@Mp+>&;7Q6FA7sqd83hXNq=A(=jNQYdo*(sNLsHFl`1 z1Ga?>x%)ja+q<}11Ow1dg(%OMCLOmr`DXE@^#F+4eH?zMdeEI6+x-hK%#Y^^A6K;^ z`px$v6)N+4;lScx8`4^IDL^=(cpTD z&KEbLliM!C#Vcb8nHJkH5L~eh12O0}3}hV7lEZFGmN`2X z8tRL$c_!S8ZoYmiCc9vo&5Y%YRo{w%6>J`@;9L24A#8K@!kkJPKL= zFp4j9;gT`mkn$I<_1F-`lTm<~0%5O?4fQSX`XIh#4IgvwUhGYg?YbIB1=}s7{oBum)q7dTAQq zwVVDgDFEIagt)Wm`XWx<6bL$IQq%X4%d}CN*3s`(=nKOf?ml_4u>s;x4Sd3_lP4pB zjMC|pO*vY4pyxyD-^BDmN*q177)*G9_y2K;D z$_Zc=jB)hlx`JiVTX?ET-&rj1PyKpXg?JT(i7 zY%W9&z<1hHM_9F{&XJm{IWVRU9XNHII%PbZ?7;k&Q^!b#lkJ_lr>Mdoq*P{)A{Lc% z1fx}&nq@GJ3Wm8{hQ+Cvu?$#TrCUxu@=Q#*ZLHt!7b_H~azJRO1h)lLH=^$-sL21*x*&dhz?w;O(qI#8XuLF?NNx&CN#0_fhkeyt-0aT4v@h_id* z^-jduv0_&5|I)h;4R6i}0(b>*t)&4k7TDW>O$$z2ZWq)hKX$TrIM4JXJ~oB*`05O) zUKj)<+?j7)Mk%jX7CMV=j7*&$ zyFNc&bjcI0Ch#{4?8Nk64+)E*s)yC@O^ZYDbTMN6-QBA3yUXVZZ_Ubtl?OM$URC)a zYiIg7m=4xI-;cz1Ct-5tv6zIRCilCf)kSYG+~@|8K@_ zt&^=&hI-2+SWGLpddIZMGoS(aEN2HI46rx@a-wjT4~6^OCJ_289T z^9|1F0=B_d@V+%pY@i9qAdp1_P?>G+6^}d$b2OAm_cFW4iA9QvX(p&dW&+|L{_9m_ zCLEGbF7U>aQiAXAn%2zEh7FBi9%BZ!WJa;Sqc(z`MfagYv5olrc0b25&LWHLG@zdp|9;_;KZ zB?l<=JQHq7cvkKxxNXDHN4h0>INXwuXRD8RAl;Jjz^)X>7K+UdQe$9P-&(jO5d`f^ zL@bqRbW4Uaq=z`@Kd3kv%GI$#bN5j&XxOsV3DJQoaDya(s=p2IW23GxpJ_*KVAluV z>o4tktTtBSa433^wDp&H5|^Ha5-uaZvmJV)FylnHc7&U4_xL>`Tt#MoNHRIy0_8Hq zjYTiYt!KOn+*Y6kkK-gBN>W2ac90`;{Y6w=e(!KrMYbR~$*=H)loJwR4ng)VwhG?Q#Dn^Q(szk@C&)K|=n~|RS z>D~{@3u_SF-^d+RBv}cK8>)*^a6?&vt<#qcOUfpenA9nNW=G)G1%i$220+@~BxZ7k zGyNQqIAaxqDLjUOu;2|W1pNUCS1}AOJZ)`IWz~VTTt&_k6h@rt?EKbp6@d|*G)NLC z!UCt02!}D7`$?iMVBBW_;0jH}fxRKub@lBX0PbROg>*Gn=y2i+hn+i)!-*?pp%*Z0 z&+=ZU*oNUgU4+nVRez)>I7h-zXjMa3l`;h3B(`gG?o^@xj>AHDvpnK^Sl9v6N$i>@ zS9=#Ui{wversStFz65h+i(PU`Se^%=?Plp#CIaV{$+WQS_M+|N=>@G^LRq_r&f{5` z2*5Q)Ovlu#VB%$a=4x_9*)Ys@Rc0IZR5IK6+H6rm;B&mVTkpj0CYvyLnm)cVEYWRlCE)F8BO0($flu&!{}#@O5W0fPv*^AgXurqLinOe2wD z*EGb5h)!94j2;y5ECvGJ9bgN+9Gu)vs~ESU&rSc;h*97Q)O6t^7P8Mc9eAby(*Tc_ zh2)V(xlqNR`LL%XopsvE^=yL8kuBw`Nd>M_*d^Wm)!x;zJ`52I>^80~tm3LiR=(>6 z&m|sH)@#tLSNbLP?AJkX@cfb=z?RBzakMUyV-xNK9CwgS(TJj68>~AtqA+DymC%qU z@9p*aH;hah%UdH+Cake;y=IgFh;+1qjpdRj0-$hmgB+Bts5)!{zp0Ckg{+^%g9l96 zU%SPZ{#MoF5NTFf4^K~*cw}TU-eWxFF??OY7I}c=k(#%l2V6B zea==Kk0V%#?)4ttse1rveJO?#-FJ3%&zc+pnOy*k zX%~+)8LB3?@h7Z`Q}Z6|w|DL3X;m!ji2CI%JEB*ti29+gM`yvJs9z47ZrKro9d-n? zTJ@fu5B9YqhT0KC*uT44*<(ilmqw?b_nJdmTKjt!b_7(mup^$clo*S(v$(x)BTks& zqPvOx!T!Q$am-@`uZAF!npmEsCh@5k`=#RB*n{Zf8%35+<+oFw5+C;}53P@H7azd> zi4(*>ka@gZK+U-(!5nMW$3Crxd3ODbRt> zJ?MZUGnpLE9eI% z0d^9#;>yig{04XA2+_U;Lx?`Xb>`4EO@(eXd8*s(mueb&F_6c^Ko*j3q`F5DK2;%q zn8D;F0y74>j9q=XSNzn5MfrZ+G7osIfSD$hqBwo?H=s-Lu4hfATvk-Ia8c z&=>#Hw#zX`hB#-w$DAv&AQ_Nz^QWf3L3q0v7?SpbIrCYl-(607;q4%pZWN^eU7S#v zMrd@*qHN@2VrX<_(>WKZ(E*WWBOgCDRxbCRY38H1pXFDkUclu481#lW25+spjgnK%u!?7FE0}2}%JvP| zK*u0H>H}4LLgDLQQcK@(h|wBwHyf&QAXkR(sPFHz+b%n(EV8Hf8PC%kbE6 z{_xDhktFP#vFQbuUroi^1+tYT$P60j)C`dMq%4ngo!cxb{JJn|hn}!xp7+hWAqdtc zpYCJEQIx6ot$|HG%sji-`ftD{?q2IY1vL$Qwr9U(z7P{>3**EeqZ{M?ReonU7nyTK zqT;;`^hTs&M9ciBt)GF{$n6T3msIF`{8W&#or$J1InHgb1~cU~LXKN^%1Dbe03;Ye zAB5K{HZVdMjea}*5%^`$n-H(0@X%b;QrmA}JBKubLmEa#G(k>mz|T>^{SPo4@kZF{ zHrDv35teT-UtLU%-*Rf)%Bk@{lTFfTvPn7ufr){HWoqovyv@{zaWE@(yXQOdsrs!N zqojwS)1Wc_ZXXdzs${i2?_B@}%^!&%QqoW)whygEa4iFDDnL z=Iyw}vE9#LV@Jr7m0D--2~!DijipBpBnbXM-(3FRqp5NUt!XKvG}j;J?trx-ofR}^ zuLW5Wb?=p2XEPu(stm10I|plSS5s_k0ioZ7=#Gh?SXaX>Y&c=!M@)==rW~3|QRdFv zA$<|Eh*sflrg@YJ$*7r3Hz%WuoL<7wVY_Ux3NKd7khQq;LZOQ;7fMK|row}zMIWag=io0syW7$fErj)_ox5Wc>1^4LOJNvy~$rg<7_ORS4Jr}h8*UO z4kHe+12vg5Do>sc<~Cp;=!0q{`O}7 z5Z;FFTOgRL9B@iVI`A+9*F;QRsQD_nw>V>kqxD>@*}?}wq?D}e=hKJ_?+OV}I&D=( zIjP_nIZX1Ei2A`v;Z)f7s-~O;3!4qw|HzB_75Yo>X4NG*r#b={tGx6<{XqW;aj5_PpZ~od_~ifjk)QpS5aq@E6##*N zI6UxJ<9&9y=F|G>Hi=sgFfwAuh$cPVr?}|_1MIMxj@qU7vN&maSN#(+knQ@#bvoRq zg+s@B-T1GQAMtMwWiC2kho%J|_;8aeej^J$u$IjxSMKB{SL(P#!3U}pwKutP!6w&C z^<8XorTa1W6uo6+{rcmb?L)mz7xVxB`I$3p|K`j0{;Xf1rQh)msCdi5a`ms2E4_|u z^;tCa`qq=TNLjNAD^OU&8(%;9Q)fUfbS(YkFxrZ^?jQf#llY}8PKuBGnz(;uasP_< z6|H4-G`moX$4jG^U{I^B+}i$m_Tze?2OA-1UCJ1A`2+oNGy8xIaA*Udz+#2BNv?%1 zjHQzw$j2!T(qeg#gJZJrXm13>iBnynS>h0h*+s$z?(KY4Y)AP>G`ITBh!obo5|z0h zp$#@zL^c4sgyTWNNghQBB*$#LMRDmt4A9E@>-ZM^^58a4)A`(^0(}^ls*XN3qMBzY zWmSiQcn(24W*w4d;Fcjc!TQ6qqb_^BsnNypMUl?Np7R1v+IVUATup`dC$M_SvWMEt zz9*-F%*bLa20cMBPV2$?tvF*ii#v8jyZn%2##zArvLv9B36~dL0KUhxoJ@EJ>AZw= zU<*V}Ul~~jutYqmh$|wlqLrk_boKIX)<69Rr$H{H?ytd412XL=NUg{xnxBDR0Q4fE zZpUoJ3Ra76XQ}kZpfCc2B)P)gJOu{FNaNv(ZP(l!%MoEX+0qf#aPU?Ai}Mp-*NOi= z^|jxwVa4sd^X(u0o%-9UW|egJ)^fMg`P6^(pDez2I)6>W`ovFxw&>*Z?zJ(>XiY>8 z1@sHuH-LxTS?Cm~so%_@0{kMsVUuh;GWce|f~xwC`EfLbK8z0(jR!8ec(if;4e`X_ zsd=w?0vtc_&#v7^4)fY$^&kIAhoo%ryLWB#TNq1kX2xoEVjI0{(L@h@m`;#T!Cgny z@%PjtjzxW+rbh@yJL3ai;%Rvk|dZ%2M)d74fYl4{JH@W(Nt%!&MhS zc_7rf4Accnjq+XHMgor~A357QhHD#K3#o4cb^QsHX)p12K{GS}|LSm8kq+6+$*T4f zbm)LU?pQjdif|z;XMQC4K?{Z>yYsw~No@L|P`twZcr{d2p+oGrX%;9(?YS`DY##5L zvqfDLPxPB^qZy!kT|^x7@#6Ur5(9XbGC%U1!_`sslio|Z$L6F?`!P}>7*)sg{B!?= zcTa?WYb;L6DA<1=$iIS-7S(#UF(fh&%*LRrU@V-#gG!kcB3>TZ>?WwzQzu~BkMQ;? zXiZ{2Oy$rkz`so=isn~wZiT4J2wvJf!TaEW;)GFSGdXJG;yK(L{92BBO?lyfW9Ttz zm3YT7TW4I9_JE1vk@2L)GGcb1EJy78c8$2Cv+b`2_mf*>e1N`{&GWSB;_k@9#T z8yf)`Hb7djbs!5X+WCE6nGc4_LCs@IxJsI^W^mobA2@quW3a1EKVcfoD&WSqHr%+} z12_47f?YrtFpAOvMm#VyE^M(v{aAt#>R5tNt`@{47#FPUwUR@D;o^y)rX>uSPcLTC zkg%98CQH$*5BkcJPwkKceTuxhK}gI_VLB8mW{4?ezTRt1kX zSrt6{EFK40b3Bkf_;?_)Dx&7gQnIbIwDW_cR;=ulY^_U|lqp>x5VWlN%=c1jd?8+W zrb;_{VIn+_gJ3zqtjdp4^_d}*s?X80zN-bB2%hRz?)}%^`BZqdAjpG)VCO5hheY!n zO4CSHt*mAQ+Feas{BBjbSvqj(@OD%{G8S+o-v z4}wv@{sWU5q=IH66}5#-9)kY1>KZV@rzla_BOFATq!&0rYGIR z1I;XXU{^L$D|kOU$OP|HB41}h%6Bjj26!9l87!!WXR6phyF{DO7fHgSoh014lvxM$ z@Ue$_qUXKTV_G?5-vxmYoXh!CY4EV%1QACvFbu{9-QsJ5ZX`bbT!eX+uYh$?c{rYH z;K6h6TRhjMp67KLV&r?M=PQ9%5qDhz^Z7)s1SWhrXhf9}#ftsxm&kY#I9C7;9-t~LFg18n=eiy&Y!s9X9VRli2?;I$C7roT(LuQpxKmaXA4FtBajGd2OCEjmKaDJrhLHO;|X7VXJ9 z4&0nErpf1fz448nr8L-qwPJio>)Dffy6i`Cje#>J3c$YQcG)nlnHriWtBo%-($XT5 zi{sbEs6%Op=_cm((VcDd$xyTtq}yU2NrXzVHiW#3#VD@SQkh7xOgv+?Zg2|l6H1gh18Os5*n44)OvP@e1*q8cvrVgf z%wZa= zHT^mc=pvBdP8-tsW5Z46_@DI=9VdCL(qTSN)xXfEA~N~2p#RPOA_8hC*2(ZifDku;bYf00oZ$^GRxll1GpRZ^vJqS3o zAr>m$eW8!T>fvgG0wKaUn!U(l8B-RXJKnQrW6<$VW}j|M|7&XH(=)#f)R&I<%GePf zuO|-Y_%qk&=jQD0`r-^fIvdd(FG-k+g}d3F9v;JSjn{Ep-5p*>j`q4XcxpbM-Axfb zkdwFO>0#tn^E^qbV{YSNT;&4~BW>m51orRV<6-=&ZT2Ox(SbsjA$B+l?TKe%OM1|X zTgj+WlT}S9Q=_PvZE+p>QUr6(U!R>PF!a^eXBCrOmF^f;lukKZKiM-hHj;=#`6u(K z4L_YDWmhzS4j{2eWwUf-tVJx7D(kPDM3sHY`($8}MTPX|^UA6%g&7>Kr{??9HND9* zAl}QJ3zV7iE=ZoNF;wx6S?)z;Rf0{cwLZ)_5D6(9ua$uTC1F+_}OX*o;Ct=VED0ILhPK-C-H za}!zbl7yd|Saaj=ZoXA)plN_PKij0d*DqnglMB*K@6{Vtn}$oy5*Rq9A|QgZs*wUi zz>do|@^7lMuZ*HTF~F5-h6tay1<~-uS)_tCa+I(FRsA-6dNyZ_REDKG0i;VYJ81Sb z;X?D0hDkDb^~T@~;%h|*{t9y=s4$co-x1U}w2ufXtVrHIU{Jv)22ZhM@jJ9~l?hV_ z2(*GMmOM|E;@mD+LG(>?Ab%lG zvhD^o1ZfQGw^eV-@SK{#+nyX`7wZTiDca%Kc|G^&}Q>X2-zp)Mi3 zesn(yGy5wjY<4ncmL2bt#1% zN(w`ahBW}jc~|Uhh%3ZMP#D@>?2CnKlR+Z?3cyVhpv}q)SX(%9JE-xZ$hL++F7ODV zmYS%i24l_2RzPu;wrKW{0qlS=x9kSMMsL9M#C!!;4m+udIDokEE6h=urYzg&B-tcY z6rw0XOtLVAW3Lcf+a_*laSftnKzv$zNMGn9DR=me@Lebkfpsge$8kyfMIhhc!j+p3 zpP9{t+e6l+kE}4Zd~O?_4$-|eVQNG@D&jmKWo#@(?ioKIVia02zsGJVxi4=*=*u@pl%obN zaaMxc*J8LCnvaKhmzEg)mgo%EIAe4VQk&H~cny~NnN!$~0a3f!-Hy@L2P5JsAMTw-! ziARZ~$}_B{8UdRu$Pl%sni^lbE3VF$t4-ot!|nRrzkmArO1E{6-oGT z#`(NqZ?UgetZxs^cIk$B3?&(luFY3QHRmU2hrG?D z;WG>iFseE}{poQ9rW)H-XdT6N3|>Oa?(r>NVUA41lowG|S#=+^(Rc-c)KKU2XU6Qf z=jAYJ)X6b2R)k&fgF$urq3(% z>#)B+hir-T=d={T*w`5ufV^35?c^d|#v~pu1=V6}C-~IAe zVghmlBa}Ho95b+{~Prlr}HR& z8zzo9y7k%Q!E_|Yc63>$);G^qq404^ay1VhP$A#2rCF#@19{A4lyO1aBR{?0$XD_X z-D3s;BKP6=jAg#+ofVaJVDf&1iR?B$>;Jjq|L^z4FT&mV-4C&a7V@br2( zVKx!|Qip{ob|9OubLWz~6B&r6fYV~hR7T)f)~pQ52=SD^X#3?)BrPKe8EF)tG@&bI zzO?z#x}Az9LMqWrm<0&9MlH$_vlk2Da%=7iUPGOMM~|ACcp&SdIv$FQzBJqPL%t6w z(7c(9oZ^%R)Q=}0>gH}|+2mXoU_|2Nnw{wfC<_tABDp^f{~{X*_+c_*75PlD8S%;2 zV(LQ~9q^1J)Bwf;s3()jXHIkvvq8#{lM(^S|46s~Z*Y=r=_qm?$nv(11usCOfB&>z3p;l3tl4dPp2k{&PGDLzR#u6ra0r$P&62`4%FTyFOG)M#v zaOcTN4YMMpKn(3(X#9WqvlZURGI zj?~_R9N$A(3mkJ=f1Y&H^{5x3)j;vxB%0XWN9Ucp2%mO^@&JU~F zDGc>(@3)@7`;ylFoz^o9&~?=al)ETEVq~4|RLB(%Cu3tj<6mczRf0xfA#A;KNjQaB zx&{_Gpgdpr_+tCB_89tUDkB@}Q8dScwz+YAe%NXsN2|l|b=~lfQJId9;OZl5rSQ{| zxHyKmEH=+P%7sFFGnvSy1>VOLPoikgfS(FW#EE0bL+-#aR>xn3PLivL(@BaO$G^c^ zq&u;Zq)2hkl2vaMOEET%mq<$;MZ(-{4(0xmJ9F&_f zki8AW5!>9IX)G}_D?h=jWNge$v`5W$&B)zw&G^mgG1NJ97Zg_(Lt$>r92Hfjgbw7$ z709TIi*jp|3`FoK_pm=Fh9Xdc8~Zc9W+;Lp{oyDjh|15{pA+rRxJdgm9v~Fa&KjAt zq7b9@?v&B~yHh6hGP4`pZ(ph*i8>NeU=N|gZO7zk6&RJ@xvd|y)LpO98M; zv8yImlGT_UM!Pg3%5s2LGZBnu2s9gwqeOs67JHN%t8$JD@nMEYBziETRzCN2#il4( zN1Q}aP@Dof2JjKaEp9`Y)Rhbq(X;+mzN^0RX6!=DQv3>p8Q5Icq^X|-tjvU*V@F_L zhU}QqHqR2+pyhNZ#&Gv6(!F2$B8BeRaHm`=<_e2A2B>D1l^Zi0HB-I@gAXk=;28pw z!l6ZA_605*7(JJ*FP7#KbN&|P+QN!u6I8A>+^SjYek>o$MHWKwVV3olk7dz{)_UJz zt#M(wh|jgw$c>$A&G`YXwdU}>veqJtvM-jKn&}IiL@J0t3q_e62%cRaWieJ0Df`XA zv=Es_ZAyiv)%8}Zn>HDZW-WJIbnRAS(DQz>&weU$(YURG_+ddn?lOJxx$5z)>8CyV zm!UGySEHQlKlsv(g9k22SaGD5y}c|5E0-nheZChX-DBY1MK}i@rqqa?-~{z9M5F`K z!iRl{3=teCXU)V9J_sGaaEc-Iu@3HOHxQ#)NAh@_HnBX4%v&b_nNWC;;|irl6=29jOq%Guw%-TVi5Cm z*OBWqh7To*w1msXq96H~kJC&Zxz39S$a3U57wMqIiPAV|V}0_-b?zY``wGZ-AO&PR zuuDMpTLSVR$0V`Sbg}h`wQXM_o0#aM{*wZd@@(6}jM*q4Jzza>J@7Bit_jQ`{#V5g z;AZXD+=a5FO3LLSDk5^L|E zW&Dyqa@F>F=?;tv}oeJ4SFi=xrH`&ErL98$~IW5T! z#dtjr&4X|vMFx#v2icX9mkY9E&`Yw*xCnY_l3j_5aM6%m#zoqCX*(ox5VC8Mb_kAp~(`!|j&N$sF7!$+D_p9-_pqv~nUB_+*7kbpJ(eDNy^bZzxZeuK)jGeRnEQ zMSYs#n%59z5i%8$aWb5cO$~N1)>S21*WH$vkQUc9RI zG!5mc!5vRvlcMk{cgTI-F_t}2X`iul_m@hZhI<5jJ1$R`+dWG}Qv06i27`?e7QuQB zjck)>d83h$xYwR^(W`RO-3oqgF}|?H7LxT`GienvZAD>%|=A>R+94e)r2C(-ay#o2YBM+B3w1LR4a`iGTNV$7-SnbQLRNGptT-2J6P~+2R>rPgBAW@gM_Zd)PMkj3+UdRD`I+XNx9qO)I zo5|$wRd%|&>K2)Cg*O<$PWJ$t)*mAsf{*BbL-#=GKE0tEVnnP6&pgV7vL7d!^thG- z0DBz(t_7z=7h1gufwK+{h3K51oGq9fuK71QRPSY$jwEFn-}xrRDPhf)DP(q zixjYjx^r02m~EqT7LxjPG$?saJb8$oswpW5`7{terRQ}WsJsl$F`j;UIQ`6UhSkX; z5yf}rTKmZ7X0FM!`8}BSzvuH7`i1)BvBhK#M$p)-tS&V(@1=s4S)4uJ5Jj)OOkj#6 z+>cX9!X$^2CQ$pNf+m#vl#^+`0hjwQcEH9f`QXL;Af{daQru5`iVr;fUR}(OQ~6P06Gz_>fV`47jV@&&UQ->it1zU) zrS6soGIr&UM4Q4h*r^#j+l@ax42xKDa8Y(*4w50o{aDA(4`Z9FXkchsdaL@_-SBKRfV81WGE>aYj z`cVO!Jup4B0IiPz#rmjJxqz>LV>K0)e6Tw8t+%ra0oH`AGyUI5mSCYS_TFMGSjyA9 z4n2U%3G%T{{kC5}t-jLKS#oc3JPvR^hyfwR_k+;U@#($)V18W5kBh09T;PLIS77wI z4TRS6T0Z_K@a$ne{|TR8mk$vDa)z|SmkO->7CK>cAEagwgQKw6{eBOT7=!Mc=*PLF zu-In2r6|-Y6-_vuffE6ZBwS^Bphjs2OVV$)84-*J>vxgS{U+ChQPS`QCtC4{Og|X^ zKN!tWkaQmFO$zxy6|jYT*ex+P7)?t)96(}5^;8tTe@KambtZ*%;Ud#nc*;WO5gF))sL!nSMvD`{MvX`u&>@sh zN|&%2N;}|Z{~48PQ@-e#B?CLPwO02(A*tW0Y|gg-T_+?7E2h<)kVG4;6O!<|S1V7? zSNE-KKC!Yny?%GKwx_cB3Y8!4VF@^`$Sk5PaoyU=|NNG?W>Smp*wuknXnHd{SKX2- z^JW!6qt3ODL=6fzQkMq zR!qkslOYr&o|@_dU_&e_YiIiLp|wFpO^CPyvMXoi93hDpjRxIJ)t^N`rdxk7jDZoK zNi~1}iMSxOG~Rk`{FXq1oS7=!J`TRsYj5j% zim08Ta`Mo##j}T%@*i~nPVWt1RWlN1xayfk%tLoXwf2`FM_%c$gk1J&&a9*qA*&UK zw1txs&%en5AEbt!>m6TQNt6;_cmyk}kIGCiA$sp1X_yt91akIl@f!K%OD=uC?(!&c zU5q27i#^(I!hs(w7S;p(c}QwNzp_HN=PxqGXoOx1q{|lA;*jZ(vB92mYDv1~2~1$A z%Bl2Rq%Ra@xpB(ycx*UdKF_Mf0rl}vI%eV_cANW9zg4KAeRTXmDgd<3iZ5+3sfC*~ zZpA)e&=0(3dQruVDTk|xr1|1%;tsPa^$fVkSq0{02$V;g5GX%0qf*a+i=0tBu*<{y z7Nd%QQevRWWPJo;$XKg+_hK8W-ZmJC`dyQTe)Zy zhh&&3;zcmOabuy;4N|M(BhrZdnH}JMz#hoDRp3VnUKKhr&Wn~s)}iXvC^wMFXSDyi z`W-?&;F#f75C z$3hufMjYuLPc7N^JZplqc2C9}Ltwf+$8*NDrx*?UQ@gSFk;9W={IF%U4Z~v!KSUQ* zZ}$EG%h*=}wa$8HWvTvQk71(l+b9_D^s{mFSV4@z^dyoL_hS40wOQl$k zmWGwY_M)6WyOWOz@c(Vx-GE&ga9$1WPxb^acn%UL1^2G9XruyAv?5XpP_*^AaEI;J zFc+3J_I*X|3f4f_G{ynyKSK*gg+O5rv>Q%!X8)W~(G``52qB^27mZ~|S~d#-b~hd- znQ3Y)Jo9LQKxm(#IHrLRS$KWkO&Pwo)$=NFtob7GZofuFW7BI>DfJ4boj%QeeLm#d zGR2_ZL>+9Y3Hr8E445369h(eb(Jb*wJEpdhJNQt0OWo$Obl~S23imwY29eprVPr}H zN@$L05q12&`BW7MJc}cyBZ(f5f#Nhm?;0d1Y08iIO{HuF_nA1yQ0ZctBtT*T2bw_# zf#%VCK%<>qM=BR)OPnTlMtZw*#$p^M7MWHiT$R+wICxGM0Da@IYMjA)y0Y>pQ6{}? zWk-&~U1Sty!f?NV5r&Pb$xaxhmyMRyI7P@nnewK3sfOm~VN1?LUlpfq!YkkLi>HgT z3iSQ|*n1af%g(CKcRlv=?0rt{DhfEMD&yMw7EQ%eh3d8pAxU@6I))^?)AEqk9(QmJ z*WoxPI8uSOy?v`v2ZWEuDK8sUAb7Mi%3;G)SwqsgDr=3y%a)ld z2wOy_m^R5mvioL5bQ!4p02ZSnzu#dZo!?j^7Sn7(8yyTK|F|VD@y1^5GqT)Tj%}<_ z#y#?Yh_jbSOy?DV#?L4d6J|??XT3G@djJ#yBOri=BEN?uNXjrF_8>*L!YhUpVeHnI zOPU>5<|kwT8~TpL)B6FcF>aLnJER(KwGIL>@3k{ zxF4h5+>hBwH4SY>D+2ce&Ir)LS0+3LJj#lzVc*zo0Q<-2UQ|xVAypj z^aQK6Y6GZ*Sz{P$IW;JlG;SsF>XGeEm|^2F2eh+M>?=6rUz*>Z$^q6Cb4V8t%BqJ?ajK(DbrheM zn5ZX|e_p~FH~2zyMJ6R)6J2o@j-|2o00RolC_XjZh8bqbq@+u@9mZ?`9Lm^aQMNdL zb^HP^Ysdp=U{;9@N$%&0G6$G2t$Z#uBL)Z>Q&!(R&q@jSqeM6!W%i*M20w8+)gi5f z_Y5`5cc@kD?8a@X(tP~cuRoXS&qYgv8=G^TB)0#FE2JL~9%VC1 zbN!4LvW)6qff{=QNmk6+hov~}A${AgKbHbeicrevhzCF3Btg`sffpEdLcJ4IQ@5`> zwuw6iNhFmyWI--g^ii2DK;Yu&`vbJw6qnY~0ptIRSxGTDI0`M;g~}H;X3^=&Im4T3 zc6p;Xdg{|rapaiuF5XzV_khX}ZX2`A<@;@%9BrFwnQxb6zCGJ^G#kh=$2_UdE^bt& zvRISFk6|~r6y|zqnG;7S51(qY=iLsU(#^@kr*sd-P#ivGS5`bWC)dt4dtnXBPn+g{ z{~GP$qyG9m4Ys`NSMmW=ZG5R2MdT%_MWw^5kqVse1BS}(a{fi?z+C<4Ca5-E* z4IV;K;6nS@`-jaWB^ExPe~I)^tPfnkln>!d1Tg&K2uBMhJ4>d|Ji2m(4Mjfr33X{o z0%O>fQ?1=1jug7-DHjK63Jd2DOKczV(-Jc=6t|QFdZfkfte# zrbdBEHYO{5Kd-73YS#UDI~gdgiz-J60S-TG3JcdYCmu==*J5*hTIa*=Q$tMC=2di2 z&^1XH_{y_kkS<2)#ZE(y2R~N4B|{{Zzu@^)Ik_Z$zJ`o`gT|yNfrf?pXL?T<@(()@ z_a$Ftr5$1ya;-<@S6L7WNTYmxoPSMKo?=>kJp+;XmIwqqfLMLpCx-}Se83GriMr`*~z6noOQPCC}t&}IexF-w4 zs_@TYC>K>vxL4>=_CVpu;sL8GREk?P>r%u~{-bu(M0YyU)~eSE@U^cb5it{ju}q$M z;o{z93;IkZ%6RI2ITQizY|by|&oY~}{Bj76vXE-sFSnU9@+KT{wXfimmYRhU%DJZr zGRjkkh`pImg=*gU&%%4J;>|kBXQuUx9Jj*6@v_R*3R8sg(LDS`AP`Ooq!V9H!`Pz0 zC(@DvpW!7%!faW?VS#+{Wu_N;ZMyH^vMj4N)E}h?Ht)BULJRLg1W{ zV+n2_TC^*(JnYIW54%z?4okx?2Q%$$0lpH~^a_Tp0a%)w4$()+d(-&P)t4tja$=x)+O}~~uNpS*0QTp+K)abLKM-&HWF!U1>|`W`u2(VJ7~(n&(Zb$g#;iGy%4lCXxS&{VFieV)TV?bg5^F zmWl`!s}Ap>1ju=m!BM4aFxYu@6KUjZR3&?f`#L&6zPd#ElsVPplC`0mO2t4m!9q~M zVS_5Asg4lE&a8u=0*28jq7!}%_#9bGaFw8nw2RR2-UXFi7J>?qfS@wdHBu~**5Id+ z_Da}ug`na&#RiMUE4ErcEoL+2Y--2DRLw!Xl?q+lHoR-dgU6EE+(DEeR_w|Jl?2pK zx`uQ|S1sieg*Qts@g{=GGPlPB6_YdH8GEYbHHoa<+tD+1iM%=!E)iJo3zu|vI`u`W z0lY4EBn8>Qbb~7TY21PN~+E;-CU1NX;1Jobir!6e$)%M7XcW-FIx zHo8&FNA|4UAdraHwuTt-j!?WwRZ@7alOJHis<}%=jM3m790j6>a4E~6mkOga0R}C5 zH-h!?IPZdoIPtphN#(`7x1BU86r3y=pBfpPOuee3YBPJ;4N^E%cqcwTjRv1ii+ek4 zPo=o0@1zn(HDiYP-@{WV@+U^}5o6r>jy18fRXqf180#V2+n@*baJD%1jr7t{dUA;V zX8(w1voKl~Pv7Z;^qo#EeFxXqTc65PVpugdAxiW5={vMBmcE16;pC_@)kzrAcRC?` z2QSBTf0)u*q)o$TN((Az*F@E1@N+6XL(Q7c3Qj`Zob-q39?ZLN5~jMcYf+IlL)s(@h<8I=i#5(hk@QC}%#Tzww0fbMDV*3w9XCT? zQE*}#b{`kDU6>rVB(@6uX|_*hGaMXb`MC=~c&Sv5g`E)|dxc@FwkXb?fQ94=2n*91 z7B2D=$nSV!g2_ZKsxG<4vV|J~6T2tGHY6|PDC&@U<9+pYjyxTDUpkMbz;5d+nd~bK zeIe8X)+3ay5E*g9&==iY9C0R?n5Nafl9iu%_{pY7y4KVCa2&^~zU2!kMT1o`Nf49g{Tr#EYqoI^1AHk2E|)HF zc~Sz`AFTu}zq_Ed-%s;5a(tkT%cb z=~A@_dlSwIJ$R{l_%vQbGS4h1QogRFEpt)Rqg+U8L9#^?(X}g$-Wuab7>8mfjAQC+ zyrkE(0Z*tSOO>xA=4jb*ILU9vnYH|Ut+Xq#F=Y?fxpWzbg2Bmb<_q*)`S!R^e?xi&v%>Ez%mDUME0)etX%4nn(0$xF;4 z2LyFq!diVDc!^;M^wU`44>@ZB$nNh-$kH9;I_>!LKd}p-V88B#^7X7FsF|LKf{ zpjHTKu32aW7>(j|Z`ur%GiIH{+&g5vG|K<FM@t1Rz(`v8U);Wn zq_v0m3-b9M3S+8LGq!{PFqJR~vOy742QXT79x}b)+c%a4qG0RLzi(^)aI9jeiE&kU zgMNgm*?Xa^D$Y1RxsIFC59vXf3ii5;r1;cg^9B+K49mnQ4kg#Um^OnLOvYv4HuM-e zpQ-6}Q6;Em#O{w5VONc0LbZdD)-$tdrl#6y(^YzMG&5DT>nr}-&t{Hhy;bqwnyzJ; z(x%$goa3cxr|t{YE-6$y8`D^X#~8kNMxol-m6UkP0Gv5d>2{R8tW>+Lvtx)`svRGm zpTHt)S+LA4XYh<*wAh?80-CCN^H^eA+~J&R)F_d%+~P;Q$yKom;s!-bVFW5^){ zs-cfeNBBEWFZ;$1$1)W%ia;Sp35IT-51KYwgB;<%sVF2#g)_udXoXis=Dktu)ugWo zEgt;TKQSR{6=l#Gb^a+ewi7udG$`b`4*j7BCSwm}x!3NXP0!?bl7>m3j8Z{WNA1v2 z(Yyu8#+tWX3Ci@V(7J|7IHhWyc#8#&p^gOyYk?K+v6u(R zMGOSTpp+M{QWWL;1|PIcWf;%^r!U~Qys%+fA0g@eotqcq*IaF}QV`vIDdJTD_fqDK zrm@C^8Ml`GD*5I$?yI1?RQm$P=~f6QZARywG?A=o5gR33F+Q0VM0O+(ANjXb0n;G?1mJQ+;3czvg303?Hx4Q=7Y2pig>adg)gQaLuz zOI?^F24pRrH6Xyo00@Tr*a5;O{1^j*m0Asmo@wYfapoC3n`U-#E8=M!ea+I|)Ca7A4{HlCUXb-5UPf+JG@`BvIBkGg2Xo9*?U&t*U&b5C7H zA@zqXKT#Um*KRirt+Ze_)XRQ0O;V|lqEh>3xK*f;wZ`M+xkePlQNlSxpfr5kcs|n% z`W3S@{VH+&N?&E$Rr(coF!_Rhl?44NmVR}T^34QUz1=D+bgXTqmeLwpnG=chJ^&vx z7M@drDzFc#7#}HLB-wcQKoncSBQ`To73Pc*o-&=vowyT*k4#)*AylO2%~WqPcD>1S z;&(AEHO2&_H7EI$LBPwJf}AqUv97pdqd8v5Hq+I_@5HsnZNrun``?^NW;oTY&IqAr zvJ%{hf~q{4y?NqSWUPK|NRb}R-F%~TX|o#v5L|xBV)+pSDo7~Ev0UsaAg|8VVcmfB zv!6n6hjm)ShQ-qMrD7~YMaB~$kCqN)!+L3!D4{$Fz3v-BfU_8#pfB9OLsWFO%Odco z3VN7j6EkfJF-F+p2=)Ru5s0r|xse@jXQFIQVj-Kosl4Mdg0Y#KgC#@^YNT>{n4?oa z4dcbXf8=j5LqB}1YN5DeEm$^_C|cRh0i^4oB+S`?gJaqic_EGfWTrr9Vx5Q>dGoe6 zn-4>^!{qI8C$v`7mxG@S-bH>8E6T5J{O$&F4&>?}NUHInp9ON%9*`28N_lou315bt z0j0CN^r|n}*lV_ARJ_qjSxR}UzEa!~UeGjCx3$72-!?1BF+<~I?%vBL?O-7wu|dnL zEKIs^&o-KbW~O4X_6{{&X{<2WZbG?^%|K71X3JlP2MxRsHS^>XLJiak0Y85L>>w&=S|{v>4FgRvAk0ma-yGaa;ie1#mZRGCFg{ekj;o?D zAG(6iv=rA|hN5^)3?>z)=?j5soW|T6AcXEyF@YXKWx38Wx$f3k%Q{ovtNLO$lBrD2 z(Ny|KF;Ua2v&JcYVwA>|csn?j($cZywE@N*OIXR7IjNa#0}cwzWYE;UowZ$4Z$svd zwNE@7*e}LC-}n^OxhsVLf5~*nNcBh*b(t0W1RYO_U{0ZoelS6q#>aNB@UeliS~M{O zWe!I+d*+0Q5ECK~Zaj+h;IAwGsEBpPHA62zDpJP8p)`B|jhrcMD_^Bh#2v>s8n5A(0BR7eY%D z2oFjS=YRJIJB0i{gXPL~$n?|c6}x$RC4QDZZaA#dB(K;FgGKG|V9XdwaiGqav$i3O z>itqXX|Z=kf`~pXqxJ9q?vY2V`ZS2Zz>$%yYw^@w!k5uvcx zv|!gnM!W~Rre(yd`@$oV79J5B)0kO{W8M+5@Q8Tww{E&fuO-Bra@$~W;E}e+MmQ4w z;g_@=U@}XogDj!bbnhgm6Ix3gJZF-|V?ZWX;E0@=hB84^2ck0%kNg(Y#0Q^I4dkKh zYN>g$%UPcvjb4IU*gZkp$o7bn#_~sqwM+HLT7?5ctcv^FY~MN^NV$#4L`E&)TkA(a zCBBJ#lBMwMBh-)dM#`t*(zMe5k^KJfG~al))>v*ju06KnNAib?$EpsMT3{U(FR4w= zupMuu!7(#%e9;7|l5=c~?`4SN7@_J4+iHuv8DE98xiaq}!+9iYZ4K{s&{*L_;vA(f zJzo0_)(;XnJBcD@?0a_}g>Q^DeD6;0(~Ts)AwE)IV&GuHz{Hj-SWOr<&4{fpv1Fl& zy*z5?`6yjH_G0m2t6;Ax_AAH!CBlta!Sf670HZAMLL@}KO@*XUQ#^Q!2WNHef;_PT z?R=gosKQKP{fbmg$yLZR&s8v2&_Jm&N&fCTcEMbAIB$~w;vKuri=wATkrN>#y-<@Ul@pdkuU2O4ydlOhnh}ftkq!%NieKb!r>d$%w$=WtD_7L8{}5WJ?9%DELE@wi>X;&w;`B-MmLR_0)ok&T$)r4@GhPFaMt z*k6(KVY_FG@VBNqHR(gCCnsP8=R%j~Qez*!YrGftTyJ6+2-5=PivSC!z&4)>U z6sve8deHAQc2#VMrK3??1^J=cn_Q`(uo^MxYbe-}>OFS%7p3_BYqYen5_5 z-S9Z+gH4=9K^t6NLK(Yg1lrdt#ny1Na3GAm92^LxX{WG2 zK(u<%ovIR_Uj$u0byD+^u71P_obds=-X068?)0_VQF}+B)eGIVs6HRi% z(keI1eRdT`Pp0~f#mke*YrI(}Kgpvyq`k8k-#7|MQsNWixd&5OGVG_bXiS+xUlody zX;x>(at6SHq3|`BaeE9!b#PB|a@3xRqQTH^AI&ti>@G_fGR&Cp2*w45_cmfIckB{RmT9fr%Lb-(aR)tGo*TKk<-CMx!=GUm zZr>*E(lR!!XhHm{O>^p3kcNd$PGPKgFFHHOfD`O~ToMZEVvv2Wlx!I?g^q)t;5A1_ zBvRSA<|f~2iW9E43D=^fT+ys5e)awg+tTI2R`RYEJ)E>b?$xNVh)`RMUyMN$Os+sE zSwqKXtf##|D!h4g3bl~TRZrAmWhSV_l46olb)lJBq7K_qm4n@wN-ZrhbYe$Gv*s#l zsn;Y}ms(7j4>{OdaZ9=CVs0taZkuK0nfm6U7dVtKGGI5jUU^j3RYJbg-PKZ<&0#qu zvx7tjVTS3{mV{BHGT!~;^P3L_|3+-y-ja;KCKCn(=vvxFn1i0nv1UxD>)>?%Q`pH zv$EdD{S+ZNeyX3M_YAUQ{~3HRTgo3gKF@_E$YRK}@_Q*BNsg>6!>o0F`qHfT1FR#b z24QaTPLkh^dD|lUmCe~>8)8hwR?d>ePT3HnGvUi5TQv95NGh-N75UXZM|%EUBjTV=@T z)dFHVf}7as+A4!eZlxgzvdFVy%h*@!kG8>G?J0^Cv^_g*M44Y9hD}$}_nXsF4n|GW zM!JiQBe+*Zl4c^VtBok?N+p2B^vD$c$|jsGX(Q-CHU3I$P}<1!JuWliuQM5YT)M0H zYh4@px|oKx+r{i!Elj7bjii)(0U!pvt!pE&GI?D1ID6AjFPmw|KrDJ!3*3!)5iD?r z=5d(*z(0#fA&yck$s}D6YXA=uGb9`NQ&kjK+q_tlQz}}UmN)`Cl*anKmD8M1ZQY5W zy>=|^5#`-tW}@Q2Hymw}HPEImmZcYsE3p$|c{SP)E!sNT)T2e~qK&#QJPKRMpY^R# zdRw8C3A9Nb1==7#g*JSgJ=*AHL!02z&j0gQo}7an@GRdFBv0NNJ^_!WKNagMm;MWu zQ4(3~&~`Q8oFe&DrkO21F=Z@aDaIg`cr|gJrCcxbdqRMR29%mXeK%OFHDwt^Y9@c` zB|IkLa*xGQT@{Yk86f5vTD7}LKyHoXRkSw(!SR(?3h$UoZe!38>zaEJjio}gjffW2 zhz2DG+`YdYRiiTnLj}<`$~LQPx0>^6xS3LEX%(_^S7I5#QcUlDt37@Q3&5EXK+Dcc z_Ypn=SAvlQ6el9PrqGYSbSU|uvw7*-&AjxU*<{wXfWm9s#Fl8*`Z8J-;NyO9gI4)G ztC<+mxV~*fhyK~C-lQvP)AD2-Y?T{T39RFC($cST;ADzc;YJMwamFM6YrA^Ao3SC< zL1bMJOrZb}pBW?O@wRHld@BPbn;Eu>VvP^G$VD0-w&fy`;8cKT>yXvC0>uz%NRWkQ zr{vLT%1O;1f?r``i0x?_$dHqr9bM5Ix+WGp(-sTH3fn&2!rPMiF&I-nc5r$G z>c?QJdG`dVA5X{zN3$L4svql`cV{a{+`Kb6qNqyU_fm6AZ(aLskDhhBM=wi^ z`0{|vsz5#BAXHRuDHcKul7*Is9G3uxXk~4FAfkWll_!TfMY=`Ss1EFr24b|3_3(v2 zDD2GLl(sVuAr(*-%QpR!CUhbY_50%U|q_3=vgwkO{mTE&u+>m=V zb;wkgo<3v*V#9}wn_P!9?&PG4~2J^@{pg94wJHpvsJ$UVRHu7$zi-?%T2=7+V zz6!%DOTQ0HOKyh!H(;wVtk7Yl zu8ehB*<8{X-R8m_fm!9JrW>cTB1cW%%qYT_Ysg9z<-X4m@<)YjjKn$MMRY(GSuN>L z)6z}Vgi>}ZL$=pVX`O-B4QJ57eeGx(P?oa1#N?13KAwo-DdV9Ift(obKaoNvjO^oV zq54KwxiMX5sU+=XBoNCFz>Xs-dy=U2Y>iJ$1`!XNCTWdCR+bVD%)m?-$d@vcwN4%x z^^`Vb34R=kvKS3%%vu+%*l@JHMEfx9Y-xW$kG%NQQ603dq43I4q{qx+^uke0zT<9q zISGUO=ij>Y*}s}*1bhudvYqsNZQzRmv@u^3Ahub;*MNLwTLb$MX~C6A@bjgcQc@FHgklXox8EGm5`xFw^v#@D z0-ibhae`eIL*Q$$LK}o-0EOwWE>~+eqRGkXhk#cN+acM8T)>&O$1W!41SLA|2lxPM zCI`U3$FK`XEVI^1#?!!UYg!mMJgFSBn9>?!_B}^y{rHnVkJgrd4pioSP*UHbNzv2u^yz|p{nq;hMzYd0CE1#|6& zR4gI?bXribB9k{bYutG&{!2+nHd7sl&bb~WV+(nV4;O&EImU##o3 z{I7ZD{#R`K!v9)J|Kl){GW{>ArT-P8wD8P^^gm7D93~(yxG`wP6xEZaC$fyv4~~*` zvW${q(L;`%h&trhrGQ;pi*N-POmqXw9nZ~9EI0eVkh{56Dv1H5(MUW_BS)bTK{*5; zm^VhCiH+3?P!X1>t3bs)7wT)0iXpL)N_ywpj8u$1$g(W4T5}I7SJ{DhT#Z)8LlEnv zN+LKxB%@6A*6Y0~_O$*R7BO)J=LzPr8l7GyW^N#qe zC=HC0KizONOYXew>wu?#uo$ZFwAcGVZR8B#LkFpNGsj1IGz{A74M8BGluLUpuz&4IeH!nNuwOX}O(<$idJ`b>(d3?OVAz7&Mk07i?u_k=M|^OxS87k9+ktTM8rz z6}yD|F44o@FK*lMr%dmOzV|B*8^82IkM*>*KpCxjMa0O~n0BxC(Qi5MLW-rJHWDQW zSHX7@iiIh%E)efcHp%M7#74pDu+L$2B6N2P3JceNFF`t;aR@2__yJFwu$r@0@mWn(Wm!;45Pg?m6d8?c1d zEVpc#&4TM%~7Z48z`T@YDzv)YfLhp;8fI<4EJ0~*5rI2lqM`+6h1xqR-PCdrR1K= z^$j32+~Hl-C$}TCv1j$bo-}1(;ob%Vdr~iZ;)$W`1i+T9Zh5UKFGj;B0*Vb3THb7681t#aqCgp48%!{Ks4yPsY7npTFKe@ilw3yWIXAgu5~tF1FeAGtwi zhw~EsJlEa@v!cOq>gr2Bcy6|hs;F#pBJ8g%D3IHOtzEWxoet0`SqeW6$KWMzqVO2^ z4a^YPNLs4JQgB1qp?Vr@{xR}TNm^9#PNAQb_-b z(AMo1i)sth;*4~$?UY)dDEJq7W+Qm@@%G-p*0W{dN12Ta#}4872rrsfdwQj3z~l zJuBT4MyW+_a+5$n))uietC!~drJi1zbNAp}L4uqmRuUrt06}bm7~6I%SwZBgjE4>~ zl~nw0jXnuUZeiMTTbHA$*u|B?&ne^LC?ZOIWZONvMvQwj1C~lAfdt?w{1G5R1pBD^ z!g{LiN#Jo%f93t z$hbXrqF9M^jB7S9H5d?&=VD>~!KaV}%*TJu)He5p1#`NZt53jw%B6kk_-B>)=-7(S z5ggL#G)=u`g0IbjcC~0aW;I3msW4-E4V||8Xq}h)G86Nl%Sr4G%iJy5@Ya`kdx3Nt zFSDg=P_@OES+D|N2uT5O4XkzC(*)|hBHW9e;tnP^@EHZH6+$Z)X|3t zD#}P@oY5}Lu{<@n5)UR6LbRH`2yC0?2pl^ALx*pmD=Fy89cz>7q4lQ0;B}k!HbXqz zmC_k@Mh#~)S*8*_n}`5QXmd4UV=uzR(d|@S6P2jO&O0&LsD|>+n6K@84_fF+Q2?(~ zYYFd2eq&+HuC-9^8tNw%+Zg}iyYedZ+@aB0%_+z^Hbd66ma%u_wqOV$SmDDyB{$}GMc0lx+A0Ju;3Ql&U|P5kHoZs3X3`aKf*;DT*Z2lE zb#U;J(#NO=OZk40pZ!QLj8N!j{sM;2{|6+`&;lqSJn-}d*_PCOqH37vp(C^qlsRse zuK8pMPziX~8bd*qn~{SGG)q{3RSncnnav`zL45`j0h5wPm=a1ld7AWpl_}2-1Vbm) zMbN-0z{8Vr~xVg*B{E2XodyiKFdlu3^x4j=*m#LdE_ z+dgUV3EtR> z#L*w~h82)eWX7mHYaX{qhy>e5h`Mky%nHIy-aZJwX$%Ddi{!UShc-y~WEjT?C5N%e zIJZGI4n)!ci3&uc8CfmT0gI8!B1LJjv7$iG9@?W2AK8!c!B||VIqUNAh6wk@bcekx!e-FRpy<=_bUB2VDGjU$@G-Co z1PD#AdXGVu;mYF&KzW6!^BigpUvY`*viC?Y>9MgHt&2JbeW-{9Laix})=?U$SZTQt zI6bTcVi%wp5rMv0nGCC){~`uupHo#wJu#!U8>m=eOd{)5O^#+cJ%C}g*t3v8jA)l~ zH?^~YANZy>GZNj(ngdChkB$LSRghtC#Kg`<1O|x)3q`FYPnJ{l3=R|;Z6`d@S!+ki z4rQ&fXXR+NT{}{m^+Vq}wJjnXq>@^#q)ufEm*qLIv&)^0TRHU2cckcT$zINnDGooO zS~X@&03=2P{O{*3K)}whTft0Du^b)l65)7-xOWfdvRNWITx^4l7^zukMD8wfB{Os; z&?LoQ2?~(%!Jp^oa0k8-KQY{ZM_nQE)p3YjXDr>3H&X1}>zH!S%f?9N=vxhqQutI^ zFzGianaMEN6P6{*^v)Bw->|D^8QrKMlLvOp?vo|^MB(bP5hd#`Ta1<{ioLO%%`A;( zFb>)7p&7QcUBmW#S13_GSi{yPtVfn2WTUYPq`DziTyAJEo-H63JegXe0)^o9zYeTK zoZ*N${1zNB=h`s$IIp;=gU6`mU7Rv!mww8eIXT{E3L!tA;aNN@{;VG}XAi7%p8O`3 zqrMtav}=oF5(D%$v^0U%DqT|>?F-eEMHbb(Tg)4VDL0btGV_*Zj+If&+%Aim!%E(l z)ShSdEzRB@DrV0^r~M)GWHc+JY*p-GQ?9aBg_D9p?Q5@Uw711Zd*hAPzV-;^sOk)1 zn6J*oO>;|NwgENZY%WeyX9&LMU;5NTx1?9Xd(!;2pTFxb5<8U~Ve|_P7wM=-eET?m zc+>P3@q3TG=paSB8TNyw1-)Z>VnspymT)GuM7A=$<#)aI=TE}}Rn1f}9`U4a_yOCS zLD&g5X6>tV4d8cQY$BU4CO9<>Gj#+A%tFeBo86^*i0i?}(6xB$e%=bY5zpa$yx$ba zy%yHSc{8|+=lBJ|Epg0^ugap+XC2k;feAuSYuJcS`S%VKe77-`?}9%i+cjLMzA_E}CkNWo$#m563s`0d3XZzL zzzrY5ynx20=jG3?GcR1r#a=naS$Vl1<-9a-t#Uc?cx**ttw>z0h+P&df~%;$BC%G) z9w=6X2PRge?w@~@m|S3_@m{li9*74YO&!5qC0)HP|8Qn!Gs54Dr(c4l;Cw5IE88-r z(US}b;Z7?F><@gzuz;0qN2w^0Ws4veyDOSgaoS6W1#fU zwHxsSNN+?=5rtt%fDB_9SS#gN);$J<(G$V5WXxhLO&<$kM5v{h(AteyMo?&^7|X1b z1m-jE8<1PIEyUYh)wD#)VheG&=NW|plBZ}1aOR)D1SOGjyBf7TajORA=|PH}Vt39+ zp}PwytK@aL7OQ`^Vm@w~Ri-imRML8-}$+3%Jb*J4Gy)cOXGCoT#;5`;sRj$sqftm!8iZseb@eq9Q|zls0kdCl(g~v1@@v;YGVdGJvAv@rBdIBG zU&G;`+f80I@S0x^=0Jiv4I-KxGr

LE-d+KWA_Wds!a*7rp%Qvo^(lvYr+-A&(Ala=CdQ2@$=>0gd?a0q;jAh zYGr`#sPuIVvEA7HyNtn<1B|zFc{jPXICTYlbxim`k~pAjk*eiGxesd5vid2efC5i* zxt@lU7rde939b$46$P90SXpmJ_~ZJJn>~Z z;5y{Euke^KXT@Xs*(_42Ok84Vj>v$NQI74sX5vy^%8*jADsib0RY?$=;#|^X^x+#O zsv-`6EW8g}8W>R_+byde@(qbg#)OV2oMvtUmdq2E&>K8)DO`BsQpy1h;7as3CoTb* z$0~6tswFN(A#o|1NL*5N<67d9BQ=>zw#ngTGG}J8ZIZsQ7ZfBVF8$A#m{=YwI8x6} zVIeZlj7V%_npoy24bd{w7FbIf5ra@dWyd%%4nGSojEF+bn?3+Fng*sc6|zNSsh8Oz zJcRmSDp_D*mi28}5|)#I!ei9z*&L7XB^1|BZ^`#7*#P}ED)VW0$6{)x=@xunc0H1(mgAB!?l5Ye z^l5M-j9Te0B)FWONxHs!=M1}dn)u(;m6X>`p)j%tfKUqK276NwA$cU}H@166`i{CS zJSQ78;SldMQ-ov+v#8kN3f!i!E6v90Nn^o#;;$%5z}Icv)&aDrvRW7 zF|83K$?)J;;!}E;II&n5nj_D9)Y_D9eJziIpey3K+`|1}JMh%|AsLah%};d4+ENWn z26Q{$e+3`17d>R-8P)lh$Te5E*mBXu3oI9%nbvaA^-a0xNlm3of=ZXvRXQvgr9YP{ zov;)GNP+fwaFO)XONYNweB{+(5CaksgrL%~rLYps8GXA=(4gkaJ#ksU~9*&Q5 zN{OF?)5lfpm#>XWEWgw1{aY`YGHo*BFA>DEu}I;j=#Wb3WvVO4`EuYe6<9`Am1dQ! znLf_m^Sxr?#{H7^1q`j|k2=vQBo0#57UKu2P2BrGw>}LJXHqWOScL>paZ0k!$>xbZ zvBs*81FBs0P)MxT`{Otb<;fPNV$JybT6RDxAR9<^1zTTCR0}M*GfT-JqH2%q(#i2p zlo#Rz$3&`}{x{_eyLGBd=>*5Bu18ICnCKx2WqyPQz~`TC3j2z+6#l(Ups|`%(?PSk zOo;*JP6Ns}rgqWsbPKq}qKIIv@SS8;78gZ9O<1OtuoRkw6D@M0b)KMlGE>gm66ut6HlyX{wxE zm>xSa^`V+po*DP?4JOl={pQK7U`3ygqctG5TJ)H!-HwMB>O_Ng*_HtC$Q3N(Jtq9T zIw+jM_|fnicg&&c-)WSxi{wH`4_)< z&UrfB`XJX2gzJ4=-xsbkuI~xgDDU|v!?j!|9}Cw&H2*-jp2EVPE*8EXZB8eqkbhp$ zX2+P3hylIzlX0{LX|5&%fsjz%YBZn;qq4K8T*f>fyQ=2v0cVZrOfs%9;C!l49ld?f zvI#U%%^!cj8;DKv6>8guunKf9>2L7l_IJSG^SieVlboHkxv_HylI6(%Wbab`)xV6M z14)TQ73_us^oD#r5S@qKf=VM*aG!r<{xR<#81`;1*awQcMEwO~4R*yls7mrZGft{d zUqw~s{J(u>$F=&ilpp`?=oPBzkM*Ha!l(XIa&7*#U-_9&aVppY(JOc-AG|6b{2P8c zp1#7bb@MI9>2Si=2pA9?oF@D-@f5-+M}j;2~#{@8kNO!=JWgS zNw3xPcjhaf|6F|S(n&@S&&<4sg`Zy7xLr!~9x2=2Z*41sWJOS#dZ7c*_frDQ`vtt>x8>i|v-X z^C-0-O+Zd5{V}mU+~J*`$AES`Bh9iMP83ky59aYJ8L-{R{{68R<=6O)zykb1qss8g z{g>T31_v2Ow0fF(;;fRo#}KRdiU#8qi8UA|ASmzzUQ8AHvj7Wm@cU8qJnlM`F@;h*{sG7@QJBnJ5PC} zaPxsjcqdB|B{W(~v1`@Suv^p9up6}$JJz*If~oEDgBm>hh1Rt~;0KCnNz4rqbHkt_ z3J%1K4>}MtS66vbh4%4uN@CWIZV@xT2V!oVH8JDIT}{lE(}lF$C+}`;qFUc}&Mwic zQ*A>7$$y9Gu?<`NWF_8+8lfi9T1AaYAX8_7Y}cbkDG-4e#c67)x#$x+!|Lf3g2IT= zSkm}|(nAwzuW5e466L(o{5vQh0_DyH98JjFN~m=NMuxaZr$+M%b~w!|0AiI$a+TkZ zTOLYd#T7uZ0(Nj;*kER%6&?RUpZ+$EctLi%y+HllU4d~ZFN(eG7eZ+H{ZLRN{|tXa z{gURepS6Y^C#MbmTIs#%&oIIeO3cq+o_k*F+}640w#xsVyXF5S{zi0edTxBKq6(e- zuQhbW+SMti^DKeg{qy?Wb6^(%+)Z=x`!Pi$%WVs;p0VR}N8%jL5y(fK;0RP5TAL&6 z3>*QE|3)0)+e?nX?!QOD5x!lkTLf&&JgqBd&((flSb?o*41+Y*ts`JSXLu;+Em4g; z7`(kp5~#7{nu5k1$W?Bs{_X;N#!)FdDQ4P-3Z)z4tot@?PAY~_raoOcyGKJad4Vj7 zK`9BEVaJCsrchoUExh~_?T7z(5s^49QFn<}?|)i5e)-=lUL%Rh{^LTG1bGWmj-u7# z6lxC?tO+obFQ43X#VkoMJ|;nD)McezYJyDtdDu=dkrBQ~p+T4zlC9T&lDG4S+IiwS z?L2XVcAg*_YzQaewk>v<`zRpkPJXduC>vP+#zOE;=rx`$jx4swEipsY73`nuCXSl3 zmKyoR1k`w>YQ%O&@FU%dZIC88_OqoFG%HSv7LYFI?dQxY@qw;5K6!~T60bDW34EjE z!X`BGFT{uQPe)hm=G8gOv_?#gRLNFJRO!(_>L1tn#}E0(%lzY|{&BToDcVCLKe(KC zpR=3UB7YF{v%4jD4n#l7#MTC4vmKF3}(&8 z%X&l3Z_&H|m-2RQ03euVO7Orm>#Q=(*yV~yq;&6U(~N{xGtDTUQJH3q&6#E!slX%l z10RU~?`JAf#-M-5%`&cDUNg%OgV#B|EXXX|sLgB}W|_5n#M7`4bX1WN zYxE^mt{RLzaTl7S5G_3Mpq{`v9cES+w)*VguZ?tCFVw!Qjr4cNd-<~3@F$9qeu`d5(-#@qFGMI={({{!!7LxymRuNP)ha`QR#XNs={P#a8elO;^5ps+nc{BfV@qU3E zYavfTXdfSk(;tq(iG&eJOM}&a{{ByY&6k&&6Jof!kzb=Z2X*EC4;L4g1xWH#bj|Le zBA4yth!kYdbe`&1`SDY`Bu%TB#SGsRdy>tMPPLC~v>enMc^2>f>6MiMp;5t3Ja_~L z{@VZhnpfZTCy||%DA5}15G-na%lu=~J2~rag=2w*A2Akw?8K;LzQcvPk6!xg?mN8s zcmMmsZKEfYKAQX*#`A=CG63z-S@}^ywW{mT$d9~YDgQF(l{Vgc`48%UH~sHtyoKnV zA6dTzRrY}&^aKbM9^oBz}zULJqGP8D~qPFsfuDKQmFus*bUoj%@k9DJXY2&?bLxI2i zS_buAP9n=#{K9E+EPoZfSHj-bXGeW~fG&Ox7AEH?Oxn)-w5)p_&5-uH`K#2Yptd7x zz4vXb?fOkZ36C$9f)^0fmaw!%RXD&~U@3UMRV)Q&fQ5D@v9wo5xa48)7-T-ykfdat~MvLJCW}hNajlU12HY=2!~qKs#V*cM?kt+YH4z zpcvTP8{sis5fd|NLhs(m51ss0xFIgtw~u>6p}JLG;nE^4^vpmLh1Dt_(zw+|>3*|~ zO0F7kID|ad1~|!OS*osVR6LB6S4IHH)wP&#;J$$uufc@rP_ZF%@UG&-u&!x1z8ZbC}MlJ@1VJ{8=*Q{28?bNeEueLbZlB5FbAaD|$bzxGkSe~aEX zTV5V_M58Hsmidlzsb6aH>bUgXUO6kn!VU4@6^W=Z#|&SMgdK3Eu~|2Tr7kCmr^P$M znxek?$4TTjB(`dt!D&!g_>;cW((kfo;TjZWZ691u!pMIBDX?Qg-q;;1HMt6pvxHbf zk68!tHmS#~)56+%Os7Kr^{Hn}j|tSn=Av;uW}P8Sp`OQ5k6EW@)QdIs7}CilA&m3G zr^ z{_H+*STQ%!H8M+M*riOm>!>7;x?g(2+mu9P!wN`|;4sw_B&_+RCmP$P*u7vmiN;D* zwj&ke{LI5oX4bAK9~Za}FLo&+8PtSXb=jleNz^JCE`MhcAiE z-e&=e#5NxCd}KV;5!ED>FT%uU`0$Kk+l7MDG=&6|*7Bh(5XHNUD9#62<>KF$yfJp7 zcpW5ABMMQD@O{{}oA@*^f^|-SsAW}N)y;sa=7JAIXPH&E#65LzAi9H;KrNjpW$P5f zD17<#Dh9>ll4DgN|98tz(wWR<8MUA8W{;NZUBY8{>m3^KIEjzD52{v8-yS1t7rP+L z>u3cG3I2noEHiLloJMvKrdce(+r%^*b)LcEibeu)@HUje5Z37kYAWgHv)^*`^RqLR zP&u|b@Fcwe{$yl-Ve3i0tqsMgT-y!7}~x$!4*7&ekA5@XDqTz3qc6b#rP*qOH1P7pRZ6HCry zC>?v}XMgXrhqP>U_BWmNy>T_` zgS8s#drQIk?lji77!C14Xu-F%@C^P#jz^k@Uj1fff5!_x{eCS8?C(wu_))XJchJge z_9udw#{Nzh><`OgBfck(mx)2+k_bJJ>FK6az&HEO6tkuL!GbB`?a0?tDpZ=eRT$sj zlu8AgTGv-9&X`j1-*#E9Y$8qje)e~}rfqrsmVc@85EjO;(hl`K*w`f@mx*LDa{x9k_y4}bg)8D9@ zRSkcuDS->Nh* zG2Zu4e?|ynrO%~7f(%3aVb%a@C`WZx8l;(Pw`$Wor1_RafnJ)plLhA`v((^(e8LHJ z_zS@$vRI}i+jmsK9EtuIC);l?EiqFBx35wJ=boNYa8mNdObBB!wqv+rR33UK~3Yj;pG7fZr9FS7v})JT zQL5>h`n!GHs@;r^vQ7(fZZeXMbd+^k7-33R#_Ku{3Ryw64o*4&bhVD6o2zsbfln|8 zxFi$sMJU7R#3T~K+yq#-2=0}&7ZZJ=SU@eP7M=R0vD6x0%+RK#P4PoTaFZq*=kxNC zjw3AzP9__A%iLD`FZ#C5OmAUmkC)z3E!uk28W!UHS|;f&8t^fA?pjgbs?{lYYu-{6 zhD6k0%Aa@>XS zt1-bh>QNPJdG27+V{>VXQ$>0`wx0FU-i%$_pQuN!D7Sh|``YGjSIMJ}4RWq93p&nk zdXM{7aG~TB$i%fFSEPkLc-R=(w|(EsFZseF&s%uMGtxoc_SgQsUQ=-lyfQ>hWIEE^ku3VZ%RIynXn_(1f5gzQtJA|+u%|Cw zT*5i`!5=#TKzsS`MGCm#dJ~%`LGTzJ`x7LRF6Hf4a30+Fda-R{`g%z-#G$s3vkP7L z^&bsU*pT9nr!{mS!wYoKLfvV?QYrnnJtMt3-x*NzKN5wo6w*~l#;a=~8S0xM*;_!e zmyHja`ixUXO{mgdxSbcS8-L-UsV|U<7tqTY%kL(OXFl~GKK?T;K>J|(nB`T5J4XfW zkA3nlU-R(OUdVAV`A%gHXKcmcO-e2;u{3jwGb@PNnH!Ft$PaR2r<{!OGAlB-*nJ5Y zy$xR7*0vmh6aF<=eB`6n;P+~^)C$}tKcE*|dBTgD4tIV%S?c8^Ixp+=nsE|k0&77} zX_s_jXtL4r0DbVtbO9PLcA~=c)n(;=I9H zm8)je>NCZ)#;;A}diyCf%%yl)$V%H6|ce+0mm}nXbGEUhKg9j7|7MOXSFX-sUq>KR48NVX|Wv-*96J% zS<@30+f)XM@DO#OF!7WsAhXd9q=NZVKUhi`W3bIs8cLH_SgPI!8%gt+nVk!q^hmS_ zp_d<`h0LxF$^nmllQMq_(y@arkvw1rTf#E1`H$|KNFkmj zP9+#{W@YNCcNDQ8DuZ2w%WenM85!B)^m^VbgC5#=aO9R!e0J+t4o3m@dsPy%v+~+7bCt zdjLR-N%l4zA`?DfgMwXYF$TC{DO!dWk+0Pvwr z;h?YALgddK(1N7&k#c2iLM||wV)1#pb0X0K~8Z=H(l;X=cie&9+ zxoxpWJ$L{Q6sswcW3`7}5tx)vaH%0R4|XsF9X#+nSJ|<~Ra^BZ8lW9JA8=ey4X=pa z)@=lmY@_MX+e)8XB_2m$o19=p^fsLyy|FAJ z@Wdlm%$PMhH#J{;%JwFU*hX;3JZ4rXs02k3z_YAGSDcOoOxdd3Ls)TJ@}jt9j5U`iSY%v);3o~*!0Ddh4BtVJs|GI5C|48&417$~;%)$)GMl-d5y;_h00~!Pgb3Yr^*BQb| z6xJJT^N^MY0-_7r%2MqmufX3}1%6B<9$I2NcjG`JP5B$X5;(5f&e_;-=XTN&bH?^r z4b<=xxs>u4=S|fMkeKCRwOR-^?OCqwYI^7p*k%apN;E5AKltG?*1;W`4)2%Z@} ziV|c`Vq&J@BBpKCA+>GBJ@JkH?sr;Al;=6SY?Kn91XUIt;x!ikh#8lRq>t>?fS@S$ zlgG>X7w6DrCaEi@x;-Uq;cgREP{i#vLw0M}#ubj5ZM=%^*!`wb5{Z->vW+lZdyrx{ zR&TEN97=4tiXD?agl2#qIC$*^qXYn;6`qt(Ot>dG!8GOnXy+fm!icG)nn$8!mHI^8 zhdbrm>toE*^&{uxr=csB&(2Ao-cjfQn3$4P~xR}w! z2e^2np)w~C>&6*-{#L(*E@+EIO%gS@jf0u(XK$|eN3m6JS0nVFAG(&EdP^qeAina7C|Yd+K>#d>D_F2k zU$|6d{6jKj2B*3(P6SQb`&3L(ej)cENF#m~=F5sS+?9mWSY>o51eU+?J^>*l2yNdc z>xkX`r+|jC676k0_LfzT+0n>qyVY1o?ZJ!Sp%eyCbFtm?{2wq6fH0*jz0L{;U`qiQ zHl+(pASh>*pf-sC>+otT){n-yFS%&&JLmy|-XT6njk>7Udvhbq2?wJO@1WMq`rj+{ z!)E&|txpzThkyVUhW&Z`Bak(QU{h+kTDOV%**JvvY|M1SF9&%{%Spfm#-Jhc$;n1E z%EcbcS+AYTO;x$x@FLt=)PZolP9$#jtPmGl0zpTmKr^ z`bA&A4ysW{wbatMURp$pu=-?Om{d7xGfc{Fy%)d@1(%&H6dxe9!xqjb=)%^WGvOHk z8%uaH@$R+x%n!>hXQ|De1IE4HZ#ka`ZGj5b9EX>IK(ughMB>{Vi)u&#y0KtpwF)oj zY8)?&ssmnt7Vqn-32*T^LVsVXnr>T!O`Hx#ZGbuWd~q?A;Q3CB+5r@*$g0NnT ziKkjJI;31Oryq++{Xerwn@Uz1!a=udB9FkrsqA14vvu~5*v)P`;rlP3SBxi=6|Tr( zxXZXWs?7uN_>b8a{R*KlgQe%=>ab(Bl_iM+tE1;c?egmIz@e;R$^uN-(vhSMIaqdj zZ5epgL9zTfUl>e%;}1(HqFd;j4o&4UfY3d>N8shk!5-YBR7{CRT^Kxoz$b+l2(G9{ zjR}$EX?+`S;^rQB4IhSc`V?2%1Ba8z!R4A)D2>|C|ZM|f(z-%#hIH>Tjaiz zMB%6JO7`5qlQaD5y?FO%rgjQ@R56B`6DZ@=LF_n7CJtg(vMh8{9K=pDFEn?Gou{h9 z*wsaPax`<4V$J#SdxH{j^SuX9RYrXs#@^3njxq*2_QIY3c#)!4613$B={o1cSQ9tP zJb1AxU_~%YZ0eKtC2JsgbZv>e#H%>3mj8H6vdtcRC_MNAi73*yiIs87p11FSZstVQ zwfx#9`xXij40&d$32Ix5YCyKQqxLK0TEIbt$CHnao&9DNI}9^G5IJMXCz3`*fGPCM zcj+TYudHq8$Lk1Whz=x_-Kr+Rl|+mxG0H4aLdeq4hzi<)T?9(RhRE-8oRV&(Ysp7J zIlmuzscn^5hR1ykz%rWtvnkza6mhUjQqtRuA57H=f5rab*vJ zhQ5*~>j(zIlm}muuHzCgrWO%x++TLam3OuZzgYGHx0;*8Eu4MAKEo~MSK$@)e@sww z^HJgz#Nn7F02Bx%I;^8H-EpVZm!bJI2%iMP{0D@IsW{@^6TS+=xpoZC*o9xih$&hk zs`WGAx{ecWJ(7Ngdmz6GXCvA?+b=#rwGmygx~yC|Tbs zwE*vzwr3~isBxPzQ`hr_UMi&$Im#@sJWS6}FZ-q5X#6ID%?#V`KtKZU*#6#IlR`ln z#tCD5THM!A)rp#)NAVIs^curD#bP!eoiS=@|@TT>Rjn^G;Z1!;^JHgk3M(|aX$ zp`ipw#O*_)hABluUm=sutzw1zOtEIULa0KHTD*vO&-_*40Fwp{v@BXje%=c=1MED% zx7Yi#IBqGgNB2i5%7|7*eH*qe>rpuNb!acbS~q5r(wJ#Y7&8`T)#4?*#|vPZ={IV! zKp#jXU=^R7iOG{($gIJ7r7*ly2{UUFS0%Wy6WxpH2UP;2MP^Mx#L|cr>XiLP(vXrF z5iCnK10Spi7weN{WU}WM2*`7c2%8J)5W=e`I0S09MlF-J_rkd0+PogRNRLCf6GQ`1 zltcrkGKI-N>{gqeFJ>J{E7NQ}D92^B4oBUT$%=S3KQtb6Un}7i+njM2C*!L>z z=DXj!OALY`-s4yKtBieB2lAMtS%*_%g=0aXtC&UkJHIVhArSpN9M^6H`R z*q`xGF`8m5#ZZRgNLg}yZ5)t0_li+i|EVBw`uzn2e%Y_o_26@jT^gvhtJUPzTN`V% zO0&J!CW-dDxrH`yP|JA9X;W)B13+egl!bwwQvFC*AzbSi7B zut-Das0>tvn^##ItJMaoTCqUjyfw21W#Fx2aSz#clD&Sf(;w zdKRC#n@!@6cFgg@J_U4HEd~ogl)Z2PF%xA^Zhj{6q^mg%C^wz|EkO98p`*3wgD{qj0BZAUNdHaSw8b7pe?-hsXS_{ zR4u?3okFYRd?0{^OEWsl%yseDbSA~Lw)no%f_A%*l~6yn{{i`UT|Rr(fgbdQjRQTTLN)Wxz25^p zI@b6?WKZl>bY^RcxP$f9vAQATQ+*w0F}3}c0&=;@>W$+)NYwaO^hxsri~ks!j0mfOa`I8?CO_z zmYD$!xoV;uRiDDn_ja{6TFa=TlKR(@*rj6#%|~zE<-B=G3}zdp850)EI}q&zw)T=J zQ19iv<*coQycVWhC;z}l=kvzk_5WlR!^ew5-`kk3k z$g3E57Y_pUbG!w;>HW=8)IF!%JUT1L3F4ZQWo!lMhf1)vg3>Ogpe=q5!xU5iDYT%Z zZPQ@VDJrm3?i=Ls&p(ekoaRS$#B_1YO(f4h3c3?WD=eker0}lT+zy4PECzkVd8;A~ z7>hI%hy%GyJsw*PKRbAo2yhiI%pj(x#ZR(zx`a>TT4V>Mhe^VC4%OIEou$h%mhj** zkI~(+=Q4>nKdLe*BJSMSuNG1HuG?ffk8xpo1s!U7ZmQEc8KO_#_vC3}%429R8 zcYDowM`7MzB%EZ;d8fs^(`w%ECYv{M#3nj6`6R!A)nf9iXYJg`IGb}6bXZ>|LA|MT z(%2d9nMiseBb0~&yom;x$~F?Da5GjGK}`8(UPQ^9x)Q8#vIS_%^3p-nT58l%ix~;* z^k4Xkgvg}okb|ioxIFese#2QF_ukfvXKbZAqdpMe8OTkCnv86}Mq3M?EI?qhS@>Nn zqJxr~aG!q|E!9617Rf=S(}GPM>U zrZA&tJx>;Ui4Y49f1adN#^1^RH$k$kBxzUxY=PubN^b!^&d6@CxuFHQr3(yUhAqP_ zTe_ZRz}c_IUI_=%Vl^{v@!|{cq4anS$YIa{OG&sn+;?zWbdEUB>?ASDoC}~`mC6&m z#G+arpSA(CsY`3iKa_E!@Uu<4iBbSi60po(kzPa3HpS$b_KIl@W=l4$Jw0In<#$#k zzd!|j6QHV3FaJKWy|J9kV)1d_T?P(n0uG4gfrLi%k96{e`i5SOQDdlP?PD1_ON|RD4a};F!Wh%N`~n8$~V=${1n+I$g_g z&7s4#RuNg6_y&Bj1b5)faU8Qy)KHVQV|!UQ&6OZ!xpZ3bv89{wrDHH!x>=0>XCnEV zF8!$rZ|wM4@H^JtYPsCoWg(kxl7_d;PVQ@XpcvfQDFm$s;sHU}1jV#e_+GrbgGUA4 z-5KNEG8Bz>N0J!W)}QT;SWjFeQgkf*MAP;@`b{S1A0yMRj9NS;OMqby6z|Gs&xt5x zLJEmy4X@4T52jljS{8!_LhQ34I>Uj~Qaj43Bo%T-#KLbKXrYVtA?0i)n>B|IcNu8- zp+_GHxGDB!koJiR(ODUx7cLKVG*d!;$-3a{DnW=(VHqL6k?vfJh^{etS~&A3L&+0_#5 z?Yc$^snnLPC)by)o`&nI$A=+?wFGFx>XAxOt)4wGV^4%tjcrvG-DgXc#%fg34@l64 z)$%$FSia6|w)gv&CoRqlHH<*y&TB1GKk5kFun`0|(%>Tsb*RIk#}~nXv-qc;5Fg8P z?HJQ2ZMKl=oYT}9QHw|i`gRu^M_$4pFo+w&sE@~%X!1?`nLEOt#!GhlW|et8av(Zq zR%_9%M-?k?LYKtpT3C_UOoSD2lV~avVe490G1+8T5dm3+6)}d2P^P;#XppW;H%b|< zHjYM!T4FOP!qvJt8LrknSaT6p++|@!V|#$7TZ>VTqS$<%K#5I?B`G2od1@e_Ln(He+%_RpCFakGxaJ4z6l<^>%wnG| zz*r?@Yk64ge5wU#8XE^_&=70!nlO117d=iETVwt45)vERexssGvq@7EQ;Jn7E&Hwfk2zJjA!pR|>@+ovB-a0oJug+#9l9N1QCa0uJQ z1dfRv$xb^n+Mmb(%pC;97Ytx9cY}=Z6%SA>d48^O0MR-oGk#16_wa4ph&)j7D)#*~ zQS-Ou&j0^M+1w@bK+UGHlvsQ+k~!2|lgwqx6}xzR3*L{hl2Q=#$?fPD8ab1XX@u;h zN!YuC14)hy_H=CIIF0ZC$_7GAyL?D)(wF%bbzb&%*a7y_5Yal37g+4&YIgR2gVrhM z1!iL%)zc$(_F;;MNX8kFbS;FGHJQuLwl&dSuY0y6*js$BPl~;s6$=4pte)@nJfppy zUy8k+JHFRPD+HX;hVS)(r%RaAZm&FoYPYYMr28iw!LPwi+vTYCBRWulzy8}-0kgO8G&Og!yc<>b{SLJfH=MiQZ1 zPOc>*Z7CpfGqC$AL_tCf?{S^QLBmp~?P5N*7YitBPRJi9I@L$od@ zE6P$5vNl!%>dTE4m89HQ)75UQlC5!Aj*8f(3yy88LuR!Y#ys7u_HF63Txmna2ULle zY^V#Hx^g#9UG>%M8-KO-eFI4<&AK;G(h@web8>8zaS~ZN%Nhq{+ZRq~A~Lr}(fN@! z=9@lp255I-B%Boj?QTBurt`1e`xozSsol_4<0RVp^54JruP3!NY{Gj&u#r8^Om6TU zQ1l7#OpyD;wYz^DCn}pLf%Xig;qA}g9P7*0WkP?XxezSNCGse5@zTa_9TDA80$GBd zlPjMIdQ3K%l@nVP(Dp;Jcx|{OYLLh=gk%j;yrABqit5x?U@tDVM(%Kmg2PEvY7VDv z_xCnXIJEIflEe;>B$iU1i6P4dn1*K+{(oV#v^yq*Dz%(9o=ACpAQ12gVP&iAG084r z3W-9gK6Ye$?c6{l6F$31##d@Mb=X=uGQP4?;HTb=n}$y~Q9GeMJbem-;c~{JjITt9 zy<+#bzWMOO?f<Kdk|c$xOJZ+H zgVa3-ItybOWLywC(toDRDQS>g8{e^m|u)c7|tuMqKTe=^cQ9a#{FL+u!nXk0I z7`X>Dw<2$)b#@&~g!$xWpgG0fr=U5mE6~3}^S<(XN*w3t5v(sJMRR+F{82_h1$Ii3 z-*y`L<;_?6CN=%99acF=@@MbM4}8N;)>c$#Ge&5LaEwxZw}WqzOK;E)F`*_iBnnJw zX-jM=CbVTSp*-lDp=6CkMJ@2eq|LB(17X%xsTqZk%%qt1&}P^nKpBc@PuvXWv>B2o z@QSQ6wi(tbh8Q)cm}DI(#^bh(Vg#Q0W|$~$i_|?qk8{M>6%yjM6gUf*lKdAM`}jwa zmQbIdWcvg|^o=o5B9)N?ne7UyBV)Lqs6v8de+j@N<#tgj;XCS$<7FkoI7FgJz)^~gOqfnz|836wTAWz82nGc92E>bPGA&oa0LzCT#sI(-Fu<{A5(X5Q zV>qA;#1aQUAjCq)0Y?Ff_FDx_ta^rLAVCewgkx6IHQ#Tk(K`Ub$4UFanLUmtjUhZq zlsmDGc(O)LAv~GNDQ4lxDd!Xxy|y}jO+vtvlW9yL(&dw zTVkzlF}4BrQKUJo?G^d5ty!@x#t<618<`0D^=!+2I2-yGBcbeo*Dba>ky~{BrV8~W zDo;=zXPo322^;ThKx4envkE8qJ3i>?>`$Wgw}#K0gq*)Id{*|$>%wOkj#L8WPk9aF zBtO&YFhqIcnu0bFpIpP{Q8`O$l-gg7v!qt`(KOS%tU&=ZSI{~!D!6_uD7#=91;Lal zXvZc7MS`gqq@SD6!eXT*!eX_6yCrr~pYS@69ebTzqsrhVfol!D(-|ppNC~C&2;5*; z?AXCzR%l_4F+v*>P=Xegl!BQKiq`TB3ucZ`r$R7$T&%PiI0Y?sGN9GHw_%leypD9^ z>6;1*?*#NJpgw zd2tsCFli~gvde;1b^*6+3nw{A4hx(!PvU_KBaZj+#JsYyOU!l;f|r$DNd6`LZNH8( z&xu=JABvKBzoIBcFGx*5E#0#-$V=4nsxD$6F7cx$DViF07#A1*Ls;=66aMuw+U0`$ zJeU_c9;w|>#S{1_0UBCVv;rLZ+QuZ8+tTK7KS_7-H`bfUo`Od*c>n883JN5U z3mjbknmGs^h>D6Qz2CD%6F5W}B*Fw$YzX=MmwHKuIsZgf#(wNo<}MZl5U<(bcP?X7gR;nW;Fpa!GBS^4EXiC#+(t_k}1D z_d9yc`fJI;={NKaV{Xt1OBOokQ_(piW8+n!w-jlSf0qn8%bq((F0+VAKZ1@eKT8XX zLN-UG@GziaIEP1v!!dNj!|@xBU^p#?lT%J399|3Frk7@u?1?97R;HRaN8pOTs`>2as+;Q}dh$RHLVQFDab0%d_ zW^1DgyM<2Md4JC!zIn2KSXT~LR1Ho+QqN3FsnokdHCT%|#Zm`dLE$aa)66oS3 z*AOL(ma=)h0Ogkz*S3Tdarl~QuC+qVHJFiVu7P-#LXXk8USYu=wGytt4vm%f8eo?N z_>6*)okkms*hG+SJm^Q5ot>H*Q|#SdV@iFioGDvfDU?4xYfN#-0wb)1gL-U|smeh; zwjAi$rRW9fS|Ko4LV-r?!MIMui zSjSz8mF=iGDsv!G2AKn~$%-nP#6g9CP*hRQG$4Bo^VdG2Xdt;gN~x9evzVPptwg@U z4y+&{RCbNUzw<1W2`af2iB{m3+?uK)p=w=5HMx~KCZ*h37;O#c_4Qm$MZy}yUCfjN zuG9vZ1JE$pbtK}+WY?y!xrlfQvMca$*Hj4wAD0Z*+WRbQ5F{@Q*W6iMihy1=*;VqG z5JuoqP5SD8!Vbf)r>9#7m@%4^NJpjv$_rx|B>d*ClkSgF27|rwHT=Pe$tUb}{I-Jy zL$umK{TGlWBV=Zh#df6lJV$SPSY;@nN6rtmD4&ZO?$ge%@G#L7|#p#Zt%ybGuI9Sb>olenm=Yf$l7%p zSBS!N8gJITGO`j6du1#fU>1#&?Y;JF`g*pv#5tq!Qy2F-MB^6sI!xmb?V96W*)-&} zi)Ra=nIM5=}?hN!wvfk|!2 zHFGQs6p}S_ENP`fF$u_MqHK=QmcWM<7$b@3HV}Crd8LjSp_xi zH*=gSYbW%iwwXT)0SiNfUJFkr0SjzkE5s}WW*6pr>U2WVB`q}KLyPG~J4iYN6gFk!AOD|%8PG+n zMpoKrwcE<^7KYS}ym(IJ=jAa>yeeBd`oQj3R$!GH4OU<&X_0w{Mw;3k=}Dx4@=3%C zmDGb3poQRA@S0(53jGaIGl*D;#ZdbdO%b&VEiYZ}M=7t!b|Q6EzjOS1Bipq5&NttB zpZ+ay{!{(ykElSNCR^2eC3u5={p}0(Zb)KP2y5KTTl1V1x=CUV15qW>u^B6P)c)JA z2^nYv6WM<<{)WpnT~?PjNaV6dqe`H6?4 zSJgiMaLxdCt7ZOcziM~%Bb37B#g5ziPy1fR1E2sc3Y)V2tuGs&){1d9@?>vNaP!l= zLg}=~S~aAJ*@YTQw9xxxI-pn}p-_D=SO~Cpu$U*8z&g5lx`&fdlf1RJzcG(>n!VPO zf`5YrR(gTa(93@DANxpGk-nmLYsKD&-4})I5aMhJyH@|WuLG^38hZ9Hg zjs2i`QVqe{zRlVuH36uKuv36qwu2I|aUZn?xjzcY01{x5KiuBOEatDG#b@uk z5{C}UljNtp9GKZeX;)1uv`aVaFsOW?x)B2ku!P0WsROCXhtPXppz|v zy-K9zXQ@q*lMH7jKqhaFLpZr4mT7ciA};KBYu1#4#=#?|ps9{{(*w%+gg6c&aKp}J zXljFUHjqy`l)-hc34Fp{8crtla7K}8=5}TJS-(_LM(p8zf4q@%U)jHo)+~l*5EoN{ zO|ZET{3>sr*iM>%;e$*0-+XW>>)08<5AaF$w!T(SW@?QWP*>JA9fn)er|V+JD$J*} zR7%#e57xg*kM;k#rCtZInE$dRV`Tk=msV+v#1mIP;RX5GyywuomiPj{?DWfazhrVk z@ql#ha{)jmHJYl}2sJyR^YCoa2vwM~wpC(o`S~uCL?NJ9{E;}W%GZGUMoI2$&Q6Ae zm6H!4PAQg}z;@Tuuo@1m+%?6#>hr+7!Swl=Y>P7x;m2PWyD2Rtjj%*o~jTx8F>SlE;QrH-9M zkzz+AE{`0M^s*rmgE8z||08eE1Xn)tMiGv+BX3%(Ir8Sw#GHUPaP`v2b`q{nN5`Go z_l7*6jy>QGo3}QwE`(yu@89-|;i6fKDijz%&o&jP&r? zaC=S`Ed5zq^Y7BBSoYf%CBscxtnXrHB%ssc4LM~_n%zflU)ruz*?-69+i&;a&h32u z!|*xd^LxT);zsft!e5>Reed6Wxs zK`zJz$tPTpK^(NH@G~>=JW7m?lN^zBQ!jfZ56Q5T!h-aZ(h*4~wLD54aX}vC!o<{( z4N4r?kS)9-TO3OqsOM2yfhRd4@o*P0JRzKbs`wyt5gqi%^C-JF)NG|zk`~1G=xFy( zNIF3_2-1m#3gJW;iE%0OC}F0V9+#7X%X%K2r#wnu^&y3!1{#hct`)JHQk)|lRv7AE z;Sp)pl_OHcW*@(BfQN|;6$Mi5BPRm~O}qjN>`*A+(NyEqC|S`4pg$h2-jD)~y8$go z@#c8{6|N2~;zG1MN{a_j%rmbRd6cHopl^X*(#JZp15&X(aXtquR)|#urRr^|_~=qq zU@9`_l)%(ZEijc_w|qD-wG{$Wy^|1_N)m*P)90co!CvGd(F(YcVSU*QTH{*T47D=X z&SvVhGH0?GRl6+M%pe-8Th_{aY}w3eYGu~wN%C3!D-#m- zOye|>v3SMf9GtK% zTYEhzdri*IaRCD7=h`Vdsc-1oDyIn$GEEkgy_WD|FYTkZrJ#;cwu#zx{07KFB88bZ zM??zUb9P$LdYP?lw2ozA{j;^}GVQ5zey-nUItj(CRvr*u(ep|0iz$PDvWXHWosh2W zskdav-8?{t6e*Bnn^f7i7LRDPtrCcagv)Sx2G<`Ag-K*RP+1Z#o{2rZEXkV0X?m@R z(;U|!ae98DIK3co8fW{YJlwiCJu~J<(tJS;Ystg)`tg>BizG5smV`K$Zg3NZ`W#JC zR-hRR8Ww7ViSrKfKZ=;5UePg#u@>@P=XO1HX zM<{=cMAc~=L0E}}tFKng9u&?X16f@Q)h8B;%vqW?*NG_7p}p0i2-4(iQE0fl#Ugnj zgoRBmZxJ*uD%Xr_T=lT9nWB(I5QhVt8b#=*g`ob4d>3&3~gwa=L{RmApUY_qXcWENu?Oje`Mt)-?wh?Alk(edR1`=zp zg2dW0Nh}$Pyd#Bqlaml2`&428+xLIT4FO z(zR6s8t1~eu?s8`bDoF`?r?5$E-3D9ym~qqRH3&Vd)NJu;CG(*qH%XCg;>Z;jQa^5 zfcHg-two`>51ke_hn>=v`y?UG3;~uOT~BdEeyr6xF%ea^ggCyp*4))&Z* zAzNG6I38IMX}x@kT{x%=le_}ikO3QEB(Aw|;>W2AM@(!zd^jV{8!*$b33T?76cswJ zBHe!sos~2I>0ox#g@i6$h(=-bvcy?%rAI3mE^q03G+w~v#$uF$*o68RF6%Jr9T9P> zbzJ5*L;E@|lUpUUHoo-)E`R=y+^eNj_|JyV;$$OUstv)>g1UPuvm*lrn2S)NINhDf z>`3dU=U&3pLSxipr}v4uL5v1r%KoYY0>ISUNsd<_%ItsuqoPNOfUM2>g;6<#x1Y*T z0g-eDRB&!?_wG)8WP*LN6*{J@zlxS@NC8MsSXLE4L=m6XNpiXe(le(DJYavPvHveklV?HKu$u{ z*grJ>#()Fk(U2j;RC@sqBYRv2npob6AA&wleY!WQIEQ{G>Q{$x4?J)roR}wgL?O^6Ff>Xxm}u`a)nfGYal08z zod#|1x8VnnlaTwY7zX6L%U~kQl1YgIU0NJKPUb`J?zts<&Mi3Bn4JoxG9#KS1x2I{ zr}bmV1?5RC64?!R<;;4s2G!ewFsu=xACxI2{FeYAI9= zM&-0LmZbZWQOLW9Dddbyqfp&xhx36;79A2>tf<@s@d}#^ExJYZ!Ns^Wtc(QtiAxBI zeanqYz$<_3qhUP~mf%g-lNzIuu#Hkrl56bDRmJnNF zw1szdJqaB2NLU(Ccx!txhJ{cFNu-2^gx!#p#RFW^k@!uIc7`Ki+u|nBo=4xvp<`#= znUMU5=AvD5S7yb0lv|DM(~#_J@x9dL73I+7u&5CKYGl7_pqa`LWnpPk<6oOJgQQo+ zJ!24#W+V7_t?qa0OOD zixGmu6jcmU%gd>%!AKXa^XXcC3QVh}b=1>SR&)G$Js$-Gs((G%Du$ZB2Di>t4A}_C zX@mh-+YWLhDzO4>9eq*-nKl89ZEUwq#sN9VrSLrdX}I_jHnkFy>^xioN_gUJ`&(n`x+)cUG=au57bzTJ2eyT6QGig0Y!#T{faVSQ@kw6Gz8$;EkOSZw%W_nzKV_X!Ao~XSS zYSD{aIqrDDoFo*?v6AFf!5ki?V2*8nR>;wkA+&0=riHbiDv7J+(_U4{oTR3-vFp^n zhRN4#lD=svTh4bWuv;T=&ViTv31|_sZc2^(U8B%~{3K@Nzj1UaXVDQq{J<~_a-QLB zzaIU@>7_)oB%CxE(sX|3HV8!F$RG<6fT@^YEpQvY25y7N5pLt9NlZWxiEl{as44)+ zoqAS<`XAl^gKEwqla(brh7Y=**S6C~Rns zvO!7~k*Sa>kW~gF&7){yRc{){L|lU7``d#lX`aTSBeCee-?Z+c;Df9y=af7l3KA~N z3S#k=#qy-1-JTEypAZGb4<;7BWyh*)mavZ6*OjH_^%Vt;M@twSM6!vewQM95(-1oZ zYx8rG(2b?KSvHcSMmsA>Z})MEU@SL-v^7NC9m_@1}TJcZllIO0WB;^ z0L6uJxKcD#L4|x~D5%6`Au@W-QY;;%QCCbqH`hJFg5V38Cr!#dgRg6NIhTd35|57F1uEZ6yE&Hu^m5@a_l*x zA=1MZc1lD8qSj&Ld3;q)sSw5b+$=k9Q^8CKju%E-^8IpjcpwanNIQhb2n`xK?uqD# z5FsSi*krq2K;SUp9{+){T;!r*A zNYEU_Hb5P`9w`RMqJWly9$&aM_(J|a*6W)yO8Dz=R7I8bRwu4`Ru!!T*lN4FaS(v;8R{n#3ud#rz#dmwJCo@H{bm zanpM(7cF0?B|j0sZ@fM45>=}NQ-8%$j>4P=(hBY-@;bs}q zQK~n}y(-ijMNgW{qMM^Ki#_NPOJ)!9+0NwyW&PYIc5d*$-Z9On)S{s3$Obiwp+vne z!Aw|2{#sY{l9kh1u=X@nl(u94&buPB3&Y*FoEUIw>V!1lx0kBAX*gNQ4 zrQ>RLM8@YZg6YbfTJjTir9mJ#EZoZj2 zvTpBxnY_I)17?!!&uK+endA{Y%XH_(fT>aXJ?VB0kR#&2ne-|ZD}_&*SyLdU^tqJo z;>F@2I@LprP!FYDoR18s`{^W!!})m?9v!Xg$%U4jKf6GrqXxdw1$>0tY*n?XPhm?7a-LkM!}%0d|-&qNU5DsoUXDV8BV8KGN!r+U3zyh_2M ziuI@-Wt@7HvA?=2A=ZZ$tuZ@5jFO{fOeIb=yiekR8B<$sOx0J)NK@RXFs5>c&BG3! zCyCVBhAut75R9a65klDh ztRoF0>kt{vk|M2BB3awAk_QnB&a+g*1c{N5aQ6DFGhQ5--}E$f=!?*~Zztw!>^3KT zMZk!c5JOF{I;DDtLReV|FV8JPL0u%jg;B)I-G1Ujn6*c*hD+9C9uZ4xU&9<{?a}Mf z!7Ma6$qv@KN3TnFqb!)>@)t%VHyN=(t5SM|M^A#}R835UO2yyGDwlDc%hdymMBBsh zh>`_sD$zKL!{f6m7DuW6N+qg$eAt5xDs(-r60OPOQ?NL54T;6+Z8(=yqn*y;k{XB8 z-Aui!upE16?+bGVI)KL+NyIzY=8C~WLC0)DmXO`HEy?N&)O~~~sbNQw-l4wWR{IuZ zK(V|TiEZs_KO-zvUdF;XIJ6(uor7$T+RtjvLGBd$8Tv}OpV=we@YArLq3VSFY-l&D z7hsbAa(Jl?T42V3yLUW2jRxaOP3Y;Wmbz76>XFb>i>0LN@ugl>i zET2eLv_nTzRpi>9>g*gHU~R};*8qNsv})ecd@XXmpp-_^3nsc(r&5^ zqxKa@X)n(ljE|M-KO|PzQZhg_$s%adsP^;p(c;cwq?st3*)R+&*!Je4&U zI+cm#EuHj5ETqLAS~U_=FY>sbq-cEN$fy)%ACwCNd{!DJ2H`Kv@eDDq;Jg}}oD$4A zP~g1>HeO0#EF)9gPSj%uGDr~vpjIdy)FiHx`l&9AFDab!|wZST=R7mmb7)XQGC^YWtrh z!6VGnCa68;>+>22VDy+tTw+RR4-eV!MX*b-z1_`o(EZRkTnxr_jnd5NT{6%R+~f_mm1we$>r< zf#BW<2TGQ3h>o3W*vQ}DmY#?LnO}~Wa3vVe-M~J1xTvpBLCwN3L`6)A$Qt5w9cW>e znP*YP{6$qJT^KXw*UdZ<9?i^i(rzL6S7FSjP7{Nd0;kP-u5R3k7nMAq-S~SU2v}m~ zRVKmB5Rz`$;zG>fZ1J)xFZvMgoQkTvh&30$3>eheGvwISr%ykr)?%8$!aU%cLrlR+*vls{GX4ihW>pzPaGy{EL%v{=o<`+y=jYH z^Vacw6TXTHSNsZW6LKJ!u74;<9>7<6>8% zxYgWHLett;uwRp(k+tbGSWCZp0$MYmC7lq40={5#3$oOpA&$r`Y9vT%L4;%jLhiQe zD>Av^E{O88Sc;OFSUWDG3zHZ2iVe9uHBiW`aTh+gcYdYa(?T znC}a2nmWH9OMo4*q9t#TPbgCmiD5Pk>7mA7B6;r{Cy`;Tz$X)Q|F4kv}vf z@^6#giGRRz%cDHjd2C`9dRFWPkEo&|&vaMk7M^4~#sBGMI6vlfz^w&t5%Pq@)%%Rp zXZ$i-u_7D)U{qQ;lU&+2>_L^e3FctwkS%8|8;o~;chW$WL<0I;@kTPzO|JIbi%&KBv2kT6r_sByF=#v|vj6_$uK$95!fwAek1yp@aX*S)oX0O? zOf>kO4=?p@p@a#{D$2L^-fzC6>e1uRK4PU3<7cFtL>$_UqW>)9${OFBc7&Yp_1~n^ zhkoau{_KZ-`~|oFB#l2eR~zBZvwvb)Mw9$2p)UKo(l{h>;|SoH>eGkw)bOB^3r!Odo}a}miW;9z?D9Cn@k z>D30^sD!S@U=cU={vgFBDSG?ZQ=vEejc}AqAP)dPe)|!765tHd+ur`1pWE`g7k%Mp z4?g?tpVWz&jd!y);EK(0&ok19!w9j(W$8t5ljOER>&N$D^3quOEo=TJ zcU!;t_9MOb7{lmcxa>}YMYsF3IJw#)8zVIgq;*OEGvST7&E>`V6nDFC`o45=fBee$ zYJ`nrO`mZq5@-nhtAl&3|-7V%4>z_wXliZmgib3ka-y^ zDE1|^MfxIsQp;z&Or<<&tWh+!leTtoqm}REZ0M1u@V3!F*%T(!dQ;oIsbMkBt(}xlM zTKUm*PwzF``r^+Il|S8B|7jCHz51iYTU1J|-a3s*!M0yQp~8blBP%}W@Y$YRF<_Oq zCodhOdofOK{pmh(qd-TzY!>g$7JL6NCktpyQB>rsl!*?Yb3BZx;Iwsb@4>TZA+~T= zpUM>iQYSz0Y%g-SJ-M7VS(BG&r{H=;e!)w1D0jTKcRrgC=#42=5RKU}u#a(5tH}KY z{o#yyy39K-&mSV-X`dS9Nj?>3O^DXQV#}G#?PVT=rcQ-HfX$j=7L1B7&xfaA`pmb= z>bt^3Bp++e@ukcC4SD3EZlalUcKnHFD}hjR<6?8;>T_#PpV+FWg_a8`!Z{XZC7=I+13z=+`NGFrTU_HcjmY8B?ft^GB^hux-#*xq zZTWEkV9jK`-YuEPz<&2*ANhqhDETToc?#pKly1lQQWoURC2X97VjGUD@x>z=N zu{M~HxJzxZ4m7)i`GB*}U&KfTVB=w&T@cQ~05cK}0?yv8uZYlh=?cz%)@mgg&VHU- z`CaB}ahz?SaF#gR2smrA(c5}dMOiPAihyD*E_QjCC~S&h zz0|rfy2)8A+JUlr51f;KXYaStKJA_x{RstR!z6BN+9cv^4(d<#!%n-s8`HtORldW0 z*?|sKzO_RUZzB$aBfaoK@4szRYhxhEP4Q+ZccMa;Yu=i=<}A|anzQxKT635ImIIR{ zsx?o2%|R?%ZL0EtsIPhkMvndLXu0^c_#6}H-3B0a1EiKF1!h*;TN* z%U}hF)Z!p!3#PT=ZEmvpNk3Cle??pLttVfmB~YhdK4-~5Fa*_>L-j^AGX&LJtA1~^ ze%bR(L>A^XMT$Va+22Uxu-F^Lv3)cfLF{GNWh_7}$JwXn=*KZ4iVMNE{@2J3Zoujg9 z0T0^QhUYDcS#*0}eQH$uV^A(+ln%gWIph3qKep7nb(?J;A{@VQ(>6GIAF0KDelNIg z^wjSC{x%c<;C5RRM#uI2%|YrySesQBZi$!h0p9TXZQ#IyMbAhq^Vd8n5E9!D#+6Ml zm?cI-@%6p5kRp?v8$}LEg`YdKVPP9pLtR@!807nT!5(M}Feb9)|6r36{l@nBrfvCG zM(3$#!hN4ElvRKDz1s|B)BIb-oBr{pZD!@T<_^8iTwlK}f7=~PMpXHY`oQ>qjUR8_ z=5%Ub{3U=AUV(mXv}KpQxAJ%~-1oB7aek9EV%*60Nxx--)!_p0CBQ*%K0v)bG(z1D z-Gw2Ap=)%-58kFaEC*zwbw`jEFj?fw5J?O{pti%tJVgE|LxuhUdg>RJ-gj~2!Xd?o z9og=5HpSLNXm?kw-4kAWlm>Q|%_8=lpPbO{HLH?1m`B@NJ_Qg$HK7Gd$d&h+l_Lcl&cldEc3QfK}eAb{Pai~G< zi!K3nHc4DRH~Lt`so(FMI_woc;3Fyair&Y!u}^AjS~fN1%T!FF$0Q8jj8z20-BQg= zIK*4fjTU#cZwaA!3nE_KTReL>MQbe<>w3PVd_f^*7?Ye;a z8eNfduG5vZdZ(`FXSbw2dnlL}oMKly3z!M-IP+NTJ1{oh35;yzmoiQ8ScEu(w3*-H z>e>6!-aqQ=JN@g8Y45ncUgux0PkaBQuh;n3!~S)9@=&6#p?VT__9CWX@KED-le>c> zi+wYaARxuhSwHd|B=!{x1&H#$c-LQ?gWRmk#mh2-nqao|rNZPUvKjK&%LfhZxszL{ z-9@};&@MZZ1bUN+9$-u+R@pa33eScX%q}k?G5kyhcot2cX6?2o$CJT^iw4aLqfbKt zf|E_Hd(ohAVe~28B9m!*a&I!2zeq87pVTePWrwV}{L|vd2mLdW+xf`>edhP$dajj! zO20qgpP{bvQMmngQ<7TwC-pmOjGjf}4+6B2&-qB=cHj1>JN&af^I`vN{T=nswljR# z$6=e#QU7euBWI|6>;E=|I;0Y`A|~6_g#(>Uq|y)htN&CxZ0|Y*C-f`qS$nHn|AB>d z4);}CPGcOsuMwcp+5uq1zjgpK@unSslS&u1qUg8!fXT@}(D04O!WNQApLV_?>u%Y7 z#sVk$G)TKGNrg|~uJj7T)q=rzu{b~GF z=uUbK+js$=eggvJ3qX_dQ$ovGN(n8V0LdHj*IyS`vkkNRRD<8T*0MErKPceM0#%xw z4pBHN$U>Q2$uu;6q-^|CVgdnnLOUruK)Pu7ZfiJ<_bzQ760z#zg{W-2*OX0u(wY>& znJ>9N5y%YOI5Ft=4clv)L5yZ#ys0H=|6GbNnCh(&2wxi12N2<@oq<#|H6M$9o)wA<~y!)yprQcT-mjMKFZ;c!jcP}jx@ zaT*M38w^fc6Ie9`fECj%H{dC_OG10t!V8;DbD5wB0p z_vn*QDnFt9R>%bF8$`Xod>XRd0sgzSv~&7!%O+%P>+(&`6ay7*+e&n(?={`&>`?{-ZBW-FUZ#FN|+Y){zVdy^%`y! z!<``=zqS&Y4+Pm{!lIR{A}RYHF&78($-Qn7NPBO8n&=5^=)F~+Oez7Dz&^-A-w|&b z!TM0Sk)n%?C+lf5%_t(_A@m8Ckzlk&_EjTDKQkJ6plSq7sBGleNFxYGGa5NoHF9s+ z$hq*7a?YPke0b+Ze_q|Z!*3?0CNW*~Bc^R;vm_g%sS>mG40@sTfr5P$x`*+Q;$}_v z5Dyoq<2Ai?Jhr#cm{-?VcACv(ll|@4-^F5XFV!YeEed|P=?nYPa$T<|RwO^xR1DfT z5)Q`peYAru4UU6MBTt?k9EeW29~NhRyM6>e#H)^}Oj~A}Iod=RfY{kAbipl1#()P6 za|fdTpcCcqMs`=6sky2-T9N8_au%`|T_sV88UxGuyYvj(lf?W>mL&&5-Qm^e>qJKE z-bnmiMv1bd(7!M)HmZI)GBz?^5TfA1da`d~f@C!@)Iq|=$>YL*xX3`@JW zys~lneo}m2VP5$o^LT>gm1jxCFb19cj!&4=m=|Ih9n3)aey($j9xvtlFI7m}rRQXct!~8@gmD^YJ$1<4tuFIYb^_{%p-qSCe56Z&LH{n$S5H&QOqKLiq)Y?Kk<8 zu6i7Blgi!8XAXHrTG#LN!1nP&ELh^{G5p%F)9+X&>?u5xwTJ+Y$gMJbk$gn+1ihfn zwK8x?K~bn=INfE4DvCmAQxWU|&TZBs(ioeF9=Q!EN$by)s@M>2BeF*I_?tX0#;)B65QlVAl%eEFp&8Q*gS5j&EtJOkN2_kcog;w2vXRd+;OQ+>eDo%J}#|J ze(gsM)t}p?K?QF_m)a${*j6;hT4vafT_5u&mABkk46tYFF#KBMYs12 zj)?*TaDN7Sg`y_Dqk0`o$k|yec!toId0v8xke8G@?}=Lj>}JB{MX9?WBu|lT z*VT*M-kxmH)w*>u1X(AMAy`|IVM}D#fDC116&dnps}75uMTYaB@!WtXHGzP~LUfU# z%}wKn8QM{=5WVsj=QWlsgN6;5kCZ+XCO{zcjQjNYs$pP=VWURxq->1HQuHZ)TBA?( zEaW&-^vS8VD)R!%5n;;m1x3>L&Ds3TyR+9Ev{Ek4BU#+Ltm}$SW%;Bv&k!;?<>=Qw z?m}V0XKQr&D9z7C0|B4R)B+)wQ!}haUuhJCe76(8-H#?A+k_@kFo;~O6{mQXJoUrA zRs}(Sc!;3ys1fv?KA$^>2>RORl?2Vk6{xwNK!;d5>-3x%5ypzT>JuiCi?XHnmxOeX z^P+{lhd~M3*{<_wo0e^9b0sa!)wVS5E@b>!X-hNR&G`kbD_#zQ=L4_HbPa1bkiciy z_KmQ3<_;mHX@X)6JZqd{&N;>02&a$$W_&{XADn`Ay12VPbH`HtS9dHSjigV9D9^Yd zJ7aft=!V|EntljN#9X*NsX@?L;^^)#amS!0pw=aT#}~wISqF&S_VE&8urX`_!=M`8 zJ>VXl{P3Uq{z0BLtlyz?@P%T`K*xC8C_YIVS|x98TM*nv4}wEPBAAJ2O-i2h&(O+w zKbLzqF9}#1!tK_flkAME2WMnU8UOzMa$lKlpbYh{Adwdu(JfiFhHa*U`9f%v>BINQ zQM_^dpO^fYW0geW_-YIcZMW20&HNB|5xt+D9!g%Z`@pqdx+mS=yY?9(k3$4j*w4*# zqhE~`eh?B-5U!1&PL@_a!ph(Caif)D}FQ~2tbLY_Ma z1Q3J7o{GJR=Mgr>-39%jSQ=W-u*8l@w~Wc`&sUv*_ND+h+S5&7qwCVoT-6W3k=Bm~ zN7BzxXV>e}4>Fu|_Y+{9d~A4_?fd=V`!U1D`8{w}SoMNrAgO!$(sKhBR;;@!V@n^4KA3Dkgz06e-i&p~DZrt>|@2<(Us;R3+4od1o5m{HZ* zL(IU@dWhKtbjFa+-2tKIlypD z4C0XrH;j#2bdw>kc0`0>YeZ)kBg%$HM4B#PMvSOJ?=3UYd$0l2hiCf?c2@NvrH!SxT zf_=Ov#6@m^>k&T%oHxjykuBz(tFE+?l!Cl*C21X_& zu+3D2a)UBB0WjbO>K=^;IvKv{7WsSd2J`tIrUyA8*p)Wl&DmD7$gdiGiGUaSZlO6N zDB|Sm1m#h3Ma=x_N71cDA>MA2Vf=&7bcTiRa?xy1b~{9B;S z)A_fR&zr=&i6Ru%!`?{TF$2 z=b?nVgtc35{pQy`bKeK{|FF9lY}+RiOjTJSW#Tg-9Xh_i)%!|+??0J=Y!L)B+G<1# zOittZmqTwpYi~ImRPcwyWwXSptE$D?D1PZ*?)$=f?t8<7&sp;z)VJ!_)CRB^2Joi$ zzyEzW3<`iSg3m=$N1%s)?Z6*=@MqUNf_XY$)CeSqw8FA%3S;>5`~USF>}jiLX)+vEa+p zW2m&nm;30?1>xRw#8KgXmi_a|;tZ>@fMU@Vhl%wtdz`Pq$JT#MvK%?X23Vv02U7DHW?cY+l=V$u#qtg+6^WYrOT3=G=HR)k@;h|0tSanx~s!r3J|4+TT7E5dCgcWB_t6%4DDR-0FpuQ zn1yz$MLNW3aBhJPxahFe)AGYUk|!}?7jR*6@}HP=OW1MoME>_5mtZU-f`Py&*1<`%k_S`R6P!0bl*ED2Tf3`EG9Cst(N^ zD<&GAx6Ha~61g5E7`MVt?I7;MrK>MkGc;@qMst4aU5YIV^ss75_!DL{)DvixA0O{P zw;oXk@14}a;ZKJ6@@fXU^@uw7(@7oNQgo2!`WP1T_lrjrHlOBqRS)T7c<58Z4_#lt zBF*(NJfx2XHd?af|2u0-0xC=pWsArSYqIy2ZAve)dHPSd=nduGTr^SgAS9SyomX}f zjUcbjOY*SBzdqKu?f|W+jlbR+&mZQoq181r!NfjZ^C^!`uO^^7tLWobS2Yg+@_Oq5 zwDpexlK)T#cS$LtQN`Meypb9u>;>5s$t>`@V3aIn*E#&aiY75{Fa*Qf3n#k`p1!7S z5OK&i5m?_w4R12*+gNIh8*AoSS8^Ru*wW!{=t4ZYpg$|xY?D!)J~5phE_a8mkMwYC zE_LJ74vbUmPi3G`vaH{)k#3MI_Z}qZNC;V}8o{PyDFF`N#ghf^{I?N!<&i!&dKhGN z#eo$(VIh#%LgRg1Ii))JbDFqSgidtD$w}y&)+V737N*GPoAPlP-FBJ$UF-~G&?H#XN@=zdMsiGY`CH&u;gM2A z9(m-Csz*v;dE}7~u*Zj1ZZEd`;YUVQH`Rxnq`Ga&$K*+Em9BiE{M{1B;>Ng!*#~9A zmHxq#hBv{=FLarr($&nZD+C^x6Vw8led|X3Id-iPl$ojN*3Hx@X6ouUa|rO;C~r8>X5jAVW?>07?`E)UcV-S#FsM1f52C(x!%#I0megFRqf0u=g^B?hvu|ZuH(Z;_ zNKqtmY=r{W3xJefMMC>AIT+#caCiIZ070QGjVr9loe9QGqY)#5yBVsj_Az$@Y&KlO zLl_`5Uq#;p!#%%Ijdx|7GSi}L`Pj4-G9Wyx!Hc9u$gmpM<+5jqbS(^L*dy$N!g(78 z)fpQUzb(kSyAq-g4T_#Lk&!_mEqHtfF`Dvj+SZMLCI(1=`Zwp;4z`$PCtw%q*$dn* zj45~?A^Qqqh-}|Ty@rDdt*Y)wLO76117!^d`RNq2}2m+2}$n<6l+*fy>dv09YsSMZHjH$$AVauDOtoEdB;`i zq}B=(#Q3>FOG=tI!+qTgT0!VWY5>U;Zegb;0trWf%wAEhZ8STmJ%!z<$eL&@YsX+6 zD1u?Skik^#DE%PdhA`dL`Axz6l>a5W;jqSCi7l8Go$`u(D3})4MQmYwLKRq}*+5ri z1T07Wg|Sh4W66j?b-Ik<*0=mCV+~c)pN38|rZ18L(ZnY5yPe~M=@o{hv+-iFCIn23 z0G`qHXfIQ_a$lu0K~j_jxj6Z<;ivNW(m_YU_y+Wati8`;ZmD`dXsNUv)fldjTZ^|2 z#YCyti44p!IA_XFdfSThsI63xXd6}zRO1RYee=Ey!*DG3Fvv>jQ^Kw7BP}he=tyM# zfRVR0JfCp&218J4nK!_-Xh6Y@HUJP^y2GNrZXpn#-p|OAr>EI}q;IZUvorn!J7Dg0 zF>agBzxgShdiLuYfh_MC7hb&>XB)mUg;c6t!r4+3thUCkS}F=+0UT&U`n2H+s^TbK z%py76IPO8c>?b0)ZEa zRR`D?#CSpNPfI`I7el<68pFVftXf5*hEE)i8^ zS7hx=mkD+t!H}Q?@Fm`>W0W&IGa{Q-?`uy*+%YIBkePi%(dTaDOM4GnmM=F|@=e3Q z^SR&0eydMq_7D_*X<~6p?~C7XrP52D>F?hEbMIALF#&2QZHA&T3(;HTjHDd1QX7cT zrIV4bdE3}mOOsJsSz1z6+o`H8sxrpxi*L9c$W(9HR(TlQq8ph(4$Gvtu^=apqL%Dn zq-*_9PEqhHsJGrvKn&}{e|N!><^)xm=UNgEtmay6^dnfWrsgq`w_Jw=ia=vRX;f`x>o}q>2#Z=hrjw09@vRDS`fvFbnE+j6C zcaY;o!n25^v#1Xc3!GOU2#hJ{T2|Eol7PLmXNlPvyCHouw)~ zsa8)GLwU0H*n>x6vu72t6QvDGO1JH5;x9BW0jS2=GU}eXKqW5HPhhc&Kof>|h^~Z6 z&i*ub3%RhB4uKew3J`bhUJ|cBnJ{}8xEAbUv_o!Zu$6Uk3}o2k8~ue;j6B)>TOU32 zn|EA)!#6G^SacDFli&4eYiQ6?g)YM281WLQ+}iWZD0=noTVF+E*(-TC(X4@7kOYki z*%Hnk%)=}5M4k4sr5gra`*g`N2_0KsE~h;Yg$NKnaT0`vK_@7US=WLKHY?)8I4Ee) zwm2u9m#7!d%QlBtk8H^T3&JR1q#ok2*+V>dv<&gs9N4IMz^44bEBAE=n<(KRwWBFL z03a*s#k3p`R}I<${;S>reiF>Jxhw!6=De71)ut=3vk^+-<~$gK8F$IU0>G$bQcEpD z;V!-_`(&OuqNrUC61CCSpnF}5*gcsSL5!g1C6zw}5HJ9QDh{TN^au`pse3Dke3)ah zxr%|!1qNoKOgf-0oU^dGEBX@SZSUgfCEso==w4WA7)wLOo79Ao$@uO=9kc|77U3W& z@?g@J{Xq4sn)KC$RZMzG!WZwd4?KzSD+x7Zg@900pX=KzwnLR}X zEMd)MaD^4HtibXa@3rQ`m&9+*;d)mDuauBHX0J#PFjX!QBSf+*!&!DmKcZTe^-isp zWrk*3LL6n_F^BjAvmg$>Kjs7c>Z}1m#k1Gx!4=kNvhBLQNG3EWPN0qo>w$Hz{mh8{ zLEQf_2lpF&R1;Z*RXf}xwE}zXlEesse>fHso+CNJHf1qLi4jN!qvC_Tw<^&=fxp_N z)Rz2W9c@zV15o+V|KS1!v5@TbhyTL9Nvx&lv7GEK<*ha5terpbSGF>(Ve^odCp1jo zcd~by!hJEa&~H4bG6mh<8=vYzH7S-VpU@@JkI_;X03H014kQ1a2W>RKyx03}ihc}_ zim6LLM;2k;eCoKFjMObedE_@sM&mxxihW~els0EinL?(-%Ph6;1Fv?;h7o>&e<@q^ zr03v+E@n{i*;6-oC`p1)Cx5Nk0i8{gO!M;yOSUhfXW+i&<4`gU(z7Mgu(>GNRxpK$ zub4&IZj{B=g|J(7$oS4;>XU_~ zTh4v;0F}wY1ALnF0JX}(1AOuaZf#KV;5#Cn6xKOAauFp63T*klrX_EJ??^{ymk&|gyB zpby*-a0vMr^_CEis!}-Px#O{Sn0l2TX6q;#qp^PljX^_nV9#0Z+m^Pg8l7?<~2MCsOtkpVdE)8ckS{ z%4RhIek}p^?`;50z3L@)e6&6}wZ&EY0ehV`Y7jzUSj*eg zvI=io@iESSj=H};G+BzwhbA-x17`k;Bl=O>udMMelhvE3Y>><*Fs>IRyQ=>QhFgV7v89^9E3Q>}&p5>2 z>KmveAK3+5us>v65-FInbn0bOmcd_KnVOEANI2fK7wOkc9rhHCG5&RiR)cmZk%nxG?%rjWaR^2>e?r0|n9Y65sTT-f8gt+$iMV(3!_jaqIg% zvW{C9Xh;bF77+D1NU_RdK@)JhL|*!MQwVsZWfJ^U|FUfbql{#%U=;MEBQv`Plei-~ z>ruWCGGmACeduY*V96RgR8rg+vPy5qOi**f-N;|qK2yqX;b?;FdCS&Gm;-y4laTQFs+~wbn_giksN<;- zTf;zA6odhFG@zsyP*MzteZU4JwjzJN4Jf6X;Q_Hwf|<#5sShX|Lo;naR~rEUTVS=RW2BMHo$?yk=`@d|=>aME2UFCe_Of{H~s3m9!74qzzaSO8Du z=3-;wTBUNkL&u9R*_bp?_)|3|E#B~$>c{J7OyYMYY%nIT4&eflflWj}3E>;91SAV& zHwO{7trm3D{j#?BiiR28f_5OlApml96Poh0W8hDjuVEm@#5@2{TSkfKT1_kNR6=$3 z3^Z2Jv@c0a1O&Xp+=|0Z4lNWj72}@{7u7Lil12vN(O6uZUb|mvf>O-)7=ZE9tpLfz zcGh>O)_580fSSYXAXp9fu?(*dH5DFHggq@WVs5CU;@x`C#0Y!E#E8o{ z#vL(Y-YY6z?U#dk5GewwB9!jCyp$rm?V1$PLjCsGRSk3dp8TK4!y&ei^FE6p#q?RnlGO*-u^hY&~SMM0#>D$$Yycynb~5=STf=1DMIqNKc{ z3AT4c7_+@2`;6xeZZzJ@)*Gzv%{uQjw+p%9;uic_i3j&CWe0!*9g59Ep^w+Zey(ql z|20KHTD{jj)g)bVxDf5F{=UTm7S&g5h{K!1tO1S;Y-$XQWt}a<#NZojB8KgzA>g#h zmM5D-IS_7A?x2qpPe#*L%Yl20g|q!EL`=;ZvkfAIE{=?UYS6cVQ$=IM_au>0CJ7|B zdPe~HG99dC2tOVKT_OTGKlLGxrv5x;Lmm&xp14fT^y;n!XL_v(Vd!gYU_Aaj6^gtd zOV#Pc6)k-@1%%MhUD{>!;qKH*Rm_4Nhhx2RACAY>E;Y*tGA;O8^*}E+u_AL+%8N>) zK#`U?svIg#a*r%(Fl*mW$u|aM$_;?oNd>mql`Ay%! zIUC}Qh!(@uRaOhuK?m6-Wpg&tv04|*<#I)D!?JcnyAYEAWRHKR@vkkx#|IE{-Aq1x zj*fXOYSSdP1{6JIf7Y=#1}nWUzIVAAeKGqJE2fxDah;2o#S4+qM8^64{7s(_NBqTS zJXf#qG!ViUZxNoh3DL}D0=CA5zx}PYeA3(eGyPq^ji4bV=m<*a{3W~(26&H#%+G@N z2q>pA)BbYR&u|Wbw+>AZNtQqK*H$H9K(qD~*Fsp`nLTCqfmgl?*X0>@JtI5Iu4iRS zc3tu{xxiEbu{@Ujp%>@JQZpNTpWL9}+>3~&0&JIoS-w*K)FH3qT|EW<>Z#2`Pu(*5 z6uPRO+BEdk-L?zj3fU0s&sgS3U-~YFa zKj|Huhvi512rEdz>-{gm*+cpL?Zr6;|=YIkG{(Gtm3Tb5J0Q^Gs+VOd|*_?Mi5|_U4UO7^z5fQC!Cg z>LXndG=Siwh(Lw_!Cf-wEW?c($ekeoqaiyzA^KRLH87sBR4QKNwu&8`c>_df$T%it zxJ-Q#`&V}6j6w$-)-o!rKtszfXat?`2L)g%=@slq%t*j?R`eb?%P$0nhscejTn>zR z^)>}owFNWnO&`XEVBzL6^!W6isJ-W{IS7e^2Dbs?eg@gTAk!P6fux{r(_NJ$Gju*dkP5a zcQj!s84PT_L7cS#?`FYxGH}n5kUVX{CKNGP&*ieQSs>Nqu{~wlxXNM()xxtC9yR@g zO~T7bT?WlsyCPb|W|<5uEDb34Lg&aDnVJ#Z^C zm5xd{aI15TTVbvU+)Dl?&{XCv<5u$MDC#tlNh4$p%{F#nm4!Cz+^TcQpy%AGH^Qy# zpdaH_9phHK2)B}nGocxWcf(bpGAW~D`a6tp!~jqV+e4m8SOzUE!fW_nHt$|_&8I%V zg-ZsDK0rk?8d%5J=|YX2vP>Fi$4Az2(*zKB6x^yBe*UV4ar-+}7m{J2j8Mmdjr|=WwAnUW@D>KZtGt4sIWG2IWyvd&u!Qi&jU^S76 z8Ce(;6UUNxw(e4pZ+M9#Xki1Kmd@X@no2|YlItz028ua}0hySuy<@hJUsh8n<;_Z> zm;FFOlWk#^)GlNyl%CZ9GLht!v^sJa@eR-k2!#7-z z)fJxy&cR4ujJ)FK<25LJkCnfGjtY!joexs?Czo!EnI z%}1uUT-bug$6K0*CMKJ@^#x!}fH? zY9!)iqU=fL$BeiV#jjDV2e}}D*-8(+?ufRI$SD&oyNvG4>8_;_y=TPqIMok=sc%G1 zXCpp7D`2r^+d^G5?-b(5Y+=@3ZfK5TnDGJ*2=`HxbO(1z<}QvA4`V zIN+#fpe5*ZDNjsf!A4n%{eXiILNXdBoXSOyFZ6HQNo#*BU+69Zm~n-6EdEWJaW_Bc z=R(K@VD>|e?(Z9@ ztT+cwmF#a$T6#!B>d1`QEzFo$7i}0^eHgq{om_&>XD3ax{iKPsR@xsI1Y_MfajXdK z=wv>~`6+{x*^^}Pa)|TQ5RIVB3+#>(D^kIep)v|tQ!~beTG; zUrTL0mhlq+$@s}IdB(`9tRqEzUGfitQ#T%0+{xi)RcnfSa^kx5Gvp7v{a1 zxW!`QM+S<@I^<#=Z>}DCwahZy)DsP-Zp5|=YekH~mFANTql*wCM{E(s z{oN`WP8-M?E>y(%NBB4d4z{ntLD^E+NmQf(V84ioj$iWF30ZP>?S;@UkK+)~q}X4l zRb8lQj&(=TKnr|5(8=%olwN)3Q!Q2q!hX1|$LNg@`a|X_aVr-u`->Lt*ZoAAG@Og< zwAf;p0}N#^T*UL>i67gOMNdyJkcmbi?)-5JP0WLth$LWQEkK2!OYAd}@&LXYSM+Lr zlS4&j#vp3dUZRtp)?j!13VA+xek{tSskMOKM)sQGAZ{iPI4$r*)1Yg4KQA7{8i*S< ziTkjoMYF-KY0(wVgS}lO>tO?u}OnHBUIC1A| zOqs|R{-Yj&*hO-c0xyYkWZs}I3`qfwQeQmb1h^{pl4wBvBLyJEhnm3P^a3Em04a>q zM~lr1M@9<9Di8rKkV9mY$`C(_OS^G837``v!KjBax?SQ0@ZFj%o;MjGd6b7C6c|*J@4mB7}u< zQ4zzfBxi!JH4_HS1EhoVm;YP9XL-ZMqYg0m+O&Zk9%5eR5le9o*}xWcEzUD&X|^2v z>4jj(x=@U6ZJ4SFGk_#%z=vt9qH4ZnAOhqxrB0@g+~=CLM@McqY~=NEG70tBXTH9K zq6ZIzwi}Hu(Wyib|7{~_?oVDJXhl#U@#I=Z%}kbQJ~w_!g*;R$q^Z1^tm(^3)e!Pv z1#D!bV5lbXn&fcS&}xUMMFr%LeWTW?9U?WDwHzuTLMjT%s6Ek9aBpsLm)0)Wus3V& zBbldapK0l~u)~I|4lG(-9ds_r74O%foX$nd#qFY1O5F533|Wh**^0G+0E%t02yODa zED|}u>zqVkC5&VN$@~gsNWdF#1bKn_A9LRySqTzdBQHTRSCt^a z2Ci}*y|>2!>^4EGK@tGqRfmAQRUYwgWKL-Tob1a*P!K@`X);Vx{yF7I7*9MiJ2e#3 z!SoP0+^nbzknrjqibz+Ct#!+Sl_fkHo@Y;Iu7JTpv>H<@c-SNaFyM-h`@#r8)^YRj zbCYEbfJJgW;!%9SQ_DO+^gWwpw0N7-^0>cQ1jtP*vS6_qJC(h?i@}cO5RXCs;l83Ct{Jc28n3Dma2c& zWTVE$2{Dfjum7il*SOGI%?Az3!qUZZ0obTBbk@wQpAZ*0Vs08zsOmNP#3c!)u~)@w zLkdX|7kMZSfsq@Fz_h=!wBr09?SimSxbn2`iDnmuG8g7y#+0cjG8Zi5&qQ^m=A!!i z>X&NjB#MxcY@@QhWSRi0##U@v{K(t{^=D!WyQet!=f*=vu%(1Rz5uU>4PH2T4M@%W zx@S67LZ%5Yf;(UHOi8E2m{RzO0AK)QVKm`L4LQ55tP0#%2_9`}G{xa03eO2%s@VsU zs4N%KR?(U1;B;0*l~D#3Hg#J4k;{EJwq`t8Wp+#%3;|uM9gK#ODxOdvK~Q>1?=|zi z+vNClp0I1LSb~CwUiXlvvJ2Tla__m(rKN9nSMbelKB|!Gs~`ApPaU{f05ov6 z4VR!%Zy-;9#LXAKzn7wtkkCd1@m3mPT&NnhW2 zvuzf_Ip#XdCz{45SfV-s6d@qBrJEi0;RH~1budK8jYfIS=xwyGsRo4XDL-NuuKm>F z^o_8?9I4rhY5?MUHHgugz1}}!f0%7cf&ZGdPVl!QAA&6ycL|As8Rf;V;jnpf|vqDY`@)$T^ z&o&;U^RJmW&VOFpIN?AB%uxVdt^m{CESlBV9-6@T#>fpMl6m1ef`NWlN@90pt%pr_XY^W0bnKIHznU=hT z3{=%Xoio$+yrkuMDU~5V-GnIeuNLyd_nPR5nH8<7<(lWgdxJ=6KpYk+b;QLqD?$Bq z%-OP)v@u2#IvUQ-P!FdUzXBMTs9O7xr!Fo=6eUAsfJws=H~;{Z0nd$q!; zC77o|e6v-HK-|7$V9{`tXD+O!P0z-t{QQm5&rhdxwPnB~0MpI}H4ug4eM3aDWdtuPhH89e|=c?>KE)l3zN_MBv@@a*sLRG0S2nkw28 zOcf%a!MxSrn$JIbUr^r|DI#(oS!yu{pPfZjG)dw{+5?PGUjOKji+lYLP9soJAg$Rc9{ps;4--u!&FuZ$j5xcc*k=Mfq(nICwUImCSbaO%kO@3>FH7QJrS~Req;DtX9kY|GOLEmW4QFG&TsJb zS7i#Mn{Qya-Vtqo?jrU26fG4DbLK=p7m}QiHoa9<$v~%_c&fOZH&}k&BDOTZy%jQh z_qO~GVKwjCHZb`s%6e3u$s5{QjmkTsa-35<-f?8;1Y}q&sC==c@{66wS;!3E;d3O* z@kvxF{s@6{)<+=lPC?*QvSN`zc*TkIEDv5clrzOe>BQo@`n9m4Ok|qsfZAyJr@v+T zR8yZdv7sm$Z!G^J&zR$C3Im?h)_s%PqQxTjXbp|s4o;DKt8%6m87Vb$KE!=1&0V-;lnDtlpT5jz7R!9*x-4@~ zDPrP_toEWGN2`IcvHH!xEJ;zAF!Q0!Z_y(lIj&X(@R~>mU6r^~$*hq-hW(PNBpu^} zLfCamppvZ}gV3NRTc2$QC-$Uc5ZI2?x;3MyPTRrG!vZSHJcZ$@njk7gERqE07F+zZ zjr`C9HDx2%uOIqSkd&-m%&@ZIirYwVWNFbA9fZxG6TGEdM`I&rDK>S+&OA=~Sm)s7fp2IG5jHA1v78{%Z6|EU_}$H%$MtU)3J+aO0Bz_TE^Dj>?| zAPzji-0n%M<7&rT{+aQ?i{;#7EJyg1k2BFxruijrV@@Um)8*?X1IWo#B=({;nFiWs z8n9Yms-6P9+W82D#)U^%Wv4djhfRtaARNL?6IPCo5R@X=(!zbxoT{k=&OID^jOAUC zSCumPmgJ!PwuhHg0Gj>F#Z)fa{Tt;F^hfHa3{{9++cF5MFP_nVfc!@r zS;Kyey0IW?RICdsBzn8>^FM|K`-5q{dpp}m^cI(fjAGh z_sJe{^X}|53V>Flqi+o0YZ0+6;ZYU8+rW`l2m2cV6`vKGJfKn_Vq=EuvU3$T^~&Bn z`LELJ)RR6_m6u&2Bd`e>X@6$5TU8TUXMbg~##>CHZ6Nl1#^yuN+W)3s(dfz@`a^_ZqmsJJ&iQ zD<6$!-{N1K*?y_153hvPkImAHx+=7jZM?y<(FHzfZ-Opi$rVURv!K{*K}f1|DcMfn zCHi&$Kla`~+_JN(^V~nqx#!$_?!C1uR6?b05%xLOkQ-7Zw}*66!({aC5}_i{R5wwB z(9guDaVDmMlR|LvM?wlIwE6+tsG*I55HOI4Nl&RfcGPI6n{*o-e2gvHna8x2E!t^2 zIuZO4#whdoe%HJAIrrABN+l_j>1R@K_j~q!f3A0}^{%zv^{)405j@mFCPqEpGt^0` zz&{h#0(oith$4j*_%}na59+#F+ ztG2I^X9O~PCKIfinPjE5+$?cP)Pz2-Zg2w59U&@tQ8K$kY*q#AKq?%$fR5uA>pjjA z4oIpgp-2QIRY`#_Ts6s>LIG1AZll9>7Ffz8s{nYNLB257M2)F*Hy>futb$&BW za5!FO9s`I4(m8{F!E9>Dkzxp@C@kzr!j(_bFC=B z8!xY5T|`r8=gR^k+30&2G zS!|-Zo_hdwtV%KxN<9I5>biJ?juIhKfxMtB_&vWOj2wxj;mE;NXa@GyJ;j^lS@aJa z2^Zxu`j>6!U+P@+io;%-?I-aUwF%br7K=YGk_lG6G%x@rdd8ZPEcH1!;MpN0;+N-yV`r}(~vyE|rvNnv- zrDZl5y)yHEPk!A$soQjx{Vzx4Xgm6;u|vI^z<|5ZQFcc;h1Uz|5`p7I1V#nj`n+aP ztXUGT6barxrIg`XytO4u(W+aGteDZre1yR#m~FPW zgM()0t5*2g7k7oU@Ft>$)GMy21hTrK^6P%e*cZ$KrAGq&Sehfu<0EzmbPZ`^v*Y1~&z!r_>@8sfsH|6E`RrC^?+xIF6%Tz>;iS)5-}Y@j`|rp>ib~{m*#` z3MoQ2XduWrLN~pP2;I25-|Aix$bXFu1QaxYSEpE>Owk3+~|9>Ix8ISwb%31C3FD z6X*C}a~6^jP76&etMgs9B@S@>=YnG{srsmmnPb+~_wi6&jqY-pfZpwn>)lB0MGR9% zQ{%c+L~oHBc4KOL16uv!f0q&3Nm86770Uny zvb!3>91;rg@CPBG2zQVk7l9384|m0cw9K^7QdGFc4FOt$7_lxQAya-Bj3rd@LEo;5 zbX{;xCJc}YF{~);xhzwPS|5j&A}l=TH*`pWn_0z|2V?Iu@QVoU+`F8MD0P@&u6qAh zvrJq5WE`S*RisNAIP69zru||r{od1~jAmC<;qD?v(%E)IjBlo-WIX9GaZH50GP*$D zSxDzc-`j%#3q}?H#9exY&KsQR+8o^igX1^irdZigq-p%;Vo!Q~cj3l7#4!Un~Y9*iz6AMrk*c}ppf;2qG9zAv)&pX#5a47_?7Vk|u4{5<4-CBSF&blp|BFYY= z0VfHF)YIv)1N`Bu#t^Z7Q4Tt1%59pM?QFzLH*Ul&Msea&g-o2O&Zq^Z5_J#lh3i`v z)cR7HMnF5hOH^VjBOqIXD=A7&780J#(Kkb0L;ydfVj0!M9eH$0W zdVHNl3sdFH-Aoz@JXhuQDMkW1>P0CglWHa5>#zC405aN_*sCE*vV~WRrZi9^fXX&kbF{=+&WRcW8kQnUA|eaMYO&@rxl2 zXS=iL?qHwjI&n&e$e+4{hfdoeCfXfZ5|>!gippUwt*FDXtYsK)Y|GIZJ5M!0(0yXY zg0YxouveJF$6(QHn6q_(Z**pJQ;}(4%JY zGHb>0ZHWOdGunCh_JWLAeNEHo!VI*rL5>7^XxQAeBHfp>pv1ZxmH{mL8MPMs5H4U+ z4tSg$ob*>32#TU=jl3 zGXDE#mtPRMe^hcdwX>J_qKjfZ{;B6f$+Wb9a5^q4*op-rL!$ZszAh5Zv12aGDA8?N zN;I8Z_$h#JAR9rX@2v7k`&H_8o8FvLD1gP`&H>0Uyyd`y$Nr~x68h%O0pvgZSNE2O z!#pc{{eGcSngM>SGH;J#g`|$zN?8i1STZHcvT{lu!{(tmlMSZ>pGG;B*;W#hO_#@X zg3P6l!Q@qLRf{nq7ME${)o0i)lpsnT$%eI$t^%mt6BH)UK|5&ttS8euqxNHwsy?`& z0$xCrTY@WCrV8SEC|=SL_zT@Od^dG8T@ZnsOs+ZQTCF*1>Rao(@hoz3IBTBz62}*X zX)s%jPjMa)Gn(@COT%WBfua(Y)$jRZ0Ed2Xq8lS?^Vqvrt|xa)@un_pgjJ*MPYz(0 z)vt@E4>Xj36ZWaz-#wh_7EVBT%V{U(O7-|M>vFSSBk{4pUiH&3%Z)grgVwW16EZ{# z*yDk1tHn(T0W~!@ZLVX>4s67`;~n1N%W1r0!8`TV<9HrkH4J7{VWP<5V6(tVing@)xQBopkAsum3W9`~Fq1{PL|_$<7iMK8qu7_R%fa<;O!NHVrhnDj zm~m7|Nh1~t>t4u}{FJQYPt+80ZK=|Iq8m_tE|r&rh@=qOIPx(wQ>s1+nJ24@3|9<% z_67tEfIRAH+?ojypwCF3XLm`u4VZWsPM#mG-gPNZBqs>9U#Uw9F7H^g!AVdE3@Zf0 z^8nCaJw*IJLM4xLesGK03J+;aw{XK3aH&+EQI)#zu1B#~*y;hkp2pM}PYB^jQ_*nxrQ16mXC3-MUA0 z1|FoTAfMQ%siZjY{lc*1t%hwzeci_6p?9r-F;`>?rSpp^oi+J5XKd5fK2ds@woG`K z5Nh+Q?^>}_p#bpfX~?L~?xG+D9DR|bTm(hxwndx@M2S$-F4L_GspGK(HXzZ=$H+e$ zy)!VL0Se6=jmOLkx|w+)RsBxtvH<#fk;ZLnI?iVe)%TtX)lq{b2Wb9rs$Y=(!xpkL zZJh?EQorj!AH>nwSwBq~fp3aELgo+u^CBuph};6~bQScw3KmY+u%{CONYfdYVKJQ? z07|doOdzjb)4dAc-y(M5v2FfZ&L%a2s>xW465xQKSm=s%{Zl9=-EYW)z&p3FS1XGg zJmFh-K-qVj@?rExnz^^LRk46^!`L#q{P6NH%jf0_#AQi_vNWa! z7U{Vqm)vWedVzf#%F)294=HrahBc5Nou;H^!%V6G|hVWi|iOymcs@wJ7b0P6b50r!SC3A9Qz^ zI%$p#0+@|$hpR;}8(w{F_v$hu6R%$0y;^NwUEICe-M&ieJG~9|<~3{duVk+95E6{} zPPiFl6_)l07=`F!!vTsUW0$*(R6Jl^2J;A5-{oB|O3VD|y;x^rVnUKC?2`$DsXnHh zR5nf&M6CjD^ixKF^qzQcv+sAb@9Ez3{pdk$a0R+Yh`lR244>8n>{SM&PB^|M90yUs zrLAzB&)|4%->ep$&y3^Ter0Mg3L)E*-(1#> zV_Ns7QLMIPed z<=cUY+7>AUH6g)#fNi(eNDN#EOhv=i5L&}i2)?)#-@v}kQC0;0D7GE4blrcw;RZCg+y=kZ0SgA~^3f}E^FUX`K z1+=I6L;m+|-*pOa40lK@BesUv_Wf7i zy-9=Z&1$e1lSJ1Fe)iq(CO~GWvX2za|BWu&Yjs&BctM%wnX-BFngOYSQ$teW^U{Op zJHq^Nu@=fnJr0}=9gJzk7vP5GbJ=&W=LHYBidL~gOXIatw!?}WXu);ta?GOKDqEKp@w^$d190%Nbm)Ii|2}hGUL?wagb2|HHBhHSYW_2nf+# zdVn5Rtzapa4mn<`*<3HzO=C|dF-Uc}-G#_qknvnr$hna$4 zvNz!5cYVElWWsf4Q4QwPZ6dkJXt~G=6kXiQnTT7l!1uNBII5RqyT(aUc53-b(!x$Q zCRj%x5bqM{)$VvT2Hj;z)IKD4lxfXK_H7FSi&yz3BNd3>uZM~El@GuMmgKFEoUAA_ zb`F_hAZJ}b^?$Tjk~jY;H?kU=8esuA9^hW0)wIo&_(Hinx z$7I8UYI)D|s0H|Yx<6CobIJWcQ_=ala^q?74vb0?#B4w7F`IU}^;*jM$O7Bs@0ef` zuLpSC%AG|kR`Cueb1ZU-{Hd!KrN%pwtZeRp0M}-Sz;c{0)Y1vzj`U_Mp}(gMT`YCs zZVTd|tqJ307jb5?u*o3L4)7{%Gk`uacWMk&!qO_F=a&e@OpOe6a=sO!X%j0O3+Y^? zMIPs;0xy5$_J-_6&)jGv)h=GiLK*U>6xI^QjbF~oy!Fn-_r(%buqqH3Qy*k^c$xT; zS%D;xS07N+vMeOr-YYZxxBmU>AD#4mBz|NkzwVzvM-1o$8n`%Gc0d62f5ey@%C9!p zVJapj3CeXzG{Sf4oA$E#%B8YEs=61ICFzrlj`6cDh`VJnSOGgdG@d|>AL^CEcH0bb zO2Td4d^Pg(yDz0JWfJhTCrF(jgEa*)MwpfM5b!)Q%N6UNz8X!Cq^du8X~^)H{3$%0 zS?N~Pi}@LUAN^RU9(oBIa_sgB73Z!}2+z6?zZY*|1f=97cYq!6CYNK4>Wi+3OKNpx zEup)D1J$r~BS#`Stv+!3!m*X==%v_Cap=L6X$LBsGOOCx6yOac1o7#bN~#}rO07qF zxf{;!?vf>ScQ-t(9OM1#9v;ZB#w^ZE>f**pT|5DRW@Z!6vk*~qQm(-G%deNPsTN~E zd<@O0*NqWD(PI>X0ix{H^?bx$UE+3ms+dbF74}{j4;~8belF|Qrg;xU2u-U7p!I@~ z2&ZheC0P&)3nrt#$cgjoivt2BTFj>TDQ;)RZP2Cq(HB!V;iV8&@9vm=Cj>Pnful^6 z(Ncng0Y^BtA8N4M_3Q&5vZc! zhf`o*1~vH3>4-rB+331LL_JmWL{;}Ks5`>Iwh2+PXhX~PcB^mMDg#{UYs8~W zv;hVhx-Adu$vTV|iYozo^(Pli`qk$zvM{b=vemm_8fx3@6NmknW;P<5%v1p`Zy%VY zC61t79(!-aEN>w92$I+;1Y&;pvpmT`s1hR!J$m;A#e9tYw$kq3Gjk684V!^1G5zML z0wt#U`4>xdDwX_&7i)uIU-q;ZB+p|d2&xX?;r$eRTT$0uH3IZz8uEyfH{ZzX#Z7M; zFP5rRRk`l!Z!TiU4w28M$}6&msX@=*u;Fl^7E^x*X$>2(;EucYc0m<#eADbV7S3LdF$(+tsz$;F=J~N9)x#2@j z4!Cgyw@{HsfrrOP+N0Q)y|;w-v@|#wqFb_o&q7uYSE|37*8JqO=EqN|d2janMeqX( zKN>bBoacXI`to7F6n=;q&j~vXsrxlbAoeK_e9i~DjV^YL-sDv2Q{D2AoSy1_P~BqS zsz-o)AOVn_i%+TQ`vD-F0tYO1@Bmk2OstH?r3kbyb2p)WY3@t^AU9Fe*rk6}$zj<6E*_VAm zg}Uiit`jNO6BKo^Px{3r) zH+dG*)1ygMujk)}{UgZh>5E7_8^T4pvu0oAIWdj9g_iG+M?V0|Hhcs#(b7C_Al`R1q8TYzE{uHv{8 zV+QMGm^JXKx}wCXgh8*e*5Jqtdz}Tq+3+q@SG;*C#srJ8<+L76(13S$btW1o~w*l^9>G#2R5?TL0AaC z5RA1MFC{C!h7ZZO?43RFVdP&bMLqrDX7$VxD4O2g<#VPH=90PC6V zae))&Nggwl1l21_;D<~j9-AaG)eOEiKOAhiEn?b_BCzF6MfSpiJLZ|FU~Agnl1sD< zL9@z$sDG9rNDQ3JLDjbjpnQiRaPAX^pqIDnB{+9Sde+KwNqHO8t&2taEcEv!CJoG)K_M+@EegShL7~A06q@*GAA$v%Kl1#RTmmP>=SlnY7PKE(7L@?SfX!^Y z!kZLCbjPPeC#Z=Gk+mqx;psXT+39slqDQB>TX040JIEbGI+Z>^a`PVasX;%>+4t+Q ze)o|)e)Pp^nkcEL1T+P1pG5diw4X&cuHgavPv%#YhmaJJJjuz~$tJHegr{A)Sy6R; z;Klz#`KaaxW$%%VwNU&~ieDEsJwozYx7gNpa;7#Ex0bu0jTt?_=y(M^AQ@mOZ+$c8 z!I%357huZla!!C34*-doA<+2!w0Kn6ToDk;fG6~<-hv+wp3>WgDR5Kt_Cb<2Zs_fk z)7}bYL@3{&TQ|~jA@N=C_~46Qk)2Qrc+%W+N((2bmKaY4?LDNA#~ic}A#_CtUo2)n z0_pCZJyqJDwU}K-HB8-FBhB_V^5&6ait#}lrQ{vt?%d(2eo7r;=ud9!5J+$^`tl@w zS>G_+^}}sXG&8rANck*7`4Kinwg?^aiPlaMRuY-DvoKU3ymF}4GAw+XUp8H~SjvLL zq;XgZOClIHz);8v#VfWH>Ul@PeWig>iA!b=s~)-}$@lfqMJy#bSvwjVPRVvVkW}FqfRdEbg_)ZlzE1{q@yf zTY&;J0u@Kj3S^IBGNMJq27Sd2Dy)OK?jqzl>F3hvEYE>2GxFRu z{K7_ehzA&VwH6IhugKm+BXD6MwgnHl!WSWLu&WCHgeX@mpH~*i;3L|cL z^JDJ`?<>kTcciowYHH^%E_~7nuin&|kPZdzh>~ndY(D;;df+bTu9?%$xgyJTnP z9uYXD-VB3r?Q5{AKX?zjN?1I2vvz&hMJfZmCsRZ;vlh*ibtMj1s+;Quu?SKxc&uY{ zIJE`baA#Y<8`mbdQ(D+L)588}VXbRHFKA&cTHwf7YR6+~7(Q$OJl0z;_=*kc@v(ID z++hdb-|SK< zx6@1y*)6It0|-SP>I;02sOVg$ZP;1cG&Xja?bV)u3X1F}5aJng^Ji3&ViNc>z!)<4nU7 z)lmnoxY(}tQfEiRx5cuNlWPr`xYihT3TLTaM6W5Ez1LSi%eHS2z8vmEsV01JMfBVT zwuy4t*7(mzLVr@E7YIhq+5QeQf=9 z;>Y)DFHXP(ydV-qXm&C<+^oHIf~bN$y!kB!I7vG*bNa3`yZSy*I27$Uve)M@DCh`8 zMLC~+8J&OU0uz^2FqA>F=3ppfpC?JRHIULAVF>(r&I39Jmvyn6tcf$LFW{bglY*k~ zg&_;RtT*7GEb>MM%6E+jVa5F=exCt{rr2}P}n zUCwOn75dSQ>Jkc08DHZyvS#I;s;Y(7Xx@M*nfhYV1qLj%qz+ zHKsEhyoPkD``J{{guWe+6iV{1=^Tm1z)`+sOaQJk+ zy*1gL_0iH&^KFR|Z%u8Yf?S+vS;}jDXN_Q9;$lX2%Fv268&C~1CaX4iYU~an6N1N- z?8LxchVtZ$j$Vh~zbA@} zk{$$Fv1nuuVe7guldQI~iAAG&0A5{KjKVCEoA<<}auvtbskzOD(diJEukyT=c_{xakawL?l#Bui= zRPe^Ev@X7*sA^Xhu%%sD`XdOjKl`;1zd|3%KqHxnq9|%juicbgA}N5+_Cvj3h;Tqf zwql#M9tB&*=-|apQ=oF%52MrCL(|4D+#9D8MhECUlZSz23?Cc2Z~+f_gEr;{a;V`i zF!8y4*`@7%jw~vD*3$h<4>|VGynbHU%^O&%dD}0LX^MNXuF|gNG#a=}lW*-J5QL1| zeBjQL#c9%dTO7dSGwlaTEN*{s#yo*C^2O7Kv-CF=VbGvhC8Q74>kQ;fbSLu&@Zsm+ z8_iKiko(ZCV)@pdgne<(JsI2~S0u_s;lN=FWg37t*nMk@nSW*_;R?S zQpFx&Y8l)b$?8(eZ=4u}ZwKl!5Ew^WAwF#O71s*jlve3QgXuQ_wdLs&o0*S zLF6*#sh08OB=Y(%;F;V(j3xB(EP$r*Mhfs<7b(DZ zEkps%vXmaDK4k=wRDC7@f}a9l9stY(fO!CLJ^)As5Rt&86mi?Ki%D@(=F++cDCqJ2 zDR96RNYEH%CR#IK-W?3!kXj4iV8n5dGDeKtf&B7W{}e<-;Mq3|Rxp4!N%a)S0Wa!` zQh&}GrfJbszGoB||*ozN&?CrlFT5RiPbPRpGJ z`MrW+jQki-s@Y$7FHgp2uJuMZCOr*miV@3ks-q#DU-S?&Z|jrR_sl(c(w!~a)34vr;Ux(0}H$Cd(!+`VO=@Vjk0mlPITkU6A(2b zZ6K#=103;!#~ZYC01Oeb63l^cg%ooD(Fi^wmqEv4cx4_l2p%)gpe2V|FdQg|T_G8% zHvtQPF$_WY;Ch{My-qHKEm(*XOV9<-vSOKszF|pD zd6}qV$OC30))UYrQ-U~Vt)MMlB>GV*=!gAb+EM_To|XrICD8`JB5!5Qum436(Idg_ z=E3|ski{o#4C&X&Ouqm%$jPfY=0j3}+-wN+_NDU3OpZCGgTMndVXq1X1RFE!Pg613 z&SX#)BIn$Va(>3Rl#&D_a% z**}E&69=!6*O5QAMF+jN!^{{RQ`=i-3kxqFco$^FFiU96Aw&6#DT1Hs^N<#Mx*41+hBK$ z9uC8ga@9X7WX9AjcvpgtQ-+UIKv^Wz!UxO}d@_!cCfwDJMg7o{psZd9BoRk6Bd{5{ z9`m*E1&E9*5?WS4DzoZgT@m~&&~7N|(&lc+CY2#cr7}1m+ANmzMC6>%j1>J7js=Me z!AKdRkaa!QG-Mru@yZA$HJegw5nYO3aTctDR;J+8j}Dyr(Seg637m52=)kETfOFfk z1n0Ke&ho=qa1J+ub6H3yn#(xXtFV{>S_sv){lu0f7>L>8*C*1Bb|RkWjddeI z?<_?;7wTZRm53)3WQ&y|*bXc8qXQ#9+%)20;sRNuYE1_3&O*Ec3X)EGA)WL>I_ZUU z0*5m5fuoACfRB=%w0=RfTFa#)WD-_dvV!d25843 zgNzTjAjmW)`e6Rc*P+TkhZ&Rzb!H)5=KSdl>ST@)+0yy!48lO-izYEBO_KTD->M4Z~v}2O-F&ECT_}Xe0R-4Cjoc6qjLRWP*L95c3sni2#=|Qv}$?6~wk8T@7 z7B&9SzOOwg0FG>$gb{fuv&|CG*)+AjAbNUnv2(vII9h5HXl`yI?1+sFspn}UgICF- z3A+|H!&kICF#3=!dcl3A47b+IsKAI2;t2#nQfXpnsye); zR6pyfpa}9SN`ZBMNt5OY2;JfdDxO{3d@4ZG8CLL6r3^?NTsp+o#Eke&q85!3I(7RdK<%+*NBG?{|VR{G;pmX zZ7S7ja8iFmVtf_@mifM2SGOK8Izlr25898mwAnTZs1bpM=?8IoA+MXFh znQ3>6ht?@@Qcy8szEM#{O@#?319!A;lG;R>Q$kcK#OoY86++iA$R*NHo@V2?Gf7(+(iCysTCEg%K_DcFI67^A-?VUZ&Kk%$p{j zKl45l5a83nDhvc{>ajM03L-cI0dCSU?-mF!6A8C-P06?=_e;PwZ3J0>zKJYIB}@pE zUS-Ur3$O9 z#@h?BU{gV`K#@O{ED-87d^Dnv?M)UMb8v=DWDyGtq@}M37^Jr15y*Vcz#|6Ffkz~= zm~x9VVFbVvFw7hzg-@A-SVdwSEk+=7C$fMy2qc?$!;~zZ1#h6zXW$K3l)v1(0b@fA z8+f+7!6yApyg@Ybta$^h=NWhd($ANhHzdLC+42Tkt91Q~&aT8A1@+wMPe;YDTUXgp zYStdzj-Hqao z2G~s-H;aJNQEk^7cI`e9FOQ*7vKmQRIZAK5MU>#j77sw!1i+j0&g@Qm96|lpMT#n} zRmxzC!e-ah3$(^9*h*AU5^yt-XE!J9fwX;#HNsoJiARH0On00VTeY?rcfXY z&h|<|bnngEVbZKgCe1s@D+z~pAat7dtw<&f)22!zfcJykS)d}tkt%?c%mSo<9w?y{ zkm9M-AvFMCWI*Rd+7F_q%xr*2lN%r+MK1&*QuJ(%6oWjZ7arp`J0-d6YEq2wO&Xw1 z5L2~C!1&JJ4SPcQ#?KRNKJ2pP!5J|Mvmca|>%}_OUiiWN2n9x`C8ch2+>D7LVjE- zAZSNO25Cl#6_365y2R2UJK)TYkcIgq+EXUMS3-WkTnjr;rQVKWlnRPL+865?$e)9a z8bYnZiP_e&`v7jrITH|j5CC$Fk2`&7$kTtD&j#B*Mt8Uy;*bL)!!zV3rm1Cy^=l7P zR^ip5G&9Ms9=;lS?#AV@eM|mDUSUJqOCHvuougmt6}n~$uY@+3j#im|!CV%AMP5ht z$?1p3F~b9*7<;bb42+y1C8;~c#-xm$5?{Io(;&}lQ0PeQh{c+^R)xYW8x(B4lhie? zf7ejh_EOgj-NVi9w^}ZcB(L6pDig1o} zN7+GpDVS_r4)eg^J$d2Xg65)V=dNyA#bl`4+i;1IqddDWxWp*mcPJ}TCFcGeB8(Ck zW7rb@WX&EO!F_N+5QIsduh6{cYhm$B02T< zmvt?mIU<$zCTm|+I0hWif7Y-)2xWe~9 z53viKm*aPf9{oTMOvmaAz%Ar*FZ{z%t}GdLvl|>0_Q=Fum~eS&97XDAV0P*+S?O$= zT>2iJ;@wW8?IvOfcRI5ORutw{(2Z|uAN_{6VwgfY3+(8jBxN%;OSGSqr3a?89P_PXRrYUen2pAEt$K6%giYt zP(fcj)=AHFFM1Gn_WPdB(=cczguCN{Sb}xyU??A`NsNdP5b{UF!$2Vf%!;T~H!bpt z!mkkzCP}<76YdOi!iXTi6JqB;F6M;pbYETgip9x-7_ZNo(RQG$gH-_2j!mHpdNO%x zGB>j+BOeq;{bp0_vAva5ut(R1E$RtP9FzxWicRsr;~eDUWO2);x+*5~>6RV2a}sA> zcu2m)rh2DiQ~kuI0{XPBxsc;onwoYFbR|5C)obK>O0Op<4X+dM4C|iW!ryT!fv3OD z8*7>`)==>;d<0n`f`1YJyX9Yg<8~eC*-_W?Kw$h5#m#A4=#F=wk*QJR*pwXy6e#R&z=l-FtvP*Y4wUPATR3yc)se*zOl0>FIy|;1jgXNinIPg(>+rUalidn;1B((Qp zBd7Ye3v!~59U!#sAFtpl6NPU>771yA&e30>FO z-VxhmW9blh{^{#O>S4PK>8#E065+irV z&<>jG-YV`b8Gt^r0wZ9_6^zEsw0+oK;!a}m=7ESP;{NzL$=!NR?$(+Tvs7J0gr%Zv z53^?3=qGa&1cZ5szbvxpTuDGNTP{n?K%VopbdtqlP_O#XHplJ34SM7I4{t*=X}-uI zqP^ppYhm$jo(=79nKR-c{!-rj()Zw)-<{qCzuG!`)sJnnJ%%aKCeUc#MhrIoPK2E8 zSy0Y3GW3L`_x1Dn6!g=3NLr(rcL@;lO1m=Fo(XE0(tw@dGE6YKsHP41B>1jH68(y`Q%8@;!)jWDknhUNPQEufNeEyq zOPUKf76YdgV`hD{dL@#cT^}JV-lX-BHe0sS$@l2CS`M}Ggi5+9sswCv1|Fd{rog-F zpLW2*pM{zPJPXmYz(WTYA@W^r`bcGl+?`Q&JOn`VGmx9#0&>HxAvb)UkOMK!47pP! ziy6pmC0TejI>_x6Jopo8V5!SH+$o(Tn9P90CB`z2Oq}zsrZj(RE6qb z%ES;UOdcIoBNa41YU>r=8%07R8yD1zCY8##Uj6LqyODG`-U}DY=I54hFBSI2WYR-1FiZ{y=`D|S z9;}gc`jzB9;d9ph$;TGN$H!6|r%Z=9F5y zqCBw#wWDY1022_DjZg+l%do~@dC_`C))f$=kl1KB@P0N7G7I!-L1`LXG{ zTi(r1U3j^^VPO?iF=p1oc8^$vPq1r3Eow&Mj+_=7R4<1_kwDfg%XkM`I)W#C8%q3W z`zwDq!lSkQ1@rx5uLdzhtjU_J`uH|?SJM?=*XcGQjXJ*YJwHdIQNwV1p1SebYrn4|LflYhJf2sTj$5!Fw77ohxovcf|$B4p0TiHy4p^3vAL8GL6d6jGQ6 z!kP@i$Ea2373skz=>b1DI0Sh96YsS#G*NtLUo}Qf$B8cZ4Yf(C0FG27L3XZz5MIgS zOJX7Gk^zA#{(qFklioWBY6;36c-7@SWY4wOiVCpG1Ecruc%X*J(y#0Uo6uPnKs=~^ zZ9y&X%XV7O+>6hWZzZ8G5!|1|n%YyJIA@}9@Ry-gk1R~kt$WpFrUBw1GhANKLDqog zj>5mZ2HcO_!=)pCzdER1-w0FRocl>?Rb?9CZJTnV=x?g~;hEe70@_fwcuaX9f5U`Z z9rai^B5qSJ9y@R=M^T&a`Oqez_LMlztUbby&)x~dL%RL#y!qh|&)i(4iMp&F-JRBM zc(RZ9f?Jis2YyaQw_)=r>;AmfYV<*f4U%m3-vEcLE(iY@X1aefH!W6 zxO=5G612N=bec}4Udg)4l7IPFTtU6kIBEpNXYAGOr|A{9enzj_4n0)5L-&^g)0eSB z55XDF0HzK=eL*sAOCcz%ORaIiWi%U zBgu5#k)lDDy!~L~G4s3|P3}Hh4?OAM&=YKWu)3UN(m4^o84F9UEfUTd25~*D#Of9i z879`Qvp~efm{jTq$>al5Ji^*xs(X}ZH;D?LcQYo9Cp@X9CZOC=Q=RZVdcw#*7$YYZ z)m9@v$HNAfJ?x|Hu#cbXVSn%}hyA|3C;VvtZ)4bSUJv_8;O*Idii51@bhh8e$)<$0 zXPoT^)RSIw0&cqno}c5{hP8Xxceca6=Ufl_0gG*?NAeI0MC8pq9APY~zbBF6C@d+h z-KPIj=$&=+SYEAlEEw(}CME8$#gahow{wa^{6PZ^{_va@swsbPi}dTMmQaq)g6?@X z<5e2|a01cCp}+APIwppafd~Y2Z7vL@N@b-tA+%g zl*&6`j?fe3EJBZLIU$(R<;By;#;UG(Livy!(eMZlbRlt!^XBBTDtQ578&Ui|o{t@i zi|#m-5AVh+lz5a_csulT$?^G!YgKdfoks|b!E~Lx-C=K!1tpZ_iLu?{1WC%!1gX$a95?{Pciq-<(lyTgfqtDW{g8#BGo7r(v*-=Yt2du10?!^r+Bcq^ER1LB#2LD9wr%0NYeY}u zZ=}O7R9~D&T?YdmwFW%}&6}ey*QKu9=$;4?p0HU+%wiAs-e>%0FXMXnKlt%eYuWd^SHL&p+^?KZivTQ;_+q>dr7ugaT^8*ZXaqK z+Lal`)mC>PDdsOeRr^zth9nu!q2n-!BL&cEmvMQD7*R1Xkzm8*yVbGuXd85Bc zk+B9TGP{oDkZR*Ux)6I&o2{dwX?W%ZKWU&b#Iw}dxM>v(g(&C^3wF+IY`=LIdppjDf`-bnG%Xo_F}yG zmhHi_+?FIlSJRIeW!niS*(XNXVA?)zn2y03o%SzTUES$Hbect3ofeOV#mv>CFv-*J z!;=O4>&6%9+hKMw$hXLT1rL_*`XY^QfjGCoX3*?7%t&{{33&F9-K=)_F^_ChiHtOc zknwyRzr1)fuSW_UT`#quf1z&%+fM&|M-4FzVLRN{SmVk{|Hr}#1T%P#fVHH7 z@5FT9@~$TkN&G=Gx~*Pet~C8ig>U zxlDQn(QYp(c3x4e(kiJ+Tii|!B|A8Uo>Gy5ajfwWKFCy?TxjSd(~K(NFORb<0VCkQ zi|M7rKnQ7A52xpY>3KiT=4Z8~a)`+vNEm8P zX4a*IBQFq$7}Mzlvg#a&7Iakek6XeOr8p_$y1^l*X&;w)FpS-EG*xKNZ)_S_(eG^t zl->0W1IBQW0(`b|$j{f-0+{yYSa2n=9n|ijMy!oC?aT3gU-n1@f)yn^B6x|1ebx!~ z4G{&6-U`F&6uo(SJqw$Sa$7)zTJN9MdVgE%14>xzV*c5}*;2^K5X2+L6rFVa zR-hA0YeFZdj80A&ot!c{d1Dmwo$5Z$z9T@DK5Rq}eDbG9jZam=Cl~mr302jaQj;Q%I~hZNpShu{UY{#ZUy*Ok11<&ekKa3mgw;9lngO)xhc!}ev@O?Cpr z#8ns~bYF9=EX<@{loL9yb|l6zH+Gb__H?Jib?bKz~T~ zU=oaq)X*HMUSN(``G(vlz+zy(Dn+ORP`)hs!~!k3bth+eVg?|M zM~%(A6Hed|crwRWuu%OHZfi0TwQI$`>>9{3d$pDx6rWdrr+rq#ZBix>DtNOfYcbAS zX}y7gH~Du8OjgaVnW^jAuC8k9y56F?cAT~@7zoUJZ4-?J4Yq81md--GTNMdiLc~kh zHoVd5odUw~4)qR+H_TvPPC6UaFKmbrx`F}810YnOWQnDE+0y9wF*%dDBwbHfuy!(2 z*NlvfPjeldI9?{{E?UENr&b~nW z9$OytF+z-pBQYN?k+$qz)~ktKt6DNm+ajbwMNgXnKb22PP90Gl*K@xEhvd%mn6b&p zLJkvEar06h;m0QxjqmM|H0-B7bCeFF=~h139@WYd?yiSpo9a+DRhkZ?D!U5>meS-m z{KG|DMj1ZC)2_on+pcSzy786AaMEY$8In$UK)SfDRxfvWb1i)ASMyl(u`VbY6K|oh z(`mb?dUb7IQe8OavE=H2wsXR_^->RBbD?95xI*h0N_yj9N%bfWgDyiJ)lOys((|I_ zdz{|WfZwx+-F?j3k94UkgcZE=N2hAm2aLwq=no3K5o4suDPDsk8YuZ`!aW2xk`q9-(a=Y@)G%qQE^9|6RRG*n&zht;aUaU3N)Y4rII7aDY5dfB z)Qc9$u;^(RpNkDuzSp?saU-%CEnGDkrG7q2zC7h_?6Oe_@cG}v4$`qykpz$ zIBY2XP_aUL!+_4VL$V{c_*_qI)9X0XWJ4L@9*TF=na1Ix1wejUvD_>&UL?@qXHKW^ zCK}Y)VG10*>8;{>&gGZQ(c%9_eK>l8qMjAGpEDY{+2Y5CWF!|tLqZOOq`6|_KR}#v zreq_g4jSVx4U2s`)l({B_x<%(6$=r&?*!aXetL7#8E(TZOwZ$T4}&p24MVsC3T%b+ zx#mP6-?QT-JIwGQg4_11-%L_ee0quuI!H@kJ&aR(tB=X)VvCzS`rQ1%WKm=6ym0(b zjwOq%+sG1Dc$9*x>Y5+*EA@0yMyu#y(5fXbd zqWpaW#b_t(aY$3dNYUx`{6$tQC6eE!?<-<>Q9Ik9UUu7^iBcMJ-^(d&7Mc*wgqj$t^I z2K1fhxb<(O&Cmn^L05&`cKOY>-ej>JYF(JG7mvuX*PM$Fs6iZeood@!C$}o}Iyfyx zxf{8<5*VpG8#rxw@GsgAff3`uNE`sWfs7o0;r3T)38v?U{8IJu$$augG>n-0`RebF z@ykpu8$846JwTsC6b@HrmdzpwvJ;|D1Dm#|xbxK``8m5A!zBbqzRUPgk8~8-;Kod$5m58Xwtd&xT1#1V|LQHGj)W-`QbmpUO zkwxpaob+T7T6d8oS0)3ANaFT#ndQ0~fSzAZI3$WZGXGr+wy%dK zm8|@#J}>8M^+KpO?HaF=ADcdD(qeV*)04hecXhmdPZNI6>fU|CqJUK)6{I5?f(x3M z?}4JkSMDridf@*E4$Z?K_0BLe!_G$mIzwI{%>y4Lc8z!Dj5V?4z>BoyFamF4zQg-u zpyfrr8GY9g^CVO-G}1m1t__?hYWY0S3s9%6S9BxrQ2Ym7afl@c>8(QNn=G%;)DT-9 ztXQ)-1l5@?RICh=89;K&D`XV~gC2Jkz?A1ba!Dr}sKt9)Qb35i(tWyozmt3lZ-De^ zn{iyitKDy#@R`>pe}{U3ga3+b_FpP7F6)_Nyw}KNQb=N}EQCcE?_mJyDEz=JQ;W{H zaX}|D;R|K8v!&d0M-xK!=ov|DPj`arf?7=Jl){;&*KfXL!=qpldEQk(-8}EX-%X3! zz09h%2<3@=Qi2Xf9+?+JVlp}iv8L#d_{N-s{pyQLV*b)VCqgh+LDA??P#tUFQB{Ty z^W)q@a1%*XUxd|TdP@@B0S|H~Ij8@=l*Gh)o3vuuCOWxj-y1K;4Z0>PveztiDY@tJ z;)5ysp2)5(8ERhzOexP^<}@YOd{d`uUyJOkk^M66sV0w>I6yzwJcY|P_jZE<_eyMHIVaQ*dvO7^Kg_Gunt%!DQUY+760w zRueS22mkZd+g{r`mMlPQ=|Es;U@-aal0YESXAEYpxwCA2={-7stp4&vk*l&(2*V^g zz9*7qsUaAGVuI7p^mq}Mt6*A@@rw;0F z@Tf0mJ?gh<`Fdyzr&em`Mxk83>s{|~uT}5lD!xVU&Ru_S6=yZr=yrKZe;6I7y}11< z%|UF&D_f;L3)ZYGJcg4p+{p*Hlj}YMUdLsr$^)Zr-N{`9`Pe5*5&gYj3-LwZ+EN2l zawoT03hDqA!<}5=zPJ3?xsyAxxCn>hzSMWNxX+KX$fD zRAcweesdBu83;!WDxM+bRd*BB`y9B7Zi|VhUY}Xux!IlkoHVmt90hk#pzCq)jB!vq zrrGUN6eOQLIDNJ8RwF+r{h1EiMaQP7NOk)B}t+&O8+!^U0ojKdCgq-nQ~uwni4a~rxKn9o{s0h zOwM!=CP6L`lohk}FD7v`TrUN=z7ahH$>-DzJ{Crpt$D;O!jJ=m$q~T9znG4A@H}Ji z=Xls|jLPpZ!jMS*#TvGG(JXYOjA443LKk1fGeLK|nBrFc#b%8$>``5X$7v;xQ`{*f zJjbFg5$MYBIOV8l*r+qDF&i%qD?)?$k@7FQ(Qxl0&J9Hq@GGH-WJ-`2^BD>-xe zwhd>)pb+gX6{w24up_w+b}ORhrP-Q!8#ViFTQhH?X20!fZdm68v?q${w=5#xX32`h z0QAcMm_(}@#Wi$safcR)#~C^_n!wwf&_(Q{|JWlgcyWu!Qc4@!&InVYIK>UhNcX;7 z3W_YHeRfWzQz}{aZj?U^88t;|?I#|P)bJdwvs`zL3W2~vqBQHClpz)>nHe~~iJ1XJ zxF-uwyHQnNH31C zD@CHb>TUY@b^-;~C~h?#1@Hg9$^6%4+0obk<66%wyY`4G`3YfdHp1Bl<6S*>)k^h$ zEhJz^g^0gSFzg7}2fStS0Q44M1MC)fr=XWeMtlpEwE@x=3`Q@bJZudyRwL5{lZhD; z8}Md9jAGJ1qM}UGkraSY25L;CYOI}$QgaZW1AtVS43d%&GzbBVt%4>Wy&_B7CMI*4 z_-%B|gt1QblnV3XXBUZ|>)3}+Vgc>#iSO7esIi(=)#XD3a^8wE%qOB-3Y#E=Y^uQ9 z-V>-WdbPKSV$>SCjj{;Thnpe$O4d{T?y&q-sc;AK*Zg7hY?ZU!C9i&31`=QcR*|EJ zs^U%+Q~N>MGQ|Sg+Pc*@Y-e2msms1_2XE|J)*P+bA?kCb=waiZagAaQt`hJ|p|Yg2 zAim=d(KZX?5-et$^^D^uv9Z}Xng#vwx5uIYynt2Hm*%gyD>{Td?YQ99`J5ZIurvc5 z@+2EHIb?z6cd|gsK>)!(Tf!(3^4EwEVrD$29}fnk;2!tY1IKT}#$t00(+yU=1A^>H zwry^Sp30iGVXPw8=}4ome>12#R#3Ek)!nY{EpOW1D(r&ccnuE%6CZLjsbyK{aZRSJ z2>zo80-aGvk&6h@a7wchl7Yy^hTE+EGTZvqG>fwPS|0G3gFFbjag9T+Ds@Oorr)7% zW)S^JR53;1;E(i99#3E+_!%FsdJF3`qR|Z^N7Mv*2E2g;a0AV7k=CR$g10lvU`?^2 zNy@8lHDU)Knk;kIpnnecPS+U|WD(K4uE(^&?ePMxqYZN$tV z2x2@gw3xXNm?;%^BW6xmQa9mdu^Bg=XA^dcsRnKW?i=a|&uIn`xS7TwvsY{e7WdVC zBc#Ii3I)B21fu|)Ws4i|yBXYIN@JA!V1-Z$5JAoI?Y;%r`WecB82K^Q?b=)ML)@(!w9Rza25Q+h{^=qWY< zQq31jw$rstGFcKB^@qJ%3}Nqp!@*#fCH~8`M~+k^o^7(`LTADiv*w1iRqanNbS}tT zL^+w$WL=R!L9@`5gr_`Y2$@+hyZ}UIHI@!or$0hLns^hS9Mt@h4LrTngNnS}E_9*_ z)NWlWM@9`|lBZ!1)&-Q+jm6$5oVHA65OAj1)F(AdUsAK_rP|}=Y_oYCN66tv`k+SX z0@SFo0wK&A!9b&eYexuG*j4HVLk$3AntltsJ=q`(olPIHL9{vOGI*Me#RM&bO^efr zWI`muF48ION8eJX+#3W)&5fEI{SsR)x8}ECKo^QBCN`V5`UjsmVvBiR{n<-KvFQt@ zOT1z@)tBbCv2DP(%7|%NUd84vo(Igx&(s-WAu?S*$#i;VA=CAfOgBdIqj*n(llJ&{ z(qdD)-T(D4H@G*&RVza3XdY10sp2&&%&J=?KYbXD?#ij@t1>waJN%MN)S3hA-HSZ5 z+n=z?*Le$M3TyO%k6_9qC7g80||Nq=8{V9?4hj{q~xl{K(4n`?9QgnXruCWWHW8 zn1P;HEo8}hjmDTamoN?}4__GC3uEc9H-NtRFDX%uvEqo&UH=6_8 z?rrB{X6_1BJM&Qa6I@1e{jgp_fO;I7emfX%-Yh(p^;?pZ^IYdQkLk@de8M1qQ#@|; z2QCtq|1O+E9Ly!?r8f|uX6r`)*qV?TgPEB|F@k1O%@15aXzh6+ z@KKhfJ{Sx;y}Y=YN56SmjU)aC3i~%dhQ?vq*pFt}ck~?Si70ItYJXr69M;5ozfEWA zTLidLjDdcsC-hiBsU{2G2?L&oGLQ$UV3qT#Job;z*F%@L^H{?zmU6xri~WxA3ks15 zo3^Vn8a=E@YP<-dE;?1Sn9PZ90Xr-AGAOW=CFR@usMvbg`&3_NY8dCGny`5svw`$7 zhzun>c@R)&ST8_gHGB0SH=(Ybh+R~OX|{NtioYHyg<3EYfbp&g(m1uIco{W`BG{lp z_LEd~og+w>2Z1=Kcqo2d8xKI<{K7}!c>CiwJMZF;+Cv9_y1)C0$F?98=jKy1L1uN# zbOkgC7}nWGW?&&`I+!&p_=NKX37Qx> znxq4o(u3u&9Im{c3>V)Lnyv}Jomx}8jGCS|G>Hy#I%q1^n^2V9AO$O27Dz?pDI_Hb zEm>>ZdK8~S7LNb}^ybJuPH|CIb5Z*7&W_S9%UgdO9xUuttp z^0=4F#$H%~BzUv{iNaVHR*ToVLl#0f`D*2mHzN@>9_$Dq--e-yu9iHaiY!4* zB;x2-iy(pq*LjJRd!Rj8yvD{6Ub9gjS+q zw$;nuw8dDM*lV8USRhSC^KfSAJhkHil{GBSgb(l4{IM0wx>GVwViKrc`h`9g%Mxqu zMrZ^Wm`z7mxW=GJvk5S+F)-3>vT(Jtd95LFE%+oKa%3tgaqEZm1Kmz-kV3bkU8Oh* zAsvuZ9XcQ>jzZLiB+^0NpEo*y%Yb#}dGWz%Tg3Vl>Vtb58>_Z%?11>4n%hMR5j|Q&si8@H z64c&^Lxo=ZSmtyn^|i4Cvi9j>@7dK(hAK{Xqq*5hS<)FV1OX2Ei_Dd$nnx1s``Rs3h0rR$OMRp zPATcJ`aPeq&>|^)V26+m9cN8{R*xOhFR!he3Lw)Oky`r>zN&0@g34; z5-5wDh=|68D_Y(=3CW$|tkH&TCDfD(yKN=Qvm5GXYv(~NIp|mAB?apU>W3`7q)>!X$mQwPTXnpHAFW0T9<>%J_!e4H z7&wZsiFjYi``xiGwIpByJA^FurIy-#DJdaoU#jnYDSmeQQcLwBHjKq&!_YGe8^&V0 zFC{w>(h&Pn|0V59r3wR84Yv?)nK}s`%%ada&7f(1I*Y;aw%(UQ)I#F6AxV_AabGGL zo%GVaRIl5Y>c_qm=z^r`hDuH1bJ&;q%&5I`ixUrn*mXMIhCSIGJAgHAjYftZG1l#! zERp}f$Nt^%k39UryTAAvTojoCFa`q!F+%@dmc8e|&nOIZ{Z2lWkiTqk!agulr%$>3 z09$>NRkv7@fAmXcvcfWJ4MK(x?9h1y)6OuNO40Sz+oBeNP>VczM-J`q7tz-7PV1qe*qpuprKqC69uDAqLD9HlGZcz{J z+^Khj`?h^vU864`Q*;dwk!!YZ?Y_f45S>yD^|Bl}tPZAaI)d%xoPwzKQo zXTQSw24QyS_Vg)z`@6+A*@jwDz!_bLC+u4kV<O7jk3bP#jzH$08?DciFQ=V>UTkW zpiLHhi&!Vg$X18gI4!VMQvDzSv||_J1Gx{EYAy=ztk`-f8BjRk-IU$3N48@2qsaEw z43kM-iX<6zeGIus5hPlRC%aCdKZFztp6b^UGp2jOxX7i>+4xzPv1?v>g+o%b$S^vg zjUamU8P-=iaH#sj1;bZAUKu|w^OybAf98t}yzIfydHRuIQj&j-2I5-zT+@6eX|ncS zO`OK%{f;viTWpIVeQJ=NO^RVz6J%oA!k0(C;vJveLqkWY$gpoi2K72Jkjf<>(eu64 z<8AJZ)$uyz?lL^rt-e26_`Bcg`=f=?=&>GGeudC1$a-tpCpFkB^wx5zY1Lf9yDTe{ z&AXfeh4*tC;hAm(DUq=XkpczkLQ-)k4uyCN8i`4PkNBNSwaJ8zyastK+2-FasU=+d zsPJ$)mI#^2h7IZXP@*gMnMCQpbV_JoRVfu#(R6(zdoH3$PO&+Pgzim+2yJAgcgSC= z4Bub=3Tun?8e^>L6IWAN3x7HrBI34P7h89Z3<#qOk<{IpOWL_!O<%ZwYLM-1Lr!a$ zjwMBxMS5`t5)#YZQwP07%x0vRr_pa-H4?O^-PTUXWH8fh(fmyHbJNp`+$#KRMiQ{V zlZHb4uN#S9cqFs^W>CsCPSgx02zi1mHRrt%TsF%_U%ka;LZAF`Ha&n7vrmyf#k$gb znhJEA&@R31zOz`<$e!wtp}Nuk7;W&EcKs^ImXEyIG3J9B#z&Q&WYtez3mcE~1WTNPLB+*Q!4U`C}MbvIDDOY6x%| zRj8INW>dr{^sa>2(e7iriu2>-{B4&_U03CeBl5&oy3yTGpShS_g=2_l4^r(z{NVi~ z7h~?cym*jb0@?$5i<*6ZdY;e|4unwk$%{o>?Hy6Xu)jF&h>8PwFvbTj7O!E)t0~02 z%Z7y?NfWsz4xEX3K728bv?X^)`G%v1E+#X-FhFCsv73>sNw9i(L&+yeo<|F;B@4Pq ziJOTFj20YFBIKJT6Rej+j`Jl_wo>w5_Q^uKYJ|{ep5!j6?L4(PaX!xzyL2#)ZRuX~ zU?g9tT)VCxU%+$y@OY=%60)(cC(ucx6zHBnxa~mqIeye!K6X+PFCQP%Z*ca}^n655 z1_97MyQ{un7HE&`GSGm;$z9fk#xL+rPw|k-ypW0DsagM|eiJzG1lD!YICfwTg71XD&0kOL?Ch#|zX zXC?^nn1KK{e;oK8kmn@5`y4+M5%DBXLqNX;f%JSt&jf*`diw?lECmFbhq($$a9Hy8 zNmi`Kzj!Cuta4!VMh`_2V_%=yD;ddTI}Z{xH?p275B?FAJRuHet1vytG{{a zC}o=TxjhZgNee>JyismGq&ei^sU61DDjb`pR>9Uqeqc7;KdPzKUL;7i%7gW3uVgAx zugG3bTdQ&}!X1Qn%xQapDzDmEbw8QZ$u1VZ=+V8*gI=Fl5|(NFswX3!W|Ui6jY65`Ljycu6*sireJC z4Y3^y{1Ox&79WCXR6lVMaAx&I>d;EPT3?7mA&3r!`;s^pBW4Y}n6;V=>bJYE9FUin zF$xFw`J%bc)yf@13~~Jb33$GtgT}!Y8mnzqIsm@rm9ug@55nki#082lfj}tsUKK}b z`iJ*sS=1%JUnaoS<;{5Z!`_(>`w@p6=0@`=i6jcdhJ?m-&yrjnP2Bgk!MT|3Pc3y_ zzJICh^J6gA7~f-Lb+0vtL@H+1z`^CT#-)|)ELJ|RdsgS@%HzAVo^XlUE@6t6>EPvS zX60O6YbI_PMq4v!-4%=5#J=YM)|^_m)S~l!D4Gu8jQ>{6|INPVRFd~dEy^G3uD4)> zr?Q5`O zF4pkTA&(0s9WT}^zJ3y!OF6JP9#oNolsqrCt5%U{@Ni0DUvy2dM?Jwf@ZAb-5*dq$X^0WL-vq0a<-%2Ijb{dBuU$sdZo$sY;| zW5-HTRmLpI3rb@=u}kdcxD zl6p1gfrn><3Bm&}@6B%Q-Rjy-^;AMDf00+KPh8}HqD10!*9A>XX5OtcG`UuUWoFWs zi-MuqH#FyTjuF=i-It6=E&0dLWP6OQ-GCdE`w1}D7=sY?tOh$|r*`D~XMmD((U^pcY z=2}l<5_K4E^)9i3leW?j1+r&@G@zi0Fm6psZNH;D$&lQ9><2%+2f^L(sj#0gm^!|f zc$!SK2h-#5)LrC)5`Xa1cb&&R6&7dqsY;jC$tigOz~n|`cT8IB(|L7_ZupCjEFfp$ zB%nT^e`z#qPWsdncfw%0gQH5m!BC{-g`f08>rE~)0r(;zx!>@f*iW2VVa+QRHQD~O z!x=RhS_{2x=M*b(9i<55Bxf8-tzH2IyIvlu7t>m6P8TDFDCs5B$t24pug*fn^hz9= ztZ_{0T#9fu=5IO_6+KB^Xl=$l3_{`qqu<$bVtbxgIWI7~vlGjXqb4@KW7?P9n>D?il9%6vF;va7FIhsi)r#Xbd-m|lm_TR}bI8}^%;H2lkgXSpt0 zPy5fJhRz(}Kmg~Txl4iH)CmKhj8-NKG^686h|}7mV=)^jy1+v9&tAd_AoW3EA__^l zL)l^+)sS~Ecoso%?A}sOQH&KF(WN+`fc2A8EbOoKR0MmKLLwp=livYH=(wy{jx>Tk zB0VF<5HCk;a!STSNRg|sPn}u$@J^=XDDfDr3J7Fc-H}CNEkGo}fhB&4@0+rV$U?8> z8Q?fEI;#QPXh3bm$^{c|rRxz4jgN3Qq-)y`wmcZ*JKE3sq%L~6(gB?6Da9Cfj`=Czu_dBhE*P77 zuh~!#Z6OsTMZw)|!QH8#3>?@ZR+9aKKF-wj)L_OFQ{jiH;mhfXIVWr5j3*|zw90xt zmpm~gx^_;jlHs8w$@`8B$ohe}11U&cmM5mvT4Ctljwhy-Xl*f^r6;DaSF$*yrH4-K zLqH{%7n0Ujh9@R6HOO{)Pt5fF>^w2?P{MqC&O9+s?c2Aiw~Lbd<$tuPZ)f(zJd3{V z5YL7_bT6iNs`SfVd-x9}57zRuUVGna>O*m*5O!k=I-S?vhQ3X`dy|y<|FZY~QFdL` zo#*}W>eZ`y_2WsF?LsBszGngDj*P2U99v^N?z+{aV*(^1arbyS{zIANtmR0~EIAmK z*9zcjkU>dIP$za!f*}AXbNAVMpZ)9Xvyb!CMzi)bwP;y;pE%r?wO8-W+9T$H zFPmcy=iiEYgzTTj(DGV;wEN143v9Bdo;DtC&DVh6mqeJbcHWKcr4ciN@Al1@#ohlfq6XKl4&jPHeo3`cGLeaUEfyQoyt=Eqq0%2Q*%f^KX1?vi0mg*ovmr^f;!S z7ETaXD0=`H`bB#qG$vbL{|5w;WrxtJrzHa*?`qC^phcvtUPj9JY7r^p4J`*2yxg>s zQdGMlQf8Yb*^ItSLQCs}#l;5xR5wy)S>QZkAr|&r_ehzF{u0pKn4$CkPjOd~bHdxj zmYl3F?g&Iw#9ejC$%`TG{OetDXG>0Cnaf$+6_QvQ!N!fouPujpsYUTfDT==h3?0c* zc~D~gNby!XtLe=BsrPPT50*qlMOG;)qUC6sIMcq3c3cX_qv5zHnS^7;HYbDmf@0V6 zoSD;YrRZzdMe^7N70$+aIi|-b8KVuq1c6*TCMcwQB^Of#5eB-Vbcpt-IB&lrFEd?J z1E02dQxg=<$ESW^5%ejsK1f;d%tG-myRPb&%->w$P4pfi&ucU?W*i$ewB?P+Ui4jN~{I=yBLSd0>(>hQ?J^v z&4g1G+gBR4n+3L;&jZ`=^7`0*1Z)qS2ip}Zss?uN7Gi{K8sqXF)g!46{JS;1ua1W- zWD^LuCPI!)S+#6;4^~(ApgmCP6!;b|K{TO00`+h*ts!74c>jKo9Pq9HW5MFj58nlM z5A@>Ox%*p#?+bBvAHH|@;`^?CeD79ThdR!zw`X5>`AL%0;5*$eBZ3>F(S=cV3Ge^Jz9i<3aTX$_oS0+ROX14jjI zDQ1nVm!LjLFqO0yC~7gO(*(-z*^`Y?RDTm2BuJ8UpMBPzJzxQCUSdCs>a&{Nrt@KT zn=>mTAKAuLAcWcN0s6*$^ov~y*5awI&7Ov3>SnW#XH@ysexmHy4%`BVr3ejeGtSp= z7Wf*Xn7m)6uS_3k+Ln!}Hz}8f)>)3t+eqb2+2%V)wbYVBgb}~c@b{|3nmopoTNEhu z__j6XH}NHDLP;PN)n*?qOAU~`QW6MJ=rRd}2BfV3iNWa^H5P1P7LscP(FLuAseMx4 zjAv>jkT+!0l(GmS*oyRrau>>v4sRqPQ(YB52wK*xiXW`afO+x8`BueKs6nf_*Nw$8 z+a6-EqMc$UI}8 z)+b{#)yh8hEMfl^cXDk9-Ak-4{ntt+n-&58JxkaPw*F<}YY7m_60A>vLEFe|{9akn zGUs~B5)?sQlY8rxB_Q{(gso=@`(*)JbqRZ02}>fsAEvS{n@EsNb-4u*P%?%sGS`G5 zsba{=OA@tSO30DHQzNRz3bJHImOQcPPHM|0Oi!e4Kx=uD4Cn!wbedZA9fp-uZ)ISV z<;8R*6LqF%vh?O?5`P2#f{|nPb4`sCSTze;(o`tGq4{@N_@b7JOEX>ki^_(R zUj!N#tX$oU)MOvJ%13E`%|}6^K;v~XDwM-P-bXpFsOe}kk&|+kPwtc7vglW_@LQSM zf238{B?hx7KlXV{lPL4KU3@brmaoXIH9vU*ft=(NFJkR>enz(^Ow-Dk$3L^Rf<PTjQUKMZ&H(HrXxX=X2W7d<1W!mo$`1Ktt(SK)%tjF zCk!K_t=0j-cA4xu{dHCw(*OKw_}~NB4B|Tws)L9lF3fOsenhkQ4l1;kr49}udZ)Y%Yuo-aaPq(;1Tw>Yb4{BAd^2lInUqB37KkxTdv4HP-!cG#ywmSQQ~hY%>2^Cfb5TdP{&1lH!_4vQalp!t&g zWpccd`~$xRY3~*&Mq2yQwJ9DL%PjeMnmCI{YxmW_4J-ttWbtl3$6<;`0Oby@pa+(I zhLg*)aBb^h%Lbf_Ef1L$LR#z0z@8=-15hbdt3?mAaw|)f`aZu)B-H1b87MxVv%(1$ z%zs?~-&Ve%5yhvC7xhNrGU^--1g$|L1rB80x;W5YG7gmNP5{=ReMejG8FC}Q4H73` z8C7)s>qAN1r#n{0&qGWfU!K4bSzAi=e+VFFe+FXC#}LyXwtblZZH_B_?^yuShCS!P z@vI$fsUe%f#XSUNuV4|>{~1}+PUK6lSb#c>nPN#G;FmpQDVcj~a+=W|2u%NkuhZ0Z zCXyy8kl3Dzkx8Xhy}-|_{7fj&kaa5DJH@?uT(DgC6>VeGil@>xvWM@#NdyLfnF4^@ zSSG1=0bpef04uac2+#pILh_27pCcn=1gAD*;#tA6wvOhL*VHXt;HhTl@Gtn$1R4U;pn3pWj`4{%+fr$@)LP z=JWG3c6aDLt5`$#4~0)1;@92&^@HKoL2hYx4oSgJP<+jIFK@bL>{GI?bqZN zR}4A{TP?dCNEnA?T8dgYXSx-q+|rsBCZoh{wj?o>6(e)X*1J%nlC`9P=?KPHO1_$6 zU|EkD(pcpW30x?CU`>w?(1Bf{$5J^?@VU^vIexv(dwfn*feFvy|Ks{`b7pVr7tH9g zASnQ?SAPG$?#1ajX35R4kw6aVq%GyVOLZbdw z9xYnAmXX7%oyXMDQfLX8pgt{zmKJGA);y!1W^5cko3u5qTo&~Rzi|n_AFiyf*IJ1* zf9<+e6jld96$O@Dp{#605zn-mJWvI45xs5i)5Hv6&%bSFu8dHpDFcVD$=p48AXGEvZM7;t>y3wvxTOT znT{=q(gs8_klYS1%K)HEH_F+>?3q$u0IrAvdn-2xUP*8)$9!2j3LB8q78*ITvuVzl zJ(l?>RgIF?>HvF0{id0bO|Oj9t0{D>{~#1cLD#i51&c$87sbsj+{E0VIv>;v=;#tJ z%@3O9dIfblY-=(^gTaO@fbEl-_I-$(S8}=Le)FNEnBAWtD<9%8z-0&s7n%wYmM~kq z`_ze+rzh3U{VA*SAk~gtRbtOZ0@%wyN5U{L1lleFwB{u+psGfn(NUk%eYrJA1C%wx zL1!3vq*Vx~Jc|Dl!h*;@1ByLr%k{`3U`0) zI-p=NLj&ofsr5J>kVio+$Fi!&J+l6=p3)h$XkGw3r^++=*4iV;;zB7{%};9A2YRl}(=C~Y`OKl*r-et-VMtGmdOm` z6f@j}COUi%JdRm^(4v^9wswHUX7xDwjGUfn-6+F6)%50WKM*X@)h^!tun?dx&|N{V zHC)ETyUpS8#kb2WQ7%UpjKt(e`72iSbC@cspT62P^rz4&PaKrf@Rws2EIa$!e1HXh{&lmW8 zE~$70X#1z1DIjR4smv9PM)HM$>u+Os7zc z^Vg2`2_bf^=?Wn&OU64c(t7{o*d#s2WO=^Wn74R54a_p*w|$Cf!@6X9jBps2XYa! zCT`s{?#77k^;~WJTLqWY8?d0W1;{q}f&$FJYCafa0HVT!A(!ZBj3FJS{UCqERHJMx z-pni(spD{7Tfr_4fXCW7*dO= zgJA~@2N9fEoB|BHjrk}T(9N0Y5nYrpm?==v&=T3Mp@j*A3D$N{&%hvkjvD&YG)X*& zGfy6rfuRo*Z?g~1#R6Gd($SV=J-^*A*ocfPv}RE5qp?+t7gP9o-1^f|sr3xA^B$=d zV8jOI??eYcu1yyQtt$Vb)iF00Vz-4JIi8ir@rF<8pJ$xI|Zs zLuL7BFEl1MG^39{B{l(z>^MlSlC%bL;yW8rV^4z%aWP3o&!gb~$$C0~XwfzmNJ7mr zKk~=F|EB}@bP$$r&yu%>%lzmseg2tu7FU@o)pehID{qcg-sEyzmkQ<)h?^0(mh%yD zK2UC=UMC!fQCseN!F+`Et6c9-In{MHQOA2%gSLq}*^Iu4y7s+bi6tc&{vtviW_ti)yRvalu}G)F*+9gS%xh z1z1+IO-NSkbS<~%3_}?^$z>v!Erx(y=|LDi11;R1Vyy}S%ea20xrRJ7VbX|4a6Prg zZYKiGCcqg=BZw|NXN~OiCZ}{sW31{{Q??^Pe#4&DFLU3A6QKkRE*n*baUWG9JU_ta zK?vJujBIEdjghR$HX6-;9NG5nI!3;YMzh#P!=~UUr#RXAkbO%#hZ_~tQ=Me>drS95 zpiwgu-eY*wJY}G40!d1I8bsU3COfQq@n;^cdvr@Dlw(*la=)rQ9xhrL_HMfc}WyN zGeQ9#=6&P9;(aL4eP8X0U2Dxhk8N$W^e2HQGovs>bcx-egJnBy0qwEIK80y9HWj?F zREuuW1TnRO4)zo+=_)*hovlt;{sK>FA(1_WOQEaq6e_!X3Nq4F4MaOb3To<-dyH0# z-Z2OiaJPG8$l?zMP#ti)VrJaC^Sn1Pew5nJiIL-_+r;?MX0v(xJC)7L%I2h$iZ?8l zZYo-Jh2CQGU1&tJ^^DJnH1k-&MI8Nx$zTmDq`e7xF{AQ3O*$prvE?INVkKA?@e8eF z4&=%&y#VCcIs)_(S1$jXQRebfEr*$(D)!i=?{_1tQAqa``q3)W`M{&^q>%4r_tk9h z$FX%>zhFRQgC^ZLBHe}x8>nyhRXxv0RtuqcJ?4TCX`76()Zt#MFQ>F#ZsXzE4z`Ax zy6|7_VB7PO?@Tu6JCmtConpep`+kbt=l!5yw{#G$s91$p=;kV0`sGWLL@YR-v1q*i zT^-xg`UujJ+RvIf=6JVqilt+)E&0HR7am0pa6zk5GAiK#k|e$*suS6xjwHlymQv&& zHxfbI?3C54`jDjOCGNTkz}9RAixdRkn+>az1(K+H+7gK<&uBwO@&(83b7#d1 zJaR^N`P}Jn6pzp+ML(WqL&oao#3dx6U^-1DXUFuxqp=NS#D-0VU7OCwZP-X6Xg_$# znztr%W<4^bHQ8ZU)672;G<;t5<`QKaIo`b3t~Ey9=`l8-5P|%k`ZWWej5TXf>i@+_ z+RT6YF&<+S-gFP6Q3(94I*2q#S^`Y1ISJE?ImwH`N1>${h3MosQV) z60wic-t2oo?DS2^!`82SJ~6zKzF~MJFT(J8ARG+>$14!@;C0Rtd?b90=d>!JgDccB zRO+tp1r9Rr7chp)z=8K$5(Qr@S8~|seJC+VA+ORi@XpNeFy_2IzSH}3hxch$Z=W8d zPbx8esX7I#&>M7AMsGN1gJuphZP->PHiyUtql!uy(yO@hDi7 zB50&G@|8ZoFypEAO^23EAPt1XTgE;bkV&7WVk+;Y( zAsu(*?aCZ^s{11k1)?&!@UJ`SX$W`dcGZz5G_k%Tk65*FLv;09xgX|__#6a&yrS-r zXZUikj8=$az6;UkOw#G_tL0Sc8SPJn1(tu)|Ga_HG+O5BZ@JSOHUIOs5pQd;tb${G zyd8K~+6~_R4hz@51zWoQb66O5EEf|b8BA$@c>a{MLj>Y)Wd85pDk%87{N`t`Do*~_ z;$*4(?MXjt-d&E4!R-+PvYy|l=@QF_uw?gDvZ=JJ74>r(F*U*|iz`E79R|FlNb6&^ zp3ugPk~Dg9(zToxHE_0u=c7UZtj9o<OPN118E?U`*)NL` zVR?gz39_nDiR=?C9;@U{VB|?zQ(q5TaXa#;Vws|_F-+0#6X<*75}$ZIbF#p9IHt35 zS3Aww^eyxltuIZD?7ul`Nu!x!t<9#{NY-o}=9+nP`5WYE(35A>`1b6W}Y)V&?ZDwqk`D4x=(N$t@q%q6HqV0Jd!SNw8xiATJgm?#ZgtPYRC>xnF z{Jc5Geg+>`6FT__Q-Q`^1e_$C#bjCuA;j-!b8w!Bz>??A55sYP9a}yWh-be35L4xb zBwYe}mN1)uNT1mYBD0!ZXp;-5OUBi^WTjmfO&DKrE6eKdP$pl7+osodvG;qf3^cpC zLz}+q_T6gLP(!}9olPb8Z?MTZZ5^Kz{_r*r#Q(cBO4p|E*>i2W8{4fISTYzudqcDR z;0l>cYRyN+nvXP+0Uu%s@Fz^WYlK>y)QDa^L+RkyU<94 z09(e$$I0>}%t57|TKiKripa%~Th+k?qZjWyqSyn2to7RrK6xfK9aQst5TC+_Bl&7J zc!XxO2RfUQwvk``{}}y!kmu- zF^7f{??M(xpi$MPnLJ*I&@_QE9_d52&l>hL<0K(c)wujdrqH=~f3H_mem@7Aw3 zMfWaHD}%Q(x$5s>H{9aykk|PAVd+8!4P_VHMXOz=!#VcR*|S}%y^54 zsc%xsMt%@D%IBZJp46l?wNWUB0>up;E;bEB7*SYIyT~)g>M?`u4*AYlJ$7-sn?RU% z7%#r&hcl~*k~OHXt|dQm`WPl}?u^<<(1cq?#4~Ism&klU2D=f2nP?mJ5x4Llu(ivU zuxgcZHP~0QriN&QEGYbCts_$6FUl@7V&&cWO+h%G=00Ws7T666DKqE)EAgK85bqNP z>eNj+nwdC}pKEHDX+~OPMou*Qx;C2&CJ&^nizXTr?;4Gn-96Gqyv)Y$?2NTz6!h!9 ze>9psynpWC-0wu$SSLO(8^324fpC7}r9I93Se!rc_$1Q)L#c5ed5IeD3QdW_c9Pwu znfuyx(XHwf^E(Srxy1<)V--tcG&}}tQn-U}6Yv&_K!_pIjmeFmm-iFir@Dc^ueg0D@%J}G zv=1d$8x3F9*UWLJ+(NxP1u?d$`h-^28h~$=Nut1>~ z;yu^V15Hd!?P)#U#6)ejJ}efr2NYQ)B003nh5?VaZ7cw2yWVZSA2QmzNLi4%ph6KH43?yW*D94sg4)JE*So(M}Qty@@Lgt!s`x zk}4pKR>~uoY%4jZrB%n2akBffdgD=iJQ~Mp+thLfm7){QwQA0E4;ok%pHc+0j}(+W zw^&B^FGm7{+yZOR*utoE8FthZ5>G<`qDV>E%q_p8q4QI}iQM;x5tA5M%tY3FvM;$W zKlLeFEv4xhQ=gd*HaoMufYZznYyfOOWw)8cw5b`Xo&d!4@k5Di9Dqxh$Snj3_GOEf z%_aJ5nh(33&u7ns&zki?-zA?D`|P&<&tiN^67xG#2Q)(c7$8bjl2*b^ND%ZOSSgjZ zl@g|a1~T@64tMxrH%&0CWhP(@@mmHJh1VmWGJQ`>;#S!btU>9-MVT5NvNAQap{U61 zMs&Cx`;~!aV}ybqG_7Cn3^=@tOJ*dT{1f@HkCNPLBj=N{eOPfYT5t^#w<_7^w#q8{ z+6~F*1A{g}{ym;~#XGW!ILLCZ=dy~P!m^z`z<8!SUUHHP?yr(ihaw3O~fM#4f$hS!VGLt!VZMv`Z6-*hOW7yEAhAvJ`b(*q0{OaVC zQogW6RM)U+7LFKWAZuz1P|cjk=qV#TW}kSBCJTk4RISYS?n8h>9YuQBqI4VPi3r3{ z!C14-qm-=k&tm@+lYY;bEp%gYmZN%oM%QSu)8V*k$E>MoR6wrwn)zP!nl7E4v={~3 z7@IYS9Uu?(3bkae4wJ?8?222HQ#xXGoWiwW5r0!dbTi*wAZ7gPHlck+J3JMD4A7GS zOEiMJ=oWZUWu?9V)kaWa0V*ServaRr0w-LboKm((1MAkYZ&U&08>UB1_TnX>$4|qH z2Q|Ab9KnV!fFSwlF{R^)J`1vY4b zJm|3zlw6D+cn2B{att&C6baqf_|Q&Cmxdk>LJv(KUjlk`hX_i5`~?jVn4quH4GwoN$}x{t$A&yP|Tcw8JgzNalwA#Jir?MR!To2shRw8;k;EoTeq z#Xjsk(hDVO>V%`I6Wk+LCzXBJU0jvwWJt9j&>&K&TC-o7bOBDRj7DekY)#WHC>H8Y zAT(t|EKkaOtmn(*hSg?k*%jGl&AimF;}GhCux{4IQ?IPvu1&~6|-)Bxd95SI9$a2NNLXG^ zcq~_i2jF&*u(EOCF~3%L9Pi}@E-xQMEUw25i&bs_+%6)PF2D_aQk2~ZHd|B@=2(i` zTY3h_v%S2*<>iBtb0u$Rah5bIy7*kd8#Tl~;0h%*)2wr7R^q_iSgTpLWSigV1BAuw zC}j+cU1jiLKc>~}`(!bp-AQe(XRLZL4*&<8>}Cr)m~$Y@$*#>}!uo7g9dI1D;DDbS z>kN}rfCFx(O^5R0B&b#pKa@W#I{;WM(b+Cl1Dr=}N`^XOGHKMAPJ>7s0TY=tjci2m zU`oenn+Sd-?_VYj6;X*PaEnY2H)-sSwXY2@Js#Xp{Afar$fRiqo9y}ECJnE;NkdLc zey}uY9PtFAZcGkdWmb#QWewZ{@k9Bce#8g6MHbx@h}8U%f)Z^l|IFA?dLrAbNO1;^ zGH_I4XDC0`ixn;}AFLc*4=YEjSOMHFRu*0WR(2Oy8HOQ-@+W(-!ezh;BSPlyd3a^` zQt-;~MR;XtJ*+HMu>!bVtSt9qWqr;V)Py8CQ?L(PzbfG1SIDc)*U?5PlVz^5a!0K~$j|rUUd=`zkF7QspDt$hJFp_;G=L z(IP}pa(}kj);%D+c&H)B^B3bgvaCB%xu)YlK(gJ{}!gxsP>@G^89XH zyY%BQ-M*4vvpr2sZn9sS>RVHX(A>l&9k*D)MEXW7M%Pzb@xyvXr2LewueLIV_Pk!_ zQh{H7o%V-!0yptOUXQpzYqxQrS1NLtaeCEF>7v@<*g}O6494Yd{kh4chZ7?&Vjcnx zigQAEll@0E^NEb@4{u(CmE@7)%QF=m${w2jM)#7I}Za7H>BGk;9Lfgu0$4dhWuk z1+y4y!6U1IrHr*;2`Xe7Yu)V}az6(+Y)*H1`hbqSeNabO>yVCtxAt)guNrT0+>PQE zZ>>ffVXpXvFcGYX`P5> zJj;`IzK2O8$~uu;(b~~w-q>n6F-6w1TPqVcnqyQa-~UNI9OcZ3=f9fffA=_%r=q&k z-;OZ#WJv|{ukmV&WFxJqko^>8g=Y6-{V6l~Bo|D#uQE$Y6lX;hhrr?q-6cPJIUJYl zXhpK0WVXC3-IIK2Yh~(bqRmV`(@k4t>1CFS!HH&=+Dc4G@-~Hq)fN-ii{zdJu?)^M zQ@*%WHWDq6rsNBPyy!u`NR|RNU+W2b5XC`8wA~~@;rEzB?QW|x0B#oa0iYmdf|t1Q z#F{TH@TJVYgx0k+P0R)Epe@x*kM#1Qm&g%SJAk>1DMJpG{z;FG^C9}jva(0@O)^vt zbw5Q;fjV`FPmxKH&#N+`eUf=NRjY(Y|CJOmADiFWF}xk#T20?s=u6*`pm5}>CaW_V zl^m%>i?LvAcXBJqOdcOMn_0#JUtms7MgnQ>W+bEx0ZWFlXmD??5v!-dT%P7+-9$*V zevD;iR8Jn=(;m~?67ozmLp~AQ=JZbTKryFxg7b`ZRm*w_c6w6Ru+vgFihiI%OCurD zSe2b1wTuP&xjagh1ju8USs5i|OGc4hofy?hSmMq^5E&6RK}kO`8`RGjKS{S@Ahp`e zrolpO=9s3ZqZnQBy>zpLX_=uP zTiUp1?iq5Q9JRsb;|Y5-G^DL;EqG4GkkG4|AM|mfBfKo`J-^ieE#N$iBr`zi--)el zuo@IYS9u}SUZaeMU*D2ky>x~+i)sP?)$ zfVFm9m799$_0Uec%=0X+7VIcVI(i;S8tg65yq$!3L|0Nu&f!9G4oh+pL*XHlO;_q{ zx_y;CPV-mM{P3Ra%6mIC6QEa9NDauh7!X&>V&-vWU#=%Z$un>n%D%6Xp*-p`lt!(v zn#KdM*Hz2Qw699D5Go#6>M6#91D3{}ip zn`YYmVU=~`$1T~I28av=`!PdFAb716=^R>=crxRfr78ASR#Rz#F~Pp&4U(jZcs|lK z$<83H^=ZqVxPlj*axVb9*7F3nn8#JbajGW>>p2(jJt zs%Ik<+JS!*p+chtlXoNHU&24IeoOnh*&jiBytE?GU)@iUQ^WA!Q%dQP@^mY5qbk+) z56wSXnu-{5Ra5cot7R&FxREp;7*=xZ!AUP?z&o19;Xvv!YR}Xzyk01#CpqW#%9yQn zSmMfbukI2MSq#SoJK7}G6WWiw%#BU+1)rpH#!=!mBW7vL#4z7v^tcOUcRLzc@B$ah zV<8N0S5J<)|B1(`lrjs$+qgE}tYD39CE{o4X7f13+1;f;-Bmn^dHwENQwW*WJHvWU ztZ9y*aiQVi4DxFBp!6h*KAz@6Uf3!}q2MW9GfhQc&yEE4q$0J397koiih>o=TYKD1 z`nO8OA@?_Vi@_#mFO|PZG}-WC9=`IjZ}YHnD%9Bi-L|00-}F`bX8xa_F6Vdx`{A7=Y(9Bbo5w# zs<ieBpw*4#?~$# zHp1)-m@orH^T)^9=&dk$N+zVlsbITTC?57fM9)Y+g*fLWcA7hvaCLs&bE>r^sQuBLos--YS!2c zcBWDTDouyd$e)dfmuau#!H^LU=c>0m$Y#Dnva7AHh_KdgSx|a{*#*5f#YTzlIYXiv zIRzZ#CFQu1sry(v@97M%3_#B+dy=7W3HQR-f=;Gk+s#4Nx!DpUodFict=R<`d_y22 zHfHzp4QTPxaRhXl8zTRDL6JF;9hmFl55Ykxhe63TX zpn3^gY^J+*VCFYqiv?Tau<2>=#-aRO_5zsfg^fBrfvR{I7$$+LDm~7-M6e80JTi%4 zHcH4M2?xqZSZXGe%`||1x#l&0eZK-|i=@SjR7S+=h+MDOL?Guu`r-}lO{gxu{it53O*t?T!c;4c1xcWBxXYi@!zZpdQx_f>)a506y#5gODFlBuwUPLQ%X zWC{a=?M_XC)g}*m1uMzECRm4!1$v@q+=53d>z1Wr8j`LUBM4Spr70|&!Rw+O`lv-B ztX`qz8gC~c2HRvDnBL4h#!b>g5Ud2%A-+N~7rRqS3Ys>Jgnc_lVB$yOfSZXU{$^YxXbqJ(eyg zI$JOkh(oMPy-0LQP_Hl6*TU8-*85;Pk62eq7mT?9*tV3g9lPvclacFq>)DfjU3K`P z;?042Rwm-0W>&66r5pbrU_V1Fn^!$|{slTxjDg}|9G}l(VcCiKH$9LkzKq!50w6s>J@`T-rF;q9S6YosIKM8j?a1*_! ze41hI;@f+h>>6fWK>Oemik}myRZ4{IWhHI;HZ!n+(R}kCBu4W9tbkFJ@jGF~w{_$; z4pA}WoBW4$!7Fwey%NO8FkQKQC*C_^41Lcfg>@gfMyjK5=bSAiA|wY5ZiMEjFEBF*j7mu&`nKyi2Q z%Wx1yEyiUj*g~S+uPZRkj|A-%FD`$~YUbRS1*veh4>M;B_?S}WYV?f+;^7ruezVPb zSD8p9;i}hsPGVGlCYW5-h}Zb?;ZyrTTB1otk9-adSq_Fvm<$)$n6uk}D32rc1FSLB zsM2&&7Vp8>AvjWFdj{k0hleV5GUccA`nS?fuJ_r=7{*g*3jz>kC!-y$y%rP;@QdinrLjkDTETLE@UScd&j&4F@{=cRIRa-3sqhtjY_I~ zP=_8nxz`pAzZZ7$g>6xf#9Yu$4*5kJvXftI*hWgUUEEH7v0+nrei#nC_3z_}eHF|z zW>tAap%)G>jd@l-uX)y!;;G1DpLu49+hOOTgvtEag*69e92L6e^By4JgKzxUdESggnAJL0HFCVf{13W;XPc86kEg$>ZDTBsCk} z)td|T!zrW+ipCS>6XJA4~s4k`g8|9}5v zp1fVkK>y!1d5_+E__YjD(%Xb&K2Oy6VRb;5ftZ*kMhYXdkV1Ey%o46RY4PhLx~An)c)ErGYZh}TPt_|P z$hTSOkYptht1{Dm!I`f0Lx;*B&?bGJw?uwbLR9fZOHcBzTdcW}@7zlz-J3LF^&FNuMHmq92HV5Gcx+Kzzewewd$W_2>Wf;mw3&ECSFCB1IvB z#wDJ;;$@s!F23?8IU}Re=}{aY3)EpYwxEtZHZ8i?8QW7#`57UV%+DxbVC%@8BwCPb zkwB)vU=xedi70J2NeN#Tes&bw995Jx_Y@q<;Vh0@7gXWL3YH3HiT=LH+tEz^Mdwev>|E#;@ z|2>H<`A@X_0#ib2IEz^xa*@VhQ#H1QPaLwH6D$efeW5YeV6>Mnfebe1X?-pwtCk(x zAPu2&4$K1HUIZ?+dylboHgF_#&A0Sveb$p}(bEGgT7leeFBmx30=%?}_nbG?dGT(kNWsf+h(f3bcZwg}c z><<-57DUjRA1yx1(HJL8N_rUv`79~NBiegM(N zp}}HflQR%*8J22fs<}DJ8=4J>ip)?#-#iqqn%CM3Q77^dG@=3PXztS4%4js-A4gT< zX6aa(M6pk9P|${;@}VZ%OeCRywHz_+x8l&XTFzQfyXA`wTVHH4DWVZp-K~uvJ6#|p zQ*j~*6Yr3s)5)!j#7H$@qvkI?|14asL}n}GOPGYaq(UVb0|JywTiG@6ekTccCX0=G zq3EW_S0q~sM7UW=7`}8#xSx!DyGjzYQ_~OtA?0v|bDuNz?^JmY=CZY}68GqORaAF2 zgXvh9f*26{amFZDh81TB1Z7xp#t6*(j1f5HXK2i6oe{J1G$PK}bBDZZtp(*`CnH{h zT-n1fB%{2jD1Ql=`RP7pw(IXOvt_Tp_{{u&#PPe5z`*2nNqjm3|K55G+$TJdq0<-& z$j~w+Fm(=QUvM$KiP9Iapy5G8sn+dZLiRiG>0ViC*WY2kmx%rTQ%wFEOG(d;*izDh z6SclcoM?u3ReMWKlpc;(8ut!6~U|v9npH8 zu7woTcCe8As`7IXgyCnus{9-nHT>*X%`aRXH-tYn79Vn5)HR~aKf_nOQA^L|wdIFD zJ(=Iw`ngvtNcv_!k9HSwJtIFG~fN* zsIQ09AuR?*nfoLqF8{80_8J3@O?Q7BY!zdDBnCO&MN>KHh}V> zK5!oV?LKh+a1A&gc+TLIz^Eifl2ctnIk{b-)ibak>EneD|F-i2lCtsgHlw>8K&~;c%{A zKN8N>>-UFq(f7e{9_XvBer+V}P%d~qfBdtP`HsF3T}5<18=Vf#iH*Km`OKGlKhwiT zViY}7yFp|1D|t}kAd@_4(B2*P@8@Zq`j&j z?KMu?L!X<>ujyA8Rn|Jv$68+w?Y)w=Plj``)`@T~)_O9W>-)#UdHDWo6qKpuxBAzg z=IgiiF;?~ChxIX+ARJHUmdhY zuG5mEZX^0yO_jnD^@7vp8?4B`mk3KW!ND)^y(p^^ValJii6<&c6ZLhQitvBUEwTh;^pzmfY7sC-i#_dQ@w24fLhh31oZU( zJ~^|HZ$l`x(5Zpvq>(L{tzRZ?pa5^61kWajL?iRVY&jQaq7n06p++148KKB9#;ytI zl~4B3&xZnWd=e^|Gk0x5?2J+90sllknE7U4NKj|iC5iFxV$D!lT8dl+e%!A1y-b^$ zv7XXBnnt2{gLpT(O3NZ`yw-B(uB11&g1@&zMcPz*SYHkW2#*y>1Vx|DIj1GYGi9ogTeJoPe#9Z*9GJA)orl)|oZJld08v#}y^ zC57EL@hH>ZC1E^;9Tbr3PFg<`l>z{Pr^Iwgl0i>QCnn&KQPGJ^1lWmRZ7G0=Y0J;l z>&jBd&!q8SIV;T=wZ019m04*_eqjSV<|F^7ovyg)H5$hS&oiKKafjaz%{NMk^ zmwqEQ90(Znzo@ARMJ-jLxbtNGB|QP09KNJArao(I@3A_SA4Y82xS>**PTjP*9#Anr z(Wp5zAXpS^!|C#m5|lz}oDdk>*&N*ICVXZX<O907-*s9Ehw=8$K!mW zIxnkAbfe>mdG~ury+V2*<>x> z^gu?w@_B-MT(Mq=_+*k(W`#nT`KoT;t?>yUT2zVlxi-B!1lW0iWv?oaWg?(>7eRU# zKm9koySxA0-62fR1EKbnm0Bs@y;8;ClKijr?j8N_-VuWRJP@i|sfbDmbEaZXN&es$ zcz0L-ySu`a0S`0^m zkWZ2fs>)=XSrN2bIAbx@PN%#^?8KhdNmXx5XqV4xVb{YXubJ3p#S#O3IFBVt)Ua*L z9nN%^Xruj9!f+&y+x1k9s8pb&w-u(Oeu~<(l9DP?MUgs$Zk@fIC+#@$hDplR5q3}IR?KHu^2;Qm6 zsqT`kp_wV!9<47K#PkHS>iYQ6I#~dEo;qyxTS>C9R}VqQ9sVklRZ_~r6zgREeecV@ z3531OceC&^-(>}wzRR2!q{LeJ4`y)MeAXXcos2zDQw72mx0_1-C4eJ7Go7iKZs)Tz z*T86s#jV2BPjkWjv)8bf1eN%>60bd_yO^h^!g0lp79>7-O@^G!mqw7QTJyhhjfaWz zqpx5{@VVBz$J)XoR9wBLLp`+};6tc40BHO;3P|JW2`M5zVrAket8kR-{KFbx^EzAH zq%u1TU#Hqvn$J`3?-Z!giS|l81UV-1C4MwHy|%a}UtiqR8Ku^_2AtI-)Hplz3S~C& z<6%UjipJZBN>maaEafMjeWiw$x-pg9&Xc@+x3~i{$ONT&B(Z31oW2H?<>dfq@#$+i zXnE=Zp#Pw)swdVHae{4Cpz^@yEvRTE(`A%ns93S%#H|O5;aQ*a^e3rH*m#VxfoXnf z6BZF%Jp6`s3pNMFh6>Y9!(h2x?fvk`>J@lC*4p)N!~ zqG&8TMVB{qYEDrxBQ+9f$jspC z)|(&-TB#dMDiX?{&h^R%?vT3QV)sZ!!Pj3{B=p$w;0dFAL;Ud4j?#aNKC zjQIj{F`%Yk!J4*}kmYAASSwi23Lt7ksOF)@!&I^`EkdiZBefAxpF-|D<7O8x5An~6 z9_Dd2wrLPOljeW)1$Wm!s?l`f3zOGJ(d*)Q>X2I^6zdi7p7Je_=?d`BB5(^Y8F-BI zY*V&rc6hF{Wp?;o?>v%E|D>i8u+R4L_@>#fM*j>PY~i(`5FDmcyhV+WO+36u50B%w zQZsU|j8I^$?ai;dIa-YKmvO3OQO96ykI6sifuq=xw>Z%mDqgX@x2#yCJ!}Od` zxTx5%02(~GNo*Ykk?9Dt*KiZOIEgl~U@ddvZpNBolIsj~DW?#vkicvcC*rj?Nr?c- zmP;WtB?=K3h}3BuNV6S~zv%+`hAyLpokF6aQmw!VKOxajl|iDJs+DVtkZQaU=m@p+ zN;E6q?%gjcQDWhAC7KK&`Co|`O+pKYsPO3{ZLO%b-KW;ODxvFBVty%rxt7&;}CxWkFx6# zH_RhGtev77a*1K!9X#R@4STaob%kT3I{K)75o8!DJoMzD6k2^k`Q{uKrj6)8$4X1ZYPAZOTt2 z;4)#0e<_+5`8HtktzHc|EO=pfkY^(Zk}!r)7!ib_q`xpRm7uO|Z+E{k=GIQ{D&NEM zcht3*o3-idGB@KJYrv>nFgG!;P+~}9*7w_SgGEXvUlJn*PG|I)dKQLN4%$qhkQirX z5DYCdNTc(ZNEgtfqcOT-km7a5Ttz#}D$*1^JcF+z5iXfAVT7b5GXgNQO#jo8^nV6E zrT5*?lIAxS5x~;*vayTy4^* zDB?Ybq0}pNLL4O>z|J`q7c)o~QRixlqKrI^P>891jKZ{zA5(0npuzy?90&tF)Sg;r zpl^UNT)a11?-@goP>}eVwg81dnAuhDYenI)=GR}9OnSxOrI(c@gKK!JkT_~I(YdD%t34Br_R9L!(pZ(|{dJiT9~Gx$^Qc zT#>=p#g6VFr2mi^(}PXkRmF5W3fU_yhoDYF3%Cp%GF3HRv?Kg8ysbrNk@3=-YT_RGcNw7^Gv(mj!}5z_TZTy~&! zQ{&YpLGUe*pP1$B?j`UPC&7$EVwts$s)KTD+B8C-;>V;4*pLsR!^kUO!FneN{BnH; zAX@F0(snPx$3>7cw$M*iOZ;$=lXkjuBVp>>9Ut|PRqIV zXnEFqd3B|iS6@cGT)~;`;n)?N&@L@cj&*x^YRowH6g#Z1q2*j+9D7xzmsedzyUPhff(BH`eJ)L~0(#eC~$%E^4a^4wsOQn}v zE~8$a?H93UdqnIr6%l*Rhvm8ThUK)8@`_3)uegjlxzyjurJhc*w_7QDmc5f~Ub>cF z=Y3ReuJm&AWz@@~{k=Te)5~L(UM_eq*|ctLFAsVzH&uGM=`!l&ss3J`>gnZEm0qrT zFH5toY7?+si)?~crI)SCsF(Bo!e_om_#CbXpQA2(j;<$sW~`Irl}?UdMx9(8?^Bkm z<5e~C^munzo@VDrY}nJ|>oDvt>*QFalVg`rC+GS*IoH$4{gqB0@J=3Buamp2leW>K z>t@P1)apHzSORlHU4~Du7!R|F7#0H zi3%kbosx^|QF6{DPqWg?=4I5&L;bxx)YHpHE4`feUe2%A%LUgW!G1CP+P9XXcg^Tq5z9eZEPg$Lg0oNXspszzcD!%j%V#?2@}s~>b;DRFfCc#OYRm4>p4EUt95dWU?A}hHnG#(ginCZ zC7ROSCRxStA=}d@gw2R+lTN}&P)w8-w2_<5UJc%=teh7jVjNsxpMZ7f{e*RrDL%2?2I_^4yCU~QdqF$%X2SGNpV4gsrDI_S zA=6(NR}@uf)PhJ#Bv?W7!yq%={Mb zl6S#RjZH1^e_ga&Q!F;`9A21GwvQ)goc)^%C1>14%wMlUZ;^yn^JRpE`p$%n&m`U6 zlcK={MkPffX}11^6qvweyLXA84)a8Q`YLh}6>_f5+_J}uzUQK$D|qL)j7ow^JKZYkfnFp8OojvnBT&dVRXYPEBkhTjy~iP19K_uFl9*2McNtM zZ#YTvRmX6CNQsx(pq4B$TY6JOGtJg6?pZI)_(mZkaXu22be}=YfgLW zY2+Cj#rU3`C6n>fwdpB@0||PxqM0|_UbFbf?aKS@pBBi#t~hFi+XOt!7t!Pg#H_v_zyjy*@sZgo$(TI3aFgugb)x_`v09KJ%nL zLtfTWS0G!*6}pyC6N@3#lnDq%oTEyx7XyroJW67bz+MQq7Py5t&yhL^bimfhQK4MX zZ`7E0W1fd~i8e4aNV4kw>2Tk0e?Yhwwet5YP38xg9yEHe;n?wUA>e~u1UytCU^VUx z)TE*Y_y41GNlHOXzo6AXQS zmdsX{k1`dg33aj-^G`gpZ7O16EJ^73$DY|{3vZOQ_@QtP$K}5e&Orq$0pRPpPwaBo z=RNdZ^Y@%)Y?&BoJ!Tz#Pq)MOdvgiAy7TToT`=dX?cA4Rooc5T z8(3VNEeu!6_6@o;`&RDwF(@mhe`h?TO?AhQ3+{}^(o*cp=TJEOJ3Hes5r|L=yU!Jc zC(mEJ_GWw9EwgP>6G%uDuF?*_vol_He!TtYh46Oaol=xoe9_HVSzd$5YCC>Fk}6HV zH3f-DH9_^`=v@@HZCHa28->GlqAM%KczJFXxA4ri-s*D~+AQv?&ulY?wkUM^`^{v; z4Zwq&-19_{pqe3wRQ9TMzJ)zxS**gu1Sw$>U@gS{k}?)o_z7U!kUCubBVM@4*s8fALY0s%Mg!l>cQUDzime-11eF z5Q3*tY%qTpOl`zU-mkyR#d3#?TcT`OQaWS!5yNS0*gCGHq{$lNc z4eh9Ys#Q1wmSBUGb*d$kNXaueonbriV2>AV4J(yMZIOsZD$&W%)=IZ65{P86t;7bX4S40h4+6`nQwx!*O12W=?M?~ed?rH!SMm^(D zc-BimCnn-82b5FjAbyhb<5D#gLPz}b&R4L9j}HL@1dCa9R|rQI4;SIb*)F zFrO?x_B7#Tf>%lo)2GE?3`FHCx&6u51!ik!WK)e#U7Mb5b;h+bCrtO3*QaLhx}^|%p(6)3|kf1>YNhK#E2?rCNl>#<0A-DtQUd^LLhIF>>Cixh{5r3>XDimhO{w& zxXAfcBVBGDDRCP4#Td#DZjvYe-ISvXBsz-!D&7s?ZxfZgqf;F_<3cNpcZqGZvXyezXx(KPBO_`c=G44>UR@qB;#&P%}n9&(H0xZ7Y<_CcRRSXQPB&3dj4?QPkso;ib zH6FK$u(q8PC{TZSOwDLTx*?Z?B2tz1fuY;O&<{o*lBL@dFauI`FA8^&k9O-TVcD=& z-dH~bocDvXYCjbE6NdG%X7gujEc$cyDOjl1Wg+YX=aFCxKyoF&ffGAxz#_%D?s`d6 z-Q^=C;|M^1p0@OHVnvXKjv?)dBMfv3D2*P(XMmee6g)R5 z8Dwlmjy|N2>U2gEGm!60kW{y=dkkVR7}RzK>!QN>!7;+m_N|hwY+yRl9Ss7YTC(DZdlU3ug<^Qjk!sX*3u!7*jW!9~`0z8Kf9M!KX9M6?AX#P3R*!W{2;^ zq!3$Jia6^5MJ~&-q&*E1Ocd!&t2mVne80qoBnAuzZ4f{(Co9iUUCv6{b4$WNaD>6d z0G9EJB(@|r&>p(%vnK6n|fZDM8YXyR%Vx36TD(K z)H0ax21IKYjF~dzD#H_?0z1$&gHRc#3X3K`(HS$5GOABztY99pkZ#)sq|zh!=#UJP zVY*M&YS!c*3rXMJ;V$dnn*gM2^IA6Y#?JU;TlFr6dE;SrmYV=OS_O4XppIsm zUd~3|&>5Q~@wfnWC>tw)rHqgPJEpNQwilUL%f=PT8*L96lFYzqVu53G!kGH767R90 z)CKa|buegj6FM5f?LN!RM8FZih(RD+({R&LxuJc=LLzbTRih$5-tFca#r2;V?v+D#tNKC?NoHD)x zhF$e(jPRHZjzoNA&q)2yVKXbVe#b{3FKbk`tp6{+?%0Vgg&r!bj8znWKax#oUzOJveXe=JlHY2xK|+$^dKoYPbu*CIP^t5VX- zf+4IcIQ9yD;%?^Ks!ue3&dbl^=LMWJ40KlrT+LsYQ z{%iBCICfSio%>)#FWOnnn$Q|LF4g>&ED}rPH|%Ns9nWZoFUGxonFim?7Dn)cELKTh zE7y?fR_j-W{Y&=OzS{huOWOyv{Goa>>;Z_diW^9*D1!hL3)oQLW;q@1)6z4*PQM!} za-s0dkRk>{s$)bc63s<2{@`!bKtbP%J<#9OHe%YU-ugxyUJ6a@^;aT79p7?D%SLvb53fiSs!4wfqgh^V6xiSwgLTvO_l?Llox7;{w))^FF&5ci?<6ku{;EGzKYx+66{$?PV|>?gtFbU70j(H=#*Bn{{4kD=`6@Q)4T|^5L*mhjCqh(n!?b@?em6U=|NkYJD zQkKAEEL|1l2cBignuNRL2CEJU+gu+XgZ1-2c(yO3Pk`*H>x7T5y~^qVSPbZ4TFXE3 z4a|^(lsBNkKaTRB{f1_y5As#^l|gC|ts~?kfzPZ{L)@Aa5A>6H?R!W(vKek9mb2S;S^kpgI2p>(Uw4# zm_0sdQkSv-gX%R)Wd{)$CT^^xfo{QoE^dsjqvd0QkSV^8gA z{Z(k|p`p;0fiyRCt7i$aZgx%8ra(=>qGqzJtW!9A~c`J(yp?BN_vd-6ze8y=n z16O5GucCKdl+m~%qa@!vj_U>&g{PS75$n}uUe$svU*)}r7?ui-F+d0LFKeV|DRM(N z3_aY!eV!k*=A1&wj4-9*0&0#zQC4Y!djn&&C`lp^1--DwRPAn>GZm2X>2SRh$))+ulB#ZcMh{h;N1-camVkXov-YFIa7Ql?Y>kC z(ry)MBJD8LVU^{v_LxjJ`T|e`j{(9G6E)-SnO%zB0`Nv+<9dnUKl*!#OA@Y-!Z?zx z+3da9`2IElk9E7#%EsS&Ea2XzRWzvvKM zSgm*x*YtyL?)qvS4rX#O^{GU#?iJ%y#`W^25@FWuvBBha2FRHp2Z4PDUM_D~d^~vMExQL#<=s7niR?SV~xc7&Kg;BZ7e4Xy<59&awMo)D#>! zC#VtG?x+k*0h}ROmE6RL+tiL6lVUYc`sCR6j%q?@VRBD4(mF#`lE^EX@L0Y$$!IiD zF_LkOq?k0PUeb+gvUP}g&1$A)9D7j^y?48c+*CwR|USK z03K8#*b|_nzdNEo9#i>G>-zGT+z6sGWj_F^c!E>pzMeqCqH)2gg^rvOr~#u)dl(*; z$EmXPRxZ-2wH1n(x@+hglfZ{UVZDRO-gHamDP-mBM?=~s%T+ZFSI5jd&{9_6=!EW~ z=9leg7R;03*3wwjMKHRBsv9d~DkC))?~=d8nsl_7yx8?Ql=76Wt^bPc6}~CC`XM=1 zENdStv?f5f)-+^DA@fUM>vo(a0u(R5pkcwej+Q)9a0cbrr6N_a9C5EBJTC5|@ za@)F()UeTQ%*l!E2u`ajKsX!Tpod7@P)}6@BL$rZBY=1_;c``01t03Z3Ns_$tyq$f z*G{|wfi(sJ5(UGc2u+B$C*-UfT&k;xyfNFpFwhwvG{G=I3)nm#utjXPB7K6A()dwR z3I_^m+~ptRzDB5Fw_$9p43K10Nz5u)Rv{I_WiH|)WP|5_7GuXcIN`ybnzmvnRe2%y(z<9BvsyT6y*H7ajvGfShH z9bkqo&EOe*2;5thr~<*~H?l*}(x^nLy#U}3$)?7e^KnOY{L>kAnNeaGSLgKwo*Pk` zxq7F^Eo{;Jbiy3DWys^Pr`w|hjuDySOG>7PDe?O5;K~T-wPcc$$cN|UYw$#7+afug z;5=SIHd_3dk?NjY3=+qZ{aViFF~$ zb)k|aMZ7m8tsu+M90sY)Z7F^PiT~p;aTP1TdT^_UCu`!71Gpm$^>ogP{?-6iV+~>A z;mYHL8Hv_dn;m_ucnix70QQ8w$(Pz3<-po$ve3ch33Fch33F$32f1 zN#I03*uic9*xZh^V7FJeF4)yGfsLUJm3!Fg`NEi6S2R-{CEr!nS^ba*bTxYXZ1%2+ z)lPQ2-P*x4e>i6Rh+%JbP~^?Ro=7opf0FKGCM6ImMP>QkJ?rzwFW*`_+t}y>Y zL30h%9-&W`f{Ephd4feDPACe8bnM;$a_?cr({Xv%(;2L!I~=Rq`2~`<`GrNCG;U~W zYc(FSuBDJ0f_HS3Qiw<_g}JSM2SHb9??Or{22j8nT#)~_w}U5EQNq!7#6?}Cuw6vw zW;!V}tFw!=w3FER+<gpHH;ZR_O3A&s_jCgv#P{YYNFgT)U? zkUbpoU*I`!+@Z+6my>&a1X5bd6Y!~$l*t>nGcmR(vWi<}Pqs!4d83BBQA3WC5E?0a zc?gZH%ZH$H&Lj|oHySLCvXhFHw`kXMuNfLOs)ojf5a8Oeq8nmR1X~&Hgz0Pr6eUV> zQ#|ts@V5eeZtd>${#EcOzd@PNu`nN?!YT|roHH(>M$|D}p)j+(t@CG<^R#)HSdCUm zZgfbis+G3U23w2topL#HH;v@W;Js`Ot7chVrsd;dF|k=oZtLt#T<(7tYb^jsjO_Fa zR4lZLeASK)_j)8|R-RfJK$zZEr)Lf9PCpxLQ#7e|OeRw_-|1D2*~vF@Bix`yp;AYx zIXp)HR|^C!$oa=f@N9hXcdYahh72r)V-l8L5m4X5V+9K+QwMEui?kzIzhMfIYw01*%btwq39D|%3+qan{xPv5YPj}K z@jwxsOD}zeiCYRfxTQ)4n(>%G-?PN&($k&VCX9Mu%{C!W533?;mOOoS2jxzC6Qlqn zGW~tqRF7#YOVl(JU-O;zPxf)4ra|~YO@|OoqtQeLZGciSoiE)iR27oL!H@x1Y74qa z`VE}ATKD18s?kjC8}yfoguvsLe#ev#tz#pxj9O2lXj|w9mFUiNO+zJPNHbX5tBxf7 zuJ{w=Mb;#1pH^&F_ zqT^?x{4`NuzR*ad3MaFTotSDXf3oBu`n{?VC$)M*Ydx1#poqrV&WHT3-+=_(X}yq^ zAl8Sg*}DfeK^+WD__Br@924sx+i4ZbYPU_E6_g$QP~dni4y-mrV=o|VmQ_IboVU}e zIazJD^#dZD8ax;v#=Q@a3?P+$rP5St`MU*ZrXLW(L%{}W5&IeY0HL>40gdT^Z1!jh z(B^(XFmo0F5g^b9sI;}}bPdC_*#!j%euQ2sm_`m^g0L1bmGl8()`6C*=RnmMbV-EI z|8)Q27Ny$+o2>UG2Eg-M@@K#Q{oz~X&EY3^I{3#|JZO?8BcKSCxhohO?t&8^kHC9+ zjT6h>xZ}DN6xBgnWTcSoIddtju1YrF(&0Qcmd<>@Bq{lmZh^_ttJ7q7181f`j8zFGB~hC}4rNIb zqk<&B&(1K$IB-yRiUH2bmOe4i(ie7wiS}aU?Zo%vv77P8yZRh5=i1Hq=kHpNlfqW# z>4$4k>&roH))X3&Su~4z*@EH}t1TW!f+w;^Zs+n9u3OPPW?)29Q=|d0hey9qzVu5b zX?|(z4yv@)_ZYsU#>iTXh>6hIVAx3Oh9v!ab4^1#ritm(smxRopan3xFo_EGPQUEZ zoFHx8E<60P*)83-b5Sc%BGu>{{BomrLB}+OF6br4HR-Y)0L<(%&MNTpqxdh-Zo2x1 z8f{7@b#gcrbfN^rG3`w9ClQ@8@SzQ150!fC?|C(D8E2yK+A_{)Hj_eDJXFRRQ%9SH zva>SX%cnrrKp$fuKi5cx?oQr{HiXrcGtJck?F_|PL31>MCeXQWya|Jh&h*HJSjJ-0 zQ0ynp$~_YtN6v?s#Wi1WL+lFNlwfM||to2KIe47GMSuWA5Tl45O+|*wC zX8pYV&5|sv83~QN?>(K-S4Gj>8-6L%HHvoKDj=WGI>UBkS-{t8FVot=2hRa&ofFW= z(YaQU8Os<-{R+dF%=nmxp|mYv=BA(*Kttt~re$sg>EPOLN(Y5~f}7oQG?A!dR#&HX zt1qu=x8gse7RFl3I}Q1S>v;SS&G>5u08oI`m*RKGO4SNsxI^-|WtyD50{3S9{`(q% z(m|DPK)uGc?F_hXSU2er`AFD197-BWv|RbA7+Ew-h&-&d*z#f{tGz-}3a~&VeXA_d zlGf=iSk(CmBd|JygvnHrtN{rj*BYguvj^I}OsixLG-G}#ws<&2t9XbeYqG=vVX*T` z)bJlfdNqRBQZvxW?Xul3S5ZfhT8c(NkXW55gD9!hkoDvSsd1&$YAhkO{5?fiEVZN< z7L~0?YBhSK*0(||CNfLWx**Rf$M2vW)?2Cp=aQk2?m(d;J&_n3Rt>+mAY@x91e!5Q zms^C++hmp&QyZ%&VF|FBbA%WnWP-i5fU2OI2Bq2 zUxV<&<)K7p-+nnix zPgfy=2N1u;RbguQ$WX1JO{;HpL*U3m`F;QC%m2A?3)8^(Te9S~@H0Ph|L4B@*5X%Y zTTPe#@-|A2RZ8-6wSM+aH*z`B-};**?|r(#JX=gR^*uTVPs0tlh3UqG58DNNx>46P z44Q7ZC-O$q4Y8H4XS%`u%5=kog<+BDMpn&igjg}8XF1(4iAV-xsOiE7iF#-!LKGEf zy0Hpux*67V)3E8L2P%U3OvHSHD8VoQBimGB2aAY8?H4f#G|}{4h*MIPritmH4UJjQ zkuoTSVa8^py^}a|Wm`p65?iBM7?)qqQ=4$CAOkNj+Z+rAh9zbpg=CIq_3A9dqD&aj zEW~bmW+8qu3nBAYGz(!q zlYYr`F^AEHYFJQRMqjMQAQ0ZgB~J9R-3mQNhNzP30*Dkzvg3ufg|Ksava06s@QEPi zg2!*1%AgjhJG21l#=IvPz&{-Jl0IV!nQ}K;X(HPC#VDm#2kB{_dGMTWfuWKspU; zbC}j8FlbG96g@HXiEPz9(bE8fQjTGSK&hOuSUTE{x3r44(jH8`VdV1r?seC*jrMd$ zV}_n3yca{am}%(#eazQtd$^!;7lB5I7`;Hz)n$uccKGE+zcl?K^&Fp@BFZ-Slj-i0 zuw38TeX`xZVU1su+T~Af@yngv7h2>~`CQz6G_QMlvY)HavoCJlU(;j<{m#WzPX$wu zTn$NZHSqqxCKY+hkD;)v{U}p)}_zc5zXRGqS72Y83xXt>F=2F<><^G5t2QD_%t^030p_bA1Rc*D=m_0u553OWrkky${> zOClPw(;(&eGZsQ!(5fN;;@7oO5IRU;E!xps$b7?QE~}LnsO3;nh(LnNYw5G7bk!pT zon>n9S?Q1ddZS0-#yGkXh1+eZOMbaBgk7zJrWm?p#*k)>eN2 zG^KDev!ie~3;T|##-jrYw;4U8@4Nj7_{beSEKWEyjlNX4M`YhYaWCvUJy21&Eu|3}bByH$ z(pQopsCIt7lW9I*=+azTs$6i*?Nhq@zUTGynT89;C9yk;p@l zQDjch`kK%)t=5gMvHVHv7w%6u?n{IT6vMp1FBzm2D+3zmS_^~e9LX;s5{s*wk=}zC zz_s9X0Cg9br`pMcmWT*{2O2RYg{F#_J6b-eDasD59zAof`BLrFaIo)3qAL4Jr$vtR z?guwO8oa-WDOA@zxN2?C@d*y6SA!F_4Y7Ea!AkLT%y>Lx)dUslAGBJw*7Q1&!L2)y zscnLAjj}O&wf&Mx_JbL#?O<%xJ%@^h&0D?Nz137yyHy!;;3p}=WknB%ijEZ(EndKi zEE7aP?-QY-(?vyRE?`AadD$ZpGaKsWrRx|D2@GPSE(q#u?|A6ZVdXVvjE)u+9lL-P znQLAZK{+SbO(P0AWfgIAx?7ROO9ra5HI=$)yNyNsS)0Wc^Bsa@vo?GZw7ju4qdPKh zZmez7-D=(K&>i-4B6D;{*IX~ihnqyy8h<$9TYOY zx425AlplOylaft^h?a|0{em^Z|MjAK+x@c*wM*`>lr??Ztq58O!Qdu8TczsCNBb>D z4KI$yTJHT#g2KZ(eY!HYW8y}*B|Cr`l}3qjezWvglFUTZ-QQxW;WJr4Z7xDaBFkA> zLi3WwYe*Xedd92s+j*u>Ou3r1wQko2AK)T%k&n8(MA9_YLI5eRga$19`Q4JGISvbf zAuR+ngLr<{JKrqZn4wtn0cdHPNY231OMpsx6bwSF30VBG3Q&Sc)*fARj5^e`d^f5Q z*Hhaz@#!np&-St4m53rerw*vs7EGaEdjLYj>e+zm87Ou`RA3mgLIE({kK1DYt4jgE zw&)7LWPwf=IEW1}tjP@}g%6nAlw?yr5fp%ob&EMrY~0ka5c4Y|LyXQvwRHl1!+5A> z=IZ{6v3YvM?CcD)YN*&Ub9%*0`rV3cT#Dv1FN-(T{7I3!YP_byvZ^?QUS~sO{t=Uy z9Tl-bjj;J!LqQia*;+Kiqv8003w@pQe!$=LspuM4>{O}okc>MJ_x>7*?i+7oWZy^N zAzh~eJD@l++ZL)_!ZIaeFG%txqzFC;BH39%W;N2Y+T9)qyja+{U6fYZA;fC0_L!gr zPGVo}WD#nb19>ZV~xXp?g1^5HxcmttjZMSq7b&c9@e|UQG0+>B_82jOhtX;A$KHyoir%_~yOOA;|H*clQQ4{zWY$ zUG^Ea!Mq!x@GDEa)LZ6Wvr&*e-jv6zt~7yYco$=zNeD(jdDGlkA4`;B1l!~5$7C%w z5PBt3HCiZ6Tb^pMg&RB~DX!Pz4{d?1@HzI1Z;)@u)H*aD*)Qe3WzNBw6Req8{79B) z|Ki?j7#bkr;X*}0%cLP{OHbATO8O*HyNDeR-%R z)lTs(QtpPcO3b5KzaVX4kN(`84Wn1RiEWIo;9)(&~cL&a$bjy_FxgI2qPiW}cK8jXTyU(|(6KKk0Yl+C5@#F~yDhT~n4s zdxj|)j-XS>Dzkz@Bc5y=^PFvJQ54J?lU$JMXC^KJp9-f~lMP|tzo@Y9v%`vEuqYVv zLl6bS&oUPCqHGQJ{WaM2W#88|a{K<8!oIIX0LuXE`v+|GU)Po`0o1}tH_()4*cC1D zY}kK^q9&B|gI0+GF)~10l~_y^ZF6Tt@R4yp7TI9mH)P^HG5;?SiRzfuwL~oDkjG+D z8H%=51S=M?m|%*k;WWuDIlzMc)*p*$ufFh8ztx5DTUj0%Xa*~0Ny8!|^GfmDqP?`N zXXr)4Hf}%lQC$ch)gP^j+ZIS%^-!IXjp{h|v%;B^CvN}19(CL-OYqG~{5d_g4fDXD zKn37fH#(!TaQ!KU_O5}WiGgF0Pb45u%2A^SkK+P`FXf{^Ov|pMQzfTia`V8L2Spmj zv7*fg!t|ZyzuXiZ>uvGTb9$iE;)Z1tEW3!g)}#Anv^94ES9d4S#>Zl^920tD_FOX@ zyFHf&r`?{*M;s`*yeGlziIPNyQPc#$ugJAfb%wz^iqAEN;t|j%$Kry}h{I8iMukku zDI^2#KCb!izZ>`1ye&@Mat2~$lEW=%*ST17n1rRfJIaYMPe#OdRopa$(b|`o0_S2! z+F5pWgkJ1m>8}>0kJ?1HhbaIo+}>#yKAO{fi)U_LRI%f{W&Y zRFoDK(O_IO*6@B8jViLQH1lS!-$h@kasVEp9Wts=jWv+4k$X7?EPqA%h*|jy-VhMA_$V!Q zUnCcFBde8nva5e3v}YHZMQ^#uyQ&_|Sm4HPzWP6{JkqEZ8pf~z)@fBxR})HKw=6ddJO!a>q(gnk{@V8+SJH<0FEym!61 zDN(3I{+ps0?He-E##88n@<7$-6~*PfQObAiG6%>oE*G7yRmEG5s!)yynwJMXVxTxy+smT054K!n+R-Lfe zNaO+@yMXKVnl(J$6s7(eykYIuYq#&G|70WGge>?BInecC*b9nT9MCqI-nmoY;&xjT z${ACPbgo%3k{LY2Wk{qOE^ymu;VWDKPn?E#;E6^uM*KI8W=^)Ofe;Pyo;=Viirpd& zD*Iqp7`vrLHaj?NY(;q6ZJD-D+{R?5mAxDhBLAC7O7$k?m@r3#uRyd;{6S#ye~52dRWi4C11LgVy-{*sCX2+3G~KfNs?qa+g|L>Yd<=Xxu8+ z?D_*nB%*0->Rt(ALERSt`o^@^fS<}MCArJb+lY@@^=2)WXoXtC+SBwXJFtO;VQ6qn z@gWrtO|4nk;jC?Cp%F<3(k_sc8k35AjT8`{TXqW>XOxqHZ+KhhG33XhSUBxO#iE!J zy}LS7&??Sg~WUyoEgEJJWF6!*hC+<8dSsdBh8iqE7Z{U-OYX!a?$DaylQcCAb+ zTL?ySw1)83!BFYkDm&|f@x*(l5p1aKTeQ=P>s9)P6we$|kQYvc=4F~G;(Tg%`bNE; zDT=rRKVNbLi|&`Es9ih25r}goM=;q&hqNVz%a1NO0#&lhg4V6X!(#Dw>`&_^M|h)J z+g5O_jDq34s6{&&dJ;#JF+b9@;U+e*oM&6VRx?G@20bjrKoyA_eza}VYNGIBoZrJT z*tXuJ5`B28^JElJJNmLe6f8ta z57o3&mSQ++C!9&BSweabywf%V`>A6?Au1vtFz^pm4{*4cUK6fCnn9-SpU-9Bx5$bQ z)+~#`UnqB`j^*Sn=>cuQ)c|Aqbsj6f=1BG;?W|h)GmQ9d=^xptIi%0hk3<`=^xG4w z*DUe;foEm7efZb`=IP_ znd~%{Fz|0E4g6VQ;KvA$0UrQ^2L6T&{0PE3q@r+I&1H6OuXN%S8Tc{Lnw=9Kk=%f2 z{k&st3j;sYr%!yV+^`w=H#kPJB@O)lm-Y!Tn5;VDbYHu}^o(wzsof&fp?=lG^k$$q ze9t7f&HUPlrLIb_cWS-9409UaApwrZr`t=VZ}AS^HMB zv5LQBl~gmTODzL@_EIgxNU~|J4oF}PMl%BJP z2JJJkmA_QcA7y{r{r#mA?a%=sNQ%6U?54j2+*^OGn}`bQGx9RA&wG7Bn2RHZaTk2(~O(WwXJoC)?H%mpYij!f6ydZYmH}@;QqPfRgt-WbdB8ob4lU;f$z2G zdfjE|`qW&5{)N?9U>U(mGqX%^Ppf!mWmo zM#tfmh2Ih2XF-=dO4!%kb(=#zHPb%|gqho1VGA3zjK~uCPqHj=|2aG9(CTTyE=5TG8vITI$+Dk=qS!OZf%WlSQ-NSjvK>7?X6tuGJ7L-HpOsabA#k#)Q-2jQvNpn3-O=U{K)-b zd)86#k7YZ@|BAJwf|XUvJy7b2J>C60Js6sKufd z_okdYV3sPr{S8{9c5IgRV;?yXgTz0C$?k7coEEBqo7j3@v;jK}RcHb=g~gO_BOp#h zVK46;+WTEsV47-WfmxIHyAPWcToS9nLR$5JOSu)E4d8pZ(F5zl7P=cM>}Es-za^_Jt?Hn=q0N*p-42kV)BvK5ju4Y-{xWo$n&~ti zCj$o|0ZfNUx;hMx6ySqu#~r3LX?3m@YXXOy$5dISgA~n@Y34E8*1+l9 z6%&sE9jVWl(CDqUH-@(s;)lxyRBKjet#=kcq9(F`qNgJGDDptz^HgGn!Ad0v9mk|W zMA34jx(zN1(Z3H4S8P*~tPJF!ZOW8ZqNdUZUf~;kY4+@cUz-2O@k0;&!|PBkneSnC zlFPDd>7PZ>J+q&A2accYZM>XR&c!%FYsAI02l`&SJ}37MG!eE3>Q=`%MNdD{MvW z9*xPFrTvx_n~Z~HA?rn~CjqFeHteTpe8YDbZNB+U0`tY~NGaf@;;0+txE*`qIXwYGMMB>@Iq@ zTs2x@!VHy)Ty{HDdSnWjE$Zd6fj7h;wkzNCe0*shwU@9h%A@uY!dY>MN}Qs1dW=&w zY7fJpBA%RSAn4E7@fBLO5$8(O-kS3)+u%Lsbq-8m*_MW7o34>B+tOm$#v*_}O``S= zF28KEb4$zZR<|OCwyfAFXM?r9!DznXqExAWDkF&YOEgB#05tbWUQgqlp;4 zkVb+EjOG`j@SsF2igso)4b?*yBYc&4rRU6(qOZwv11Bn7SGNX|rkt||-MD7*#@Q9`?=kc4P89HC)wdeb4Rha{O`xdTF~P zso`6)cxi>6Guh-k2)4`KFYy>l+b>JX)+>u%7xFnX7xqBz{c}z;Xy*U)zP8!uvDT3G4Mn~7T6XU`lYb_Qm>&@CjUe204Z^(%foZF* zvTw>`i}1 zdS$x;>KP4}n4u<_?qNNeuXr3lNRrW0{e9hK6Ezq=DMU-s)LevwWFq4da5`a-WChS*(e`3x!ow$t{71 z;Rd7=oZhiq4{XjCMliAgUwJ{SYwUUlL|9DLq|UN^SUQGuHBAb(Ghd;P=9o~V9Y09G z!$09irXRLPfj5)-VcQh=L2@_#(Pu!j{llB3Q^;>=*aQpe&ybei{4WG|A6N&~VzdcE zJ!*L@znk}2t4ZI-3gIxgqOXwY2vlLCXC3!1b(T)0-`aW7!QVk$-fy#IcfsStqr#ey zS92%gj|>$)8e}l&LxnvsR8%_-R@8|J5Gbh)EsA`dF7=?U?J>kRJzxI(z>9!CKLCIJ zX(L(9nTTSKE`Q3wDGJ7+07)1g#Gg(i8t|q0vwm*=B)X{JPeN}1==_O=i!`8Wz?%@m zzJ8!~@#l~U7!sdC-z?{h=$w4J{7G@+PZN(fvu6kxud{WB2-a4jt3-sgY%Jt!f|CUh zCRM&BQ6hA#URmT!0&VJ<2-#_X1vGW&16AdDqbAhXhN6Rb*yeO=<6{F-S0E)%rGW>| zKtwoy4QDkvW!6*M8cQTDt?6=m>~(7<4iRMXkQw)PF6uhl8Z_SyfVa@I>>|zcS{%tA zq!Y#^AVOFghd%3veKIi`I_ID|tQ22UM5?(bPJneNHtUrTDQf4h3rTI`WSVPfoJJWy z^?sDx!O~<^^@yql4=iRt1fB&Y6j7`;0!}es=4~*v!CW=T8CHhEi<4N^>gP;*5IEC^ z*+r80?tI+&yczTU7Xf454`ZHbkO@qTDb4_&KQU8h)1-fxI-BR2IyLM|Or0Vs<2B7#OxPj`n07K)2I3_ zrmKKoX8Qb5p(9M8&3;C;2hV#7{S^)(XEJ#Ba|F<%o=6qU&&plK#kM&jsnh$%G!sdw z;i5$~3+ME`Wb2T6BISbzOPZ-afWt-nj6*pJdP3sS14nipFP|-td&<4?w z6wU=Ek}%EBCA;-@Z;~Er^Zj>mwDI$q*nhIh{}7Kg$xy%P1c6bH6Mc@Fw>|wW>>_dk zg%C^sO@26DUX^}WFE`ka$#g+K)Dzr%=|}W~r1<((T#Q^c ziM*n0ra!dWqhcT&JC2E7R52okw7QLj`p}0xH`Dov~9SKPenB98m( z{Vzh8A_t+Q4$<+8!`HDavERqhfk<^Edlx%8=&LAZ#Z=yn_jHmZkC(qJ}eBZAj_nxuI5rE|(iO)2ysU1TuGT62J z7-GpYEN<@t7{5CCt^gbqfU^St&H~_Q0pMr}U`H3g+N+bN1>m;@;LHGkGXOYJ060;D#=M zORi3y5P2msC$0M3*EFbEaH_|mJB!ve7XJpfo3 z0I&dn(**!_K!q;c*#)rX>g13Bd|Uty4gfd^0CpQY4zxkbad1}`07yI_0LKJi{{Vpf z0619yI9URivuW1Z5iIT#gs%v~`~ZY`ARI3s94{g4tw4B6CFcYqW5416ggGEA77!Lo z2=f&PFGnO`#mVpabs#-MB!$h-U6D{nBoq*il@QpdTaLtkhfENJ2L<8m0EDwZI9fm; zKVd-R{$2=A3&K|f;miPpGe9^}KsZuDAXRMH2E@u!g79~OaC!j3X&@{V5Ee=Z2P+U5 zizfwP-){in)BuE2K;UyHhl3@ALlp=wLoOH|1mWZWgp)v^(+**O34vyny?~}q2*P86 zaC`v5aUd{s4neyOog@$ULU>#dzA6Zd0}vL0FjqjBDtH{ip!^lK>nY0B{rldjbIM%XR<|NZA7P^M?iC(0%|M831qu05=5y zXG#E%RsbO34-3FC0azFSumFHv0RWo@Lkl4CvIWeYhXmkj0&s8uz(D})3;@_D82~(1 z0l@m8lfc*mi_5)x?06?N|+0GJ~7 z3cxo7U~T}w8~|nlfSH>^`Qw%H9E1EU+0gUvsQfeNN_}FXrt{Ri0h^2ZPgKe?2H#cr zcl;*h&kmG7OL^QA)&W*3-u{!7^030wD!-ueX9mijq5NbhPdJd5f1*+zGJZrrb!H!Gf#PiUNVRNge~TH1w;v%)fX2 z#wfZbBAsgf_HZwc;(z;1f1Yvw?Ql<$&-}lHdjbUVZ-#r?l>b?{XO*2le3<4hP%HNf zHG+PQ5}?EVu^R4dJxTxg@&vOByV6!oB+Xk#MiR-XHGO*WV2H>g%Bg z>Fd1rbzXfvSnVrM%Dx`-zVhe?>+8v$aeZ8UeRpMCzxdwu92L!09*yu;T6kJ5JZprU zpG|1tT(yNfDO)(_E#%P;*1}%O`|J{<@e5$_3-4RMDWZ*=x&Qt5Ikio5|2yGcRQSno zuaWs^xYx)$5biZH?+y1FnRkbKjm)u+)9+K>?^Ejc8H;`oRLGOE-)FGkP=H52Sifyo zS;24%>h?SNTVXhL(4GA3`_@myTCp>u#8<{dU&695=X~Ps;(Z}#srkw{Lh9gArA_nU{87H!n`i@Y zlD~C3dDQOC^#xnj6eEWlTd_Z!TW34hw2w)9y2#+g;Rm!=n_H#`TARn-B?H?1)P`ldCxVD&w1kTB$PZw|M}W#pnxJH%ih*D%g0ZL8aVV7>X2Kdl7lL3d%|{;Pi|zEjSCB41#}aVf95+YD%tE+LlkzScx`e@g*mi?GiuE#? zvBw=oVmp!&SQ~3I*I^6bju;iCSfB-@VheNFN>_iEA@n1w86By1uD=qge(H7Smf6X;g_MckBwQ=yk6T>FDsY%@~(`x6n&q*P8d;7Hp>)Z zeV_3;TH8Xf%2fJ(i~4RT+a-gN6}w6HBr9flvJn_`7IV(Ov4kl!eV@%fR%*@+NLFkf zJa8bjQ0)e!3=(8IP9G*7slfG=dL5LDNF$X^5Gbw2PRfeJUKrVx_=5kN>aF?Q%&eu) zl-7iYP7wLSKO=*A2j3yOip)e@J#SH+ltnk1J3Zf{0~i-ek|u`@ zDTot7!nh1w7s4AWs3m2g{Dc9u7G?p+?E+a6=ZuIGpJdTA5kx(A=b}@m+On>|Bk^Pv zJf3ZX$E?;m*i1(K0G^W^Q@NbrxT}K6+i6vjvt|>+?QvAzqL%7N7rX4z#RSKVy}ZUE zX8@Obx=36nGLmPUX73R%!UcxHn>>I-9o3nZTR@`XNhKFH)^<$@i3l-Cul99FFK5q^ zOm|Aau&*6?n;>M2S}o)Q5Nqm@)izeRAkE*0Ua2-`Z{txLFjzc)Pb4edy+iiI|P}mD@HVCJkKqJmr-E!X758b z&+X+eiiGqzRHm0wVAVAd=b~^N4rcdS*1jeJ_xU1o$Z-1JE4XF-2Tn|e>nTCqUl{{I zWdf?v%k&)>bkIiJ6=8j~`f{KKpZ;tytBSW0?NUD*ZSWPq3y6 z;*O38EbX=iY>HmjA>l}Im_Q3701-&~Vr$mqFer(Y0v}Di2rcv4Hjg41WZ0*SR0=L~TGmXZxPgV5 zRL0Y+<;VucQcGYfEG(&#oh0z3awAT}1@ro|8{qAiZj5Ujcv7*ir$)V7#EI^{2?;cJGq@1NF9C|ZTNL1AQc zjiZ4Cl)8+sIzys}T8=2KR05cc7vh;vgT4`2^M{WSXn?m+lBP3(^IA&fcM^$r{Z)vnNbe5rosTi_xaH^gK4*tT%=on?PUVaTxV*( zhh2KDDe+XRk|@U27Ud_{C`*)-6tYOlD?gGJB{lF61k=UoDaAb9peMbDT#=NL3=C39 zRH1F_`)*88FGCYCIP$M2DCB0*k9JbA#EQ`z&AOaTLjI zM0+w)U=q>5*Yl%mu?>M&nqhp9eyYuxl%Hni%MXZ9)e}fj97knf&&>=_`c)>4cz#vo zd3{rKbnUs2EKlFRTf2KIid+VPm`B%|5US^krh+|Cv#0`16->$&$)J1m`f_rnC88BD z7wkyVcWiajGDtqK9TK? z3%aQgqbL{15w~ZT93$nkfgBl~&5B07Nh%mij0r|AKRmYE>W#QRG`4&80Cg`W*MP(* zKd9A>%K_`2FzpD|ncgsX=rn6cpy&Ja$YdK`tX4m7D~vo6ky@`ika#9Nqo$@EZM$|; zOMe?W7Kt)l9^mj@UH66SUaqR}%%wa(xR!Qk54cu)<~o1(pIFC(5g|6-K? zW%--&`kN^Kzl-0Dma95I_(F8^s-GvWB_3+E*!$iZ;cu(nX!38OTl=rkY7N!=eQUVI zyBfa?eZSWxh|lhhwcDe9_t|!P#O@G=zu#_?0D+3R|ATg$GaLQ>v9{8maG!pzt?VYc z`+VE-&`mNlzV?6mQslHDRyqvWX22c&S3z6Q)3wnw7Z`-m&yRluyOXw9ioYZ}YBqj&58AFk(z53WZp ze=vNr$nv{};=|1RuEb~N)K_4MOPR!G&HSp}IXXl7(5N+d0{r>wSlpN%9)%dBDqFlN zy>Zu#Uaq$*~x26MI-B7)(zwR76Bti=3OvtRnL~_3GtZD0O z#46O6%=jM$ewd{gk1$@;cqnC_6*o6nfwj4y!D<)Ho~<|Vw6vwYo)A34-aJaa5uF}V zBokAf8?!#sGQIbMQ>>kCeHN6OAB+-VfY!MpYk36y&rucuN5&U;g*+4_hv48-lF?c1 z(hvEGBpsm@2-Z=zNy7};sN1C35so$kM$H7RD-=Bk+XzFZ{t@QR$YioU&^>H~h9O^w zt^{v}E8ExHO26~7&JbH@65}(&?gSsxJAFv^_=qO?X+npj54?<_#9pQ=qo^l+qo|j9 zRF2}y&OM514aCXF)tGU(AP^>MA^|BENZfypl+ieXJB=fT2OXi4wK+sb!>NUh?B}w`gl-|dE1;ozG*rzEz)GVX^{kj$?SKNAlPRz6`&*B z6c!y?HJKJUq#eWY?B756$alW?UqAGFXqhwl#S8}DFu6J3cy07cYPEV6=a=(HLYT($y{&k9J7jsm^(Bkx(4j8XCG62tPqKy( ziy={$0ygppQHT&Q;aVbz2U?w3Aa)5*QjGGoJIH=fyJI)o9yL&!Ikq`h&R}R!HDQ|q z(9SV#HemcSDK!n<6)I)Ww@N*IU59fJOGDdbpx*HGwfoF)Crr-V3{NHLKkBSgZ5Riq z>K(6Sgtb-2?UEUQehmf{jadnsxYzT+hQ}F5)CtwVh*E(d`7jOwVrGf9k;74WBg2@9 zp{6uon#rxb_KoRFy<-QlWrpey;~{kx6u=Cv&`di!UVz-xCkuEaoJe1~9bL}cfMTfb zfWO+f3JaqZblaS+2R7(n#eULdNUxpdZk@cOr~8;bF}uXJnWRBDC> zAV;=JoB%^6teTeBJ2d^GmS1lZvEEqiSV?%p#5b8--{Cb2^8$J^f9B`R42kW`%#d8& zNtxiJ3{_Ee`5pb{JQBl{oBMdM=;l7Ph$BhN%7LL#>TcbZoO+1t!qTOGSVJIU@}8X7 zN&fxeTivi|h7>K^)vH*&+Kb>L-U-_uZ5K9CZLLZ3Uy9WB{H$iE^dH#txG9=;)M!DB zXxZ0=vd^GkDKaS9ecnrWJ!?lD(mE&yVk4b9NftxtGcsy0qklr6j$*(hzxA^V)D zsQ?;c)F#-+Xxdm4;=+x2$mEMQH=3ocFof~uG1>dLKAd>s%PgT2w&79Zrk%ZHioi%l zx=XPV-BN-rE((;$@8%w=TfhY%O}WW@&d;L>)N6Ucf><_Uq5bD##~|FAc|Sh}5l7{c zJm=#`A;LITW8qd`p5O`u&+}{3_Ynd+XFGOm(qIeGm>!fyzydQe5vsqkzaVgDxbboWC|Cy@%n3o zl$S=i)sYE^L4>|8uha}u&-aj7R$ok7Dvf&H(mAg3z~p;w?F`Elg(yLP)vEi>H=B`B z3=a_5n69#ENM^}bnqUYY3LH4>tLC_BBzSI$0%@<6|a!!sI-jlwY<#&?4-&j^$ zy>~7BvN_zy^1PD;MVL&+;B*nm0kOS?mjPz1Psgk382KZgboQ==Y1pP)aD|>0txP}i zoLWFtc$jcDRHm&ZS`x$*J&N*w^MSyckak&ZiHLOJ2df|Q3-t$)sA+X6!6wD!v<_S< zGT+On^p%+1z$m(IPX~86c97$USDS-@ocb!x22>J(-OKa|O^Z=VA6z{VXIc;HbN-*f z+@j1&R+_DvpQXbP25*|?-+^iyS=`#>PCYL(rH=u-W5r-6d%?nVNE@63|8XR41)KQr zhDe=}j$XSmK4B-%aq~1LK#@tt{j(UN^OrL}*7CE8U8j0CgvR;Hv7Yf;hR{SmnEqIe zn_!m7B#{{u31JUngpY+8y&PrMoH4TVG1L3 zpbeOpXX>EQKDRD2j7Tm;2-!4cHWpEtj4RO8lMSpZ`6eT(lMTbIm?F+MbrGBB$BHOw z)AOdNCuQokcEq{bVMHW~QakL2D9YP$eu`R2JEZgQw=T-!FAhwkO&0@6{)#RJM)YHa zr1gq(la|PeQPjv6WHkxZKvq*uJeZT@%rvsvzzt-T`I}6B2FPk|l zk#=txt$rF;j(hqL%C2fh`R8z#M(JTYH;vi0={{fx@+vLAM^m2 za`c|^dn|{9B>Me0x5xCc?QMmK&}H;7|MHn>)=KEPHbT%K%op)0`zu*IOw(eJ3X7Io z@WVuDTcNzvDK7=s=Ta(FRVynXZ}<`Sj(u=SCwbdyox7Tm<*8O zzTfI0MV84-m0C(TP0p=F@N!-+e!I%fxmWhq@HiSB^1A!el_2k-Y;U6_C&{? z{pI{^i5DBwCB@5A)iEs= z&oJV2XL$DR|C!E5`3FASGwhN;CLoT0API_va9yGN0of`QB#ut#T2|ud-7e6F;6dW( z*B*YE;K{_~7I)=*4|-higoGncUs@3}CW_AT1eqoYvekyPQ!fM$E-wVno&ItUE8arz z@B+c3j;Yvw6FkGSXNKPfi_7>$qN-9R|zu2rzsG?0d-NQC~ww>G~+OLk?Rvn!LFT_GmBLZ^0xuk8x?+ZC&VSP+oJS`CR{Tc2`<%7NOSZ2hzC-sUWz8H ztd#Vz%|e6%qf}ouSWu=t8ElF+sJcMiD+ymLvCJgci{)#Qwjrzuj>f4Qvzzc@y2EV5 z0~xHW+lpaSQ)j%XBn`K>E9|3!d*Wp!4Upy%&8q*Xv%G9poi5#nE9_vFTpQ5?iT#U# z_oRp_wZ5hF4f2xWQud9X3fTyv#Iz#tpIN8ULHt9pOAR-Y0E|q&n#Hg>SIWnYDAo8L zXIafTZ=vy+E-rP4XjOh@q9~?8TkioQkCnC*Mns4~;5%*}N#9~n*?rmC}f4_FCLb*akOHXhh zLPXU1UX}M)q-fZm!&(HJcYavIpGr!>U1GXKI4+kW2o${#PSMgrP&Cw#*~`-SQUgI0 zTIe9#B?M_3+dW<$DYf8x;6&jtb=%TTlkd9rv2w!|t$cT2J0&*^`AU>OsBP#coox2Q8pc zE0hLNZSdAWfMFB6PjF#(2$N#rVS$Lz`U4GXd;U^tqlkR#1cTv?jx>8KkV><5lK;Qe zq49u&DBt_B7j|eKtJMF(56zSh&1C=3pnpoj`21~KY;0)UH^vJe8106B?gQg-8|flb z*;Mr3m!80N=ABz=lr@Vi*v7}NjTHyOog7}m#`En0x32q|xiPqcCYU|7+hjy+hc^dj zD-;5$KMI>E`i~rw_WNP|CgJB1T}Lnw==pCcsSqg~lYDVlhaw*RN0bM)5s>)g6qJSm zZCHi{duxwXOO(ESl~N%el-(v@q=;>u5UZFOhpUIoH#tz`vAx%Sc zHYV*OPD0JXO`e~4mJE9~bI_4HRYKKi^>JLCf@2rSPhRpG&E8l$j*SzY-0l~-M}-G0 zf5^BIYiDbnt*1hgVdpLh4BgA_Pyy<5N)uCA36%9l33O5VKgJ|s!hjChc3IOT)NNdE znQbx0OZg8fH?k#S{g7zA@(!!7X}!V5spZ631Fd_G__M58ef7&QaZGh4x$+1OiBPfP zSr_Iw%Z(ba=2qHYAf?j&qm}lvrYewfq|$!1yi@lCAP#)514qbB%XY#l3Ix*%=&29& zqM%9*2fH;iH5vqvurV>6nR{_7>kU23YCfaQ4Amu6u$z4 zo2kPYakDyD6CY|)#H93??0OD-p#)B_XF*{D&;^>gy8t~|f}ZRLt$3k0z&>2UUN{fz ztP6X*ggsuuHVq2erRkQ^0~v5@u=hqWm9hr~C_5#^w0UKv*{KsU;-BCe-4qbJ)kt#LL*QO-fGD2yUS`*a5? z6WiHMzDn_u5P}l;Cefb4%s$$j$Hhhj!b)kewzPmCwgeFSh>z|;eW|ntF}g4ifGRTa zIT<%Y@qByl^KHd*npgdvZC?&2m1yHlSiDk&?WluFnAAN}JkM-L9bfuuN{*X#z-WnQ zg)zwaUW3g;&&kJ4v#6`7x=ixeCv;hn!r)>oq9>mkv(8AR5st%Nw2Pv=Nq|*{z1Z3# z$ct8sufwkwR}}u~zFmy=o9?;MU3fyC(|9w#G-{?ri%^Sv84$2(fLvVzM5e8i5?GB?f`N)iB?JZbg)3?V z^h;5+$YsF`F-ujrHy{E4Yazc}%K+nx2{4A=%gF6Sk=rDUB+}3Fdt->xBJvV4s2`vlICbdqmV1!e}VS|Jq{C1z(BbThQbS@g!bLzBgaV zQsp_F4yHAza*)X1B5-+s<9M9@5oi3^rS&IuJ0}C;*4M-W+0M(Re$+cGj@XzN&Kqvp z3DZ&fMte6gY~Smji`hY{ql|`n2b_$EKH!oh2t@mo`9daNN=yo~`p52?CC9 zrZb^Nq;2hVt;n0u&#%O%q8@ zqy+rM09<6oQ>IUdEdyN3tj9D(CbH|2 zyCf6ml1f=3q zXbXz4QO!rGIip6cD^;^e%TreKvGdgY zSXbo_3UpBU{a35|I_z={ul-l+!*vsrAlb&0_~H{mI4&wYsvO-o-@xedTUP#tez;A| zhmztf8WpUp;J%*t=na+V-mr%mmtuzL#?nEmUp}@#RuiPKM4e{(2djJ%Ad<~$wdTp- zWr;Y4HJsQK8ERI;rmJ8MC?7~U(K@!yu+cVFYa*}M2hqaESI{hct4bV1n^=I5R_Zb})j8J7u7L~(1Pcp>#l#moBdX&IO3{|c%$B5qwy zHnm(SZcwBxR8yoFZA|KlU5r~Vm15KXymcjoSVv$0h~*Ou>j2Z8o9TbV=gpWwRV(O2o8=}u!%iH&tE+#BsR zvXZZ6aG-J7LMA}Vn%b+$vR5c*vZ{??7&es>%&5>^NMLE0chQQ+k?KR~HQ9(6$s`Lg z4y9kkML`GIUMPOG`NVh~gK(Xt7#FgqL^)yQh-Q8hK-n2qJ{G0F|p_yoSXB_|5|n!(H}3@;mKCBY?ar{H{7)6l~Ry1hodlB2D(r_5NN*D(?Vfs13xYJ?mDPcVJ++kqaw$9A4 z(h9wKiV*d_mdJ?J*BgD}yR>8a@5m!j=2V$?auSMnJt?<4O7d=Zs#6?(v!Z{HP78P@4c!L*UE3;O_|$@V;G9#7d0klF6nczc@9ZS@ zlQo;I{?Td58QgNK4;SHH2k!5SvK+34dtFS&<>AP+kpB7n%lEIRuV@4z&daoK^XSCI z_A0b*W*g}WLHiEduFB`F)u_~(w`gXBBd_)Kn)~CFUdN7(&5|A9Bg((2)TBm(!CG4M1T+o{$e0RsAWoej%u%O3yaQ^QOl~wl=wbtaXn=|X zXuJd@_0$1bTJ;boVt{U$urwr!)khhrwn#0-HXJ%fb0ophne|=Pu(m{mz)L9%-ceb! zi0ZB9r)@jYU)GDmMivPIREloaMp9n2L=rwN2k9+YefI5I{^)2Onr=ty(6L?I0*~C{ za=6htT?oq85*~g1dent7Hmm40_#jjG zgS6uKAWWiRWW|v#trSmTY3&=5Gq$Gd3BMyOOW}9G(k7M7jyw+47Nhb@tTf{fbwoDY zHqC{=3uI5ea0ml+#tmkNM!x?ZOvMsF>62y`fdY5A$WXREqdjOVG*E*~11HOI&Yt%$ z%aB!!vme8-P>%EdbBGfB68B@v)+<;#-1X&C^>qrD;y;3Wm_&sXfALf&Jao>-p?i2rSt|)#8Ft` zMAG_W4)_7GP!~gX0kbGRt?k}fmPl^M!(+dhgEa7DkbvP(uP|BsG=2k9nAnZMH^M6R zeQDoAJpwf}0}6XNJ+FkqtT$)?AO(`*p9e@tQ29HBgy-JJ5BA$$Sa z;s{r=I?MEveU4#8qtFY2Xg14uB}XYsP)o4iaIj`FV6B8vQ^D+;qD%TAPdjARLk9UO zm9rM%$rR*}J-eCO#DfZ1dMxK5W>q(}rOXAu()N*R)oz$(C&T0#y4G2?bp-z6zyO57ziJN<$9r^%9v2n5sq9GSpG2`sez zgi8ooRya}=hIWgroRC8}280)3OUL4G6l6hC+Nn+U0PxMH%&opPszSYF3z!uz?{YHu%q~ROu@~1d!mF z8I}SZ5w6LvB0A_ALmLJe1D&MBW|`~>5K%-cf-pTgN(pPGg7(sXyqrC1K_cKg`_-;Y zP~r-!z&9P>pET{Z6s8ET;@D+nYToRxB^&h)09!weB zxt4=b_yuoOcW(dlo(N3KS7n8IBQX1)_tX@!*$vdx|GcLrOPIApP5sYXe;#sLGoKVh zWRTEZ|pA?VKb#~aTZO^F?$X*0tM z1X_V9tuUb3_2*&{iqhM|nXV>4n^v^Tks+4a)C4fWAF+e&Bv#b>73HpuEJVFqLfC5b zt7V5;0wev;Ti;p{M%bhIO^y{%I|y}{5G!08Wop%r4`u=>TLz~kNV)%c4^>*;pCtQ3VP*1wn0=S8|7yKEj!nZ0;n%Q^ zrl2^VRunf{H29nSC@#FYck-7FFq*1BLx;?aRd-0Q8U$yj}F+|<`E2vJf-L1bHiiZ>mPW-BQj+2=L)gc#4!@Th5^qLGc16P-Y zn>0OEfYvDLfs19VGtVMRPWf7!3JT|71~wts(F~e}aIlNvrG_+go`Qb2SSmMivP=%? zM2gtz9rDvM8aXFYb6UoTj-t@iIFbt+I*P*9wVK|T*O=A>k-KZ7m*BhOC_|!NNC}{$ z6aelg8M2_-Z4I?A^1nU2J|DGn+swbKQt9KD(;y3O@o0zZ7y*{g7Vcn51iu^^DH&)0 z{Kd<&`c(81?;y%WGx+0~Tb>sdR`p?F^!4Dor(ce`%U6h&^J3w9U}4p{u`pd?fpCo< zIu;l>EE;TKC}|NV+*Jf&QYQX15pp$}5!mw-q3i|5O!){)2wp?jm=m`aiRy&KlL=i!rTg;BP>`I42 z4_2jv|7yK$Y2jeI=95;18!yotdO>%!I+-pKT5bh<&_Jw=3dvCZ`yPsWo zyN`XmidFx$BANR!HM>{l{tQ)r=i|QVP$+)7($uFaO?|S`)F;CIvM8 z)iV2^xBd^y*6WhGfyQleRcb5y*BV4$vb2Ks(N-p)a!fBQ4u`Y=L;lHj)R0!j8?C{^N-(1OJ(q#-&Kx|X;6 zY@kExQ8z|I79$peD2D>9?`VM=jd);Fj29pG9G^#2+}stWAco?puU9A@%Cc3)RvxYQ zY70h9r#tUo%K^Dy22qV1pCl0zQw-O|Va*E`Yj$Kqh0^ZY{V|!~e`5!*C zJ{#&N%d5@_jc=wQ3Ge@vX_bo)t>3*Vit;P9k&EYiyt~EQeD4uO#(dBXhT2AYoQ=-0 zZM-X!F*Ef_=JZX(G+~OVLzAt?<6H2aQhNDp_ON=wnYTyALP|9Y@zhaRM+k$N#H}k* z^2}B`v%)Z$KRdGf%2?4Z4tI-yogER8ERu6MP5*3_w%?UVkVeE8+Z_8dtRfxxH&$?e zgQ1>uOA1XQKawziJm61{rt@7;Z$klAj zZ`qV3VG#yMad9H09SpV|6rLV}DAZC(2O9=YtE84nmGVSn3@E3%Xj~Nuyz&7>QfNTA zXh7-0`396=vvr+X!ABQnEET>HP>mu`ANT##I?e%g;t}WFihx8+KSq@R7h=SMI zeh^**i;_kca`cGE1d?Vv_-Gf$jwiN3mLE5CM)iZ{vBTMR3J=lrk!;jA50BcTq&DLx z9VL~tp+ml@nto-&;iMyLIkZXu6}Llq1nF}#N^u>DG+LVNbck~U`(S?X6X6hN{j#`E z{nIohjTl|36CxQ*whLF!I66;5=**CsN(Z-0FkG9WS51uCq2taPh)EnI#uOYRD+aYM znKt;c#Tcnd9RwH5pe$N+q%-?i3oA7ry~>Ro)V^Q~vKt3UwCq|fDi>>*tLvJR zPq&LL4K|k`rb*i7b7ZYDN7kxyqL7|0J4|_$P$ED*MB68kQ^4-BDa!VGQW)b1yP3HPREW%>3y%DvWBIO zeLvenx_>0$j()6&YhMS_f)vFRRTD9^=KH0b3s!`o;MP3-NZ+T%F`QLt$ zrNCUw@qK3EGn)Lha@Eo-K?yW1dZEJn2p*04LhUANN$Yu29LR*`5X zv`XxuiGED9KhZ1XD!hSme;(fWr#OH2CxehHh6UbWSTsFttj(`xTb#`ZK9Wqjru(0B zB=J8YO?)I-Q$aVZ{>CtoXdqKfBY-(%$5Qa&{zP9+Ku`Kg^scXDUZd=|SI+mI>Fk{K zPO9Fy_^u8Gp;`E+s5A?eo+v6^OuWLZs1RMjDx4H45nr&MqbJcQ^h0^pI8L5jwy+Q$ zDLX&X&zJ8-85;$>J@ouC8F%egW5;4Vm)Qn}|99*GMay57#;TDRf3v zvI=O(n2GdDNU}!i7A;oKh)wM2qe(}An_261m)TpG=P7COZ95-@ukuAUuyDSXoo31L ze!6ye`*aKY}L4crw#UIMLq}NL_ ztxat&uT^6WSP(T$h)SKrrM{_>Ypzsc6Z0d~`K{d0TV<7iE+LIqN?N6t1clI5HPD3< zAikgP_u1$DF*A~FVshzf5T5hA`|PuSJp0+tul?-3b?%tVBS0M%dniCo%g0J{>KQ<3 z$ebutF%5wpEDl$YMsuE%MDStw@9L5AC*kp;&5P~PU65t?55`5RrreOg!2of+S3DcgZdEo)ptzpT;byI0o> z>&VP^NRG&i;)pA6@hYO`m>QAU$BaD2^|UI2Kps)W*WI8Asfu-@C$>SO%RE&vPpzUn zs)|)-JC4^)k{P9pjiXK~!d6m!k4%yo{huH+7Dt$b2xc9wt!8k#nW!T!7VWqhIn7ct z=6uc?Z)q56ZPgi(*@I3SBQu&ePG-D^-?ZqM1BJdnR)?x-_)HeZAuY9{B{N;R<{wW$ zFPI=oKMlANU>x=4RGl}sJ5o;qRsrG_!wyRPY)EDhh$2hm1K|(G^F!iEW`Om~%OEwG zE>Ck7oE$&U%2#Cj1`!5_gKC@Z+iRf<)j*(PS8gmYGem}rEc&VRp^Q<)$`YMil5TlX zg?_jPjYD^n$<|^xPH&-Ah?kRkqNO~fXXtQQ)Lec*{8rl8Pt9$|o)Vki*m9)J-(Kj7 zv8zpK`Z$KhH+#@#BuUau$;+|@%AOQNt(2pU(HjUabZQrYDlE1}ZxK{kdob{HYvDaw z@Lj8^X6m}%p!N2DQ85*Pnp}!Jg;4a^UL_T+)GDKBbht{4TuSM$&l5|7iLyy|g zjegy{?`L1wd?914kHsSt;{T08zkofk_Fn#Dc?8N5%NSp+r2Y(}hR1x^6WIVYU%wW> zOHUh~vwAB#@KX(cP7QxJs^JHz;SVoU1A^YFe2;UpQwirEePQ!QqZ0luCH&FlOCTae zs>fDz=vkU$m1F+8EMsakXS~#sH(z}$)+Kf`ekJ&`IJ ztVvZ&Le#R3V%NVmv3fsTA21+0x*$lnWR+~{@M@8#U|J0ldRp07skQwitySe#$&TX=l^F|7E5 z<`|NZDOl{Fw319pkrtd3E~W*b;kW4L2YB_shxm5?`fvA3VTo^1N#a}1d1>n{wPaK@ zKdNu{t^anP-50Jm?X6HNhu@-$+|0K>rEjr@;BsSaUX^wf^`;OvozgM<7G>`yzCERH ziHD#3mY7p9QuP;~Z?yTXqi+}D-sg|#+uiHG-Rkm8bPx2rVY^(z}-nPFB; zm6vHn4O67pro@7ffWB3amt|NP4CY?+yrgqTc{0;SlUCJMozNGRxEzm)L~7c}FUAxbqLdzqI-*urC;-wm{VD%>GDF@1`$o>P41p7=b=2H`Ns|O=N5|5;cId$c zxo7p);dA5xV=yzia?eh z^1X771RgV7CbR)E*oF_V5bE@fNwKWOUeLQM9xKYKOMA(>v(1{8_;z_IP-kLL)r#DP zpa-`h51k^_VJy{k=h`-cp{m+fj;S6-hwR>s+ zM@ESbeR9-39xWX@eNUuc&p=Tf`$!bFfY&IUV;Jb;I1kYw$7+fWLA(Y5Ke^~|W<-bD zn#}K(4ri{*M2Ga#3&v35>%cZWyd)uNT~wGhAxYZAE{*V25 zEAX_YT2H9<;pc=Ti6?+3=~oP+y66vCa}VnAql#ZU23F?H?b+U*%;cr$V zaXB7UJXje~2|75(oq%-IiSDQq3clla+lg*;g1Px@I?+v?__1_&7O^SfdGJPTm6PzF zf*B>hd?vM7d`K(`lGUi=D|+-hkYA#5G=JZY!82~h0C8Pz$M8%3`0Sl@#RWg(iVK(; zhdXkg1w>EwCbu~w3%RSru%Psc?z5aRc_?Pq9*RlzG%UAVR#RvvjBk*4U~%-s7jhH_ z>fVlle)e?lj?*02}Cvkj#qaRq-YNDP}c|<>dG0y zeb2}s2A;5)pC)YLy6iUl5JZ2{`FX_6%EGkFKQ#e&#D*q-X*FSpX*U5^rZC+$0Zd1Q zI5NtgSs2Lbfvm1i0*Nb>raS5{yjZem?m#z5BKeuS9IOC!z>5!J4Otoy;3{cE;3{k< z1P>0rRvJ0QSeugVS4jXNoTaJ3vF)x2o-bh!o95GC;|vwC8ZElT#$iFbW#?vzjWdT^ zHonJfd`~jM5MB+-ENQZ=Xwc$P!Qq?%hn_P$W6t!_gkjN30=c6}Uc(}E!a%Ho(kv#w zr0^E+=pe5RB4OK7=_n3?ygvPz;6W zEH88{T+l(Ns$;uom*aCG44SM3UmSnW)O!Y{EmCo=(R-g} z=cDM*aEKb9#POk95|L*7m<2Qq4bXt~yuV^}aMR4)y;27`=Y!g~Y^tt%Oj8DCWJ;t-&Bzf<4zSF+%znnow)5J!Z0X5w+P`cF+E@o)2MvvRTpl}pm8P6C@1ua?BuAa z^7mPKkN7as2<~upaWW0;s4`R@?td8?b(OAJ5b4Z88OF|3c z=;>-iEb&SjZM@=C$7u`6{<&^mqzx0YxS1|ERu$hBv~*p@v<6$9#ZEUX!ikK=u}c}} z%LliB8E51@@jJXnUdxgx#H^O9LOt9W4_&_fxsM=cp>}=FP-7N|QebD+T_5}#tbE|S zC?8={2N|?r?}GSLTB!o6-~G{v5~|4(F1$FE@PSkU!s+rYdf!-itRk*!(brihm}rrN zow_#GqSKQltZUKQwd-0m!cpq>AX{Ig`l@37Yr>Xs)STOuO8P%j--e^HG*(3Obo!`8 znDE;?{2l4rQ|a4c6HdnsAESH0(Q>66g--O7Mf1-de<5=|=|pM7Oa;C2pKj^90ooIQ z*?w_r(F^V;g$a{F1fqZ9_u2jh{XWW}@k|Zh^I&@kb3>$Jz6dQ_gV3Y*y}HcPssY>u zWvb^8TdPUf_L?MfM+o@q-0kZK&?V&REnY)l9VTvYxw~0Xp7Mh7)BI1t0eWVy+F?$- zokG($D!+3V)3whRgaNTGh7Bs;!aVgN*Jk5790mK$#&(=8JVqbMYShHDI#97r$Qr)b z(wtTp)E!o5B5E=kJ#~a8dwUT6Z!SnsbTy)i9kMV3tvv1SiVLm>~@L_=HIG+WC=pSURN%$;YB*8oy7?Qg9dQqFj+GLMx)Y!VS_2r2Q61`(?+Z4x??@8*oQFZeyPG zY~je6RDO!fOxm26K+X3qNXJ-*mDv$iFf@i(=^87u!V1Z+X|dvEI-G36%4}d|b|kT# z;_}UwjFX|nHcr5*XLv9vJ{=R)ffq<2IhXdisr`Y?fLqZweh`d-i-Z}8YUTrB>_}r3 znl)?1%X1rclxhPow4{W;z)DLiJGH|-XazU+7*bY`eA`gUO%s$72Nsx8nD)FH5zEac zmYX*rmP0`-2jg)d9yoIV(Y00UO^w6cYFtQOHdr3P~6l z5=p|yIwF}LBN9nvv-AoU0gIWjY(=OM&ppevm2X!lHM#+AgXKXEk>SV}k>NF%;ui+b zkkrO=q5PHMB&AN$1UPc0!oIq1D2%E)&Nw)>nCgC18?`=Us~> zX5U6*uQ#p&$zKTqw(;dxKP;`2O0(uz$NnL$)>5xsM5m@&7g5-In(X7(Ny*irG@U!H zIEA{?UMD5KCMAF3`kWar+2Ib~czq6rlKc=Uj>ZPr*!4NsKuf3uSWnuxWhnvQhY>sQ zb{h})Hqnn^1mL`s`XI|l*XO|BK+@%IlNWDHDVh%n2@o>wt*+r@)QnlknIr1CI2c@h!0qx zlyg;v54S^%zd&HaR_=Hst0U)%P))qrwuzQD?+ayKn@lvW^krnK4W1FKbAp=&n`pV|%mg=uAC*HQMT z)T>P9f_8W(ZrXvH^7~tPQyJWIcpxoAN)zJTrnsuCMOAx{uQ~O^Rb@Y5lS-~`aohA> zD-b9tliYN4Ag5T;$yOH!wcgjti|bLRG$T>x1E+a{kw-ZTyheM77`)6%irWDlR|=YZ1T)$ zw-DpLsVb5tPueEweb!^D2sY>n2qUW2H~D$;%xLm3MdTP{NOX*tozj)oQ5gfPjZ#I_ zk&!B5>u}@bS${+OX!3A%pSrsmcBL-#6Phn6P{X`s<|b7{-`k84?vnoCVPmSc4|;AU4mR??+$Qc1Pi ziTApii_5p9>4eqh#Qiy~T z_wi_>3!J_u(&6|KjpT0_!cokC@2d4pVU97PQHt$gj1@D0!8P=aYa5}DCCl1tr2T1h zM<2|~37bb00bW?nuj^=+wpZg3Wh|O8xvS~H6cZYprIq#r^^ES#mL{H7gK{l9g#(b! zV{z)>g546#=9@4qJdHWSwJv_4>i!H9Xwfg zU)nh+p9fEwqgr@lA7mzMCi67wKcrTx&r8V42=JpEdwSSYtLo_k&;5QP8Gy$KNdX`2DRoooivgjnJGV}j5G=0~xre?k$4rnY1k zaBP0{>cR-OXA_dUk)qzd0f8aJcig=#~rB>Yy^{65Xh+h(q+g}NwP4=Qpa zP0oQl(r7qEXqpj4uDWqw7*~=K{V(>pY))-_7^&RV$^x@Qzfb1&N^ECD*t3*s3L98YvoxqWXiJN@(>-CQ9^L8};P|41&vQsY>ary~$7M`BZCS^lYQJiA^~<)(7^T%vbh z%8ry@9#x`ts1Cx~jk;(GKflm+X{CL&vU!oq?fd2Q>Bq+g ztZG?86&yi&+lT`(9Mu?$+XIU$A4UmFtcKS+hg_gaR6t^v8a;$C)eW6Y+oJfiZ5L|K zhFo-6XIz<%x=E&NqSc4b*?vZGb8No>T!_y&cBI>KdX8t&ha zxibFh11R25*R(IvwLYg4emTq41F+d=%#HM!W{Ge({A~F$pD~frXPQ!%sqI9lFd&US zEKka$l?gP^iC9i!H8G66PPDq&i9$fP1DpDp35_8 zClH6C0V!wyU+1JW4{NWjk4X6i<;NGUpAY8cFY4#9_<212)KV;O?<<}6OY!TD_;o&h zy)}M)Hhvu}e@VrhjbFExKclsTn=N3t~FF6EGj^Z(NB;OaL?e%Pm*TOYwJ5VSuxBxf{L}?vI459C>{rt03 zPk-a*hwACMqIvx1$Mnex9+K8}``i=}RTDaM(h^=6(hrc-_mQf-f%WHwqR%;$$rj0AmtkH<65na+;Y!R9_|0y>@ zr&~>0BMVJarz_b>GpLKOTD8|}X0pW8(i&%obYNa%KC|Odb0&AoZ0GZ#e)P~<*^E#@ zq-f<$yCnj3T*0HH}bxTwrC*`){y);pO&oF*~=ZI(eiBr*VPmO*SJG5~FsL98V* z0Bx2*940aVZI(gYG%^5fmcblW!zf<6Sq3rQC;=!koKKb>&bTi8K>`nYDndzWV++8k zJTa_Lm5&hxqn9fpNjw1x>?svTC`%Xo`@v!&xo~#;96?tLsG+Tt`KLz_P;zI9I(C6Va$&x z_g>aK@^SG30QU01i?s@!`d`pzR`EZObGi>3x5WvYwd#iA6FC6hfis#YB1jpBK*P=U zQ??rkg4bJ&L&?8SEcBamUz4F;7v=xOk+teD1qDh(ttM`gZT2;vi>xra_c^n5NM%ks zWEr|#bG=I>+po^is#V6(awTvLrd6=?!RGW-oAX_Z+f}`_PL;Tc)`=si&HbMjmDwt= zGT$6Us#C+ZBCORd8u2fk*{ZZMCslePbDX|i+vQZj98Meqr8G1wXi#cZLcfw(ZINU9 zLPaL~Vxq`%({26#+V$VsBKFoz8hd)!*njHGwrEsxvS=nsUTO>eJ+P~=_cUV3Ix53P zXm%=_n~vHkx69W%H_8-=N#O^iradljOo_C&#CcciEFCBh&Ny!Az~>-l9l-O_6b#o zWDTfOhmwB)K~Fzy`i-0gD7EGVHvO#5$EJOg&3mnDytT#dTNBwL+@rnd-wBl>4_c#N zYWTn9nec1`+fq^+lciL)W=rFd^mp_$71nlGr==sak$sKcTWqrGroI$~LoHqA@B$jp?W{pvO!ywIiCb63wVwFXjExAOBCy zzxh!$gDn-&3Qyz_tL1N^ zSJkjr%c)nJG>(pnh2b9){dStOU*-HHt?pcJ+{gRg5|D-m{G3@z~X8vs~_fR|DTs=^~m8OH|DOM?vk#ljB)a_b{)mDIMVt{At zV1~x>^5TmTjPqW-;UV=$=9lM;tY+mGost|r5(M>^UaSu^c6>mg=>x0Nc()P2DR1)( zX75lD7YXy_hzQkoVn)K*M?FUnkezWNR5Yk5V~Q385efqeKt$4OM#!#|EVXyllM*$# z(`N{#n}7Gg-}zwv8nggyKLU#seHROqMo#lPdPzEu-%-GHXOult_S*?%f+bT4!x43n zPTZ1eVnU8^8;AnSf!QIVqPq^sx{5N!)r67*s#HwfwmlNz(UL~H2pe)l`ZVil#+8~|(ihnU z7oOg3`6+h~=~~9zozvA;OtoK@pPM-f+f)K9>2DF8HN2W? z2D4yarT4FK8H_L5FlD*k^2}oYi`ZWGSLD?6^>l$T zsdwa;I#BYCKBL!|Yeym)m)=$JSmA-T8UH(~t(%zy>}tH-!$Uht{6Faz&F8=RqVo5? zlTiWxky9(3H2N=i@!)r|K@PPTd`g^*Z3_MO{?A2ube5Bf>zTnq#Z@9RM|94u zeNy5XR|V_XUaT@O+xJ%Qsjqa$s(0+IerT|xieIIE)mNVyTv2U5HQ3r&E!O?xAg8NN z)r&-yEKbkNWNaZL#3FZru^8$CuC%tR(bsq|;8&i~$Y^QtPGX;?@kBseOZAl=`&tBm z;L$LXL#~>x^Dr5f>Z{)bDzB`re%%7@EIP)=9Q+B}aUQ@oFDU-kGl%mDt^PBK#59}; z2|uNMsT2llxtKth%7p}0H+Ie^5NrF%1eP~;&Lt2wdNvgcXll_eJCl#P5eKmVQ4(Y$ zL{mJJBZxY82Sh{mfGRlJQ=ABqz>9#aDJb=V&xtU29?%yzXPb{jO78ePd^B{DY?$k_{hJ z@d5Ar!9}d{b)#?ot(G09We+j^1wX~<5yun!5b38Ayas$C!JK^DSxfK<(oYHoh4kqu zn3O>JbWwc!WCy9#obcZ@|GmhG$Ddx$QRcMg~5z^c!8own!} zMi~)QgM?ej?I=|OI|iwuOnm+w?3(ibS%}Z`dn&Gn>OMNS#=HPSUCe>qU7GjkG~xnm zX*i0j^1{sbGwIuLJUzna$pm^FA40+=)9+%I{awOynIS}0%Uzb&ndVN z$q)b^5_HDd%z6?8ww8W>McMd$QBSnI&+EwnPUrR92B9h+qj?%+9v4Ldp9EeLOu0`n zA(eK5G!Bz=t1hIpHPX%t7LQ437dhPVoM4)GHl>{>?F?|URtSHbILY7h{(H`U&v0z? zIXQcy{3q2meXl2d`mCPx;hdiI;S+k&hck#1$pKid=5)f@X|cw4n3uR3|Fiq~-UEWOl@nJ&`ss%pn;`9fv$OWU6Y^YYeDBvd;F zS4wJCY?@-cqdImzFV!!omR?VpOVtZh3Q1AV0d066vBMBw)m5*d00%E3tmmMez%NJnF+rIH4Q zC|)siq*<;Qq9J=KN^j+g!H_EkL#`MMxneNniouX821BkGv|P~&%VC`be`R%5%fZYk z>um?YqBa+@vcUtTg5gg?A+xl)=9IT1GFoX61}Md#V!&=gja}cvv}Cf_HZf3thmsj4 zhQOV#=1mR^)3%8w47O>-gQ50LxW36mbXRT|&Qo{RTTF>^s3$_8!HE?5m0yY=RMP<+ zaNVz-MJaExi{Q#?8=o+^bPje3p%7I$Boq=`LWx1M0s`0)3SdhpfGwc_wuAy0gyLXL zt?P+a^rMU)3Pjg&41UAG`TVHjN97+Y@ngk5cE=B$7sCFS__2qnGNc}ZK|Kb8dJG2j z7!2w$7}R4hsK;PX&z03ROzdl3TX%QB_1THZrOcRnK~x)uGwY+=wp{-Ss4z*G#}jC- zfBG_N4DZa&P9j?_rIkE^W^p00w$s2*Cio=qxdcBBd|q(KwX+G-@B%jH&HB#y?-?_| z?MwqRv1@c-)u!|>Hh{t_+OM{qYG+H#4b$Z{q3B*Cx+ilbDuNA~(FZ}DVbBsk5)&e^ zr7b`hf@uq|r7gggwg6k&0&HmuFlfug0?H>4OiISPnk*({h>~cM(kOl`?zGAV04DZC21eGTs?_g{p|%iBPRKbG=|fvL7IcUqsB*4jVJY_(;spr8|&xy&N zT@|_HgP~CedC-Ovv_XiuO2NtD`LMUUD1U2V{aoWF$4sBfn4ua<7yd{ZTowDLH=^LU zn!+dd^5BzWsby<=Qu`XU-vJm1xGf<1e~6}Vrv!g-V&G8uEn+WnsS+|@Ts6*CRlRMn zT}M?V~QD!DP}OHn89bs zsn?@jVtq2L2DNBt4sEy^Ms^jP&Um)k$CjuN|8=ib`{u;(v{|aBVMr#uSW5i@h7VHR z7OEKeLQsWeZ~2=(n~?YQ`cgvvN;{NF$Qd0{D|#+iNM5hhB~lP4tgjIPNisnXuAfvS zzal8;*&9inQ2a&&q06vL9ijVSk(EPj5Xe;GG*gKoQ;8u{iJ`w*DiOjmaU5-r176U^4gKw(TjbRA>HG0Vbq90k z8f(Q7`J*^#h#8Hk$Fh_j?ABs^gE7Mwt(~`!i9#20UEGFin_DV%{KlX==4Kl#jQ^PD z+xdZnFS3h0YOKY8HqDaWJ5DieF@Pua2b_#V z#qyPV@kbt9I20j1Dio2vqJ^|prG*nYj@QTsWSr88c+un5Naw_YTO)m5zJ=$xL~c`{ah|Pirl;ZlNMma5^WjvJ z8JvtQI`N&?B51$*3!2;wi8%F}{yHJ!6Z-27Gn=MM{o5pes%oiTjDvAC95rg)AvFP{ z>pW#wAUEWqyx`il)2|ja59DdVA>TZ-UDPh-*51ZSrUBDf|F0Hb&$-3>wA!$0Z?>#( zudv+4!q(ABw`{E&ZHRt2)KgPNBNVx6B?y3`W2iL9Q1Efz%Vny)Tppv9&-Yu!a`t`t zm_pjph1JbpFwJ?v%78aLjJ_DsjEPR(6lYtFiKN6;B{4LoRS}pysVCS*1vDv2#aRSI ztMdpk+FP$=IF(?RMlpsS@q_=dP&2a*IrCdtyD@V5y0k=_uJJ7BJZa8@BB9zc!4cs{ z^Jr-hqSC3d1^(31*14 z?*tG=1D%tWxyXI3O}>p^K`^>;(*y1Q8&^q)T}$}o;@jI z`ZWPZ!)&Z0k_}7@GtN6B)xe~rZY@-cI&o~4_D-WD=svBqmNUmGYpwFfUeJ`GZQ?5P zF1WEeN_nU__XdR8b4Nfcx{b$8U0e)|I!l8mY^ww#&=?g=LREnX4Lb{>-s?E?owZPCS0-~^P!SY>; z!K&XP+c@+pZWfGAlg1EMye5onK43k$xs zbMFwkBZh#q+hSON4#iLb9aPEwVt))NY5QWBfmS7jH4)Ls5|IkUQzJ4Z=tQr*W;r7m z8+DTGk)lHc7mEH#2$q7MhS@$^+^}$-LEiHfekzrUFDMRX~(1K1Ld~X+aW*7Ciq5=I})CGSDo}`#(G1 z@~kOw*_LNb@zRSoG+%Bbx&(@JbbrgU43P#;R#V9*UpNqHy0Ias47MbQG|Cenn-U+> zHgJMiJ{>1oE9@gq>*o9_4Jpx^lE&-@@W?|M45>wUWScX?gOd$2E;u6k zphT05@_;nSfJ_61Oaq1}CGj9i)+8gJX~2+az#hDNH57*K&`=n=ih)3cPz;n%473y|1}X!^Ks}+@3+lXij>&6!YeeH|2p zjL8hfZG%c+K+*Q;6LSWpYOa34neQLHnvP<&DV^{FUl$`mH;08$_ao{_Q5aIzWzBKE z;CM7l`r5u0sS^}t1<Ob zFWP!#pP_u$iAwOxq;ls5_Akze?hzw!DZQwpLPf3;EzN=3ExkM3p`|5OK&;^8A#AN9 z9`X`=c*Zm6j+Utvw6?%-C(M)J`Jb8_WSdYL-0(K)oACW*U>*!p^h&YnI7~q|JGe85 zih}K}!8TI@qCpRBh#~z}K~BF_e!u6jG$_pdHCr-dre$a!OiMn$bs3xtg{9=STX>pi zyC`fmb-~^#`YZ35IG7E^0CLdu{htJ2@AXHjaMOd|46Wn{OTx5*ZxNaFk4{j!P7P$DJZ=S z@-SC0i>Ft@vGHWc*fC`67)m3h{>4ZE89RQPutPIOP{N&>rY}5g6OKu9$xd@^hTMXY z!^e={8uAy0T#6x=Y{<14atjP;q?#Oy(QVW(S^-@da++&2=ER*>r`)-;xw0R$h8@A3k&5_O_Tk7>xU zc80%n1MzAa)|1r9i3dZK8RM!Y)Hf5f^*`LCZ;F8=NdE&@ab#*wj^U{R9+75^?QXHu z+Gr2b>gb=D80w^1SiP0VlOv1MQ&V1?lXRJ%R18qC;df#k{?p+!Km8209M-0X2<1eX z{KtMXGnuK@w`LyHmySAD^V9?lFWLXE^h8-yGQaW)7A zUq~PXc|L(qB(c%X07(+|Y!I3}n~F7gx&o7|A(OG8XEi}!8BcY>5(2ykC`%OZ0-(%O z!1I7rfKLL-kR|mTpsZWKvw)H)fM)8r<4rz(nI`kjO>LL38F4@Q9bitM#-Fb=| z7mkBsb?qV2PbYW{*oGYG7s<1h(oc|nQgHPD-hk-;9rT|dG5#u?tH773zr;3q-+^YL zr33n|;vkJ4hd#X+OXiPM|18ART+6Xep%K zcW@c3JpmTZCM;Y4ek#FF0$)h*S>PuV{5bHL1fK_XpaPYi13sV9&j6nj9N2s!fodY4 z!`q=MV^ZPmGWzwGkUZ}@7_+tDJ5rQ~*gW0#wq|keWctz5diX;LZCl8_mHyY|n9Z+s zXJuwQ_V8G2@e@(ar1G`tYbi3V@IYBVrc}(rH9faDAijuIK@y05qnjmf08ao`bYT>A z5vD&&=JQpw1oNMIf2f`dyPvR>Vm0_I^EUV^;&86+kK6sYr4e`wDGBW{`IhFwF$!f> z(kUIzR;;f7Cl0;2-G9bNU6J7rD6PA-N6zXEeg8ztf$dLH7Is>p$0ySptbahi8JYjj zd%;Uza@OGs`vTOTO`QR$H>iQaz!~3HB>4tz+|AL8 zmPFUTNc><-7FDf;vPa-T`T$v>a*;ejJ-12?=3upwprQdB0q9NDLOpk??%;ov#f|S* z;xn8A*3Zju3d~hoWo9K3YB$*61|MjvvxxJ_4h!q5ua5d^*E3y>1c^NYEtPRo=u%z2 z9=Fn#s?_!jia3uG05Ti71g66y0Ja-84XJ^h%eVwCbS~!;I3v554q{<^0ub+cP#cA> zKzzeEptHoB>dk!RH=pE9atwU3v)(iCyp-Ac2P~%5z*deMv>YG02*&cni`GfNi?(;E zFQPrssrmwuN|vrbZEZ9ZukhTATm_rG(ZFu{jr3s;dDurDx-f6ae*uia+EniaY9-=} z%cq*24r5pxX%yA`YX@S}j4MOBy$J=S{Yi*W>t6_VrjQN%3k~O-+Om1O&Y0HC(oor* z{ogC{?$P17U*a@95p(%FMBjP28dVim0_8DB75WHH;*>>&H;-m(y za=T@KKeU-)#}^Hqv3CQjV3dm@JE^En9Ou;;EdWZCgSPBOxM3qfkm>692Jf015-6b>rl;4MzkoG5Ur>Wr6#^P4%ez96NImC{iu zl^h-O_5q7 zf=eSUaMT+88nwo?5VM)Jt)Us)`|mHf;XcO}((!T%jhU#p+w@s)0QDQmOdJxr06%Tz zMJzmWD!<5#l`N4N)Kg8F%)kv~wr&_%9yro)Eg{2cOq(=VNu=K4i0XWwAdQr~VNhvv zxBR^Ys>-e{h{BBHbYv(@i-GuX9mY@_(PdMRJuClYK`fA$;*mjUK3|BXN|OkS@i%ft zb@NFd+rdZnx$40;!G46w_?iccEh>wW`Ulgo0}P?h45M|eL8z*A`Z45A$PG_POTIA$ zsDudag+zQNq7EY|YASbBQ~#fcYKzsFS$uuAQ*&N~rhPHULD58G@%y12rItbps>dqX zsHGlkMvYEr<{@bS5fuV=62$9fRpB;{;4Y>@#t8;>>q+kaoivZ=744+mXC<#{Fmbj+ zOLJtPC<^{maL%8)tZZr-5x%i4yfQX>~!?WCTHANI@QkL|99>D}22jhvwWG=Kb=3o?oAjZ*Bj+5do)jHcRn_l-%<|M8yrEC&fh82^aTYi0;mSe(v^d}gLI6T1{eNsL=(y#Du83&%KVp>1rm zvFCQt2b8wDa|@eDd-$c?oat)8((;Z6c)f56S>K`3KoFX}istqOckMk@{}`=Ph@bEf zMYG~VmxZ1h>7z3xXYBH#r&9zEvXS7(qi?ixrGJXXs-My)d?6bj+_FF`uBDRxs1^NF z8UfuMsUmL?hF7wT(}RQ@BJ|*VomV$mT1LnZ?66#sY*Q$N+aR}_r5)F}D!bc@S#`=k zUfJaU9ESUt_J{HXm$N=kG@*MWpa~)?$H(LuX##yDk<=JXsJqXWCT3?lv(J$x=GuW9 z(!^X#6I?qw8jWv)CT82Bhcq$U(!|V&CWzpyE_|BrJzA)e6ulUX)6d?Oy$am&NTuk_iBGbH&tnd=} z&is3-#bX>iYrY`$oe$M5Oe5lg_4Id(@SRgNw*hN5ino>gx0U~38+D;5`XS$8!oYX> z<~wt9ow=Z~BKQv1UZ@Xd4pdzp8{lhbnS-0!bGzsRM-*05Vh-Xvu$5PGYDzdA;5+yq zPO;3>o!~wE9^*Y*6I&bdo~^>f41N@N&sKytT%_eaXh5%oXRx27D#UxFNG_Z@tYuA| z`KGM5XlJx2Y)I#<2hj%Oz_+h-g8PsYDGjBmeSO_*$u42|$t|$I*zc3Q5s*Q8?ATz7 z%D`wv_HcNXc2ar|A-?ZwhH}`5L>o+m>?}l_t)sDC&=?|=cXH-r{gb-Ku?tOwSSBJ- z^wbR*rfZl?OH-nyJZLEoTAC9rp&}x~_$yixCqX8TXsH*%i@}g6vkZx>#GOD(z4uge z$HdlMOMDo#6f(@;xGB3guc#r>?%!{=J+(?QZw z%-G%4>;GsvXB@L8j=NLysdi0Dn;Was`>3ocI4#a8OLgJiRb3tpci7M}{%DIsb|+_W z?T~V*K&$Ru^)%;CGEufQ?!v2f9F}5>O3!(dclmH$Hwt@mOb^A)8hWS=%b_0XNC~t? zj^bC-6_kv|KsclA5DpRlcTc^j+%?G3LDvitJA_Bq&kHMj4cBen`)3>>8Mnv$Y2JK| zQ?iDa+}ucOQ9@B+QE_7;`=hM+oIi@U9Bivhv_$Iea+USpVf}uXi7}>rzfIR2NL!D= zM!Uv<&G~0kbC-}WUE#3OxbOuUC{%0~SIYQ9uy6S$YUwlMpe8-D!5CEO%=4~5fI-uTmpJ=_P zbPyhh;J8QnE@_~n6#29BaQR0*xMu8gu~}K93iwkQa2`FNJkbsf9F}7~>vFn>%P%k^ zb2Wo`XR4PLAoU6HD5ys@Xw&-dIz@c71g&mz#YVL;N9<4($ zC{V>YlQU2>Dv!*H5nERn(jW*s%{IEJiKF=+{gqi8L_k*5f{DTz$CxRZIA)qDE)Wqi zyp&lZ6jM1$b#a(MeB(Q0`XG9G9MKT0QO!|zaeV3FI-P0?s*9s=Gz3 z@rXt=UphX~=XH4ceQrH6i5&g4>rqRNiCYMcJs)1pdvA;dty;+@>6;^X7UOY zQ2{H8H2FyR4dI^CdU4@}Uy8h{pGLqVTK1ryk$Ivq{U`D<*P?c?2wy_TK*SEvtLch- z!LqrPAlHyK((!7m8mh5Wvk8C3X7PEU`Wzx9uCiuKCCym8@`*l29_94UQn8xHPifYx zo3vj9sQGDDS9cM|bUwa?IJG5-EC?v;4%!Jrtlzz8h^8DYgi|+=zM!|HHg?d$)IgP{P86;dkK+p6iLvuYj(l!Pl=2N*DEAoXfbO(qxneG!R2exZiVYaeV^P3@=cAUFV%LrlZs$q<}lmpK~X-Sy5W9m#I@n8>Z zYtqRI!79J}omqbt%;Nj|@9(s2M?J&Pnn?d*7sZ%LPf5n}T9Y4hi4$AOe8ZWx;D)Bu!cbklz zdz6AUGfl0GUwO-Hrpx=iaFOhqlx)}YJb zhK!Y<{Shz(v@ha?GNNd_SiKS%h;pg|BFM?UeMcrLT!@b_ zl{w~Jq?^!a$Y?ZVGy;v#=wzeOkkM#pMcmX-LStahcV4@@P=~w?QS%6U@LPw^CcJEh zJxUcj6sx}+_S!yefvI`*M#+hg!NzJtE!0;d_KXYW_b?tA2*mG}SQ$o+164w)(-=1konbsO zZy8^!OxE6n(P5QUq3O$ED^_K&{tL4f`0K!$ewY1wg?P+d@VN{xp4v9(6|jM3`X2cW zeRV7hQSC>|)qfnIv(TtITn?JBgGEnwomdgKSp7p*31s{;(Q(^J=k%WZ$V~~6Yj4gL zKxHw*cZH7~=X~l1{vn4MRP%>)f_YuS;eHn1t%m6t*C_3U?_&O*> zteO5)vxiX`;LB65+yQwh`T#d)=j{W#b68|h%Sj3e!(aeQ8pT1_6+~!pVF@hT;SgUu zEsfg@OiD@WA8QriOJNQk(jph1YB@qB&=y~i3@M1qb--9~9k^8*eIQuM9^L_^(FcO1 ztVCKGebUnC1C_yWfHe9LR{z)Xdx&Bg836y2fG&?DdrUU_u^x zL^QY~ovLX=D@rB!7iJ;Z1@z2?Bh+ z;IDsEnw2yPA_j?mz-C0g%kc|mi{2&IOE4BfO|t&?k-atWs0&${h+f$*RfcT9>m%n_ zQIF(ib^2aS$<-8y4jPNBa6A=SMuk$Uc#A@%1QBPbT|fk`A!St#vr3<&R*m}N$rjEm z@^9mW{3v5d9rl+LkSf!Ip6Wqk`+t87Tg5YCON|(H(cMvqPTTZd!=~?!YN1k9lZFb1?s z7%TMEuBuQ2K$X7Q9XJBIK5zuIM>ulcJM`fBMe{aGP4JzZ`v zp?0IkNbN=@i)gW(pirsZEach+ER_ZYUkkfT@eYoA>n}kl&pZlpXwXWLoiGl~tV}jB zFm^p|t>(<1uX7y{&pPsBA}8$>XwVLt)7zd$TN z><%oHFLxpp~rSc(&m z>|h$)A%+h#v<5GpJ1w4{IH@93qDT^C9jG+f+r!>ka;Q=n2%Y9BAFhiO?li{-a+43} zI1#`Dt?CgA{DuxSYwnw36ugEBBaR=Rs1Fi|f%W#Hm?2|$ z<~bu~0RIth*VN&mse^61Ley;#VQZ}6Syd2LdFdLV z9dY4HR;=J>@l`o_OI-?!uT7Q{RuFRo!STGeDI69=1P zK2~$$N|*;@jHwsHWxlTaeRX!6Q~-$kn?N2DQOpWjZIS0K0zwJ~mym)0n3y4~Pt!q$ znQNV)=GG6W8PXFjhQ3Gqgt&gFKxQD;53gax1Vo@);BaK6no3WpStKKbje+OUAVqnecDAB6V6?aK^ zS+X;EsBbD+78qbM4iq%uDNPwi%3Fhignv?Jk)JEY#fq%uJxZ9qOH%;%poT?(%}7zv zkrAeQ_lmn^DCjG3O&(lpEoL{)X}F$LEWFFnB`w4X>u-m`I$UoTT6Iqxj~=`W^7Q(j1~y|zke1K{wwSm$ z5W0^f?0n2jgp+=4ZW)R^P7Frw?Vld4P(R3sq?ubbMfub8*P$fx=%ePi`KSYubv7ol@*DOR(^Xl*-6NW3 zc>|x*jH|J(wRqC}$k#4s2Z$xAK)BU!e{Hyg{5{Q?uZ`OSERkdGsC?9A=F7`7c#{T% zB&L-oToKDES^tlVyf?lMs;=RiBUVF_n^~#eudOMN#SskZIZMtpj+DD=%EaqWh_S*z z#Deb@_zJFgjAa#nsYoSW-Njsx7!!+d+)KYX{>YH3xSJO7py8qs#s@>GVs>Ty;We(Y^zD*q%`jACzEAhua2(!V9XG}%Dq`h+ zSdmC2^=Mc|HY@|-;ikVony%5xwdAAb5{d$OU6*A|@ftNw_E$#Lyn=ABzY-otp0nHx zJ!75j-6WFlQUNnd>O(MksvGrVTbs`ENt@pPu_>(9c1g0!LX}i%_B$%@kAFu&u$lzL zN~us6rmH?Hp=4oi1@lgnrsnM@d|y)*`|q2?-NH&0bG8=BB# zo0(0JBOR0qNS;!vuI3Zk{yVWD$SxC&w$Pg-np3N+wgPEGbUjsu~j>#%vPVy;j6mZm8%`&b1fW8--5HU0&VS&qRr=p16eXsYC)Y$2$?bp z17!$A@Y-sF-Uw{DOBRI!z`z z-Z#dbus&ofv0NI}K?M*VXh;7;ot8!IW{8)w0>p$t%Y$GD`Hc`ru;OOrZE|OjA#dKf zqMPfA=A(b~$rq%@z8!;{@gti8xHyIyP9p_Ax29}fup)j&&E-E@boBIwMCLT61hk=? zSUx#92`@;oio-6eHB|2wP0M_vUNXZ*q2Cnw1lt1TLPL$Ux)W8I2ikf^9gtH@6W38J zv5+9bj_h!WCB`3<0cfWJ-7OFvf^#jCiEfoYya*%cnm4ihQH?;Im{~lgQxJ4`C=aTo zpe}JItM%Q8?fx1E~Y7S+XaG`p#bwt!Tkos-TdEKkzN3 z9*xDZJjG4TBd(y5QXU2EFJoknFUk^{7Lmbf^{C>(ja~Xh%ugafc*2TER0ghmSd58G zNvvbdFg%-@F50-E)hS(cqHrP?ASYtg|3XgeLepzCznJ|sq)`Z~QyN-PuyOe|MIfRr z<_z(g)(j=)ppAa{OC9tWO=Fxq`j2;z2*XV4Zm%WFR0_-(PiO?zf({NRce?c+16>HmjbtamU!r!_x41v`tK zqR4dgAzzkK5u&9_%vgGZ%WafKFl(eOTeGJ>#H1H-R6s|;?{bq=9ay&ZS7of5xTh=r zk?wP06y0{e(I{!W{X>s z!;D}BhUl<94Z0z|l`tiZZ?kY~uI0L}lVX^tG-}11*02^6C(PtoTFN3dOPp#m&~BB7 ztl1~|&iQ;Y{8)4VnFEx1hexr2rOKF?omDX1K?Vk{wF8D~QE!Z9Mod37(T(GTUXowE z;4=xx|7xLEfhiye=coIO>EnecIEWph!8UknEIBPs43F;K^`y z%Hm{DRYk(iNZ463!_Xt7Rq-Cu_9+%PDG8X9m;s6n4$rw!YE7)SfvjPN+97jV>QFmm zPIHGqP+F98$3V>p@d>@Sk`Zqs1fwG`WJ;6p5!xk`l=QyX%ViN^^gh?tXkvg~HHuoS z-sm&}OOy}I6oeZ)oDSm|6@V(c&F5r{9}F~24X+v z9B6bX$J3f6Bqb*^3E}XD^k8S$H;gR24Q))PIxCSR#o?!%|j zyE=@i{E-kYVQY{{wgw~~Irm#(M5@yuq1vs`#I59WZ!0W+bg`b(w%m8`{pbTI-4#1G z_x6sjPboK~ENw`sHl(axYqT|l&{!SuH|o1x{=V0d&TS}&SoXEJfp z@`(iy+r2KkRUUY*IC_OrWr)9papiHFvCAr;?r{?4_UWq|U}@s_O|D5J)($n1=o;qr ziu2~RW4w1y^Yy1$T2!gz14_QTVYHpj%c0o)G3yT0S~Q>`7hVDH0LilJtQ5i6IAC2u zo@2rFScyj!5A-6bp7f=8;2YQ};#-J%-3$fAn^2_vOF2cAqUku3MO34IO6{?Cc_z!J zeA|-PD%>27LLFXe)zZ_3G^{|+Cgx3$R|VnMwy42kLJgWoJHJq55Yi5f8OWT&9@!`~|~Vx#){|^Q4RBUThaV8a+W( zm*e=fR^QcmGpaOK-C6mWIiD_*QsB7dKV$dVD9=ksdB60PXJ{29Wpm4o`Jtlu*}sTA zRnPpTE{vu>rN8{)qWLp@iO!~OKp2yal}|UtDEtdHzI|SCPmL~(A{*N(^^m_3&C_d2 znVd7E!T#|D;G%5SWdB+rmC_92lR~Nw<#!=J`XnkX2m(d1-o(yK)GVzxVZ;D=y(xjH zuSGJ5=m!O&!a`wFL6gYF$B1c?AABn`u z?|f_|5r({tnqVn&3|K$#OumoIR}tuJRimoN6N=kmqg zF)kl1lDiDHI)M*!-StTuP=uoZ6txKIpY3;Ma4F{Z!2!Y|5cfZxODq8FWEF@<6-z@n zu*>&HPRjybThwwPqB##O8&N`AZ?alSK$U*%*2afk z)4K~dZG#%L!+K@2>u~u4dcE3yLIadLMX*eYF9+9)WTmb^^RnyUsNhH6+$TpCKkuUz zpFrGp%NzA-r8t%oq#;&L zR1Vx7x#n_o+hbVxu6<{!oo$%pY4#jZ{bGLIv@EK<3!v0-JcJdWg6=V=oqHhnT)*Ylf40>vs4?m$v zMiIHbo!Z7_0>UJ1do=&{!kgk-Fe|Ui${-n<_*tSkm9eAemvnSVD7{rcK{WUgU2k!j-u7QQ z*4qcYRxhX=(?q1Ykq=H+&PEkM&ex{fx%(z89u+)frK{C6Hs!^4g@an^9Wq0Dxqa5G@E zyM>m9P&tHp3Bt>UMJVkXMi5*8wxDM?mQ#p!5-tJ}OX?Z~#f; z0;E-|64J1lG`xu>Z2DKd&oRJm-C?Lc@JVY=iP^C`Ojl_n=pYLX#0 z$&d$E4GOPAT9{4j#Y?p5d*;2nL|W>SA$^a!$26Tnsg1!>S)#k=JlsMkQ-krv8)>im zjLc;%|KQ@0H%trAv|DFUikxP|l9g=Iz=AUN+V#WdTt9RSVey$dg7%j>G9)yUmsbIn z@Ogy7o0!_pno!5&dSp;XRK}JYyB_I;sqDEoO05~##SI%yBV)+KX2>IBC{5c$Y%x>h z*+?CWK7mB7FoiDr97{|kCHJAdvwbFd%O6J5AB85d1pGXSQ`nI+! zKy)E-6n@aN5tG{2|M(SoUk(qt&5aQk}Rw;c-J1>aZeOsJhjkBii$@Iwv zx+?_Rh?P+}Y!~dlV%4zA*-ctJB$ipLiNraRl{RTtl=3^S5x@J^!}S$vU|G$JvVeC2 zFACnGU*3N`D=*bzRnnj;UFZ&sDx$jkjB&N~@W73ao7H=s)l4caFAlCyt|a#6EDb&O zD_DM7g7%NfKg#&Aa<_83kd;~zShz5=E$lK(R8V$tZdW(lai01}I4}%ARlB%t&=78)N1fAd24uZDPdJq;6>QqdN zbpMO5w~s-XsutK7nCh#E71I)M-?h+e24VZ=AK&g5lRS#v;cs|p_Sd8A#+vecgJSp5f8b?qO$Ku5Z3rekY8r3buTes3_YGsoT z;yfL?)vwub$@=bAX4qEF3)j4XrOko&;j*QEj8XP%OPfO5Y)hNM+-#z3_yb?B$aPyW z_2ujE8yvg*7*e)=3@Mu*iL$}rbHg>oz}!VDNF3ZXk~q+^2!O6|BY2(veeJ@ai}QN5 z1&s1ncpS{Tv-29D`QZQoCHeqL0|b-?2*~s?Uv1Sq+M=kNxR8yyiAap4Ncw|cCn3P) zx%V!w6dqh&ufp?QZ8=PPwlY(C9t%7*G>zfkDxYLE@BR!ai#hS^@WcIx`ceeKOyLB8 zqwJx&0{tEidw~Q1@E{bhn2CaH(&#jCQpwRNl$=bx9=91eODmd70laL z=-?EbUJhlA0D=SWP2HtZSct?~TKYmnO2(U2}y=PdKqaT9VBfs zz#Iz4vNXe&SA`}xJ~7P}B2cA!=9(Mum=IfEsq5vz8YCOdSKk&miP8BR;z1}iYTPn3b(0%;9# zOMk6OnXCC^iu`%Qs24E7njCasly(V2{$239(DW!Y3J8nT3x1|v0HvWbJ(5?MHYY!v_pevU!zxfs(5`lsKhBCa z$D-*+RsMv2uo;aX+sdEh2NW|N(xl9yxUN2nkfzBDDj+fdMTYApN>HJZ0Vs!=>&MRW zU$nV(sNQpJq}E4%Yg@6%>6vJvYp{(O`90K&lXa0d`(xG}0 z3vkQ_j|g&%3TKT#r1jRxg@&yg7A&@ISg_c-VZnlnVAd^IY~8zl!D8!%1q)6;9b1;x z*(aiiYSEmWlU4sFTTD?4BE+UTj9?Ohpznx`2E+pwt4uq@dN#PCSVe$gG_mp}Re+#9 zFCj}Kw?Tk{d&L`hfxC~Jyilj~o~c1H*PBr_@t~N&!WViz{M_cLY)y_!$oi0r3-?(N zXE?O-#SXGpyd4y5bK(jy<1Q45_Toe=3(+tx`5-YekIW6^j;#V5 zw(5g|S~Goaw|C~_4jo}${vhd$|B?rP$*fyW|4QAS<3a#r&J{j~bITjmO`U1_@&QL( zRWy(#*y3nswfXGRFRIG@3;A}PS&RP0nG@(XD8$XnzmEl*M~=2+nIGK6HH@!Lbgqk>HeKs?%XA%`R;hLHSTMlr5T)tCz*Eh;CFc zqY{@%G}-x=+~^8nhP?1>Fj6D(GIip0B}L@LOOBd^yd2O}nY=2U9wOX5>F zwbaF_U_vOS;#2T7%VSIk69i;zZbM)Nzf+{nE*9t$x7lrS*o{398%E%sVl5f`S9&o% zAQIu!PwvcX^=hXh$Wiw#{8AH(ImRE3ky>#3mK- zH6Vh*Dbd<2DprpTBGj$$AN-m6ML|rp$dxoeG875Xlq^l1nZHvy8?%CS2dMz0ETfKl zk2g$|-K4+T;m>gn{=-#jT{2j#JSuQ5nfE^Bjc!6Zs8O_E2lFk-7O-ndw`FouzFJ3B7#m`ms|L z6ps+0+1@@wi=3NA?WB3)G!i-_YtORwOR&U>VgZKf&2n^VrR@|fE;`lYtL5mF6v5~e zTinJvRcH&)M5pNVc&Bjwu`AA<%GPyC-_p!Z?A1`GSXJR;*MF%_kwtt)opSS{Q`K0f z&_Yon&>FB+i0T=gf9liyU?~bCy!QrTUZfmp=aY3L9a)K50V7`!S;0@{RnD}cRM^Ab zks1N1?D94~nYKEv-JW2PJ|b@GLC!$r!A-s<2v!dI?F`TfR8O(y&)FOlJ=1)Jpu+c~ zEm9sVo{|e{(PGzNt4MZZff_;x+y!cqj0)tGs9}Mu;i}DEp-fJ8I-e%o9 zO2K)Ro%@@W#2dsW(c`%|$sXT&R@@Qe*T}&zZ`Da6i)f`bT1k6Us^6g9sJ$}>z~4;O zJ0PP&Nvw@T(yWp!da9aWZzhS0?hp#@bp@oMR*77$UU6bENBVF``T?$InY}I!Xb{cdGyIdgT23^4(v?Pue=0db|Ck0Kv z{jH;wF3c5Mj?PINKPe*~l)}KcX)sj26NK2oXLTi}pKCmY`SM|36@M&e0fs&v_s$rD z`eLPc5I!;0EdM>2MQ~2KHQg-VeuNt^ale2dv2PC&7a+pSV?U7-87=*)BFjoVc1PkK z9_^8H&b%+u_eZXS@i-KTw|PL_nwaF&LktOHj_y4RWom?ZeS(OUOSY8;!-ddOU`OVw z57I%(R|jw4Q^2#1NJEcNh#@a2@|ZX9u@-zxxm^d#Ps-1N58@lX(0T1b!BjyRK~BpD z%DC->?RTT|MmL&u<+~!MM1+`o<^R6Oe3;eb)`zviPVjN*6;on~@ZdSj3Dqz_m(tlZ zZ2Y;lb7*jt9tQ_kD{()D2fy|WuF+$4K#-AQ2GF{Q=ZAl1y;rD&~=@KkyVx}Y3t$*#l1YP()Fj^>S|pb+pV_vq_yfAsl(k0zsG(aM1bz& z@d8~G+pV^H*`nI2Qx>|_4qF`6&RALH&@DL`w~1Qj#7&prJD?sW8NXtHJq@{P74(pB zJg=F^jJ zP4|X0ttrobQBw=s_i#XK3O<;}5OYME<~I21)spc#D+KgO&`*N_(lwU)MI}&D6 z!or=!ybl5hCKzqynk~<{V>$6-<}6HeHRQ*?tIjmb}US|wc8!UWMLWT$xOvTAd2rjj0^otMR;$uRCn-As9?>+#PqB}cKQ;WSp zFz(@y)YLIp%Z_S=H;GMvVF?a6g169EN_o339p(+xp@;mudLr*Cozp9gvBHRZ;31B+3rdyQH{< zddvP5G;ti?ZSjL#s!MYpC;PG$xKhY15=v@p$NLH?nTA?og=92?gnI@hGa(c{lWAhB zA;>3wuZ3U5YTcGrUNjHEg@j_@>rnAl|9kru?^#V?{0 zQJ;4fzRB_K8@to^W+DelChqI<&CtAFCuUk^*kt;O z6QlGbE)_z9V>ytMY7;>)y<&S9#-<399LOxS6H4{`jH~rX=bSOxr)F|s0t%{#i>bzB zThC-lEGn5Rai&8TJp}*q2Rp?S3M_S4i*lfBv08P+@=;Q)6RMXs7t!mbav&+XlAQk^ zdv616*Ll`=?z7M5z2|-$C4y*Ko?+h;mAOu2qE(Enaa^kHxQRj>qE6hYTg+NwaAzFJ zbV;$B<+a8kf+#@*hlrqnL)<|S4G3a`z=3Lr38FQ`gAHRyn3|HNDr8Z2kww)N!#H4? z`ThUTyZ71W-gEU~WH2rMxO<h49g>V09kP>0uIfpL;uq_`{wl#< zJ#Ka=hpbCuE?XGshIp#fillFRT@tpTLB%{qzpM0g3r~@~Nqme|AQ^Jl{=w%ec3ZHzNfH4tP4l zLC+&(${Brn#jWGH=##hj%OOg(RgGI*<6Ii0QX+Yj)HuHtv?W7QlEz|`;E04{ zd3B1a#yMm-$+8*?cFy_KXM`@oU+FlbL9)~G85P4fj(hA~=4Yk3M7^A+sCub~Z{95E zQH|@}j3tuC+s0qvR+RtWNeX?|7e;`8#$3#YamTf?vKDL_(7J`nNl$+3c+*x`r8aRd z2;quN7)&&2^a{%#m-*Lk9gY`@dF^l;FY$h5|ZrHQQn^z|kMVJH{{57|6Wh5nv{ZF=$Dbu zThRp;UcVLHYcZMIO30Zl$|}1FSu=OR!9(3?3?Xpm4RMz3k%&x(uPt zq2RP68Q;P$c*7pr+I^tt$PNWb@S=h&*_|l;oIWi>PQ(gs;R}ZCK4tQ>`L1K1n@m;` zO` z9pqD)GzlR0AwbA3q}v0j=j$_<`t>0|91x3Bt6!BxU`dAnQDVWz{@9yAghG{!!5v~L zmG^v`-oyLm!rEzJH>{mRZn+|aAB9+Pun>0&=)x?-X98BtvO;R=#J&=1ez?V~0d)fW zx`H}{3BwSP7H<{W1ZPo96?!x`ZqM*mF!97WR`uTbBAN{ViKV<@f1^C;gWOm%r(%50c2l+i>^-pA@Zx zk$8hmS1DaYPd%I7bfx^2u)6I@uEIBStkr7Ml}{19 zyiHfB2=omAUu@HrT4O$9V-fSGGB3$ZSCSv?na9)H+;oNErMWplqL;RtaGBb4b%UO0 z%SQ9PjHTFOruQna=_>72@JX*SvCGDC!A)13d?3KlHEfl%VDB^JLVc^Y!c-f=*7xmO zF4VURZwR|+-(HQ)%ruO?O>Me*5#h#OAvn*);Rf>8Q_5~DQ6YrT?QvO6dzv6B$O7Jk zRm>AF@%8z35fCl8(NDLa0Vs^7YeM9Dug}RN#k3{mLVJDw^%2&h%$~`F@++;_v(0%$ zHpf=CX5^T>M;2(bA|C=qcZS>cakC061Vs#?u=vt$6K4tV6kc9}3O^&e(iRPo*; z*E5?q34jb@gkpyIj47g5+M_+Mq>(T+wpCi$$18?=2F{NzDJzuoMazIUOxe$*%{Dx0 z&Fp9PsOe}C%rrwN$DGAxGS)VFG9Ubtx{LYXpKu!phaGFkLlkmHxr3mh9cg})HONFi zKpUT5!vKIMF7yOoW>El^GhKL4WP-7#Ho=$+FqR;9888O8LI%=sfWI75T_0z7dY&_d zjT5kM1x10eFXndS{u<86s8?Z3{lpm|m86ankWe4Q8KK6qxnrG9oDr`w%!$orY)4i= z#)LCs{(DikBdax5eo)xIj-1ikktf^sg7bk%thVNM-M0&K#*6k%-lR&PnBt5t3Ah!tMDdxXMDY@U8%Bum1S3(f&6!2` z65aT#SUbB_)(Hds>5ab#%n%ydwt)JJR;@GaC@UC8Ky zA)$?LL?j&UcJ%e-c_~1=8hvR_pHODIeq)G)&%>(Nem&TV3oRS{*fPpOd@|8WS*Cb( z`FqTTxOt#u?UbLS3PJ<=EwC50jUJ@11vsXJ1NVq%nm2TaS)9?Mj(VilX*K`4Y9F&z z;%5*G#A0dfAvb=eYW(a}yLJyE#QV-lbWEuTa=Uvbl#~9?+Acr5zYpJTv zp^e~H9+#lN*QkIpf$Jil-xDxCYSGUkE~|0b#YG1G({tD7JNVG<#j1im@y%_GZ}!Hc zeQ~+7@#bJWIt;+n%)Rs(L^#TzG`}$LlKvCiSDp%4Mv!Mh;a|AGARo4^6#9-yZ^O5D z=Jy-;N9zi(^JA?qA65lkCd~>6lVsegAeF|?pNF;nHN2=HQ+}SvmyeC}- zKYCbKyc0jgb@)RqpHry0!_LCA)6QQcukueX*?n1PTlpu4G)Uo|y%18L*rxM4!w>nQY1Svv$ROe*Qgc zRMDvyRU=q)QM-x-e~ydGvHeveReu0JuNm(H2w{6b>WKQ>U-gsvvF0J z2Z$ypYjllBpwZ7wAohYVQjTE4Ox8i{1z_Zd+Z^{0R^S>R+2bFWX3=OfdcOH;TDPeC zUbEPXg|vC8c)Y`hpZ{`p2(QO90RUyOAH8MBy2@Au|C0Ox23H_se}ast49PKvT_RWg zt3?hoH_oxPOcTYorBz1!qSQ>^;bU24h4Tu+BLN^`rmP5J!=qntnj1oR=?05m1swq_ z`2bqR(_}7>r?N+^-~~*`T*sW)K;<)fOc*94VnRUj4T;4IK<2*m3&K}Q5f(5h zbaYK2flCgC;YT_gvkOAe1x!_-2O=JZlpilY^yyE14)lOsyrbycoqm?5KKzT%zO(wp zlq(I=%rEbzFKbQ3r=b~B=^P%SbcxXtVq)k%Vg^{O!W2Wc9y?4QkumT;>rf@{7 zmF1F{DM(`?ojU zu^6E|6a+#Df{KTr1*NGBo~0N_IF4An{i`~=mW@J%PQJlkEbgsxeBgo$DJeqzTbT&R zZqB~=YUOi`jza@hWM*od4k;HBt3d|7FIgx@C2Ezw*D^2aRlG<{ar86V!|O&BOzQsH z8YY*GsFx267{e%RM3F3t4|lKk>i;sJAQ@Cf$n+KVoLu4ip zR04~1in1|hh&_>hlSshZFtB?iYa+nT|Gwe`k}#(fC$T*m{L;FEONv-k=doKeDbK7~ zgv_Pkf~^ZoEPvv=E+nxi;S?N|+?(ZRzN@Gd=ilyx#1fjb5R#rTl0XE23snK?qkmzN zuuAfR#nwd{YKTT|C`6;GA<%K?fJYiq%^;d+iB$gK(QYuO!))5_K+ifN@?QWeg^$nZ zifsIOVd>8Z&(G;@SB+6y$_IWI7h|V9*WEulqqrKne^=lOR{LFnEO!WP;AyM*y(_HC zAXlxL2qEKe*jz=R){v`KlUz-IdG|OMxvER@6LOW`jmbNaD}BG;D3gOSae5akt{W&b z;N;{c%COxfq0D_iCsCA^QAU#6-^q# zBJV@Un&BLIPBX>aoku>R(on_;)w`zsTvt5bx97P<))Y+mddvP2OU9Cq& zzOuJ(VAE!iK;;w-bTNDTfJFw5t@T8|B>J{c+l{fetCQ-f6GkF%CM0UVgc3&n=6l!h z!6|8JO~S|{-zBf-#EJaHUTc05CKHk%tfVagrMdG+`;a8fD9BCNkKqBmLr&yzrccA` z8?iV%T^&PgDyy@^##V@2EFFjwGL?L#EmNd1JFOu3Iv^E7zs^yL;>4~A5yRR?+OM}9 zZtNf>ghgzG9a$Fj+Tj_+?Telk$B>Dr=#y|_%Xw$3llM~>KT?+D7c*sFQHvninF0(*9zA46-E~?H(B!Zmv>{E zf+g1_`3XyI-928cShBvyo@A!19bXHq)kQ^Jwu31T53xf+8o+$WadQM(#t3gDh^tkx z<&flnsB9rRC&Q8)*~6QXTwBs!g4vexsr8Z^%_`{K;hS?{oTgF$fqF>8>1@=$@jyLX ziXO7bNdKkMJ zn%?5HrnlsIUY@P#EfmYMHNBXwLYZalGtwbuf)Wq zU#1AQL?N+PSnwhW=!1$HOa$~fP$$oKv*MtZ!W#TWK@obDX1AUq1o2d~a){}<=mFAf zMGrbt^q|b%;8gmtXQ9pbROwC*Kq+<+U^($R$w)wUtC&gR|NEyntod2Z z&(LoP>DS>Q=b~)UNX4rw5c$TEYFA4t78Jw8ugG?+$uQAIY&m9Pq`>ClXWma{4s|;W zQ+8yAfb0y;@7zH&!YI8q;=oTlZU`cQW}$TA-waC48vf z(D#8v0@%V04e!x&5 z<)Gtsu>Yn^=51=&CBP#^`%E0k|HJol78oHoLeT|S3AE^8-Lt{LT(4-6b`okh{@vc2ALaShM62hc3 zV#?Z2$WeCCB4A-|(T4g<%|;U*$>uHq><6czJvGS4i4 zp!*RGC1c>3UvEvusev`wTelCeMPAV$Y>MYHP;v}<%N}=icI9PIVRGZz&`Tmm$QdS> zxq?$*=8CysBg==z^R=0Ip8Sgv;d)8 z0IJEjwnXU;(IwfENo$N4J`q3hY}?yF4pE~*W z-JH3DN;&Qj!3-7zHxVboP9otm!#@*S`CwCEh}H+#o5@*|X>S;aKp6rDWUA$x$}j7Y zdS7&NuvqFrCOhTH^5dZiXJyZC4y|)&oHKNxXOei>bD4A?Mc5<(SXSZngUf^EvjVJS zFh)vP>eS#`3@Z6})4n2g35^6T#8I&JAiOyoT*<-PmI$hdekQkJ&$cy~*nL5UI;55+ zW3W$^IwOF1GwsP1u}pvqjf8oZAS;iBg&K?+cOgssQ;@DjYy~b2_SX1`BW0k|s-z?mvZ(OefbyP2LAbev$ z3}4({3couS>7~9Qu==mKm(c?NFHD^Q%gIPKhUE`;W3QRg*Vy45+GtiDIa(MAgflJ7 zmm9aoNLT$L>Ly{d`wk@E7Q-i639T zKz%LQ+qnGL_t02UHRV8HR^8G=Pq-yQ#Xp75M*r&7{XHaluE%;~ostedQVnZX$cuV# ze>(J%FOK$ffRnbNhQX{YKso^#d>Cqmux~3W3CQG`!dq!;nFuYZFtp863CNWHqAsbN zR!%>r7$S7gd&p#gA-I>LO2uepcnEMbXQ>_vDZ&M22Z zWoldA9}OCwhVDk52H+-|>4V04Kxo~bx1J--<~7_6_PnLkSY0S#bI%(pTLE#y>a*sc zF~%pdgl9z*43Q*7P69&2lZfn>eOo@va8{bHU*4X#RD=#dvoE&i&DL~nA(DcqDWJ@S z_Pkxx)6my09x6eALH#30#~gmyS%sXig@Cl2#k#r8oR zMNBOY6}G5dZXG-79R|<0sK+gDt2z*8c0mIsy+D8c`g|MKg6POkwOt0l{yl;(vW6I*X8L&Wis<`;?_#WWY@Nax+_&4-M`D_0w z=uNMtH@&~1H-GiC@V{ny^FoQ%?wV*lnZIDlx2LY;S!bk8+p1qg7Bg=PVs@G5DJt2a zLrUQi54JDn+77b?dbRXld2QpgRPDWkn2-j?MCB6CLJT41QqMxXGNk|AZO%eO(Wq3P z)%>xZ_8hcPPLVF@KbLK3BML*(o?&UEq-AP3fS%VPe&I@wy}m*i=cB3H`R@j*^xP6Kt64PM#lbJU`!fj_sZ;A`7s=97=-b+Y4tSs zSu}P6kiu>te?De4Uq^p%Wi|pl^4)6$z>PKn{K)&zx$CVdzyICEWNXTQ3mXCcpTGQ# z0PCh^qm2OTr>5T3GM|yd=kX;Gy%WiNbq?=vL{L|zm$u9+Bx2KLM_g9p!X$_3r7c=3 zv#9MnGJara#Hxuk7a9k*vbmklrA=*-{nj4UWS6l8NG4SofKX9y!7}a|_eTAD`1LfV z8xuK}fJ=`6Ip6LvwWI~7xza$wvXj%Sj{b$tlj>eLT^=bX(net1Aq8?VR~vVfNuoCHG^3&@Ytv7aHbUkdMMb&&WZa?B%D5vtk8Sv} zT`Av=Y&)>U2y+idc8qV0)v9+Pt5tcl=l!}EC7tr35$UD=iL5Xh_>2r&>&7NZPJLPe+ip3{zPV1QDtw^5LKSur150KSB6Z1Y#Gy}<%=PaAAi-MJ3rNJ zCMy=^%apsKIB|>|@_KPmuVqmNU} z)~Rw~JYdUwOB>dyQpC(LAY$f` z5utf7ZW;rnBL!$j9<#^`&4xHdr0`P_d<3$yhIFtAg%`;qA&Q2 zcCyQsQQ*LoR??Pnx2K2nUcO-dkjsaWP1_CI<(K=1wDL86N3YR~N8hAf$Q#c^H51JC z)1-OVEOPr4bS3#tKi~C69N0|5ftptiRQnheWr;0&%EyTNv`gMi`54oF84iX`K1Mcu zRHv&H9B(&qGS<5vg?aV*pgBI-fdo%@ERo-8F89=u)-H4+S<_UpG zS&cU05kc+IkGg2G8;?dON%EfAWK~W!a>U-Bg^0-Hz(wnetNG)JlNjb63k_)}M;#-T zLd0nJ$u4>mqs_FC@KNfb6nv~8ttPF1W(+)bJ|b|Dp2%)UPGj(cl;5LIFM$uvOa$IH z5sW4F!q95u%7t7VJp{R!Emgu>d^tigP#-DVhsXEh z@Oa{)CP*e6B~K?|2+`wE3fGLTU@_X@>B-cBvJdzlM*<2aFGL`Nq-~IZ@$%mZqeiAL zbS!o|y6T84(@LP)vZbD9MMsE|b}#-&LX6tK9B1YU85m9?QA+m(5&9zCC@G13TA3Z) zGDELYhLD{jX9XturuxC0w1!=Sx-srjO;rh*iz&|}FyWd6E?(hWV-mU-n1PF}LR`^a zd6zszj2FL|HdZzQAwesNJ-J}Kc5~ah5J>INs)>pboX8KQDySE06$81-t}Z1*1Ftn9 zRUySnUd7P}!xc@CRxS$jzB&Rx{@Yyhs?;1@h`uo!PzPn<1_8)vN%%6D4`8p>?E6C~ zPGAe=naJN*QUiI_z@fT<4h?jo0bgJ@RRca=<2TXdX#x_hCO{H5;ZMbqv_=bRh$a{} zSSb?8e+!#>s@g+p4gVJ~DW{Jjp$Zvb8S_oZghiWd*ZL_OtT0f^^awn#$|}Q6l~o3+ zoR3bmq5@GOEG8s7c&rtRChfdT^|79<1Z)Gm_Mo&0ETzkGVB&Hx0Kwo@MhCWTHxtyb zlw!dE*Svt(0YjBy^>wOVM(P}8si{{XH4El6&wp2wYGw2^Dt{E4S~}4Q05$p@MQbR? zoS4f;b6cze7>LSRkb(t#TuF@7$)n7)rG{g9q}ee*$g$(k_#@s~4Ic;ET0+-ijWH@J zX|PZd^{i-HBK^^yEd|YD!)a2ttU=uXYp+`B>e=m4qZczjV=ax4ZO*KpOrJ5)e)@J0WmW0-xVf77RM;AWOrfK89W77Rxkvsf4jHtt#khwU! zivG|&+2wS7w#&J`i&?%q-`(c_sH(4@sn=siGxb-TkDKH1Buh+2fn329J?*{YI%`8> z=v4p0C9VGXB{zZ-{$yS7luHRrQlhex0B8Zy>q=1x3yNA`DJt-=idry}(IMx&M=#V~ zAF{aD$EKmxO_V>0(pTZlPh~sYreo7mf&~;?i>Rb`7m-DUmj=s`pQh^2~4+-~ioDK+eL6gSZMuRak%2`QYrUENfb8R-X1E zsY%%>EYlyyH>Lm#2>S2Zn7|SC@!F!?W8HR_XwLkdjvE}$)p5h(T9f^^Yj*C=H6x6t zzuai&E*J-~PdLN52EwAE^ET$hDSWyJ-r(Vz1)!pHP!hKgnbj0x^%&~TF4?k0I(SwS z_>U<=A``|1&}7`#dI3@1j7c87=^%0u0?!*35m6KdSr>H*nK_M<4O1wMEnwYG0XditeFEI|=09#4{#A zYbi~Dm-S>4LK61IJ{jPT@T>oI);f@E(JH}zXjgmm;h~z(#CJR30mB41 z^*Z5;dX3O0SO-2BCd|$7z@oJ^sVtJnS3_T< z2Nn6DqWd;kq24S~qcenbN}BGv2Z!V8uq&^R#Bx=IzSsN+JG-X5)-gJ9#2}$Xhpcuh zjRqVUY|-+~PDY!s&^@%J7@cJrZfQ4wMbwI?I2=oXZb8)(+&mZactoV@l& zh4r5^MzTZz(%!&mv&dX|VhB^SBI}*W-5+;2{zb$tnB-p-MbaGEuF;@KX+i!4C{nXl zC_oY6wxUQHEvpDSHWC;sOKaA@Ec!L7z`W@54|9a`u5BBo8I^Qt)4*(}~g4t(ItDD;}`^@VWvk$bXVe)AwMKZEo zEWrIly9lu(J@8#lvon7P$JlsLCZDu%bs;vcQXN`kMOAz{kCp-gQeVf~MbP{pOg@XV zO+LuA^)>?TaF5Vo{)M@q`LRr`Y|)T)GSPGH`A^zOLsfu7&^=H{wXxr$TMPJ5N|J2y zHQh7s~o*ephfdt_4chm{M2iom2#z`fr4!IC_2X(%YAyPLf|B}-~k`!OE$FK)l z=x}9qlv@Z2f!YnHM=$iyb|Vq@nH+jtZ6+dI*V4Ks&jwK({1(0%C^bYg033}cz#0I; z9~9KCjT}gZk!H_$s63?(Y_tqU@0?^5$vvz|$&77#0F-iFmRY80AbWtU-3@eRbnJtS zmPV;F1N2t6lxgshCEl{cvzBEJQ@u6oqe{ymblQnulB#<^6g<5Uw&>fwbWo-*89nYm zu@8#;9yX{~s0 zGa#1W)X>YpcFA}&v!FlNKQ5@3TRyEI!g{AjG{emrL(LHDkI!ML%$ap>v#PfxG2%e` zi^zDQ3P77`0@@HB?t}1flL(KXoty9^v*!60X=Rc7XhSwFzBIZ)`3hEO=}LGw*fhuh ziro;?^dSptW+z!QC-e+J&a`e&zwE^(rU(X>ub6pg?qvazL+;=&H7S}6%4o}GFT_8H z8;a%cCVQ6-UQ3A$J!FK4@|g@9mtt~|t}|jVa+BM;1Xz#>D-8=pbV>pShcx+extkrN zChemwF52_(W7_P1eNw8cL>8^$GVOFgNc@xo6Yf;=3$h4k0k-&;IpM$2rfxx^?ixd@!@P>7I1nFhkq1crKPbxesvvF3A zO*L9FWY=mqnBaU>B0Qj^M0jjSL?XDfM0k)X??=31KGr81K2{MajIh{k={7bw%?JBD zwR_)l!()P~FE5h7r&RJxc~F-RL>yR4GX)xO!n_BN24>19>%fEwx`lgdd4j()G9j#(Go)m@% zx_CvQ{bG2CB^W7LfHJ;vu_csiSVCoTg|;#JhRM|rsY4W(KNx*bgQrcdY`U) zzet*sbeha8mPdc{92Us10$SU|6cWo_HgFlsM0ormCd+nHKWn-I{OdOOjrcT$eg5*x-8a|N^EN=9Nj&IlkQcEis^?La5 zyOg9eE6+-*h1aQbFlaikBKi8ivpueST5q8Dqu8?AIsI)2^$(SJfX z66jitLnp(E!!Q({jg$yfS*Ti#hnsnbA~^h`R&qr#a2D$2LYQ{4mJ6wo4$4SwlBtT2KPS7c8H?-Wa*@Jsq- zNoH~ogv17sUnW!;Jv1q!^H(sO{)bcQ=H|f##KjqQAg@M`O~SxWiQ?x1F|N)vTtMj4 zBD&?aIs^ZOlf@sw#)gy%WN=n0AxZ!hVKV6v#x-M)Xd(!y#B@EwS@U-Znc}eo!u+qv zHw%k=w{X1)D&?=%(ReAIM97L1^6VshoDs1W#j&@s|0gD}T~A=!6NscMMyQX9p*pL@ z3lH@Ks)tHFpDN-fXPsZ9B9&1^;DSkmD?*3czk*!_4@(_vhzwaidH=5PU;+Yg}$|t@-V_jjN+L(B8GIN>oQS7RkVp4Vf1uliMc< zK1*VO(;W2`UD0Ca$zW594j>f~A0W{7%hPI;;e~Lfigr+uWl2y*S_akewTo}wbX7)A z@F*ee6@8mkwD$N<)JkpHY;5|#LsP3LK*mwmb!lbz^sq7$3?FId?J#gwdk$IxnsdHx zk(OB}e`srh*ae_V+7qyg*RdzyI%`;~&$q}a9TquN zameW)$f+;)@~$Uxib5-LI;hAg{vDB1Uv7z#BBv%|9a&vnJdsn=G|u0s$*Irdo?fDK zWon5+PHn!BN#pqUvNjo>qL)UxtRbha&cWO!k0z&sAg6;%UYQgSIaOVkR)$Z5oPIgk zr7?&^1O`^C(byr%6Q+W|qiQEiMPXWS0h*=L6`|5uCGn)eRG6v-3NlrcsaVXJfJtI8 z83M$Fv5fvd*}wl%7>bQ4KQoulPxy&l$q0zM=@GQMI(vQx)UrH3r@$AUCPSLU$*JIX zjRU#Q#aSRX*0KB7$*%2)A?-Zh*cH75vhp7BQlJc1G&!EnBGv_1`kFU?Zu) zPwck@%#|N{F8t7Zx_7)ZD_Y-xU!oe33Kr7nxh2n_{+Knb8zB~_k&~{90thOIe?4!@ z!z(TuE%>lyQzw(}c8@(nYhlzbk9<1q8!4aTu;>Mqx*ds~%bhfequ0ql9!IY$kZhzDaNI2Lt=i)nM@mpT zvp#yKcJrwF99lxum3l!kZS{k2NcDs`U!q9CX<#AtO>J)-FQ(eK*0pi!kIzb0gD3cZ zi-#UzUmS|<*15*_iyUadH(7ZGJ6bAEh&8K2qqgaP->y5iDb!Qh^ zW!-B;b@dvtQoZg}y#{wyu?f-nucP0rncFA`U)ozyQJ{jw!elx3)69ARpz2Y|Mlw=Tj}0Z@J?crEw}Gajr6i1Jb!)Z{Fw5V@iWSLA zsxK36O*p8!)ZLhMI$$Vrt)ZxqX4bT&1X=z`2d9^x`Q9};&{X38RXT|bzKv2}7J)2E z1iX@SY0UgV^-2wTaF7qf1O(OYM%d&)hm5Gy6IhiA2=)*qx)8tDF|E? z&eZ+X2*OFz#99R|q#hIWr@v{GD3s5&D2qDPUS?29ubDw=S{3YIgbE!V-b)1d--qfP_6`gqZ*m(l{HC zKAt`RDe@_(vD2Z<_W(9S6VobFvA8m4s4}k>X#RaW4ynRQT1zt^KP2kLh>qjV0?E9d z?LjV?sg8L&WW>f1CcZW{4)fP|F*Xn`6pN;mrlPe=-2w^gU{+up&F-DOeGvXTurQ+W zX^^v}5GpV!lkH7$WE4Z0AN}c)L&j!`9sOGDpzt)!c3Uj2&8BtQ?1oL0B`e!CKTa@J ziF1SFnf5ihJlCN4ZCIe*m<6g3bs_JP@;01s)MB-q^-wWDzL8Cun#oHe*S8oF=6JPD z^;l_OF*dJGIEn1ViIMypg-tW30+3Nb872X?s6GZ9$i3||h7s|=B0Y#GR1VSgn1bl? zAQ4@}3Xv>vyO6Zz7{7&&Bx&_T?X}&nJG6Mq5S`K&A|rXI@0~}>v9Ge*puso2O9}X+ zeMU>FI}@67G;K*QZKb|obAo5Hv8ioNG*_7%+Y{GvQYa)H<=qr6li-ZST+G1vPrbJUj9{wNwNC;agWSZs| ztcrvMaugT1b1(#7q{6`vS_ld71k)OL0!ZED3H)4O2U6IR=WCuYZ=QfqY*MB&io9So z3hU=(ETz{xUL7MxqqiW&*U}s)4^@yZ%(Pm*7tfgnf+#Q;V*G_l0RRQZqMT@DjV-Yy zDUEzNNabHn@m$mD802^XT5uD-;n<%rU(*02R?>&DiKU9ykTzFdIqkuF6#Q$VOChA%1VOF=L64d@Cb~L1ig<0*0$?BD3BFtC~phvVhmL_lZuNzjYRp8{54{P(Up#lmcC_zQ!{1 z1+BU~Lu{6WarXyJf^`Ns2GbVjg>f&fvtGT9klYTN~w6b~^{id&~_Y_?{fknPNDK^CQlmqQyxjJi=H4(G6xOv(`3=G6xJxNSg zHXYK|+(pbg9V#<9a>d`SeYEb#6`iayDFmw4U56W^;jRzmPq3|Nue0GzuLley!RWXj`-lGsGoVsEvoj9;< z($r9WqnJ>qv#|;Wo%o}B98)X zw&jeGb&C#Rg?~;l7Sbnw`IE|wuI+Ga_j6@$k+dbW2b9AxT9Yki@ra6*dKhKi>q0?) zcGCeX>dh;9s9WeE0=(irpojJ|AdOe_kfsHAphheoBuVxb$YMLlqO7PUi`v~quk}A< z(V1987BQs*TUi`bR;h1vQcBpRxHDOVVmmHH#F;yjMc*~aqRz8|EQW!SRuWmH))Nu9 zoQ5e5NFx>QFfIrtk+3{OSJ6m7C}agNTwjVvb{VXRdOkufr*<$uaF#D(JOKE#Va#~NfUwuYHJo_E#ZYg*ZA)O{#Kzb3-A~6dV2*T3N?YQ z7P3_X23PCr?t1i-1yFY_eUhF;$dN{72Rmh{tMRdi&p_*rfklB1@=eP{%?g;*U5(h) zwnWHAQqm-ZH7boxHY@dVWBV|jh(e(tVDn~RfCk1VT1G)ZHzsAeS00us0E%jr3Mdja zLJ1U&8pP{QTj*c8Czc=p=`M`X_7ZE(dr+-6wwFlR=KWOqsQO4gwkEcy7{SQ!m%XIU zEHjlmN@-?%MCT;m67~{x1^PE_9$_w}JgJXU@(RD#7&)|3fzW8@M6z9{d!CdtP_>z} zh-3(`EyM0F=lB_9b_RIigI)f6;&93ZF-z=Zfp1z^myI#;SCYI1GR49 zY?eVrqXK6Pwr76}uLr*equ(-57_8_UF*73Tn(aB#!XTM$Z|(D`LdgZZu9It@4_7s^ zQH(74NE?OJ!O(7oU#0GC{Karf!U=IqP$9;IeN3l04jntL_-+9JCcuS+TtU(!QVcB+ zTP-FjQFoECq$}ta-e_IHym3Bsg$8eANoCR^H|vi?A@Rme@J4(Q!5h0;vZdq=s|+P6 zTv#|m@kch?(6|IHmA5}3@kdy9;*Y+w+Tc6$N8g!0lEZ^ol1go`3eHNe_+!#8(PObw z!@7enVn#e586M%OT+om`3<((vS~Oe-2gDhnKETXifpwxT1HOS6oq@Q*rXgxjHLa8= zjISl*su+qF=ouzKp<4BvDYd2=daLTEg5kgG+QgUduKu+oiE?H_E?Nhu_!w`jLW>zb z`;S7hv#h##+>7VEH%YLgJ$=1}-5NHnWK4fc$!PN3?z*exzQ@e;LIjkb67*nj=4q@L z#WQ&%vE60{IT%>A#2~T0Zi@A1rF}%&v0oCit*p2^Hg}J0(L0E2&<~XUP8YeB= zLmPk=p_oX-+KbDyIm{uxvXEmag0LdRHvc0Lq>;WcfUjld0XIkLN#SWs%G5|>c-3GV zBh7+c`n(OPhY2*+2>>lmtZ>APhpyGpL4NHTkAQ$xa)deckscdy#H9(&jz{DXvB}Ny zhvz{&eB70E9n!B`Dtd2GR*be(92yr~ZNjql(OzMWy>C&y3|++?4(WOLFDG_R%P2LT zdw$G#yQNY(NDd&8LE^+1d_GW=-O=}cHQbcZUYptAo7sjcM3o$&1q=yUX)#!6jLhQs zN(+2#U7Ka)*GScAiAvBzFJ8VJa&{v7_CfGmq0V|OT|-uNg|T+X7NW|CuB0*qWJ&I= z1Fm~gFG$6r(iAnTr)rgGRtu$YpsnIC`{*z&DPwJop@_??xj<=UFs819=ry$7Du=SX zh%uE14~_dU3YMgdw}j9gzW414_XN)rXl#Vo=1OdJ)`J_es#dQ{;SO8Q*~g}KJ%4Ik zUft~(KDs?yhfE=zQV_dtw(lSP%2y|vAwX(InDp)3k|?i*8wx0T&AWnk-J&sJFR?vX zA{Ee6QXDRV1)fv+6+u-2K$AHG05;PY08-M(c%oR!HE_@tF6cS5WC{+DbH*dmk>HTh zT20`k-byj?co`xFHe1U zE6>ia`EFkUeNYs3RzBZ+#j|^Pb`%OwH_x*pEgl|U^N`c*vhu{5hY#u@i|ga*dOBUT zOJ2{(RUoD;&W6bouN%xUa1h#rj`(DK_(n&s0aE~{soM{w>AKb&cpH$(4 zYYQJ#0`@4pqbmGpqcBHF-bLY$tFX6xTRKTC->DPxqA*7CX!&fTFw)B%6n;vD_pNPt zpNzaw7_t(DA8QmwB)Xl#|5k&~qd{sR@>ySDIN znUbS04&o^MWTP<9zJ_xb?uR?wdKTO z3m@2p2K@NuO_bwqbILp>l120wD@Ac3>I>Gj^8W9m>#~i}*3&}4@|jnKWpea?F4kRu zR!6tm>K0v>xM_nOcQDyS9ud+Z*{jIkOzJpG0!*IndQ&QaWaI)V9c3-ruNPIgp42-JP_gUe&s7kmS)mUm8>(~F%S3E@#pA9^M34vmK8 zVq*!{aPFYR?7*v9y;MRG-rXtO;+g{Fi2ibz2>gy0jg%rOvWuq+dWG_FLAMI)mG$t@ zE7h0VRlx0Vjdt*RAfKEo9AuxfYcfvOf& zNlTWSYRTf3r91epy=1Y#YssobCm&*(xFweGpA=xmYJRgZ=jNo`?3f+;1r1|3-^VeeX^u~dD$e9XIMkk<$$LXQ=F~E7~UxcORm1~%`&k&>mK)HL0FFC3f zO3SgSU@O&$IZ>O2{s8dU6}QK@)%X?qrG!i+qAk&>BK>5=iTXfN*9EB7)Ww_CNj(B_ z)Kg5?b2jQBHMr_wB-zb7GsFwF7rIJ6DtBfdp7azkyXt8Qqg79tu+)O%XghUJA8Uc- zURE__8-BJ4c4{Y^iXbN+1jJ8L- zWz3M!@QeOG!rBX)>~NkvoE~nxYL%N_Q|0jA=j`{c;Mf*O1QbJ(`anx%g(Hw6n0!cURH|I0JfbirFjkRf)v4(mt+E*n|HG0R zCV^ZSq6E62@DIKcon89ik1wk0Ks3n@tM;X(nW_4269TpkkdMJ^Mg>Q9Q%5ygkdPjC zHRVW^Z?4Td4y3RZ1_MI~b(q>Jq0UdB%WQQFlc07{l~;?Abi^Ly$Ye6`q=v?Z)<4lR zC6>zMX@dxz-==;vgu897G6{Dq_liwyH=Ee5$Pk1(yk~tozYy*|mRCo};--^c>Q#kt zN)Yt@Xe@b9_pH>LAXg+R+B%*?=p)OT(}5TfYzdSELmpfYSo!ezUOs3h3={#n zS~-?W!{1oP^SY zL^fkpdVqv(iBb@^(+Z-(FqNQHbHw~(Eo!%A98-WC*+-%3d<$-%f#Ns0Vkdv6WGo{k z2~~zeRs@3TxUVpV3QX0}-`I_yL}*2Vn#}w_O<#iwT&^Cc_d2!&OXhUs5StewFgK(< ztmX!ja(YnqHd+(ZZZje>zU#e=B2f%|`^-zMZ;*)<)+}U#<;1+uMWUDBY0^{_mBs~u z5-<@iq}y&WMA#DRaR3EJf2Z69Afd1*G|}NhO4pfxdr%$WLnwZ-1=P|JkL7vMqUZ%3 z^5+iR3VIQwLBa%}HMM~7h=54e!+f-5JV3}uBtD0~Lf(n9`-h8M*XZov+B%&*m@J=a zqNVMH(!Lssf`mAkYJiJ9bx4?^`2`P5^Ye=4*XjU7UjH?T{KYkR=+*EW!-*Tg7i!S< zf{Hh)A@yU56pAu#%_9pEV)-UWQDR>64CQzkrD zS`|Sz`=wMh->gcToaiT-H5nDAg9n+V-DB;X(`zd!3dv!inMdCooRG3y# zfUJ7*8OFbdf_!4a!Xu5(7DH@U;&n{^ZdtR$Jtzfe%2tti^BhJy?aePb!~dxUYhsq_ zfT5r&s2xjmK!F9n76cFlfq;Ri=?b(z+X?Gd0&U=T7;Oa+2Qz@xZ81@LCNk8rb<3`m zw2Q>KzMy_S;Ld zvT$`};WGEO6~MkOS-9jwV6}E(#L2=XIi4A2(R#6ngNB8xr~Yn+snbznzXV#;scLWq?d$>bsV+!;)?mK!9pani(sJ? zFqCbI#U1(w8%#MiBKmj;qzZfI7oGZ#J0B+-Aakwa2TB@u3#>ktOTI($^P#jk@ zngWwbM3!YmVg2uPer!IhaM`=pCW}_cEaBgamTML93r*mS*DK-zZDLcPoo!)K2x2Eu z7W|lAuPk6SB}l2WbO7o|RU!7YL^xMtl}a8B#Tr7)rx1ittoin#7Aq`L01}n*$yWGY z0$M`pYqQfWVf1SL@m5HM8-R;1CIDU1Mx<8x=Q3tPJg0j_kVViA2h6nXcM$jicU8#- zP(K}0C#avUp#E`gQvdTIhkZ{S{h$%pgM;!TBY=e8L?BY=Hw0opMpxicpYcFCoXv>!{F6mp7*1g@o81!Pet zGq{(xhy>9z4KuisA|~Iv9O8(>W}H%v(hkUYBC{Ac>H&9aB7rO+A_2!2k+1}eI1xm` z_8AcgE5Wx4QVk+;tEUQ zD#WX<0@{ozU9De2*R_7Jiy$LarYj#X#iMHda=RsT_sVn?3)e(<70UB_$&e*Rxh+U? zVVXPPD9>Z9usy3<#`k$=r@iwN6^Lc*5w&9(w`I`MC@?dGLCZaF>nYUP2CcRYS{|Sc zRd%zAJoDC@s2I0pI6r|D+1?+durg>_=0qTt0}63C=rZC!)1Vc5Ga%EJmhW9N&G#lU zZ5n0QZL_@Pa%`4Yic%l3p4VW-M~s}6 zOBzRIZMM8WX8C@4zm8nboMlCtyyR#3eIG=8M5US1y+6Kl%`6|UW|=YlHJoMbnx7K5 z@a1V{l5P5UW0u)hueJQZCC{=#hhE?;uk|-v)>^i|p|O_3rm|MrI+3PVv>cIaYL*`) zB57(ZpQvV;FAWIdBp$4?hO<-f{ zdN%=zUvd-l*SQH&k;`%uXya(ZO%Ps#%1zL(+yovc(h(}B{eFZ*h>2gCo1j~}3D{ze zntbKl1nI1K+qoNV0``MkhMU0l=qWb=>g-?KO>lMXCODbD)cS@$&bB8dNf}ARwbeq~ygAdEp}0Iz);nD(DCWFdnn8^@rCq0_7O} z6qI5+q2i8imMz3vJkx3~*3>AtOECB1Z_3 z1&6ry&fB%INXBQ1k(uwhh(6)$=N-p7b$ z93x8BB_9=JYl{FJVnE?MnJT`LS@!nacf6TO{W+vPA+5AI1^18-5slIjnlh`94iN?H z93qPLhD)vHB{ zfFL1PmqXEo-nE`#_hMxLl)Z7Ett#4Hp($Tst@a(;=$YmV+?3byGS2E=T7+vb1N2eb4o$fOi>}m{54&zf9se{RW+!=0$u>=m;-G)tY%^B{<2+R$9mY~J4x6P_)FYh zYKr=9OJH(yjd=|WA@s7s4&%XDtsmENEoj)pgZTb2=tfO%&9f+pd0n?Kp#2)fia~eI^;k-|C6$ zX)R2sj4WZ)9F^5oB@(lpK_&{*EC2HZv%Xe?^qN@}wZP3-gMDV(31@oc7o!fZ-V64Y zY*yJD#<2fa7CKMCAv$o@IGNPHvbS4EfTOab>%#wrEF z?+c+iqvKZ$5>E6MkRbQbCAB`@bW`i-O|KPm)3aIB@JCn)=S;pnGn@V*b17$UAt^ z)?X!h`9oK%b#SO^9aV(;W0LOKjO=8CN738F06?LsZOLbASJa{TS&=io~NZ>3#mnksa?^(5f{;ClF)u+$uXL>{Mw1C%pN4ewe zlc(%4en&|J==8JdffOAq-j>eld4hg;CTjvRu*St4gA`l$D|XnCi!U4zg+4+=DS1M~ zkGDJ|?T!Bgj|8e2h&Y9W=WUGO!_nywLe?vQ<+&u*NbP=#drLLK;Il4F6&7GNheL`<|GK*OD(9;Pa_hQRKU*}L0|3q|@`aXx*rBcu~q^r_hX)!6smaLmR zWTGMv@uLqpW)ciYs{65;hmiPydzm4aHP>=ZvncS>`#%)5sx1JY7ef<`SjUU1vd08S zRZiKDz#AuJk7L)FF3bE^e60LP&1E#Cghpnt7cn2OV=oo;tkn9T#gPprfG@vi!mSS1 z-0CBfhsWxNPfT$0Y@E|a@!y?1e5!uW6>E!*5tLT+dr-Ho*~u6q-g1{Uc;4 zGYgRMPxEv2))B&O2PZ+LJjkwZ(2gk$4inU}}@mi{qL%FtsURf{Q0p z8(abfc|7MNi^bfbf;7bwQyY;A(7tu1wl#%hYMZmE4eIOim8p&LQ>HdB112Pkgs!K9 zY(#Kd5k?!WuVJOB#DbJ0M*+zc9U zf5{WYtroFF6&L|5?fTk)tY5E)AoA@i)u9un4UIGS6d;E|2#HuE62ie~tVg%CvK7{- zbR~pS#7_u(c@}~5Q?2s1kvaR-=@g?nJw)_J&B&BCWSyCZKh8Q64?oMAW=4Z=H)uX9 z57v-L(C9$1vT{DS5JdWkMC;go2F+@foAxUa$_$A^ZDUB7=I=)g%*w40r7>U^fgRrK@(9W=z6BCJtd766}O~S@5D>ENIl@lnQPSO6A zPHRznwa*bWuTT{7#mQ*Z4eCWGo{d(dWtRnz1>vnnj1laU(*Yk9_n4hz)?7eW;H(>5 zh8=A7J=>}Dn%u&Ay{y-SKrLG%2=;U1&0=dRTqx6Nylf@zle|zQyVj#%7O_|R_3{=P7dKzorp{Ub5W1+S60^I zzMVWWI`xBb$wy8Y2*cAhF@u5dAp1*MRE9@qQoOs>V3F0TDvlM;#qpq+vQ>>XxFw}T z6}3pKQbborWAbxU3Q=k{0P3b2s#n!CAw^M1UJqN&T@QPP-=|%FB~OvRg6brA2}pjF zPQ)4hWD54i^+fs$CfEHo5Ni`5#uo?={Ge>T9k=5_QpNINC)5qOnY8$OQa1$1I8$C( zki=5(q-R_djV)5aoqbx~+fx1;evUr$HEhhcY7twn^4-Wao<7=&ggx$*H{Z#Jqv(II zddvn-c!MH$h50q!^FT4K2^~7>I(Z;bEYy=WqbQ&)-SX4N3rt==`qfwQ3~7_dF%T#1 z9Wd#nuQ^|j{`gf;TIbXKXeaN*7CoW~*rJh`E-ev=_nOvStO4-x&e%B(v7Tg+l8q3+ zDJ?Ev?DGz^HSlv5DcMJ-vq(WR3mz&+Pw?ZeN+0EI$;M!kMTG_6`V6``YZ)+W)Yc{ST@=0yMl;ZJQ8E4d7=1vkScz`(heb zb8YfqH4>q^F{FNK>FfrHeHYc zkgg+5%;-AA>T4ud5TrpN&HL<$(VLh6hB@vkkQbTEkg}5wtP8yIULr&*lOVBpWbjeY zX2lQTp$A-+(2LHsnXLJIpfuu$;4-IxnTa;ehTPVWw^^L<8 z`yZJKEn*EVW`-f=CFqK@^GC0eFPi4k$VWem0y(4C+p|{(Ev27D8pzs&V~?gozk_R- zJR?hpklU9TF*D8RolL0N!}OausL9t|YH;GF~bDP%-f7UO=ARsj^|#97sg` z?=3`I|K6{TTntPn^h2yj-$sroa2#<=>HyqadVDVCq65h1h5hpsdHtew-NBB`i-)nr4Oi0eDpsK;%J@2OA+tFc(t>Zi_oXT#ur(H zASmyHvz%yMuWe#luV;WD)cce$m`_gXDe}dMbR|ZG-yDSGuoc#2d3FKmf&{B1XEhLA!F~3F5k-K_u1LtEPrj$TSp?Y6JL`R@ZKFn?f&T+yqetyS+iK2{qV|Ts!0DhUB`R$n|{1 zPUdTJP2C#r9xgE1TVkC38?v|3G=TujG|`B{_=-&TD-P4IISk*GUt|=a54xO(8zYTi zjA?lrVBB8G+uHj}0!%uf;VJe{cUgaD_PQbuvMpg->W_fI-p^Wq6ikEYr8(1N5x@kN zcUH64?aYuq)sx+lCK;fo&v6Bb_D5VnM>-TUq|y$vx;EQww3-@)TD3|K8z}!6fwZGZ z12m?j^q(Y5h&kp|#$D4@mcljpJ=a4dJLNW%3MESnbw&ZH{3cFIzv*Yuk^cDF){VM_ zs_e|4*D3(IK)=W8y=#9Id4ACq`7isney(B-G7t)w2FVOH0{vrajg-OmEI5f*1$z^K z@#vwIB;WW1!rQa&Pv$P3;W3e3OoiVyd3ay-ECucGT?FlLbF#IPkQqXd(a-24$w!wa zTJmpqbN2PW(_;XVsL3D$(Dkn2jQj4}P+xOxUFm@i0L3X_ita%j@~3G)4oNX*Y?el< zC|g8HLt_P%F^^c9x=+Do5Yvbo>qgudj0%l~_u!a#76)LlTwO1Lf(Htc(l_hZs^Ia; zpwWP|R5vj9h7uEPv8(E5=smQ2s+GvW*!j2#z3_>u$$bs$>)fkzd zbD+3#1^`g7V>O;_z8%Yg*eOR9;c48%oWp zE84GZ?J8QYVi)kd#=QV1dc@K|7nsi%-A9fW!*4EIcLzn#=noP5AOZW0Zx=A`c{`QL zBYzb?xTzvY_?U9)VT&Jmse36=~ThB!_{Y|<@k9sQ2mVv-HcLt1$W+#xqI z&)R>*lxwxI2T9XyJ}{Z`DhDCoIh+tsN_c{`4OmT5HS~Z<@CHr8osd)OQcaw+8#ThURRN3@RJP!tvN-tF>2basn&{!H4~%teyM!v) zYv>MyZ(tru1o_~m?}3M6Ov+F4gXgE0_mA0Xe1c!X1@h3asg(^9>3YmpoCiDeM+}@D= zK99<$5x>BT#Bda=rLLpah{>YXNM5j19p6rvj@u_R@5HjCf-NBxFd%1(_4N_ePbh8Z zR};B_%r10&ja<-G*E#ErAyr++MS+RT@{GHVl+&osL#Ub{hc=$ec^KxDY#<3+F9zjv zOZc5MSZxbLKypP$d$k#iSZChQ#JogBB6X$Kv~@b2@tW4G)|}@^v>*<1K`JJuHdkzV zJlGCwgX;6}=^)&L@)`P|md`I$9*JUbZT8F(phN8F^S>4gi^*CCd=Cyqd75;Yf@=Q^ zjN>`m?h2z7ufMQlyc$=`ClC(%&QKzT0e3SOmIWN3Jocf2+IAlZKB{Q|p@FF z8rHD*2DdurOoVXl3iqoo@JdO&2G=k?u^m^=Q2jNd_gByHRS{pE=PQn;Qy0#suQYz= z_L0)ZqLZnG%PIwA3lnA?mP*D)N0jyh0#d&v7a5O_=FE;;WVmf*KO%30Ufd6^To-Td z=Z#KEcY$NMPMb=@JDw{|*^RtLkfYE8qPvB7mPnoRZZYB4B@Q!QFtO(l`$Lgk3<+4f zdAS_awgG8qQ2GL#g@rTD_Ax21oXS{t64<+wH%BK=&>rY5#5ti(D$lk{u+?JH%Tw;< z-YD`AMQ&Z!#XT>yi(r!*JY9DYw~M=YTeSCa+Pgiv_;GddT-C)h%`QIbF5VGE&Qj#g zbzQvug?16-7MHZznv5tyAIRY7Ul7d~cVEmQ^IG@7Z{Dvyw95hO8ltX zhNZoxwNU1-mnB$Mt8R5b$}+x?W!{llL*^Ylr-xOS$D5JUS2i)EM`1XiarqqAm#IG1 zXT|vGiW&d2K%rKiO>JJbGk->)0iCoCwT4WoxSDg)LsS-5!loPA}3@>#Cc-{(*PQQBak zADwXK2NGxAp8eqD;r;c)ck@u23h2wd@O4ST+@9e`L;>UKdV$p91hqec8C^c;0$%&H z7YN49li=g_?9-Dr9}34sr1l+G$2w!P|mdITA#y%uBj}C2bMZn ztCi8md6~39N+hXLf6OF%8Z|A+i zkR3@GxG}#K0qx~RUE3O0D2Rv)mLf4>WM#2o)WT#%V4L2^yeF$3r9f^8utPo%^Bz4~ z54Nz?uwoz!kcO9UMWP#q?M=g(Ss*55)~n(xJbfUu)QLgyl>#a_&R~S&$|7XxXfqdB z8P1OKy+2R@V&!FdF=hHAO|q z3|_$80`Zf}5)nk$wc16~1xnd&_$xAQ@(%6Rfx0ze58bjDT3}3u?b&1=%2bp2d8z*# zhsB&PBrct1LzM5eFuYiYaSCxJ9>cf*@OJDE;I$L*xUxbj zt{8rR+2Cq7z?F{GWPud(O|Cd>!0C>F)4sKELMRcjye;6w`4yPg3N&}a2`Po=1ci)# z{vu$~lmI4~WW=bWVYBaxbQDyh`xgNd{RlYq5}df&WEavyi&A(sSwj<#kEY(_4y>%M33NhJ8c ze0~(!096Z3tp(3T`llkX7-pLap&sag6^A&#WUL+47FwAH{0JO;aCs#$4Gb9*8z2hL z)e{?_P2eBPIod!vJzdsP&>svpq4Yu4$st!h@FRcrGQ~E$tCW_?2hh*>0PW%)L^Yt! zv9~|SX8`7jr+#sc6O%9j`q*0)j$?1Js-o;G8HKE2va!kn0a?*45l&|%IpW8H=BOu_ z?A#X)l*^ehy*l7>9Ja%^(pHOH@G3IVan?MAz?4ivT#RF-#V_uCXRHKFujJ}x5 zJEOvw9Sw(3)~G1e;G)n)kihJCcx-bxXwF|1JBA@Y3g_V><5J%;=5h9}-1J@)&~wNv z_w$424=my0;yeiL`$d8|qNjBEaJoLn78BNn3}=|3=O>aTn?)BbX|mH*CTNJ)Y{L?R zK3>e-+sL2QTT6c&%za&0!82moU6ovm1vnA|~_mL%lKIs+06!nDLG>h{~%Ev{I* ziCdid6^FMY263I_Bf5V>_F9@p7zZAi1S6N>ao;njZrV%aT5C8kQ8&c9fjS zGAk+HoQ88l_Bhbd_0zgOzDNUVF*#uPHq1)NBBnJbchf*-B?Sap$M@M|PYKGPhUyda zpPZ`CBdD4flTlklNN337a;hz1fKe~{}2^s;82#1YSav7z-`f0U2>hW6Z8B z9bqH=um$63K9Fb&0t+u-U-fFH_~VOS&i(D#Yh%^(Y)3pQ&(Z+}dp-?*5alZCJrNUU z7gJ)wnKmVg)1b@9E&uzA^i(#ba8Rqmk1et~*r7hlrbPU+)&sfTWmA&WB%4yC!BTJz zJz-wxholnM6&k-ZOlCq>6R#1>5obLE$uTOe{V{dxG()mwNgF%K}(Q-5)@`fODLgGGGNuD*!5*vl8TIJNhzF*s=r<#%`~q0RSi zl68`Q&i>u&^Sk2deRPc{GBlyzc+DNtoTO*yEw1C%xZD$895rtM7*i%B;x~7M1qsOQ z5+;~XR4W-O$@81Tdepxrzfnxcm9uMA1G+iB*c+B3zStwfk-yjzUog#0GP5G zF`3(hJGaHO-R@74&4_o{j3`KCR#dZ(hHzlWV#MP+WH53E?x0@mMf6*NUX+9G>i({V zwTPbw^`c8l%pkNHY-t*c=4>n?DBw_}2ZgOjHRf_~1%n3e9vh2d2{AqGJKec^s?OaL zolC&DSB4^Y?p``4JCS>LU!!-2@odZI>#iO_?+i0hvvakX=yE%k-{;P;3n_u_sO)>d zPF5m7aX-z0SDHQP!L|~)gKT1&z>h={^bqK($O9C)a~=3xqeGm*@htslHUHiYVw~=z5NV%4G86*b>}FHX{GJe~Az%*@)yq zCixvUA}x~Si^5^Hv5hE6c@hQMYo$CSy67?ullUHuCU<~==r=*9igXDhkyGtu;C(Rg zTUa;mW(~6-ML!@g~EsAA<0Yv`NdO9xCoEC7ZVFx;Lr}(wLlzpuGiPLgqP`GU{R9DPZ zxb|6g`1o7QT-xjd`$TS6Vg5XG)&9{hc%LsUk&i{%`{ie^Vo3GJV&ObVUwa*Vi`4)S4&TEK-qOQ=<_ zBZCpsK*U`Ts$rY%D2~BDl<$oX=+B2f{i)A&?}GAdc}LN^JN*Q-@%(PpqePjP^oF;f z`^a%b{14%GZy==Wh4me8)P{Yh?n~%9rhw_b3kj;e53AE6u{j~##P-N4>_dcwpb=e| zVnu%}Yo;UmW5jqQ94$NgV{}Q;AERQK=#S;sWsd&PHH+wv+*JRN9xtq!zSkpT`-YaQBD)k<)W&LxFJX-@c00+a~2 z*e^;6~{5q?jX!A2CP#tYeO_?1Oc43F~xC zST|Q;o!AxF($w{pW_z`Q1f6KJDH0r^(bZ6VI3h4v$3wNxprIQ zZo;~59di`tp{X&}t{ZxxF-Pxv8BD45?QA)F3bT;1PxfpG!uHd<={u3+5Qwn&^fVWk zcc8*VF{JBxT{#aE`w$_a*n@aWgzL`yS!u+zP|1$Sumic0XDB4?2PqS2lI)R^ASuTW zq-;!b7OeSoWC=v)7hWOheG}(vUjP?k>yfNt5}r9B6l7PtF7m;GFn3riLY)^aShpvv zkGG1K)hP?aGC3ibhIayDzpT0ta0nR`PJ)^N3)1EFZn_^>oW*{M2e2n|KFYGkgZg8j zpdk5r*w>;D7|^Sin_xH`j#tKpmV_*sq-$$OwgWNcYs6|Bu(VZlV!$H7wIXm2MsxRw zA<^&++5b*|l&KvV+j2E2A|`Tmioq?3CZiF5i1X!RZ6Kl1Q*QK&?9&s&>`9rco~C!7 zB&b?56#eGt6RiV=e?zu6F5jeXSXZEPQWDh6#m916jD<>sSGU$<`6goewbatg8xV33H*r;5DOF`E zlY5oV zzRn~6P-ER8(dvm;wK^T3%Ee3&|7v3FxK;i|2;v7MqRH6gLC!|3monAm7>ELlJQF7% zt%X&O>Kd#GV!V%@Oq_ru2Lki$mU zO}}9a(TVF3SnUMV>`-x-iH7QF@W32y9-cAWZylD&h@y~&x>E8tIDA^0vh+Z*8f_l7 zx745)A(FZG<|Bpq=VNTZ)4IXZtAk{I+J#l~WGCI*`e@_(;urYs(F?rLv=y3-i8VMD z#<}}}hb9}XR!hQ7t0VUkemms%28a4#b`09GkI3G~b8H;u-F72|nXsYvSc}b}nMV{I z$5`s1B!NwP2B!GSkrgt?eHR%?=(XHhq5T{C1|N1Pd%&TtGMxgeTOE`Iy3#!nSNzW5vfxSs&P4 zIgbjtNE#}^4w-)f+w!D4kynFiwx5^q{H6~IoL0&>9K<<()@-YtJg8sNLHR3jT9kCS z6qTTfQ%isiJON4wWT7w;?EpWA`Qt9^avUj&2`-i`U%l^R>Dv3Ujvw-0C zC-6yx)~g#!G+IViGI@*wt1{9%kAZaX^L+U~6))VBvWXvF^R=%v{zqs${F?pqG-&Z^ z%gXWaQ;kMo+XART;ldiivz`v$!~A0h=auE2QUr*(V=#G{u~_pWvw|P8Z6f~tFL)>b zhCaU|Xt8;{vhgIh?t1EuJ#`QwkdY$r)s6Qyqx&;&huDPzS)_ze-4@aP?>Cp4N&wTe zEH}C*PiPYxw3B<%O!t&hj)5o1k(i8$(DA?SX9oW3dk0=x+<4%>J|6g~h#7cU@4(OQ z_JP+Lu+L^#9?WPdI}f>ia)0{|*}yu7+Mhqn3--szvF*Z4o; zl$ZypOuDlo@cR+H>UOQuh3i#hFx?VhEj#A;DQZV$ceSdHBV{k^ah7jhZ#m-I$D@#w zK}WmcER)Yo9<@u%?rL?|UHO#*pB=TwXu(>j4}N}JMkl+=;}FE|I;mgbceKdZ6;I8u zB$A9+;+a2vT6K#0;2m_PS60x+5%s|*Y71|A-4~l)Th8>_GSjPGbW~!}BSBsR@T5K8 zw?xnPE$;dB!IQjBrdNBu*YOB4z1jnEqG|kqPwN4nc9*|VhS%;#d)?TN_6B>jH${*3 zCiiIi;L+YJtE)X43ANoCub)q*9_<-D+B5F*w@51PezZ4_{b(m)2&R9#N!VU+BD}o* zN;K#s?&WZ8%I({)WH$>}8|d`NF2yrwazFnrz{RxdJ17kQT;JOiK*J$EHuQZeIt8H- zGDDj7uj=O~-DRLH{Ib3aeds-o^YJ(O-k|{5m+|pe`hGOLwEjxIoM1_0qQYgqS>d97 z)-QU@FT8R()DgPcK^x%(5mA8zd+>}+N2-MaXZ|G?aNY>7y#&QBD|ZVF zwZJ1ghudT+3tez_Y#ofRox~0S8n6`q2ZVv}>VK)?RTb?3c|Pq#)%I`WIM)7%e%GnT zta9!DM_;yH;l5nc7ah%~2hs_ey5gg1^D))vG&lY7aedJVjry{tFFFNGU;d-M=&&e# z`5k@Hp*Q;SyZUnG)qH7RS5b%5==a~#m#uHs@4v6&-QPy<&}{#K%F7?O@(q>m{Jxbx zA#b)uc>a_2?GIIRf6@m(A?;hS3jg1TfX*>RlD&w*6vSKUVp)^ z+>Wli`9-Vyr0Onx#meg{&zqFf{(n_o`$60LKBe;6AF}eFs=W0hR^Cwg?vGpf&s4q+ z&qL2Xt@7=6S@|>a8fL(rw{M%)`aLScl>NEBEx*rdKCAMI&fI9WKd17!U$pX;{r>A# z{=CXpK5XT`PXgf6})b8&>nzD&P5xm2azj z<+E1)8xA`ylZ+DbdlDFjzd|VdLS=!is*fsz`GBHy{MPI!j05c(6YAr0{5tv|E{Q|R))(_O944<>F;^9 zsHGNzD^W}M#H6K?6L8Ou7PaiqawTfnNw@U({Jo-UXAOFi(az z+VU3Zl56_u>|rGdqyYU@K2>quf8O-JZ|HN=wI!xsm*9ot?z^M{Z5R1e#j^jr?0;X; z=PE~6aNqsz(!1WA^k^qg3nJV_;3@a*IN#Kt4xfaT(u%89|2+b+9Xf3Tr{y6)4rxEv z;hl<@Ebo6W1{zq+rG&j ztM#;A%4;byYZ)@^{?~lllX!so;xiUhWMrOky@NN<@%72m+{}=HE4bm?zSRQ7>}har zTlY`%cK0-IagX_|1(n$~IHfW3@zBAK*gcSFp9oI+4%5e{lV9H${ptrFrf>!daEvpp z(_!%4xS8mLQSGTLM~qm9#fVxqVev6co@)_Z9GD+NIEUkMa6*3wr?@f%%|?KQgabvT z34s-U60LiODRa8Ih&EOv?aoePJO!5uKza@A__|ESV(+K+lNhOex(!|ZF z0cuEGX}B`DvUiCb#r$r#f<^YYqGYZx39iVD%S@gpTQ2uDToF&2#T7xqHZ|aiIxB*! zB}TCuSA>|xWG-gNfGc8*tu45s&WhlQXk#Oj#?_@183II8PXn%qCAGHTiaINTD}t4c zOb@PB{59ZeRoD1eaz}ABk&7$Y#3jP)Ag;8Ab{HhLUiIM0*4eedg^YkjsS8-Q z8Ti@YPHHOeW~Pz_>yDorfJL26CBWLw0oGhA0oEDbu4LT%6}PV6kNcw*PeW7(2FL5zU?hEJDtA9$49p zum@PS314i*3zjLoSz_hv*^R3;#+?}0)J)#U%p|zF?xzM^QD-v=u5S97OmBqiDKZ-w zGT>_6w*^}dFjQhuRr*?D-ikNe{Twd_q`i)fxU>y?Z*`bqbD zq`{Z=r?F8zZmHF2Ub0hcKG}CI7eh8gOBGl4b+v|49J_` z)mPvVbrY7Tu$xi;TB-iE!k>)$N9;vs0^)u8CnqHJZ(_*)K^%fZ^lzz!j)VR&P3j+$ zn3~Ib>fgKR9|ReD^^Y;^*S}Hc58}oB`(QJk!0{)J0XdXEaX*)uIJxBY?U?vgGph8P zINlrwOGp=Yix>@-AX5o{b;jkVor~qbU!rBV94HoIfw9o6&g*mGQpa>&l8}a#14U#M zIdIa6Y{s8xs~J}g)P0u#pdNlmIZ)l2lQ!q-Bd{*MEep5Fkn>(ZJ*x|#d0wB3DF2WK zC3f@E4dzlb3VHo3Pv&=xA{i2%tQI24O5ue_KXzsCWVm<^FGRA1cp;J$IG!idY8nZV zxX6ho!+yDYnfleA1}u{z>jkS1izU`gJaB>9 z%hCsp+q#$Xv^iK|68Pw?#Waojna&uQgAm zN9%RnU&DeW&egbHhHeKrtQ}pjy0sH*yuA{;1p668p-5~Wtet2Dx!Q>jn{*p#C**VI zr1wcKA6+{!DeVL*1QP>WA;ckAAiYP@EqV;6p5W&B>WLxyncuJ6nhi(foQ7kBIX68+21Jk;E$bK4UA z3qDLe`WJDK8U4%puXaY(zi2}oQU9X7YZc2)UtLC4G8mxCsO{lGR;0?<4U&OHECBel zDq{*qb@l?@oE?-n2QYA1RmO9*Cd1)MuWQY~J!s~om~Ugj9?k5M-W{`MrN6S>(V1Na zS|>)?9VbIb53@VsHT;v`;M{GsKeo)>_G`37O_1xSCiik@pSV2w{;0)xl>HH*N&BK{ zz9fl{XrIvDiaA0q!Pp7x<8h3O{OYr|9p{_dAX;9CRh&BY(vIMnblhUe@gKz}NJdHX zHDeJlZ7w4e3$a}Lh5^22T!Ij5zGf5=Vpn0TbQ6Tws~8`2TQYd@tbKjWXn+uV&9^=2 zea-k4A@;f_^Nj0jKVLH%AjF!l8AXIx{Lt)a5MuE)v!{8xdm8zgam};d*NmduTjQaN zgjfvtiLV)#IbSpTHS#r!2H$&*$=8ffnY6DNqieoqOq=&L18_{9_fGQ{M`nTvod~AC zE?+Yu%7}N0_f`@;HCo1SIzKk~n&DJq(TSe2?lz_! z-djDc&@bfpnsG;P)z?bECE&_@%_xE^^EIOgu9iHU)3_?|HKPHzGG8-_;Oe5}Ws2Ym zUo)GyG_DGK&1e9w%-4(}xH4Zeir@-gvwU2cuNl{XEB4mifvY^1peeZo5kat{xN;iF zXuayeRcs|NT%pa)_cdd*0ajmMGcEyG=4(a~V41HOMSz8`nN4LHSOvajGyqt0SayXb zfMvdB6af~#W<9_v@HL|Wz%pMmiU7-e%_ssae9iKKb>80Z|T%=qypP+(n^1xgN(Tgeg&apN-f1e zzj+(zGNXRQvj*wnUVRW98*9J$%v{*tY(+X7$CJLFrtHcYo>bzibT%3>+2_==ClY z@rI);vAm0IxAJC}SoG-eJ8Ejxcx@%>GFGcfBYp2{kAFwy;@1?-YVliod6>6! zyM9Y|iv;HvxH1@``YmM#&c3CDP*?btLVc*W6#K_yb}#+SoVQeJkj!4XcpvmTlg^h@ zLSNr~xYp6^1|7}VZ+M~o!`Rnq_u&z6)gw#af~N@;59s;3d{0hzoLWb7FQW9=xWa$K zbbnd98lIfh^LO`Gl>XgV)Rgr|lobBDCxurLnP- zlFs||D&}FafAq?lH*)sJ9$9mF`2De#H49_jSv>FE4pDQl!>jW~mo;|>7u)-metwv@ zbftbvYgsd~7VaR&fO59Vw{*8^guXV+Te?=irS)6-AiSj{*{e_^1odK`H>J0|*kfJ! ziRXK*E6dM!x>Q2zCBLS22R*V2AgS#uBlzA#V^^zghp=If&h(PDl2nLtfw3gbSy zV1at^i~0hGJx3On-Z%B~P;ct3`c2(6UUK!DS}Eg8!r2PnRHzU4ruNFGAIo`Dd$dT~ zCBLX%6;ki0&Km*eu%W$KYb{ch^6C2XRdT*iFMdr^obOUkEZArCmUiW2jX7T_Zk@CH zufPlA5+!TWu*rCYr%{~U6Ju!Lj8^v1n;g~eCxL&*>u4~0#{U=ekkSqsC?{bl3yaqo&=G3eBN)IM|*|kLorL5OnWZEXT%Gp>nhO z#5R#R6oJV$k!rIIzQA7MgtH2=4MMy)aOwpzxBGO1aXc7K$z{cZeKp=B<+q>2@wWmC zUdg&l4|FM(*Fx-i3+du+rJ|+J_C$mI^LO{^h6MMFx6s0es^1{f(O`OjDx$&Mdt7Uz zyf^O-@y~JQ@nJlEC*!1XyEqywi>ra2Ms+k;5)I~uF4|h}#nWhPTupdSqija|T@Vd6 z09V;)u%euC&V%hi3kG|@aTT#_BiW^K<;smzC`u3=2P{1Q?nwNvz=I9qeWZWKu~i%l zmKgRb2nOqK*NgiX2ZI?$T23(72jY3-kR^E1z8-p`1%pAl&#Wajkj=-M2P6M=cO2NS zi6iaO+30N+M;fbamhZzkI;d=9*5C+oiJ zaMR)DHxl@-0{0~?opol@f8O%H-_hq?mwWkuyX1;gRl4tG6=-|O55#ITApZC3`n)k| zd7BTqOBYBk-dDZlmgQQzB@P_+*Ky#(X}A2)MV!)(D7QG=M}J+pjyNeb(1E8rnCr;J zkVLp@A`AoEBnxWn>o4zU@_gj``ZFPeeEqrPX`hdQVw8`8B4P7OIY+b<j+sP;}`S49@8!sB@{aRYb7WTf(dEtj&Jt zc9g-I4DuMPU2uGXgbCRg3bKKlz_Af!182cH(1|i$QHnFEu|2R8oHo$3}SA?821%qYfC|r6^Q*8c>`bfAeS%PVB^pp4PUsaYf7{f#6A_n zxWT4OAzs|SZjG*H)X!y!3bTK~{IO@T<5!^Zgm`iPQpajGLaB69 z6Ifyg|5c`gC9A9W>9(Vhp?%{Z(iZVf!wy1q;8W@I`e7vT-4`n zWl_I|(0C5?t4>AwwL(bu=@se~f5yhzKWrY#YCL~|mIF1O+xJ1^Ir-peJf-P0OSU%n z5&f#w_8gX9GxwfV0iTCr&qop0&Kk~42X>bqO9NUMbr6p)#2bCTJ z+}LV=?nE}V^Yxqzu__Pr+KsKxdNn|qR%>Zf%Cv5W?h>`MV=h>`*o|!fuxc%B3Ro3t zX3gc@$`~!Q%b|S4;cT z5g*`ckxM+TsEcrQ0X3W0x-_mXrpPR3$bhShzAd<-F2dC%PbQ74%PBHfGGxHjW#1ND zQ5WHA#gpmbuU7pv;7W?YGW`tq;yzdqf0E4@2q4O_R{na%T3NC&2;$7=j>ey4t(6$m ze0&CO4tinkE&gOAYh^XYysWjd+hXR#r2EAC9eh6-0nRe7HBT zx&V}qW%^h01VVhc{+-=dl{x))GW{$04TSh`{kui~QZHb3x40*Nk9GQ2Sp*-%i~E=O zd&JiC!hVfzO?Q!(7~qGorjL?0w-xq}yG*R}{WSJ|r6sIbIrF!mZ8qb zAR}M*WS((-HW~Rwip`_Kc2tGPP6ngbl6c-_YM8drUcTLbpN+8Cc0O)E6UzxdXx z0gQXr7!TuKXIC@E9q;;@aqnw29RRGXH6CEq=6C~^nd57TaQvOHHpeGBVTI=S7vD}e zfWtD??DhSz`_SQ7BBazM5#B*NI~&|hIaX|E94n9r?{bM(jZ#PG))bU2nL9sAm755K z;hCvZ95L$jtl>Nta%gEIt!hOyJTnCm)jPaR7Vt6)9@>~u{#Kf~A zsX9m^DvIQJ_YJkFCz%L~;i9X9u~%3lZEylvnxZogxE`V)WWAy!q#q`vI|wD!R}k_H zaptqY2_zHpd^O0}XbWw9{gSN)C-fF|XIcFMHq0QDt*-(bJH&_Vpwf_5W28+E0j*#L z`yT_U@%CwCyJFT$oWL(-jL;<;*&$v$fr$~i5q5>Fm)O7E;ie=f5F9irNE$Ks)9Iub zCC?wki{~$$6hlrR)x3W{O#hMvhA}MD%?#qj{mZPN@&c)50)ITy!ICEs;zM@u+WyQ8 z!txviuY4Tg1AF24X-(c^2o)Dn!3qlT;tnPV9sK51?B+6B(ug75Tsnp%d|TK&J)?85qyDvCKf$A8BWdZJ<12Ch+yT*j z`!|$}a;kq2AEtjn2X#yD91hVhc-4Y_C9c=*fat#c8igmF9NP8zPS4Q|znR04%BGUx zNY}^UNJZp6a-=e_nJ1E#q9x|Zv#910yv%o9aM}O9qR-WqCFeq;tSa+1kz2*KzlM~@ zRx$5=!q3Vb1-AFRJ{R2~&mdZD&7)xX`Oe6`*P=J@?1rp$(0d*w{-S4DQo?ghuWYX! zksDs0zS-nG-woEmyu%wNj_rcO8?wOCZ~?~zSXn;0c0`VVWsLN009GC&T{|M{^(S&- zJLmlHxs<2pnT)3=R>3*ed$m2eqvt$7;EePr3ZzpyB&-n+|iJn+7$-Fa(Q;n7riUY zpT8^ZYEZH%9^wO)W_Dn0b*?ZQnf{e*iHG=b{j1Iu=0BqJtSsLI#EbivxcXFKi2oz{ z)i58l(ob)IbaAgf3j#&ldC7ucWZv$cM!Yc<`0{S} zTj9)$@-ZH}h=W1l@I-LZ`y$igX&VRo^^MW5e)MO9$7Z0Q6F!6N37?E^gS-(P=8f8L z;?xXiW%gW)=;Gk@ha1z=;aqTRDmbCPt}F;s(-4@7jrhT94>wvTG;>BfFtVNIw?QPL z?4E_|XlS#1I>eF_yd!+)cZI>Tr=AENvrE&w@hHIZLz)09Rz60+%FlwpV*#wbN5^sr zz_O!bDFUoTImA)~SW6zzX<%Il5`137yUJ(jpaHWmD)TJ~hpz`B$ob2&o> zU|sTU0Ty*e24G$BWO{&QhZ67r01M^g?f_Py^06h0p!W{hg}{of_z|#359(JeN?j{f z-!uqJ2*9$VV<`fxyM8JG7TQN!BhtVs&^|g~%}M)65n!R2jDR)IYpx|B4XlNf67y`L z#H202TJUWF7IhJ@&UrFDz%nyFEddtZTs5#p*a~}AtXTUP0V_Wb0;A1}wZ`NW=0V^R zfMt0QC<3e-ekuXhO+S@sU=`#+pe-xbx^D}xHhhs4YcmH}1$hu41F*JyTYzPG5cri9 zi#!O1&mLfz`jKk@mRO94jo8txa0gec$UlTZw4)f=vtQ;$?kM{yFZdCC6z2WfE9iKE7&$S83ir9o|d_v`~B zX>r{2gX-_N=?7)q+KKdo>hGxO2QN;Y(pWcG!qw#qEbd84LXI0us;?x))hK5nes@#m zw)7CqwxeH15w$#LnuuDp3~#3?u`^aH!^c_KBRLz!s8EJS6&TC#4|^FteXiidG4xxl z&cnM|)asGpCu32IQkSSz%kX0>hsFjL{>7#o$^vUrz~TVy9hBjnK|azt_J~?p8NMi! zAukt_)`KR(`=KjC(i#(2eU9ncX@{8n9r+9z>=a zdagr`Xs>gm)U^>_#J_wtSe{6<(3jACCt7G!L(5zu-T~DRbyh?*bXnpQx`ec9=t_#r zN`?%op)0;Esv+u(46313Pv)7FmE>xQ%(V;|R6|#NTU0~T85vYVYo1JxYREi@cz9Gp zH*`(CU=3}4>shekRECkx@jwhLN?pJ@gLF9?%ugo3T7V790BfF0Jg}&XfOU4V7g*;~ zWX@;E0IYMqEx@8K0@k7@lLppOip+%!8GyCq+X5`=B4AzgWO{&QxeOh!@E|Hx=lH-a zSaB{xzhLF3GISi)26HnTY^G*%D>IWUSet(OSg@#zaCIvOSGQAS?qtY-tJ}UUxS}q? z)!iIiZKuf0B?rLqz~E}zw*^bj@MM##Z}Mkc*p z6&x%`TX1Cu3sMAEcCa8tHo}b}T-m{bT*F34Cc~DG&E|(UCyoJQx(kfCUhQJeeE_cF zOokp;`3DO!wr^ldvW#;D2McluxLQ=kIf~$F$rr&D2MhM#s^DNj&7wb8kRrIUg9Ryq zD-IUy!BxS*f;0eEcCa8taAgMzQUq5ko=nerWtj}Q23&C@N{y?&>(u~>FwSHcFj^J)i;$PmjEnFWk?ZV#iqmU$nL%8*tdEKX&}S5PLUvQioH4WN0F$@(=Q zl_9M_Tb#;}uOLn&mCBHBfXKHwh;J$OO{at0j70xI+!SQ zI!M{7Ey-koF&;WN9W;Xzc{cfX|5RkMc8SDVsZ?;xg{gyjoet1WL{0}dG_;-1 z1z_uPu82A~k#ahi2tOQ~uE~GYk<8(2@)KO%)4{aq+WI`8gAgCGgD#n7>~ugsQcef= z)WJ16=seKXL2;ygIymYKLcF+x-UHnxP!R;&+a+VPEwQZr{b`jG2=U_nMQ$pp%5?bpHDVvFQ7}N8P8v%ycP6frhg@`pb#Ife;1~zn!jJ8e?e9A2l3+m zrCz{z;zr*3uxTI4-`jsH_2NyYw!U1C$)OwyW7Y-I#ohY;#4Bz7WzGHBT%mtJ%kEsE z5?2?R@HwE?Vw4tssbhS+q>b}b=yS-CWRpyc*UCNffX46;P@t@oN_cQQ> z;e23i;VMMdtnQoNIKEe!?z<#zl!wRN+=vdy%%n?kAP$@`Wgm|d^Tn@ExgU@7&B^eA zk5Q@O2`z7m*V5m8C}Qrq8O!CPK*-Q zq+^u&1IsBLBVcg@0k0@QQk`g26M*(-wN5lTV8PNN+5t@kX(3|wra;;sf-3Vvlo)MP zKYjh1xCE__g(y)(<6|L86jAr=(F93;>>?`(Z+hZ4r|z2V#D0x}Dx>Wpy+~w(Dx*ck zBy|g_Bp)URgZnT{e{tfFiO8?NuAoYoOUs72dov@){!Ip~`lMFBV2Qza&@&@P5lUkF z7Mhk2R@qPQ_2ivN-V#(_-3QZTPu|h+J5^JQ%X#ZYj8Kx2JeA>fsFQapPGOrIOjAJ$ z+hGo-vHrOLrSVhQ7N_X_Bmz^*vO2f`rBWvl;vk~n=%g<`EI=JOMhD~E!*FG(^DvMs zA}w!G?%{NRQa1On%h4+pg|^)!jY=*u(^}r9Of->}x9Qc`LS`JGG~~Gv)7vx6sjMXU zXTwN>Yh%PG$wD%UB#7foED1{L8aF;k_Z?9Z)P2p3QcU@XIeNvm<7?QT*{`KYR$k0) zmg$1x4oQ)*>&h@pSvpGQfM?3G!3+nqOdN=V8FoU7bY{pxZaH11x1*BOLRdIW`9XC8E-*yQsOMRER0uXrL$xfktZk(FzZ^P3yLRw zq6>=Hb4hezWS(*Fl4VdSNOVC1Ou3fmf+D!O3~QlofGZMR7@6cmL{(tGwL}*bBPr4k zT^Y>&n7HcW5@p$vc97Z6E?7-Bq=|N-mLe^f!2#<$Oo1>4u+TilD#INFR-a&ood(u` z1*?`K-{Qc;f@MK64p$~c)(cjjG`j=Tsd12u-w5-AWEgBV!oEQ=T*5|ZK{6EC2rWp4 zA{!w=GPd=kH^PD-85*z=T96DyHbM)Mp~yx^kc^Q@Z-fOwGBjW#v>+LZY=jmhLy?V; zAQ>amvk_X54A-z;iE%AcJFyox!fx#Zmb@~w6B6nMY9~rgH93@a!g6WqfE{k0f51*N z5pvCC3+4*0QUBx~u+vN(u+t28$FZxCcEV4lnRDp|@-m&ir~ZB3?9}2n<%?GG1VWq_ zvOqf#*{S1XsMSp1U&Z$73Qp~WcyR~4qX_-0B3Wp1Ledb)LI>L6Q`(o-&?hAQU61zV zi^FJN7RRu|i&+>~`=Y&cT z$EAQYY#er63dI+N8e=!GZ~KB1`Xm0hdHSKC*$6m9W$M^IX**G~@1U{2R%6soB;$p+ zbhB@`^vZUYHMg+P9DzI^?bG4x+h+RNlvr_l&K}UB*wRw{cUUHx<`^o=M9H4L5a-DY zOfNpfGwm0e?c+W9h5qo^bbfcYGhaNM*Yt#EbWl zYInz9i2GIg?g;5Vy-Ie+Uc3DVb9P7h%w}ZA?GJV;kDpIRP3UzS*KRKvU|hSs+SXAM z4H^1tyM5|xkpnqP@5HfP5H;cVrJ@+=dP}dj^yu7K-s#eEI@EUi1XtZb6Aw76*kAEG zKtWgA?Gs#e+wJ|()&3x_3VM?p4Zu|$G?Cz{J80qo$5ppzo9kyky5hHQ&_qQ(_q!oz zVmH`*IVsZ4oE>cc?We%UzQwe6=j8Z}Scb14XaeGWq|0;m2+VWvE@8&|m|ge_q)y|nj75xsIwwbi#PoaoQ_&tPm$Tkkiq(~?%ST^ z^cG(vYH`z(Nk=VirO4dMkin~d%eN(Jkve-CQX1U$WO`B>bZdR;6|0X!!vJ7qwLSo= z&Xtkm%BX=gKCt2gWi1B_z{)>RmNkgD#l8p1x)sX~lyxhX9VknY6^jF914$a`6|3Mt zSsJin*@3bYS+VRuS&FP!94KpK(koWMfwDAU#ahA=ul17^%MO&K$cn{*vPPz7#j*os zxrQVx94K2Sjq2<8K0r?$A1LdS`{W-e%V2}64W_B^Kv^!q@!bxTrN~Zb2g*_eR~#tY zgR6oAWoZDe>_AzH;K~k^r3kJ#P__qG1qaH~09@IDvJ}D9oX!uW2(CC#HXm1Zpe)yb zE6LjaoHBlJ2Y=p6O6wO@ZJh% z5aL62Q0J5p-R2Hr>y8%~GE{&m$+0y2^GpXzooOI-qkw)J*M+NkgM~r-8@ZfSlXM(v1@m{@%0?F z%D+yI9aiB#oK^YPM=VJsL(gH!vFin^&w`a@u$u6~uw_X$|E$LUxmw}xaAnD{{m|9= zGk0`XwSJz72v~vstiKSLaucjBH})?eyC)%D;~1t`ReJD5yh6}p#?&@awAqF<%!ULalEtCa5L z>^F4hXSzwtZrzKv`2`e&+Q2M7)5?9&y`;~m)&q#`GLYcGdC}^a24t}=tp!=NKI&o~j*MaENz9hHPe)&Ce(BTf|cFN+a zhxNOqcjJA;NHfPw} zPp4UK4S$KJ0Ye;u1t$3{+?*iF3U*jVJ9pZ=;=+3+X<+N+OSzdNPLobq+@=kH8E^x^^Ep z(n-ewYn$rpIF)tv9AH_)Bd<;wY8pjjD|dsdXI{$CiQSMgbVRnYj;1kOmCaVZ7(DX) z_RmL3Ni(`fo;>+ znj>H-&{-Y3_$;(B6-~jhgEA1I%A#VY(16p1+hEUKMU?m*S2M;ifi8?g=h?Dz z1V1F5XD4WXuZyNT+hmm$i!7^Phe&htQ(GUyD!BYSdeRYt1jTJ)W@tGjpnW{vY3bLe z+>gik<{0>vcQ)hdh)2ck={PAg)Pr+41+|=05S@z;5)9(ZLR?Eeg}w&~atZkq>>xpk z(LsU~$)|7?Tcd9KCVQ;b(|R+mHIoEIYt1-85e=eq6)2v3BA~7z7p-TW2(EiF&$!;b zS!4>1N}>Vz6mIyoQk*1`4>7%><{z;JasH>kXr8&SovEm9rVBc~oE2BDy$u{o%$m zM+Rd53r^^-_aMPm>L9`3wTBz66Ph{a$Yx|aO*^mGQ+Ch7bsZj>F_2UfmWkXr(*b1)FI!TBIT#3IQne99^=0a)k7 zV^9QG)L9W=EqOerfpsB8=3<5nz`Eeu0xar`48U6UWYWO8lp=FELk3`7@@)YYbw&nY zUGZdkfMsVT@$djk?`s&1-Hsv)D_Rb+I4r59P<=1_RD-O@EeKm(xX`p$;AISpW$NHJ zIdAikca)(0Jf%9&`{dj3z?_l440L*q5)^z}tkyaUH|2@1@po=PL2yEd8Zps>oG10p z+CjUMcF=B1Zb7Z^sQx*kf7<%z(5bd}3ko!*#)o(J5$t5#fpWT+4x$fUPd+){uOR## zcF2Y~ayzqN-+m1|N>KfZdj)BFP|&Lv9;QG3EWuCrWbFM@?T}$3vqMUp)efoE(RRpN zW9*RH$VS{CwK1B~SZ&9(3QDuO#Kh>~M~$M_eaE#5>b~P*2YH;8v}#j0sk|Inc$L$nV=Xk6BHdYVYf|Z zlPh2*Xb>?I6i<3)f}&$4jLb8gKA_Wf@M4BbwLyN= zjdky-Cj)R*TND$^Pq#(U4_(BgK4{tG`r~SVrMk8#Cb;UhD3)lc9&;a@I94e8m?mon z4L<|ct2%l=!BzJuP4#-!$5K6Dy~-LCpR2R=!h@l#k%#4jo>jH~J~&{#ss5EQ z-UocWigbXez)T0|vyI$qY(OjMW2Z)oV|Hr2)+Hu;9nDV7&7;^rQ+P4}C1k6}DmhC| zHv(}+tbgod#py==Jfp-dc>*CmT>rYVjg&Zle~B{JW#y>A4iE9-{-y2kUAcMzW-3qz zeO9Eb9{p56XNPZ8^8yZShp#SG@0}{=58}hjUlnHf=ieO}PlhnV4>U5!7U+!(tq{`1 zz52ey3V-ICnp2S#J}@i%5BzMejX@l4*2XYKW!5S}(X=Tt;k7#9( z#=6eco7kJn4j%i`?BIRk% z(5cC7I`JH6IiHlsLe;XoO5P_0>Ds(qm({?e%Tt0*)h)$0C4 z9PL*3M`Ks(`(G9G+L5BsDKb#j3jYLI-3tF`>}q7?A#1>9nAP~#F+}VYwi%WkLo}u- zX-5yMEl{ClwGz2*bmn(9Rp3TfphEkxpG|8hO4h(YyjT`YYbdHq*!!`?3O(r|UfjQw zCw(KVE@SVznLy_+SV1TR#EU!l!oz~vkz=MKtWJma{!9l;)`3ENs18=4g!y-LET|@B zFQkjR^+6^K16cFa@y7I}?`zc1_a(mwMNopzVp)=wI%TmG6Y zK1KAd|D4qUf3ExAH}$#Y+8(BOaq5&VLxF6~ zFR*!qOH-%x==$waQhg;Ut|k{;owCPxh-=Rrh)Jmza|ifsJGpWpsXmt!7Z1euS~_5) zSkuCdbP+{TD26H7EjB zt-ef@Ox@~BKXf~Yt6l6>I$*)dDlb{E_IH{-2$)hF1dQT^@QO8yQM=wsY-cx!DD|mnT-q?!YkH&+ml4*`Xb>Ko1RQMykaXw=2nIb z;T2oHE#Vc^+0zhSaodyW39snZUe*g%AGgv0z^av(sXR5^{>nA5#s^l`Uzru_K)hm6 z>RPeR5a>7?%ugmO)&dsg%!)P7C4R-CE?Tk9O38_UnO?EZrO2GmkYU9-=i9PkQD;8fVL4&3x*e8l7Hj+k z%k*vM_xZDzSg@w!1&dPGg0+GkZ8lilmn>LU_jN5;t6bt2Eb5{K>l){dbT3$IDKghH zWLU7)d|MVQ>Y@efh9{F=ux_TvtY^ruVBPd>S+J;!7OV|Vrf0$0^w$t!f$Ff938mO9 zj9?wWVwp1bP6}9uVqj6~0@itysgWNzXo8TSFVB87gz(74W_BT zzCS)K?r@ANN?o|R!?@1|cT+RDota5w!n=NIkO`?ni9ZEp3%h4lvujp(X6n>z&~P9P z=edx)ON}&60oWNC08|GNKqec&g8K%?L3Z=MDo1*hP>!W zCXfpkUEQ;GrP_eHr71d7?~{F&vjM2Ps5w~H$l@u^8HEqUsG}62F1+rB{ta%DZlve- zCRN>V0e&|`S9Q!25Y*hRyKiVFdJ(vhCb^kI5(I9Dr0Nm`ZnC1;9XajLEv_cz)pV&V8DiYMmD_p10I2JY7fT{q!dGNSyz}s%*>AmQY+SF zs&XKBNrY9GK=6wDmJ7j^G|AN*l0a}pBvqF{@T&Wk3&Cq?l5066f#5ZfR9ynW>+V}F z1aG*y3UJyyuB@kS8-*O>%$<<{bc==!r z!Fz(>isoQdBkLjfNDM(rF$6c=*n0?Wr6>0mRXGsc5@FRP5WMZamsST1cICHTP_5*TwMl&w`vI98!vcAb8uH9>mm5{F$5{a5L`TD zv*aPTbSSmHT%alkf=h=Wthxk(7u~m92rj2dUdkZ}1eZlpbqNG7yKlJ=ypkrll0y;* zUJ*&vB@kS7-*O>%)zxJnc%Qee@LZbY`5cl!@SI4hE`i{p`<4sA zC0Cb$;Dy6A1YM*E21HE|3701d4+X(PVwfZk&>`V+GdQ8kk9M->d1ueem|*x_vXu!g zXC9Bww7%8ykP{m^F|&{83q(IbaO#l;IknrLeg*3<;magk=7BBYax)y}%nVNO zNzP&SiDj};F&r5hb(4%UZ4C^!)jyfM(oz2=lz3V1ajV1gxPxYC(rMu;BeQIu{-uv5 zu%zz;`ZrWE8S7wlCu zWCzdgbLYC0KZ9SZ@)d-5aR<|{;4S)B%>@3)g$iFmh!^)S^9o+uU)2P@E7QS}UqOfu z*})4_Rn6cqeSn!taX>0ikc2=U?iw@&}6c>_P10cgqd2l3+m zW!}Im2dkREKgo2k^RnjtY{c?MX*xJ!d5p7ZTPoPE!XQL0om`=EBO*D;&Y+9+_d!i%bzn zP=%%lcE+9~F1IjOK_o4H!+A8b`!3J>$)vUKYBjWH7Phbu_)#CZzyph)jx0iOA1Vi+T@rcF1tR?U-=vOm!L}_1KrY&WKxQtN= z>Ed3cvWNfSKWrY#N`YS-MhaZM&v~ol3^lG4sJ0_Yfs+0#I$Jy3HgoL7LX#lpy?A<- zPyK#gpNkVFL1H6STMNLo#Gd!@h*I6y0_nu=oh67&4>xM!DtqV=Ggs+83Mi^&X4ptp z@3OO{dp4^K*=Ed$<%wg5y=;@smVQ{W4X@V@9tk(VO)@Jp|6-jj-78~O>uf^<7OVll z$_mW@i>P0p6^2rmHs&_U&Dr2iU^*{bBkrR4%0!ml;S$Xa+8FArh&Ev%JWKI$T=!z11R z*zMqowTshO4FFbFY6e)f*lg-!6Ps&by{h$?EnKZ9-N!6!K0L>9J_e{`jG;X<;eBPF z>rBN97NxEQ>moeuY_L3$tTdOxys7 zf<>K?VZmDUWYP=P)fAa)88R$bSAAO+Eb5F53)Y$^)3ac8XB*lLEY@T$i?s*N4aue( zs*gwYES4RQTA%JPydkyemX1V$T&EjK3=`eyhUyiokAZ%G!7H0?=(#%E5CQ{+3ClKA zq9Ju`Wy7A`3A5>jp6k@vh74GiZRkPY3A;^Rxp5mX-6NX3WCJmiP%{;TV{t&b;Sf&+me4l7b%(u>@4D?ZWre5Qkm?;~rY_{-xnX&1qPHm^xV zi6JJM&9W6je8>(~cO1?8G98ql))hrHQU@&zF6kh|hwNb2na((X9Yv>&1bc*!re3Y~ z>2UUKGyROu`LEyy>0mR&B7|x%9S2v+3_`rPgWl?F2(9i+=YLQC8fLw$;1z^;asM(0 zCMn1W^yJ6E-O~hq)Fx2M*a{{P;>8_IPoRQ~Yt}+w|BLe z?FHsg8nbzQu8d(<7m+>UU0sS@UHu)=tgi8uI;O9M+DktEcnNRnNR$z0H9zN?vHFw) zdA+@dQkVMlioKUB%|v~=+U!!Fu5gK0pHgQ<>^)b#4kWEUy_O=gmLY@s^qOyr`jk2& zgZlKkCzDp6-bj%t+d}P!t_*w6*j|zcgA@Ae^6EaQCFbCcTBx(Q@-vg*Dr=#xy}G^j zbXAtm-GHkd^pYH9z3RbL)dtJwz0~qDy1H|T zemOPn5bDlRqKH}{q>Fp?{r$9^KS#@MZKni_jJ9)a3~i@~jH~Tb+i|0av{f$Q3N2OQ zkhvscZKv9f8%3nHRcJf2QeLg?++#T`cCEHEi>n^3RITkyxbYR47M)hgw4HwFc2tYL zYo)vaxT>|C39h=MacW$R?}`jGTEdwNToR-JMTxu4p*S<9NPO)4#+8OS)tZt zbZyzMn>I-tdtC0)v&8vZi?wDI%pb&y`M zcWFCI?B5?{`d6~H6XL`4uL^DF=i+{quI+?$pI#-}&Y%8Yn~!9DJHJNDZf&Qyn2fe_ zeGF}W7`oJ?iTRjmBD+D?g#<7zu~-*L5_YCEE~Q(9IF6xB0dW&pgirzK)qjRwU3 zeqEn8CM{PJ=OU`D1p}(>xG9q~Mbs>E4PyB+ez_ma>2GE)u!3X!T6~(FIRMc<>iC%O|K@^ zYf14&a>31m_EeA1?Ci8}Hj1!TE5k=nhHJ7}Hp@_2jvX)hbpejQ!3oZuN+)#wI=TLS z-ClD2os2VbQ0j6iuM;{y5uEfs^q}o&6KpJf_#2~NwE{jRC_XlWzGXIebf$GW48EHL z`mOJnIMF&Ghy4aQOn`-I!--Q$b4iwW*CM(&c>UqV^mI5kactMdA#2+ZuX5sa`-_K< z^(dFJ%J4cjRYOxufV=tr`mx)=1#1`QrqX`f2UxW>Jkc(7Ys3A}?I5o9?t+!ohO=PR zxv6Zyx*@r}UazTIuNs1l)6}~GYE&X!ThAL77b-`U4ReEBt4tw5^W}A zX{64IMD3lGvm?w$I%@A+ip=>88KU;i`L-v?9_))m?JasT&vZ;$d9$8oDMjW&h73v1 zmV8^1o>6B{L(;R0o=i{Dvu=HO4Xi%E8n6@Asi~5kuue^tv9t77H4MO2oti4a)uuxD z9p`STscH_Z&wAzcFhwF^otY}Z)hY^Ak1NYewHs7edsWq7TI}oleO3e*tiv&bMX8Iy zy2HTF26y)-4AwTujWZ0^T|YN4SkyJbxhY87!DLKXmd6UuOr1iZgN+5!FEiZc7UC1@{ex%acs_t?+D`kvuv?m{`TG9bv8z%hOK; zH$+%vkFi7900*HvT)5GNFexd3_(gU1ebM%9myyxT{@6jvMy7V1Hnro zthxk(SKPN;2(F|_uI7*gf-54ax&(q(-M3r_UQ3f)%OME_uZg7U5(r**-*O>%!_{RV zc=JHL3ie+G2QYOTnuAS^tX9G2I_(&Nlwt(VAGAsGi{Qe+6avpum4mB&&)8jMg z{-wi#hv^^0hwESDn2KX<@4=q;)V~kVzrfOts(;C0kh%REb^ah;+`lOEuT7vlQ&SU& z_CMuCeNP=EyRwhNuV4a)N!@Jyi#${P1eVyp%Qk^G>*zV9}F7pAJ3zpW}?K!_LjFSA9=9mq^ziA(4gGaW2> z4}|!T9bBh_)x3c}^b6YLqZOv)HxS}OcJRu<%nX+J3jWAXRrm@*ytsqOD;RU1BO{Y7 z(y=8Ki%%$**4wE|1XSn?<9n<&9xBfgo=yORGjLt=UE;r4s+*jSwPf{Ih z`D-?P#U1~-?SDT*j954ySX-PlMArN>rCuC2JVR}l#!N<|wj+jTXb5mcYU$Y@bsvv+ zTKe@V_w6{}oDkdc2FSqGE6p*2)N!mP8V;q;ZaGZ>^AV@d4kAr~u0>1GH+?pjJdH*Z za=QABoE7McXa=s5id&EMCVQ;b(?V!L`fS>w6u9Qwp7iOn`4w#d>9dW@Gp={$h*OY0 zn+7NXZg?_pwZot7!O#G#dopi#PxBV{#EAbJ{_^j6A^ukS9 zzRuC$d(UP0ItN)_XGYh2olUAUUuS^M}ZXzb+s81Jf|+2Vx)k;I)Sv zEqjrjAGKVl@xlH!9Ht}6+<<4{IvO_lsKlhb@@ z3$8Bsw&037qX@2+J()DFE~Us^&X56Dmwa1rMO}oeE1pabt}LMp4*;%Kb&Vgo9mQ3l zVY?;Whd(%cCvfG=JB7H4eduky!orw;zB8lEg4OqYXD$I)cl`VTEIZ$sUjY{9JNGPD zbE$)w&m;#k(*R)2DWaMpz@jb!);w>y*1a^a3eIk@@)YYbw&nY-7W%_ zIng^{kwCi!R$mTlz={<+(MQ0_ccOQ|>U+R5mjEm~;F%)8vICwe0xS-A?pd)44tS;k zz_J6LDFUn&^rBk4*a}xYne>WPaKJMS0G1u_Oc7w&0nZcx76&}%uUM8-hHF@{#JN7` zD^_&)Ag^S&&^$F`hYz+w6KMHOr=9VUcleN%@*A4_BK=EX`j;=!6njBN z|Dw%I`WLaSrhi%dP-kTQi*yd7=wH}>V*QJRqY?EldRE1dx?S2n9!Dj`uY?`z$K!l+ zyL907AOmsr@a{+vV!uX;kZAOKg1*N*=OQ?^UuqCu z7n#N%3Yv|;Lc#YdnE)G~7g$?P5yH$lC5y$9dqoJEmm~mPiVz-Hvz(&{;nK7sq(88{ zmq?L^f2;`ct~e91B7{<`2;q*16@3*UTmtuJiV%vCB7`E`-;z${0`KWaw*o~74I)Jd z#gkqULeVKgj7;KrJ&UfxWXXnu}>f+AeSiV%;hd_4$*4X*m?LAV55nI429 zxH3HmMR0{4qz6|8dJq~!dJu}>%Jd)_qIza45&0R@!q5=B&4~#;iH9f@N%==TAPhCQdL-5)DyOCgM_2zZj20(Zpr@_0K;LiAzm-l~}8DCob)g*3=dz zpvdE{={@e$uXx%ZUEHhG0Tqi6b@Qa>XxYt^YMaRLq|5h#C!KUW@G2`{U%oQC{SV+P zpA*ATvz2CFD|P!HJD1Qtzx`)(RPFO`+zxL4SzI-Fop|SqkEhMIud)8tY~{U(D`Vq| z%~F3|cH2qeDzUFsBd*-v?f=itN4sMM+dssM_mTAOIPR{WR@r2CN9XR#PRo+LuasRs z-W~fp`vMWKvANxISpD)ayW`4z*d6atW1}6_3~tgaEWyQSaYKb;YM^ERdD;KIqR-Wq zdFl{*thRI9-!wYg{u-=QRx$4%?5r+;=6QWCPFP#`TD7&@Gg@6oOlT@{0}rduuG%#> zFha&kKXf}PwAIHq)k-Ffu3*4ok|y~NHoro6=3 zlJ9Ke#FxI#HV#(gFgq03g5{Mpj zGv4rV^36nDkK&=w41vg6d|dr+qP0()xb#{lJ~GV7h~}1zk4!6sI0XA!Bl3=`hhI*G zSr6IGAlIDq3F}{@6FE6W{hQ?S(fc)JmN{h!^)Sq`|BY3vQN9_y4Xgt^Mv&K`Zsw#ZcYVD!%wl{&X)_Qnb zV)X)PV|s+94Sx;1EwOsLg9piTQJXqeyQtMJYA;glVRpUhk(p{2wYRv14A;kQ7q#7B z?bt!r$NOuep8vnoGLv*{CAz3VyqIN6Y}83^v0RoE`(+gPQsl{%&MlU;Rlh6lUj-g& z5Fe(0Rd}eqKh>|2J=7rGr&oy$e*R^NhnmY;@yoPismqO;h_hBK|7vICs0pby$Bmj8 zgCmV?@bZ=&(FQM;3|)2q3;|A68%1*ai0ULmKsNJ)MO?u1O+A7CDZ?9k#^WxBs`f!k zJ>kbLvH{#nBzJ7IWON6no|p`y)Dyw6so;eEx*{&7lzM_$@-~27m?9vKxQGI7^FuBi zu=<8va0xa53%Q_(4Pa6JKoqe7EajvKCzRJqZE|jNvqhjNuenuQuRLwd_4(#&9F^OezOcfiav0kujVi zHcK;xQ$(+WF+4v(fEmNN23(23C^J{im>c1a;wqAplJM_Rlln3GvEC`^FboW6L%2N;K`7IaDpqF%+!0{(8ZJWqWT$0+sd1LqO*T7gM^()3@|HKYS{QT#? zwRtFtpLdermxhr9S6pJ#JiY?B(Z?mPd5Q){X77M{9i9hil=FU{2nv{_~pu z{klGHOqw4!2M(yQ9qFg1KFfJ_5@;9rRK=qIyx@Od*5{>t)|TZ-m)NmwYJ1CH!$Ejf zao2y&>5wdF&g*kwzqLK&F0rGz)b^UchQrRR?G69A?tkCZ=ay@GnBvmZDUoc{Vt11@ zowy7z!?NYi6=Q#b+qlP!kGnxSdMH=yen{);L$%mli``?gv3-0xcUnBE#cmUi&ce!y z%|<*rS0o;p8Oe!9wb;#)sLi-A^|3ZtajYj!x4(G!SdTiV7Q1Dh1WcGGYq2|%@#mg! z75kujbxytuI^&Kyr>_e-m!QshQRRE|uVk$zd{xk!s@)`+J_}atgYJQKKr*`-%qVpk z%+4V2%m(w5N%E!zQUoNtGQgVW621QD38}Lpdcw1lteA)y=?t~!Qe@6&$e<@Y=i8pd zQsRr~2^T$?w4QJ&Mdm_=44nItZ;PIgI(r&6!i%0vPwL}ke+_yO$5ABR?B#rsi@hGnXK1(@ze_qAo(#tsG?CPLa8jAp^2*`?es9 zIwJ$J?&ctCJ4I%WOjrrdLDsf!3$mz-kab4NF>v04ta*P8$U-AfBkP{_LQ}Gw-xmXG zItCV{E?})N@Uy|{zGTU|nwd&~wd&^vU{MzV>zbd+^pdrfB6B@M24JoEwg8K|2v|2f zne>u%Geu@SLk3{o^lbqabrG;Oih#B0uK`%7iynB>#y#Q66mWMETpfyWMX3u{=h36h z28*fV?U$0{?H!M`$R&O&q%OkM1=5*yZ-p0AWR^2zz|}?H7F!*hGiaHJ^;>33l_a@WgW}y|HNgpsj&xPnWQF10*82~$jK`&GtL;zWXZwu}l z8zVpw$pmKM*)+*>IV1twS&>v7BmtaAo_F71zdXqVa^a$@d)BU08&J12RiiEn0z`*n zhT4g847IYn0y3X-QA=hE@53-_sGVT=lORCmWJE)4CI~PPaR?4D)TW{U2Pe$#XOPbC zU}C6sQDjjE6$LnY2QyKCW(6LygDwoPz@Ry##XY}+iJ{ho0Y)917^{O_GdPT)HcsUZ zdfaix-G=CU>R)28tzZKCn{4&M964tFb5Vd*%-_FS&W3T8I)4x^2535rQ-|eNGk;6; zuMx`Kv4Z)7cya$;csMnI?y%e{Ch(Us9V~eXh4_#i)M>fZ%;3MzAXGxL+apR@LLpw< z!8AhMX}MKQ;72q4D|rGTK1}}xubl7!Z5CLTq^vJi+SMg{R>U92{Tkw|h*4Z!f)LVu zdX>1k{KSL{dT5`XIdHt;?a_3BWP13J&m24*&c1DCI>aAsD*W8qPyK^$#~yFpo9ei_ zgJJX8nM3?`==CoRKg$)JgW<1!cJ06T_Lt5~=~`>`9ft!-vu|zx*(($zxewADTRW+b z$$3jaKxN=0#bI1IuE(zr)$b_}ZfcK}i4+NSScGx~{Nt$z*c zpTFaw)^z&||8--!-Qax4=yZ#!?^yBHUsC*AD_;35#oJcA z^BIc&$%;2NDBiN-_9rP`v*OluikGc;`QsFS#fozup?JxPS3XSfgH~Mmb&40QcdzdP0bw3W6WJJsH>(z(BXs{JV|U4Qgcd)-P~uQ=7dX{EWB zpKAZ1l{Ws~srH{(Y4Mv*wQpGI>VJ8v{k)Z~y@XM2pSALd)5rAQH(3z*=a5$7_Lm=~ zcvKri;ND-RrTtZ0_ojb2;OuM7NSiI_6T$ysyAxlhX8dXryp}0waA?}GeTPhPQHf=r zOh3<_n$c#+O4g+5TTh3F-m1wqH(`#4Hd@_j`0(ZtyFI*Kuu^X;&G3Wzu=HnVGcV*%u8DTtYHD`{HrYCZktLP23WH zRAWFtwWqQ29--_!!jJOX2PUJNMD6U3^x9TzBg1WAHjao0R3Eby_%Zk8Q4wW%eH4;& zQ=U{OO$zA}Ql04Xxd});>PfxMNWIS0eTygcEoo9urb#_%q@Ii}H&Wl?Nu4xOCtcl} zJ*hXRNj;q=^|X=V{BHH=&7qNcvnTaEMoRIW)IIA-J)0)=mNcoi7^$~Jmm8^PJ*ft* zZ8JghrCBf(9bv>o`p^t^6nk~x!9bv9lUs-I8ZUKk5pUh|ExVL=NSC?^Wd@;V&;|tG z24Y|{v*3W^j=?b*!W}i+w_d?cW-aZZj;g40r1*H$Khbf0>C8-?p4k`fr{{W>eg0Wq zcB=hqt9H*2w^X-u`~B|-x4-tahriQa-HGsPt?vw5&z|Z8uWE5qy&Vh$pqUL`=kEC} z{+>_iw+deA3-BZaLtdt@J%X7b<3V&o}#fzEQtDoqx|Y)^5A$)9$8m)BZOV zL!Wf?q;Bv%?xtGy^!2U!=Pmg+-HdMf7I)LQ=_oe^vEWkw96iO{O@DK<`A*h8{W#O| zuO^5G@BG?2eF{b^Gii;?q)q3x2j;vJ!?k}Q2!eM8|J3o?I;byr&DWy;O#BI6GZ+2$ zPK{nOT!q!(al`8kkc0fgKaKX+v>RPx|Fw>!>JS0%GH_OZo83OY<(WU|-|{MKQ+~@W z7@GW=C3vR%nrpCes^P)9dawf1meVF+!+CjYYGxueIR9AdzDJZkrnHrEmE=hlZ-=yr z*EGLhZ(e8eAHS4K6zOjQ&hz^i_LheIEN7`sII&mLc9dO5pPlf@x1MT0rG3&Kv(cVw zYs*~VCH=OE6XB14u+x6@SR=f>{z{(rnD$XuY=8Oh$(@EM`K@%~)64xj!BeRd6VSi-i(>bU{>xn-M4LqoiQPtwPd{QggZOPoc)b_$EbtM& z<2|i9lkF$k^l&yfGt`LBx`#a;4MrzB7#$mM_!$QLdk`8YLikvitnSB3Zp+F(c%F~C zyB>+|+Rom!9o>~9C0^coOK1Q0qhUb9`cGae)rU4s6m>l#`0e7FSUvD01kJQS9{nev zm$gAU5B-Li?0=(2Kp2_*;pqX>`J{W+$7%2}P3L3wtgrBpgn529ih}pF8q+t$zVc>t zka6{5h!e9(=F?9y-~rE#S2w2IM?>#k(*cVry<~KtyB*7v=9K;Z)eV+lb)_v0kCl$T zs?~-{?(I-K1=2b-kG1SZ#}MF;O^6H4zfotxZUjT!^9+81wIo>Mp#AOPJO9zlzL&CU zC_y6ytm-tRK;{DmOT3#He7APwVP^k;ZmDHQYL(mfJhI(G+J1_sEE)x=IR-phX(R4l z*W3|zld&@+{vVn_%Wba-nlbFp?ECqdmR7*Vu_i=Nhd=|&=q+cW-j}$ayH#aSd#%u{D0(DO-xsVw9c*66;`)5fIkX(NwzCOIj z5j#@fM7e}uZBiE!oe~qCOZ|Q(_4}P5An%J$gOA21&o}*!=zro8M?*&>-2uuo%y8$qPe- zpuMv&=ryZ>(*v9Z1J0)=lO4sv+?QkEv{zRg)JVDzrBJ;z4W(gol_^Twks3>?TBmgQ_1)McgXMVieED>)B z;UpZcDB3P0VlP$&i07Ooh%zBC7YD+P&1yz(X{oGc{c_^h!KRA3rBYU8Z@--9?d9wd z#}_U|>XrvyM$vXrIu9#Eig4*XYy|bnWt8U)I6dO{Vho&;*GP?4CE~aUm(IXM^IM5H zt|zWUTod6+puV@owZ+UDslJ%Xayf>2$!nx`l+uACcAzrg=!r`Qj-GgL1LtQ9IDhBm zd<~Lb+i)cY&R#Jo?QI@s$)+Jvw?tSC*Wzg?S>2-7Z0~OD@3YZ*p9igF5_0;Ms)lQC zgX@9~SHuUYFJ_jw6^~ZQe2`Ye()l1QwR-f@`JiYGuVg#Z6PL~hMMF`^cDA=yhW8uP zdrb4&G1N;oO9<+f%&!PnGQWF!DZ6O%8>xd z43T=`N)WlXSDX(RBCkB07|PB(#QZLLM22e*$s6A3V#DhXWwQi@tLfUS-L;p~wO6`p z7amGsFiT+O6)|o9Wv1?%GR-6TS5sY4O8z>C4Y|Up}9%UFfde zK9qXQx$fE*?AX-L+TKwb#097r9lmo?PKPgK#c=`I+v^?;K1$$lZfo53-f6z13a2dN8@w`T=fr zA$|G9?#s`oYZtp~7t*z7yK6TOB)6K=t*#wNJ@?vyuIFA!*RFQgUP{+q?yj9r-Rgo| z)^DX#W!)x(Mjp43pJ2F=uHEdey^*fH*`VZ~rxg zf*F99W4^M)w=)trOMg2fxv-MA(*|X4y`I|FOXsnpwYBuuGa_6%k1fJ`Tk88@M(T_9 ziEt%;J4=-MqL-+2sV^d2IwGU>q;y0^giA+cM0la>5Riy)<)-CJ`G{Pr3X#HmC5RN^ zN)V|PrxHX~#=`9FHS$*sk?);OT-Z#`T#xh+)e4-^i+3LcPTfj7do6GhF>1M`(~|E% zfm1Jh=>n(bM6b`@Vrhk<(mC3QjVpb%j@Y8rJ#Sa7TP2h%gALkut5YW+bU zd#uqHUcy^3|4^d8j;6t+w@Q#>luL(Bw8)nZod}Z)dzSV5HG|Hl54(+C&@qktcC^t~ ztD4vN>7MsNH6PuoR?Tap-~Fn2E%o<7HLs;Xx2jY%AFV&7b4n4YOXrlLg{>0hpWgVr z#VP5DOW*IJG2UC--QJdKuh@1M`T9k|f4J}~k;g~Lo{`4S>|O5Q*KN37NJX;QI=SeF ztN#f@_h8G^f~mgBX%TQiKn4NPgG$`cPRZeiwIXD zhVSjyY}MwsCn|Lw(R)!*I*&TkoTe%NQfh}|l}^%yxNTeB-;8N}q& zEJN(Zw|7~Fs|Lx9sl2W+FEB3Y2>ZVt^QiV>$lvg63=tU@9K8Y6n(&dwAyi1o) zA{Mt2`9ugQeX)t2xOB!T8snOA>M?zNB*QpqTFvye9dCanGENcyS_yFU=%oWELS*T{ z5hArtEtDm%ide?{DcVjtFZhD}BX@7T<-kSDa{#tbD~;GpI*896?>v z8ZO6BFHwh6&#&b|yRV7df5+zcOWs(b`8642#m{f0#uDAF5@AGyD-lLaRZ)pF5-UMU z&n~FJsAP>7;d+gK5$Hay+Zqt1{?taOw=!Id*Z2}6zoH$n^w(2_#dTEjcJ4g}tbRE| zowO3cZSOK*zi%&RPg<J1yMYt1ACM12Ww#iLc?VLSJ& zQ-7G>sqH=8shifRNR<&OlEQ_{6{s>IX{mJiE`oqSHXH0kZ2d`QdC@znK?)b+X{eVM zcO07q$*T<*ig-WYP*(;?XME=S$csUGEv`6H3>6Mxd?4 zwpA~q0IfIW)$PnOszI`4bS*|?$=39G8gi%MZ*3a>ZL>M~&Tndj?b9=p$H`(i8yq^u znN7375stFwW9rzHKHA3)=qz*ci9Qibxe`ZCKM@=XIH6p}ls7sDIPiWyhm^NE6P&E9D4plz|vE2p}%S-;M{p#7jSU7HAKRndZeKQi=TeQG<4gi zc+ST3?rwJv?;A}qjfwuk^buh4^1{WAbw(Uy3-1$zB6pSqqE=c^V-)Q zo(OMzsMCJ*7@1MmUug%pcMkYs`^$e%R1fG@6a4yPza}Owly&#N55MxEPUk@T-K|4; zL|X%h9(6>IK=itZwvFghjwr(>x)V7M8w{X3>*yYb?!WrC(CrxAZ}xOMMz@tiw>g0B zlaB7=(EWtyK4x@(tKkVhW`u(r!i@ohU*`ya3xxm86$qa&!oM96K5<$j0WKM*hJoqf z>GpeCjp=U|b^wCV!PE;KOcLk_9Xi546*chjn#orQ7_Vu(N+-|@-TZ!h`ah#+uR_qi z+kRM33))|9Pk%UQ2JcKmCpaOs)zm}#9Deq3i?C7%-KKa&D$Lu`WL&reHD;r0` z;5+q-anxm})&4tCcEzvQO@?o}oizRbMr``kr0Lg2Y&!Qy{J=k;Vs~HZRipib`8Dl- z_Q-U}<9Fu&XYXx;B)iT!&%8I^D>JLIs=K99S7YD2ZcMe^mNkq+?VTWk&W@EVsV&RH zEU`?)e&EA?AgX7B5i2Ps!p2=jZMltY@XTO_ftjTN@5(dSV9c8UW11J+0t_}_g8>@^ z!_ErO7~6o6XAHf+|8vg0d2d!`R%T^py>zGLuDp5j-gD2(bDr1#c}}l6ZyNN{5kvn( z@6k6;_~_N%qi>n;(QofP`qn{@+W5U~@GtGRGk$L?1x3%|i>C_-A!;59%SDkO92(;5 zl#IW3%5ZR~zsW~IoT?O+FU5s!_-KcT>TZ`_4Jno>h3S#{wp-{H+CRP8R3+UT{12Y( zKJVM;@UkMb-VGmV|H(_@u%!xu$Kpb(03#n%MXwMNSG}yDt9LeG0#ml|sa30Fnije$ z`davuZ=s~zbYu84t0pR^X`!p4uZ2J3S|~Ou$+-{I@S*9c!Bx@MlMl^|8a_NdHMlDJ zTKM6aQNu^3rv_I=Ukg97@6_-I(^G@1qOT`^Ff(fS!|AEPRngbNKb#pge0q9na8>lR z@YDNF4bM(b4X%p5o;*7^n95{q)q}s_5&< z-_ML1{$YA*a8>lR@E>MI4L7Ez23JL23vcW@HN16gYAw=L(bto=uFXn|eB0X8TBNI@ zuZ3^(Eu3D9eEZteTBNI@uZ3@SE!;;f^4j#&;Hv2B$+ekL!w*bP4X%p57XHA@sNn~v zrv_I=UkiV5->Kn8rl$s1MPE;TWM)kKRPpNc;EEY;Hv0r;rsTT8h&hg zy}?z{*OMQcncndJ>GcLzMPCcwKQq1I$EVjDTorvS{P8}$;qQt;$$Otlqr6YJH03B) z^uXLs1QK?*op4M=rJmdAC&nU!a?b5Eu!>$GZmB~1Csw0!*6p;1rv2nt^FOj_u8O{< z{iJVNqABd5X+JgA#E)#6tD>)IKjoU%V21X|(e&x*g@UW1kAy!xGokRA>4k!;qOXOY znVC@dqv?f$tD>)kf3)vH;V-7A23JL2PyS+N)bN+nQ-iCbuZ4d(GirEldTMZ0^tJH0 zeW!*S(^G@1qOT`6W=0L$$EG$WT@`&T+&<>a-9$v}J*@M_V^bTGu8O`EzR|UCAC1Yk zADh~>;Hv2B$=m%{PamNAj_IkvRngbN@0b}ieCPDk;Hv0r;dkykHT>Z8)ZnV<>&Xw! zj2eDudTMZ0^tJGZW=0L~nw}b56@4vy*S=H3`=+M`S4Ce>-ZwL9__67!!Bx@M!XKL% zHN1a%YH(HbwebD>P7NQLo*G;geLeZm%&6hR(^G@1qOXM?o*6ZKWO{0FRrIy+Bl}Jb zzcW2GxGMU3@;fu5hEGgS4X%p57Jg!8)bPpaslipz*TPTkJ2m|7^fra7qOT{vJ2RW& z_olZnT@`&T{Joi3n4g;7!gN*iweVAY7Umq?j=w(^8H{wGxhnb`XurQUwcGIz#+v_; zO>yxN_6nug{?64VAl>AS_4E!w#RKzqa??9jh1$;Gb(8xy)B7WT zf3(H@|Jv?PZhB>U(_Q|iyL8jPSrue^K&AJk_XDuBMx4LI{r}ePPb&R}^rqMPn*cm> z*LRuYd_b+=ls@o{{()!gfp^*iNwxnfz3X54yFO=keYZKile?}mGJYht0e)H=w*$TY z-=_q`*z?;UpE_pEAGuLXiF{%q)`_547K9E-im@4$aN{PaY8`>)YB^muu#!t0agj~FT!*1cG`!_(_%Hg8M-D~~Xj2)hw zhtIPA;i~eKZHA|MrBSc69S8TQ5rV8A_r;~|`Adx55BnvN9lK=YLSCql%3~0l8|G)bu z>;E}|lXXCZ{$&5yz557`-K|3C|EYhn{__!>tdD#!2v;w!zJXo2*IzWi`f|$l@V|*p z>b3cZt;b$-XZLZj{WbTr*4Wuuvkj8k3i&nN;9fSPamgOEyW4knP#8DE(|!kEEH&KS zQRrfE1-e1X?la+*c9)^@TlG<}#rC$^W8E*`xKVw03niXiYFx2vO<&p+#G*4by;EvN%s z&`)eR)!tI>lC~exM{EV{OVw^TGY}}(2332Oy{D18I_*;ZQNw9h19xnOo4p#&S`F&< zDUF3azIk`J>8{So%&@Y%*p2I&!iSpT?|8-C;Vb+eSImrl>*H8XUq6-@SHgAKM#B?H z35{|kw_AxbhnDq$!E`CEGW5}M_eOCm4!TvFn3abij_ub!y!9Y9PPMz;zF(HsX84M3 z@T!*0DxH2BbQp~-UJvaScORw~<3|vjO5;HL5ZV9D9h5|st(aZlJXYyqH?`k+=Shkw z`4x=7s|PJIXleU3 zGU{9dcw=|_Jp0@A2JK3>K1bo!7TYe3cI!r%aV4eQifFeC?c!W;v|Eq(wW&YrQJEg( zX}3IpcBvd{y&lHw>=#)lZ)M}T+J4U#gvSlP5^^J3_}Qr+hjgXUJlW_7BwfgDc z%L?sy76UzOKi5){0L@EWj=~2s%d^S8&!+kpZjnyFdbZ?xrfrgb-Ku95dM4kBt;!`~ z0Gs-=uDJ>FJ!4=qtCC@-$*fC;y4rrN#<<%4r)-V3)<#8m7FO)AI7&o{#sE}bbEB-!sRzTevUHU8T^yNvm#zP@*G`-l%7*t zT*uUP*5y-0qe*W0K=C0*k=2J|8!0!=`sGF3-2PiXA~b`swO(mVMK25_tFQzMyk3l9 zKF{#h&G64c%`?dppbE{oKEit`a1~S1{(`Sl490rNP(w?8Cfc8GH60(&faBoM$5~fL zG8+?W}G6$?)er>9Mk zC2=Bekyfso65n7)|B39?-Rb6UN65ymR9<6Q$L02CTW*CtRb+4yQu5r6yGmlf_SV`% zEh7!c#-!?Lx8R2_o2TI&mSSYgWuv!09VBb!*SZ0$UOU4$A>ahi*B`MaLEEwh>T`++bj9V$(!-5HV3kLTf3&yvG zt{L~@;b#Lk`p-e1LmoF4oIEbJmdsPK+PHz$M#ESSl8zb!t)9EXkNQheqS;VYj0#Si%~+Tay|W?qL~PFQ7Nsn|KA)nel4>V?2$PeR%zzKa9JcPb0fb(rLy_})zx zsukB!s=XxKWmWe{!a>U#NqBgdb?-m#1-b5htaW<|{58{c3j441Kg}7=H4w;Dq&PGYFNLhyG?NAbG>Qrrq zl0ZqHl2G-1@~qV8tvZ_CG)R`9Y62nhY=F2gOKzgqOKwJ$PFdofuM+pkH{DUCC^w1- z>_S|d{V3L%laZ=cU87jvF^ZJ*jbd%UD4GR5Toh{*Ex*@9qv$Ln4TuyH4XBKhsvkC| zkT_BlK|{(YBw|L-gc3;2)G<vxcE5AMxQg1KTq<1F^1Q;n+$t&KMMDc$~)T!BS`* z7GrREGGnlrT36l}+%!73{vDu6*z}YL=N-o+BzP~bluV4*aLrgBy{s07;pB#);|xxg zjW7&1%`i-+#M9EDG!Hk;Y)e{dRFkf1_@{S-?6;A)CQVI7BJL3w%m6>@YPxorhW+)k z;zV+iLhuS2D%EGz z;Z;K&t+;R|akSRc5!ydTD+=;ZKWlw5p=!Puw86w-G$(PI7?-!Go7M4woHVUUAx{=p z85>cqgMn^V5OH2Qg#+BI!plYcF*j?NcheIo$hhg9`gBjv&ssIZtD5*(t1`TjZ?YhW z-DDe?`dN9~4nHeCQQyeQ06#0gP821fA-I9PRU@yk4DQgkDeq=ImPpWJ3E|%?Zq{)< zG7CRz8r8svUieuLS1g*PyzsNa$sBm$dYDMUg_{*$T3PbNyT%u8)_J&DCGHn~Rv{!Z zNP)@ytZ*^#7+xWn*v*<6hN&6YQwVEEz|C5nxfytv+^nOFL7eH67=y)Bqu*~wt5o-4 z&>IrMn;+*e`dJfkc#9f_jx+3P7>;tYVkR9X^N`R2Y;v%l^}vk8)x=0-8yn4Qc8jlK z!StM)^4n<=4$0oJ)vU_gbZssG1p3}PJ7IzwvL*-1m7o|F$|dlSxQ}&k3HU*CBv%y7 z1YRkW2%l{}2>yLQUx^hyrB84mPX*d$38YC#Ub%R+|LliX!G#T}?|r_$$kq2AU*EfZ zeeb5e^;~`HTkZF(3IjE`eb;<_ce(ohgRjqaBGSI^p+1N|)4t8E_IpG+Z%g1igQ$8@z_rP-(Q({;oSuGOm2F0HmNQ{}ixP-=7JoW1W9@@b4u5Hu!gne_z4B7x3={ zGqe<)cvA6d#t@+IW;SeX5xHjECnHh}v!FuEWa>f$!yNABLcAX8RI=nv+d`;9>8GJO zK1RRFF<-sU0GH#uN_a}&sqIqos@CqWV*V%XRV(u<@F%WU?cHD1p8QqqOWC&(y&C#9*6)cYI=8`0MI&T%nDnJrp)ZYYyTF-n z8=V*0MPs8A*+pxk)3J;8Mklt5)s4=J>|$-BbK1A@_#|!AiwI|44>vkr*=y*sHPlD3 z-M*B5#JLB_zaV70!2h)!SW+!3uu zUwNgo?%N2`Oyf8fsvfj?ua#F|BquHeua8e$xGq>N8hv#8xuV!gwC>nSbjP`(*h+K~ zu&q8f98Ntt<=9H}73YeESAT)n3Ss~rb=1A{mgR!*lcAw)U1Rbt|5avu|O0J9?;9 zG&YXIBI4(AxBRGfNkkRL#$PBYWL$g&CSEosUiJ^(W)g}WB@LcvNLbM^-am)Vc%cB- z>;#GE= zaQvpcpo*}iiHTG-h;x*ssvdkgjA5?YL-i1CshG;gU2fM7Px_rzRLQ0;r&g^%xa`tG z^-|3p=(ro)N1Ira{9+oB>B3K=t*CDt9*Y)ad%6UitBCX~jEs9d&*$6EtL(9lvsR@+ z85W+$1&)@gEcyW}dt)}}yC;rm4W^-X=K-jh{XK!SnK(T~OKpkZx z16H7|gy|-$xtbTHEwqM251*@b!J9~jl)P%L)&;M+-h0(ttqb)EV2?Ls=4x7~SG`y5 zhh3r071PcgR-;1WLMs;*g>(k=@uOo=kjf5~{-|3ND~%=^RxSb-H%0|4 zmTwC4f|!MNOC5%Q#gN=ni-^TI`QrLr$D^$b!dMwA18nFaidc{`ZDD2Hv{nWnsjQVz zT38wLvoe-$4l833v2X$8y_*;EVJ{*U(<7nAk64%*Ef|zt?5|aE*di7SlVV&9ltbVi z^@v5a(L|#hWm4=z#A0DgOp$zgGGn5cGbY%nbcl=zGJP+MiJR7#0F9P0CbUKF`inT; zYNgRG6dLWnezE`a`5R%le0fQk^ta<3ne@Tj*{N6V?51m=(+=TLR6!OPCd{C~++=GP zG^~4s+Fa;VwO?dj|3&F;DtEZofMi@RO98p$!%C8Iap?{{h)A9Z)-fGYmJTl4cY|p3 zS$D79@>zH9VSq9y#pa!u@cK`vN|%80uB0U0EB)10qM&p$8<75p?5OD6)hx} zf76{z5DM_w{6{59Hv)$x9DARLV@0-1m}X( zI*_l8LR8p_>%x(%<~li8@Ao;at_0i(s#Eatf*{+?mp2$HJ1>A2bCyFvU)Uko-PB^-!HZ3gc#TyasoFWwzKA29YTQ3sMPDkBn;eK{(SSl^nf=5@H)XW+jUbf|8V z=VH5AJHjlL_%@)~yJ@g~d{+<|INRkAXY9yjQE<5|Gy?qU6T&_pbkJ#fV_+HL9fu(O zs%YJTNd}}?)Pxs`&?So#uc8$QOncH zv8y50^g$~|GSs7-N(I#iuG<0oeQiD^Aw=Uw$k#YBZ#{%m5{S~4snXVmY1(>5(gsaL zzz#;g7_^RU#_b88xc(XdTy9~`8RX5l;wFBLrI(NekkA;)D8$EnetDw@^2;O6MGM+T z%Cj6s!gh>T2w?7rG$jN>%i9?Xw*PT35j^h>VGtpSMzvI^X9OWsL;+0uKtfO}tUuNi zh-i~(r{L^RBGR%n8nOmt2hb-LX5qR-N7QAAAFLtMWZ7Tso?=r~4s#QZ; z>NCh&vBz>*26<+}c&kewzv)=(S<8d%2X!*VgoJv#BgMMO(y98Y6zfV3F;t@Z6zlzct?%fo zPqA)Wo33eA5Q1v8q?>xJ6LhkPk5JZZUL~dN2rtWnjECcGs-dEO$NC1Up_?6X1~?mQBORq3$|yE-AZ7GrgOpLm*>Xv+C)R7E znF-xpC4Cty79o4KiH(8q9$=WCP3eZ!J-{$myPVqH%VoVV%uNkpKrNT`%QVG_Cc{We zAVL@X>^S1flaiE2{-acA9tFdEb8b9xSHt|?q1^Gs6LH7WDV1lqBdW;Oy@kshg<*agWuH;tL!JkJ1nwmtd`h>lVJ>-bs~F}IZBrQLsT!IpolXrsDuy|!a^UY+{C|hWSx@&^ICuIw=Pj<}MlSZV~gWd-5O*bD#|i!+a4jht(`1=4tkmNh0R((S>2Y zFwCox7q^OGF3~oHVVEZ^)<_FY_+eTMnH{f7BSC*=UcT+_FE#60VsJP5ddM;0-dNv2C zo;|~SqypNUSOFavF~9ZHP*MM+hWQR<6r0%$^OsCyn2)EDz9ccsUoy-vKa8fuu=C+3TN zhPifu-&#=iU0juYhWW*Q!+fNZa)4p3>D%2f&$=fM!Z3FMzlCAGFw7Sb^F2k(9pq$T znBVG#x#Y#IVwg*`O<|a)YG`VhJ2mvE80Ms9oKrMtOvC)4p{i$jBGt2)_9LTu_6+lp z3MjcFCX5UXG|X>3HB{6;sbRiD8O3Hc!~D!dhWU6Z>6yeZCt<D*^5Rx8 z&?VZYFwhgYW~z>+hWbA?MfIo{>gag~Yp4&85uqMV5F-lHeq>b8o}oTc5w-0L zo|JU~X`V@5dMPfD3$@eKPs%*KF`GAcyNTU+IBq0w0q2U5doaX}x=I27u?5G^U+qEdC2NN!wH zE>HWNe6g2e@>D+>`^vZZUx^HT;pHwZVh;G7E<749^KJR!M)wB)BMByt*kwQh^x&RW z;Uq2c&)&^t_=ue*6Vhf{zf-=jWOCn)M$U#ohM1NX|v2NN35p_TILYZUEzh)K{JGLZP$9zhnG6!N1%1cRT;q`F98ZPV#S~c>aQR=50I?AGdyN zJh^2}(cX75HEu*Fujs~ze=bmBM-i{t>6>aJZnix%e`O$cZI+onjzmS=)*vzjm@u5w8=pVdWzqxr|VkRMQ z8osy2dO}%Z=2Ak@sdCh*+|y}axPq|TktoooJ}4WFbhnjLO*CK8qG73%+@e|J)X{&e z|8rz=%aYbx_Sb|16pH6VpZI)NQPFa%)OmEv?OulKMQX@QYDi-}X=X^4dy==B8SLe) zrquFQzg!cWnk?p>@R@GnP;PIRB_5`9$(?y%J3KJ-x5=_Ds^%9l^iq;!HfHxd2Ouz~ z+;lY{J97ng2j|jzE-7#8qcIyd3)~PW>2ehY(Fx(wR$DdUXD^4cbgYB@PI6!|>ic*P z`AGT2*ci#s@8%84-KJNn33doXsM8S=Cgxhf^Ry=0bo^d=Oi9;iu(Gi8Fqxf|{!DfH zBPSfGSw8hIwGbDU9DBCZ28-aGFc76&YfF@$ij`Z$GPOj0ffdErPANmVT}8?|Vppdv zTU$11n}nWI2tuocUXn@%`mieYBcnQEkT)YqG_Yw#_3a>LR>&Tsa;8f^G!5;t&>N)8IEEyy>(LF@|gen0F0rII&6S!W~X(Ag@Rt@k)86Dty=r0vg&{Y~kI3$Z^Rv47{B#QrQ@0T&0l0w~Su0NxcqX+{m$_O1X*vzmZ+ z1yI^k2AnH^qMkB95v~A=dddJrxB@6T>aGB?mmdLFz)KrVq|NxQfFba%g-$Sgo#3l- zIswPC;QDh(Zx7TJ@Kp<);HK0GPUm%k(+iyd-er5QCKaRpGC)dajNfYP2a;9LO| z^^^hU3ZST`3^-Q+MMqs5c=3_Y242)?B5iil270J~At_iEu7KI=1TW0#1f2MAI9vfQ zT<8QhrB0yp>@%oA)0TlJ5 zzjFmp)RX?s6+lr>`kO0&lA|vC<0B#bU)X3OR(2Eqas@2J{=T^aHgaO0^NtRO*xy)) z{hLzkujj@7`a-~M zO7p0Iq%@BTaHY-_K&4U!(xM(JAT7E%PysJE657B7?5v~B9Ra_t~!WBT#QP&1;I}+N!u|^YVvzs>1a|PTB+HJrA1PfQd>|FsX zIh|nTu;>IU3!UJm)CrW8A)^yC7dpZGbb_@x=>*fe0ua0zO~70M6lK+b3@X4&`z$KJ z7j0)y0m)r*1yENn5RgL!_`Bo^xCw;++K~|cD~%>%WjEn3RKP;)@0%+?8N=YiWVKSt z7Sg00jtBtlSfmJ2BA~#MKixFB0?5LY75lY?*q@)+C&A!cA^@{=1^Bdqi5$XI)Vl(xR}ev0>RbUnaZp;+OBjb5RPB1^6fCR8}(Fvw^1>`k>Y}&v?w96I1U72uz zxdJH4#scIDpr|MPb7=#Ux-w}4eUV%NJa^RN04}Mo<%&MUIfJW>CSqkb;V)OfLhSFG zE1;MY`^Cc|_Q{pIa0T3it^nng?nMA}R@rvEb-J+9Xcr2N_Fuo)|G7~lb^ePA-DgNJ zT|8X~&qEGh(7wBUcc&0ujyO7k9Q|b9b3caNXba!g14?II>~3yh z8(9G-7rd;n+34N~9=?ZTS@cu;i^>9R`ISk`QPb6#;^w(fWhCWjD&ujWeA~*s48UDE zIFx%?3x(g?mN#8j$1OXDuGUHZOwMMK{^#;QQ_HEiWVMtuv!z}wmIvDEi)_wS%g#K| zYR6`;1`;n*gKj<5;jj&ReDiK%gm!gSNuup)K)w+xw|pb&6-ny#R@W=4Bcr`WhY?5; zjxdhldHtui6_$&IAcRwJet~jTVZB-u%C@e5l_vwgHK5}AOF7Wh;X}Q3!o|u*k{Mw0WxxlZVI7lw=(Gv&A1%6{{ z68O!jN#J8slfcKPCV}5NP!jm<(IhZmF7WHOP0Iy7dfT*I;5TlYmJ9smZPRjrkKJ~V zT;Suk9UvF@t*J@ix2Gn7-fnyyZYi;M+%&zSteL2`kscN`!Wc+1oz@ar<1! zFCHif{L*L=m@gOjxs7SLzy~&_wfC<%OcGzrX?3;floX}Q4XPEE@NK7VRjF7Sm@({h2oK6Q{>;BQVH zAQ$-CsY&3AQ$!=Ig_i%cVB}8QP9LWC*m%aL^EE#S_?$ zE8uK^|M1b&wTBN?gcd3REg~9U>|O&l>Tc0}WH{x(>u&9_?w4=es6Mt%Rg=fN2y!K?Yb|Jd@WLyG!s?Si+gNqyO?|5+x0w*e6iV7Ru z!hJ13Gxky;lR~27ROim8H)ztez+sbwcuKKJI-NZb4ClB%ogK_gicR9mW0SZNHVHHo zxANi6r#D zH2v>%*8N^LM3b6ci`g@!gImjXNZTXPa`#4YD-OF=o8y&-8L#cvKfLu|s}ME1+wJ@L z- zpY^D+6@#70u7pxCY{G|UeNvyov8BEfVxdZR(NQ_fII zMgt1bXoMTx%MUQEOYPTc9+%qxH0f?swGO8oD(E)1+JDtj{m&cE_;R4!YL05EqMEdW zHX~cWqioIt*GX1M7Cc#I&RM)RaDkRkQ-9VOoH)q$G3e`~TCgb!1V$;QS7Evx;}gRp z2cH-oRYuiIQD6)&Xk4%sUkj-FYaf2^6Y+7toyEtxuY5RSAqHoPPX+PX88T2Q?6JwZ2sw%?;A=|(|h0pRfYz!nL&d^vc?Es^TOaaoJZk+gp4 zaC7@_{qQl3%$xOJth}Q)l(m40aQN*ohAmyQ7QYMZlGs83%|WVVeFXPXkgS!U{RLmA zAeu(B%nOv7@c7TSz{DG2uoeM#iqOx-q3Xyk_=Gk~u&;FHY|-vmt?A53ZdEem$<$Ty zQ&-7Nod)fiAwLH!)G{z}zfdc>ycAW8G=&UEH&I&CD~65vqH z62DRNr3sYPQM#dyqI=p*-P@`_ld$!(Vm&5sfCuv+9LUi?!L3V8aWc(40Ik@PacWgo zgFnUf_GeqJ&CdsD2r1E;%FwAs$Diz!iqymqi+M{H*;VbKmfa1tmZO%_YWUazicYDc zCZ#5~u6I>xY64(G8#OI!Hq!1~)@lsP8a+l_%dP57v?af&3+bZfWRAFSrdVKEUnqPX z)fTj{uLurkiyEM|`i_hRwfTzNie^r1MRRAeqD}vb!x1am*0U5VThBadVkKG6$lYtn zdah_a7qpO(Gx{j>)-#$1>)E$P{er>p?53Nrv(d0;1wc<86?;x5Hem$7EwXsyz_ zn!AFin(nG5jJf@a#&EuNQ-c&3-;r zEz!aZv7Lh6MH72eETxh#ur%*TDwpC|J>AlXWj!uPOsMpfSBxQ{X0NpEOEn2rTF=%% zX-P^eT7rswz713Gp$QY&pEdcg=}6+NM7CS%mCRDlE*lmNL(GD@dLb~8=tw%h=*1e` zPKZFv81J5IIO<^1Lw+X##N-dQlk-o|UeH;+@lVU_R*()znF2if8~DqDqf9 za;|)zu2c2>GnVV=Gn8!FVQQ!JX^c|FxU;m;SVk(;Hkh`N$LpFs!7jtX3wGH@2zIAR zr}|34^p%3sR}k{Hr^tOXeWeohkA5vP`n0hS*JnTa)xOc+p=nk%>=-ZlDECI6lD^Te z46HT0^=qkOC4Dg+e=d{pmtv*C%PLkCDOQYk zUa^w0FU1NzEEfzCQchD-vGO*(mQAvBoNCobm(o$N?NJ=Fsy;$AlprnADdf=}ZF_tv z%rfShtY^kMQLm4@g^waWfrTGthqmGjj!ollHYhe4N5aleoPthi7{|`%RB>_MWd0Y{ zzT+brm4meQdw$1M%x4T^=iW=`R5HGA{%#JNpCy>-+7Y$s>(TJ3K0 zztTf3wsCd~_zFUF0KCP)qgXnYajScS{}rhxeAF(3`#0jM`H9nKmuaOx%>=DMW5mPu z{#rM9jkTr`)!N^6C!i2oWOw5)X!0dQr;x!#@!gDaLt0A10txh`(5YT1kVxEI_MgJ? zm+SuH{_|=7dEI}?$u=Re==Kd%MF^Niz(CpyRJ-U*GmpA)>u5V%J5kyQM8N#mDq zpLZ+uD9b*>9V`{hyj$|DqKD&-EY=gUFrT6P zH@GCu6h9T5D{8+fmmlZyE_eAfmz(bLI+u~Ve2Pn=YP$D*Tbh%oucBlZ;u}ky-iv4bj#Mp|Xlm*$PBfvaurZfIYaZ-yX5l zDRTHQWvHUOpEw(xu}jw(yL6qgOV=5@be*wF*BQHXov};T8J3)gmL^8kglO@U>YehK zEb)5ltH@U_AM>}>9MNjX3*Bu9f}aXeTWhQxkrF*1jGsxI5G|t~DZo)y4i(3Z>KX6< zQ01r3C`d_CUS!s5Y89vjd6FD6$Wiyy2$e;3M~w<{)O(h}fFQ@R<6n+Sm)bqI)odf8 zjy>Nrjw@)zIir@c&L~RF8HM1>>KQwAIeIfs>6cPZ>1;`kvE!Yy^OG70WAoviVt511@H_+YyrbV&TC+Esue90o zl_HFAfWp$%BBskS4qLXjg~l{{jcMt~YD_4WPGd@=?+ab&u<1(D`fnj!N$#^gD9A!f znz7iDoAQ7})@UuMnA4I-s&k06q~bzLk~R@}Ed$*Ttf3;bb`|LtyE?7(WJa)jC|rK( zaBE3Ys(V_J0w0;=ct1BG!WD6f$v6t(nugtE<6-N{#^cX;Vc}5-*K!8oT24a5GAKZX z5DZTuIyV8nm1u-f+Qj%) z+?Ip1mLZEBNOd*FAgv2LYl?+6ppb{c-sE^z7RPM;v?C1OSu2wRe6$CQXZ7oR3_NRo z#fvXw@T}>ISG*Jjei}JjAY=m{u_ii6_)nJkoBN^m-8313E(WU)Nk!|V+;_2@h2fm8twzb788UoScktE7j15d<< zN3h~~lnZ3ZoFE>-YQGzT)zC|ZU^ReX55Y>CgkUAtfP)s69JCMwD?7t`2-Xa^P|pfo z=n<^w3nCeMW$*W3K(@vtz$RK`cke*3GE@76U^Qnv(_#o#%|Zsj>ZQzJR7UDGmPM9D zu;Miy?LyBXST7W!<8sn%4@a=dU<1Kg-q-qrXT0PL#NyFTnH58o`iMp=^1e+wx~&|^x89_+DDlWqw$ zX&`v@kf=!>yt+`6v=hd|2ge4l9%3~~TJ=!y>ZIveD-OJhAL2A{H9knWl*WJyJ2Jw# zTXdgggxeMNkpZs)22xIu_}G(fw`9x)Sf8F1=*Rt*tq@}&D#+*1Ej*BeuPU~Kwmx8I zn3|ks(b6HiDEUg>HOA4=*bipR6@*yklvy1coz@U#YnbHN=(L8jR)faslz?D?IeR8O zHd^picG~set5i4Q*l2m;^q=09PtUq$6Rl11_B);3nVywKGWW6DTlfgRz@h0`**U&j zdRE=SCMoXQnVuEI>b4+p!eA=NBk|%hcZIK3hQe13lzN)vufnGGCo0bQI%;_s_h{eS5culSpe#Ph`smUl79MD@CL#On zfUVL40IckqNz$_lQk4g=HXLR(6ZRrdtUQPYV3k>}-ODw>4@+((QW=BVbZ$x0X$<^# zy0h$t1CN0Rhb--249n*D)t_-vMKW7-OF1wt4ty;TR{$OAIRl-IDvl$tS33$XMN1og zd#X#%T2^{i*WJiA&MQf~+e8oK^6LA z0GKe3Snl7Qtsdsnv+{P&@PaJE3lfHxL9trmxhG;4Z3^LuLrc$k%yQ8&QdBmJ^sLh$ z4Opkw5)`ZLXf~t)ZWw_)GD)*2=|dVYHY3xs8ZPl{Y-j~Hb!AOmBcV;^z%rRKWv59s zY%|xVa_7M2Y}eG(@n?7POh_|9u|k>+=H9mWvkqZ0jx?)~COa*vMw-m1l54TkKoC#% zV22LKYU$3BZ!Y~-rc=Nm;bKXr1apubVV&|UsF9LmL*&@Ug7~!=@yB+OjAlVQRvhw} zQSl@xXRFT`tiDz+MGe2=Scx>t0Q17K5?l7@3!m}C&6LBkB6xdPRxfY>23at5!t|`= zA?aBiF`znFl0M`5l39bXthD?z>0kIDB$Wkk4(gEADi(2VfS=WX5m`~3N3yzMBm7bNs9-MG_{Pe8aEH1H`y^sJesJ_(%F7QJz;W-Qh)49;qd zs|RNtxg$k%-VbL@mVE#NAf=L$ty86zJqa)|UlM7)ndDku1CNvBTGzTK-MZGj%eJ11 za}**aTkqv%-jSY_nX!d$T*YNtx76_Q-WNVqrVBqv7cbq>!q03+p(MNTNd%9`>n;44 z)tzo;kwoO_x&s`t^nt0M=ZgB;6%#N>HP&kAW3;szPBRK_b^ ziw1MXNpzhhYLkCF;f=7Nbciehwxr(4ht5X^RY^&ouG7dS2(_e~r!ikf3MEF1T`&^v z{MlXEw82aPt>`ON(jYs1MLEEH6jefrD5?`m>BgJgFs;Zp&7d27(^sT~C8Lk3Qizvk zKl()5MvuPXh%sLJMxTn^sLyfsjg2@JV^;=8(h3n zfR?4f%We{?OFv}1^P7YupHQ?1!CLb+eR$seCnJ7mde*~l+XHKLR5nZ7eg~{IuUVCV0KZFSwu+W9-M zt=83rwGRs)jc)DVS1?;^KZ|ZPRcxrWzbRgvL4n%*-5fUmrnpPmwLEJ&GM2wEt|)Uc@QAhwiv$qI@9QXIqv#MIdx2`&wn%qOde&pnEYhm^Ogx$J;< zd+}S!d6WfirH2x~{4tl^BJla4Tm5;+ghYQUn`Wa=I8945KAGgQ)NT_*Ss6 z=A_D{XLYCKI0EwNS&u0_>#+-IdRE5pxFd`8xZ=nn#kb;_Ptvp6rNg({rNg({rGsqP zrNg({rNg({rNg(1&eHU(Mu%;MX_`vU>M1yzo)z;~86qpfw~98{ckj}(l6N&t&zd1J z^16z~JY+*O#+1>q`E({FS{7}VXg$6)?JKLxTs~>CNx3FPw%s&6t0h;4-pp4GdpW*ZST_FOo!QPFpwUR(w3(6l-hcR|Sjk_dBJ&_hw9A~6w zB{U_*i2yCQ_!sU2ez82d#R09g44}0(J)o7O{R==VA|`jmUuI4kDM;fJ%D=^{ln2WG7a z%*tp_3TE{dytCu8mVCn@aS$0t!IIxEFl$z)9tCDS-1hv~U{*&I^KbkmJo4lLB!tY11W_i*PvGXUvu=XV#%i>oJt%D%!49BmQ2)zu#uqqEYkjs*R-NU(8?LZo%Q@}(8B<%zAX#q(ZOJ297kZMi z;w*5iE?wa4cKhsAPfBsD3q8qYYQ0JHq>(t*&rXPAHGoz@puN*<{^MhGeoA*s3gDY0 zQ!AThEmJGo6>Z}rr}`XEV{c`*ftHA!lHV09!&&0VZhx_bl5cs52JA~zMiqH-h~T(g zd8m)Q6j1<;EPoeySan7IF49lwN}LL37`GnDV>b*!)$1s`{N#n}{kJny>oEf?Ywx@M z8w_P#RM;V`DswJQx}@#Nb}zv}MSj2eK_0ggMQB9( zHQEX36VsK4W@`1PfgOtD3E7+3AcugeM(b0rmlAm$xm)pd=l*!au9Sh8AVSchULN#dz89B}uB5PPv+%M3_ zNHA-lCDcovH8Qsw^hovjOsxa5H&Lb1Vg@eTXT#y&t_4YQH<(qL+)bI?p5kCFpW1B= z?z!KYT5UV9I75;AKHFiuBYT-;cGEFv`2=sAGuQ_>U~EQaYUPQ|@T|)Y>837wG9j5? z35TRJ=a19MKw5SI6>l25W**#Q&L{(5?QrpR0%u&U&sa6*e^ zp}YqIiYVIyK#_{e%LfAkn!qv@IcmGK&)uQZeEm1OgAjwDBCb<#vnM+`NZBno>y&3f zRY#5(6~0roTrLZBidKmp`LlcaSx1k3X#;@7`fgRJ%pa0l(Ph#t+<4<;c`bLvkgEO_ZoL0lf@O53= zijWrBb-k-nlgreq6xoh6loZb=WurzdYxEd#tpwFN`Uvt1g|CAy0LVrzMMyE9uo36~ zD|~L$=Pg4bb7J`jQ3th{lr*3qI-Ve5qcq8ErdH(cHPf@+MIxN^3~}VD*0Uj;d_ogE zbeT-8WDzhazUheU?9gXHwSx6^kB&mMvP|h6c8?Y;Oh%amxbm4=xw1^Hb(g7?2%XE+ zO1aO}%9YR5%9UkmwR_hiySEKR(vl=ot5+>|WNH;n>`}3lN^*piOL458ZVAybh;e~Z z^Ut0#_pFt2szXxR_NAHxE3Id1pwwq-wPFBV^6;91&rDcy_0Pg647aO~v&wqomU<<# z)KghV)*77^X}dnIUI*mT9 z{(wxa1D@72+ru`!Op_*iqD-xh92z1ANlc#aWooTLFDj$Kv&z(p;%yG{MAw1&q(f8_ zZ#1Te2B0CTIP|WBGPzXxbe(EGSE$ivC^Fq)YM0t~TM`wqC%CT2lRuMYYDHh^3HAzf z>IJ*(BLut8Bb?|fyJc!6GmJWy8GZJWq@z#s3UPh*qu-w;aEGR8X9DPO3PwMZCzq1G z(XS65{k~v!e)Rd#=VU_L3G@159#-t6UM^EBCmv_?#dQ2R1~?giDOMW1Y^GM90)KpP zYu=_0&%6J`*LG%VJ^Z#kiepyQM~H?Jq(!==)v!0)en+O(o5jKh+&Y1U@6SMSZj*{L zI5Nq~j*gw5I0c>3@K>fZJa0NH_9Oy&r=7nkW_2yVY_+7c3u_+*LxPG?8I5qAueIOX zLcfXCJj&YNblLgx^LKOD{47CubwZj))bba~6^E|R)Y^*L(vI9ZT-DJ{@Nsiw9s z9*S};JBLMb&q^;_tL1xiTgdH|@5QG0*2iD>q?Ea>Ekn7|8rnm{YEUa5I26QgESDs1 zNzr2OO4qPsIOt2EQ@v0i&+04^ww`zb$4@mn z0m@ag6{ey_1KUg3>IIHp#eGh$^f;nz^W62ETm%b7A4l{CrD#14p*K7g)ko;A9Jtz-q2k-28)<~YN`Cu}{TgsmqoqzPLY!{d%D z))TTY*Wo!HC%I#iu+=VI!dAO2Es6q~9{L!8obw-vyN<&8ta+HQM&<4gjmK_Uo0(?mcTjvrOmDV z!BIG2&VR-7bUvx2tWSzk^GP9tRP23Hmax^^8bcu*J}8&?_`P`&nq5L#azcs*g6-In>D!^38PhRnlm!c44*ZxqkR4TtF@=V4Ttr2OAPD$@X9$U<4VRg|S-PFb?Nt%pWgDlU{IsX39UIb@|YP3P|Ll)H-b ziPNrx=>w4ih|$iS_)>Mq)ybi@RXeeF=@UEQmCPd>wXLk{425=k!BO=3_MS^{6MV*y<^obT1m)V-~Wlqp5M61=My zIQZ5qygDJ?wLApx>WG0T#FL$)ki*r+Fu}VHNXo1e%0qWTxx>4Xbt^h%5td>e_O=7> z%3u#Ze|zr-l<$DOIXDqBPdw6RVs)4WAv{=yfk~f>rI`?)hSk{=b2)qndp=o zK&Mfx7;mRoIS`n}-oc6F=t20lKi_I{?*N-VvHyFv{UVvGVwJ2hj%7*ERC)E9Rp=LB zMGG(oYuJZmu2Wd}#Ht&pWgQZp`EAL30VXa^TWUYo!j1^-Xx<~1%+)WBorm+fLt1vj zyE>&IkbO`|uvRduEZ)^@Mk9lf44CnQMeEP*8xEY}o8R3^8~k>D3?ru>P-PStyegv~ zT)Q=`{hr^Evk698`(*P$$|URern31DX--$S2FJDhg?BZ}zlIYUtYceSFWovM6wK72 zjk6q=2jE>7SzRBESFni}SzWypF6B0L3-8(zB)q9VwyC?6*MpIL)rUQ6XkQHTc-Ipt z-j!S{%S38z(^f1D$x?62`jYMKzWl%gdut`S zg?D8i#F%(j?=T&Zduj@oDHvaD;q|ECJhT{Xr{dJ<8fBfXi`1@P`!HEVcvla)8oD_sQ8w&2761|Q4#2LFUD~jT+Tk__ zshSus&!c$2OvsP-wXj#Kjz0AZao5wu4tgY82fo zsHGw^1Y~q=FqkU7Wpiy+!pq!Ljv+omH76As!v!XXrQTg*zcib$i)w&&w)+<=r>DN^ zl_fo@h)=}-*>px_{$(n(-ETY}kW+{C64$mmRXLlZvTGf$lE7;J${KH_ZCY8J)fm;b z;y{JgSS98wYPF&G2c4p|u`FCtAS{y3L!ueJIqGSLuWAEF+FKj!5>hU3e|i%yVWVWh9|YEI$0aOcHZ0TobLj$mmgcrbb?`FSD(t*&TU<@3`7)tXib$f z1Pr*fJ$bXQT@B!Ax4pgbXT?DT(xV9@i1tVJOb@hRC?RNW(z$o3NaE7ggNDQ} zI_UvcZ8zybb)6m3qm)XIlJ?R|CLlQAfFfB56Bs`)Iw{VsH<4;~214UE2T=uuJtP5(xC=qLD$hUtCz<#*-C4F@OLl>nDJZO+*0W$%>EfgRHQ3 z%$^VY)}R@uus7p-pK6-2 z@#)Q_$PRMMumEXR=t{|If_XT-4J}FP*lxPxCk7D(g*~E}0UOv%*+3#05@z7PPtOv5 zY5=iN)=w;-oQPQVXkYy7>H*mo_Tt$yj-ShpEtFyQ1%dpKf5|3rQxTuo$&Sr zW&H&5fz{dD7a!a+J&bQ(*gIxF^}moEwPflk?6HTL$czupYL=hMw%5-xW&N{!eWF>O zfqk(rEMYhMVovPgm$GA?&=P6SwwQ_scf`=4?ri zu_XLn$kUGGpx*a-NFNnr%OTEtBDK)KDXs!X-w~;ks;nQx-X>+Tg|RY zI2My@mAc81 zW2>#Tj{awQxsn`~I{K#Fhsc!PGvuq_X+2}ED!tmCMd%j&RQUEYms$$utfVq&mwHrP zOnjEO6J@}n??zRefQ5$L#e1cNO395Yv>Jt)Y>c?_G7_28VCuQdUKLwkN$O>Nh1le- zWc4|BWo8gHBz)Ci@N>^yY3N-W6K8&^e@WM<3gP8jE^nc8SN3Xkjzm$CtKC{sfO}F>gmEY57B3|0))FVzIT&m>`*F8 zM(TN)8jbIO1;vGE1ot!_P&>4*R<2kp>$DQ1%eOM*RG8v`lbQq7XM5`=9`ADLv>WTL^8v8iHB)2wNS^BtAWb=!vVL| z{d*J&TkEhvjmLD|2K3R6)@Ti5V%5?$ZGg7HrMntqZ6VRC_=uMr{Y6wt!+59_u_NxA zRV7t56>?}{I<;WtuS{rXsq6#sb$q~)CHj>_qKn2wekKUjNFOcs)=1&E-Am|hzfBK z9iOB6{doF?obWa43xSU_Vc}d6794THfwB+Qwz{Qn@jNONq3{c_rh8z6*!GBWNW`7o zOjw8=tXkIuVR#9fO=SEV#ai#vWuhqzL`vozu-Vm?YvB)*#UE9S)3F(XzA7lCE`aMA z(FJ!7lQmqjoBG57pmE>ods~t!uw5LEVtg)OrMcr7dmGVSi=>rBq$!sYwuYM>t8jSl zM0|*v8!?F;Eh49SlhLg)UrDueG#ywjO?Wr{Bn)bP&MK!1#sFi+uT5<>kjIruvZV1A zKV#Z_SPK#nudoPktX^6>qu^p(-{48jT+LWleFN?(g5>BcLRrAgAQ?+WDaKk;ZeGTg zT_U1Zrs-1q)tasvRA=qL=FtTQlI7Zwm_oiC=C{eTBfKaU%HchR8nDKUp z=R<^js^9bn$ILWK)D_W#SUVcUWa^B0d)4$royq7i71LuJeX#Up$x2soGP+N5@pmz~ z;00)i?uHPGd(u_30@*cH8LX>Rm98PtRj?r~$AQs_=_+`%i)|I>l@wTmVyek7F<@G4 zd{y6>09#BJQ}yvR-wWd&6R9PxDi%=sF0qYq)sm+xL8GUZ(Bgsm2wDtdWK-@(I$=UH z)j*a+-?79k<11!jB9}MDP3as6I)s{Zj^=*q9IjPJMeWBenl#L|OTyo^YN^*QFAh8V zsby%2q&C2Cr7pxenn~?2EyIM6ByXak1Q`uub%%zr>NE@qdVZsWTu2PiMf(sjGaVvk z-e!UkM!y#gqos;W!&pPZ&@no^&43zu5xPdy%4--)PQzF-4TDGB%cC{jp3yK?$J8*c zkI*pqZA=a07grls6*!!ShQW|Xz#C^6qE|=7sL1CTQbcwFpT` zxVV&SQw=m&$1vJ+K^`ww;qv0b{u`3ghCCU?guPBE@g_FlH@yL$G>RR_ zy%voSiHR|@)tetYJ^_tPJ}kpw#Q@fC-#PnmX^n zUZv>|RQF)y%UvrXOFH39{rp_bMcfWB_(gmYyh&S}+23o+;WPd>V`uy)Ep{$|e2W*3 zfFth+_~j8|n%~A0)4#IX__agj2=K=|rR&YP1A5fE-*S9*PJvB)L#b0BS)9%_(CeOT zHVOJYItV^p$$94!3${`*{4Z=wo)#y!aqnUvnd?F-5~di|t|60Py|@crrIyHImMfNv zbx>WS0xs^Di$LKIJ0j5@_K)uJVD`0gAnCQjSMgG}8Bc~H{vzfg#UB%6d3x3STINJg zVZgFO$r*|Am4JYMH5;^|K?Lc`Z3>e}Eie=BCaF4=5(I6<)VBnuo5~tS0H=yss>70Oh??N957|*sMSeAI`Sd(+Fk#H1b;$#iRdbcOFV|$E;zL=cJyQA3c8hJLB=w zPh3E68WTx|G2yDo_XTgAp0|D^JB5DTP}aY0KDm#)^_eiJ<94MD z$SioU*f!G6MUs(Agl6$5S8ZProSAa%DoR8!3|=l1Ipv7(A{r2J#jFs9?|7Ytt0wj( zAM3c>iwK9jG$>{SosWQffu&{6!xB6ughxK;gfKUHA*?46!g^9k?aEPueMb`UmfNL) zIJ8O?eYHCk{;3he$Vn>j89gCfe2t**b~dK-M1mklw@eur)~6))@%DH3aQuE`h;0-L z0dhC-X$A+_^bqPfJ^*#$6CORT194JrU5D&em;*ocnM zIS5B&lvBcTUTv@^I|Sj-`-E7~RSFxSV`2N(9a|%ElAnQwS06{ zQB>1iNQdXz>zm(U1QBofsmhX3RF%F&WRDRv-N=N;&QOv2z0~+l#z<>H2eTDTlhhaC zA<(P*2eDM>U&;>i06n|Ol3mYGGEV>q^q=nF=X9>PYGQ}*vCcz;=X=<)& zUP)yA>0vy|dKfQv{=r)ALHAlbn4bE%B3P~;K zagO%0FNm5t$23*T6>J3aQ6X-LO31Q^#zcHHBZv6t4Wk8Y3GFME+Z4Sh=)V=O*_f`5 zGp4OAHqhr<-pUS5D;?7o^lvla0Smi~shwe6idWJxK4w6ra@RNIIJi_r54p2c+aKvb_0$3poHEiz5E=7qtU3gRLt zhEJ#JsT-<*rZp{%ozp@JwcSa5c?>9idF&|0048LfO{e7FA=s6mSHFvm>~+B=`;}9Oz>SI?cg%WD}b70)N9wj+qQ<5P`1o zfP?R#4p3k(f;FbWHP_gt3$8Kjz;}|D*IaOoprU*MS{UO7*M4n;*N)!?d+i!;E`$4k znS13Zv?Zn_0bWsp=}Tz}JB5r)U|}K#SfA=0ay+|A&@sI5mbRgtHl}{WoKri(IPO@o z0#jHlC9J6`{?T0?bOOP>Rz3++a%>l*SBFs8dg_pT65Ijv^6F4kxG2*J(E`zVM(9Nd z$&(C}n2_L|wjs#iowf^|Qo1hlO)8C|LedwLF-mL;6Pm8Ea)YU{jFDQzle_qBdSfKN zjXl+*#nzqCgX_i!9o7p?u9{T9hq=K3t`_f+`-Q_3L1Q_q_6X_&O>N!gm$w)>S~sao72qPT2&i- zJs?=mB< znKg9wdWaD?XE3@s+*Of>n*AJ3 zfFpo%7&Iejxje@JB`!s5pZ1{2fH4>I7cm3^BMU?jOI9LoaFUXNJm48m@rf!7;d4 zkJ%A1%G$F`8D?#9oQR7BkaXG}-Q_`X{*vG_o{Q?W9hcEmCw6dLxw6X46|nP1CBjk|W_dIWQ@~20xqx9BZZ`+R zEJ=A1y3D~JHBDLgV*+ukVVMDcgt5|+c03S~+4JMF2-GCo!%M}&nK7?Xg2} zu1Uhir@%^Pz0w^Up_w!hytSb)gG@!`5k%uj23up~HX4WMNv3rYq6r+)h;m%Wgeyg$ z_*l>Q7Ffdtaep}g^pkjqyK@%@0Q8ptOrzkw2{5MSDYpoTEzU$zOo+Id0As4a0-h41 zf*reKc3@1o8!9jE2{waF9v5SZOMj4uM#ZzhnEF8$;Y%=U73{k8Wxp||ZlwD?9y8hH zG6ZA#u|tY6b?uT5X@N0Cr#PAz)886l2J_osGuWd2C{d}?>9-FR#?(hO(Kn2ZOrRTL ze9>os*|Sop4MnC8%D$5tte9*9J=r71^tmYlIEtqx$vmVl^`bdR)DP8M|4G9{ zb|IC=HJ84hMgIQ0O_ z+%#5MN#@Sxj*N-nf;poMi_(O_oS&E^n6t^)pr<65Dn=NkJqhU~BV0^I*Qw4LU8&A8 zE}h1H=mI;xyGvk)h~^-*!2+GVz|QaOV_@gUaUe_**bxvmJ8_bF;xEaZErL8_Z0l|2 zf;<}144!vzs3#fUMZjlhz~@u*3;1Y?B$$#}7#Q|Req029_J8-bSP%i1G51w1fTZ;Vkj0ry?2zg%r_n3GSAB zP{^VlOL(UAliacH&fSATjcJ2I|7k`+A?;ntYCB12D4B?=p9tyUivW?P7`L_yKr0OA zbFL)urGWvWzdSSnA_;jYG+la0m?)WSQ*C8oLHDvnWO7L_Fr#bNkdFd&i(t{z!J^-v zDp>T6urF97J2Y#)Bq5_@&O^VzVFF16CpANFionqx(`J5V&pQef-6OJ&qlopxE>(li zj-Qs_UOfA427i==A0u)tZ6<}**g2==|IDoR9{fSJ6A(5USDUha4D}yRwD(}VRLg&| zXL=Y#2>G=9_Kw+4{hww>Etz@>eJm5#RFW%Z;-eUlfzY_rR}MUx)hz#Ew!MCqDeIr* z|1!}m&me8)zOV$7(VjWud9vIx8eU)2o)dfcf3str&+xGeHp?>a>{`rJvtFb=piL!>KU<6KCD%OPi^+J`@;`WZDp{Pl`rg+Dx9^ zGfV&w%edJ!G7>qPU4vrd9BiP-qXlM>Hq%dzB+uB`fpjlw0_U&{iR0#{no-(JHz#ue z6b#6sA!4$v6&P@URY~vnnbpIWIinQ2%o#%C+l~X@N`+lqYR^U5%sm1Q4mxe-ACGXo z^4nn7>kh!dGlxHIrdL{IW{V;10}88r?|GMFSZEY5bEz3TbrhT0k0i?ChH)G50~I&HOJTGz@+lQ^WYP zLj`H{ZnS+=CT0m~bPPs%!yX}xGfJCzKnDDXw3%ZW^JApV+$Y06<3Gz9_7u;`upgZ^ zbN`L}Ii$_pUxR;i+RVdf{EtqX=~}#S1RVLang4Z!nC7=J#q|Gow9;lCWv9RxX)~vG z5ZqE}Gyl@T=66e*`CK+=<)U!qHib!~cFHtw06Z*ItBtC+Oxn!*aV_8y*byvnQEU0@ z9BK>Kfp8mq_1Q+XLr7aoc2Ar6YDsJ7y1R`0MPLCjn~;lch2vP{S8y1#0;7YEC4s-4RK-O<_VLQ}WYWK5gbc@YcV`PN82nl=ZKh=l7AfJ~PFxOXcpk1=D6ev`Cxj za${suTkK4m`Pp4|SE5u5ieQ+o(c4}5S5xh-)S9-945m*caEbox7f#<;q|NLs?V2|8 zAt|6N6gf5)X)}`@TXuZWoYQ7H zB{136Xc50f+RP)i6Ve&yd%zJKmb96lpK2%MB5h_^xVT80xk#I-Ai*BfX5K$R+D!A5 z?nU7d+C3bpV%rip%F8m3 zDtaG8As=|firwuXb2g&9#GDAvL6+Ph$Mv4mX4;Eqzs=x{YaC@s+c=P;a>*gcgEocM z*g2=o++Le>>k8X@?95Lcnnt^oT~aAB|9$|5nzDWj^|!4lg)c|CxU|N-O*7t?uS2?k zFPGi9m*b_)ys~F{7(Z>My<_%M|E57xPhqloU`9JkuFPtd|6#x^Q`SGrPfRq+Gf11c zFDzlVw3%~a4_61#2!*p}52Mp&&Wu&u7(hgn^%K!sCL*G@6~pjy=#R)Pazrj)Oh)*l z5bTImZM6&94-lp87MeigNqWjjQ5aNFpwmaIcK+~+Ly8668^wpa#YeWz6fKV*r#x)| zAF~?nii$5Q)Lb=0D|*!sG;NNosnMx)gGPr0+FdpAy#2=!*kIFQ{^&3OgL3nlu>C+Q zq@CiIdUrwZ4%^vxiwCO<{8`ubL*8A;_o9&LMTa9n8!>|No>mb|U@Pbb%@P|By)^aJ zaDeN`IvU-}93EQvXZrK?8_lpmrI#A)X)M}NvNW^sK;!9>ohR-4cRngE7fWG*=89XT$imwWtP5w&Q6?uh=_VGpe@v zZLn)~2cY2bwZ{8(28=s*zN&NQLv7sJ%gOUqJ9PeB(I0#svO}@9)h&ICM=XW@2y~>u zJuMx8La5S?oiFL|b~}BW1AR)e<4js0eDvw0MaBk{eHTb%X11%V43|{0_#+2a+AGQc zIY)hSOpEDQRj^2lDKL7h(RK#_BxjfF+^c$Wc6q5qB7#ZIDi;-S(s}(6zzH0u&fgTh z$;?s=U2&Yf{Z{Dx2BEQ@lEc0yfGnEnHMKf3L0U{%szWuG9ceMSd(XOxR^XUvF|iQ` zVGmS13&^4$MkxrOUvPpBEki{!&adU$-EKBK`+Rcr)W(%esB?mylDifna z(>c(grfoAE$ho2g+2H^u#0h&$W&cD$$H|y(_$UmEZ@5&@ACw%`CF^Wzy~*R#q=8pKs&6ts>ts-Y#Jo+cDlcltr#>I$%CmToz_Amsx8&PWpBXMtZ}+ro}uU1AatW z%(0C5G16l0lVP9nk7W&eif3imk4}rZ|3>~C(qitf!9O}J=3zAcN2kSHI09g!OQm5ce#aBz4{_zH zDV;^S)OyUS84*kAEXh4%Sr1F?yE*Ju5Bo=Vc`*Chds`SGJej0CB9K8lb!M`zx+wyH zh{<=XnP+Ra#F*c?GtO3SQ<%hJr%dEFU1H2!XsVJ8>hy+FM^IyBYdGy=eXQYR;m804 z93jsKY>$uij;1K8dtaIzL0wOepib_TXAYY$A8^Ws&7!4$W(xIAyBw7^QEg$eI`BF% zj3-Wv`PS^T`Q&Ys^+yxmu|}v$jzoHDT6fYY|6&h3NP`ti7`df<*T@}_Mg;%YY+_6u zjb`~HCQ6L?&V7I_*gIwqTlntmn6p6apjQf$r7|Pf!aHXLTX!*=_H&Mj- zi{o%nL26;9iD=66QZKKL9!LH6<8jpQ%?`UGlX9EFgiNO7sIyCrx!|r&40l2?NiB;6 z*7f%66#A7zS^vuUzJ27be;S50(_Ux=a?9;TcL2WvoZSw@u0>^kC^lJrxaTB4DASD8 z7EpF_vA7&+ONfLTDvsBIOs_#SdA&x!j<{+F5!P{0(TE(W6f+XRIYJE}LN;eDbO~bn zKoF07(CIY@Brk}$0@|;r$GSvgDO!?VgGeq40bc%RlPwKm)qi; zXO4o`@Jb)Iam^}i>8bC+I-;no$BgL+1;T7Drz^TKHRZ-Vy32#v*Wy^q>558<8I@_B zFhF2yJXn;Dh3$XsSQ`m8Vrspxn-tHU6mfK=64uDx}Tq{ zEFncTX-(s&$Nbl&LGZfp(IYzntJa>COnW(v2y zJ;ohm7))0HS50hSKGv0Ya4W9o8(z<@fMcT3nrIYdk-&o<=3r1gycO5-53=JfRi-+} z)G*ExO;-R{?1&V(u6Jr`WP^Q@s=cn-8w{y_>fbw=TbtPzM92QQ6j7;~j7SoDsSr6N znEe`5-+(wE5ssEcIHcDG1V~(jqtL0lZV};FiujfrMmzkpvrG$#vxs6WND{Bwn6^iZ zX)_tq<*j%*KQzm^p-IPdnK8Aenvr{WtTA0q$CRrk74YH5wC%@qS!3E}O!bq-)ZNKo zN2?53bWHEdH!(Z7U+)rRt`KKhv9N4yBVNiynUVQ z*`{T9;0Yg%1)h4;4Rt`%DEp1idr=>N{w6wOMh8#h)22V?CPt(#$r-ds`3m<-3 zR{XTIG%YJki+<9yxH}teQW|4Ti}n<^ZBp7%IxR4!ON!UE*q|S^F2S=)(efpvNuyIU z(yvRZ)_G$PHFSw32pwpuG_I@y)ezV8o!@H0X=shY9dMc<7eun+e(sru#DSQM9<)m9 zeCJ_Ti|TMSu!8)u6s@ z+KxSv&}kfeGmiySB|42(tRpVE8BndsuYhq2ABmX^YS4SucwmWNd7t>BdmpTE1#U-^ z7yxTvlfRE_(WdqT8|lky(VAo|<7nd57M5bEHErK(Mauw7kw^E@4#u6n7Ncc~5$f%C zjPT#_TZ_qCX69a1s}*8{C^e=!g`EOjO4f}U!MGtZ zxEWcVT_=4?5$AzBwWz!mk5D`^N)d8UlqQkj9^K_ZClcIi<(<%zxHtG%@03NksBL9Y znyFkh)`@m6x@I^<^c4Wot4`7{-XCa@~Qy+4{}2a7~2;KD&m>yle9$6AV;CP9b%S> zrk6`UKxgGjC(Be!@nkEHAAauOXXB~TG1WVGkvhvm9MD?Lcd?q8edmv~0jffx9P_H- zw-2b0PjXD#Io6f7H2&B+#I&YCN(Xz;}?=-jg zokr=S|37>08Z1jz)_GTE)@|>qy-)Rph!cG}!mPBzI6c!4{ed{$F+s$1^$ge-pizQA zBm6MX#C+H%-XL1(4kK(iM>%3U<7kUG;spT_jz|m2RZ+1=Mr|Eu#5*bq$e^gmMFCr< z^}N6TvsPwh*3O-~?z{Fr$)R^ug>7Dhgb$&%_7oLW4+H3To55M5f}j{)z;k^yw-xmI!ViV!GiQL3TaOw zHXa^f%auO6PDtTEJSXW^b^WcGSH$4E<8J(+rlMaJ~_a2hZTk z>4fBjDs|EJ1Jk-f=G-|5{H=%FD9)04G_>33u|r0WhkAvL9%|OD^>Mi-?}T9JTMTws zBm=S?Gactey~mr_Ez%5?_DyWWj70(u9VAUr{MqpOnBi_QUnnCFY9q7QxJb&XREw_3 zu;YNp;NE2G40o~^5P2?q6N1Q@!~_5=9Lygr-Y9`va*1@Fh;T;2U6`tTo$xg1u}k{| zM6yz>OF`NtRTB^ixh`=SvdX%|(b5=A3Hi-5M$>f(xn>+rsU2w4&$?*x=(vjvYH1g7 zyjomlkZULvQgZW`voaXbFa*^(Ew%yM#L6Qz1KF^Difr`9xls5fj}#yIA{>y7CGW@- zpi|-_?#e?<0mz;{8{d9d@$92Ezj@(b2ILM8*<#eKJGTsT>Ur z(S>Uf($%jf+5_aWFY1)5A*l!%!F)1|g>kfo42;IdxLvYI%3wT?LtZe+r7>mHDJK3h zTa6AcBkI%-vU_D-SByO}iBz-e-blxIl~k}9Gs$#HOj&~5-AI{5FVEe*Tgsc|o@fU> zOB#!vsfSgDkw=bK_dzC?txnCW^adC4D8uo#r#@6wt$xL^NQIW5fKG13A_Bhh}R!`4Hxbd}yxwDdj^G1jQrf6AVkDP91}R zoZ>m7PCpxlTLoK%*(dNsIF6_-K+-#^9%-`L6F5G0=bUBB*pd*U%ix~UMb9T%0O>&l zbp3PwfPE^W?I#wpQX#?*`{L@RB1%BOfy6e?v!q{EyLS5Sv1}1uK;WBVEco!Q9SqxJ z*NzO^Iwd98UD-pqK%Otkl?4sGZ?2urc+sOCWv-nqt^aiQ)WYxe-Zz_TM+2aJidw@4<)o_AA(Z}3EiMQs*zvLrUtSB0?dVPjFv->77ScFjEz5X~ps)~M zG2-P8ZhHZ=Y`kh05hCf^m*yf;UQ=G;NgYKg>DKNd^Q{#uQqHtwPB}ByjlE6YXeFl; z!Tpg_A2tax)47Y%$xWR`>F?Tgv;nT8H!S2jdd+^X5~c&qygWBO zFnVT`Ynwr?CHs&!$wllUZTUfP88T1!-!{`MF99@jEi6Imc-u2)>`xhS z_(QBEoL0-Hk+yX1ZR=xze}5f_}W6!fYKyV1ay}Ljw2lGLk@pFO(@H7LRy+LVdT>Nc#Zs z#VAUS+gxzLwflk#u642Y)-11P0lt!bcwPGtZ7HS#Bf&Ap%6LnKft7Pp1{b__^FcGc zP$D&2Q@DnR1IL0^2%70wRRAUS6sEc_M77J3z}KIO=V){{hYiq3@vplm)lY;$*Taw% zV>4T6ASC-m76{2!k_AHI@UDu@L^VxgGgGk2acpKQjm=bSq+&A_$?5Fw=LgSKfI$}( z_TYd_w)|p0EEXaW!*`m@(Sl~ac}~zwQ@s`zXJ!arl%{&1l}I2Co^s1piuv@-YmC;vnV^}jUv>E6u?}B+ zTZM$dxhW-#pW3MKMQ36 zbHj-i?-M%sHZy3Z;7krmW9A_*8wKBFhWA-~&se0)xTTyR0mqC}lufE6E7gJUjNQ`j z$WNX3C~|DlqxkM6Lc95w!_*=N1133=Q@jz9Kn-k>z20=u3qQAp=mmSm@;%c(pC5L& zVuAq&(-pHo#7aJT;pdhWz3|R_e?6ISY?4eqFq7l?U#4NEE62_(a)LE6)?b{CvHnti z*i**J!IVrEWUQ;k&MXe?)yrgmCO?gS^>A!*^?Y!>O!kuop@}R*M+^t5BLe6rgAM0%CzJmFS9_U=`l3lVTqOnfpP5^ni?C! zO-yA1oLPv18dN?Q)Cw^KWzOJGQ_(Snue3XdRT!G@IV8CfDWlA>VZz5ax$?c$$(8gD zk+lGwl)>(3w!9GK03+n)OkEa}AQ`}v777?=XK$^utodHNQH>iMOdXeA3V=fs;Q)4?1kmmbVmr1FBpp^n?7N=zf zAkEyg0E+3S#ld4P8Avmo7NJ_zK$?OW!&gG!5I&gW1*G}z3Y#A14#=MTUdx`$2};gu zvt}Sok^5LQngK}DZghJBGL&B@5~@}Jq^Xs{o_mB?n#Ez70ZTJCOcREk8L>14nOr47 zYJ3QG&sjYZK;vY$iLu)#j8%e46`baqEmzVLp0e2vu*ag+lASx_M=lf791FL7=kl-*6Ap?MF3H7_Xl<3VkC6zBDlf$Jk*Qq0j>uH(|78Xo9bQIcsvqQyj!bnU zz0SzgpWD#LRM)RMGWA$TrhcG8J?7k$AuqqMQIV%)pw$%B@n@&EYdWvgQY7bNH+rSySV* ze&^3GAL9JM`&lMCm{WA@{CRxM&Y$2)EM(9^1IK%~hr(NM*&n*iqEqrV?2?c5Nf1_iaOf*w~`{AwI1*s}Z3=&37L zIuEE^33(cP^Gj%OuNu2aDG_RuKeB6J%WufnZPn~lanPOCHK${0;Wdg4Hi`{KH%E=6 zeRAk>Kt#gYWq&r7lwoI}XqE zhCeC9Lnp`HUQ^&urEEbK*@Iop}YNXs|bvseOpQQ=xS1g?yG z=XSIZtuQTI+0R}hPOC`QIG@$b;bmnttE#FTEgF-;w%1zg!w%KQ{?WouIG-(9ZQb9h;beKlN}pTL=R)5Vnh6~L9PSK+UQE89fn zzZ$NrHUz*%PXccFZ&hs5oSSl+{@=$7uIxA)1*U*2Ti8JG)@IPO5)clmOvn?>uz_Pj z#nP0LgI!;RniL(IM5$?>x}Eo$X+GMIn9y>ETsW;j6mW4omx~dmp0lHLBbkpAyKx+8 zN=YbbkQC$^HY5niu0n}6c@veHCiJHSM+pu^doUgbpcp7DMQbY6WtHA>PK>Ws6)svi zpJ?mi*5|o|%C0&WCER4$l)#yJU?~NdhOtg_h^Hr3S>EMF;l~Vzjft8eDpr(qbe*f; z)E>O&8erL-5x&iH>03wmS{$}_L*Fjyw^XQCiLn%Kf zMo2Os2a$J_f@jmdy?5^p-W|QD-Zua%-xX4$+pT+ca3MJ=X~T0HW?6IC0(zsa?&7D0 zXUkP!V<@^JDowH<+)&;yk~<;UXYb&8ld(bZP^Xmk$#rS!8zjs#Ww&5RHIR(Bo{~=w zw2^J=vE-HdPV+>Ym`Lr>>AScUJpK_i!guAQ8|pakK}8LjQ+$j9YWai1Er%c8-5Z|L zamHnve_N^xkaHZ6FHff^RCjN(bB2-|eUgP;#gLsd$rhs}i~(0M`;^VMcL2r%>wdh= z2dhrQOP@|zpSI}}3;BG~Q=bAC_|tQJ@=qJ?>bT8Su17n(JhKO8f_fD1TA!4@oYpYO z`UEMdNWpNI^%L)&$LraQPo0OHsW4(AvduD$x0yhSj_7OPHr2l7%c_PjJnCXszd74Y zqu93h1Teu{>20}$F6o|L%9b>))-1(K0-dl{)P`$;As*kXJ|@@r%k_PS+jrt?vR6 zCty?zJu`E=c3t9SX| z?zFLYXcYISt`-hS(%*X?tu-~2%v40iciN(rqS>P3zO`QOBVo|-^*mas*B+)YNZ5$P z9j=eHhtM2#A|F(??66@SruSO69Sto0b$THF76-ntvn!XphW!PmstksT46}S?9nS!~(qdz!Xkv7k_WLU0jEYazndXZg9qI zCpXvMY^TWaN2+jU#*mUal1!h`T3 zCp~P5^=hFWU>E=JhT6qlziPYqv9^oYC8BYA0AyiTlTLSSYeGl6+tC%bKPCLb8cNyKk2AHb(v1z|lkeGG6WCJD6Q0Wj!P zC@?(_Cg|i}#FP2TfBkl~x?HH>kyvSI1_jYuEY`|QYKvcm>U=glTcSPNTRR~|{ZP?m zCuKN=r(B7)oBVa$0z39vbSk2FUE1lL2}7^>jVEea8=o<*-#R+W}sGVt>=pE4BBR%+l~)4|hKS?l2^TMz$(3dwAf;n40eN@RU9a+PFVBy-xmy zWMk%(_Q?T`(3ETY6AJCWI;v%(e6(S@0s zhO{Nkr-Ni6Yw)m*nFMtX{jT9n%SvQPpN(yCPkMDKeE0`1zXHHtUni>u!b5~L6As!X zGho0$>nxUXx0z#TOKW?!WJIBUsnZYHmw6e9Mwvo|UP?5*Nn@rTwzHQq2yBA8LAK^5 zy%J5KCHfY|+TyrXrzK`~QJ!lJqk+l%;f&&~!5@|Yn{!N;=+%%&c#+oNZ!CqK=ye9% z1itjizVGS)^IsL&@G=wINY1y}+`G>lQRbqAtsTC5(A@sr14o|U zJuvR-X|Qp5Fij=ZW`YBc2i+jfE-oFyn;WJ{p*C60QtF2s^VMRRrI770MGN&DckmBo zRKdY9=kN;D+?xjXr^!Ih8L1tEce&fhV8R*6g3!B7w^#ge2?20yk^sIq69G(DDCkRT z*emQA%jW}ME}L-iH!6cyGUMI z+-H-)NotIH+9gkJrG!UYL~Y~*@kM2L4x6k-1SWHX>7fKIsA*ZDhH~@Ek0tR+qJyn| z^8j*CPi~rvGS323n;yYPi^t18PHr>t>TovjPh~{G!7))Rfen<|Q5-YygSt3N_|p<% z;n*ax{PRr2GN*p=F}y~o4Vv)v>KFFlSt z&A$X&tdt3kO%li_W-2>2-JbEux#?kg{lcEH{Hg!H`B6)!o`Yldu#`RHlgparKg;*m z&oaj*XZcez&GHiTi?y(X!}N<4v4_9Pk9kTX99%wosMar*#wz|i|3aRKI5tT{pPq?` z9*csuj~{6Yzh9;!IGw@{Ju*WiWQJgH&$BVgbCjA|LS?9idBAXf@s$s_=q`mlx+ZRo zn@?}Z)ophs7?;AeN?aFxwvYq?N&ryN5XeM34@)t+KV^b zqTsM`j#k_$hO>04!&zK5iJ2=2wPk6I)z35%c5mP(M>0k#F%Nw(tX89rIYVMDxMi_4 zm49gmeX~(pM6Ai^!)qc8$Z_YnEObbP^?$$qSUspA&8BJ;DfWFoPe zgw!o1;w2YSI)1(jL8U5+IlJ`yWc!Q@XY?VR+h;6HQ8At+L8f%NT=-S*vvAX`5Ffoo zVLEra;mrBCoHWSPqH=P5?Bzy@kVTD7Oeg#(sh5g|NyARFUMkpA0Y3+Zoo-1Z+fra+ z8g{AxVp+=7Hu1GCTvWfgBnvv-QqZYFX-k4m)j61@f=-DoCD50f=`yj38dn!|N@M=! zfXlZ0bLeSut>O~7P2UH@9gqsIr8iKCHQQH2Chd!4d0qPub?_*ezzJ$K6A_KN$kH9+ zLxY!Fs3TwHhu^VRQ8+2Vq%=!J>Uly#d1kIjiiVXE1};*42)wX?c-S0oYJ+s$It9yV+nkV}=& za%r*$N-q1bD7YFn7R@EA%n);n4p{~=uERwkWxkkOKgctQCF_p4btCQFtjm=^4v4w^ z@O&}1OTwZ!A_cwz zi()EeehMs#H7WKv`&nMG=kT%=`_!Q%Z9-CmgPQcejzGy@0T#u275-{0icM7htFb6t zk84A~u{Q*Kx?-E=+?3n&Umq_lisNh)m;#GpVFSTO+d(UbMS-IN6>v9dxAS-u4lcnJ zuC+uTse8aCNY|8w6)6cVMm2l+)+hGEl-$z^I%);3b`D&;NyTEj2S9GMar%%O^N)QF zre8f48>#M85C=Ljz3c1SD2qP^sr&C-{i{gHiH0QsEC62e6a^uT=lX2kX+?){(zga2 zOg*)PnK+d@?l^Ic2->!ZZ;Hf_%$=!ri~!zo$=7}03{q1%!6!C=vVKZY1?xZqf532> z{rWVP!1f-!F2IzxbEx93Fhd}3k}H#;L6NF`=x}bk;bc!i! zDWhy#t*g4XPRXw6u2illy)5=E51}4!-ve=AitytjV})}TV8iyuCgRo7VN(j5o*MB~ zdlgS8!%!YMITF*b=fBBMoA)(xY|_{GxocfcF+PyMCN1rhpEMu(lesDcHqtDDj%~_S)8933g@0*7%<@KN=dGW~PoZBo9GhG>|GY-t`tdN>5;~HMCgQ=e zh{JcCTVBfw7i)XivAiNUGska$-KSfyphED`na>k1XQVAI%5TC@l$UAv1|Ez^>@+6# zNPdXICLHB<1MdO%83zLj>${-7O1{4|5zbb>CRM2 zBxN1BPeO>kWoT)N2U^U7V^s8O0sROD=&| z@?<*Pf_6*4>!?PUkd)r{GDcbpE&M$Za-{ybun1j6SOg!>Hsmu2JIn+0>?TWkJ>$YW z5kO$KaRsNdx#C+N8!;cJengx=-rhBkP^WIT*YcHSeTKye6tDHfI{o?L5(ubE~{clMH<;?V5mhh`@mQx(~?neYJ% zhm7ft8`D$SnDR|y%7-7*Yy6m=(wJTYN6{&bsk_oe8IS_HQ$4tM34ciu42pQT@J)L$ z_)7|l(EVvVi^=MNtrqVSt_2k?l=@RkbTQ6x^1LybdVO9Ob)=$|d3Yv^U-5ZA8J_!h! zQ0D~?=Kuur@Ngi*rOvepcsM!N(uZg8a9g&uvM{D~u6?e;YR9>9t6lFqTR}G`9EHa1 z6H9F|L5WF_&;-P0Zq=|b*#_W<8chU?{3>yBiA+3_OO$D2;s=P1NriGeY-^R6z|vxs zI8nvlddQ8AdAY}C;*e!QdT|JW&8pK`>#|7{#G#IG_v}@X0+D$t1#pwu7^S*}?OyxFNIgRFJH&1?9wXUp>=pa;*j}f4aNQUo!+N_7 z-}*Gbhnc~^fs`4H8Q4xYO`YPHF5yaNKdG3%xNRaMiTQqgwGxQNmJrM4D3V5xE#UQ$*%ujK*#{vu4ksP`*iC=i@Xtb@o6&DX{TQo{b+;&9rc1(b}etkz`|!6@l_i@;V=< z1zp;fMqyLi(cp_fb&6yDN@p~yFz7j>nS;X>Q!|fWXbZ}QLdQhm1^758y4xsA6l8cc zRwhHb;Z-YGXd@@$f26Jj~a9_U>PgET!u z%UAPkiWu{Z`NuEh&@W^=%~0jlMCe|lcRC>>qDoD)&~sB0tsHAv`xlxNL^!!duQG)b+_0jOy;iM2b*liZjrT9#8bF|5Kl2g zc*N5db4C8@gW4v&e*ubY2FF_mKh$Bq%^zU-KNF{WJ297U^+ zF~y``W}(sHWyF~JL6&T&optQZ8VfV~Hs*{$X4g0luk3YrGt4lZGHnMkjYGSzO1Dox z(KZ85n3{N4WhFT;jKSB1#1aYA2rH7$r;!a86beglT^)mgoZ>lgT|cvc14sVU6wE{N z(%74mdi@a1_0RbLq@Ft!f^SkG_>g#Ti1osB=g4p1;>q0XI5no%3bmO_(Yl(l7I^W% zDGsJbIPn0@+{6QEN#@Mqikyn!oH-Q&Lfo9une(1moH=J18|@00D>A@%+T?p8Z zF5e`4**>&^j-CH^h+_wjW|`Pvj?S@T=czS1cHWJUFpFbHxCQx%)2=7}lFnJ}{ z<`5^3hBS|8Tk7gb$G3L)9O&@*m(@9ZG(~dwq_dzY+UNF3Pu9+#+WB)_oIn3uA@y>u zTQCGmQ)vjsdW82=X7NI8(No2rqK6DLT;^HbP~7rWqg>nAH$Oo{N5Lv=@6@z#=Q9WMvjf7ZCWsJ&Y)EeY=$;b6_*S{kmLK;|w82|N9=LwhA&m=37)Kq__(+9>!MQ0VjPJUx_lQEf zRv}?v{0oYCJNx7c$sk7VCQU$?>lP;HBkOIBJeQJ?M#o?zH_RE*xFp!jBU0ciU^8X7 zJ8(-(mH8=PGo55MU;O_Jiha(0mRIaKye!4O8a8wNO8yF9GuNx|SHos*qViu2n^_wI zV529Ye#U>T*rqu*L6|oJJcNlr;&2M^b``*8-fPQnzgCVu$xw`Adz5EN z+y;j|+Nd&wlv;8)Z03KK@C5+te}SP$@kaO2*)OACIEflI6Ws%Zj4@2IO-l`%nIc!>4Ix*U zbLIYN{mc-QxGAui|J}mEYS>J#%gq6sd3Oz)*?z_7@hew?2P`|khRrOj2Gs0}G39FX@MzVrnV9s;EHpa2j2Kft$osunSz3!XHAurX5KN{s z#X`=mSuJd)8|g`lN7NJ2GrqOEn1(4!g#g55G45O7Rd;0(J0QmN2RAgv)b*>5F+J8X zrax4n26L`l4c?c<^1~YyW9q${bI6990GsI;%mOi{HEbp#{`|0+Gdgo>*vxS7V~03) z@MxBa4d&<^J9gf%M#s*(YuHS@W(JB#X{jS|^3<@IW)|G%S(vp>+8bBr@Tp-l%crPz z{v31X&+99sUe1+Ey)|s6g<61&VStfKbp+M0nHaHqi#mmB*vuu>Ra?D-sD{m4XN|RE z?<{)LLe8QZHdE!-auGbeIbk#3GIvIS%PZ{=CUYQKBCu0tddEye^xaVyUI=}O+z13Oepp<&FNI*x6N&^52KV5l z9W_+YRyvgaoQ?xkAMHFeB2w&>ixdk+SE2_-(JS_Djv8`i5=Kv1QP;w)arE?t3ewOF z-imQEI8FPNE%k=&QP3L#pgmF-ff?f;C9v6Z674!3p+=7h2lwoRJRp5`!yU{&n^WA> z*Pqi?_DXd$3vbcLy~U6!rM-kOooDYv#02gHqoCg;@Z;GOC>u9J0oTeldZP;hC3~U% zyyy(CPow91xb!1m33K!n5A~jCT0Lq1e)z<9qh{EkyCT|bhozFIpl9VG;-C$JHd#v! zNc~2sLwUy1n2W+g!!%AQ={p8FP z8?X_um~Kv15->0oEaqE|1uUlPWetnDmuxRqhx4dmF)vq`RykL0THO~=@ROSli|K`u zbhnrx0(IUf1NJ$Bo>mBp=~z`z!(u8JJ<(`Ow83`ZYnN{!18=3Z%bUKO`qZ_`wFMC9 zMNRdV)hcg|i=H#HuGD%T35Zhbgt=vrorop5sKpsV7ESe9XUL*7)dMA$eIbinJ-4hf z11u&wVp;5g4lg5Q(GT)WV#&Hg7Trj%L;^V=Wbthq8nWp6RfjAd>yX8_S4bF~n^MAf zY@0}#a9D6BJ&7-eI6K7>%#COW&+0iz#769>>0}s zTlj_in7gGC3^I9SbHW7S?%;8|<%uKX1GmBX>gmGk%- zx$9qqVb`P=dJ#NFd>E6ytA5!?1G>6#YuHv?1^-%Ha|0*RxW0(}j0L#G0^9@Wh6447 zI9>)axrVKY9Z?m^71%)`NS66YffOXr`=Uw~Bi&7C0saKmAU%MdU(5 zIr}mH@7mtw2T=!my`PH0XhK4id>AzXg}WF><0c%2<3SadQ=Ml@!E1Qs9I$b9FNaj( z$5ir3qB4DaIh`=36#|3<@JkW08B-H(+^vV)n1AeZcHEt*tSC^-xJB<212h4T`MyK4 zC=o5nJQ*f&jI$`;e|Q$n=nb?R7COVY0ZzL60ray^ZlNhf>cNooabsr4Q!K&K{iCksQG ze?WZQizSFc;zLH{V1UdW?Z`vPwM0anPZZ%50}r7GcSqra^vHoljEAvjgSSf$DL*Fo zh*RdZyv7a>D#o;*j_K}RvRfRQ-NMkghx69EjH%t#kKN5vjp=SSrhMzu03Uu#2YyU< zHKqf`RHrni?n(wbzDC~C>-4;07xRPrLI;p}it=lx%q`nJlWdz?HZ8uks~|a;HM@#* zNdm_PKQ~LhMVw74sKZc=(vO^b4h2R12#IGYw!yYr&v9TN28o%8VQ zX1sfz-K00{8tHFoSKZ=?LEO_ijZg#Dx4c7uI$ltuhfN(bHs-MX<+(_&8eK0%~58`X+3*4;ldSk1> z6fpOAh?Rw|(!R(A`*I|q(-a_+ui64n*^Ai19R@UO`&YoYQHYw!panhW+Bg_)b9OuK zi$A*O!5UA&?dTE%U>)r9_Z54rn87_~vWIu$YqiHRj<&tp!V;%Jg}wk{=PsrY_9LOz zFz&o-6z_6aHEiEoVZYICD)mcje6m*>~Xgiu7_qZ5l-dr5`hkrRr5i58`4OK`Uya--W4++&|ZgsSeu zyurumVM~;Y*wzxInaI^;o#>P#5O-yk87Uq>cZ-X;m0Qf{@-sqYZf9fEt{5W%Rp=3d zBh}2?#m5(PjIrS8EI8^vJ+{}W9$Ys@6Be8;nP(;hN3-BaaMURYj(qlqTjI*}ve>u0 znZpZ?2+^M63lNzi6Hydk^Qza5Fb+517;`{TW~=Modqd=HjXX*+HRQ%FAYQ_61T%hT z@+3Wx1e?b%r}x42V1zz6n9(Okx5677pf*7H^cmExANGPeeE)`7caW zq?UO4`N4Df?t&h>v`^3@E5*7Lq+R01rbx(jiNlap)+LS>x|GIfO2}`fF`BMRg4fH! zDYXNw8z{3dHHEww+kkCi<&m0!Y*?`(8~q`12eRRtJW_n*i*P_Tmb{}%89F6C;;wX+ zG73G*^A2QB50nYm$qQ$QIyK9=TVvum=?*(%63q<7*yU(wh%St&G$CF6YN9H>M-Y~3}^YJjfy(;UQVsq8Rf%yQ&^bP z`2@p~V(gB=Ku+xj?!t4`xkR3l9z;Ml z9l~5YY#v^&l$OV8u>HhBRw_jJVP8zzR742~IFPuRXYp}}Yp3tr5Nr`%K;RpZ6WS)d zhK^x-?AnoGTc@;FxGQ@o7xc0yR~9t%zPWZf<3*2pl(}}cL{aJPsfFL`y>B+xjs_T6 zCG%Am96ae5M5o9BNV;^x7}StdG|>vQbp`IR-gdEPs-n@4yB`Ki<1 zCoYrDTJ7=)|38fUGQ>{n^3jmW<&zF!spBU-S-XE4Qay(y?w=2>&i$h)lA9u(g;FO_ zdUD5a4lvt&UQg#_qqW)<#Ewyui8a~Nc#4rxrmh4l$Ur?M^Q?; zwYzA)Mar3$%qizhP;#xA)zBHOJ+I6%6uA~3Ckn89* z`&~z3xp^f<0YxI%bk;-9ZD9lZ)X@{+Mw$~e^NG2$4dm_H8_o@yX%Ak03c_#X1CyZv zT*1MBgVtH?!{+0{l$(02T5^Qq{KAJ|_OI0anc2qSa*&p|94SN?G+c~<$jCx*8#vS? z+cfqDPb@1h;aBr7A?F7X*BqOSuKvxL@)D*4&HSyo>4DKRqnwMcZpl7`sZJ5r5xYoR zeh}we9@sOMKlT4RKWgdJb8rcB&Njyk+ceXA2nM%~-wns^9d~}bL(03y3c;l6yjL<7 zY6{aB`d`cU*UvJ?CTIEo%rwhO0L@$rOOQI=_RJakQ$`&A5Nipi)$(cN!}&2!X@rBz zXAjk&nM-38zn*^~PedG>B%3D66JX8zlyfo9Uuk%4CN z?1e!ytql*Fc|YoL`(-Nt%``Gw*x$b>Xr|UO4AZmBi6DSOKr^{_?vMbf;Dm;D@V+;C z7C0bpJP|XpVI)LfiWkeNYr89R=@VfRP(MK^Ah|k9yH1jtr z46K}+GPvM>Z9ZtG7fPf?YYLU9F=a&Ryb%YI`&J5?=~z_&CH54ix-Uev%aX{2sG`x` z95!x?$Sv!*DAiAdLHB|ago?45tuzpl{UQs5g!^TIkl4SgVlz=q)7Z=uta2Qi*-B$G z6&tD8Ohs~zV>1ab=%T_N9FWPDU+jm)LL?e(r^%!NnMVVf`NW){nWlOzEY8djz9>!g zK*?oa_##)&Evqo4(}pjiBbLP==6z%V+VDj;(kqcb4gk&ktql!d zbp5Ks7ms!L;{U0TFgQ1*gz?)O6~5@rWNQ>A%zQgfUQ0>%qGK?U8|DmOd~%9P7iV#w zxujBs9!xK{Gc|`L71etPKGt#1Qa1727oDrrf4~_jrM39%rM#6rh<48wfsSaBmO0@PhR3 zT0k@9K^UVv&H$QeH|7KLX8_IoLl+=_7-;4n<=s-w&(<1nF!jYQ2=TTG(9Gg+&H$R3 z8&0%%pU}ZKC3NsHJ!q!jOb$w8<{|fwf^U+6VJ6=*7AXr|kcCdbG0Is-Cbv`)KFLaT zAUtEY^zY@T&U+L&HtA9P$P%I5{L5i#QIsAgxm=3pOxT%!wua~hd&crT(|?{HcDG`J z0SD6+vp~d3K6>HLmKDA5`}zKQGU3=HnS5*}$Me5T!%SC>omu1rYhtXQn2xdjMSj>* z#>&BzOcrFUtH#bO4(-*;Wd9&PjehlTY;yH{a=lFUlLn!QEJH_>XKDWDBZklv#f*`V zW`NMN8%y&nEpBfD2`SR%SPr47T+4$pEqTcO7N|5mhUPmg(Xt>gt{p>DV`I39sZ4+~ zOVR-04<;NOh^AsU7DdPDF*N`9kmO3Fj55cD2_NI+%0H=2t|XoWuVOiLhGxqPQ4TOd zZqC$YF$sbpkIcES*?Wy8SZYxmC61;B-nP=N2z3S=O}kM}zr}Dguak?vIIJ1iqlVQ4 zQ#o@P&=gLh4Tb{p=ktY|qr9P6vnolwv#iR!VQD_)-f+=O%Hp8T0Hm24R6sGk$nW4W zmkgw-v7HA<^G{coNvUa3CgmQOivrOzeA8tDX%?qt1|ZGcv;d0fr^UfzE*VHOofbiB z)j*np2ft?_YM;D|`xfFvs3q~k>+JH;`5`g$}n ztsR8f$wS6cVVdM<-oYh9YJRF2wSlw=d|>@Hf%O(J>q`=85w?W}Rtf0n0v!-vb-AL| zlASx_M=lf79D`R8?_3@VoQY6o5AX=4^0UFY2V%_ODGN9ifMjJaNy1$UsHUcAS2I8y z%50#TcBf77w4j>1Xk$~z_b9M_*~}2e$Qv+lM-Qy|(S@=j9k8ZP*pNY0v+ZICG~3Gp z*3{I^1*~Z|%F>%AVv3T@7HyNZ3}8(jalZ%F^oy++yjcTl7O+1FLt#yg<4aTQPaxo| z;CYZk=xjM3SAPDqU^IUUXMripoVAxUippXJtf|?b3s}=`bdMG7EFV}?56A;+-aiAd zrkT|jj?-UT{`d^m5K%Q7QV9fQHz63-c#`Z)vE%-Jr)tR|d1M+vNH z+pv_0S%Ed({%v@ZGIu)xfp0SdYYHp3N?kXH&-BQeADGSIvvOojjnn#_KmYd-=MUb` zGTFhLqGRXJr`GKJdEd;=pH-u4YWA)+N6=c~HH!m$qMSm1xjLuNTH!T|Q&c;M>Pl;? ztF-pX3JI8V2RMi>&*LCkDZHlE%*k;Utp#DTIAkZ&arDlmIgVBhvZ>jqok+beY>*R4 z7*}#4dDF2F5zOt9{+=6ZQ*&KAl!CeK29uTA{%RqIl7rhUIFwcmwW zXYeCO-K29_uHwcGBU;m^T8-Q0TqgLyK6NCx`^?~bzDm9xYGKFWnch&SS}N&Br@rE$ z-V;+~J~#83&%B3v4uIyTm7K7!7iH#bXCfmFx^mBA3Ft+IYvmBQGVYz*(L%Jsv~XpA zc&#|?KDaUtFDt8ARaNC^(U=q_XD08m0 z8CTCOt4QmcvfAn&U0dqd(cxtTh4?|9Ni116T$vl`l}I25z?FSwLxVzGzv`fnV;vOo z*$N4Rb5lwfpWCRQ5Mv{26(;63?v%ilIR+!SVa}kCCBc;)kpf=ceUY25C4OiwTaHidKF(rQmaAoUN_^aW{Hc|PnhAXQL0kF}NfLs2Bifx*6Q*P6L zf4tzzj91#z7~h=-O#s-`fbaV7;^(+ zgQmCUryfu4=eWd}#jra2JCF1hc*eucff)o0I6u-`03@%*YzTRorf<}@XBTJ&{5zBA z!|*ZW00z0E=^bj3w=m75*Zae*pa-2ChIwI)Xck-v@nk>_B8^MIvuWSnyL$)kj{3wL zIA91Xq{j1G_mKC6$o(AB6Wj3I#&C;U9kzhpsH?m9seWy_elZkXU9PVC!L>X`k~=NW z5!aiH4T^_4rD`Nxm!`f!!aP%U3x-q!$%yMI`Sd^=*|r`_Ua9XiPqc}N4y|soZ5S9X zMgg__!QqynS5SfupafzUc)4xhr?~&orQcp>8VeF3;gN1KKZACsljoZt6YzE zczI?I%mno)-nBj{eL1aRlJ$vHNms?2^%L)&$LraQPo0OHsW8IRgLqp2LfcGWRwCLq z)xNx!RyBm-Q5U=V%|+cbifwyO0292G-j++~lJ4ngb&JbrT&-D(mjpUtt*8yx0z*8$ zS$#~d@t5oS4!7^b*JQm=ITSyVwvMDk1+jWb=r6-VuB@JDRll1WaqF9^HyCyH`AGVn zI=PoVbJJGbO}1X1bd|xqW$$MN7={7o9O84V0`pof+^Z*C%WR1Jc~a8lfISJaAAm|k ze_2rWCVl==5TYON+;b*-Y&X7Emowy|RFTUyMg`p-9CJ55CBkp*sVol@LjNN$8g^MH zoxv9?L)uV8{OtS z8xKPYIrx`P*Bv<*F8|w|RvQU4iu+Sn3x_1>@7+ghO${Y86%DE0;ajv)G+T7sx7O=@ zBn&#fo<}S7+QSqE2^*2P!}T$(Ml?r0qk+Z0P7lQ2;^1C^vk10} zt;*_obk8J_%|c6_epbgXii6yR01RN09b|t8@L}aK0Z_ z4J6kO>UnIbADY~(u1MOCe%23Lvg${}`e8o&Vn6ztW#`TBjJ93@QyDx2{frYp;foyJ zmlt~X49SvTTDM*NOEcNUxmxp&1OV-kInN|%c_G83QpAvDodatS3qTTJd$;{%O1t=< zl-tF1xF|P}>95kH2gwc2m~Ev=J7=>E^VH|8}*yT&UoYq!0>--eR#Q=HDpcpQ;n@=H z*(uJcXo1v|cF8F`9Z-;B!0LHojSZ9u{whg$nUWoOEca6u)&6#56tYf-DnY9dXpz z)&gs3aE}a7;pmYe6*%3ITjTKQjYo#P(Usr3{#gPrsUo>BcB}XmtAn zE(ZVhJq6l#UiAV2X=5R1-+AFXUUge^J52`vu5p%^;O1M<#?OVf==J#Z%_GtQ5URd8 z6u;!a!}sZC#qSfF&zsmga{Q^7D+gb4@5%GIK-mSHiLt~nR7?WBI2&FJ5^DO!I&)JT zJdf5|qb(|6a|Is;@@;K$VDR^@Ij7y~;dh%ML+1xy*wJ7#Mz=_yVJz7{&tkF|Ps)Jr zOv-6kKjw2R2!rprJ_&T)Eix4$Lb}%+Jvt;+p!fUzG=JjJ1aSjX40oLiFD8gAZw#_| zbacRIXzo%2Iw2v-w8Hc-r&+H`4!Dn~4ig|o8Ktkd3seqx2?%<$FuT9>?ee2$b zMVbrV7!1jP(6@_;rk@w~({BUPaMK@+9!cL`l?dIt0Z3uo00CTPOp`1Yy ziaChxt|yn~k!Q%T$$1_(aNl^`_3j&wJ3VSJv<-Fdblh-{q?H?!mbHR6A*Pai*2<0Q zsq+izhBxo^DIt*#+H)R4d8 znUGVgw_=iQ*;{|~PG%}+0PKzID06x`X>cvnqP{lLqy6#Gfj`RB4eTgZD7E0O6?kky zu23lBlm=Rd&1$BZ2*ip%%f#CvF%p6qyCv!Qq^%Uz39kYNedNx-m?bw%E>1?Ngg1L0 zkXxJ=gB)*m51!=Bh1EI1oA)hGc=OViC)CLMRxD4)nz^R9JfWbfc)H;SqTXv9GWAMG# z%cCcAXr?4$Mb*AxPFr`1p5*SMG2JKL2FV(O5H&c%q+*`nQ>JgK5p_*(#6xT|v91|! z89kb4S9x+#N#fDjB?&fic3m&@3>%D1El()Laq05J_f^RgUs!bJ|NHDSzqkxpi;&eK z+8rwG3IykO&nLU)CiC2|jw%ODlk}ys z$a=&dub?)hjy4DPNG;YW{lP?`sG$PPM;?_!I#M+H2xtrbZVW_EZ+smw+hyP6XvtJ*&U%%qU`;*Q~`E0)gyJY7j4?IBd?JMK<4`nyq zk3QD^8M<}n#q@s{dP6LW+}?^CkA2OKVq?_f!Iv{z%YVvjEnl}XTT7FU1u@1Wj6Y_t zuo0TY){?bwi?y&CTZ_%y*x15AN@osHa-o;Zjv0qov~LTaE7kgJ_yT7KL$$q22X2n; zlBpYIT_)}yH?D$>R5tLI?5t7DhqPv0ae8m?=If1$e4Ed7ZQd^15#|P&i>%FCZ;N8P z1DozoT(3ENG?3=}52F6i)h0Rq)ZfVnS=68Xg8EsLk3q*R$h}h}_s%4_C+!#NW)_QX zBQ)bhHPMGv2F9fm{aX$t`nS$Z^p|r)e{xwqzL<0g7|}1p@&BpR2=(Jy46a9LL{_Ten{bMr|{ZHqJ{>!zTbFiHA zG8H1MMV%>psY@4i-f<}1zjJ1~|Cy_T?w7#qjqYoHe-w28hC}K8jWg5zn{ssj`c^2b z&at=YSdc_*cENnIRt@yahmz+%&P<+9o>=mHVJ$7MmpuRJQ1blenaT72omld$Ef{O& zo=+W0p8qm4dH(B(CC{&~x#xPh=aoar^WxKH^{IT@)5boPlO=oBrm!`0&u@R410Xoq z<@c(Y$@9{QCC}P9w`TJEheNsN7iZqwzm(hDf1($5CNy{FLmzw6yGmkF4gwj=!sjBf zASysMSG$`p zIpkgFPp}7&7;)#65a}m^%W=UfEgyKJ{daQ6Mje z8S}voq>H#H2cE|Bd|nRkQI@SzsShEdi^)`E`}p_4Z%&(3bLyd3*xc{%pY@^Y*pQU%q} zS$C}&Ed*9Y!kk5NTI>qVxvUxnWt>&RSd&yH08FG=f7pO^H>c(9^E zh^whcD@FCV$LGk-_21}?+cYxt`dRMg+aWCmWW0tmg1dch@J}ltxH4kXZ|R?{W!Y7~^DqewI$ zD)^vMKy-(AlX0uY-jGluAtmi&RgufNYzjHcI8`*bHEuq=(RCS@bim~nr6@5zx5&W6 z0-tH5DEv@$qpWUG*<4dPy19Z zrDgq!1Mr=#jBB{XP{sa}!`tKpJDiq#Q@Lc??f4J?B$x8b(#f=ekn3rkQB!n}8ecB+ zR}BXY71y}`?+bJc+<+O_Swq`Rz<{+hWh`G0B*umoJTPi}b?>L@EuEz0L$-8w3{4x? zIe@qg-Pm7SZ|qtv^~PRr><3Gc$9QA^iCH#w<5|jScIXfXY_6-{-idYAzUce0j!k|m z+;&RphZ}C67q)_sNKF&fwhN>$yFVZm2tx?MQb?1IP)X=&6J#>=*g?NKwm)oyN+CwM z+gC%>V^U~ar6D%khTCihF6o^%+k+QKB5x1A21(yEwb;rtNOA{SSW<;x+YmP+0?CKF zJn9Z)Gb9yVE?m%m{{R@OT!XA8VIjo;8`3D+%CJjAfQLRb0+FPNWCDdZ_|H@ev`)Ge z+S0eu(JO?B@-3IaT}ivQBUMtshwhrDzvj+BK*_3&DrglhZa*Y^ zfNy=(w_K*h-rino)aVU6>c2YHP3*-OF^w!y+Y->)CNGkdpdqpIpcQ~HD;38#?iCkg zoRLH{Uiy5(D?FG;QR>}$W^{%Bp(}BVeWm!RE0Ri&{Jm_|5FC0>4*|Sb)3Bt@j`3Nyq$x+YH1R%`J6*N67j z*SohqoxXMJ=4hbnxyG^wZr3-kNEq|mB7h=v`1ac(>7;zKQ~>*SR`~?>EtUpv-%d-V z*9gkmV1^tUL3DGCVB3#iL!%Jiw}bJ40YuIe7ISmdk`Bo%xB>hM#; zWl<$d2@6uc+3OAd;j0>^2-z2t)3v|@N%*$F5wo@64E?*Xz>(nlLaX<-n#iqZ!yK{& z?hlwWUAe#wV_C?1A8sg<&T z1r{37GWG}VF^+d89$ZSG6qbhT;|TG3!4^+lN=|7Jq%A(aaErT_5?1l)ti_ArqJ7-C zlLDgzR6(aIti-Fks7v=pYRhkJ z`K?{Lfc{m)56A#kyL43#&ny}TxO6Rz?r43wW-gS8W(t??_tq}myi51lz037(e)w*_ z4u|fdd;06^J-y!3>plI%?&)jy<}PJtUxqt(ru}`nMr52}X@QB^y}9(ecII9U&fFiZ zt;fgIdYoI|v)hf!*Y`Soxz3Y&r;4E9;@;p(?gIS(08j1$Ef#j>u_t$d77IIb!IQf{qlL}6 z;K^N}(Zc>*@Z>JgXkm*kcyjZNE_0WDycM-F#OPsV-A3Yb6;T2!okgAgG7$F0 zW26FifT7+h!ccGRgJY3X!_|V$zq1#MB7zLRNf|LCuO!=E@JI)hW8J z_@oBj>JM7ENfM!5fiwGc(E`TtgIr`xHAR|)ef1}qE1ei3LiqZV7s(RL6`(vzCMPpZ zgo+iQB#o4~S*vhB?KF4 z^2#~d&6nm=vn|5*v&xw<00d$*c!wEHZocWjdo@|_VJY+WO)2w)&2nw7a;9iHS2mN}_HL{sktkkSDTkK$ zyArtxWVTRy#+W4cV^B8JCGA5hg`|CwOL!wY3ccGKG48XK&14#KWiweGMnCL?(H+oI z%HbojXo%z&TG3c|s&+vzF(4A26O(CbG&-s12=pY+ES`lJFW;r_q2xbXR&1%yu%XU?V>0$O!i zcjChd<5P>E;a)9*vhYLI<#}(F2DN?K8}{Zh1}t(TDB zx~)o9!4x``P?$`UQYEW>suZb<`&Fr~m8Q02)~i#M`lTv5{uQT686DTE6ua9&at{QQ zs#PZUNHa>dUW!1|eTk7V6s+P@hv`+QUo9w@1YHXAC_U>i;iuN7kc>=(sI@6+q|*QR zApaMzGsM8NNv4n8V)~dVV?)aPA!>43HXQqAU}yHtz|O28mrtBtVVEc(x)3%bX?LON zLNrnW>;~D^+Ei*>pH-#VUVBgdeRpk5b+BeleNX0wjt!xJ>R9GmBD%DKBDQ8M{Rk5eFBiE`_tx7pv z=qA&lYE>$=mz@B|R8f_(jc|I$6gT^gaC$d)twAkIgZhm*HK^ZMmIn2q#bwUlTtMbL z2^v%_c>=oW(90DTx0}1$_~Z`Lss6l*d~2^%IG;|n20L=CO4X`Vtx8=Ls+4Vn(|e`n z@p0E)sbzVkJ~pQY^|57XP)qPieS86#^CW0cwdA=5uhb{1B+n(FO?-L*B0g@4Q!y-c zE~l!YP1F&6w^&7t>2#;RuA<-?ZDPOfRPK#hMns>-N|`=6yjGuT^{G~$PN@2{grGjZ z9oBJu6em();5DL6{LP#i)ZZ*igIWUG#NRF;d>&5?sun@RBLF=6OqB@wul;B%1w4B+ zC_wfZgvlN95Ofn0cAH7_e9|^7EGuQ+8g(8TJ$2>EsRsaXqr~x^;Ah$tGQ&=y+rW~e zByx|sN5H=+BL0ye4pm(kSUKv0+okUMGf6~la0ti@MGPYfXD47lUF2#IGr&0m-ili( z?+qZ;4?N=r4s+xZd6jKp#{g|}o?_g?h(?2cWZ9Nos;Cns)}(MbAJkgbIsS{HI}jyR z)xz$f&^X{qS6==+JzbT8vnp&JuCB!qRlC;1wrNkVMfv8vJy&NOgqJNLyf_fW=UDA? znnrAjJAziC_ng+B({YFQ7t zGFQA4x8DCUtMIO)^qks|0o5l1W#*(~Bs3pJ8azgwzodS(nPE_iA{BVIH`eS-06_{N zh4~Rw3V4w3yWS6r0jE5Ymh@pQ+~iugQ7xPu zw{VNKpibO4ghK5m%b&MzmOpRbEPvh_y45vw)?I7)^I9XII_RnHt@KWYFvg&aamN@P z((FXhI(m!89pmVYz}`WUc9@RyO14_k#gIf=zqSnYnDc|@XYrm`Lh2FVAD35NH-A7+q!-%`N%9d=0JKcIzlN}X)zu3HwzO}XXBaYBA zQ{5f~ckwWm5occej2ob|80bjx5q(}V4q==^)YVdncHzdk$8$g3FuHU7XW;ENjSRhh z79R}e?YuJMH0Dhi!QH+$_@|W+Tp6)xa*bru$u)YIj@XQVkCfnU9~0cO#sqgU5XFgD z7+@yLA>f6hM*{%6PW1+jM(@q7sGaUVt~h;o2UNn#3%ZPX>$>XmP4Id6)fjf8J7Un< zjT1Na3^9|!@%u^@7+j_yLH31%LaBAwPLcga6YO_fU0!IJ&8IiI!p7rf--58bDjVqy zBf8!e@9pJyZzIlrf$u_#kFhIl!FGE^w%gmscDDtT3819|$_z=V-G0#yY`ZaQeY^t) zk+-u!6jqrHBV+8b%0lf!9(9zXeGR`2BYZi(i-l#w=x~w!3|?YBfVjG_%PDq ztiu?lc%wFq@Ew*Lub&5%n@npCdg9^zM0U#*CpY-tlenz z5k|5Jb!z8glLP1E>v#{Npl>jisewvDi7bNC`)Dj7fGdTW%b+;GTxM6Df}3#-4Z#P` zhW|;8S#L2q=P>?4XcRF zHUjPpg1y<;1_eDY`-PrIi;oR=<6ZQ;K~c{e?9=m3NzcRRlqx8@@hL$jO<(O(1H^y@ z%?k`SR$Sr0Gm=&l#auIHP!Ug{QH(~zE-%m+wI3Rxku=dr;FS&jYifMZ0`%X#XNEf* z!WcDd(6&-QJEJz{y5SrDZ!wTC1xhz@(7TgrN=1QP4Y(&QWW_M;%Y zFrr83LY(In9!vyP*}M15=nDUfc&qS1`x@MRCJC@i+(3`~y-*r_6Z2CqY0_s|wzk~! zyQARw^oB;`t}{Zl`C-N{)mCV8wRMkgSe3X;CJ$%ops$P`)+U_y^&*;jRXUJ19627vQMjR0 zY4~AKSu2JSv!#M+H?p zs-dM0<9EEEHTrNv!2ItF$2D~@@kMM6FkA8QJagCYlCd-XjzuOLJNSFWYisN<^NC3@ z@Z#^0H$#kDU5!QjBKzeXDQ1QU9!mt#+$nPU&OT1xc8(NT z&)agO06LB%#n~VtID)p#-e-a^xUl_7sH+k0z(HHDPMUXeB5qxl6($(eOV=KiwbH1!W>Y?Qh@k{T7Wp-0t8$%RoSCjjF5Y) zOpJK%L1IJ+qpyXD>4k|893)KGiBe(0&XfuhcBWLAursB?gqlbE<~o?^;$ZN6NyK;nVKBJBk6kd69HAzIXD)P;!LwgdVy5t<6X*nj8m{!# z`;-1l`0TwD!MXp^Z~Vr!1Tp=O+Fet-Yw92-YB5$s%wcDYq;el!)ZE-bOmCCBCU~Xo zJ6Jd{eoKr)1D-O7shLLK$hzcWFd}EauozMqEM#$_Hfv@4kuw}&{O~uYF&Gy0k%mE; z@uMOViWm$R!n9qmdSt)MY=i;q{Ruo&_0_~pRb;IRAKot7Kei|BAK0Xu@L_EH#*ddB z$0R+!JdVk`3C3|ujAU3e!A-_7Su{(Snvv3ImT?O%nx&!<;+Xc2B-WR7Tp3B(V#4`H zQU;q)#l9dl=%XT($;Y=edLM~GLYX8WIYNyCt+_goDJv?FEuw~|e*QqFEQqO{&bLV} z*)K1-w2LdIJ-K51N+EFi{YmGgnAF-Y!Q$4@f}4n3`sZ5oojQ)+{N%?XZs}wQ!2h!r zfNKG`7JyHz0Q}xL1z_XDnenq0gB!SMmKCy83&V)TL}m;b)MC_9CJet(u1Bx8T@6u7 z&Xjg4Cy+Mc?3bw{r&N1*@Y48HeCj1cBn?u|;|A_NOV>RAg)_Fsn(PO_e(x z-xP*XW-bX=9l3-tDHpj!{x=zjK`!=5#;3y~mt@W{k4Y=X=7}Lne|ft@tH{t>lMFr9 z2yq+nNeL#0R@^eJL&b8oBM?5bt;`!HV!Qprd4x1gYv_ay-<#O?%gxN1I zV(DZG5x;tn5Md`ug$O%SDn!_sQX#_5lnN1crc{WqGo?a=ohcC_YS5*V2D+5FX)>54 z^Y&%GELQ-GnwdeDglm%nUAliQ@k+l{yK8E9P3^8ZvF@7J&zWA1!H6i6jRRfU54jW& zeU*<9B|K&pw4e}{8@*rQIY0%y_^Lo$+CPSkePcKi;*z3m!|@p64LB@Dsp%|Ajoznf zxTST$EoD(kRZvSnGR+LNBp9b0)YAQ<;F~4`mTIV_S)|}&7_yW}zsFe?{_R>8u4Um` z7Cy1Eu*L3&uMB)hbaUF+{bJ}+D~&rR3_Bmee?%~(`=z;!m54VSXKDXP9-UnL+7%%s z6mU2;&g+-~mM9JYoh18hkpMG+ECmL#B)txVr5D!-OQ>X51H#h(sr`+|+uyj^fl3)e zDrHbJAuNeO1!goUV^HNGN^d_17oot`m*-zx2E0-hq?CavnTnYG^6rw^p_K&Nl!I2f ze`aW<|9z03(N2{58SPA|pV7{g`Wfv^sh`o#l=>O%OsSvI&Xo8WExy^yw#$rfF7aR2 zVndCqq&(6S1kCt5wb*dH#fIY$rgX%@!_OWhJe08bT7;Mmo$J#x)J~Zb>y)wj7bgc$39GeLh0CCSWGUJQ1hfF8 zk^+^Y$G&D2kxCnvMn2tOE{v-5HF6Ie7P6FOl7F;@RT5@v5m9S@;f*ENhs(f}OoqvR zc^PIVXr-43TIr>NR#J*%4Xvai8grFMK0a|u3awu@w&?mr;XkQG;aU`~Md1@G3je}M zgjSkPhTANGxEQEZi^bERjaqG&s|a8Tx;BX-Ln|>wFZ*Q?OG|)QGTkH(UQ*X~Iibbj z{5T zB{N3Imoh8V(nk(*J=%#<*Q1>&bv@ddQrDxMDRn*CnNruIohfxa+L;p9_n+JVP{Ik2|H6NPS}}J zal+1&iW7FGRGhFgCE~=l?L?G@bBTU+aX3oB9sA;NnFFUP(VR%6nL(F?=9C9r5_my# z4Pi}xQTuXgUrz1IIkCQ+6NbBl=x1R~S@5XYkg{J`yQw@k3+__G<1U55U3$?fqM2F; zR*17q{V>kecRRE~TvKq}p~{4{2Dipd57#|zp=og4h=&i2p1N|S^S~b9SzOOIU+$R- zafgp#K#4c%=50+;<}}%UA#r66cS%+D7{e)om@?d@zpQbW)`h!7fOI$&_7Vw=Gh;6) z2{MnpG#SqHowX!9nm(%k7zQ+*6nXelwLDzQ!?iqoV&&lziM@2VM7J?gaWSN+mW}t9 zipyla^F`?v?^pXL!&4j%q1|{sJat2i%xAd-q;1gC9xwH)IB_fx? zsqmLP>~ru~(t^i#iafrvkH@!PxD%LJBago{hJB74x_5YZy|_;v|vMb+j`jUdO8wf~l4sE>m}yifJT82JwzTL&e>=GitwLFK&(^ zt0s3RCR)2-^zR?|=~r`c`=OtH<30OSufx7T^ds8;faOMdMz!uK1hW__)OM0FugvphT%Mar$QA~ePM=`A{ zifO6{rX^I5ds!X9gbnB_fMhyx67lD2iMW=CYl-;8O2h_KT33%VLGOs<;tdaCDoK%G zFV81QkP|RVfd69B@ekKE|pKf3!2D{zp4g>VLE|rT#}dQ|f=TGo}7VJ5%C+G%Uxum|V%)tmTKOQ3o?M z2>5En)c@`h%&l)XhmG4JjuH46^D+4QT7Ed*^225aGi{0#@t%XEh>eeD+Gttg3kS&( zcA`|4ursBygqfC9VFZkUOviB3fxa0x?ZQYyP!|T@@ib+{hoiHw)=__N@VOl!H(UfO;cR#*P=Ks% z1)`IWCTKo(@;yW*V$E&pCgrnf!HRyqEeRe=dBc29sYG%{T#a z_eEY_W2w=)PxlLzA_<<&``e)E#E{_R!I%8N(g&^>;)vzc*RDzlC4^Ytj1W#!o+P5x(|dzgKP|CAzD3U==K5TCi&}ehxOY>d_v+m+a)fpPiH{Jq?*m&Eo z&!^P&`M}173v8G?bu~m?ZuoU3B`>~nqlgQV;D-i|)*GU(2s(I@5kJRKo%>N{I!9j( z(N{zB?wW1I4G4@@+)K3-UC+HSz2WAY4!oE7&Th?5v7=1U1C&Xta0)}cw{OjJiZ9eL z6Zq^~{~Y|HIpQKd?rhwaUNI08vn#GY7hdnaojwO!v1|FzwOnD8H+XUfHem02R-z=| zZjR#H$Q2BXnW%9{ZjgkGCmcd8hJ#0*(R1hRS$3s8%f9JZmYdU1-%iI3_dHs;F=<&V zErtmhHEZR@bK#Ayy;x_gm7C6K4AlZ3YJn@np0XBhu@=upESLAVXOPF)Mt6xX}NA{YbR(%bM5Hz(?k@vPCsMEl_1Eh=z5 zvVg#4lEGPzc~y&DHl4>_?E0=Mv1?)Z{?P@UlpO%@;!S( z9#Am9%_Fx%VTbMVwS3PuUCZ~#DYblmM`QxrahLD?-g4N=ujTt?$@j0BQ@(%A#>n^I zzktAXoaFmj?3&W7`r0b7Yhn5RM;0Kr<00RJhEvP;2o;Cg?|-z4&}#XiV_&)b{`GUp_pjd=`ToZi5V($$d|!)QQ_A;ms1myt zmha!X0J$9x`TlEb`5sU06!QJ$DnhH}`wIE~YijwvmhZ>WHFbQ>)gs^fy``4#*CpTo zY5KmhWr(eQm$L`toc2-crl=>yqz3IH!F7 z!Htpce|Z6c>p02xwb(VKeE)cr*!4sGVC#a=bAkeTj?&LV^2LFqNKCkECe8Cn+mJLy zSAg_rjXDpFp1N}7)B`}YTzvR}J>|r=M;8YMUt(x6UyWQ0R0Kl2fF2$pLluCA2;i6o zupGM7U4JHt$V><6gvOI-@QHtufQNCBt4WF{Hyt<$Zf%ZW0D~WR#tj_i$R!f!+e&C} z#m)1h@WEk3qd^~}AM)3`Ly#^&WEgJgqcPmpIsS_*B`ZkpA>$obnJX`Uo}NCs80^ub z!Sj_$?*VC=9JvEz0zGV-_B0x<4p>Wr11`gs7189V;r;N44jmN)h%kQ)qyz8{Vg7*0 z(j0Ydz&Z~Ik%sHWxt8|K(Gv|7^t8JT^XD!BGjO+Wg7n_!R<_b(q`QJ+X+HL%VTU%= zA6`aSJpdI5W5+NA^a?@%2;vUNMLK^;I4Nx=0HlLRKmdLa438uanIx1PLL>#319H-T zc^aSUwSngVH4->{ffopBq!EWVM|TNo#4rU6&V=zB*km)80?&vHQp3(0)QEjEs1f_- zp+-Pna!@0IgBqcg8@1heE8&VBTyIgGfQt87JepcA)T)MRILk^eRCqi=03&4?q=(J)}`26yo=sGKve zeZ~#8Y}_&za?&LzOXG1dh(%q^XLGG)$~~U@>4wpr>%YV3I!7mLeLu_Hd^@jPU>*E+ z1b6%1;Gb4PaAm}%$u*KqC)em4(1=73C_XCvj{a6U(wnWxFarBH6`{JwGUct#XwW zYjUI*0f87uAPEVWBt$?Y90I|Ha4|8Lki$7A=WsI+APIz9j1%XofI;8$ysLN5-ZQ=L zm)U#IvP-kOd#zr*F7JBRv)22rXQ2i1RE+LrUvTa!3z~#gYVW>hJBm`Yj)o);8l2c%X z25ucqZXGQXe`pyktUM-LCNoS5*$WK0PE4LDo#qB^=2Q?&Ae?EC#mz@i{j`N*kR2K1IzTauyl73} z7$ZNxlSzy3Y(Vxy7LXCfSwLn189_8cHGYH9VCYJ<4+S@h}l1s`Oh9l@T@88X2 z^ZqeRZV5WEW+Av0z;iw*6Lsb()&lrYEI?Ss1D`RdC{bPnCJc=-Yh_fVhM9R-L<&xv zKNAD8dVs9Z3J(6sG#W4wRjBUVA6D>4F$if3FLIp68j6bDhiYiWM=#Yv)Vj%6#o%dh zCrcbJiLIYEKAn1q@h zmTYG9Fr>F!Z_2*clzpLI_S_-YCkM3?;Ochr1>*{2)u{Pp7i_P5d}P_>Dh#d;FS~)c zsxG^rrRB3=+4arU!m?YGdgOZEUdoizGss}qqGFtXIFd$kxY!XKt$6xe%Mlq} z0X@BFR$f4;EMJC@ENm1LSCAh+P@Lx*s@uHumv|jr8EZ67Fi+V;Pr_1d*(;U&FMo?8 zQ-8U@+zwzIn#7R_AT;2KSWr$RTp z0N@^}W=$fr&B-X0YLet-nQMtA*+{`?k~WEyLUdxPTD3)!I4m@jsOhmeXjSr>enKfX znE-=DUgnN08kA(cXw;9bN+Zf6_$Ic zx5(w{qa=Y>dO>M*ZvHXRS{10E+~W~=q0yeXODGT)*?;i*{THH&>0QDv&3QcfmI=r_ z0zh8LJOV&MGLHa|kjx_hBqZ|)013%F0zg7CjsSRZ1fwHpr0bZ;j*)hZgnH*9xLH>h z{q8}(15`(IW{ggBGF0J)PByWjlgrS=b7ly~6^s^$MxAWdTm`{kn4nG-{`ZUnf8J`x z$lk{KNgE@9QtJAoKAcSLNcqXEk+MNy)(bd8{HAt9M23<=3JVMs`(2}43MO&AiAVZzwCCjZTnZQbH#)Gh8^c8r|vF>*Rg z{+snl_DDJPCjZ{Y%XhXKFC`#zyp)j4@lrxE$4d#x94{p#bG($0%<)n}GR8}5@}EJI z|M9Vy{GYTd%yxy@t}xH+3iAx^@(1(h&N2Dp=uS8tTa*8U?()Cin*4W+$$vb6?0puH zSwLn1*~|j6nKk(j6P8Vh$-gIXwi8YMtRQRh-vK87_gZttbel6K-Q>SnlVlq*rg)eC z@t#foKhw&DApw~t3<=3JVMs`(2}43MO&AiAX~K|@OcRELWSB5^uE~G1WLuN}jGFv^ z){c?WJw{H4$$zsx$sQ@E-sIo=c=`TT-j+YXWIbKRg=6ER~nd7B|WR8~-k~v;V zNXB?+P5v`z^1o*+CjSrG6=u7_Y*(0Pc7=HcP5#GrlF9#=HTh36vHvk^^4~Eg|M38_ zU$lVC0x}E8W)_gmtjT|vuxv_9{yl-SooMoB1zD5-4lwy&vF42FHfKz_$$zsZ$u?w6 zvC03Qo=yIjTbVE%yp)j4 z@lrxE#!GARpFxxV{bMot|EgVKwkynbg?VOIm}k)Be|#sI{Eu6c|0J9Ik6V-fjxqU< z2ax@m1!NYGSwJ?kfNW+>{=xC#=bTl1=_6tjT}J znEb~B$bQ!XG7HEoAe&i0HnS%GVZyR0G5Pld&UT{7pA}?H{yV_r|C}{vOt(2>(oO!G zHA%K1V~S1w_x5b^|5z&%h6H4qFeD_?gdriBCJYJ5G+{_crU^qrGEEo~l3~KwxhDV3 zl5I`?GivhxeLF@@_ZT@HCjZU)BzvTsdXsb2eqjs#Y*<1hJ3 zp%dt;_Ck+8PF0s9-kL}{4r&2ng-!`cc;DtaQT{cK{P*cse-~$P^}FXD;2o1F^Up%y z)FLM?o{3++cCB!_hLmyQGOl9%5N{&q>8NlDFXT@Kg`jZq^yyIR$AbJj>*>Av0pv0N zp|UEiuGjxNR|<21#&>dobNN_BmjX9_-l_RttDp>uM;yOlNf&u_$h~hFUsM6hvxF?E zs`ev|Bvqi7^xi=G7jG(=aDPer=4vlP6yI4`(hIQ@YUJ6$W#Ftj%Zydk2O>{W@s@ND zcpIr4Skec~y8%Nam4i$Aph*EgOaU>fy1J3VqNKnN9tcqyd8xXjtLAEPNiUkK!%OnQD_{sMhSBfam$ z6{_!UR)rg&$hY&sA@}xWSL!n^*8D%azRVhzH=^9KyMSx_h$NvQ7Ha;VUyrXOF_w`t zN%IKHBWWJygG27&Wta8iLbUwnuV))Rp=t-6(q)RReoT!p@!kSFuV|>^)E+R>O`@!+xrx%>H%HGW$0TGCLX#Yh*UnsDK3uqfB})z@U3r(2IuE ziH0R0$lq%80{cl%bD?0U%LIXU$dv_!&dUHdYlrmz7GaJLVgBg8 zPILGl+t=$H{%!j<=J4AuQDm2}5;Z=FdV5ES`thD6>L(^jqU)~3YX%x<|2x^)ri!`I+inc+_<}jc0KPPihE%xBJT=TzB zp&{ZC{yBRGEuwfUbooO|GJc#e58GfK_ly(NV50SCTxJYoTvkoSWtYa~xkf7;R*}~zU8MK$s@u&#n zt9vFsayrnoY9Fa#jvE!u-whidt$fARb8kMs>>deptiIi;qUKQI#aOMufLk(mkHiXZ zF6l>5D48CgJ<6A95r?T3^(Qrp*Io_~)BmceU3?1>LKsz9g*1M{Xs;haE~L70cD z^aV)dV1ZX62Y%quwj293{~xZ86eBM3D`I43Ipg(^cHEEba=ld2B5^-}CV5i9k-!K} zDtDBU)Dj(6YlyavXn0)oU#LW$|6&Ez1-tZB6*>HUS)tb46+Fa8Ax9{NxhfttW?V1K zGv1R5(uRsb7RymC6}ViJz~#3HT$8xL1V(YgpW%v|vmtJZvI9j+aYL@Fb#a5;I1x9u z7O$*D4#ll_e$}~0%8QpSuv@y6HZiJK_05nPI0Ml7F7=g&+f^lXRj)dvOM!DJaHdHZ z5+)L7UZlW5PH=--%ppC866aFlG$r^+$?N;k{tYtcQ05#;gGm++8W6f9H`OSYWT%SU zAmPQ9??MLBR~wt%$g2w(fxIG5&?Lx8(Okh5qin9Ax9Gn>Jwv|-kIozAz@x_mWf#xk z>_NW;T@Q4I_>4dbpbUmcR)^d?60G)sgv@JZ31@pKnQ; z!lI-w8s8G+QhGhSWh9qq(}l>vQ%DP|)u}%%Z#?yrr)&gy3b%4Ll8K9_9^?|eSRO;+ z(q~0Hd>|8wisMBzymS%~A&faj5j6G`EI5NV#p%SP&wv0h$p*q9yhkgX5toy-ijVJNcmgE7tzUhH#z@ZzxM z2VXJsgTC?F7y8C)z040RYU6ZJbDV`E-P(92MdNCWA zb=(KAYOt}0%XxHt5!c!bU^{BC8GNOkm_0QOHiL}G0n}YH4CsDx(2J}Y6BTz@Le>)d zR2QSaH5gcf0Zj>5bA*ww#b#7%FyIP%KL&%&(}Ho1JzeMnYb_X-wcx9L&IZ0Ztl7Zl z2gGGx>l>F1cQ!E29%9j%c=lv^bbP%XI!lDD@2Tg%^(}1OO#&v%P+(SV8->l<37V$@ z|K3j6rov8up?{(*1&ML03k+cA1a?kf=LE)`aB(b7M4MI!#%U<%+JIeyxix^ z;N@Y>3|<=0PVgUngSB2}1{ShSmyzH<+d;NLjRbF!y$@nENnFHfJb8qFW@2wa^TKW8 z%)lB6nr8<8V;|i>6IV%bF>cscFcn6E&NGA2ZY*dvNZAPiU83!-f)&^R?5=|C@EywV z9NJ52EgBl4g^o`2~oC<7X53%U1wUOY>?aX&ae+`(Q2b~7TU6(-A)DU zRNz3Adi&T7#$(@LjQ-zY8^M@Ipe|H`oed0YHt+*|&IW#9ShImaHyHn5-vF(b*?@&< zQ?zy9E$v|12g>eTod<@;&@?a(83q_4!D1wU(2KmaC@(}K@in&w!jOWT9JBj0SZ&tN zp01H=BpkEka8{>bHq46Fj`ha%Vi z%(q6M3t2~OPy=9xJ{HCBsuu$r_;0`IMm)xo3!o9ma}J&hytPoijuNrNKsLXT=F6$wILHupYFaL7Os83VLtI8R3$`<= zSvl~=2@7Crp+;mOof--YX1Q`i+8{&Z<55St(2=ePBK6~ZlYUI^uw56TOT~ykAcKN3 zYF3PHqhfR~L*Eyn8t0o;^~fQ^@^ z5c0&hx3RCbDKwBe3av8>4NfZ@9;R1NeYy69kwBy}E2X^8XK-EmEjAPLFYb8lc`jtEyE`YvG{a>+R4l5K#R z%@wX9lP!}OzJcro3FVL^46#P~5u=&@hpR0Vho*thLmifYO_UyvBOA%nI~ln}EZ9uc z6yzIJ&CLW*v2lu?x*T<9@pyo428Cty7 zjMqMI@f!PXkHe?MYk-SDT2QMpPr&cGB5tvGO;Fn8;I;Ght!Eg`I^s1^mShl3*kyMR zYQw3g#34!1XAHajb;X@O=b6J=SFnt75U2_GDXd^7!37**s!*UVn0$fZxyFKZoTxyq zXw(Z=QSif66xLEW52z=rAc{oMvi<=S*NE-wrw|L!mGzH3P53^&1HNwrx}DA;z8vlf zb^+h-X~y?^w&45S#P@sZRM9Hf73@BNH7HC=@8%RX?;iu6Csu`#S6Cm>KT1J`U=>pD zfNyR^ub`O9JI8pS^~J_xlwT;ah3-=3yiyx{=!Zr2usDAv24}Aaq)P~ie;z-Fs^Pyo z_lIRX!dx(PkhTN(U5N8ofl;yh5NWC(y~GMl@>Q06rE$C@&MNo?B;&$0ipcph+z|c7 z^N(Iaiu1KvE_O;`L24cuD@IZx%)Z!|0F#8%d6~(8BA1zyaPYaVMMW+KB#9?ed{3W? zkt1Migrf)#NAtLwzjJ?l4gX=Hk5}YU-Lap?7&|v2N6EWp?F=gfr3kBJ>|4>C`F=50 zcOf@OG$@*Nf;?_yeS#dodBpa>kX*zS=EjJ|S*e+giZ~XGIEqv{rd1%7s}7_i$A!fs z=I5~ashXd_{4AIs-~1HKkK?YOUUxkn`j`~%LMuo+p^YHiUI2K{W@6hEIc3Ne_Q#~k z3!E~f;+^o)ruWZ1z&X&y#IA$9dzZuA!R~J4{kr3rC+`lfBi{t(4I)q>PM_vFXu~bK z1eO5hRKpwD_GwTl@Jsj>YMHdWyM?ma$YETRx$v%4bvD|y`YdU!WnBo1Bu2Cr>Y|my ztA>FdS4Y?in8L^r(l`j4SJh>g%N4i^c&xNsE%0n=x$?wi0fN0a$Mr18xe?J9_*j9X`=rRn&{PI`YiMr)P>kc+gPh%AM0SEHCrsu$Ah*6oKNJTdppV z(n{%FGHU0VNA28}QJWv&N5zWoG&iI8CnOW2$dPu)VQD$apTYuK?j#m(@;sx&!%$v& zuf=9vyHU0>&hK=D_9ctZEJCvgZDtYL_tPlfEkf(wC_jrht!n%On_UuS2(A5I#jTuk z0oJjY(`cIC1>-|%nx7|*?_iow>^x=IEX#mN!G@hD+giDT*?}15_cr0C^iI$%PGu!5 z!k^A|o~NVhPX&8}y(fd~gX;wj0p0FxhFyC%!>;f;;Cd&x4o9{T-L|vN!!9eXq@2pY zfKQYN-*yx=6ho8~?xy7m#qYvoU+Kk~;dgJc_xmx~SB7k|S6fW>@bd^NU7767dee|i z_R>}bSm&=Z#`Zp~^VdBdeiM9QuY+~I$R8mM&$@Lt2xLp1Fa|?u*AfwCe?33{6Dj9rwj!PkMd&neK!a zn3LX_-F2hf7tbBY4g2CB8126Jt9D7(F6r7O-I-m|eQDVH;p7OyHt%ceeB%cEoeNH{B8MJpBN6v4m(SWp~8WR?sy@ zYh`rLW-!`$NbMUIsad3Ek=o26HF1yB*bEJ50Zh~0J+fEhdy3C6o1JF7*2{MI=|XL= zRBYQ`cw=x+H&SxN145YIivhBGgL^Ly_|x0f4luq(d#R(8d6K2cGiES%bn@H@n6 zv3VnWmxlO0Ho_Z2e5#)_^>z1#_@V3TW)u8Bk7i(NGVipfda=VB_K?7*Wg2;2?C=IA z)r99|!}#853%niV9L%9WnKC}M7dyzcGtD;-a!tCs{TBGC8tUx+_wJW_x0>X$cUP(H z-T!`y``=G;|2tjBN4o$0nqAp$4 zC(Cx@*#S?JynFfBIBoKPxI$E)7Pmv;J6YwoY=ZB4`@h))e~bi&osIKTybFG-Szfg_ z%g10DMKf*NF8Gt&1%HaW;AInx-31S`(hv;tI~}L3?*pf$IoV~Q=3gDj$u8(RI3r@~ z=`Nmd<$`-QkaJn6aljJa-RUmutlM|8i>0Qw)b!JFl+as8vkSggz%n|%qM@R-UM%vx zR>6c|HleA{*b6^Sn)>UScEhK4g7L9eosNz8)6H)9J*TjJ^173-E$*rBhQF?PH~e*5 zcEj(I-SE4xjaXo=wb9f6){@nO7hP!WhfP)wJs~#wRLo^=m)`Z}k3z0`>@4miRK13mh?P`pT>8Ey*`eoyX6J{q<3RKQ(m^>jr3Ug$L(6Mwb@&n{mk0zhrWFtDzd}*>Z3hYp2ybj zv@_*-l&6%rD+~Pvd!W1w+uL-Y`~x8tWt`Ge7Nhlm(R$lEzax>__gSQ7k(xznGmF$l zw0(ZI@LE5{`bO#ioa0@$L&FHyctCn5Q~hNe)n0`4V!qkbJipo09L@27bVGX73u^n5 z(d;rz%s$yk$BOd3hMZTAf zS>0OXCy*ocL6YN+)FS^wcAeL*^V)UZnO*1o`m7P!Qzh;|PW#4U&%Rwgo_bpQ2Mwpa zwafQ{)Oxea??}A%!xpbuyk_y*%;Gg+J(@jQ`$qUOl#_^hG0kVVkYb6l(KO$92GcN2 z^X5FF#=>`n-Trbkc8sp9^V`k-n^czNx9`tDZwY{LaAiUOTnjQq& z^;yzIULDejM~3!)W*<*D(t=sza?Srjg`~2N@Xy&hfM)p?i7x?fLrm_FVwiVVf;&5pakmMohk~4 zOfAN0ZAmY(&@4;LZ!YOaSR+!dqkNfPjTAkHr0|INa)6lrS4{=rTZq6Fc9s$cz#I1~ zJucWDbIE=Z-r(g5myDw6VxX9B8K{aa1iKed|bV}bSYcCOnXf1LN zg8VpsQq}MYY1vdT*o<|-aN}wX(bf@-ZSB8Mi9G+s3Mvb}VOJF#c<}qOLY=uQcqr_q z9tvTuibvt}gL?47JmWp7FdxD#+dJCCO6x!(u#qrNc|cH^f7%i*K_2cEc|gM8D%~s( zZY^F}iyR{ltIj==r9x1=KxZSD;&2$1hIem9vo7hIao~k1QX&sml@zC5xMWxtOALPr?IBltm-GR1wIIBP9(9CC3cqHc}Cy zT}dxsh+G|9Lcf$0@WT`iFa=a~J%vR{ftffELi@=})g@paxmrY@GFK?pVUrMkm{1bq zW{6Y3QbE{75lDVmrbx+CbW4;-o}zXZA_q?)Ev#0j{uC!?*Pr^yQ#6w=PvK9*6ii$; zW8~aQ?>as%%42G6X$i%?{URD(I*Eu7^tS1%iRP4^B5Ig@=;Epp^(nm;O)tVMN|%k6 zt;YjTUT3dGr0%r1$xz!~yGe_)hctCtXz`(UTS#g9Zfle{;xu<#h(=?##bS?)D)nwl zt;|mE@inv)e{!bNqvLuIIE)0SlEqLuOw|kss;TpGG=QKknt>KkkX6VR)}f8+fLv0A zL+U)Fj8Rww01e{!@7q^F24W9+3cTAe!~|X_REQ?734#DMyhk;S_o(lT&Tc%xUNb4g zXHp5JwTw9Uh>SR*%0%D9>k)^Zw+@6t-rqM0!H|#fxqc3p#UkUxB0t*>iwp)!f39zV z7zHdnW?^XuSo-trL}BJ&DX`|MQR5btT3AYOYhmf+!&0NgEi4@)Ed7N(Vd*bS1}yzx z-za2su+(CaPD^B$+hLKxVChqR3&bd3DR?;mLpcB03PbE_DOXEB)J_y;4wl|;VQIS3 zYGJ8`rPHxmYP7h8rDKGpztkrz{iVr(r62Aag^UiCS}f8Dmi}@(EHW4@{nfq&Vid5{ ztd3b&DmK?lBmUFvL}BJ&Y1iv6)`)M7_|}LI3oh-%+ik?}+Qwmx_`@>dKhq~HeP%LX z>96&TLPiHmEf(nnOMkr`78wkd{$}3-F$!2}R>v$XZ4FC*tDPv!94zg6-NnLE3rj65 zoe)^swT;8V(qX~U-|iEZ{`O?R(r5cdA)|w(7K?O(rN7e-iwp)!f46Ue7zHdfTU;zG zZ4FC*ubn8&94s|k;JPpeT3BjfsfDEz0!zEzsAys7uwd!$_X$gXe==a{AM}kvMh8nR z7U={_Ki&?DTrKH2v;F!B)wC0zyY{$m4;UxH?nCb9^wy%hY#xrUxixG8F36Vn-KVjY zeEsa{8n+VW<8>dMh4Hb4`L>EG@c`|j8A>)cI_%=>q7M`N;a-ouj>Z0O|2 zSOeHLjUDszxT=K(R8H2RHwA1NNBXi^oIeXS9GcQZ9^lo<15hzZs$ovfh~Z0oB`CCe zsT35kvo*waN$fTc%XFq)SJ=PFqgJrrnp+}OPzuT?$a8?e3*7gOt?u0Y>2h;qQbIwm zKFcZ__KT>41#bJ~u6^v3{(z-arS!Kb*RyKe^^D5KrhiJ4Y&lK# zLgVQH?uACZ@^N7HLQ_)ff*85%J0gPo%$k2!+HTUg<_IB#kOhKUs->yfF(8?cL&`I| z=EI<#zzY`@cJ@lIIEuV@p^FAbEa@%<2#M(nl!8LMj{m%)$XlNM&czc55#%NxtK0E0 zbU=i>?WP;0PnbST0*4FIJEfOWy1ZKv*F(*i&o{`O$-g1>m&GA@_D})Q5DVpKzl-I*%`^1Nr3EbJH{uE*tgbN;c}t z6*uam=I}-Qm`(af;lM@;^~ROhvPoaA0%3_2o)7>PupWO=6&V?nB^?YzW*f8v+M~0Ewfpptxu(vnyZ6Pbh4B z-d*w?r}VT|;9y~<4f_YxCMZLwHuL;(!UDEy7pV47K&OU+fD0F8^6_VsVGtr@-hi^Z(~<#lP}CTkuRN@FK{)GCt*{* zu*Cq%t&z$_H{|Ptv>{V%+*j^0r=XKb_LZ03p_O}%c|_Gjh@7 z7`hhQ;O|5ILe#7J_0n_ssYr9w;_moQ1>{gcO!Bv&)(m?KITCPoB_n5$&I&y*(UhV zILL>)Ia39yD)6Sl<_7B-fSMwPKYKcwBk>(Z`(ijRFoF1ibz1};0ogOA45WP~K#K_J z%uruwpnV4OI|q9Nmiea>%Ne0k-oKlZh`fIckd25(1#<$DFpgD%-Gn@nqXGdMX5c1c zb0%Z+dPT1wbIJpj0{NY62gPhwSo(yDs92YeU3}<=oWpcJUeyOA2dWMor0rlDT;!3C z_=5WoY4{$!#A-+~>l;K@kK-kAR#i}z(g+U}BInPLfa;CsAH9SWchzdS*eQiY=ARiW zVmTK-0LE+rCje;~9tgh0#Dx_k;h@7>i%OiMC5b09udTeTyU?h+x;kFfOaznTRm-fd zsBFGpiq&1n4WN5aGSjzwecH&GQywMsKrmOt6{akR#>s-2B%mx1n^ho`igF zV^Y!P%zLhc><Chw{rAe>r zVdeUjCTYxqld68UQ_^gjhWTOpraXbgt$NDqZu?B5x9)j7x^5M!tEW%w5C2>Gjb}H$ zfoXf99My($44C}>;K1?y!HpNf8|C)D1pgJc-+UqbX1RSu5a4# zNRr3ROER=HZ=yOLfSF)V--X1nVHxVLnlZ4i}<=qZM=5G$bWJuoveZj=<3p6pc1~1r~wx z569Q8UE6)few?sfac;zuIve`6Hz1RRz1!QO%t3sN3Jhnf_S0=YCer7ClkQ9u=@ysn1?D4MZ~ zBn?{4p#ZFAtRhM0hm>?PR;j}7Rvcn=H^UXCKHoX@-rz(Xu`uy+$HWH)E&R-`#?M&X zVrE|!w;XbPVmyay6Gg(jNy9BogZ-G%i*(y8ou+YbPV|C*J_Zw}vBA`AKo36KE)9ur8aI7D9hhxp|4!CV}cff6E9a@a()9dcgqCnOs)B0p~4N|PTL;YOuO<2XcJ2Y&ROA*UR-5oYSOK)29Fe<2i^0Aby;ygLnRRzKKA5}1 zuUOlJwM|&t#LU_zwvpZ8{t0z=IBwk?us@MYiT$uU+;80-X5HOkKuGZs3n?t5u#jSA zA;q@4I}8U{jLO}iJ9sf2?hY)Ab$77t4%Xcv%Ld;ykHIDrf^~Ozs0N~rcff6+WFP z9cp0nS_;7m)HQupvumbxcW7{TND<3O-5oYSOK(!G-1 zusb*jze8__S!`^SWbQW@Br-{%SDoNG9%hm3l9XE+WFP9jv>9b$4ig z5JyjkS)_=iOLvDsK}&b;4uUK!ZUJk_L{0&te@g-N5-C?HO9a;?b&FICtJIt)R z!~KJ~JABOACai73+9qb!HnENF4#y|d-Qj-g?l6G6!*T2GFzfCP144@DETpiI!a|Cf zg%sQF?l2r+F)DY5?%>6AxI3^c*4@FnJ6LxI>+UdgcZYPZy@k`yZf z+#Ql#l5z`o2i!KgJK(m_-2t~lb9b=p4tMO2th>Xo-5pwt>CFa%X>xaHQ6TH?VBH<8 zyMuLi7^1sFidaVK?yvz`dUJOG_8_~1#Vv4ruT}n00rD0U^aFETpiI!a|Cf zg%sQF?l2r+F)DY5?%>6AxI3^c*4@FnJ6LxI>+UdgcZUFD$!*b$1xHyF-gHz1d(eP3{gY3S`|Kth5E0(aXy@SD#al>9enN z;wRKvCnzs)J?yH>pZly6SO~S3} z*SAfj1g(Yqc;DtaQT{cK{P*cse;2Z!-aYpK?*iwUsBj9u`IA8*D4aZfI@J2HApg$v zr3bi%^C4twb-n)Ixl))5G+xgI&Xr>oo#fd6S_Pj~0dn_-C0*pzA@{yz6i`Xtmrw)X z#q%SLBvqi7^j@5Ye(|P~3HO(@Z?5(-L`iMoAeGn&QGKz)GgUAkFEdtEABa3j#aq$= z>Nrj1z>+>--VGQcsT^F=2Tcn2VG4**)zys@79|CK@IZ*t$V=5FjRRHqY;j31nybT0 z8VZ70!4DHkV%)r>Zw^>0)H=UvN`+VbNJ+~DN{WPRq9P$J_@5~|yIegyoSmAyG^dTsEv97h>jrY9HJ12~|7jl)g;q*N>^$kp4m{$dvx{4$=>yx&k@Q zLEH-N1^|lo`wEz8-#v#RlaUg`M4WIO^h`2;%od#%uqSLpw)qtO3-&qDvX z2BH6&#W}5U&V#Y~UJG@$1>gTeN4fvUp5^|Zc7)syLD`GkTYbMB^V&b}DEH6zEcbuW zAouUdX|C!_{hH1pmoUaIyHv*uM}F~!PRlM&-O%f@%ZF~*Saz8$@jPzP@_5DbmpY2) zhkF*!U!GaJGXR;MLIOj~9CUal$-|>UrEVQWZQ2 z^2u|7m*M51HhX!fw*DEMDC+oPn0R?8|8SsRD{%)AaX(TVMo_q88Wh_$YSbe*Lg0cE;j@25RBv5Ko?=kCV2@OC; z2-65h`93{i;4^{tkhWs$gox{ZHEA#80Wm^WAKHX&D1n0K402M{7gYo|iz-9lukku0 zmy74lL^;I3k9sX0NTPV)e2&cg`ywUYBK!_qG2k@9)Sd|GQ}JuNUAHd5>ydaA!QbK?DwRef&8Q3t zUg{M>44lt~u$cL*>2e-Jl_a!GaqKL!N^?2a%dG5(5mzO<_?|U`HRms~B=AiUZDXl1ntG zA31mmQKA2sQ-A7hJcYc=Q?!wZ>ovw@8%7TO59P6mEbEwT2E~!^MYOtf50M{?ghrR7 zeFQxOf(pfdaaD0>lBYR-{t8Kv?_^I(Y2o^7j|8hsv96#}0})ud3I z-V_R6t}7IJOBRyh(A1b24zml!6OICYB0*C0jw$r*hF5%SO-FqWb|4u(e0nh{ks=@pI|7@HOiu&NTY7)MFe z07pUiXL109^m|AdsLQ1s&_UAw{63BWF`Z@u?=}q4fftICtch!aAl?n{VN~IJRK*U5 z7|~};f?3l{3h|i~hkj;@rNKu`n=n733gh*NL-+3w4nAKP0DKCZsV2_B7J^y`N+c*g z##vK-^wPDSv{>aR!2En3V9{`I^=bXwS((PN^zuFFw{^sB-1lIc=wy9sXwkZeG@Qp3_EhkiZ zW$>kBv+KUwb!2Op0wA)6DRkXd90t}fHMNGR=BbnnguPn2IS_Vl=C)R;VOgc#bVGku zsW;s)B&*bOgJaJBAzoX$FPErUm_b?O2}|y%y`s*yL!Lu0N&Ub8LOg8~C%ERl#*zO% zEuK*WnWQ*@;)1?4NpWJ-(Yx;l+sX0oS(DV385HJ9oxS^pVwCD~`PfdS>{Keim~W?2 zGw@0jXs z9obH$>{QB5rMTy1=BH9J5O!~sGBdBS1vBd>4>{e zgTQV5?CBcmXY%p7k988p2bbJ!@LR*VfS`XP5!FQ%Xs}DU>k7|2iE85Sk6e(zfCUYS zN3Q>wZ;ikKwT{@}p8?Mq=&kT-E{28MfBQ{0;xV3F09Q?(Ub@(Zxfbh(Ll=pvG7jk@ z^F|1+D&#nv0GYtP+Ax%>CcR(%!a;0nE{W^X&7X z#~rYLnYV>#@ODxwZ6pClt?z7`3eJ0s6>?A{)nKLWgecrf>D_ZUD3aOae(2nlsDwSh zm1f4a$`;19GWZ6iXr-Wx&0Ikx$UXBQl90yrgyU~r34tFD$E?>8*~w7T;A14FzrcLu z(ZXOYa!Klw)UvRoG!j9Qqz~;wwm$GdzPJy+tQO(!0~;A8u1pRmFM{w1Cnw^_MNT5v z%))pEx${MuAS~qKa)otE!iD)vu7vqauE>0bl7Uas99*dk`x#O(2UmiK=Ob&_7Lfu=pEYhL#l^|qXJ(f%cJR;N0FCY=;Cd} zk}g}oo2EZ9$wJHnOTDAWTb_O2#S^5Arq0Lec6p^%bK)Zov;K^9YKJ3fa(2xHkfKq~?EPBm$QuY;0T+*?QxO zJai{)BEZ`!a7Q)-?v@RKgHC|NQCLvHXe`5kr_K4LyGy>~l-`$f^Y!t^UyD4$7>k-P z4)4_Dc{Za5ejfZdVG*oj#Y7W3HDSywPz7U}VpMR#`eD>Bo|Z{^w!mS;ZC1bTCiM&L zOcqb*Zn9;1uX2jyYy-L~;a5HL|MB zp~%|QgdB>Dr)8!i)d;=Zcqp>Ys>bBydNoQv|1Bn!`f~Gir)bcVDFMMBkOOphJ(Gcu*i1 z8@`HMAMxAR#$y`VCA>a*IXh z297^Xjz7&dcA>jQ^a}nz$09fpKg|xr7aNYl7HUX= zePza52*@_r-13cH57gs1b|8mhL!RWEbRemxBn1MQwuztvL6rgBAuH@fE!iP~U{Dxg zbh#3B%Q*{1Sfp)c>mXM$y$Y!)@C)WlQ|r=&ip9g-<6)o^G!^i$kyFQ_;_;y3mnx$xnWP2OT-0eZb-W3b8-lciN@5wg%Sw?N46 zD!cP_g#1ZoEh0oFIt|O1>vFA-tkmH=yDCmcz?2TF4qP&f3Ov#SHO&P({BXfeAZiIf zx*Y0#iK$Q~hQFbHLQSZ4&|S41m3?vH4B&y!5Vq zAi}O-7v_0>^E}VrGSA!1d7fYAFIT~?U^gj~u;y_$adqB5hG`z>6!5)}sR=$mACx(% zz_BNeVVg#UDeoNP;iL~Ro}(t^OcWskmjx9@MQT_y3X4d=iSuV-%t$=UNT4en{Nsuq z8itLd?%W?%@Cb`hp@X!!1+)<7vAm~Z_n{h&5_$9zB%+?LikULi<9JD&Re0P>#)X0% zk@IIr1MmoQ>@uV8DZW$ohi*sDi zLtB_?drqYVDVb|y=JcTyoR2uqFHR~ujbR-#U*gPT~$;&d8 z79F*bg3(cJ5-CwB1Tu?GwG!+AP&0LnB|1u7347B~s=kPlrK22HCltTY1-bZ>4vG1n z(i>;$V2RJg&;TVa6UPSS&ijnI6a6lyJtcL=rfXk!SmvXWLd8?RyU8-dM%|(9unf^A z5!7AGr2=G0lzgFHWnxH4?-E0bEJLU(5hWjMbqbvA%&~wc^Xn6#4x0oH3+x9 z2JwQ@>fHQeqI4_Jpt;8*9LfT5%w6ItjO%}4-~J0x#V7|k+=Z)5=-VcsY>v}{BA1uk z7jAALKA(#&GChruCf`UFwLY}RM z9(dc#b=2-w?0mRG#h%Z|J;r0ZCCJjIU!qqjEYheU1 zekP3gNGlkTq3A7`=pIabsTG)zfJ`tUA(>!8LNdXGgk*vV3CRQ#5|RlfBqRe&e5I`6 z&UE&b4s6WUnQ8i+nP>@=yJ-veO_~YJ2Cw{%{A&V8F#S4k?Ylo2@7tShMHvY zg9{d1al+ZGZT*kT!cpCcDOud!*FwHludZc%mOK?_MnHc#xMGK*nUi$=V$vdC1!#RKPJ?qZeB*(?8hYDEV{mo zRQG1tNWs)(n?&Hpw6!L&=2)*+)Fkc#-G5DTSElA+Us#@ne6(?8O8i@#((|r{D-!{d z5mYRq5-eLsrqfNUuY)@>rA|!wdV33UN$(Qml5g%Y`OQ5h=_zoWekLlM!jg9WBo++| z>~Nbrm;TK{->&`m#ZEpIeoM0ffM2!%*aBb+fM*r}f22Dm6NV0W6v$2`gd!0oNl}0q&hAcx204uVcxt|O{pzv%EkIq z7i!8CHKk*2nopq5fYLKA|xae zL`X;mh_Iwfvqrj9qk}lcp<#v1d zOl~iKPoLY%v0#MdkBK8)+Df^ku=lOeM-=Wcy|4vos9g6My61o@=-vuAd4}z&lxyj! zlrx(J8~ltqdMXKVm3S&`5LYSEHTA%_w6zYMEp^xv;}X4X^+p}a*4_3#N-5pa=PcdQ zxagKrFQs-=OQ2-xnQDnNP7PE`55($wH#;m@s-<2~@D#c%rRaB>vGDgjY5 zJNr9dYy}}CAQM7JNG61kkW2_6A(;?DLNXzQgk(Yp3CVyEmQbnt(=fz5&Rylxa5`LS z9v9@D-X+@uIvq{aM5uHMrry#?5-Q1dF>DV2m&-^`g?pohT zE~<=7}Zl_qW*d3TjLFssrrng_b3Rr-{rRU-9!Go#kX z&xcFNlmx@1cL|2+iCXC-sg+KVT8Ud6Ewxg5DlC?@IQ^YLY9+eX51U(b{80EuEfls; z*h1l%g~A`5MQWw)Fx+GT;$}xB3yZs98XL^5)OzHw)$aHEuA9O zk}O8hmeMQL(i5#rj}nk+dX$h%)1!oBnjR%2)AT4InWjex$uvDmNQUY0!#k2{$wCNw zzU)xXmwlUs5Yr7ICYx<(vVg<~vw_4&y_segPW)IaI3WRd;e>=_!U+kEy^bT$qIF`N_-X$mDUDD)TIxz}writ5M-nkCJ z4&)AxfGIUNle=*+mg)f(mT4? z4~cuXwLVU_^>NZ2m{OILp`d!=UZR2`_fock%Jy6O za4Y(R5qT~RgL?^{OS&umrG)lbU5RoyTCdQ2U|eDIfpJm(cty#wMkD{y2JN$J&Wr1U zKj9}^Ssf)H)9NT8nN~*$$+S93NT$_MLNcw65|U|kl#mRoE8wI6 zVJ|F34oM8lk#~o;f(Sc-x$&nhdYEqXFde>2+lnEcX@wz1>a?^Yki<{5LJ|^?i6kT> z6G=!&CX$elOe7&8nMguHGLeLYWFQIaztqb%bWB@#O!Gu@F^%icxCh7Ozx1=#USsVw z)?PES_L}$EbK@N6)31I2^RLpD^^f`EaChRlaa6bV=(t8VFwkc9;=*K(j%%#OUc8t- zYrUAp<;B#M2h$Kvk9*L1Fkua72T(H293uWXi-;{EwupFU5wQ@J+SB74{I^}Wc*32S zGPX!yEZ;VC{4RTj9I8KE@P{9h)0-cYIYTa)oMfHSWVx7Tl#A(-HAYUiF>+E}nMQOH zOdB1Q?alOytt^of?9J4bCsVSCswYn-dPy~SGO;p~Rfz6AnLg0U{wM*N_D2cHv_DEn zru|VuGVPBNl4*aGkWBldgk;zsh0D<%CO4cjXxsEniyvkbKm3Bl57UhwCfk{5Qc%RN zv_cUR@6R;RSmNhfVF?My#1ayci6tZ?6H7=)CYF$pOe`TGnOH(XGO)xydO8O#rdK-g z6X9B<4?1*m6-QTi?Krz!M`^bdXf7QWm$c8TL)uw(i|~8Zak1wA<_+8xuj6VhaN=^! z|3W3uRlTnG_kyB>EMEmhCw@Gz`QXP1^R773dW=-9g-Skojz+9#^o3O$6Q0#bL+#79mCx)!gjMGj&{#q)P_34`9ntLNT)ei<+8Sbe*L9Ps6vW3{%V zZ)RoUZe73yn7h|ec-AFr>nPvn0hf`w73G&oWk3k$WdEy4#Uc-g5yB9QplX<7li)y1 zGMc)E^!|Bi}NGHvO`zXPA^CB4Yho(O9PozmmGv}*)y zJz9%g9N_52?@+1Ghy+0JL_X?b=duai_^JajfDrjFR3guRv4U7`Rew>z4I95-VYRt@ z6`zFcpb+M&c$BOsRs9YX=JYw1kOHt-zH*!8E7w*oSS!d;UA}Vu;lO>Bb9Iw^;j1rq zmM`SUGa`0x#esz3t)MPp`BcJO#ifOKKel`k$rM5Mmu z?u&Kl`l6D0K?JF$M7kVGm#Kb+)Wr+ec#*;dk-!Zr4yikoE*Ele6*azurwn^HTDn2L z9Lkr&b~nl90tW(yR7|0A^sdLd0dj+v54L<4?VY~b*u+LMDG!iLqzX+TtoL%|Ez!S_ z&!D1;=Bm5|ec{E3gr8MsxgNu(5|g-lm-Jq9wXg)WB60D@85 z1-Xq>4lL;dCcS_mlFGp))*(~C4^u!4s;4xCMM;5~JP<-X%S$K%27W$Ugru0O!%OLv0g&=PRmMvW$0}E8` zaJxQ)y?xg=V+!IlcYR1$W7o%6-qiIYgi~>Nd=1UbpPW$~==>h!76TLN<6tQLE-=HB zYEl4H!jShx11G8+s*RYU1~{moTW~yq@Ontug=Dh9Aia+N+cyvh#2)e#c-##Xc%dUh zoy0Xkki&-eIB?)S>P%@m2(BaXm^IC$5Z`Ppf?`0nSQ>o9vq zqFkGYdEjSbV=S8~8pMTRQc8i|>bp??2HezW>C;;QRkM0N|P? zd~ab_m&>Yu)DCtHjPL(=0CAfRd=EApi|+v{I< zbm04YEWU@OwhMg!x9tSY;`=uE{+Px07T<4p*I56Yor3R^vBl#1apC(<_lfU6Ju&$H zGXnswX~Opwc6EvGKidv=4UF&qc>r;n4t#&V#rNIe`+sRCXcphM!S}~4zPI?^;`^QF zf1ivk7T=Ex-+#VOeE<20!S^o=0Jx?J-&@$#CBFaHcCc$;eE*dJ#BDn8{k<07cZcu4 z+D_0czHfu?Pgs0!@x8_OI}hI{V~fT2l5F9ZDR2K*9QPx(}eFW?CKKVUu_4w z-dR?2=g6L;n%Hx={ajHtwniZ(ul8t(jyla&crWYySDo@C|cIfp006E zd_G?Hg}y}CVr~O222}(=Jc%AIVuvaS8e9;^IH2WVR1<%Hxhj_@z|RVItje$#ZUnL+i$uNkMZOJHqhs}p*?u29kepnzWa6jdc3Y`$dP{+x6&tsG#;L;fSG_Fn@4)A4Ra1y zj+FymhB@-Fko-aTe(;F`GD->%a`Z2o+d+)f+Su!2xDDvWkF5X5g=}`s9iRms(vJkK1Kkq2=mS@*= z@dR=Nxyi@sc6}7G4{<3Z%{WRoV9{DI5$Wg#*+(%ttly zP}QgdQrAdDAo_t2<(4Fb+eWU0+eWU0+eQ*QY!a)QxIGHo5n-_r$+~4j;Gh#AaTFF* zFdECy+h~jfAoGoO6<`L;vV}ZF33-aDlcxw_Tm6nPK={_FsK|p9l|z9PmK9>C-*j47VM{BslBBTE zoQ;LmS%pnrJ{*|BijGcFFokWCNC{-aQdo_`vM(@`jf5|5QaD5S;+eD5ozk0JEfare87-_lCR-*mObXcx47pBB zo@Gf~=@tBcjzw@dJmYr@ZJKZ=NzW8D(G4wMj)Lg0VHK#8aw3RQPe}?n5k#lCftxuM z1QQ5n8f0p?32z~M07@A6oR@_R$@p*7|sLfDe%hzm2{m4M+&96lBBT;sUOF|~oX*xO7jOW52R+;Fy-1DZ4l$ukJa zZzh)nLfYFl5wcFn8iph2HSgceWb^(pOl}D}v1TE-6~J>oC=+$&Db@n`P%J=L#si-* zs3=ih1SSlPGHYd2q=rdhSVRg=oIeu-vU-55n5H@SC(~$D0;*8mxj(Gn5hh@vgS3Sg zInHAZMaAwz;OlfAy;KWP>n2|ngQvlrEOERf&Z-LLB!X~bB69u=89v{5{?SWFu~e(& zVy6@q*bK~AF_IEtQHhP`1O?(^5^8!_vYFAt41U)hW-#4{8K8^RLO0PQ^PFp8X(Q1j ziqj?6XcDf<5T7joxJRm4lL&2dGD@YIBzalpTB1odQZSmNO(LZbotUatZP6qSJ0z5- z>9ILzRq~pCLMb?u~q4W9=_|+Y0f0m(t+O{OBza6txWx3u>eaN z9ZHAnh^kar?xo%$m#dGG1YYR{rPaCl$3$yYpn`IbN8p9#(%L0xeJrv+*XjrW3CKJG zKteK)0FaQ(BLE~M^9TS5$vgr;LNbp4kdTZc0A3uy=m;9=I%cwCq#YxZMR2pOj&<-7 z3@URJkZ8_~(ZyKZg%KO7FesYU@H}orhPV)&M{F6wafKCNMC014S#uQx<6w!NSdA;$ zxRR3z@J#R&%t?P>$H?g(BQXuD>y!F$GPNV+C$mP%28CHK;0%qIzu#)Slz`0fQbIDv zO9{ywFC`>%yp)j4@lrxE$4d#x7%#2Ke+Etd$Hrpv|6g{6*{(3#73P^;VV*&gKeqYH z`Wa^Yvv2Y@=WB79*P8q%(ByxQHTl;)+OYVB>2deoms4l*9}gh=qy=OakXb-Bvw&=7 zP5#4#Wm97E?+KjkM3X-&$eR3jfXV;=SaZg7n=>ZeMe|C(V?lE#YO#Yko zN%lxN^(Oz`$IJiQYP^(y%<)n}GRI2^$s8{wBy+r!kj(K?LNdoo3CS2Qt;v4|P5#Hn zV)B39t}xpbX1l^Xvn$LqXz~a1=gu+tA0{lD5|e*V;A|(F{8>TPW=)c9$e7|?{>OVZ z`Ts>L6NUt2nlL0J(}W=*nI;Sg$uwa|NTvxxLNZMl5|UxU*tsVE&5~_R{xfRw|7$x& zPWKo&9VY+H`Xqa#oO+Xg@8jjCT8)cG5L=Nko|)N zWEPNFKsK|0Y-UaV!-Qp1V)E|^ob5!DKP$+Z{C9xK|8v%yG2P~jNjLd#)+E`6j43wx z-_x_n|L(3nFVAs3&>{H% zyp)j4@lrxE#>jcaPsu&Q0vEn{5$LEz4`&9|2tO-bAiTpa)EQ@SVfltH-6r!`CqG`42nk_zhOxid3DIWZy8@y0n4+5EUBvY zBaI|gpqKRCK>HVODw%M9N&Dt%FGCdHSy<8wu@h?K*}-MttUAk#Rn-R~Pg3!gbP#wO zsT^3+2h6(xLnM`hOZuQm0Y6LuF{-+{k;0;+zz-e>Q5t!vx}>Y-YH>*~nybT0`mjj| zKTIfzar2VCIbf;Kg#4;06_WEKbt_F_fs!I2o2W>=!vFa-XP4_J?V|nyeMlp{@5B|V z?`~Fw8=%Oy^T8qa_GMS`!!*)_3$Qt?z7*)~99?4?GyF@3oL%TLA34ItuJh_AIdP9=X77w|W(U zwHkIiW?VnmQDEQFv%vmPgTQ{$(_APR>M}v#9dczsq4P4p|EC?&|67DPK7{#+juQ1h zdzPp_nkb1PyM&df@k!MG>L^kFyJv~|KNBTUb{0I|dBrC?O4R@DS)%^mL`l^BR!5C> zE%1*!O4Oh9EKz?tQ4)2pm8h{w)Sq>fs6X#nqMn~9iK5G{#ZlwKQGd`;qCVcUMEzld zME#TJ=IYk9^>8iHGzw=}1T{^RMVe7@McW`|bC}Qh?~(jzu?NTHn*W6g4H1v<&)GX@ z5ye}f%O6^j@#BPf*aq{sXPlr06Rk(%GGiFyvT8CeyEHD(HCpMgik#ldDl%RbOKxZ5 z@|6%qW!UNFn(cIRTkLd2&KKrjr%RSO3PBONw6v-u)39KF$LTANM@1N4-81o#(}AW{ z`$!FQ+^BH=ZrJ!}*I_BvyEHNk4)@$@KW_ zQNB!zI83#uKdD)~_Huxj{#Q-y;#-Ii!l=qBr12X@d;Jh{QPt}zf^j!s$iYCp4yonh zxie7?G4P{aiwBY>9{67}$-#=BeEg1zQ$nIN!M;?X(bkC4@}zDSM#R{qmcIm4sa`^kQLan(gc!-Zej!+D9RXl3UxL%lNyeAc;4Hbhd zmZMxMaJeRd%Wo05CUJuajN*nr!xcAYL);W)2a1;BhFn+c;s(2MB5rOiURjGAid*sg zs&kK&7cX64w{$6OVpOl{n;|uD2B7s_>MIeqt4ivsUUf*90_RZROp`DqOeD^{NP&Z# z;0CprLwXJ+&ZWd@O7N4C*Y~6S8)VL*%sG?>lPnxGAaqG?s!=YT3*<3+y(SLz@hJFtooj1yXM~?~0E}p~LgMJIR+DnHG zxq`C?Tse%Rhr~r1MjGMua5eQUffI)KLL73dBl9iEp}Q-50Cc?YOwu=UVR51u(z%u?vqL(lpbMS%idPo`Y zMEW@$qWqs;01$9u4|xi_+b}!^Ug*fkC~-{?q_g2Y4lsC+%G8J!H}fzFW=%6G#Ai|* zb(t-e1|JbrAo&qx7OzJfHeVbNpgq|)Km%X_x=0-JEKHjnnD#U6U|J$?;w9S8gy8*s z%UgF70*&6;9-$FQp<8u1C3q&9KZO_OP6qSAJpD~o7xM#5BNRFP3p8D=rAdu$aOz0*dlUt9qlwFg~;U+kptXcwKIbh z1K62?of%*XHvX9bh9cSekj@2U>qB}cGlOjyitPMgjPrvJ^f^EHz_8{AUorE8zVX_n zzVTWw^8<_8I33hnXvCyyDi(8pt{rOo+<>#v5B4o}!4PXkTE%cx@(33-A@jBku_tY;tos5T4JB-V)VBL18Xp# zDFJJaFcP-djA{)ATw(9WV9a%1;eryT2`pEHAB8P?3;r2*{( zAL$#c^)fTCkZrn*1i#u2vJGk^__e-8uJ8H5mWA8y9f<~AxNV#nSR+C6%;4ACiP=;b z2|CXVM!T_~*&t;n1ayhEy9!od1F*Xaw!?QQ!*ggG$DS_qft?BrYbx;3KBod79oAG} zP$R)_^o`2~oC<7X53%U1wUOXA+o7{THyA(Lx3G0L34ly>*iSH8Ta;`tw$4J>JJ!Vp zpprTUjyCAZP<^CBU%9d$=q>K1sXIT z?z+M=u)!m$iN8N`xgi6qfcl}x^*{5i5$HnJ5gXJ1*rAU_F}&)04|kIf@J77I)jwHk^vN8Xx3N>Wkab`lS#@OY&doGkcE zkvpR+uW{r*a}rN__Z&{nL4I=l7Sbs5&jQQpH6O?0H6F*~U5QHAoLXt-OR8+)ODf}B z6DA&%f-+B&ss!FM4~99EN*Ia2{6rpsdRa(_fEuZVsP8ID%9bHTMJ;m4i;&cYOgMek zi|`B;(V`1vd?48n7+Bs5hqd_Q4mQ;Aj2ZB;s6glza99l%^l%&vPN~6n@Fk&rDf8pL zv^pA<3?r_vkw`e`U%*4cn4o_F_Xw|&vwpx`Whh`2>0%J8e%258AP9=gSwHfIob@AD z0Yl_U+^Z!8urVSMn+hsrgG~jM4Kg80p0G_M94mNwfE+8RS3X9@$+1GIt_yACvY&y- zi7ZTkyXN1OwwtuCoI}YFl2?(cMOvGk2vV#~e_=O%I4bbPiwdM3(u0m7FJ9=P!4XTk zRsnKi`i;nG%rl<6qsUvHebfyYPPxg)>UMk#ofRQ(yXi*hKc>I)aH9*-lch&fx;!3n z#g;Ok$NR{J$eqbQ3JWn?LMEi6-+~`hCU@vJ>5x?5j@0~bj6~qFgpG|WB3o}PTaO;W^M`1w)qp=Lzk2Xg>?JoI_Q~J7_Fw>z`P-1TPMq?Gxn)o51 z7k-?u0JautL>AJip|D_53pyKh8Jl$Mg={bs@S`jQ9gGC@7<5 z#ppIFM)wNzeG#g0zF9TSZ&8hNJo0Hia1E854vN8?ocffI%3#0(EsWYNU7rWA@e&n6 zo*4Hw_SH6p22w|%b!MT#X@$eX^a`pk*S^^3jA^mKSfQJXts9H2do8v$#a5=+7eo~I zNFznA?6ySoPX(l}LrhZVp_GO=kKG;D1PPLmoIUpjCMGh5A%^-cVH|SFIOK}>aqtnY zB9kqX877771qtPlBn+`e`Vpg<{)ekA6o;mP&_f-TfK8Mhjw2h%(>octMJ(7%9Gb{C zsG6Gzpkm_`J#{7O`Z%&!g$@)wjw0hWG9~RLBub^r7OC}s)G!`X4}qG`9A#+nS~FgI zpT%qJyB4omyw-YhFvWQ7e0}Q~MzfB1O_U`WL=$$|9faC&>M3zZQuGzqakSiMX!c`Rfa218M6wU+c$ts8< zQM9ao0L3+8`}!%w0(52lV^0&lPw#;58-Z@8bBM2myMkT7_j{W0{hlrOemC*`o;p>u z3U&p%$=!=->D`>d=KW*9^Tet!@(SxC`bR0K5UfJ#9q`Sq=oJ)GdFL1pw7%GQjPeUb zw$NS5oL6dt5B;#n9v0`%#Nh1pfOH8V@z3MuP&NE_=l-yaM_70W9i;65ei!0AR$x@@ zK17=8M=!BLlYEsWUuhgKiL(lR0m-;F~-h~$WijHSv$iDK`Fv28T(c=XTD#I)m_L95)F!Gogj}JS)U*Wa2~Ne zFeDdoh2kSR5%Y7{{8Y_PV15?Nk8gg8=EreY zP_Mfl4}DAuccB%eozO-QZZ815XEXi(?7e-I9M@SUUSIt&)7_eqEGHw)KyFn;w&jc! z1-v62j?Y0g!Lhw2mSrCu+vo5{B>CizonLu{43t^XC0t83`317ys6G9Z?MEgANt*)+`ss5bqneLt|9jUA8R^7Vy)_dRk z-21-obNOw`oHFDK`z2}e5~mD_c*nf7$@#PAI0tG??7GOi_f#;a=6aF$z4u_AJg4@O zZvyiM5vTyWPjkg6b&4*5B|zEL@F2f^l2lQC1@A&Dla_Z*D66#`MrD}`?^&@ghI>|? zA+5En3t?4Gi`INovFtUX-Hp1pn{g})3F&rswD=kO!+?!gCd@_*8 z5w=$6r?)_-jb*Y#MzK#eWwaQ}s6{zbScMW1#mrD4*^3HX&w`w55q$+Dv?vlf2La`Z z(?ML(4`N{fpH<|u1c}2JMukwgAyy(5bj;vdf?kr>LcHf&b;J=mCiX0+plh0D?6wZ= z60Kpy0c&8E!fJ9Ogo?sadey7QVvPT#S6LPLk5gt**)}KS(nm1qp~@C=@YITosO$=* zn8|uM#!XYLixi9LGm%=E_$FtfvhgrzygBLZBEr@vRJNm4V*vsJGTtwYW_ZIUf=xVN z2Dw=?$YH#j-a)S39OPOeZ-zQE)b%l5kK0g}QQy-w;Jv5nz*v7V-U`;3>iaX*!;v$_ zJ+j42Y^n!Da$-|`B{Nk`&d3}KC|=1@a{wfO*MCWtGSE!z|RUb$MTHW%hQH>kA`}zedsB% zRr$K(z)*h?D-N`LPL!EGvT6M1nrhlqFBL&uusv1sl`MXxrZ0uEx#m`AN~ChrC64c6nvd-~RoE=6fJv%l=gGHLp1|xt4DD)rFFR{bJ{w((QeVgs?due~)yE2CMckLoF zfc@Q@DEs>??e9=RP5Zmp-VqVe#r}>M1FEVdB0}^soTob2-*w<|BA2;R+PnRIlV0Yk zLpR|>SLLch2fds%!T-rem?~aq*ak_Pn5rp^1pRYg{~H(wo!IBoba=PI9KB>qZ$D&j{pH zT>QDw#>IcgEa{phU9+S+wM)7$4m&P>b9lH7m6?u<7gO*E;^G~Ni>GlLLGkz297KrF z#Ed0K2?Q8nQ2gdPTOH~=%%FILv?%8zNu3cHVadEbZD^mWh$712N!95A2b(cTkHioG3t%}I-#~Z>_U2Id zw5*RV5Z=~-@R+zJ;qBG*38Lb&rxF#<`9#eIW#PmI!tWBR#l}GR9u4sW1j1`We4?Lo z^>y!t_@V3TtO@?_M>DWx%sZW_Ud-@@7!vrjOd`*V8QwtM8}q!hjPKn-;LRXsVGae# zlV7mCJ%@! zMD&GJBZxf6OW)qtF zoLKnnq^aMViH1+k1mh!CosNz8ua{`}ePn^oFcn`0PhSRu4TPHu^-&Wp0<8_2-X5u6jfkcaw27C!*c5%wsy2oS?^m40GQZ z_MEfqIhas@5gi75+%>Uwc|%a&yU8L=TmsX2Ov>lx6VxY?nj^OeV5hRie*-9MhRAml zWb8G;5cy8ZI%}X8n)=}nZy6&`X9GR@yHLJ#ZZ|W?nH^c+1~tYzvTVUp-%0d)7JM_* zVIO0&7t0p+V#z4(&enM-ZrPEglk|??fcHMLQ)wT|z?%*A`4L%&TW^lzNwmD+pX6-Y z_mr1Vype7z|2t+a*sKMcwcx2;3m$s-JXB+g1=SMTD zWh^{qZ1aOMV4f8fFGQvDp$7sGL@rp2UZ8u=e#Ez8H+({sBX7KY`|p=_R-CuCKGUi|0l&w)J77HzV9c zo9WF6w<{>_%{UkCmT@klyE{kF?=-)CzoXp`cuwK6bLo{U7%I?o-B9Koznwc&rEMpD^_`QOFcfoAzs;PS@{Fu6mH zLD4;-irl;%_ozmoea<&-18e)sSe`~9+{3Pw+UC`UOGs3{5WRHmTIoDJ8Q|rGBW|Se zZyoD27@TCYS%tg4x@7nUEn3-%dWXi6)W-~Pxk_c&@` zf4fyjXQm>PIm~RbjdJakDapOx0cluw}4S;vy2ClHP zme>GZyI-Lcb!W{E?PW(X<&d)9fZPhv%!QELRQS>R1hPSK!T+MpPD1G9<+s`OxN#OWchR?6JC@`1FlKR^_Wz z$BRWFTn*hrAU}?tup4-VeAz@W_!*mm;YRfaZd=1`{MP<+wb1jQuc5Kv8+O%(0}p;* zve9Pl30%Z0@##?seN;XPrysO~7ZiEl6E@~UI7I=g;RaS(3lf1q!Xo7XNmc&Wk#Gs} zaIeS%GOlly2e%QOSPd;L4=dK)Qlye9uhZGcr8pc#qv6?`@L89go3P=9u2L)yS8b_I zvv#pWSd<9eYD@`Yk-+g)m>D1ur~*z<(E{?bAh*h;NH`R+Cv2v@7au4k6c&ZT;^)%Y z7L*04h)Yus3vqGkC=DK7YWplcQ}Sr~%V>e(XM{kZOqhwHC}98Qk+)1{D;}Zm`}(N5 z?Ci%Z6*qyQaK$=?o-B9x%lIC0w13%I)JOA_bGdh3--|r7z?2*Q)f&FGRQV`hh@-=9 z{TRA58UP=d`9oOz&_R=;SM#-wf8_`^VrDvC=j$W9ZofXl>*nF*>7ZdzJV*zNhr8;| zVpxz|3M^2emCGWFD)}j<$kCx?^h?PBKgP+(PKvdHu!|y)@~}>!EmzSkQ6ssEZ#o}ZxC&`uS*_+(?3~@a>c>~{ znS8kleUu!1Go6>C0R(kP z545-iMTLA}9a^gn$R$-cq|QUm7==Xu@Ifs9&*u?wWJMmzq`X@(#3(NiDnxy+PJ#fX zo}-$^bJTZQXQy|tcbFCKXI3Q9XR%ltyhKJEQDvfUqP37i&pWn+LOwMx3c-+%@wvGV zm%$?2iADaR6BgMTEdBJr0x=3$ddk4kF0k}7okU^kU@5TXidN$WmKs<}aBE=c_`_1I z#SJXoMp*jU0b%K9#{-uB^}r}(bgzF?Z5&t3RsH3F2E4Ze>TGq zvs%j4(!c8@3R4G5?>DeCS!p$})WFioSS{6B+`!Upgr$E!AT0g+@qnfOFfa-k9V|6i zq#G>#$4*#eYq0eBfdyg|uvD*(8CWVd*IXn17dnZ;)WOo8*IkSe-x%?Y5g!&@+KG4C zh~Kk~!x-_0WyF7BKv??1c)-#Z2Sy>IgQW(Gbc3Z|?1V+O21~y@ut1Cgmg?0p154Y( z(tqhB3R4G5dtP@ju++d(153vQmiBDpFtBu3u=Fbf!qTsd2Q0lhFbWwREHzl98!Y{5 zCoHlxSo+ey0x=3$szY21ENu@uMLbsMh8m`7U>2{*A6hyFAj!7I9w+D`fA0Q(c#yR*_lXuM(sHWvjfHn zUH*8Xw;C2DcsRP|HV_0{l92eh^9UthyLi6AP{Lxg=A*OleuOaJTC*$M00m*-2*JAo zzfT0Dx@$JB735ZZ|3c^@pwB^Qpz~npVk?FaA;4?68$pB!=|h|X9`z#FnEZDgIf%=+ zvW~dJBI5uH%3F<`hXNOw+T7&=VSi<86Neu!nBk8V%rXuCTnRBnEyN8$ZD8POOA&U?6W0s)gsyy(uAN9QjMIIDh6F*fb?W z9^f^}1JE#Wu0cWeh~YzgM3p){R8eI_wgw27M6`KOr8DiCjrdJ&wSstShD6$`qN=CK zbAZHk#(g8yozb5zgCpY_3VQWfSK(GDqYdU6_Q|MyL`wf9+yJ7FSq-_&xM>?PmB{Wc z3FlSLVfQx1P2*)KHshvI7hk?4J`^K?T^(V}bcvgmJ0)&fj^em!@HFVSXLO#I(XPCVf}=_z zsZBu)UG^OjLB3|yzccx6czDg$TL>YAED#K-mQT%&0m*c9A7Iyf2-FjJ;EIh7FTLU< z%HjnsJ~-}@?oxt~=)OQHC`D`d{fReZ~;{FY;b zgN0Ss>>pH{pbVkfEb_++N(k33QSG6ERs$6UgUTk>Ko|NBpSQqZd(nELz@RAItk!dz zT2Cl4P$C`pjWGg&-}apJOi~f@Fiv%EWmoD@F3dPlE+@BK&^hEu*ibHn7(ltDsa%{? zxlU_IK(6Vya+f8Anu_DfD~~(2dzocK(}XC(eW7y)9(1EmqA(sq+#$!%wFra15A6$4 zuRGr@J(sTv9gbRzj{lS*hYIc_e+ybov$v2V0mm2{a1SyaWM&o; z!nwEd4Fe{60~3G{38_1Plze0KH%QA=LyEsLkitL;11S*v)&ajxFr;|4S4bhsk3>`) z0mlwl^iHBa3V88Td!5?l>&cCG0<%r

dE8=73x|>n`!6M$iV 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⇟Q}70Pi{> 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

    9>dR1_8* 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�T?|HJX_a^pSOX|jS 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

    +9db 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 tyo`Y$BNze0lY-$+nzMuPThB`v=B@3A}lG3 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

  1. {PPq}uEvd5V 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%0DM3t(up_d+M?A@T41$DNkn zi5OS??7u?qzC%|(_n&!od$;2BimG3|?~mkMc{>6D$1eUz@Fgtx-zPq#(c>zoHJ(=; z)YpILvAJ%&EFLqnj9m!x_eL1e!%+I{%mZ{f!>{Wb1CrU>z|*9P>IagF-g^%XAhNrLe}TH;XyRu=w}3>;;;#;s29LWWz6U)!;%*>|tP;0JWye{vPz9N zj5adV4b5)VhUC7qG3EYb$xI>k7;(TkxEV?NnOX*iuhm6C zILMe!t(KAg;w#5hU&86PM}W>P+DrJ5J%DfVUIGowgQy;w;xp(Mr&(AFOxDVJ)Emde z`k79~e;umTXxK0)uthKuNpivtXy8^jH+@6+gPz!>H2R3}bp{VK10J`29z?}rxyath z$0a^o9u)%KA&cDI;otP+Fi?=NsO}hYYs}(Cyve#Rrh+-Sz-UU;C;vu|9Pu;hk>~0G zjw_H*)>U6Hgt(hL5bo>W`?KLMke@2VqX!sMnz`(q*=;I$;g!} zj&V;78R3U#gEKl$Lm+!1YLPUjY{+z|%7=eEOQXm|P_K0C1J*%56z)S9=T6QxSAVKt zk4{yB1#p4Qbc4kRJ^5nKActp)+K+KKdfNEu6$%ms$6IKllJ>{rre zb@}Npb}~#}8V~kSwLla$qH3Fl=!}X#Z zv(3sLaI$=YV#$8UlZk&SH(@{Ipu*Zaj-s{wkY@+sYO)`?K-dpm!1hCF$}QozC9xyJ zv>ejEfrD28b~reKeU1_B$?MRUU&ZYasYFj7;SzJZE+6KS^PiAFW(e>#xyc11dZ-_y zSa{3Cs0HSxZF7KyhOfm@c*7hl&vbAHB915Fz+~6_fH@tKNL?dljmFn;dY{~mD^%fB z5$?_00F0(Fd4T7&2RQegGI@Y&*6aZuUYy@2vx@TcKqR#BQQh0w2qK-)NMvu{gB!o#=+QgFp z9Trtz7Be^~jJr|t;Ww7CsH)3qr=!$P$A~BaN?Qph(R?j?tSA$6VC_9D{0m69gdgpJ zKuf$3xu#AMH?X?6bT_%VC-465CS4Cgb?}E>U^X?^odZDM+%3UP%*-@Ire6U zbFQm~d)1iXv09$EtR}Ea98Sc%B?24s(a1I+sfd?E5r#dPF~k=h7`)O)`t&4*oK+?`&zm zntwT0N)Y6nW|ytfY4!JIE<@_G!FBrPVv5mUx_NIl#_<9CB!E+bjdWd6Rj2^J9#P8E zf{a(MblD6w8i)BA`691{GD%M5P)xbKh3$sCDh?@67^Zfn6SqkQs}rSRX4WCVPNx#H zS7(fAWok=3nPk}L9wEa<-IF>~CgRgDEJMm8C24AajY!!X>r{Vq+Q=ZWwbc_1TKP|3 zntD2TX_yv(2j1F;3PrxYRF@AI7cRU+Z=D&Mr%GxEm3M}=QKMRqUguC06rVcG)O6RnT@o5`%H@el$NDtc>{y+jP93TKhgdS{3Y$i+&(mf~q=oD_)lVr?-#AWdb zSDSTAiJx6Aj^wMYr{yQc)oXmjnZCF}Y|djNM0qO;2}ilXB{S%whA0*}>I$S{k0noQ zFHwSNc`45@VTl%qCSH?-#oN=OGiKme06ozTu}zHDClrekNc`|b9i8hd`a-XE$ISzb zodc33PTfn_#Z^y?AM`<~-0IuHX^>5Bq!3abe}|K^U7(00Punx}^m1-t#)>KjP@2pr zn=xUNx%OV6A9TjY>m;0bsbg@Ck5hVH!l0_3L5ol4HP5G&tg|bOlgb~h^+&!6aSbOp zATZEqMMI@_LIghCZ-r?K=tPvO5u-3lKJ`p0(~Or)m)2yrI&}Cfj@)_!T3y{! z#k%Qjk9FsSDtM=IV#XPEuYSSJijFA!Pc)KQ- z@C)IQC3ckJ+cQlG+_@0$Nh*SVXe>IX^pLhGc}M0MGb0Q4f-hww(JIvmX<7PoXM9$< z(}|tSvo5A_uvFC)Vp&?!Qh&AO=J5d|aW=BYhG->8A-zC8zKLLMMoTwplL<)}_Fxth zTCoIdIzb|1g}R7TN602yd(>88Mk;nOXb&K8u@Q9Qq`Vpi=qlf&;V^FEfOT%hqLwn^ zQ~M7f#3F&ZluZ;LlSAN|psk(Q7eyDhZ z6W*xzIt0zYBA_31jA5UgK{&9YVRzf0gN8A8)Avou4T52TtZLULC(f54Y*Gk8U?hi8 zA^*O7fzx0~n1aO%UBiv=5qki>#3r?S0g@loES5x@qM@R)DZpX?3oK$l?i(zCsNCX1 zaIKh4&_MLYlb8)&X3_&jXk}rot}z0f<7+UY{Tz(YbG>OWg8MY3@Q6#jr@-0>q{!4I zGG`^Epui<6;0juk4W!d#XEE8}t)`xzG}&H+eCb7pw3jSeg00Nd$i9G72~lWK^YL}Z zb}=K2NQmJI2Ls^ftLDK)Q)R`@ z77BY%AhS(B2oG75-O$<^Y2k?(GDTF>C4<-_! z2&=hbck29F(Xk+R z3&ztgAk*2pZV}LXA-5@j&{#${<)Lu%r{qrmeC*nH_{u(ey0*~`-csH9sgv}VQc9NY z=~6 zJ2eAyBBSagI!^F#R3Z;oCSFhqoH|xvSjQ^p;qs_hJp*KQtU{(Mi9j~&w(~sD9OSyy z7J0JCvb73y9|gMn1-i;&ouK>v1l>->RZIgI0VW>AyCQr^H1V$kKQIL#B;V|GUR;2Z zkwO+z&h`$AhFj9hD)|`fLu-PAoc|7=4dJQ;d`eK2cR#y}of2Gn3~v`OYAsGN!$V|y z(BgPMvi5qpx2}gM+Qkc#;zpadyJ(VQ0IiA@Gk!Jo<|aN9x_Vo_12Pj zn!3B#Ih8b0bQVkE)wOF5*U2@9SGeYku zknJnpfBuQV-3+cn;xNvQ>3h=buA&}E>P#6;q z>N)^Q(a`T%%X<(l@1vxQUq4sm{*TQQYc_)P$ zx^{?wHnmRSlMc#2I>9|w3Kvy2%1}^t)ysqU46Pclj85M)vxk){Z#oddvB%iW7vz(-3$+0?4Uv8uNR4UKuyhPz-d<L3* zNn>t?)#4@%5vN>h&o;^tT-F4br9L%jw4#~GEnF)hH^1iXl4m^~8hUG^xMklv=0?RE zC&4GFh1+Jd;J0@^HiP4u6i3b1^hK^L-2^VDMTJLR7ko*Bari0N-ryR_8?U6B&t= zep`DZz#+t*m0%KN8Zgybg2BWpNqz&NH>A8)RvU1LlwMhb$@+4DiDzgM$!~z00Fw(W z15?{&;BoptKPH$YRs~uFCg|qFa4)vNP0xN~MhH@45trXP{EYpF{E@bfx=IPG^EA_` zUCw@#HcAAHl#T*U5$-ZP1DY4f!i7Eq-e!C6(q^Q<=JUeek?Uw>#G5*8(hKX#wL?d0 zxffE@f%k(Ku5h-c6MJm7hig6rdpLLDg-jwA+)ZQn4XU8%7Qfn`-7l}GP2)ib3$hYI z9+RDk{fuJ>x6!5!b307Fx28nk>63-D;v(!eWJy$SAx z(Ggfh>uQ)+xGID=M(dksoln@pqIE9NMgRoiF~bi51s*Im5B|*le>@t-@aU44s|x>` za5lQRN-U2z4}-2b@Fo^4-?LzklwcJe`h@U{m82U};&U7kXS;;wqa*k}^#;@Gweyg* zrXXb^V_0=2GA`>Wz=G1Af|QAj0zorpWtmz=Guu(7S({~tF1mtcA0Zo-XXkjWJMCjzgd#2<^$)i+m0N*p`I!E*hkQBvsGm>UDuvifi|-#jIut zVDl11)Y>Ju-h|3{)21CNBcjd@n2-e@w!LE(t?j}QQeQBEMk9118O_*3P`%g{xKnZF zlSuZmM>!s`6~-XAU?(g^u`iR!x>GV)SFzysQ4jj!%b+iaEH!}(oQ%@kcN^4{ zr-A5~;xZhA#c%9EQ$8(AiPi{$pqe%^qpFE-F69COM#Gw4KxjWK>Cqpd(^HCRO`^USkhsPd~k-%e?l>vdyu zlyZUH3QT~>A-4{HXIABOi9vAJUa{1iITAJW0vU@ET9oCfv@_@_FS(Y{kt>C@hm%$Y z?xl#g7nqoA@7NRy5}pxqb5mC#K0#mX!36RY;>GR;6-zmS7ucHHG!SBn6e0ol&n>5% zXK2EOYWN5cn3ObNje<66h~Z)A{M#|6CVZ3pNCHRmstbjEq;wf<=MQv$qf+_6$SQdB5@it%ux}9qPJ8btLlQ0Q)C#b>vY<*sFRQDI_FcJ31#L1LcMCKqDC3SJqhrj3=f0Q31zt9 zltt_VRJWTSaP)M3j50-_3`-$UhAMTK*uX{E?5wq?R#!=sC7EjvYb?A#ReB zK%4eM1Jq876Vt*8B)G_wi%)@|G)|72nBdcp976(_TOkcW=lgq}^}c)UJ)_aclDX9g z&wJVHU6*G)>$$IIJz;PZzCk9}Ueg-!k2MNKAI0ND7CLXMNnqhrC}!1zV!}^N0<@=zs(^$Od-K@Q ziICCHA^$@Fr_J4c#0SPY<_gHm99dnkkG&9lK-xT950(9&FRSHc_MAP`!Wa8x+nKjO z46wc0smQbt#LFM;ROEr3inzepsi+NEcyFLK3WO3XWD=rhb}sVPcP?h^TpTN(v4v4D zaG6j6-~&kU`atlq4ml8Oj4HQUFjig>IH+^aK+Flsk^CYjjT1f?j2D44=F=n)(b*b^ zfCm>#LMblmUB14Mh$6V`NX1E=691M>l(=f0(#-1;RcdBA!V`W>A$Wm@D2`152Ko&l z2@2OoX|91J+r#CC#BNTFd?O;iN2h9LWqhV)eGq3=mU&WK@$a^`m4`I;bMhmcr)duFIh|L} z@ot*XGPh&KD4;o(8NhBIXZN7lAX4?$4o`EhhWE4s%=ta^luaeX2j~#c&P{GxK{Ckr zs{WmxHmlP=J5}kb?5L+zFUL;(lu}3wQuELeSIUk$X}yJfOQo!iR_h!PZ8e;QGj&$n z%MY^lKQGt54ivTB$;ZK1$I&;E*etE-L9Ys%umC+xn1YXNQ<%1fK%%v~h3;U76y`!r zj=wY*w^4%!fp~e>&qEE+@`Ls6@HjO%?9||D)w)UDjov7h(0a2RV!b-HeS^u-79Q4& z5~WuKSffy5dn(siXd*4PghbBFYHIq9?X})ZA~+V;bV!qDVP)2oSyMG8Xv#8O;ZD=> z1ufJo1R#Y-m}#zT^#971uQ+(M{VBi)!$zz8i%$Wc_v-E=va;Tnl|PRnz@Ly3{~k!!(#6tB7kepwDj5bNn*as zq4-vT)M7reLnHOE?YA*Gg>;iVACS?HXWRGXM@Ay%7(3g^diS+u67^EN#KxDbC`*}4#eY#&oXLt1HQcwwa>O7BW8 zhGy?gE@pD9NLO(-6tPXtp+FW2uprSpE*8c)eA9ukTTU^I52@tqHHTDcConkH)cy## zktvGEFQ}eO3=MO?1lDrdt+e%8cjW2GUxermDKjyD=P*~_>^`}M;JJq_(90E<{$IE8 zG+IhBL;%wfb`}})vr}~F=<#J|hf#H#D1*KzIto^7&2S1$4u&N@yP zLB)`s7IH%0cBrS9Txwz+JzKKj+b$2jX_j*b%GV#HnD)w%Y{)vg!;_v-Wub5lS-a(T z7!Mv~{f%t9aqu8u-8gt~?U5Rr&E&s74jzooxDb!ON+xBRuH#PhtmPvoQXM>)Rl$RL zIT<{tccA5X@St9bsKmj85>|O*lV*C9Hh$Qel)Bs__p$bj=~gv1q@3&!K`HQAUslXw zfIxByL}Xe-1h`L%jv%t_(uZe>)Fvvh6Ql>*d_8!mwuldmQp*^;g}8#eV!eU#h};Cq z150ztvrN<0swfX%80FEIMtM?uWi{DxJ2)I9DzfJ^99OGeS=g5e_2%Xp)#v^&ADcxp zxOYl2IcK+is{s_iGZu!E6BhfMIMcD=dmDI9cav`ai^8@{a_V-Juw{X+$6>dVAd<;s z$t+D)zojGBRIOW1D*he-S()3A{N@8q`;s_E&_$)kOOcXNv%>*WX~Y0pP>~7V@rTVE{>VY zg85A}n60OVf)=rumT!j#0Pwd<7}uKEQ+=*0b|7HHG`#@uYXa`^V)v{w9fNa$J4@n` zDxUgWq(Qgqo-2~M$V7>$FVfv=!X9aHmi4|B{_Hr=|1#*I2##~dnq7oEGmn?jjamNN z2^rm4P}fB-ol)0hN@1|8R8;INA57rf&!fh{Zn3S=zv6kE3W&PZH-`h1dAT1>WhN-w zIZk6lniW*8Oe z1Ke&EXl=C8{7VY7u1~nTjv>LB1jYD-yS%7QxXZPHF7&Qj?3Pe&)^-=59(Mpnk=PT| z%|iB=)+dRW3J6E46SzdYg^D!SN6RY@x1mGk=v>D80torxt~Mx#hNYyREtxx4nar|X zbQU2LHe;Zh7`Nr$WTuD#PhY$^xOg<#&mTOO`GLF)&IdCL7mk2{z$Puu$C6VjGN8YI zu?Cd1pU1%{P_W6V-*i!Nq=TNM&Lj9oz!^)DRLwZs(lp~4?ns4)Rx7wXoJ13z1=d(z zR?YWex!e$o#%8<@t=EiimOEms5>8lsVB`qE1QuIB2iuTN-Gq*vbE82A zsyyt|ISb9$3)Zpeat}*z3)`Q~O;E#&p4XimoFv7gH5!17(~~EwfiM!ul!c3#g+$Kn z8vJ&cYBl)W2G1MLRz|Yb;7{Lp@S8b&H=^&8D_mi42|wHX8iNHxNdm!9U9f|11rDs|LR{8hmDh=S^>THgrvB ze})GCbPA5>(bFS>_w0D^&t8AA9`%aUITzbyEr?-zNYP07|QAP;a5cg2T`tr3__zERgGW;*UV=bCRF z2XpioRr;(Gtn^vql}3-<;xr$tU3UA^l3xnHEcm7G7d)UEYuA?B#8?+juv-h`-HINg zu|D$zD}Cm8rO{)zIMc^!m)-uf#wu30Ase zywd2gTb%A=waadQTJlTbmj%D{{X$|9jWst(X=1F~Pq16t$Ga6hMq@2bu+n0@(&({U zZ1J($Ww$>q`K9p7f?xW6!I7=8Vn$m_n<7nXuo>DEg%7$KUvHN($2&^SmJ-#a=#vUb z<_z^Q=@eVsO}?cd208JUd;H@4PrUz$_n!=oTTsdLDTRyY%M(oBJLQzjnA{PV^=f=5 zX_4*6?5IeM=N8Y!O~NaM@^H1N>ke5DGicQy$F_sbJ!OdLAVmw)9&vMj^sh1xx+&NS zpipVN^X4Fw@s_f*ho`s5US0P8iE&b_8CX;?6i9iml(1OsmJ(8v|4r)M8|h)2J#vuX zhmjr@E7myLU9p}XVPRlGzOlI4;(Q_p|N0hZpf4-sxMHoK6yhkryK%*O+7)a4;EMGa z1SOlG$Lbg@ZmBee;^A1Ct*sX)pv-O-h-1oZ3`AKA1hjRn6J5Yi0kK<|di8SB)T?*! z&-aII+;+NMp_d9>VUQzbHYErI)0x!j-HJ)66*>?Yaf>$u7tk3AcLZHMx!NoZY$Vy9 zyt*7lqNVkeHv5z|`;<2Olr~!vyr;C;r?lDeUHg&xDls&Ad`g>rN}HXRe)NHA)r4VfzKvfJ}kF8QVK3kRiWLi>Kf87FNvHIaBibC1*;;&38s?lE=}Pme3v(WAwk zSU9mOu!_w}$la_9jyqkJ{8IRZ0~~6V6#@_W$I6f1e>IwFqqz8L1;X$R4rSSCP*d4aYI&aJW|NKyD z3mdwB-1lYfpC3x!*M{yN_k9KT&kv#RYeV;s`@YQm^F!(T+R**uzAtnCY|{5t#MH7_ z!5$%jYh38s*z0*5-`B}E5c$63{(<1h0c6&K0?+q^w!oX-@Y#^h+V^#~>`S#%=IoIr zY;Zw5_zTt_{MqBIB6_TSUr$;CMHmOhk^U#!?r_?aPbxUEuzJdHDj-cT%u{HU9)UJ? zD{jW79QhF?%twz;T$uksbi+MS*Oa{86Z86g?}jrGJ#oL&iMXZ|-Y_xN?|V1g6Ln1~ zj%8x3-}i2~Co0SCb!APJe&qLvhtsN15w!48P3Cr8fgqq=Uy>m_26A}<;^H;>o_isUd+RL z>+|r92Y(zF$H_Mkg>5NF4*>?OZw%)(cw)xt!Mo_nn^D*no6R?x`F=e3{u3EI4Qw>? zC*MF6wxu9F1`l~_4A0cyi5aU0@1iSjdc!UF$t1mz?scQVpL|Fe4Qw>{lW!o5M9wV* z=`nctSYvpa29Mla58e&kyy*?M2GP~xR2AGdlCNUsz8SGP3aSyMi5?}oTAb>W*+3YH z244l~jfZW;)H53M)m=$7+||{Pc;kX@@ti!fMS0~0ge}ZG3A0KP<7>zX+RyKnyk#sUCthkwz9ovq>cG=h<8p5{3 zKqtm}`U#Hp^zpGqkI`7qIKfKK7_T&XWIL(Pt6g^c(~@5bzbyELovJ>sA#6*M(!^L# zVJH*(bTF{)wB#ztY;2y(idkA552@$PNH(KG8!@R9%uFVnh@=(KX&TswNu7KHk!&We zOp_1_PRW*d^~VuRPd?oLID+ZPHxNc5CMB-S;Nb|3;i3l5cCdQz zE}QXYB%A#(2&T3?CC!dxvzX^C#Dia0fACRYtk!(=s5Nhb>66(&7>Nd7ZJimH&EoN#6_4kv6CRIC zAtxfQ1ljBdk%ynKyh7lqLh64IdH4z2d_qXQ=;{OyUpzt4VsTuwh#n((k>o@kV zj>%?{lqSYH8_nxxYRg(yXv6-wzL}iM-o%oL*^cem{#W(m zVlk^UtoX{^HrG<&M_Mw{?Jd|4Zb#8*7kQx&ZtWyL-?pOnE?m2xUz^0khGtr3&-af) zq^aRi%ZN+TG&bNW$-vFZFvyNzEPCgs3!EmF?Mz7AZ{j0y0?MI8T(3o<^BZsMY@^px z_BINK_y#}K$hZ2^%q7d6e~7t|L`doN1R^gH25`yX(j38%V-tAbc=>1ieIf-eU2eQ_ z$S;=MSK;rJEEB%VUOtm=v+~m``gpnVa*A8Rk4x1>1rvDju4?9&x$8XuzMS^`=T<)- zym454pxx7#-pw&mWqNaY_#0afJSR;Kl+!C+YF3&Z7-j$Fvj18VnmACO=a=WNh3!xo z4yx2r4C+qHx5}{+mWdtEUOBVJ#9~32y;Hjqa$g+udWn7jLRtT7%*pJQBp?4@3I=gx zOmbk*QRFlw5huxIr72>{*%@HRtV_b)!}gb5>=i&91@9T7cC#sJ;IGYdKCoF44A2M|ZWCa?Ej$fE@|yU8`YdmyiHH)rHZ6DW=-88HNbJfc5lie!>G9lpV2+N0MLgkm>SGv9C6!d32!6|T znl0C)%#^v$MkpL1my{mJKgJ(KE=wCCTvSqVUI2P(;^r3HH_m;vk=;^$fCM2;I+ctP ze(+GG)#ldIYE!gIEY7>b%&_N2$P%|JZTPbbw?P$j4P8XBi9vRb?S z!_P4%^u0=CCRhnDoF4j7JCFvNa_jPU{_g0}_TOitO6{Z1qWlH)cp|xvCDLJw$b%1@ z$6+*Nh)YRYBoTEiVFhQ#u9vVPtrJ$HB=k7Owiz}A86a46b!GrHz*If)Z8M&}z_!hZ z5{x!{bafITIsnJfFw?*D9G!JNP=27M33A*4JHn>dPoMB?nb3Wj6}7Eu|!pfgus%Ec>;*fu8q&j)hM{ zIR^>Ot#CAa0$ucch@?jH%#s}3TF_?E6UZ&=hS(;Fs640Sg--v()MlPrgmY|Hl|%Ts zRGgNlai@tI4 z3eU(!`Y+Flblbt92oUK(LL+d{1!l>r;eMWs%R;4JYt4{am2X1wt@7w+^Mj&X&t*!= z!ynNph3{&Wr;*zR!mZhX5FHXB8Y6o~s6CYteIaSG@pnpNDDi!9ocIIZr{%&3f*GvH zPsK@7RHyzUJk2n2%{*zx7L$6Y*)JX)D^Q#y7qA$kGK)M7!Ruw54 z^6Hh*K?b8aXy0>%4n-$+}0J zUZx{XtIRtSN1S#>lto$9{D{-&sGXXSk<_N%y4I<-uIc6E)-}C@QdC>loRH}y0s~n& zN9}dhAn%w0eS(~T1KeX^8Ee4{Tiqfqj!!_AgQJ8`{HgJ&BYaB5MGT+#i4&v@pV*D5 zl3HGQ{~K+V9byqGhj5Q{ugrOxGfR$Yh;B;wXSn8~H3>55vP+^neO=FlB~*2yFA;}K zu`}liO-yzvv|id;7CW`)^ryJDJnuI!v>RARP|%&dU2AcQA=sKyw;KE>&NwCM^?#D7 z(=vKJrp=_neaIQg6v-7m6Fg=0sbL}nSI4f4*6m8PQ`HIEv?b~-ra83u1vyzG=|73d zC`?vL$+akEmdZ?l36`UPDs~o$jRJcj*H$Zg9c@v>z>XScCjbFF(=Ls!a%7>D?#R|y{0j|sq3CP@)uCVI5!frdi z?dD#B$yjjhBK4xJHjf3}p~}5`0VqU9P`Q91l#P{pZ!a#nP{O zMel{2~*_}ExcPCsx7VV!PSiggNT#W_9)q`83V~fN$bde!HPjo`obkUr-*ByrLt$Ezw|$B=OI&$B?zvNGQI{S zYkK1R0%oEDC8$z?(h{*}%0^E8ItJM21C{OJ1dN2v80IjoV4L6}^fW|UlvROm1PhJ< zHBgueTlL&JG%>f}?R)`saB z&a9^{XH938r+Jdd#=%82CgW0<_{d>X&fK3(Q!-7eDK)vOynAr3NcnHnx<}(Ux`&jY zrg*R?exN4Ck5srTNmw;pWRDV3hNf7)VOgb>Ve0(x|D|Y1p)h-`rqK-u>) zK+VbkHD?B>o*AIJ*r2@L*Z>t8as!m~M4bWdbH*B7ZArZJ(FKcH_@E<;nN5Ne8&eC( ze~%=jmBEyI&UnsShn2q!I3S1G4Dy*DgDc}F=|Ud0Lqot<6IVD=wwQs?fF>VFtF!Vf zAFG|wpqU_Zx>%JTnwv^N&_7F7OG;c%P>!H8xJ1w-DYUJLb8}8QX;$x~E;6Q2hw4;f zXx`|YTpoKxum2%ROOogebS#J^MF-KFuI)5T+lhzxV_1b}pdq`v%QWpac`PquAK01{ z5?5UEX9mh7sDt|V0v_jB^T%txRC(zn662gwsQm<2SD zUD&vpETm8DIH+~5FA=*TV0OFkf}Ha;?Y94d+$bakI!>qkz0o3ii%v*~R0*Qx(flAx z8rs1GxR4*Lh5g?Hvd`h@4DUwkTn0S694rdQAvkK^D$9OSTwYxAfuEGtrHZed89IC% z--51eIJs6q5ptW80C*cYdW7AI^_)Gz9Dkv$$#MAOGC%qr6D$%A}OD!$u!@jrQzAJ$uu8n{zIHzOR_A$Cf1rvWeup3(*HT6Wd~Ix=@MF-(IkDXRd6D59WwOAli8K%{aLLtzK~VFppmKkYBcWn9KI z5Gr7%aip1$(Yrfw)OA-iBCcHiMwq$CCj^6+jfYE_Ts=f#&obDB!I_14mU%?{+yiVjuPL&d z;CgwvC?K0@7|EjL(%ad7IcqJ&x^m_j*yW7YK))yH!%$N{%#}wQszr67EbFGoUoulv zZ-H0!=|Xi(ilz#Tn0ZDq<<=*$3WO{Ux&nzLji}WfQbaUdJ4lHpMh7Vs!Ur9sl_lgs(56aDjspF2!_1aImvB}UJQ7dkrf>4=8uer#T_ z2<}z@upou*`ajGqnSfwqhQE4-GbGZ%RBv%KQ#Id)U`rg}0v{5J@z2s?%Zep6!Ih<< zOKBNqCZpyUqXEQu2TSwKL42h@bGC~MT@t_g9{_orW596{Q!bZxk1_I6SbF&tN%-GS zV#~X&xcqJ5#iN)1W17AEK6uCSYW2TEn7j0?nENHw>&7jWtc1fWEiS(w-hDsvn|KG@ zH7OgCd98D%d!qlUW53%%8q%Q{6ubOKDTd670jE>`9U_F}L4P!ljENO?5J~P5DWXV_ zNM~Il%_51^B*s~HVgNXY8F*w;X(I8@&JC=kQne~Y4$lM4GQL?CiBz>lnwDq2c;;-) z?LjW+X09jMPp&A<*hwX|X0&tse^XelOcXhSL~oi=gViJ*&o!flWQSNYqK92A13Jn~ zbD4rZaOt2YfpXG}W+TlgAJdE;)bcaU=p*$)JUr5j4sTL30zXiOXhxb*E{alVM*K3a z8Fi%@^-MEDKfpELxv7A4NaH%TW^^v|&YTS;=?$;=$52lP^>+v-Nre@#o`Y8+2ww53 zgR*g^qMv5J9ZBHIEsr!eO=~8`P0ySoRI?cZ$8uoEy~HF*PJFF%v!sj4!}_2P90w1S$9 z9%ftDtt0NJ)%3hFzqx!=-fdAIbI=(9!aJkvBtb;oW!^(0Loj(sy3a6TB{keQs&(H* zG7Aj@Qf1+-xL!ILIR=LLiYXtKFl-CxqLiqT@{aF-Z~ETCMi_3#CjP#Uo~I*)?6npS zqGi$JEX9hUR{&%nSOiAu-6hw~oEg|j0AC06quR}bPwEX~;Hd=P(~k?jW5S1-D~c2@Y(7D;RgFB;{qD>=Zu=n_Ly+*p@L0C=AD!IBJW*kK#c1t!0IBW00S zwoAN|P~AXCl9!dA=!j1I1UN`p7o~3j7bGf6Sh8iZH@S#kKqHu0xk}HHALSWSHK&Ve z`u1xvs9SfXW$(o^ivr27n*oNg(+iIIWqx`2R;@^Ahl-TB4);Pl01xS{7KT;?%C%{H zwU4-b=L5uIp@gYe4@}RPL)L@O{B$M#Rn7s~Y_z;pnvf-#5KV!*z?^rC+|Nr^AWz4L z0@X>@hey#t?se9&7SJ$50dR($vr_(!Gf(j}QUV#pr2mHKrjZFC<#pxi9JJUY1Tgmt z^=;%-ECB?XgN|ZvyaDMyR8Iq(@I8%e?CUT>aDusvQfkl(#dJ*?a@IR$!h1M?i&bQZ zoz{qLU=aw6G+@Es6h&Y}q6iZxZFP-PgcCw(+`dDdf0k=jjxzp~&*>0aoahx8EM(2p zTga3Of=i*iNH`~`$m}OXk{Z^A|H<}Ua=7Ea?)1Oh0&HiASSKZu-v0}oO$#*4^p1aw zm7_V4K^%5|ap_`r)dE5JVa*X;lazaz_Ze(3WMfz!RskvKp`?x zR)sh&8^GLzARwhck!_>_o zOe-qvgnc`6Z6cl2CbC+a@H$MJFb5-IdC(@BZsWGtBm|XU<7Vt*HtxGoXc&b~P-*!C}hR}b`&>vF@ z7&vsRqlrsf00cYWYO<)5)`2G4BDVzqGMT5)n2dP>MhgIZ@&&L}h0J+C`>(WyOhtgC zJ0`;jOd4oSRrJ@Q1X&CIyc{NZ-pLz%nm{W@Y zYF_n%imy6gfZ|6c2Vg*fmlDNV5jcQT^JWa--)J>Pq7;^I3RrT4sdw8{ODV@Uq^j z9}nl~@X~@F&Z(9c55dscu|>|8(9^FgCL9X0VzDb}Zry(b5`iI7E&F)B&I<#uOc|P0 zi{;`@oL$a!MBDvBb4^fBZQ>#a0hh9C5h0*XY-XV**^@MBjbg6I6-W-(p}fb?$fP!8 zee;FlA+-wgPUUwgM9t>L|{7Fe^8L{sSb%td>-{CL>*A+(I2a zVwz$kO_>$J&pt;AY|}JJNRLKS1=Ra!GK~hpSdGSRtI;3>zCV*?!bcMV>UpR}LxG9W zoWg*5aK;>@AgfLZb?h8?2&3YC4S871FqM}u2xw)yt5lE5=7lDkZ75&ziJOU^O!dFw6SPa2~kxqCpQbE+TH}_!JZRNpW zEjdK_9{fnn53H3{c`zt20nt+#^4?zFE}hplB9w=}x^*cb_6RmpzW=LR&q>JdDsAz; za4&iPo^X%mHE>OazAAVQpfvD88nHD77a%Dma5~tgMAKh_M0ip95-q{)vP+EK1YYq^ z4#F#pe(&K^YA2pbajh`&f#``yM`#7MO?8sdvi=uMt(ljwBQ&Av#!KLb>fIpgC0#n) zu{t`vd11nce+2eYZV`%z>OReQQfH7BiL(nlyG9&ETNRHfaJ7*?`*-48g8+dDhB`F% ze!6+hOj0)Sj(zd*tul$R^uUpG^2eZ+Lcd#uKVw~S1efAA+E2t6GP zb--%Y-J86OnubNve{-vB3Lj%)P9I<=D-@y+hWr zMB!lNnl+AQvt_byQhw>n0rpIs5FjVaGS_|`g%{)pErzn`Q2cr|*XoLRA`z}4OoZ+m zf*R63lD)*RP3)aQYZ#s}T(Kb`2Vsw3!#WI)AFh=aR1j>F?Uynj*&QP!C)HOP%Pgo*=<|mNxldB0Hw64LbB?UY&qAmI>ARmWnL%w2?EgEL~ zP^+mq)5tjFrCT0)4dXLaaMqo*01kbMt<&gI+!L28=9q0mV@Y3QTPwsQ`9+-DRUbGN zBI_M8@3AElh`}8FQ%H{K1BMKyhXNt9Go)0X87tFn>9Ohv`tJ5WB^#>*g*COwCn*Cs z-)u^mv#ty>^#g8Zwh7_SSexi;niQ(EqsjA{+uODVLKehqltBw~9gY zJ$ER!0cC^KWgN$3MJgNd93Cp3!)>J&)I5iGBc8)Ur4~H7JSR8fo+cZ{qYxrl{Z4iJRQw={t;G^X(3j@KQ}77zlEjX3AxbOK@dGZh zYebSNFju&Utl8jkH>EvWfohph zU_#Jro?!f6bKJTTJ(A27d8U@3Y_!t%5X=a8CU_k6K(~ZJKgMhEZ_1-8ye8IGf!a|PQ>># zgYp0SU5*zmLuNHvCY#A=W`=#GS*Zgyp>(r3#++{ui{(S?79;yn0*l5puqJm|GvqE) zqAS}G;mjFs%x6Ww&?=e=pB=NvCgwxA}9g7QAn;=gg|6htfuxTN_s2|Sa--sto zUm;TPp-hCz%B5so3N2Yc*W@vyJC_vsy+l&ycaVoeJnE97K@K$@sD}|OH_L_B60%z~*}riWFazhs+c9EXp@Atk7vJ#GOPXx)dbt2^#t@F&uwOeu zxBEU>2;{`(XF6H!HOA|uy~c$MH<(r*qt?(O;Knzt=wxlyk+~IeEXi1KqyyY4?i5F! z{V3tlrXw4RUw&&Hzl;OC+I2j>k>D<;Tf2RxX^ZfgA?jG1`8 z{q_J1q}jYa^w1zB=w5}@apWmBkgatW!{=-cEW(+Y0U&0YT5m}A)I)k_J*2mf59#eb zB<$N7jWA=I?yxl|4%_zS;=7h9F1_g>gH1LZENCL2Grr#O2aC2|yTvy-SY}nD6|!p~ zn59iGe0d(zfew+@hJfCTbWH7FtX}kxREoa#s&Ux8_D(Weh9g+Tm?d&x*(wlP@i^R~ zkSgs8Cj3|4@*%UBuz7*m_tn3%KTnZT*~IuOHGm2QSAl!->AOxLNs;J8*X39TQ1670f~8jb}f4|q~G|%^$O;e zjolTOX2CKF%t7*8Ygh951|bjv6CTxXL5hK<2Q0h~6=EB*Srwp~mh(3h+YXfTD}yQH z|4eJxGYP$Dm0x-vI>epz3RoRq0js_O(3`;Ci_*PZKnAq2-7>=*zb`T#?v+*pQX1|k zzGg~9@*Ae7%G(PlXVBaf+JQAYgmw_WQ?B;=N6_Zc!mu^+g6$=W&a}`Td^RMq(mRwv zFjOBBQHuvb0lw^U{5YX4tCq0IYT(G6su3$|A!f7vUtm`O_46x)8Qiz0sbiHj*Zj*- zAqny!*OsJl&7&Y;?jWrd_Khf!3^&DW|MP9j4yF35*0bUndkIdH&BxHkqA0+Lyv#r! zRkL8*%B(w#kmaLb*O{sU0nCo`VW8p&2xOQ-*rN~GSD19&j*Qg#0eSPJ08my@WggXv zP07+}e&NfOPIK+Jt&em{p+>Cs!>QcB`szxJ@5SWA1l?JuLOV9Erh-Bk5B^}#xL!Mi zC$oB1Ke}}c9vx%bJ#yLrJ5E_JkV>xxF0;NVY`PkW#t~o%?%~pAazAU?#cZdubK7OFQV1*l&9J4BV25-~F27?<%V*&37T+~toYY=2?KAwM-La~~Ib9yb! zSMGs{q^%(#>Kzsr?9E#)Fy9@o!g3~){mT8?(P|SM`ZkSgeloL!WRP+S0^O99zON{? zQ490K5p3aNUDzC+pFN!2GBD%ALr@UhZS=K^IOQLz&5{gOQ|5waG&o$yP^gRcYn!*^ zI#u~WuvEIjQb4i~V1xfpe4u&Otv!;`pAR&Ga^Ebm;s zlg0KrP?xI3sLIuEFACE{_*)|UeTMkgACWh!FK3p*7XXsDym=lJCtXepF$hj5`72qG zpRX|Mk8MlfZN8x3nJ0yYhy?< zFga9dJgAN#No%hXa2LK&^C*TS4G0VvY#kVweH|pnS_hfdj+TPN0z(@dljYqYGFNzE z>%fkr7|w~(NGb*h-pU{6X@2PJq?H)l|^GH3AfVam#!VFlcrVFf148BxMK=vWky)`ZQj6OopWn=_(E$gZOr zm}h~0HzM;up3yUG7puHs^ohX#*cY`R{&aJCASp>KAW6gj0N5w|wtAwz01JVMA3QyWqk+3$85ZPq(P|cF`hpE7Nkj+`^*fhDPP}N(OD+&JPjB5T8_o z7+hP6P@tZ!SIo3ljEWABMhNKcOzw1WLh6b%U#5|?;Q?%j4zK7)vueBw zFP8WfhkRM%EG`8*Aet!sVb?zAU0Y*Or0aFCD%)7t?!T#}wAQ>QJGD}a0WQnUfr+Pl z>^ra%(x;VQdh>Rn^%>y$8J4xWBM!h1h1M%^)M;voLD>f&nU3_Q@GYR+zo&&1Dlw+} zuhWn`)HmvBuO$Gs;wIK*h;?cnxQ+aB8(=XiO#dq-zsf z2$H1jGEpU~hvAvpdI4Od+gOCGY6YFu!S`#En)>%Y^DIA<-{!by_{SFl692x zQBKf2^GgInNNNqsj?NMx-dYaT|6;rjFLSIYB$h2?}4kwP^o1S_?T3AErJn zH-X|vm4{SAHG;;=wV65u!75Wn106~CV#lCZ9E8h`6W+1N$8&<}r38WbQFC3jCjb%1 zmM}SVhyY7_A|zWg46zey*TpI|!u&9A`Yc|ioNNh{n`dx|G(GvD1^nJnWJ7ni+5*w)Nj4yrv*N zrIHZUyY|I0MRXjF?m-lL{wk`WkVtxv}X#? zMTPy-)!gJSUiN;eY&KxtHm`_7!R9w$S?zG?n3Qy}>AWo^i*6$?L&1y1#FOx$V>p z2GXZFihA!cjM3-;%cy}#_a-oX zz4Z&9>HeHZ2%-uY)P!Yer;;sS=twf6BLKyh@A~~R@*!RMGWzn7tuolF^McYQx*>ok z-8=KNDT!(~2{I)pt0P428W3{a?C<=OtK((LBalel*v@GPKod)n*$$8lvM%~`q{RAN< zloWTX*-r-;4Rm9sG_-n|*RW25AVr386Tko>EPMfndX~UPuu)II3F=1FKz4Zda{7kl z^iGxY`|K7)cdECx3Dp)_5fZUY2iZ=LnU0RK$VaK!rpcrn34B-`Hcrh(HIcwa{8Z6; z_i%b$fv+cluUAapT687wVR9P@e65iLHe^STCxItla3uvwqh-pN=t$su;;GrD$CALe z&_dc~oK{XfQ7Hcxun@aZnxOtjh+;KfGZQ8;L6y>6qJ)tdXFwE!QCXWtZ0*{oJXL-R zyU)Xxj)|hV7M#Ax_(mjEd;JmrsCHVL7cb`3YD3BTPJ3PXxMcYv`M#;_jeba(JE0ti)sO@Q#l|~l3Cgk23F9(UGQ*tm=$y>W zysoR|Yl_p(;m{ATQ)S~aYI>?{ysmt->Z^TGjZ7WLIaPuF;XK5Mp>vzEeXQ|J+jLq$ z!{C`}QP34cO?TmFVE}}~sk|OUcX}Tm|8Ev>ZU$EfLP4xn!k1z)EHtdkz*F_=1E#CN zP&5LY8jTbZMQ#oRZ#G^_`o8U8`JJOVD@tjpTycZ6s?D(%H&X9?lg03W;&g$0QBUV} zz!J}rqWvA7{#Lu-9}!^Wu@%u)is*7$5LL&xx$GdnLdJm;6Hf7m4UT2Q>H>7y&x<-+ zw8^*&!NBzc3~AOuCsle~(6z@w*Dg;f=nOg}imLz!o*Uf!8o*@_4y7U=V4`Ob7ila3 zjetl67`8N5kV2OlK`H`?!)OiYR2})65A(e*3%Vw4tqC0iJP1AD%IHItlu6N^}@dG$dyF0&Y6L>#6L$|lG+`kak) z^L~LF8;|3HZ4s@w5>ks`Dl|iB3qvWZvcQh~L7GPOWrKv7MO!k9Y74pv)e*BmgLP{CA}@ZC9COr291zRksGl?tc8Lg`ph>$Ti{;yhQ!~s*~Yc3 zHRr(y1?#6W4GI|CKWtVB`o48Exg)xNSqc8vDf{kNPJV1rMxmlb5FOjuJr8(W8cDzWg zaj+na4WQ$aRiZw?cW6Z=Y`7y(0eKTjv8%XPildfa6Loie`BDS3`t=8O8>zDYAIwr> zb31@4WZm1)Pk_6dr`b;kh|N?()vH0|R>+HjUib+E4r%=%_el;yFQI21XI4Kk}qw69V2$|*$%DbZD0S}}DBaB5}; z4Z$wsJ98(2jUV+z_%X}DZ?XV*VLX{qJOeBWFVO>wy`mXbuUNYERgnvnI!D|e(i19^ zlAsM}`oTWW4$O5mq`cg#jCxd}Dsoj}Z$zG=T2W5*^~}?|q_D9;TE{fVhBaFQxXi_v zi(HaU-8^HV5r>vO0ptE3Lp{JyJ_|)jb^0)baUhZUQFUHlQ)T!(2X)f&ZGtwKm#+hH zB%tb3r390(*Ps=koobi@1@`r{{J(t0ve864-m6Cr5VKLJXmT~P56G&ooW6Mt77nC= zFwxVB#z@OIt7f(xa{DiIt0ou`9osGNYxc|Hrt(|n*yRaRc$g^jotKDU>x?TZ#Hf6K zpd?yDFgJcr;GP=vPTAa_2Mnk;Og0);E-+Um=WU-vq_;^4t~0{YyhoBWl5BQazN6I60`Hq}#O}&|Ar+D3Ow6M+<_4DO3?= zZZr;65|t8g*r$+|UxCUd+MSqTmBh=(dLv02VuD@tW7N1-X0!S@DbludybqH2{wR9Pf^z8lg;3KC#fvc&js zRG)Dpn-X55?1Cy&Hz?p~?jS3%f$nG!7NFWj^W%>Z>9W$K&^8pjW$dDLrG$!x%#Zwf zC4b;dLIVlEHdKNQreOQ3SW6zTJ7IaTBsI}WBN+mP_^D0N0L=AK6v!P;bs#T7>}i=9 z6kMF%vAp}%0aCOk8?#^Zb7y(_wh(`GOI=72S)mYQDk1IrI)%j7k6TEnc-%tG%@ooZ zP{*yQy_rJF|90G(rX~sjy6NgGm>TASNtj?eD5g9oww#vCEm7k|=hmXJNSvln%yf>s zv!HWe_U^mc`_S^8t9Pv)UR?z%&rdtcm)$YU-?*IKaV;pE-|egfffIkRLMOQEX(lbl zH=G#TrrQ}UG8=V5>HJ(@g7k>+HLj?r$WIP9)2?WYC;M)!N%jqOwAia6uk?qBWZ#YZ zi##Oz2E$NlN;9iiCzGg$qh#OoA|(4Z8|tm3A9UAwilT*ipRx62jfQc#($)QN58H3^ zHo)|DnaKIgv%k?dBjV`*n;N(;yC=Y%Dzwn?OR`c3yP-bppc&x^`M&bkW!*NpOgrr> zTdE7$X_rqC-d;1vpunsVRe2D@0XA43VA*Y!5tKtr7~)aU2M<`}v^Lsm6Lt%Yl1>8X z^pA0f^{2-AG0s4Z>7$WMe-b`$@IrP=cAI}O`b)cNlFAajteQ5YosuceYoL){z`;Fl zSl;t@EM7s^NbiwDsE7bZ`LbqCG;W>gwF2?LDPUlYpS}NLV(n;&;GG#zgA{ zb{Xr3f(#Nu8@0Vc|NO%>KtE&*)4nkY3ebiR;k`DcCZ|quvY}OH1h!R9-vCduEfWU> zw!3~GIVTH7%d< z+96@?$!o-^_Cxry@(>%aO9}xuDh8;BhBKP_-j4z5-e5-2q!fOU><9+kVg^8Cx|UJ3 zTKuckO;U6hdkR_^B>I>dXGU1_<20zc2Qw2js&LE)KBQ z0F3?zU}d8+dRx9%nRL2=j@)(oVa`sA9>VS6qnD|K9p&Ej^ihlp- zvsC2uI=$hX{6^A1c5K zR>sG+yB^v;AKCtTV0$LVwR_!R6{Art`KSsXl^8{HVnmpPh;Q%z{L&R~fAFt<_G_Q~ ze-FJwvQ-meY#^>+&NgV3T!>5lhJ_!0phm0T5a{rLY%BWjy*x=)5BXVnkw_F zID=HlWg9h}GF%}I!j!(U52Ki;!!Ttg+OpAmxO*}NwZ<;D) znnLU+7LR(RXmFm;3*m}{!T$J6QdtiV-v+(iXwHLd{1M~r2B4`sj zFMdq{#3TGuOr2RN=rIb11A78Y3ZD|7Ac7hk<7x^D^sPMohN0duz|84*lJDauaq89$ z2iO?|8Tsa)Zq?n2EGK1O@++hTJ;1vG-NV_PLE+^!;lyzJtlYDL8_EI$5Hn=Zv;R#D zQ-V$g(%`Qk545S88<%yF?>DnNH#2iB@<~KmU!3z4=Mv(Yh8{tLYu2mmCryNFj*D>3 zH6mQYzm_K3sOD-yh-=*X7i;6STJE{gC)?0#p=+P5J4&NuX}Vco5tY}pdKZ7y0-&Fn*66OCPOwQ zEf9~;SI~WHSMr;wuG*?ZqW|7-YFG02_9oXd@pcj#k1t`V3K*>tnY>K;|G71s(H1Da z;NbQ$WA6g1OW#92kT-E%TDWZVB|g^rOQVt5ix3j0Xh&O=y{Mw zc!S_7%1cWGSgatQYJav42q0~Qcfqhq`)r5SCKf!_crgPx>OizmaAvBEUr@?8_gB?3 ztwe=zLoXa?%5pI^V>E)fQ9G*LGUfgLTeh+B1W-51&!WyAF^SM#jw+`z3h+&;^vLC> z?GyB72D9hN8B=+;a+QSSwftAB#mbG<0xnPspa)CJBUX(Of3^I8ePb`z`3BmoZ~kEX zn~&Q!_HvzX$S$RC{_FTRpR#Z4XSA&&Gx^rFod>- zGax9)rQOS*j&NprCS6{=ef97v`)B?;BI&(vyqoodO+<#1JAZLoQCG!k{b&nBpexf= zFGhH_!aAn!=E|)WfZJH}Y)UJWomyIJWNf)Gdxf4L z2uQ&qGXoGBuZ-3s%z|5j1SEv8P`kY9E`O4~37zX8nevm6t|~GG5Z&{DVpGabD73_prZikj$)tWM+&0t;L*zWSVi1Od|@CX%nSf5)?zk#@Zkm z8Jtc&Dw1E{uAabhRy+{2_xLP*GJkhVz90NWnKTWt@5%<+cpLHN1(qX*A+Vz<6Mh@!SV$jct4*o&*OzCFka zusw*zB{#Ed+0r>=;{?mV-S31KDosDNi<83OTG~~6QOZ6$^?QH8M2FdI)CcY;ou$sP z$BhKX*@Gm-HaLtPZD-aHpZze}POUNVjzLdL<|E=p?tfq<3dT9k{f`l81k))o-H6;W@YXGbWHJ<}c3*ii83OO`GvsBwaWWZ0C@oDOz~NR} zit$ziy`cOo6UAG>HKFfGr3f1bKE)sUjx$!tCPpX9S+Uc1HHq zGqP{x*b~x;CWLB66T-uq3E|ynLO6dkOb7}^H6cbijx{PD$axUGEW&(g$6tV4ft3K`NkM9QXTZb zk^sL#)Tv-fw1c*%cMI&JOHA?EXqLEbSY3FzccD9{d z@KDi63QTOFj5sMwJ=#Kfj78jz7O}C$dQIC-?Rl|GTGkfV9g4R>E7-xP=)>a*uJB(9 zDIzTL0tJIgM0kH2AqWqVwhlqpoLfY+CJJ=IkrZ`vYJFPM8t-QGXj(T48b_2#jV3OK z++lzGmTl#qzr~W!VyeTQVdR{!+Xd!|nB#daa1WXNzCy8{g5vMDjdDHTHfld7{QS52 zSv1C!drD#>+JRo#eNS_2@2pEmv>tM9ie(M=+Hct~Cg{%mZ0^ zwO~gBvSd`YV0}Q}&uL{7Ex2!|S_ZBk2^XbL`nKTJjO}n(EVSJ_2Z;^7Sfqrj=25oY z(YY#Fki|>uBrkn;G-`%6@XNdFyQ8tEjO~sFI=v9`DCkwYqq()+(O^s19jy<;?r44E zyQBFz?2g93Acqha?T)queVw{k?T)swDQ^RVwY&`!ig!oz!0u>|eG7RTavwiYa$n>0 zDm?op^QVzCpNyoSbbRlCyc**IJur<0da8-`4iF%v&7$eLYEe^aQL{+#v`Q_?W3?#W zEUG0X)TZgRY7x^=t3^q*SyV44H;d{WKpNjHYA-G1A=*4ZViL1RLqAVF@U!l3X%BFE zo8uYALbULv?f5vqXrkikeQyYV!SH(l>34n{#R)UGH1O*n>0Dl}i*J*cu#2Tp2|Re? z+vJInHbfxZRg4HcI3kEGz$i&nMW{z-dHy!c#8}yb08i^b#cmB%h>l^39+ZHOU4fBw zszznS<>T8^awUxfc#E4r?mi!R(GnG5t)dnQ@T$^U^pTnLII0!bkXI`uiC|!UfdE={ zrVSt>z%=XGM{`x4Av$wm_ETKi<@`_UXwVz!Gy}L{*p{Kdevmcf26{me3-o2iVRKr{ zJudJ*d5(=o*#ZJMieDC{Xd4f#yZi4NS(Ev)MMC8_%EqoXa`vza@Pe3cXIMLpjDuj6 zY8quFV`Xa^xo8@5pGFpbHI2O4M79Igb3Kg;K@HPri5W}}Q>V;?1c@3=BkeGalLse7 z(?|i}Zl@(d-0Eo*ANOfAOI8SaWn?yuqgpkM8jH2TG)C2t?dezL5{CLl)5!d38kr4E zV~c6jBnrHWp%D>g)_@w5A}nW9y9X4yvC(!|L6LSQz)a2u?l1&0r`bN*F)tL}-#1&p ztc<+kWL7)w3rb-R+nMAzqKw9~Biyqf;lvPj@WkQn>Vo|1VcU)AZzPMxvju+9PiBCKV?+!u7nAJTS&+6hTgboixB@31>YCtCq4? zs(r4zHFTlZw8I3o95u5CzhD&_N@LF}Uw?4eT;VT7V(Ll;IE4$QOkTu(6m^^)>`LYV z9hWnR|77zF6oSq(A!+%cLj-id=YExL?MgnB4rLx=L6l#^z>gsgb3jk0yYo9X`O?y9 zeF*9Ds$sg=e^8L))PZvPMT>*H?CIx4`LgUl&q12o;t&xPJz*ehZ7lrYLrJJNmq&iV z430YG8)M<4O^as5+>{oX0IU`4-PCb(p%V!spH`9fyN8;jr5o^7Xao8);#|GHsD zVEXl1zO*GLWwuDMh83H+bvSFqX097HDfX(m7*1prL+kC)uX~r3GsOqPcKpfQt@gp(b-?Jt?3G4Xv9&ML^TndiC0o1&;~BOP zu5(<|#ao8GYYj$FsvcBVi5?HLHB-bQ%?x(e!6k1Et zh1?DyWS!fKVoC=avpxg$e3fB}tqwccLiH6Y%| zWpy>zk5}W{7sl(Muys(8;@;UOZhW8$yz5yE#HpY^u`zD zg%65pVQkq>mZbT>{&sshCwcM+@?=YEU&Q@4`3~`qZnw1jui)~HZ`g+7R{1sET+EwC zzp=Iaqpxy&5{~Z0A;$bY-~pEl`0YVK|HRvYUA;QP>_o8;UwR)$$+yW&Ch8{1fETL%s3pf%ejpiRv6L18)w@+IJ2 z&ICI;SAWIGI>RlHmmEQJX>#S@g8N%WE_nlTtn_LKtyw3=LLknz zjmL`I@@~L5dbqn8BorHhM<4{Ht~F=EI=Q|)yO(b~Xhzw+njyOve!@7r7ai3e8Mi+% zeACrfowY53cks!O0-pyLcZ?RhErP<8ErOq6nIQ!}53Z|OfeBkgoC3cc>uT-wb+stx zy%=ZoDD7LGKeLswtbzfp>2_VQIVEmt%7Df$J?s_0QBvA0V3nCSUrKi3SLB3E--qfa zY;qqCBIPFzA{{VOyON7sXxR&Q;psRe*lsS}Mx8(;0zPVUDK zH)TRe2dD{^)2Gk*r_+3M6U>bLwnhSdo=wF}g`T^Th4Qd=PJqWvb`{bHQpVzN3P&*( zXF&ee-1FR&@4N3)-#{)}%HEv2?=%m-Q_Qu_49j29=GBJzP7Ps&2jjj|#)BV|K@IZq zcOKa~z)fZghG8c|@-gXhnml2B)EB}ugwg%lzja!5Cx;WG!fguRbkW{|%6rO4UrAAiEJZ3;*xFBoDJ;sA0tI0VPvO*r*aK_Id zYc9ir6{wJv0u#s@CFa?b;Vh2~3k*DZgs3imMDDgQN%#McttHRqbf7PwW=T}EFdQG> z-sJCz3mY@+l=s~zcLP{UzaP?O4ZT24Lt+BK{*FOFr1WRuz^lu9-n2x)Eg;w&S36X& z;3U6m0AN?%cPDEd5#?*tT3$AZNco`v@4^VW|NNWP0g`$7&%!;6v%EdrLyyOR&iJ*; zaN6#-6_%Wn7t6Pj)3T76S5(^mzuUN?qAZL+3&8Sa!J}Yo;ybL)@@?N#;==!=J@ri3 zgY4Os5WrC*(yFrZEqo!~l=MHv@===2`mf#$(}#)G4| zwN#-w-H6dV*v}|ip*aO6&^$6JYzoaM3}(?|V2rlUk>RHOKNsgU0Zyb>cPOOnsG^YQ&8fQLARsc0I@g;m5m;oMhEeW(gk>Pe)VZ+CN(g6eQ6*3TTA{A}D!I3LcPQ=&B?JF;B@)d;xLe!cp5s z&{P~pn$)ij<)Cq##Z4EuLAc(M_%?@egQ9U=1Xxz_i0AT9@my|wehJ^I=9hOPp36gJ zAEm&={Khpz7UmF_B{U*-nlHoBySzW++Rp>J`xitS4tOH%3If6s8z$y|Ya9>MpGh5SM*pdg5K<2$6&@*V+{Xq-Dj@`)Fj1lm9&vrvXEtVWzIw8tSIk-o0Tb(hv z7XBsM5(+utWK6bJ4gJF=W&JBZ{H?7r)S28&bRMdf*KJXUSE9Xm zJ_2zy#=t2|Lb%Sj?$DFEg2IaELRJ#f9OTG`<`XCmFHO>%W`nPBW=TqD4VZ+8#iE@dk!|FQJr!f0V(f~O8z1|O zkA23*o{f)PsgM~v6TgCrD49UXuQxIF>_o@jwArb~4r9Xnp@BnOq0gWh&|oP9@renT zA0`z{hKAE{D#Hffh&>sG3zi5QWNvn}_B94XsA~cuO^1j!T2$B|9pc2W0p&SfX<&ox zB|X+^I~Fzo1YrXLv=$#e4kr$HY;)EQ%)*kd*pjfEf&cy&u+EA!Cl;6chZePJFL@Jy zB38v0sizWs_xKloU|-nFHD9nn7r~&scl?V_+86e6%@?_U@mu3x{NMJ4yjg-=3J0XS zm0VP>J~Sm|4jEs65(cYR2w{{zdT)Yg@^~l{=A$^2sWTSJB-cD?P&?~}GEFO#iEUT67E^0Nnc_64Qhj8lpy}F@ zqi5iY04Gy8x$b!=T2&~MUQUKG=^ZR~Jd{ZI+J_S<9!q>%PMXNiU35=9e+13j|tCZ|+`XRyI+q6kKHU+tL9F@!J*92VA;>V0KX zrpxb#b%D^lJPgN{@5D+}wkb;7XC+2xmX2l@793fn){n|$jhfgkY9-CxY_Cyxv3kmD zI`Fvim-+7nOH;Pl0_Bx=38AJ6GR9J2W~Nl}BRD(ARDwaaV2$Yo)(fp1R&tRAbF7C3 zjzOm&x%j4GQx!foY*gY2!-fIX5v$fz^bE4o(dY$);;m<9J>Q5bH~iEN8}^<7#g?** z2MX5!J{OBB7(6p&CQc;mO1IWQFRo)F%Q7XzZ0kF|*o_r1DZhQ^HY#9u!GE%~+Cq_K zfwet|2g?an5hvwarq~p-g=TP2YU+wD9!pnjiNY+i5med{VNztzIAN0i7JRJ^%_IwACG2ld&-;UEAjn$XKb(;` zu)2DiElyT;dnoe=ACbm9*ocZ54=)o<7`>(uwuOsHUBLxmAdrXw8zfocMmetG7eKq8 z6+Kn%!^iMA98o%B4-=H~6B7kKRbI@gwOgiTVx<^;QZZq;|C8N1OYMJ(Fg^9tPRD8W zV$bo9+#=wKeEr*>g?u^flC)$))d`Bs7khN1G5U|y*U*^S(Gs(?EM{rh`i_=}D!V{m zQ*mQ0ffvj9R}g^-eW26K{s8Bz${%O zQMTeTg-ymsG)>wtWn2dArw#MOf|4FuQaKOec%gt=S+Q^9{ zLkT-B7(C;u9Iz9kF?TY!L8nHz#6yKk+&V4+J{ygfWi$bgqR~)*(Zt(rP6CI-0wes< zqCg;C%JwOq&pHGBIxl_pkg1l-hMyV(Ho*_3^L^zzAJ~c%KLc-_zhO9sS#ej==Wsor zS(G(o4lWC11LfPy!4FyzSJS@Q<>ytB zpHlk?n=II5u1*ec(N9D{`A;8_DYd{?tO1$cN<={Pw_b5n~JH43C#b-u8dHmv@xMEM3uLsr<4Xu&Yv4dh-x-BHYH)1JC3 zJ7v3MX)Y>tPOdEtjDa*y2L}8k_czV7q2(O^OheihAQ%i8p^PbPQ?z;kwS-7BV{qYM zSHig{Y)IH3;f5wm-pziQ5lD&8)B3@K4nNhL4|?TlXFyU{(svxd4~MVm=Cc1<_oa#V zAf(e@&_2-3z|8~2+ypNN`J7rFi=eAtMFn}J{t zl#szf`LHbEd)} zZ5&Eq#0cNJphVeu3oWzqtZ^)tb)+xv09Xi~8k)n;fm?;4uFN=NgfKriR}16IfO5LIpy67;lygJtwy5k4gD*7n*BW`t@>5y9} zTsYEJnO&np)DUOOfB%1?%_|nHI;*ulv#tE_QFfLKab2JBM)z6JEfR_6?NdMQ%xqh% zyQXzwM}reas?+@Nhrt3RY``aUnxBmOo^n6cQGUZzR!p%CMVRRy{U1LC+%}Tx6mS`E zY|nuxw@v{k%M_=8>q*hTiS`M=_3T|~hk++yyFe0e7oZOr!nh1c-8{+cnu(3i09LQcc_Lex3e*@{0HPp^NPs%Pz ziJyJm3`gL>EDN1~3M;@mbpX1Ru0RA+qz^*m7KfI&MO4w*1sT)wQgGI1D^gmik`5Vq zsUvh1A<4VbIj{s9RjO1_ZWON1eF)d*C$<1+AJWCl0rgE8w3%F@pQ;l>cG9QL3cF2K zim9LW6Gg<=C7(sRH3zncdvJP9C#$)m%%b#!%rZCM+yA|$Zw_rUW5$KCt!c*=uvPYt zQYJMWpbNaMaUHK@cqXNrEpI=Ke(&tlSO#MRuov?SD*FwWZk(=8q5jRj(A z;T~&kQ&TCJz}KjsJrRJE_U0= zk@yR28XEn_kdZJFVQI#QNE_r2l2U~rZ-y5v{AP@ROsPTr0;w@d?yEs|oR9wo72-GW z)zFVugHs_XPy1GE75;XU4Y`(UkWH5D9Rj|cX2{gi560O40w&pjA~y~@=cldZrQ4SG z+#(wh23hU$8#Wmt8wuSiJK|#;l^6Snv?~)Jp&1ikl&T;PkY-c@2+ZJaA!h#@&^#u9 zUD}*83rtg$LLp(E+ZC~Emw$6R)2lezn%K1hv1>cAE7a0x@+9-J$Zph3O^CWxyf{CP z6nq{k1)tkW)O7`)Wyib2wSvz>CF;6@AFDnQpa+`~btg6YkqoEtTW0iD_g_4X*i6_) z*b^*o`+y|_HDfmwmwY%on9Bu5So(n~3tL5R2`Pk3mkY18lfglS!zn3VxmE|jLDZ!a z;VCEO;i^*QLfjIal-IPA^6d9?AeW(P=ciCmf`c9WCN>mK&Lg9v5;ecjuYT|w`n94z zDw};*8b9X&OA(ryNomX~PFPyj5uMv-q_FNG`ks2Iu8(@yR1X{0L;GEMFm3#xLRGNp zp?azRph1mtH5^ArDp&PXm(Y3CE+`Xfx$R=M$dHEKN(;UXKDZ`8BH;D_2LYp6{vECNU|$2Kcw0w|G3%}>o+ulZ+n;4A`wQX zF(fM51NG=wh&1HqwWuV3RQLkBG8FP_b;_Z3xe5fK0tt49j(*4!ClM61ogEwr)9g{|f7wwyUcSTc!!2Z(H5l6c{38icVVtO`DCAP(h!~_p5d7CPZ8%or zoQcH3IKFfgqtnMivF{q4VsXs~&y>MbxW<~&qs{+xHUES`*_5aCl;d8VSOh{hQPRXH zsr|0?DN7=_ppPw5P)LDL>E2MuSWT2 zW~N3ir=xTm5gl3uaTCK7H6N{;@7gqL$u#_!JwsN}1Rk$K=(aw5&)I_s(H||rfhYi`aYMJ4Dox9GAJ)h%EFW+fwc~}0h81Rm zorXHMiyqV(dPNsSsv1{OfQgYX#BwqYZ-iV}vKCvuTT~W$j-ez`Ok>19h-7mrFgo%V zl}c1VKaAul9rFx*)7i-OyCsd%T=y&%{cQ30SNijU|H7Jwgf z(%X3AG`&QTP-7b^Xa~zmMa)T84ZMX&E^v^gT1KWes)2k2CL1@qzkFtuIKJ?VIWUVV zMFsq$eAfe8&4`8mFB?{~vSA6=?t0fFe=5O3W-A`w@YOHgeh2|>Tep1gJGOPrkTpny zF-r}~nDzg&cP;>uRpp(pd#k#;ru$Y;%`oUN1E#t%Zbkz_5=0kF!kq{rKEkdhF^QXX zce7bCLpGwgF}o_QB0_>@R8-<4jsf4Oqv9h5&48#xQAfduiaN@e5H&hUFk$0^{r&&n zxwmdrcMlDNMzcE7bsy)R$9KN-z0Y^Ll~U3zKlBMa`4}+9jal7FAqfjLt)3@Y1^JG1 z?lm#^;*{nFXv9AY?qb&=_BcOv3}Vot__@He#D+nv9Dk17-hcJ3NZ z(FY~}kx8A#$fS$Wg%bg6fMgYu(KV#Cwq!PxIrK0W=0FS?;aW2M=;EAV;idjJIn9>I-yI5OTt!kk)yz zGe_!DDikiD?>y{rqH2qz5lSRAryxa{kd)bDyYpLcsUy^wyRQ;DPpYQTx`2T>&5lk`DJ|*!@442A8*Ld)jEU^m~S` zCX@js*!!m{Rvg0e0}v4A=su(a7;Av)*hFs-yR~(l-ptg!+4lNRrhn%Sij)GrCD$+r zr!Xe}JX$|@G1e3V5h}97mLoQATI}TA4G)x)Se!gO#P=I{Nt+R=vX3%Ttpqfppp~V z+2*bL@Qh*Vly#N?H!)0KR<<#W?9E&mPPOO)m2Hdy6T@tp^j9;?Mpj}im&Pr~13{4( z;C1Yf74H!;Mi2!3udz-CKeVgV(I@{pc(9s4y2iv$;z1?JfT(60k_*E8BrnTg4&G-U zmQ$iQ(yP_~%V{~cWrvAC>->$)km|g#+aqs;5o2ARu;k-?ZCdizjs;csIrNO6>b1)T zRj*S}^}4~@rw;lGsvbLuq8U`pDJ6Cs!}OP$??tt$-5z%)ac$<4DD<^?P{V0Jb3hGg z8&;L$-%$}g09aB&t54zzGk*p#hlYx#&setYR({S6Ob2RG9-?a-(f8HUbMH8UAPub8 zyK;M75ca9@WjL&mtjkt;QD!gQOnFVF+Z%MC$RLW=Ij-2a+NQfW@IG zQX_e<3$k&;mPY+_k$d>*5OoEOcK{{Qmb`BW>3T$#0lL6NF_=pMlo98j=q>_uVlEIf zsBSvtf}5ba>oc%QKjZ54>=Jpt>$FL3L+GxU*nqkQ_pEpG2C%pe4sp%#K_T zLXgHS0m_WT$@zg~9Y8rT8l`cOB`QXfvbWTuL0uY+hN%r65~E3JTezu4LxG9W974Vp zjbB=laoGWp3J?^lL0DtV=Wvb*GaH0tAj0t!WzI5n!M!S! zXWbAC==eQjHXqKEFUz<0KQS$A#(uChzlCx;@QLwDrOgm5A2!c3@L(00s!%5>3m&9E zT5c-t8$nnYEb5@VLkXlsOlrnt*>uVnJOmpd%k|}(Z##l@{yF(z){E>a@HHU7m@5dt z#X%u54G0LJpZ#>{6gQr2j6f~F#i#;}KCyMNT+EQ9WXg6P6{bm#$NyEaNBN={Kwkx%Q3bP;?oR@uV zWZY2YUzrZ=U5}MUp>xi#vt86ckw%EIm{~aGOon6h48TKXOW_uJN$3z{oY^clfK(p; zJUW~LQe$bR+Fpk>C$`rC3vaKZbIsh`+>o1_PE$vyJhC*sA(%bnaVAg$DpDy?Syxv-iI-3rd-G5$XO^gAm#GWg>v}-b-tQ*B{VeW z=@Kd#Gg24soZ6Nw7M0otz9hBHYP=DM6(P<7Uah1={P2o{S^-3f@$)ibtr#U_i?up{ zE_$QK46B@pp75(%MFK2Az3zBVq`f~)6{$hJXb!sH%+u9WO55UK6&G6}b6HbGf?PFk zK{Q4pxy5!lNH+SY9?DV|HaG|Ew;U-atDVRKMo^GS95X$);8TaAX$hzJ(X9U*2am95 zeZnQ*U7+IyL0*~oSP2L;6KEp>VNt8Cb#%WacwiEtHYP^Dg&l324>g z1ZdshV7$Q}W=O{nE82O6X{W|xq^;4XvVyF7iN~q}c~;ozandwR zC$!5ME`+cn+)OK+We%s4q(5lQy|Blg1$3U>=say|YfEss+}am}xi3GI+M*I$%EhU(wOd7BGgEW}=|Hl~eW?r5Nr5aM5Y$E0f zkj#bh2G){L)-+(}VZfFgEdfmCRIa&Z0b3y;XzHs2E1t8 zN|GF{25wA5Gz=+(7EuQ>575a02@-e){y2#OUkw&m<@$UVIA-_I)L)9?XnV;87Su~>FCxtE?Fv$LC0&JY zjn{+)N2sjT3uj4Qb=)F~iyd_4^O^ATIr$F_>K{7frP+@8b}P$qduQb|VV?9-%=Us= z^^x;_&}Zq`1+#diXddL_v#Ijd){Zh)bP(>TtiC*n_dLnYDR*DCY5TERtJIV7Bn4KK zCq1Osk%e*j+NV?PbSc%Xtmmn2T~d>N#_Pr#nUyE;cq5T1)3(}{_au~ov8d-Owl*5e zK}RF`cVawLK387G#&oG^`ei&*D5*cKY=I8@-$WcS%=6~4~}4j-LLm_5%@NZ zn1fFo$W2Ab4yOhIb-vjBHWwla2mm8d)U!OC3be2!IE(dY`~w~cB*Zp-a?^Ifs8{a! zCRfn6c!npPehPN(+idxvHNS}QILCZk{?*HU3KidLK+1=Ud3%j8kBbKzw~1|##|}Sp zSzz0hosF=1gfVcSe?5o1=tIo=6k=F1$3!tzFd!{FbY-F>5jtpJ)8!T4Wv>UPb_SFm zEc|M-n}TkAXw8m6M$Bc=zhRn)Zu#V9%MYv(NG)N}Qxc>N3lj$Qcu>TSBpk66`Tlnu zuzP2Ma!i3B$`LYsQbuS5gMVIIo1|tziHB`IDYKY3TVA_Hv?c}<0MmrAOXY<8JTe}u zl12S;e^I)>fM1PFg0e_Zd@oWWNnxsd&g~p+rrkhsM(R{~<$=wHuj&Ob4_2p)0~A|? z09`MtqqoM2>l2cfU{H(F1Rs6V$btZn|;k&UD&E zr~Ogo;D7%u2!bmjA>s5g zK}g|T=4q^9GQCkVg>KB~JRh(dMN%7ATjC%%l%e%Jkn}bd;~}mhu_`pVq;*Jkwh_o` z2unK5-qMuBUtovS)DV%W<6lj7IaFoCAnb}A0<2pz!);`IX$rH4+|n_vJ;dV@!qd^x zqPd%*If)u^e)4isIp#}C<;>t7@J=Cy+N~h5WGlYK{+o!ya&3E?wYk7ZET)B#SjjmbJBw#1E6L`;O(-iaFrlp6ozU@c&XJ%MSgnJUcFxA>%C{@!cgQ*`{{^%T0Ct-hO+6rJWX~(%4SV0bBZV%gjVgA1wH{iUO`pXD6~(>)w3K;WLpcOW;}vO;9fwC z1iV(|;;}m0cJc*pnI9p3b4UAXG@izOeKVMm0wjuoiz9O{=mVm|Xvh9U`x;$xD2|d8 z@C@AjK|bMWe1MYO^)F^ZbXe;%k>fNvuT12S7~3k0F;RB3F8Q!>mO}PfmwCgG-CUPw zJ9o<60IwTUSLt~0%G7h2KLS5T)(<*kf|3p|pqFy#a#!OM5pxQfqaYY7B!9&?lD{=A z3^F;1A*jl&tFd``4nUsXYc zHuqHztJTTF-8y2sY1mtphpcJJd-}6G`Nr7veSmGWYp}(8i4d^E(!`|LpWjjZ^3_IKG~U(1g8YW9`vZ?jvn z;%~CQ&i;lsU(WVtH)mhZiZ5kf%=Tqp$UdKaF1soFZ1x%c`*e0=_NnZzvQK6=WX1K_ zC$f)cd$W&ahkZ2rNOoQJ(d@(7hqAxSuFXEk!w+Qd&#uYdmtCD*mF>y?B71N49!`z^ zbKbo>`?Ks_**mlAvv*`~&#uVcmc2E5OSU_EGk^8$&t2|K*&DOVvp1x>E3?;UughMW zy(W8g_Nwf%?9%K{vsY%jvR7n(lD#~8S@u%8zMnc@lKpXZN%mqAV!bGPVRmu$0{%Te zdmej7{wRBH_MGgZ><_a)$S%w-$eum+@BHjp*?HMBvu9*a&laK+uu$WZmH+Iqw*2V%5Dl4( z2TJ|dF7J)~09m!ahfP0Wu3&2e)`zoH=1fBGb(noFJ(P0;m3I=ijvY8q*?Xg$VkBX= z)IyiWxp*9+uQ&PV@E0WD9O0RS9o`?RE@<nr>cVGQJ`ZV@K5U9EC{U;F0-ij& zKrhvWX$3a2-BSJ@IqT-7taEg+^kfl!q+iTfbfgOKS<>3aG5b+aBR)uL8fl{$`%|aO zk4H0tkgSRtk!=BJtR7GvFpVY*OusXq&%MogXKJK7Flz(j(>AL*#tuM)0?mG0!_21HO=Df5Bdv@YufZpP$Vk6hB#Qvv zEsjwWhW0MBtL@Rwo+Dg+@F~4N0GZv(DfiN?PWBSq&@AcbD5*pQu^1!rlS`VzK025_ zTcWxxW|w4xDg3_tQ2!Z&sk4>kfMY+2=b$g61DCWx1i-VGjj^f&Ljx$G64J0xMA+;D zZZWnsA>TFRi3baFo>7TjsFS!cH395pQTzKTEVeCC~_t@UhvftWbJ9CD}0VuF+GmBz64!x&^{-y zhVheFQ=Rguhzv-L8gEmh7}M&t;1M&TMysP$>BYbVPppMPDDUXcesQ5L2Qyg0=~W@u z*GxIPL++d6)G7lY#y`)b0z8$6Vr(XP<(d2{6LRYx5=y|N)e}0U38iz(PpI0?SDH}2 zWTmAEMZW1l zuI!kM?0iGm9z1eVR$0%*tY(J5c8iJ&z z-4Et{1jC5W@63y5P}spL{o?7q+<=6JyjLvxj>}GQJLFmIZcw{w{Fqh;R{6GW@m;-9 z`}9)$k7vOLA>iM!+zJ=7Kce^!MO6g$!w-Rm<Xh_6YpD?j$9 zn~+!knP+WhLH~qLjr3EVq?AQ$1y>2a$~ft+SMK#k|HLDPjC-qhO7C0Iiy<4Mo;>K0 z?wegm>^wm3MB*LL`Ilds68_^){x)AS05Wb$Pze@J?#J!U*8pp$G65ihVZ;iNG24$| z?CmmVFG?$Sa0Fk*p7m}0i42Ejzp*K@owh`lYw@S)y6j8NMisdBs{7ri-5MS>wkh&n zgQEuR%ZEoTyD9R=v?=n(21h-0aIYmN&9oc46k+bR$kXAP;fdYRWm2Ehe6=a^E}t~R z5bI2ea}wD#gVLYmK$a#)(*{A!ub8m&kQ~_$DB%iBmrxDgMtlZ^_>&|i z^)xn!p$SMNypuxHYy>1AG_jw3iO@voN>gZ>T|sD?9ra+rJw+&!YZTO)k}42)6_%1d z7PYOd)NPgMMZ}|mLwbt(P5I`@4dSB*z|79VTEu$lTj)#ZV>fKFIUGYGufD=y1Q057 zV<6qhs=YPj2xa}O*AVAH2%n?E86)MtymB+!V2R8n3WbG$x7Pxq#VQei`MRs?tE-1- zJ8M2EF47X;kH{xCl?cXVSfUX|9e64N!ov~yvRKZ}NT?iN4$=nfZ+iN1?mv)o@PQZFg`~tlN6Da|#XeXkxUv^Tz$N z<9K6;bCNOF z2wYLqXgSHZ+>8U43hy4^iYPXL`z`Kgq>1*6f6--mBpdy@)&c<}ol70x3I`m8Uj6(InF7ee%u&^3#f2Rp1|*b@*-7o3VQSo?_-?ZDvfob=&dU$m*z5!39Ln z&w%9vk2x;xw#LuK_!$`v%gaNpR>aat*>Ip_C)O{mW-^@eyk`*J5Av`a`)~KQX`C-l zL9vGjY}9T)@1x_4wDRd*=5^>&t;rFsgTDx12_7qt>wtz&DB)-}`|s$Y(bA(%;_m@d z*tY?y53nwnNz`1cup=OKfb= z`s8`aoIoHo@_-r(!=qMs?1mBeOx%X;%9?{!u*G_Ut9#4(XoEC}-*PPizh^@rU@02koed2Gt?nH__81H zu3zl;r5GFBCN&3MB=cyixH-Kya-@dCTB^=`$#2=VfEB=^9wp3F`8`tX%wNQ>*_$=8 z{yQ-Xw~8`qfS z>{Ns(@`pf(bRGo+tP{!+J+$`>CKc4^^KRs5HxdF6F}o&lu~`O@U0GeF5wUcZZF#FO zZ`Ca~8=jH`A#|Pc_MFtE&!utmVnH4j_a<_^F$rvyaZe2Gdi=R7&}uMcFK%)j51bfQ z$T;X+69WV&a%^dw%YpXzyEH&`VY(XNwEMUGct6`5FN@KFm^~xzram$Q(vi*3#BkPC z6}Mw!(-J_y@}*Q4pK;|!?{GACO>`)(b0#FGCR>qnYs6&CloK;*G?RD2xCFk|xTLug znKm&(k!cm5raepiVHYxq>%S{xc$d;S9wYL4qq{dol%TWyKQqPplwQ^%rXO~Szw#FY z5!;2Jy}}cbcH6wtLA#+q##Cq8F7_I3 z@Y@nXJir>Fxz_w(H<11ccEkeGf+Z~zuGtzTrReF&7;O^vfhclN8LJXb4LTC#^OcP^ z^dMw^+F@0Ii~68z*6Ldd~ z_>)FHETJ&}R&j&xx;t$2A#_L}gtB*vPv{anmH_+lOuf|hZ^4Pqv7stkilfCOjus6Z zt(odvg`;f!IXI4fZ!Ll%EtN%Zs$!*jILS)&46GR!?DSCRSv1izSp)^DMZp|UL0J}M z7<(S~L@o$)0bBEoy#LB>@$m#{}{B7WM7huPl*SCDqe0Q3lr6hLYcVJW+kJDAmQS3`*RDLCFQM)-jWH zKCDCWm(us9IfNEMf=vTzzXaVQKEA5XNlGYHXJWCp}zVD+E#s&#- zsRpS-hs4YLK>B%sM|aLTJPizV{(x1${*}`>)Fg6|OZd;bVLd7T;pWZdn?$c*sr@rhC=J6tFwjA`z zLG#ku4%g}pt&Ju!CPA9Ruv-DS&%*>{rJ>eQox^SdvfWVm%1Z0n29VcEZZ(km0b~@1 zK7DEcd98pcUbheWD*zer`Hdu3V8jsClozc13%G9+B0F3wy=qOl z$h{0KT%N~ebexY%{E5oD#0zZ}`1X7R3f!h&&iuGF{T`TS(OvLmExH5q+xu7I(AKPx zD5KmrPjyiN4cw#;sOZL2(G97By{h0#f2|7kx&qHM^MSk#-f7)6;-w)QEzha2L375+ zsiSkhfc*)%eyR$OMsTLAwhvHda!ZEP2E3;VV-l*PUdmSR1t<$-%gv*{I@;Ijg5xta zHqazOFt|RGFUI24HFg52hx2ujOUMoEoxlAo6!>MDQ}F7NG`AP0-<_J{=ig+?97wX3 zA;p<86e<1jd8zQC3Sad(6<%~diiA^z=`82d~$HgFS)I9n&Gz!n>aB1r+y_CUU* zle<7@$}WJW+>E?vp4(t2XL4*}pa8r}Gl(A~U%x`6uajglF#xB86Q_w0q}}67@2@k}`<{C5(Rjjpzg$eAxI|?^oN&fv z3+u+vA1Wn+lTTO?^-#7a6=$@Qs+LwaSOneUEw20_?%bOos-pe_UUVgo5Lt6yk=q?* z_jic-iny-@%&)0d(_}f&g;mPFU9KiD=aTGR8%L zSjd{QZI_v_R2E+D2bBVn9rX}=!P~G=Vr^&SVpG@S;t;)0HnG?7xqSdCj z76WTr5M+VF4+)eL_Z`ktdw3Y&{KtxswIf*XAQP62=vKQiVKS$U+aBc5I;ia-Uu9ei z+x2g}>V9UI0#XgUA@th5ZyweJG?9O2^{Q8f(t0_r#rFP*RiS67Se0$v;S&Qrj7(y6 zb8|zb(PXkXXw99`oDmW#dM7DX7RQgQ-uDx*D?i~!3J>!u`nBxtvRj@U81??OAsf_nK`h+hCI4TU1HJ!7P>?P zziIa{4mr?DqMekCfgNBplXMCEdD|VzEQFjiCc|MVHjp-hWMq`6qL&@A$0thjG=>!5 z3<@OZB9nAPFI$%49K!n&%HKby>_4fBU?%4uq02o%vooAuAYCIXm#|m}GHB6B(GVQLii*)2gQaPwCptO37L9lH zYH6GUFp)}@YO2XEt|Hh*}z^JdZD?Zd1IpVdLMGdNj&$2+MJAD z2Pj5*9j6CUw%!)57;R|2sF@Ops+1hoD8fUeVNO!q9x&7@-$F}?U7+QRYglwp~}nd zAcr`h9NgN#&L(;O*q?B8WGY>@^Rfu0^bO1QyG!{k0qP%2x`Y8)EhwUi;8MBCl#V`}C*N-u0 zuDti)Fwq+!&Uzuv9Cpf}V3awN8&NPwlBZwd6Kp%6o|pGF!We;%9@RDr7Zg#aE+ zTTKk6GK@i0yI{{O7O-bzU~SKhZ$d?)Z5FAir`sNF-v?WbfsMAG0Trd+RzqE#QBhM4 zD&|d8%qb&q2^DjpBE{#`J!@8FOWctB1(-Ku&FhLH7!_bU=Kc9#oh-3l!|qhQhVdOR z1eu!Iob+BSw)7ucw4@51zNFzWYOi$Q+Tn=9-AFc4hO{Ra~BTx zQ!j65aA)Bj^pemx#(NK%$j(u&X_{2}U{N|AiR5=g^5aX15AF$7A!hqS^I zrWO>Hg$Tm;_=EMm<|ank9~>?#t*e1(`1kZ3cVg^xV$j1%zzi5E+7(iO5I41CUmsC| zkaxsRjSyyiBX*i70hU`)0yZB?jlRiLjLJEgdI0o(+Qf88OV1MOVZE*i=CVz70`EJj z9MY}@rNAu{%ue|%p`eYUtst0G?H+%R-W=nq) zwABT7*9FmOMk;i7q`5AvCNV;HlzFpiSUOVUF+C66=`VTit+q&@^x1}RQjR-#Rf@k3 z`Gd=g|6l8u!H0AMBkIQ{Tu1lVuvU9&mlL$*+)5U;bVRuf5yQgfAu+PGrqg|q1>^#o zHP|mXl*U>Kx{|o$`;qFnS6OO_%#xXG{8T>(B%69|i|o zX_dE;Rs`?GoY0 z@E6_Qhmbxw(}BYRt5FqPi^<#?&QV5 zWDrhQ=FF>2`+C@uNuPMaDofd4xrtSV_*AVjXW_x59%WfwZLKaBh}Go+6Ov2AQc7-@ zhCzLLhq!XnV5bK_VsxMfoTYhd)JZdEU|%3vn#nqk-|||4WKmLeOx9vZ)l8L5YmS1P z@@Dwa-lloYyZphn8u61X7NGV<)OjrrWKoNMR+2N`-AY zo`{Y@No9CoUXdK-J(1g1)iT#}Wlq+jjbS%x)Ac=bcsDh8Z*RO(6OHcqF8x9wuSgTW zTho2>J}dv8Zu&rto<+RYnnhzK&zQ&L+~KBj?r<5@lERii#kiZ!9d2SCUEq7@+`($c z_=T&^JEc{q>tkAnVFA_J7AZX1G6mwHMJ{`<%6Q${r(T1qWt@%ZGCXMtG8kxXa z-TplC4FzjWfk{aGj523(BVl!VTONtt;9!n42=(Uk!7Ec{GF0O{(oE4wJ|1u9dI)3r zv=QH2zMWvr)7!p#`|Y={m0;}Xa;Z|+r?yv(rKZ6K8+9KC zPAv-@+aiePt(g6?od$(%i`e!I_OBkNPFtps?N@BfiMQzgH7~()!^uSQ7dIH5g?mGY5!;3PaEb-md|>P|Q4aiFmd3VlqRS zilqG-DkL7GpNKC?`!yt|2=Y`^Ac&bq>GIiKE`iqrVKMr(YeNPJA5jl!(MdJo+r^~X zlRDG3z|$I9#i`80vP;sn`j&tRX`YSVh*+Mk(`}%-R5e>2Akz41LCW#0EQCHP!6s*h zzI}L@3VneiY~05O(M@RDxtf=+t_ zMH4_uE*ko!>h|T2S4w^6s^i0P=F9!i&o-L%EjdAYv*i^e(A2RTEWwt;^MD54)g24; zT95csP~KfI#Ld!?$JDtE5@7obVip~j*w)&(KG;wJPG=j{Ju~>=RcLwEf?50~d1%+3 zDgKmg9aP2bV?_&5EBR*7UYAAYcSj`c5|h8>1~K_vF!?z6r88KY{Ot%DpZVqyQUnt! z$mIei$X9P+VW+;o^ppC2XZ1Z0@REkVBg=;%w1O<}t%xd(Anz1+V8!x+yk)Z$@=EHR zK%;(NMMu3;FYvatsk%AY7PL)F2{UFGVTs_h6^ULl10u1LR1@wB9DyDCOgGOFR%VGI zLM=_YMcV3UH*NLuy6BeY$_!&H^MJ$K6F5#Gr<^JOB6}EcYsayXppn*Lh;^iCK*Ct` z`CXDfgcv$K%25ki76>4k!FG9W&>`Z^5aM9J65?CIU&C`eRfUyY>z&B&8PL*9)D&ll*HLJ-qLSGFrE1I*T|#-%x)+Vs%0<=ooRJX^*IleFaLhVdbcIoi|*gEx0Y$k}!) zw_$dWr9pC|4J=~e=RTaXU(^hX-2yiZ)YikRZEjf7f!CvFSEfxH&6e*#CB@maSxa!Q zAGhtaDg)GVofv{h%Hd4?5R`NJSI5>@8I2SWeJi%t47(P}d0_w)7LrX#_$u+mir-;m zY#C>PDa&SDF8#MFI;Ai|33C(fCP?o0S(p>GO<{xw*3^zmM*@Cr4GRPUaEpFfKl{_~ zzBPOk?xua5YsiWhseqQ)8gL_}B9iciRDQ3@hr4O7%Ud6+TIJv#VWrloTfIojkybBA z%aWtV-1?%HXSBMQ);f-7{QBTdXu(O7MCg$9ZGOO6U>gfrWZ<;ulRa7Adb$aH(wCu6 z@`sxPRCur2iBCpK{)nf^_G1ltI2hE!z z2Zm0vdtbNsfF79yaP$7i5)oVz85-B3k|TO%JE!iKhhqgfe&NkE_v~V;D$=y2h8#h5AdSK`Qgp#glL`Oj)Wx4~Zt+ zZ22^@C2gdEV_LtCM2kU6ohkb=FG!+~{C(c}(81#Zy+~Aq`Vfv~N2A**tNi)TN%k~N zItGOPHQgcSZJyr4L?Mg89wFk3pJR3bA|jf|9LM*sb#gEkpXJdHh5^&|PCcqaL=a3r zn3W-Pqe(hWr;ZV^bBH`dc*c%}bz&o}A%6GJcap_yQ>q$57TzF>Yl;jAy{=1dkiQrR!6`ls5XS}| zp>Vt(czAlLNz(KNiAPfylBHB>B4E*{sTBri^C*?rRE3BsQWCf+jIMlmU$Q zAF9SI9dx;S6*rbU`z^HGcaN6)?pW?3q+aeI?qGVMXGcAric@;;&mcX{Dp;>}r0(}? zwL{M^V0pFk1GAD@)C$%?Ry%mOkjuyl@}Tpl?Zqi2!rhVtoc>M;|N1C|_Li{Jk(RY9 zELug&hM-!BQw+K~qr214uhTZUF;j(?+0sJ#;V!;eND86iNllCHJJL1K5H4{0u z4Z9^L#$ki@ss~c9v6aSgcMW5F6wHyZMk`H$3y?^HEH%BL@nDXVE;PLWcQEbgWzsdh zc}%YZOwRD>7n)vl7p6CfBOm@m;>ZXjyt94N+SC>ZELmrYYnp-zi^_ru$B!&8sPK3r zHXW95C8$WhPU1#af(j)Xf{LmUGA<{m$e>w&SqUoe1t<*)KSmHVWeY0q&BjVlp^p|+ z($gfUh(zh&3$@KD8rLMRXOHy+QDOS~V#;2E;5{24VsXk7Xmf_&aCh2pe%ZyTbWdZ8 zlNga|aeDjGvWpW9Op9|q7AK~~l^3U8Y4)aLaY85Hr2z)>R;^QwZvhzh#3R{YDIN)t z5RcS6@-^DDA_ss*HNWrE^YVyt@5eVs>}@U)71a4)x47ExHkQ|Zly?ze4Dun@A@$Ly z%d6Z~l#?NpM7xGFvZ9scRBmCN=w0K$vpk1ITQ*6dn}sKmcDID&68L)h7SDMIe9MIlA12exDBAb1O2(7&*z2_mmf;kH zWtyX$Ue*{j+&KM-*!aQ ztXjwFbg~iE$yi5q)>&1Z)Ooy4L4f%eNs+jFx6L_qP0aah%=xV6JnYab%sJn-!VX=B ziBF8Pg56-2c}2({jrES;*9)xFl+TK~!;WxyI;*w_G-3lytrIfX^l+IB4s1f)CBg44 zP!&wjA^4d(&G)Y*qn6Db>nfBm4dTG1zvNBA5>8Hr1R=I}ioftB*0E0UUSB?Nhe=TR zL8uc{ip*Od0vlz$$WQ6LCo}Q#P6@1F#e38$&^e@x!ymM`=|DGS99|}?@M#*p)Qp`P zcBB>F>0yUUEFvRe7ge7`Yi)8VuJoYD^rlH0M*vPG@9*sWG@Dp04ymxU+r+@xwt6y6aQw!g~_j4%<|~ z9ki+5a3K2Ah{_NPMwK9jfV`9(FeX9<`cGkm(FT5~rVYRLgHcGXyXM!>BT6ISRLQd% z9z?#8F#{h~Qg5b3^BA9KvE+_094LFgYIRUkyBydYfpVl(IfWO?A9=}I6xhNN9XMg@ zpBvB2)uDx26X@8T@^-DF!4CeAK2^LUSpJ9cI)yl@qz(p`YM01Rz%q|YbhNAiQLgt{~! zX&nwaVUh_cs;Fg0EF_Wu7@O2cj}tz1OsiK86j8ROeCcJI%U52;VJsmC62XP&**%IAGW9q+&1u92l zEZ9Hc4*f<1wqyeW=J-XbXRDf?goAjz}9+ zsiqhCFVZH%)SAON0*%n4WG(UH_N~A>sTY zE1)@EIY^C1mXe10ddftR(IOU$2x+MA@}m6AV$#^(>D%+G+jkfcI#kGKIIwui*W6CN zT3ONG?stZa6gWk^U6G1A*DRrMK!V)b%rdT?tyUd`2HYH7ye)lgimHyh)em^rFW!=> z0iwL2l0F@PNT}HEsu)vHA7%JvKU~naZ}KHV+EsEd6>rpSUG8$fWQvHmnJJlHv=>j7 z=6MsBF{g)dwbgUKj;ly!D`nMLn9$YCBD|ASp~y4k$=mfk;r>Z(n&E_o9m9L@aJUim zj45HQu#dWY_jL)(BFan&`)OYnN8{E`3>aDg%CQksehlIPPAA62-tz;*Ya45}S0vHn2y*1a2hg{b5oe%;3>FO;5>zQ`1wPv2t_KQzFeP zdg{xdrxdPMF0c1cR`k>bf}Xm-1U+qT0h($ujH%@rMuW(RVKi4xC>{azZ1^J3tfjC#Zr^H!71AN-c?htP@JVg^glB3Wb*F z>9vSQlGWCfx2)Zc_}13tex5#GD~RiTT)!Z$#qKXqc9xqz#wO77xDw26QzM#=6IQ||$4nK7mY^`)ppml= zJCb7DQlS{It7Ho-3c4l4Znyj&&WQAjGjy7sEYiVDnwL_R67ezNJ`<(VpO?+rxCHK1M^-* zH-|?c6e=jka~jhne1@A^B@QjSFWPEt|8RP;oa5_o;52pDB`)d|(Jv5ObiEE!;X2ts7Uoop*)1=R z(wVbCRHZ+@q%_4;`i)UKA1i&`lF}4Y={H5`_E>2j&@$E&imCLQqqL8Dt^0k$lDa9T z(z~Pd)L7l`Us9T4D*cuyjfcE~NlSLDCOjy@R{AX=7p&$Yx-Y3*O5n5uu`o9}#NGqHgSry}0((TsnbdqSUL#%&ByB@a<0RUJ2^ zI`*pkGi?*uJ1U=&-LRg}*S(tD75a4Aun%@QqE!jnz=T;)d{z#hIE~GQGx}axV>nwn z%#olus{nSVRn%WNTo@%jDI){Xdy1$6qxOCCi1L&FaD=SLr*0k`F_;wt98Nt!=tV*H zJ7|h#op*$Z)UDsAg;sH&*{MecJp3a%MAbd!P;$GCXFv! z8pf9@$xZp=Or{Jmq*q*{FdAWO5R$b3@e6Phr- zWDE0SJ7+K;hy$*am0ZQQG>tH{%i5Wf38f|6)P$VSLcP|Ljq!tLRCkqt3mPKz^u1h_ z#K0+Pe4dhin598;?Am9h#o6XddWb0SHN82>@RJ--TYFF6u&el%{pLn(dJ{4(H% z57gkk%SS>os78_++Jj(`P{zW61WTJS$PqfudZmDfXka^FL6>qCK&4J>vB_z`Pnv>_ zq69XSNbzCXyb#Y*L@&T+53qLPYK|n&L2Yaj%0*P=Q?Ng(D&_tBsLRRDf=0Af{sNnV zq!AI-)DEi)IWa&4#RJGSg{rilsBWZ2`~gVV$bqlL#3YirRyVKb<_RbA!`5((ogPnY z?OZP@nSO?hyk0W$dfkL`+Lx7#ynb9pUXRQYWh)t(0uwUw`q8|uY76K3aidD(mL7VP zfLWtZWR8Bu>^y6Mdt1^8j}e?JJC8Wf$j;OBmak_2ThluZ7#p{e;cb6XFUIUVOWPMn zlU`zbLQF-|qEN$}owk)lfuyA4Fi#c*3REzszy!>{cLS{LJQ`nR=b6B#%FaU&8~XI<16tdL1jlm(@yO5r*|GdcIC8!3C;Wp}@qfthz+Gkk ziQq#7{K^azu4#-3NEZ7usE-}i>yb{7doT8cZplgqab%dr_>F#{I4 zY~NQ*8e3kHzc=i+&@`}WLAGre&yg}CKr1H*W(Q1mvx@n@{sU-&ZH^{wTP7%9TiWKVM9W`D)s!3CBHI`L2uKyA-K#r(UG}El( zVZcbS|7D_?glfRa1iKLD-hr88I8~WWBC{(rWy*#VV*HZfLhF>k0j;C$TB6P`(80oJ z6OeYuINn^pEX^zQi|n>r8rmm5ERAkA8k#b7g)NJEQe@o7LdUZax8NpdE@8P9CoD!5 zI-c#REp*%j&2@nZn%m?SvrP-#?47sJNyQQ&nF0hfiXjdn#*lc9%bd-@qETlJJIY9- zgwGP+fMiOGgz1_Ol)QsdXL6&>&bf#wMinu6x*z*wv5uSIRa<%u(_LNGMU^(1Sml>r zC$R1UtnZyp8Jk&YU`K=tbA2ZDrA?|b@v*Ml{|!p@qljW|)4tgp8iXNtJcqOs#|&78 zu}PKEg$Bv^=x!%vY!*I6e3JM~;swB_K1rY`w_+B65_d1Z8wP8 z(o5vzW3W?A(F7J{xJtESJ(+sy&~f~{vY}l;q%b1BwY31dNVIPYnnP~gAn7Nq`7^B9h#T)zMyOE=dYf9XZ6)GJ z(+nOG6_Oq_l@7YI=$(pidtwfeDJEqW9F#;SKZ<=Jt~tgiTg{rx1gbI zgIaJyrbBz3D>(%+Z`kqJL2)b#(9Ou%+ycVQ4(zPi;cC%^= zh^ob;Nlr+B73a!4hTRuM>i73ZI5+Q|5vm-0rn>w?jn-D{(<@jl$}Lq(X^^8zN=sQH>nB?MR8UwS^K7y9u!t#RgsSo4 ztXP_uUaU?`VOVvOxeSowZ14XimVSQ)b)TyCv{LogW+?jVKi!0Y z&Xuhb`h|<^(;=HzxPpCDa3u=Nni4sGud1I*Rqs7W)z{TkUz@7FCRM#>RP~;^YMAKm zX4Sh7QuXC^)vrxeUzV!gHL7}7T{TXvoz1FuM%Cdx9ooDkkenOPzNoJJ0#!<$mGe^N zi=)aHUAZ9&i@?7=Vxdfhh`zn?T_MQh#bVAH&Ycc7laV^a3Z9+Gjl>FQmBb2AM`8tw zNs&2(DM+lq)4@wcr1(-K5B8jd6pN$d0nZh7n^Frej)tXt3a6|w1njj?fH^H?N6E_< zAd@O4no5HNhS zaxFIOLd%1+{VB_<;uI<5&*4tgwrvBJ=Ad***!JdS1&FIjHZN-{vp(OjgX9R3RG~`5 z{-3&;MJFPXNJcssM-skR2&34q6$U2n6TNJC|C4tI#+@Jo5AJ|j<f3Uqs^3jjQ=ZPM*3ak?H(9!jcb;7^q}-3JRq%pT^f ze$ysRdtwVR?Mt}!4Ccs|%zI0d*0sIHa`)E!JP=JQl%Mk?#AuDTidP!(g}F=cKd7{X zJ}0zi!Q9w&3Xaty_zelc_l^*J@7;*t@^mnURUtT3OK`nw2;LL_W(jGt2NVmUl=i0j zFwEZgVVJ$<-c+b0k^3QUSI&G1G!qD}xG3p_KSJ=k4Z%qTC*;^=1Q*LFUg1mdzf=4P zmr`g5cjB+&(_kxHf$NgjKV8SN@r<~oAh(Mdh0#A;l4v%bQuZ@2q0x-K+&iZC>6G6d z*QQ_mD#FV_8;Z{V)3Lh zM@N;&tg_Qb#fP*b<7HT3G+X4V(vA#4j*-|RC5-Qs=RJcn+khYw+<- z2MJq$wC2idTUbFAwr?3JFE?umC_ax^z!XpC1=>#2!V)p%g|i;|MEum)M93m&kqZ-< z5N$9SX4Of$bX&Y@Y|liWfF}W!WCn9AUhAp^@?jaOU@p z2D8_LfzYgWZ6197_l#=Za|iREh=5d;P);Syj^n|_KX`bsdo;k^V|XCSvH~7lETVI$ z#P`B+4z~<_98up1STH3U_n=uF*upUSMuv>4+iJ#^ta2T(c~%zFAOc~*KA1@CW>j6v*6LTVC5PwBlNyE_Io&UNmjJX()w z&uC10JSGHlCa_hAwM>pJy^2Nl1ITq2M|5K`k)@jJ2(@Z?IjH`)xI8Imi~w_>p6nIm z3}fwx$s~cyJH<}vJ^u%f#q1l6ZC^}!TIC|ME3la7o3h6KsJlb&3yN7OY#8oqI$gyJ z9GWU|+@T0%!RU}+caI>o+mNaVBBT=aeS@5LDaWNo`i{Y(eT;2{v$-8Drs44g2XfTVb7|e4$7;G(Y`;xq| zV&$>=;7_9X(m$WW4%VcRa@j^I;1rUF=rIz)9&O6^HJ_Si|BTldZn$9wE{~DL0+3z#lXRw*c8a+^SWo`b-L+az83wtDM!C0c~Qj_MGVUaBWM#GB1$j&Y1FXI`g$Q86Z z*$Ed?WC5PW@(tL~P!GxM;J9b-e* z;DXl>b+x$oWN@WbJlo}hsZhc)#~5o-q4S%CMttsz_Fp`UmnH&99itYTa>KT+H;1&Q zc8{x?V`h%fFlyQIfEZ)4Wacr?mVxcI7Ll@jUzUqgdd~_jC<`zv$3#Ud$UX-zA`MGl zOa6ewoYFflzJS`?JXM@$3Z}t{%%!+R<*+hM(>Jv(c8pYwbsrs}CRKE8->Cchs_si} z>J-nMXib`8P*&6NrOm|x+#>qgq>YtER#DkegL_khLCCd<@aRNT$XyAtDCsD+8FlA0 zVpnpXd4M~-U%tvI%RA-uSI1slD71thK`5aGaP7YW14w%D3&n7A#F}R{7_I3X4Gj`B)p5fUS49O+Mo_~OeIWq) z^a&)8moFi~ok6+@9N0A)&8{?>G*643rNoKvg(d0NPyMgU)~rjFWn+*2iN=tSBurSc|Iu=cwNd3y+Q!kRJ_4H`{u&n?4ro-mKnz6QAd80E%48-U0&IrWDOa zpgJ42-uM%mM{`r&~-jaaek~ifHX9d(E1P-!n}ERKE2Z zuuhV|UJQp}0?OxLD<=>-v*MIu6ksqWnj=nq)N6$H$+ob1RlI!jonY7MO=8#Xjj&q- zVYJ|1ULGk+{w8rh){hM%;vEip+^cWDag`MWe_KEv(Js1!d-Xp+5IG^v=IH<@HZ2a0 z`Z-oKv8hC1IeyK^#SjBm&Epm1#l{G2DpDW1+l@5uJQjSZqOX)(YA-F}w>>Ev#44!j zcx3M>bm}FE4;D}HVwHsOl7@t!dHO$oV-?hk-D{bZtatxACZarvA=hjkJnNK6Z}%Gs z+d-(v45%hl+EJ!8z{agch*8Xu2?q&+6I3y!xm`RpWXv7o9LB4W9ms7tSa zbQK55TqzFH5Uv3GBd|8ZODDj}#*%TcPN&eU<-jWC2Xtpc0H~}v`~AkM5F<72L!c&c zKP=rwd!;3Y?N3*;Q%6Tmiv=7!{CB!azq2&^36H>YWAQWKPbaj@nGL3_!rpnaP-`#}3An^B0k zOH7f(m$=05i6f53F8;45Yc+p+|7J6jCq*$CjFV0elkmG%an8~zp2#Y5Q~mwj;t6`M z2v@JMmcv%94Di^h0MV;o_ToHSCE46p6^x*)^z!j~Nw}-ua_NkJ{96B0$!IWY`dt-P zpscEj@8W_O+qf9(LG#o9sZZHgXl;Eoir>*=p7o2f<}^6^Nktxvd%%;Zo6-Drx7ZPd zs#hK-MXFX)=a~!@-mbbe?q+p*_csR1Z}XbFWFj55!|>{3jit3CdZg%v6ogUm!IUH| zNxnA8T1nB~84W<3+g)*zX&p~eK`AzJ)S2iw28fFEjgFKn6=s`A^Zq=|3~1q z%4p$*)~eS82#08OO7FM)SR0I-;5?9Xj^aZpMQI67>@rfWd7)9Y%LuhneX2KMNP-{R zWz;OYx=k39DC-Q~V+Vw>t|n0SULr97r}jJK;Q8$IuZcnQHr$tb*uc(y`GHoXPu&HKb(idrJmstzj+5 zt@)GfV=K?QoxQSqq(pz}y;7q0Bn4cMwv8__c_$z-P-R$!9LRk-v_XXjokwU)kwj#= zywT1hpN8x&8m8L=;yNUT#kikTV{*MwHaokYqLjf9^Px)wXLUZ>po@SD7T|- zD&+&FlJ+AI;Ng>%sf3pJ=;_(7*;1qDdnlwFNPaWOWiok8P#DZmG6aA$G(0`H*Uuq9 z311d`i-qTrYy+4^$B%rBg0*%{bhjH_uq3p7!5{c0!G&e6oHcExLkVkK6|=~gFsn$* z*xLd-&>KOv{=1G{fM`$@Oo)>n#UzD><+%<%9CS}5nTd!Hg_QmTvlFNxi-X|nN@%qK z56Wn~&R@bLq>NDkrgX4Z4JP_kWiRo9i;Ph`16nDM7dMf;#04g@mo)Qut>)0YMrJat zr^YRCGP930Hbu$+CBCyvjDf`)Gc6+pL(<4w{ad=lf43ASZnIxosRldvV-ZZO;y1@% zCXuiBZ#CMJHz%^L@>NID-Z-&nBp+W&EM`4Rt0or8p-{FKdKIzo{yy)KJw#%$;-1(g z0v5y~^8Y4mYH+J0V1fPBuw>bqAQlM40$7OBf7>nos~A5J*PiHVZVdaRlKhvk_myO< zxeAr#alGfQ_7jXOin(N4uvk9>kRQf>M{&3>$e@E1J;cDCT_Z!|t{_IBsT~p)QmQah zoTWAp{bvnPDN2NHzmaY%ru-+}u!Q@?V|7J=PVwuy;%%q+HC;h>wS<#xVp#1Uv;RO+ zQHrIoeBRP0hKFp<7WtuPR29(CR(i`?0Z^@KvAf8#z&`Emn6<5XSWOu!dWmi0L(Zqc z0i$Eje^m@utgmO*$C($}=fcA4=$*Ebh+%Y#UscC3HjW8szxZWcnE<$Mz5FFT>h9Pk zA9f#%Djr>Z9U1kDN7Y~d$0%CY`yX^45nJ@A)}Z@evBGvn)Dv>C+khO!t6z+Y;+3@4 z^!$-}ZZvpAXj(=9K~_9LTS04S`QZ{~SQ(MhE2Lw&X==Sqr-FbV%(*Ctyb@;ivN1x! zMk?CFp*hW6^(c$AipIx-j#adDM5fZRQK^VS+H^c66%8R9Oc1pO8Ma&YSWes^cMZiL zxC@9&;+}TP6%Vh*3eKdl8ko)DKJ4Gla340p3#L_ggAwJ^Mw!!j<;k}7UGptM@KEt0 zp+Lfh^g-|;rgIM)e8W146G<5gSWX;I2Rlk8Wcd}_2RBi+@4Sh!eOFAB?S_exz|}BO zHY9}FGB2)PnJDk33Jkemz6?fZq=pb zr+wU3HSngBzD!HkvkZ~{?-o2eMmiM9F_}6;F69~g{7R>I@+W~m4%^|zl&rg z)dpCk2S6df*3dA$8iR&Fd5S>Uv;mFECxG*Q$yX27S2~ENVNV|AKoGH83HGT{xs){v z>L3%49Pe7zOLyba7$Vv)1n3-d^$U}orZ>cHsBZpfBQZZ?oleQnPw8#rO)`_}#=ygH zAYH)1t%)xk3w*+Y3LCD3<_W_ApaW^eIz6d1`&M3BbOGmhm-vTQ{*E~L9T{7LlP6sO zPEM2RV#Udq=mK!^JJJP4!_sbx8i#E-D7Fc}2B26~>3M=vkwmo|SRIy30-9=ZN_;4z ze26vH>XzP#eAPx0?tab$ zofeW}A!6=TmVO36h!5{bvv}LMW-%5e=Y^gkh#3{>FRL(xoykffl#_%%;gh#ll1az? z?v+R{4GbPd28Evuq}g`=74{~IT7WhBVN;?&!4ATu!(k6#IXM6xd7mM_$fImCwCq72 zmvrJmdIuRz2rP?_3-c>!-&~d%hH4TTbn*a)7IqC@%F>n$y%u9x$m1)(wq0Bbm2G!c zJ+E!M%NWv{Wmjk0CFr4+bs?Q-HxiET*5lwqJ_CIl8Kelz`B8$Mr7mQM1Y}U?+F}_m zwe42&nf1ylasshT@|g{dn1evClc1Cd!BA**jPNX$FhI_mM2{2zqd5@j+E+1tiZ{9? zOt3yxQwBOTAw?#}37?&|Fu6YA6Lm)Pn>8w<-*P8>4xmKU`JUQ|qv7dj&p|raQ_d9c z15PO1(6PVGi9R~|pjDit-kOM=s4E8EDgM2#tS~-MS4o-?`Qy%{w`S^$h;+1K>xpZM z9&;4s??p}&@2Lm_K|x)VIUzru5uINP8WAj2?=0q4y&L2bwT~b6XtT$H6$8cXOFCgC`qZ-8nlCD)n3JU= zY9f}mDpbN3Z;hOb!?_t-DbO=`0dYr1w8%y@HC>2W&5% zHeW42U&v>QG6fWb2Qug9t~_7udcKHvkNNUxMy2O#YQ_0FM>Bi^X)~+YI?z(cr6`YQ zixn%9xpcOWPLChXGFxJ(jPK6O)r`Q^DUOR-&>Tea$G~X7Z@rkG1R%Lrmqq9Vpzj@c zelx)HxEehB0z6onRt+8p0VgS>|4M~B+(~GOHX6T<{lN#=qXS@P)BwZfBz*e*0*s&| z1MGgvqx)Kt^Df@L2{ePMa=(lF+rGO=F5R~7FX8?`$^Ax^5a+Ji%s;s|99Qu=%Crc?{q{+5)fF+5p*7j-8l&0jp>Lua6?=Wjw`l= z5m;X1U=%v4J8`8exW_>uutY ztMuSH`%a3I#i2GeBZeraiWCj$1rnd6fN@X^1`TD&rjREpow&&yA+ULRUdHrPCvIx0 zsuMTy675k2lFKh5ugR6J9FMMk=?OY&AZ9S4 z#n_oB7|8GzXOT}Wm{kV^0Cv-eex^V*6@J# zEqyi`3@!Pcr1KN$9L`}jx1k>EoEG6HP~apM&3A|>!#0|x;HrUu2uPYsB}ZqU_5m)i zE?Vh;96n3MOz&;TtWz}SAT6ans>c-Jrl<6drnFBujWy9Y;Z%8WbS$ZWrBhNh5Bt{I zuwJoW3H96V`_mlPd)C#iv zrS*AVtxrYM7x&Q>kOvz9j@%1LnKH|qR)wJPcNz17LS zM!=P;JF&H~xOY@iiGtP=>d(K?Ew=DJWR+3n!p&CtmywIJ`0=PDea!2sEaJ|AZXumn zAbEJPpw3smXM_~rShoDJxT%MEFWpxmen&MwJ5o2CCebN2>k4e^6q{0kHGxpN3cj#d%z<~S3`f>2$0r~rGu`V8ZihvMLSawh*s3&?IXE~+C&SeN7df2^Rc3)9T zqqmzI`M{vLYeoA&NCXx6!T3pjFyx?v`oSi%OW#4LqLc4JZKSE0T;Fl1V)WUr%rl4; zp=+Z4!`c3U=@7G^1+y$G?-tVz5(Lryn;~jyKnqJ^t%y&0%tHyxe5C_BSh*W?&WUyt zA@`$4u|#?2bRm#Y$9}NlQ|t#%Mkm*BQ=MGHWtFi{pjObZY$5J51Gg#{4(#({6sqa@t0 zsRkhO<&W^0ZXBD&B52;Ot=0q+3L{Uniz_b*(XM$)fGn}5gW~yJ|Lfg?-AbZDm1>*l z8=&n&)Z|*ID44&fZeW~{Gsy|AH+`)MQ6o&K$Qj2_#$v_w3{yHbyDx00e@@wdQg9KT z=?fp|!<+7o)ZrFA;>{NP4p50L6zIrnQFhrC>~B2NYucXGnBu4wEcaXw@?$wPr2B-E zS{Nt*2(x@j4~q&tz%ppD}>^r zfxe^nO3<+u^buimCVu*RRen;dj@m&;86D+@^dM$O+>wSp9l<>MG^miw1NaA7_?b3F zS7Fo1Cyz24r+P1Mr(7`vkP}XbD|051phb5W0_Y&bg=rxgCvtNfog}I9eUMHrav*OV zN}BE1zbIZG^23~-^8^O`#jm{Q(rLy3WWMzIx4d9l`gdOb!_}{RDLw0ySBoNdk<@^7 zUVioJ7rtO771npBvR#oXKL3`tQ5Ye?M})tRBsVkV`}r_F`kFq9YHvO8!b@kUwwThQ zu8QxNZ?~pf3<$w$fV78)uiVNR^Hb$js)QF+N%hDTcbd=I@eF0iV|b~?plc^YDQ~^$ zRR}NHz_Ru=(JQPrU2I%b&Q>%Hk+x~K2CA%xIvy8s4i31J^VM<3MJKLqJ&ekH-VEj* zZC#aVKuDYk=?wwx*i}kI-ei){l7R-vs?D-wCvD19xQWt($SlY@`W=cD3K8op?i)8p z`^Nr6$uz(?Kwsg9kAAXbv#1rNEvmK9BY7Kvg&(PdkeLsCmu;m=Lnt`ha1U%>bA%v3w{*xFh0f$gr=ei5l24h< z)Y4|yF)A)Nx9y9P!uW(S#-U`5Px67?(0TbCNMAFgu7oro0Eu$8&n~@RJLlYc zkS{2xp@9+e=sWE7rWHG#N2ei1k%!xz&Z|xXb@pUH{O9`bi4J)j!#PF*WN7<9n{{F9 zV@nc^QDeHN$)S&&JS?Sy0b7)jfCmQ$nRzl2Ww@zC87_l^Q`8(h%I>K}843gkcL6v! zYh?F@TY)XzX^JwdId3;_aBu;&ajQAj%<|_fPcCZO4)uxAl!xso|5>ccb}L+Dwr|pf zg>)*LkO#5E$TP)x03Z)Gw;Fkn!V>aOs79XPWHcLCb8BD?C4@CHLRhm_@pB)J)tDD? zKn(x@`34ve`Z}P7IE`}evp4sznl^D_Y9Jfk_&JS_Pu>yB*Uy!$lr>3IVN5yA|_ zM3G0{eK$qY;Erisn7Nw-+{+aHIH~Ge^T&c6*kpte{1_wJ<(I(+RaTvbWZmA>gfg08 zQIn=;PNx9$B=xrSZ0A=tZ3@D|jxPtaIQNOEY|Xhm z_T14Fqsh4!Hje%c@Rf+$XXH9Km9@uBJ~eZXvRz*B{`)y?9@va^3LK{;WEQbmL>e+uXCToC@<^zD4!tNBmAa^-e)$_smHaE&*%lX}G~}076`?8A)$n0oL16WR z|3}`tN7;Q{b)LV+eO29CrCXA0msGNS?hj#?JCdyl#&X;4p-zn)D~_|Gyd5Tg=#Q+K zOqBskQF~=(=}`_Qttbu{mOC*doe|*J4k^ttY17FJp;5qL449yR>E#Rt#9+W{2$1Ox z6Ay8s`F!{Jz3#0msq8rPniNL}h+O6bxGQl{PaXeB|nWT60fis9%Z z-i~Vu8eIh%?d~5ZaRVG?#Ia9kjq<=PHia#RxliwMR3O`7@r2YV@%!HA&qY7x&m7-s zQ5GRSSyL_3#-GIpnDW@C7Ue_j4S(j#TU5}6^8&>I4*8Q$Z_&c`EC1^j_zG`tqi1%4 zB{--?W7Wh%;DklRzGu+-4KG+bv<9rq_$U#y;lF+&^oZxy8N#s=bjDPJykIvNpgIz| zLACdWo3bBcnNR6cJBc@~H0^=*{xV}sH(QUF z{AE9eJ^*fp(9VEurpkiSZa}G$q!_M(e9U9k7D>VUt!2^lU-;C#Eo{w>m=I(}T1|o0 zs4rv4j0QE35zvUlcGEbz{u!#mZXKykF%Xt%%Rm09`C{-do^MdY1M+~P8WK{_I))@W z{FpwAkpK&IuwlcJ@sK5GRJ0TB87A6bJ7;Q7NmwQ1#bIkJ^U%4vP-{{*`ywLGc% zIjSDBLMuT)p0Mh(Xrc@gqlqj#c7`DW94HaV2@EhPR(xgWqaON`?fWYIt z{2oEz3sn8;LEstHmP0@_kA(n%!eb%u(-(pOFTYn1pz2o<0;;Wm0M}z7a9VN)?8ZM( za<@+ycg)PAKjDvm3oab_jhL{$+VbHY49Y)brCe0dTD9!leLpW<6>XV1Zse; z<=3;O;oaAyQPxwkJUI2~Yk!dSH|2URUd?((-bHEU!!qUyzgN-eebDhXi+0-ej<~6} zn{ZgmngwUAn7HH$%8GhZw}bl@?{v>v&l&fFUo?MCTx1bagQHo5^bE#QB+s%dr-v{} zMq6u@k*HA~mv)z0%kci1=OiBMIgu{*Oz3Kq%S!$W*2gUJr$0OofA>$@tXVrwdHY;s z8V-tBDa5O&bO$j+yOaPBzC&w;s(g5Ukg8%`F%rFVV(T>j(EanT8%QUR43*#OB5y=0 z4JuhECEXC2RChut#8KU+{^9$@5oxO4S*Q;3L)j+ibpJdsp=n*I7kpOq;_Fo}7_v$# zN;O>2DZMr^8KSKYg(t}30U&yxcL?br^)HR~hpH$74AeSTYMnwht&HcXj{pPU&-iFv zC3T=pxX52y>v4t&M&Jk^6yV@4v@XkA!$0$p5omywf`!_qsM@B8!sAd4z9fXC(Z{}Y zZ7H+nGHsT!pH+n(_|mmG+on)1<-Y%bhsf&`cS>OpiTotMMG^B4QQGQ$P@nlpS=BxM zCI7!gci1{#r4~)Te>lHzMERz`ErV0>+>tp#Q5LaOS+tC-Aqq-id)xJ&$Q$TN+_yE` zHR0Fl43hEy=y3(?4Da=OJF7)PwMr>GMK%Yl9B0~bEHlS0B2sE91b|F}i32&tpSuq_ zvYiVvak$*Xkx)l&<-piL(%xj@!hb=e#`5%R6mMv3NH%QP(CKfOm~6GX8+sd>Q`4#G zI4r6i8RanH?9f^_{W6O}RF{8253WgOrJ$S**L_n~!gYu1-iB^X#YuvSLxmW8(QnYA z>Mi88>jP+>c8Eu6!>(t!rVYF9bNy_7-I2$1xEj$Ps|wi4XFBrs^Z8qO`>|Y&yhS-G zz7=xmT3AQ1$SheqgqM2SQSH(b)(*j+Gy;iFb@-)!Ft0p75S)85JlI8D{tLRkCYfj4 z{)uqybiEp`XLbE>xYk~0aVC}TaNU~#4~;!ZkxT*$>%+pZ%$g!O(h(bB#vaWR^Okc( zfTk-(wRUk$SL`_rs4I5uxTY(1t;wJ(cCE>vZM*Kssx>m^C#%We6`oD3v19%poMeV=5VC|;9rgb&nKh|CuSe5Q6MZiir`T!S|E7JQ z>f`>4&8`{$^+m7Mn~lRm|8HLz+*XAkBfXh)$>xH?@j3;R~TgkdtDc zV3y>yqVO^JNh1_CZ$+&zHbS7_+Qh~zEg`Yu!eMfl!-r6l3?)tzw9jQFRi%|YH)zzQ zs>WEU3gDJPl^|TZ6(??M^1uf9RN$X6_@60%L~}2kR9#3`5lfE_CMnzSXN^N=hKn;B zB+Rf=-vSExog#84OI2RC1 zK5~*n~Q`R{}L%8x+xAOo%N z4agaM_Q*mONF%$f$wEX2NTu$$M6w<=@p`pr;)%S8FDTshyj9_3AE}E_kfN?9RF|fd zjPOvgn^+E^+wu;xT8va^IBH9-9KDxMPQ#ECrtd_AC~v>?#ePpGEVvt3oIYy$W_N4% zTbJPI30B*VL@ty3^)sKm2if*xzxT+!|AP`U#QuZ-@o(=XgNZI5_|$WMOy-mbDE!g~ z@H6%OC4&hBv0wW|#U;RVPYFP|Q>x?t@x-LaVQ1JW)yc&*7W)sw1Aur(t>QstB)WP! zp6Nt{fpQ7cFi56atlVq&QHWWP6NE0wF)Bl;6_9IG)cQuf;&;IcX?Er2wbFP(B1Kt{ ze}aQ2^d9QU>U5?aQ*d_4sQWC-#9nCHb{$%_n*t){Wr!Dl34K!6wU(~xe4BX zD{z58#&(@vw#U=U5qE#>7DE#wF@L+}087BuF{6oxMiVO<5tdhs#x9G|fT;D+a0FOh zwipcsMn+SkWrMUnnsoeV;$iAvyEX4_&IyHL3MRt0j)~e?R((Uf7jnMHqzS7G6aO<| z6?&bps#RcBtH7$(e{QULxiKYh;r~Bil_AiJh%ZbOB<+UeMToFDWKDd6oLm=wH1;nQ zG9IVBLr8Gz!Uk~RnF>Bcak!babYeN_F_Dlj3JPSgs78TmxB}V|GeQ@*=(z${OuB+5 z|m|&YZj|X zVFnYUtKFW50*#EOpg>_XIR)Y-j3yQ>E=E&QpfH-80&!D}=E4+cJ@L>rlB3boZV^T` z)k2DIm{5(pf$AVs`G%p&b3qg_rlxq(5G5#EpE>^nXHxi(`3P~T8A)bwQA2*}lJP4B zq4+%zOJk1)1_A}Jao3QzONAqh%g{!Q%h0A^Tm`c=w4uEmZ9vQlZMZ4WhRXnGiWX?Y zvkGmv34pc&7eJf!Fs>S&tU((s0NY?&XIvwrDcCTbs@O0$1smqF7!3kIU|c+_*f2N6 zXecl;ntBl4I*h?}3aQZy5ln<3!T^Lf&nb|>HZpT#vw|$DSuwSkXN)AzipfnFNmCz& zk(l5bM#3{jl4r%_CXB=ijEtm~^J+b2Z9Gy#%ei(7>I+q$OC(0nCbmWW6w;oq`vb7q z%+HD;%7aHtjo_W4S>*IYKDVF<)pzd2Uw;Jh_Z}DZKVT_nnu7@*;}QRs_CNlK1>2at zaiV(&!yp&Yg4HrLe#H^>Lu zQjMr}Zgms4zK>_I;tp26qfjbqpjXK0J^!~qWpaA2l+y=kZe8u=vU=)Q9ym+9%akYJ zHt#^{+XoQOF{WZj2|Z?D?Bh9DjE(rk2{);+rNMS%@00QGeM%@V)$n6jVPHa??Emk4 zo{L@$tVg!}(*h<;2@`}L*Z$L{kK2vtB9rg_q^LN!%5Be)vQ3=|^0*z5n# zP1{3Dap4b>&ClEPBNg(k0)x)Jk_yd}8mRXnT#D zM9}mxjqx4#8W~}&Qtg-@DM}jRNdJhC{d73nG%gs7Y%B+ zOoUl*@|7dK(UwlPJGZ7|T57J-KilelU@Dm)Y{?NB7FLGNjZF{8EH$78|5CC<5V;YF zSuU0SHNT0Xk`G?zq@OtYU<8!D7vv#=IMLwJA@SeH20qwZ&Da9?9N8QR0Xc zTG+PGLX-7HLMBYDWu^)7;!rC+;-4Pntp|o3Ep>{#Li(9{oltZN3}oK~)UFIDWKGs1 z3W|;~F z&WC&!nEhC*%I&xn#GSyJc@H6m?8NA1?Y-Fqdpii8We*7ZTl6WB@pM9;TO+>qb^aB2?N(O=p32^Y~77$W^o}lJ1kYzz%l_$%#{msl`Ke*1B^CXWH8ZeSs>_y zW{b@{G@x)Ml8}eUk81ABp1o$qtVcAkJ!_k#*`SuslA6u|*B+iBJ}730%K)(PGt|mw z2rLdWMEM?V$#$(ML#7ATRZdTP?DQ}oP9W0sl&y_UPmAd}Z(ATHkhzT+F)0_b72ZQA z&NWN&RBLU5?@*Rgq!QCim9(W%v%fNNBlcIwS3MYEddU8|fk1=iYBoLA{@R!QweO~n zxDB$uw(Is+LWYW91I6^)#!(DkrNvX)4>-aea+)vfugxL?K@UeG5X|rhJ2T_)8>j3b zFSAC93M&ZH?EY~$a0l)Inj)8fUU_pdb0XUZ-Xoj#JhqJ+632pq9<%J((zliOJ=fS7 z&F6M{5v&?L6Wan^Ev=6c3fE+PN+}R8gPoT3ZUDg?hk~N<9!0GCQ(4 z6ACf3R1bK4y3{JUDa23;jEJFit#UmA^##-e))BTxu}nH8mdVd6WSM|KAB$z06xfh6 z+V%>74v-EOs;Fw8Yqct|?vrs8ggSiQuuldpeN6cA&3j3l*?+1D|1^fZSubI0{+Q?g z{@LbMsEM?g3hC?iF^jFqG0sKfb?uru%HpBwlD|slkRa0iiw(vj0~hRN6D&7lg0gEs zeIYbh%<4!}3$Tau#0X^A!IxOTLBwLCoQ>mdwz8y3(owQOWqe?y9hhLpm|&CfA)H~Q zV~{kY2m}H>03ea{VuDy@)dR!66fy@B6txTI@`wp)v*r*J91g21I;Q?9$OMcon4sKR zY%^exw#h6(q{W(dVzdPOl;ev*5FN)ON099 z2^!3tW)W?%B+hj&-a6VF^4mGA_L?P7g%+S}Xj>TJ)mT$LDfWvfd_zR3Y><-w$e=MPP*!qVg~uDRoeb4Cl5crBM)ZH7yh5aM(~P}$gc!@kfOb2PWV0lsF2d1Zhv ze4(kfG_!vLHf+97!QbwoqP0Ujnl$IKomnjQAfuB( zu6hLnf{5E9#=2uhTMgNax3Td{7taL`HN`YC=1apfx+vmrJ5^9}#d)j%1jtCI+4m3` zySpPM282*#UcR_Zt~Pvy67>J7Rp4=u^7Ml5KApzx+$Po9PK;RCCn$bQeZjyAKh~7d z53*Z`fv3FU0?VZyDh~>FJrg8i1=I%}xANwSpEGLxSo}>Bp&OQ7?F%Vm=1Cr*HNZ?D zLh7ecY_eru{BOLtMZi_~yE+i6ZPcp;Y_?VId{u`!^A7Aj_Zbr|Cri6$f zMQvr;8?n`C^D~RtBq=m{K|qC`03CNi5V?GaOY{C?679cW$swisgU}k!g$tuS`sV8h zk!2<{vOHP`)ddp3%Ufk!kc!XTC<-dW94WgwL-#~|&=(C!4^#sX5$ZrMc}Xw%mmxtC0I3a$e+g))hNQR%js1cJ=`kQ;KyAe!S>LUP zo4u_4%-}@2FgzI(g=Jh8QuSZNGov4C`>%C{DMtMVQRzQq@*@3LkMk*^@CEvx7tE(4 zW;z%u7+nqntP0@QEScxRGc&F|$3M-v?k`=PYzvzRPZCBkg*r4P9416i+-YZYEmTv; zyEA%?=w~u8Y;R;Jv;3VjBO_rSgpFj#{*n)|d+sz+WSAFB%XS~6Qq@G#7J8#fC_Yk& zw=-fGG*Tn@0)6NzF48_@)sFvcFlhy?dy~^G;tP``W*J&O_gz*%*S3C7g>W1&J*UZZ+6kMd=ac=e_ohID_YN|~Hc1ijXEJ)Q-#+Ui1?C^E zg%(`ZpoPhe8Ux7JLJKS&OvNsLbtHTYCIKKvdLnKdgXY+6pf5$?WgrA8XC{tL*rqBG#+~>n|Byb zsBUC}v<|Rh*XHL?w(UamgQLmDBieQT`2luo=V$GwVLYVQ8=ap+L*vQk#~#+_M?G0H zKiim}l<{b8_PcFbTe=$byp}k9-jiJ}jp}kgSn|DlvMZF!01}Y3>RJ;TS)~uOYI>6x z`EU%WWMJAWVo0wVvSD8Bu5#Vg?5eRg%z4=`=iOCD+|{yScIrxNv1I`i$u7Nh$|5%0 zrIr3r>P=lqD)}y|ZehdJ!%-Wio;g#Kn7TI-m8#%TJ=8j=AN@{qVB)3X8Zu#C=B|KU zAkYHS%l(S8e_lTa42MBhQ=tBd05%kKTL&20NeH^FrOkU~04o&Dt`yDIU_+s38ZdP~ z47&lA1?-M)!yLG_K?ZYEj~APK?~u=ynPv(@qz-1^uUPxzbHUUa9A5$FZ#d6P_HI*%ptu-;%u17+h)n+{}|~#^56EFN-ffcImcA z*HNd8yD~aF?~$9a2HYj?%Ft6KhX?^aJey^?(EIAyo2Z~DIhe5l2?6qQJdr_vfc(&< zUzfNUzJ%I``gpqm(3a5P60fF1vv6DN@K?!T>W2ZoYSYcU4#&)-jnr-4o6XScNw>x1 zHcE#&aUw7gJ>a(y2m$849DKkToT#AIa+^g1T8@C)hG4stZ4A?qf8?h$!gRq6oK;|u zTnqS(z5@J~ivpf@E(G{3>jr#Y@>K%-M&Piq26!f7c(TU>eq#Xq76Crn%ohgwZV5mk zcb7%9Ns9;-0*Djv=U7^VOFPyiwh-rlKiJ;VTDlE<*(6-pYAr!++iL2I{=dZhNM=F4g|ug8INSyeMj>rx4YqmP1= zo12{LvK{94^U6X&xJRTzYpV-&YrhepGfHS|eG|ec!S5?EFl+kc9{kSPW(X+clU!SF zvvgLjHxu_0)R8GScPhKeWv7nrPIsx8((qjEgSyNHshK94S$NFaap4GLsB)+P!PQM& zle+9`{p`x--^FsAcUQaU2a`SSs-uTVU)4DLc2V#mq-Vf#0ZpldLyqcAgY6c5iUGMD70I3hJ40SGdc|Ohxf1OC%AHY`v>DFh=H2YVJwJwJ}Jiv&3#_57_cNiyg# zw2f{PGABRV#2@=E(+@Dw47S~zNY(NwclFW58xQC6*_r8SKCzP;RIC()k5X41&5QJk zBF6EMXt1`aQ$kpzW8@>4N)CD~0hqTKW$eE{ph5|DbU}K!O$|9p0V{?WnvFHHpYlQ`;ynT8Vy^WB)S(5FL{}pKkUHhP}?@@B`16#Pwu4Z>fd$I268UXG4Pmqpjn!@?a*Rg5sIj)1 zPBT~!1G=N)#uZ^(MMTf>|i2h!%imhQg!q0W~`OdYU%XGH( zbL?gi0FeMU$?;8YD;bC-=KGVef)gjZ|I_73H`wYPht@ZFW-f(?G1Y3~PJ-w9WoPP# z=66Q;68x{&#Q?(H^dDU5V4Zl;Hmynp`0IP`WZ&ft$z!qTMp8)${>8MW0+%^OzL^$D zMP8KS4fq#I@LK2L1+$9Cpmec}BDgWkMa}XrooJ;_r{)VK_?3HY8D$yCBhNfI6lW7m z?Te{=bFo=!AxwyLvex4{fVSh25;+3{EQHhCNo@Sfx9TYd8e6n~EQR(FaOyvQW{dI% zq*&V7!k6FN&Gke1_4~O#nP0Eir}@os-8`P(JfNF%5VUvj%g>wnVWK|~Yg;)D40?L6 zY}1AX_HsWx=}G8e&F&_(BEM(v{h5{N-Kh(Y9@HaVou&KweL=(c+;eD7{-LD*H;_KN zONZ`AZ;`+I%4abO_@B-1KKp@f-2I&HSeIh=EI$jyy(M6m;ugL9aqR<#{BK1Ew3wPf zXu6S$)sG`mT+fANnApYU#w3q}Zi=^^0>N4Tpd6V;j^m*4kD>Mo?;qy3sTI=yJG?v7 zoknDTL;{cnPsUxLI3sqT)060sYV?2>ptT0{cN$#dmd2@gA&-Hk0 z@hFyhg?}chQH(Ow;}4^PVmu?VbU})-&R~z>aD(~^Hh3z|qXx?FnqoA{I0Hmijk2N` zKtPVqj{`PNQPXm~K454OZ!-*(B)22_mjje!9Wfa1Bp)9FW3?Z>773vku0Te|0fnBI zWb~r@(HUY94;gHU`dSSS1I5T_gH`&B*@t96lVoTF0s5jvCNcvJdu5A^{kOKrq>Gfz zV5Ki7LID_@x7gSjX@f{ZgiT@&4Ze||g=Ia+pWhf>?+QQj;m3ua+3-W=df~s~6dEuy+K0+Sg{}pf7PgR*_so*%xt$Nm+f$@U4kHuTRS+>nJooFN+*I4OPu3$ z3$usY+1Ux3By^&b{+?%Lf6tJ3O;UwA5<^>qeYX~=^Ifm(5Y#J4LO42v#0jDRSZnC| z)~PsPEkCaiYw-^&x}yz7POjJ*FD)QfuoySyJUlNU9tONtGj^ z8FD1-LyXXND&+kcJFv4;y2Iu=TSgCp`RdADaDQXpNC8b<7! zPZrpCW$Jf>6)TO2T?n85fSr{p=M7;82g?QLz+5S4vMKmyLt+j^3y3793;sEKVpYgk z!)GSOuf{?0wN&Uo6|BofozQ8*ChEV_CuqeKs8!um0 z*OhsrQFcFM-pG-P-8rH6>@X~M^jSl?V8>}0a8x46&A!ooV~ANeTjmThgrAf5~$hETwi30kooWMrssi)AzD zVDYoVzeaXk)WRrXvf6kN7^Z6)vs6qJdVi6fo+AzOEo9>9n7aZ`4_nBj{jdyS)U0zR zMSHvlcAitdg$&D4h=x-^^=cw8_MT$YZBr6XK9INCkkl)-CK+WddM3s$IUU1?b<+5` z#619R$8gx(z~sBOo6T{^j|H+Y5bfEd*AU73NA_!C6Q$3PnKj!r858DNYiY_&?2H;% z)4plB(@QvGfPt{F#=aX^%U^PFShvdUdIoC_N)oJP0UzM;5cv70$J~s-+P2*gha*_) zJUlk}3f3ir-SkCZEuRfClw#4?rvMmK6Ea+x?t%VelrsovlUzd_RvS6l*oJ(^qR2nk zUgU=$fMLxC&OX=?K9K#H7H%v)*cB2=gsPEr2}*)u#2f=y>>Z^^*&g`OHdsg^qAP`1 zSO+*79wT~S`+)gAF(};|y_^g&i;u*XKQ38-4IM*GWm=VfzFfs3Gr0JY1wd}XC|JY7 z&-c$^J!P;+3}HK6W~YngNQ*!rX_W7EdZ?(?AaYG&A$00M{VO;X`|=qrn8!hQSAlQ{T;+2ifqFU?17* zNft=ww5+282L<)m|Ksn^`6gZBMvo5;ID`$q&8fi*1Dl~6Z5z*3uRC=Ze~-4!WRN28 zp$i-6xS3kme>15>b~p1V*1c-y1wg!T3=0+2k^*m}Y4+i58XLnhqZpPMx9N!6D3P5c zkd@w9--ky8s-=&h*QNMTitKm-O1<;t?86Isr@j_#o2ex~lLpn&melA5V9b%Pgf`9PZNu`U%a~Gzu%A{pZX~~ zM3J&~dSooJon#Xu5AjKBr}%_#**5BlyWGT*-*5oCeEDFCs2);Mvcl0)Q}hLN zuYZInWTycUizBC(f=!x4W0t^cR|j9{8HA)oPpE{}TGcyfW6R!7RL=%ejKlIFXvz3g zM5vkw8cgcuoN&wu!JI|v{ZlQD=bwRhFPtOIpBkHM-M1E z%gSCK%I@+hWgoG!*rh{R4DD|E0Q8%Z4qV9L3!x?sw*($@Bo7`K5jPXl*E;@R2sb`)$ zL6RX;&f|_y&r(??cE=|eLSlt6^PPm8-jYss4Cq93RSFW@e3Xa`eoi+UajXoebj@g7 z*^e3`^G>FEy3MCmPa~o~)D}~W2vX!-Z_R1+#N9&v6g;OcQWw{VS^dvkUA<)_dKmH- zpbjJO&=DjeTe{a)-hW1ob5q#9r4mwgBzybL4>PRpP-m7!%idxq^QG@S#o3G9| zM5?i~1L!lBAVi8z_v3?PL-6peAexYIhH(&fBp3mua&HeJJ?MGgvs-`%N>X&&L1x-K zo>MFn!4zQLKNdcs*B!!6@CzxhFRhC&c{xdyBV9>s~!rwPh1ik9v zXwa)|u$ve$RO=xiV6+wgnKu5@7G$Qes6`EYlG3T6MsS;L;o;`+(;Eib({)!z3ANuX zT^&yw8h+2=)*gY|IKKVrz>NV{fD4S<07ue-|NekqX&gj_g(|tuoZF0VO_-M)Af97x zFastMT*2CY+74qP8p*GKR(*%=(HO8J$kwdjYk!T+2vx;IEfJ8yOXI;tkV68T=%Q{> z>rA4uyh;$;W<8c0o>5{reW~PNt%>1SZi$i?#PH6AFuaD{>a^>7re!zRiRwAMr6Z(W$viNPj`l923k*VULf%7X>!BHsc{=w=1o z8f*nuFM6x_!E&)A1I(eUxmwdSqJLuWu5oXTfH%0e#)0?MQ8PxsE72hcSu?(U2(8lp zWbXjXDMrCIux-~)C|d*=upoh5W?_JaUQLF>s0(P7Lb3x+gX&zun{*C1a;e_cF9R!r zAB*v6UJyJ(#w1KIoh9M}nbS>Le}p_OsVNpmOGb@68F0^k?h6!_-WYM zw3#K9WUOWitbuV|EUuOdN=?>psa8~7dnUVsP2!}+>**`!BeZ>r6phYn|J*(olHenG zD_(kP$#GnREaLuS$r3xIm;BbHQ~f`0qNxR5p_8#|zVq*<*IF*a_Dl)Z4-f^0V0a6X zC7QGX*`7giAqZG>D|FTh?BU^r+hErV;R;zy>WcJ*jy+d+jl%}X$SDevv{{-#3P*ck z+apGn4MZ+Y@p!8veGMo^jVx~*0m}B3m(Mzjr=Iz>&pi6&KYsjc7VX8Se!>bqH&oD{ z`n#X_3+u%B!PF5E$_WvOBcxapRa}S57%+)+(=e7A^%P0W%~-fYOY#>~qV`uC-1^8{ zvUf@+V}ra-^)-?1F{&U@AEEi@zVq{)1H5}F0s$0)+s0%XVo(nctn4jXSl|U=hWJ{- zrdk5uvu@a7rmQ(V82gH2-Ko+H5w9%HW8@)v65iPJ9i}6~!}tL4OAZ|DM|({)B(fJg z%8{Iu7H!FxR$`fK=3!p(5M- zN+$@#_y`i*?>9LHO8Y~R^)SSJ1-<9CE(fU7Q#dKsB6<@_KbV&m9mvbdQwd&qb7IDW z8LId9b~tgJUp$0Uw&P)-mB-rZ3X1f$zeFONziLVe57EE|t!Lt_i3U5rBo8BVr5_i5 z@;eyl;=L>U>B=G5TzsBO&IRd%r3mZuboY~q*ZvY|Rzzp(n1!a>bW`Mj)k;j>fhf{v6)KX^eIEja{oYTX@y%g3AK4yKy;D*tXtc%1agK~W! zqqD9T!IIU*$qydUL!5640wrrc#216q3@!5nq!LZ{r^8?)#()r{424a_NAF;2jD9PA zi}`@XzVD_8LgUcgwRwOa?N;E26bo+SO_8Vs7=d+A58HSNNXxc(Y0t8It=g;cK2u1^ zr{;-pp1Uc+X4UflBih1K0{@4Ip0dMt=Ry0YNlck5t}bE2!0r^Zw*?oGy;K{f>h#CD z1l_R$&l7Me?6FYywm)IH{vm&|M9>!AF4xc*DU-}4Mxm2DdmN=&xgek5w-~88=p&C= zOrAIyslyfreI|?gbVwdK8Nvu4$kX5|F{jtXvv%motlI1Cj0V~Y&95U!`=A!fc7*lq zSnrbs03$#yvrRgEBbV_qmUY1hDno`0TeirTZu3ECBNG12;m~U;+s^yEt%L(sX4Mo< zP-rgU;Mm~GaB!~kaByBJ96Y*>qq9Tted{c~QOgd4exP)k7+|p7>BJJnN1OgVt?dM` zi0kQn&MF{-tdhHPC1nQ;;Mi=BUFmwqIt53F@j)waz?349dvl!08qup5LY=D^po z)FJfztI3nZ7eVPCLLw@c<790)uE)4ASz9@(xVo)XTGOT1vmCWsx?F&zJq7M&F5Pzb zSKCPk<3z>SElz>6PSYhEA$50a=@v>}p}Q4tWuCC}Jl@ve0c^9JK>bl~E9<`W09p^! z<=|~)6(NLFxyo85qXNGo{o`=_)cL%vq*X*{r&3Fg+k}xOm4J_2{x3+vBZz3KUAiVs zVp>y6mEK`kEmcrbO)br%t8uN0Oc&=it~WgsM>?0PDF{nSp_+OMO|;{DpcW-J$fZI; zJH#*Yt;UT)J=Mce^;FNO_VczS?TtvVTv=ux`BrNon%%4!jz!lGuUJqdM2DIxXAV?F zVb__(FzsN0rtHyBA6TpsB^1WQ-Dd6(Yyg_IfXofaLAy&Usd4F6XAmT+U^YXc1CPzHh~C)H9cJQzTjxEl;2l6*;I!?W}_wAh(Dq z#{~09gWS9fL~DUO(!u^RiCe+GVpc?2x0K(@0gL6)H8O{^Q_BoQjPJP2K;$~nBC^at zGO!y*EEdpkW*}xu`KZD=Dl!AHUMw>ZVId(FBGd^sGedm%OEKqAJ zV8&ReFio*mrHBCgm1_uO@7~u*nl&2fOy7~8Irn8ySLA>GN<6}b{+1*y6_JQt@}szI z*@MRt=q;%=nY)t8m<7+Rk&URZ*Pbi4Wvpl+)(A&?$YQIcztL*e9&53kkYATf$46Xe zjbFEJ{$n`7uUiuzziWaK{JQEqNUTv-=0@6sK*${6NenFlfu0mBwSe71D*&8p-35FF z(8!;>5{)2-ttMR)&5Wh@Ao2rOkp=u9JYgRK(GW0V=3G7_rN~N{2?}Kj4fu9+H*TbS zPbA^J%#xDvNz4(JK(B(QiJzAuGWF$UdxR+<@zWQMC-VO#`XP8%+`bf?Mpc_iy0rX&ySpF7Fa~h{ZY<1 zgsWr`uRMaBkybM<5sC?cVtgajX6pnppu0%-Vft;Ju@W#vKdKlPagP5;8W5YIa>|;< zdz-v*=|ROS=8nN{N4LqfQ%YVhm((^a9Z?e;NG0lWx^J878nuNAd^sj`CPq>cx^cED zE$S-v?x25B?fXPw-HwB5gn5cGNwNBg`ZfG6oPl5hV_x}^9Y!waG=oVk7EnKY*{Gb) ztc?u^PN6L|K6syYK^k&pSg`W?s#>U5plxwVs!2nL)mYpt>MmXOGkX;k14eR;!|CgC z8zX^5|4Xa;r;WISG(#_h{FYKd0}Dj+sWZf=2ln%4q#6Ii2rs9%hk!ii3VE_tKoGw9 z?cr~}V&B-qG2bNNo8KA!=4t!J9*+4Y4d49k@HfA0-`K-3-{ef->EUmlv2X0*m~Wb) zo!=Y&=1caCJsk5*e#pU>Yu{LTd$6WF=0+o8{0dDhxhb~`SxW(0XJe03iHb$ z|M*8NE;&;Uw)P+reY2=7o4W=m)hH@rW2;ztdE3AlEJ;he8x3!1U|0oH6><@O1w)me zfHhG23YLq2slX~Z_JwI33t%b`kX>J3zGBJX%Alv8)Jl|a^21=AP@GoCC=Q0vPti;y ztNbV-ZgR!>o=(b>#U)j?AN)z#il+Ofj zDdjWObp|nr{s)Rfi~29NEDHdDvZi77v+53NUq-+gdq_oR5LdL7jPeSnkF+h;BKj5J z4JJ3<$$L%hrSNgD+6Ez515sNzglV$~rO*^0ngqYn3za=Y8*6RP%)i|y&|c?HIRDqrY~h}`g&|9RjauW=shM}0V~xF{j+N@i zLNHR1YNSrX*dg&n7rQJwGXs$!E4%;tseU>Ref=@qb40zrByg#L$zjE@zt6d?226&Vgl zfZ$iLj5=`Fa~x_7wt-HTpr)ZlUS?(i{=+Q8d)gJSc}isDq6HRUKmJcCroYN+Ni&nB=2j zE^DL78mnO_ql1BPF%-TN7&MZ61Ym_AV50(pY{IHWBZ8^XkX)b|OhbdwNnth^qXHKg z%)WduY(}Z-P)xsVCp3s`6ZZ9$yWMD_frl6nB2`g;HJReVrrvY}t^~BOdDQQ54a6W& zh8+z}p>QHY%NjrQ8U|G3ug#{*JMU_JM}lGerr~Ka8;VuF!1#CNRggof1YwvG;$DIS&C9vN_VbH+T6gvVK z%qT(PPizdw01rI_K9WXHhiw?$PbVC+lRyLXS0tf_u>5mZFGlZTK_|c^R`_IipRW+R1|@`~a%2!ml9s9II~1RHg3S{C2NbGDkJ5)yy%k-&d@1C~`U2sFlo6T}(`Yu!&K;S@Hcw>a=QrltSMtHI$h z9l)LtgsCJKreaDJ9oWGDA6FQ}JP@E=BsKq^KE(yX6yhKMSO-wmBvBbZ+8J%M_~0n4 zAjcQCaK_sM#?Dd#1tr$qLU%9?aZ$-6nnDALB#^vMg-}A{)+g<{?eW?KJnh#op(OVA z=0FJoUL1syz>mMlX<0YN_&4GZHkfw*>m&)2el{v40WI}}7zF?IFrBH1n|U{chbN|k zR;HXTa#pdt8jJCp=gv1ukLhSf1WF4Y@1+=d${vha-Qcv3#V`L;MddPj};}_yYm< zC$13d0GS0}j)?EcSOCUmcY6uCS((ZbTtA)4_~1)7A~O&@wUSNb$oXLvC*AZ z&@fxS1dX-~)2~R-5ba8f{;|LXS01(MkOgmmY!b(D@jsWm9McL~-1 z5V9JFU8*HO4Cl*H8%#`wF|t!)dK2kl-xD!XR>4*gMiSdOO1HAYhCa z1TkT8{;6g#NSSH(Q*=Vsm0iYtKn|RrK4%SR8>9xpNTdA-KuS)Y%Yz0Ag?GXOIok`e z%-pjIPLJ}nB4H9Z)+lHCqCg07B#s58zD21A>}p z6LkX_!%7I+NMZQc;Ewu)2QXYDX5+y&RA#Eqs;3Y+A#u_52yZPD*r0c=b?=dkWG3R( zt#?9}ncwS`*Y4iMV?V)7`|x3Sa7W@DhW*3YB-tuc;@vRw^O*dLxi}k3oCP?oQV}rw zh(|^#}WO|M7S;NJgB5)vuN`nxz#B53486PNM zCW{LX2h3Qo1IGSaLCPs=U^dB|jM!rjq~oluvQe*6_&ieO-`A=Ptj_n#DnWPSR@%)Q zu!f{fgpWLBal{%2i<2Ks7iGwWR}YH@rgi&J6?Kk+Fyh_^-Oul(V-_8|FUR|BI`Y!t z$2;O$^3n}Oo!8@(t3iW4x7c z-q(Hst9uuLVFzV9Fs_75;XlIBvY^`Sfu|C?3 zVOLF4NuQ6nnKc+tPwJjWN;gr%4H0UAdAeumV1KV6!Ykf}%V;Y^XrUM4Rup${$yf=6 zGMgpyFM6g)RW9%OY@$$%CPe}BcLd1d9INRop*BvjK7C!*^S?uvJN1noQ4Q$GIn|Pz z;BGjgMtdbL2z0hGoge5mfDgGz>)V*vd=+*gOpIA_uL`6YR0V08vt@+~mqpc4;7o@C zPXZ(2*5&HQT6H&(g{>vhLBIG%TY#++t^Bs~$P&sbozteHrxUv7Au62wQRR)K2#+C= zUGeHz>`}#?Kleu#u-s(5A&*(OvV0%p0`|YLVree!W7}kUpns+*{0fI~nh8Y$oRNQ( zT^U!lD9{cY7v|~mnN`!!+hOB^^WcgP8yDI^Kc`HtSI4=r!A34rIxCNfAOXF_dKBtn z?}MrLZRz%)DVtnwiY_I_o{WClYRT{Y@c_?7vD!s5n%Lqd{lnoA`J$l_fc(BT9<1Y& zvV&=VBMc-+2^2tfc+mpuYtoZ(Ccn$XU0JlMoY``b8A<*Tyc7M!6?ZJ_ zKdSosi;9Kb@Z(Bk?fQ@Ekb-kp9$Zy^YoQHm+=P|L&6L85*>Z-2mDU(xMdBbMl=i9? z8FcX|JQq{p9R|f)FhZA#5usHW^ zOpreu60!*DsMFZlsWxTo1UBuAE+qjcm=T=$u>=}Mj^gXJmlkc=fzE#gK`Ig91Bj0N?ArRLzGnQv=lEk#h&E)wia2%Au zkW5cSPl+=M=SGi1u z&66mz?6d-RF;9rpVV+Pa&Noj`)G$xrQ#nVn5rc2YtZja1zeM^WjNd%mH#cj5h^3wHzgMBGz;`QQMo zd#^0nJx!>a*yotIbTM6r4c&MKUx^ZxCiB3>94%I4i1VnunapQ-Y&MX@|KVpumi>wC z11#3tZBml*)G;RBw3JRhIPgr-oofbHj7sf8lJ53Q8tux%S*qELZq960p1idv(P{UI zMu?=qzmOKTc(p_z42>|LZA?QYEn`WNv<#wv;@~zmS?cE*+p1`9kffp`f?n>@7j?oi zW>}=>eg9OTYH74pc+8`!fE`j@DPFZKr(kO>>Y+6@>Ves;m@ZYLklNDaG;;(rYZU~Mt>SS@&tmJOR2$bNyId%~Aw^K*K=c35 zj3;FwI+Gh-Vh9HzYTZL11Y3-!mf0N12)AcY5ey>!zBM+70MbzMd2T@!a zFYB-Z0;>|LXgTHTATaj8C&MrhoxuEhF&IQS3~FQop~0G=i}+?3tDC^IB9k4V<#NAp zgaD~$0L?k|p6E0sN`fLU-99HUiBqYYOiMo9siMVrRDhLj727Q?8fixTWYZnXA_Y2Y zr||;wM>1cbJFzxUx`sAG)F-3JklGaIAI+k<|kq(B!h_(ww zO+B!1h;78jMD)zaGS8u}HoE}JefGhG`OjK>UC2TIC(n>Up1)qACgsIQ6t9r=~F^ThVuOMR98`7yNd1pI&s^E;xxTC-X;e^fZhO?}PlD%96R z>MJWHGzm`9eB#eG!hE#Yf!1$zKbkwuVbpoZV{d(NbCuuzJaKbCMl<_e#m%h)$Ds~G z?74Q!)CB_*vteslcNdGB6C)~+8*GmYZ2y%Ue*>Vjn2Dm(Qf5)l`iFw_5f5PyfZSmb zFeZ>`DySJ(i4<>rWx~*ShWcF(T=FV?7rVM}{Nw+}=kZr@&YD;>OKgm$41h4Ja#$r; zrrP+M6iLj@xzyiZ$dCwFMhVhE40B10PUUM5v0-_7ZyH5W@jsXOUG-y+@_$rr=uceU z$peR{O_(7{LfBCVt{0NHqkim*AUvIioxzVDhnTz zb*Hea-x|m|gyEt8utg!!&-3#d=({=rL$IX5!g%lsLh7Px<13)TdeHyb_SSCqO=xN= zX}e`Vks<^m%IDpDIL*?4ju9q)D|V7FNYYlPk*xy@t%e%MOQ?j}CKY$@Z^JeNbI~z2 z)O-dR#-II?1wpghhOas7UN4Tv+S4pnfi8f9xs+1t9CIDQ{xHX6bB^&9TejNl#ZUo& z4pK*191!m#Uj*_tGIE$HGE1mCvpHe7B@2vRw~1GLBAbg~v)U7eI@x1ZsY~_|GJ@M_ z@o86hssqh6Lp#IhI2b1Bf4r?QE}G(1)c-l8U%lU8?3)i3LR0Ercw?zxkfEdt**Rkg z5@A_TI7dTbyrwKM4TBI_W>Gei^v?Z1j-ixPlnmGV1@|O&Lx5pTM-67p*GL_!vhNQp;=q5O<1w9CBkLS2emTx9(lW*qBn27$M{j-^x#k4cZyfcNA z3>9qwKMnyCN%t8=57Qqe_C2QmyhoRJ;(T35)ikRF24?QqKuzaKl%%subYvPo$lX>F zK7jRNz#=t@B$^4OkRZcqwr#{l%eLdNp>;vEk>ign=TI}7G*p2Q52#zlNjc6Tibd>L zt(re*;!V+jAA7(u0*ft_n%1t1xB0JQzqT|NoQ45HiFEIboVr6lhzzC2(5ojx;+BRe zw1x$DKZs^!JrGf05*KD_p?%IebOC-(tzpedPM%B!GJTY3=6z^N#TcDhv^x+d)}YWw^eg0Gh*FbD^Yzi?}(rHa}& z@!8|hmTZuRrd!!XI!WvBZ%)iq$o3j8pfStNF`wMUR5FZDeU-gWvQr__5GNz8TNq)( zXJv%55O+qeE$lc%0&=>qnoU)V5{EF}QJ*uDfp}*{GizZHgI7TucUZCv<7gHe6F3J* z5T2MECX3khZU}EhVc?O?g=`uIkp<>eywTufGo&>=j>(bYdhK-R!zi;Ez6%tf&TYsa zTT1{7tj4IrytxbLCFZ^s1EEHjj5RudY9;Rwld9d;HhaBHjsz(hsCmpbnD4&IK%Iydw=$XwgYlklQfXYE5_=&1$!FQV zN@;$XAmc5zDzIre-72bIL))?Q<4w*uvMm37f!#M_Nh@UWT|j&?5}*2( zJbN23Y^9`v%J;88(z%@=7ST2C@>k#GVHbYlcG7194xFyjL%>MgBkZwjVMO1`GN^FKi*9DN?JCSj%tCN8liQ>bmspUD8#>cj8_mNLT) zKIcEfGi!!$NF^BDs`}}WGJpU>~>GM;sD$`!WD<&a@4Eda!@V{ zO@vn&vu`X~%9$B{@N3c=7q5J$R-6PK21J)AzXykyVj9a&F(JD}sx;78{;tLpAqg7( zH8e&&?k#kiXv9T7OBVWy5jAUWZ+Uly-QEftg5(sTVv|FmVm*8W$!gXe>-L@up<>Fm z)ji^RYf^e(J1tZ3n<~$-LIkpk`a=s!=TFWJaGPlOc`Bfn6Eiq;d?MqkwMr<18f_UI z9iYRebv7awf`^BTk?l8FYZHg?n9Y2Jtshaw2ZRbNRLCe;Qz~b)Mh^m?4Mpsr}q=3D%rcg!x+ktKL&U$iOZ{ zIpjf@ELDCGJtJ5Gw$ggNBXHvl2eW4WnB!yWkK6g<&BKplMeveq|4klTne*)FpYwo< z^prV;00h^PJQ-qu#H0$}I7d`kJRovbY6<{SELRvBClj(LNrzP~=nUv29sWdM0*7b# zWDsCq|430^=lzIt4}3c2BLYj#{}BO$bgyWs=o}jq)_f9c>LRAD&BnlE5CP<^Chlp& zBC&9MZ(&cFhH4~TlPGmbEV3FY0+)j0W96SD6|D}2&=*;;e-sR}Zzxhh2M&yJE2f#U zO?@Qicv$5_pyZpHyI*@H3#f+l+sNO!9 z)sY&IYsfD+ZR-H^GGm0Ak{USOe+;pPm^hZ~W?__srj-@II;p4^ltG?ga6RO+We6Qq zl+?q@CfQ%YMw7K^K>6d2>u6|5T9SK27eisyi@ zv>CsTb`53HK_X^UKb`K+DpwQBn!Q+NU1BC<)+o^vELp4FR-mm#M+IY6pcWTGZR22A zhX5g8hv`Jm^ z@sIRT##y?O!AfLI6DsVn=q}zh)c*7-L|CTXNXu_i0PQ-&z5G67oJjePkDn?ZZ zhzx>oIW13-64o9O(^W@XbIUNKXb^#XuuCo2YyxWH8U!j(5NVI4%X8o@YJ$oo@DtTi z0HHOfS8!w(Sz-ZM3y{%ELWsPj*T9K$^ zqR9vm@9YB%!0MWG@9tD)Ux5}>6JVJn*LeLPPL3{u36#j#`h-zbd)t)5pmU6XZr3^5 zB}_+T5E+;bxX$iWE(3n{ictZ7Xc(kbKM0v}w9*s2Nx57X3>FQB4nXk>-vAX%7QgzL zk3IEM55Mrs?_^O4(n(le2|Q4eF(U+?{oidus;O<)#fi=hQ7@F;ww|&I0;k>w z!!mtat5xzar7;(&VCgjW(W?4?JQyaQ2m z)uo5gwq&+OU$>c0_ldjl#JTj%Mi!)f(aTu7DjS1I`j)b^CJ$#F4Au@Fr|>$l0PGog z;z;>uVCZ0_;9$zc>b;z<2yKBafOsvLZn$6rMN8*50L(UM#}i&yz!l9vc-R0X2vL## zLHRROS1q<+u;b~Q+w)p@nCN@9U}`NO;h2BcO|Tl8ZBavjV~3iJ znm)3{Dr9r*o(h1`{tH2dJr%rGEVV`w;w>XYHCu!8+H-4HZgttJYnEo_?+$OooTMba&%mNR~p&%^`i#4SD*%E~8Jju~=8iT`JIPvbCRv z?#$ZmI)fDMBq6WF`zAUwxaznFigXI4W9X_ zaKB+^mr#(FU1OEKHX1QRL6pH3L*lV{3Ypu5K>HP~;N&Q1i&iaOV7*U427%N}@LL&! zv>6z4skYS>$aN*QtEr4GM1A2 zL^{Y`%0yOMpe5SXY@3bTvWcE*90oh5N@z%Y^wbxxWjB1*8nSP)+Z{~GT4U{-`9|p0 z5!aS&b7)s)J$*1FH|)x+t$L~YOxY_pYKCn+fI?_w1Fg)OqVXabh=?l*K$E;FxfU)V z*qeEZsqxTPO@*CuBy+MBuhQ7mSIr2n2}4*ak_iwu{qTq9g@p2E zwFjwx7Tpihqhu1fuo!Go+StYHQ8!jXavxu7^DCoz*y2%Zkm?v8xc9X!$)@1S_8 z-yUhb=KnL{LIQ9rNO@t5>IuLh(VKBy+ECoQGzk_7m?qmj^iQ7p*YJZP`&tc0xFBM^ z%OD6M_dg@^QjTV?RnLQU6KOO@Jv|f9VgM>{M$K54U_78aZispjoPzYOaBX?wPYCYH zTiC&oG}cD>O=8s|!I$3sw{ z0+C^%B6D^m22u9izjtwfD3l{(D9ZLKw;1K6%@WAaZ0wDl(SL<<{+;-Mje$xUIsbb;cRY345xaZ;p zu}y_uwbU!Ny_Gfyu5%j%uVjNjx|%dg%3ieQixpM`meu^WbreQwl1Zs(o6B)FmnE9l zB!__oKp>FXNbd+86SG_5QPH;Y_@US9OHOgfZ99@;IoD_(Z>Z|di}z1>V6D6x{=&ek zo~|_v!BwufS$!>YcPj9T~oHF2b<(bSBO!if%sLiW69|22+- zY@?Jr&`-3%p?d4trc>Ev#~#f(7-cZYa6IjwUP%fjjF;jzXxM=^1lCl!7$7fx2jgGn~JOx=_&I;NoGApdLS1_DEfG*^~?;G=9*Or_LMZ z&|Tfssf>eZc|%Cv8|F@BI;Zy1cgzhgO&3(Xh#E(dIcAX=k&9%Qv_XjJ5x(FCUO|k( zO*uJCz7ddkdC8+;o!rqKk1rgqvh|pU$p*wY(W!J!x z#g3y1U(_kGDPcko6T923+1InE`s4uV0$*4|4lH=FE( zN(aZ{5e2w#-6heUqWE?_qAcPSPdl`w?qZ9CA!<_gGv%rI`|k`_!~lqB@r<~Dy^M8X zSvQ0WpkJeQDTLt0PymzaE|VmD2ssP9I51E1DwoCdX=sI$@N`8hE?m)y4u1rgBxQ{vn43Tb<8QE`@P{? zTV#k6_U%a6P!O2Zo;s#N!P|SD22>nmP8CUd7s$-oslFOlb=h|C2M<@9D9>BU8VU8~ zzjvEfU2BNV*nv=}d#Yz#Ls2z?;71;ADoXj2XgRB5W~;}@hlmnLJ)FjEfklWFLBOLzo_0Upn=?_ zl1WV*mFIBB(5wexcVbAAmBy+i3MsPHCW27&SUvDp^hX}6^7z-1Ey5F3J7JV`-@i6w zUAB9Cz*K4vyISUjlnYS94p&& zRH+JiSYP2?WfE(P6Zqt?$wMpI!y)R#Du7#Xtlpd`ZDe~f^yW2E*Vx>TlP&3fw!yX( zA&=sA8Z6Sc2$J)WPTaeQyuy*}VRB11ds7wFd}!!=EPdz~lzkl)T7srK_y&Sm_|V!W z1MwgiD7lvpjXK$@ZuHq!Jw7xUFRU>k@Wp#iV~}FXD(3iNBB_MI+=td4@}X&j8l1IU z_Ftmp*#4<&MNw;;fsEG8>=%s3#7>Etq`1H6iGdOyF(AxGWLMFEq7sM)bv<;tpvrRk zkyx$xd8D|Xi+rMW8e0m??vp7o@>pTdq95nGUkj=(o})w-fg9kPuq(`}dqKs5=cH=Y z7y_Hj?Fysn8lGeMZdrtZ=UA~jcc=5=gMG3W+Oxf~7ji}I*ANnijmRF~DBG=F?UHFI zHlv`@BGM0qJ^=s%;cpQJLn`U#JdzCmEa)G4B{zp{>4L(*!(q;HFZ1{o}+Tqd}x!UD*KS2hsCLT}nANS5{rPfGBOMET`fFK+IKY0K|7OOTqNElFDYwsK&pFMaAq8KlqI=Xn{VRK(l z0Y-MCoGL9B8r?D!;7gEU)p}vy2I%ha7}Ofq%%+>}h+^d3ioqGB|yjK&J#Um`ZFt0EwWnYz`_P^3In z;nnUhC?HceU0}^g1L0Sq^pwaLbYE*pr&7!PCE{K{8dXF11H7LNhX_HpY?;Zlr@wh5 zxMtDDt5CssnfcEea80eQ$x?8^0#&nH7pXhhL0sf-T%jLzt95tCYTcu69J@9?Dt9W_ z15$inMN}@jUzL!mo>SAbPK>#-7|0$_i&o1q0hAUO%A;~)lqt(gWrozD!`wqb#$4p3 z3ibdMM7q|1D>H;5E7dA?k_cZhcp95-Z`lT5jtZ4*`OQ-2+Tb>dX?`f5rQKuJKq+7! z+yn?e3dGMR!NSUnY$-V<)jy?ZU%4yx4s>uIVgC+#x7o%mrLq%(#$szk zdNci|L){{0-yZc!5BeNj6YUAt7V>RRp(1Y!&lK{_iomJix{reFEc*rrSkGU}?yDT&M%!ZVpHf+d4;=dNUP;~|nxC#sf?GX&eJ8P*DBk=iCP#UF+O z7Ku-q5tJAPMH5iaiXA{t0z1gqcyWc=RBpd^e-(>^EkoYoSTNMiL;ozUhPo_MmJ%)} z1T~mX8OklfWTbk#?XRO4aWM3i3zykmV$)dohuUT4Xa|$43PMSkcG)zd;2g9Kb`4vj zW=-m!B2-UMVk+l35_?AHvLH-sV^5);vb@9}=9Blc=59#dPdRRmgMEs1LOVZhO(y*p zYzHQ$3)`?)0EACSTq5;K8}z6R>1Akxo(zvk@V z0z&owfm{Z7Twrx%vZHpO&>v864N}e`;Mb8-$D-Ge5~j3%q{Jrty+KN2yCX=6o-RKC z11pe{+4!eIN}7VQzbZ(H&<64ZY$VJ?LEJ;6P?Pa&%%o^DC7}}-CFC9LA-FrSmnk>3 z598;%redZU>;-LLXZ^=R#H{j)i@CFRQ?ZSU(E!O)Ow&w_Vx2uQhw~+IKU#v3k9a0b z=AX_||CgcuMp!`Pz6Az|Lhn;#`Ge%p>>0g&3$g$e9Z^@2aXL$@#~xK0o*;vTSRk6n z`_d&R_)te#&GZ;Nb`6e0)vA;;U4%wo49H1FRZ|D(+VJy-5&Gq5}_<3t9rKiZ~q-U?gRaI$(&lhaX-+A{D5~)jXaJ zYFF>{BkGWcAW~gU9k_Dv!<;%m(@66n>Of$S!L$rPq@Zj>Mjd!BC$CWlc5_tJK_Q4T zq^H1+J{fhG6m^&ob(qYl1JBWtO6o8n>JU?-sDnZfS@e8ePzMGwJBW>M(J?9pTGzV} z<^`XJ3Ti3_F%x9L{m`HsnZm5JwUtuA{{XE(BH@cgC8ymdHzd=+JxsVM-eFa5)H+}n zN`&+qGmSmOCDUcdMX3eEa(1|58Q=>#sr}7}nySD$c_t1T3-=v**#E4|?O-blhisDK znQ(CpReQwX&`!I65*f}^3-H!%ZS#GiZHE;`h-n^D#GDgv!?&21%|7?b)J~O&|I3K9 zsR9c%Y|fNLmB*}m6}L4og!GC>->f!cH+hhPRzh)B5^DN_x;@G4$v(nj>`k`uEtK6D z3gmT@(VLMLiz(DgJk!jZ)x2oA7&ayHO_IUbq`i#@vN}5_RRFuyfN=&Ei$bcrz&Tj0 zk$Jp1EfS>?^>;MuzgcL_is`$J3V#b#a|eCpS{t?1{Ta9MuqJ$!`y3CX9Oo3dpkRy?8VuvO*9ddjQQYNvLEP#tmHO#I{m4Y5Y$0E_O zY9^#vo!}rJ+u;M9!>+~05K=DyF zEkFpL!?FHfiEoaUFce}q1{M%8MbyoD0s;Tkuu%m@<{*4?OQ{<|#{DIL4X|2fm}DBb zSAQbOy=9E*WL9uvrWv{w=Ay{(qLK7KeN;3{sbb4T50JhXvmL=}cwgND>Kh_PN5>Ud zt+?XV{+~B3Wj%7fKB2=T{|2J>u4sBGWr28FMEYVNQOB?e0f%~ub*irg@OhOINU~{# zeJygj*msn;_#J%TUu+#7^ph$ohy>5TvhHlXNT%Q6?D*upm$P+zqW1rXy>}0{G%E`` zzstUybM`q^yQ&UQeNn!>t%--&MVC&eDVu&`eKk!}LaX?QN__H1Pvj4*LZ+)ghM9EJ z)zAVWD&`@I6COh*XcMi@bdqrfP_aQ6@EQ`C86K}_oWyHH#Q_!Q`TgFtzP-PF&Z(}$ zEhd@J)Y;!G_NKVcM89hnapO z82Kb=(`GM#iZ9f0ptbOW&ko?Yr2N8f={oP-K5h?|4fgZ4AEd#4qIMeW-3DI>s^_2J zfmh&x(Be?1+J7);-%pkccMVx|1IV&+FQbXl^Y(Hx3!;1bJWjd-MN+i7T2)slQEl`{ z-rf{(`te5njfun4+F;H?KD>OHCjCp!UHVvP-6GiAxGY$9HTmK7Y9k%-hRG3|S|au{ zdsVcL791;pzdd~S92Wo$ZILgK)SAsD>W)OOor1FxLrA4VWVW)<*}=WL%cU1Kg6&Y3 zHS!aS0{U@SA$J)S!sUMPE1|Q(sb^*jh4PK^!BNfnw}Nxc7?$0=1r#)MoOmL}qM`>J z$TqzZr1fjKt!C>r+dEi*bGZ>Qul{?{eE7l(#66ISGzoW`99dy*2r!B|?u=6|;{2o_!sw1z8b+o|LX%dLBCo7vqbOyERC%QYV1S zz&?C-z%K4Su$jCJaKgm#RrJyXd7a%Gyuv+{!mm%EizbK<+n;e$2E#T3>#%)409mIG zm}3xp+t=66A_|S*>jqXu41sW_;Ggg{*9tpLuXw5m&9iovW|BxVo2}-O z5OlOP1R6+8%gT|dl4dFJR1M}E#g)?ddng*IU2g>Nq}U~v~ zf-<-LjEP4&VH7*0oKUc(+EnC|<;B|yj_pEOlJU+R38tze7n2ZR!gmFS)}xN*dLg16 zEDEu|Cp4lH6krGai*-?iTL~+)V}>X+6{0LX2TthPLL43w9*vVlBQ$D5J!bhaa~yf{ z6u%AJkFrD_q>hE`g>WyD1-uAXnPD`ctoLCl5_$^QP^4`3k1NgosT!<8TqN87X!1{o z93m839-vb>brO;`n}e)F4K)s@OWTB!#m?cX%%w!A4+2A5;vp@Km_u){P5z`J0Kdc68ommQ5bK1VT|FJ6IfJZN4y=phLZgXobU0F5bH7*navA3Gu3lOdUT3*0cN+%$w8_1u050uc5lf|1YRnC7xRBY!3&#AAXJ*g&* z=o0dyu`j81{E|x;ZiqD!GX``8&J|9=wwytYLKU?!IR=irijFG)Xx&{y>`+72Y2uf5 z#*c~2gOiQ)8c+eA=|gkOJxUaKrY<1w&)Im*kO$8;RwW+B27ilAAxj{o<(Q0H&=1&m zdylX|#C$g37@Q{w3dDc%r*$<%sB20`GYAmKiQQF3OYGFN?qPsn$nZsbhED+9U^)C@ z44?T-!{ePrn%J;Um=cx7M%veMY~%>do62(XzH-m%N~l%SUPi4wt7{OeOT;jsJXY75 z;9~4)bqx}Fkq-!7pH`QUNpPwkPJjxV&k|4|WdamFvIU?POQ#1Yh&{_@H=tf$rCss_ z5tJtifpv4~*&Yaw#Vkx;d3g~#b#ME3UEymt7@S18qo`z+)>&|wQm66TLqe)E3=<<% zyo%`g`eac+n;U*h*w0tBK)xB>b%QJ@r|opt`|Eb6B%Lv1%e17%De@h2LtA%YCWSyW zLlcP6hX`As=Z0Z*9nV#>=f3@3tHvh1OpUsz8Xl$M$-6M+7L#+JD`=#E%|l7Z9MmIF z^uj%04zj&i;Nxe_3vf{H9c3ASFK)mFdm-b<@7Ll807Kn}#J9)44f2!Hm1BBjGTTUn zE%~Ur=T*>=X24JJN@&G{7OOz>M7wDL3M-Xt55444`xul2!VSV*My?f_0H^|)T3=j> zHflF9pDb!VBHD5Bk*3kbN3K3FFv<^7`2lkqjev`&%w6?XVoBZ|ed)tzo7BN!`i7(K zQX8O0u9D6TmtSi^i_WF)tyVHhm5iulU`J&X%TF2q<;O1He-S>jTEk@7jWIPuIe-$7 z8dKLO>QbRw4x+1TF_yuyk~JzRg%~It0>!5uaBEN19%dWQ!@vS{>99+702n#|tWQ2z zlLep?aS+KxQWQbA0z;vY{)I`%NUBK4T;)RhWG#SbYM+CoeZtj3`(%sA3{6Sx6VzwH z-Po>i3dfDsaE5sa@eK!%!p~Ad+$$Wi@4kX60fG=P8CZy0v0b>7H75a^4u-X24O7J& zeBM>)7J5x!eY732%|hG)7)mg^1x=a-l8Z*yJMnkfu9cBNme{YGKp4T3x&Sx15_{@- ze_H4rN6}V0_4VDXro8E|qff_!@*oP$3TO{FYG6}Nu)s999|GeLE0t=9dz;0O?@oIX zS<xa zpi5m00XQ2m1azOow-B^m;PW5767mO`S|-Nm$X}%D;S-jN8mhp6UTJdGLJ1=7K%K6Q zV5kqDc~70TrjkcwAC3uWy6)?o`k37(oP00!Uc{6SI_mw~f2};`jJ;W7PGV>f^7#}* z+9^)V*IX+Y6&9P)xXy|KuT&I{3W-zm!!p(Nl*g9JbCiqY#`)UYhWU)EMq( z3cK2AepqI=Q0TW&VN`nVyy3ROeO5%BE4A^h+XOb^;0UaX;DL_a`DeO{^TG`3Z0t2ELzceN9-C#I_IrRU7#hJqW2>9hu4?tl% z_MI7SyRk$>2r8MzG9q#lh`5mvk$apvTbvgah{)fBh#MIZH!>muI668zBmn||xXQR~ z=r>-XrYYUK1elXCi#gqCIV`=p&}?c|%#b<9#lIIP?&u(MW(6`FwghC>TuNt}BP=1N z4UWrxN>-g$&%SsA!_4icCIb~xMC6$79QkP1$njRi66{7kS{*sDW2++{<&lr_$Vp2Z z$#y4-Z82&gkp|9)hnv8JmBr53KKwt;UTj{g7YG(E-8*iSCmoW*i|50Y+CEaY?voafOFmXCe%Im6NlNsfLAi7Mt zCA!WMT;$0`Bv_!S6#u8=wg-bNP zonYA?_Lk_O&%qLXjl3b&=z|L`ae0+XTuxkq(T~zHbv$!0g~;1jf?^tRa5v7Mn902h z%t;Jfak;es;(V@=PXtE-g&2`XgB(GwD#s5V(^RiK z?F1a=x)X3>lIakXc^CrDV(Bmjj-mLXrf9ZrE9U%cVVmdY$ZbUvYia9qu$B(8qJtH# z*%>n`(HU5?oq?*@8P5xjRUe&-&25@tx$7KwL6pKJWiVB9==@HBYvWo#ZaCcq`lS{; zYBsZJ&?@mJSIP+x)B{!HgnA4$rajV~Fj1HJ-^-L?u~d;>7x_dJnG=}%wq@V8dh!(4 zS)Sq*@)YVYG^DF^>jH(lO1G?(-OKoO$pJavq5-7iQNsmu?P&0!IvOcbh6i=60Td|5 zwSY1o_L#);SepMzvh>`JEInt1EOA7TWNDxji^gg+tgNEr5yNMbOV~+MK$FXc@#?eV zjgY=o4zZgz5=WTU7%U3XN1#Cm_JR4=II?`n)wv9zYXN-j0lupbU5HRZI)8|GT zBjcLIX4>^l5riL?^XRK0m@-JN$wSSez`qyG$9RF66GVdu@!OQ@00&kgm9%euvKp3T zIs0(Y(Zh#3JCxjTqwxAJJ|+Z;&|)Syr@~8T$5VNB4=)Qc`JgdSKNR{!^d5I`u#DzV zTfVr@HFOm3;u#VBD35R)nMXj@cJl}Z-|+~NNdb7er!*4eY24!z;{~Y-+8JKMj#PoX z9jO9Poh~+(Q~`bRB}I$}eUAfsUcf~#i|2P3dG`uNez?O(02LCQ4F;D89P-{p#OfCR&@vPV-u&*CZ4(G!}PQ`oY#va+VBqyu< zXz{qe)#3q5)8=8oaERia&7-CPSVVoEnFQ1j>?GUC0@Ff8|6R&fG zrS@grRo>fO=UZ%vg?+%mF+w_0v<)YU0S!arEC}9PEa`qy*10Uf7a^P@ou$l zcdK=}vRcE2ELzuTu{xGK)1h}f?gWPfkT!iV&pE&&&2$)sj8N*&bSmLoC&N+*)^Hx~#S9f8p06T?1UwJ{Z&`;3O!aO=sFsL8LqWjxX^VF( z*gyu{jS06ib)hE)>cAd5suotkL|y1~2c~39TP5Bib`Wp&BQ0%e3u};~1h|mCap7mI zuu1(RS)~k!_C$TWHXcu|$^Vr2-+GS9JziIIodGQxn+Rx~OloBM} zy-cwH_fW1+bMOWczPU6|Za8`1iRlz`bD^cZr?fRN08B{$zT=IoUhN{? zF>?f|C7;fkP@-picrJ2<25Mknh$nNx*zr2@qB7vYHPtW_G`t`9A2GDD^2(Z_KAV2G!8 zu-_EOHE8>RTlV$-_};y&XjhV1-p(V-61v#aku^%PlwpSuDiLyzSVyBzhuqa z(an`sl*L?O{mV#=uukKOo)^Ov;e^paJp-uU%nu`)zAFOJ=?Gzvz$iosH{#K{LQ-tR z3(f8XSQ1SA1VCq9C~-COQ0y3bIgk$TR9i-`-tN}xFf9o8$cAT87cw6YW2q$(-3?-w(#HpniGW^gta-HJG5N7O+ zImS}_Sj46x7E9j9WZF>8AtsrmvN?V%L_%CJCyT~v(In`!eWU<}+!Q}1Y<%fMEmqpw zHlM*fmoL7=^HFn{9wu-Gsb?(PC`o*_oN8_o4FkX{Q%!ZTv`C!99Dj(@$U}iiHkT2d zCH4|8#IspJ{GN7GeOyHnYt@6${aCJR^Mt>4w0P0HKsO+e4ijhUDKhm>HCk?hQ~pFSx#JYdSIfXdav}`vlIrkn4$xd z2DP5R-i0aTUd1gOBs$qeAG?KD!JyNKV2ws%0oG@%IBK2qZTpFWvuRe!gysnbP@Fl^ zp@Jkepe`6_PIRW?z9A*Hz&#gONvmCk zf)}tI8kR*-lnk9&*EV@=PmowsG84p5K)}}852D7rn+QX4T!eBFd~y2IkTo_~LmzFY zI~k4YVe%bn(qu+W=9I?~J1X)q9|Oe#3Me0fB-Lkknm zxj7$hXL3WFEMp}V#EndSkH=6XSaI+e+DZ^|H+Y%3apE? zlkaE7x48)JtVp}0_(`NiiqK)%`OCOe&f6VX&6W;XIh@)(IIz?oaDv&szzp-ROgIIk zA+5(_Z%-aUjSj*>4C=|`amcKrVMb!l9|#|DBm9<^E^6Eg$42ai;JIc-pJt0qZ$R0F4#|pjF4oX5tjzXI{!jIhD1z(- z(9G0T+<4Jde#=YE2A$Q3F<;k8wY~t~C9ku2j8|A_)WHrN48XfP7S5g!w3NiZT|rB~ zR7~Zmm8ne5A*h3ZI8b9wTmuB|+%gfPSL{7AxI&mX&k4#{=(0KPnl55N3yNgqW4BcM z{r31o*JB-dOXO?990$T52>CdSfc{c>EJe{Qme|6O5UXp2O){Wvb-}tiYUt{Mgfc?( zE*Ol&s7Jt}iJT&9H2DS0V4^fd?+mOCPdCv} z{EF4E9`f~3M3kOP{e*rR9MA@2)dkj)zzQAjd~#lw4Ss2|Uw{%u zf>ROYpwonoEJ=FG4*=J%p26sqzOs`CumKh7&^^zDtsVmjds$OtaKWC8#nLE`b~x$+K_xynwnGt3hSB8Y3DBI#uT0@seVAmcUyi3*-# z94Yy<4oB_=?hv3f6@%s}P$keS1@S9+AbYUO_J#=|cpfetO7%_tf=wzqY^F@iTXiH zB5V+0NIC+lWL=^C3?g@g0O;g8X>U?y=02ftA+9KXZlOH-$}uUj{CK znV#9j51djznpd6;g@(YDCwfshfjWf#1(mn&iR^aDP@ra#c}wRh$-K#+Gm1TblV7P9 zheVZFHmF0HlAl}BW+>^plNrlnJM0yV74ZgqBO-~811#3$arWXRYFTqH<>z4>UM`eO zZ?cQ*YX^#LPtXZ!Xa7H6g;WE}Ad8o)>I56}tlr)31Rv|DF$TFl?}oiz;OtMoirxUT zg^^_uG|MwkKl<&MWJiCUBw$${GHg#cFM^?jc{(LbNRzcZsGv1(E5h6+Mt zuet4_l?N@pP6`zJ61Rdoa-v<@p1!P=tMve1I6kjQ!&j>ZVp!G{-(oxGVDddRJh~$q z%&c=j#F$!`U=8%ysXk()8?!L|XAwXHoZf>D=5~=VUH*hjHC?_An#O< zQWid$3Ouqb@Q4}pm%C~Er*+gViLCr5rLQkg=SrF?A2hwgIz+nOEt3%Bm44=)m-Jjy ze{?(!tpeM3s?_ng>^cq)d7Ht+yrtifRX*N#{pS56zAv%pJQ4@v2I?<&9vA(t7yEa; zcNn@=E%zZ$Cf~a{A;+BoXAP$GU#8@*W=eiRc{33i)-!ZHwohwaz7bnTc`kC~K#j1q z%!lV?g)SFeQtumE>TWl<2Nm~|wERMQ8hkaY+ydPykJW_j{sn2R+!D!>MaAi@)$`J` z)8><*)bgFu~&N+YEjmN)lTd5fQN2xs?Y=B-;^^rzSr*PSa^d%#QNG!4B1BVWMY1 zu;XHjua#=5>Cb5Lq-J;y-z=AXKk?#0I^N4vY{z@Iut*Wi#ZDjlK zXGH7(MO;;k9NNh^6lA&K|2M`NXp_I#!g1!KQ+OCKsc)pU;b$nq81vhLsDH#f?mkpU z9Up?m*@$PH0c|itd;)o%72z`!BtI{^Q6SDpIH6Tnxa&8jzhHzppQ_{{x3!fDBQufm z+O>oYPXB2Xp;nC^6gr-yqco~hjBfh7IGGco>+;sg5DFu@si1sLur6FX z{{`#xG^)Gx(Cq(5Sf`*7oQWMWY~*`d{b9`KUXqmmcMv_tlZPi+HkHu@QIn#@k$JUJ zPtcW7dzxdBS!0~bES+4aq5aizfb%Z<%VYOyaiND<^YhyP5mgdLDeClR$DfyxG*zTD zO+Tm7&rbSj(hvHSMHXAwbCkG{m-F^Cl|FGj2swH@G*9L-Exu0=S~H3XHt6^L1=9;i z?s`0(Kgs%^XT9JcN=;7@5Q%!X&|mCz%3BKhOfg$f7r5G2KMsJaD;1Np9k7SY-U1h;CkEHV$BW+jlk~ZbV_@&lBh;(hq(vy(KpR zC7N%t?7g3!tAYHWdTuI=FVgA3 ztPsT)_k?T*Ut@U|(@&CSCVP%pg(!@ulyw+$IdF}WuC1!mDk&ejV4+rtRvXBawaRM- z5X^Owmf@SBPg$$1Cl8z5r}p%BoQ3SsuaG3tR32{|;v!QkDAtkWTd&Mod-9?O3TUJO z(HaKvJtJ(DzOq-S11YW=rP=^dL>NLsk?J4-|5dZzte^dgSI^04w)X9_wH6-+6sLwL zxfLDnI0$E2=jvJri>S-ihJ3cx}EXrLvK7i4=Kfcj^I;cn=mcqd7 z`rBieUjiC^d97?ps{W7sirF@QR^JTVq``hmyFsF+BrX*OdT2KQT^&2OY7Pm)oRfg} zih<|T{t^MO^spiU3b9dq0wvI`0}f38#pwD3TB;?RqhrY#HtWfC)Pj$vJrR(deis%L zQtD92D8!U}M$kjUx+e8ic`wTYFvRlcz)<3JPm3iMOxeDxAmFbUlvRz< z5TC1X1!}m=blcl?yHL#r?PT#pm3U#zYLNb|UlFNzH*obo#C#)Mz=0W66Wl67y!BnM5FYLdKiQ zfdlJ4; zyH=x%^N~cS6pUCpOafG1gh)zeL`)wyql@z@K;Pak2?P9WT9bUt*S^jeA0%4Z!T|a8 z2pB9QzDgy<9JE(|HotkRf((#AquG2umryn>RHHPdMyk-1#4PHcKK8}j7`^4xzG^3` z10_$v0yEi|ev)U;;+aj=lc-`ybK#@eJq9}; zJ&GFA&ICd$ES?5qXM>qI?&x0Q!k}+J^d=9U&%j~CNeke zq^1urR(hQ*fkndw9QDsVJSkDp>0e|P5b&=j{{zxoqDN&S%SiCj)u$NE2GQmCw%?00 z4y5>-z`Gae@EecqigcJ&Z7)R_^s-2?<2nryHwYlnE)iH(O+IL#RgV;QbO)E%Nun9Z z1#5`KK&F~=V(@Lm8iN$D$o4JYxuYV62ejQF&*%Sy2^Py?it<85gE}+o48pS*raw2r zRadfHeDgSB_ z#<0N#0HB4{%n39UM_4KfScDFc6D09PL6Omn^;A#(uv|>&&5oTVGl|Op>OZeL?(*1U#eHY1 z=kg6>d;8zvmp)}lC(+;_^r4Tv+bsvQm|F_!Tkg-0)0zwUjB!mSuU(v>$Yhosle=6# zHw+g;cEHswr;Rq{L+#}<#8u&qDY-m5e$5;Omy=(WMeCDAq;|ZmAoeF5PoOzMD<6}= z^JK~y1zElT=K|)>gtr*(Lu_Occ2(+{^7aCyhPI&8MjF{5JcubiobOysb;>($Ye-u*JJjl6H|Wbw63 zcLi``Y0HYCJK@d%lNQkdJi{K9T>#v4E&wi*3xL9%3xH?n@7V>wO>zN5fzP80pgg-X zeeW;1rWd$OC!k>B#J>teI+ z*#|Gb{_>-jFM|})ic$L&7as;Op{W0vVBXOsSbyvC^*0yfA{N7bxd*a;y)VdMB+0ll zYF{z9$UmK=&>9X8h$|^MTB?{x_%{%9CnhXr`fmNwAm{Cq_GK5_(WP6tQX%{%P8~vM zxvlu725Jn?m>-R|Aiu(3Gk@aQPyNcL9(&O%&pt39xhCr)n1cTE*h=O`K-lJdYkrJ0 zo{$9o&we!w02F-Tj2xmEWoJ+DXL~k9hC}r}L)}ID+n28=IG&A?-?0YqgRIjfUP1n% z4bEC1fPhv=#lvYb${zj~dG_2F8cp5Kmunh*o?|bP$(JWB`AJmOO^}T!yM|NcZ1MG6 z+4&h6deTtYf)+;%Z8?C!$>NDKj+{ce5`vhvpv;SgK3F0PB9EuI0bKi-vSFp|TO;CJ zs_kA$OgMK9?mr7jzH)ZsRrmRjeQfl@gU*JHQoxa_XlyUKPpu*Bj3aj;-;L9EJd7Bw z_-;lVY3>K@@XBr2W0=O6Y%p$oqb@6A6IX71zgqBh5?HXUxQl>-psiTqCI-g6-IB4> z(*a7R<@+AEe)?K=jS=C``7mxmKv4L9hVj6Sw?oVWG``7^ARHGbeTc`yUhH1geiShC4*)h*gc~f}J*(w)-WM1AP1Qvm(t8m%=?s2gSELBKaT!7C}aFFxN&xFC;MRZZwXM53;hZoC*oJyF<+N zKumK=22z%8Nj%}7T}X-j4WwkQduUl?w4~arp(PasT2chCWwext^-#0up=R+pL`@jL zDwzMnOo!)HIUNkWHys#(1?M;$P<&VX(r7w-raE`_tQsx0bM>!&ugX-o5Do z*$`X)zC)r%#F4L>c=eiB_=-I->6IN#yt1nSo(;u(XB1;^N@iqW*zxx7Vgn}kLRVoC zCI8P?Qem#GcDeoE4_>b>K==|EhEY6m1|!Ez+Lh5%MHL!?Sn_UAHdyi z%Ly;ZyTYH)%0Y8&BI|koEic(<0)^y)?Irw8+e_B-uG{t4bvsr!$E1FqzH!WZ?jD%b z?RnsGzr z^xe^?h(@(_6wzq7y%ce!Jt;l^%&Gu zws1UNXvZj1M27A})G{aloB*r8C^M)?X~LXhNCuC}hKT+b^790-vTU9hqIYvtqQY^7 zA+9U6Ly3-s4Cc)fHC>4o@;Rk4RvKseadjdV$puy^2#fvnhIv6huBSioGUew_e9|+- zm)%fG{MwY7gJy`}Z4Nn}&GduKNVy*Cga?C(YV{d#LMhwnHN=(!c3i?dI&H7&=^us~ zLSCO_hC;#n>d4am)!?O;D>@ynafTU$^hH5Px%@bXf>1*Um>&;Oeqdsa`b@)^ZZ5yC zY(2aIvh{SXwN4OZ4uvtWyrx!+S&_3ZS+Ss!>0lT7rpf}T^$V5)KjfTodLp2c;%f{^ z@qtIv5RXpnol(Zppp8n7Y- zbf(c1jwT9pqoKgA(e%CX2N_K-%E8g}Zn3yI)q!SV`2%0J+ghZoppVt8S|H{evKo3N zBM&QQ@EN09`6ipOoJ2{cGJg1|c(t5OZo1jzva@EzY<3@|g|VDe%5_F9$~_YFI90w3 zg6hxhL2TT;$?Teiw)dW9UC-UN%tYlOJFtluJ7U07DqP|$3$NCmW?CUuF*JR#4C(W> zE0KlBBG~42byvzQgncViNlHusXW72BMnjVKVzY~S-^x=jk3X$?G+$1iR=q7>(%d68 zONa0O3hagliTkOSDn^j0=tWcM0R-cd)u2|BPWk%7Uh4+qsFG~rNPlm#;Y z6q7R#ifVX1-g5oKq=eff*@S;(w{3( zMZxJYsCb&`$>F8Ngj@Y7)K*OYm@fLB^PderK)k|bMCZa|p6Z^{CAlzfU($XNPK@Z< z7QW{yh$Kf0x4}1P_r_#ku}c&5e~ao1LDJ?W(%YhMj3V_dS}KH*yL9Ptmhq@!%P#WX zAvaWfeI9GB7r0rky+=;r*nt>jQ-;VoeG_)^{GhD@oJ%;yRO}1L;pE1cy3}2I^L~9n zK%J%k{&Mo3GTu&qW1KoXNUrB4-bx?!I0SjfPXR!ECh8t z+>1`^6UR?;zmL9y9>%@^i(#G*Alw$B25{C!4LAWfNh+tm<{`c@Y5Kc>K=8>J0(%ho zrKqK}9mO#`!ZY4f+TSD}lfScYY}F@<1hKTOP>9z0_ki>vMxP3WeGmlDLMH>NsvnFC&ECmc7TXfTb)UjV2*OS>0FQ&yy=7^Ua3*$ADl=u5`lO`z&>|$Y`!+^TX!ir!!O_5zsk3yw6+SB-@waIHY%5@#G zm&q%N&tEuf&+y5mqh1)d!VpB+8RQosg~>I;AS&>!)kk>PzV|PQWokb{(z)M^4GjQ* zykalGy6FsXW7;vYt`P+gI<+5u*bjd-KKyX^p~dfDD;+63FvVeW4PRI|w4y2wQef@| z?MFSlLy;kJKy+RCfHi*bFYL+(qQ+)S?1%PI_WLlQgIUfr#Rr@Ye2`Na*6mSY*N>=4 zcK^{iyYU$3`wrTV)0XFm99pZ>QR*d_HEdsdJS+x~yf6m`u-Nkt;m3QjPIcsq&3Fr`u8#DojUgzGk- zggz*~D?lWP&koIAGZR(>G=6$Wh9IbxlyD5|Q5r%*FcMGQDYhjPLvmPP8F2w-cDyO! z7GWwa3h)W;sIH;9glJ8`y9o*!NC;hMe=pV>4wv6FC1-WPaIP5LHPccAe#O#^v>nZO zvBMVU#;%NtY+PLKu!UWuBqEX4TP-Sr&|}lxrV!tjRS()9{mbjxM_6nn=6shEuHi5s zG$WK!bh7q)U5Vllg)diff_KUZdci5yhBO*83Ab=-5#WtBnE#0P%sj2#Nu~=vINgQj zf+2xyry_Yp`)Bm0oc?4aT!ng>Mv2ll8FRW3IK>?sZi1W@PpKN?5YX)-N>rZ35`g?p ze}Xzs7Pq(K5J)=mk~rBPKB4-8wE7X3atd&hfXkf|0f#od9%h)=%Im9) zFl|X033y&B1m!@$H(e{Ev{v}=vLB|!0`QiL<;3g;$JNXT{$W6~FYu?BV^P?_Wykd$ zLE$z0pp6EFM-oVg_OqWLm(Y!LmeP=2hupr=V37r}CvhDB3Q)YUGSw%cQ;>FZ>TxrG zaj{5ERE2*?2yZmUOjNbet|qG5i1-{V{ETV#g}lbnQPA#&X=R2n1=RB4k|F*@P}#(z z2+oQ~myPKIM8$Q*g7LihlS{_4CFmeHjJb)N%;R0obF!b8g+h?W;*+!>+z zLHo8!76yoAVVf%~Y;!LQ10-)2B)eFc4D4;yd>vsu(HCY0EX(wTX?RrX4S|u1g+S!I zQdw{_e)r>M(Y;6LUOoM-@od^AjZ^s>t0xOu7`NpFXYdn+-a4w&=K0z65FxE!={%+8 zi6RTE`Y9}d2m7MD3N{W2|OO$T>eOPp5rqt3(Q~psp~NMCVCE9sK>>yW;1`^SY>H-o9A^i z`}(9*bM2lG0xo#F z2>4Ug{JOTz2naSFS|A{)fG>-9ti5{^{=JNL;RfuWH)XxTN#bxxI8o8jcE2_KFs#8P zC>Bi)#Ii%y+IOtX=;~P4R>r!vcdRhqQ;V_UOIq-9hN@yrCz&dSit?1#8l!m*gFa5a#gxzUPQxQ&;H1b-9{nhm8&zX#!- zlz_wuPLf(jS|A(Iw++a{(Pn*4e_qmDPg+wXW7oS9GH2+f1?wTWw7i4}bk6at2SnJW z7Z9leA_(pUEkbZ!3LguYM3#ZM{vx1m!Yg1xzx#CrfQYz$X{0r|_XN4m8I3f9L zljg%YF-UEVQHmQ79=VCs)KyfYA9}tg|HbX)%lBS_L<1JF0v1z`#4HJ~tg05=hWQ#3b* zT-bbpViPO&{49j^M-|qIJ^JxsInLs`QO~aGFdb(n5!5k!E8@9=V)Bo*{~gYs6F$L8 z7%-+>v)n|?_9P+%i>I}ZeTwr1il;40Mg#gf5sTF&JQszKV?9#E9MBW5&S>8Eaa4}! zdlp9ql$Pf${cAtSyW#Ym1f`3xnkRUR^xMA0bCw~V#q<|AW7mel(!?t*O%eLfv!$(x zo6gq6WwJFENB1%*BG|9lfaR!UXVIAl6;v~V9{8q}m)BYQF*gciMMvxEMjSGR?xE$H)#>C_5Z-4O5 zuZxA|A$F;9kd@^TYmyZRS}WJJPx1>|v-tsQmNiAMZcWsefHjKHmc~G5v9n)^v@n>kb*oC$yd4#9(?Q1Ybx0)=8+Mjx_k{l8 ziD6v41-Ur~!7*|*okyA#2q&EEH_D4d%o|jPRicdBe_cG&D8`fceL+1)fF9r^sD*?( zui4hwuESJlVgP*C*;v`s51&2#s#;*QInZgVC zb=aX2Y+6Ld&cPwASmIW}>AxI-9?d9?NvNJlX)jVGftvJWvl*NVaANq_1Ob2{r=*9U z#Vof%o3ZiZUI8XwJfN-)4|tOBfbIkyP^gaw+$20G!4&bpb*}-DsM+MeVFIQLe4i#TZCT0X?7ou;m$)f&&X~}~W20kAAO?gSK?3jw z(Ku+Oj!x$(PeyZKD!(W}4La->i)jZ&O*id{K30L_@a432>dB*rQ^wd2aP&>=Q_JYe zOb!%hu+|#+0?Ch&L-z4A>B;lN3am6FDDy05 zYDEBH0YvRj69lM0KQT5786zLSSTH!07h(;SVa@6?Q4iYx<2}iKxyVGlI3#>v>s=nWAByWdGr37L&4Og->K z4npZSl1OQX=E3+nj0`tW$|en_1V#e>IN*=~Jp|T3ZtQ=7IW6QE#6j78H^vT0zg@$e z3yu2>Cft4Up8dgiB{a~EIlre-M)?7K1RqXa{)-$AVpBTKM7RZcggB~75JU<8%OK-E z9Vx~Ifa33dIl2>?Ca8W+MqoDcF0hhI12B1zqbs?O=*n9XEs2F9DKav0(7uPY4rGHE zF%ST8E-0DS&O*qZCK!z$h^nDuo0^OnH{4j-yVDdG+`A7Dd4_d!tKER!mltoCuc24K zO|ZqPv9T>kal%jN7y%CX#@%l|M24)}S0fbMCFw9%0tEK9!nLSr8XwmX@_;c=rO58! zabU0eA{#X)DO@y`Vo zP#Dl{v1c-}eGeopEcgve*X?U^bq`dF`o1vL*PNf+T+#|jBQ+*)RxvDaBJdiHxH`HR zUVupR4bK474^7`sbM)we@R*75$U39A} z#Kp9_fM7@O^Wl5W^Bt%$JxGw}qWwN;t$8mN$Jca6@VN&%Z6M9mKnUVjL)0BkeqfC} zWXQg9aCA4iSh_+^so?hZroQ>T0q3jlO$98`3;X?w(8E}{Chu;5O-wqc) zWPK;Nh~9EW!E&!_;taBcknfP-#Akyv&>fDeuciH|bx1K}AzGX&0%OLw087#`A#3tT z5vT$cgy|5Amd3+t=Im?{i>LqA5g-?oFqNS^?-fXR(8ug>v@cnYv1f}G*zCl*J7C84 zt{qrkV5)c#dwHRjAQ=LP=4C1*S-n4l>AxGNy}8_ELRal2bI7SnGRIBCig#p=`<)mF z7mzvr?nmZK<{u+LSs#Z4%26kmh@gzg2&M5B`E;f#fJLeT;;Q5 zE~F))b9A&M-AGIP8iK`M%%CN4Y8DPJ<_o{eoRbi67Fit=8rB*J%Xmpxgi>tdh%Izd zf9#hZL$L2rmNHY8&<+@c_Vl1EgG^a6h8}0egR*RQ7}_0Eq1GsI0Sp@{9YUGOOW7v! z5|svdQO4=W3r`by5uwJCmKd#lAkC=46Z3sX+;!vySW8Vec_=8^KxZVZ1a1E(--PtrpQ~r<&?(#F8F0{=k)>5=&}4 ztJ<`KU5Xq!1k5_E<%HPCy>0{jLL_p|dXzj8Qyf1$N%|Sfogs#V+Z``iA)!8!j)NIu zuZ?BnyNLRQB@t3Wd0OaK1?A>oxZIL`k!+7VRWk8(K0!<3<0fMHxE-L;Le%tPg0xD= zbVLa`;LIjSHDP39L8QbMKRL+7UiplV1^0^pbw5F+?|s(J*35`a}ex$$t3fUDpI%2xw#0#A^mC73@u z(5?w}eNG9qNV*3Ftp*T4n}*1tYA3P?6}oPKU!@rY1rn#vXLLj^NGoxpPq)+7_LT$9{fWli#?za}@q1RnJ@g}v*MwV1T?IF3@k!-19=sL6VwIL;EVX`vn% z%R^k)LOtL<)PpsKmBLEo$mHIL1(?RH?7yj8;aOQ&Y$N8E$-g^fjdAYSTsfEewD=sJGyRjOL(b{aISoNU z4Gno$W)Ph28kCgjTT)W_okFf%lafl+_=#1yi&3Rjm?$LTQ##nD=mbmPw!mvS&m|vZwU_(6sW8#nTZ`C(fBGP60ZfZg z=OyrI+LF*0!?X~y;|zyk3Pma8?NybnloKpfHg2wRycXQ=^ept&$of=GzVB!~=`wu1 z8P6x@x`lCh#zICd#%kezkqv>Jvn3KR0wTf)^QX51;j@_G>7Q+Yi8^j@7*obnejt9O z2+)q%tN9oi*#?&av+yiKcXJ7y%yoN+!#FRskEK#w`BWM*#S$?J;~iMgn$c70d*+9e zYvG&V=Z7Df&>4KT=VyrI(HZKyTz(~Jj19T;AcuHPcto7Dk&<6hvV_~EPBfFQNph*> z!2tA?p-_fS4!TY*24(r0!CQXWPhxnYpAWV7H@UOVy|Qyf5-zam*00A&Bv!j#`CAkD=fAiCP_!vZ*rD^H<;!+6(#=gzAF{e@of z$_IIHJU{sGSG9@@;DZk)%v-zg z@ML}%&LZUfgaqdj5}Zm%aC(6R%p^VOBfwo- zgMfM3x9@tGJEa&HgNTU*tj0)(>%{W>au6?5-*-a`$>9W~&@^i;Yl zOV8g(INdwO*Soy!`Ws88&*YVdb%-8*C@=c2+^V9}bR9`aWDg+Fe$WHAE#FHYW!LNH z4H@2)I5Pm2`&Y`odS`9E;Wa2OCwS7?u|gOfW$(sTJHh(F6b%&=hJBtz`+?gpj^?&y(Oj7K`H{L34{)8pUW&X~kGR3AW@n zwQa(h`gK|(VP2mYU!E)Q1nXI$~ifnWAIMQiXa`p!=r#0mp5CJFwMi~`Rci%_> z!oKv6A=IczW`o<2v*o=_MZ#l6Z=N%8#q|G$_O={W?MG6n=})n$As{vog&`W%{p}Bh zl{~SHc8irm{0piY>yltlcWpxRrzc^I`X=CwvyHZtD)1cvy5!Hio+Y`#3s%Zj1I5M` z-2O08i=p6OZ@KmM%i&;gNoAZncYXU%H9>9-4afj0$;k9i>F}W=W!e?D_*;ZVvKTFV zt$=Mo6hWQ~WPT%uMsa>Nl|D8MoFnq)xVMfYxv}~Wf7^WR>E)f#0BLC%|9TC1#xtc4 zjOhOzzA|1H370XtM)=hqg9d=!fJE#A>;#5{OcbwWkY%&UCg&g|6bJ?t;sIo5sV@xO z&OhP;>Ba?O-|2^u{8V;GN%Y7=s3fsB) z?_w9m?K>X|Gt+p%*%z@3YC>+gB=Y6O^d*q?j_7LmwyMZep6tjql z`)3W2RsAc0oc)FpJbJy|&feU5& zJIvz#ZA^rf|Fqyt*mSnfQH=dc8Gi3JEk8tEGxf3-&d=5bklqGwIqxuxl;peCR*5VB z+h)cOYBcKTQwKWK;)$^e89z^R@$2H}EnI~Ba|#b?=kFcst;F4eOvSRS&Kz)I#+qc^ zxXX@DvKTN_=ej@AORy{<8MTWKb3XR0#d;wZR{N(vOnih z=|MX1n{zzY{K(fYAcTm!!F~W`BV`?k^WPF&&H7yozX!D?xH=fo_3-jSUenN_$ok>G zi~>jERFQ;O6-hkaqviuEJq`2<}w?EEr_lm7^#ldvQcB=bzQb^Nh!of ztnrOmWeV|8P9YvOP%fnqH$Q+W#MzHtow07h$-&a)qV1pdH0m!}x0vp;XnSY>!=m}p)Nr4b{m?31 zEj0X;h;-IGerv~43pqYX{C}VFmBZxj{NYWL%yWQm_3h*m!vFW zna~l`q)6Jt*bLl38Y6lVRHg&hhjd^y4y|32BbN;uA`nXXGE6yqtfGJlizg_K%fjs3 zj1++2;V4bxbf)~;1;dc^`t$GEH^jU&YstZHQPP}H3Go3J1Qf2f9rg#_!xucIJbU6e z9>y@E^9lrPir4|}ZT%v2Sq4lXQwT398NkWn8M87ZH(>-`GLcAcPpePI95-a6yJvKqLkrgk=DUS!#Nb}ho~HNmbx?P~*Q<`N`*1g3_ZhRe%GZ4;P^Nvp zPJ288uHri02D8dnh_OtC55V@s%PRvCkmwVG2RB$*Fp(wfdi|XpBzI3Q*+1NyzD1~X z@2N~Z9?Pm?O|~pa`>HfMVlG`Vv2ZhQ2)g;lK{t8ZEo&EUxYXcvJj=`h+$WIh&Rnx# zsllR;aYBRf*N`WsIk*gllSWUQWQ0dx<64j`!E+{dov;7__A^PA%cJA&fB`Ut3C(;A zD6t6u&pXlYy^InJBLNSAq&B~$tMW4M|{Qg@z7O`Pk{G*eRHgDaBpUjKrIoimCel2|qoCn z?gFWP_8JCLy5o1p;YFCmSrTgT#S-gz$wkFz$RXS|BKM}2IKwB z<(y|Xou9svcLcl(dr&YSkVDWBRL?k zZhz#bgJIW8hTVn0)G}-;c8g|19K`X>}*6r zM7h%6q9=;UNLfN@JAz!9uN4rBG2wB{-n+CELf!3y_^_RKvs^%b7qF`g>}nUVh3z3| zubL=?HUJNhA2c*Vu&E*<(e8qLUMt_efU(Meqn}so_yFac5XTnS(x{6wR1URp_B$_I zphEJp!6v%ENO!Wi>h72U-oVNWa}e_m8t^1F%$xJlT_y0Zw7lrx9JYN2triqPDx!(B z+ylIyWfyeQN2AOtQnGzoHsf|@iN+ETKxQoMOrk{aDVW-(h=u5__~+L_c;wvT5b_hx z<1WJ$9iK-xHCxD16iSe#g!1IT%@>tpt@2p+fiuxjeK>QI;EYnf7tYcoWd{~$8fyp$ zG;x(lT#0T)KV^8ajG-|!##kLJFZdo=o}g=mQ8e*pQ|V%__QRSHt4%sE~sBXBZUvFH^Qt{cTX` z*6MEur{wk~<=61I64gLpD6oiJHy+HrMxoz&=_A! z`PDM26g4}%!h~_%jAtd308GGQPuciD$SnCb#gEx{%b=_@^_TCp7!6Pn;IC($A zjD3OA0Gh-1N}TEW=8;Wky{} z5Z}9Te)hvx`o7k94Rgfm$9Oka#=H5Mj(2l8UKV2vikW~&z%$mcG4AdV50=pXJog6p z@AP%Y^`*#sAfwXyGW(tjpm&R|mdL$w=LrU`gSMIQuK*tgSMJqI?@9>E4037{n;kPY z;iI@fvFgeyHn~Q+k8N*x*G!n&r6}E7;|CI@d&xwtw|7gVACeU0w4S{Ey6SLJ>_3t= z2!QmMDeq=*O3Gxia&+qXop#J#KW`7G5~fq@3&LbZaHAxMz(?eH06;7OT&)X1c+eMw zW3L+gADc)B!dwz{ujQ!|gf|v~up3pX=Lb#F50?aCgt6y02D9581mUzv(=#(?$9RMp z2fJG83@RdoNm17Ubp5Q)P;9W2hM`6lNqtfpCRs<*98(&`X&BP*qLZC6ko|baLiV;K zW`QqruN6JINhzoC&yDBZ{tKm@US|8TqMGz6j98dc2$zQyX_n#Xo<|tR zM>bliVrzo?4Ix<(3l_p6A2YZ+{kgR~>oh*S%tZ(+=ke+DXCajRW)ix|L>nR2fBAEx z$)Xbq4tGx+7M_q8Bdp919I9W>WP?o3^Jw+h-z4XH$P`+nY&8v6%+_oItw=VIgkP1m zf!;opw?7)<_0{&FKx~I(#Yd1|OuWfBFs>xF&JgftN0lOr?}(CYiOXvTq(0wl4o9XY z&n#KTIB^#fvW^sKH>F~c6o}E@p^$b?CG9Y8+1@<3uu~LNbd5OcHa2n^75m%F&kD7_VWkM3P*f?eLV`m>Lp2xrj&9U1HT;ZB_VjC4N7H=M6RR;r> zf0E6wtDNH4exf+v(*PEo9H%83OhwLUJXsXsS?UN6 zAA-T>j%XZTbR>U%};2Ch{(aR$68|Gf3Wrz+DCf2eB3%_ zwH}TLKXBm|6X@)KGE~C>d(0^q^+M3WC;&qBF5rm|`;_-`*n@M&aH}O;!GcGj*t=&-^e)P=(budygJz1~jvs)pghT-h ziK&Ax5aV7rC!(R*N+IiS{_Y*;<|r(APzwk?V0twSwywUmZY$;(jfvx&O$4;uN3Bl- z>lDvoA2o~}6_CLicVNz*^g?PKl<0;2ZqW}!bN>DTe+O;sUX)CAa(9S9kof4Iw3#pL z@>)x-C^jVnp`aS?<`*qlX2RGwhsyZi*zduLPJx<|SQLrvlyIceA(_}t{lEwx>IYci z)-Ky|2uH&DogMZmDJSOe?6BuP$EK1QscsHQLEsN=ShhWg|27dgM22_mF%MmPgo1SK zrOn$^LD)$Up;QGJaG)OJvakjNmj?U>A$ftPX`P;P4#cgj+?Xlwfec_g72_156~Adw zxPB(hf|GgIxg&YLVB?Wi?jT(N@NTAoL9jrW1{u$Yl?GShZ_G;C2Ez<2L+-hW2;*2m z&kx3zZ4|uWTobCpZzONmQL`FhyeH)T`EX69llD)$GRZ2Z^Z;w#@^2a;W@^L>t!9^E%*88{#_n#;tcghld z1i7uVJPA4r_JdK3?h^x;_8z97FF;0SE`}_~Aba7ON&xs|axKYW$m<8&@0WnPmgWe%23xk2pcUvs3=|{-sf+h-LI?yQ3>SFSA0Z269-aXra zj~kn3PC{t(&ss1-9)SD$wEzaJ zKB5G!2N$cchN=2Od-_{}Dr}h!yf`fi$$K6MqCx7E7Q@_?{BBo;;e+T^h(yw_GL2K% z*3UwUa)ZGJD@DTwB>|)b9G;zF5G1I@`;U~Fw8-J)m&esc(js4v4Sj>@31B9+;8+Ad z#E7iB|8+S!yYuq1r|+F@0z%>z9jWp#GC3#NfjP?sv$?up4Dwqww(VLln=1>3>~!el z^UZx1%pn)dp=R^GX3GUbsL#^E*54z96Lb)cx1I-jv0%XI#ex}h7B(O5wy^n($?7a@ z;evCa#2)|6-ZGi!L}E6fY<_}S6%Z#2F=I`Lt>^j1n@eO}-iAI)X#($)$-4k7}= zi^Rl}$ zK%k2&qcxo*9NKwp3_eDx;m*!gl5W%*8W-KeN`Vm1D`eoVS@*!iCt>rIgHaPigPy*w z0x~1J=fcB}PfAT!l-3MJ5$KMK+t+w7yk)oy)&z$Y1LWIaN|be#hcmRsSkKzM=HO9A zfYIK;Gn}gr9(j0m@Td~|3_fqY1m<-IueBHsz*-r6Xd4W-eUvn0z_Lt(b#wj_3t4pegDLkt}v$A4Bko)O!dc z&Csxq0M+d;1f#D^e{&c#+4nAaBPT*UM9+$a!H-+<=jQO@+9`$xnG6t1EtAv|WDz77 zOS-hQFwhxi=WHC)MT^pv4M-H9p?jg_Pro12m4qmcmjiBU0q3W0ToaYu$igFrh7ph0 z=CE|<&v}DKKpg^BV&Ql|nIOd=61GjmK|hjcqG<%XqK`@QETcR)>xh_3HmhP^wH6DMc>~p%S1;p^J14T{Gn4L5dmcxuA2**wtLn&^yREK^tmE zT!9V-J787~s$I9cwW|TtALNwQ@XMCB$buYfmprS<_ z{Qg^+S;|Z&1~8+|3@|b&owLT04uUIi!!%t@-cysFqRP&{bqG&s_;_CRLWvQv^nn?J z+@x(+I;!|7cf}+)f}Dsi$2EEQU@-j?83PpL7Eh8!ZGE};OCAM2U{#-SrX{H8hJSwz z{yGq=P;61+EjO#ra$*N_j%Fn>K1Iyse4LM*7l6B?lW^@&+1RrGZ0z>KOV$0$hT^ zY&uQmQnGje0gaTTT9-E~k}AM!G-hlo^aVdIIVjo*qA&DB*)%vLmKxknJ{Eo0!jR77 z$h<@&97moc2g47K%7OWZ8mw6TH4%XU$$iadFPW9F)QJA0($8s(K*Y)^qyR5)C@F%8 zm%nTu6)qQEG{xQ=ju1@+4*cc;PqXU5Km*FpqTNV zII5QZcZ(DZO5bRU;6j2t>06!QK<-GUJJ)W~!NI}io*PZ>dI z(m7VFM~0htz=zgDW|oQ9bn2TqyeOtoRH+Hmyi;pl&uI2Xj_>h|X0Y9;hZW*b&waYt zB!y5|R6~x(piEqmD>x8aW4$}Li0;WGf)#B4VwMJzR}4^eyIjH(Ca!itkPt861RUY3 z1#)<*!O+~cOg04>ELo*;}m+04|yD2|N{K)MDZ7}?Z*MOr>e-|%r7;V^xmG?@9L6cx-_e-%XMkIXa zjaE)^XwW|S0wa%I{@mO zBJ0W_>`=LoE9zOwg;H?kLVi2B5c0Fn(CjwZHyZ)BM=pd#?kg9%yFa^IWWbjo8lAg^ zd)zI~`GVz?ahO_?;^z*YX+p2cf?+xN&|0~XMT(r0IG`O&lTmSqQba~7=-e3h5oM5= zSf`totjxS6p;R};nned-z52J!{$$3uv?T$FGv0)}x@5{dgV2G(N_u+`T!Ot@IRbsf zJgQ!(EetxHReiby5smSIMlcK?*ppyABH6q|RH$aoR_s(@=VFo#b^b!w4pmhVR5!hJBW2w^cRR<3F7i$=J-rf{} zysivs3~%}a*HpvarsT}^ye`rWk!ZI+)Z_>YOrYmWWYB<@g|L4(;;4YSr*gVf^lUa#c??(b4& zXNTguEMXieS7GFuv>#!6BL8?U+tBbu!8b-hTnAn)_GJ#QEQ46Ls)|}7Zj%}92dwH` zU$vn}z$(Ra$m+(54c%yp@s;_;zBcqtZRnfL#(m9Xj}4uzV~em+4roj^^zkwhZ(&2n z1-r1JuXQ$bAMUoH`wWnEHuSV9)rYRoev~TBfmgk@z}Eet`%$3FKcK7plcD>j4BevT zDoq1;g#3F)GsYZHfC7O8m}hww#tS)jY)oJ8G@kYL`+g8%1-s)?>vNmo*il!dS4s@ZORS<0C z1$eva5E3`sylv8cNJad76C!llaFW|5;fBJMR81l;NJsLdJ22290A+2ynEczUr7X?^ zunDqpN>DbUO)Ukinoa*qRmL{`LsTwTN5%{y2rA|U4XHMf$9XOdw@D8nA5nqo23N?5 z8UW)8iwrhEXc7DQ)mTv2Z!S-@kG&6n-Q|Wncc&baZ3aut9z;gw6(2)7c743o`*;l* z(JoOX5xuV%T;yLw0iGRJ#xlU|az6)Y%cJYI za9gr?6p>3MCF8V{tpW0@pHM~%n*w^*UWavNnb5{nr#v}8u&FLI#SNz5uz%HsNklX@ z)Jlxf?~EsJs>w})L9i4*iuNnmi&@7EI*Yykd|e*eSRWT(8$lPH0U`SZ#JI{zP^wep7ZUE^>COmDVFA2;X6> zsh>h41M^!AcIUS;Gf1e3m(6cwJ#m-vTX9PstCZi0f?h{{D{A4|{8m(Iek+=(Cui}* zAegEqMJ5(kANZ*&Wj^%i98$+@iV4loUEthpnIHrVitw`rTyZv;0v}6$QnndqDqh9x zyrHfJN%2kwl7=mgl8`o2<8XnT>c~FLm+Al*iGayEEmb6jdxt zR(5+l_Ov&{r_{&i<7LjNan3o#J|LEuBbB^?&$0F#YmhshknjXsZwOON%6Y^7SnlBk z9n4w7A^n?TND~CHs%Ce};ek;NqW>uEWQ$fb9Ythdte|~>sb#7MO;rcFWwTv%Q4hV% z#uu67pM3{R(AC_T=_2RS5QarvDWOlw3>flKJ^6c+bS~H#RN8E`f-)x;DbrE+G_l*` zejiOtuk!{P6r02At7u}khbC6WQ7kU-$1#uAecxIAnV3gmNii3<$AR{s;69p|X%M9& z1ADU6#Olz*6y_J2SQ*3KrHPf4(25yVK;=Rc3*|+s#=!)4@)gyGE`}AMQ(EN$?VA#u zGEH9`l<+HW4SA!djC9KXA~kpDdVzr$M`=NeDs$c09uRM(%=;;P5@!2+AcfEVH^6OG z;e(CD!@h0JBdS#SAQyW~{s-JqmQ+6Ek5DSL9kDC)xJUX00cLf;OUyZI_sQ%NO0lNIq?d`A4EC8HsyEFnD>MMLb0}E0?7+Co23@m_TUy!b9ecAE$_*!4J z)cUUCcmpe)+Hkz-T}U4P5P&nsxvZGC5D2g`cq9qy@)2`I5+x$xmRIIt33nnj31Z0&Jo?b!o;W@*{FWv*Gw!i z(~!zFUs7+4wU5>qQ_7hRaUd#+=V6gk!Qxf77wVicv1xAP?TR{K4#h5U4n#*$Jk1a1 zZ6Tbu;UPh%N*)qglD)>alh~qw7{q}EZZzq6kv=M{9@mQ$+nof`=)5t<^zAfT#+CMj z!k`BQt}_&P6;QC#1h@cz_-^JRVR<5oU>ZmL_)eIEI)uiHe4^qabe)EF1-~=k&KQSH zxbu)E2Ma)qX|tO+q}FhNhZ#2;TmG^xC*8?36{yR!9v6~Yo0w$Cix~+W8v81sHd=M0 zI&q47a4n=I?m6#>JuFazlr&^vuHjV}`lKY6LS#_lGU5^^`h}U97)my9D-k8N{WurD z!4kXJGm`E62`SSjztz4=%1=MM_s>Y6?b$!I@7Ph zlffQFlc}LGqsutTS9&E4z+@r~V9to1h|KMzq=_wF*Cr#L2t9n!tN?um+AnTT zKW<8gsfANNOgoWpE_YJ-;p294#TvTk@D=PP5=Dd!GZ4g=-H%O)JY?}MqMeO@v8c6% zJ>5j2hJus|f;)~)8F*}pvMqBaOUA&&=kh6T^d*7|@;mTdeg~F`!#$;1cUS1WP~$_s zBXpZjuZa(U*G*|?u%1df*{Hs+$RwB(q%?YV7t)8YS5~l!+v^68(HpD!x z96^m=GWKh**-tdpRYV*2DYEQT?EKsZ^_f^CW| zcn4%);rO74$2z$u-A(jdJeDbFC-N$#Q{LwHaX3>@MvR8Ww}TCDHzPEt1Jb$Sm=U;Z z{qlkG#>u-m5I8ks=|j&fKni~yd}hHSXMG3wh6wzGiQv`pr)8#?ji!GlkW1q+hWk2beE&dBUkW#$m4}MZBuguH*B!gSIBaik zh%PefJoTKIbx{1}s8~r^2@TUSLp1pfTo1a&upm=j6zWBxUf?^jhVvCWo)LOr{Tt9H zJ#^-L72BOTeH7;D6g(TDoj&t|Jp*Z3l%gwydBnU{R#<61@akY;i=2gNRy$LwOi9Z% zbw8Ky^V+H&N1xjD1N^ zxTZ%!xan6jg@1}n_|JTP<8-xmA}|}OWb3(z><)643weD|e%Q8G6C;WRz@qh6o01aH zK6^HU)}vtDY!p_PAVsU;e6a~&%hn10K%-u0J30^{PTU=2%~k@gB=pPZg}Jo2jQfw0!_0gQ;hyCv4@rG;Iq-fe;K z_k%aI-%s0hqY^cn+xk;6f^MgEpAau8m2B-nur(m_h>I+nbCo9lgDdvNQ&A$8D}c+u2p)@8-RkcTxY6EZ%n93DIr)H6Ks#VJ z(X-;ZJCiYO0n{eoDU2WB%z*ol^0okspY+C*nhJUbB@bsv=UJcNHH!_t0me286tRaW zP?Z1#2klCwQFg2G2Ly6mlxviv9^$Egd|KtFaTjO)0YF*#|4zEb03%|KKuvgXr8|!E z(Tl1SfQ|la!PeSM;YhA5y|MxPbguDST;oGH++r#87}s>;>h9MF6s!5@MS_4KDvn;n z27lu=A;q)(hFh)H91II9=R*wEv@jRUyKT%8-+30qs7>AIRvUZiHvU}b$E%E&WV z)vUFaW?kbWCBNe6#Si)`w5)S;Riin_WU(>;v$g4dKU;0?LezOaSC(lLV!w&o7pD5- z5XK&>S9=H}t+t0SG6oM}jBx{C&|<&LQkQMqdEVlQMC!tCJsx^8BjUV=FzUHwBxHk4 z@v`iNWsTvC*O;uBs<7SP-#c%ik*zQ3+*bk9sq%7!t!6;{uET%Bd*P&?m;>VD0Akw8 z!01W=3~?=?E4T~Mhi%~%(RIkF6UsUb4pqs6p9CCCs?vkl=D{!UlI)ZR|#y7M#Kr<$?E6b##xh}`zwXV zB;>7xAOz!cEx6MaLR_OO=Xz;{u(+R2!ql=wm%zPPPtNqf&??qSIv8RTmEXaZN$YxD z9|1`yDmY=1`g%U&Qujh|%6R)OD+tNy=lm6n@7@LDyEidDyljF(N~SifLYJ4Xr>aLI zLGj&UP(cFSL<#MBt4IwVhpx(1mqes(>xCdgPzj71LDSs9K^`IoD;2&}Y*@7ir>^MI zjwnI}v^8UH|CuL@00`zeKF(j_swE~`dazDDMZ#00M7ZF~Tm^7E7nvp26X8STI9`FT z*KLRl(rm|NCQ3Fft~!B8vN4@7yGM{NWy1>k0O-8+J`5rk4luNdbG=CH6{yB?mLFuL zDaoIn#Cl#d*dYZ?qrna#fU^d4qrs#n9~li+cB8>K#APWO3<4n_YB?H=iIJ->M}zqg z>|uF0M7DrVL>LIVhzRR-(hwL|vK$c>jZr*Dgl#QFggvF+GKt~Vt`T8RH6rY(_14Yx zQ_f36(9K(j+?CQ0bauAPBf?^YF!bFa+=&PS^#z1c zU`$-yGd9hLuz*foP7k5uu$TpVV_t6+Ibo|0$=taAT)xT;y@y*KGNgvkfawvY2MyFE z#j_c235>3-NB zStEPArpwnT-bx%S62gI1^sr4K#VZZ$AbP#|yu5Pyc;q8!^9ive%$~Fb#XcfIG4%Z@ zMy4mtKVFuHJP8Y|numI)Fowly%T7P6gTQAP>LuhyV8~n*gX1b5U`C__Cd)$Z!GZ$N z;5ShbV2ET$O4||Vrffs*r`TYgfW{2Vsu}F13JlQ=wVU6i8xD}&u*@Y=OHssxu}~pa z*Xyt%-n!)bnp7tto6l8Lrfauo^>8AmM$C$CBS;xkbi4y@R!gm9J0TtnRgr<72q=3( zs>yYLmwOUNo$eGO@rdlS7N{oHk596Q!+*RhU(|AZdqz_EQ`hovqdtU10F7FuWTigT z7GRymJbjKn9%Sy&}SQRFC1o1o3q zRdpZdQ6}RUVYvD~m@LGY(d;N6OfU6!Z~8bW1znK5P{&CN#tr96n0mqgAWQ_B!zAPc z*VKSnp{N{+;xU;P)tX6fhti7dnm%EMeK^~MkMLgU9HT>7vulgG`;t1nPo!>kXr+g_ zudCjpiX{!xPB2jT9-4<856e}*R>}vXIFHPK&pQ%HRCiX3yede*G;6ai#RjV+^Qsjj zNIw9BTdOxXGYWFfmIO+a_=mp4e!_+O$ZvE|)i|WSJLMsA{rYiO3r6++Z{#8vWprCi znW}|kT*ijF4YmwHM>lIGz5L>8_^_GZNNuP3gR?It7R-r}5oO2@uC}+gS?TxL+gs#ayaDDJUux?+H_S%~uI+E7ciS6nblxKH$$1n zTgu7pqj5Mq;Ue#=ZFc7;o&2(ChSE)5^V?5%f29K)gn zZtdvKyvhjtZoAV~ITP81c4R&j1HD0j@Y2?fKBtHVKxH!teoPAK5i%Si;!fBAqVRS( zdoehx8Je1LN3Wo=G|&NKAGEzX4@f46xiFBHzHLYJh(KC!##bB?u@zf@Wg5SyTx#?ci`*T6V}%PHc?s9DGo>!U@rNxnTQ2LS+St zLs1^FhjtH4&V4L*>Erng1Yl@HW+aU2Nc1N4vVocj-jt$(#^2Kmgh&C>$<=io!})2a z{af2h<(nXi&zHem&cTEj^b>iGj`2ACnu#P9@D`o=16l%y^6N|*F zyfT(&EWYdcT|g$2dI?O02O)I0LS3~6LOJM$)T4mm>7C2 zRlvOk(*W@@fhkttd4Sh%iODYGVR0Yez2a4tG1G_bFtS^(i<+)P*szsEkBL;s0xLJ9Gll1Ndj#E z_9gWEuLbOj`4ND9VGCGY*1EDXY&{=b6G<{6SIy_~iU;HVJT@HcL6i4J(syhi{f$`5 zZev%7u7?!uWm0K<84NqS9)|VaP~%kkQzB~_>|V0k)!}-859k);qFXS`$*t=l-ROD% zYFkiaKf4}aueu({AFS)aUR%mjTXBVL?YcDd6oe!Ik!0^Gd)H9F5 z>!Ky&`XUx1l=g6qC?Z4Puxl)>#`Q=AxG83rP!GH6JfshcAkBhM4el7}39^E>NlgasCF@t!oU44Aq_(R0 z1@5pU5(1SX^e#n7gm6@iG&@pj5GbWWE1)uCO)lXMt{L0)!ZegtOG8=j{3XVFB|l=W z2xZN46%qA34ld*NH(EVq_tQYakOfGny>|i>>d}dk))f&_pWF8HZRl!r=j)Ha8&hvm zU7>>n^cg972W4EO;>c$zO96}u(qYBA!qp%kH4sw4VZ@(HRc2iIP$J(C>{FR+kOctg_aT<)h_@za=>@*b5p==u zK}A&8YdsikR?-yUw5{11Lx4-f^bP4DNWd6SZ2~5B#Nnq&QR^ctF6*)b`p8Pj7gVb} z3~ir>!aNS2>v7$5@r$EwS*nl9svb|Hn7&OTz|yyfRN{Ab>GO)ATF~B(0}$H`xN!hP12bd&YsW=ub6SgG!TiPd zgtqlYOTU55^gfpDYyb^D0CGm}!?cz2`q|0I+BX|&wxgG6$S4S*&|;(oz1b||um`Dg z;0L2#tHau0KmZdI%ZKF_%n2bkJ;N)H)fD<7aSsJEU~6is}}vvhz45AOz-^8p&1 zpt$n@4GM68#@H%p)-$`t&~*lpLVpn9c_3o-6GVs$LD>N!=oQXYuWZj^O9jm0aSr)h zZ~BDZ3Fggn5ueC8eSrSkP&2FMb8_e>9V-fa=LWm6@jG@ZfD;Tn*0MVjU?~iU({hHu zuUtJ2?4rLY1yA4s5(%e;_&uu-W$Bm}mdr377oISmrOCrG$#<#N?$Tl-i*IHFd~AEE z3M4h;fhmn?Mvpjwu)9a;?9!UM;{cDl_34p%k5=^!CU;OzTxECx$suK(LKvbj;tJL& zw_r@4Naqjm4+$GcPF!{aPzmSTZUKiUO7|GcA$q_R*oT>z(PR_Qsac&?Hul=1956LW zUSqm*%s5KkW?d8AX_HF$@{lR(@B!uzPoyTIu)a{K`n8z}AnJ#yZlgYs>nZTlQ|Dcp}s8-f&c{{qrzqB2v8MrBso=XCkxQz6z!>lc=2W6c=dE~;NeDX3V4`fg#^F87BfbvNFy7 zWf&DUGblIoKL;qEC`&Z&y?R@pA;z3A>c!NI>dhE9NtdDjS$}q55$272JG=qBO<#G2 ze3)ZyV}yYVUsdlFin9#|2F{sCGy~XkhXYtN>$n;wYKX;DkX$MR)`l#@MJxht(BD04Kl4V}u3m7J2;jBLWR&5*#E zLc{L3&^ZJ^9$BX zH5Z(Cm4rm~I=;^eUDn@1?E&=l{^w%8%AKn*r_ovpb>tHbB8x@99+wC)l|4=a11swN zUzZnQkVACP{2mzj5QD8eOCwu#yw&!Cbv3>qnqzscznYra4v1@rC z&)K)gsD)dz6TOt;%H}D+mdkb0%cpYZWf0!CoI$vAJFX8+_ZgS1S%lFNmiML4S`phT zLRL#@h2^q2_iFP{aZ1P0jIGqrnTnkx{un@4Lt}*C5&jVqwHtKFlz48QEleI-ENG+) z-HXXB-vMWu#Cf`AsrJr(%AEaMRh#n0?Q*@N1-ZD=x{s*>rQuldBA7D2VKN1bjb9T2 zk9%>l_ERdur{FFI&x5F>F>k^X*gW{Rhnmm-?ID)s@_Nn#xfVU+KXTjCqV~QaG-Qp* zPY8n1N=-qQ@w`Eu&7RFaJOpQfh0g6f7zJ`R=O%1Dj*8`qidZ-A{}fS2aqMu4<%>?ndA0Qj~mS{A#m?_3(>Ds92(>h51<%%Xn0eY^uQcbvFnc>$unxtzQU&Q_21U?H9D-500>U= zf;hCFJjPy4KjVPO=vcbsE5dW z#fZ^ZhF@f<{bSs0(su-*4k%EP-9U5SKn zYx#${C3#UK4CK;>(%j)~v&ub__oNeNL)jcL>Jd=N*10Yv;f;KTm0;t6be^_Ttq zRkw!va-H=J9>j!McS@WuvYYP#;)=sO!GQyS3r(x9s{lT4Z+BX* z;^NI`%Y-j+_}98jKDLMyz`Qs4-Vw7$p$ClogrFwxNIO-1_CdzPk_r&Hc~9)UkDu>? z>(PuLdsn4Df!F6K%Tk=m-n%GpZ^h^qth^H#IK3EF-dkQMJGagz(E-d|HU3ODujmSo zc-Y(mGBx@F2*4{QZyhot{SyqHC?5``pS+m|?3feAo?Zt3F4||9N5i5l-Dp92MWlbk zws<=NZdmyWzCEP-g3II&$jMQDO#K(SS>KL--)4h zqLyR#T_2&KHiniupiaB{HA+$_;le0>hs9_XltyVxHfUA?svU#!LkPOqZ$+dF;+t_6y5C(PF;7L{{ z*n%~JHs3u2@$xBj)%b5Kj!+Q!OxlC+V*o&Sufb-rU85AlB7*UF79t1GhBFhUj?IS= z_gEXiC=L{W4^B&Ggv#J=t)m(IV?TCwG;{M(qKQeH^cTS&xrZpw=lDSYC4ZBDxyTs+ zipT&kjE%R_4Ym{2F2x60;a1}%y0i!*b?7c+sfu!>Kw>ErcQmRnyotlZ3Qm$h5oytD z<-;Almch?^&COD;xwqHn?dRLs>(uHLn}UnpicMq3u|ur9z&hZ;LH%k}8xLIQEFI?>Z}(x0t{ z5p1@3YBu2mBwf-0@vEHeVbd{_SYnmKTBI+9ML{gm#wL8S==utNyy<(O5Y_gO7m4Fq z$ct?(mr|1e(`-vnb${DzGr5W_e%x&pN82j!wsfipj|-R-ld$Ljdu{1eveB)uk)*Be zCH#1&)xEf_j`)F2bt#5G@n$c50%${k=D4|%-Wo*S=+t%{mHdLWeQR6WOP6ZPK}*y| zyqv)})KU@}&PB{3Ze&}SuMj~}33zs^)L4!&ma?Cj{{VK+Klb1TB6A?GNNMC-24~pV z>NXR&=KZ!Vg;kD;)O>`=0`U^(dZ)K45+Aj<535Kp8S7NHwrw!O21u3i6{1#*UOt|# zK{^@m9sNEF>Ex8H5>akAlPByOJ^h30g^dW}r&isUN z+i%5UP>{F@hF%Yqrqr@)WFiVA<7rjk3Xa$kUKRJ4$9+77<0$ zhHoDM!>AwEwDse`N*PxW(%9{t1uHC;$W{6k!X}x=aV_2dfa7>}JB|}e6jt2n!2bk0iO zBJGMuJ6o4A57Ws{XsfV2I*aOuTZCC%iNgQyVh+ zUQAou%nD7-Ih83s>*gQ7JEkqCGHv}4o+)Tl4*IGq6%AX3+C%IAU#2rV18cL&j*^OjmFGhShQ+1HK&woKvao!((j15yG%Aq(ah}qorx8q#K@a zyn3){*fFdwfG-?Z>CSXhjD@VQrZVstGZf96*`_|3?0+`y;|nGP!LgjWdIhM}YnEa^ zgy5Q-c#{QaOL-8K>^qZFOSmqPoCTs~hkQ&%$Ig}C#=_LxX6?87E0%yW%X`Nm03d7w^bL(Jb31H(I6RfoKr$+X8OzFYz1Q*M z`>gg`+gfG3i%w_8%Uap?IG8wHh8|#PB#AJfGS~JBe!SM&Zft9N*-~vN6?PFe4m;_5 z_Y#Zy-HY4rUbysKUQE>D5iCZ82}Pa`hO!;0oLtuxuV9i;m!4WgdUyB`US_H%4wcty zj=M|a2+_sbJ$fOT<0zIk_>*YE(}h?^@L|`Z$b$xj$-#EU8l;3bIwRl}a9}++U>!h? zz_HcP*y{*_3+wm>4db|A-N$#lmRhU1ibOAfWe)1i=Noqm0OpR#djtt=alyYA6Eo-E zY?p)B@qC_=Ds;olM)-W5A9b3{WU1OMYI~>E9&M|wmmr;_007NOxL_=?moSZ(0j|(Z zh+p#v3GRXz5jbf4XJgS zrzq9p<*hf!DOc}>kDhXk%P_*-)O^Ijz;WliW`Vq-T4qx?Vy-SCz+$&S85FSLx>ckl ztAZOP?(~6v5)boYf|hw=3VrDbLjFucX5X4mjP3$7nlvF`*gxh zrhC%ku>G_y3hF^GXFik55;1fd?0~5xuZp4_YdxZptAaTuJDmKd{#`(K!O7q?JTAU`)^|@)i|o-P+s+Ql#VB8N`&cOJ!PH zQL62%m-pJz!=1b4LdgPLZ-!GYyRvZlmi0aa<+_XwCIRx;s0D5-ZRsTdNh3MkTEd?- zXE?IO#jkL*ZkTyS5!65{Q`b;7FgGu8{qfh7W!P;w{K%QWAeU!GeJK2<@jTCv4HihT zf2X;Zg^|pC99_&@q44R-ln)b;K}E+wMQSL_62&IUK|&q%LTJ+!`Yr&8bvGv%r!d>PVorVF9v_Y}YHOsr({{hP-f~ zh2zY~Tg>*bmhpO}-UCw>Pe!e70|bLeWz=@H}CvJvu;G)4ZDP|EXRxa;FjXeb8I z{bL0wx=`)Hu!~k8fS3tX@DgV+ughcw#~#1k44#J`F={^kU>L&bCIgOLq9dWrB1~;u zSG_U{VN4{I{o=4y^D@D7O*cUiN_<;(Cz13Egyn2JLP4Kl&yM400i)5mwT(Di=SbG;FR_Tvt%Id`V=`C zM6=5Vi6VGS9*pe-0XHRJn&%hFUc?h08sF26|9)kM(J!klh+w%~*=MF|$V2uicnu;c>z*P!6;^s_|U_C z-km~2ye>F}v0_5TR0krYnPYnLF*+;bXJlqZ2+JHNa`&Rz;ZDpzU-FESFP7<$P}muE zmTG=5Kt*T2_b_Y2ua$L`k6Nd`Vpd#9#K0d8!nEArK1@qF{bp=c^OH3c%n860J;>QS zvw~{oF5@rbe7joh6O!nhaTkw3HTnm-(=46}76#8(rYF(W=ZL8d!5{W#YwtkwvoL4f z=|%cb^wK*A9MILCzc~Q?2XXEPK~aG6BWi*u>!N>s#Gk93oW0%AGHd|^wqVT9js=tzUF%2?K}+d~2|eGtz#!+|g#!IsPlLYBVyAZ@ z3MSt|U4#Ju$9Xl@-4NyLDjeyIZ{G40D;yJq`-%(SA8m-Y;J_&18QvP=t3(oxO=IrS zi-T>jetXVQ@8-MV+e6hWxYya67~~P55py)!yAD4@uO9z)32p@Us*_h&rj@r_GMSf! zy9=n_P3@lQOGgr4EAR1udGMTx3)}S8tatWRcLzD!&UO<4dh!rdn+tu+%vX>(^bT<& zdj6PLZ8QS`w^g%A=syUyuJptWw zHLqsO=L$}~hYZh7)e9g>9&^tc4#tNpLH3o&FAs=l01t`XQ>0|}IdazVeQh;S;-+dl zfw#o;I|(rLAcjsCh@OSXB3L>pmIVgL6#TpP2tyyv=O`+=lrQ?*FekZmst_&4DmXwW zMS?n#pavE%u(oAMzc8vcZyD}9)pAb&b$SWYgvV&{pB>@<$Ss^kb#}II!6z7KIZfxr zu(py)BgqPp2fM>I#I9wwfo=kce&qd6lUDZ1G-AEfCAlBZ2I<5O-25UX^l4%X5$^W! zT>OQg=-&Fk&Gr6&iI}Zg*{m#kC%bue2t0|pA?@?|N7S3WlaH9;2d3J3CsSrIzjmqV zcqffp;K?QYx9?T6y*IO~VDH`2icXqYCB_4Nr#`dgkRK>b{j=B^A|j{<*bSLp_YVLk z(f{e#kIbQb(BE11Ta{CMT8JUDm9w+`(*t0NqBMj_{QSw4+hzw&7XLzo9NmK%VDC-! z{+n*1Gl+eYn^+~BRkW5b7MerQE77s3G0qz2>HKlpAp&kwc7=UTB_~FrxTJ!s4a{yo z+eB;^{gk$*CH*is2VSKzKmkYv+{A=r>Zy|dHi$W27ws9edo8gd<90Qw2d&@FK=f_M zt)AReuLZ`f%O`~qJM!y&H^p{i&=`Z0(boydV>qF~1C$!8HcYbH7alA+;ws9b^O$r* zD#7A3`OhoLQIRBzp39)=;t-xtkNHI*MC^?}TXO7yVF|JV#29Vt1eW+C@<6fh zsMNLLR;QYG{LSzG)pwjmaPFhjGmVOnSb?fwPwp|0wY;q95g%9Kr;TB`_ejlmbZR^W z=P6(?3v=2t$~}EDvj>!lW&^@#tcK9h4yt|*ceC~p!F-F5w|PuhM1r-wu~P>9gq)9D z`<{sT9Dim|4H4Xuv4~ZyVwlNTq_=D47LK066Opej*$nOqwq-E?ol-&4LMRG50u9 z2(xQ`Img%e#yPG|G+!XbvuOUy2M;x$EG8cd!pVjE2HF8r=iC39+y3snqHqh8qgq5B;aOb9y62XV`NeU{Wr@s;&aSxpDUvA$m-H}B=^UI@%SS>3<^G>GLF;4KFJ8UTpAH& z$TOCrG>_`ZomlJCQrk$pck+q{NG(xgD$9e*<_~g-E9MWZjS`$MkUz;KPRt+N#TGG2 zT~K$69Z2yb8buKDr*w_42XDLJW3E@Ne#&Gj&s~%I;x4& z!Gmny+IH@Lu3F(2nK61*vnJS&u`(>u}+rDESAbT*OdP*>f1fFEA81 z{;nptFLNlOxKhL%$4e$5MZSaLrE^d&<{*BybAa6Yt|}F!-|)^{w4DOp-^=?&x4ZVC zi;+k=_92?-+>OV#Z|X$ISPfIt3J)KLjrLA}WblE9otZfeU&PF$vJW#ectIbFnMuQd z;x3F}Upd1_Vddv@)UP0tulvV}uWqUc90b2k{C{C$98o&OYCfVmbN7UPlldrR;xY-j z1zd`?#O+zwHEI@3IS7lw+tVt}`D%&fkZOP3)aWYk7I+RrPtfi(ahS;fY!s`&__9$U6} z;g&A0Kl8@JPbrFLaNc{>ye0hx8LDPaKJKMrQ|VRJYbt<(?Px{ejYux6I#siERdodm z3=t&Q7~U9(2~rH{ZDhuK=NnD9a>c31ufer7!}BqlD=a(E%%I$Lg)OT}Mvm(39jn3_WdC77J5>+Ab@Kgk^xw}f~Td+g@56jN$T z|K_g4&3N+O*tWrbjWq5phFqJe)Yk&2Kq+m0?5@LG1xbj=w^L5x1hj$9Iu0AsIlWXs ziQ1#7J#M|+(bP}U)Sh`$lpT& zR+w%McAN*T$FX@lCTraY%|V?96wmI1)#P);!{L&m3tv-ig-LGNN{f+s=S_PYIa>+JKctJ`vMAPo9 zMr13=UG>E;;sU=S_3aDZ7EFs=?25tns(H-!zP?4w7ot)3)OBGJ|f6N-hQCOX@>w}E@Bs)ECY zEwgQ73HPh)HoGA1_m}+b#vkEt@9&EDL;daeU2d)iU%J0t%xQ7{OWw`5g!2`1+^jH> z6b6`>TKOw#Wyw8u)q1A5GFQI$}qx0zk(3E{IdeXI_U5x17 zF`DhPq3wX?W7!T{5(p&-pfY)g2U?5p1`vNoSnta@0G?gV(-C|T+c_mPoaY2Ib}RPm zksNU}TkY(QhSBBS(J(l7N8=~Uw1fW=d0}L`~?d~v94!Xvo&h}%uZSVS7rE1Lc6Gj*V4EkX#3?0B& zpY|D4I&)E*0bj^Z@$N*V&a^|UO%>fi;INr_f5_QwZ+|TM6B1V18)>}>bg8l|N$~jD zE-MH}FGzBPpXU?=ely194v!X=Oht-?Xm`>V_!5beeCu%9*)H96k6wfgRf%98rdOw7 z*h*e#(b1jSSZKqI4qXwNaZ8qOQdyjED1Wpo(kux3~kJYpToDN{ze9{7@%z#0Z`58<|<@ht@{||Wn zc$84%IpYUoxPdkyIrU6Q6WJQl`jgV6q~EUyC$zizZih%U*&_fnTc_Qk2r&Rs2(O#= z0qIh9RyAiPk->-3U;IDFo^qzX;p!4-8}~<^rIyqc6-za|75# zI0@zkut)2@xfn`**j03g`zB0xbHBhvnC|B8jSHFXy6%lG54spBr(7{rRlIcdg$*{S-=TQ~I=5;+HPF9+q`_R+e5*y)!fhA$UAoK)nUL@qt zI_0Aa(P4b&og{f$IDSyXnggfR zOb)~rd^$b~$pT;^cB~^c({>Kib65{W@U|KxLVhgd+S~3SbBH_w7k(_qq{|2(oUv4y z0P;||cZeF8NdQB@JfRNHa0O-};3j#yqk`lLq;Ttw<@GtrCLbm@$rl&}9>yK}WfB3i zL{p!Sp$|`PIatZMR(mMwbYa@P%MZzW=^YA&XJ$~uQ^duL-hv%f0a&wQFQ>%`!LQY9 zL-1o3li*i{;1@|<>ChRWOAZCkGl>2HV5UnJy4oC#EjP>|A$?BfmnxswZ+ zvi@BZxmJ&sTvwLJRVjT}as};zTEQvi-~PbM60e!9(Z%3C#96_Ag43-Brz`7`%tTH% z3QmXYy(_1Ku6N;d>yS3pbvYddzkpOpH;j{>ttLpJx)8;+#Mq+6=x;DKc39h&O&J^e z5@Bqn0wP~=n_X?Q{nd@BQ<=$(Z8adps?RdGEO&Vuab3KD8Ot4h{61Mtw{qfa3*3*WEMz$7Z_mpPzD0|sTV*X zFUVss_>{pt%{g)Rb>z*IPcnRh7`LZ{rHKaoaWTtto`%n6exVR)Pv)uf>Ujo2hhH*$ z#>~_@g(|VT4xgnm4L`BEdhnDg44Xs=KcyOJ+pJWAf|rst7M;^e^MbS_i zc@3~!wtUJRK!oUD4@^$dj1B9WY&T4>0(y=w{(l$XS(mrF16oi7-z}uityZ}llp-jxs z-CsmA!{)}o9TvyI|#IPYAYL7hsv~)T!GZdHW*!dt&#WGAaY+H>@95A~i_R?Qi z=Hxy$U{K4jxmos(8!T##illxEZaij6uN>k%pGpmj$l*DllKsnI= zY`IR@?5Mf_!9&e&|MejRLlRv#`x{PwJ(72Yv<2%Ds|MK`@StQ*ld>F}Y%w@|aKwbL znb#ys%y|v2|LALvz^}0JymuI1fjpurA0yYMUg=`j3l`o(N*o42>%q^y_+=Jc20k88gsDMMTakQ*3F7h)Z z-;lwWiN6bE6$ZHNv42N&$)|h6}@lCboRX3ZhZ)yV7Qg!Q_nk?DpO~B9AmdUR6`F+~w_tle|>%He? z+w1OUfdG8E1_a3&MVevBQ%bJ}9= zp{;^?`SQ=odc1dy?|CTKYd-XS39b40c>3)!w$j|JVFX9b;vIuY@9@sihk+zEJkbe$luG&k#=FB#zc zOU-vg+>=nQHzieB$bp+}6VYt*%In$BN(0A=|4}{?eLNT$b9uT7Qy7yZm>$JG0J6}@ z*^B1qUn8T#c$^rWE61#?LAxVv40$nKMZCFjR$b4LM1iAZ;C-=-_Un8w`J=&MbF8H5 zzgvNvG$Z15(fqnKTdnV7saZYwv0^6=_*k(U6ZrRTstOPF$5<%;Y1jb5#KJYbgAIfo z1_;l6l5;ko?9j4-s$~N{+{p%f#sbl@fnW$BdFT^olyl!Sd|(547oSBUaKL;t*2|+Z z-J&MGL%Lr)o`WxIvjAId77~N1(Pqg4CC}$3X|wS&X|og!Z8nuXM_H{3Q6OovQ2=eW z8(TJ7fMI$uA;zPHQD4ctd+REK*u=EI>vB*DcgWS{7Q`GV(&b691Bn{iiYTDs`eG<7FnOpj ztB5vSU@{NHjm{!UOA=jjyU+62E(q()F_Hgmo@A{|9Id zb+4%&q50|=;1q*SlJ1&fX4U*bkQQ*J);kd3fX5x>ZjF#OA`dZnh8&4P{?Zt+T+300 z3>8@x!+ogkal9dgV@bUMX32mR#>?hIpb(gy&p?ADYZST)}d;UVp@cwAMzB33;K3hH^8Lh0$*Ff@nekHmP|v5iP4 zgOM)xmSWd&BhvR1La=$u$?B&RHi|cWDu{L{EZ|%wJKt4JSLvWP?4hv;O_D&sUJ3nK z(LtWS7kcQ5i;1Q10(pw)kLf7r2nB^+aq{nlp8V<8iUxFLNM{hr=_=4ivFg5Zji|B#!Ce&>xA0xCMz?AvbANkrWtJt&O%@8O$Ee5Gg}j8HL0 zSgcZO;wu|C$&VJ}*Pp2NCk^a&f)7n=1Vjt-urZ+OIS7p~L>_&r3|)h<_W?H-oaO`_ zP40ejn?XJrA*C(7`XJbaA??%gNK>IQ$Z@V!Hl=%y+0BU?ZbSs%VBr!+F=B@^htko5 z!4cW!8U@jELW^2sr}uEWQJv@^O&n9hp^{N+8k?bm@^F63fvqU8OgFX{&O0+3rw3f4 zt#|@BRpCO2)K%TDB2WQOfvXj6k8O|2mXWYQ+`2zqsLC>eX9=kl)EM@Vf0m3&(Mk3} z+p7V+A{5L{(*ADF6A~YyWowYMU#RLKwvEgc#sN^(vh!q5^BMAek>omt~vfS zsrUJV(()oe_Y2UmdCU6`fo4dL!QMO$%A;!{-JXp$$Vqc6yhIFIIQ zPK84&6apDzkyh?{zJSZgu1I%V>2fe#AkOA$#TXK!DbLLyoMCfi$Sy!byhHhjBpLt# zn?tfyfN3755x^dtJfLYq8@Q&YcMi0G`X)a|FUKHkw;&e3E1(&iOdfu&l)-3$&pGCc zsAE68wMsa-?snl72qmR3(drDsvcW!O5wNvbc{cq1eF$TqVJnpuiQ&=`O4!rW4S%c2 z?~Q7(0}G@r9o?vezHkl#DQRrr{_8k6#rDYTK<{bx0L`*>JP^1oUhGyJteh9mW+RSB zLAj1tXmeLgA+|^f%j+9ujcQ=p8#hQ5&JOZ8>~hi*4K`&Gaq?e%KrY7THKC(mPHX~_ z8&M+P4C9mF7#!9Oxy~+;aqMGaFd|)EUI`1my1Y^qZePoBIbeG3ezoVpI=}!~+U1;>$QaW(E*cA(k2tocEm~L)uoUK$9D2uy3kg zKqAiA3seUUps|sMjz8V&$ir*~4WSstGn~9RX-lqKK24>BGUEemaY{2yU)C;mVI_Su zl&RUwTA6AR#axy!ghUkq;_)0sm=exRfBJNjMh)6GBm5>;hfVGhxOzWk6HJdRnEMhW zoa9S*1nx(L2Nu(ONjuF6#*h({Og;6k^GvdP=lSu@^IpgTRdjDVq4ne2Uo5H*H?^Bi zZC-9!yqyZt`=$AgjGLsk7jIzf&LDHln6ET3$9^VY6-n}}41l!Np8dYoz)a8(Q>QHn zu4v~Bzp@K+#1i@%D@L3ibR)`AF2SQHQQkNMk%V6~2KwXz=GsheE{!)lW-(@X^w4iz zmB1%wXc7pM=0`5OR&P!>AXz78F%NsAmFd1T9UO}gOT>XZ)fgUI0^IwkW`-j_=M=cf z%s_N=hu}pMoiq~nIUA5Px{-^7JD_1uBfb2Mp55a`e_larxvCelNkKfk&h5^NHk zQ}2P<*!I9>j<$5soZQ$E-cE1M0) zzren=v(rNgs`dWB$V15}RUcZUW7_D=&D4PF{&rsh{aD+Pe+liTYoDTyPTIDEHD|${ zogLcMOnq20_2K%^&GkXe)NCqP*r$dIdl6eYHX^tKNStq<+NAl`KDF7}r+m26KIJoj z)7qz!nc9a6MQe-Z#rWD_I88#A?tXOO@h8mb{L|ffNc3UqsSS1G*pl1CxpC* z7j7WLXdaeu#rQ~yi#&IN(EuLu$60=SPVn&N0Uz83IBx@- z=x}oo2EbxNVaUlJiD;ICVO#u2DHW;Z-ZWd0H4?jWRrOL-rdQpi%5;BHnZQ`oC!ju@ zd;+Lrw0)q&;mv2cG9st_72xvq9c6R-nd*8}9c+G{*964HWA(%0`LY&F2*~{Po|9K9 z1YAG`LEAWA1%Y~#Rxrf7zpR6VdJ%wRrKYzuAJis-<2`{uTnIw78zu@>=P#PKe}8t! zhMW$1q=jq4k3++`9{LbBB7NEhY$nwDJsKLMy0C+!^{P4GLbVbL4_d_KB4Q z+3=p}!FqiWWY{L7f zOji(QCEtUQ9?25@+h&Jy2@aDb9~JX@XsTs8N|PgLz+-YG4PEVSqdFF-=8fv9cF9OH-D}w-3k&(lFqyVK9JLsK2dkKlF8gd7lSp_hib6LKwFE(p0f+?WeM znR9uOb1Z>4fW{njAq+4t1T;W!V74Y`>2g>?n2JJsD*CvA7!bs1Fp^8S5>_zcC8e`9 z`DtKFR!qud1HjCj%!RgyWb%t!wrD~sx)PX*_37S#lKHF(+011~W4+MMFZ1>^(I6Nm zj~LEFGDFNck#Q}0!xqSSZ!q$zoo_CB)9d!8=bX)YlBgRg5hUC}8OHM7$vm&ZC@aN>qRI{$lc9NA5?3tc~G+>I|*%sr=@G)@DdMQ8@(pI<~m*IzYOI zL9l+N{2gR7LzZ^MrrEk)lbhh3jr<+4WVpn+bi7R-4Lf>^JbL4q#hsjQQ=cXjjU=+c8d$UQAol`!pg--tPA!X1=J?lu#~|PuJyki z?bZt31k4{@sPEQ_L$Uhs#SBjVeT(wD)rjxFfDB?YE~ekqXvN_>7@YivofUTxBo>Tr zPj|zQ)YCu=cR-KlgbC1hn||upc0FHAzg=Nm-Iifiu+!Q7wPr}_k0-%wNuPZ4$$$I;Te!b@W0>_**;ucmpnA8QAehN3<_UsBJq>Nr z-TkVk?Cw8Ag5WBYPfe{&P7aKE+MlbZeXS9@Lk_1wM{(`$`B!pnh^OMi^A%UXHCJ38 z&7S|HxcYU%mw8-8dqfC=rPf-aWIQ&ROFA|g#@!y9%#(C%@*ektl6_;3Y<+QTGB+HX z%nBhcA``D8J~d`>cn^Z{sCoLev(XV5m5WUCD|abBessX8!t*Vkq5cdKix-WH$wRUr zINP0^CvvLULUctWQWq5$nS15Z$lsK(p2HrkTrNy;eIf6(>D1Dq9bPUqwQ*ik^~Pm| zmY?QhZ#)vt0G8av_p>odw=s~?jMg^Rrszq9gxtJ?k^N#ctD@BHQEOyxNCIP&5_IkF&t{L7`&Opi6c(7dSc#^tmCvH z47}v3>NvkZqbpN|S8#z+E=!j!Dr|%5B;=z!hAr3dhX;e6i41*@EHU(Bnu={EDxmEN z+B_pP$HP*YLvB)NPW()vITUU;n(+D@WuMoUO`$naV8=$2N4epa^=`i3R(+;(8zK>a z00)7RI4UZ-xbqP4NS{A{vd_PVOH|7m1I$a9sGo#WN+~idiGvIcK}s@H5<@tY`=|H} zkzIX!6zVubpCsFZP0|fb9?S&&N%3jF^8@Ol#HYOnC9d`Bp-plC8s8xsLEo>soida6 z4V&-Kc^~r4jK=3OXUM9`oKSlbi5TO7PLVr2nJ6nN^?(y#Ir;`*g~k}0$k9}wjynJ$ z3nubZ65Ww^vlyK{ok@>3HHQGL*C(G*xeay%laU>9`4ZU?o>UxAi5;;}GV-f%*(cU@ zkRYWndGvuEO|N^YOV%+$C5j{Vg%O`Ex0?+Z#+7RHx0|tK{HKGI$KV9v8b_lLP)ImH zIDn2r^gUKOG`|yu8#WVRQtMV)p4y^SU=3A(TG6!0o%)Xkno#n)knHuDvJo zp8$txMzYoD&2d6ckixG>m#uW6i#|Mh<$t%Xxy%ZtEhAGAhtKadp4)y_wMRII++KxbB*svQE5zncg z0AM#BKr#u2XKG>S0wTy1yCxrl84*YW@x(4YdJv2VFJdqvn#lXzc(T~<#!b85jh~4P zQM6@4JcAA8eTUp6HWUSRu%T`Wi-@3hl^4q%eHz&0$Tj%Qyid*pX5W7Ex{NJ}nbwhnct;y^T0%b?Jb1rQ9IAs(&=QzvBygow+#I0!Z5@sRgh z6~JGvO0l0qnL|errYXZx+1&b_9JR*cpwTlBG1kU|;~(%yEz=U&W5}ZoyNKP6;)Jj)03;Ugh#V`A0AD5846~h)sa?fZX%F zAvzI)W%QeKXU^2NU4!_uYmS7ac9-IAC4tJ)RuXh6VNvlPtO!9s);3$YCP-~a&;{&? zMZu$Oc~M7H78_0&RtO$Q88zv(;BFQIfJyS@9Z+leUYKw*LwGE=lH@dJ@T@k)8Cyv% zoZ_rzz0B#&h|pR1=yt@A2P0&7kCCd=?6#F883{lEmje(St%x3A3v~4d<#uc$>5u=i zjBRU7V%7Y1aZLkGG{4JMAp`e#^nXU+Tc20kd-`QjATG6gcp_HeL*(COg2TK-BzIPQ65G;CC;6AB-JnMf0bBo)&%9(p(*dO_lC?nh4F?rWpUHUb$jw zgmfenLxivQgK_Y?%BADSfQm!G8WggjxR5lN+QPPx9 zk`1`cYv4Llg%T8X7F2fc9SaEwwq$oSUHykJOWC(sLEnADQWB5XUCROvh?GvdscV$D zLv)~A79Dtk=uoJ^#OowF#Lpx;P_z{tD2wP&sKG>mBsxTa9il@w57)(Hzv$$7laX|8 zWhHa~e%p`3vc`9f+O38h;W#)N812x+h}iNJVy6?$E<&CI1Ew}OeNPZ^fVQG18+hx{ z91UXr*Xq7#Fcu9k^up=@uh9RSKRW{IvBB25*!RwAJ5Nr5$*DV?>|bhA)ka`;GN+)Z zdb(Jw%UOab=mrCt#?-_d6GAgBm=2?C+igQFb{HQ>W&SmXmjN~vE7AJGhEQ7-HW&0=82qJl5lr%Hrs4{ z*Fc9o20HAi*Ke*jcJ9Yxg>@_oBMvy37-E&-x)}g}=~Mw@6EIk<}e@KA(fej7r1AV$?wy?CqHKWgmor?(*BLH@bys*k zK(ZWvZoL|%Ljuj*w-P)8_JFP%93eQxfNA6h7Qm3wA_*KWZ>_JfA=hPtv^YybS44Fj zpRp0=MpQH%TJjd;uvZ}S^-j5Mf(4Fe+JuYdC)k(2V#3z*d}X!F;ayegnZMOy<0hGJ({>oX3iKdWLM2U4m6}7a#gx zYb!*H&XrT<&*1?ShpN9lE8DBe&u8U28*N;H=p zwwK|O?PVxw1+rwy6>nPG3!_U%@bC;G9x6aZ+1B<#fgJ)=$CpC?(P8rH$kBYjXenQ^ z4u6L9AiDiJ#_ldPbY%M#FKe~j0ma*5D{s`;ES=N~hg^5Ma7x>Fh!)|qoCq9_-l zBcA*mw`hD+ql;O_hIvU0AVbvi3IDJe%w)K%#-aq1T1@U^nf3V+LcNt~&&``9lWH!2 zP@UFY?nTqLiaLspQmH0KQ43dWm}U|3^%QZ@Q-s$4%;H7PPwOe-N%9oYweS>0dW(gp zh@z|$$SjPx^%U7rO|weyk+E_7?q1o?3EDy|1;QXx965$E@w23w2=Njgtv*3kmFt_| zDs(eetpqvkSxm-qHkB^J?$?(7jq^%V%+mLy($!MwkDXVVVwV25sdR6t^heJtO)*Qq zJ(W&p1hqZ+#CfGDX6buV>6BHhE&ZYMN>j|z??|OFtF|y9bN{4#57-~5c+T}bNxmsf>^(nm`d<%| zf&2{C-2PFSCUg5zCXkwsLaa6be~&frTNQC$roz{psje<>N`+s+OBBBwx%)8RzKmPg z>2+La+0zV3R#U@0C+`_V4g%Iyke^}mkl(LJRvmxd=)?Z8;^vgRHNMQ*Tm1<8CH><4 zO^uQGA*`m$i@hY=riU$V^CaPRFXMJZv@CF&qTqJwN#HhgCk-nEdoA4C%RZ+7!qMOc zN0~eC*{IFEMgYkck2*`qCkg|6H4>r2X(v!hf|B9ncpSKDrBTD>~XYkW}o)$N)Y)ye3{Ip}RAuhJVPgi#5r=2X*j<$1~``Fb9 zI{nTf7JX?&tWLj^i1j54$rrN@bfjYY-MK{sWfo$7;vD6ey=`Vs&6;>y%;*1kp!xg+ zlaTSgbPEgYl}!_^vZg@ zgp*aq$yhKJI7!jOZ!tC`ek-xkk&tl{Gmpw?>PxS@Y%6y{j7Qgr*}uBPr0ji2n+FgH z$&BP)b0uvi5QnFRFYX+K6n7BXWfACaM_BYA!jAhrp{V#ei|ydG0wCTb0?V;3G)3|s z1>Xudy%2L6sULN~%~mH5kbXH*g#{&AISc&c?W6P+(9!e9W9TY9b^xq-bnk$4f+`EM zG2*_jnO4Coq-t1H5=))lAae6)rA<`C^7_Q(@k|x_W3WBIyCD7G7zInX@&gSgb5acyzXy^cua6fbUB zKsao#7=O=txt3S#)uROy7Fl8Fk#Y%_l=C<2(y<^B^a;fD?64b0^ zL@CuAs({Cp;5D3I+nT_v($0n$U8u?#oR|0}rA~{q0t&B5DG6|<7z0pVaAIT@oN?!V z(*Wm6a|zvwp0I6u(b<&Um_n>QI!}q)s!sTy=3TbyMAyVvhD!T?J(|J#uGt`mP0{=Z zlnu_+0Uk%D$hK-z&{2v-$Hr4s3L*{xT z>z1U*9hubR&N>#=J;SU`H`}=x7|nB^`$Bja@C(|>@cU#?bMzx;t!B1508H~sE5W)9 z%CjT%$Bul`84Z+ESeJTj;5upuS>48#W%UhQ(IKu66QZ1+RuNMQR)ZeY(I&)*YCwc- z7};th%+24}4n?V2xsp?Ce&Wkdo3X?JEY7Pwrbf#F^gcRs_ zd3l*wupNh2#mtz4L_kb|^N+1a0%GYGA0xXk zPKAVz!*JYr2R_;mli|t|yHJ7%T;&3*YaPppVd(WsK**gC#5<7%2fP#VEfiCty$4 z(Qum&fIJEA?7Xmklgx_A(g3)1U%XG%MJHCf87P>!(Tz9Ir$79Q_r5ujwhWs;`h$1; z&`>36*!=Z z0iZufF`=LJqg3*95B%_(`H3fv9i4pXX+zgHpZnBLv7Ggr5AwOY9N*uqW_wSsSM?b2 zQswj$!0mh{OElz`kYV;42UNnA7HF_8>IYoWo4`6!@uC%B=5~*9O#kFJR}RNBa5trs zC?~(OVv^C1d`i&YGF?v~Usq*xO7CDwdu3tJ7&XuU!W6v6+Q94 zfBzGU=PT>YAIlH!|L^`6kZ1E=N=9xS9QtR@+%jg7DnOOdlu*w0dH<$3`N`?{W_r5$ z-g^Dr@BJ4^|6TW#fMg|S0L{727uSa=jOL-4zx-kaL)QEc3zicz8hZ8mf8I-e{io2w zZu8${k+#_fK0s6zgXLSRZAPAq5Cc0|)Z?3ZXCrwsU$P+;8kV7UOR?NDjsXID&kr3S`grc~dNf%mhi>$BKVKom zZ7rH3_s2#*!S|vdGSAC-@em=H;t?V8-*2oq2^S2eND%4h=Gn@L9Myryqe;k@;>P`2 z{<;JaY#j1yoUW_{g}h?a{>l%$985N9rCQj3O{vItj~1tL1;;QUJt$UAUd!4V7Hi%6 zxmbSS*5!*s#p=d#Ob1pDopT$o^!YK;*9S`V@t6$iC zB7m38JzxU}`R?yAbMN~|WNwtV3#KRfB%BFU0f*in0`HJq+}9(RDEx-R!Q$<~8LaqW zrUAK8Rj6a~%c=E{Atvt|uuOX%S^TfK`DCTTW3wK=`+w$|`sP5>LQVdUyim8RGpgS2 zz|69Yb6JuE%H|6uHxMiu6eH6$Rf zv!NLltO{Y|T77N7<0;ERbx?4E#J>b7zI0UW}otvtL8R z>D)>!HR?&dI{wSGHl~5Fr?s$F(FtNRpVF&m>nC4@R9Jr3$?}^RC)SS0goJ$f?(f-x zr6nNoII^!3%YPOtBOj}L06jw;0A!`2qe@5Mln_NUR&h>=_2@`;%D~9y0Z&9_K`(0Q z;01B?DPhb&GN=B2xGMC!G9cySr z0#Y{|o}Txj%c<_j5)Hd?X`c6&YUVvh63BJCc3?*-Jbi+?c(Efb9aV>W1QaGQE$oFe zNW+~MgE6e`aLu-txjV1dw!-SuapzGwcAL#hCwE@AbjO`X>2ywTTX%BjbxU{Ld6e$C zlWksia_4nRciefD=8S|+>EzDqmhQOoD9u66ozlsj*Dc*~=TUmNC>`#+ZpoeQJXi;_ znKYR4yIu%K13U5E#TDNj-Uc&Mia*R(Sh8KhBQvF`byH@_RS4e&1)MvceuCG@ks+G% zIXK8120D;Lw>`5_*9PrJg33ydWaPwThWomo`*{3fBQ)|uA_r=jBNIjtNu{0ZS%gAo zl*%*#W<7VRQHuRAXxM@2;8^FY*z-D6e8>qZ0dq93po;N+7QRpNR3@iF9%H1d93o!= zE7DaG4$C(zh~mGrJdCUo7>T;Z0+Oo#&F}x!cbujmgDD}NmU2V6M&-4-`>T|$(jyRr z$4aEDWHy>eSJ{granutl;cDa*z`?h$t$V~r{4vRMbRjVpdxde!O9a@iY!F*P_B_o8 zE%dM<%_);s+nyz!qG_ccokSP+tgi(yq8I*Y;?O@QPQo^MWv7@BB}~&Dzmdn1xkVmK zOY%E$L9ZF0)evr}%|UBW-5-B=PjU@#oCWb?@_S%w&BrkqXly<1=+b{-o(iP**9o_3 z2o*kYX^eO)wrs=*ct4*#Doe>m)6AL4fv^ja4T$cRXcQ&dnG4sGTj?`UTzVHXM+8#L zTop5?$v0+hFrT?Fmn_W_3-zh_^^|FYGO*40)@KdgjFlDQI#r za}o3w5l_ZP|M{&($3=WJCKn+K8Ua@)A|VIz*k!x|T>`h5d_K7B)a1j4Wr3`hNmW2? zMQ2M*m2MGTVZk(1w@?Jvc?IhbUqMwH2?2nGLr)d+&69?+5XEU;HvNgbFAo;nDj~%z;Z656IZSMG{Qs4`HKkl#23p%?4O0tx|Jz^OG z$9s$sztU6DhYD>>Vbm8spdG+eboz}q7*F+Ha5&}%Ui#FuH5oXA0C3h{H{m5DmJ6`z zohxA)@TJ&}1tn}Dcp>*7S53Z?O~u;W&7W1Z&RkEMVB<9RQlg{xBXL-KZfz^yWkU}Ghk$RIxS%)Inx9epiI>N znF!Tpxwxu)s?cO&NCaXU5Pl(_MCg$19QF2S^GAjGjJUDqk{P1tQ~j)r&p^fw0=*p# zFu^d;vj%%-jG&I00P7i8N)r;CcJh-N?fG6H5VwAnKa45it(ncBVPiT;#KT5)tb=)r zn<0lx+vVjqG&p6;Z-|kD%2j|Tt>Q86hNAF?>lK>8f=&rL%5 zAdeR58Gn*`d3}zuO1)8_MS2SCh_L8HaVEpuPSE4S6)}9*;Dn zQ4-_7LWiU`s|Q|U)W&EIswPu{Vlr!%0v4m(jZJ~LX~uGN@O;KVo}Fwem1V{*#HKnX zQSf`gr7lKK=`bT_taGbLL|X9z<+!q&l$>?+vsK=Sln6T!cjQCvfx?#+gkLkwnZTjM ziRWBJEm+`^V=CUxSdAq4(!1+sgKcc^2mTeD1sz)NEKei3GHttj>a;=>Em?f%=gpBk zJU!OoWYuxjmEjK;*M}Z$SL|6RrkZuAlaskW(X#-J2REDh^;tf)0(erUK zML0bB!rEZ!V`UibPcIz`!g5!aH_m!tI{}F4RFJ%)l4Js||H2v$=a$)uNPe?a6+pEL z=i-OL$25s! zp+PO2dccq;r}e0M5D?V&Vujn9#2Op~6yr~T;+wEUmFf5t`n?6bsxH*n$eE!gNft~# zPy;T@P=lQ-J`8)b+(Hc~?+!KX^|s_xatYse*#I>LMEyby+;Wmq@B?M8<0eQyK`kPc zvBM>ouipZ-tRV;>z5pkiL|jq{*dHd6&IxZIKE3epxPIa^M6V}N%ERL#C?+vo7vs=O zUHX&130ZQ50s z>q!z!XnY=K?AWvmblhE-P>XE{$nvKCM4@vBX7te_dDE`=2aSqV*`-Z*gHCxWMnJ*g z`rRWFIob}C=DA|mBB9Y86OYbMP-noQ*g~c?CXc8M^|F@{ukK^jjID6zVISL%iP4{7 z>J5|ZbU6B*0-pinC}sBn_roqwxK%BUBL_&$OH&8 zGEww8Ze&-5jtD-cw7#ae1w}!zA~I`(#0K&3MlD5LJc?qS0#{x$D2KNY5v7tFX3AhM zij$O=!OhB+$7rqr(_E%xX=GmKk~~zr^|2KQ@A0*jT-Fd!znN^ilnN^kDU21iAmEmR58VaUcv~eRT5HZ`YLP(7OkH#ba z+MS4*KfDpzD#Zp8vX|LKbOQq8K_0Vf@Uk}c2wOJt(lYWIhnY2o#zunQN7HU_uY5zx##ye_gor*7Qsx#|AJFO z?i!oo<->&YrqL5m06qE3r|&pcxrz^`gIvTBRG_hj1{VLu#)D1Z1#%`Qp_&nTSBvd=2D-FrlxR7fJ6LL~Z$A60)figr6MP>&bf%HzNdH2e_4 zMaS3|6ty4%k;fB&oF0*rVM*ySdo>o0_mV?2QkKC-oO`--Dx|T|h>KY}!N&lT+?W6u zI(7xH$n<8|fL3}ZsNiCUHk&Ry2( zr`+i!EIsDeN72aiy7f_?Xt{N0Q710=fk;|y4uz7WrB{j&i_KZTnyGB5ZZ&onK3*(e%@nv62(hLm$GD9f^5gpr9gUSw*y1<;?qONBGG|15w2*Y z9jpF7xQ-bB>$+SP@wuZViLg+L3T+*WvaM@AW)H5w_Y+T0OZ z3XN{ziv&w2v=l%q`N0lLC4qKSp`Cq6^kE}{_JC9ytD%JvZPrgC> z{I?y3Gu5~QaDboEVKFYf zji^NAoiYTK@Z~Yd2pg)>+dGRbhQ+PE6*G<0yq1pB?gj3QgTj0XRtthwtk!XD)DDbw z?!jqOP?#^lY25(#7#T=a{u#p_Gg@cgq(qCNGu=Jbhyu%X+58I2^hyb~X_-l+#ihvX zlt}wEC(<%Y>@Ot_b1~Mm%PUk5*UHGysrMMd32A6^3txmZ74XC4tf78|kcCdcl>_z= z19_G}TD9Dn$IQtYr@Wi0@dA!JiedhEH-R+sEoqMo(|c>3)dL#y!eYq>Br~*+&mZ9> z9y#PvkNoXQvZG;@=^G4EInN$>DCJcxCBZ^?-U~c`yNzXfr3_)U>gAc&i(Lt$DW}O@ z1eR9w6`MijoI!=3{2R_=%r+zEQfFDQDtA zD%3}4_P$^oceni_cMdDnFcc@_4bo4=zUNgzMa0uY!KdNeuyobNjD97e>rn>=R-+aM z(!D|(^4g@qKP`rfQxxTo-Y3>Ioggcin#AzMB!3isjOGN>2-C7Sy2j(Cw0eSP zD@tQ|t|3K88irnv8eOl?UC5cV{1yOVH`H)UWdq_hwF8HE7%FmkSJnTHUf(7Qc!EDj zuixIQkf~oF6SOQm5xu@GA-G4{z-AAnE@BU~tcI{`2f)rbY1f%S6x=R1gP>< z08%!zF2}P}Biv7&j)(sV7aiR4eOz^J%gyoJOf za(m@EVeY0%nWW5k_FFe&bg>K07;zjkPP-^)w@)|D-I-WV^%>Je;MeOpeYzKztPB{8 z59EfX`;|=g5ai3&8Ea(D*}=wA8DKSWm?*9(UF|9Y zZps`bqWjLM;KxV!kaj#3Xym*VyNW&IacARGT|JXHI899tkII9rYDH zoU>?WmX+}1)Gyv5`9Y&w_#(}CE|@dNJ&8H{h!UOF<;|V+0DbD4Hq%XvMk{4pf z>B4wWP~2?VajNk*2IU>6j6uU{4yxL5>OsYh(|S-qLW45@s|V#Br`rYvh;&|8K5a;l z#B(~Na8!a@^8}Da$kSuE?&h}`q73eA@TiIf9lCxPGL;5kZjw0fZ}AgoSuGhpj=K>l(s5nM84y9m-Bn|9)}N!mbXVsJvq$i!Rc10bu3=@` z6%s|KTFJM?J(R~nk0yII6Vee%)V zZ3MvN(hAQ$rj?GkuuDt)eFYm1#yR#Q)hW77KazAfyp);JTje2;7omz3BF7kU8mULY zVCqmHPevSu5Avx2lv4X2fIvL9q6toUtO_2IvLYGis9_qg`e@UKdmu_y`OH|}aQ+x* zI{<>Ft+W(Z+)>7`g z+uqoZ9vE`mK^-;g=NRU|0Ny>!7v@r)5PlHJO+~vx2W_?hcFF4k7|`vB__iJws$c52hJh22 zx5#B2r6D*SoW4bIQHDD!&%WdAUBt=wi(bT;ArZmg9aQR;%~obZkdcwWEzZDJ_y|x4 zwowg>yO^jTP!)6&jd|g*m%-+7_)Y#B|I{qwotIS^?AVh2LW@h;)Dn>{yLoVrtYSvz$(GWgD7X?uNIW-#8Vi*ev$mfWmew#iwG3drlL+O!wl zshf`BE!?o$sSCKM3=A7-oS{U8ZRzMLN~6?fF)EeVmRS`DB-Bx1Exd2XvlF;zw+Ct= zyI6W9vd^>ybEF0fI`3t7917W^qtzY9Vr}$8(bKXoSa+3RRFh)Ciz{UTB$0#I&SGn# z{sq?wSDAoNE5fO*sI3!6=+Pt7HBQmMYqK?K>l6*@av*Vqj7l*N=XvFry&yuS>an0m-c2(-Bd7RqBcG6 z17W;*5`|3BXRy{@{Hs6?vN&Fp!(sIk9ImQR5B1&!>d*ClX*L`(WGb@1!obx&7Iv|n zx2ek8?Yv~A^TEHJ*E#YOa25ibbjb`!2*>%$Uycol$1?;a`fB+;I)JyaXz``I`)o^J zS5{pQNFO;qx;)#pax1Cp05xvUYFm(y85uQGzJgLRprExq2I6D17**MKypBGI*71@x zXqGSMGxZ2=z9{qlaz3qRC$7p)#J%;av-S8?T%8s1>5#TP`-#ET8Cha_wtICJQ3u{A zBsYqeCpjie^~De#Ql!`*^6_tc{LF0(^6dH6ZN>cUw<`#PM+D@gg%0}SyMkuS7YB_6 zkRA*m_%U*V2`$Rp?9ta1?-U6Zx( zima75V7IMC-dqib-#J6ES`DVij%|gHTsML<|H?Pqh6)5@h{3DGC}MS(^Pj@V^xh{+ z4Ur?p0yjlrc%&=AtB3qMm9P9eT~Gdwg2T*u!b8`=(9HeBvB4k1?T(>1gZ47Xc!{V2 z=;()&^7?I_Xnb!JP)%rwgeZqulz70+iX0w(Nt0mP;b;Hn5 zR2O@W>7eqaw<|H;K`BL}U@)&Rtku!R866SC&GMh(f)v6Nx1kzmo}W^iQ=De!b{S9CQE{+y%Ool3W_D^PSFY_{3`LKU7RBB~&PSvRd2%?IQz8>U>u6Hv9+(JDLnyYWFu`FX=8f&n8S7wh z2^PBzQr(VFdBM(MnEk%$(m& zmK>vSnuhAcmI!#heH4T2wH(Z%&*%C4YBkcPDl_Tvs`aEyxY8D?Fz+^^>l&dyIiQt~ zr;8P7naVi4UkT$djLr1LLh&j^M?!BU=C$`*uEiaz6n z8pT^p4sfW&28X(ck#tEMYNwF|hgzP>p%!H%Ef&kujHD)qg1-hiEQ|qLb0}fyvnPiM z4#oQrwUqROLqQCvXXrY?`SGH&T}~pRqq-b#Kq=C-O$-QY7Q#SE{5R=l(Y*PmC{AuV zxQ!YwYRIY})s>MF^r8#tQsP$DT7uq+d1YO6dLLdiZhC);j5kn1Xf&EHAI>Cnh|@u< zoH-W=hhPnS8wC}Mn5|pXhzEz2J;fR2>cJKYN+6t8%u_I}St+^qLO0jKVQ|ULPK9PJ z#lU9H+gPdiK|{Lj#GTGFu~a%^-X_H)aHsR140oEgH7m#)t;VXwk!EG zu(vf%&iy-}j?F)z>vo4l1E^R^O`yu<4!+_o7l!)uV1U`aB<|L32z!z5q_Ed`{xf3e zCAol59w%*SJuP51n5hk0<0rybpj6S4Ncp#;{g^xx{&d2URp2cwa`ow`G#*+#Qz8K8snt1 z|4;Ep2Q(3kv2Uxo5lU5`h!si@T3yCCk$wa==!I=hz6h_^kYL zDy_gr{GAYyd24d3p)vzrg%SSq|;eaw15a%dzqUPGQ`Vtif)6CvU=ks1krR)`A_ z{KKIZUelTSmlSIr&NJ(%wM1-DnyNyE^d@DLV6(%6b+B2F%a>Bk6^yB84O^O=br!o} zX3(*<8>S9AMxWc_*Z}2%T?Zu78zLZ0$a8BrugQXC*^Rsatn*wW7%7Y@Y&9|+9eW=t zI=La6!+ph~Oj4dR02aue2XM5rYHhR`LyuH+{nN{pYa*Q-5D@SkE*n$Y&*b#f3tK4{hjBQA^{$fiWKcAU*)wmRoaDtkd#$>1(7Tr7IQvRDaRh>jWzU5aaH+t_rY!->#FkC40^Xr z;ACM7qrHz$zapIl#;X-Xfvcvdkl?2bcl54oiy1+o8AA z`=9E_XI^mv(7~rNw1oC@DV{y6U9K)^n1Q^oy{!BxM?}@HQcy6(y)^LTgGyEkXgpgI(9h54jSE?J?td>bweA$e+)1DuB$u>no3MT=rC zhJm;euqoOmLRyo`K_iF{hUI>F^JnGEO^h5408adS~|!?H@Of)g$S4)&RAACW{2jeiQsQgNip5i{A1E? zpCeeLfX(&(wrwcorvemsbZOdAQ%8Vkhsno6RLI)w(&p5(E&zXvF5Iv60mvS@AWg6(xEr%~zTW;@6@NCaNkVFJrA&Cy%1v_{^0!1m&8hQnLo9^M? z_XCD5?>a{9%g50SB-_3GZ~OCBe(+2#m-|!gM%M5GWAldJuy0f>^CwzmL3N&=VDU

    VotPuF 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

    CMt(>ha*dU(HT%9}CeWfuWe!X6mz)0mU3 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≷&q5JjjreQy+=n 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�IuM)DOTB=`a1NH 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� z&)|>S-DRIHW*;y+E1AQsh85H2ZEEPA93|4J*c=5)q|c%0Au#$80W16Dy4Qmh9^afJ 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

    Tq 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

    unJ9$pV5tbp`}UwR}Jbk`&l0{P5y_y)bDorVV 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 z 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�KlclDf8Hpl?Q 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

    &!{r3_o-tv^l>bugbGu?*XqJI#YCudzy7i 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

    >FK-7d4?VMY%>TC|nlIJ{RU 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 z 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 V6|BDvHr@f7?}DvsVEa1Q`Ty98t<3-c diff --git a/deps/perfetto/traceconv_bundle.js b/deps/perfetto/traceconv_bundle.js deleted file mode 100644 index 9486d8a8..00000000 --- a/deps/perfetto/traceconv_bundle.js +++ /dev/null @@ -1,7122 +0,0 @@ -var traceconv = (function () { -'use strict'; - -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function createCommonjsModule(fn, basedir, module) { - return module = { - path: basedir, - exports: {}, - require: function (path, base) { - return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); - } - }, fn(module, module.exports), module.exports; -} - -function commonjsRequire () { - throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); -} - -var tslib = createCommonjsModule(function (module) { -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -/* global global, define, System, Reflect, Promise */ -var __extends; -var __assign; -var __rest; -var __decorate; -var __param; -var __metadata; -var __awaiter; -var __generator; -var __exportStar; -var __values; -var __read; -var __spread; -var __spreadArrays; -var __spreadArray; -var __await; -var __asyncGenerator; -var __asyncDelegator; -var __asyncValues; -var __makeTemplateObject; -var __importStar; -var __importDefault; -var __classPrivateFieldGet; -var __classPrivateFieldSet; -var __createBinding; -(function (factory) { - var root = typeof commonjsGlobal === "object" ? commonjsGlobal : typeof self === "object" ? self : typeof this === "object" ? this : {}; - { - factory(createExporter(root, createExporter(module.exports))); - } - function createExporter(exports, previous) { - if (exports !== root) { - if (typeof Object.create === "function") { - Object.defineProperty(exports, "__esModule", { value: true }); - } - else { - exports.__esModule = true; - } - } - return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; - } -}) -(function (exporter) { - var extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - - __extends = function (d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - - __assign = Object.assign || function (t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - }; - - __rest = function (s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { - if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - t[p[i]] = s[p[i]]; - } - return t; - }; - - __decorate = function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; - }; - - __param = function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } - }; - - __metadata = function (metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); - }; - - __awaiter = function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); - }; - - __generator = function (thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } - }; - - __exportStar = function(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); - }; - - __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); - }) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; - }); - - __values = function (o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); - }; - - __read = function (o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; - }; - - /** @deprecated */ - __spread = function () { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; - }; - - /** @deprecated */ - __spreadArrays = function () { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; - }; - - __spreadArray = function (to, from) { - for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) - to[j] = from[i]; - return to; - }; - - __await = function (v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); - }; - - __asyncGenerator = function (thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } - }; - - __asyncDelegator = function (o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } - }; - - __asyncValues = function (o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } - }; - - __makeTemplateObject = function (cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; - }; - - var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - }) : function(o, v) { - o["default"] = v; - }; - - __importStar = function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; - }; - - __importDefault = function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; - }; - - __classPrivateFieldGet = function (receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); - }; - - __classPrivateFieldSet = function (receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; - }; - - exporter("__extends", __extends); - exporter("__assign", __assign); - exporter("__rest", __rest); - exporter("__decorate", __decorate); - exporter("__param", __param); - exporter("__metadata", __metadata); - exporter("__awaiter", __awaiter); - exporter("__generator", __generator); - exporter("__exportStar", __exportStar); - exporter("__createBinding", __createBinding); - exporter("__values", __values); - exporter("__read", __read); - exporter("__spread", __spread); - exporter("__spreadArrays", __spreadArrays); - exporter("__spreadArray", __spreadArray); - exporter("__await", __await); - exporter("__asyncGenerator", __asyncGenerator); - exporter("__asyncDelegator", __asyncDelegator); - exporter("__asyncValues", __asyncValues); - exporter("__makeTemplateObject", __makeTemplateObject); - exporter("__importStar", __importStar); - exporter("__importDefault", __importDefault); - exporter("__classPrivateFieldGet", __classPrivateFieldGet); - exporter("__classPrivateFieldSet", __classPrivateFieldSet); -}); -}); - -var deferred = createCommonjsModule(function (module, exports) { -// Copyright (C) 2018 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.defer = void 0; -/** - * Create a promise with exposed resolve and reject callbacks. - */ -function defer() { - let resolve = null; - let reject = null; - const p = new Promise((res, rej) => [resolve, reject] = [res, rej]); - return Object.assign(p, { resolve, reject }); -} -exports.defer = defer; - -}); - -var perfetto_version = createCommonjsModule(function (module, exports) { -Object.defineProperty(exports, "__esModule", { value: true }); -exports.SCM_REVISION = exports.VERSION = void 0; -exports.VERSION = "v23.0-d7b55ea62"; -exports.SCM_REVISION = "d7b55ea623d1106cb4e1961a4180caf1280ec6ab"; - -}); - -var logging = createCommonjsModule(function (module, exports) { -// Copyright (C) 2018 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.reportError = exports.setErrorHandler = exports.assertFalse = exports.assertTrue = exports.assertExists = void 0; - -let errorHandler = (_) => { }; -function assertExists(value) { - if (value === null || value === undefined) { - throw new Error('Value doesn\'t exist'); - } - return value; -} -exports.assertExists = assertExists; -function assertTrue(value, optMsg) { - if (value !== true) { - throw new Error(optMsg ? optMsg : 'Failed assertion'); - } -} -exports.assertTrue = assertTrue; -function assertFalse(value, optMsg) { - assertTrue(!value, optMsg); -} -exports.assertFalse = assertFalse; -function setErrorHandler(handler) { - errorHandler = handler; -} -exports.setErrorHandler = setErrorHandler; -function reportError(err) { - let errLog = ''; - let errorObj = undefined; - if (err instanceof ErrorEvent) { - errLog = err.message; - errorObj = err.error; - } - else if (err instanceof PromiseRejectionEvent) { - errLog = `${err.reason}`; - errorObj = err.reason; - } - else { - errLog = `${err}`; - } - if (errorObj !== undefined && errorObj !== null) { - const errStack = errorObj.stack; - errLog += '\n'; - errLog += errStack !== undefined ? errStack : JSON.stringify(errorObj); - } - errLog += '\n\n'; - errLog += `${perfetto_version.VERSION} ${perfetto_version.SCM_REVISION}\n`; - errLog += `UA: ${navigator.userAgent}\n`; - console.error(errLog, err); - errorHandler(errLog); -} -exports.reportError = reportError; - -}); - -var conversion_jobs = createCommonjsModule(function (module, exports) { -// Copyright (C) 2021 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ConversionJobStatus = void 0; -(function (ConversionJobStatus) { - ConversionJobStatus["InProgress"] = "InProgress"; - ConversionJobStatus["NotRunning"] = "NotRunning"; -})(exports.ConversionJobStatus || (exports.ConversionJobStatus = {})); - -}); - -var trace_to_text = createCommonjsModule(function (module, exports) { -var trace_to_text_wasm = (function() { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(trace_to_text_wasm) { - trace_to_text_wasm = trace_to_text_wasm || {}; - -var Module = typeof trace_to_text_wasm !== "undefined" ? trace_to_text_wasm : {}; - -var readyPromiseResolve, readyPromiseReject; - -Module["ready"] = new Promise(function(resolve, reject) { - readyPromiseResolve = resolve; - readyPromiseReject = reject; -}); - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_main")) { - Object.defineProperty(Module["ready"], "_main", { - configurable: true, - get: function() { - abort("You are getting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_main", { - configurable: true, - set: function() { - abort("You are setting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_emscripten_stack_get_end")) { - Object.defineProperty(Module["ready"], "_emscripten_stack_get_end", { - configurable: true, - get: function() { - abort("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_emscripten_stack_get_end", { - configurable: true, - set: function() { - abort("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_emscripten_stack_get_free")) { - Object.defineProperty(Module["ready"], "_emscripten_stack_get_free", { - configurable: true, - get: function() { - abort("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_emscripten_stack_get_free", { - configurable: true, - set: function() { - abort("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_emscripten_stack_init")) { - Object.defineProperty(Module["ready"], "_emscripten_stack_init", { - configurable: true, - get: function() { - abort("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_emscripten_stack_init", { - configurable: true, - set: function() { - abort("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_stackSave")) { - Object.defineProperty(Module["ready"], "_stackSave", { - configurable: true, - get: function() { - abort("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_stackSave", { - configurable: true, - set: function() { - abort("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_stackRestore")) { - Object.defineProperty(Module["ready"], "_stackRestore", { - configurable: true, - get: function() { - abort("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_stackRestore", { - configurable: true, - set: function() { - abort("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_stackAlloc")) { - Object.defineProperty(Module["ready"], "_stackAlloc", { - configurable: true, - get: function() { - abort("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_stackAlloc", { - configurable: true, - set: function() { - abort("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "___wasm_call_ctors")) { - Object.defineProperty(Module["ready"], "___wasm_call_ctors", { - configurable: true, - get: function() { - abort("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "___wasm_call_ctors", { - configurable: true, - set: function() { - abort("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_fflush")) { - Object.defineProperty(Module["ready"], "_fflush", { - configurable: true, - get: function() { - abort("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_fflush", { - configurable: true, - set: function() { - abort("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "___errno_location")) { - Object.defineProperty(Module["ready"], "___errno_location", { - configurable: true, - get: function() { - abort("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "___errno_location", { - configurable: true, - set: function() { - abort("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_malloc")) { - Object.defineProperty(Module["ready"], "_malloc", { - configurable: true, - get: function() { - abort("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_malloc", { - configurable: true, - set: function() { - abort("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_free")) { - Object.defineProperty(Module["ready"], "_free", { - configurable: true, - get: function() { - abort("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_free", { - configurable: true, - set: function() { - abort("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_memalign")) { - Object.defineProperty(Module["ready"], "_memalign", { - configurable: true, - get: function() { - abort("You are getting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_memalign", { - configurable: true, - set: function() { - abort("You are setting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_memset")) { - Object.defineProperty(Module["ready"], "_memset", { - configurable: true, - get: function() { - abort("You are getting _memset on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_memset", { - configurable: true, - set: function() { - abort("You are setting _memset on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "__get_tzname")) { - Object.defineProperty(Module["ready"], "__get_tzname", { - configurable: true, - get: function() { - abort("You are getting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "__get_tzname", { - configurable: true, - set: function() { - abort("You are setting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "__get_daylight")) { - Object.defineProperty(Module["ready"], "__get_daylight", { - configurable: true, - get: function() { - abort("You are getting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "__get_daylight", { - configurable: true, - set: function() { - abort("You are setting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "__get_timezone")) { - Object.defineProperty(Module["ready"], "__get_timezone", { - configurable: true, - get: function() { - abort("You are getting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "__get_timezone", { - configurable: true, - set: function() { - abort("You are setting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_emscripten_main_thread_process_queued_calls")) { - Object.defineProperty(Module["ready"], "_emscripten_main_thread_process_queued_calls", { - configurable: true, - get: function() { - abort("You are getting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_emscripten_main_thread_process_queued_calls", { - configurable: true, - set: function() { - abort("You are setting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "_usleep")) { - Object.defineProperty(Module["ready"], "_usleep", { - configurable: true, - get: function() { - abort("You are getting _usleep on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "_usleep", { - configurable: true, - set: function() { - abort("You are setting _usleep on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -if (!Object.getOwnPropertyDescriptor(Module["ready"], "onRuntimeInitialized")) { - Object.defineProperty(Module["ready"], "onRuntimeInitialized", { - configurable: true, - get: function() { - abort("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); - Object.defineProperty(Module["ready"], "onRuntimeInitialized", { - configurable: true, - set: function() { - abort("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"); - } - }); -} - -var moduleOverrides = {}; - -var key; - -for (key in Module) { - if (Module.hasOwnProperty(key)) { - moduleOverrides[key] = Module[key]; - } -} - -var arguments_ = []; - -var thisProgram = "./this.program"; - -var quit_ = function(status, toThrow) { - throw toThrow; -}; - -var ENVIRONMENT_IS_WEB = false; - -var ENVIRONMENT_IS_WORKER = false; - -var ENVIRONMENT_IS_NODE = false; - -var ENVIRONMENT_IS_SHELL = false; - -ENVIRONMENT_IS_WEB = typeof window === "object"; - -ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; - -ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; - -ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; - -if (Module["ENVIRONMENT"]) { - throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)"); -} - -var scriptDirectory = ""; - -function locateFile(path) { - if (Module["locateFile"]) { - return Module["locateFile"](path, scriptDirectory); - } - return scriptDirectory + path; -} - -var read_, readBinary; - -var nodeFS; - -var nodePath; - -if (ENVIRONMENT_IS_NODE) { - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = require("path").dirname(scriptDirectory) + "/"; - } else { - scriptDirectory = __dirname + "/"; - } - read_ = function shell_read(filename, binary) { - if (!nodeFS) nodeFS = require("fs"); - if (!nodePath) nodePath = require("path"); - filename = nodePath["normalize"](filename); - return nodeFS["readFileSync"](filename, binary ? null : "utf8"); - }; - readBinary = function readBinary(filename) { - var ret = read_(filename, true); - if (!ret.buffer) { - ret = new Uint8Array(ret); - } - assert(ret.buffer); - return ret; - }; - if (process["argv"].length > 1) { - thisProgram = process["argv"][1].replace(/\\/g, "/"); - } - arguments_ = process["argv"].slice(2); - process["on"]("uncaughtException", function(ex) { - if (!(ex instanceof ExitStatus)) { - throw ex; - } - }); - process["on"]("unhandledRejection", abort); - quit_ = function(status) { - process["exit"](status); - }; - Module["inspect"] = function() { - return "[Emscripten Module object]"; - }; -} else if (ENVIRONMENT_IS_SHELL) { - if (typeof read != "undefined") { - read_ = function shell_read(f) { - return read(f); - }; - } - readBinary = function readBinary(f) { - var data; - if (typeof readbuffer === "function") { - return new Uint8Array(readbuffer(f)); - } - data = read(f, "binary"); - assert(typeof data === "object"); - return data; - }; - if (typeof scriptArgs != "undefined") { - arguments_ = scriptArgs; - } else if (typeof arguments != "undefined") { - arguments_ = arguments; - } - if (typeof quit === "function") { - quit_ = function(status) { - quit(status); - }; - } - if (typeof print !== "undefined") { - if (typeof console === "undefined") console = {}; - console.log = print; - console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; - } -} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { - if (ENVIRONMENT_IS_WORKER) { - scriptDirectory = self.location.href; - } else if (typeof document !== "undefined" && document.currentScript) { - scriptDirectory = document.currentScript.src; - } - if (_scriptDir) { - scriptDirectory = _scriptDir; - } - if (scriptDirectory.indexOf("blob:") !== 0) { - scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); - } else { - scriptDirectory = ""; - } - { - read_ = function(url) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, false); - xhr.send(null); - return xhr.responseText; - }; - if (ENVIRONMENT_IS_WORKER) { - readBinary = function(url) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, false); - xhr.responseType = "arraybuffer"; - xhr.send(null); - return new Uint8Array(xhr.response); - }; - } - } -} else { - throw new Error("environment detection error"); -} - -var out = Module["print"] || console.log.bind(console); - -var err = Module["printErr"] || console.warn.bind(console); - -for (key in moduleOverrides) { - if (moduleOverrides.hasOwnProperty(key)) { - Module[key] = moduleOverrides[key]; - } -} - -moduleOverrides = null; - -if (Module["arguments"]) arguments_ = Module["arguments"]; - -if (!Object.getOwnPropertyDescriptor(Module, "arguments")) Object.defineProperty(Module, "arguments", { - configurable: true, - get: function() { - abort("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; - -if (!Object.getOwnPropertyDescriptor(Module, "thisProgram")) Object.defineProperty(Module, "thisProgram", { - configurable: true, - get: function() { - abort("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -if (Module["quit"]) quit_ = Module["quit"]; - -if (!Object.getOwnPropertyDescriptor(Module, "quit")) Object.defineProperty(Module, "quit", { - configurable: true, - get: function() { - abort("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -assert(typeof Module["memoryInitializerPrefixURL"] === "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["pthreadMainPrefixURL"] === "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["cdInitializerPrefixURL"] === "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["filePackagePrefixURL"] === "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"); - -assert(typeof Module["read"] === "undefined", "Module.read option was removed (modify read_ in JS)"); - -assert(typeof Module["readAsync"] === "undefined", "Module.readAsync option was removed (modify readAsync in JS)"); - -assert(typeof Module["readBinary"] === "undefined", "Module.readBinary option was removed (modify readBinary in JS)"); - -assert(typeof Module["setWindowTitle"] === "undefined", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"); - -assert(typeof Module["TOTAL_MEMORY"] === "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"); - -if (!Object.getOwnPropertyDescriptor(Module, "read")) Object.defineProperty(Module, "read", { - configurable: true, - get: function() { - abort("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -if (!Object.getOwnPropertyDescriptor(Module, "readAsync")) Object.defineProperty(Module, "readAsync", { - configurable: true, - get: function() { - abort("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -if (!Object.getOwnPropertyDescriptor(Module, "readBinary")) Object.defineProperty(Module, "readBinary", { - configurable: true, - get: function() { - abort("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -if (!Object.getOwnPropertyDescriptor(Module, "setWindowTitle")) Object.defineProperty(Module, "setWindowTitle", { - configurable: true, - get: function() { - abort("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -var STACK_ALIGN = 16; - -function alignMemory(size, factor) { - if (!factor) factor = STACK_ALIGN; - return Math.ceil(size / factor) * factor; -} - -function warnOnce(text) { - if (!warnOnce.shown) warnOnce.shown = {}; - if (!warnOnce.shown[text]) { - warnOnce.shown[text] = 1; - err(text); - } -} - -function convertJsFunctionToWasm(func, sig) { - if (typeof WebAssembly.Function === "function") { - var typeNames = { - "i": "i32", - "j": "i64", - "f": "f32", - "d": "f64" - }; - var type = { - parameters: [], - results: sig[0] == "v" ? [] : [ typeNames[sig[0]] ] - }; - for (var i = 1; i < sig.length; ++i) { - type.parameters.push(typeNames[sig[i]]); - } - return new WebAssembly.Function(type, func); - } - var typeSection = [ 1, 0, 1, 96 ]; - var sigRet = sig.slice(0, 1); - var sigParam = sig.slice(1); - var typeCodes = { - "i": 127, - "j": 126, - "f": 125, - "d": 124 - }; - typeSection.push(sigParam.length); - for (var i = 0; i < sigParam.length; ++i) { - typeSection.push(typeCodes[sigParam[i]]); - } - if (sigRet == "v") { - typeSection.push(0); - } else { - typeSection = typeSection.concat([ 1, typeCodes[sigRet] ]); - } - typeSection[1] = typeSection.length - 2; - var bytes = new Uint8Array([ 0, 97, 115, 109, 1, 0, 0, 0 ].concat(typeSection, [ 2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0 ])); - var module = new WebAssembly.Module(bytes); - var instance = new WebAssembly.Instance(module, { - "e": { - "f": func - } - }); - var wrappedFunc = instance.exports["f"]; - return wrappedFunc; -} - -var freeTableIndexes = []; - -var functionsInTableMap; - -function getEmptyTableSlot() { - if (freeTableIndexes.length) { - return freeTableIndexes.pop(); - } - try { - wasmTable.grow(1); - } catch (err) { - if (!(err instanceof RangeError)) { - throw err; - } - throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."; - } - return wasmTable.length - 1; -} - -function addFunctionWasm(func, sig) { - if (!functionsInTableMap) { - functionsInTableMap = new WeakMap(); - for (var i = 0; i < wasmTable.length; i++) { - var item = wasmTable.get(i); - if (item) { - functionsInTableMap.set(item, i); - } - } - } - if (functionsInTableMap.has(func)) { - return functionsInTableMap.get(func); - } - var ret = getEmptyTableSlot(); - try { - wasmTable.set(ret, func); - } catch (err) { - if (!(err instanceof TypeError)) { - throw err; - } - assert(typeof sig !== "undefined", "Missing signature argument to addFunction: " + func); - var wrapped = convertJsFunctionToWasm(func, sig); - wasmTable.set(ret, wrapped); - } - functionsInTableMap.set(func, ret); - return ret; -} - -function addFunction(func, sig) { - assert(typeof func !== "undefined"); - return addFunctionWasm(func, sig); -} - -var wasmBinary; - -if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; - -if (!Object.getOwnPropertyDescriptor(Module, "wasmBinary")) Object.defineProperty(Module, "wasmBinary", { - configurable: true, - get: function() { - abort("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -var noExitRuntime; - -if (Module["noExitRuntime"]) noExitRuntime = Module["noExitRuntime"]; - -if (!Object.getOwnPropertyDescriptor(Module, "noExitRuntime")) Object.defineProperty(Module, "noExitRuntime", { - configurable: true, - get: function() { - abort("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -if (typeof WebAssembly !== "object") { - abort("no native wasm support detected"); -} - -var wasmMemory; - -var ABORT = false; - -function assert(condition, text) { - if (!condition) { - abort("Assertion failed: " + text); - } -} - -function getCFunc(ident) { - var func = Module["_" + ident]; - assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); - return func; -} - -function ccall(ident, returnType, argTypes, args, opts) { - var toC = { - "string": function(str) { - var ret = 0; - if (str !== null && str !== undefined && str !== 0) { - var len = (str.length << 2) + 1; - ret = stackAlloc(len); - stringToUTF8(str, ret, len); - } - return ret; - }, - "array": function(arr) { - var ret = stackAlloc(arr.length); - writeArrayToMemory(arr, ret); - return ret; - } - }; - function convertReturnValue(ret) { - if (returnType === "string") return UTF8ToString(ret); - if (returnType === "boolean") return Boolean(ret); - return ret; - } - var func = getCFunc(ident); - var cArgs = []; - var stack = 0; - assert(returnType !== "array", 'Return type should not be "array".'); - if (args) { - for (var i = 0; i < args.length; i++) { - var converter = toC[argTypes[i]]; - if (converter) { - if (stack === 0) stack = stackSave(); - cArgs[i] = converter(args[i]); - } else { - cArgs[i] = args[i]; - } - } - } - var ret = func.apply(null, cArgs); - ret = convertReturnValue(ret); - if (stack !== 0) stackRestore(stack); - return ret; -} - -var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined; - -function UTF8ArrayToString(heap, idx, maxBytesToRead) { - var endIdx = idx + maxBytesToRead; - var endPtr = idx; - while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; - if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { - return UTF8Decoder.decode(heap.subarray(idx, endPtr)); - } else { - var str = ""; - while (idx < endPtr) { - var u0 = heap[idx++]; - if (!(u0 & 128)) { - str += String.fromCharCode(u0); - continue; - } - var u1 = heap[idx++] & 63; - if ((u0 & 224) == 192) { - str += String.fromCharCode((u0 & 31) << 6 | u1); - continue; - } - var u2 = heap[idx++] & 63; - if ((u0 & 240) == 224) { - u0 = (u0 & 15) << 12 | u1 << 6 | u2; - } else { - if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte 0x" + u0.toString(16) + " encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"); - u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; - } - if (u0 < 65536) { - str += String.fromCharCode(u0); - } else { - var ch = u0 - 65536; - str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); - } - } - } - return str; -} - -function UTF8ToString(ptr, maxBytesToRead) { - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; -} - -function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { - if (!(maxBytesToWrite > 0)) return 0; - var startIdx = outIdx; - var endIdx = outIdx + maxBytesToWrite - 1; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 55296 && u <= 57343) { - var u1 = str.charCodeAt(++i); - u = 65536 + ((u & 1023) << 10) | u1 & 1023; - } - if (u <= 127) { - if (outIdx >= endIdx) break; - heap[outIdx++] = u; - } else if (u <= 2047) { - if (outIdx + 1 >= endIdx) break; - heap[outIdx++] = 192 | u >> 6; - heap[outIdx++] = 128 | u & 63; - } else if (u <= 65535) { - if (outIdx + 2 >= endIdx) break; - heap[outIdx++] = 224 | u >> 12; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } else { - if (outIdx + 3 >= endIdx) break; - if (u >= 2097152) warnOnce("Invalid Unicode code point 0x" + u.toString(16) + " encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."); - heap[outIdx++] = 240 | u >> 18; - heap[outIdx++] = 128 | u >> 12 & 63; - heap[outIdx++] = 128 | u >> 6 & 63; - heap[outIdx++] = 128 | u & 63; - } - } - heap[outIdx] = 0; - return outIdx - startIdx; -} - -function stringToUTF8(str, outPtr, maxBytesToWrite) { - assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); -} - -function lengthBytesUTF8(str) { - var len = 0; - for (var i = 0; i < str.length; ++i) { - var u = str.charCodeAt(i); - if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; - if (u <= 127) ++len; else if (u <= 2047) len += 2; else if (u <= 65535) len += 3; else len += 4; - } - return len; -} - -typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined; - -function allocateUTF8(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = _malloc(size); - if (ret) stringToUTF8Array(str, HEAP8, ret, size); - return ret; -} - -function allocateUTF8OnStack(str) { - var size = lengthBytesUTF8(str) + 1; - var ret = stackAlloc(size); - stringToUTF8Array(str, HEAP8, ret, size); - return ret; -} - -function writeArrayToMemory(array, buffer) { - assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)"); - HEAP8.set(array, buffer); -} - -function writeAsciiToMemory(str, buffer, dontAddNull) { - for (var i = 0; i < str.length; ++i) { - assert(str.charCodeAt(i) === str.charCodeAt(i) & 255); - HEAP8[buffer++ >> 0] = str.charCodeAt(i); - } - if (!dontAddNull) HEAP8[buffer >> 0] = 0; -} - -function alignUp(x, multiple) { - if (x % multiple > 0) { - x += multiple - x % multiple; - } - return x; -} - -var buffer, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPU32; - -function updateGlobalBufferAndViews(buf) { - buffer = buf; - Module["HEAP8"] = HEAP8 = new Int8Array(buf); - Module["HEAP16"] = HEAP16 = new Int16Array(buf); - Module["HEAP32"] = HEAP32 = new Int32Array(buf); - Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); - Module["HEAPU16"] = new Uint16Array(buf); - Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); - Module["HEAPF32"] = new Float32Array(buf); - Module["HEAPF64"] = new Float64Array(buf); -} - -var TOTAL_STACK = 5242880; - -if (Module["TOTAL_STACK"]) assert(TOTAL_STACK === Module["TOTAL_STACK"], "the stack size can no longer be determined at runtime"); - -var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 33554432; - -if (!Object.getOwnPropertyDescriptor(Module, "INITIAL_MEMORY")) Object.defineProperty(Module, "INITIAL_MEMORY", { - configurable: true, - get: function() { - abort("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); - } -}); - -assert(INITIAL_MEMORY >= TOTAL_STACK, "INITIAL_MEMORY should be larger than TOTAL_STACK, was " + INITIAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")"); - -assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, "JS engine does not provide full typed array support"); - -assert(!Module["wasmMemory"], "Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"); - -assert(INITIAL_MEMORY == 33554432, "Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically"); - -var wasmTable; - -function writeStackCookie() { - var max = _emscripten_stack_get_end(); - assert((max & 3) == 0); - HEAPU32[(max >> 2) + 1] = 34821223; - HEAPU32[(max >> 2) + 2] = 2310721022; - HEAP32[0] = 1668509029; -} - -function checkStackCookie() { - if (ABORT) return; - var max = _emscripten_stack_get_end(); - var cookie1 = HEAPU32[(max >> 2) + 1]; - var cookie2 = HEAPU32[(max >> 2) + 2]; - if (cookie1 != 34821223 || cookie2 != 2310721022) { - abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x" + cookie2.toString(16) + " " + cookie1.toString(16)); - } - if (HEAP32[0] !== 1668509029) abort("Runtime error: The application has corrupted its heap memory area (address zero)!"); -} - -(function() { - var h16 = new Int16Array(1); - var h8 = new Int8Array(h16.buffer); - h16[0] = 25459; - if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian!"; -})(); - -var __ATPRERUN__ = []; - -var __ATINIT__ = []; - -var __ATMAIN__ = []; - -var __ATPOSTRUN__ = []; - -var runtimeInitialized = false; - -var runtimeExited = false; - -__ATINIT__.push({ - func: function() { - ___wasm_call_ctors(); - } -}); - -function preRun() { - if (Module["preRun"]) { - if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; - while (Module["preRun"].length) { - addOnPreRun(Module["preRun"].shift()); - } - } - callRuntimeCallbacks(__ATPRERUN__); -} - -function initRuntime() { - checkStackCookie(); - assert(!runtimeInitialized); - runtimeInitialized = true; - if (!Module["noFSInit"] && !FS.init.initialized) FS.init(); - TTY.init(); - callRuntimeCallbacks(__ATINIT__); -} - -function preMain() { - checkStackCookie(); - FS.ignorePermissions = false; - callRuntimeCallbacks(__ATMAIN__); -} - -function exitRuntime() { - checkStackCookie(); - runtimeExited = true; -} - -function postRun() { - checkStackCookie(); - if (Module["postRun"]) { - if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; - while (Module["postRun"].length) { - addOnPostRun(Module["postRun"].shift()); - } - } - callRuntimeCallbacks(__ATPOSTRUN__); -} - -function addOnPreRun(cb) { - __ATPRERUN__.unshift(cb); -} - -function addOnPostRun(cb) { - __ATPOSTRUN__.unshift(cb); -} - -assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); - -var runDependencies = 0; - -var runDependencyWatcher = null; - -var dependenciesFulfilled = null; - -var runDependencyTracking = {}; - -function getUniqueRunDependency(id) { - var orig = id; - while (1) { - if (!runDependencyTracking[id]) return id; - id = orig + Math.random(); - } -} - -function addRunDependency(id) { - runDependencies++; - if (Module["monitorRunDependencies"]) { - Module["monitorRunDependencies"](runDependencies); - } - if (id) { - assert(!runDependencyTracking[id]); - runDependencyTracking[id] = 1; - if (runDependencyWatcher === null && typeof setInterval !== "undefined") { - runDependencyWatcher = setInterval(function() { - if (ABORT) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - return; - } - var shown = false; - for (var dep in runDependencyTracking) { - if (!shown) { - shown = true; - err("still waiting on run dependencies:"); - } - err("dependency: " + dep); - } - if (shown) { - err("(end of list)"); - } - }, 1e4); - } - } else { - err("warning: run dependency added without ID"); - } -} - -function removeRunDependency(id) { - runDependencies--; - if (Module["monitorRunDependencies"]) { - Module["monitorRunDependencies"](runDependencies); - } - if (id) { - assert(runDependencyTracking[id]); - delete runDependencyTracking[id]; - } else { - err("warning: run dependency removed without ID"); - } - if (runDependencies == 0) { - if (runDependencyWatcher !== null) { - clearInterval(runDependencyWatcher); - runDependencyWatcher = null; - } - if (dependenciesFulfilled) { - var callback = dependenciesFulfilled; - dependenciesFulfilled = null; - callback(); - } - } -} - -Module["preloadedImages"] = {}; - -Module["preloadedAudios"] = {}; - -function abort(what) { - if (Module["onAbort"]) { - Module["onAbort"](what); - } - what += ""; - err(what); - ABORT = true; - var output = "abort(" + what + ") at " + stackTrace(); - what = output; - var e = new WebAssembly.RuntimeError(what); - readyPromiseReject(e); - throw e; -} - -function hasPrefix(str, prefix) { - return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0; -} - -var dataURIPrefix = "data:application/octet-stream;base64,"; - -function isDataURI(filename) { - return hasPrefix(filename, dataURIPrefix); -} - -function createExportWrapper(name, fixedasm) { - return function() { - var displayName = name; - var asm = fixedasm; - if (!fixedasm) { - asm = Module["asm"]; - } - assert(runtimeInitialized, "native function `" + displayName + "` called before runtime initialization"); - assert(!runtimeExited, "native function `" + displayName + "` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); - if (!asm[name]) { - assert(asm[name], "exported native function `" + displayName + "` not found"); - } - return asm[name].apply(null, arguments); - }; -} - -var wasmBinaryFile = "trace_to_text.wasm"; - -if (!isDataURI(wasmBinaryFile)) { - wasmBinaryFile = locateFile(wasmBinaryFile); -} - -function getBinary(file) { - try { - if (file == wasmBinaryFile && wasmBinary) { - return new Uint8Array(wasmBinary); - } - if (readBinary) { - return readBinary(file); - } else { - throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; - } - } catch (err) { - abort(err); - } -} - -function instantiateSync(file, info) { - var instance; - var module; - var binary; - try { - binary = getBinary(file); - module = new WebAssembly.Module(binary); - instance = new WebAssembly.Instance(module, info); - } catch (e) { - var str = e.toString(); - err("failed to compile wasm module: " + str); - if (str.indexOf("imported Memory") >= 0 || str.indexOf("memory import") >= 0) { - err("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."); - } - throw e; - } - return [ instance, module ]; -} - -function createWasm() { - var info = { - "env": asmLibraryArg, - "wasi_snapshot_preview1": asmLibraryArg - }; - function receiveInstance(instance, module) { - var exports = instance.exports; - Module["asm"] = exports; - wasmMemory = Module["asm"]["memory"]; - assert(wasmMemory, "memory not found in wasm exports"); - updateGlobalBufferAndViews(wasmMemory.buffer); - wasmTable = Module["asm"]["__indirect_function_table"]; - assert(wasmTable, "table not found in wasm exports"); - removeRunDependency("wasm-instantiate"); - } - addRunDependency("wasm-instantiate"); - if (Module["instantiateWasm"]) { - try { - var exports = Module["instantiateWasm"](info, receiveInstance); - return exports; - } catch (e) { - err("Module.instantiateWasm callback failed with error: " + e); - return false; - } - } - var result = instantiateSync(wasmBinaryFile, info); - receiveInstance(result[0]); - return Module["asm"]; -} - -var tempDouble; - -var tempI64; - -function callRuntimeCallbacks(callbacks) { - while (callbacks.length > 0) { - var callback = callbacks.shift(); - if (typeof callback == "function") { - callback(Module); - continue; - } - var func = callback.func; - if (typeof func === "number") { - if (callback.arg === undefined) { - wasmTable.get(func)(); - } else { - wasmTable.get(func)(callback.arg); - } - } else { - func(callback.arg === undefined ? null : callback.arg); - } - } -} - -function demangle(func) { - warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"); - return func; -} - -function demangleAll(text) { - var regex = /\b_Z[\w\d_]+/g; - return text.replace(regex, function(x) { - var y = demangle(x); - return x === y ? x : y + " [" + x + "]"; - }); -} - -function jsStackTrace() { - var error = new Error(); - if (!error.stack) { - try { - throw new Error(); - } catch (e) { - error = e; - } - if (!error.stack) { - return "(no stack trace available)"; - } - } - return error.stack.toString(); -} - -function stackTrace() { - var js = jsStackTrace(); - if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); - return demangleAll(js); -} - -var _emscripten_get_now; - -if (ENVIRONMENT_IS_NODE) { - _emscripten_get_now = function() { - var t = process["hrtime"](); - return t[0] * 1e3 + t[1] / 1e6; - }; -} else if (typeof dateNow !== "undefined") { - _emscripten_get_now = dateNow; -} else _emscripten_get_now = function() { - return performance.now(); -}; - -var _emscripten_get_now_is_monotonic = true; - -function setErrNo(value) { - HEAP32[___errno_location() >> 2] = value; - return value; -} - -function _clock_gettime(clk_id, tp) { - var now; - if (clk_id === 0) { - now = Date.now(); - } else if ((clk_id === 1 || clk_id === 4) && _emscripten_get_now_is_monotonic) { - now = _emscripten_get_now(); - } else { - setErrNo(28); - return -1; - } - HEAP32[tp >> 2] = now / 1e3 | 0; - HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0; - return 0; -} - -function ___clock_gettime(a0, a1) { - return _clock_gettime(a0, a1); -} - -function _atexit(func, arg) {} - -function ___cxa_atexit(a0, a1) { - return _atexit(); -} - -function _tzset() { - if (_tzset.called) return; - _tzset.called = true; - var currentYear = new Date().getFullYear(); - var winter = new Date(currentYear, 0, 1); - var summer = new Date(currentYear, 6, 1); - var winterOffset = winter.getTimezoneOffset(); - var summerOffset = summer.getTimezoneOffset(); - var stdTimezoneOffset = Math.max(winterOffset, summerOffset); - HEAP32[__get_timezone() >> 2] = stdTimezoneOffset * 60; - HEAP32[__get_daylight() >> 2] = Number(winterOffset != summerOffset); - function extractZone(date) { - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); - return match ? match[1] : "GMT"; - } - var winterName = extractZone(winter); - var summerName = extractZone(summer); - var winterNamePtr = allocateUTF8(winterName); - var summerNamePtr = allocateUTF8(summerName); - if (summerOffset < winterOffset) { - HEAP32[__get_tzname() >> 2] = winterNamePtr; - HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr; - } else { - HEAP32[__get_tzname() >> 2] = summerNamePtr; - HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr; - } -} - -function _localtime_r(time, tmPtr) { - _tzset(); - var date = new Date(HEAP32[time >> 2] * 1e3); - HEAP32[tmPtr >> 2] = date.getSeconds(); - HEAP32[tmPtr + 4 >> 2] = date.getMinutes(); - HEAP32[tmPtr + 8 >> 2] = date.getHours(); - HEAP32[tmPtr + 12 >> 2] = date.getDate(); - HEAP32[tmPtr + 16 >> 2] = date.getMonth(); - HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900; - HEAP32[tmPtr + 24 >> 2] = date.getDay(); - var start = new Date(date.getFullYear(), 0, 1); - var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0; - HEAP32[tmPtr + 28 >> 2] = yday; - HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60); - var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset(); - var winterOffset = start.getTimezoneOffset(); - var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0; - HEAP32[tmPtr + 32 >> 2] = dst; - var zonePtr = HEAP32[__get_tzname() + (dst ? 4 : 0) >> 2]; - HEAP32[tmPtr + 40 >> 2] = zonePtr; - return tmPtr; -} - -function ___localtime_r(a0, a1) { - return _localtime_r(a0, a1); -} - -var PATH = { - splitPath: function(filename) { - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; - return splitPathRe.exec(filename).slice(1); - }, - normalizeArray: function(parts, allowAboveRoot) { - var up = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var last = parts[i]; - if (last === ".") { - parts.splice(i, 1); - } else if (last === "..") { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - if (allowAboveRoot) { - for (;up; up--) { - parts.unshift(".."); - } - } - return parts; - }, - normalize: function(path) { - var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/"; - path = PATH.normalizeArray(path.split("/").filter(function(p) { - return !!p; - }), !isAbsolute).join("/"); - if (!path && !isAbsolute) { - path = "."; - } - if (path && trailingSlash) { - path += "/"; - } - return (isAbsolute ? "/" : "") + path; - }, - dirname: function(path) { - var result = PATH.splitPath(path), root = result[0], dir = result[1]; - if (!root && !dir) { - return "."; - } - if (dir) { - dir = dir.substr(0, dir.length - 1); - } - return root + dir; - }, - basename: function(path) { - if (path === "/") return "/"; - path = PATH.normalize(path); - path = path.replace(/\/$/, ""); - var lastSlash = path.lastIndexOf("/"); - if (lastSlash === -1) return path; - return path.substr(lastSlash + 1); - }, - extname: function(path) { - return PATH.splitPath(path)[3]; - }, - join: function() { - var paths = Array.prototype.slice.call(arguments, 0); - return PATH.normalize(paths.join("/")); - }, - join2: function(l, r) { - return PATH.normalize(l + "/" + r); - } -}; - -function getRandomDevice() { - if (typeof crypto === "object" && typeof crypto["getRandomValues"] === "function") { - var randomBuffer = new Uint8Array(1); - return function() { - crypto.getRandomValues(randomBuffer); - return randomBuffer[0]; - }; - } else if (ENVIRONMENT_IS_NODE) { - try { - var crypto_module = require("crypto"); - return function() { - return crypto_module["randomBytes"](1)[0]; - }; - } catch (e) {} - } - return function() { - abort("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };"); - }; -} - -var PATH_FS = { - resolve: function() { - var resolvedPath = "", resolvedAbsolute = false; - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { - var path = i >= 0 ? arguments[i] : FS.cwd(); - if (typeof path !== "string") { - throw new TypeError("Arguments to path.resolve must be strings"); - } else if (!path) { - return ""; - } - resolvedPath = path + "/" + resolvedPath; - resolvedAbsolute = path.charAt(0) === "/"; - } - resolvedPath = PATH.normalizeArray(resolvedPath.split("/").filter(function(p) { - return !!p; - }), !resolvedAbsolute).join("/"); - return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; - }, - relative: function(from, to) { - from = PATH_FS.resolve(from).substr(1); - to = PATH_FS.resolve(to).substr(1); - function trim(arr) { - var start = 0; - for (;start < arr.length; start++) { - if (arr[start] !== "") break; - } - var end = arr.length - 1; - for (;end >= 0; end--) { - if (arr[end] !== "") break; - } - if (start > end) return []; - return arr.slice(start, end - start + 1); - } - var fromParts = trim(from.split("/")); - var toParts = trim(to.split("/")); - var length = Math.min(fromParts.length, toParts.length); - var samePartsLength = length; - for (var i = 0; i < length; i++) { - if (fromParts[i] !== toParts[i]) { - samePartsLength = i; - break; - } - } - var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { - outputParts.push(".."); - } - outputParts = outputParts.concat(toParts.slice(samePartsLength)); - return outputParts.join("/"); - } -}; - -var TTY = { - ttys: [], - init: function() {}, - shutdown: function() {}, - register: function(dev, ops) { - TTY.ttys[dev] = { - input: [], - output: [], - ops: ops - }; - FS.registerDevice(dev, TTY.stream_ops); - }, - stream_ops: { - open: function(stream) { - var tty = TTY.ttys[stream.node.rdev]; - if (!tty) { - throw new FS.ErrnoError(43); - } - stream.tty = tty; - stream.seekable = false; - }, - close: function(stream) { - stream.tty.ops.flush(stream.tty); - }, - flush: function(stream) { - stream.tty.ops.flush(stream.tty); - }, - read: function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.get_char) { - throw new FS.ErrnoError(60); - } - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = stream.tty.ops.get_char(stream.tty); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset + i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - if (!stream.tty || !stream.tty.ops.put_char) { - throw new FS.ErrnoError(60); - } - try { - for (var i = 0; i < length; i++) { - stream.tty.ops.put_char(stream.tty, buffer[offset + i]); - } - } catch (e) { - throw new FS.ErrnoError(29); - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }, - default_tty_ops: { - get_char: function(tty) { - if (!tty.input.length) { - var result = null; - if (ENVIRONMENT_IS_NODE) { - var BUFSIZE = 256; - var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); - var bytesRead = 0; - try { - bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null); - } catch (e) { - if (e.toString().indexOf("EOF") != -1) bytesRead = 0; else throw e; - } - if (bytesRead > 0) { - result = buf.slice(0, bytesRead).toString("utf-8"); - } else { - result = null; - } - } else if (typeof window != "undefined" && typeof window.prompt == "function") { - result = window.prompt("Input: "); - if (result !== null) { - result += "\n"; - } - } else if (typeof readline == "function") { - result = readline(); - if (result !== null) { - result += "\n"; - } - } - if (!result) { - return null; - } - tty.input = intArrayFromString(result, true); - } - return tty.input.shift(); - }, - put_char: function(tty, val) { - if (val === null || val === 10) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - }, - flush: function(tty) { - if (tty.output && tty.output.length > 0) { - out(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - } - }, - default_tty1_ops: { - put_char: function(tty, val) { - if (val === null || val === 10) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } else { - if (val != 0) tty.output.push(val); - } - }, - flush: function(tty) { - if (tty.output && tty.output.length > 0) { - err(UTF8ArrayToString(tty.output, 0)); - tty.output = []; - } - } - } -}; - -function mmapAlloc(size) { - var alignedSize = alignMemory(size, 16384); - var ptr = _malloc(alignedSize); - while (size < alignedSize) HEAP8[ptr + size++] = 0; - return ptr; -} - -var MEMFS = { - ops_table: null, - mount: function(mount) { - return MEMFS.createNode(null, "/", 16384 | 511, 0); - }, - createNode: function(parent, name, mode, dev) { - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { - throw new FS.ErrnoError(63); - } - if (!MEMFS.ops_table) { - MEMFS.ops_table = { - dir: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - lookup: MEMFS.node_ops.lookup, - mknod: MEMFS.node_ops.mknod, - rename: MEMFS.node_ops.rename, - unlink: MEMFS.node_ops.unlink, - rmdir: MEMFS.node_ops.rmdir, - readdir: MEMFS.node_ops.readdir, - symlink: MEMFS.node_ops.symlink - }, - stream: { - llseek: MEMFS.stream_ops.llseek - } - }, - file: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: { - llseek: MEMFS.stream_ops.llseek, - read: MEMFS.stream_ops.read, - write: MEMFS.stream_ops.write, - allocate: MEMFS.stream_ops.allocate, - mmap: MEMFS.stream_ops.mmap, - msync: MEMFS.stream_ops.msync - } - }, - link: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr, - readlink: MEMFS.node_ops.readlink - }, - stream: {} - }, - chrdev: { - node: { - getattr: MEMFS.node_ops.getattr, - setattr: MEMFS.node_ops.setattr - }, - stream: FS.chrdev_stream_ops - } - }; - } - var node = FS.createNode(parent, name, mode, dev); - if (FS.isDir(node.mode)) { - node.node_ops = MEMFS.ops_table.dir.node; - node.stream_ops = MEMFS.ops_table.dir.stream; - node.contents = {}; - } else if (FS.isFile(node.mode)) { - node.node_ops = MEMFS.ops_table.file.node; - node.stream_ops = MEMFS.ops_table.file.stream; - node.usedBytes = 0; - node.contents = null; - } else if (FS.isLink(node.mode)) { - node.node_ops = MEMFS.ops_table.link.node; - node.stream_ops = MEMFS.ops_table.link.stream; - } else if (FS.isChrdev(node.mode)) { - node.node_ops = MEMFS.ops_table.chrdev.node; - node.stream_ops = MEMFS.ops_table.chrdev.stream; - } - node.timestamp = Date.now(); - if (parent) { - parent.contents[name] = node; - parent.timestamp = node.timestamp; - } - return node; - }, - getFileDataAsRegularArray: function(node) { - if (node.contents && node.contents.subarray) { - var arr = []; - for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]); - return arr; - } - return node.contents; - }, - getFileDataAsTypedArray: function(node) { - if (!node.contents) return new Uint8Array(0); - if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); - return new Uint8Array(node.contents); - }, - expandFileStorage: function(node, newCapacity) { - var prevCapacity = node.contents ? node.contents.length : 0; - if (prevCapacity >= newCapacity) return; - var CAPACITY_DOUBLING_MAX = 1024 * 1024; - newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0); - if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); - var oldContents = node.contents; - node.contents = new Uint8Array(newCapacity); - if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); - return; - }, - resizeFileStorage: function(node, newSize) { - if (node.usedBytes == newSize) return; - if (newSize == 0) { - node.contents = null; - node.usedBytes = 0; - return; - } - if (!node.contents || node.contents.subarray) { - var oldContents = node.contents; - node.contents = new Uint8Array(newSize); - if (oldContents) { - node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); - } - node.usedBytes = newSize; - return; - } - if (!node.contents) node.contents = []; - if (node.contents.length > newSize) node.contents.length = newSize; else while (node.contents.length < newSize) node.contents.push(0); - node.usedBytes = newSize; - }, - node_ops: { - getattr: function(node) { - var attr = {}; - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; - attr.ino = node.id; - attr.mode = node.mode; - attr.nlink = 1; - attr.uid = 0; - attr.gid = 0; - attr.rdev = node.rdev; - if (FS.isDir(node.mode)) { - attr.size = 4096; - } else if (FS.isFile(node.mode)) { - attr.size = node.usedBytes; - } else if (FS.isLink(node.mode)) { - attr.size = node.link.length; - } else { - attr.size = 0; - } - attr.atime = new Date(node.timestamp); - attr.mtime = new Date(node.timestamp); - attr.ctime = new Date(node.timestamp); - attr.blksize = 4096; - attr.blocks = Math.ceil(attr.size / attr.blksize); - return attr; - }, - setattr: function(node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - if (attr.size !== undefined) { - MEMFS.resizeFileStorage(node, attr.size); - } - }, - lookup: function(parent, name) { - throw FS.genericErrors[44]; - }, - mknod: function(parent, name, mode, dev) { - return MEMFS.createNode(parent, name, mode, dev); - }, - rename: function(old_node, new_dir, new_name) { - if (FS.isDir(old_node.mode)) { - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) {} - if (new_node) { - for (var i in new_node.contents) { - throw new FS.ErrnoError(55); - } - } - } - delete old_node.parent.contents[old_node.name]; - old_node.parent.timestamp = Date.now(); - old_node.name = new_name; - new_dir.contents[new_name] = old_node; - new_dir.timestamp = old_node.parent.timestamp; - old_node.parent = new_dir; - }, - unlink: function(parent, name) { - delete parent.contents[name]; - parent.timestamp = Date.now(); - }, - rmdir: function(parent, name) { - var node = FS.lookupNode(parent, name); - for (var i in node.contents) { - throw new FS.ErrnoError(55); - } - delete parent.contents[name]; - parent.timestamp = Date.now(); - }, - readdir: function(node) { - var entries = [ ".", ".." ]; - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - }, - symlink: function(parent, newname, oldpath) { - var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); - node.link = oldpath; - return node; - }, - readlink: function(node) { - if (!FS.isLink(node.mode)) { - throw new FS.ErrnoError(28); - } - return node.link; - } - }, - stream_ops: { - read: function(stream, buffer, offset, length, position) { - var contents = stream.node.contents; - if (position >= stream.node.usedBytes) return 0; - var size = Math.min(stream.node.usedBytes - position, length); - assert(size >= 0); - if (size > 8 && contents.subarray) { - buffer.set(contents.subarray(position, position + size), offset); - } else { - for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i]; - } - return size; - }, - write: function(stream, buffer, offset, length, position, canOwn) { - assert(!(buffer instanceof ArrayBuffer)); - if (buffer.buffer === HEAP8.buffer) { - canOwn = false; - } - if (!length) return 0; - var node = stream.node; - node.timestamp = Date.now(); - if (buffer.subarray && (!node.contents || node.contents.subarray)) { - if (canOwn) { - assert(position === 0, "canOwn must imply no weird position inside the file"); - node.contents = buffer.subarray(offset, offset + length); - node.usedBytes = length; - return length; - } else if (node.usedBytes === 0 && position === 0) { - node.contents = buffer.slice(offset, offset + length); - node.usedBytes = length; - return length; - } else if (position + length <= node.usedBytes) { - node.contents.set(buffer.subarray(offset, offset + length), position); - return length; - } - } - MEMFS.expandFileStorage(node, position + length); - if (node.contents.subarray && buffer.subarray) { - node.contents.set(buffer.subarray(offset, offset + length), position); - } else { - for (var i = 0; i < length; i++) { - node.contents[position + i] = buffer[offset + i]; - } - } - node.usedBytes = Math.max(node.usedBytes, position + length); - return length; - }, - llseek: function(stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.usedBytes; - } - } - if (position < 0) { - throw new FS.ErrnoError(28); - } - return position; - }, - allocate: function(stream, offset, length) { - MEMFS.expandFileStorage(stream.node, offset + length); - stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length); - }, - mmap: function(stream, address, length, position, prot, flags) { - if (address !== 0) { - throw new FS.ErrnoError(28); - } - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - var ptr; - var allocated; - var contents = stream.node.contents; - if (!(flags & 2) && contents.buffer === buffer) { - allocated = false; - ptr = contents.byteOffset; - } else { - if (position > 0 || position + length < contents.length) { - if (contents.subarray) { - contents = contents.subarray(position, position + length); - } else { - contents = Array.prototype.slice.call(contents, position, position + length); - } - } - allocated = true; - ptr = mmapAlloc(length); - if (!ptr) { - throw new FS.ErrnoError(48); - } - HEAP8.set(contents, ptr); - } - return { - ptr: ptr, - allocated: allocated - }; - }, - msync: function(stream, buffer, offset, length, mmapFlags) { - if (!FS.isFile(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (mmapFlags & 2) { - return 0; - } - MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); - return 0; - } - } -}; - -var WORKERFS = { - DIR_MODE: 16895, - FILE_MODE: 33279, - reader: null, - mount: function(mount) { - assert(ENVIRONMENT_IS_WORKER); - if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync(); - var root = WORKERFS.createNode(null, "/", WORKERFS.DIR_MODE, 0); - var createdParents = {}; - function ensureParent(path) { - var parts = path.split("/"); - var parent = root; - for (var i = 0; i < parts.length - 1; i++) { - var curr = parts.slice(0, i + 1).join("/"); - if (!createdParents[curr]) { - createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0); - } - parent = createdParents[curr]; - } - return parent; - } - function base(path) { - var parts = path.split("/"); - return parts[parts.length - 1]; - } - Array.prototype.forEach.call(mount.opts["files"] || [], function(file) { - WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate); - }); - (mount.opts["blobs"] || []).forEach(function(obj) { - WORKERFS.createNode(ensureParent(obj["name"]), base(obj["name"]), WORKERFS.FILE_MODE, 0, obj["data"]); - }); - (mount.opts["packages"] || []).forEach(function(pack) { - pack["metadata"].files.forEach(function(file) { - var name = file.filename.substr(1); - WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack["blob"].slice(file.start, file.end)); - }); - }); - return root; - }, - createNode: function(parent, name, mode, dev, contents, mtime) { - var node = FS.createNode(parent, name, mode); - node.mode = mode; - node.node_ops = WORKERFS.node_ops; - node.stream_ops = WORKERFS.stream_ops; - node.timestamp = (mtime || new Date()).getTime(); - assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE); - if (mode === WORKERFS.FILE_MODE) { - node.size = contents.size; - node.contents = contents; - } else { - node.size = 4096; - node.contents = {}; - } - if (parent) { - parent.contents[name] = node; - } - return node; - }, - node_ops: { - getattr: function(node) { - return { - dev: 1, - ino: node.id, - mode: node.mode, - nlink: 1, - uid: 0, - gid: 0, - rdev: undefined, - size: node.size, - atime: new Date(node.timestamp), - mtime: new Date(node.timestamp), - ctime: new Date(node.timestamp), - blksize: 4096, - blocks: Math.ceil(node.size / 4096) - }; - }, - setattr: function(node, attr) { - if (attr.mode !== undefined) { - node.mode = attr.mode; - } - if (attr.timestamp !== undefined) { - node.timestamp = attr.timestamp; - } - }, - lookup: function(parent, name) { - throw new FS.ErrnoError(44); - }, - mknod: function(parent, name, mode, dev) { - throw new FS.ErrnoError(63); - }, - rename: function(oldNode, newDir, newName) { - throw new FS.ErrnoError(63); - }, - unlink: function(parent, name) { - throw new FS.ErrnoError(63); - }, - rmdir: function(parent, name) { - throw new FS.ErrnoError(63); - }, - readdir: function(node) { - var entries = [ ".", ".." ]; - for (var key in node.contents) { - if (!node.contents.hasOwnProperty(key)) { - continue; - } - entries.push(key); - } - return entries; - }, - symlink: function(parent, newName, oldPath) { - throw new FS.ErrnoError(63); - }, - readlink: function(node) { - throw new FS.ErrnoError(63); - } - }, - stream_ops: { - read: function(stream, buffer, offset, length, position) { - if (position >= stream.node.size) return 0; - var chunk = stream.node.contents.slice(position, position + length); - var ab = WORKERFS.reader.readAsArrayBuffer(chunk); - buffer.set(new Uint8Array(ab), offset); - return chunk.size; - }, - write: function(stream, buffer, offset, length, position) { - throw new FS.ErrnoError(29); - }, - llseek: function(stream, offset, whence) { - var position = offset; - if (whence === 1) { - position += stream.position; - } else if (whence === 2) { - if (FS.isFile(stream.node.mode)) { - position += stream.node.size; - } - } - if (position < 0) { - throw new FS.ErrnoError(28); - } - return position; - } - } -}; - -var ERRNO_MESSAGES = { - 0: "Success", - 1: "Arg list too long", - 2: "Permission denied", - 3: "Address already in use", - 4: "Address not available", - 5: "Address family not supported by protocol family", - 6: "No more processes", - 7: "Socket already connected", - 8: "Bad file number", - 9: "Trying to read unreadable message", - 10: "Mount device busy", - 11: "Operation canceled", - 12: "No children", - 13: "Connection aborted", - 14: "Connection refused", - 15: "Connection reset by peer", - 16: "File locking deadlock error", - 17: "Destination address required", - 18: "Math arg out of domain of func", - 19: "Quota exceeded", - 20: "File exists", - 21: "Bad address", - 22: "File too large", - 23: "Host is unreachable", - 24: "Identifier removed", - 25: "Illegal byte sequence", - 26: "Connection already in progress", - 27: "Interrupted system call", - 28: "Invalid argument", - 29: "I/O error", - 30: "Socket is already connected", - 31: "Is a directory", - 32: "Too many symbolic links", - 33: "Too many open files", - 34: "Too many links", - 35: "Message too long", - 36: "Multihop attempted", - 37: "File or path name too long", - 38: "Network interface is not configured", - 39: "Connection reset by network", - 40: "Network is unreachable", - 41: "Too many open files in system", - 42: "No buffer space available", - 43: "No such device", - 44: "No such file or directory", - 45: "Exec format error", - 46: "No record locks available", - 47: "The link has been severed", - 48: "Not enough core", - 49: "No message of desired type", - 50: "Protocol not available", - 51: "No space left on device", - 52: "Function not implemented", - 53: "Socket is not connected", - 54: "Not a directory", - 55: "Directory not empty", - 56: "State not recoverable", - 57: "Socket operation on non-socket", - 59: "Not a typewriter", - 60: "No such device or address", - 61: "Value too large for defined data type", - 62: "Previous owner died", - 63: "Not super-user", - 64: "Broken pipe", - 65: "Protocol error", - 66: "Unknown protocol", - 67: "Protocol wrong type for socket", - 68: "Math result not representable", - 69: "Read only file system", - 70: "Illegal seek", - 71: "No such process", - 72: "Stale file handle", - 73: "Connection timed out", - 74: "Text file busy", - 75: "Cross-device link", - 100: "Device not a stream", - 101: "Bad font file fmt", - 102: "Invalid slot", - 103: "Invalid request code", - 104: "No anode", - 105: "Block device required", - 106: "Channel number out of range", - 107: "Level 3 halted", - 108: "Level 3 reset", - 109: "Link number out of range", - 110: "Protocol driver not attached", - 111: "No CSI structure available", - 112: "Level 2 halted", - 113: "Invalid exchange", - 114: "Invalid request descriptor", - 115: "Exchange full", - 116: "No data (for no delay io)", - 117: "Timer expired", - 118: "Out of streams resources", - 119: "Machine is not on the network", - 120: "Package not installed", - 121: "The object is remote", - 122: "Advertise error", - 123: "Srmount error", - 124: "Communication error on send", - 125: "Cross mount point (not really error)", - 126: "Given log. name not unique", - 127: "f.d. invalid for this operation", - 128: "Remote address changed", - 129: "Can access a needed shared lib", - 130: "Accessing a corrupted shared lib", - 131: ".lib section in a.out corrupted", - 132: "Attempting to link in too many libs", - 133: "Attempting to exec a shared library", - 135: "Streams pipe error", - 136: "Too many users", - 137: "Socket type not supported", - 138: "Not supported", - 139: "Protocol family not supported", - 140: "Can't send after socket shutdown", - 141: "Too many references", - 142: "Host is down", - 148: "No medium (in tape drive)", - 156: "Level 2 not synchronized" -}; - -var ERRNO_CODES = { - EPERM: 63, - ENOENT: 44, - ESRCH: 71, - EINTR: 27, - EIO: 29, - ENXIO: 60, - E2BIG: 1, - ENOEXEC: 45, - EBADF: 8, - ECHILD: 12, - EAGAIN: 6, - EWOULDBLOCK: 6, - ENOMEM: 48, - EACCES: 2, - EFAULT: 21, - ENOTBLK: 105, - EBUSY: 10, - EEXIST: 20, - EXDEV: 75, - ENODEV: 43, - ENOTDIR: 54, - EISDIR: 31, - EINVAL: 28, - ENFILE: 41, - EMFILE: 33, - ENOTTY: 59, - ETXTBSY: 74, - EFBIG: 22, - ENOSPC: 51, - ESPIPE: 70, - EROFS: 69, - EMLINK: 34, - EPIPE: 64, - EDOM: 18, - ERANGE: 68, - ENOMSG: 49, - EIDRM: 24, - ECHRNG: 106, - EL2NSYNC: 156, - EL3HLT: 107, - EL3RST: 108, - ELNRNG: 109, - EUNATCH: 110, - ENOCSI: 111, - EL2HLT: 112, - EDEADLK: 16, - ENOLCK: 46, - EBADE: 113, - EBADR: 114, - EXFULL: 115, - ENOANO: 104, - EBADRQC: 103, - EBADSLT: 102, - EDEADLOCK: 16, - EBFONT: 101, - ENOSTR: 100, - ENODATA: 116, - ETIME: 117, - ENOSR: 118, - ENONET: 119, - ENOPKG: 120, - EREMOTE: 121, - ENOLINK: 47, - EADV: 122, - ESRMNT: 123, - ECOMM: 124, - EPROTO: 65, - EMULTIHOP: 36, - EDOTDOT: 125, - EBADMSG: 9, - ENOTUNIQ: 126, - EBADFD: 127, - EREMCHG: 128, - ELIBACC: 129, - ELIBBAD: 130, - ELIBSCN: 131, - ELIBMAX: 132, - ELIBEXEC: 133, - ENOSYS: 52, - ENOTEMPTY: 55, - ENAMETOOLONG: 37, - ELOOP: 32, - EOPNOTSUPP: 138, - EPFNOSUPPORT: 139, - ECONNRESET: 15, - ENOBUFS: 42, - EAFNOSUPPORT: 5, - EPROTOTYPE: 67, - ENOTSOCK: 57, - ENOPROTOOPT: 50, - ESHUTDOWN: 140, - ECONNREFUSED: 14, - EADDRINUSE: 3, - ECONNABORTED: 13, - ENETUNREACH: 40, - ENETDOWN: 38, - ETIMEDOUT: 73, - EHOSTDOWN: 142, - EHOSTUNREACH: 23, - EINPROGRESS: 26, - EALREADY: 7, - EDESTADDRREQ: 17, - EMSGSIZE: 35, - EPROTONOSUPPORT: 66, - ESOCKTNOSUPPORT: 137, - EADDRNOTAVAIL: 4, - ENETRESET: 39, - EISCONN: 30, - ENOTCONN: 53, - ETOOMANYREFS: 141, - EUSERS: 136, - EDQUOT: 19, - ESTALE: 72, - ENOTSUP: 138, - ENOMEDIUM: 148, - EILSEQ: 25, - EOVERFLOW: 61, - ECANCELED: 11, - ENOTRECOVERABLE: 56, - EOWNERDEAD: 62, - ESTRPIPE: 135 -}; - -var FS = { - root: null, - mounts: [], - devices: {}, - streams: [], - nextInode: 1, - nameTable: null, - currentPath: "/", - initialized: false, - ignorePermissions: true, - trackingDelegate: {}, - tracking: { - openFlags: { - READ: 1, - WRITE: 2 - } - }, - ErrnoError: null, - genericErrors: {}, - filesystems: null, - syncFSRequests: 0, - lookupPath: function(path, opts) { - path = PATH_FS.resolve(FS.cwd(), path); - opts = opts || {}; - if (!path) return { - path: "", - node: null - }; - var defaults = { - follow_mount: true, - recurse_count: 0 - }; - for (var key in defaults) { - if (opts[key] === undefined) { - opts[key] = defaults[key]; - } - } - if (opts.recurse_count > 8) { - throw new FS.ErrnoError(32); - } - var parts = PATH.normalizeArray(path.split("/").filter(function(p) { - return !!p; - }), false); - var current = FS.root; - var current_path = "/"; - for (var i = 0; i < parts.length; i++) { - var islast = i === parts.length - 1; - if (islast && opts.parent) { - break; - } - current = FS.lookupNode(current, parts[i]); - current_path = PATH.join2(current_path, parts[i]); - if (FS.isMountpoint(current)) { - if (!islast || islast && opts.follow_mount) { - current = current.mounted.root; - } - } - if (!islast || opts.follow) { - var count = 0; - while (FS.isLink(current.mode)) { - var link = FS.readlink(current_path); - current_path = PATH_FS.resolve(PATH.dirname(current_path), link); - var lookup = FS.lookupPath(current_path, { - recurse_count: opts.recurse_count - }); - current = lookup.node; - if (count++ > 40) { - throw new FS.ErrnoError(32); - } - } - } - } - return { - path: current_path, - node: current - }; - }, - getPath: function(node) { - var path; - while (true) { - if (FS.isRoot(node)) { - var mount = node.mount.mountpoint; - if (!path) return mount; - return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; - } - path = path ? node.name + "/" + path : node.name; - node = node.parent; - } - }, - hashName: function(parentid, name) { - var hash = 0; - for (var i = 0; i < name.length; i++) { - hash = (hash << 5) - hash + name.charCodeAt(i) | 0; - } - return (parentid + hash >>> 0) % FS.nameTable.length; - }, - hashAddNode: function(node) { - var hash = FS.hashName(node.parent.id, node.name); - node.name_next = FS.nameTable[hash]; - FS.nameTable[hash] = node; - }, - hashRemoveNode: function(node) { - var hash = FS.hashName(node.parent.id, node.name); - if (FS.nameTable[hash] === node) { - FS.nameTable[hash] = node.name_next; - } else { - var current = FS.nameTable[hash]; - while (current) { - if (current.name_next === node) { - current.name_next = node.name_next; - break; - } - current = current.name_next; - } - } - }, - lookupNode: function(parent, name) { - var errCode = FS.mayLookup(parent); - if (errCode) { - throw new FS.ErrnoError(errCode, parent); - } - var hash = FS.hashName(parent.id, name); - for (var node = FS.nameTable[hash]; node; node = node.name_next) { - var nodeName = node.name; - if (node.parent.id === parent.id && nodeName === name) { - return node; - } - } - return FS.lookup(parent, name); - }, - createNode: function(parent, name, mode, rdev) { - assert(typeof parent === "object"); - var node = new FS.FSNode(parent, name, mode, rdev); - FS.hashAddNode(node); - return node; - }, - destroyNode: function(node) { - FS.hashRemoveNode(node); - }, - isRoot: function(node) { - return node === node.parent; - }, - isMountpoint: function(node) { - return !!node.mounted; - }, - isFile: function(mode) { - return (mode & 61440) === 32768; - }, - isDir: function(mode) { - return (mode & 61440) === 16384; - }, - isLink: function(mode) { - return (mode & 61440) === 40960; - }, - isChrdev: function(mode) { - return (mode & 61440) === 8192; - }, - isBlkdev: function(mode) { - return (mode & 61440) === 24576; - }, - isFIFO: function(mode) { - return (mode & 61440) === 4096; - }, - isSocket: function(mode) { - return (mode & 49152) === 49152; - }, - flagModes: { - "r": 0, - "r+": 2, - "w": 577, - "w+": 578, - "a": 1089, - "a+": 1090 - }, - modeStringToFlags: function(str) { - var flags = FS.flagModes[str]; - if (typeof flags === "undefined") { - throw new Error("Unknown file open mode: " + str); - } - return flags; - }, - flagsToPermissionString: function(flag) { - var perms = [ "r", "w", "rw" ][flag & 3]; - if (flag & 512) { - perms += "w"; - } - return perms; - }, - nodePermissions: function(node, perms) { - if (FS.ignorePermissions) { - return 0; - } - if (perms.indexOf("r") !== -1 && !(node.mode & 292)) { - return 2; - } else if (perms.indexOf("w") !== -1 && !(node.mode & 146)) { - return 2; - } else if (perms.indexOf("x") !== -1 && !(node.mode & 73)) { - return 2; - } - return 0; - }, - mayLookup: function(dir) { - var errCode = FS.nodePermissions(dir, "x"); - if (errCode) return errCode; - if (!dir.node_ops.lookup) return 2; - return 0; - }, - mayCreate: function(dir, name) { - try { - var node = FS.lookupNode(dir, name); - return 20; - } catch (e) {} - return FS.nodePermissions(dir, "wx"); - }, - mayDelete: function(dir, name, isdir) { - var node; - try { - node = FS.lookupNode(dir, name); - } catch (e) { - return e.errno; - } - var errCode = FS.nodePermissions(dir, "wx"); - if (errCode) { - return errCode; - } - if (isdir) { - if (!FS.isDir(node.mode)) { - return 54; - } - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { - return 10; - } - } else { - if (FS.isDir(node.mode)) { - return 31; - } - } - return 0; - }, - mayOpen: function(node, flags) { - if (!node) { - return 44; - } - if (FS.isLink(node.mode)) { - return 32; - } else if (FS.isDir(node.mode)) { - if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { - return 31; - } - } - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); - }, - MAX_OPEN_FDS: 4096, - nextfd: function(fd_start, fd_end) { - fd_start = fd_start || 0; - fd_end = fd_end || FS.MAX_OPEN_FDS; - for (var fd = fd_start; fd <= fd_end; fd++) { - if (!FS.streams[fd]) { - return fd; - } - } - throw new FS.ErrnoError(33); - }, - getStream: function(fd) { - return FS.streams[fd]; - }, - createStream: function(stream, fd_start, fd_end) { - if (!FS.FSStream) { - FS.FSStream = function() {}; - FS.FSStream.prototype = { - object: { - get: function() { - return this.node; - }, - set: function(val) { - this.node = val; - } - }, - isRead: { - get: function() { - return (this.flags & 2097155) !== 1; - } - }, - isWrite: { - get: function() { - return (this.flags & 2097155) !== 0; - } - }, - isAppend: { - get: function() { - return this.flags & 1024; - } - } - }; - } - var newStream = new FS.FSStream(); - for (var p in stream) { - newStream[p] = stream[p]; - } - stream = newStream; - var fd = FS.nextfd(fd_start, fd_end); - stream.fd = fd; - FS.streams[fd] = stream; - return stream; - }, - closeStream: function(fd) { - FS.streams[fd] = null; - }, - chrdev_stream_ops: { - open: function(stream) { - var device = FS.getDevice(stream.node.rdev); - stream.stream_ops = device.stream_ops; - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - }, - llseek: function() { - throw new FS.ErrnoError(70); - } - }, - major: function(dev) { - return dev >> 8; - }, - minor: function(dev) { - return dev & 255; - }, - makedev: function(ma, mi) { - return ma << 8 | mi; - }, - registerDevice: function(dev, ops) { - FS.devices[dev] = { - stream_ops: ops - }; - }, - getDevice: function(dev) { - return FS.devices[dev]; - }, - getMounts: function(mount) { - var mounts = []; - var check = [ mount ]; - while (check.length) { - var m = check.pop(); - mounts.push(m); - check.push.apply(check, m.mounts); - } - return mounts; - }, - syncfs: function(populate, callback) { - if (typeof populate === "function") { - callback = populate; - populate = false; - } - FS.syncFSRequests++; - if (FS.syncFSRequests > 1) { - err("warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); - } - var mounts = FS.getMounts(FS.root.mount); - var completed = 0; - function doCallback(errCode) { - assert(FS.syncFSRequests > 0); - FS.syncFSRequests--; - return callback(errCode); - } - function done(errCode) { - if (errCode) { - if (!done.errored) { - done.errored = true; - return doCallback(errCode); - } - return; - } - if (++completed >= mounts.length) { - doCallback(null); - } - } - mounts.forEach(function(mount) { - if (!mount.type.syncfs) { - return done(null); - } - mount.type.syncfs(mount, populate, done); - }); - }, - mount: function(type, opts, mountpoint) { - if (typeof type === "string") { - throw type; - } - var root = mountpoint === "/"; - var pseudo = !mountpoint; - var node; - if (root && FS.root) { - throw new FS.ErrnoError(10); - } else if (!root && !pseudo) { - var lookup = FS.lookupPath(mountpoint, { - follow_mount: false - }); - mountpoint = lookup.path; - node = lookup.node; - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - if (!FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - } - var mount = { - type: type, - opts: opts, - mountpoint: mountpoint, - mounts: [] - }; - var mountRoot = type.mount(mount); - mountRoot.mount = mount; - mount.root = mountRoot; - if (root) { - FS.root = mountRoot; - } else if (node) { - node.mounted = mount; - if (node.mount) { - node.mount.mounts.push(mount); - } - } - return mountRoot; - }, - unmount: function(mountpoint) { - var lookup = FS.lookupPath(mountpoint, { - follow_mount: false - }); - if (!FS.isMountpoint(lookup.node)) { - throw new FS.ErrnoError(28); - } - var node = lookup.node; - var mount = node.mounted; - var mounts = FS.getMounts(mount); - Object.keys(FS.nameTable).forEach(function(hash) { - var current = FS.nameTable[hash]; - while (current) { - var next = current.name_next; - if (mounts.indexOf(current.mount) !== -1) { - FS.destroyNode(current); - } - current = next; - } - }); - node.mounted = null; - var idx = node.mount.mounts.indexOf(mount); - assert(idx !== -1); - node.mount.mounts.splice(idx, 1); - }, - lookup: function(parent, name) { - return parent.node_ops.lookup(parent, name); - }, - mknod: function(path, mode, dev) { - var lookup = FS.lookupPath(path, { - parent: true - }); - var parent = lookup.node; - var name = PATH.basename(path); - if (!name || name === "." || name === "..") { - throw new FS.ErrnoError(28); - } - var errCode = FS.mayCreate(parent, name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.mknod) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.mknod(parent, name, mode, dev); - }, - create: function(path, mode) { - mode = mode !== undefined ? mode : 438; - mode &= 4095; - mode |= 32768; - return FS.mknod(path, mode, 0); - }, - mkdir: function(path, mode) { - mode = mode !== undefined ? mode : 511; - mode &= 511 | 512; - mode |= 16384; - return FS.mknod(path, mode, 0); - }, - mkdirTree: function(path, mode) { - var dirs = path.split("/"); - var d = ""; - for (var i = 0; i < dirs.length; ++i) { - if (!dirs[i]) continue; - d += "/" + dirs[i]; - try { - FS.mkdir(d, mode); - } catch (e) { - if (e.errno != 20) throw e; - } - } - }, - mkdev: function(path, mode, dev) { - if (typeof dev === "undefined") { - dev = mode; - mode = 438; - } - mode |= 8192; - return FS.mknod(path, mode, dev); - }, - symlink: function(oldpath, newpath) { - if (!PATH_FS.resolve(oldpath)) { - throw new FS.ErrnoError(44); - } - var lookup = FS.lookupPath(newpath, { - parent: true - }); - var parent = lookup.node; - if (!parent) { - throw new FS.ErrnoError(44); - } - var newname = PATH.basename(newpath); - var errCode = FS.mayCreate(parent, newname); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.symlink) { - throw new FS.ErrnoError(63); - } - return parent.node_ops.symlink(parent, newname, oldpath); - }, - rename: function(old_path, new_path) { - var old_dirname = PATH.dirname(old_path); - var new_dirname = PATH.dirname(new_path); - var old_name = PATH.basename(old_path); - var new_name = PATH.basename(new_path); - var lookup, old_dir, new_dir; - lookup = FS.lookupPath(old_path, { - parent: true - }); - old_dir = lookup.node; - lookup = FS.lookupPath(new_path, { - parent: true - }); - new_dir = lookup.node; - if (!old_dir || !new_dir) throw new FS.ErrnoError(44); - if (old_dir.mount !== new_dir.mount) { - throw new FS.ErrnoError(75); - } - var old_node = FS.lookupNode(old_dir, old_name); - var relative = PATH_FS.relative(old_path, new_dirname); - if (relative.charAt(0) !== ".") { - throw new FS.ErrnoError(28); - } - relative = PATH_FS.relative(new_path, old_dirname); - if (relative.charAt(0) !== ".") { - throw new FS.ErrnoError(55); - } - var new_node; - try { - new_node = FS.lookupNode(new_dir, new_name); - } catch (e) {} - if (old_node === new_node) { - return; - } - var isdir = FS.isDir(old_node.mode); - var errCode = FS.mayDelete(old_dir, old_name, isdir); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!old_dir.node_ops.rename) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) { - throw new FS.ErrnoError(10); - } - if (new_dir !== old_dir) { - errCode = FS.nodePermissions(old_dir, "w"); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - try { - if (FS.trackingDelegate["willMovePath"]) { - FS.trackingDelegate["willMovePath"](old_path, new_path); - } - } catch (e) { - err("FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message); - } - FS.hashRemoveNode(old_node); - try { - old_dir.node_ops.rename(old_node, new_dir, new_name); - } catch (e) { - throw e; - } finally { - FS.hashAddNode(old_node); - } - try { - if (FS.trackingDelegate["onMovePath"]) FS.trackingDelegate["onMovePath"](old_path, new_path); - } catch (e) { - err("FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message); - } - }, - rmdir: function(path) { - var lookup = FS.lookupPath(path, { - parent: true - }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, true); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.rmdir) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - try { - if (FS.trackingDelegate["willDeletePath"]) { - FS.trackingDelegate["willDeletePath"](path); - } - } catch (e) { - err("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message); - } - parent.node_ops.rmdir(parent, name); - FS.destroyNode(node); - try { - if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path); - } catch (e) { - err("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message); - } - }, - readdir: function(path) { - var lookup = FS.lookupPath(path, { - follow: true - }); - var node = lookup.node; - if (!node.node_ops.readdir) { - throw new FS.ErrnoError(54); - } - return node.node_ops.readdir(node); - }, - unlink: function(path) { - var lookup = FS.lookupPath(path, { - parent: true - }); - var parent = lookup.node; - var name = PATH.basename(path); - var node = FS.lookupNode(parent, name); - var errCode = FS.mayDelete(parent, name, false); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - if (!parent.node_ops.unlink) { - throw new FS.ErrnoError(63); - } - if (FS.isMountpoint(node)) { - throw new FS.ErrnoError(10); - } - try { - if (FS.trackingDelegate["willDeletePath"]) { - FS.trackingDelegate["willDeletePath"](path); - } - } catch (e) { - err("FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message); - } - parent.node_ops.unlink(parent, name); - FS.destroyNode(node); - try { - if (FS.trackingDelegate["onDeletePath"]) FS.trackingDelegate["onDeletePath"](path); - } catch (e) { - err("FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message); - } - }, - readlink: function(path) { - var lookup = FS.lookupPath(path); - var link = lookup.node; - if (!link) { - throw new FS.ErrnoError(44); - } - if (!link.node_ops.readlink) { - throw new FS.ErrnoError(28); - } - return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link)); - }, - stat: function(path, dontFollow) { - var lookup = FS.lookupPath(path, { - follow: !dontFollow - }); - var node = lookup.node; - if (!node) { - throw new FS.ErrnoError(44); - } - if (!node.node_ops.getattr) { - throw new FS.ErrnoError(63); - } - return node.node_ops.getattr(node); - }, - lstat: function(path) { - return FS.stat(path, true); - }, - chmod: function(path, mode, dontFollow) { - var node; - if (typeof path === "string") { - var lookup = FS.lookupPath(path, { - follow: !dontFollow - }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - mode: mode & 4095 | node.mode & ~4095, - timestamp: Date.now() - }); - }, - lchmod: function(path, mode) { - FS.chmod(path, mode, true); - }, - fchmod: function(fd, mode) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chmod(stream.node, mode); - }, - chown: function(path, uid, gid, dontFollow) { - var node; - if (typeof path === "string") { - var lookup = FS.lookupPath(path, { - follow: !dontFollow - }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - node.node_ops.setattr(node, { - timestamp: Date.now() - }); - }, - lchown: function(path, uid, gid) { - FS.chown(path, uid, gid, true); - }, - fchown: function(fd, uid, gid) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - FS.chown(stream.node, uid, gid); - }, - truncate: function(path, len) { - if (len < 0) { - throw new FS.ErrnoError(28); - } - var node; - if (typeof path === "string") { - var lookup = FS.lookupPath(path, { - follow: true - }); - node = lookup.node; - } else { - node = path; - } - if (!node.node_ops.setattr) { - throw new FS.ErrnoError(63); - } - if (FS.isDir(node.mode)) { - throw new FS.ErrnoError(31); - } - if (!FS.isFile(node.mode)) { - throw new FS.ErrnoError(28); - } - var errCode = FS.nodePermissions(node, "w"); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - node.node_ops.setattr(node, { - size: len, - timestamp: Date.now() - }); - }, - ftruncate: function(fd, len) { - var stream = FS.getStream(fd); - if (!stream) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(28); - } - FS.truncate(stream.node, len); - }, - utime: function(path, atime, mtime) { - var lookup = FS.lookupPath(path, { - follow: true - }); - var node = lookup.node; - node.node_ops.setattr(node, { - timestamp: Math.max(atime, mtime) - }); - }, - open: function(path, flags, mode, fd_start, fd_end) { - if (path === "") { - throw new FS.ErrnoError(44); - } - flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags; - mode = typeof mode === "undefined" ? 438 : mode; - if (flags & 64) { - mode = mode & 4095 | 32768; - } else { - mode = 0; - } - var node; - if (typeof path === "object") { - node = path; - } else { - path = PATH.normalize(path); - try { - var lookup = FS.lookupPath(path, { - follow: !(flags & 131072) - }); - node = lookup.node; - } catch (e) {} - } - var created = false; - if (flags & 64) { - if (node) { - if (flags & 128) { - throw new FS.ErrnoError(20); - } - } else { - node = FS.mknod(path, mode, 0); - created = true; - } - } - if (!node) { - throw new FS.ErrnoError(44); - } - if (FS.isChrdev(node.mode)) { - flags &= ~512; - } - if (flags & 65536 && !FS.isDir(node.mode)) { - throw new FS.ErrnoError(54); - } - if (!created) { - var errCode = FS.mayOpen(node, flags); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - } - if (flags & 512) { - FS.truncate(node, 0); - } - flags &= ~(128 | 512 | 131072); - var stream = FS.createStream({ - node: node, - path: FS.getPath(node), - flags: flags, - seekable: true, - position: 0, - stream_ops: node.stream_ops, - ungotten: [], - error: false - }, fd_start, fd_end); - if (stream.stream_ops.open) { - stream.stream_ops.open(stream); - } - if (Module["logReadFiles"] && !(flags & 1)) { - if (!FS.readFiles) FS.readFiles = {}; - if (!(path in FS.readFiles)) { - FS.readFiles[path] = 1; - err("FS.trackingDelegate error on read file: " + path); - } - } - try { - if (FS.trackingDelegate["onOpenFile"]) { - var trackingFlags = 0; - if ((flags & 2097155) !== 1) { - trackingFlags |= FS.tracking.openFlags.READ; - } - if ((flags & 2097155) !== 0) { - trackingFlags |= FS.tracking.openFlags.WRITE; - } - FS.trackingDelegate["onOpenFile"](path, trackingFlags); - } - } catch (e) { - err("FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message); - } - return stream; - }, - close: function(stream) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (stream.getdents) stream.getdents = null; - try { - if (stream.stream_ops.close) { - stream.stream_ops.close(stream); - } - } catch (e) { - throw e; - } finally { - FS.closeStream(stream.fd); - } - stream.fd = null; - }, - isClosed: function(stream) { - return stream.fd === null; - }, - llseek: function(stream, offset, whence) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (!stream.seekable || !stream.stream_ops.llseek) { - throw new FS.ErrnoError(70); - } - if (whence != 0 && whence != 1 && whence != 2) { - throw new FS.ErrnoError(28); - } - stream.position = stream.stream_ops.llseek(stream, offset, whence); - stream.ungotten = []; - return stream.position; - }, - read: function(stream, buffer, offset, length, position) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.read) { - throw new FS.ErrnoError(28); - } - var seeking = typeof position !== "undefined"; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); - if (!seeking) stream.position += bytesRead; - return bytesRead; - }, - write: function(stream, buffer, offset, length, position, canOwn) { - if (length < 0 || position < 0) { - throw new FS.ErrnoError(28); - } - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(31); - } - if (!stream.stream_ops.write) { - throw new FS.ErrnoError(28); - } - if (stream.seekable && stream.flags & 1024) { - FS.llseek(stream, 0, 2); - } - var seeking = typeof position !== "undefined"; - if (!seeking) { - position = stream.position; - } else if (!stream.seekable) { - throw new FS.ErrnoError(70); - } - var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); - if (!seeking) stream.position += bytesWritten; - try { - if (stream.path && FS.trackingDelegate["onWriteToFile"]) FS.trackingDelegate["onWriteToFile"](stream.path); - } catch (e) { - err("FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message); - } - return bytesWritten; - }, - allocate: function(stream, offset, length) { - if (FS.isClosed(stream)) { - throw new FS.ErrnoError(8); - } - if (offset < 0 || length <= 0) { - throw new FS.ErrnoError(28); - } - if ((stream.flags & 2097155) === 0) { - throw new FS.ErrnoError(8); - } - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { - throw new FS.ErrnoError(43); - } - if (!stream.stream_ops.allocate) { - throw new FS.ErrnoError(138); - } - stream.stream_ops.allocate(stream, offset, length); - }, - mmap: function(stream, address, length, position, prot, flags) { - if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { - throw new FS.ErrnoError(2); - } - if ((stream.flags & 2097155) === 1) { - throw new FS.ErrnoError(2); - } - if (!stream.stream_ops.mmap) { - throw new FS.ErrnoError(43); - } - return stream.stream_ops.mmap(stream, address, length, position, prot, flags); - }, - msync: function(stream, buffer, offset, length, mmapFlags) { - if (!stream || !stream.stream_ops.msync) { - return 0; - } - return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); - }, - munmap: function(stream) { - return 0; - }, - ioctl: function(stream, cmd, arg) { - if (!stream.stream_ops.ioctl) { - throw new FS.ErrnoError(59); - } - return stream.stream_ops.ioctl(stream, cmd, arg); - }, - readFile: function(path, opts) { - opts = opts || {}; - opts.flags = opts.flags || 0; - opts.encoding = opts.encoding || "binary"; - if (opts.encoding !== "utf8" && opts.encoding !== "binary") { - throw new Error('Invalid encoding type "' + opts.encoding + '"'); - } - var ret; - var stream = FS.open(path, opts.flags); - var stat = FS.stat(path); - var length = stat.size; - var buf = new Uint8Array(length); - FS.read(stream, buf, 0, length, 0); - if (opts.encoding === "utf8") { - ret = UTF8ArrayToString(buf, 0); - } else if (opts.encoding === "binary") { - ret = buf; - } - FS.close(stream); - return ret; - }, - writeFile: function(path, data, opts) { - opts = opts || {}; - opts.flags = opts.flags || 577; - var stream = FS.open(path, opts.flags, opts.mode); - if (typeof data === "string") { - var buf = new Uint8Array(lengthBytesUTF8(data) + 1); - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); - FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn); - } else if (ArrayBuffer.isView(data)) { - FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn); - } else { - throw new Error("Unsupported data type"); - } - FS.close(stream); - }, - cwd: function() { - return FS.currentPath; - }, - chdir: function(path) { - var lookup = FS.lookupPath(path, { - follow: true - }); - if (lookup.node === null) { - throw new FS.ErrnoError(44); - } - if (!FS.isDir(lookup.node.mode)) { - throw new FS.ErrnoError(54); - } - var errCode = FS.nodePermissions(lookup.node, "x"); - if (errCode) { - throw new FS.ErrnoError(errCode); - } - FS.currentPath = lookup.path; - }, - createDefaultDirectories: function() { - FS.mkdir("/tmp"); - FS.mkdir("/home"); - FS.mkdir("/home/web_user"); - }, - createDefaultDevices: function() { - FS.mkdir("/dev"); - FS.registerDevice(FS.makedev(1, 3), { - read: function() { - return 0; - }, - write: function(stream, buffer, offset, length, pos) { - return length; - } - }); - FS.mkdev("/dev/null", FS.makedev(1, 3)); - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); - FS.mkdev("/dev/tty", FS.makedev(5, 0)); - FS.mkdev("/dev/tty1", FS.makedev(6, 0)); - var random_device = getRandomDevice(); - FS.createDevice("/dev", "random", random_device); - FS.createDevice("/dev", "urandom", random_device); - FS.mkdir("/dev/shm"); - FS.mkdir("/dev/shm/tmp"); - }, - createSpecialDirectories: function() { - FS.mkdir("/proc"); - var proc_self = FS.mkdir("/proc/self"); - FS.mkdir("/proc/self/fd"); - FS.mount({ - mount: function() { - var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); - node.node_ops = { - lookup: function(parent, name) { - var fd = +name; - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - var ret = { - parent: null, - mount: { - mountpoint: "fake" - }, - node_ops: { - readlink: function() { - return stream.path; - } - } - }; - ret.parent = ret; - return ret; - } - }; - return node; - } - }, {}, "/proc/self/fd"); - }, - createStandardStreams: function() { - if (Module["stdin"]) { - FS.createDevice("/dev", "stdin", Module["stdin"]); - } else { - FS.symlink("/dev/tty", "/dev/stdin"); - } - if (Module["stdout"]) { - FS.createDevice("/dev", "stdout", null, Module["stdout"]); - } else { - FS.symlink("/dev/tty", "/dev/stdout"); - } - if (Module["stderr"]) { - FS.createDevice("/dev", "stderr", null, Module["stderr"]); - } else { - FS.symlink("/dev/tty1", "/dev/stderr"); - } - var stdin = FS.open("/dev/stdin", 0); - var stdout = FS.open("/dev/stdout", 1); - var stderr = FS.open("/dev/stderr", 1); - assert(stdin.fd === 0, "invalid handle for stdin (" + stdin.fd + ")"); - assert(stdout.fd === 1, "invalid handle for stdout (" + stdout.fd + ")"); - assert(stderr.fd === 2, "invalid handle for stderr (" + stderr.fd + ")"); - }, - ensureErrnoError: function() { - if (FS.ErrnoError) return; - FS.ErrnoError = function ErrnoError(errno, node) { - this.node = node; - this.setErrno = function(errno) { - this.errno = errno; - for (var key in ERRNO_CODES) { - if (ERRNO_CODES[key] === errno) { - this.code = key; - break; - } - } - }; - this.setErrno(errno); - this.message = ERRNO_MESSAGES[errno]; - if (this.stack) { - Object.defineProperty(this, "stack", { - value: new Error().stack, - writable: true - }); - this.stack = demangleAll(this.stack); - } - }; - FS.ErrnoError.prototype = new Error(); - FS.ErrnoError.prototype.constructor = FS.ErrnoError; - [ 44 ].forEach(function(code) { - FS.genericErrors[code] = new FS.ErrnoError(code); - FS.genericErrors[code].stack = ""; - }); - }, - staticInit: function() { - FS.ensureErrnoError(); - FS.nameTable = new Array(4096); - FS.mount(MEMFS, {}, "/"); - FS.createDefaultDirectories(); - FS.createDefaultDevices(); - FS.createSpecialDirectories(); - FS.filesystems = { - "MEMFS": MEMFS, - "WORKERFS": WORKERFS - }; - }, - init: function(input, output, error) { - assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"); - FS.init.initialized = true; - FS.ensureErrnoError(); - Module["stdin"] = input || Module["stdin"]; - Module["stdout"] = output || Module["stdout"]; - Module["stderr"] = error || Module["stderr"]; - FS.createStandardStreams(); - }, - quit: function() { - FS.init.initialized = false; - var fflush = Module["_fflush"]; - if (fflush) fflush(0); - for (var i = 0; i < FS.streams.length; i++) { - var stream = FS.streams[i]; - if (!stream) { - continue; - } - FS.close(stream); - } - }, - getMode: function(canRead, canWrite) { - var mode = 0; - if (canRead) mode |= 292 | 73; - if (canWrite) mode |= 146; - return mode; - }, - findObject: function(path, dontResolveLastLink) { - var ret = FS.analyzePath(path, dontResolveLastLink); - if (ret.exists) { - return ret.object; - } else { - return null; - } - }, - analyzePath: function(path, dontResolveLastLink) { - try { - var lookup = FS.lookupPath(path, { - follow: !dontResolveLastLink - }); - path = lookup.path; - } catch (e) {} - var ret = { - isRoot: false, - exists: false, - error: 0, - name: null, - path: null, - object: null, - parentExists: false, - parentPath: null, - parentObject: null - }; - try { - var lookup = FS.lookupPath(path, { - parent: true - }); - ret.parentExists = true; - ret.parentPath = lookup.path; - ret.parentObject = lookup.node; - ret.name = PATH.basename(path); - lookup = FS.lookupPath(path, { - follow: !dontResolveLastLink - }); - ret.exists = true; - ret.path = lookup.path; - ret.object = lookup.node; - ret.name = lookup.node.name; - ret.isRoot = lookup.path === "/"; - } catch (e) { - ret.error = e.errno; - } - return ret; - }, - createPath: function(parent, path, canRead, canWrite) { - parent = typeof parent === "string" ? parent : FS.getPath(parent); - var parts = path.split("/").reverse(); - while (parts.length) { - var part = parts.pop(); - if (!part) continue; - var current = PATH.join2(parent, part); - try { - FS.mkdir(current); - } catch (e) {} - parent = current; - } - return current; - }, - createFile: function(parent, name, properties, canRead, canWrite) { - var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); - var mode = FS.getMode(canRead, canWrite); - return FS.create(path, mode); - }, - createDataFile: function(parent, name, data, canRead, canWrite, canOwn) { - var path = name ? PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name) : parent; - var mode = FS.getMode(canRead, canWrite); - var node = FS.create(path, mode); - if (data) { - if (typeof data === "string") { - var arr = new Array(data.length); - for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); - data = arr; - } - FS.chmod(node, mode | 146); - var stream = FS.open(node, 577); - FS.write(stream, data, 0, data.length, 0, canOwn); - FS.close(stream); - FS.chmod(node, mode); - } - return node; - }, - createDevice: function(parent, name, input, output) { - var path = PATH.join2(typeof parent === "string" ? parent : FS.getPath(parent), name); - var mode = FS.getMode(!!input, !!output); - if (!FS.createDevice.major) FS.createDevice.major = 64; - var dev = FS.makedev(FS.createDevice.major++, 0); - FS.registerDevice(dev, { - open: function(stream) { - stream.seekable = false; - }, - close: function(stream) { - if (output && output.buffer && output.buffer.length) { - output(10); - } - }, - read: function(stream, buffer, offset, length, pos) { - var bytesRead = 0; - for (var i = 0; i < length; i++) { - var result; - try { - result = input(); - } catch (e) { - throw new FS.ErrnoError(29); - } - if (result === undefined && bytesRead === 0) { - throw new FS.ErrnoError(6); - } - if (result === null || result === undefined) break; - bytesRead++; - buffer[offset + i] = result; - } - if (bytesRead) { - stream.node.timestamp = Date.now(); - } - return bytesRead; - }, - write: function(stream, buffer, offset, length, pos) { - for (var i = 0; i < length; i++) { - try { - output(buffer[offset + i]); - } catch (e) { - throw new FS.ErrnoError(29); - } - } - if (length) { - stream.node.timestamp = Date.now(); - } - return i; - } - }); - return FS.mkdev(path, mode, dev); - }, - forceLoadFile: function(obj) { - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; - if (typeof XMLHttpRequest !== "undefined") { - throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); - } else if (read_) { - try { - obj.contents = intArrayFromString(read_(obj.url), true); - obj.usedBytes = obj.contents.length; - } catch (e) { - throw new FS.ErrnoError(29); - } - } else { - throw new Error("Cannot load without read() or XMLHttpRequest."); - } - }, - createLazyFile: function(parent, name, url, canRead, canWrite) { - function LazyUint8Array() { - this.lengthKnown = false; - this.chunks = []; - } - LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { - if (idx > this.length - 1 || idx < 0) { - return undefined; - } - var chunkOffset = idx % this.chunkSize; - var chunkNum = idx / this.chunkSize | 0; - return this.getter(chunkNum)[chunkOffset]; - }; - LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { - this.getter = getter; - }; - LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { - var xhr = new XMLHttpRequest(); - xhr.open("HEAD", url, false); - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - var datalength = Number(xhr.getResponseHeader("Content-length")); - var header; - var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; - var usesGzip = (header = xhr.getResponseHeader("Content-Encoding")) && header === "gzip"; - var chunkSize = 1024 * 1024; - if (!hasByteServing) chunkSize = datalength; - var doXHR = function(from, to) { - if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); - if (to > datalength - 1) throw new Error("only " + datalength + " bytes available! programmer error!"); - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, false); - if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); - if (typeof Uint8Array != "undefined") xhr.responseType = "arraybuffer"; - if (xhr.overrideMimeType) { - xhr.overrideMimeType("text/plain; charset=x-user-defined"); - } - xhr.send(null); - if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); - if (xhr.response !== undefined) { - return new Uint8Array(xhr.response || []); - } else { - return intArrayFromString(xhr.responseText || "", true); - } - }; - var lazyArray = this; - lazyArray.setDataGetter(function(chunkNum) { - var start = chunkNum * chunkSize; - var end = (chunkNum + 1) * chunkSize - 1; - end = Math.min(end, datalength - 1); - if (typeof lazyArray.chunks[chunkNum] === "undefined") { - lazyArray.chunks[chunkNum] = doXHR(start, end); - } - if (typeof lazyArray.chunks[chunkNum] === "undefined") throw new Error("doXHR failed!"); - return lazyArray.chunks[chunkNum]; - }); - if (usesGzip || !datalength) { - chunkSize = datalength = 1; - datalength = this.getter(0).length; - chunkSize = datalength; - out("LazyFiles on gzip forces download of the whole file when length is accessed"); - } - this._length = datalength; - this._chunkSize = chunkSize; - this.lengthKnown = true; - }; - if (typeof XMLHttpRequest !== "undefined") { - if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; - var lazyArray = new LazyUint8Array(); - Object.defineProperties(lazyArray, { - length: { - get: function() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._length; - } - }, - chunkSize: { - get: function() { - if (!this.lengthKnown) { - this.cacheLength(); - } - return this._chunkSize; - } - } - }); - var properties = { - isDevice: false, - contents: lazyArray - }; - } else { - var properties = { - isDevice: false, - url: url - }; - } - var node = FS.createFile(parent, name, properties, canRead, canWrite); - if (properties.contents) { - node.contents = properties.contents; - } else if (properties.url) { - node.contents = null; - node.url = properties.url; - } - Object.defineProperties(node, { - usedBytes: { - get: function() { - return this.contents.length; - } - } - }); - var stream_ops = {}; - var keys = Object.keys(node.stream_ops); - keys.forEach(function(key) { - var fn = node.stream_ops[key]; - stream_ops[key] = function forceLoadLazyFile() { - FS.forceLoadFile(node); - return fn.apply(null, arguments); - }; - }); - stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { - FS.forceLoadFile(node); - var contents = stream.node.contents; - if (position >= contents.length) return 0; - var size = Math.min(contents.length - position, length); - assert(size >= 0); - if (contents.slice) { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents[position + i]; - } - } else { - for (var i = 0; i < size; i++) { - buffer[offset + i] = contents.get(position + i); - } - } - return size; - }; - node.stream_ops = stream_ops; - return node; - }, - createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { - Browser.init(); - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; - var dep = getUniqueRunDependency("cp " + fullname); - function processData(byteArray) { - function finish(byteArray) { - if (preFinish) preFinish(); - if (!dontCreateFile) { - FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); - } - if (onload) onload(); - removeRunDependency(dep); - } - var handled = false; - Module["preloadPlugins"].forEach(function(plugin) { - if (handled) return; - if (plugin["canHandle"](fullname)) { - plugin["handle"](byteArray, fullname, finish, function() { - if (onerror) onerror(); - removeRunDependency(dep); - }); - handled = true; - } - }); - if (!handled) finish(byteArray); - } - addRunDependency(dep); - if (typeof url == "string") { - Browser.asyncLoad(url, function(byteArray) { - processData(byteArray); - }, onerror); - } else { - processData(url); - } - }, - indexedDB: function() { - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; - }, - DB_NAME: function() { - return "EM_FS_" + window.location.pathname; - }, - DB_VERSION: 20, - DB_STORE_NAME: "FILE_DATA", - saveFilesToDB: function(paths, onload, onerror) { - onload = onload || function() {}; - onerror = onerror || function() {}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { - out("creating db"); - var db = openRequest.result; - db.createObjectStore(FS.DB_STORE_NAME); - }; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - var transaction = db.transaction([ FS.DB_STORE_NAME ], "readwrite"); - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var putRequest = files.put(FS.analyzePath(path).object.contents, path); - putRequest.onsuccess = function putRequest_onsuccess() { - ok++; - if (ok + fail == total) finish(); - }; - putRequest.onerror = function putRequest_onerror() { - fail++; - if (ok + fail == total) finish(); - }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }, - loadFilesFromDB: function(paths, onload, onerror) { - onload = onload || function() {}; - onerror = onerror || function() {}; - var indexedDB = FS.indexedDB(); - try { - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); - } catch (e) { - return onerror(e); - } - openRequest.onupgradeneeded = onerror; - openRequest.onsuccess = function openRequest_onsuccess() { - var db = openRequest.result; - try { - var transaction = db.transaction([ FS.DB_STORE_NAME ], "readonly"); - } catch (e) { - onerror(e); - return; - } - var files = transaction.objectStore(FS.DB_STORE_NAME); - var ok = 0, fail = 0, total = paths.length; - function finish() { - if (fail == 0) onload(); else onerror(); - } - paths.forEach(function(path) { - var getRequest = files.get(path); - getRequest.onsuccess = function getRequest_onsuccess() { - if (FS.analyzePath(path).exists) { - FS.unlink(path); - } - FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); - ok++; - if (ok + fail == total) finish(); - }; - getRequest.onerror = function getRequest_onerror() { - fail++; - if (ok + fail == total) finish(); - }; - }); - transaction.onerror = onerror; - }; - openRequest.onerror = onerror; - }, - absolutePath: function() { - abort("FS.absolutePath has been removed; use PATH_FS.resolve instead"); - }, - createFolder: function() { - abort("FS.createFolder has been removed; use FS.mkdir instead"); - }, - createLink: function() { - abort("FS.createLink has been removed; use FS.symlink instead"); - }, - joinPath: function() { - abort("FS.joinPath has been removed; use PATH.join instead"); - }, - mmapAlloc: function() { - abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc"); - }, - standardizePath: function() { - abort("FS.standardizePath has been removed; use PATH.normalize instead"); - } -}; - -var SYSCALLS = { - mappings: {}, - DEFAULT_POLLMASK: 5, - umask: 511, - calculateAt: function(dirfd, path) { - if (path[0] !== "/") { - var dir; - if (dirfd === -100) { - dir = FS.cwd(); - } else { - var dirstream = FS.getStream(dirfd); - if (!dirstream) throw new FS.ErrnoError(8); - dir = dirstream.path; - } - path = PATH.join2(dir, path); - } - return path; - }, - doStat: function(func, path, buf) { - try { - var stat = func(path); - } catch (e) { - if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { - return -54; - } - throw e; - } - HEAP32[buf >> 2] = stat.dev; - HEAP32[buf + 4 >> 2] = 0; - HEAP32[buf + 8 >> 2] = stat.ino; - HEAP32[buf + 12 >> 2] = stat.mode; - HEAP32[buf + 16 >> 2] = stat.nlink; - HEAP32[buf + 20 >> 2] = stat.uid; - HEAP32[buf + 24 >> 2] = stat.gid; - HEAP32[buf + 28 >> 2] = stat.rdev; - HEAP32[buf + 32 >> 2] = 0; - tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], - HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; - HEAP32[buf + 48 >> 2] = 4096; - HEAP32[buf + 52 >> 2] = stat.blocks; - HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0; - HEAP32[buf + 60 >> 2] = 0; - HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0; - HEAP32[buf + 68 >> 2] = 0; - HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0; - HEAP32[buf + 76 >> 2] = 0; - tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], - HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1]; - return 0; - }, - doMsync: function(addr, stream, len, flags, offset) { - var buffer = HEAPU8.slice(addr, addr + len); - FS.msync(stream, buffer, offset, len, flags); - }, - doMkdir: function(path, mode) { - path = PATH.normalize(path); - if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); - FS.mkdir(path, mode, 0); - return 0; - }, - doMknod: function(path, mode, dev) { - switch (mode & 61440) { - case 32768: - case 8192: - case 24576: - case 4096: - case 49152: - break; - - default: - return -28; - } - FS.mknod(path, mode, dev); - return 0; - }, - doReadlink: function(path, buf, bufsize) { - if (bufsize <= 0) return -28; - var ret = FS.readlink(path); - var len = Math.min(bufsize, lengthBytesUTF8(ret)); - var endChar = HEAP8[buf + len]; - stringToUTF8(ret, buf, bufsize + 1); - HEAP8[buf + len] = endChar; - return len; - }, - doAccess: function(path, amode) { - if (amode & ~7) { - return -28; - } - var node; - var lookup = FS.lookupPath(path, { - follow: true - }); - node = lookup.node; - if (!node) { - return -44; - } - var perms = ""; - if (amode & 4) perms += "r"; - if (amode & 2) perms += "w"; - if (amode & 1) perms += "x"; - if (perms && FS.nodePermissions(node, perms)) { - return -2; - } - return 0; - }, - doDup: function(path, flags, suggestFD) { - var suggest = FS.getStream(suggestFD); - if (suggest) FS.close(suggest); - return FS.open(path, flags, 0, suggestFD, suggestFD).fd; - }, - doReadv: function(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAP32[iov + i * 8 >> 2]; - var len = HEAP32[iov + (i * 8 + 4) >> 2]; - var curr = FS.read(stream, HEAP8, ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - if (curr < len) break; - } - return ret; - }, - doWritev: function(stream, iov, iovcnt, offset) { - var ret = 0; - for (var i = 0; i < iovcnt; i++) { - var ptr = HEAP32[iov + i * 8 >> 2]; - var len = HEAP32[iov + (i * 8 + 4) >> 2]; - var curr = FS.write(stream, HEAP8, ptr, len, offset); - if (curr < 0) return -1; - ret += curr; - } - return ret; - }, - varargs: undefined, - get: function() { - assert(SYSCALLS.varargs != undefined); - SYSCALLS.varargs += 4; - var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; - return ret; - }, - getStr: function(ptr) { - var ret = UTF8ToString(ptr); - return ret; - }, - getStreamFromFD: function(fd) { - var stream = FS.getStream(fd); - if (!stream) throw new FS.ErrnoError(8); - return stream; - }, - get64: function(low, high) { - if (low >= 0) assert(high === 0); else assert(high === -1); - return low; - } -}; - -function ___sys_access(path, amode) { - try { - path = SYSCALLS.getStr(path); - return SYSCALLS.doAccess(path, amode); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_chmod(path, mode) { - try { - path = SYSCALLS.getStr(path); - FS.chmod(path, mode); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_chown32(path, owner, group) { - try { - path = SYSCALLS.getStr(path); - FS.chown(path, owner, group); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_fchmod(fd, mode) { - try { - FS.fchmod(fd, mode); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_fchown32(fd, owner, group) { - try { - FS.fchown(fd, owner, group); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_fcntl64(fd, cmd, varargs) { - SYSCALLS.varargs = varargs; - try { - var stream = SYSCALLS.getStreamFromFD(fd); - switch (cmd) { - case 0: - { - var arg = SYSCALLS.get(); - if (arg < 0) { - return -28; - } - var newStream; - newStream = FS.open(stream.path, stream.flags, 0, arg); - return newStream.fd; - } - - case 1: - case 2: - return 0; - - case 3: - return stream.flags; - - case 4: - { - var arg = SYSCALLS.get(); - stream.flags |= arg; - return 0; - } - - case 12: - { - var arg = SYSCALLS.get(); - var offset = 0; - HEAP16[arg + offset >> 1] = 2; - return 0; - } - - case 13: - case 14: - return 0; - - case 16: - case 8: - return -28; - - case 9: - setErrNo(28); - return -1; - - default: - { - return -28; - } - } - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_fstat64(fd, buf) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - return SYSCALLS.doStat(FS.stat, stream.path, buf); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_ftruncate64(fd, zero, low, high) { - try { - var length = SYSCALLS.get64(low, high); - FS.ftruncate(fd, length); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_getcwd(buf, size) { - try { - if (size === 0) return -28; - var cwd = FS.cwd(); - var cwdLengthInBytes = lengthBytesUTF8(cwd); - if (size < cwdLengthInBytes + 1) return -68; - stringToUTF8(cwd, buf, size); - return buf; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_getegid32() { - return 0; -} - -function ___sys_geteuid32() { - return ___sys_getegid32(); -} - -function ___sys_getpid() { - return 42; -} - -function ___sys_ioctl(fd, op, varargs) { - SYSCALLS.varargs = varargs; - try { - var stream = SYSCALLS.getStreamFromFD(fd); - switch (op) { - case 21509: - case 21505: - { - if (!stream.tty) return -59; - return 0; - } - - case 21510: - case 21511: - case 21512: - case 21506: - case 21507: - case 21508: - { - if (!stream.tty) return -59; - return 0; - } - - case 21519: - { - if (!stream.tty) return -59; - var argp = SYSCALLS.get(); - HEAP32[argp >> 2] = 0; - return 0; - } - - case 21520: - { - if (!stream.tty) return -59; - return -28; - } - - case 21531: - { - var argp = SYSCALLS.get(); - return FS.ioctl(stream, op, argp); - } - - case 21523: - { - if (!stream.tty) return -59; - return 0; - } - - case 21524: - { - if (!stream.tty) return -59; - return 0; - } - - default: - abort("bad ioctl syscall " + op); - } - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_lstat64(path, buf) { - try { - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.lstat, path, buf); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_mkdir(path, mode) { - try { - path = SYSCALLS.getStr(path); - return SYSCALLS.doMkdir(path, mode); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function syscallMmap2(addr, len, prot, flags, fd, off) { - off <<= 12; - var ptr; - var allocated = false; - if ((flags & 16) !== 0 && addr % 16384 !== 0) { - return -28; - } - if ((flags & 32) !== 0) { - ptr = _memalign(16384, len); - if (!ptr) return -48; - _memset(ptr, 0, len); - allocated = true; - } else { - var info = FS.getStream(fd); - if (!info) return -8; - var res = FS.mmap(info, addr, len, off, prot, flags); - ptr = res.ptr; - allocated = res.allocated; - } - SYSCALLS.mappings[ptr] = { - malloc: ptr, - len: len, - allocated: allocated, - fd: fd, - prot: prot, - flags: flags, - offset: off - }; - return ptr; -} - -function ___sys_mmap2(addr, len, prot, flags, fd, off) { - try { - return syscallMmap2(addr, len, prot, flags, fd, off); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_mprotect(addr, len, size) { - return 0; -} - -function syscallMunmap(addr, len) { - if ((addr | 0) === -1 || len === 0) { - return -28; - } - var info = SYSCALLS.mappings[addr]; - if (!info) return 0; - if (len === info.len) { - var stream = FS.getStream(info.fd); - if (stream) { - if (info.prot & 2) { - SYSCALLS.doMsync(addr, stream, len, info.flags, info.offset); - } - FS.munmap(stream); - } - SYSCALLS.mappings[addr] = null; - if (info.allocated) { - _free(info.malloc); - } - } - return 0; -} - -function ___sys_munmap(addr, len) { - try { - return syscallMunmap(addr, len); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_open(path, flags, varargs) { - SYSCALLS.varargs = varargs; - try { - var pathname = SYSCALLS.getStr(path); - var mode = varargs ? SYSCALLS.get() : 0; - var stream = FS.open(pathname, flags, mode); - return stream.fd; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_readlink(path, buf, bufsize) { - try { - path = SYSCALLS.getStr(path); - return SYSCALLS.doReadlink(path, buf, bufsize); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_rmdir(path) { - try { - path = SYSCALLS.getStr(path); - FS.rmdir(path); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_stat64(path, buf) { - try { - path = SYSCALLS.getStr(path); - return SYSCALLS.doStat(FS.stat, path, buf); - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function ___sys_unlink(path) { - try { - path = SYSCALLS.getStr(path); - FS.unlink(path); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return -e.errno; - } -} - -function _abort() { - abort(); -} - -function _emscripten_memcpy_big(dest, src, num) { - HEAPU8.copyWithin(dest, src, src + num); -} - -function _emscripten_get_heap_size() { - return HEAPU8.length; -} - -function emscripten_realloc_buffer(size) { - try { - wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); - updateGlobalBufferAndViews(wasmMemory.buffer); - return 1; - } catch (e) { - console.error("emscripten_realloc_buffer: Attempted to grow heap from " + buffer.byteLength + " bytes to " + size + " bytes, but got error: " + e); - } -} - -function _emscripten_resize_heap(requestedSize) { - requestedSize = requestedSize >>> 0; - var oldSize = _emscripten_get_heap_size(); - assert(requestedSize > oldSize); - var maxHeapSize = 2147483648; - if (requestedSize > maxHeapSize) { - err("Cannot enlarge memory, asked to go up to " + requestedSize + " bytes, but the limit is " + maxHeapSize + " bytes!"); - return false; - } - var minHeapSize = 16777216; - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { - var overGrownHeapSize = oldSize * (1 + .2 / cutDown); - overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); - var newSize = Math.min(maxHeapSize, alignUp(Math.max(minHeapSize, requestedSize, overGrownHeapSize), 65536)); - var replacement = emscripten_realloc_buffer(newSize); - if (replacement) { - return true; - } - } - err("Failed to grow the heap from " + oldSize + " bytes to " + newSize + " bytes, not enough memory!"); - return false; -} - -function _emscripten_thread_sleep(msecs) { - var start = _emscripten_get_now(); - while (_emscripten_get_now() - start < msecs) {} -} - -var ENV = {}; - -function getExecutableName() { - return thisProgram || "./this.program"; -} - -function getEnvStrings() { - if (!getEnvStrings.strings) { - var lang = (typeof navigator === "object" && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8"; - var env = { - "USER": "web_user", - "LOGNAME": "web_user", - "PATH": "/", - "PWD": "/", - "HOME": "/home/web_user", - "LANG": lang, - "_": getExecutableName() - }; - for (var x in ENV) { - env[x] = ENV[x]; - } - var strings = []; - for (var x in env) { - strings.push(x + "=" + env[x]); - } - getEnvStrings.strings = strings; - } - return getEnvStrings.strings; -} - -function _environ_get(__environ, environ_buf) { - try { - var bufSize = 0; - getEnvStrings().forEach(function(string, i) { - var ptr = environ_buf + bufSize; - HEAP32[__environ + i * 4 >> 2] = ptr; - writeAsciiToMemory(string, ptr); - bufSize += string.length + 1; - }); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _environ_sizes_get(penviron_count, penviron_buf_size) { - try { - var strings = getEnvStrings(); - HEAP32[penviron_count >> 2] = strings.length; - var bufSize = 0; - strings.forEach(function(string) { - bufSize += string.length + 1; - }); - HEAP32[penviron_buf_size >> 2] = bufSize; - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _exit(status) { - exit(status); -} - -function _fd_close(fd) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - FS.close(stream); - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _fd_fdstat_get(fd, pbuf) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4; - HEAP8[pbuf >> 0] = type; - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _fd_read(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - var num = SYSCALLS.doReadv(stream, iov, iovcnt); - HEAP32[pnum >> 2] = num; - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - var HIGH_OFFSET = 4294967296; - var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); - var DOUBLE_LIMIT = 9007199254740992; - if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { - return -61; - } - FS.llseek(stream, offset, whence); - tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], - HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; - if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _fd_sync(fd) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - if (stream.stream_ops && stream.stream_ops.fsync) { - return -stream.stream_ops.fsync(stream); - } - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _fd_write(fd, iov, iovcnt, pnum) { - try { - var stream = SYSCALLS.getStreamFromFD(fd); - var num = SYSCALLS.doWritev(stream, iov, iovcnt); - HEAP32[pnum >> 2] = num; - return 0; - } catch (e) { - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); - return e.errno; - } -} - -function _getentropy(buffer, size) { - if (!_getentropy.randomDevice) { - _getentropy.randomDevice = getRandomDevice(); - } - for (var i = 0; i < size; i++) { - HEAP8[buffer + i >> 0] = _getentropy.randomDevice(); - } - return 0; -} - -function _gettimeofday(ptr) { - var now = Date.now(); - HEAP32[ptr >> 2] = now / 1e3 | 0; - HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0; - return 0; -} - -function _setTempRet0($i) { -} - -function __isLeapYear(year) { - return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); -} - -function __arraySum(array, index) { - var sum = 0; - for (var i = 0; i <= index; sum += array[i++]) {} - return sum; -} - -var __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; - -var __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; - -function __addDays(date, days) { - var newDate = new Date(date.getTime()); - while (days > 0) { - var leap = __isLeapYear(newDate.getFullYear()); - var currentMonth = newDate.getMonth(); - var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth]; - if (days > daysInCurrentMonth - newDate.getDate()) { - days -= daysInCurrentMonth - newDate.getDate() + 1; - newDate.setDate(1); - if (currentMonth < 11) { - newDate.setMonth(currentMonth + 1); - } else { - newDate.setMonth(0); - newDate.setFullYear(newDate.getFullYear() + 1); - } - } else { - newDate.setDate(newDate.getDate() + days); - return newDate; - } - } - return newDate; -} - -function _strftime(s, maxsize, format, tm) { - var tm_zone = HEAP32[tm + 40 >> 2]; - var date = { - tm_sec: HEAP32[tm >> 2], - tm_min: HEAP32[tm + 4 >> 2], - tm_hour: HEAP32[tm + 8 >> 2], - tm_mday: HEAP32[tm + 12 >> 2], - tm_mon: HEAP32[tm + 16 >> 2], - tm_year: HEAP32[tm + 20 >> 2], - tm_wday: HEAP32[tm + 24 >> 2], - tm_yday: HEAP32[tm + 28 >> 2], - tm_isdst: HEAP32[tm + 32 >> 2], - tm_gmtoff: HEAP32[tm + 36 >> 2], - tm_zone: tm_zone ? UTF8ToString(tm_zone) : "" - }; - var pattern = UTF8ToString(format); - var EXPANSION_RULES_1 = { - "%c": "%a %b %d %H:%M:%S %Y", - "%D": "%m/%d/%y", - "%F": "%Y-%m-%d", - "%h": "%b", - "%r": "%I:%M:%S %p", - "%R": "%H:%M", - "%T": "%H:%M:%S", - "%x": "%m/%d/%y", - "%X": "%H:%M:%S", - "%Ec": "%c", - "%EC": "%C", - "%Ex": "%m/%d/%y", - "%EX": "%H:%M:%S", - "%Ey": "%y", - "%EY": "%Y", - "%Od": "%d", - "%Oe": "%e", - "%OH": "%H", - "%OI": "%I", - "%Om": "%m", - "%OM": "%M", - "%OS": "%S", - "%Ou": "%u", - "%OU": "%U", - "%OV": "%V", - "%Ow": "%w", - "%OW": "%W", - "%Oy": "%y" - }; - for (var rule in EXPANSION_RULES_1) { - pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_1[rule]); - } - var WEEKDAYS = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; - var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; - function leadingSomething(value, digits, character) { - var str = typeof value === "number" ? value.toString() : value || ""; - while (str.length < digits) { - str = character[0] + str; - } - return str; - } - function leadingNulls(value, digits) { - return leadingSomething(value, digits, "0"); - } - function compareByDay(date1, date2) { - function sgn(value) { - return value < 0 ? -1 : value > 0 ? 1 : 0; - } - var compare; - if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) { - if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) { - compare = sgn(date1.getDate() - date2.getDate()); - } - } - return compare; - } - function getFirstWeekStartDate(janFourth) { - switch (janFourth.getDay()) { - case 0: - return new Date(janFourth.getFullYear() - 1, 11, 29); - - case 1: - return janFourth; - - case 2: - return new Date(janFourth.getFullYear(), 0, 3); - - case 3: - return new Date(janFourth.getFullYear(), 0, 2); - - case 4: - return new Date(janFourth.getFullYear(), 0, 1); - - case 5: - return new Date(janFourth.getFullYear() - 1, 11, 31); - - case 6: - return new Date(janFourth.getFullYear() - 1, 11, 30); - } - } - function getWeekBasedYear(date) { - var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); - var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4); - var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4); - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) { - if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) { - return thisDate.getFullYear() + 1; - } else { - return thisDate.getFullYear(); - } - } else { - return thisDate.getFullYear() - 1; - } - } - var EXPANSION_RULES_2 = { - "%a": function(date) { - return WEEKDAYS[date.tm_wday].substring(0, 3); - }, - "%A": function(date) { - return WEEKDAYS[date.tm_wday]; - }, - "%b": function(date) { - return MONTHS[date.tm_mon].substring(0, 3); - }, - "%B": function(date) { - return MONTHS[date.tm_mon]; - }, - "%C": function(date) { - var year = date.tm_year + 1900; - return leadingNulls(year / 100 | 0, 2); - }, - "%d": function(date) { - return leadingNulls(date.tm_mday, 2); - }, - "%e": function(date) { - return leadingSomething(date.tm_mday, 2, " "); - }, - "%g": function(date) { - return getWeekBasedYear(date).toString().substring(2); - }, - "%G": function(date) { - return getWeekBasedYear(date); - }, - "%H": function(date) { - return leadingNulls(date.tm_hour, 2); - }, - "%I": function(date) { - var twelveHour = date.tm_hour; - if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12; - return leadingNulls(twelveHour, 2); - }, - "%j": function(date) { - return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3); - }, - "%m": function(date) { - return leadingNulls(date.tm_mon + 1, 2); - }, - "%M": function(date) { - return leadingNulls(date.tm_min, 2); - }, - "%n": function() { - return "\n"; - }, - "%p": function(date) { - if (date.tm_hour >= 0 && date.tm_hour < 12) { - return "AM"; - } else { - return "PM"; - } - }, - "%S": function(date) { - return leadingNulls(date.tm_sec, 2); - }, - "%t": function() { - return "\t"; - }, - "%u": function(date) { - return date.tm_wday || 7; - }, - "%U": function(date) { - var janFirst = new Date(date.tm_year + 1900, 0, 1); - var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay()); - var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday); - if (compareByDay(firstSunday, endDate) < 0) { - var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31; - var firstSundayUntilEndJanuary = 31 - firstSunday.getDate(); - var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate(); - return leadingNulls(Math.ceil(days / 7), 2); - } - return compareByDay(firstSunday, janFirst) === 0 ? "01" : "00"; - }, - "%V": function(date) { - var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4); - var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4); - var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear); - var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear); - var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday); - if (compareByDay(endDate, firstWeekStartThisYear) < 0) { - return "53"; - } - if (compareByDay(firstWeekStartNextYear, endDate) <= 0) { - return "01"; - } - var daysDifference; - if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) { - daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate(); - } else { - daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate(); - } - return leadingNulls(Math.ceil(daysDifference / 7), 2); - }, - "%w": function(date) { - return date.tm_wday; - }, - "%W": function(date) { - var janFirst = new Date(date.tm_year, 0, 1); - var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1); - var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday); - if (compareByDay(firstMonday, endDate) < 0) { - var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31; - var firstMondayUntilEndJanuary = 31 - firstMonday.getDate(); - var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate(); - return leadingNulls(Math.ceil(days / 7), 2); - } - return compareByDay(firstMonday, janFirst) === 0 ? "01" : "00"; - }, - "%y": function(date) { - return (date.tm_year + 1900).toString().substring(2); - }, - "%Y": function(date) { - return date.tm_year + 1900; - }, - "%z": function(date) { - var off = date.tm_gmtoff; - var ahead = off >= 0; - off = Math.abs(off) / 60; - off = off / 60 * 100 + off % 60; - return (ahead ? "+" : "-") + String("0000" + off).slice(-4); - }, - "%Z": function(date) { - return date.tm_zone; - }, - "%%": function() { - return "%"; - } - }; - for (var rule in EXPANSION_RULES_2) { - if (pattern.indexOf(rule) >= 0) { - pattern = pattern.replace(new RegExp(rule, "g"), EXPANSION_RULES_2[rule](date)); - } - } - var bytes = intArrayFromString(pattern, false); - if (bytes.length > maxsize) { - return 0; - } - writeArrayToMemory(bytes, s); - return bytes.length - 1; -} - -function _strftime_l(s, maxsize, format, tm) { - return _strftime(s, maxsize, format, tm); -} - -function _sysconf(name) { - switch (name) { - case 30: - return 16384; - - case 85: - var maxHeapSize = 2147483648; - return maxHeapSize / 16384; - - case 132: - case 133: - case 12: - case 137: - case 138: - case 15: - case 235: - case 16: - case 17: - case 18: - case 19: - case 20: - case 149: - case 13: - case 10: - case 236: - case 153: - case 9: - case 21: - case 22: - case 159: - case 154: - case 14: - case 77: - case 78: - case 139: - case 82: - case 68: - case 67: - case 164: - case 11: - case 29: - case 47: - case 48: - case 95: - case 52: - case 51: - case 46: - return 200809; - - case 27: - case 246: - case 127: - case 128: - case 23: - case 24: - case 160: - case 161: - case 181: - case 182: - case 242: - case 183: - case 184: - case 243: - case 244: - case 245: - case 165: - case 178: - case 179: - case 49: - case 50: - case 168: - case 169: - case 175: - case 170: - case 171: - case 172: - case 97: - case 76: - case 32: - case 173: - case 35: - case 80: - case 81: - case 79: - return -1; - - case 176: - case 177: - case 7: - case 155: - case 8: - case 157: - case 125: - case 126: - case 92: - case 93: - case 129: - case 130: - case 131: - case 94: - case 91: - return 1; - - case 74: - case 60: - case 69: - case 70: - case 4: - return 1024; - - case 31: - case 42: - case 72: - return 32; - - case 87: - case 26: - case 33: - return 2147483647; - - case 34: - case 1: - return 47839; - - case 38: - case 36: - return 99; - - case 43: - case 37: - return 2048; - - case 0: - return 2097152; - - case 3: - return 65536; - - case 28: - return 32768; - - case 44: - return 32767; - - case 75: - return 16384; - - case 39: - return 1e3; - - case 89: - return 700; - - case 71: - return 256; - - case 40: - return 255; - - case 2: - return 100; - - case 180: - return 64; - - case 25: - return 20; - - case 5: - return 16; - - case 6: - return 6; - - case 73: - return 4; - - case 84: - { - if (typeof navigator === "object") return navigator["hardwareConcurrency"] || 1; - return 1; - } - } - setErrNo(28); - return -1; -} - -function _time(ptr) { - var ret = Date.now() / 1e3 | 0; - if (ptr) { - HEAP32[ptr >> 2] = ret; - } - return ret; -} - -function setFileTime(path, time) { - path = UTF8ToString(path); - try { - FS.utime(path, time, time); - return 0; - } catch (e) { - if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace(); - setErrNo(e.errno); - return -1; - } -} - -function _utime(path, times) { - var time; - if (times) { - time = HEAP32[times + 4 >> 2] * 1e3; - } else { - time = Date.now(); - } - return setFileTime(path, time); -} - -var FSNode = function(parent, name, mode, rdev) { - if (!parent) { - parent = this; - } - this.parent = parent; - this.mount = parent.mount; - this.mounted = null; - this.id = FS.nextInode++; - this.name = name; - this.mode = mode; - this.node_ops = {}; - this.stream_ops = {}; - this.rdev = rdev; -}; - -var readMode = 292 | 73; - -var writeMode = 146; - -Object.defineProperties(FSNode.prototype, { - read: { - get: function() { - return (this.mode & readMode) === readMode; - }, - set: function(val) { - val ? this.mode |= readMode : this.mode &= ~readMode; - } - }, - write: { - get: function() { - return (this.mode & writeMode) === writeMode; - }, - set: function(val) { - val ? this.mode |= writeMode : this.mode &= ~writeMode; - } - }, - isFolder: { - get: function() { - return FS.isDir(this.mode); - } - }, - isDevice: { - get: function() { - return FS.isChrdev(this.mode); - } - } -}); - -FS.FSNode = FSNode; - -FS.staticInit(); - -function intArrayFromString(stringy, dontAddNull, length) { - var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; - var u8array = new Array(len); - var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); - if (dontAddNull) u8array.length = numBytesWritten; - return u8array; -} - -var asmLibraryArg = { - "__clock_gettime": ___clock_gettime, - "__cxa_atexit": ___cxa_atexit, - "__localtime_r": ___localtime_r, - "__sys_access": ___sys_access, - "__sys_chmod": ___sys_chmod, - "__sys_chown32": ___sys_chown32, - "__sys_fchmod": ___sys_fchmod, - "__sys_fchown32": ___sys_fchown32, - "__sys_fcntl64": ___sys_fcntl64, - "__sys_fstat64": ___sys_fstat64, - "__sys_ftruncate64": ___sys_ftruncate64, - "__sys_getcwd": ___sys_getcwd, - "__sys_geteuid32": ___sys_geteuid32, - "__sys_getpid": ___sys_getpid, - "__sys_ioctl": ___sys_ioctl, - "__sys_lstat64": ___sys_lstat64, - "__sys_mkdir": ___sys_mkdir, - "__sys_mmap2": ___sys_mmap2, - "__sys_mprotect": ___sys_mprotect, - "__sys_munmap": ___sys_munmap, - "__sys_open": ___sys_open, - "__sys_readlink": ___sys_readlink, - "__sys_rmdir": ___sys_rmdir, - "__sys_stat64": ___sys_stat64, - "__sys_unlink": ___sys_unlink, - "abort": _abort, - "emscripten_get_now": _emscripten_get_now, - "emscripten_memcpy_big": _emscripten_memcpy_big, - "emscripten_resize_heap": _emscripten_resize_heap, - "emscripten_thread_sleep": _emscripten_thread_sleep, - "environ_get": _environ_get, - "environ_sizes_get": _environ_sizes_get, - "exit": _exit, - "fd_close": _fd_close, - "fd_fdstat_get": _fd_fdstat_get, - "fd_read": _fd_read, - "fd_seek": _fd_seek, - "fd_sync": _fd_sync, - "fd_write": _fd_write, - "getentropy": _getentropy, - "gettimeofday": _gettimeofday, - "setTempRet0": _setTempRet0, - "strftime": _strftime, - "strftime_l": _strftime_l, - "sysconf": _sysconf, - "time": _time, - "utime": _utime -}; - -var asm = createWasm(); - -var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors", asm); - -var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location", asm); - -var _memset = Module["_memset"] = createExportWrapper("memset", asm); - -Module["_main"] = createExportWrapper("main", asm); - -Module["_fflush"] = createExportWrapper("fflush", asm); - -var _free = Module["_free"] = createExportWrapper("free", asm); - -var _malloc = Module["_malloc"] = createExportWrapper("malloc", asm); - -Module["_usleep"] = createExportWrapper("usleep", asm); - -var __get_tzname = Module["__get_tzname"] = createExportWrapper("_get_tzname", asm); - -var __get_daylight = Module["__get_daylight"] = createExportWrapper("_get_daylight", asm); - -var __get_timezone = Module["__get_timezone"] = createExportWrapper("_get_timezone", asm); - -Module["_emscripten_main_thread_process_queued_calls"] = createExportWrapper("emscripten_main_thread_process_queued_calls", asm); - -var _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = asm["emscripten_stack_get_end"]; - -var stackSave = Module["stackSave"] = createExportWrapper("stackSave", asm); - -var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore", asm); - -var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc", asm); - -var _emscripten_stack_init = Module["_emscripten_stack_init"] = asm["emscripten_stack_init"]; - -Module["_emscripten_stack_get_free"] = asm["emscripten_stack_get_free"]; - -var _memalign = Module["_memalign"] = createExportWrapper("memalign", asm); - -Module["dynCall_viijii"] = createExportWrapper("dynCall_viijii", asm); - -Module["dynCall_viiiiji"] = createExportWrapper("dynCall_viiiiji", asm); - -Module["dynCall_viiij"] = createExportWrapper("dynCall_viiij", asm); - -Module["dynCall_iiiij"] = createExportWrapper("dynCall_iiiij", asm); - -Module["dynCall_iij"] = createExportWrapper("dynCall_iij", asm); - -Module["dynCall_iijii"] = createExportWrapper("dynCall_iijii", asm); - -Module["dynCall_iiji"] = createExportWrapper("dynCall_iiji", asm); - -Module["dynCall_iiiiiij"] = createExportWrapper("dynCall_iiiiiij", asm); - -Module["dynCall_viiiijii"] = createExportWrapper("dynCall_viiiijii", asm); - -Module["dynCall_viiji"] = createExportWrapper("dynCall_viiji", asm); - -Module["dynCall_viij"] = createExportWrapper("dynCall_viij", asm); - -Module["dynCall_viji"] = createExportWrapper("dynCall_viji", asm); - -Module["dynCall_iiij"] = createExportWrapper("dynCall_iiij", asm); - -Module["dynCall_viijdi"] = createExportWrapper("dynCall_viijdi", asm); - -Module["dynCall_viijdii"] = createExportWrapper("dynCall_viijdii", asm); - -Module["dynCall_iijijii"] = createExportWrapper("dynCall_iijijii", asm); - -Module["dynCall_viijiiii"] = createExportWrapper("dynCall_viijiiii", asm); - -Module["dynCall_viijiiiji"] = createExportWrapper("dynCall_viijiiiji", asm); - -Module["dynCall_viijiii"] = createExportWrapper("dynCall_viijiii", asm); - -Module["dynCall_viijiiijiii"] = createExportWrapper("dynCall_viijiiijiii", asm); - -Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji", asm); - -Module["dynCall_iiiiij"] = createExportWrapper("dynCall_iiiiij", asm); - -Module["dynCall_iiiiijj"] = createExportWrapper("dynCall_iiiiijj", asm); - -Module["dynCall_iiiiiijj"] = createExportWrapper("dynCall_iiiiiijj", asm); - -if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { - abort("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { - abort("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -Module["ccall"] = ccall; - -if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { - abort("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { - abort("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { - abort("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "allocate")) Module["allocate"] = function() { - abort("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { - abort("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { - abort("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { - abort("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { - abort("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { - abort("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { - abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { - abort("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { - abort("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { - abort("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { - abort("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { - abort("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { - abort("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { - abort("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { - abort("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { - abort("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { - abort("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { - abort("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { - abort("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { - abort("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { - abort("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { - abort("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { - abort("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { - abort("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { - abort("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { - abort("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { - abort("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { - abort("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { - abort("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -Module["addFunction"] = addFunction; - -if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { - abort("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { - abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { - abort("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "makeBigInt")) Module["makeBigInt"] = function() { - abort("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { - abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { - abort("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { - abort("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { - abort("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { - abort("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { - abort("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -Module["callMain"] = callMain; - -if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() { - abort("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stringToNewUTF8")) Module["stringToNewUTF8"] = function() { - abort("'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setFileTime")) Module["setFileTime"] = function() { - abort("'setFileTime' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "emscripten_realloc_buffer")) Module["emscripten_realloc_buffer"] = function() { - abort("'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { - abort("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_CODES")) Module["ERRNO_CODES"] = function() { - abort("'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_MESSAGES")) Module["ERRNO_MESSAGES"] = function() { - abort("'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setErrNo")) Module["setErrNo"] = function() { - abort("'setErrNo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "DNS")) Module["DNS"] = function() { - abort("'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getHostByName")) Module["getHostByName"] = function() { - abort("'getHostByName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "GAI_ERRNO_MESSAGES")) Module["GAI_ERRNO_MESSAGES"] = function() { - abort("'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "Protocols")) Module["Protocols"] = function() { - abort("'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "Sockets")) Module["Sockets"] = function() { - abort("'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getRandomDevice")) Module["getRandomDevice"] = function() { - abort("'getRandomDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "traverseStack")) Module["traverseStack"] = function() { - abort("'traverseStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "UNWIND_CACHE")) Module["UNWIND_CACHE"] = function() { - abort("'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "withBuiltinMalloc")) Module["withBuiltinMalloc"] = function() { - abort("'withBuiltinMalloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgsArray")) Module["readAsmConstArgsArray"] = function() { - abort("'readAsmConstArgsArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgs")) Module["readAsmConstArgs"] = function() { - abort("'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "mainThreadEM_ASM")) Module["mainThreadEM_ASM"] = function() { - abort("'mainThreadEM_ASM' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "jstoi_q")) Module["jstoi_q"] = function() { - abort("'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "jstoi_s")) Module["jstoi_s"] = function() { - abort("'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getExecutableName")) Module["getExecutableName"] = function() { - abort("'getExecutableName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "listenOnce")) Module["listenOnce"] = function() { - abort("'listenOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "autoResumeAudioContext")) Module["autoResumeAudioContext"] = function() { - abort("'autoResumeAudioContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "dynCallLegacy")) Module["dynCallLegacy"] = function() { - abort("'dynCallLegacy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getDynCaller")) Module["getDynCaller"] = function() { - abort("'getDynCaller' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { - abort("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "callRuntimeCallbacks")) Module["callRuntimeCallbacks"] = function() { - abort("'callRuntimeCallbacks' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "abortStackOverflow")) Module["abortStackOverflow"] = function() { - abort("'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "reallyNegative")) Module["reallyNegative"] = function() { - abort("'reallyNegative' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "unSign")) Module["unSign"] = function() { - abort("'unSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "reSign")) Module["reSign"] = function() { - abort("'reSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "formatString")) Module["formatString"] = function() { - abort("'formatString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "PATH")) Module["PATH"] = function() { - abort("'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "PATH_FS")) Module["PATH_FS"] = function() { - abort("'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SYSCALLS")) Module["SYSCALLS"] = function() { - abort("'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "syscallMmap2")) Module["syscallMmap2"] = function() { - abort("'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "syscallMunmap")) Module["syscallMunmap"] = function() { - abort("'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "JSEvents")) Module["JSEvents"] = function() { - abort("'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerKeyEventCallback")) Module["registerKeyEventCallback"] = function() { - abort("'registerKeyEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "specialHTMLTargets")) Module["specialHTMLTargets"] = function() { - abort("'specialHTMLTargets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "maybeCStringToJsString")) Module["maybeCStringToJsString"] = function() { - abort("'maybeCStringToJsString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "findEventTarget")) Module["findEventTarget"] = function() { - abort("'findEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "findCanvasEventTarget")) Module["findCanvasEventTarget"] = function() { - abort("'findCanvasEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getBoundingClientRect")) Module["getBoundingClientRect"] = function() { - abort("'getBoundingClientRect' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillMouseEventData")) Module["fillMouseEventData"] = function() { - abort("'fillMouseEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerMouseEventCallback")) Module["registerMouseEventCallback"] = function() { - abort("'registerMouseEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerWheelEventCallback")) Module["registerWheelEventCallback"] = function() { - abort("'registerWheelEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerUiEventCallback")) Module["registerUiEventCallback"] = function() { - abort("'registerUiEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerFocusEventCallback")) Module["registerFocusEventCallback"] = function() { - abort("'registerFocusEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillDeviceOrientationEventData")) Module["fillDeviceOrientationEventData"] = function() { - abort("'fillDeviceOrientationEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerDeviceOrientationEventCallback")) Module["registerDeviceOrientationEventCallback"] = function() { - abort("'registerDeviceOrientationEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillDeviceMotionEventData")) Module["fillDeviceMotionEventData"] = function() { - abort("'fillDeviceMotionEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerDeviceMotionEventCallback")) Module["registerDeviceMotionEventCallback"] = function() { - abort("'registerDeviceMotionEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "screenOrientation")) Module["screenOrientation"] = function() { - abort("'screenOrientation' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillOrientationChangeEventData")) Module["fillOrientationChangeEventData"] = function() { - abort("'fillOrientationChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerOrientationChangeEventCallback")) Module["registerOrientationChangeEventCallback"] = function() { - abort("'registerOrientationChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillFullscreenChangeEventData")) Module["fillFullscreenChangeEventData"] = function() { - abort("'fillFullscreenChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerFullscreenChangeEventCallback")) Module["registerFullscreenChangeEventCallback"] = function() { - abort("'registerFullscreenChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerRestoreOldStyle")) Module["registerRestoreOldStyle"] = function() { - abort("'registerRestoreOldStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "hideEverythingExceptGivenElement")) Module["hideEverythingExceptGivenElement"] = function() { - abort("'hideEverythingExceptGivenElement' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "restoreHiddenElements")) Module["restoreHiddenElements"] = function() { - abort("'restoreHiddenElements' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setLetterbox")) Module["setLetterbox"] = function() { - abort("'setLetterbox' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "currentFullscreenStrategy")) Module["currentFullscreenStrategy"] = function() { - abort("'currentFullscreenStrategy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "restoreOldWindowedStyle")) Module["restoreOldWindowedStyle"] = function() { - abort("'restoreOldWindowedStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "softFullscreenResizeWebGLRenderTarget")) Module["softFullscreenResizeWebGLRenderTarget"] = function() { - abort("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "doRequestFullscreen")) Module["doRequestFullscreen"] = function() { - abort("'doRequestFullscreen' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillPointerlockChangeEventData")) Module["fillPointerlockChangeEventData"] = function() { - abort("'fillPointerlockChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerPointerlockChangeEventCallback")) Module["registerPointerlockChangeEventCallback"] = function() { - abort("'registerPointerlockChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerPointerlockErrorEventCallback")) Module["registerPointerlockErrorEventCallback"] = function() { - abort("'registerPointerlockErrorEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "requestPointerLock")) Module["requestPointerLock"] = function() { - abort("'requestPointerLock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillVisibilityChangeEventData")) Module["fillVisibilityChangeEventData"] = function() { - abort("'fillVisibilityChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerVisibilityChangeEventCallback")) Module["registerVisibilityChangeEventCallback"] = function() { - abort("'registerVisibilityChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerTouchEventCallback")) Module["registerTouchEventCallback"] = function() { - abort("'registerTouchEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillGamepadEventData")) Module["fillGamepadEventData"] = function() { - abort("'fillGamepadEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerGamepadEventCallback")) Module["registerGamepadEventCallback"] = function() { - abort("'registerGamepadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerBeforeUnloadEventCallback")) Module["registerBeforeUnloadEventCallback"] = function() { - abort("'registerBeforeUnloadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "fillBatteryEventData")) Module["fillBatteryEventData"] = function() { - abort("'fillBatteryEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "battery")) Module["battery"] = function() { - abort("'battery' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "registerBatteryEventCallback")) Module["registerBatteryEventCallback"] = function() { - abort("'registerBatteryEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setCanvasElementSize")) Module["setCanvasElementSize"] = function() { - abort("'setCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getCanvasElementSize")) Module["getCanvasElementSize"] = function() { - abort("'getCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "polyfillSetImmediate")) Module["polyfillSetImmediate"] = function() { - abort("'polyfillSetImmediate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "demangle")) Module["demangle"] = function() { - abort("'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "demangleAll")) Module["demangleAll"] = function() { - abort("'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "jsStackTrace")) Module["jsStackTrace"] = function() { - abort("'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { - abort("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getEnvStrings")) Module["getEnvStrings"] = function() { - abort("'getEnvStrings' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "checkWasiClock")) Module["checkWasiClock"] = function() { - abort("'checkWasiClock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64")) Module["writeI53ToI64"] = function() { - abort("'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Clamped")) Module["writeI53ToI64Clamped"] = function() { - abort("'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Signaling")) Module["writeI53ToI64Signaling"] = function() { - abort("'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Clamped")) Module["writeI53ToU64Clamped"] = function() { - abort("'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Signaling")) Module["writeI53ToU64Signaling"] = function() { - abort("'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "readI53FromI64")) Module["readI53FromI64"] = function() { - abort("'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "readI53FromU64")) Module["readI53FromU64"] = function() { - abort("'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "convertI32PairToI53")) Module["convertI32PairToI53"] = function() { - abort("'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "convertU32PairToI53")) Module["convertU32PairToI53"] = function() { - abort("'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "uncaughtExceptionCount")) Module["uncaughtExceptionCount"] = function() { - abort("'uncaughtExceptionCount' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "exceptionLast")) Module["exceptionLast"] = function() { - abort("'exceptionLast' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "exceptionCaught")) Module["exceptionCaught"] = function() { - abort("'exceptionCaught' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "ExceptionInfoAttrs")) Module["ExceptionInfoAttrs"] = function() { - abort("'ExceptionInfoAttrs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "ExceptionInfo")) Module["ExceptionInfo"] = function() { - abort("'ExceptionInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "CatchInfo")) Module["CatchInfo"] = function() { - abort("'CatchInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "exception_addRef")) Module["exception_addRef"] = function() { - abort("'exception_addRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "exception_decRef")) Module["exception_decRef"] = function() { - abort("'exception_decRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "Browser")) Module["Browser"] = function() { - abort("'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "funcWrappers")) Module["funcWrappers"] = function() { - abort("'funcWrappers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { - abort("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "setMainLoop")) Module["setMainLoop"] = function() { - abort("'setMainLoop' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -Module["FS"] = FS; - -if (!Object.getOwnPropertyDescriptor(Module, "mmapAlloc")) Module["mmapAlloc"] = function() { - abort("'mmapAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "MEMFS")) Module["MEMFS"] = function() { - abort("'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "TTY")) Module["TTY"] = function() { - abort("'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "PIPEFS")) Module["PIPEFS"] = function() { - abort("'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SOCKFS")) Module["SOCKFS"] = function() { - abort("'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "tempFixedLengthArray")) Module["tempFixedLengthArray"] = function() { - abort("'tempFixedLengthArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "miniTempWebGLFloatBuffers")) Module["miniTempWebGLFloatBuffers"] = function() { - abort("'miniTempWebGLFloatBuffers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "heapObjectForWebGLType")) Module["heapObjectForWebGLType"] = function() { - abort("'heapObjectForWebGLType' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "heapAccessShiftForWebGLHeap")) Module["heapAccessShiftForWebGLHeap"] = function() { - abort("'heapAccessShiftForWebGLHeap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { - abort("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGet")) Module["emscriptenWebGLGet"] = function() { - abort("'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "computeUnpackAlignedImageSize")) Module["computeUnpackAlignedImageSize"] = function() { - abort("'computeUnpackAlignedImageSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetTexPixelData")) Module["emscriptenWebGLGetTexPixelData"] = function() { - abort("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetUniform")) Module["emscriptenWebGLGetUniform"] = function() { - abort("'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetVertexAttrib")) Module["emscriptenWebGLGetVertexAttrib"] = function() { - abort("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "writeGLArray")) Module["writeGLArray"] = function() { - abort("'writeGLArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "AL")) Module["AL"] = function() { - abort("'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SDL_unicode")) Module["SDL_unicode"] = function() { - abort("'SDL_unicode' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SDL_ttfContext")) Module["SDL_ttfContext"] = function() { - abort("'SDL_ttfContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SDL_audio")) Module["SDL_audio"] = function() { - abort("'SDL_audio' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SDL")) Module["SDL"] = function() { - abort("'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "SDL_gfx")) Module["SDL_gfx"] = function() { - abort("'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "GLUT")) Module["GLUT"] = function() { - abort("'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "EGL")) Module["EGL"] = function() { - abort("'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "GLFW_Window")) Module["GLFW_Window"] = function() { - abort("'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "GLFW")) Module["GLFW"] = function() { - abort("'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "GLEW")) Module["GLEW"] = function() { - abort("'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "IDBStore")) Module["IDBStore"] = function() { - abort("'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "runAndAbortIfError")) Module["runAndAbortIfError"] = function() { - abort("'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "WORKERFS")) Module["WORKERFS"] = function() { - abort("'WORKERFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { - abort("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { - abort("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { - abort("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { - abort("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { - abort("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { - abort("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { - abort("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { - abort("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { - abort("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { - abort("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { - abort("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { - abort("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { - abort("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8OnStack")) Module["allocateUTF8OnStack"] = function() { - abort("'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); -}; - -Module["writeStackCookie"] = writeStackCookie; - -Module["checkStackCookie"] = checkStackCookie; - -if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { - configurable: true, - get: function() { - abort("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); - } -}); - -if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { - configurable: true, - get: function() { - abort("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)"); - } -}); - -var calledRun; - -function ExitStatus(status) { - this.name = "ExitStatus"; - this.message = "Program terminated with exit(" + status + ")"; - this.status = status; -} - -dependenciesFulfilled = function runCaller() { - if (!calledRun) run(); - if (!calledRun) dependenciesFulfilled = runCaller; -}; - -function callMain(args) { - assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); - assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called"); - var entryFunction = Module["_main"]; - args = args || []; - var argc = args.length + 1; - var argv = stackAlloc((argc + 1) * 4); - HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram); - for (var i = 1; i < argc; i++) { - HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1]); - } - HEAP32[(argv >> 2) + argc] = 0; - try { - var ret = entryFunction(argc, argv); - exit(ret, true); - } catch (e) { - if (e instanceof ExitStatus) { - return; - } else if (e == "unwind") { - noExitRuntime = true; - return; - } else { - var toLog = e; - if (e && typeof e === "object" && e.stack) { - toLog = [ e, e.stack ]; - } - err("exception thrown: " + toLog); - quit_(1, e); - } - } finally { - } -} - -function run(args) { - args = args || arguments_; - if (runDependencies > 0) { - return; - } - _emscripten_stack_init(); - writeStackCookie(); - preRun(); - if (runDependencies > 0) return; - function doRun() { - if (calledRun) return; - calledRun = true; - Module["calledRun"] = true; - if (ABORT) return; - initRuntime(); - preMain(); - readyPromiseResolve(Module); - if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); - if (shouldRunNow) callMain(args); - postRun(); - } - if (Module["setStatus"]) { - Module["setStatus"]("Running..."); - setTimeout(function() { - setTimeout(function() { - Module["setStatus"](""); - }, 1); - doRun(); - }, 1); - } else { - doRun(); - } - checkStackCookie(); -} - -Module["run"] = run; - -function checkUnflushedContent() { - var oldOut = out; - var oldErr = err; - var has = false; - out = err = function(x) { - has = true; - }; - try { - var flush = Module["_fflush"]; - if (flush) flush(0); - [ "stdout", "stderr" ].forEach(function(name) { - var info = FS.analyzePath("/dev/" + name); - if (!info) return; - var stream = info.object; - var rdev = stream.rdev; - var tty = TTY.ttys[rdev]; - if (tty && tty.output && tty.output.length) { - has = true; - } - }); - } catch (e) {} - out = oldOut; - err = oldErr; - if (has) { - warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."); - } -} - -function exit(status, implicit) { - checkUnflushedContent(); - if (implicit && noExitRuntime && status === 0) { - return; - } - if (noExitRuntime) { - if (!implicit) { - var msg = "program exited (with status: " + status + "), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"; - readyPromiseReject(msg); - err(msg); - } - } else { - exitRuntime(); - if (Module["onExit"]) Module["onExit"](status); - ABORT = true; - } - quit_(status, new ExitStatus(status)); -} - -if (Module["preInit"]) { - if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; - while (Module["preInit"].length > 0) { - Module["preInit"].pop()(); - } -} - -var shouldRunNow = true; - -if (Module["noInitialRun"]) shouldRunNow = false; - -noExitRuntime = true; - -run(); - - - return trace_to_text_wasm -} -); -})(); -module.exports = trace_to_text_wasm; -}); - -var traceconv = createCommonjsModule(function (module, exports) { -// Copyright (C) 2021 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -Object.defineProperty(exports, "__esModule", { value: true }); - - - - - -const selfWorker = self; -function updateStatus(status) { - selfWorker.postMessage({ - kind: 'updateStatus', - status, - }); -} -function updateJobStatus(name, status) { - selfWorker.postMessage({ - kind: 'updateJobStatus', - name, - status, - }); -} -function downloadFile(buffer, name) { - selfWorker.postMessage({ - kind: 'downloadFile', - buffer, - name, - }, [buffer.buffer]); -} -function openTraceInLegacy(buffer) { - selfWorker.postMessage({ - kind: 'openTraceInLegacy', - buffer, - }); -} -function forwardError(error) { - selfWorker.postMessage({ - kind: 'error', - error, - }); -} -function fsNodeToBuffer(fsNode) { - const fileSize = logging.assertExists(fsNode.usedBytes); - return new Uint8Array(fsNode.contents.buffer, 0, fileSize); -} -function runTraceconv(trace, args) { - return tslib.__awaiter(this, void 0, void 0, function* () { - const deferredRuntimeInitialized = deferred.defer(); - const module = trace_to_text({ - noInitialRun: true, - locateFile: (s) => s, - print: updateStatus, - printErr: updateStatus, - onRuntimeInitialized: () => deferredRuntimeInitialized.resolve() - }); - yield deferredRuntimeInitialized; - module.FS.mkdir('/fs'); - module.FS.mount(logging.assertExists(module.FS.filesystems.WORKERFS), { blobs: [{ name: 'trace.proto', data: trace }] }, '/fs'); - updateStatus('Converting trace'); - module.callMain(args); - updateStatus('Trace conversion completed'); - return module; - }); -} -function isConvertTraceAndDownload(msg) { - if (msg.kind !== 'ConvertTraceAndDownload') { - return false; - } - if (msg.trace === undefined) { - throw new Error('ConvertTraceAndDownloadArgs missing trace'); - } - if (msg.format !== 'json' && msg.format !== 'systrace') { - throw new Error('ConvertTraceAndDownloadArgs has bad format'); - } - return true; -} -function ConvertTraceAndDownload(trace, format, truncate) { - return tslib.__awaiter(this, void 0, void 0, function* () { - const jobName = format === 'json' ? 'convert_json' : 'convert_systrace'; - updateJobStatus(jobName, conversion_jobs.ConversionJobStatus.InProgress); - const outPath = '/trace.json'; - const args = [format]; - if (truncate !== undefined) { - args.push('--truncate', truncate); - } - args.push('/fs/trace.proto', outPath); - try { - const module = yield runTraceconv(trace, args); - const fsNode = module.FS.lookupPath(outPath).node; - downloadFile(fsNodeToBuffer(fsNode), `trace.${format}`); - module.FS.unlink(outPath); - } - finally { - updateJobStatus(jobName, conversion_jobs.ConversionJobStatus.NotRunning); - } - }); -} -function isConvertTraceAndOpenInLegacy(msg) { - if (msg.kind !== 'ConvertTraceAndOpenInLegacy') { - return false; - } - return true; -} -function ConvertTraceAndOpenInLegacy(trace, truncate) { - return tslib.__awaiter(this, void 0, void 0, function* () { - const jobName = 'open_in_legacy'; - updateJobStatus(jobName, conversion_jobs.ConversionJobStatus.InProgress); - const outPath = '/trace.json'; - const args = ['json']; - if (truncate !== undefined) { - args.push('--truncate', truncate); - } - args.push('/fs/trace.proto', outPath); - try { - const module = yield runTraceconv(trace, args); - const fsNode = module.FS.lookupPath(outPath).node; - const data = fsNode.contents.buffer; - const size = fsNode.usedBytes; - const buffer = new Uint8Array(data, 0, size); - openTraceInLegacy(buffer); - module.FS.unlink(outPath); - } - finally { - updateJobStatus(jobName, conversion_jobs.ConversionJobStatus.NotRunning); - } - }); -} -function isConvertTraceToPprof(msg) { - if (msg.kind !== 'ConvertTraceToPprof') { - return false; - } - return true; -} -function ConvertTraceToPprof(trace, pid, ts) { - return tslib.__awaiter(this, void 0, void 0, function* () { - const jobName = 'convert_pprof'; - updateJobStatus(jobName, conversion_jobs.ConversionJobStatus.InProgress); - const args = [ - 'profile', - `--pid`, - `${pid}`, - `--timestamps`, - `${ts}`, - '/fs/trace.proto' - ]; - try { - const module = yield runTraceconv(trace, args); - const heapDirName = Object.keys(module.FS.lookupPath('/tmp/').node.contents)[0]; - const heapDirContents = module.FS.lookupPath(`/tmp/${heapDirName}`).node.contents; - const heapDumpFiles = Object.keys(heapDirContents); - for (let i = 0; i < heapDumpFiles.length; ++i) { - const heapDump = heapDumpFiles[i]; - const fileNode = module.FS.lookupPath(`/tmp/${heapDirName}/${heapDump}`).node; - const fileName = `/heap_dump.${i}.${pid}.pb`; - downloadFile(fsNodeToBuffer(fileNode), fileName); - } - } - finally { - updateJobStatus(jobName, conversion_jobs.ConversionJobStatus.NotRunning); - } - }); -} -selfWorker.onmessage = (msg) => { - self.addEventListener('error', e => logging.reportError(e)); - self.addEventListener('unhandledrejection', e => logging.reportError(e)); - logging.setErrorHandler((err) => forwardError(err)); - const args = msg.data; - if (isConvertTraceAndDownload(args)) { - ConvertTraceAndDownload(args.trace, args.format, args.truncate); - } - else if (isConvertTraceAndOpenInLegacy(args)) { - ConvertTraceAndOpenInLegacy(args.trace, args.truncate); - } - else if (isConvertTraceToPprof(args)) { - ConvertTraceToPprof(args.trace, args.pid, args.ts); - } - else { - throw new Error(`Unknown method call ${JSON.stringify(args)}`); - } -}; - -}); - -return traceconv; - -}()); -//# sourceMappingURL=traceconv_bundle.js.map diff --git a/deps/perfetto/traceconv_bundle.js.map b/deps/perfetto/traceconv_bundle.js.map deleted file mode 100644 index 6a5ef482..00000000 --- a/deps/perfetto/traceconv_bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"traceconv_bundle.js","sources":["../../node_modules/tslib/tslib.js","../../../out/ui/src/base/deferred.ts","../../../out/ui/src/gen/perfetto_version.ts","../../../out/ui/src/base/logging.ts","../../../out/ui/src/common/conversion_jobs.ts","../../../out/ui/ui/tsc/gen/trace_to_text.js","../../../out/ui/src/traceconv/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n","// Copyright (C) 2018 The Android Open Source Project\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// tslint:disable:no-any\n\n/**\n * Promise wrapper with exposed resolve and reject callbacks.\n */\nexport interface Deferred extends Promise {\n readonly resolve: (value?: T|PromiseLike) => void;\n readonly reject: (reason?: any) => void;\n}\n\n/**\n * Create a promise with exposed resolve and reject callbacks.\n */\nexport function defer(): Deferred {\n let resolve = null as any;\n let reject = null as any;\n const p = new Promise((res, rej) => [resolve, reject] = [res, rej]);\n return Object.assign(p, {resolve, reject}) as any;\n}\n","export const VERSION = \"v23.0-d7b55ea62\";\nexport const SCM_REVISION = \"d7b55ea623d1106cb4e1961a4180caf1280ec6ab\";","// Copyright (C) 2018 The Android Open Source Project\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport * as version from '../gen/perfetto_version';\n\nexport type ErrorHandler = (err: string) => void;\n\nlet errorHandler: ErrorHandler = (_: string) => {};\n\nexport function assertExists(value: A | null | undefined): A {\n if (value === null || value === undefined) {\n throw new Error('Value doesn\\'t exist');\n }\n return value;\n}\n\nexport function assertTrue(value: boolean, optMsg?: string) {\n if (value !== true) {\n throw new Error(optMsg ? optMsg : 'Failed assertion');\n }\n}\n\nexport function assertFalse(value: boolean, optMsg?: string) {\n assertTrue(!value, optMsg);\n}\n\nexport function setErrorHandler(handler: ErrorHandler) {\n errorHandler = handler;\n}\n\nexport function reportError(err: ErrorEvent|PromiseRejectionEvent|{}) {\n let errLog = '';\n let errorObj = undefined;\n\n if (err instanceof ErrorEvent) {\n errLog = err.message;\n errorObj = err.error;\n } else if (err instanceof PromiseRejectionEvent) {\n errLog = `${err.reason}`;\n errorObj = err.reason;\n } else {\n errLog = `${err}`;\n }\n if (errorObj !== undefined && errorObj !== null) {\n const errStack = (errorObj as {stack?: string}).stack;\n errLog += '\\n';\n errLog += errStack !== undefined ? errStack : JSON.stringify(errorObj);\n }\n errLog += '\\n\\n';\n errLog += `${version.VERSION} ${version.SCM_REVISION}\\n`;\n errLog += `UA: ${navigator.userAgent}\\n`;\n\n console.error(errLog, err);\n errorHandler(errLog);\n}\n","// Copyright (C) 2021 The Android Open Source Project\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport enum ConversionJobStatus {\n InProgress = 'InProgress',\n NotRunning = 'NotRunning',\n}\n\nexport type ConversionJobName = 'convert_systrace'|'convert_json'|\n 'open_in_legacy'|'convert_pprof'|'create_permalink';\n\nexport interface ConversionJobStatusUpdate {\n jobName: ConversionJobName;\n jobStatus: ConversionJobStatus;\n}\n","\nvar trace_to_text_wasm = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(trace_to_text_wasm) {\n trace_to_text_wasm = trace_to_text_wasm || {};\n\nvar Module = typeof trace_to_text_wasm !== \"undefined\" ? trace_to_text_wasm : {};\n\nvar readyPromiseResolve, readyPromiseReject;\n\nModule[\"ready\"] = new Promise(function(resolve, reject) {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n});\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_main\")) {\n Object.defineProperty(Module[\"ready\"], \"_main\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_main\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_emscripten_stack_get_end\")) {\n Object.defineProperty(Module[\"ready\"], \"_emscripten_stack_get_end\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_emscripten_stack_get_end\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_emscripten_stack_get_free\")) {\n Object.defineProperty(Module[\"ready\"], \"_emscripten_stack_get_free\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_emscripten_stack_get_free\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_emscripten_stack_init\")) {\n Object.defineProperty(Module[\"ready\"], \"_emscripten_stack_init\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_emscripten_stack_init\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_stackSave\")) {\n Object.defineProperty(Module[\"ready\"], \"_stackSave\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_stackSave\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_stackRestore\")) {\n Object.defineProperty(Module[\"ready\"], \"_stackRestore\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_stackRestore\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_stackAlloc\")) {\n Object.defineProperty(Module[\"ready\"], \"_stackAlloc\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_stackAlloc\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"___wasm_call_ctors\")) {\n Object.defineProperty(Module[\"ready\"], \"___wasm_call_ctors\", {\n configurable: true,\n get: function() {\n abort(\"You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"___wasm_call_ctors\", {\n configurable: true,\n set: function() {\n abort(\"You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_fflush\")) {\n Object.defineProperty(Module[\"ready\"], \"_fflush\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_fflush\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"___errno_location\")) {\n Object.defineProperty(Module[\"ready\"], \"___errno_location\", {\n configurable: true,\n get: function() {\n abort(\"You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"___errno_location\", {\n configurable: true,\n set: function() {\n abort(\"You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_malloc\")) {\n Object.defineProperty(Module[\"ready\"], \"_malloc\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_malloc\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_free\")) {\n Object.defineProperty(Module[\"ready\"], \"_free\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_free\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_memalign\")) {\n Object.defineProperty(Module[\"ready\"], \"_memalign\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_memalign\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_memset\")) {\n Object.defineProperty(Module[\"ready\"], \"_memset\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _memset on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_memset\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _memset on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"__get_tzname\")) {\n Object.defineProperty(Module[\"ready\"], \"__get_tzname\", {\n configurable: true,\n get: function() {\n abort(\"You are getting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"__get_tzname\", {\n configurable: true,\n set: function() {\n abort(\"You are setting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"__get_daylight\")) {\n Object.defineProperty(Module[\"ready\"], \"__get_daylight\", {\n configurable: true,\n get: function() {\n abort(\"You are getting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"__get_daylight\", {\n configurable: true,\n set: function() {\n abort(\"You are setting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"__get_timezone\")) {\n Object.defineProperty(Module[\"ready\"], \"__get_timezone\", {\n configurable: true,\n get: function() {\n abort(\"You are getting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"__get_timezone\", {\n configurable: true,\n set: function() {\n abort(\"You are setting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_emscripten_main_thread_process_queued_calls\")) {\n Object.defineProperty(Module[\"ready\"], \"_emscripten_main_thread_process_queued_calls\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_emscripten_main_thread_process_queued_calls\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"_usleep\")) {\n Object.defineProperty(Module[\"ready\"], \"_usleep\", {\n configurable: true,\n get: function() {\n abort(\"You are getting _usleep on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"_usleep\", {\n configurable: true,\n set: function() {\n abort(\"You are setting _usleep on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nif (!Object.getOwnPropertyDescriptor(Module[\"ready\"], \"onRuntimeInitialized\")) {\n Object.defineProperty(Module[\"ready\"], \"onRuntimeInitialized\", {\n configurable: true,\n get: function() {\n abort(\"You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n Object.defineProperty(Module[\"ready\"], \"onRuntimeInitialized\", {\n configurable: true,\n set: function() {\n abort(\"You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js\");\n }\n });\n}\n\nvar moduleOverrides = {};\n\nvar key;\n\nfor (key in Module) {\n if (Module.hasOwnProperty(key)) {\n moduleOverrides[key] = Module[key];\n }\n}\n\nvar arguments_ = [];\n\nvar thisProgram = \"./this.program\";\n\nvar quit_ = function(status, toThrow) {\n throw toThrow;\n};\n\nvar ENVIRONMENT_IS_WEB = false;\n\nvar ENVIRONMENT_IS_WORKER = false;\n\nvar ENVIRONMENT_IS_NODE = false;\n\nvar ENVIRONMENT_IS_SHELL = false;\n\nENVIRONMENT_IS_WEB = typeof window === \"object\";\n\nENVIRONMENT_IS_WORKER = typeof importScripts === \"function\";\n\nENVIRONMENT_IS_NODE = typeof process === \"object\" && typeof process.versions === \"object\" && typeof process.versions.node === \"string\";\n\nENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n\nif (Module[\"ENVIRONMENT\"]) {\n throw new Error(\"Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)\");\n}\n\nvar scriptDirectory = \"\";\n\nfunction locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n}\n\nvar read_, readAsync, readBinary, setWindowTitle;\n\nvar nodeFS;\n\nvar nodePath;\n\nif (ENVIRONMENT_IS_NODE) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = require(\"path\").dirname(scriptDirectory) + \"/\";\n } else {\n scriptDirectory = __dirname + \"/\";\n }\n read_ = function shell_read(filename, binary) {\n if (!nodeFS) nodeFS = require(\"fs\");\n if (!nodePath) nodePath = require(\"path\");\n filename = nodePath[\"normalize\"](filename);\n return nodeFS[\"readFileSync\"](filename, binary ? null : \"utf8\");\n };\n readBinary = function readBinary(filename) {\n var ret = read_(filename, true);\n if (!ret.buffer) {\n ret = new Uint8Array(ret);\n }\n assert(ret.buffer);\n return ret;\n };\n if (process[\"argv\"].length > 1) {\n thisProgram = process[\"argv\"][1].replace(/\\\\/g, \"/\");\n }\n arguments_ = process[\"argv\"].slice(2);\n process[\"on\"](\"uncaughtException\", function(ex) {\n if (!(ex instanceof ExitStatus)) {\n throw ex;\n }\n });\n process[\"on\"](\"unhandledRejection\", abort);\n quit_ = function(status) {\n process[\"exit\"](status);\n };\n Module[\"inspect\"] = function() {\n return \"[Emscripten Module object]\";\n };\n} else if (ENVIRONMENT_IS_SHELL) {\n if (typeof read != \"undefined\") {\n read_ = function shell_read(f) {\n return read(f);\n };\n }\n readBinary = function readBinary(f) {\n var data;\n if (typeof readbuffer === \"function\") {\n return new Uint8Array(readbuffer(f));\n }\n data = read(f, \"binary\");\n assert(typeof data === \"object\");\n return data;\n };\n if (typeof scriptArgs != \"undefined\") {\n arguments_ = scriptArgs;\n } else if (typeof arguments != \"undefined\") {\n arguments_ = arguments;\n }\n if (typeof quit === \"function\") {\n quit_ = function(status) {\n quit(status);\n };\n }\n if (typeof print !== \"undefined\") {\n if (typeof console === \"undefined\") console = {};\n console.log = print;\n console.warn = console.error = typeof printErr !== \"undefined\" ? printErr : print;\n }\n} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n if (ENVIRONMENT_IS_WORKER) {\n scriptDirectory = self.location.href;\n } else if (typeof document !== \"undefined\" && document.currentScript) {\n scriptDirectory = document.currentScript.src;\n }\n if (_scriptDir) {\n scriptDirectory = _scriptDir;\n }\n if (scriptDirectory.indexOf(\"blob:\") !== 0) {\n scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf(\"/\") + 1);\n } else {\n scriptDirectory = \"\";\n }\n {\n read_ = function(url) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.send(null);\n return xhr.responseText;\n };\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = function(url) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(xhr.response);\n };\n }\n readAsync = function(url, onload, onerror) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = function() {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n onload(xhr.response);\n return;\n }\n onerror();\n };\n xhr.onerror = onerror;\n xhr.send(null);\n };\n }\n setWindowTitle = function(title) {\n document.title = title;\n };\n} else {\n throw new Error(\"environment detection error\");\n}\n\nvar out = Module[\"print\"] || console.log.bind(console);\n\nvar err = Module[\"printErr\"] || console.warn.bind(console);\n\nfor (key in moduleOverrides) {\n if (moduleOverrides.hasOwnProperty(key)) {\n Module[key] = moduleOverrides[key];\n }\n}\n\nmoduleOverrides = null;\n\nif (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n\nif (!Object.getOwnPropertyDescriptor(Module, \"arguments\")) Object.defineProperty(Module, \"arguments\", {\n configurable: true,\n get: function() {\n abort(\"Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\nif (!Object.getOwnPropertyDescriptor(Module, \"thisProgram\")) Object.defineProperty(Module, \"thisProgram\", {\n configurable: true,\n get: function() {\n abort(\"Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nif (Module[\"quit\"]) quit_ = Module[\"quit\"];\n\nif (!Object.getOwnPropertyDescriptor(Module, \"quit\")) Object.defineProperty(Module, \"quit\", {\n configurable: true,\n get: function() {\n abort(\"Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nassert(typeof Module[\"memoryInitializerPrefixURL\"] === \"undefined\", \"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead\");\n\nassert(typeof Module[\"pthreadMainPrefixURL\"] === \"undefined\", \"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead\");\n\nassert(typeof Module[\"cdInitializerPrefixURL\"] === \"undefined\", \"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead\");\n\nassert(typeof Module[\"filePackagePrefixURL\"] === \"undefined\", \"Module.filePackagePrefixURL option was removed, use Module.locateFile instead\");\n\nassert(typeof Module[\"read\"] === \"undefined\", \"Module.read option was removed (modify read_ in JS)\");\n\nassert(typeof Module[\"readAsync\"] === \"undefined\", \"Module.readAsync option was removed (modify readAsync in JS)\");\n\nassert(typeof Module[\"readBinary\"] === \"undefined\", \"Module.readBinary option was removed (modify readBinary in JS)\");\n\nassert(typeof Module[\"setWindowTitle\"] === \"undefined\", \"Module.setWindowTitle option was removed (modify setWindowTitle in JS)\");\n\nassert(typeof Module[\"TOTAL_MEMORY\"] === \"undefined\", \"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY\");\n\nif (!Object.getOwnPropertyDescriptor(Module, \"read\")) Object.defineProperty(Module, \"read\", {\n configurable: true,\n get: function() {\n abort(\"Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nif (!Object.getOwnPropertyDescriptor(Module, \"readAsync\")) Object.defineProperty(Module, \"readAsync\", {\n configurable: true,\n get: function() {\n abort(\"Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nif (!Object.getOwnPropertyDescriptor(Module, \"readBinary\")) Object.defineProperty(Module, \"readBinary\", {\n configurable: true,\n get: function() {\n abort(\"Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setWindowTitle\")) Object.defineProperty(Module, \"setWindowTitle\", {\n configurable: true,\n get: function() {\n abort(\"Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nvar STACK_ALIGN = 16;\n\nfunction alignMemory(size, factor) {\n if (!factor) factor = STACK_ALIGN;\n return Math.ceil(size / factor) * factor;\n}\n\nfunction warnOnce(text) {\n if (!warnOnce.shown) warnOnce.shown = {};\n if (!warnOnce.shown[text]) {\n warnOnce.shown[text] = 1;\n err(text);\n }\n}\n\nfunction convertJsFunctionToWasm(func, sig) {\n if (typeof WebAssembly.Function === \"function\") {\n var typeNames = {\n \"i\": \"i32\",\n \"j\": \"i64\",\n \"f\": \"f32\",\n \"d\": \"f64\"\n };\n var type = {\n parameters: [],\n results: sig[0] == \"v\" ? [] : [ typeNames[sig[0]] ]\n };\n for (var i = 1; i < sig.length; ++i) {\n type.parameters.push(typeNames[sig[i]]);\n }\n return new WebAssembly.Function(type, func);\n }\n var typeSection = [ 1, 0, 1, 96 ];\n var sigRet = sig.slice(0, 1);\n var sigParam = sig.slice(1);\n var typeCodes = {\n \"i\": 127,\n \"j\": 126,\n \"f\": 125,\n \"d\": 124\n };\n typeSection.push(sigParam.length);\n for (var i = 0; i < sigParam.length; ++i) {\n typeSection.push(typeCodes[sigParam[i]]);\n }\n if (sigRet == \"v\") {\n typeSection.push(0);\n } else {\n typeSection = typeSection.concat([ 1, typeCodes[sigRet] ]);\n }\n typeSection[1] = typeSection.length - 2;\n var bytes = new Uint8Array([ 0, 97, 115, 109, 1, 0, 0, 0 ].concat(typeSection, [ 2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0 ]));\n var module = new WebAssembly.Module(bytes);\n var instance = new WebAssembly.Instance(module, {\n \"e\": {\n \"f\": func\n }\n });\n var wrappedFunc = instance.exports[\"f\"];\n return wrappedFunc;\n}\n\nvar freeTableIndexes = [];\n\nvar functionsInTableMap;\n\nfunction getEmptyTableSlot() {\n if (freeTableIndexes.length) {\n return freeTableIndexes.pop();\n }\n try {\n wasmTable.grow(1);\n } catch (err) {\n if (!(err instanceof RangeError)) {\n throw err;\n }\n throw \"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\";\n }\n return wasmTable.length - 1;\n}\n\nfunction addFunctionWasm(func, sig) {\n if (!functionsInTableMap) {\n functionsInTableMap = new WeakMap();\n for (var i = 0; i < wasmTable.length; i++) {\n var item = wasmTable.get(i);\n if (item) {\n functionsInTableMap.set(item, i);\n }\n }\n }\n if (functionsInTableMap.has(func)) {\n return functionsInTableMap.get(func);\n }\n var ret = getEmptyTableSlot();\n try {\n wasmTable.set(ret, func);\n } catch (err) {\n if (!(err instanceof TypeError)) {\n throw err;\n }\n assert(typeof sig !== \"undefined\", \"Missing signature argument to addFunction: \" + func);\n var wrapped = convertJsFunctionToWasm(func, sig);\n wasmTable.set(ret, wrapped);\n }\n functionsInTableMap.set(func, ret);\n return ret;\n}\n\nfunction addFunction(func, sig) {\n assert(typeof func !== \"undefined\");\n return addFunctionWasm(func, sig);\n}\n\nvar tempRet0 = 0;\n\nvar setTempRet0 = function(value) {\n tempRet0 = value;\n};\n\nvar wasmBinary;\n\nif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\nif (!Object.getOwnPropertyDescriptor(Module, \"wasmBinary\")) Object.defineProperty(Module, \"wasmBinary\", {\n configurable: true,\n get: function() {\n abort(\"Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nvar noExitRuntime;\n\nif (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n\nif (!Object.getOwnPropertyDescriptor(Module, \"noExitRuntime\")) Object.defineProperty(Module, \"noExitRuntime\", {\n configurable: true,\n get: function() {\n abort(\"Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nif (typeof WebAssembly !== \"object\") {\n abort(\"no native wasm support detected\");\n}\n\nvar wasmMemory;\n\nvar ABORT = false;\n\nvar EXITSTATUS;\n\nfunction assert(condition, text) {\n if (!condition) {\n abort(\"Assertion failed: \" + text);\n }\n}\n\nfunction getCFunc(ident) {\n var func = Module[\"_\" + ident];\n assert(func, \"Cannot call unknown function \" + ident + \", make sure it is exported\");\n return func;\n}\n\nfunction ccall(ident, returnType, argTypes, args, opts) {\n var toC = {\n \"string\": function(str) {\n var ret = 0;\n if (str !== null && str !== undefined && str !== 0) {\n var len = (str.length << 2) + 1;\n ret = stackAlloc(len);\n stringToUTF8(str, ret, len);\n }\n return ret;\n },\n \"array\": function(arr) {\n var ret = stackAlloc(arr.length);\n writeArrayToMemory(arr, ret);\n return ret;\n }\n };\n function convertReturnValue(ret) {\n if (returnType === \"string\") return UTF8ToString(ret);\n if (returnType === \"boolean\") return Boolean(ret);\n return ret;\n }\n var func = getCFunc(ident);\n var cArgs = [];\n var stack = 0;\n assert(returnType !== \"array\", 'Return type should not be \"array\".');\n if (args) {\n for (var i = 0; i < args.length; i++) {\n var converter = toC[argTypes[i]];\n if (converter) {\n if (stack === 0) stack = stackSave();\n cArgs[i] = converter(args[i]);\n } else {\n cArgs[i] = args[i];\n }\n }\n }\n var ret = func.apply(null, cArgs);\n ret = convertReturnValue(ret);\n if (stack !== 0) stackRestore(stack);\n return ret;\n}\n\nvar ALLOC_STACK = 1;\n\nvar UTF8Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n\nfunction UTF8ArrayToString(heap, idx, maxBytesToRead) {\n var endIdx = idx + maxBytesToRead;\n var endPtr = idx;\n while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) {\n return UTF8Decoder.decode(heap.subarray(idx, endPtr));\n } else {\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heap[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heap[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heap[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n if ((u0 & 248) != 240) warnOnce(\"Invalid UTF-8 leading byte 0x\" + u0.toString(16) + \" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!\");\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n }\n return str;\n}\n\nfunction UTF8ToString(ptr, maxBytesToRead) {\n return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n}\n\nfunction stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) {\n var u1 = str.charCodeAt(++i);\n u = 65536 + ((u & 1023) << 10) | u1 & 1023;\n }\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n if (u >= 2097152) warnOnce(\"Invalid Unicode code point 0x\" + u.toString(16) + \" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF).\");\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n}\n\nfunction stringToUTF8(str, outPtr, maxBytesToWrite) {\n assert(typeof maxBytesToWrite == \"number\", \"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!\");\n return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n}\n\nfunction lengthBytesUTF8(str) {\n var len = 0;\n for (var i = 0; i < str.length; ++i) {\n var u = str.charCodeAt(i);\n if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n if (u <= 127) ++len; else if (u <= 2047) len += 2; else if (u <= 65535) len += 3; else len += 4;\n }\n return len;\n}\n\nvar UTF16Decoder = typeof TextDecoder !== \"undefined\" ? new TextDecoder(\"utf-16le\") : undefined;\n\nfunction allocateUTF8(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = _malloc(size);\n if (ret) stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction allocateUTF8OnStack(str) {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8Array(str, HEAP8, ret, size);\n return ret;\n}\n\nfunction writeArrayToMemory(array, buffer) {\n assert(array.length >= 0, \"writeArrayToMemory array must have a length (should be an array or typed array)\");\n HEAP8.set(array, buffer);\n}\n\nfunction writeAsciiToMemory(str, buffer, dontAddNull) {\n for (var i = 0; i < str.length; ++i) {\n assert(str.charCodeAt(i) === str.charCodeAt(i) & 255);\n HEAP8[buffer++ >> 0] = str.charCodeAt(i);\n }\n if (!dontAddNull) HEAP8[buffer >> 0] = 0;\n}\n\nfunction alignUp(x, multiple) {\n if (x % multiple > 0) {\n x += multiple - x % multiple;\n }\n return x;\n}\n\nvar buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n\nfunction updateGlobalBufferAndViews(buf) {\n buffer = buf;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(buf);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(buf);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(buf);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(buf);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(buf);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(buf);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(buf);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(buf);\n}\n\nvar TOTAL_STACK = 5242880;\n\nif (Module[\"TOTAL_STACK\"]) assert(TOTAL_STACK === Module[\"TOTAL_STACK\"], \"the stack size can no longer be determined at runtime\");\n\nvar INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 33554432;\n\nif (!Object.getOwnPropertyDescriptor(Module, \"INITIAL_MEMORY\")) Object.defineProperty(Module, \"INITIAL_MEMORY\", {\n configurable: true,\n get: function() {\n abort(\"Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)\");\n }\n});\n\nassert(INITIAL_MEMORY >= TOTAL_STACK, \"INITIAL_MEMORY should be larger than TOTAL_STACK, was \" + INITIAL_MEMORY + \"! (TOTAL_STACK=\" + TOTAL_STACK + \")\");\n\nassert(typeof Int32Array !== \"undefined\" && typeof Float64Array !== \"undefined\" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, \"JS engine does not provide full typed array support\");\n\nassert(!Module[\"wasmMemory\"], \"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally\");\n\nassert(INITIAL_MEMORY == 33554432, \"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically\");\n\nvar wasmTable;\n\nfunction writeStackCookie() {\n var max = _emscripten_stack_get_end();\n assert((max & 3) == 0);\n HEAPU32[(max >> 2) + 1] = 34821223;\n HEAPU32[(max >> 2) + 2] = 2310721022;\n HEAP32[0] = 1668509029;\n}\n\nfunction checkStackCookie() {\n if (ABORT) return;\n var max = _emscripten_stack_get_end();\n var cookie1 = HEAPU32[(max >> 2) + 1];\n var cookie2 = HEAPU32[(max >> 2) + 2];\n if (cookie1 != 34821223 || cookie2 != 2310721022) {\n abort(\"Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x\" + cookie2.toString(16) + \" \" + cookie1.toString(16));\n }\n if (HEAP32[0] !== 1668509029) abort(\"Runtime error: The application has corrupted its heap memory area (address zero)!\");\n}\n\n(function() {\n var h16 = new Int16Array(1);\n var h8 = new Int8Array(h16.buffer);\n h16[0] = 25459;\n if (h8[0] !== 115 || h8[1] !== 99) throw \"Runtime error: expected the system to be little-endian!\";\n})();\n\nvar __ATPRERUN__ = [];\n\nvar __ATINIT__ = [];\n\nvar __ATMAIN__ = [];\n\nvar __ATPOSTRUN__ = [];\n\nvar runtimeInitialized = false;\n\nvar runtimeExited = false;\n\n__ATINIT__.push({\n func: function() {\n ___wasm_call_ctors();\n }\n});\n\nfunction preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [ Module[\"preRun\"] ];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPRERUN__);\n}\n\nfunction initRuntime() {\n checkStackCookie();\n assert(!runtimeInitialized);\n runtimeInitialized = true;\n if (!Module[\"noFSInit\"] && !FS.init.initialized) FS.init();\n TTY.init();\n callRuntimeCallbacks(__ATINIT__);\n}\n\nfunction preMain() {\n checkStackCookie();\n FS.ignorePermissions = false;\n callRuntimeCallbacks(__ATMAIN__);\n}\n\nfunction exitRuntime() {\n checkStackCookie();\n runtimeExited = true;\n}\n\nfunction postRun() {\n checkStackCookie();\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [ Module[\"postRun\"] ];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(__ATPOSTRUN__);\n}\n\nfunction addOnPreRun(cb) {\n __ATPRERUN__.unshift(cb);\n}\n\nfunction addOnPostRun(cb) {\n __ATPOSTRUN__.unshift(cb);\n}\n\nassert(Math.imul, \"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n\nassert(Math.fround, \"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n\nassert(Math.clz32, \"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n\nassert(Math.trunc, \"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill\");\n\nvar runDependencies = 0;\n\nvar runDependencyWatcher = null;\n\nvar dependenciesFulfilled = null;\n\nvar runDependencyTracking = {};\n\nfunction getUniqueRunDependency(id) {\n var orig = id;\n while (1) {\n if (!runDependencyTracking[id]) return id;\n id = orig + Math.random();\n }\n}\n\nfunction addRunDependency(id) {\n runDependencies++;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (id) {\n assert(!runDependencyTracking[id]);\n runDependencyTracking[id] = 1;\n if (runDependencyWatcher === null && typeof setInterval !== \"undefined\") {\n runDependencyWatcher = setInterval(function() {\n if (ABORT) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n return;\n }\n var shown = false;\n for (var dep in runDependencyTracking) {\n if (!shown) {\n shown = true;\n err(\"still waiting on run dependencies:\");\n }\n err(\"dependency: \" + dep);\n }\n if (shown) {\n err(\"(end of list)\");\n }\n }, 1e4);\n }\n } else {\n err(\"warning: run dependency added without ID\");\n }\n}\n\nfunction removeRunDependency(id) {\n runDependencies--;\n if (Module[\"monitorRunDependencies\"]) {\n Module[\"monitorRunDependencies\"](runDependencies);\n }\n if (id) {\n assert(runDependencyTracking[id]);\n delete runDependencyTracking[id];\n } else {\n err(\"warning: run dependency removed without ID\");\n }\n if (runDependencies == 0) {\n if (runDependencyWatcher !== null) {\n clearInterval(runDependencyWatcher);\n runDependencyWatcher = null;\n }\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n}\n\nModule[\"preloadedImages\"] = {};\n\nModule[\"preloadedAudios\"] = {};\n\nfunction abort(what) {\n if (Module[\"onAbort\"]) {\n Module[\"onAbort\"](what);\n }\n what += \"\";\n err(what);\n ABORT = true;\n EXITSTATUS = 1;\n var output = \"abort(\" + what + \") at \" + stackTrace();\n what = output;\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject(e);\n throw e;\n}\n\nfunction hasPrefix(str, prefix) {\n return String.prototype.startsWith ? str.startsWith(prefix) : str.indexOf(prefix) === 0;\n}\n\nvar dataURIPrefix = \"data:application/octet-stream;base64,\";\n\nfunction isDataURI(filename) {\n return hasPrefix(filename, dataURIPrefix);\n}\n\nvar fileURIPrefix = \"file://\";\n\nfunction isFileURI(filename) {\n return hasPrefix(filename, fileURIPrefix);\n}\n\nfunction createExportWrapper(name, fixedasm) {\n return function() {\n var displayName = name;\n var asm = fixedasm;\n if (!fixedasm) {\n asm = Module[\"asm\"];\n }\n assert(runtimeInitialized, \"native function `\" + displayName + \"` called before runtime initialization\");\n assert(!runtimeExited, \"native function `\" + displayName + \"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)\");\n if (!asm[name]) {\n assert(asm[name], \"exported native function `\" + displayName + \"` not found\");\n }\n return asm[name].apply(null, arguments);\n };\n}\n\nvar wasmBinaryFile = \"trace_to_text.wasm\";\n\nif (!isDataURI(wasmBinaryFile)) {\n wasmBinaryFile = locateFile(wasmBinaryFile);\n}\n\nfunction getBinary(file) {\n try {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n } else {\n throw \"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\";\n }\n } catch (err) {\n abort(err);\n }\n}\n\nfunction getBinaryPromise() {\n if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) {\n if (typeof fetch === \"function\" && !isFileURI(wasmBinaryFile)) {\n return fetch(wasmBinaryFile, {\n credentials: \"same-origin\"\n }).then(function(response) {\n if (!response[\"ok\"]) {\n throw \"failed to load wasm binary file at '\" + wasmBinaryFile + \"'\";\n }\n return response[\"arrayBuffer\"]();\n }).catch(function() {\n return getBinary(wasmBinaryFile);\n });\n } else {\n if (readAsync) {\n return new Promise(function(resolve, reject) {\n readAsync(wasmBinaryFile, function(response) {\n resolve(new Uint8Array(response));\n }, reject);\n });\n }\n }\n }\n return Promise.resolve().then(function() {\n return getBinary(wasmBinaryFile);\n });\n}\n\nfunction instantiateSync(file, info) {\n var instance;\n var module;\n var binary;\n try {\n binary = getBinary(file);\n module = new WebAssembly.Module(binary);\n instance = new WebAssembly.Instance(module, info);\n } catch (e) {\n var str = e.toString();\n err(\"failed to compile wasm module: \" + str);\n if (str.indexOf(\"imported Memory\") >= 0 || str.indexOf(\"memory import\") >= 0) {\n err(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\");\n }\n throw e;\n }\n return [ instance, module ];\n}\n\nfunction createWasm() {\n var info = {\n \"env\": asmLibraryArg,\n \"wasi_snapshot_preview1\": asmLibraryArg\n };\n function receiveInstance(instance, module) {\n var exports = instance.exports;\n Module[\"asm\"] = exports;\n wasmMemory = Module[\"asm\"][\"memory\"];\n assert(wasmMemory, \"memory not found in wasm exports\");\n updateGlobalBufferAndViews(wasmMemory.buffer);\n wasmTable = Module[\"asm\"][\"__indirect_function_table\"];\n assert(wasmTable, \"table not found in wasm exports\");\n removeRunDependency(\"wasm-instantiate\");\n }\n addRunDependency(\"wasm-instantiate\");\n var trueModule = Module;\n if (Module[\"instantiateWasm\"]) {\n try {\n var exports = Module[\"instantiateWasm\"](info, receiveInstance);\n return exports;\n } catch (e) {\n err(\"Module.instantiateWasm callback failed with error: \" + e);\n return false;\n }\n }\n var result = instantiateSync(wasmBinaryFile, info);\n receiveInstance(result[0], result[1]);\n return Module[\"asm\"];\n}\n\nvar tempDouble;\n\nvar tempI64;\n\nfunction callRuntimeCallbacks(callbacks) {\n while (callbacks.length > 0) {\n var callback = callbacks.shift();\n if (typeof callback == \"function\") {\n callback(Module);\n continue;\n }\n var func = callback.func;\n if (typeof func === \"number\") {\n if (callback.arg === undefined) {\n wasmTable.get(func)();\n } else {\n wasmTable.get(func)(callback.arg);\n }\n } else {\n func(callback.arg === undefined ? null : callback.arg);\n }\n }\n}\n\nfunction demangle(func) {\n warnOnce(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");\n return func;\n}\n\nfunction demangleAll(text) {\n var regex = /\\b_Z[\\w\\d_]+/g;\n return text.replace(regex, function(x) {\n var y = demangle(x);\n return x === y ? x : y + \" [\" + x + \"]\";\n });\n}\n\nfunction jsStackTrace() {\n var error = new Error();\n if (!error.stack) {\n try {\n throw new Error();\n } catch (e) {\n error = e;\n }\n if (!error.stack) {\n return \"(no stack trace available)\";\n }\n }\n return error.stack.toString();\n}\n\nfunction stackTrace() {\n var js = jsStackTrace();\n if (Module[\"extraStackTrace\"]) js += \"\\n\" + Module[\"extraStackTrace\"]();\n return demangleAll(js);\n}\n\nvar _emscripten_get_now;\n\nif (ENVIRONMENT_IS_NODE) {\n _emscripten_get_now = function() {\n var t = process[\"hrtime\"]();\n return t[0] * 1e3 + t[1] / 1e6;\n };\n} else if (typeof dateNow !== \"undefined\") {\n _emscripten_get_now = dateNow;\n} else _emscripten_get_now = function() {\n return performance.now();\n};\n\nvar _emscripten_get_now_is_monotonic = true;\n\nfunction setErrNo(value) {\n HEAP32[___errno_location() >> 2] = value;\n return value;\n}\n\nfunction _clock_gettime(clk_id, tp) {\n var now;\n if (clk_id === 0) {\n now = Date.now();\n } else if ((clk_id === 1 || clk_id === 4) && _emscripten_get_now_is_monotonic) {\n now = _emscripten_get_now();\n } else {\n setErrNo(28);\n return -1;\n }\n HEAP32[tp >> 2] = now / 1e3 | 0;\n HEAP32[tp + 4 >> 2] = now % 1e3 * 1e3 * 1e3 | 0;\n return 0;\n}\n\nfunction ___clock_gettime(a0, a1) {\n return _clock_gettime(a0, a1);\n}\n\nfunction _atexit(func, arg) {}\n\nfunction ___cxa_atexit(a0, a1) {\n return _atexit(a0, a1);\n}\n\nfunction _tzset() {\n if (_tzset.called) return;\n _tzset.called = true;\n var currentYear = new Date().getFullYear();\n var winter = new Date(currentYear, 0, 1);\n var summer = new Date(currentYear, 6, 1);\n var winterOffset = winter.getTimezoneOffset();\n var summerOffset = summer.getTimezoneOffset();\n var stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n HEAP32[__get_timezone() >> 2] = stdTimezoneOffset * 60;\n HEAP32[__get_daylight() >> 2] = Number(winterOffset != summerOffset);\n function extractZone(date) {\n var match = date.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);\n return match ? match[1] : \"GMT\";\n }\n var winterName = extractZone(winter);\n var summerName = extractZone(summer);\n var winterNamePtr = allocateUTF8(winterName);\n var summerNamePtr = allocateUTF8(summerName);\n if (summerOffset < winterOffset) {\n HEAP32[__get_tzname() >> 2] = winterNamePtr;\n HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr;\n } else {\n HEAP32[__get_tzname() >> 2] = summerNamePtr;\n HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr;\n }\n}\n\nfunction _localtime_r(time, tmPtr) {\n _tzset();\n var date = new Date(HEAP32[time >> 2] * 1e3);\n HEAP32[tmPtr >> 2] = date.getSeconds();\n HEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n HEAP32[tmPtr + 8 >> 2] = date.getHours();\n HEAP32[tmPtr + 12 >> 2] = date.getDate();\n HEAP32[tmPtr + 16 >> 2] = date.getMonth();\n HEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n HEAP32[tmPtr + 24 >> 2] = date.getDay();\n var start = new Date(date.getFullYear(), 0, 1);\n var yday = (date.getTime() - start.getTime()) / (1e3 * 60 * 60 * 24) | 0;\n HEAP32[tmPtr + 28 >> 2] = yday;\n HEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n var summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n var winterOffset = start.getTimezoneOffset();\n var dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n HEAP32[tmPtr + 32 >> 2] = dst;\n var zonePtr = HEAP32[__get_tzname() + (dst ? 4 : 0) >> 2];\n HEAP32[tmPtr + 40 >> 2] = zonePtr;\n return tmPtr;\n}\n\nfunction ___localtime_r(a0, a1) {\n return _localtime_r(a0, a1);\n}\n\nvar PATH = {\n splitPath: function(filename) {\n var splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\n return splitPathRe.exec(filename).slice(1);\n },\n normalizeArray: function(parts, allowAboveRoot) {\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === \".\") {\n parts.splice(i, 1);\n } else if (last === \"..\") {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n if (allowAboveRoot) {\n for (;up; up--) {\n parts.unshift(\"..\");\n }\n }\n return parts;\n },\n normalize: function(path) {\n var isAbsolute = path.charAt(0) === \"/\", trailingSlash = path.substr(-1) === \"/\";\n path = PATH.normalizeArray(path.split(\"/\").filter(function(p) {\n return !!p;\n }), !isAbsolute).join(\"/\");\n if (!path && !isAbsolute) {\n path = \".\";\n }\n if (path && trailingSlash) {\n path += \"/\";\n }\n return (isAbsolute ? \"/\" : \"\") + path;\n },\n dirname: function(path) {\n var result = PATH.splitPath(path), root = result[0], dir = result[1];\n if (!root && !dir) {\n return \".\";\n }\n if (dir) {\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n },\n basename: function(path) {\n if (path === \"/\") return \"/\";\n path = PATH.normalize(path);\n path = path.replace(/\\/$/, \"\");\n var lastSlash = path.lastIndexOf(\"/\");\n if (lastSlash === -1) return path;\n return path.substr(lastSlash + 1);\n },\n extname: function(path) {\n return PATH.splitPath(path)[3];\n },\n join: function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return PATH.normalize(paths.join(\"/\"));\n },\n join2: function(l, r) {\n return PATH.normalize(l + \"/\" + r);\n }\n};\n\nfunction getRandomDevice() {\n if (typeof crypto === \"object\" && typeof crypto[\"getRandomValues\"] === \"function\") {\n var randomBuffer = new Uint8Array(1);\n return function() {\n crypto.getRandomValues(randomBuffer);\n return randomBuffer[0];\n };\n } else if (ENVIRONMENT_IS_NODE) {\n try {\n var crypto_module = require(\"crypto\");\n return function() {\n return crypto_module[\"randomBytes\"](1)[0];\n };\n } catch (e) {}\n }\n return function() {\n abort(\"no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };\");\n };\n}\n\nvar PATH_FS = {\n resolve: function() {\n var resolvedPath = \"\", resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : FS.cwd();\n if (typeof path !== \"string\") {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n } else if (!path) {\n return \"\";\n }\n resolvedPath = path + \"/\" + resolvedPath;\n resolvedAbsolute = path.charAt(0) === \"/\";\n }\n resolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter(function(p) {\n return !!p;\n }), !resolvedAbsolute).join(\"/\");\n return (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n },\n relative: function(from, to) {\n from = PATH_FS.resolve(from).substr(1);\n to = PATH_FS.resolve(to).substr(1);\n function trim(arr) {\n var start = 0;\n for (;start < arr.length; start++) {\n if (arr[start] !== \"\") break;\n }\n var end = arr.length - 1;\n for (;end >= 0; end--) {\n if (arr[end] !== \"\") break;\n }\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n var fromParts = trim(from.split(\"/\"));\n var toParts = trim(to.split(\"/\"));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push(\"..\");\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join(\"/\");\n }\n};\n\nvar TTY = {\n ttys: [],\n init: function() {},\n shutdown: function() {},\n register: function(dev, ops) {\n TTY.ttys[dev] = {\n input: [],\n output: [],\n ops: ops\n };\n FS.registerDevice(dev, TTY.stream_ops);\n },\n stream_ops: {\n open: function(stream) {\n var tty = TTY.ttys[stream.node.rdev];\n if (!tty) {\n throw new FS.ErrnoError(43);\n }\n stream.tty = tty;\n stream.seekable = false;\n },\n close: function(stream) {\n stream.tty.ops.flush(stream.tty);\n },\n flush: function(stream) {\n stream.tty.ops.flush(stream.tty);\n },\n read: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.get_char) {\n throw new FS.ErrnoError(60);\n }\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = stream.tty.ops.get_char(stream.tty);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n if (!stream.tty || !stream.tty.ops.put_char) {\n throw new FS.ErrnoError(60);\n }\n try {\n for (var i = 0; i < length; i++) {\n stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n }\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n },\n default_tty_ops: {\n get_char: function(tty) {\n if (!tty.input.length) {\n var result = null;\n if (ENVIRONMENT_IS_NODE) {\n var BUFSIZE = 256;\n var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);\n var bytesRead = 0;\n try {\n bytesRead = nodeFS.readSync(process.stdin.fd, buf, 0, BUFSIZE, null);\n } catch (e) {\n if (e.toString().indexOf(\"EOF\") != -1) bytesRead = 0; else throw e;\n }\n if (bytesRead > 0) {\n result = buf.slice(0, bytesRead).toString(\"utf-8\");\n } else {\n result = null;\n }\n } else if (typeof window != \"undefined\" && typeof window.prompt == \"function\") {\n result = window.prompt(\"Input: \");\n if (result !== null) {\n result += \"\\n\";\n }\n } else if (typeof readline == \"function\") {\n result = readline();\n if (result !== null) {\n result += \"\\n\";\n }\n }\n if (!result) {\n return null;\n }\n tty.input = intArrayFromString(result, true);\n }\n return tty.input.shift();\n },\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function(tty) {\n if (tty.output && tty.output.length > 0) {\n out(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n },\n default_tty1_ops: {\n put_char: function(tty, val) {\n if (val === null || val === 10) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n } else {\n if (val != 0) tty.output.push(val);\n }\n },\n flush: function(tty) {\n if (tty.output && tty.output.length > 0) {\n err(UTF8ArrayToString(tty.output, 0));\n tty.output = [];\n }\n }\n }\n};\n\nfunction mmapAlloc(size) {\n var alignedSize = alignMemory(size, 16384);\n var ptr = _malloc(alignedSize);\n while (size < alignedSize) HEAP8[ptr + size++] = 0;\n return ptr;\n}\n\nvar MEMFS = {\n ops_table: null,\n mount: function(mount) {\n return MEMFS.createNode(null, \"/\", 16384 | 511, 0);\n },\n createNode: function(parent, name, mode, dev) {\n if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {\n throw new FS.ErrnoError(63);\n }\n if (!MEMFS.ops_table) {\n MEMFS.ops_table = {\n dir: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n lookup: MEMFS.node_ops.lookup,\n mknod: MEMFS.node_ops.mknod,\n rename: MEMFS.node_ops.rename,\n unlink: MEMFS.node_ops.unlink,\n rmdir: MEMFS.node_ops.rmdir,\n readdir: MEMFS.node_ops.readdir,\n symlink: MEMFS.node_ops.symlink\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek\n }\n },\n file: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: {\n llseek: MEMFS.stream_ops.llseek,\n read: MEMFS.stream_ops.read,\n write: MEMFS.stream_ops.write,\n allocate: MEMFS.stream_ops.allocate,\n mmap: MEMFS.stream_ops.mmap,\n msync: MEMFS.stream_ops.msync\n }\n },\n link: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr,\n readlink: MEMFS.node_ops.readlink\n },\n stream: {}\n },\n chrdev: {\n node: {\n getattr: MEMFS.node_ops.getattr,\n setattr: MEMFS.node_ops.setattr\n },\n stream: FS.chrdev_stream_ops\n }\n };\n }\n var node = FS.createNode(parent, name, mode, dev);\n if (FS.isDir(node.mode)) {\n node.node_ops = MEMFS.ops_table.dir.node;\n node.stream_ops = MEMFS.ops_table.dir.stream;\n node.contents = {};\n } else if (FS.isFile(node.mode)) {\n node.node_ops = MEMFS.ops_table.file.node;\n node.stream_ops = MEMFS.ops_table.file.stream;\n node.usedBytes = 0;\n node.contents = null;\n } else if (FS.isLink(node.mode)) {\n node.node_ops = MEMFS.ops_table.link.node;\n node.stream_ops = MEMFS.ops_table.link.stream;\n } else if (FS.isChrdev(node.mode)) {\n node.node_ops = MEMFS.ops_table.chrdev.node;\n node.stream_ops = MEMFS.ops_table.chrdev.stream;\n }\n node.timestamp = Date.now();\n if (parent) {\n parent.contents[name] = node;\n parent.timestamp = node.timestamp;\n }\n return node;\n },\n getFileDataAsRegularArray: function(node) {\n if (node.contents && node.contents.subarray) {\n var arr = [];\n for (var i = 0; i < node.usedBytes; ++i) arr.push(node.contents[i]);\n return arr;\n }\n return node.contents;\n },\n getFileDataAsTypedArray: function(node) {\n if (!node.contents) return new Uint8Array(0);\n if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n return new Uint8Array(node.contents);\n },\n expandFileStorage: function(node, newCapacity) {\n var prevCapacity = node.contents ? node.contents.length : 0;\n if (prevCapacity >= newCapacity) return;\n var CAPACITY_DOUBLING_MAX = 1024 * 1024;\n newCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0);\n if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n var oldContents = node.contents;\n node.contents = new Uint8Array(newCapacity);\n if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n return;\n },\n resizeFileStorage: function(node, newSize) {\n if (node.usedBytes == newSize) return;\n if (newSize == 0) {\n node.contents = null;\n node.usedBytes = 0;\n return;\n }\n if (!node.contents || node.contents.subarray) {\n var oldContents = node.contents;\n node.contents = new Uint8Array(newSize);\n if (oldContents) {\n node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n }\n node.usedBytes = newSize;\n return;\n }\n if (!node.contents) node.contents = [];\n if (node.contents.length > newSize) node.contents.length = newSize; else while (node.contents.length < newSize) node.contents.push(0);\n node.usedBytes = newSize;\n },\n node_ops: {\n getattr: function(node) {\n var attr = {};\n attr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n attr.ino = node.id;\n attr.mode = node.mode;\n attr.nlink = 1;\n attr.uid = 0;\n attr.gid = 0;\n attr.rdev = node.rdev;\n if (FS.isDir(node.mode)) {\n attr.size = 4096;\n } else if (FS.isFile(node.mode)) {\n attr.size = node.usedBytes;\n } else if (FS.isLink(node.mode)) {\n attr.size = node.link.length;\n } else {\n attr.size = 0;\n }\n attr.atime = new Date(node.timestamp);\n attr.mtime = new Date(node.timestamp);\n attr.ctime = new Date(node.timestamp);\n attr.blksize = 4096;\n attr.blocks = Math.ceil(attr.size / attr.blksize);\n return attr;\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n if (attr.size !== undefined) {\n MEMFS.resizeFileStorage(node, attr.size);\n }\n },\n lookup: function(parent, name) {\n throw FS.genericErrors[44];\n },\n mknod: function(parent, name, mode, dev) {\n return MEMFS.createNode(parent, name, mode, dev);\n },\n rename: function(old_node, new_dir, new_name) {\n if (FS.isDir(old_node.mode)) {\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (new_node) {\n for (var i in new_node.contents) {\n throw new FS.ErrnoError(55);\n }\n }\n }\n delete old_node.parent.contents[old_node.name];\n old_node.parent.timestamp = Date.now();\n old_node.name = new_name;\n new_dir.contents[new_name] = old_node;\n new_dir.timestamp = old_node.parent.timestamp;\n old_node.parent = new_dir;\n },\n unlink: function(parent, name) {\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n rmdir: function(parent, name) {\n var node = FS.lookupNode(parent, name);\n for (var i in node.contents) {\n throw new FS.ErrnoError(55);\n }\n delete parent.contents[name];\n parent.timestamp = Date.now();\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newname, oldpath) {\n var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);\n node.link = oldpath;\n return node;\n },\n readlink: function(node) {\n if (!FS.isLink(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n return node.link;\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n var contents = stream.node.contents;\n if (position >= stream.node.usedBytes) return 0;\n var size = Math.min(stream.node.usedBytes - position, length);\n assert(size >= 0);\n if (size > 8 && contents.subarray) {\n buffer.set(contents.subarray(position, position + size), offset);\n } else {\n for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n }\n return size;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n assert(!(buffer instanceof ArrayBuffer));\n if (buffer.buffer === HEAP8.buffer) {\n canOwn = false;\n }\n if (!length) return 0;\n var node = stream.node;\n node.timestamp = Date.now();\n if (buffer.subarray && (!node.contents || node.contents.subarray)) {\n if (canOwn) {\n assert(position === 0, \"canOwn must imply no weird position inside the file\");\n node.contents = buffer.subarray(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (node.usedBytes === 0 && position === 0) {\n node.contents = buffer.slice(offset, offset + length);\n node.usedBytes = length;\n return length;\n } else if (position + length <= node.usedBytes) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n return length;\n }\n }\n MEMFS.expandFileStorage(node, position + length);\n if (node.contents.subarray && buffer.subarray) {\n node.contents.set(buffer.subarray(offset, offset + length), position);\n } else {\n for (var i = 0; i < length; i++) {\n node.contents[position + i] = buffer[offset + i];\n }\n }\n node.usedBytes = Math.max(node.usedBytes, position + length);\n return length;\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.usedBytes;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n },\n allocate: function(stream, offset, length) {\n MEMFS.expandFileStorage(stream.node, offset + length);\n stream.node.usedBytes = Math.max(stream.node.usedBytes, offset + length);\n },\n mmap: function(stream, address, length, position, prot, flags) {\n if (address !== 0) {\n throw new FS.ErrnoError(28);\n }\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n var ptr;\n var allocated;\n var contents = stream.node.contents;\n if (!(flags & 2) && contents.buffer === buffer) {\n allocated = false;\n ptr = contents.byteOffset;\n } else {\n if (position > 0 || position + length < contents.length) {\n if (contents.subarray) {\n contents = contents.subarray(position, position + length);\n } else {\n contents = Array.prototype.slice.call(contents, position, position + length);\n }\n }\n allocated = true;\n ptr = mmapAlloc(length);\n if (!ptr) {\n throw new FS.ErrnoError(48);\n }\n HEAP8.set(contents, ptr);\n }\n return {\n ptr: ptr,\n allocated: allocated\n };\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (mmapFlags & 2) {\n return 0;\n }\n var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n return 0;\n }\n }\n};\n\nvar WORKERFS = {\n DIR_MODE: 16895,\n FILE_MODE: 33279,\n reader: null,\n mount: function(mount) {\n assert(ENVIRONMENT_IS_WORKER);\n if (!WORKERFS.reader) WORKERFS.reader = new FileReaderSync();\n var root = WORKERFS.createNode(null, \"/\", WORKERFS.DIR_MODE, 0);\n var createdParents = {};\n function ensureParent(path) {\n var parts = path.split(\"/\");\n var parent = root;\n for (var i = 0; i < parts.length - 1; i++) {\n var curr = parts.slice(0, i + 1).join(\"/\");\n if (!createdParents[curr]) {\n createdParents[curr] = WORKERFS.createNode(parent, parts[i], WORKERFS.DIR_MODE, 0);\n }\n parent = createdParents[curr];\n }\n return parent;\n }\n function base(path) {\n var parts = path.split(\"/\");\n return parts[parts.length - 1];\n }\n Array.prototype.forEach.call(mount.opts[\"files\"] || [], function(file) {\n WORKERFS.createNode(ensureParent(file.name), base(file.name), WORKERFS.FILE_MODE, 0, file, file.lastModifiedDate);\n });\n (mount.opts[\"blobs\"] || []).forEach(function(obj) {\n WORKERFS.createNode(ensureParent(obj[\"name\"]), base(obj[\"name\"]), WORKERFS.FILE_MODE, 0, obj[\"data\"]);\n });\n (mount.opts[\"packages\"] || []).forEach(function(pack) {\n pack[\"metadata\"].files.forEach(function(file) {\n var name = file.filename.substr(1);\n WORKERFS.createNode(ensureParent(name), base(name), WORKERFS.FILE_MODE, 0, pack[\"blob\"].slice(file.start, file.end));\n });\n });\n return root;\n },\n createNode: function(parent, name, mode, dev, contents, mtime) {\n var node = FS.createNode(parent, name, mode);\n node.mode = mode;\n node.node_ops = WORKERFS.node_ops;\n node.stream_ops = WORKERFS.stream_ops;\n node.timestamp = (mtime || new Date()).getTime();\n assert(WORKERFS.FILE_MODE !== WORKERFS.DIR_MODE);\n if (mode === WORKERFS.FILE_MODE) {\n node.size = contents.size;\n node.contents = contents;\n } else {\n node.size = 4096;\n node.contents = {};\n }\n if (parent) {\n parent.contents[name] = node;\n }\n return node;\n },\n node_ops: {\n getattr: function(node) {\n return {\n dev: 1,\n ino: node.id,\n mode: node.mode,\n nlink: 1,\n uid: 0,\n gid: 0,\n rdev: undefined,\n size: node.size,\n atime: new Date(node.timestamp),\n mtime: new Date(node.timestamp),\n ctime: new Date(node.timestamp),\n blksize: 4096,\n blocks: Math.ceil(node.size / 4096)\n };\n },\n setattr: function(node, attr) {\n if (attr.mode !== undefined) {\n node.mode = attr.mode;\n }\n if (attr.timestamp !== undefined) {\n node.timestamp = attr.timestamp;\n }\n },\n lookup: function(parent, name) {\n throw new FS.ErrnoError(44);\n },\n mknod: function(parent, name, mode, dev) {\n throw new FS.ErrnoError(63);\n },\n rename: function(oldNode, newDir, newName) {\n throw new FS.ErrnoError(63);\n },\n unlink: function(parent, name) {\n throw new FS.ErrnoError(63);\n },\n rmdir: function(parent, name) {\n throw new FS.ErrnoError(63);\n },\n readdir: function(node) {\n var entries = [ \".\", \"..\" ];\n for (var key in node.contents) {\n if (!node.contents.hasOwnProperty(key)) {\n continue;\n }\n entries.push(key);\n }\n return entries;\n },\n symlink: function(parent, newName, oldPath) {\n throw new FS.ErrnoError(63);\n },\n readlink: function(node) {\n throw new FS.ErrnoError(63);\n }\n },\n stream_ops: {\n read: function(stream, buffer, offset, length, position) {\n if (position >= stream.node.size) return 0;\n var chunk = stream.node.contents.slice(position, position + length);\n var ab = WORKERFS.reader.readAsArrayBuffer(chunk);\n buffer.set(new Uint8Array(ab), offset);\n return chunk.size;\n },\n write: function(stream, buffer, offset, length, position) {\n throw new FS.ErrnoError(29);\n },\n llseek: function(stream, offset, whence) {\n var position = offset;\n if (whence === 1) {\n position += stream.position;\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n position += stream.node.size;\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28);\n }\n return position;\n }\n }\n};\n\nvar ERRNO_MESSAGES = {\n 0: \"Success\",\n 1: \"Arg list too long\",\n 2: \"Permission denied\",\n 3: \"Address already in use\",\n 4: \"Address not available\",\n 5: \"Address family not supported by protocol family\",\n 6: \"No more processes\",\n 7: \"Socket already connected\",\n 8: \"Bad file number\",\n 9: \"Trying to read unreadable message\",\n 10: \"Mount device busy\",\n 11: \"Operation canceled\",\n 12: \"No children\",\n 13: \"Connection aborted\",\n 14: \"Connection refused\",\n 15: \"Connection reset by peer\",\n 16: \"File locking deadlock error\",\n 17: \"Destination address required\",\n 18: \"Math arg out of domain of func\",\n 19: \"Quota exceeded\",\n 20: \"File exists\",\n 21: \"Bad address\",\n 22: \"File too large\",\n 23: \"Host is unreachable\",\n 24: \"Identifier removed\",\n 25: \"Illegal byte sequence\",\n 26: \"Connection already in progress\",\n 27: \"Interrupted system call\",\n 28: \"Invalid argument\",\n 29: \"I/O error\",\n 30: \"Socket is already connected\",\n 31: \"Is a directory\",\n 32: \"Too many symbolic links\",\n 33: \"Too many open files\",\n 34: \"Too many links\",\n 35: \"Message too long\",\n 36: \"Multihop attempted\",\n 37: \"File or path name too long\",\n 38: \"Network interface is not configured\",\n 39: \"Connection reset by network\",\n 40: \"Network is unreachable\",\n 41: \"Too many open files in system\",\n 42: \"No buffer space available\",\n 43: \"No such device\",\n 44: \"No such file or directory\",\n 45: \"Exec format error\",\n 46: \"No record locks available\",\n 47: \"The link has been severed\",\n 48: \"Not enough core\",\n 49: \"No message of desired type\",\n 50: \"Protocol not available\",\n 51: \"No space left on device\",\n 52: \"Function not implemented\",\n 53: \"Socket is not connected\",\n 54: \"Not a directory\",\n 55: \"Directory not empty\",\n 56: \"State not recoverable\",\n 57: \"Socket operation on non-socket\",\n 59: \"Not a typewriter\",\n 60: \"No such device or address\",\n 61: \"Value too large for defined data type\",\n 62: \"Previous owner died\",\n 63: \"Not super-user\",\n 64: \"Broken pipe\",\n 65: \"Protocol error\",\n 66: \"Unknown protocol\",\n 67: \"Protocol wrong type for socket\",\n 68: \"Math result not representable\",\n 69: \"Read only file system\",\n 70: \"Illegal seek\",\n 71: \"No such process\",\n 72: \"Stale file handle\",\n 73: \"Connection timed out\",\n 74: \"Text file busy\",\n 75: \"Cross-device link\",\n 100: \"Device not a stream\",\n 101: \"Bad font file fmt\",\n 102: \"Invalid slot\",\n 103: \"Invalid request code\",\n 104: \"No anode\",\n 105: \"Block device required\",\n 106: \"Channel number out of range\",\n 107: \"Level 3 halted\",\n 108: \"Level 3 reset\",\n 109: \"Link number out of range\",\n 110: \"Protocol driver not attached\",\n 111: \"No CSI structure available\",\n 112: \"Level 2 halted\",\n 113: \"Invalid exchange\",\n 114: \"Invalid request descriptor\",\n 115: \"Exchange full\",\n 116: \"No data (for no delay io)\",\n 117: \"Timer expired\",\n 118: \"Out of streams resources\",\n 119: \"Machine is not on the network\",\n 120: \"Package not installed\",\n 121: \"The object is remote\",\n 122: \"Advertise error\",\n 123: \"Srmount error\",\n 124: \"Communication error on send\",\n 125: \"Cross mount point (not really error)\",\n 126: \"Given log. name not unique\",\n 127: \"f.d. invalid for this operation\",\n 128: \"Remote address changed\",\n 129: \"Can access a needed shared lib\",\n 130: \"Accessing a corrupted shared lib\",\n 131: \".lib section in a.out corrupted\",\n 132: \"Attempting to link in too many libs\",\n 133: \"Attempting to exec a shared library\",\n 135: \"Streams pipe error\",\n 136: \"Too many users\",\n 137: \"Socket type not supported\",\n 138: \"Not supported\",\n 139: \"Protocol family not supported\",\n 140: \"Can't send after socket shutdown\",\n 141: \"Too many references\",\n 142: \"Host is down\",\n 148: \"No medium (in tape drive)\",\n 156: \"Level 2 not synchronized\"\n};\n\nvar ERRNO_CODES = {\n EPERM: 63,\n ENOENT: 44,\n ESRCH: 71,\n EINTR: 27,\n EIO: 29,\n ENXIO: 60,\n E2BIG: 1,\n ENOEXEC: 45,\n EBADF: 8,\n ECHILD: 12,\n EAGAIN: 6,\n EWOULDBLOCK: 6,\n ENOMEM: 48,\n EACCES: 2,\n EFAULT: 21,\n ENOTBLK: 105,\n EBUSY: 10,\n EEXIST: 20,\n EXDEV: 75,\n ENODEV: 43,\n ENOTDIR: 54,\n EISDIR: 31,\n EINVAL: 28,\n ENFILE: 41,\n EMFILE: 33,\n ENOTTY: 59,\n ETXTBSY: 74,\n EFBIG: 22,\n ENOSPC: 51,\n ESPIPE: 70,\n EROFS: 69,\n EMLINK: 34,\n EPIPE: 64,\n EDOM: 18,\n ERANGE: 68,\n ENOMSG: 49,\n EIDRM: 24,\n ECHRNG: 106,\n EL2NSYNC: 156,\n EL3HLT: 107,\n EL3RST: 108,\n ELNRNG: 109,\n EUNATCH: 110,\n ENOCSI: 111,\n EL2HLT: 112,\n EDEADLK: 16,\n ENOLCK: 46,\n EBADE: 113,\n EBADR: 114,\n EXFULL: 115,\n ENOANO: 104,\n EBADRQC: 103,\n EBADSLT: 102,\n EDEADLOCK: 16,\n EBFONT: 101,\n ENOSTR: 100,\n ENODATA: 116,\n ETIME: 117,\n ENOSR: 118,\n ENONET: 119,\n ENOPKG: 120,\n EREMOTE: 121,\n ENOLINK: 47,\n EADV: 122,\n ESRMNT: 123,\n ECOMM: 124,\n EPROTO: 65,\n EMULTIHOP: 36,\n EDOTDOT: 125,\n EBADMSG: 9,\n ENOTUNIQ: 126,\n EBADFD: 127,\n EREMCHG: 128,\n ELIBACC: 129,\n ELIBBAD: 130,\n ELIBSCN: 131,\n ELIBMAX: 132,\n ELIBEXEC: 133,\n ENOSYS: 52,\n ENOTEMPTY: 55,\n ENAMETOOLONG: 37,\n ELOOP: 32,\n EOPNOTSUPP: 138,\n EPFNOSUPPORT: 139,\n ECONNRESET: 15,\n ENOBUFS: 42,\n EAFNOSUPPORT: 5,\n EPROTOTYPE: 67,\n ENOTSOCK: 57,\n ENOPROTOOPT: 50,\n ESHUTDOWN: 140,\n ECONNREFUSED: 14,\n EADDRINUSE: 3,\n ECONNABORTED: 13,\n ENETUNREACH: 40,\n ENETDOWN: 38,\n ETIMEDOUT: 73,\n EHOSTDOWN: 142,\n EHOSTUNREACH: 23,\n EINPROGRESS: 26,\n EALREADY: 7,\n EDESTADDRREQ: 17,\n EMSGSIZE: 35,\n EPROTONOSUPPORT: 66,\n ESOCKTNOSUPPORT: 137,\n EADDRNOTAVAIL: 4,\n ENETRESET: 39,\n EISCONN: 30,\n ENOTCONN: 53,\n ETOOMANYREFS: 141,\n EUSERS: 136,\n EDQUOT: 19,\n ESTALE: 72,\n ENOTSUP: 138,\n ENOMEDIUM: 148,\n EILSEQ: 25,\n EOVERFLOW: 61,\n ECANCELED: 11,\n ENOTRECOVERABLE: 56,\n EOWNERDEAD: 62,\n ESTRPIPE: 135\n};\n\nvar FS = {\n root: null,\n mounts: [],\n devices: {},\n streams: [],\n nextInode: 1,\n nameTable: null,\n currentPath: \"/\",\n initialized: false,\n ignorePermissions: true,\n trackingDelegate: {},\n tracking: {\n openFlags: {\n READ: 1,\n WRITE: 2\n }\n },\n ErrnoError: null,\n genericErrors: {},\n filesystems: null,\n syncFSRequests: 0,\n lookupPath: function(path, opts) {\n path = PATH_FS.resolve(FS.cwd(), path);\n opts = opts || {};\n if (!path) return {\n path: \"\",\n node: null\n };\n var defaults = {\n follow_mount: true,\n recurse_count: 0\n };\n for (var key in defaults) {\n if (opts[key] === undefined) {\n opts[key] = defaults[key];\n }\n }\n if (opts.recurse_count > 8) {\n throw new FS.ErrnoError(32);\n }\n var parts = PATH.normalizeArray(path.split(\"/\").filter(function(p) {\n return !!p;\n }), false);\n var current = FS.root;\n var current_path = \"/\";\n for (var i = 0; i < parts.length; i++) {\n var islast = i === parts.length - 1;\n if (islast && opts.parent) {\n break;\n }\n current = FS.lookupNode(current, parts[i]);\n current_path = PATH.join2(current_path, parts[i]);\n if (FS.isMountpoint(current)) {\n if (!islast || islast && opts.follow_mount) {\n current = current.mounted.root;\n }\n }\n if (!islast || opts.follow) {\n var count = 0;\n while (FS.isLink(current.mode)) {\n var link = FS.readlink(current_path);\n current_path = PATH_FS.resolve(PATH.dirname(current_path), link);\n var lookup = FS.lookupPath(current_path, {\n recurse_count: opts.recurse_count\n });\n current = lookup.node;\n if (count++ > 40) {\n throw new FS.ErrnoError(32);\n }\n }\n }\n }\n return {\n path: current_path,\n node: current\n };\n },\n getPath: function(node) {\n var path;\n while (true) {\n if (FS.isRoot(node)) {\n var mount = node.mount.mountpoint;\n if (!path) return mount;\n return mount[mount.length - 1] !== \"/\" ? mount + \"/\" + path : mount + path;\n }\n path = path ? node.name + \"/\" + path : node.name;\n node = node.parent;\n }\n },\n hashName: function(parentid, name) {\n var hash = 0;\n for (var i = 0; i < name.length; i++) {\n hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n }\n return (parentid + hash >>> 0) % FS.nameTable.length;\n },\n hashAddNode: function(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n node.name_next = FS.nameTable[hash];\n FS.nameTable[hash] = node;\n },\n hashRemoveNode: function(node) {\n var hash = FS.hashName(node.parent.id, node.name);\n if (FS.nameTable[hash] === node) {\n FS.nameTable[hash] = node.name_next;\n } else {\n var current = FS.nameTable[hash];\n while (current) {\n if (current.name_next === node) {\n current.name_next = node.name_next;\n break;\n }\n current = current.name_next;\n }\n }\n },\n lookupNode: function(parent, name) {\n var errCode = FS.mayLookup(parent);\n if (errCode) {\n throw new FS.ErrnoError(errCode, parent);\n }\n var hash = FS.hashName(parent.id, name);\n for (var node = FS.nameTable[hash]; node; node = node.name_next) {\n var nodeName = node.name;\n if (node.parent.id === parent.id && nodeName === name) {\n return node;\n }\n }\n return FS.lookup(parent, name);\n },\n createNode: function(parent, name, mode, rdev) {\n assert(typeof parent === \"object\");\n var node = new FS.FSNode(parent, name, mode, rdev);\n FS.hashAddNode(node);\n return node;\n },\n destroyNode: function(node) {\n FS.hashRemoveNode(node);\n },\n isRoot: function(node) {\n return node === node.parent;\n },\n isMountpoint: function(node) {\n return !!node.mounted;\n },\n isFile: function(mode) {\n return (mode & 61440) === 32768;\n },\n isDir: function(mode) {\n return (mode & 61440) === 16384;\n },\n isLink: function(mode) {\n return (mode & 61440) === 40960;\n },\n isChrdev: function(mode) {\n return (mode & 61440) === 8192;\n },\n isBlkdev: function(mode) {\n return (mode & 61440) === 24576;\n },\n isFIFO: function(mode) {\n return (mode & 61440) === 4096;\n },\n isSocket: function(mode) {\n return (mode & 49152) === 49152;\n },\n flagModes: {\n \"r\": 0,\n \"r+\": 2,\n \"w\": 577,\n \"w+\": 578,\n \"a\": 1089,\n \"a+\": 1090\n },\n modeStringToFlags: function(str) {\n var flags = FS.flagModes[str];\n if (typeof flags === \"undefined\") {\n throw new Error(\"Unknown file open mode: \" + str);\n }\n return flags;\n },\n flagsToPermissionString: function(flag) {\n var perms = [ \"r\", \"w\", \"rw\" ][flag & 3];\n if (flag & 512) {\n perms += \"w\";\n }\n return perms;\n },\n nodePermissions: function(node, perms) {\n if (FS.ignorePermissions) {\n return 0;\n }\n if (perms.indexOf(\"r\") !== -1 && !(node.mode & 292)) {\n return 2;\n } else if (perms.indexOf(\"w\") !== -1 && !(node.mode & 146)) {\n return 2;\n } else if (perms.indexOf(\"x\") !== -1 && !(node.mode & 73)) {\n return 2;\n }\n return 0;\n },\n mayLookup: function(dir) {\n var errCode = FS.nodePermissions(dir, \"x\");\n if (errCode) return errCode;\n if (!dir.node_ops.lookup) return 2;\n return 0;\n },\n mayCreate: function(dir, name) {\n try {\n var node = FS.lookupNode(dir, name);\n return 20;\n } catch (e) {}\n return FS.nodePermissions(dir, \"wx\");\n },\n mayDelete: function(dir, name, isdir) {\n var node;\n try {\n node = FS.lookupNode(dir, name);\n } catch (e) {\n return e.errno;\n }\n var errCode = FS.nodePermissions(dir, \"wx\");\n if (errCode) {\n return errCode;\n }\n if (isdir) {\n if (!FS.isDir(node.mode)) {\n return 54;\n }\n if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {\n return 10;\n }\n } else {\n if (FS.isDir(node.mode)) {\n return 31;\n }\n }\n return 0;\n },\n mayOpen: function(node, flags) {\n if (!node) {\n return 44;\n }\n if (FS.isLink(node.mode)) {\n return 32;\n } else if (FS.isDir(node.mode)) {\n if (FS.flagsToPermissionString(flags) !== \"r\" || flags & 512) {\n return 31;\n }\n }\n return FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n },\n MAX_OPEN_FDS: 4096,\n nextfd: function(fd_start, fd_end) {\n fd_start = fd_start || 0;\n fd_end = fd_end || FS.MAX_OPEN_FDS;\n for (var fd = fd_start; fd <= fd_end; fd++) {\n if (!FS.streams[fd]) {\n return fd;\n }\n }\n throw new FS.ErrnoError(33);\n },\n getStream: function(fd) {\n return FS.streams[fd];\n },\n createStream: function(stream, fd_start, fd_end) {\n if (!FS.FSStream) {\n FS.FSStream = function() {};\n FS.FSStream.prototype = {\n object: {\n get: function() {\n return this.node;\n },\n set: function(val) {\n this.node = val;\n }\n },\n isRead: {\n get: function() {\n return (this.flags & 2097155) !== 1;\n }\n },\n isWrite: {\n get: function() {\n return (this.flags & 2097155) !== 0;\n }\n },\n isAppend: {\n get: function() {\n return this.flags & 1024;\n }\n }\n };\n }\n var newStream = new FS.FSStream();\n for (var p in stream) {\n newStream[p] = stream[p];\n }\n stream = newStream;\n var fd = FS.nextfd(fd_start, fd_end);\n stream.fd = fd;\n FS.streams[fd] = stream;\n return stream;\n },\n closeStream: function(fd) {\n FS.streams[fd] = null;\n },\n chrdev_stream_ops: {\n open: function(stream) {\n var device = FS.getDevice(stream.node.rdev);\n stream.stream_ops = device.stream_ops;\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n },\n llseek: function() {\n throw new FS.ErrnoError(70);\n }\n },\n major: function(dev) {\n return dev >> 8;\n },\n minor: function(dev) {\n return dev & 255;\n },\n makedev: function(ma, mi) {\n return ma << 8 | mi;\n },\n registerDevice: function(dev, ops) {\n FS.devices[dev] = {\n stream_ops: ops\n };\n },\n getDevice: function(dev) {\n return FS.devices[dev];\n },\n getMounts: function(mount) {\n var mounts = [];\n var check = [ mount ];\n while (check.length) {\n var m = check.pop();\n mounts.push(m);\n check.push.apply(check, m.mounts);\n }\n return mounts;\n },\n syncfs: function(populate, callback) {\n if (typeof populate === \"function\") {\n callback = populate;\n populate = false;\n }\n FS.syncFSRequests++;\n if (FS.syncFSRequests > 1) {\n err(\"warning: \" + FS.syncFSRequests + \" FS.syncfs operations in flight at once, probably just doing extra work\");\n }\n var mounts = FS.getMounts(FS.root.mount);\n var completed = 0;\n function doCallback(errCode) {\n assert(FS.syncFSRequests > 0);\n FS.syncFSRequests--;\n return callback(errCode);\n }\n function done(errCode) {\n if (errCode) {\n if (!done.errored) {\n done.errored = true;\n return doCallback(errCode);\n }\n return;\n }\n if (++completed >= mounts.length) {\n doCallback(null);\n }\n }\n mounts.forEach(function(mount) {\n if (!mount.type.syncfs) {\n return done(null);\n }\n mount.type.syncfs(mount, populate, done);\n });\n },\n mount: function(type, opts, mountpoint) {\n if (typeof type === \"string\") {\n throw type;\n }\n var root = mountpoint === \"/\";\n var pseudo = !mountpoint;\n var node;\n if (root && FS.root) {\n throw new FS.ErrnoError(10);\n } else if (!root && !pseudo) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n mountpoint = lookup.path;\n node = lookup.node;\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n if (!FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n }\n var mount = {\n type: type,\n opts: opts,\n mountpoint: mountpoint,\n mounts: []\n };\n var mountRoot = type.mount(mount);\n mountRoot.mount = mount;\n mount.root = mountRoot;\n if (root) {\n FS.root = mountRoot;\n } else if (node) {\n node.mounted = mount;\n if (node.mount) {\n node.mount.mounts.push(mount);\n }\n }\n return mountRoot;\n },\n unmount: function(mountpoint) {\n var lookup = FS.lookupPath(mountpoint, {\n follow_mount: false\n });\n if (!FS.isMountpoint(lookup.node)) {\n throw new FS.ErrnoError(28);\n }\n var node = lookup.node;\n var mount = node.mounted;\n var mounts = FS.getMounts(mount);\n Object.keys(FS.nameTable).forEach(function(hash) {\n var current = FS.nameTable[hash];\n while (current) {\n var next = current.name_next;\n if (mounts.indexOf(current.mount) !== -1) {\n FS.destroyNode(current);\n }\n current = next;\n }\n });\n node.mounted = null;\n var idx = node.mount.mounts.indexOf(mount);\n assert(idx !== -1);\n node.mount.mounts.splice(idx, 1);\n },\n lookup: function(parent, name) {\n return parent.node_ops.lookup(parent, name);\n },\n mknod: function(path, mode, dev) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n if (!name || name === \".\" || name === \"..\") {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.mayCreate(parent, name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.mknod) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.mknod(parent, name, mode, dev);\n },\n create: function(path, mode) {\n mode = mode !== undefined ? mode : 438;\n mode &= 4095;\n mode |= 32768;\n return FS.mknod(path, mode, 0);\n },\n mkdir: function(path, mode) {\n mode = mode !== undefined ? mode : 511;\n mode &= 511 | 512;\n mode |= 16384;\n return FS.mknod(path, mode, 0);\n },\n mkdirTree: function(path, mode) {\n var dirs = path.split(\"/\");\n var d = \"\";\n for (var i = 0; i < dirs.length; ++i) {\n if (!dirs[i]) continue;\n d += \"/\" + dirs[i];\n try {\n FS.mkdir(d, mode);\n } catch (e) {\n if (e.errno != 20) throw e;\n }\n }\n },\n mkdev: function(path, mode, dev) {\n if (typeof dev === \"undefined\") {\n dev = mode;\n mode = 438;\n }\n mode |= 8192;\n return FS.mknod(path, mode, dev);\n },\n symlink: function(oldpath, newpath) {\n if (!PATH_FS.resolve(oldpath)) {\n throw new FS.ErrnoError(44);\n }\n var lookup = FS.lookupPath(newpath, {\n parent: true\n });\n var parent = lookup.node;\n if (!parent) {\n throw new FS.ErrnoError(44);\n }\n var newname = PATH.basename(newpath);\n var errCode = FS.mayCreate(parent, newname);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.symlink) {\n throw new FS.ErrnoError(63);\n }\n return parent.node_ops.symlink(parent, newname, oldpath);\n },\n rename: function(old_path, new_path) {\n var old_dirname = PATH.dirname(old_path);\n var new_dirname = PATH.dirname(new_path);\n var old_name = PATH.basename(old_path);\n var new_name = PATH.basename(new_path);\n var lookup, old_dir, new_dir;\n lookup = FS.lookupPath(old_path, {\n parent: true\n });\n old_dir = lookup.node;\n lookup = FS.lookupPath(new_path, {\n parent: true\n });\n new_dir = lookup.node;\n if (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n if (old_dir.mount !== new_dir.mount) {\n throw new FS.ErrnoError(75);\n }\n var old_node = FS.lookupNode(old_dir, old_name);\n var relative = PATH_FS.relative(old_path, new_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(28);\n }\n relative = PATH_FS.relative(new_path, old_dirname);\n if (relative.charAt(0) !== \".\") {\n throw new FS.ErrnoError(55);\n }\n var new_node;\n try {\n new_node = FS.lookupNode(new_dir, new_name);\n } catch (e) {}\n if (old_node === new_node) {\n return;\n }\n var isdir = FS.isDir(old_node.mode);\n var errCode = FS.mayDelete(old_dir, old_name, isdir);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!old_dir.node_ops.rename) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {\n throw new FS.ErrnoError(10);\n }\n if (new_dir !== old_dir) {\n errCode = FS.nodePermissions(old_dir, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n try {\n if (FS.trackingDelegate[\"willMovePath\"]) {\n FS.trackingDelegate[\"willMovePath\"](old_path, new_path);\n }\n } catch (e) {\n err(\"FS.trackingDelegate['willMovePath']('\" + old_path + \"', '\" + new_path + \"') threw an exception: \" + e.message);\n }\n FS.hashRemoveNode(old_node);\n try {\n old_dir.node_ops.rename(old_node, new_dir, new_name);\n } catch (e) {\n throw e;\n } finally {\n FS.hashAddNode(old_node);\n }\n try {\n if (FS.trackingDelegate[\"onMovePath\"]) FS.trackingDelegate[\"onMovePath\"](old_path, new_path);\n } catch (e) {\n err(\"FS.trackingDelegate['onMovePath']('\" + old_path + \"', '\" + new_path + \"') threw an exception: \" + e.message);\n }\n },\n rmdir: function(path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, true);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.rmdir) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n err(\"FS.trackingDelegate['willDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n parent.node_ops.rmdir(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate[\"onDeletePath\"]) FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n err(\"FS.trackingDelegate['onDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n },\n readdir: function(path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n if (!node.node_ops.readdir) {\n throw new FS.ErrnoError(54);\n }\n return node.node_ops.readdir(node);\n },\n unlink: function(path) {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n var parent = lookup.node;\n var name = PATH.basename(path);\n var node = FS.lookupNode(parent, name);\n var errCode = FS.mayDelete(parent, name, false);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n if (!parent.node_ops.unlink) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isMountpoint(node)) {\n throw new FS.ErrnoError(10);\n }\n try {\n if (FS.trackingDelegate[\"willDeletePath\"]) {\n FS.trackingDelegate[\"willDeletePath\"](path);\n }\n } catch (e) {\n err(\"FS.trackingDelegate['willDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n parent.node_ops.unlink(parent, name);\n FS.destroyNode(node);\n try {\n if (FS.trackingDelegate[\"onDeletePath\"]) FS.trackingDelegate[\"onDeletePath\"](path);\n } catch (e) {\n err(\"FS.trackingDelegate['onDeletePath']('\" + path + \"') threw an exception: \" + e.message);\n }\n },\n readlink: function(path) {\n var lookup = FS.lookupPath(path);\n var link = lookup.node;\n if (!link) {\n throw new FS.ErrnoError(44);\n }\n if (!link.node_ops.readlink) {\n throw new FS.ErrnoError(28);\n }\n return PATH_FS.resolve(FS.getPath(link.parent), link.node_ops.readlink(link));\n },\n stat: function(path, dontFollow) {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n var node = lookup.node;\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (!node.node_ops.getattr) {\n throw new FS.ErrnoError(63);\n }\n return node.node_ops.getattr(node);\n },\n lstat: function(path) {\n return FS.stat(path, true);\n },\n chmod: function(path, mode, dontFollow) {\n var node;\n if (typeof path === \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n mode: mode & 4095 | node.mode & ~4095,\n timestamp: Date.now()\n });\n },\n lchmod: function(path, mode) {\n FS.chmod(path, mode, true);\n },\n fchmod: function(fd, mode) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chmod(stream.node, mode);\n },\n chown: function(path, uid, gid, dontFollow) {\n var node;\n if (typeof path === \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: !dontFollow\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n node.node_ops.setattr(node, {\n timestamp: Date.now()\n });\n },\n lchown: function(path, uid, gid) {\n FS.chown(path, uid, gid, true);\n },\n fchown: function(fd, uid, gid) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n FS.chown(stream.node, uid, gid);\n },\n truncate: function(path, len) {\n if (len < 0) {\n throw new FS.ErrnoError(28);\n }\n var node;\n if (typeof path === \"string\") {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n } else {\n node = path;\n }\n if (!node.node_ops.setattr) {\n throw new FS.ErrnoError(63);\n }\n if (FS.isDir(node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!FS.isFile(node.mode)) {\n throw new FS.ErrnoError(28);\n }\n var errCode = FS.nodePermissions(node, \"w\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n node.node_ops.setattr(node, {\n size: len,\n timestamp: Date.now()\n });\n },\n ftruncate: function(fd, len) {\n var stream = FS.getStream(fd);\n if (!stream) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(28);\n }\n FS.truncate(stream.node, len);\n },\n utime: function(path, atime, mtime) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n var node = lookup.node;\n node.node_ops.setattr(node, {\n timestamp: Math.max(atime, mtime)\n });\n },\n open: function(path, flags, mode, fd_start, fd_end) {\n if (path === \"\") {\n throw new FS.ErrnoError(44);\n }\n flags = typeof flags === \"string\" ? FS.modeStringToFlags(flags) : flags;\n mode = typeof mode === \"undefined\" ? 438 : mode;\n if (flags & 64) {\n mode = mode & 4095 | 32768;\n } else {\n mode = 0;\n }\n var node;\n if (typeof path === \"object\") {\n node = path;\n } else {\n path = PATH.normalize(path);\n try {\n var lookup = FS.lookupPath(path, {\n follow: !(flags & 131072)\n });\n node = lookup.node;\n } catch (e) {}\n }\n var created = false;\n if (flags & 64) {\n if (node) {\n if (flags & 128) {\n throw new FS.ErrnoError(20);\n }\n } else {\n node = FS.mknod(path, mode, 0);\n created = true;\n }\n }\n if (!node) {\n throw new FS.ErrnoError(44);\n }\n if (FS.isChrdev(node.mode)) {\n flags &= ~512;\n }\n if (flags & 65536 && !FS.isDir(node.mode)) {\n throw new FS.ErrnoError(54);\n }\n if (!created) {\n var errCode = FS.mayOpen(node, flags);\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n }\n if (flags & 512) {\n FS.truncate(node, 0);\n }\n flags &= ~(128 | 512 | 131072);\n var stream = FS.createStream({\n node: node,\n path: FS.getPath(node),\n flags: flags,\n seekable: true,\n position: 0,\n stream_ops: node.stream_ops,\n ungotten: [],\n error: false\n }, fd_start, fd_end);\n if (stream.stream_ops.open) {\n stream.stream_ops.open(stream);\n }\n if (Module[\"logReadFiles\"] && !(flags & 1)) {\n if (!FS.readFiles) FS.readFiles = {};\n if (!(path in FS.readFiles)) {\n FS.readFiles[path] = 1;\n err(\"FS.trackingDelegate error on read file: \" + path);\n }\n }\n try {\n if (FS.trackingDelegate[\"onOpenFile\"]) {\n var trackingFlags = 0;\n if ((flags & 2097155) !== 1) {\n trackingFlags |= FS.tracking.openFlags.READ;\n }\n if ((flags & 2097155) !== 0) {\n trackingFlags |= FS.tracking.openFlags.WRITE;\n }\n FS.trackingDelegate[\"onOpenFile\"](path, trackingFlags);\n }\n } catch (e) {\n err(\"FS.trackingDelegate['onOpenFile']('\" + path + \"', flags) threw an exception: \" + e.message);\n }\n return stream;\n },\n close: function(stream) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (stream.getdents) stream.getdents = null;\n try {\n if (stream.stream_ops.close) {\n stream.stream_ops.close(stream);\n }\n } catch (e) {\n throw e;\n } finally {\n FS.closeStream(stream.fd);\n }\n stream.fd = null;\n },\n isClosed: function(stream) {\n return stream.fd === null;\n },\n llseek: function(stream, offset, whence) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (!stream.seekable || !stream.stream_ops.llseek) {\n throw new FS.ErrnoError(70);\n }\n if (whence != 0 && whence != 1 && whence != 2) {\n throw new FS.ErrnoError(28);\n }\n stream.position = stream.stream_ops.llseek(stream, offset, whence);\n stream.ungotten = [];\n return stream.position;\n },\n read: function(stream, buffer, offset, length, position) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.read) {\n throw new FS.ErrnoError(28);\n }\n var seeking = typeof position !== \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n if (!seeking) stream.position += bytesRead;\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, position, canOwn) {\n if (length < 0 || position < 0) {\n throw new FS.ErrnoError(28);\n }\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(31);\n }\n if (!stream.stream_ops.write) {\n throw new FS.ErrnoError(28);\n }\n if (stream.seekable && stream.flags & 1024) {\n FS.llseek(stream, 0, 2);\n }\n var seeking = typeof position !== \"undefined\";\n if (!seeking) {\n position = stream.position;\n } else if (!stream.seekable) {\n throw new FS.ErrnoError(70);\n }\n var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n if (!seeking) stream.position += bytesWritten;\n try {\n if (stream.path && FS.trackingDelegate[\"onWriteToFile\"]) FS.trackingDelegate[\"onWriteToFile\"](stream.path);\n } catch (e) {\n err(\"FS.trackingDelegate['onWriteToFile']('\" + stream.path + \"') threw an exception: \" + e.message);\n }\n return bytesWritten;\n },\n allocate: function(stream, offset, length) {\n if (FS.isClosed(stream)) {\n throw new FS.ErrnoError(8);\n }\n if (offset < 0 || length <= 0) {\n throw new FS.ErrnoError(28);\n }\n if ((stream.flags & 2097155) === 0) {\n throw new FS.ErrnoError(8);\n }\n if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {\n throw new FS.ErrnoError(43);\n }\n if (!stream.stream_ops.allocate) {\n throw new FS.ErrnoError(138);\n }\n stream.stream_ops.allocate(stream, offset, length);\n },\n mmap: function(stream, address, length, position, prot, flags) {\n if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {\n throw new FS.ErrnoError(2);\n }\n if ((stream.flags & 2097155) === 1) {\n throw new FS.ErrnoError(2);\n }\n if (!stream.stream_ops.mmap) {\n throw new FS.ErrnoError(43);\n }\n return stream.stream_ops.mmap(stream, address, length, position, prot, flags);\n },\n msync: function(stream, buffer, offset, length, mmapFlags) {\n if (!stream || !stream.stream_ops.msync) {\n return 0;\n }\n return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n },\n munmap: function(stream) {\n return 0;\n },\n ioctl: function(stream, cmd, arg) {\n if (!stream.stream_ops.ioctl) {\n throw new FS.ErrnoError(59);\n }\n return stream.stream_ops.ioctl(stream, cmd, arg);\n },\n readFile: function(path, opts) {\n opts = opts || {};\n opts.flags = opts.flags || 0;\n opts.encoding = opts.encoding || \"binary\";\n if (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") {\n throw new Error('Invalid encoding type \"' + opts.encoding + '\"');\n }\n var ret;\n var stream = FS.open(path, opts.flags);\n var stat = FS.stat(path);\n var length = stat.size;\n var buf = new Uint8Array(length);\n FS.read(stream, buf, 0, length, 0);\n if (opts.encoding === \"utf8\") {\n ret = UTF8ArrayToString(buf, 0);\n } else if (opts.encoding === \"binary\") {\n ret = buf;\n }\n FS.close(stream);\n return ret;\n },\n writeFile: function(path, data, opts) {\n opts = opts || {};\n opts.flags = opts.flags || 577;\n var stream = FS.open(path, opts.flags, opts.mode);\n if (typeof data === \"string\") {\n var buf = new Uint8Array(lengthBytesUTF8(data) + 1);\n var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);\n FS.write(stream, buf, 0, actualNumBytes, undefined, opts.canOwn);\n } else if (ArrayBuffer.isView(data)) {\n FS.write(stream, data, 0, data.byteLength, undefined, opts.canOwn);\n } else {\n throw new Error(\"Unsupported data type\");\n }\n FS.close(stream);\n },\n cwd: function() {\n return FS.currentPath;\n },\n chdir: function(path) {\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n if (lookup.node === null) {\n throw new FS.ErrnoError(44);\n }\n if (!FS.isDir(lookup.node.mode)) {\n throw new FS.ErrnoError(54);\n }\n var errCode = FS.nodePermissions(lookup.node, \"x\");\n if (errCode) {\n throw new FS.ErrnoError(errCode);\n }\n FS.currentPath = lookup.path;\n },\n createDefaultDirectories: function() {\n FS.mkdir(\"/tmp\");\n FS.mkdir(\"/home\");\n FS.mkdir(\"/home/web_user\");\n },\n createDefaultDevices: function() {\n FS.mkdir(\"/dev\");\n FS.registerDevice(FS.makedev(1, 3), {\n read: function() {\n return 0;\n },\n write: function(stream, buffer, offset, length, pos) {\n return length;\n }\n });\n FS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n FS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n FS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n var random_device = getRandomDevice();\n FS.createDevice(\"/dev\", \"random\", random_device);\n FS.createDevice(\"/dev\", \"urandom\", random_device);\n FS.mkdir(\"/dev/shm\");\n FS.mkdir(\"/dev/shm/tmp\");\n },\n createSpecialDirectories: function() {\n FS.mkdir(\"/proc\");\n var proc_self = FS.mkdir(\"/proc/self\");\n FS.mkdir(\"/proc/self/fd\");\n FS.mount({\n mount: function() {\n var node = FS.createNode(proc_self, \"fd\", 16384 | 511, 73);\n node.node_ops = {\n lookup: function(parent, name) {\n var fd = +name;\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n var ret = {\n parent: null,\n mount: {\n mountpoint: \"fake\"\n },\n node_ops: {\n readlink: function() {\n return stream.path;\n }\n }\n };\n ret.parent = ret;\n return ret;\n }\n };\n return node;\n }\n }, {}, \"/proc/self/fd\");\n },\n createStandardStreams: function() {\n if (Module[\"stdin\"]) {\n FS.createDevice(\"/dev\", \"stdin\", Module[\"stdin\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n }\n if (Module[\"stdout\"]) {\n FS.createDevice(\"/dev\", \"stdout\", null, Module[\"stdout\"]);\n } else {\n FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n }\n if (Module[\"stderr\"]) {\n FS.createDevice(\"/dev\", \"stderr\", null, Module[\"stderr\"]);\n } else {\n FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n }\n var stdin = FS.open(\"/dev/stdin\", 0);\n var stdout = FS.open(\"/dev/stdout\", 1);\n var stderr = FS.open(\"/dev/stderr\", 1);\n assert(stdin.fd === 0, \"invalid handle for stdin (\" + stdin.fd + \")\");\n assert(stdout.fd === 1, \"invalid handle for stdout (\" + stdout.fd + \")\");\n assert(stderr.fd === 2, \"invalid handle for stderr (\" + stderr.fd + \")\");\n },\n ensureErrnoError: function() {\n if (FS.ErrnoError) return;\n FS.ErrnoError = function ErrnoError(errno, node) {\n this.node = node;\n this.setErrno = function(errno) {\n this.errno = errno;\n for (var key in ERRNO_CODES) {\n if (ERRNO_CODES[key] === errno) {\n this.code = key;\n break;\n }\n }\n };\n this.setErrno(errno);\n this.message = ERRNO_MESSAGES[errno];\n if (this.stack) {\n Object.defineProperty(this, \"stack\", {\n value: new Error().stack,\n writable: true\n });\n this.stack = demangleAll(this.stack);\n }\n };\n FS.ErrnoError.prototype = new Error();\n FS.ErrnoError.prototype.constructor = FS.ErrnoError;\n [ 44 ].forEach(function(code) {\n FS.genericErrors[code] = new FS.ErrnoError(code);\n FS.genericErrors[code].stack = \"\";\n });\n },\n staticInit: function() {\n FS.ensureErrnoError();\n FS.nameTable = new Array(4096);\n FS.mount(MEMFS, {}, \"/\");\n FS.createDefaultDirectories();\n FS.createDefaultDevices();\n FS.createSpecialDirectories();\n FS.filesystems = {\n \"MEMFS\": MEMFS,\n \"WORKERFS\": WORKERFS\n };\n },\n init: function(input, output, error) {\n assert(!FS.init.initialized, \"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");\n FS.init.initialized = true;\n FS.ensureErrnoError();\n Module[\"stdin\"] = input || Module[\"stdin\"];\n Module[\"stdout\"] = output || Module[\"stdout\"];\n Module[\"stderr\"] = error || Module[\"stderr\"];\n FS.createStandardStreams();\n },\n quit: function() {\n FS.init.initialized = false;\n var fflush = Module[\"_fflush\"];\n if (fflush) fflush(0);\n for (var i = 0; i < FS.streams.length; i++) {\n var stream = FS.streams[i];\n if (!stream) {\n continue;\n }\n FS.close(stream);\n }\n },\n getMode: function(canRead, canWrite) {\n var mode = 0;\n if (canRead) mode |= 292 | 73;\n if (canWrite) mode |= 146;\n return mode;\n },\n findObject: function(path, dontResolveLastLink) {\n var ret = FS.analyzePath(path, dontResolveLastLink);\n if (ret.exists) {\n return ret.object;\n } else {\n return null;\n }\n },\n analyzePath: function(path, dontResolveLastLink) {\n try {\n var lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n path = lookup.path;\n } catch (e) {}\n var ret = {\n isRoot: false,\n exists: false,\n error: 0,\n name: null,\n path: null,\n object: null,\n parentExists: false,\n parentPath: null,\n parentObject: null\n };\n try {\n var lookup = FS.lookupPath(path, {\n parent: true\n });\n ret.parentExists = true;\n ret.parentPath = lookup.path;\n ret.parentObject = lookup.node;\n ret.name = PATH.basename(path);\n lookup = FS.lookupPath(path, {\n follow: !dontResolveLastLink\n });\n ret.exists = true;\n ret.path = lookup.path;\n ret.object = lookup.node;\n ret.name = lookup.node.name;\n ret.isRoot = lookup.path === \"/\";\n } catch (e) {\n ret.error = e.errno;\n }\n return ret;\n },\n createPath: function(parent, path, canRead, canWrite) {\n parent = typeof parent === \"string\" ? parent : FS.getPath(parent);\n var parts = path.split(\"/\").reverse();\n while (parts.length) {\n var part = parts.pop();\n if (!part) continue;\n var current = PATH.join2(parent, part);\n try {\n FS.mkdir(current);\n } catch (e) {}\n parent = current;\n }\n return current;\n },\n createFile: function(parent, name, properties, canRead, canWrite) {\n var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(canRead, canWrite);\n return FS.create(path, mode);\n },\n createDataFile: function(parent, name, data, canRead, canWrite, canOwn) {\n var path = name ? PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name) : parent;\n var mode = FS.getMode(canRead, canWrite);\n var node = FS.create(path, mode);\n if (data) {\n if (typeof data === \"string\") {\n var arr = new Array(data.length);\n for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n data = arr;\n }\n FS.chmod(node, mode | 146);\n var stream = FS.open(node, 577);\n FS.write(stream, data, 0, data.length, 0, canOwn);\n FS.close(stream);\n FS.chmod(node, mode);\n }\n return node;\n },\n createDevice: function(parent, name, input, output) {\n var path = PATH.join2(typeof parent === \"string\" ? parent : FS.getPath(parent), name);\n var mode = FS.getMode(!!input, !!output);\n if (!FS.createDevice.major) FS.createDevice.major = 64;\n var dev = FS.makedev(FS.createDevice.major++, 0);\n FS.registerDevice(dev, {\n open: function(stream) {\n stream.seekable = false;\n },\n close: function(stream) {\n if (output && output.buffer && output.buffer.length) {\n output(10);\n }\n },\n read: function(stream, buffer, offset, length, pos) {\n var bytesRead = 0;\n for (var i = 0; i < length; i++) {\n var result;\n try {\n result = input();\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n if (result === undefined && bytesRead === 0) {\n throw new FS.ErrnoError(6);\n }\n if (result === null || result === undefined) break;\n bytesRead++;\n buffer[offset + i] = result;\n }\n if (bytesRead) {\n stream.node.timestamp = Date.now();\n }\n return bytesRead;\n },\n write: function(stream, buffer, offset, length, pos) {\n for (var i = 0; i < length; i++) {\n try {\n output(buffer[offset + i]);\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n }\n if (length) {\n stream.node.timestamp = Date.now();\n }\n return i;\n }\n });\n return FS.mkdev(path, mode, dev);\n },\n forceLoadFile: function(obj) {\n if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n if (typeof XMLHttpRequest !== \"undefined\") {\n throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n } else if (read_) {\n try {\n obj.contents = intArrayFromString(read_(obj.url), true);\n obj.usedBytes = obj.contents.length;\n } catch (e) {\n throw new FS.ErrnoError(29);\n }\n } else {\n throw new Error(\"Cannot load without read() or XMLHttpRequest.\");\n }\n },\n createLazyFile: function(parent, name, url, canRead, canWrite) {\n function LazyUint8Array() {\n this.lengthKnown = false;\n this.chunks = [];\n }\n LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {\n if (idx > this.length - 1 || idx < 0) {\n return undefined;\n }\n var chunkOffset = idx % this.chunkSize;\n var chunkNum = idx / this.chunkSize | 0;\n return this.getter(chunkNum)[chunkOffset];\n };\n LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {\n this.getter = getter;\n };\n LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {\n var xhr = new XMLHttpRequest();\n xhr.open(\"HEAD\", url, false);\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n var datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n var header;\n var hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n var usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n var chunkSize = 1024 * 1024;\n if (!hasByteServing) chunkSize = datalength;\n var doXHR = function(from, to) {\n if (from > to) throw new Error(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n if (to > datalength - 1) throw new Error(\"only \" + datalength + \" bytes available! programmer error!\");\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n if (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n if (typeof Uint8Array != \"undefined\") xhr.responseType = \"arraybuffer\";\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n }\n xhr.send(null);\n if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n if (xhr.response !== undefined) {\n return new Uint8Array(xhr.response || []);\n } else {\n return intArrayFromString(xhr.responseText || \"\", true);\n }\n };\n var lazyArray = this;\n lazyArray.setDataGetter(function(chunkNum) {\n var start = chunkNum * chunkSize;\n var end = (chunkNum + 1) * chunkSize - 1;\n end = Math.min(end, datalength - 1);\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\") {\n lazyArray.chunks[chunkNum] = doXHR(start, end);\n }\n if (typeof lazyArray.chunks[chunkNum] === \"undefined\") throw new Error(\"doXHR failed!\");\n return lazyArray.chunks[chunkNum];\n });\n if (usesGzip || !datalength) {\n chunkSize = datalength = 1;\n datalength = this.getter(0).length;\n chunkSize = datalength;\n out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n }\n this._length = datalength;\n this._chunkSize = chunkSize;\n this.lengthKnown = true;\n };\n if (typeof XMLHttpRequest !== \"undefined\") {\n if (!ENVIRONMENT_IS_WORKER) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";\n var lazyArray = new LazyUint8Array();\n Object.defineProperties(lazyArray, {\n length: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._length;\n }\n },\n chunkSize: {\n get: function() {\n if (!this.lengthKnown) {\n this.cacheLength();\n }\n return this._chunkSize;\n }\n }\n });\n var properties = {\n isDevice: false,\n contents: lazyArray\n };\n } else {\n var properties = {\n isDevice: false,\n url: url\n };\n }\n var node = FS.createFile(parent, name, properties, canRead, canWrite);\n if (properties.contents) {\n node.contents = properties.contents;\n } else if (properties.url) {\n node.contents = null;\n node.url = properties.url;\n }\n Object.defineProperties(node, {\n usedBytes: {\n get: function() {\n return this.contents.length;\n }\n }\n });\n var stream_ops = {};\n var keys = Object.keys(node.stream_ops);\n keys.forEach(function(key) {\n var fn = node.stream_ops[key];\n stream_ops[key] = function forceLoadLazyFile() {\n FS.forceLoadFile(node);\n return fn.apply(null, arguments);\n };\n });\n stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {\n FS.forceLoadFile(node);\n var contents = stream.node.contents;\n if (position >= contents.length) return 0;\n var size = Math.min(contents.length - position, length);\n assert(size >= 0);\n if (contents.slice) {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents[position + i];\n }\n } else {\n for (var i = 0; i < size; i++) {\n buffer[offset + i] = contents.get(position + i);\n }\n }\n return size;\n };\n node.stream_ops = stream_ops;\n return node;\n },\n createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {\n Browser.init();\n var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n var dep = getUniqueRunDependency(\"cp \" + fullname);\n function processData(byteArray) {\n function finish(byteArray) {\n if (preFinish) preFinish();\n if (!dontCreateFile) {\n FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n }\n if (onload) onload();\n removeRunDependency(dep);\n }\n var handled = false;\n Module[\"preloadPlugins\"].forEach(function(plugin) {\n if (handled) return;\n if (plugin[\"canHandle\"](fullname)) {\n plugin[\"handle\"](byteArray, fullname, finish, function() {\n if (onerror) onerror();\n removeRunDependency(dep);\n });\n handled = true;\n }\n });\n if (!handled) finish(byteArray);\n }\n addRunDependency(dep);\n if (typeof url == \"string\") {\n Browser.asyncLoad(url, function(byteArray) {\n processData(byteArray);\n }, onerror);\n } else {\n processData(url);\n }\n },\n indexedDB: function() {\n return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;\n },\n DB_NAME: function() {\n return \"EM_FS_\" + window.location.pathname;\n },\n DB_VERSION: 20,\n DB_STORE_NAME: \"FILE_DATA\",\n saveFilesToDB: function(paths, onload, onerror) {\n onload = onload || function() {};\n onerror = onerror || function() {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {\n out(\"creating db\");\n var db = openRequest.result;\n db.createObjectStore(FS.DB_STORE_NAME);\n };\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readwrite\");\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(function(path) {\n var putRequest = files.put(FS.analyzePath(path).object.contents, path);\n putRequest.onsuccess = function putRequest_onsuccess() {\n ok++;\n if (ok + fail == total) finish();\n };\n putRequest.onerror = function putRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n loadFilesFromDB: function(paths, onload, onerror) {\n onload = onload || function() {};\n onerror = onerror || function() {};\n var indexedDB = FS.indexedDB();\n try {\n var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);\n } catch (e) {\n return onerror(e);\n }\n openRequest.onupgradeneeded = onerror;\n openRequest.onsuccess = function openRequest_onsuccess() {\n var db = openRequest.result;\n try {\n var transaction = db.transaction([ FS.DB_STORE_NAME ], \"readonly\");\n } catch (e) {\n onerror(e);\n return;\n }\n var files = transaction.objectStore(FS.DB_STORE_NAME);\n var ok = 0, fail = 0, total = paths.length;\n function finish() {\n if (fail == 0) onload(); else onerror();\n }\n paths.forEach(function(path) {\n var getRequest = files.get(path);\n getRequest.onsuccess = function getRequest_onsuccess() {\n if (FS.analyzePath(path).exists) {\n FS.unlink(path);\n }\n FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);\n ok++;\n if (ok + fail == total) finish();\n };\n getRequest.onerror = function getRequest_onerror() {\n fail++;\n if (ok + fail == total) finish();\n };\n });\n transaction.onerror = onerror;\n };\n openRequest.onerror = onerror;\n },\n absolutePath: function() {\n abort(\"FS.absolutePath has been removed; use PATH_FS.resolve instead\");\n },\n createFolder: function() {\n abort(\"FS.createFolder has been removed; use FS.mkdir instead\");\n },\n createLink: function() {\n abort(\"FS.createLink has been removed; use FS.symlink instead\");\n },\n joinPath: function() {\n abort(\"FS.joinPath has been removed; use PATH.join instead\");\n },\n mmapAlloc: function() {\n abort(\"FS.mmapAlloc has been replaced by the top level function mmapAlloc\");\n },\n standardizePath: function() {\n abort(\"FS.standardizePath has been removed; use PATH.normalize instead\");\n }\n};\n\nvar SYSCALLS = {\n mappings: {},\n DEFAULT_POLLMASK: 5,\n umask: 511,\n calculateAt: function(dirfd, path) {\n if (path[0] !== \"/\") {\n var dir;\n if (dirfd === -100) {\n dir = FS.cwd();\n } else {\n var dirstream = FS.getStream(dirfd);\n if (!dirstream) throw new FS.ErrnoError(8);\n dir = dirstream.path;\n }\n path = PATH.join2(dir, path);\n }\n return path;\n },\n doStat: function(func, path, buf) {\n try {\n var stat = func(path);\n } catch (e) {\n if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {\n return -54;\n }\n throw e;\n }\n HEAP32[buf >> 2] = stat.dev;\n HEAP32[buf + 4 >> 2] = 0;\n HEAP32[buf + 8 >> 2] = stat.ino;\n HEAP32[buf + 12 >> 2] = stat.mode;\n HEAP32[buf + 16 >> 2] = stat.nlink;\n HEAP32[buf + 20 >> 2] = stat.uid;\n HEAP32[buf + 24 >> 2] = stat.gid;\n HEAP32[buf + 28 >> 2] = stat.rdev;\n HEAP32[buf + 32 >> 2] = 0;\n tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];\n HEAP32[buf + 48 >> 2] = 4096;\n HEAP32[buf + 52 >> 2] = stat.blocks;\n HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;\n HEAP32[buf + 60 >> 2] = 0;\n HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;\n HEAP32[buf + 68 >> 2] = 0;\n HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;\n HEAP32[buf + 76 >> 2] = 0;\n tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1];\n return 0;\n },\n doMsync: function(addr, stream, len, flags, offset) {\n var buffer = HEAPU8.slice(addr, addr + len);\n FS.msync(stream, buffer, offset, len, flags);\n },\n doMkdir: function(path, mode) {\n path = PATH.normalize(path);\n if (path[path.length - 1] === \"/\") path = path.substr(0, path.length - 1);\n FS.mkdir(path, mode, 0);\n return 0;\n },\n doMknod: function(path, mode, dev) {\n switch (mode & 61440) {\n case 32768:\n case 8192:\n case 24576:\n case 4096:\n case 49152:\n break;\n\n default:\n return -28;\n }\n FS.mknod(path, mode, dev);\n return 0;\n },\n doReadlink: function(path, buf, bufsize) {\n if (bufsize <= 0) return -28;\n var ret = FS.readlink(path);\n var len = Math.min(bufsize, lengthBytesUTF8(ret));\n var endChar = HEAP8[buf + len];\n stringToUTF8(ret, buf, bufsize + 1);\n HEAP8[buf + len] = endChar;\n return len;\n },\n doAccess: function(path, amode) {\n if (amode & ~7) {\n return -28;\n }\n var node;\n var lookup = FS.lookupPath(path, {\n follow: true\n });\n node = lookup.node;\n if (!node) {\n return -44;\n }\n var perms = \"\";\n if (amode & 4) perms += \"r\";\n if (amode & 2) perms += \"w\";\n if (amode & 1) perms += \"x\";\n if (perms && FS.nodePermissions(node, perms)) {\n return -2;\n }\n return 0;\n },\n doDup: function(path, flags, suggestFD) {\n var suggest = FS.getStream(suggestFD);\n if (suggest) FS.close(suggest);\n return FS.open(path, flags, 0, suggestFD, suggestFD).fd;\n },\n doReadv: function(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.read(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n if (curr < len) break;\n }\n return ret;\n },\n doWritev: function(stream, iov, iovcnt, offset) {\n var ret = 0;\n for (var i = 0; i < iovcnt; i++) {\n var ptr = HEAP32[iov + i * 8 >> 2];\n var len = HEAP32[iov + (i * 8 + 4) >> 2];\n var curr = FS.write(stream, HEAP8, ptr, len, offset);\n if (curr < 0) return -1;\n ret += curr;\n }\n return ret;\n },\n varargs: undefined,\n get: function() {\n assert(SYSCALLS.varargs != undefined);\n SYSCALLS.varargs += 4;\n var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];\n return ret;\n },\n getStr: function(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n },\n getStreamFromFD: function(fd) {\n var stream = FS.getStream(fd);\n if (!stream) throw new FS.ErrnoError(8);\n return stream;\n },\n get64: function(low, high) {\n if (low >= 0) assert(high === 0); else assert(high === -1);\n return low;\n }\n};\n\nfunction ___sys_access(path, amode) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doAccess(path, amode);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_chmod(path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n FS.chmod(path, mode);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_chown32(path, owner, group) {\n try {\n path = SYSCALLS.getStr(path);\n FS.chown(path, owner, group);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_fchmod(fd, mode) {\n try {\n FS.fchmod(fd, mode);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_fchown32(fd, owner, group) {\n try {\n FS.fchown(fd, owner, group);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_fcntl64(fd, cmd, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (cmd) {\n case 0:\n {\n var arg = SYSCALLS.get();\n if (arg < 0) {\n return -28;\n }\n var newStream;\n newStream = FS.open(stream.path, stream.flags, 0, arg);\n return newStream.fd;\n }\n\n case 1:\n case 2:\n return 0;\n\n case 3:\n return stream.flags;\n\n case 4:\n {\n var arg = SYSCALLS.get();\n stream.flags |= arg;\n return 0;\n }\n\n case 12:\n {\n var arg = SYSCALLS.get();\n var offset = 0;\n HEAP16[arg + offset >> 1] = 2;\n return 0;\n }\n\n case 13:\n case 14:\n return 0;\n\n case 16:\n case 8:\n return -28;\n\n case 9:\n setErrNo(28);\n return -1;\n\n default:\n {\n return -28;\n }\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_fstat64(fd, buf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n return SYSCALLS.doStat(FS.stat, stream.path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_ftruncate64(fd, zero, low, high) {\n try {\n var length = SYSCALLS.get64(low, high);\n FS.ftruncate(fd, length);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_getcwd(buf, size) {\n try {\n if (size === 0) return -28;\n var cwd = FS.cwd();\n var cwdLengthInBytes = lengthBytesUTF8(cwd);\n if (size < cwdLengthInBytes + 1) return -68;\n stringToUTF8(cwd, buf, size);\n return buf;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_getegid32() {\n return 0;\n}\n\nfunction ___sys_geteuid32() {\n return ___sys_getegid32();\n}\n\nfunction ___sys_getpid() {\n return 42;\n}\n\nfunction ___sys_ioctl(fd, op, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n switch (op) {\n case 21509:\n case 21505:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21510:\n case 21511:\n case 21512:\n case 21506:\n case 21507:\n case 21508:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21519:\n {\n if (!stream.tty) return -59;\n var argp = SYSCALLS.get();\n HEAP32[argp >> 2] = 0;\n return 0;\n }\n\n case 21520:\n {\n if (!stream.tty) return -59;\n return -28;\n }\n\n case 21531:\n {\n var argp = SYSCALLS.get();\n return FS.ioctl(stream, op, argp);\n }\n\n case 21523:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n case 21524:\n {\n if (!stream.tty) return -59;\n return 0;\n }\n\n default:\n abort(\"bad ioctl syscall \" + op);\n }\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_lstat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.lstat, path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_mkdir(path, mode) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doMkdir(path, mode);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction syscallMmap2(addr, len, prot, flags, fd, off) {\n off <<= 12;\n var ptr;\n var allocated = false;\n if ((flags & 16) !== 0 && addr % 16384 !== 0) {\n return -28;\n }\n if ((flags & 32) !== 0) {\n ptr = _memalign(16384, len);\n if (!ptr) return -48;\n _memset(ptr, 0, len);\n allocated = true;\n } else {\n var info = FS.getStream(fd);\n if (!info) return -8;\n var res = FS.mmap(info, addr, len, off, prot, flags);\n ptr = res.ptr;\n allocated = res.allocated;\n }\n SYSCALLS.mappings[ptr] = {\n malloc: ptr,\n len: len,\n allocated: allocated,\n fd: fd,\n prot: prot,\n flags: flags,\n offset: off\n };\n return ptr;\n}\n\nfunction ___sys_mmap2(addr, len, prot, flags, fd, off) {\n try {\n return syscallMmap2(addr, len, prot, flags, fd, off);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_mprotect(addr, len, size) {\n return 0;\n}\n\nfunction syscallMunmap(addr, len) {\n if ((addr | 0) === -1 || len === 0) {\n return -28;\n }\n var info = SYSCALLS.mappings[addr];\n if (!info) return 0;\n if (len === info.len) {\n var stream = FS.getStream(info.fd);\n if (stream) {\n if (info.prot & 2) {\n SYSCALLS.doMsync(addr, stream, len, info.flags, info.offset);\n }\n FS.munmap(stream);\n }\n SYSCALLS.mappings[addr] = null;\n if (info.allocated) {\n _free(info.malloc);\n }\n }\n return 0;\n}\n\nfunction ___sys_munmap(addr, len) {\n try {\n return syscallMunmap(addr, len);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_open(path, flags, varargs) {\n SYSCALLS.varargs = varargs;\n try {\n var pathname = SYSCALLS.getStr(path);\n var mode = varargs ? SYSCALLS.get() : 0;\n var stream = FS.open(pathname, flags, mode);\n return stream.fd;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_readlink(path, buf, bufsize) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doReadlink(path, buf, bufsize);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_rmdir(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.rmdir(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_stat64(path, buf) {\n try {\n path = SYSCALLS.getStr(path);\n return SYSCALLS.doStat(FS.stat, path, buf);\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction ___sys_unlink(path) {\n try {\n path = SYSCALLS.getStr(path);\n FS.unlink(path);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return -e.errno;\n }\n}\n\nfunction _abort() {\n abort();\n}\n\nfunction _emscripten_memcpy_big(dest, src, num) {\n HEAPU8.copyWithin(dest, src, src + num);\n}\n\nfunction _emscripten_get_heap_size() {\n return HEAPU8.length;\n}\n\nfunction emscripten_realloc_buffer(size) {\n try {\n wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);\n updateGlobalBufferAndViews(wasmMemory.buffer);\n return 1;\n } catch (e) {\n console.error(\"emscripten_realloc_buffer: Attempted to grow heap from \" + buffer.byteLength + \" bytes to \" + size + \" bytes, but got error: \" + e);\n }\n}\n\nfunction _emscripten_resize_heap(requestedSize) {\n requestedSize = requestedSize >>> 0;\n var oldSize = _emscripten_get_heap_size();\n assert(requestedSize > oldSize);\n var maxHeapSize = 2147483648;\n if (requestedSize > maxHeapSize) {\n err(\"Cannot enlarge memory, asked to go up to \" + requestedSize + \" bytes, but the limit is \" + maxHeapSize + \" bytes!\");\n return false;\n }\n var minHeapSize = 16777216;\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignUp(Math.max(minHeapSize, requestedSize, overGrownHeapSize), 65536));\n var replacement = emscripten_realloc_buffer(newSize);\n if (replacement) {\n return true;\n }\n }\n err(\"Failed to grow the heap from \" + oldSize + \" bytes to \" + newSize + \" bytes, not enough memory!\");\n return false;\n}\n\nfunction _emscripten_thread_sleep(msecs) {\n var start = _emscripten_get_now();\n while (_emscripten_get_now() - start < msecs) {}\n}\n\nvar ENV = {};\n\nfunction getExecutableName() {\n return thisProgram || \"./this.program\";\n}\n\nfunction getEnvStrings() {\n if (!getEnvStrings.strings) {\n var lang = (typeof navigator === \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n var env = {\n \"USER\": \"web_user\",\n \"LOGNAME\": \"web_user\",\n \"PATH\": \"/\",\n \"PWD\": \"/\",\n \"HOME\": \"/home/web_user\",\n \"LANG\": lang,\n \"_\": getExecutableName()\n };\n for (var x in ENV) {\n env[x] = ENV[x];\n }\n var strings = [];\n for (var x in env) {\n strings.push(x + \"=\" + env[x]);\n }\n getEnvStrings.strings = strings;\n }\n return getEnvStrings.strings;\n}\n\nfunction _environ_get(__environ, environ_buf) {\n try {\n var bufSize = 0;\n getEnvStrings().forEach(function(string, i) {\n var ptr = environ_buf + bufSize;\n HEAP32[__environ + i * 4 >> 2] = ptr;\n writeAsciiToMemory(string, ptr);\n bufSize += string.length + 1;\n });\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _environ_sizes_get(penviron_count, penviron_buf_size) {\n try {\n var strings = getEnvStrings();\n HEAP32[penviron_count >> 2] = strings.length;\n var bufSize = 0;\n strings.forEach(function(string) {\n bufSize += string.length + 1;\n });\n HEAP32[penviron_buf_size >> 2] = bufSize;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _exit(status) {\n exit(status);\n}\n\nfunction _fd_close(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n FS.close(stream);\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _fd_fdstat_get(fd, pbuf) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n HEAP8[pbuf >> 0] = type;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _fd_read(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doReadv(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _fd_seek(fd, offset_low, offset_high, whence, newOffset) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var HIGH_OFFSET = 4294967296;\n var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);\n var DOUBLE_LIMIT = 9007199254740992;\n if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {\n return -61;\n }\n FS.llseek(stream, offset, whence);\n tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], \n HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];\n if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _fd_sync(fd) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n if (stream.stream_ops && stream.stream_ops.fsync) {\n return -stream.stream_ops.fsync(stream);\n }\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _fd_write(fd, iov, iovcnt, pnum) {\n try {\n var stream = SYSCALLS.getStreamFromFD(fd);\n var num = SYSCALLS.doWritev(stream, iov, iovcnt);\n HEAP32[pnum >> 2] = num;\n return 0;\n } catch (e) {\n if (typeof FS === \"undefined\" || !(e instanceof FS.ErrnoError)) abort(e);\n return e.errno;\n }\n}\n\nfunction _getentropy(buffer, size) {\n if (!_getentropy.randomDevice) {\n _getentropy.randomDevice = getRandomDevice();\n }\n for (var i = 0; i < size; i++) {\n HEAP8[buffer + i >> 0] = _getentropy.randomDevice();\n }\n return 0;\n}\n\nfunction _gettimeofday(ptr) {\n var now = Date.now();\n HEAP32[ptr >> 2] = now / 1e3 | 0;\n HEAP32[ptr + 4 >> 2] = now % 1e3 * 1e3 | 0;\n return 0;\n}\n\nfunction _setTempRet0($i) {\n setTempRet0($i | 0);\n}\n\nfunction __isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction __arraySum(array, index) {\n var sum = 0;\n for (var i = 0; i <= index; sum += array[i++]) {}\n return sum;\n}\n\nvar __MONTH_DAYS_LEAP = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nvar __MONTH_DAYS_REGULAR = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];\n\nfunction __addDays(date, days) {\n var newDate = new Date(date.getTime());\n while (days > 0) {\n var leap = __isLeapYear(newDate.getFullYear());\n var currentMonth = newDate.getMonth();\n var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];\n if (days > daysInCurrentMonth - newDate.getDate()) {\n days -= daysInCurrentMonth - newDate.getDate() + 1;\n newDate.setDate(1);\n if (currentMonth < 11) {\n newDate.setMonth(currentMonth + 1);\n } else {\n newDate.setMonth(0);\n newDate.setFullYear(newDate.getFullYear() + 1);\n }\n } else {\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n }\n }\n return newDate;\n}\n\nfunction _strftime(s, maxsize, format, tm) {\n var tm_zone = HEAP32[tm + 40 >> 2];\n var date = {\n tm_sec: HEAP32[tm >> 2],\n tm_min: HEAP32[tm + 4 >> 2],\n tm_hour: HEAP32[tm + 8 >> 2],\n tm_mday: HEAP32[tm + 12 >> 2],\n tm_mon: HEAP32[tm + 16 >> 2],\n tm_year: HEAP32[tm + 20 >> 2],\n tm_wday: HEAP32[tm + 24 >> 2],\n tm_yday: HEAP32[tm + 28 >> 2],\n tm_isdst: HEAP32[tm + 32 >> 2],\n tm_gmtoff: HEAP32[tm + 36 >> 2],\n tm_zone: tm_zone ? UTF8ToString(tm_zone) : \"\"\n };\n var pattern = UTF8ToString(format);\n var EXPANSION_RULES_1 = {\n \"%c\": \"%a %b %d %H:%M:%S %Y\",\n \"%D\": \"%m/%d/%y\",\n \"%F\": \"%Y-%m-%d\",\n \"%h\": \"%b\",\n \"%r\": \"%I:%M:%S %p\",\n \"%R\": \"%H:%M\",\n \"%T\": \"%H:%M:%S\",\n \"%x\": \"%m/%d/%y\",\n \"%X\": \"%H:%M:%S\",\n \"%Ec\": \"%c\",\n \"%EC\": \"%C\",\n \"%Ex\": \"%m/%d/%y\",\n \"%EX\": \"%H:%M:%S\",\n \"%Ey\": \"%y\",\n \"%EY\": \"%Y\",\n \"%Od\": \"%d\",\n \"%Oe\": \"%e\",\n \"%OH\": \"%H\",\n \"%OI\": \"%I\",\n \"%Om\": \"%m\",\n \"%OM\": \"%M\",\n \"%OS\": \"%S\",\n \"%Ou\": \"%u\",\n \"%OU\": \"%U\",\n \"%OV\": \"%V\",\n \"%Ow\": \"%w\",\n \"%OW\": \"%W\",\n \"%Oy\": \"%y\"\n };\n for (var rule in EXPANSION_RULES_1) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_1[rule]);\n }\n var WEEKDAYS = [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ];\n var MONTHS = [ \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\" ];\n function leadingSomething(value, digits, character) {\n var str = typeof value === \"number\" ? value.toString() : value || \"\";\n while (str.length < digits) {\n str = character[0] + str;\n }\n return str;\n }\n function leadingNulls(value, digits) {\n return leadingSomething(value, digits, \"0\");\n }\n function compareByDay(date1, date2) {\n function sgn(value) {\n return value < 0 ? -1 : value > 0 ? 1 : 0;\n }\n var compare;\n if ((compare = sgn(date1.getFullYear() - date2.getFullYear())) === 0) {\n if ((compare = sgn(date1.getMonth() - date2.getMonth())) === 0) {\n compare = sgn(date1.getDate() - date2.getDate());\n }\n }\n return compare;\n }\n function getFirstWeekStartDate(janFourth) {\n switch (janFourth.getDay()) {\n case 0:\n return new Date(janFourth.getFullYear() - 1, 11, 29);\n\n case 1:\n return janFourth;\n\n case 2:\n return new Date(janFourth.getFullYear(), 0, 3);\n\n case 3:\n return new Date(janFourth.getFullYear(), 0, 2);\n\n case 4:\n return new Date(janFourth.getFullYear(), 0, 1);\n\n case 5:\n return new Date(janFourth.getFullYear() - 1, 11, 31);\n\n case 6:\n return new Date(janFourth.getFullYear() - 1, 11, 30);\n }\n }\n function getWeekBasedYear(date) {\n var thisDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);\n var janFourthNextYear = new Date(thisDate.getFullYear() + 1, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {\n if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {\n return thisDate.getFullYear() + 1;\n } else {\n return thisDate.getFullYear();\n }\n } else {\n return thisDate.getFullYear() - 1;\n }\n }\n var EXPANSION_RULES_2 = {\n \"%a\": function(date) {\n return WEEKDAYS[date.tm_wday].substring(0, 3);\n },\n \"%A\": function(date) {\n return WEEKDAYS[date.tm_wday];\n },\n \"%b\": function(date) {\n return MONTHS[date.tm_mon].substring(0, 3);\n },\n \"%B\": function(date) {\n return MONTHS[date.tm_mon];\n },\n \"%C\": function(date) {\n var year = date.tm_year + 1900;\n return leadingNulls(year / 100 | 0, 2);\n },\n \"%d\": function(date) {\n return leadingNulls(date.tm_mday, 2);\n },\n \"%e\": function(date) {\n return leadingSomething(date.tm_mday, 2, \" \");\n },\n \"%g\": function(date) {\n return getWeekBasedYear(date).toString().substring(2);\n },\n \"%G\": function(date) {\n return getWeekBasedYear(date);\n },\n \"%H\": function(date) {\n return leadingNulls(date.tm_hour, 2);\n },\n \"%I\": function(date) {\n var twelveHour = date.tm_hour;\n if (twelveHour == 0) twelveHour = 12; else if (twelveHour > 12) twelveHour -= 12;\n return leadingNulls(twelveHour, 2);\n },\n \"%j\": function(date) {\n return leadingNulls(date.tm_mday + __arraySum(__isLeapYear(date.tm_year + 1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon - 1), 3);\n },\n \"%m\": function(date) {\n return leadingNulls(date.tm_mon + 1, 2);\n },\n \"%M\": function(date) {\n return leadingNulls(date.tm_min, 2);\n },\n \"%n\": function() {\n return \"\\n\";\n },\n \"%p\": function(date) {\n if (date.tm_hour >= 0 && date.tm_hour < 12) {\n return \"AM\";\n } else {\n return \"PM\";\n }\n },\n \"%S\": function(date) {\n return leadingNulls(date.tm_sec, 2);\n },\n \"%t\": function() {\n return \"\\t\";\n },\n \"%u\": function(date) {\n return date.tm_wday || 7;\n },\n \"%U\": function(date) {\n var janFirst = new Date(date.tm_year + 1900, 0, 1);\n var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7 - janFirst.getDay());\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstSunday, endDate) < 0) {\n var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;\n var firstSundayUntilEndJanuary = 31 - firstSunday.getDate();\n var days = firstSundayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstSunday, janFirst) === 0 ? \"01\" : \"00\";\n },\n \"%V\": function(date) {\n var janFourthThisYear = new Date(date.tm_year + 1900, 0, 4);\n var janFourthNextYear = new Date(date.tm_year + 1901, 0, 4);\n var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);\n var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);\n var endDate = __addDays(new Date(date.tm_year + 1900, 0, 1), date.tm_yday);\n if (compareByDay(endDate, firstWeekStartThisYear) < 0) {\n return \"53\";\n }\n if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {\n return \"01\";\n }\n var daysDifference;\n if (firstWeekStartThisYear.getFullYear() < date.tm_year + 1900) {\n daysDifference = date.tm_yday + 32 - firstWeekStartThisYear.getDate();\n } else {\n daysDifference = date.tm_yday + 1 - firstWeekStartThisYear.getDate();\n }\n return leadingNulls(Math.ceil(daysDifference / 7), 2);\n },\n \"%w\": function(date) {\n return date.tm_wday;\n },\n \"%W\": function(date) {\n var janFirst = new Date(date.tm_year, 0, 1);\n var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7 - janFirst.getDay() + 1);\n var endDate = new Date(date.tm_year + 1900, date.tm_mon, date.tm_mday);\n if (compareByDay(firstMonday, endDate) < 0) {\n var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth() - 1) - 31;\n var firstMondayUntilEndJanuary = 31 - firstMonday.getDate();\n var days = firstMondayUntilEndJanuary + februaryFirstUntilEndMonth + endDate.getDate();\n return leadingNulls(Math.ceil(days / 7), 2);\n }\n return compareByDay(firstMonday, janFirst) === 0 ? \"01\" : \"00\";\n },\n \"%y\": function(date) {\n return (date.tm_year + 1900).toString().substring(2);\n },\n \"%Y\": function(date) {\n return date.tm_year + 1900;\n },\n \"%z\": function(date) {\n var off = date.tm_gmtoff;\n var ahead = off >= 0;\n off = Math.abs(off) / 60;\n off = off / 60 * 100 + off % 60;\n return (ahead ? \"+\" : \"-\") + String(\"0000\" + off).slice(-4);\n },\n \"%Z\": function(date) {\n return date.tm_zone;\n },\n \"%%\": function() {\n return \"%\";\n }\n };\n for (var rule in EXPANSION_RULES_2) {\n if (pattern.indexOf(rule) >= 0) {\n pattern = pattern.replace(new RegExp(rule, \"g\"), EXPANSION_RULES_2[rule](date));\n }\n }\n var bytes = intArrayFromString(pattern, false);\n if (bytes.length > maxsize) {\n return 0;\n }\n writeArrayToMemory(bytes, s);\n return bytes.length - 1;\n}\n\nfunction _strftime_l(s, maxsize, format, tm) {\n return _strftime(s, maxsize, format, tm);\n}\n\nfunction _sysconf(name) {\n switch (name) {\n case 30:\n return 16384;\n\n case 85:\n var maxHeapSize = 2147483648;\n return maxHeapSize / 16384;\n\n case 132:\n case 133:\n case 12:\n case 137:\n case 138:\n case 15:\n case 235:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 149:\n case 13:\n case 10:\n case 236:\n case 153:\n case 9:\n case 21:\n case 22:\n case 159:\n case 154:\n case 14:\n case 77:\n case 78:\n case 139:\n case 82:\n case 68:\n case 67:\n case 164:\n case 11:\n case 29:\n case 47:\n case 48:\n case 95:\n case 52:\n case 51:\n case 46:\n return 200809;\n\n case 27:\n case 246:\n case 127:\n case 128:\n case 23:\n case 24:\n case 160:\n case 161:\n case 181:\n case 182:\n case 242:\n case 183:\n case 184:\n case 243:\n case 244:\n case 245:\n case 165:\n case 178:\n case 179:\n case 49:\n case 50:\n case 168:\n case 169:\n case 175:\n case 170:\n case 171:\n case 172:\n case 97:\n case 76:\n case 32:\n case 173:\n case 35:\n case 80:\n case 81:\n case 79:\n return -1;\n\n case 176:\n case 177:\n case 7:\n case 155:\n case 8:\n case 157:\n case 125:\n case 126:\n case 92:\n case 93:\n case 129:\n case 130:\n case 131:\n case 94:\n case 91:\n return 1;\n\n case 74:\n case 60:\n case 69:\n case 70:\n case 4:\n return 1024;\n\n case 31:\n case 42:\n case 72:\n return 32;\n\n case 87:\n case 26:\n case 33:\n return 2147483647;\n\n case 34:\n case 1:\n return 47839;\n\n case 38:\n case 36:\n return 99;\n\n case 43:\n case 37:\n return 2048;\n\n case 0:\n return 2097152;\n\n case 3:\n return 65536;\n\n case 28:\n return 32768;\n\n case 44:\n return 32767;\n\n case 75:\n return 16384;\n\n case 39:\n return 1e3;\n\n case 89:\n return 700;\n\n case 71:\n return 256;\n\n case 40:\n return 255;\n\n case 2:\n return 100;\n\n case 180:\n return 64;\n\n case 25:\n return 20;\n\n case 5:\n return 16;\n\n case 6:\n return 6;\n\n case 73:\n return 4;\n\n case 84:\n {\n if (typeof navigator === \"object\") return navigator[\"hardwareConcurrency\"] || 1;\n return 1;\n }\n }\n setErrNo(28);\n return -1;\n}\n\nfunction _time(ptr) {\n var ret = Date.now() / 1e3 | 0;\n if (ptr) {\n HEAP32[ptr >> 2] = ret;\n }\n return ret;\n}\n\nfunction setFileTime(path, time) {\n path = UTF8ToString(path);\n try {\n FS.utime(path, time, time);\n return 0;\n } catch (e) {\n if (!(e instanceof FS.ErrnoError)) throw e + \" : \" + stackTrace();\n setErrNo(e.errno);\n return -1;\n }\n}\n\nfunction _utime(path, times) {\n var time;\n if (times) {\n time = HEAP32[times + 4 >> 2] * 1e3;\n } else {\n time = Date.now();\n }\n return setFileTime(path, time);\n}\n\nvar FSNode = function(parent, name, mode, rdev) {\n if (!parent) {\n parent = this;\n }\n this.parent = parent;\n this.mount = parent.mount;\n this.mounted = null;\n this.id = FS.nextInode++;\n this.name = name;\n this.mode = mode;\n this.node_ops = {};\n this.stream_ops = {};\n this.rdev = rdev;\n};\n\nvar readMode = 292 | 73;\n\nvar writeMode = 146;\n\nObject.defineProperties(FSNode.prototype, {\n read: {\n get: function() {\n return (this.mode & readMode) === readMode;\n },\n set: function(val) {\n val ? this.mode |= readMode : this.mode &= ~readMode;\n }\n },\n write: {\n get: function() {\n return (this.mode & writeMode) === writeMode;\n },\n set: function(val) {\n val ? this.mode |= writeMode : this.mode &= ~writeMode;\n }\n },\n isFolder: {\n get: function() {\n return FS.isDir(this.mode);\n }\n },\n isDevice: {\n get: function() {\n return FS.isChrdev(this.mode);\n }\n }\n});\n\nFS.FSNode = FSNode;\n\nFS.staticInit();\n\nvar ASSERTIONS = true;\n\nfunction intArrayFromString(stringy, dontAddNull, length) {\n var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n var u8array = new Array(len);\n var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n if (dontAddNull) u8array.length = numBytesWritten;\n return u8array;\n}\n\nvar asmLibraryArg = {\n \"__clock_gettime\": ___clock_gettime,\n \"__cxa_atexit\": ___cxa_atexit,\n \"__localtime_r\": ___localtime_r,\n \"__sys_access\": ___sys_access,\n \"__sys_chmod\": ___sys_chmod,\n \"__sys_chown32\": ___sys_chown32,\n \"__sys_fchmod\": ___sys_fchmod,\n \"__sys_fchown32\": ___sys_fchown32,\n \"__sys_fcntl64\": ___sys_fcntl64,\n \"__sys_fstat64\": ___sys_fstat64,\n \"__sys_ftruncate64\": ___sys_ftruncate64,\n \"__sys_getcwd\": ___sys_getcwd,\n \"__sys_geteuid32\": ___sys_geteuid32,\n \"__sys_getpid\": ___sys_getpid,\n \"__sys_ioctl\": ___sys_ioctl,\n \"__sys_lstat64\": ___sys_lstat64,\n \"__sys_mkdir\": ___sys_mkdir,\n \"__sys_mmap2\": ___sys_mmap2,\n \"__sys_mprotect\": ___sys_mprotect,\n \"__sys_munmap\": ___sys_munmap,\n \"__sys_open\": ___sys_open,\n \"__sys_readlink\": ___sys_readlink,\n \"__sys_rmdir\": ___sys_rmdir,\n \"__sys_stat64\": ___sys_stat64,\n \"__sys_unlink\": ___sys_unlink,\n \"abort\": _abort,\n \"emscripten_get_now\": _emscripten_get_now,\n \"emscripten_memcpy_big\": _emscripten_memcpy_big,\n \"emscripten_resize_heap\": _emscripten_resize_heap,\n \"emscripten_thread_sleep\": _emscripten_thread_sleep,\n \"environ_get\": _environ_get,\n \"environ_sizes_get\": _environ_sizes_get,\n \"exit\": _exit,\n \"fd_close\": _fd_close,\n \"fd_fdstat_get\": _fd_fdstat_get,\n \"fd_read\": _fd_read,\n \"fd_seek\": _fd_seek,\n \"fd_sync\": _fd_sync,\n \"fd_write\": _fd_write,\n \"getentropy\": _getentropy,\n \"gettimeofday\": _gettimeofday,\n \"setTempRet0\": _setTempRet0,\n \"strftime\": _strftime,\n \"strftime_l\": _strftime_l,\n \"sysconf\": _sysconf,\n \"time\": _time,\n \"utime\": _utime\n};\n\nvar asm = createWasm();\n\nvar ___wasm_call_ctors = Module[\"___wasm_call_ctors\"] = createExportWrapper(\"__wasm_call_ctors\", asm);\n\nvar ___errno_location = Module[\"___errno_location\"] = createExportWrapper(\"__errno_location\", asm);\n\nvar _memset = Module[\"_memset\"] = createExportWrapper(\"memset\", asm);\n\nvar _main = Module[\"_main\"] = createExportWrapper(\"main\", asm);\n\nvar _fflush = Module[\"_fflush\"] = createExportWrapper(\"fflush\", asm);\n\nvar _free = Module[\"_free\"] = createExportWrapper(\"free\", asm);\n\nvar _malloc = Module[\"_malloc\"] = createExportWrapper(\"malloc\", asm);\n\nvar _usleep = Module[\"_usleep\"] = createExportWrapper(\"usleep\", asm);\n\nvar __get_tzname = Module[\"__get_tzname\"] = createExportWrapper(\"_get_tzname\", asm);\n\nvar __get_daylight = Module[\"__get_daylight\"] = createExportWrapper(\"_get_daylight\", asm);\n\nvar __get_timezone = Module[\"__get_timezone\"] = createExportWrapper(\"_get_timezone\", asm);\n\nvar _emscripten_main_thread_process_queued_calls = Module[\"_emscripten_main_thread_process_queued_calls\"] = createExportWrapper(\"emscripten_main_thread_process_queued_calls\", asm);\n\nvar _emscripten_stack_get_end = Module[\"_emscripten_stack_get_end\"] = asm[\"emscripten_stack_get_end\"];\n\nvar stackSave = Module[\"stackSave\"] = createExportWrapper(\"stackSave\", asm);\n\nvar stackRestore = Module[\"stackRestore\"] = createExportWrapper(\"stackRestore\", asm);\n\nvar stackAlloc = Module[\"stackAlloc\"] = createExportWrapper(\"stackAlloc\", asm);\n\nvar _emscripten_stack_init = Module[\"_emscripten_stack_init\"] = asm[\"emscripten_stack_init\"];\n\nvar _emscripten_stack_get_free = Module[\"_emscripten_stack_get_free\"] = asm[\"emscripten_stack_get_free\"];\n\nvar _memalign = Module[\"_memalign\"] = createExportWrapper(\"memalign\", asm);\n\nvar dynCall_viijii = Module[\"dynCall_viijii\"] = createExportWrapper(\"dynCall_viijii\", asm);\n\nvar dynCall_viiiiji = Module[\"dynCall_viiiiji\"] = createExportWrapper(\"dynCall_viiiiji\", asm);\n\nvar dynCall_viiij = Module[\"dynCall_viiij\"] = createExportWrapper(\"dynCall_viiij\", asm);\n\nvar dynCall_iiiij = Module[\"dynCall_iiiij\"] = createExportWrapper(\"dynCall_iiiij\", asm);\n\nvar dynCall_iij = Module[\"dynCall_iij\"] = createExportWrapper(\"dynCall_iij\", asm);\n\nvar dynCall_iijii = Module[\"dynCall_iijii\"] = createExportWrapper(\"dynCall_iijii\", asm);\n\nvar dynCall_iiji = Module[\"dynCall_iiji\"] = createExportWrapper(\"dynCall_iiji\", asm);\n\nvar dynCall_iiiiiij = Module[\"dynCall_iiiiiij\"] = createExportWrapper(\"dynCall_iiiiiij\", asm);\n\nvar dynCall_viiiijii = Module[\"dynCall_viiiijii\"] = createExportWrapper(\"dynCall_viiiijii\", asm);\n\nvar dynCall_viiji = Module[\"dynCall_viiji\"] = createExportWrapper(\"dynCall_viiji\", asm);\n\nvar dynCall_viij = Module[\"dynCall_viij\"] = createExportWrapper(\"dynCall_viij\", asm);\n\nvar dynCall_viji = Module[\"dynCall_viji\"] = createExportWrapper(\"dynCall_viji\", asm);\n\nvar dynCall_iiij = Module[\"dynCall_iiij\"] = createExportWrapper(\"dynCall_iiij\", asm);\n\nvar dynCall_viijdi = Module[\"dynCall_viijdi\"] = createExportWrapper(\"dynCall_viijdi\", asm);\n\nvar dynCall_viijdii = Module[\"dynCall_viijdii\"] = createExportWrapper(\"dynCall_viijdii\", asm);\n\nvar dynCall_iijijii = Module[\"dynCall_iijijii\"] = createExportWrapper(\"dynCall_iijijii\", asm);\n\nvar dynCall_viijiiii = Module[\"dynCall_viijiiii\"] = createExportWrapper(\"dynCall_viijiiii\", asm);\n\nvar dynCall_viijiiiji = Module[\"dynCall_viijiiiji\"] = createExportWrapper(\"dynCall_viijiiiji\", asm);\n\nvar dynCall_viijiii = Module[\"dynCall_viijiii\"] = createExportWrapper(\"dynCall_viijiii\", asm);\n\nvar dynCall_viijiiijiii = Module[\"dynCall_viijiiijiii\"] = createExportWrapper(\"dynCall_viijiiijiii\", asm);\n\nvar dynCall_jiji = Module[\"dynCall_jiji\"] = createExportWrapper(\"dynCall_jiji\", asm);\n\nvar dynCall_iiiiij = Module[\"dynCall_iiiiij\"] = createExportWrapper(\"dynCall_iiiiij\", asm);\n\nvar dynCall_iiiiijj = Module[\"dynCall_iiiiijj\"] = createExportWrapper(\"dynCall_iiiiijj\", asm);\n\nvar dynCall_iiiiiijj = Module[\"dynCall_iiiiiijj\"] = createExportWrapper(\"dynCall_iiiiiijj\", asm);\n\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayFromString\")) Module[\"intArrayFromString\"] = function() {\n abort(\"'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"intArrayToString\")) Module[\"intArrayToString\"] = function() {\n abort(\"'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nModule[\"ccall\"] = ccall;\n\nif (!Object.getOwnPropertyDescriptor(Module, \"cwrap\")) Module[\"cwrap\"] = function() {\n abort(\"'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setValue\")) Module[\"setValue\"] = function() {\n abort(\"'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getValue\")) Module[\"getValue\"] = function() {\n abort(\"'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"allocate\")) Module[\"allocate\"] = function() {\n abort(\"'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF8ArrayToString\")) Module[\"UTF8ArrayToString\"] = function() {\n abort(\"'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF8ToString\")) Module[\"UTF8ToString\"] = function() {\n abort(\"'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8Array\")) Module[\"stringToUTF8Array\"] = function() {\n abort(\"'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF8\")) Module[\"stringToUTF8\"] = function() {\n abort(\"'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF8\")) Module[\"lengthBytesUTF8\"] = function() {\n abort(\"'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stackTrace\")) Module[\"stackTrace\"] = function() {\n abort(\"'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPreRun\")) Module[\"addOnPreRun\"] = function() {\n abort(\"'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnInit\")) Module[\"addOnInit\"] = function() {\n abort(\"'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPreMain\")) Module[\"addOnPreMain\"] = function() {\n abort(\"'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnExit\")) Module[\"addOnExit\"] = function() {\n abort(\"'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"addOnPostRun\")) Module[\"addOnPostRun\"] = function() {\n abort(\"'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeStringToMemory\")) Module[\"writeStringToMemory\"] = function() {\n abort(\"'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeArrayToMemory\")) Module[\"writeArrayToMemory\"] = function() {\n abort(\"'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeAsciiToMemory\")) Module[\"writeAsciiToMemory\"] = function() {\n abort(\"'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"addRunDependency\")) Module[\"addRunDependency\"] = function() {\n abort(\"'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"removeRunDependency\")) Module[\"removeRunDependency\"] = function() {\n abort(\"'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createFolder\")) Module[\"FS_createFolder\"] = function() {\n abort(\"'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createPath\")) Module[\"FS_createPath\"] = function() {\n abort(\"'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createDataFile\")) Module[\"FS_createDataFile\"] = function() {\n abort(\"'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createPreloadedFile\")) Module[\"FS_createPreloadedFile\"] = function() {\n abort(\"'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createLazyFile\")) Module[\"FS_createLazyFile\"] = function() {\n abort(\"'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createLink\")) Module[\"FS_createLink\"] = function() {\n abort(\"'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_createDevice\")) Module[\"FS_createDevice\"] = function() {\n abort(\"'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"FS_unlink\")) Module[\"FS_unlink\"] = function() {\n abort(\"'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getLEB\")) Module[\"getLEB\"] = function() {\n abort(\"'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getFunctionTables\")) Module[\"getFunctionTables\"] = function() {\n abort(\"'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"alignFunctionTables\")) Module[\"alignFunctionTables\"] = function() {\n abort(\"'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerFunctions\")) Module[\"registerFunctions\"] = function() {\n abort(\"'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nModule[\"addFunction\"] = addFunction;\n\nif (!Object.getOwnPropertyDescriptor(Module, \"removeFunction\")) Module[\"removeFunction\"] = function() {\n abort(\"'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getFuncWrapper\")) Module[\"getFuncWrapper\"] = function() {\n abort(\"'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"prettyPrint\")) Module[\"prettyPrint\"] = function() {\n abort(\"'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"makeBigInt\")) Module[\"makeBigInt\"] = function() {\n abort(\"'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"dynCall\")) Module[\"dynCall\"] = function() {\n abort(\"'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getCompilerSetting\")) Module[\"getCompilerSetting\"] = function() {\n abort(\"'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"print\")) Module[\"print\"] = function() {\n abort(\"'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"printErr\")) Module[\"printErr\"] = function() {\n abort(\"'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getTempRet0\")) Module[\"getTempRet0\"] = function() {\n abort(\"'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setTempRet0\")) Module[\"setTempRet0\"] = function() {\n abort(\"'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nModule[\"callMain\"] = callMain;\n\nif (!Object.getOwnPropertyDescriptor(Module, \"abort\")) Module[\"abort\"] = function() {\n abort(\"'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToNewUTF8\")) Module[\"stringToNewUTF8\"] = function() {\n abort(\"'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setFileTime\")) Module[\"setFileTime\"] = function() {\n abort(\"'setFileTime' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"emscripten_realloc_buffer\")) Module[\"emscripten_realloc_buffer\"] = function() {\n abort(\"'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ENV\")) Module[\"ENV\"] = function() {\n abort(\"'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ERRNO_CODES\")) Module[\"ERRNO_CODES\"] = function() {\n abort(\"'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ERRNO_MESSAGES\")) Module[\"ERRNO_MESSAGES\"] = function() {\n abort(\"'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setErrNo\")) Module[\"setErrNo\"] = function() {\n abort(\"'setErrNo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"DNS\")) Module[\"DNS\"] = function() {\n abort(\"'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getHostByName\")) Module[\"getHostByName\"] = function() {\n abort(\"'getHostByName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"GAI_ERRNO_MESSAGES\")) Module[\"GAI_ERRNO_MESSAGES\"] = function() {\n abort(\"'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"Protocols\")) Module[\"Protocols\"] = function() {\n abort(\"'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"Sockets\")) Module[\"Sockets\"] = function() {\n abort(\"'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getRandomDevice\")) Module[\"getRandomDevice\"] = function() {\n abort(\"'getRandomDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"traverseStack\")) Module[\"traverseStack\"] = function() {\n abort(\"'traverseStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"UNWIND_CACHE\")) Module[\"UNWIND_CACHE\"] = function() {\n abort(\"'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"withBuiltinMalloc\")) Module[\"withBuiltinMalloc\"] = function() {\n abort(\"'withBuiltinMalloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"readAsmConstArgsArray\")) Module[\"readAsmConstArgsArray\"] = function() {\n abort(\"'readAsmConstArgsArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"readAsmConstArgs\")) Module[\"readAsmConstArgs\"] = function() {\n abort(\"'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"mainThreadEM_ASM\")) Module[\"mainThreadEM_ASM\"] = function() {\n abort(\"'mainThreadEM_ASM' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"jstoi_q\")) Module[\"jstoi_q\"] = function() {\n abort(\"'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"jstoi_s\")) Module[\"jstoi_s\"] = function() {\n abort(\"'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getExecutableName\")) Module[\"getExecutableName\"] = function() {\n abort(\"'getExecutableName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"listenOnce\")) Module[\"listenOnce\"] = function() {\n abort(\"'listenOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"autoResumeAudioContext\")) Module[\"autoResumeAudioContext\"] = function() {\n abort(\"'autoResumeAudioContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"dynCallLegacy\")) Module[\"dynCallLegacy\"] = function() {\n abort(\"'dynCallLegacy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getDynCaller\")) Module[\"getDynCaller\"] = function() {\n abort(\"'getDynCaller' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"dynCall\")) Module[\"dynCall\"] = function() {\n abort(\"'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"callRuntimeCallbacks\")) Module[\"callRuntimeCallbacks\"] = function() {\n abort(\"'callRuntimeCallbacks' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"abortStackOverflow\")) Module[\"abortStackOverflow\"] = function() {\n abort(\"'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"reallyNegative\")) Module[\"reallyNegative\"] = function() {\n abort(\"'reallyNegative' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"unSign\")) Module[\"unSign\"] = function() {\n abort(\"'unSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"reSign\")) Module[\"reSign\"] = function() {\n abort(\"'reSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"formatString\")) Module[\"formatString\"] = function() {\n abort(\"'formatString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"PATH\")) Module[\"PATH\"] = function() {\n abort(\"'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"PATH_FS\")) Module[\"PATH_FS\"] = function() {\n abort(\"'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SYSCALLS\")) Module[\"SYSCALLS\"] = function() {\n abort(\"'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"syscallMmap2\")) Module[\"syscallMmap2\"] = function() {\n abort(\"'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"syscallMunmap\")) Module[\"syscallMunmap\"] = function() {\n abort(\"'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"JSEvents\")) Module[\"JSEvents\"] = function() {\n abort(\"'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerKeyEventCallback\")) Module[\"registerKeyEventCallback\"] = function() {\n abort(\"'registerKeyEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"specialHTMLTargets\")) Module[\"specialHTMLTargets\"] = function() {\n abort(\"'specialHTMLTargets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"maybeCStringToJsString\")) Module[\"maybeCStringToJsString\"] = function() {\n abort(\"'maybeCStringToJsString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"findEventTarget\")) Module[\"findEventTarget\"] = function() {\n abort(\"'findEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"findCanvasEventTarget\")) Module[\"findCanvasEventTarget\"] = function() {\n abort(\"'findCanvasEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getBoundingClientRect\")) Module[\"getBoundingClientRect\"] = function() {\n abort(\"'getBoundingClientRect' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillMouseEventData\")) Module[\"fillMouseEventData\"] = function() {\n abort(\"'fillMouseEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerMouseEventCallback\")) Module[\"registerMouseEventCallback\"] = function() {\n abort(\"'registerMouseEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerWheelEventCallback\")) Module[\"registerWheelEventCallback\"] = function() {\n abort(\"'registerWheelEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerUiEventCallback\")) Module[\"registerUiEventCallback\"] = function() {\n abort(\"'registerUiEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerFocusEventCallback\")) Module[\"registerFocusEventCallback\"] = function() {\n abort(\"'registerFocusEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillDeviceOrientationEventData\")) Module[\"fillDeviceOrientationEventData\"] = function() {\n abort(\"'fillDeviceOrientationEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerDeviceOrientationEventCallback\")) Module[\"registerDeviceOrientationEventCallback\"] = function() {\n abort(\"'registerDeviceOrientationEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillDeviceMotionEventData\")) Module[\"fillDeviceMotionEventData\"] = function() {\n abort(\"'fillDeviceMotionEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerDeviceMotionEventCallback\")) Module[\"registerDeviceMotionEventCallback\"] = function() {\n abort(\"'registerDeviceMotionEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"screenOrientation\")) Module[\"screenOrientation\"] = function() {\n abort(\"'screenOrientation' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillOrientationChangeEventData\")) Module[\"fillOrientationChangeEventData\"] = function() {\n abort(\"'fillOrientationChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerOrientationChangeEventCallback\")) Module[\"registerOrientationChangeEventCallback\"] = function() {\n abort(\"'registerOrientationChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillFullscreenChangeEventData\")) Module[\"fillFullscreenChangeEventData\"] = function() {\n abort(\"'fillFullscreenChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerFullscreenChangeEventCallback\")) Module[\"registerFullscreenChangeEventCallback\"] = function() {\n abort(\"'registerFullscreenChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerRestoreOldStyle\")) Module[\"registerRestoreOldStyle\"] = function() {\n abort(\"'registerRestoreOldStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"hideEverythingExceptGivenElement\")) Module[\"hideEverythingExceptGivenElement\"] = function() {\n abort(\"'hideEverythingExceptGivenElement' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"restoreHiddenElements\")) Module[\"restoreHiddenElements\"] = function() {\n abort(\"'restoreHiddenElements' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setLetterbox\")) Module[\"setLetterbox\"] = function() {\n abort(\"'setLetterbox' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"currentFullscreenStrategy\")) Module[\"currentFullscreenStrategy\"] = function() {\n abort(\"'currentFullscreenStrategy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"restoreOldWindowedStyle\")) Module[\"restoreOldWindowedStyle\"] = function() {\n abort(\"'restoreOldWindowedStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"softFullscreenResizeWebGLRenderTarget\")) Module[\"softFullscreenResizeWebGLRenderTarget\"] = function() {\n abort(\"'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"doRequestFullscreen\")) Module[\"doRequestFullscreen\"] = function() {\n abort(\"'doRequestFullscreen' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillPointerlockChangeEventData\")) Module[\"fillPointerlockChangeEventData\"] = function() {\n abort(\"'fillPointerlockChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerPointerlockChangeEventCallback\")) Module[\"registerPointerlockChangeEventCallback\"] = function() {\n abort(\"'registerPointerlockChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerPointerlockErrorEventCallback\")) Module[\"registerPointerlockErrorEventCallback\"] = function() {\n abort(\"'registerPointerlockErrorEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"requestPointerLock\")) Module[\"requestPointerLock\"] = function() {\n abort(\"'requestPointerLock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillVisibilityChangeEventData\")) Module[\"fillVisibilityChangeEventData\"] = function() {\n abort(\"'fillVisibilityChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerVisibilityChangeEventCallback\")) Module[\"registerVisibilityChangeEventCallback\"] = function() {\n abort(\"'registerVisibilityChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerTouchEventCallback\")) Module[\"registerTouchEventCallback\"] = function() {\n abort(\"'registerTouchEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillGamepadEventData\")) Module[\"fillGamepadEventData\"] = function() {\n abort(\"'fillGamepadEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerGamepadEventCallback\")) Module[\"registerGamepadEventCallback\"] = function() {\n abort(\"'registerGamepadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerBeforeUnloadEventCallback\")) Module[\"registerBeforeUnloadEventCallback\"] = function() {\n abort(\"'registerBeforeUnloadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"fillBatteryEventData\")) Module[\"fillBatteryEventData\"] = function() {\n abort(\"'fillBatteryEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"battery\")) Module[\"battery\"] = function() {\n abort(\"'battery' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"registerBatteryEventCallback\")) Module[\"registerBatteryEventCallback\"] = function() {\n abort(\"'registerBatteryEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setCanvasElementSize\")) Module[\"setCanvasElementSize\"] = function() {\n abort(\"'setCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getCanvasElementSize\")) Module[\"getCanvasElementSize\"] = function() {\n abort(\"'getCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"polyfillSetImmediate\")) Module[\"polyfillSetImmediate\"] = function() {\n abort(\"'polyfillSetImmediate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"demangle\")) Module[\"demangle\"] = function() {\n abort(\"'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"demangleAll\")) Module[\"demangleAll\"] = function() {\n abort(\"'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"jsStackTrace\")) Module[\"jsStackTrace\"] = function() {\n abort(\"'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stackTrace\")) Module[\"stackTrace\"] = function() {\n abort(\"'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getEnvStrings\")) Module[\"getEnvStrings\"] = function() {\n abort(\"'getEnvStrings' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"checkWasiClock\")) Module[\"checkWasiClock\"] = function() {\n abort(\"'checkWasiClock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeI53ToI64\")) Module[\"writeI53ToI64\"] = function() {\n abort(\"'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeI53ToI64Clamped\")) Module[\"writeI53ToI64Clamped\"] = function() {\n abort(\"'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeI53ToI64Signaling\")) Module[\"writeI53ToI64Signaling\"] = function() {\n abort(\"'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeI53ToU64Clamped\")) Module[\"writeI53ToU64Clamped\"] = function() {\n abort(\"'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeI53ToU64Signaling\")) Module[\"writeI53ToU64Signaling\"] = function() {\n abort(\"'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"readI53FromI64\")) Module[\"readI53FromI64\"] = function() {\n abort(\"'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"readI53FromU64\")) Module[\"readI53FromU64\"] = function() {\n abort(\"'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"convertI32PairToI53\")) Module[\"convertI32PairToI53\"] = function() {\n abort(\"'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"convertU32PairToI53\")) Module[\"convertU32PairToI53\"] = function() {\n abort(\"'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"uncaughtExceptionCount\")) Module[\"uncaughtExceptionCount\"] = function() {\n abort(\"'uncaughtExceptionCount' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"exceptionLast\")) Module[\"exceptionLast\"] = function() {\n abort(\"'exceptionLast' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"exceptionCaught\")) Module[\"exceptionCaught\"] = function() {\n abort(\"'exceptionCaught' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ExceptionInfoAttrs\")) Module[\"ExceptionInfoAttrs\"] = function() {\n abort(\"'ExceptionInfoAttrs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ExceptionInfo\")) Module[\"ExceptionInfo\"] = function() {\n abort(\"'ExceptionInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"CatchInfo\")) Module[\"CatchInfo\"] = function() {\n abort(\"'CatchInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"exception_addRef\")) Module[\"exception_addRef\"] = function() {\n abort(\"'exception_addRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"exception_decRef\")) Module[\"exception_decRef\"] = function() {\n abort(\"'exception_decRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"Browser\")) Module[\"Browser\"] = function() {\n abort(\"'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"funcWrappers\")) Module[\"funcWrappers\"] = function() {\n abort(\"'funcWrappers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"getFuncWrapper\")) Module[\"getFuncWrapper\"] = function() {\n abort(\"'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"setMainLoop\")) Module[\"setMainLoop\"] = function() {\n abort(\"'setMainLoop' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nModule[\"FS\"] = FS;\n\nif (!Object.getOwnPropertyDescriptor(Module, \"mmapAlloc\")) Module[\"mmapAlloc\"] = function() {\n abort(\"'mmapAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"MEMFS\")) Module[\"MEMFS\"] = function() {\n abort(\"'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"TTY\")) Module[\"TTY\"] = function() {\n abort(\"'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"PIPEFS\")) Module[\"PIPEFS\"] = function() {\n abort(\"'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SOCKFS\")) Module[\"SOCKFS\"] = function() {\n abort(\"'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"tempFixedLengthArray\")) Module[\"tempFixedLengthArray\"] = function() {\n abort(\"'tempFixedLengthArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"miniTempWebGLFloatBuffers\")) Module[\"miniTempWebGLFloatBuffers\"] = function() {\n abort(\"'miniTempWebGLFloatBuffers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"heapObjectForWebGLType\")) Module[\"heapObjectForWebGLType\"] = function() {\n abort(\"'heapObjectForWebGLType' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"heapAccessShiftForWebGLHeap\")) Module[\"heapAccessShiftForWebGLHeap\"] = function() {\n abort(\"'heapAccessShiftForWebGLHeap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"GL\")) Module[\"GL\"] = function() {\n abort(\"'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"emscriptenWebGLGet\")) Module[\"emscriptenWebGLGet\"] = function() {\n abort(\"'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"computeUnpackAlignedImageSize\")) Module[\"computeUnpackAlignedImageSize\"] = function() {\n abort(\"'computeUnpackAlignedImageSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"emscriptenWebGLGetTexPixelData\")) Module[\"emscriptenWebGLGetTexPixelData\"] = function() {\n abort(\"'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"emscriptenWebGLGetUniform\")) Module[\"emscriptenWebGLGetUniform\"] = function() {\n abort(\"'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"emscriptenWebGLGetVertexAttrib\")) Module[\"emscriptenWebGLGetVertexAttrib\"] = function() {\n abort(\"'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"writeGLArray\")) Module[\"writeGLArray\"] = function() {\n abort(\"'writeGLArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"AL\")) Module[\"AL\"] = function() {\n abort(\"'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SDL_unicode\")) Module[\"SDL_unicode\"] = function() {\n abort(\"'SDL_unicode' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SDL_ttfContext\")) Module[\"SDL_ttfContext\"] = function() {\n abort(\"'SDL_ttfContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SDL_audio\")) Module[\"SDL_audio\"] = function() {\n abort(\"'SDL_audio' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SDL\")) Module[\"SDL\"] = function() {\n abort(\"'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"SDL_gfx\")) Module[\"SDL_gfx\"] = function() {\n abort(\"'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"GLUT\")) Module[\"GLUT\"] = function() {\n abort(\"'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"EGL\")) Module[\"EGL\"] = function() {\n abort(\"'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"GLFW_Window\")) Module[\"GLFW_Window\"] = function() {\n abort(\"'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"GLFW\")) Module[\"GLFW\"] = function() {\n abort(\"'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"GLEW\")) Module[\"GLEW\"] = function() {\n abort(\"'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"IDBStore\")) Module[\"IDBStore\"] = function() {\n abort(\"'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"runAndAbortIfError\")) Module[\"runAndAbortIfError\"] = function() {\n abort(\"'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"WORKERFS\")) Module[\"WORKERFS\"] = function() {\n abort(\"'WORKERFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"warnOnce\")) Module[\"warnOnce\"] = function() {\n abort(\"'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stackSave\")) Module[\"stackSave\"] = function() {\n abort(\"'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stackRestore\")) Module[\"stackRestore\"] = function() {\n abort(\"'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stackAlloc\")) Module[\"stackAlloc\"] = function() {\n abort(\"'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"AsciiToString\")) Module[\"AsciiToString\"] = function() {\n abort(\"'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToAscii\")) Module[\"stringToAscii\"] = function() {\n abort(\"'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF16ToString\")) Module[\"UTF16ToString\"] = function() {\n abort(\"'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF16\")) Module[\"stringToUTF16\"] = function() {\n abort(\"'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF16\")) Module[\"lengthBytesUTF16\"] = function() {\n abort(\"'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"UTF32ToString\")) Module[\"UTF32ToString\"] = function() {\n abort(\"'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"stringToUTF32\")) Module[\"stringToUTF32\"] = function() {\n abort(\"'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"lengthBytesUTF32\")) Module[\"lengthBytesUTF32\"] = function() {\n abort(\"'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"allocateUTF8\")) Module[\"allocateUTF8\"] = function() {\n abort(\"'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nif (!Object.getOwnPropertyDescriptor(Module, \"allocateUTF8OnStack\")) Module[\"allocateUTF8OnStack\"] = function() {\n abort(\"'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n};\n\nModule[\"writeStackCookie\"] = writeStackCookie;\n\nModule[\"checkStackCookie\"] = checkStackCookie;\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_NORMAL\")) Object.defineProperty(Module, \"ALLOC_NORMAL\", {\n configurable: true,\n get: function() {\n abort(\"'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n }\n});\n\nif (!Object.getOwnPropertyDescriptor(Module, \"ALLOC_STACK\")) Object.defineProperty(Module, \"ALLOC_STACK\", {\n configurable: true,\n get: function() {\n abort(\"'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)\");\n }\n});\n\nvar calledRun;\n\nfunction ExitStatus(status) {\n this.name = \"ExitStatus\";\n this.message = \"Program terminated with exit(\" + status + \")\";\n this.status = status;\n}\n\nvar calledMain = false;\n\ndependenciesFulfilled = function runCaller() {\n if (!calledRun) run();\n if (!calledRun) dependenciesFulfilled = runCaller;\n};\n\nfunction callMain(args) {\n assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module[\"onRuntimeInitialized\"])');\n assert(__ATPRERUN__.length == 0, \"cannot call main when preRun functions remain to be called\");\n var entryFunction = Module[\"_main\"];\n args = args || [];\n var argc = args.length + 1;\n var argv = stackAlloc((argc + 1) * 4);\n HEAP32[argv >> 2] = allocateUTF8OnStack(thisProgram);\n for (var i = 1; i < argc; i++) {\n HEAP32[(argv >> 2) + i] = allocateUTF8OnStack(args[i - 1]);\n }\n HEAP32[(argv >> 2) + argc] = 0;\n try {\n var ret = entryFunction(argc, argv);\n exit(ret, true);\n } catch (e) {\n if (e instanceof ExitStatus) {\n return;\n } else if (e == \"unwind\") {\n noExitRuntime = true;\n return;\n } else {\n var toLog = e;\n if (e && typeof e === \"object\" && e.stack) {\n toLog = [ e, e.stack ];\n }\n err(\"exception thrown: \" + toLog);\n quit_(1, e);\n }\n } finally {\n calledMain = true;\n }\n}\n\nfunction run(args) {\n args = args || arguments_;\n if (runDependencies > 0) {\n return;\n }\n _emscripten_stack_init();\n writeStackCookie();\n preRun();\n if (runDependencies > 0) return;\n function doRun() {\n if (calledRun) return;\n calledRun = true;\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve(Module);\n if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n if (shouldRunNow) callMain(args);\n postRun();\n }\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(function() {\n setTimeout(function() {\n Module[\"setStatus\"](\"\");\n }, 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n checkStackCookie();\n}\n\nModule[\"run\"] = run;\n\nfunction checkUnflushedContent() {\n var oldOut = out;\n var oldErr = err;\n var has = false;\n out = err = function(x) {\n has = true;\n };\n try {\n var flush = Module[\"_fflush\"];\n if (flush) flush(0);\n [ \"stdout\", \"stderr\" ].forEach(function(name) {\n var info = FS.analyzePath(\"/dev/\" + name);\n if (!info) return;\n var stream = info.object;\n var rdev = stream.rdev;\n var tty = TTY.ttys[rdev];\n if (tty && tty.output && tty.output.length) {\n has = true;\n }\n });\n } catch (e) {}\n out = oldOut;\n err = oldErr;\n if (has) {\n warnOnce(\"stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.\");\n }\n}\n\nfunction exit(status, implicit) {\n checkUnflushedContent();\n if (implicit && noExitRuntime && status === 0) {\n return;\n }\n if (noExitRuntime) {\n if (!implicit) {\n var msg = \"program exited (with status: \" + status + \"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)\";\n readyPromiseReject(msg);\n err(msg);\n }\n } else {\n EXITSTATUS = status;\n exitRuntime();\n if (Module[\"onExit\"]) Module[\"onExit\"](status);\n ABORT = true;\n }\n quit_(status, new ExitStatus(status));\n}\n\nif (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [ Module[\"preInit\"] ];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].pop()();\n }\n}\n\nvar shouldRunNow = true;\n\nif (Module[\"noInitialRun\"]) shouldRunNow = false;\n\nnoExitRuntime = true;\n\nrun();\n\n\n return trace_to_text_wasm\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = trace_to_text_wasm;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return trace_to_text_wasm; });\nelse if (typeof exports === 'object')\n exports[\"trace_to_text_wasm\"] = trace_to_text_wasm;\n","// Copyright (C) 2021 The Android Open Source Project\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {defer} from '../base/deferred';\nimport {assertExists, reportError, setErrorHandler} from '../base/logging';\nimport {\n ConversionJobName,\n ConversionJobStatus\n} from '../common/conversion_jobs';\nimport * as trace_to_text from '../gen/trace_to_text';\n\nconst selfWorker = self as {} as Worker;\n\n// TODO(hjd): The trace ends up being copied too many times due to how\n// blob works. We should reduce the number of copies.\n\ntype Format = 'json'|'systrace';\ntype Args = ConvertTraceAndDownloadArgs|ConvertTraceAndOpenInLegacyArgs|\n ConvertTraceToPprofArgs;\n\nfunction updateStatus(status: string) {\n selfWorker.postMessage({\n kind: 'updateStatus',\n status,\n });\n}\n\nfunction updateJobStatus(name: ConversionJobName, status: ConversionJobStatus) {\n selfWorker.postMessage({\n kind: 'updateJobStatus',\n name,\n status,\n });\n}\n\nfunction downloadFile(buffer: Uint8Array, name: string) {\n selfWorker.postMessage({\n kind: 'downloadFile',\n buffer,\n name,\n }, [buffer.buffer]);\n}\n\nfunction openTraceInLegacy(buffer: Uint8Array) {\n selfWorker.postMessage({\n kind: 'openTraceInLegacy',\n buffer,\n });\n}\n\nfunction forwardError(error: string) {\n selfWorker.postMessage({\n kind: 'error',\n error,\n });\n}\n\nfunction fsNodeToBuffer(fsNode: trace_to_text.FileSystemNode): Uint8Array {\n const fileSize = assertExists(fsNode.usedBytes);\n return new Uint8Array(fsNode.contents.buffer, 0, fileSize);\n}\n\nasync function runTraceconv(trace: Blob, args: string[]) {\n const deferredRuntimeInitialized = defer();\n const module = trace_to_text({\n noInitialRun: true,\n locateFile: (s: string) => s,\n print: updateStatus,\n printErr: updateStatus,\n onRuntimeInitialized: () => deferredRuntimeInitialized.resolve()\n });\n await deferredRuntimeInitialized;\n module.FS.mkdir('/fs');\n module.FS.mount(\n assertExists(module.FS.filesystems.WORKERFS),\n {blobs: [{name: 'trace.proto', data: trace}]},\n '/fs');\n updateStatus('Converting trace');\n module.callMain(args);\n updateStatus('Trace conversion completed');\n return module;\n}\n\ninterface ConvertTraceAndDownloadArgs {\n kind: 'ConvertTraceAndDownload';\n trace: Blob;\n format: Format;\n truncate?: 'start'|'end';\n}\n\nfunction isConvertTraceAndDownload(msg: Args):\n msg is ConvertTraceAndDownloadArgs {\n if (msg.kind !== 'ConvertTraceAndDownload') {\n return false;\n }\n if (msg.trace === undefined) {\n throw new Error('ConvertTraceAndDownloadArgs missing trace');\n }\n if (msg.format !== 'json' && msg.format !== 'systrace') {\n throw new Error('ConvertTraceAndDownloadArgs has bad format');\n }\n return true;\n}\n\nasync function ConvertTraceAndDownload(\n trace: Blob,\n format: Format,\n truncate?: 'start'|'end'): Promise {\n const jobName = format === 'json' ? 'convert_json' : 'convert_systrace';\n updateJobStatus(jobName, ConversionJobStatus.InProgress);\n const outPath = '/trace.json';\n const args: string[] = [format];\n if (truncate !== undefined) {\n args.push('--truncate', truncate);\n }\n args.push('/fs/trace.proto', outPath);\n try {\n const module = await runTraceconv(trace, args);\n const fsNode = module.FS.lookupPath(outPath).node;\n downloadFile(fsNodeToBuffer(fsNode), `trace.${format}`);\n module.FS.unlink(outPath);\n } finally {\n updateJobStatus(jobName, ConversionJobStatus.NotRunning);\n }\n}\n\ninterface ConvertTraceAndOpenInLegacyArgs {\n kind: 'ConvertTraceAndOpenInLegacy';\n trace: Blob;\n truncate?: 'start'|'end';\n}\n\nfunction isConvertTraceAndOpenInLegacy(msg: Args):\n msg is ConvertTraceAndOpenInLegacyArgs {\n if (msg.kind !== 'ConvertTraceAndOpenInLegacy') {\n return false;\n }\n return true;\n}\n\nasync function ConvertTraceAndOpenInLegacy(\ntrace: Blob, truncate?: 'start'|'end') {\n const jobName = 'open_in_legacy';\n updateJobStatus(jobName, ConversionJobStatus.InProgress);\n const outPath = '/trace.json';\n const args: string[] = ['json'];\n if (truncate !== undefined) {\n args.push('--truncate', truncate);\n }\n args.push('/fs/trace.proto', outPath);\n try {\n const module = await runTraceconv( trace, args);\n const fsNode = module.FS.lookupPath(outPath).node;\n const data = fsNode.contents.buffer;\n const size = fsNode.usedBytes;\n const buffer = new Uint8Array(data, 0, size);\n openTraceInLegacy(buffer);\n module.FS.unlink(outPath);\n } finally {\n updateJobStatus(jobName, ConversionJobStatus.NotRunning);\n }\n}\n\ninterface ConvertTraceToPprofArgs {\n kind: 'ConvertTraceToPprof';\n trace: Blob;\n pid: number;\n ts: number;\n}\n\nfunction isConvertTraceToPprof(msg: Args): msg is ConvertTraceToPprofArgs {\n if (msg.kind !== 'ConvertTraceToPprof') {\n return false;\n }\n return true;\n}\n\nasync function ConvertTraceToPprof(\ntrace: Blob, pid: number, ts: number) {\n const jobName = 'convert_pprof';\n updateJobStatus(jobName, ConversionJobStatus.InProgress);\n const args = [\n 'profile',\n `--pid`,\n `${pid}`,\n `--timestamps`,\n `${ts}`,\n '/fs/trace.proto'\n ];\n\n try {\n const module = await runTraceconv(trace, args);\n const heapDirName =\n Object.keys(module.FS.lookupPath('/tmp/').node.contents)[0];\n const heapDirContents =\n module.FS.lookupPath(`/tmp/${heapDirName}`).node.contents;\n const heapDumpFiles = Object.keys(heapDirContents);\n for (let i = 0; i < heapDumpFiles.length; ++i) {\n const heapDump = heapDumpFiles[i];\n const fileNode =\n module.FS.lookupPath(`/tmp/${heapDirName}/${heapDump}`).node;\n const fileName = `/heap_dump.${i}.${pid}.pb`;\n downloadFile(fsNodeToBuffer(fileNode), fileName);\n }\n } finally {\n updateJobStatus(jobName, ConversionJobStatus.NotRunning);\n }\n}\n\nselfWorker.onmessage = (msg: MessageEvent) => {\n self.addEventListener('error', e => reportError(e));\n self.addEventListener('unhandledrejection', e => reportError(e));\n setErrorHandler((err: string) => forwardError(err));\n const args = msg.data as Args;\n if (isConvertTraceAndDownload(args)) {\n ConvertTraceAndDownload(args.trace, args.format, args.truncate);\n } else if (isConvertTraceAndOpenInLegacy(args)) {\n ConvertTraceAndOpenInLegacy(args.trace, args.truncate);\n } else if (isConvertTraceToPprof(args)) {\n ConvertTraceToPprof(args.trace, args.pid, args.ts);\n } else {\n throw new Error(`Unknown method call ${JSON.stringify(args)}`);\n }\n};\n"],"names":["global","version","logging_1","deferred_1","conversion_jobs_1"],"mappings":"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"} \ No newline at end of file diff --git a/deps/speedscope/LICENSE b/deps/speedscope/LICENSE new file mode 100644 index 00000000..baf3e9d9 --- /dev/null +++ b/deps/speedscope/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Jamie Wong + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/deps/speedscope/README b/deps/speedscope/README new file mode 100644 index 00000000..4d897271 --- /dev/null +++ b/deps/speedscope/README @@ -0,0 +1,2 @@ +This is a self-contained release of https://github.com/jlfwong/speedscope. +To use it, open index.html in Chrome or Firefox. diff --git a/deps/speedscope/demangle-cpp.1768f4cc.js b/deps/speedscope/demangle-cpp.1768f4cc.js new file mode 100644 index 00000000..282dbd04 --- /dev/null +++ b/deps/speedscope/demangle-cpp.1768f4cc.js @@ -0,0 +1,4 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c0&&$e.streams[2].object.output("\\n".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output("\\n".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,"void*",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p("/bin/this.program"),"i8",we)];a();for(var v=0;v>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],["i8*",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v("__cxa_demangle","string",["string","string","number","number"]);return function(r){return pi(r,"",1,0)}}();\n'; +},{}]},{},["bS28"], null) +//# sourceMappingURL=demangle-cpp.1768f4cc.js.map \ No newline at end of file diff --git a/deps/speedscope/demangle-cpp.1768f4cc.js.map b/deps/speedscope/demangle-cpp.1768f4cc.js.map new file mode 100644 index 00000000..30c55c47 --- /dev/null +++ b/deps/speedscope/demangle-cpp.1768f4cc.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/lib/demangle-cpp.ts"],"names":[],"mappings":";AAwBA,aAxBA,IAAI,EAwBJ,OAAA,eAAA,QAAA,aAAA,CAAA,OAAA,IAAA,QAAA,YAAA,EAvBA,MAAM,EAAQ,IAAI,IAIZ,SAAU,EAAY,GACtB,GAAA,EAAK,WAAW,OAAQ,CACtB,IAAA,EAAS,EAAM,IAAI,QACR,IAAX,EACF,EAAO,GAEF,IACH,EAAU,IAAI,SAAS,UAAW,EAAxB,IAGZ,EAAoB,YADpB,EAAS,EAAQ,EAAK,MAAM,KACG,EAAO,EACtC,EAAM,IAAI,EAAM,GAChB,EAAO,GAGJ,OAAA,EAIT,MAAM,EAAO","file":"demangle-cpp.1768f4cc.js","sourceRoot":"../../assets","sourcesContent":["let cppfilt: (name: string) => string\nconst cache = new Map()\n\n// This function converts a mangled C++ name such as \"__ZNK7Support6ColorFeqERKS0_\"\n// into a human-readable symbol (in this case \"Support::ColorF::==(Support::ColorF&)\")\nexport function demangleCpp(name: string): string {\n if (name.startsWith('__Z')) {\n let result = cache.get(name)\n if (result !== undefined) {\n name = result\n } else {\n if (!cppfilt) {\n cppfilt = new Function('exports', code)()\n }\n result = cppfilt(name.slice(1))\n result = result === '(null)' ? name : result\n cache.set(name, result)\n name = result\n }\n }\n return name\n}\n\n// This was taken from https://d.fuqu.jp/c++filtjs/\nconst code = `\nreturn function(){function r(r){eval.call(null,r)}function a(r){throw print(r+\":\\\\n\"+(new Error).stack),ke=!0,\"Assertion: \"+r}function e(r,e){r||a(\"Assertion failed: \"+e)}function i(r,a,i,v){function t(r,a){if(\"string\"==a){var e=Oe;return le.stackAlloc(r.length+1),A(r,e),e}return r}function f(r,a){return\"string\"==a?s(r):r}try{func=ce.Module[\"_\"+r]}catch(r){}e(func,\"Cannot call unknown function \"+r+\" (perhaps LLVM optimizations or closure removed it?)\");var _=0,n=v?v.map(function(r){return t(r,i[_++])}):[];return f(func.apply(null,n),a)}function v(r,a,e){return function(){return i(r,a,e,Array.prototype.slice.call(arguments))}}function t(r,e,i,v){switch(i=i||\"i8\",\"*\"===i[i.length-1]&&(i=\"i32\"),i){case\"i1\":Ae[r]=e;break;case\"i8\":Ae[r]=e;break;case\"i16\":ye[r>>1]=e;break;case\"i32\":Se[r>>2]=e;break;case\"i64\":Se[r>>2]=e;break;case\"float\":Ce[r>>2]=e;break;case\"double\":ze[0]=e,Se[r>>2]=xe[0],Se[r+4>>2]=xe[1];break;default:a(\"invalid type for setValue: \"+i)}}function f(r,e,i){switch(e=e||\"i8\",\"*\"===e[e.length-1]&&(e=\"i32\"),e){case\"i1\":return Ae[r];case\"i8\":return Ae[r];case\"i16\":return ye[r>>1];case\"i32\":return Se[r>>2];case\"i64\":return Se[r>>2];case\"float\":return Ce[r>>2];case\"double\":return xe[0]=Se[r>>2],xe[1]=Se[r+4>>2],ze[0];default:a(\"invalid type for setValue: \"+e)}return null}function _(r,a,e){var i,v;\"number\"==typeof r?(i=!0,v=r):(i=!1,v=r.length);var f=\"string\"==typeof a?a:null,_=[Jr,le.stackAlloc,le.staticAlloc][void 0===e?we:e](Math.max(v,f?1:a.length));if(i)return Fa(_,0,v),_;for(var s,n=0;n>12<<12}function l(){for(;Le<=Ie;)Le=o(2*Le);var r=Ae,a=new ArrayBuffer(Le);Ae=new Int8Array(a),ye=new Int16Array(a),Se=new Int32Array(a),ge=new Uint8Array(a),me=new Uint16Array(a),Me=new Uint32Array(a),Ce=new Float32Array(a),Re=new Float64Array(a),Ae.set(r)}function b(r){for(;r.length>0;){var a=r.shift(),e=a.func;\"number\"==typeof e&&(e=pe[e]),e(void 0===a.arg?null:a.arg)}}function k(){b(Ve)}function u(){b(Be),be.print()}function c(r,a){return Array.prototype.slice.call(Ae.subarray(r,r+a))}function h(r,a){for(var e=new Uint8Array(a),i=0;i255&&(v&=255),e.push(v),i+=1}return a||e.push(0),e}function E(r){for(var a=[],e=0;e255&&(i&=255),a.push(String.fromCharCode(i))}return a.join(\"\")}function A(r,a,e){for(var i=0;i255&&(v&=255),Ae[a+i]=v,i+=1}e||(Ae[a+i]=0)}function g(r,a,e,i){return r>=0?r:a<=32?2*Math.abs(1<=v&&(a<=32||r>v)&&(r=-2*v+r),r}function m(r,a,e){if(0==(0|r)|0==(0|a)|0==(0|e))var i=0;else{Se[r>>2]=0,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function S(r,a,e){if(0==(0|r)|(0|a)<0|0==(0|e))var i=0;else{Se[r>>2]=41,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function M(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=6,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function C(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=7,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function R(r,a){var e,i=0==(0|a);do if(i)var v=0;else{var e=(r+32|0)>>2,t=Se[e];if((0|t)>=(0|Se[r+36>>2])){var v=0;break}var f=(t<<2)+Se[r+28>>2]|0;Se[f>>2]=a;var _=Se[e]+1|0;Se[e]=_;var v=1}while(0);var v;return v}function T(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==95;do if(t){var f=i+2|0;if(Se[e]=f,Ae[v]<<24>>24!=90){var _=0;break}var s=O(r,a),_=s}else var _=0;while(0);var _;return _}function O(r,a){var e=r+12|0,i=Ae[Se[e>>2]];r:do if(i<<24>>24==71||i<<24>>24==84)var v=Tr(r),t=v;else{var f=Ar(r),_=0==(0|f)|0==(0|a);do if(!_){if(0!=(1&Se[r+8>>2]|0))break;var s=Me[f>>2],n=(s-25|0)>>>0<3;a:do if(n)for(var o=f;;){var o,l=Me[o+4>>2],b=Me[l>>2];if((b-25|0)>>>0>=3){var k=l,u=b;break a}var o=l}else var k=f,u=s;while(0);var u,k;if(2!=(0|u)){var t=k;break r}var c=k+8|0,h=Me[c>>2],d=(Se[h>>2]-25|0)>>>0<3;a:do if(d)for(var w=h;;){var w,p=Me[w+4>>2];if((Se[p>>2]-25|0)>>>0>=3){var E=p;break a}var w=p}else var E=h;while(0);var E;Se[c>>2]=E;var t=k;break r}while(0);var A=Ae[Se[e>>2]];if(A<<24>>24==0||A<<24>>24==69){var t=f;break}var g=Or(f),y=Sr(r,g),m=D(r,3,f,y),t=m}while(0);var t;return t}function N(r){var a,e,i=Oe;Oe+=4;var v=i,e=v>>2,a=(r+12|0)>>2,t=Me[a],f=Ae[t],_=f<<24>>24;r:do if(f<<24>>24==114||f<<24>>24==86||f<<24>>24==75){var s=I(r,v,0);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=Se[e],b=R(r,l);if(0==(0|b)){var n=0;break}var n=Se[e]}else{do{if(97==(0|_)||98==(0|_)||99==(0|_)||100==(0|_)||101==(0|_)||102==(0|_)||103==(0|_)||104==(0|_)||105==(0|_)||106==(0|_)||108==(0|_)||109==(0|_)||110==(0|_)||111==(0|_)||115==(0|_)||116==(0|_)||118==(0|_)||119==(0|_)||120==(0|_)||121==(0|_)||122==(0|_)){var k=ai+20*(_-97)|0,u=P(r,k);Se[e]=u;var c=r+48|0,h=Se[c>>2]+Se[Se[u+4>>2]+4>>2]|0;Se[c>>2]=h;var d=Se[a]+1|0;Se[a]=d;var n=u;break r}if(117==(0|_)){Se[a]=t+1|0;var w=L(r),p=D(r,34,w,0);Se[e]=p;var E=p}else if(70==(0|_)){var A=F(r);Se[e]=A;var E=A}else if(48==(0|_)||49==(0|_)||50==(0|_)||51==(0|_)||52==(0|_)||53==(0|_)||54==(0|_)||55==(0|_)||56==(0|_)||57==(0|_)||78==(0|_)||90==(0|_)){var g=X(r);Se[e]=g;var E=g}else if(65==(0|_)){var y=j(r);Se[e]=y;var E=y}else if(77==(0|_)){var m=U(r);Se[e]=m;var E=m}else if(84==(0|_)){var S=x(r);if(Se[e]=S,Ae[Se[a]]<<24>>24!=73){var E=S;break}var M=R(r,S);if(0==(0|M)){var n=0;break r}var C=Se[e],T=z(r),O=D(r,4,C,T);Se[e]=O;var E=O}else if(83==(0|_)){var B=ge[t+1|0];if((B-48&255&255)<10|B<<24>>24==95|(B-65&255&255)<26){var H=V(r,0);if(Se[e]=H,Ae[Se[a]]<<24>>24!=73){var n=H;break r}var K=z(r),Y=D(r,4,H,K);Se[e]=Y;var E=Y}else{var G=X(r);if(Se[e]=G,0==(0|G)){var E=0;break}if(21==(0|Se[G>>2])){var n=G;break r}var E=G}}else if(80==(0|_)){Se[a]=t+1|0;var W=N(r),Z=D(r,29,W,0);Se[e]=Z;var E=Z}else if(82==(0|_)){Se[a]=t+1|0;var Q=N(r),q=D(r,30,Q,0);Se[e]=q;var E=q}else if(67==(0|_)){Se[a]=t+1|0;var $=N(r),J=D(r,31,$,0);Se[e]=J;var E=J}else if(71==(0|_)){Se[a]=t+1|0;var rr=N(r),ar=D(r,32,rr,0);Se[e]=ar;var E=ar}else{if(85!=(0|_)){var n=0;break r}Se[a]=t+1|0;var er=L(r);Se[e]=er;var ir=N(r),vr=Se[e],tr=D(r,28,ir,vr);Se[e]=tr;var E=tr}}while(0);var E,fr=R(r,E);if(0==(0|fr)){var n=0;break}var n=Se[e]}while(0);var n;return Oe=i,n}function I(r,a,e){for(var i,v=r+12|0,t=0!=(0|e),f=t?25:22,i=(r+48|0)>>2,_=t?26:23,s=t?27:24,n=a;;){var n,o=Se[v>>2],l=Ae[o];if(l<<24>>24!=114&&l<<24>>24!=86&&l<<24>>24!=75){var b=n;break}var k=o+1|0;if(Se[v>>2]=k,l<<24>>24==114){var u=Se[i]+9|0;Se[i]=u;var c=f}else if(l<<24>>24==86){var h=Se[i]+9|0;Se[i]=h;var c=_}else{var d=Se[i]+6|0;Se[i]=d;var c=s}var c,w=D(r,c,0,0);if(Se[n>>2]=w,0==(0|w)){var b=0;break}var n=w+4|0}var b;return b}function P(r,a){var e=0==(0|a);do if(e)var i=0;else{var v=J(r);if(0==(0|v)){var i=0;break}Se[v>>2]=33,Se[v+4>>2]=a;var i=v}while(0);var i;return i}function D(r,a,e,i){var v,t;do{if(1==(0|a)||2==(0|a)||3==(0|a)||4==(0|a)||10==(0|a)||28==(0|a)||37==(0|a)||43==(0|a)||44==(0|a)||45==(0|a)||46==(0|a)||47==(0|a)||48==(0|a)||49==(0|a)||50==(0|a)){if(0==(0|e)|0==(0|i)){var f=0;t=7;break}t=5;break}if(8==(0|a)||9==(0|a)||11==(0|a)||12==(0|a)||13==(0|a)||14==(0|a)||15==(0|a)||16==(0|a)||17==(0|a)||18==(0|a)||19==(0|a)||20==(0|a)||29==(0|a)||30==(0|a)||31==(0|a)||32==(0|a)||34==(0|a)||38==(0|a)||39==(0|a)||42==(0|a)){if(0==(0|e)){var f=0;t=7;break}t=5;break}if(36==(0|a)){if(0==(0|i)){var f=0;t=7;break}t=5;break}if(35==(0|a)||22==(0|a)||23==(0|a)||24==(0|a)||25==(0|a)||26==(0|a)||27==(0|a))t=5;else{var f=0;t=7}}while(0);do if(5==t){var _=J(r),v=_>>2;if(0==(0|_)){var f=0;break}Se[v]=a,Se[v+1]=e,Se[v+2]=i;var f=_}while(0);var f;return f}function L(r){var a=sr(r);if((0|a)<1)var e=0;else{var i=Rr(r,a);Se[r+44>>2]=i;var e=i}var e;return e}function F(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;if(Se[a]=i,Ae[e]<<24>>24==70){if(Ae[i]<<24>>24==89){var v=e+2|0;Se[a]=v}var t=Sr(r,1),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else var n=0;var n;return n}function X(r){var a=Ar(r);return a}function j(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==65;do if(v){var t=Ae[i];if(t<<24>>24==95)var f=0;else if((t-48&255&255)<10){for(var _=i;;){var _,s=_+1|0;if(Se[a]=s,(Ae[s]-48&255&255)>=10)break;var _=s}var n=s-i|0,o=lr(r,i,n);if(0==(0|o)){var l=0;break}var f=o}else{var b=nr(r);if(0==(0|b)){var l=0;break}var f=b}var f,k=Se[a],u=k+1|0;if(Se[a]=u,Ae[k]<<24>>24!=95){var l=0;break}var c=N(r),h=D(r,36,f,c),l=h}else var l=0;while(0);var l;return l}function U(r){var a=Oe;Oe+=4;var e=a,i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24==77;r:do if(f){var _=N(r),s=I(r,e,1);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=(0|s)==(0|e);do if(!l){if(35==(0|Se[o>>2]))break;var b=Se[e>>2],k=R(r,b);if(0==(0|k)){var n=0;break r}}while(0);var u=Se[e>>2],c=D(r,37,_,u),n=c}else var n=0;while(0);var n;return Oe=a,n}function x(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==84;do if(v){if(Ae[i]<<24>>24==95)var t=0,f=i;else{var _=sr(r);if((0|_)<0){var s=0;break}var t=_+1|0,f=Se[a]}var f,t;if(Se[a]=f+1|0,Ae[f]<<24>>24!=95){var s=0;break}var n=r+40|0,o=Se[n>>2]+1|0;Se[n>>2]=o;var l=Er(r,t),s=l}else var s=0;while(0);var s;return s}function z(r){var a,e=Oe;Oe+=4;var i=e,v=r+44|0,t=Se[v>>2],a=(r+12|0)>>2,f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==73;r:do if(s){Se[i>>2]=0;for(var n=i;;){var n,o=_r(r);if(0==(0|o)){var l=0;break r}var b=D(r,39,o,0);if(Se[n>>2]=b,0==(0|b)){var l=0;break r}var k=Se[a];if(Ae[k]<<24>>24==69)break;var n=b+8|0}var u=k+1|0;Se[a]=u,Se[v>>2]=t;var l=Se[i>>2]}else var l=0;while(0);var l;return Oe=e,l}function V(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==83;r:do if(t){var f=i+2|0;Se[e]=f;var _=ge[v];if(_<<24>>24==95)var s=0;else{if(!((_-48&255&255)<10|(_-65&255&255)<26)){var n=8&Se[r+8>>2],o=n>>>3,l=0!=(0|n)|0==(0|a);do if(l)var b=o;else{if((Ae[f]-67&255&255)>=2){var b=o;break}var b=1}while(0);for(var b,k=0|ei;;){var k;if(k>>>0>=(ei+196|0)>>>0){var u=0;break r}if(_<<24>>24==Ae[0|k]<<24>>24)break;var k=k+28|0}var c=Se[k+20>>2];if(0!=(0|c)){var h=Se[k+24>>2],d=fr(r,c,h);Se[r+44>>2]=d}if(0==(0|b))var w=k+8|0,p=k+4|0;else var w=k+16|0,p=k+12|0;var p,w,E=Se[w>>2],A=Se[p>>2],g=r+48|0,y=Se[g>>2]+E|0;Se[g>>2]=y;var m=fr(r,A,E),u=m;break}for(var S=_,M=0,C=f;;){var C,M,S;if((S-48&255&255)<10)var R=36*M-48|0;else{if((S-65&255&255)>=26){var u=0;break r}var R=36*M-55|0}var R,T=(S<<24>>24)+R|0;if((0|T)<0){var u=0;break r}var O=C+1|0;Se[e]=O;var N=ge[C];if(N<<24>>24==95)break;var S=N,M=T,C=O}var s=T+1|0}var s;if((0|s)>=(0|Se[r+32>>2])){var u=0;break}var I=r+40|0,P=Se[I>>2]+1|0;Se[I>>2]=P;var u=Se[Se[r+28>>2]+(s<<2)>>2]}else var u=0;while(0);var u;return u}function B(r,a,e,i){var v,t,f,_,s=Oe;Oe+=28;var n,o=s,_=o>>2;Se[_]=r;var l=e+1|0,f=(o+12|0)>>2;Se[f]=l;var b=Jr(l),t=(o+4|0)>>2;if(Se[t]=b,0==(0|b))var k=0,u=1;else{var v=(o+8|0)>>2;Se[v]=0,Se[_+4]=0,Se[_+5]=0;var c=o+24|0;Se[c>>2]=0,H(o,a);var h=Me[t],d=0==(0|h);do{if(!d){var w=Me[v];if(w>>>0>=Me[f]>>>0){n=5;break}Se[v]=w+1|0,Ae[h+w|0]=0,n=6;break}n=5}while(0);5==n&&Y(o,0);var p=Se[t],E=0==(0|p)?Se[c>>2]:Se[f],k=p,u=E}var u,k;return Se[i>>2]=u,Oe=s,k}function H(r,a){var e,i,v,t,f,_,s,n,o,l,b,k,u,c,h,d,w,p,E,A,g,y,m,S,M,C,R,T,O,N,I,P,D,L,F,X,j,U,x,z,V,B,K,G,W,J,vr,tr,fr,_r,sr,nr,or,lr,br,kr,ur,cr,hr,dr,wr,pr=a>>2,Er=r>>2,Ar=Oe;Oe+=184;var gr,yr=Ar,wr=yr>>2,mr=Ar+64,dr=mr>>2,Sr=Ar+72,Mr=Ar+88,Cr=Ar+104,hr=Cr>>2,Rr=Ar+168,Tr=0==(0|a);r:do if(Tr)Z(r);else{var cr=(r+4|0)>>2,Or=Me[cr];if(0==(0|Or))break;var Nr=0|a,Ir=Me[Nr>>2];a:do{if(0==(0|Ir)){if(0!=(4&Se[Er]|0)){var Pr=Se[pr+1],Dr=Se[pr+2];q(r,Pr,Dr);break r}var ur=(r+8|0)>>2,Lr=Me[ur],Fr=a+8|0,Xr=Me[Fr>>2];if((Xr+Lr|0)>>>0>Me[Er+3]>>>0){var jr=Se[pr+1];Q(r,jr,Xr);break r}var Ur=Or+Lr|0,xr=Se[pr+1];Pa(Ur,xr,Xr,1);var zr=Se[ur]+Se[Fr>>2]|0;Se[ur]=zr;break r}if(1==(0|Ir)||2==(0|Ir)){var Vr=Se[pr+1];H(r,Vr);var Br=0==(4&Se[Er]|0),Hr=Me[cr],Kr=0!=(0|Hr);e:do if(Br){do if(Kr){var kr=(r+8|0)>>2,Yr=Me[kr];if((Yr+2|0)>>>0>Me[Er+3]>>>0)break;var Gr=Hr+Yr|0;oe=14906,Ae[Gr]=255&oe,oe>>=8,Ae[Gr+1]=255&oe;var Wr=Se[kr]+2|0;Se[kr]=Wr;break e}while(0);Q(r,0|He.__str120,2)}else{do if(Kr){var Zr=r+8|0,Qr=Me[Zr>>2];if(Qr>>>0>=Me[Er+3]>>>0)break;Se[Zr>>2]=Qr+1|0,Ae[Hr+Qr|0]=46;break e}while(0);Y(r,46)}while(0);var qr=Se[pr+2];H(r,qr);break r}if(3==(0|Ir)){for(var br=(r+20|0)>>2,$r=Me[br],lr=(r+16|0)>>2,Jr=a,ra=0,aa=$r;;){var aa,ra,Jr,ea=Me[Jr+4>>2];if(0==(0|ea)){var ia=ra,va=0;gr=33;break}if(ra>>>0>3){Z(r);break r}var ta=(ra<<4)+yr|0;Se[ta>>2]=aa,Se[br]=ta,Se[((ra<<4)+4>>2)+wr]=ea,Se[((ra<<4)+8>>2)+wr]=0;var fa=Me[lr];Se[((ra<<4)+12>>2)+wr]=fa;var _a=ra+1|0,sa=0|ea,na=Me[sa>>2];if((na-25|0)>>>0>=3){gr=25;break}var Jr=ea,ra=_a,aa=ta}e:do if(25==gr){if(4==(0|na)){Se[dr]=fa,Se[lr]=mr,Se[dr+1]=ea;var oa=Se[sa>>2],la=mr}else var oa=na,la=fa;var la,oa;if(2!=(0|oa)){var ia=_a,va=sa;break}for(var ba=_a,ka=ea+8|0;;){var ka,ba,ua=Me[ka>>2];if((Se[ua>>2]-25|0)>>>0>=3){var ia=ba,va=sa;break e}if(ba>>>0>3)break;var ca=(ba<<4)+yr|0,ha=ba-1|0,da=(ha<<4)+yr|0,or=ca>>2,nr=da>>2;Se[or]=Se[nr],Se[or+1]=Se[nr+1],Se[or+2]=Se[nr+2],Se[or+3]=Se[nr+3],Se[ca>>2]=da,Se[br]=ca,Se[((ha<<4)+4>>2)+wr]=ua,Se[((ha<<4)+8>>2)+wr]=0,Se[((ha<<4)+12>>2)+wr]=la;var ba=ba+1|0,ka=ua+4|0}Z(r);break r}while(0);var va,ia,wa=Se[pr+2];if(H(r,wa),4==(0|Se[va>>2])){var pa=Se[dr];Se[lr]=pa}var Ea=0==(0|ia);e:do if(!Ea)for(var Aa=r+8|0,ga=r+12|0,ya=ia;;){var ya,ma=ya-1|0;if(0==(0|Se[((ma<<4)+8>>2)+wr])){var Sa=Me[cr],Ma=0==(0|Sa);do{if(!Ma){var Ca=Me[Aa>>2];if(Ca>>>0>=Me[ga>>2]>>>0){gr=41;break}Se[Aa>>2]=Ca+1|0,Ae[Sa+Ca|0]=32,gr=42;break}gr=41}while(0);41==gr&&Y(r,32);var Ra=Se[((ma<<4)+4>>2)+wr];$(r,Ra)}if(0==(0|ma))break e;var ya=ma}while(0);Se[br]=$r;break r}if(4==(0|Ir)){var sr=(r+20|0)>>2,Ta=Se[sr];Se[sr]=0;var Oa=Se[pr+1];H(r,Oa);var Na=Me[cr],Ia=0==(0|Na);do{if(!Ia){var _r=(r+8|0)>>2,Da=Me[_r],La=0==(0|Da);do if(!La){if(Ae[Na+(Da-1)|0]<<24>>24!=60)break;Da>>>0>>0?(Se[_r]=Da+1|0,Ae[Na+Da|0]=32):Y(r,32)}while(0);var Fa=Me[cr];if(0==(0|Fa)){gr=54;break}var Xa=Me[_r];if(Xa>>>0>=Me[Er+3]>>>0){gr=54;break}Se[_r]=Xa+1|0,Ae[Fa+Xa|0]=60,gr=55;break}gr=54}while(0);54==gr&&Y(r,60);var ja=Se[pr+2];H(r,ja);var Ua=Me[cr],xa=0==(0|Ua);do{if(!xa){var fr=(r+8|0)>>2,za=Me[fr],Va=0==(0|za);do if(!Va){if(Ae[Ua+(za-1)|0]<<24>>24!=62)break;za>>>0>>0?(Se[fr]=za+1|0,Ae[Ua+za|0]=32):Y(r,32)}while(0);var Ba=Me[cr];if(0==(0|Ba)){gr=64;break}var Ha=Me[fr];if(Ha>>>0>=Me[Er+3]>>>0){gr=64;break}Se[fr]=Ha+1|0,Ae[Ba+Ha|0]=62,gr=65;break}gr=64}while(0);64==gr&&Y(r,62),Se[sr]=Ta;break r}if(5==(0|Ir)){var tr=(r+16|0)>>2,Ka=Me[tr];if(0==(0|Ka)){Z(r);break r}for(var Ya=Se[pr+1],Ga=Se[Ka+4>>2];;){var Ga,Ya,Wa=Se[Ga+8>>2];if(0==(0|Wa))break;if(39!=(0|Se[Wa>>2])){Z(r);break r}if((0|Ya)<1){if(0!=(0|Ya))break;var Za=Se[Ka>>2];Se[tr]=Za;var Qa=Se[Wa+4>>2];H(r,Qa),Se[tr]=Ka;break r}var Ya=Ya-1|0,Ga=Wa}Z(r);break r}if(6==(0|Ir)){var qa=Se[pr+2];H(r,qa);break r}if(7==(0|Ir)){var $a=r+8|0,Ja=Me[$a>>2];Ja>>>0>>0?(Se[$a>>2]=Ja+1|0,Ae[Or+Ja|0]=126):Y(r,126);var re=Se[pr+2];H(r,re);break r}if(8==(0|Ir)){var vr=(r+8|0)>>2,ae=Me[vr];if((ae+11|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str121,11);else{for(var ee=Or+ae|0,ie=0|He.__str121,ve=ee,te=ie+11;ie>2,se=Me[J];if((se+8|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str122,8);else{var ne=Or+se|0,le=0|ne;oe=542397526,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=ne+4|0;oe=544370534,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var ke=Se[J]+8|0;Se[J]=ke}var ue=Se[pr+1];H(r,ue);break r}if(10==(0|Ir)){var W=(r+8|0)>>2,ce=Me[W],he=r+12|0;if((ce+24|0)>>>0>Me[he>>2]>>>0)Q(r,0|He.__str123,24);else{var de=Or+ce|0;Pa(de,0|He.__str123,24,1);var we=Se[W]+24|0;Se[W]=we}var pe=Se[pr+1];H(r,pe);var Ee=Me[cr],ge=0==(0|Ee);do{if(!ge){var ye=Me[W];if((ye+4|0)>>>0>Me[he>>2]>>>0){gr=96;break}var me=Ee+ye|0;oe=762210605,Ae[me]=255&oe,oe>>=8,Ae[me+1]=255&oe,oe>>=8,Ae[me+2]=255&oe,oe>>=8,Ae[me+3]=255&oe;var Ce=Se[W]+4|0;Se[W]=Ce,gr=97;break}gr=96}while(0);96==gr&&Q(r,0|He.__str124,4);var Re=Se[pr+2];H(r,Re);break r}if(11==(0|Ir)){var G=(r+8|0)>>2,Te=Me[G];if((Te+13|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str125,13);else{for(var Ne=Or+Te|0,ie=0|He.__str125,ve=Ne,te=ie+13;ie>2,De=Me[K];if((De+18|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str126,18);else{for(var Le=Or+De|0,ie=0|He.__str126,ve=Le,te=ie+18;ie>2,je=Me[B];if((je+16|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str127,16);else{for(var Ue=Or+je|0,ie=0|He.__str127,ve=Ue,te=ie+16;ie>2,Ve=Me[V];if((Ve+21|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str128,21);else{var Be=Or+Ve|0;Pa(Be,0|He.__str128,21,1);var Ke=Se[V]+21|0;Se[V]=Ke}var Ye=Se[pr+1];H(r,Ye);break r}if(15==(0|Ir)){var z=(r+8|0)>>2,Ge=Me[z];if((Ge+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str129,17);else{for(var We=Or+Ge|0,ie=0|He.__str129,ve=We,te=ie+17;ie>2,qe=Me[x];if((qe+26|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str130,26);else{var $e=Or+qe|0;Pa($e,0|He.__str130,26,1);var Je=Se[x]+26|0;Se[x]=Je}var ri=Se[pr+1];H(r,ri);break r}if(17==(0|Ir)){var U=(r+8|0)>>2,ai=Me[U];if((ai+15|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str131,15);else{for(var ei=Or+ai|0,ie=0|He.__str131,ve=ei,te=ie+15;ie>2,ti=Me[j];if((ti+19|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str132,19);else{for(var fi=Or+ti|0,ie=0|He.__str132,ve=fi,te=ie+19;ie>2,ni=Me[X];if((ni+24|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str133,24);else{var oi=Or+ni|0;Pa(oi,0|He.__str133,24,1);var li=Se[X]+24|0;Se[X]=li}var bi=Se[pr+1];H(r,bi);break r}if(20==(0|Ir)){var F=(r+8|0)>>2,ki=Me[F];if((ki+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str134,17);else{for(var ui=Or+ki|0,ie=0|He.__str134,ve=ui,te=ie+17;ie>2,di=Me[L],wi=a+8|0,pi=Me[wi>>2];if((pi+di|0)>>>0>Me[Er+3]>>>0){var Ei=Se[pr+1];Q(r,Ei,pi);break r}var Ai=Or+di|0,gi=Se[pr+1];Pa(Ai,gi,pi,1);var yi=Se[L]+Se[wi>>2]|0;Se[L]=yi;break r}if(22==(0|Ir)||23==(0|Ir)||24==(0|Ir)){for(var mi=r+20|0;;){var mi,Si=Me[mi>>2];if(0==(0|Si))break a;if(0==(0|Se[Si+8>>2])){var Mi=Me[Se[Si+4>>2]>>2];if((Mi-22|0)>>>0>=3)break a;if((0|Mi)==(0|Ir))break}var mi=0|Si}var Ci=Se[pr+1];H(r,Ci);break r}if(25!=(0|Ir)&&26!=(0|Ir)&&27!=(0|Ir)&&28!=(0|Ir)&&29!=(0|Ir)&&30!=(0|Ir)&&31!=(0|Ir)&&32!=(0|Ir)){if(33==(0|Ir)){var D=(r+8|0)>>2,Ri=Me[D],P=(a+4|0)>>2,I=Me[P]>>2;if(0==(4&Se[Er]|0)){var Ti=Me[I+1];if((Ti+Ri|0)>>>0>Me[Er+3]>>>0){var Oi=Se[I];Q(r,Oi,Ti);break r}var Ni=Or+Ri|0,Ii=Se[I];Pa(Ni,Ii,Ti,1);var Pi=Se[D]+Se[Se[P]+4>>2]|0;Se[D]=Pi;break r}var Di=Me[I+3];if((Di+Ri|0)>>>0>Me[Er+3]>>>0){var Li=Se[I+2];Q(r,Li,Di);break r}var Fi=Or+Ri|0,Xi=Se[I+2];Pa(Fi,Xi,Di,1);var ji=Se[D]+Se[Se[P]+12>>2]|0;Se[D]=ji;break r}if(34==(0|Ir)){var Ui=Se[pr+1];H(r,Ui);break r}if(35==(0|Ir)){var N=(0|r)>>2;if(0!=(32&Se[N]|0)){var xi=Se[Er+5];rr(r,a,xi)}var zi=a+4|0,Vi=0==(0|Se[zi>>2]);e:do if(!Vi){var O=(r+20|0)>>2,Bi=Se[O],Hi=0|Mr;Se[Hi>>2]=Bi,Se[O]=Mr,Se[Mr+4>>2]=a;var Ki=Mr+8|0;Se[Ki>>2]=0;var Yi=Se[Er+4];Se[Mr+12>>2]=Yi;var Gi=Se[zi>>2];H(r,Gi);var Wi=Se[Hi>>2];if(Se[O]=Wi,0!=(0|Se[Ki>>2]))break r;if(0!=(32&Se[N]|0))break;var Zi=Me[cr],Qi=0==(0|Zi);do if(!Qi){var qi=r+8|0,$i=Me[qi>>2];if($i>>>0>=Me[Er+3]>>>0)break;Se[qi>>2]=$i+1|0,Ae[Zi+$i|0]=32;break e}while(0);Y(r,32)}while(0);if(0!=(32&Se[N]|0))break r;var Ji=Se[Er+5];rr(r,a,Ji);break r}if(36==(0|Ir)){var T=(r+20|0)>>2,rv=Me[T],av=0|Cr;Se[hr]=rv,Se[T]=av,Se[hr+1]=a;var ev=Cr+8|0;Se[ev>>2]=0;var iv=Se[Er+4];Se[hr+3]=iv;for(var vv=rv,tv=1;;){var tv,vv;if(0==(0|vv))break;if((Se[Se[vv+4>>2]>>2]-22|0)>>>0>=3)break;var fv=vv+8|0;if(0==(0|Se[fv>>2])){if(tv>>>0>3){Z(r);break r}var _v=(tv<<4)+Cr|0,R=_v>>2,C=vv>>2;Se[R]=Se[C],Se[R+1]=Se[C+1],Se[R+2]=Se[C+2],Se[R+3]=Se[C+3];var sv=Se[T];Se[_v>>2]=sv,Se[T]=_v,Se[fv>>2]=1;var nv=tv+1|0}else var nv=tv;var nv,vv=Se[vv>>2],tv=nv}var ov=Se[pr+2];if(H(r,ov),Se[T]=rv,0!=(0|Se[ev>>2]))break r;if(tv>>>0>1){for(var lv=tv;;){var lv,bv=lv-1|0,kv=Se[((bv<<4)+4>>2)+hr];if($(r,kv),bv>>>0<=1)break;var lv=bv}var uv=Se[T]}else var uv=rv;var uv;ar(r,a,uv);break r}if(37==(0|Ir)){var M=(r+20|0)>>2,cv=Se[M],hv=0|Rr;Se[hv>>2]=cv,Se[M]=Rr,Se[Rr+4>>2]=a;var dv=Rr+8|0;Se[dv>>2]=0;var wv=Se[Er+4];Se[Rr+12>>2]=wv;var pv=a+4|0,Ev=Se[pr+2];H(r,Ev);var Av=0==(0|Se[dv>>2]);e:do if(Av){var gv=Me[cr],yv=0==(0|gv);do{if(!yv){var mv=r+8|0,Sv=Me[mv>>2];if(Sv>>>0>=Me[Er+3]>>>0){gr=187;break}Se[mv>>2]=Sv+1|0,Ae[gv+Sv|0]=32,gr=188;break}gr=187}while(0);187==gr&&Y(r,32);var Mv=Se[pv>>2];H(r,Mv);var Cv=Me[cr],Rv=0==(0|Cv);do if(!Rv){var S=(r+8|0)>>2,Tv=Me[S];if((Tv+3|0)>>>0>Me[Er+3]>>>0)break;var Ov=Cv+Tv|0;Ae[Ov]=Ae[0|He.__str135],Ae[Ov+1]=Ae[(0|He.__str135)+1],Ae[Ov+2]=Ae[(0|He.__str135)+2];var Nv=Se[S]+3|0;Se[S]=Nv;break e}while(0);Q(r,0|He.__str135,3)}while(0);var Iv=Se[hv>>2];Se[M]=Iv;break r}if(38==(0|Ir)||39==(0|Ir)){var Pv=Se[pr+1];H(r,Pv);var Dv=a+8|0;if(0==(0|Se[Dv>>2]))break r;var Lv=Me[cr],Fv=0==(0|Lv);do{if(!Fv){var m=(r+8|0)>>2,Xv=Me[m];if((Xv+2|0)>>>0>Me[Er+3]>>>0){gr=197;break}var jv=Lv+Xv|0;oe=8236,Ae[jv]=255&oe,oe>>=8,Ae[jv+1]=255&oe;var Uv=Se[m]+2|0;Se[m]=Uv,gr=198;break}gr=197}while(0);197==gr&&Q(r,0|He.__str136,2);var xv=Se[Dv>>2];H(r,xv);break r}if(40==(0|Ir)){var y=(r+8|0)>>2,zv=Me[y],g=(r+12|0)>>2;if((zv+8|0)>>>0>Me[g]>>>0)Q(r,0|He.__str137,8);else{var Vv=Or+zv|0,le=0|Vv;oe=1919250543,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=Vv+4|0;oe=1919906913,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var Bv=Se[y]+8|0;Se[y]=Bv}var A=(a+4|0)>>2,Hv=(Ae[Se[Se[A]+4>>2]]-97&255&255)<26;e:do if(Hv){var Kv=Me[cr],Yv=0==(0|Kv);do if(!Yv){var Gv=Me[y];if(Gv>>>0>=Me[g]>>>0)break;Se[y]=Gv+1|0,Ae[Kv+Gv|0]=32;break e}while(0);Y(r,32)}while(0);var Wv=Me[cr],Zv=0==(0|Wv);do{if(!Zv){var Qv=Me[y],qv=Me[A],$v=Me[qv+8>>2];if(($v+Qv|0)>>>0>Me[g]>>>0){var Jv=qv,rt=$v;break}var at=Wv+Qv|0,et=Se[qv+4>>2];Pa(at,et,$v,1);var it=Se[y]+Se[Se[A]+8>>2]|0;Se[y]=it;break r}var vt=Me[A],Jv=vt,rt=Se[vt+8>>2]}while(0);var rt,Jv,tt=Se[Jv+4>>2];Q(r,tt,rt);break r}if(41==(0|Ir)){var E=(r+8|0)>>2,ft=Me[E];if((ft+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var _t=Or+ft|0,ie=0|He.__str10180,ve=_t,te=ie+9;ie>2,ot=Me[p];if((ot+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var lt=Or+ot|0,ie=0|He.__str10180,ve=lt,te=ie+9;ie>2],ct=42==(0|Se[ut>>2]);e:do if(ct){var w=(r+8|0)>>2,ht=Me[w],dt=r+12|0;ht>>>0>2]>>>0?(Se[w]=ht+1|0,Ae[Or+ht|0]=40):Y(r,40);var wt=Se[kt>>2];er(r,wt);var pt=Me[cr],Et=0==(0|pt);do if(!Et){var At=Me[w];if(At>>>0>=Me[dt>>2]>>>0)break;Se[w]=At+1|0,Ae[pt+At|0]=41;break e}while(0);Y(r,41)}else ir(r,ut);while(0);var gt=Me[cr],yt=0==(0|gt);do{if(!yt){var mt=r+8|0,St=Me[mt>>2];if(St>>>0>=Me[Er+3]>>>0){gr=232;break}Se[mt>>2]=St+1|0,Ae[gt+St|0]=40,gr=233;break}gr=232}while(0);232==gr&&Y(r,40);var Mt=Se[pr+2];H(r,Mt);var Ct=Me[cr],Rt=0==(0|Ct);do if(!Rt){var Tt=r+8|0,Ot=Me[Tt>>2];if(Ot>>>0>=Me[Er+3]>>>0)break;Se[Tt>>2]=Ot+1|0,Ae[Ct+Ot|0]=41;break r}while(0);Y(r,41);break r}if(44==(0|Ir)){var d=(a+8|0)>>2;if(45==(0|Se[Se[d]>>2])){var h=(a+4|0)>>2,Nt=Se[h],It=40==(0|Se[Nt>>2]);do if(It){var Pt=Se[Nt+4>>2];if(1!=(0|Se[Pt+8>>2]))break;if(Ae[Se[Pt+4>>2]]<<24>>24!=62)break;var Dt=r+8|0,Lt=Me[Dt>>2];Lt>>>0>>0?(Se[Dt>>2]=Lt+1|0,Ae[Or+Lt|0]=40):Y(r,40)}while(0);var Ft=Me[cr],Xt=0==(0|Ft);do{if(!Xt){var jt=r+8|0,Ut=Me[jt>>2];if(Ut>>>0>=Me[Er+3]>>>0){gr=248;break}Se[jt>>2]=Ut+1|0,Ae[Ft+Ut|0]=40,gr=249;break}gr=248}while(0);248==gr&&Y(r,40);var xt=Se[Se[d]+4>>2];H(r,xt);var zt=Me[cr],Vt=0==(0|zt);do{if(!Vt){var c=(r+8|0)>>2,Bt=Me[c];if((Bt+2|0)>>>0>Me[Er+3]>>>0){gr=252;break}var Ht=zt+Bt|0;oe=8233,Ae[Ht]=255&oe,oe>>=8,Ae[Ht+1]=255&oe;var Kt=Se[c]+2|0;Se[c]=Kt,gr=253;break}gr=252}while(0);252==gr&&Q(r,0|He.__str139,2);var Yt=Se[h];ir(r,Yt);var Gt=Me[cr],Wt=0==(0|Gt);do{if(!Wt){var u=(r+8|0)>>2,Zt=Me[u];if((Zt+2|0)>>>0>Me[Er+3]>>>0){gr=256;break}var Qt=Gt+Zt|0;oe=10272,Ae[Qt]=255&oe,oe>>=8,Ae[Qt+1]=255&oe;var qt=Se[u]+2|0;Se[u]=qt,gr=257;break}gr=256}while(0);256==gr&&Q(r,0|He.__str140,2);var $t=Se[Se[d]+8>>2];H(r,$t);var Jt=Me[cr],rf=0==(0|Jt);do{if(!rf){var af=r+8|0,ef=Me[af>>2];if(ef>>>0>=Me[Er+3]>>>0){gr=260;break}Se[af>>2]=ef+1|0,Ae[Jt+ef|0]=41,gr=261;break}gr=260}while(0);260==gr&&Y(r,41);var vf=Se[h];if(40!=(0|Se[vf>>2]))break r;var tf=Se[vf+4>>2];if(1!=(0|Se[tf+8>>2]))break r;if(Ae[Se[tf+4>>2]]<<24>>24!=62)break r;var ff=Me[cr],_f=0==(0|ff);do if(!_f){var sf=r+8|0,nf=Me[sf>>2];if(nf>>>0>=Me[Er+3]>>>0)break;Se[sf>>2]=nf+1|0,Ae[ff+nf|0]=41;break r}while(0);Y(r,41);break r}Z(r);break r}if(45==(0|Ir)){Z(r);break r}if(46==(0|Ir)){var of=a+4|0,k=(a+8|0)>>2,lf=Se[k],bf=47==(0|Se[lf>>2]);do if(bf){if(48!=(0|Se[Se[lf+8>>2]>>2]))break;var b=(r+8|0)>>2,kf=Me[b],l=(r+12|0)>>2;kf>>>0>>0?(Se[b]=kf+1|0,Ae[Or+kf|0]=40):Y(r,40);var uf=Se[Se[k]+4>>2];H(r,uf);var cf=Me[cr],hf=0==(0|cf);do{if(!hf){var df=Me[b];if((df+2|0)>>>0>Me[l]>>>0){gr=278;break}var wf=cf+df|0;oe=8233,Ae[wf]=255&oe,oe>>=8,Ae[wf+1]=255&oe;var pf=Se[b]+2|0;Se[b]=pf,gr=279;break}gr=278}while(0);278==gr&&Q(r,0|He.__str139,2);var Ef=Se[of>>2];ir(r,Ef);var Af=Me[cr],gf=0==(0|Af);do{if(!gf){var yf=Me[b];if((yf+2|0)>>>0>Me[l]>>>0){gr=282;break}var mf=Af+yf|0;oe=10272,Ae[mf]=255&oe,oe>>=8,Ae[mf+1]=255&oe;var Sf=Se[b]+2|0;Se[b]=Sf,gr=283;break}gr=282}while(0);282==gr&&Q(r,0|He.__str140,2);var Mf=Se[Se[Se[k]+8>>2]+4>>2];H(r,Mf);var Cf=Me[cr],Rf=0==(0|Cf);do{if(!Rf){var Tf=Me[b];if((Tf+5|0)>>>0>Me[l]>>>0){gr=286;break}var Of=Cf+Tf|0;Ae[Of]=Ae[0|He.__str141],Ae[Of+1]=Ae[(0|He.__str141)+1],Ae[Of+2]=Ae[(0|He.__str141)+2],Ae[Of+3]=Ae[(0|He.__str141)+3],Ae[Of+4]=Ae[(0|He.__str141)+4];var Nf=Se[b]+5|0;Se[b]=Nf,gr=287;break}gr=286}while(0);286==gr&&Q(r,0|He.__str141,5);var If=Se[Se[Se[k]+8>>2]+8>>2];H(r,If);var Pf=Me[cr],Df=0==(0|Pf);do if(!Df){var Lf=Me[b];if(Lf>>>0>=Me[l]>>>0)break;Se[b]=Lf+1|0,Ae[Pf+Lf|0]=41;break r}while(0);Y(r,41);break r}while(0);Z(r);break r}if(47==(0|Ir)||48==(0|Ir)){Z(r);break r}if(49==(0|Ir)||50==(0|Ir)){var Ff=a+4|0,Xf=Se[Ff>>2],jf=33==(0|Se[Xf>>2]);do{if(jf){var Uf=Me[Se[Xf+4>>2]+16>>2];if(1==(0|Uf)||2==(0|Uf)||3==(0|Uf)||4==(0|Uf)||5==(0|Uf)||6==(0|Uf)){var xf=a+8|0;if(0!=(0|Se[Se[xf>>2]>>2])){var zf=Uf;break}if(50==(0|Ir)){var Vf=r+8|0,Bf=Me[Vf>>2];Bf>>>0>>0?(Se[Vf>>2]=Bf+1|0,Ae[Or+Bf|0]=45):Y(r,45)}var Hf=Se[xf>>2];if(H(r,Hf),2==(0|Uf)){var Kf=Me[cr],Yf=0==(0|Kf);do if(!Yf){var Gf=r+8|0,Wf=Me[Gf>>2];if(Wf>>>0>=Me[Er+3]>>>0)break;Se[Gf>>2]=Wf+1|0,Ae[Kf+Wf|0]=117;break r}while(0);Y(r,117);break r}if(3==(0|Uf)){var Zf=Me[cr],Qf=0==(0|Zf);do if(!Qf){var qf=r+8|0,$f=Me[qf>>2];if($f>>>0>=Me[Er+3]>>>0)break;Se[qf>>2]=$f+1|0,Ae[Zf+$f|0]=108;break r}while(0);Y(r,108);break r}if(4==(0|Uf)){var Jf=Me[cr],r_=0==(0|Jf);do if(!r_){var o=(r+8|0)>>2,a_=Me[o];if((a_+2|0)>>>0>Me[Er+3]>>>0)break;var e_=Jf+a_|0;oe=27765,Ae[e_]=255&oe,oe>>=8,Ae[e_+1]=255&oe;var i_=Se[o]+2|0;Se[o]=i_;break r}while(0);Q(r,0|He.__str142,2);break r}if(5==(0|Uf)){var v_=Me[cr],t_=0==(0|v_);do if(!t_){var n=(r+8|0)>>2,f_=Me[n];if((f_+2|0)>>>0>Me[Er+3]>>>0)break;var __=v_+f_|0;oe=27756,Ae[__]=255&oe,oe>>=8,Ae[__+1]=255&oe;var s_=Se[n]+2|0;Se[n]=s_;break r}while(0);Q(r,0|He.__str143,2);break r}if(6==(0|Uf)){var n_=Me[cr],o_=0==(0|n_);do if(!o_){var s=(r+8|0)>>2,l_=Me[s];if((l_+3|0)>>>0>Me[Er+3]>>>0)break;var b_=n_+l_|0;Ae[b_]=Ae[0|He.__str144],Ae[b_+1]=Ae[(0|He.__str144)+1],Ae[b_+2]=Ae[(0|He.__str144)+2];var k_=Se[s]+3|0;Se[s]=k_;break r}while(0);Q(r,0|He.__str144,3);break r}break r}if(7==(0|Uf)){var _=Se[pr+2]>>2;if(0!=(0|Se[_])){var zf=7;break}if(!(1==(0|Se[_+2])&49==(0|Ir))){var zf=Uf;break}var u_=Ae[Se[_+1]]<<24>>24;if(48==(0|u_)){var f=(r+8|0)>>2,c_=Me[f];if((c_+5|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str145,5);break r}var h_=Or+c_|0;Ae[h_]=Ae[0|He.__str145],Ae[h_+1]=Ae[(0|He.__str145)+1],Ae[h_+2]=Ae[(0|He.__str145)+2],Ae[h_+3]=Ae[(0|He.__str145)+3],Ae[h_+4]=Ae[(0|He.__str145)+4];var d_=Se[f]+5|0;Se[f]=d_;break r}if(49==(0|u_)){var t=(r+8|0)>>2,w_=Me[t];if((w_+4|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str146,4);break r}var p_=Or+w_|0;oe=1702195828,Ae[p_]=255&oe,oe>>=8,Ae[p_+1]=255&oe,oe>>=8,Ae[p_+2]=255&oe,oe>>=8,Ae[p_+3]=255&oe;var E_=Se[t]+4|0;Se[t]=E_;break r}var zf=Uf;break}var zf=Uf;break}var zf=0}while(0);var zf,v=(r+8|0)>>2,A_=Me[v],i=(r+12|0)>>2;A_>>>0>>0?(Se[v]=A_+1|0,Ae[Or+A_|0]=40):Y(r,40);var g_=Se[Ff>>2];H(r,g_);var y_=Me[cr],m_=0==(0|y_);do{if(!m_){var S_=Me[v];if(S_>>>0>=Me[i]>>>0){gr=335;break}Se[v]=S_+1|0,Ae[y_+S_|0]=41,gr=336;break}gr=335}while(0);335==gr&&Y(r,41);var M_=50==(0|Se[Nr>>2]);e:do if(M_){var C_=Me[cr],R_=0==(0|C_);do if(!R_){var T_=Me[v];if(T_>>>0>=Me[i]>>>0)break;Se[v]=T_+1|0,Ae[C_+T_|0]=45;break e}while(0);Y(r,45)}while(0);if(8==(0|zf)){var O_=Me[cr],N_=0==(0|O_);do{if(!N_){var I_=Me[v];if(I_>>>0>=Me[i]>>>0){gr=345;break}Se[v]=I_+1|0,Ae[O_+I_|0]=91,gr=346;break}gr=345}while(0);345==gr&&Y(r,91);var P_=Se[pr+2];H(r,P_);var D_=Me[cr],L_=0==(0|D_);do if(!L_){var F_=Me[v];if(F_>>>0>=Me[i]>>>0)break;Se[v]=F_+1|0,Ae[D_+F_|0]=93;break r}while(0);Y(r,93);break r}var X_=Se[pr+2];H(r,X_);break r}Z(r);break r}}while(0);var e=(r+20|0)>>2,j_=Se[e],U_=0|Sr;Se[U_>>2]=j_,Se[e]=Sr,Se[Sr+4>>2]=a;var x_=Sr+8|0;Se[x_>>2]=0;var z_=Se[Er+4];Se[Sr+12>>2]=z_;var V_=Se[pr+1];H(r,V_),0==(0|Se[x_>>2])&&$(r,a);var B_=Se[U_>>2];Se[e]=B_}while(0);Oe=Ar}function K(r,a,e,i){var v=i>>2;Se[v]=r,Se[v+1]=r+e|0,Se[v+2]=a,Se[v+3]=r,Se[v+6]=e<<1,Se[v+5]=0,Se[v+9]=e,Se[v+8]=0,Se[v+10]=0,Se[v+11]=0,Se[v+12]=0}function Y(r,a){var e,i=r+4|0,v=Me[i>>2],t=0==(0|v);do if(!t){var e=(r+8|0)>>2,f=Me[e];if(f>>>0>2]>>>0)var _=v,s=f;else{tr(r,1);var n=Me[i>>2];if(0==(0|n))break;var _=n,s=Se[e]}var s,_;Ae[_+s|0]=255&a;var o=Se[e]+1|0;Se[e]=o}while(0)}function G(r,a,e,i){var v,t=i>>2,f=Oe;Oe+=4;var _=f,v=_>>2,s=0==(0|r);do if(s){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var o=0==(0|e);if(0!=(0|a)&o){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var l=W(r,_);if(0==(0|l)){if(0==(0|i)){var n=0;break}if(1==(0|Se[v])){Se[t]=-1;var n=0}else{Se[t]=-2;var n=0}}else{var b=0==(0|a);do if(b){if(o){var k=l;break}var u=Se[v];Se[e>>2]=u;var k=l}else{var c=Ca(l);if(c>>>0>2]>>>0){Ra(a,l);va(l);var k=a}else{va(a);var h=Se[v];Se[e>>2]=h;var k=l}}while(0);var k;if(0==(0|i)){var n=k;break}Se[t]=0;var n=k}}}while(0);var n;return Oe=f,n}function W(r,a){var e,i=Oe;Oe+=52;var v,t=i,e=t>>2;Se[a>>2]=0;var f=Ca(r),_=Ae[r]<<24>>24==95;do{if(_){if(Ae[r+1|0]<<24>>24==90){var s=0;v=13;break}v=3;break}v=3}while(0);do if(3==v){var n=Na(r,0|He.__str117,8);if(0!=(0|n)){var s=1;v=13;break}var o=Ae[r+8|0];if(o<<24>>24!=46&&o<<24>>24!=95&&o<<24>>24!=36){var s=1;v=13;break}var l=r+9|0,b=Ae[l];if(b<<24>>24!=68&&b<<24>>24!=73){\nvar s=1;v=13;break}if(Ae[r+10|0]<<24>>24!=95){var s=1;v=13;break}var k=f+29|0,u=Jr(k);if(0==(0|u)){Se[a>>2]=1;var c=0;v=19;break}Ae[l]<<24>>24==73?Pa(u,0|He.__str118,30,1):Pa(u,0|He.__str119,29,1);var h=r+11|0,c=(Ia(u,h),u);v=19;break}while(0);if(13==v){var s;K(r,17,f,t);var d=Se[e+6],w=Ta(),p=Oe;Oe+=12*d,Oe=Oe+3>>2<<2;var E=Oe;if(Oe+=4*Se[e+9],Oe=Oe+3>>2<<2,Se[e+4]=p,Se[e+7]=E,s)var A=N(t),g=A;else var y=T(t,1),g=y;var g,m=Ae[Se[e+3]]<<24>>24==0?g:0,S=Se[e+12]+f+10*Se[e+10]|0;if(0==(0|m))var M=0;else var C=S/8+S|0,R=B(17,m,C,a),M=R;var M;Oa(w);var c=M}var c;return Oe=i,c}function Z(r){var a=r+4|0,e=Se[a>>2];va(e),Se[a>>2]=0}function Q(r,a,e){var i,v=r+4|0,t=Me[v>>2],f=0==(0|t);do if(!f){var i=(r+8|0)>>2,_=Me[i];if((_+e|0)>>>0>Me[r+12>>2]>>>0){tr(r,e);var s=Me[v>>2];if(0==(0|s))break;var n=s,o=Se[i]}else var n=t,o=_;var o,n;Pa(n+o|0,a,e,1);var l=Se[i]+e|0;Se[i]=l}while(0)}function q(r,a,e){var i,v,t=a+e|0,f=(0|e)>0;r:do if(f)for(var _=t,s=r+4|0,i=(r+8|0)>>2,n=r+12|0,o=a;;){var o,l=(_-o|0)>3;a:do{if(l){if(Ae[o]<<24>>24!=95){v=21;break}if(Ae[o+1|0]<<24>>24!=95){v=21;break}if(Ae[o+2|0]<<24>>24!=85){v=21;break}for(var b=o+3|0,k=0;;){var k,b;if(b>>>0>=t>>>0){v=21;break a}var u=ge[b],c=u<<24>>24;if((u-48&255&255)<10)var h=c-48|0;else if((u-65&255&255)<6)var h=c-55|0;else{if((u-97&255&255)>=6)break;var h=c-87|0}var h,b=b+1|0,k=(k<<4)+h|0}if(!(u<<24>>24==95&k>>>0<256)){v=21;break}var d=Me[s>>2],w=0==(0|d);do if(!w){var p=Me[i];if(p>>>0>=Me[n>>2]>>>0)break;Se[i]=p+1|0,Ae[d+p|0]=255&k;var E=b;v=25;break a}while(0);Y(r,k);var E=b;v=25;break}v=21}while(0);a:do if(21==v){var A=Me[s>>2],g=0==(0|A);do if(!g){var y=Me[i];if(y>>>0>=Me[n>>2]>>>0)break;var m=Ae[o];Se[i]=y+1|0,Ae[A+y|0]=m;var E=o;break a}while(0);var S=Ae[o]<<24>>24;Y(r,S);var E=o}while(0);var E,M=E+1|0;if(M>>>0>=t>>>0)break r;var o=M}while(0)}function $(r,a){var e,i,v,t,f,_,s,n=r>>2,o=Se[a>>2];r:do if(22==(0|o)||25==(0|o)){var l=Me[n+1],b=0==(0|l);do if(!b){var _=(r+8|0)>>2,k=Me[_];if((k+9|0)>>>0>Me[n+3]>>>0)break;for(var u=l+k|0,c=0|He.__str147,h=u,d=c+9;c>2,A=Me[f];if((A+9|0)>>>0>Me[n+3]>>>0)break;for(var g=p+A|0,c=0|He.__str148,h=g,d=c+9;c>2,M=Me[t];if((M+6|0)>>>0>Me[n+3]>>>0)break;var C=m+M|0;Ae[C]=Ae[0|He.__str149],Ae[C+1]=Ae[(0|He.__str149)+1],Ae[C+2]=Ae[(0|He.__str149)+2],Ae[C+3]=Ae[(0|He.__str149)+3],Ae[C+4]=Ae[(0|He.__str149)+4],Ae[C+5]=Ae[(0|He.__str149)+5];var R=Se[t]+6|0;Se[t]=R;break r}while(0);Q(r,0|He.__str149,6)}else if(28==(0|o)){var T=Me[n+1],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[n+3]>>>0){s=17;break}Se[N>>2]=I+1|0,Ae[T+I|0]=32,s=18;break}s=17}while(0);17==s&&Y(r,32);var P=Se[a+8>>2];H(r,P)}else if(29==(0|o)){if(0!=(4&Se[n]|0))break;var D=Me[n+1],L=0==(0|D);do if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[n+3]>>>0)break;Se[F>>2]=X+1|0,Ae[D+X|0]=42;break r}while(0);Y(r,42)}else if(30==(0|o)){var j=Me[n+1],U=0==(0|j);do if(!U){var x=r+8|0,z=Me[x>>2];if(z>>>0>=Me[n+3]>>>0)break;Se[x>>2]=z+1|0,Ae[j+z|0]=38;break r}while(0);Y(r,38)}else if(31==(0|o)){var V=Me[n+1],B=0==(0|V);do if(!B){var v=(r+8|0)>>2,K=Me[v];if((K+8|0)>>>0>Me[n+3]>>>0)break;var G=V+K|0,W=0|G;oe=1886220131,Ae[W]=255&oe,oe>>=8,Ae[W+1]=255&oe,oe>>=8,Ae[W+2]=255&oe,oe>>=8,Ae[W+3]=255&oe;var Z=G+4|0;oe=544761196,Ae[Z]=255&oe,oe>>=8,Ae[Z+1]=255&oe,oe>>=8,Ae[Z+2]=255&oe,oe>>=8,Ae[Z+3]=255&oe;var q=Se[v]+8|0;Se[v]=q;break r}while(0);Q(r,0|He.__str150,8)}else if(32==(0|o)){var $=Me[n+1],J=0==(0|$);do if(!J){var i=(r+8|0)>>2,rr=Me[i];if((rr+10|0)>>>0>Me[n+3]>>>0)break;for(var ar=$+rr|0,c=0|He.__str151,h=ar,d=c+10;c>2],tr=0==(0|vr);do{if(!tr){var fr=r+8|0,_r=Me[fr>>2];if(0!=(0|_r)&&Ae[vr+(_r-1)|0]<<24>>24==40){s=42;break}if(_r>>>0>=Me[n+3]>>>0){s=41;break}Se[fr>>2]=_r+1|0,Ae[vr+_r|0]=32,s=42;break}s=41}while(0);41==s&&Y(r,32);var sr=Se[a+4>>2];H(r,sr);var nr=Me[ir>>2],or=0==(0|nr);do if(!or){var e=(r+8|0)>>2,lr=Me[e];if((lr+3|0)>>>0>Me[n+3]>>>0)break;var br=nr+lr|0;Ae[br]=Ae[0|He.__str135],Ae[br+1]=Ae[(0|He.__str135)+1],Ae[br+2]=Ae[(0|He.__str135)+2];var kr=Se[e]+3|0;Se[e]=kr;break r}while(0);Q(r,0|He.__str135,3)}else if(3==(0|o)){var ur=Se[a+4>>2];H(r,ur)}else H(r,a);while(0)}function J(r){var a=r+20|0,e=Se[a>>2];if((0|e)<(0|Se[r+24>>2])){var i=Se[r+16>>2]+12*e|0,v=e+1|0;Se[a>>2]=v;var t=i}else var t=0;var t;return t}function rr(r,a,e){var i,v,t,f,_=r>>2,s=e,t=s>>2,n=0;r:for(;;){var n,s,o=0==(0|s);do if(!o){if(0!=(0|Se[t+2]))break;var l=Se[Se[t+1]>>2];if(29==(0|l)||30==(0|l)){f=9;break r}if(22==(0|l)||23==(0|l)||24==(0|l)||28==(0|l)||31==(0|l)||32==(0|l)||37==(0|l)){var b=Se[_+1];f=12;break r}var s=Se[t],t=s>>2,n=1;continue r}while(0);if(0!=(0|Se[a+4>>2])&0==(0|n)){f=9;break}var k=0,u=r+4|0,v=u>>2;f=22;break}do if(9==f){var c=Se[_+1];if(0==(0|c)){f=17;break}var h=Se[_+2];if(0==(0|h)){var d=c;f=13;break}var w=Ae[c+(h-1)|0];if(w<<24>>24==40||w<<24>>24==42){f=18;break}var b=c;f=12;break}while(0);do if(12==f){var b;if(0==(0|b)){f=17;break}var d=b;f=13;break}while(0);do if(13==f){var d,p=r+8|0,E=Me[p>>2];if(0!=(0|E)&&Ae[d+(E-1)|0]<<24>>24==32){f=18;break}if(E>>>0>=Me[_+3]>>>0){f=17;break}Se[p>>2]=E+1|0,Ae[d+E|0]=32,f=18;break}while(0);do if(17==f){Y(r,32),f=18;break}while(0);r:do if(18==f){var A=r+4|0,g=Me[A>>2],y=0==(0|g);do if(!y){var m=r+8|0,S=Me[m>>2];if(S>>>0>=Me[_+3]>>>0)break;Se[m>>2]=S+1|0,Ae[g+S|0]=40;var k=1,u=A,v=u>>2;break r}while(0);Y(r,40);var k=1,u=A,v=u>>2}while(0);var u,k,i=(r+20|0)>>2,M=Se[i];Se[i]=0,vr(r,e,0);r:do if(k){var C=Me[v],R=0==(0|C);do if(!R){var T=r+8|0,O=Me[T>>2];if(O>>>0>=Me[_+3]>>>0)break;Se[T>>2]=O+1|0,Ae[C+O|0]=41;break r}while(0);Y(r,41)}while(0);var N=Me[v],I=0==(0|N);do{if(!I){var P=r+8|0,D=Me[P>>2];if(D>>>0>=Me[_+3]>>>0){f=30;break}Se[P>>2]=D+1|0,Ae[N+D|0]=40,f=31;break}f=30}while(0);30==f&&Y(r,40);var L=Se[a+8>>2];0!=(0|L)&&H(r,L);var F=Me[v],X=0==(0|F);do{if(!X){var j=r+8|0,U=Me[j>>2];if(U>>>0>=Me[_+3]>>>0){f=36;break}Se[j>>2]=U+1|0,Ae[F+U|0]=41,f=37;break}f=36}while(0);36==f&&Y(r,41),vr(r,e,1),Se[i]=M}function ar(r,a,e){var i,v,t,f=r>>2,_=0==(0|e);do{if(!_){var s=e,v=s>>2;r:for(;;){var s;if(0==(0|s)){var n=1;t=14;break}if(0==(0|Se[v+2])){var o=36==(0|Se[Se[v+1]>>2]),l=1&o^1;if(o){var n=l;t=14;break}var b=r+4|0,k=Me[b>>2],u=0==(0|k);do{if(!u){var i=(r+8|0)>>2,c=Me[i];if((c+2|0)>>>0>Me[f+3]>>>0){t=9;break}var h=k+c|0;oe=10272,Ae[h]=255&oe,oe>>=8,Ae[h+1]=255&oe;var d=Se[i]+2|0;Se[i]=d,vr(r,e,0),t=10;break}t=9}while(0);9==t&&(Q(r,0|He.__str140,2),vr(r,e,0));var w=Me[b>>2],p=0==(0|w);do if(!p){var E=r+8|0,A=Me[E>>2];if(A>>>0>=Me[f+3]>>>0)break;Se[E>>2]=A+1|0,Ae[w+A|0]=41;var g=l;t=15;break r}while(0);Y(r,41);var g=l;t=15;break}var s=Se[v],v=s>>2}if(14==t){var n;vr(r,e,0);var g=n}var g;if(0!=(0|g)){t=17;break}var y=r+4|0;t=21;break}t=17}while(0);r:do if(17==t){var m=r+4|0,S=Me[m>>2],M=0==(0|S);do if(!M){var C=r+8|0,R=Me[C>>2];if(R>>>0>=Me[f+3]>>>0)break;Se[C>>2]=R+1|0,Ae[S+R|0]=32;var y=m;break r}while(0);Y(r,32);var y=m}while(0);var y,T=Me[y>>2],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[f+3]>>>0){t=24;break}Se[N>>2]=I+1|0,Ae[T+I|0]=91,t=25;break}t=24}while(0);24==t&&Y(r,91);var P=Se[a+4>>2];0!=(0|P)&&H(r,P);var D=Me[y>>2],L=0==(0|D);do{if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[f+3]>>>0){t=30;break}Se[F>>2]=X+1|0,Ae[D+X|0]=93,t=31;break}t=30}while(0);30==t&&Y(r,93)}function er(r,a){var e,i,v,t,f,_,s=Oe;Oe+=8;var n,o=s,_=(a+4|0)>>2,l=Se[_];if(4==(0|Se[l>>2])){var f=(r+20|0)>>2,b=Se[f];Se[f]=0;var t=(r+16|0)>>2,k=Se[t],u=0|o;Se[u>>2]=k,Se[t]=o;var c=Se[_];Se[o+4>>2]=c;var h=Se[c+4>>2];H(r,h);var d=Se[u>>2];Se[t]=d;var v=(r+4|0)>>2,w=Me[v],p=0==(0|w);do{if(!p){var i=(r+8|0)>>2,E=Me[i],A=0==(0|E);do if(!A){if(Ae[w+(E-1)|0]<<24>>24!=60)break;E>>>0>2]>>>0?(Se[i]=E+1|0,Ae[w+E|0]=32):Y(r,32)}while(0);var g=Me[v];if(0==(0|g)){n=12;break}var y=Me[i];if(y>>>0>=Me[r+12>>2]>>>0){n=12;break}Se[i]=y+1|0,Ae[g+y|0]=60,n=13;break}n=12}while(0);12==n&&Y(r,60);var m=Se[Se[_]+8>>2];H(r,m);var S=Me[v],M=0==(0|S);do{if(!M){var e=(r+8|0)>>2,C=Me[e],R=0==(0|C);do if(!R){if(Ae[S+(C-1)|0]<<24>>24!=62)break;C>>>0>2]>>>0?(Se[e]=C+1|0,Ae[S+C|0]=32):Y(r,32)}while(0);var T=Me[v];if(0==(0|T)){n=22;break}var O=Me[e];if(O>>>0>=Me[r+12>>2]>>>0){n=22;break}Se[e]=O+1|0,Ae[T+O|0]=62,n=23;break}n=22}while(0);22==n&&Y(r,62),Se[f]=b}else H(r,l);Oe=s}function ir(r,a){var e,i=40==(0|Se[a>>2]);r:do if(i){var v=Me[r+4>>2],t=0==(0|v);do{if(!t){var e=(r+8|0)>>2,f=Me[e],_=a+4|0,s=Me[_>>2],n=Me[s+8>>2];if((n+f|0)>>>0>Me[r+12>>2]>>>0){var o=s,l=n;break}var b=v+f|0,k=Se[s+4>>2];Pa(b,k,n,1);var u=Se[e]+Se[Se[_>>2]+8>>2]|0;Se[e]=u;break r}var c=Me[a+4>>2],o=c,l=Se[c+8>>2]}while(0);var l,o,h=Se[o+4>>2];Q(r,h,l)}else H(r,a);while(0)}function vr(r,a,e){var i,v,t,f,_,f=(r+4|0)>>2,s=0==(0|e),t=(r+16|0)>>2;r:do if(s)for(var n=a;;){var n;if(0==(0|n)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var o=n+8|0,l=0==(0|Se[o>>2]);do if(l){var b=n+4|0;if((Se[Se[b>>2]>>2]-25|0)>>>0<3)break;Se[o>>2]=1;var k=Me[t],u=Se[n+12>>2];Se[t]=u;var c=Me[b>>2],h=Se[c>>2];if(35==(0|h)){var d=n,w=k,p=c;_=14;break r}if(36==(0|h)){var E=n,A=k,g=c;_=15;break r}if(2==(0|h)){var y=k,m=b;_=16;break r}$(r,c),Se[t]=k}while(0);var n=Se[n>>2]}else for(var S=a;;){var S;if(0==(0|S)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var M=S+8|0;if(0==(0|Se[M>>2])){Se[M>>2]=1;var C=Me[t],R=Se[S+12>>2];Se[t]=R;var T=S+4|0,O=Me[T>>2],N=Se[O>>2];if(35==(0|N)){var d=S,w=C,p=O;_=14;break r}if(36==(0|N)){var E=S,A=C,g=O;_=15;break r}if(2==(0|N)){var y=C,m=T;_=16;break r}$(r,O),Se[t]=C}var S=Se[S>>2]}while(0);if(14==_){var p,w,d,I=Se[d>>2];rr(r,p,I),Se[t]=w}else if(15==_){var g,A,E,P=Se[E>>2];ar(r,g,P),Se[t]=A}else if(16==_){var m,y,v=(r+20|0)>>2,D=Se[v];Se[v]=0;var L=Se[Se[m>>2]+4>>2];H(r,L),Se[v]=D;var F=0==(4&Se[r>>2]|0),X=Me[f],j=0!=(0|X);r:do if(F){do if(j){var i=(r+8|0)>>2,U=Me[i];if((U+2|0)>>>0>Me[r+12>>2]>>>0)break;var x=X+U|0;oe=14906,Ae[x]=255&oe,oe>>=8,Ae[x+1]=255&oe;var z=Se[i]+2|0;Se[i]=z;break r}while(0);Q(r,0|He.__str120,2)}else{do if(j){var V=r+8|0,B=Me[V>>2];if(B>>>0>=Me[r+12>>2]>>>0)break;Se[V>>2]=B+1|0,Ae[X+B|0]=46;break r}while(0);Y(r,46)}while(0);var K=Me[Se[m>>2]+8>>2],G=(Se[K>>2]-25|0)>>>0<3;r:do if(G)for(var W=K;;){var W,Z=Me[W+4>>2];if((Se[Z>>2]-25|0)>>>0>=3){var q=Z;break r}var W=Z}else var q=K;while(0);var q;H(r,q),Se[t]=y}}function tr(r,a){var e,e=(r+4|0)>>2,i=Se[e],v=0==(0|i);r:do if(!v){for(var t=Se[r+8>>2]+a|0,f=r+12|0,_=Se[f>>2],s=i;;){var s,_;if(t>>>0<=_>>>0)break r;var n=_<<1,o=fa(s,n);if(0==(0|o))break;Se[e]=o,Se[f>>2]=n;var _=n,s=o}var l=Se[e];va(l),Se[e]=0,Se[r+24>>2]=1}while(0)}function fr(r,a,e){var i,v=J(r),i=v>>2;return 0!=(0|v)&&(Se[i]=21,Se[i+1]=a,Se[i+2]=e),v}function _r(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;if(88==(0|i)){var v=e+1|0;Se[a]=v;var t=nr(r),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else if(76==(0|i))var o=or(r),n=o;else var l=N(r),n=l;var n;return n}function sr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==110){var v=e+1|0;Se[a]=v;var t=1,f=Ae[v],_=v}else var t=0,f=i,_=e;var _,f,t,s=(f-48&255&255)<10;r:do if(s)for(var n=f,o=0,l=_;;){var l,o,n,b=(n<<24>>24)-48+10*o|0,k=l+1|0;Se[a]=k;var u=ge[k];if((u-48&255&255)>=10){var c=b;break r}var n=u,o=b,l=k}else var c=0;while(0);var c,h=0==(0|t)?c:0|-c;return h}function nr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=Ae[i];do{if(v<<24>>24==76){var t=or(r),f=t;e=21;break}if(v<<24>>24==84){var _=x(r),f=_;e=21;break}if(v<<24>>24==115){if(Ae[i+1|0]<<24>>24!=114){e=8;break}var s=i+2|0;Se[a]=s;var n=N(r),o=br(r);if(Ae[Se[a]]<<24>>24==73){var l=z(r),b=D(r,4,o,l),k=D(r,1,n,b),f=k;e=21;break}var u=D(r,1,n,o),f=u;e=21;break}e=8}while(0);r:do if(8==e){var c=kr(r);if(0==(0|c)){var f=0;break}var h=0|c,d=Se[h>>2],w=40==(0|d);do{if(w){var p=c+4|0,E=r+48|0,A=Se[Se[p>>2]+8>>2]-2+Se[E>>2]|0;Se[E>>2]=A;var g=Se[h>>2];if(40!=(0|g)){var y=g;e=13;break}var m=Se[p>>2],S=Se[m>>2],M=Da(S,0|He.__str90);if(0!=(0|M)){var C=m;e=15;break}var R=N(r),T=D(r,43,c,R),f=T;break r}var y=d;e=13}while(0);do if(13==e){var y;if(40==(0|y)){var C=Se[c+4>>2];e=15;break}if(41==(0|y)){var O=c+4|0;e=17;break}if(42==(0|y)){e=18;break}var f=0;break r}while(0);do if(15==e){var C,O=C+12|0;e=17;break}while(0);do if(17==e){var O,I=Se[O>>2];if(1==(0|I))break;if(2==(0|I)){var P=nr(r),L=nr(r),F=D(r,45,P,L),X=D(r,44,c,F);return X}if(3==(0|I)){var j=nr(r),U=nr(r),V=nr(r),B=D(r,48,U,V),H=D(r,47,j,B),K=D(r,46,c,H);return K}var f=0;break r}while(0);var Y=nr(r),G=D(r,43,c,Y);return G}while(0);var f;return f}function or(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==76;r:do if(v){if(Ae[i]<<24>>24==95)var t=T(r,0),f=t;else{var _=N(r);if(0==(0|_)){var s=0;break}var n=33==(0|Se[_>>2]);do if(n){var o=Se[_+4>>2];if(0==(0|Se[o+16>>2]))break;var l=r+48|0,b=Se[l>>2]-Se[o+4>>2]|0;Se[l>>2]=b}while(0);var k=Se[a];if(Ae[k]<<24>>24==110){var u=k+1|0;Se[a]=u;var c=50,h=u}else var c=49,h=k;for(var h,c,d=h;;){var d,w=Ae[d];if(w<<24>>24==69)break;if(w<<24>>24==0){var s=0;break r}var p=d+1|0;Se[a]=p;var d=p}var E=lr(r,h,d-h|0),A=D(r,c,_,E),f=A}var f,g=Se[a],y=g+1|0;Se[a]=y;var m=Ae[g]<<24>>24==69?f:0,s=m}else var s=0;while(0);var s;return s}function lr(r,a,e){var i=J(r),v=m(i,a,e),t=0==(0|v)?0:i;return t}function br(r){var a=r+12|0,e=Me[a>>2],i=ge[e],v=(i-48&255&255)<10;do if(v)var t=L(r),f=t;else if((i-97&255&255)<26){var _=kr(r);if(0==(0|_)){var f=0;break}if(40!=(0|Se[_>>2])){var f=_;break}var s=r+48|0,n=Se[Se[_+4>>2]+8>>2]+Se[s>>2]+7|0;Se[s>>2]=n;var f=_}else if(i<<24>>24==67||i<<24>>24==68)var o=hr(r),f=o;else{if(i<<24>>24!=76){var f=0;break}Se[a>>2]=e+1|0;var l=L(r);if(0==(0|l)){var f=0;break}var b=dr(r),k=0==(0|b)?0:l,f=k}while(0);var f;return f}function kr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=i+1|0;Se[a]=v;var t=ge[i],f=i+2|0;Se[a]=f;var _=ge[v];do{if(t<<24>>24==118){if((_-48&255&255)>=10){var s=49,n=0;e=6;break}var o=(_<<24>>24)-48|0,l=L(r),b=ur(r,o,l),k=b;e=14;break}if(t<<24>>24==99){if(_<<24>>24!=118){var s=49,n=0;e=6;break}var u=N(r),c=D(r,42,u,0),k=c;e=14;break}var s=49,n=0;e=6}while(0);r:do if(6==e){for(;;){var n,s,h=(s-n)/2+n|0,d=(h<<4)+ri|0,w=Se[d>>2],p=Ae[w],E=t<<24>>24==p<<24>>24;if(E&&_<<24>>24==Ae[w+1|0]<<24>>24)break;var A=t<<24>>24>24;do if(A)var g=h,y=n;else{if(E&&_<<24>>24>24){var g=h,y=n;break}var g=s,y=h+1|0}while(0);var y,g;if((0|y)==(0|g)){var k=0;break r}var s=g,n=y}var m=cr(r,d),k=m}while(0);var k;return k}function ur(r,a,e){var i=J(r),v=S(i,a,e),t=0==(0|v)?0:i;return t}function cr(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=40,Se[e+4>>2]=a),e}function hr(r){var a,e,i=Se[r+44>>2],e=i>>2,v=0==(0|i);do if(!v){var t=Se[e];if(0==(0|t)){var f=r+48|0,_=Se[f>>2]+Se[e+2]|0;Se[f>>2]=_}else{if(21!=(0|t))break;var s=r+48|0,n=Se[s>>2]+Se[e+2]|0;Se[s>>2]=n}}while(0);var a=(r+12|0)>>2,o=Se[a],l=o+1|0;Se[a]=l;var b=Ae[o]<<24>>24;do if(67==(0|b)){var k=o+2|0;Se[a]=k;var u=Ae[l]<<24>>24;if(49==(0|u))var c=1;else if(50==(0|u))var c=2;else{if(51!=(0|u)){var h=0;break}var c=3}var c,d=wr(r,c,i),h=d}else if(68==(0|b)){var w=o+2|0;Se[a]=w;var p=Ae[l]<<24>>24;if(48==(0|p))var E=1;else if(49==(0|p))var E=2;else{if(50!=(0|p)){var h=0;break}var E=3}var E,A=pr(r,E,i),h=A}else var h=0;while(0);var h;return h}function dr(r){var a=r+12|0,e=Se[a>>2];if(Ae[e]<<24>>24==95){var i=e+1|0;Se[a>>2]=i;var v=sr(r),t=v>>>31^1}else var t=1;var t;return t}function wr(r,a,e){var i=J(r),v=M(i,a,e),t=0==(0|v)?0:i;return t}function pr(r,a,e){var i=J(r),v=C(i,a,e),t=0==(0|v)?0:i;return t}function Er(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=5,Se[e+4>>2]=a),e}function Ar(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;do if(78==(0|i))var v=gr(r),t=v;else if(90==(0|i))var f=yr(r),t=f;else if(76==(0|i))var _=br(r),t=_;else if(83==(0|i)){if(Ae[e+1|0]<<24>>24==116){var s=e+2|0;Se[a]=s;var n=lr(r,0|He.__str152,3),o=br(r),l=D(r,1,n,o),b=r+48|0,k=Se[b>>2]+3|0;Se[b>>2]=k;var u=0,c=l}else var h=V(r,0),u=1,c=h;var c,u;if(Ae[Se[a]]<<24>>24!=73){var t=c;break}if(0==(0|u)){var d=R(r,c);if(0==(0|d)){var t=0;break}}var w=z(r),p=D(r,4,c,w),t=p}else{var E=br(r);if(Ae[Se[a]]<<24>>24!=73){var t=E;break}var A=R(r,E);if(0==(0|A)){var t=0;break}var g=z(r),y=D(r,4,E,g),t=y}while(0);var t;return t}function gr(r){var a,e=Oe;Oe+=4;var i=e,a=(r+12|0)>>2,v=Se[a],t=v+1|0;Se[a]=t;var f=Ae[v]<<24>>24==78;do if(f){var _=I(r,i,1);if(0==(0|_)){var s=0;break}var n=mr(r);if(Se[_>>2]=n,0==(0|n)){var s=0;break}var o=Se[a],l=o+1|0;if(Se[a]=l,Ae[o]<<24>>24!=69){var s=0;break}var s=Se[i>>2]}else var s=0;while(0);var s;return Oe=e,s}function yr(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==90;do if(v){var t=O(r,0),f=Se[a],_=f+1|0;if(Se[a]=_,Ae[f]<<24>>24!=69){var s=0;break}if(Ae[_]<<24>>24==115){var n=f+2|0;Se[a]=n;var o=dr(r);if(0==(0|o)){var s=0;break}var l=lr(r,0|He.__str168,14),b=D(r,2,t,l),s=b}else{var k=Ar(r),u=dr(r);if(0==(0|u)){var s=0;break}var c=D(r,2,t,k),s=c}}else var s=0;while(0);var s;return s}function mr(r){var a,e=r+12|0,i=0;r:for(;;){var i,v=ge[Se[e>>2]];if(v<<24>>24==0){var t=0;break}var f=(v-48&255&255)<10|(v-97&255&255)<26;do{if(!f){if(v<<24>>24==76||v<<24>>24==68||v<<24>>24==67){a=5;break}if(v<<24>>24==83){var _=V(r,1),s=_;a=10;break}if(v<<24>>24==73){if(0==(0|i)){var t=0;break r}var n=z(r),o=4,l=n;a=11;break}if(v<<24>>24==84){var b=x(r),s=b;a=10;break}if(v<<24>>24==69){var t=i;break r}var t=0;break r}a=5}while(0);do if(5==a){var k=br(r),s=k;a=10;break}while(0);do if(10==a){var s;if(0==(0|i)){var u=s;a=12;break}var o=1,l=s;a=11;break}while(0);if(11==a)var l,o,c=D(r,o,i,l),u=c;var u;if(v<<24>>24!=83)if(Ae[Se[e>>2]]<<24>>24!=69){var h=R(r,u);if(0==(0|h)){var t=0;break}var i=u}else var i=u;else var i=u}var t;return t}function Sr(r,a){var e,i,v=Oe;Oe+=4;var t=v,i=t>>2,e=(r+12|0)>>2,f=Se[e];if(Ae[f]<<24>>24==74){var _=f+1|0;Se[e]=_;var s=1}else var s=a;var s;Se[i]=0;var n=s,o=0,l=t;r:for(;;)for(var l,o,n,b=n,k=o;;){var k,b,u=Ae[Se[e]];if(u<<24>>24==0||u<<24>>24==69){var c=Se[i];if(0==(0|c)){var h=0;break r}var d=0==(0|Se[c+8>>2]);do if(d){var w=Se[c+4>>2];if(33!=(0|Se[w>>2])){var p=c;break}var E=Se[w+4>>2];if(9!=(0|Se[E+16>>2])){var p=c;break}var A=r+48|0,g=Se[A>>2]-Se[E+4>>2]|0;Se[A>>2]=g,Se[i]=0;var p=0}else var p=c;while(0);var p,y=D(r,35,k,p),h=y;break r}var m=N(r);if(0==(0|m)){var h=0;break r}if(0==(0|b)){var S=D(r,38,m,0);if(Se[l>>2]=S,0==(0|S)){var h=0;break r}var n=0,o=k,l=S+8|0;continue r}var b=0,k=m}var h;return Oe=v,h}function Mr(r){for(var a=r;;){var a;if(0==(0|a)){var e=0;break}var i=Se[a>>2];if(1!=(0|i)&&2!=(0|i)){if(6==(0|i)||7==(0|i)||42==(0|i)){var e=1;break}var e=0;break}var a=Se[a+8>>2]}var e;return e}function Cr(r){var a=r>>2;Se[a+3]=0,Se[a+2]=0,Se[a+1]=0,Se[a]=0,Se[a+4]=0}function Rr(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=(Se[r+4>>2]-i|0)<(0|a);r:do if(v)var t=0;else{var f=i+a|0;Se[e]=f;var _=0==(4&Se[r+8>>2]|0);do if(!_){if(Ae[f]<<24>>24!=36)break;var s=a+(i+1)|0;Se[e]=s}while(0);var n=(0|a)>9;do if(n){var o=La(i,0|He.__str117,8);if(0!=(0|o))break;var l=Ae[i+8|0];if(l<<24>>24!=46&&l<<24>>24!=95&&l<<24>>24!=36)break;if(Ae[i+9|0]<<24>>24!=78)break;var b=r+48|0,k=22-a+Se[b>>2]|0;Se[b>>2]=k;var u=lr(r,0|He.__str169,21),t=u;break r}while(0);var c=lr(r,i,a),t=c}while(0);var t;return t}function Tr(r){var a,e,e=(r+48|0)>>2,i=Se[e],v=i+20|0;Se[e]=v;var a=(r+12|0)>>2,t=Se[a],f=t+1|0;Se[a]=f;var _=Ae[t];do if(_<<24>>24==84){var s=t+2|0;Se[a]=s;var n=Ae[f]<<24>>24;if(86==(0|n)){var o=i+15|0;Se[e]=o;var l=N(r),b=D(r,8,l,0),k=b}else if(84==(0|n)){var u=i+10|0;Se[e]=u;var c=N(r),h=D(r,9,c,0),k=h}else if(73==(0|n))var d=N(r),w=D(r,11,d,0),k=w;else if(83==(0|n))var p=N(r),E=D(r,12,p,0),k=E;else if(104==(0|n)){var A=Nr(r,104);if(0==(0|A)){var k=0;break}var g=O(r,0),y=D(r,14,g,0),k=y}else if(118==(0|n)){var m=Nr(r,118);if(0==(0|m)){var k=0;break}var S=O(r,0),M=D(r,15,S,0),k=M}else if(99==(0|n)){var C=Nr(r,0);if(0==(0|C)){var k=0;break}var R=Nr(r,0);if(0==(0|R)){var k=0;break}var T=O(r,0),I=D(r,16,T,0),k=I}else if(67==(0|n)){var P=N(r),L=sr(r);if((0|L)<0){var k=0;break}var F=Se[a],X=F+1|0;if(Se[a]=X,Ae[F]<<24>>24!=95){var k=0;break}var j=N(r),U=Se[e]+5|0;Se[e]=U;var x=D(r,10,j,P),k=x}else if(70==(0|n))var z=N(r),V=D(r,13,z,0),k=V;else{if(74!=(0|n)){var k=0;break}var B=N(r),H=D(r,17,B,0),k=H}}else if(_<<24>>24==71){var K=t+2|0;Se[a]=K;var Y=Ae[f]<<24>>24;if(86==(0|Y))var G=Ar(r),W=D(r,18,G,0),k=W;else if(82==(0|Y))var Z=Ar(r),Q=D(r,19,Z,0),k=Q;else{if(65!=(0|Y)){var k=0;break}var q=O(r,0),$=D(r,20,q,0),k=$}}else var k=0;while(0);var k;return k}function Or(r){for(var a,e=r,a=e>>2;;){var e;if(0==(0|e)){var i=0;break}var v=Se[a];if(4==(0|v)){var t=Se[a+1],f=Mr(t),i=0==(0|f)&1;break}if(25!=(0|v)&&26!=(0|v)&&27!=(0|v)){var i=0;break}var e=Se[a+1],a=e>>2}var i;return i}function Nr(r,a){var e;if(0==(0|a)){var i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24}else var f=a;var f;do{if(104==(0|f)){var _=(sr(r),r+12|0);e=7;break}if(118==(0|f)){var s=(sr(r),r+12|0),n=Se[s>>2],o=n+1|0;if(Se[s>>2]=o,Ae[n]<<24>>24!=95){var l=0;e=8;break}var _=(sr(r),s);e=7;break}var l=0;e=8}while(0);if(7==e){var _,b=Se[_>>2],k=b+1|0;Se[_>>2]=k;var l=Ae[b]<<24>>24==95&1}var l;return l}function Ir(r){var a,e,i=r>>2,v=Oe;Oe+=56;var t,f=v,_=v+8,s=v+16,n=v+36,e=(0|r)>>2,o=Se[e],l=0==(8192&o|0);r:do{if(l){var a=(r+12|0)>>2,b=Se[a];if(Ae[b]<<24>>24!=63){var k=0;t=111;break}var u=b+1|0;Se[a]=u;var c=Ae[u];do if(c<<24>>24==63){if(Ae[b+2|0]<<24>>24==36){var h=b+3|0;if(Ae[h]<<24>>24!=63){var d=5;t=90;break}Se[a]=h;var w=6,p=h}else var w=0,p=u;var p,w,E=p+1|0;Se[a]=E;var A=Ae[E]<<24>>24;do if(48==(0|A)){var g=1;t=81}else{if(49==(0|A)){var g=2;t=81;break}if(50!=(0|A)){if(51==(0|A)){var y=0|He.__str2172,m=E;t=82;break}if(52==(0|A)){var y=0|He.__str3173,m=E;t=82;break}if(53==(0|A)){var y=0|He.__str4174,m=E;t=82;break}if(54==(0|A)){var y=0|He.__str5175,m=E;t=82;break}if(55==(0|A)){var y=0|He.__str6176,m=E;t=82;break}if(56==(0|A)){var y=0|He.__str7177,m=E;t=82;break}if(57==(0|A)){var y=0|He.__str8178,m=E;t=82;break}if(65==(0|A)){var y=0|He.__str9179,m=E;t=82;break}if(66==(0|A)){Se[a]=p+2|0;var S=0|He.__str10180,M=3;t=88;break}if(67==(0|A)){var y=0|He.__str11181,m=E;t=82;break}if(68==(0|A)){var y=0|He.__str12182,m=E;t=82;break}if(69==(0|A)){var y=0|He.__str13183,m=E;t=82;break}if(70==(0|A)){var y=0|He.__str14184,m=E;t=82;break}if(71==(0|A)){var y=0|He.__str15185,m=E;t=82;break}if(72==(0|A)){var y=0|He.__str16186,m=E;t=82;break}if(73==(0|A)){var y=0|He.__str17187,m=E;t=82;break}if(74==(0|A)){var y=0|He.__str18188,m=E;t=82;break}if(75==(0|A)){var y=0|He.__str19189,m=E;t=82;break}if(76==(0|A)){var y=0|He.__str20190,m=E;t=82;break}if(77==(0|A)){var y=0|He.__str21191,m=E;t=82;break}if(78==(0|A)){var y=0|He.__str22192,m=E;t=82;break}if(79==(0|A)){var y=0|He.__str23193,m=E;t=82;break}if(80==(0|A)){var y=0|He.__str24194,m=E;t=82;break}if(81==(0|A)){var y=0|He.__str25195,m=E;t=82;break}if(82==(0|A)){var y=0|He.__str26196,m=E;t=82;break}if(83==(0|A)){var y=0|He.__str27197,m=E;t=82;break}if(84==(0|A)){var y=0|He.__str28198,m=E;t=82;break}if(85==(0|A)){var y=0|He.__str29199,m=E;t=82;break}if(86==(0|A)){var y=0|He.__str30200,m=E;t=82;break}if(87==(0|A)){var y=0|He.__str31201,m=E;t=82;break}if(88==(0|A)){var y=0|He.__str32202,m=E;t=82;break}if(89==(0|A)){var y=0|He.__str33203,m=E;t=82;break}if(90==(0|A)){var y=0|He.__str34204,m=E;t=82;break}if(95==(0|A)){var C=p+2|0;Se[a]=C;var R=Ae[C]<<24>>24;if(48==(0|R)){var y=0|He.__str35205,m=C;t=82;break}if(49==(0|R)){var y=0|He.__str36206,m=C;t=82;break}if(50==(0|R)){var y=0|He.__str37207,m=C;t=82;break}if(51==(0|R)){var y=0|He.__str38208,m=C;t=82;break}if(52==(0|R)){var y=0|He.__str39209,m=C;t=82;break}if(53==(0|R)){var y=0|He.__str40210,m=C;t=82;break}if(54==(0|R)){var y=0|He.__str41211,m=C;t=82;break}if(55==(0|R)){var y=0|He.__str42212,m=C;t=82;break}if(56==(0|R)){var y=0|He.__str43213,m=C;t=82;break}if(57==(0|R)){var y=0|He.__str44214,m=C;t=82;break}if(65==(0|R)){var y=0|He.__str45215,m=C;t=82;break}if(66==(0|R)){var y=0|He.__str46216,m=C;t=82;break}if(67==(0|R)){Se[a]=p+3|0;var T=0|He.__str47217;t=84;break}if(68==(0|R)){var y=0|He.__str48218,m=C;t=82;break}if(69==(0|R)){var y=0|He.__str49219,m=C;t=82;break}if(70==(0|R)){var y=0|He.__str50220,m=C;t=82;break}if(71==(0|R)){var y=0|He.__str51221,m=C;t=82;break}if(72==(0|R)){var y=0|He.__str52222,m=C;t=82;break}if(73==(0|R)){var y=0|He.__str53223,m=C;t=82;break}if(74==(0|R)){var y=0|He.__str54224,m=C;t=82;break}if(75==(0|R)){var y=0|He.__str55225,m=C;t=82;break}if(76==(0|R)){var y=0|He.__str56226,m=C;t=82;break}if(77==(0|R)){var y=0|He.__str57227,m=C;t=82;break}if(78==(0|R)){var y=0|He.__str58228,m=C;t=82;break}if(79==(0|R)){var y=0|He.__str59229,m=C;t=82;break}if(82==(0|R)){var O=4|o;Se[e]=O;var N=p+3|0;Se[a]=N;var I=Ae[N]<<24>>24;if(48==(0|I)){Se[a]=p+4|0,Cr(s);var P=(Pr(r,_,s,0),Se[_>>2]),D=Se[_+4>>2],L=Dr(r,0|He.__str60230,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=D,ne)),F=Se[a]-1|0;Se[a]=F;var y=L,m=F;t=82;break}if(49==(0|I)){Se[a]=p+4|0;var X=Lr(r),j=Lr(r),U=Lr(r),x=Lr(r),z=Se[a]-1|0;Se[a]=z;var V=Dr(r,0|He.__str61231,(ne=Oe,Oe+=16,Se[ne>>2]=X,Se[ne+4>>2]=j,Se[ne+8>>2]=U,Se[ne+12>>2]=x,ne)),y=V,m=Se[a];t=82;break}if(50==(0|I)){var y=0|He.__str62232,m=N;t=82;break}if(51==(0|I)){var y=0|He.__str63233,m=N;t=82;break}if(52==(0|I)){var y=0|He.__str64234,m=N;t=82;break}var y=0,m=N;t=82;break}if(83==(0|R)){var y=0|He.__str65235,m=C;t=82;break}if(84==(0|R)){var y=0|He.__str66236,m=C;t=82;break}if(85==(0|R)){var y=0|He.__str67237,m=C;t=82;break}if(86==(0|R)){var y=0|He.__str68238,m=C;t=82;break}if(88==(0|R)){var y=0|He.__str69239,m=C;t=82;break}if(89==(0|R)){var y=0|He.__str70240,m=C;t=82;break}var k=0;t=111;break r}var k=0;t=111;break r}var y=0|He.__str1171,m=E;t=82}while(0);do{if(81==t){var g;Se[a]=p+2|0;var B=g;t=83;break}if(82==t){var m,y;if(Se[a]=m+1|0,1==(0|w)||2==(0|w)){var B=w;t=83;break}if(4==(0|w)){var T=y;t=84;break}if(6!=(0|w)){var S=y,M=w;t=88;break}Cr(n);var H=Xr(r,n,0,60,62);if(0==(0|H))var K=y;else var Y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=y,Se[ne+4>>2]=H,ne)),K=Y;var K;Se[i+6]=0;var S=K,M=w;t=88;break}}while(0);if(83==t){var B,G=r+40|0,W=Fr(r,0|He._symbol_demangle_dashed_null,-1,G);if(0==(0|W)){var k=0;t=111;break r}var d=B;t=90;break}if(84==t){var T;Se[i+4]=T;var Z=1,Q=T;t=109;break r}if(88==t){var M,S,q=r+40|0,$=Fr(r,S,-1,q);if(0==(0|$)){var k=0;t=111;break r}var d=M;t=90;break}}else{if(c<<24>>24==36){var J=b+2|0;Se[a]=J;var rr=jr(r);Se[i+4]=rr;var ar=0!=(0|rr)&1;t=107;break}var d=0;t=90}while(0);if(90==t){var d,er=Me[a],ir=Ae[er]<<24>>24;if(64==(0|ir))Se[a]=er+1|0;else if(36==(0|ir))t=93;else{var vr=zr(r);if(0==(0|vr)){var k=-1;t=111;break}}if(5==(0|d)){var tr=r+20|0,fr=Se[tr>>2]+1|0;Se[tr>>2]=fr}else if(1==(0|d)||2==(0|d)){if(Me[i+11]>>>0<2){var k=-1;t=111;break}var _r=r+56|0,sr=Me[_r>>2],nr=Se[sr+4>>2];if(1==(0|d))Se[sr>>2]=nr;else{var or=Dr(r,0|He.__str71241,(ne=Oe,Oe+=4,Se[ne>>2]=nr,ne)),lr=Se[_r>>2];Se[lr>>2]=or}var br=4|Se[e];Se[e]=br}else if(3==(0|d)){var kr=Se[e]&-5;Se[e]=kr}var ur=ge[Se[a]];if((ur-48&255&255)<10)var cr=Vr(r),ar=cr;else if((ur-65&255&255)<26)var hr=Br(r,3==(0|d)&1),ar=hr;else{if(ur<<24>>24!=36){var k=-1;t=111;break}var dr=Hr(r),ar=dr}}var ar;if(0==(0|ar)){var k=-1;t=111;break}var Z=ar,Q=Se[i+4];t=109;break}var wr=Pr(r,f,0,0);if(0==(0|wr)){var k=-1;t=111;break}var pr=Se[f>>2],Er=Se[f+4>>2],Ar=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=pr,Se[ne+4>>2]=Er,ne));Se[i+4]=Ar;var Z=1,Q=Ar;t=109;break}while(0);do if(109==t){var Q,Z;if(0!=(0|Q)){var k=Z;break}Xa(0|He.__str72242,1499,0|He.___func___symbol_demangle,0|He.__str73243);var k=Z}while(0);var k;return Oe=v,k}function Pr(r,a,e,i){var v,t,f,_=Oe;Oe+=24;var s=_,n=_+4,o=_+8,l=_+16,b=_+20;0==(0|a)&&Xa(0|He.__str72242,829,0|He.___func___demangle_datatype,0|He.__str121291);var f=(a+4|0)>>2;Se[f]=0;var t=(0|a)>>2;Se[t]=0;var v=(r+12|0)>>2,k=Me[v],u=k+1|0;Se[v]=u;var c=Ae[k],h=c<<24>>24;do if(95==(0|h)){Se[v]=k+2|0;var d=Ae[u],w=Zr(d);Se[t]=w}else if(67==(0|h)||68==(0|h)||69==(0|h)||70==(0|h)||71==(0|h)||72==(0|h)||73==(0|h)||74==(0|h)||75==(0|h)||77==(0|h)||78==(0|h)||79==(0|h)||88==(0|h)||90==(0|h)){var p=Qr(c);Se[t]=p}else if(84==(0|h)||85==(0|h)||86==(0|h)||89==(0|h)){var E=qr(r);if(0==(0|E))break;var A=0==(32768&Se[r>>2]|0);do if(A)if(84==(0|h))var g=0|He.__str122292;else if(85==(0|h))var g=0|He.__str123293;else if(86==(0|h))var g=0|He.__str124294;else{if(89!=(0|h)){var g=0;break}var g=0|He.__str125295}else var g=0;while(0);var g,y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=g,Se[ne+4>>2]=E,ne));Se[t]=y}else if(63==(0|h))if(0==(0|i))$r(a,r,e,63,0);else{var m=Lr(r);if(0==(0|m))break;var S=Dr(r,0|He.__str126296,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne));Se[t]=S}else if(65==(0|h)||66==(0|h))$r(a,r,e,c,i);else if(81==(0|h)||82==(0|h)||83==(0|h)){var M=0==(0|i)?80:c;$r(a,r,e,M,i)}else if(80==(0|h))if(((Ae[u]<<24>>24)-48|0)>>>0<10){var C=k+2|0;if(Se[v]=C,Ae[u]<<24>>24!=54)break;var R=r+44|0,T=Se[R>>2];Se[v]=k+3|0;var O=Ae[C],N=Se[r>>2]&-17,I=Ur(O,s,n,N);if(0==(0|I))break;var P=Pr(r,o,e,0);if(0==(0|P))break;var D=Xr(r,e,1,40,41);if(0==(0|D))break;Se[R>>2]=T;var L=Se[o>>2],F=Se[o+4>>2],X=Se[s>>2],j=Dr(r,0|He.__str127297,(ne=Oe,Oe+=12,Se[ne>>2]=L,Se[ne+4>>2]=F,Se[ne+8>>2]=X,ne));Se[t]=j;var U=Dr(r,0|He.__str128298,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[f]=U}else $r(a,r,e,80,i);else if(87==(0|h)){if(Ae[u]<<24>>24!=52)break;Se[v]=k+2|0;var x=qr(r);if(0==(0|x))break;if(0==(32768&Se[r>>2]|0)){var z=Dr(r,0|He.__str129299,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne));Se[t]=z}else Se[t]=x}else if(48==(0|h)||49==(0|h)||50==(0|h)||51==(0|h)||52==(0|h)||53==(0|h)||54==(0|h)||55==(0|h)||56==(0|h)||57==(0|h)){var V=h<<1,B=V-96|0,H=Yr(e,B);Se[t]=H;var K=V-95|0,Y=Yr(e,K);Se[f]=Y}else if(36==(0|h)){var G=k+2|0;Se[v]=G;var W=Ae[u]<<24>>24;if(48==(0|W)){var Z=Lr(r);Se[t]=Z}else if(68==(0|W)){var Q=Lr(r);if(0==(0|Q))break;var q=Dr(r,0|He.__str130300,(ne=Oe,Oe+=4,Se[ne>>2]=Q,ne));Se[t]=q}else if(70==(0|W)){var $=Lr(r);if(0==(0|$))break;var J=Lr(r);if(0==(0|J))break;var rr=Dr(r,0|He.__str131301,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=J,ne));Se[t]=rr}else if(71==(0|W)){var ar=Lr(r);if(0==(0|ar))break;var er=Lr(r);if(0==(0|er))break;var ir=Lr(r);if(0==(0|ir))break;var vr=Dr(r,0|He.__str132302,(ne=Oe,Oe+=12,Se[ne>>2]=ar,Se[ne+4>>2]=er,Se[ne+8>>2]=ir,ne));Se[t]=vr}else if(81==(0|W)){var tr=Lr(r);if(0==(0|tr))break;var fr=Dr(r,0|He.__str133303,(ne=Oe,Oe+=4,Se[ne>>2]=tr,ne));Se[t]=fr}else{if(36!=(0|W))break;if(Ae[G]<<24>>24!=67)break;Se[v]=k+3|0;var _r=xr(r,l,b);if(0==(0|_r))break;var sr=Pr(r,a,e,i);if(0==(0|sr))break;var nr=Se[t],or=Se[l>>2],lr=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=nr,Se[ne+4>>2]=or,ne));Se[t]=lr}}while(0);var br=0!=(0|Se[t])&1;return Oe=_,br}function Dr(r,a){var e,i=Oe;Oe+=4;var v=i,e=v>>2,t=v;Se[t>>2]=arguments[Dr.length];var f=1,_=0;r:for(;;){var _,f,s=Ae[a+_|0];do{if(s<<24>>24==0)break r;if(s<<24>>24==37){var n=_+1|0,o=Ae[a+n|0]<<24>>24;if(115==(0|o)){var l=Se[e],b=l,k=l+4|0;Se[e]=k;var u=Se[b>>2];if(0==(0|u)){var c=f,h=n;break}var d=Ca(u),c=d+f|0,h=n;break}if(99==(0|o)){var w=Se[e]+4|0;Se[e]=w;var c=f+1|0,h=n;break}if(37==(0|o))var p=n;else var p=_;var p,c=f+1|0,h=p}else var c=f+1|0,h=_}while(0);var h,c,f=c,_=h+1|0}var E=Wr(r,f);if(0==(0|E))var A=0;else{Se[t>>2]=arguments[Dr.length];var g=E,y=0;r:for(;;){var y,g,m=Ae[a+y|0];do{if(m<<24>>24==0)break r;if(m<<24>>24==37){var S=y+1|0,M=Ae[a+S|0]<<24>>24;if(115==(0|M)){var C=Se[e],R=C,T=C+4|0;Se[e]=T;var O=Se[R>>2];if(0==(0|O)){var N=g,I=S;break}var P=Ca(O);Pa(g,O,P,1);var N=g+P|0,I=S;break}if(99==(0|M)){var D=Se[e],L=D,F=D+4|0;Se[e]=F,Ae[g]=255&Se[L>>2];var N=g+1|0,I=S;break}if(37==(0|M))var X=S;else var X=y;var X;Ae[g]=37;var N=g+1|0,I=X}else{Ae[g]=m;var N=g+1|0,I=y}}while(0);var I,N,g=N,y=I+1|0}Ae[g]=0;var A=E}var A;return Oe=i,A}function Lr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==63){var v=e+1|0;Se[a]=v;var t=1,f=v,_=Ae[v]}else var t=0,f=e,_=i;var _,f,t,s=(_-48&255&255)<9;do if(s){var n=Wr(r,3),o=0!=(0|t);o&&(Ae[n]=45);var l=Ae[Se[a]]+1&255;Ae[n+t|0]=l;var b=o?2:1;\nAe[n+b|0]=0;var k=Se[a]+1|0;Se[a]=k;var u=n}else if(_<<24>>24==57){var c=Wr(r,4),h=0!=(0|t);h&&(Ae[c]=45),Ae[c+t|0]=49;var d=h?2:1;Ae[c+d|0]=48;var w=h?3:2;Ae[c+w|0]=0;var p=Se[a]+1|0;Se[a]=p;var u=c}else{if((_-65&255&255)>=16){var u=0;break}for(var E=0,A=f;;){var A,E,g=A+1|0;Se[a]=g;var y=(Ae[A]<<24>>24)+((E<<4)-65)|0,m=ge[g];if((m-65&255&255)>=16)break;var E=y,A=g}if(m<<24>>24!=64){var u=0;break}var S=Wr(r,17),M=0!=(0|t)?0|He.__str119289:0|ii,C=(za(S,0|He.__str118288,(ne=Oe,Oe+=8,Se[ne>>2]=M,Se[ne+4>>2]=y,ne)),Se[a]+1|0);Se[a]=C;var u=S}while(0);var u;return u}function Fr(r,a,e,i){var v,t,f,_;0==(0|a)&&Xa(0|He.__str72242,212,0|He.___func___str_array_push,0|He.__str115285),0==(0|i)&&Xa(0|He.__str72242,213,0|He.___func___str_array_push,0|He.__str116286);var f=(i+12|0)>>2,s=Me[f],n=0==(0|s);do{if(n){Se[f]=32;var o=Wr(r,128);if(0==(0|o)){var l=0;_=17;break}Se[i+16>>2]=o,_=11;break}if(Me[i+8>>2]>>>0>>0){_=11;break}var b=s<<3,k=Wr(r,b);if(0==(0|k)){var l=0;_=17;break}var u=k,c=i+16|0,h=Se[c>>2],d=Se[f]<<2;Pa(k,h,d,1);var w=Se[f]<<1;Se[f]=w,Se[c>>2]=u,_=11;break}while(0);do if(11==_){if((0|e)==-1)var p=Ca(a),E=p;else var E=e;var E,A=ja(a),g=E+1|0,y=Wr(r,g),t=(i+4|0)>>2,v=(i+16|0)>>2,m=(Se[t]<<2)+Se[v]|0;Se[m>>2]=y;var S=Se[Se[v]+(Se[t]<<2)>>2];if(0==(0|S)){Xa(0|He.__str72242,233,0|He.___func___str_array_push,0|He.__str117287);var M=Se[Se[v]+(Se[t]<<2)>>2]}else var M=S;var M;Pa(M,A,E,1),va(A),Ae[Se[Se[v]+(Se[t]<<2)>>2]+g|0]=0;var C=Se[t]+1|0;Se[t]=C;var R=i+8|0;if(C>>>0>2]>>>0){var l=1;break}Se[R>>2]=C;var l=1}while(0);var l;return l}function Xr(r,a,e,i,v){var t,f,_=Oe;Oe+=28;var s,n=_,o=_+8;Cr(o);var f=(r+12|0)>>2,l=0==(0|e),t=(0|n)>>2,b=n+4|0;r:do if(l)for(;;){var k=Se[f],u=Ae[k];if(u<<24>>24==0){s=12;break r}if(u<<24>>24==64){var c=k;s=7;break r}var h=Pr(r,n,a,1);if(0==(0|h)){var d=0;s=25;break r}var w=Se[t],p=Se[b>>2],E=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=w,Se[ne+4>>2]=p,ne)),A=Fr(r,E,-1,o);if(0==(0|A)){var d=0;s=25;break r}var g=Se[t],y=Da(g,0|He.__str110280);if(0==(0|y)){s=12;break r}}else for(;;){var m=Se[f],S=Ae[m];if(S<<24>>24==0){s=12;break r}if(S<<24>>24==64){var c=m;s=7;break r}var M=Pr(r,n,a,1);if(0==(0|M)){var d=0;s=25;break r}var C=Se[t],R=Da(C,0|He.__str84254);if(0==(0|R)){s=13;break r}var T=Se[b>>2],O=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=C,Se[ne+4>>2]=T,ne)),N=Fr(r,O,-1,o);if(0==(0|N)){var d=0;s=25;break r}var I=Se[t],P=Da(I,0|He.__str110280);if(0==(0|P)){s=12;break r}}while(0);do if(7==s){var c;Se[f]=c+1|0,s=12;break}while(0);do if(12==s){if(l){s=14;break}s=13;break}while(0);do if(13==s){var D=Se[f],L=D+1|0;if(Se[f]=L,Ae[D]<<24>>24==90){s=14;break}var d=0;s=25;break}while(0);r:do if(14==s){var F=o+4|0,X=Me[F>>2];do{if(0!=(0|X)){if(1==(0|X)){var j=o+16|0,U=Se[Se[j>>2]>>2],x=Da(U,0|He.__str84254);if(0==(0|x)){s=17;break}var z=j;s=20;break}var V=o+16|0;if(X>>>0<=1){var z=V;s=20;break}for(var B=0,H=1;;){var H,B,K=Se[Se[V>>2]+(H<<2)>>2],Y=Dr(r,0|He.__str112282,(ne=Oe,Oe+=8,Se[ne>>2]=B,Se[ne+4>>2]=K,ne)),G=H+1|0;if(G>>>0>=Me[F>>2]>>>0)break;var B=Y,H=G}if(0==(0|Y)){var z=V;s=20;break}var W=Y,Z=Y;s=21;break}s=17}while(0);if(17==s){var Q=i<<24>>24,q=v<<24>>24,$=Dr(r,0|He.__str111281,(ne=Oe,Oe+=8,Se[ne>>2]=Q,Se[ne+4>>2]=q,ne)),d=$;break}if(20==s)var z,W=Se[Se[z>>2]>>2],Z=0;var Z,W,J=v<<24>>24,rr=v<<24>>24==62;do if(rr){var ar=Ca(W);if(Ae[W+(ar-1)|0]<<24>>24!=62)break;var er=i<<24>>24,ir=Se[Se[o+16>>2]>>2],vr=Dr(r,0|He.__str113283,(ne=Oe,Oe+=16,Se[ne>>2]=er,Se[ne+4>>2]=ir,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=vr;break r}while(0);var tr=i<<24>>24,fr=Se[Se[o+16>>2]>>2],_r=Dr(r,0|He.__str114284,(ne=Oe,Oe+=16,Se[ne>>2]=tr,Se[ne+4>>2]=fr,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=_r}while(0);var d;return Oe=_,d}function jr(r){var a,e=Oe;Oe+=20;var i=e,v=r+24|0,t=Se[v>>2],a=(r+20|0)>>2,f=Se[a],_=r+44|0,s=Se[_>>2];Se[a]=t;var n=Kr(r);if(0==(0|n))var o=0;else{Cr(i);var l=Xr(r,i,0,60,62);if(0==(0|l))var b=n;else var k=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=n,Se[ne+4>>2]=l,ne)),b=k;var b;Se[v>>2]=t,Se[a]=f,Se[_>>2]=s;var o=b}var o;return Oe=e,o}function Ur(r,a,e,i){var v,t=a>>2;Se[e>>2]=0,Se[t]=0;var f=0==(18&i|0);do{if(f){var _=r<<24>>24,s=1==((_-65)%2|0);if(0==(1&i|0)){if(s?Se[e>>2]=0|He.__str95265:v=14,65==(0|_)||66==(0|_)){Se[t]=0|He.__str96266,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str97267,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str98268,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str99269,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str100270,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str101271,v=21;break}var n=0;v=22;break}if(s?Se[e>>2]=0|He.__str88258:v=5,65==(0|_)||66==(0|_)){Se[t]=0|He.__str89259,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str90260,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str91261,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str92262,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str93263,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str94264,v=21;break}var n=0;v=22;break}v=21}while(0);if(21==v)var n=1;var n;return n}function xr(r,a,e){var i;Se[e>>2]=0;var i=(r+12|0)>>2,v=Se[i];if(Ae[v]<<24>>24==69){Se[e>>2]=0|He.__str102272;var t=Se[i]+1|0;Se[i]=t;var f=t}else var f=v;var f;Se[i]=f+1|0;var _=Ae[f]<<24>>24;if(65==(0|_)){Se[a>>2]=0;var s=1}else if(66==(0|_)){Se[a>>2]=0|He.__str103273;var s=1}else if(67==(0|_)){Se[a>>2]=0|He.__str104274;var s=1}else if(68==(0|_)){Se[a>>2]=0|He.__str105275;var s=1}else var s=0;var s;return s}function zr(r){var a,e,a=(r+12|0)>>2,i=r+40|0,v=r+20|0,t=0|i,f=r+44|0,_=r+48|0,s=r+52|0,n=r+56|0,o=r+20|0,l=r+24|0,b=r+16|0,k=0;r:for(;;){var k,u=Se[a],c=Ae[u];if(c<<24>>24==64){var h=u+1|0;Se[a]=h;var d=1;break}var w=c<<24>>24;do{if(0==(0|w)){var d=0;break r}if(48==(0|w)||49==(0|w)||50==(0|w)||51==(0|w)||52==(0|w)||53==(0|w)||54==(0|w)||55==(0|w)||56==(0|w)||57==(0|w)){var p=u+1|0;Se[a]=p;var E=(Ae[u]<<24>>24)-48|0,A=Yr(v,E),g=A;e=14;break}if(63==(0|w)){var y=u+1|0;Se[a]=y;var m=Ae[y]<<24>>24;if(36==(0|m)){var S=u+2|0;Se[a]=S;var M=jr(r);if(0==(0|M)){var d=0;break r}var C=Fr(r,M,-1,v);if(0==(0|C)){var d=0;break r}var R=M;e=15;break}if(63==(0|m)){var T=Se[t>>2],O=Se[f>>2],N=Se[_>>2],I=Se[s>>2],P=Se[n>>2],D=Se[o>>2],L=Se[l>>2];Cr(i);var F=Ir(r);if(0==(0|F))var X=k;else var j=Se[b>>2],U=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=j,ne)),X=U;var X;Se[o>>2]=D,Se[l>>2]=L,Se[t>>2]=T,Se[f>>2]=O,Se[_>>2]=N,Se[s>>2]=I,Se[n>>2]=P;var g=X;e=14;break}var x=Lr(r);if(0==(0|x)){var d=0;break r}var z=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne)),g=z;e=14;break}var V=Kr(r),g=V;e=14;break}while(0);if(14==e){var g;if(0==(0|g)){var d=0;break}var R=g}var R,B=Fr(r,R,-1,i);if(0==(0|B)){var d=0;break}var k=R}var d;return d}function Vr(r){var a,e,i,v=Oe;Oe+=36;var t,f=v,i=f>>2,_=v+4,s=v+8,e=s>>2,n=v+16;Se[i]=0;var o=0|r,l=Se[o>>2],b=0==(128&l|0),k=r+12|0;do if(b){var u=Ae[Se[k>>2]]<<24>>24;if(48==(0|u))var c=0|He.__str76246,h=k,a=h>>2;else if(49==(0|u))var c=0|He.__str77247,h=k,a=h>>2;else{if(50!=(0|u)){var c=0,h=k,a=h>>2;break}var c=0|He.__str78248,h=k,a=h>>2}}else var c=0,h=k,a=h>>2;while(0);var h,c,d=0==(512&l|0);do if(d){if((Ae[Se[a]]-48&255&255)>=3){var w=0;break}var w=0|He.__str79249}else var w=0;while(0);var w,p=Gr(r,0),E=Se[a],A=E+1|0;Se[a]=A;var g=Ae[E]<<24>>24;do{if(48==(0|g)||49==(0|g)||50==(0|g)||51==(0|g)||52==(0|g)||53==(0|g)){var y=r+44|0,m=Se[y>>2];Cr(n);var S=Pr(r,s,n,0);if(0==(0|S)){var M=0;t=28;break}var C=xr(r,f,_);if(0==(0|C)){var M=0;t=28;break}var R=Se[i],T=0==(0|R),O=Se[_>>2];do if(T)Se[i]=O;else{if(0==(0|O))break;var N=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=R,Se[ne+4>>2]=O,ne));Se[i]=N}while(0);Se[y>>2]=m,t=22;break}if(54==(0|g)||55==(0|g)){var I=s+4|0;Se[I>>2]=0,Se[e]=0;var P=xr(r,f,_);if(0==(0|P)){var M=0;t=28;break}if(Ae[Se[a]]<<24>>24==64){t=22;break}var D=qr(r);if(0==(0|D)){var M=0;t=28;break}var L=Dr(r,0|He.__str107277,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[I>>2]=L,t=22;break}if(56==(0|g)||57==(0|g)){Se[e+1]=0,Se[e]=0,Se[i]=0,t=22;break}var M=0;t=28}while(0);if(22==t){var F=0==(4096&Se[o>>2]|0);do{if(F){var X=Se[e],j=Se[i];if(0==(0|j)){var U=X;t=26;break}var x=0!=(0|X)?0|He.__str87257:0,z=0|He.__str87257,V=j,B=x,H=X;t=27;break}Se[i]=0,Se[e+1]=0,Se[e]=0;var U=0;t=26;break}while(0);if(26==t)var U,K=0!=(0|U)?0|He.__str87257:0,z=K,V=0,B=0,H=U;var H,B,V,z,Y=Se[e+1],G=Dr(r,0|He.__str108278,(ne=Oe,Oe+=32,Se[ne>>2]=c,Se[ne+4>>2]=w,Se[ne+8>>2]=H,Se[ne+12>>2]=B,Se[ne+16>>2]=V,Se[ne+20>>2]=z,Se[ne+24>>2]=p,Se[ne+28>>2]=Y,ne));Se[r+16>>2]=G;var M=1}var M;return Oe=v,M}function Br(r,a){var e,i,v,t,f=Oe;Oe+=44;var _,s=f,t=s>>2,n=f+8,o=f+12,v=o>>2,l=f+16,b=f+20,k=f+40;Se[v]=0;var i=(r+12|0)>>2,u=Se[i],c=u+1|0;Se[i]=c;var h=ge[u],d=h<<24>>24,w=(h-65&255&255)>25;r:do if(w)var p=0;else{var e=(0|r)>>2,E=Me[e],A=0==(128&E|0),g=d-65|0;do if(A){var y=g/8|0;if(0==(0|y))var m=0|He.__str76246,S=g;else if(1==(0|y))var m=0|He.__str77247,S=g;else{if(2!=(0|y)){var m=0,S=g;break}var m=0|He.__str78248,S=g}}else var m=0,S=g;while(0);var S,m,M=0==(512&E|0)&h<<24>>24<89,C=(0|S)%8;do if(M)if(2==(0|C)||3==(0|C))var R=m,T=0|He.__str79249;else if(4==(0|C)||5==(0|C))var R=m,T=0|He.__str80250;else{if(6!=(0|C)&&7!=(0|C)){var R=m,T=0;break}var O=Dr(r,0|He.__str81251,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne)),R=O,T=0|He.__str80250}else var R=m,T=0;while(0);var T,R,N=Gr(r,0),I=6==(0|C);do{if(!I){if(7==((d-56)%8|0)){_=14;break}var P=N;_=15;break}_=14}while(0);if(14==_)var D=Lr(r),L=Dr(r,0|He.__str82252,(ne=Oe,Oe+=8,Se[ne>>2]=N,Se[ne+4>>2]=D,ne)),P=L;var P,F=h<<24>>24>88;do if(F)var X=0;else{if((C-2|0)>>>0<2){var X=0;break}var j=xr(r,o,k);if(0==(0|j)){var p=0;break r}var U=Me[v],x=Se[k>>2];if(0==(0|U)&0==(0|x)){var X=0;break}var z=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=U,Se[ne+4>>2]=x,ne));Se[v]=z;var X=z}while(0);var X,V=Se[i],B=V+1|0;Se[i]=B;var H=Ae[V],K=Se[e],Y=Ur(H,n,l,K);if(0==(0|Y)){var p=0;break}Cr(b);var G=Se[i];if(Ae[G]<<24>>24==64){Se[t]=0|He.__str84254,Se[t+1]=0;var W=G+1|0;Se[i]=W}else{var Z=Pr(r,s,b,0);if(0==(0|Z)){var p=0;break}}if(0!=(4&Se[e]|0)&&(Se[t+1]=0,Se[t]=0),0==(0|a))var Q=P;else{var q=0|s,$=Se[q>>2],J=s+4|0,rr=Se[J>>2],ar=Dr(r,0|He.__str85255,(ne=Oe,Oe+=12,Se[ne>>2]=P,Se[ne+4>>2]=$,Se[ne+8>>2]=rr,ne));Se[J>>2]=0,Se[q>>2]=0;var Q=ar}var Q,er=r+44|0,ir=Se[er>>2],vr=Xr(r,b,1,40,41);if(0==(0|vr)){var p=0;break}if(0==(4096&Se[e]|0))var tr=vr,fr=X;else{Se[v]=0;var tr=0,fr=0}var fr,tr;Se[er>>2]=ir;var _r=Se[t],sr=Se[t+1];if(0==(0|_r))var nr=0;else var or=0!=(0|sr)?0:0|He.__str87257,nr=or;var nr,lr=Se[n>>2],br=0!=(0|lr)?0|He.__str87257:0,kr=Se[l>>2],ur=Dr(r,0|He.__str86256,(ne=Oe,Oe+=44,Se[ne>>2]=R,Se[ne+4>>2]=T,Se[ne+8>>2]=_r,Se[ne+12>>2]=nr,Se[ne+16>>2]=lr,Se[ne+20>>2]=br,Se[ne+24>>2]=kr,Se[ne+28>>2]=Q,Se[ne+32>>2]=tr,Se[ne+36>>2]=fr,Se[ne+40>>2]=sr,ne));Se[r+16>>2]=ur;var p=1}while(0);var p;return Oe=f,p}function Hr(r){var a,a=(r+12|0)>>2,e=Se[a];if(Ae[e]<<24>>24==36)var i=e;else{Xa(0|He.__str72242,1252,0|He.___func___handle_template,0|He.__str74244);var i=Se[a]}var i;Se[a]=i+1|0;var v=Kr(r),t=0==(0|v);do if(t)var f=0;else{var _=Xr(r,0,0,60,62);if(0==(0|_)){var f=0;break}var s=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=v,Se[ne+4>>2]=_,ne));Se[r+16>>2]=s;var f=1}while(0);var f;return f}function Kr(r){for(var a,a=(r+12|0)>>2,e=Me[a],i=e,v=Ae[e];;){var v,i;if(!((v-65&255&255)<26|(v-97&255&255)<26|(v-48&255&255)<10)&&v<<24>>24!=95&&v<<24>>24!=36){var t=0;break}var f=i+1|0;Se[a]=f;var _=ge[f];if(_<<24>>24==64){Se[a]=i+2|0;var s=f-e|0,n=r+20|0,o=Fr(r,e,s,n);if(0==(0|o)){var t=0;break}var l=Se[r+24>>2]-1-Se[n>>2]|0,b=Yr(n,l),t=b;break}var i=f,v=_}var t;return t}function Yr(r,a){0==(0|r)&&Xa(0|He.__str72242,263,0|He.___func___str_array_get_ref,0|He.__str75245);var e=Se[r>>2]+a|0;if(e>>>0>2]>>>0)var i=Se[Se[r+16>>2]+(e<<2)>>2];else var i=0;var i;return i}function Gr(r,a){var e,e=(r+44|0)>>2,i=Me[e];if(i>>>0>a>>>0){for(var v=r+56|0,t=a,f=0,_=Se[v>>2],s=i;;){var s,_,f,t,n=Me[_+(t<<2)>>2];if(0==(0|n)){Xa(0|He.__str72242,680,0|He.___func___get_class_string,0|He.__str106276);var o=Se[v>>2],l=o,b=Se[o+(t<<2)>>2],k=Se[e]}else var l=_,b=n,k=s;var k,b,l,u=Ca(b),c=u+(f+2)|0,h=t+1|0;if(h>>>0>=k>>>0)break;var t=h,f=c,_=l,s=k}var d=c-1|0}else var d=-1;var d,w=Wr(r,d);if(0==(0|w))var p=0;else{var E=Se[e]-1|0,A=(0|E)<(0|a);r:do if(A)var g=0;else for(var y=r+56|0,m=0,S=E;;){var S,m,M=Se[Se[y>>2]+(S<<2)>>2],C=Ca(M),R=w+m|0;Pa(R,M,C,1);var T=C+m|0;if((0|S)>(0|a)){var O=T+1|0;Ae[w+T|0]=58;var N=T+2|0;Ae[w+O|0]=58;var I=N}else var I=T;var I,P=S-1|0;if((0|P)<(0|a)){var g=I;break r}var m=I,S=P}while(0);var g;Ae[w+g|0]=0;var p=w}var p;return p}function Wr(r,a){var e,i=a>>>0>1020;do if(i){var v=Se[r+4>>2],t=a+4|0,f=pe[v](t);if(0==(0|f)){var _=0;break}var s=r+60|0,n=Se[s>>2],o=f;Se[o>>2]=n,Se[s>>2]=f,Se[r+64>>2]=0;var _=f+4|0}else{var e=(r+64|0)>>2,l=Me[e];if(l>>>0>>0){var b=Se[r+4>>2],k=pe[b](1024);if(0==(0|k)){var _=0;break}var u=r+60|0,c=Se[u>>2],h=k;Se[h>>2]=c,Se[u>>2]=k,Se[e]=1020;var d=1020,w=k}else var d=l,w=Se[r+60>>2];var w,d;Se[e]=d-a|0;var _=w+(1024-d)|0}while(0);var _;return _}function Zr(r){var a=r<<24>>24;if(68==(0|a))var e=0|He.__str157327;else if(69==(0|a))var e=0|He.__str158328;else if(70==(0|a))var e=0|He.__str159329;else if(71==(0|a))var e=0|He.__str160330;else if(72==(0|a))var e=0|He.__str161331;else if(73==(0|a))var e=0|He.__str162332;else if(74==(0|a))var e=0|He.__str163333;else if(75==(0|a))var e=0|He.__str164334;else if(76==(0|a))var e=0|He.__str165335;else if(77==(0|a))var e=0|He.__str166336;else if(78==(0|a))var e=0|He.__str167337;else if(87==(0|a))var e=0|He.__str168338;else var e=0;var e;return e}function Qr(r){var a=r<<24>>24;if(67==(0|a))var e=0|He.__str145315;else if(68==(0|a))var e=0|He.__str146316;else if(69==(0|a))var e=0|He.__str147317;else if(70==(0|a))var e=0|He.__str148318;else if(71==(0|a))var e=0|He.__str149319;else if(72==(0|a))var e=0|He.__str150320;else if(73==(0|a))var e=0|He.__str151321;else if(74==(0|a))var e=0|He.__str152322;else if(75==(0|a))var e=0|He.__str153323;else if(77==(0|a))var e=0|He.__str154324;else if(78==(0|a))var e=0|He.__str155325;else if(79==(0|a))var e=0|He.__str156326;else if(88==(0|a))var e=0|He.__str84254;else if(90==(0|a))var e=0|He.__str110280;else var e=0;var e;return e}function qr(r){var a=r+44|0,e=Se[a>>2],i=zr(r);if(0==(0|i))var v=0;else var t=Gr(r,e),v=t;var v;return Se[a>>2]=e,v}function $r(r,a,e,i,v){var t,f,_,s=Oe;Oe+=16;var n,o=s,_=o>>2,l=s+4,b=s+8,f=b>>2;Se[l>>2]=0|ii;var t=(a+12|0)>>2,k=Se[t];if(Ae[k]<<24>>24==69){Se[l>>2]=0|He.__str134304;var u=k+1|0;Se[t]=u;var c=0|He.__str134304}else var c=0|ii;var c,h=i<<24>>24;do{if(65==(0|h)){var d=Dr(a,0|He.__str135305,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=d;n=10;break}if(66==(0|h)){var p=Dr(a,0|He.__str136306,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=p;n=10;break}if(80==(0|h)){var E=Dr(a,0|He.__str137307,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=E;n=10;break}if(81==(0|h)){var A=Dr(a,0|He.__str138308,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=A;n=10;break}if(82==(0|h)){var g=Dr(a,0|He.__str139309,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=g;n=10;break}if(83==(0|h)){var y=Dr(a,0|He.__str140310,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=y;n=10;break}if(63==(0|h)){var w=0|ii;n=10}else n=31}while(0);r:do if(10==n){var w,m=xr(a,o,l);if(0==(0|m))break;var S=a+44|0,M=Se[S>>2],C=Se[t],R=Ae[C]<<24>>24==89;a:do if(R){var T=C+1|0;Se[t]=T;var O=Lr(a);if(0==(0|O))break r;var N=Ha(O),I=Ae[w]<<24>>24==32,P=Se[_],D=0==(0|P);do{if(I){if(!D){n=17;break}var L=w+1|0;n=18;break}if(D){var L=w;n=18;break}n=17;break}while(0);if(17==n){var F=Dr(a,0|He.__str141311,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=w,ne));Se[_]=0;var X=F}else if(18==n)var L,j=Dr(a,0|He.__str142312,(ne=Oe,Oe+=4,Se[ne>>2]=L,ne)),X=j;var X;if(0==(0|N)){var U=X;break}for(var x=X,z=N;;){var z,x,V=z-1|0,B=Lr(a),H=Dr(a,0|He.__str143313,(ne=Oe,Oe+=8,Se[ne>>2]=x,Se[ne+4>>2]=B,ne));if(0==(0|V)){var U=H;break a}var x=H,z=V}}else var U=w;while(0);var U,K=Pr(a,b,e,0);if(0==(0|K))break;var Y=Se[_];if(0==(0|Y)){var G=0==(0|v);do if(G){if(Ae[U]<<24>>24==0){var W=U;break}var Z=U+1|0;if(Ae[Z]<<24>>24!=42){var W=U;break}var Q=Se[f],q=Ca(Q);if(Ae[Q+(q-1)|0]<<24>>24!=42){var W=U;break}var W=Z}else var W=U;while(0);var W,$=Se[f],J=Dr(a,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=W,ne));Se[r>>2]=J}else{var rr=Se[f],ar=Dr(a,0|He.__str144314,(ne=Oe,Oe+=12,Se[ne>>2]=rr,Se[ne+4>>2]=Y,Se[ne+8>>2]=U,ne));Se[r>>2]=ar}var er=Se[f+1];Se[r+4>>2]=er,Se[S>>2]=M}while(0);Oe=s}function Jr(r){var a,e=r>>>0<245;do{if(e){if(r>>>0<11)var i=16;else var i=r+11&-8;var i,v=i>>>3,t=Me[vi>>2],f=t>>>(v>>>0);if(0!=(3&f|0)){var _=(1&f^1)+v|0,s=_<<1,n=(s<<2)+vi+40|0,o=(s+2<<2)+vi+40|0,l=Me[o>>2],b=l+8|0,k=Me[b>>2];if((0|n)==(0|k))Se[vi>>2]=t&(1<<_^-1);else{if(k>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[o>>2]=k,Se[k+12>>2]=n}var u=_<<3;Se[l+4>>2]=3|u;var c=l+(4|u)|0,h=1|Se[c>>2];Se[c>>2]=h;var d=b;a=38;break}if(i>>>0<=Me[vi+8>>2]>>>0){var w=i;a=30;break}if(0!=(0|f)){var p=2<>>12&16,y=A>>>(g>>>0),m=y>>>5&8,S=y>>>(m>>>0),M=S>>>2&4,C=S>>>(M>>>0),R=C>>>1&2,T=C>>>(R>>>0),O=T>>>1&1,N=(m|g|M|R|O)+(T>>>(O>>>0))|0,I=N<<1,P=(I<<2)+vi+40|0,D=(I+2<<2)+vi+40|0,L=Me[D>>2],F=L+8|0,X=Me[F>>2];if((0|P)==(0|X))Se[vi>>2]=t&(1<>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[D>>2]=X,Se[X+12>>2]=P}var j=N<<3,U=j-i|0;Se[L+4>>2]=3|i;var x=L,z=x+i|0;Se[x+(4|i)>>2]=1|U,Se[x+j>>2]=U;var V=Me[vi+8>>2];if(0!=(0|V)){var B=Se[vi+20>>2],H=V>>>2&1073741822,K=(H<<2)+vi+40|0,Y=Me[vi>>2],G=1<<(V>>>3),W=0==(Y&G|0);do{if(!W){var Z=(H+2<<2)+vi+40|0,Q=Me[Z>>2];if(Q>>>0>=Me[vi+16>>2]>>>0){var q=Q,$=Z;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=Y|G;var q=K,$=(H+2<<2)+vi+40|0}while(0);var $,q;Se[$>>2]=B,Se[q+12>>2]=B;var J=B+8|0;Se[J>>2]=q;var rr=B+12|0;Se[rr>>2]=K}Se[vi+8>>2]=U,Se[vi+20>>2]=z;var d=F;a=38;break}if(0==(0|Se[vi+4>>2])){var w=i;a=30;break}var ar=ra(i);if(0==(0|ar)){var w=i;a=30;break}var d=ar;a=38;break}if(r>>>0>4294967231){var w=-1;a=30;break}var er=r+11&-8;if(0==(0|Se[vi+4>>2])){var w=er;a=30;break}var ir=ea(er);if(0==(0|ir)){var w=er;a=30;break}var d=ir;a=38;break}while(0);if(30==a){var w,vr=Me[vi+8>>2];if(w>>>0>vr>>>0){var tr=Me[vi+12>>2];if(w>>>0>>0){var fr=tr-w|0;Se[vi+12>>2]=fr;var _r=Me[vi+24>>2],sr=_r;Se[vi+24>>2]=sr+w|0,Se[w+(sr+4)>>2]=1|fr,Se[_r+4>>2]=3|w;var d=_r+8|0}else var nr=aa(w),d=nr}else{var or=vr-w|0,lr=Me[vi+20>>2];if(or>>>0>15){var br=lr;Se[vi+20>>2]=br+w|0,Se[vi+8>>2]=or,Se[w+(br+4)>>2]=1|or,Se[br+vr>>2]=or,Se[lr+4>>2]=3|w}else{Se[vi+8>>2]=0,Se[vi+20>>2]=0,Se[lr+4>>2]=3|vr;var kr=vr+(lr+4)|0,ur=1|Se[kr>>2];Se[kr>>2]=ur}var d=lr+8|0}}var d;return d}function ra(r){var a,e,i,v=Se[vi+4>>2],t=(v&-v)-1|0,f=t>>>12&16,_=t>>>(f>>>0),s=_>>>5&8,n=_>>>(s>>>0),o=n>>>2&4,l=n>>>(o>>>0),b=l>>>1&2,k=l>>>(b>>>0),u=k>>>1&1,c=Me[vi+((s|f|o|b|u)+(k>>>(u>>>0))<<2)+304>>2],h=c,e=h>>2,d=(Se[c+4>>2]&-8)-r|0;r:for(;;)for(var d,h,w=h;;){var w,p=Se[w+16>>2];if(0==(0|p)){var E=Se[w+20>>2];if(0==(0|E))break r;var A=E}else var A=p;var A,g=(Se[A+4>>2]&-8)-r|0;if(g>>>0>>0){var h=A,e=h>>2,d=g;continue r}var w=A}var y=h,m=Me[vi+16>>2],S=y>>>0>>0;do if(!S){var M=y+r|0,C=M;if(y>>>0>=M>>>0)break;var R=Me[e+6],T=Me[e+3],O=(0|T)==(0|h);do if(O){var N=h+20|0,I=Se[N>>2];if(0==(0|I)){var P=h+16|0,D=Se[P>>2];if(0==(0|D)){var L=0,a=L>>2;break}var F=P,X=D}else{var F=N,X=I;i=14}for(;;){var X,F,j=X+20|0,U=Se[j>>2];if(0==(0|U)){var x=X+16|0,z=Me[x>>2];if(0==(0|z))break;var F=x,X=z}else var F=j,X=U}if(F>>>0>>0)throw Ka(),\"Reached an unreachable!\";Se[F>>2]=0;var L=X,a=L>>2}else{var V=Me[e+2];if(V>>>0>>0)throw Ka(),\"Reached an unreachable!\";Se[V+12>>2]=T,Se[T+8>>2]=V;var L=T,a=L>>2}while(0);var L,B=0==(0|R);r:do if(!B){var H=h+28|0,K=(Se[H>>2]<<2)+vi+304|0,Y=(0|h)==(0|Se[K>>2]);do{if(Y){if(Se[K>>2]=L,0!=(0|L))break;var G=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=G;break r}if(R>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";var W=R+16|0;if((0|Se[W>>2])==(0|h)?Se[W>>2]=L:Se[R+20>>2]=L,0==(0|L))break r}while(0);if(L>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+6]=R;var Z=Me[e+4];if(0!=(0|Z)){if(Z>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+4]=Z,Se[Z+24>>2]=L}var Q=Me[e+5];if(0==(0|Q))break;if(Q>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+5]=Q,Se[Q+24>>2]=L}while(0);if(d>>>0<16){var q=d+r|0;Se[e+1]=3|q;var $=q+(y+4)|0,J=1|Se[$>>2];Se[$>>2]=J}else{Se[e+1]=3|r,Se[r+(y+4)>>2]=1|d,Se[y+d+r>>2]=d;var rr=Me[vi+8>>2];if(0!=(0|rr)){var ar=Me[vi+20>>2],er=rr>>>2&1073741822,ir=(er<<2)+vi+40|0,vr=Me[vi>>2],tr=1<<(rr>>>3),fr=0==(vr&tr|0);do{if(!fr){var _r=(er+2<<2)+vi+40|0,sr=Me[_r>>2];if(sr>>>0>=Me[vi+16>>2]>>>0){var nr=sr,or=_r;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=vr|tr;var nr=ir,or=(er+2<<2)+vi+40|0}while(0);var or,nr;Se[or>>2]=ar,Se[nr+12>>2]=ar,Se[ar+8>>2]=nr,Se[ar+12>>2]=ir}Se[vi+8>>2]=d,Se[vi+20>>2]=C}return h+8|0}while(0);throw Ka(),\"Reached an unreachable!\"}function aa(r){var a,e;0==(0|Se[ti>>2])&&ba();var i=0==(4&Se[vi+440>>2]|0);do{if(i){var v=Se[vi+24>>2],t=0==(0|v);do{if(!t){var f=v,_=ua(f);if(0==(0|_)){e=6;break}var s=Se[ti+8>>2],n=r+47-Se[vi+12>>2]+s&-s;if(n>>>0>=2147483647){e=14;break}var o=re(n);if((0|o)==(Se[_>>2]+Se[_+4>>2]|0)){var l=o,b=n,k=o;e=13;break}var u=o,c=n;e=15;break}e=6}while(0);do if(6==e){var h=re(0);if((0|h)==-1){e=14;break}var d=Se[ti+8>>2],w=d+(r+47)&-d,p=h,E=Se[ti+4>>2],A=E-1|0;if(0==(A&p|0))var g=w;else var g=w-p+(A+p&-E)|0;var g;if(g>>>0>=2147483647){e=14;break}var y=re(g);if((0|y)==(0|h)){var l=h,b=g,k=y;e=13;break}var u=y,c=g;e=15;break}while(0);if(13==e){var k,b,l;if((0|l)!=-1){var m=b,S=l;e=26;break}var u=k,c=b}else if(14==e){var M=4|Se[vi+440>>2];Se[vi+440>>2]=M,e=23;break}var c,u,C=0|-c,R=(0|u)!=-1&c>>>0<2147483647;do{if(R){if(c>>>0>=(r+48|0)>>>0){var T=c;e=21;break}var O=Se[ti+8>>2],N=r+47-c+O&-O;if(N>>>0>=2147483647){var T=c;e=21;break}var I=re(N);if((0|I)==-1){re(C);e=22;break}var T=N+c|0;e=21;break}var T=c;e=21}while(0);if(21==e){var T;if((0|u)!=-1){var m=T,S=u;e=26;break}}var P=4|Se[vi+440>>2];Se[vi+440>>2]=P,e=23;break}e=23}while(0);do if(23==e){var D=Se[ti+8>>2],L=D+(r+47)&-D;if(L>>>0>=2147483647){e=49;break}var F=re(L),X=re(0);if(!((0|X)!=-1&(0|F)!=-1&F>>>0>>0)){e=49;break}var j=X-F|0;if(j>>>0<=(r+40|0)>>>0|(0|F)==-1){e=49;break}var m=j,S=F;e=26;break}while(0);r:do if(26==e){var S,m,U=Se[vi+432>>2]+m|0;Se[vi+432>>2]=U,U>>>0>Me[vi+436>>2]>>>0&&(Se[vi+436>>2]=U);var x=Me[vi+24>>2],z=0==(0|x);a:do if(z){var V=Me[vi+16>>2];0==(0|V)|S>>>0>>0&&(Se[vi+16>>2]=S),Se[vi+444>>2]=S,Se[vi+448>>2]=m,Se[vi+456>>2]=0;var B=Se[ti>>2];Se[vi+36>>2]=B,Se[vi+32>>2]=-1,ha(),ca(S,m-40|0)}else{for(var H=vi+444|0,a=H>>2;;){var H;if(0==(0|H))break;var K=Me[a],Y=H+4|0,G=Me[Y>>2],W=K+G|0;if((0|S)==(0|W)){if(0!=(8&Se[a+3]|0))break;var Z=x;if(!(Z>>>0>=K>>>0&Z>>>0>>0))break;Se[Y>>2]=G+m|0;var Q=Se[vi+24>>2],q=Se[vi+12>>2]+m|0;ca(Q,q);break a}var H=Se[a+2],a=H>>2}S>>>0>2]>>>0&&(Se[vi+16>>2]=S);for(var $=S+m|0,J=vi+444|0;;){var J;if(0==(0|J))break;var rr=0|J,ar=Me[rr>>2];if((0|ar)==(0|$)){if(0!=(8&Se[J+12>>2]|0))break;Se[rr>>2]=S;var er=J+4|0,ir=Se[er>>2]+m|0;Se[er>>2]=ir;var vr=da(S,ar,r),tr=vr;e=50;break r}var J=Se[J+8>>2]}Ma(S,m)}while(0);var fr=Me[vi+12>>2];if(fr>>>0<=r>>>0){e=49;break}var _r=fr-r|0;Se[vi+12>>2]=_r;var sr=Me[vi+24>>2],nr=sr;Se[vi+24>>2]=nr+r|0,Se[r+(nr+4)>>2]=1|_r,Se[sr+4>>2]=3|r;var tr=sr+8|0;e=50;break}while(0);if(49==e){var or=Je();Se[or>>2]=12;var tr=0}var tr;return tr}function ea(r){var a,e,i,v,t,f,_=r>>2,s=0|-r,n=r>>>8,o=0==(0|n);do if(o)var l=0;else{if(r>>>0>16777215){var l=31;break}var b=(n+1048320|0)>>>16&8,k=n<>>16&4,c=k<>>16&2,d=14-(u|b|h)+(c<>>15)|0,l=r>>>((d+7|0)>>>0)&1|d<<1}while(0);var l,w=Me[vi+(l<<2)+304>>2],p=0==(0|w);r:do if(p)var E=0,A=s,g=0;else{if(31==(0|l))var y=0;else var y=25-(l>>>1)|0;for(var y,m=0,S=s,M=w,t=M>>2,C=r<>>0>>0){if((0|T)==(0|r)){var E=M,A=O,g=M;break r}var N=M,I=O}else var N=m,I=S;var I,N,P=Me[t+5],D=Me[((C>>>31<<2)+16>>2)+t],L=0==(0|P)|(0|P)==(0|D)?R:P;if(0==(0|D)){var E=N,A=I,g=L;break r}var m=N,S=I,M=D,t=M>>2,C=C<<1,R=L}}while(0);var g,A,E,F=0==(0|g)&0==(0|E);do if(F){var X=2<>2]&(X|-X);if(0==(0|j)){var U=g;break}var x=(j&-j)-1|0,z=x>>>12&16,V=x>>>(z>>>0),B=V>>>5&8,H=V>>>(B>>>0),K=H>>>2&4,Y=H>>>(K>>>0),G=Y>>>1&2,W=Y>>>(G>>>0),Z=W>>>1&1,U=Se[vi+((B|z|K|G|Z)+(W>>>(Z>>>0))<<2)+304>>2]}else var U=g;while(0);var U,Q=0==(0|U);r:do if(Q)var q=A,$=E,v=$>>2;else for(var J=U,i=J>>2,rr=A,ar=E;;){var ar,rr,J,er=(Se[i+1]&-8)-r|0,ir=er>>>0>>0,vr=ir?er:rr,tr=ir?J:ar,fr=Me[i+4];if(0==(0|fr)){var _r=Me[i+5];if(0==(0|_r)){var q=vr,$=tr,v=$>>2;break r}var J=_r,i=J>>2,rr=vr,ar=tr}else var J=fr,i=J>>2,rr=vr,ar=tr}while(0);var $,q,sr=0==(0|$);r:do{if(!sr){if(q>>>0>=(Se[vi+8>>2]-r|0)>>>0){var nr=0;break}var or=$,e=or>>2,lr=Me[vi+16>>2],br=or>>>0>>0;do if(!br){var kr=or+r|0,ur=kr;if(or>>>0>=kr>>>0)break;var cr=Me[v+6],hr=Me[v+3],dr=(0|hr)==(0|$);do if(dr){var wr=$+20|0,pr=Se[wr>>2];if(0==(0|pr)){var Er=$+16|0,Ar=Se[Er>>2];if(0==(0|Ar)){var gr=0,a=gr>>2;break}var yr=Er,mr=Ar}else{var yr=wr,mr=pr;f=28}for(;;){var mr,yr,Sr=mr+20|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=mr+16|0,Rr=Me[Cr>>2];if(0==(0|Rr))break;var yr=Cr,mr=Rr}else var yr=Sr,mr=Mr}if(yr>>>0>>0)throw Ka(),\"Reached an unreachable!\";Se[yr>>2]=0;var gr=mr,a=gr>>2}else{var Tr=Me[v+2];if(Tr>>>0>>0)throw Ka(),\"Reached an unreachable!\";Se[Tr+12>>2]=hr,Se[hr+8>>2]=Tr;var gr=hr,a=gr>>2}while(0);var gr,Or=0==(0|cr);a:do if(!Or){var Nr=$+28|0,Ir=(Se[Nr>>2]<<2)+vi+304|0,Pr=(0|$)==(0|Se[Ir>>2]);do{if(Pr){if(Se[Ir>>2]=gr,0!=(0|gr))break;var Dr=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=Dr;break a}if(cr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";var Lr=cr+16|0;if((0|Se[Lr>>2])==(0|$)?Se[Lr>>2]=gr:Se[cr+20>>2]=gr,0==(0|gr))break a}while(0);if(gr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+6]=cr;var Fr=Me[v+4];if(0!=(0|Fr)){if(Fr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+4]=Fr,Se[Fr+24>>2]=gr}var Xr=Me[v+5];if(0==(0|Xr))break;if(Xr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+5]=Xr,Se[Xr+24>>2]=gr}while(0);var jr=q>>>0<16;a:do if(jr){var Ur=q+r|0;Se[v+1]=3|Ur;var xr=Ur+(or+4)|0,zr=1|Se[xr>>2];Se[xr>>2]=zr}else if(Se[v+1]=3|r,Se[_+(e+1)]=1|q,Se[(q>>2)+e+_]=q,q>>>0<256){var Vr=q>>>2&1073741822,Br=(Vr<<2)+vi+40|0,Hr=Me[vi>>2],Kr=1<<(q>>>3),Yr=0==(Hr&Kr|0);do{if(!Yr){var Gr=(Vr+2<<2)+vi+40|0,Wr=Me[Gr>>2];if(Wr>>>0>=Me[vi+16>>2]>>>0){var Zr=Wr,Qr=Gr;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=Hr|Kr;var Zr=Br,Qr=(Vr+2<<2)+vi+40|0}while(0);var Qr,Zr;Se[Qr>>2]=ur,Se[Zr+12>>2]=ur,Se[_+(e+2)]=Zr,Se[_+(e+3)]=Br}else{var qr=kr,$r=q>>>8,Jr=0==(0|$r);do if(Jr)var ra=0;else{if(q>>>0>16777215){var ra=31;break}var aa=($r+1048320|0)>>>16&8,ea=$r<>>16&4,va=ea<>>16&2,fa=14-(ia|aa|ta)+(va<>>15)|0,ra=q>>>((fa+7|0)>>>0)&1|fa<<1}while(0);var ra,_a=(ra<<2)+vi+304|0;Se[_+(e+7)]=ra;var sa=r+(or+16)|0;Se[_+(e+5)]=0,Se[sa>>2]=0;var na=Se[vi+4>>2],oa=1<>2]=la,Se[_a>>2]=qr,Se[_+(e+6)]=_a,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr}else{if(31==(0|ra))var ba=0;else var ba=25-(ra>>>1)|0;for(var ba,ka=q<>2];;){var ua,ka;if((Se[ua+4>>2]&-8|0)==(0|q)){var ca=ua+8|0,ha=Me[ca>>2],da=Me[vi+16>>2],wa=ua>>>0>>0;do if(!wa){if(ha>>>0>>0)break;Se[ha+12>>2]=qr,Se[ca>>2]=qr,Se[_+(e+2)]=ha,Se[_+(e+3)]=ua,Se[_+(e+6)]=0;break a}while(0);throw Ka(),\"Reached an unreachable!\"}var pa=(ka>>>31<<2)+ua+16|0,Ea=Me[pa>>2];if(0==(0|Ea)){if(pa>>>0>=Me[vi+16>>2]>>>0){Se[pa>>2]=qr,Se[_+(e+6)]=ua,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr;break a}throw Ka(),\"Reached an unreachable!\"}var ka=ka<<1,ua=Ea}}}while(0);var nr=$+8|0;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var nr=0}while(0);var nr;return nr}function ia(r){var a;0==(0|Se[ti>>2])&&ba();var e=r>>>0<4294967232;r:do if(e){var i=Me[vi+24>>2];if(0==(0|i)){var v=0;break}var t=Me[vi+12>>2],f=t>>>0>(r+40|0)>>>0;do if(f){var _=Me[ti+8>>2],s=-40-r-1+t+_|0,n=Math.floor((s>>>0)/(_>>>0)),o=(n-1)*_|0,l=i,b=ua(l);if(0!=(8&Se[b+12>>2]|0))break;var k=re(0),a=(b+4|0)>>2;if((0|k)!=(Se[b>>2]+Se[a]|0))break;var u=o>>>0>2147483646?-2147483648-_|0:o,c=0|-u,h=re(c),d=re(0);if(!((0|h)!=-1&d>>>0>>0))break;var w=k-d|0;if((0|k)==(0|d))break;var p=Se[a]-w|0;Se[a]=p;var E=Se[vi+432>>2]-w|0;Se[vi+432>>2]=E;var A=Se[vi+24>>2],g=Se[vi+12>>2]-w|0;ca(A,g);var v=(0|k)!=(0|d);break r}while(0);if(Me[vi+12>>2]>>>0<=Me[vi+28>>2]>>>0){var v=0;break}Se[vi+28>>2]=-1;var v=0}else var v=0;while(0);var v;return 1&v}function va(r){var a,e,i,v,t,f,_,s=r>>2,n=0==(0|r);r:do if(!n){var o=r-8|0,l=o,b=Me[vi+16>>2],k=o>>>0>>0;a:do if(!k){var u=Me[r-4>>2],c=3&u;if(1==(0|c))break;var h=u&-8,f=h>>2,d=r+(h-8)|0,w=d,p=0==(1&u|0);e:do if(p){var E=Me[o>>2];if(0==(0|c))break r;var A=-8-E|0,t=A>>2,g=r+A|0,y=g,m=E+h|0;if(g>>>0>>0)break a;if((0|y)==(0|Se[vi+20>>2])){var v=(r+(h-4)|0)>>2;if(3!=(3&Se[v]|0)){var S=y,i=S>>2,M=m;break}Se[vi+8>>2]=m;var C=Se[v]&-2;Se[v]=C,Se[t+(s+1)]=1|m,Se[d>>2]=m;break r}if(E>>>0<256){var R=Me[t+(s+2)],T=Me[t+(s+3)];if((0|R)!=(0|T)){var O=((E>>>2&1073741822)<<2)+vi+40|0,N=(0|R)!=(0|O)&R>>>0>>0;do if(!N){if(!((0|T)==(0|O)|T>>>0>=b>>>0))break;Se[R+12>>2]=T,Se[T+8>>2]=R;var S=y,i=S>>2,M=m;break e}while(0);throw Ka(),\"Reached an unreachable!\"}var I=Se[vi>>2]&(1<<(E>>>3)^-1);Se[vi>>2]=I;var S=y,i=S>>2,M=m}else{var P=g,D=Me[t+(s+6)],L=Me[t+(s+3)],F=(0|L)==(0|P);do if(F){var X=A+(r+20)|0,j=Se[X>>2];if(0==(0|j)){var U=A+(r+16)|0,x=Se[U>>2];if(0==(0|x)){var z=0,e=z>>2;break}var V=U,B=x}else{var V=X,B=j;_=21}for(;;){var B,V,H=B+20|0,K=Se[H>>2];if(0==(0|K)){var Y=B+16|0,G=Me[Y>>2];if(0==(0|G))break;var V=Y,B=G}else var V=H,B=K}if(V>>>0>>0)throw Ka(),\"Reached an unreachable!\";Se[V>>2]=0;var z=B,e=z>>2}else{var W=Me[t+(s+2)];if(W>>>0>>0)throw Ka(),\"Reached an unreachable!\";Se[W+12>>2]=L,Se[L+8>>2]=W;var z=L,e=z>>2}while(0);var z;if(0==(0|D)){var S=y,i=S>>2,M=m;break}var Z=A+(r+28)|0,Q=(Se[Z>>2]<<2)+vi+304|0,q=(0|P)==(0|Se[Q>>2]);do{if(q){if(Se[Q>>2]=z,0!=(0|z))break;var $=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=$;var S=y,i=S>>2,M=m;break e}if(D>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";var J=D+16|0;if((0|Se[J>>2])==(0|P)?Se[J>>2]=z:Se[D+20>>2]=z,0==(0|z)){var S=y,i=S>>2,M=m;break e}}while(0);if(z>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[e+6]=D;var rr=Me[t+(s+4)];if(0!=(0|rr)){if(rr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[e+4]=rr,Se[rr+24>>2]=z}var ar=Me[t+(s+5)];if(0==(0|ar)){var S=y,i=S>>2,M=m;break}if(ar>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[e+5]=ar,Se[ar+24>>2]=z;var S=y,i=S>>2,M=m}}else var S=l,i=S>>2,M=h;while(0);var M,S,er=S;if(er>>>0>=d>>>0)break;var ir=r+(h-4)|0,vr=Me[ir>>2];if(0==(1&vr|0))break;var tr=0==(2&vr|0);do{if(tr){if((0|w)==(0|Se[vi+24>>2])){var fr=Se[vi+12>>2]+M|0;Se[vi+12>>2]=fr,Se[vi+24>>2]=S;var _r=1|fr;if(Se[i+1]=_r,(0|S)==(0|Se[vi+20>>2])&&(Se[vi+20>>2]=0,Se[vi+8>>2]=0),fr>>>0<=Me[vi+28>>2]>>>0)break r;ia(0);break r}if((0|w)==(0|Se[vi+20>>2])){var sr=Se[vi+8>>2]+M|0;Se[vi+8>>2]=sr,Se[vi+20>>2]=S;var nr=1|sr;Se[i+1]=nr;var or=er+sr|0;Se[or>>2]=sr;break r}var lr=(vr&-8)+M|0,br=vr>>>3,kr=vr>>>0<256;e:do if(kr){var ur=Me[s+f],cr=Me[((4|h)>>2)+s];if((0|ur)!=(0|cr)){var hr=((vr>>>2&1073741822)<<2)+vi+40|0,dr=(0|ur)==(0|hr);do{if(!dr){if(ur>>>0>2]>>>0){_=66;break}_=63;break}_=63}while(0);do if(63==_){if((0|cr)!=(0|hr)&&cr>>>0>2]>>>0)break;Se[ur+12>>2]=cr,Se[cr+8>>2]=ur;break e}while(0);throw Ka(),\"Reached an unreachable!\"}var wr=Se[vi>>2]&(1<>2]=wr}else{var pr=d,Er=Me[f+(s+4)],Ar=Me[((4|h)>>2)+s],gr=(0|Ar)==(0|pr);do if(gr){var yr=h+(r+12)|0,mr=Se[yr>>2];if(0==(0|mr)){var Sr=h+(r+8)|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=0,a=Cr>>2;break}var Rr=Sr,Tr=Mr}else{var Rr=yr,Tr=mr;_=73}for(;;){var Tr,Rr,Or=Tr+20|0,Nr=Se[Or>>2];if(0==(0|Nr)){var Ir=Tr+16|0,Pr=Me[Ir>>2];if(0==(0|Pr))break;var Rr=Ir,Tr=Pr}else var Rr=Or,Tr=Nr}if(Rr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[Rr>>2]=0;var Cr=Tr,a=Cr>>2}else{var Dr=Me[s+f];if(Dr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[Dr+12>>2]=Ar,\nSe[Ar+8>>2]=Dr;var Cr=Ar,a=Cr>>2}while(0);var Cr;if(0==(0|Er))break;var Lr=h+(r+20)|0,Fr=(Se[Lr>>2]<<2)+vi+304|0,Xr=(0|pr)==(0|Se[Fr>>2]);do{if(Xr){if(Se[Fr>>2]=Cr,0!=(0|Cr))break;var jr=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=jr;break e}if(Er>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";var Ur=Er+16|0;if((0|Se[Ur>>2])==(0|pr)?Se[Ur>>2]=Cr:Se[Er+20>>2]=Cr,0==(0|Cr))break e}while(0);if(Cr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+6]=Er;var xr=Me[f+(s+2)];if(0!=(0|xr)){if(xr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+4]=xr,Se[xr+24>>2]=Cr}var zr=Me[f+(s+3)];if(0==(0|zr))break;if(zr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[a+5]=zr,Se[zr+24>>2]=Cr}while(0);if(Se[i+1]=1|lr,Se[er+lr>>2]=lr,(0|S)!=(0|Se[vi+20>>2])){var Vr=lr;break}Se[vi+8>>2]=lr;break r}Se[ir>>2]=vr&-2,Se[i+1]=1|M,Se[er+M>>2]=M;var Vr=M}while(0);var Vr;if(Vr>>>0<256){var Br=Vr>>>2&1073741822,Hr=(Br<<2)+vi+40|0,Kr=Me[vi>>2],Yr=1<<(Vr>>>3),Gr=0==(Kr&Yr|0);do{if(!Gr){var Wr=(Br+2<<2)+vi+40|0,Zr=Me[Wr>>2];if(Zr>>>0>=Me[vi+16>>2]>>>0){var Qr=Zr,qr=Wr;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=Kr|Yr;var Qr=Hr,qr=(Br+2<<2)+vi+40|0}while(0);var qr,Qr;Se[qr>>2]=S,Se[Qr+12>>2]=S,Se[i+2]=Qr,Se[i+3]=Hr;break r}var $r=S,Jr=Vr>>>8,ra=0==(0|Jr);do if(ra)var aa=0;else{if(Vr>>>0>16777215){var aa=31;break}var ea=(Jr+1048320|0)>>>16&8,va=Jr<>>16&4,_a=va<>>16&2,na=14-(fa|ea|sa)+(_a<>>15)|0,aa=Vr>>>((na+7|0)>>>0)&1|na<<1}while(0);var aa,oa=(aa<<2)+vi+304|0;Se[i+7]=aa,Se[i+5]=0,Se[i+4]=0;var la=Se[vi+4>>2],ba=1<>2]=ua,Se[oa>>2]=$r,Se[i+6]=oa,Se[i+3]=S,Se[i+2]=S}else{if(31==(0|aa))var ca=0;else var ca=25-(aa>>>1)|0;for(var ca,ha=Vr<>2];;){var da,ha;if((Se[da+4>>2]&-8|0)==(0|Vr)){var wa=da+8|0,pa=Me[wa>>2],Ea=Me[vi+16>>2],Aa=da>>>0>>0;do if(!Aa){if(pa>>>0>>0)break;Se[pa+12>>2]=$r,Se[wa>>2]=$r,Se[i+2]=pa,Se[i+3]=da,Se[i+6]=0;break e}while(0);throw Ka(),\"Reached an unreachable!\"}var ga=(ha>>>31<<2)+da+16|0,ya=Me[ga>>2];if(0==(0|ya)){if(ga>>>0>=Me[vi+16>>2]>>>0){Se[ga>>2]=$r,Se[i+6]=da,Se[i+3]=S,Se[i+2]=S;break e}throw Ka(),\"Reached an unreachable!\"}var ha=ha<<1,da=ya}}while(0);var ma=Se[vi+32>>2]-1|0;if(Se[vi+32>>2]=ma,0!=(0|ma))break r;ta();break r}while(0);throw Ka(),\"Reached an unreachable!\"}while(0)}function ta(){var r=Se[vi+452>>2],a=0==(0|r);r:do if(!a)for(var e=r;;){var e,i=Se[e+8>>2];if(0==(0|i))break r;var e=i}while(0);Se[vi+32>>2]=-1}function fa(r,a){if(0==(0|r))var e=Jr(a),i=e;else var v=la(r,a),i=v;var i;return i}function _a(r,a){var e,i=r>>>0<9;do if(i)var v=Jr(a),t=v;else{var f=r>>>0<16?16:r,_=0==(f-1&f|0);r:do if(_)var s=f;else{if(f>>>0<=16){var s=16;break}for(var n=16;;){var n,o=n<<1;if(o>>>0>=f>>>0){var s=o;break r}var n=o}}while(0);var s;if((-64-s|0)>>>0>a>>>0){if(a>>>0<11)var l=16;else var l=a+11&-8;var l,b=Jr(l+(s+12)|0);if(0==(0|b)){var t=0;break}var k=b-8|0;if(0==((b>>>0)%(s>>>0)|0))var u=k,c=0;else{var h=b+(s-1)&-s,d=h-8|0,w=k;if((d-w|0)>>>0>15)var p=d;else var p=h+(s-8)|0;var p,E=p-w|0,e=(b-4|0)>>2,A=Se[e],g=(A&-8)-E|0;if(0==(3&A|0)){var y=Se[k>>2]+E|0;Se[p>>2]=y,Se[p+4>>2]=g;var u=p,c=0}else{var m=p+4|0,S=g|1&Se[m>>2]|2;Se[m>>2]=S;var M=g+(p+4)|0,C=1|Se[M>>2];Se[M>>2]=C;var R=E|1&Se[e]|2;Se[e]=R;var T=b+(E-4)|0,O=1|Se[T>>2];Se[T>>2]=O;var u=p,c=b}}var c,u,N=u+4|0,I=Me[N>>2],P=0==(3&I|0);do if(P)var D=0;else{var L=I&-8;if(L>>>0<=(l+16|0)>>>0){var D=0;break}var F=L-l|0;Se[N>>2]=l|1&I|2,Se[u+(4|l)>>2]=3|F;var X=u+(4|L)|0,j=1|Se[X>>2];Se[X>>2]=j;var D=l+(u+8)|0}while(0);var D;0!=(0|c)&&va(c),0!=(0|D)&&va(D);var t=u+8|0}else{var U=Je();Se[U>>2]=12;var t=0}}while(0);var t;return t}function sa(r,a,e,i){var v,t;0==(0|Se[ti>>2])&&ba();var f=0==(0|i),_=0==(0|r);do{if(f){if(_){var s=Jr(0),n=s;t=30;break}var o=r<<2;if(o>>>0<11){var l=0,b=16;t=9;break}var l=0,b=o+11&-8;t=9;break}if(_){var n=i;t=30;break}var l=i,b=0;t=9;break}while(0);do if(9==t){var b,l,k=0==(1&e|0);r:do if(k){if(_){var u=0,c=0;break}for(var h=0,d=0;;){var d,h,w=Me[a+(d<<2)>>2];if(w>>>0<11)var p=16;else var p=w+11&-8;var p,E=p+h|0,A=d+1|0;if((0|A)==(0|r)){var u=0,c=E;break r}var h=E,d=A}}else{var g=Me[a>>2];if(g>>>0<11)var y=16;else var y=g+11&-8;var y,u=y,c=y*r|0}while(0);var c,u,m=Jr(b-4+c|0);if(0==(0|m)){var n=0;break}var S=m-8|0,M=Se[m-4>>2]&-8;if(0!=(2&e|0)){var C=-4-b+M|0;Fa(m,0,C,1)}if(0==(0|l)){var R=m+c|0,T=M-c|3;Se[m+(c-4)>>2]=T;var O=R,v=O>>2,N=c}else var O=l,v=O>>2,N=M;var N,O;Se[v]=m;var I=r-1|0,P=0==(0|I);r:do if(P)var D=S,L=N;else if(0==(0|u))for(var F=S,X=N,j=0;;){var j,X,F,U=Me[a+(j<<2)>>2];if(U>>>0<11)var x=16;else var x=U+11&-8;var x,z=X-x|0;Se[F+4>>2]=3|x;var V=F+x|0,B=j+1|0;if(Se[(B<<2>>2)+v]=x+(F+8)|0,(0|B)==(0|I)){var D=V,L=z;break r}var F=V,X=z,j=B}else for(var H=3|u,K=u+8|0,Y=S,G=N,W=0;;){var W,G,Y,Z=G-u|0;Se[Y+4>>2]=H;var Q=Y+u|0,q=W+1|0;if(Se[(q<<2>>2)+v]=Y+K|0,(0|q)==(0|I)){var D=Q,L=Z;break r}var Y=Q,G=Z,W=q}while(0);var L,D;Se[D+4>>2]=3|L;var n=O}while(0);var n;return n}function na(r){var a=r>>2;0==(0|Se[ti>>2])&&ba();var e=Me[vi+24>>2];if(0==(0|e))var i=0,v=0,t=0,f=0,_=0,s=0,n=0;else{for(var o=Me[vi+12>>2],l=o+40|0,b=vi+444|0,k=l,u=l,c=1;;){var c,u,k,b,h=Me[b>>2],d=h+8|0;if(0==(7&d|0))var w=0;else var w=7&-d;for(var w,p=b+4|0,E=h+w|0,A=c,g=u,y=k;;){var y,g,A,E;if(E>>>0>>0)break;if(E>>>0>=(h+Se[p>>2]|0)>>>0|(0|E)==(0|e))break;var m=Se[E+4>>2];if(7==(0|m))break;var S=m&-8,M=S+y|0;if(1==(3&m|0))var C=A+1|0,R=S+g|0;else var C=A,R=g;var R,C,E=E+S|0,A=C,g=R,y=M}var T=Me[b+8>>2];if(0==(0|T))break;var b=T,k=y,u=g,c=A}var O=Se[vi+432>>2],i=y,v=A,t=o,f=g,_=O-y|0,s=Se[vi+436>>2],n=O-g|0}var n,s,_,f,t,v,i;Se[a]=i,Se[a+1]=v,Se[a+2]=0,Se[a+3]=0,Se[a+4]=_,Se[a+5]=s,Se[a+6]=0,Se[a+7]=n,Se[a+8]=f,Se[a+9]=t}function oa(){0==(0|Se[ti>>2])&&ba();var r=Me[vi+24>>2],a=0==(0|r);r:do if(a)var e=0,i=0,v=0;else for(var t=Se[vi+436>>2],f=Me[vi+432>>2],_=vi+444|0,s=f-40-Se[vi+12>>2]|0;;){var s,_,n=Me[_>>2],o=n+8|0;if(0==(7&o|0))var l=0;else var l=7&-o;for(var l,b=_+4|0,k=n+l|0,u=s;;){var u,k;if(k>>>0>>0)break;if(k>>>0>=(n+Se[b>>2]|0)>>>0|(0|k)==(0|r))break;var c=Se[k+4>>2];if(7==(0|c))break;var h=c&-8,d=1==(3&c|0)?h:0,w=u-d|0,k=k+h|0,u=w}var p=Me[_+8>>2];if(0==(0|p)){var e=t,i=f,v=u;break r}var _=p,s=u}while(0);var v,i,e,E=Se[Se[qe>>2]+12>>2],A=(Qa(E,0|He.__str339,(ne=Oe,Oe+=4,Se[ne>>2]=e,ne)),Se[Se[qe>>2]+12>>2]),g=(Qa(A,0|He.__str1340,(ne=Oe,Oe+=4,Se[ne>>2]=i,ne)),Se[Se[qe>>2]+12>>2]);Qa(g,0|He.__str2341,(ne=Oe,Oe+=4,Se[ne>>2]=v,ne))}function la(r,a){var e,i,v,t=a>>>0>4294967231;r:do{if(!t){var f=r-8|0,_=f,i=(r-4|0)>>2,s=Me[i],n=s&-8,o=n-8|0,l=r+o|0,b=f>>>0>2]>>>0;do if(!b){var k=3&s;if(!(1!=(0|k)&(0|o)>-8))break;var e=(r+(n-4)|0)>>2;if(0==(1&Se[e]|0))break;if(a>>>0<11)var u=16;else var u=a+11&-8;var u,c=0==(0|k);do{if(c){var h=ka(_,u),d=0,w=h;v=17;break}if(n>>>0>>0){if((0|l)!=(0|Se[vi+24>>2])){v=21;break}var p=Se[vi+12>>2]+n|0;if(p>>>0<=u>>>0){v=21;break}var E=p-u|0,A=r+(u-8)|0;Se[i]=u|1&s|2;var g=1|E;Se[r+(u-4)>>2]=g,Se[vi+24>>2]=A,Se[vi+12>>2]=E;var d=0,w=_;v=17;break}var y=n-u|0;if(y>>>0<=15){var d=0,w=_;v=17;break}Se[i]=u|1&s|2,Se[r+(u-4)>>2]=3|y;var m=1|Se[e];Se[e]=m;var d=r+u|0,w=_;v=17;break}while(0);do if(17==v){var w,d;if(0==(0|w))break;0!=(0|d)&&va(d);var S=w+8|0;break r}while(0);var M=Jr(a);if(0==(0|M)){var S=0;break r}var C=0==(3&Se[i]|0)?8:4,R=n-C|0,T=R>>>0>>0?R:a;Pa(M,r,T,1),va(r);var S=M;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var O=Je();Se[O>>2]=12;var S=0}while(0);var S;return S}function ba(){if(0==(0|Se[ti>>2])){var r=qa(8);if(0!=(r-1&r|0))throw Ka(),\"Reached an unreachable!\";Se[ti+8>>2]=r,Se[ti+4>>2]=r,Se[ti+12>>2]=-1,Se[ti+16>>2]=2097152,Se[ti+20>>2]=0,Se[vi+440>>2]=0;var a=$a(0);Se[ti>>2]=a&-16^1431655768}}function ka(r,a){var e=Se[r+4>>2]&-8,i=a>>>0<256;do if(i)var v=0;else{if(e>>>0>=(a+4|0)>>>0&&(e-a|0)>>>0<=Se[ti+8>>2]<<1>>>0){var v=r;break}var v=0}while(0);var v;return v}function ua(r){for(var a,e=vi+444|0,a=e>>2;;){var e,i=Me[a];if(i>>>0<=r>>>0&&(i+Se[a+1]|0)>>>0>r>>>0){var v=e;break}var t=Me[a+2];if(0==(0|t)){var v=0;break}var e=t,a=e>>2}var v;return v}function ca(r,a){var e=r,i=r+8|0;if(0==(7&i|0))var v=0;else var v=7&-i;var v,t=a-v|0;Se[vi+24>>2]=e+v|0,Se[vi+12>>2]=t,Se[v+(e+4)>>2]=1|t,Se[a+(e+4)>>2]=40;var f=Se[ti+16>>2];Se[vi+28>>2]=f}function ha(){for(var r=0;;){var r,a=r<<1,e=(a<<2)+vi+40|0;Se[vi+(a+3<<2)+40>>2]=e,Se[vi+(a+2<<2)+40>>2]=e;var i=r+1|0;if(32==(0|i))break;var r=i}}function da(r,a,e){var i,v,t,f,_=a>>2,s=r>>2,n=r+8|0;if(0==(7&n|0))var o=0;else var o=7&-n;var o,l=a+8|0;if(0==(7&l|0))var b=0,t=b>>2;else var b=7&-l,t=b>>2;var b,k=a+b|0,u=k,c=o+e|0,v=c>>2,h=r+c|0,d=h,w=k-(r+o)-e|0;Se[(o+4>>2)+s]=3|e;var p=(0|u)==(0|Se[vi+24>>2]);r:do if(p){var E=Se[vi+12>>2]+w|0;Se[vi+12>>2]=E,Se[vi+24>>2]=d;var A=1|E;Se[v+(s+1)]=A}else if((0|u)==(0|Se[vi+20>>2])){var g=Se[vi+8>>2]+w|0;Se[vi+8>>2]=g,Se[vi+20>>2]=d;var y=1|g;Se[v+(s+1)]=y;var m=r+g+c|0;Se[m>>2]=g}else{var S=Me[t+(_+1)];if(1==(3&S|0)){var M=S&-8,C=S>>>3,R=S>>>0<256;a:do if(R){var T=Me[((8|b)>>2)+_],O=Me[t+(_+3)];if((0|T)!=(0|O)){var N=((S>>>2&1073741822)<<2)+vi+40|0,I=(0|T)==(0|N);do{if(!I){if(T>>>0>2]>>>0){f=18;break}f=15;break}f=15}while(0);do if(15==f){if((0|O)!=(0|N)&&O>>>0>2]>>>0)break;Se[T+12>>2]=O,Se[O+8>>2]=T;break a}while(0);throw Ka(),\"Reached an unreachable!\"}var P=Se[vi>>2]&(1<>2]=P}else{var D=k,L=Me[((24|b)>>2)+_],F=Me[t+(_+3)],X=(0|F)==(0|D);do if(X){var j=16|b,U=j+(a+4)|0,x=Se[U>>2];if(0==(0|x)){var z=a+j|0,V=Se[z>>2];if(0==(0|V)){var B=0,i=B>>2;break}var H=z,K=V}else{var H=U,K=x;f=25}for(;;){var K,H,Y=K+20|0,G=Se[Y>>2];if(0==(0|G)){var W=K+16|0,Z=Me[W>>2];if(0==(0|Z))break;var H=W,K=Z}else var H=Y,K=G}if(H>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[H>>2]=0;var B=K,i=B>>2}else{var Q=Me[((8|b)>>2)+_];if(Q>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[Q+12>>2]=F,Se[F+8>>2]=Q;var B=F,i=B>>2}while(0);var B;if(0==(0|L))break;var q=b+(a+28)|0,$=(Se[q>>2]<<2)+vi+304|0,J=(0|D)==(0|Se[$>>2]);do{if(J){if(Se[$>>2]=B,0!=(0|B))break;var rr=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=rr;break a}if(L>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";var ar=L+16|0;if((0|Se[ar>>2])==(0|D)?Se[ar>>2]=B:Se[L+20>>2]=B,0==(0|B))break a}while(0);if(B>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[i+6]=L;var er=16|b,ir=Me[(er>>2)+_];if(0!=(0|ir)){if(ir>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[i+4]=ir,Se[ir+24>>2]=B}var vr=Me[(er+4>>2)+_];if(0==(0|vr))break;if(vr>>>0>2]>>>0)throw Ka(),\"Reached an unreachable!\";Se[i+5]=vr,Se[vr+24>>2]=B}while(0);var tr=a+(M|b)|0,fr=M+w|0}else var tr=u,fr=w;var fr,tr,_r=tr+4|0,sr=Se[_r>>2]&-2;if(Se[_r>>2]=sr,Se[v+(s+1)]=1|fr,Se[(fr>>2)+s+v]=fr,fr>>>0<256){var nr=fr>>>2&1073741822,or=(nr<<2)+vi+40|0,lr=Me[vi>>2],br=1<<(fr>>>3),kr=0==(lr&br|0);do{if(!kr){var ur=(nr+2<<2)+vi+40|0,cr=Me[ur>>2];if(cr>>>0>=Me[vi+16>>2]>>>0){var hr=cr,dr=ur;break}throw Ka(),\"Reached an unreachable!\"}Se[vi>>2]=lr|br;var hr=or,dr=(nr+2<<2)+vi+40|0}while(0);var dr,hr;Se[dr>>2]=d,Se[hr+12>>2]=d,Se[v+(s+2)]=hr,Se[v+(s+3)]=or}else{var wr=h,pr=fr>>>8,Er=0==(0|pr);do if(Er)var Ar=0;else{if(fr>>>0>16777215){var Ar=31;break}var gr=(pr+1048320|0)>>>16&8,yr=pr<>>16&4,Sr=yr<>>16&2,Cr=14-(mr|gr|Mr)+(Sr<>>15)|0,Ar=fr>>>((Cr+7|0)>>>0)&1|Cr<<1}while(0);var Ar,Rr=(Ar<<2)+vi+304|0;Se[v+(s+7)]=Ar;var Tr=c+(r+16)|0;Se[v+(s+5)]=0,Se[Tr>>2]=0;var Or=Se[vi+4>>2],Nr=1<>2]=Ir,Se[Rr>>2]=wr,Se[v+(s+6)]=Rr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr}else{if(31==(0|Ar))var Pr=0;else var Pr=25-(Ar>>>1)|0;for(var Pr,Dr=fr<>2];;){var Lr,Dr;if((Se[Lr+4>>2]&-8|0)==(0|fr)){var Fr=Lr+8|0,Xr=Me[Fr>>2],jr=Me[vi+16>>2],Ur=Lr>>>0>>0;do if(!Ur){if(Xr>>>0>>0)break;Se[Xr+12>>2]=wr,Se[Fr>>2]=wr,Se[v+(s+2)]=Xr,Se[v+(s+3)]=Lr,Se[v+(s+6)]=0;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var xr=(Dr>>>31<<2)+Lr+16|0,zr=Me[xr>>2];if(0==(0|zr)){if(xr>>>0>=Me[vi+16>>2]>>>0){Se[xr>>2]=wr,Se[v+(s+6)]=Lr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr;break r}throw Ka(),\"Reached an unreachable!\"}var Dr=Dr<<1,Lr=zr}}}}while(0);return r+(8|o)|0}function wa(r){return 0|He.__str3342}function pa(r){return 0|He.__str14343}function Ea(r){Se[r>>2]=si+8|0}function Aa(r){0!=(0|r)&&va(r)}function ga(r){ya(r);var a=r;Aa(a)}function ya(r){var a=0|r;Ye(a)}function ma(r){var a=0|r;Ea(a),Se[r>>2]=ni+8|0}function Sa(r){var a=0|r;ya(a);var e=r;Aa(e)}function Ma(r,a){var e,i,v=Me[vi+24>>2],i=v>>2,t=v,f=ua(t),_=Se[f>>2],s=Se[f+4>>2],n=_+s|0,o=_+(s-39)|0;if(0==(7&o|0))var l=0;else var l=7&-o;var l,b=_+(s-47)+l|0,k=b>>>0<(v+16|0)>>>0?t:b,u=k+8|0,e=u>>2,c=u,h=r,d=a-40|0;ca(h,d);var w=k+4|0;Se[w>>2]=27,Se[e]=Se[vi+444>>2],Se[e+1]=Se[vi+448>>2],Se[e+2]=Se[vi+452>>2],Se[e+3]=Se[vi+456>>2],Se[vi+444>>2]=r,Se[vi+448>>2]=a,Se[vi+456>>2]=0,Se[vi+452>>2]=c;var p=k+28|0;Se[p>>2]=7;var E=(k+32|0)>>>0>>0;r:do if(E)for(var A=p;;){var A,g=A+4|0;if(Se[g>>2]=7,(A+8|0)>>>0>=n>>>0)break r;var A=g}while(0);var y=(0|k)==(0|t);r:do if(!y){var m=k-v|0,S=t+m|0,M=m+(t+4)|0,C=Se[M>>2]&-2;Se[M>>2]=C;var R=1|m;Se[i+1]=R;var T=S;if(Se[T>>2]=m,m>>>0<256){var O=m>>>2&1073741822,N=(O<<2)+vi+40|0,I=Me[vi>>2],P=1<<(m>>>3),D=0==(I&P|0);do{if(!D){var L=(O+2<<2)+vi+40|0,F=Me[L>>2];if(F>>>0>=Me[vi+16>>2]>>>0){var X=F,j=L;break}throw Ka(),\"Reached an unreachable!\"}var U=I|P;Se[vi>>2]=U;var X=N,j=(O+2<<2)+vi+40|0}while(0);var j,X;Se[j>>2]=v,Se[X+12>>2]=v,Se[i+2]=X,Se[i+3]=N}else{var x=v,z=m>>>8,V=0==(0|z);do if(V)var B=0;else{if(m>>>0>16777215){var B=31;break}var H=(z+1048320|0)>>>16&8,K=z<>>16&4,G=K<>>16&2,Z=14-(Y|H|W)+(G<>>15)|0,B=m>>>((Z+7|0)>>>0)&1|Z<<1}while(0);var B,Q=(B<<2)+vi+304|0;Se[i+7]=B,Se[i+5]=0,Se[i+4]=0;var q=Se[vi+4>>2],$=1<>2]=J,Se[Q>>2]=x,Se[i+6]=Q,Se[i+3]=v,Se[i+2]=v}else{if(31==(0|B))var rr=0;else var rr=25-(B>>>1)|0;for(var rr,ar=m<>2];;){var er,ar;if((Se[er+4>>2]&-8|0)==(0|m)){var ir=er+8|0,vr=Me[ir>>2],tr=Me[vi+16>>2],fr=er>>>0>>0;do if(!fr){if(vr>>>0>>0)break;Se[vr+12>>2]=x,Se[ir>>2]=x,Se[i+2]=vr,Se[i+3]=er,Se[i+6]=0;break r}while(0);throw Ka(),\"Reached an unreachable!\"}var _r=(ar>>>31<<2)+er+16|0,sr=Me[_r>>2];if(0==(0|sr)){if(_r>>>0>=Me[vi+16>>2]>>>0){Se[_r>>2]=x,Se[i+6]=er,Se[i+3]=v,Se[i+2]=v;break r}throw Ka(),\"Reached an unreachable!\"}var ar=ar<<1,er=sr}}}}while(0)}function Ca(r){return d(r)}function Ra(r,a){var e=0;do Ae[r+e]=Ae[a+e],e++;while(0!=Ae[a+e-1]);return r}function Ta(){var r=Ta;return r.LLVM_SAVEDSTACKS||(r.LLVM_SAVEDSTACKS=[]),r.LLVM_SAVEDSTACKS.push(le.stackSave()),r.LLVM_SAVEDSTACKS.length-1}function Oa(r){var a=Ta,e=a.LLVM_SAVEDSTACKS[r];a.LLVM_SAVEDSTACKS.splice(r,1),le.stackRestore(e)}function Na(r,a,e){for(var i=0;it?1:-1;i++}return 0}function Ia(r,a){var e=Ca(r),i=0;do Ae[r+e+i]=Ae[a+i],i++;while(0!=Ae[a+i-1]);return r}function Pa(r,a,e,i){if(e>=20&&a%2==r%2)if(a%4==r%4){for(var v=a+e;a%4;)Ae[r++]=Ae[a++];for(var t=a>>2,f=r>>2,_=v>>2;t<_;)Se[f++]=Se[t++];for(a=t<<2,r=f<<2;a>1,n=r>>1,o=v>>1;st?1:-1}return 0}function Fa(r,a,e,i){if(e>=20){for(var v=r+e;r%4;)Ae[r++]=a;a<0&&(a+=256);for(var t=r>>2,f=v>>2,_=a|a<<8|a<<16|a<<24;t>2],xe[1]=Se[a+_+4>>2],e=ze[0]):\"i64\"==r?e=[Se[a+_>>2],Se[a+_+4>>2]]:(r=\"i32\",e=Se[a+_>>2]),_+=le.getNativeFieldSize(r),e}for(var i,v,t,f=r,_=0,s=[];;){var n=f;if(i=Ae[f],0===i)break;if(v=Ae[f+1],i==\"%\".charCodeAt(0)){var o=!1,l=!1,b=!1,k=!1;r:for(;;){switch(v){case\"+\".charCodeAt(0):o=!0;break;case\"-\".charCodeAt(0):l=!0;break;case\"#\".charCodeAt(0):b=!0;break;case\"0\".charCodeAt(0):if(k)break r;k=!0;break;default:break r}f++,v=Ae[f+1]}var u=0;if(v==\"*\".charCodeAt(0))u=e(\"i32\"),f++,v=Ae[f+1];else for(;v>=\"0\".charCodeAt(0)&&v<=\"9\".charCodeAt(0);)u=10*u+(v-\"0\".charCodeAt(0)),f++,v=Ae[f+1];var c=!1;if(v==\".\".charCodeAt(0)){var h=0;if(c=!0,f++,v=Ae[f+1],v==\"*\".charCodeAt(0))h=e(\"i32\"),f++;else for(;;){var d=Ae[f+1];if(d<\"0\".charCodeAt(0)||d>\"9\".charCodeAt(0))break;h=10*h+(d-\"0\".charCodeAt(0)),f++}v=Ae[f+1]}else var h=6;var E;switch(String.fromCharCode(v)){case\"h\":var A=Ae[f+2];A==\"h\".charCodeAt(0)?(f++,E=1):E=2;break;case\"l\":var A=Ae[f+2];A==\"l\".charCodeAt(0)?(f++,E=8):E=4;break;case\"L\":case\"q\":case\"j\":E=8;break;case\"z\":case\"t\":case\"I\":E=4;break;default:E=null}if(E&&f++,v=Ae[f+1],[\"d\",\"i\",\"u\",\"o\",\"x\",\"X\",\"p\"].indexOf(String.fromCharCode(v))!=-1){var m=v==\"d\".charCodeAt(0)||v==\"i\".charCodeAt(0);E=E||4;var t=e(\"i\"+8*E);if(8==E&&(t=le.makeBigInt(t[0],t[1],v==\"u\".charCodeAt(0))),E<=4){var S=Math.pow(256,E)-1;t=(m?y:g)(t&S,8*E)}var M,C=Math.abs(t),R=\"\";if(v==\"d\".charCodeAt(0)||v==\"i\".charCodeAt(0))M=y(t,8*E,1).toString(10);else if(v==\"u\".charCodeAt(0))M=g(t,8*E,1).toString(10),t=Math.abs(t);else if(v==\"o\".charCodeAt(0))M=(b?\"0\":\"\")+C.toString(8);else if(v==\"x\".charCodeAt(0)||v==\"X\".charCodeAt(0)){if(R=b?\"0x\":\"\",t<0){t=-t,M=(C-1).toString(16);for(var T=[],O=0;OP&&P>=-4?(v=(v==\"g\".charCodeAt(0)?\"f\":\"F\").charCodeAt(0),h-=P+1):(v=(v==\"g\".charCodeAt(0)?\"e\":\"E\").charCodeAt(0),h--),I=Math.min(h,20)}v==\"e\".charCodeAt(0)||v==\"E\".charCodeAt(0)?(M=t.toExponential(I),/[eE][-+]\\\\d$/.test(M)&&(M=M.slice(0,-1)+\"0\"+M.slice(-1))):v!=\"f\".charCodeAt(0)&&v!=\"F\".charCodeAt(0)||(M=t.toFixed(I));var D=M.split(\"e\");if(N&&!b)for(;D[0].length>1&&D[0].indexOf(\".\")!=-1&&(\"0\"==D[0].slice(-1)||\".\"==D[0].slice(-1));)D[0]=D[0].slice(0,-1);else for(b&&M.indexOf(\".\")==-1&&(D[0]+=\".\");h>I++;)D[0]+=\"0\";M=D[0]+(D.length>1?\"e\"+D[1]:\"\"),v==\"E\".charCodeAt(0)&&(M=M.toUpperCase()),o&&t>=0&&(M=\"+\"+M)}else M=(t<0?\"-\":\"\")+\"inf\",k=!1;for(;M.lengthh&&(L=L.slice(0,h))):L=p(\"(null)\",!0),!l)for(;L.length0;)s.push(\" \".charCodeAt(0));l||s.push(e(\"i8\"))}else if(v==\"n\".charCodeAt(0)){var X=e(\"i32*\");Se[X>>2]=s.length}else if(v==\"%\".charCodeAt(0))s.push(i);else for(var O=n;O=\"0\".charCodeAt(0)&&r<=\"9\".charCodeAt(0)}function Ha(r){for(var a;(a=Ae[r])&&Va(a);)r++;if(!a||!Ba(a))return 0;for(var e=r;(a=Ae[e])&&Ba(a);)e++;return Math.floor(Number(s(r).substr(0,e-r)))}function Ka(r){throw ke=!0,\"ABORT: \"+r+\", at \"+(new Error).stack}function Ya(r){return Ya.ret||(Ya.ret=_([0],\"i32\",we)),Se[Ya.ret>>2]=r,r}function Ga(r,a,e,i){var v=$e.streams[r];if(!v||v.object.isDevice)return Ya(Ge.EBADF),-1;if(v.isWrite){if(v.object.isFolder)return Ya(Ge.EISDIR),-1;if(e<0||i<0)return Ya(Ge.EINVAL),-1;for(var t=v.object.contents;t.length>2]=a),a}function Ja(){return Ya.ret}function re(r){var a=re;a.called||(Ie=o(Ie),a.called=!0);var e=Ie;return 0!=r&&le.staticAlloc(r),e}function ae(){return Se[ae.buf>>2]}function ee(r){r=r||Module.arguments,k();var a=null;return Module._main&&(a=Module.callMain(r),Module.noExitRuntime||u()),a}var ie=[],ve=false,te=\"object\"==typeof window,fe=\"function\"==typeof importScripts,_e=!te&&!ve&&!fe;if(ve){print=function(r){process.stdout.write(r+\"\\\\n\")},printErr=function(r){process.stderr.write(r+\"\\\\n\")};var se=require(\"fs\");read=function(r){var a=se.readFileSync(r).toString();return a||\"/\"==r[0]||(r=__dirname.split(\"/\").slice(0,-1).join(\"/\")+\"/src/\"+r,a=se.readFileSync(r).toString()),a},load=function(a){r(read(a))},ie=process.argv.slice(2)}else if(_e)this.read||(this.read=function(r){snarf(r)}),\"undefined\"!=typeof scriptArgs?ie=scriptArgs:\"undefined\"!=typeof arguments&&(ie=arguments);else if(te)this.print=printErr=function(r){console.log(r)},this.read=function(r){var a=new XMLHttpRequest;return a.open(\"GET\",r,!1),a.send(null),a.responseText},this.arguments&&(ie=arguments);else{if(!fe)throw\"Unknown runtime environment. Where are we?\";this.load=importScripts}\"undefined\"==typeof load&&\"undefined\"!=typeof read&&(this.load=function(a){r(read(a))}),\"undefined\"==typeof printErr&&(this.printErr=function(){}),\"undefined\"==typeof print&&(this.print=printErr);try{this.Module=Module}catch(r){this.Module=Module={}}Module.arguments||(Module.arguments=ie),Module.print&&(print=Module.print);var ne,oe,le={stackSave:function(){return Oe},stackRestore:function(r){Oe=r},forceAlign:function(r,a){if(a=a||4,1==a)return r;if(isNumber(r)&&isNumber(a))return Math.ceil(r/a)*a;if(isNumber(a)&&isPowerOfTwo(a)){var e=log2(a);return\"((((\"+r+\")+\"+(a-1)+\")>>\"+e+\")<<\"+e+\")\"}return\"Math.ceil((\"+r+\")/\"+a+\")*\"+a},isNumberType:function(r){return r in le.INT_TYPES||r in le.FLOAT_TYPES},isPointerType:function(r){return\"*\"==r[r.length-1]},isStructType:function(r){return!isPointerType(r)&&(!!/^\\\\[\\\\d+\\\\ x\\\\ (.*)\\\\]/.test(r)||(!!/?/.test(r)||\"%\"==r[0]))},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{float:0,double:0},bitshift64:function(r,e,i,v){var t=Math.pow(2,v)-1;if(v<32)switch(i){case\"shl\":return[r<>>32-v];case\"ashr\":return[(r>>>v|(e&t)<<32-v)>>0>>>0,e>>v>>>0];case\"lshr\":return[(r>>>v|(e&t)<<32-v)>>>0,e>>>v]}else if(32==v)switch(i){case\"shl\":return[0,r];case\"ashr\":return[e,(0|e)<0?t:0];case\"lshr\":return[e,0]}else switch(i){case\"shl\":return[0,r<>v-32>>>0,(0|e)<0?t:0];case\"lshr\":return[e>>>v-32,0]}a(\"unknown bitshift64 op: \"+[value,i,v])},or64:function(r,a){var e=0|r|(0|a),i=4294967296*(Math.round(r/4294967296)|Math.round(a/4294967296));return e+i},and64:function(r,a){var e=(0|r)&(0|a),i=4294967296*(Math.round(r/4294967296)&Math.round(a/4294967296));return e+i},xor64:function(r,a){var e=(0|r)^(0|a),i=4294967296*(Math.round(r/4294967296)^Math.round(a/4294967296));return e+i},getNativeTypeSize:function(r,a){if(1==le.QUANTUM_SIZE)return 1;var i={\"%i1\":1,\"%i8\":1,\"%i16\":2,\"%i32\":4,\"%i64\":8,\"%float\":4,\"%double\":8}[\"%\"+r];if(!i)if(\"*\"==r[r.length-1])i=le.QUANTUM_SIZE;else if(\"i\"==r[0]){var v=parseInt(r.substr(1));e(v%8==0),i=v/8}return i},getNativeFieldSize:function(r){return Math.max(le.getNativeTypeSize(r),le.QUANTUM_SIZE)},dedup:function(r,a){var e={};return a?r.filter(function(r){return!e[r[a]]&&(e[r[a]]=!0,!0)}):r.filter(function(r){return!e[r]&&(e[r]=!0,!0)})},set:function(){for(var r=\"object\"==typeof arguments[0]?arguments[0]:arguments,a={},e=0;e=0&&a.push(f-e),e=f,f}),r.flatSize=le.alignMemory(r.flatSize,r.alignSize),0==a.length?r.flatFactor=r.flatSize:1==le.dedup(a).length&&(r.flatFactor=a[0]),r.needsFlattening=1!=r.flatFactor,r.flatIndexes},generateStructInfo:function(r,a,i){var v,t;if(a){if(i=i||0,v=(\"undefined\"==typeof Types?le.typeInfo:Types.types)[a],!v)return null;e(v.fields.length===r.length,\"Number of named fields must match the type for \"+a),t=v.flatIndexes}else{var v={fields:r.map(function(r){return r[0]})};t=le.calculateStructAlignment(v)}var f={__size__:v.flatSize};return a?r.forEach(function(r,a){if(\"string\"==typeof r)f[r]=t[a]+i;else{var e;for(var _ in r)e=_;f[e]=le.generateStructInfo(r[e],v.fields[a],t[a])}}):r.forEach(function(r,a){f[r[1]]=t[a]}),f},stackAlloc:function(r){var a=Oe;return Oe+=r,Oe=Oe+3>>2<<2,a},staticAlloc:function(r){var a=Ie;return Ie+=r,Ie=Ie+3>>2<<2,Ie>=Le&&l(),a},alignMemory:function(r,a){var e=r=Math.ceil(r/(a?a:4))*(a?a:4);return e},makeBigInt:function(r,a,e){var i=e?(r>>>0)+4294967296*(a>>>0):(r>>>0)+4294967296*(0|a);return i},QUANTUM_SIZE:4,__dummy__:0},be={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(r,e,i){e||(this.corrections++,this.corrections>=this.MAX_ALLOWED&&a(\"\\\\n\\\\nToo many corrections!\"))},print:function(){}},ke=!1,ue=0,ce=this;Module.ccall=i,Module.setValue=t,Module.getValue=f;var he=0,de=1,we=2;Module.ALLOC_NORMAL=he,Module.ALLOC_STACK=de,Module.ALLOC_STATIC=we,Module.allocate=_,Module.Pointer_stringify=s,Module.Array_stringify=n;var pe,Ee,Ae,ge,ye,me,Se,Me,Ce,Re,Te,Oe,Ne,Ie,Pe=4096,De=Module.TOTAL_STACK||5242880,Le=Module.TOTAL_MEMORY||10485760;Module.FAST_MEMORY||2097152;e(!!(Int32Array&&Float64Array&&new Int32Array(1).subarray&&new Int32Array(1).set),\"Cannot fallback to non-typed array case: Code is too specialized\");var Fe=new ArrayBuffer(Le);Ae=new Int8Array(Fe),ye=new Int16Array(Fe),Se=new Int32Array(Fe),ge=new Uint8Array(Fe),me=new Uint16Array(Fe),Me=new Uint32Array(Fe),Ce=new Float32Array(Fe),Re=new Float64Array(Fe),Se[0]=255,e(255===ge[0]&&0===ge[3],\"Typed arrays 2 must be run on a little-endian system\");var Xe=p(\"(null)\");Ie=Xe.length;for(var je=0;je>2)),ze=(Ce.subarray(Ue>>2),Re.subarray(Ue>>3));Ne=Ue+8,Ie=o(Ne);var Ve=[],Be=[];Module.Array_copy=c,Module.TypedArray_copy=h,Module.String_len=d,Module.String_copy=w,Module.intArrayFromString=p,Module.intArrayToString=E,Module.writeStringToMemory=A;var He=[],Ke=0;O.X=1,N.X=1,V.X=1,H.X=1,G.X=1,W.X=1,q.X=1,$.X=1,rr.X=1,ar.X=1,er.X=1,vr.X=1,nr.X=1,or.X=1,kr.X=1,hr.X=1,Ar.X=1,Sr.X=1,Tr.X=1,Ir.X=1,Pr.X=1,Dr.X=1,Lr.X=1,Fr.X=1,Xr.X=1,zr.X=1,Vr.X=1,Br.X=1,Gr.X=1,$r.X=1,Module._malloc=Jr,Jr.X=1,ra.X=1,aa.X=1,ea.X=1,ia.X=1,Module._free=va,va.X=1,_a.X=1,sa.X=1,na.X=1,oa.X=1,la.X=1,da.X=1,Ma.X=1;var Ye,Ge={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18},We=0,Ze=0,Qe=0,qe=0,$e={currentPath:\"/\",nextInode:2,streams:[null],ignorePermissions:!0,absolutePath:function(r,a){if(\"string\"!=typeof r)return null;void 0===a&&(a=$e.currentPath),r&&\"/\"==r[0]&&(a=\"\");for(var e=a+\"/\"+r,i=e.split(\"/\").reverse(),v=[\"\"];i.length;){var t=i.pop();\"\"==t||\".\"==t||(\"..\"==t?v.length>1&&v.pop():v.push(t))}return 1==v.length?\"/\":v.join(\"/\")},analyzePath:function(r,a,e){var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};if(r=$e.absolutePath(r),\"/\"==r)i.isRoot=!0,i.exists=i.parentExists=!0,i.name=\"/\",i.path=i.parentPath=\"/\",i.object=i.parentObject=$e.root;else if(null!==r){e=e||0,r=r.slice(1).split(\"/\");for(var v=$e.root,t=[\"\"];r.length;){1==r.length&&v.isFolder&&(i.parentExists=!0,i.parentPath=1==t.length?\"/\":t.join(\"/\"),i.parentObject=v,i.name=r[0]);var f=r.shift();if(!v.isFolder){i.error=Ge.ENOTDIR;break}if(!v.read){i.error=Ge.EACCES;break}if(!v.contents.hasOwnProperty(f)){i.error=Ge.ENOENT;break}if(v=v.contents[f],v.link&&(!a||0!=r.length)){if(e>40){i.error=Ge.ELOOP;break}var _=$e.absolutePath(v.link,t.join(\"/\"));return $e.analyzePath([_].concat(r).join(\"/\"),a,e+1)}t.push(f),0==r.length&&(i.exists=!0,i.path=t.join(\"/\"),i.object=v)}return i}return i},findObject:function(r,a){$e.ensureRoot();var e=$e.analyzePath(r,a);return e.exists?e.object:(Ya(e.error),null)},createObject:function(r,a,e,i,v){if(r||(r=\"/\"),\"string\"==typeof r&&(r=$e.findObject(r)),!r)throw Ya(Ge.EACCES),new Error(\"Parent path must exist.\");if(!r.isFolder)throw Ya(Ge.ENOTDIR),\nnew Error(\"Parent must be a folder.\");if(!r.write&&!$e.ignorePermissions)throw Ya(Ge.EACCES),new Error(\"Parent folder must be writeable.\");if(!a||\".\"==a||\"..\"==a)throw Ya(Ge.ENOENT),new Error(\"Name must not be empty.\");if(r.contents.hasOwnProperty(a))throw Ya(Ge.EEXIST),new Error(\"Can't overwrite object.\");r.contents[a]={read:void 0===i||i,write:void 0!==v&&v,timestamp:Date.now(),inodeNumber:$e.nextInode++};for(var t in e)e.hasOwnProperty(t)&&(r.contents[a][t]=e[t]);return r.contents[a]},createFolder:function(r,a,e,i){var v={isFolder:!0,isDevice:!1,contents:{}};return $e.createObject(r,a,v,e,i)},createPath:function(r,a,e,i){var v=$e.findObject(r);if(null===v)throw new Error(\"Invalid parent.\");for(a=a.split(\"/\").reverse();a.length;){var t=a.pop();t&&(v.contents.hasOwnProperty(t)||$e.createFolder(v,t,e,i),v=v.contents[t])}return v},createFile:function(r,a,e,i,v){return e.isFolder=!1,$e.createObject(r,a,e,i,v)},createDataFile:function(r,a,e,i,v){if(\"string\"==typeof e){for(var t=new Array(e.length),f=0,_=e.length;f<_;++f)t[f]=e.charCodeAt(f);e=t}var s={isDevice:!1,contents:e};return $e.createFile(r,a,s,i,v)},createLazyFile:function(r,a,e,i,v){var t={isDevice:!1,url:e};return $e.createFile(r,a,t,i,v)},createLink:function(r,a,e,i,v){var t={isDevice:!1,link:e};return $e.createFile(r,a,t,i,v)},createDevice:function(r,a,e,i){if(!e&&!i)throw new Error(\"A device must have at least one callback defined.\");var v={isDevice:!0,input:e,output:i};return $e.createFile(r,a,v,Boolean(e),Boolean(i))},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;var a=!0;if(\"undefined\"!=typeof XMLHttpRequest)e(\"Cannot do synchronous binary XHRs in modern browsers. Use --embed-file or --preload-file in emcc\");else{if(\"undefined\"==typeof read)throw new Error(\"Cannot load without read() or XMLHttpRequest.\");try{r.contents=p(read(r.url),!0)}catch(r){a=!1}}return a||Ya(Ge.EIO),a},ensureRoot:function(){$e.root||($e.root={read:!0,write:!0,isFolder:!0,isDevice:!1,timestamp:Date.now(),inodeNumber:1,contents:{}})},init:function(r,a,i){function v(r){null===r||r===\"\\\\n\".charCodeAt(0)?(a.printer(a.buffer.join(\"\")),a.buffer=[]):a.buffer.push(String.fromCharCode(r))}e(!$e.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\"),$e.init.initialized=!0,$e.ensureRoot(),r=r||Module.stdin,a=a||Module.stdout,i=i||Module.stderr;var t=!0,f=!0,s=!0;r||(t=!1,r=function(){if(!r.cache||!r.cache.length){var a;\"undefined\"!=typeof window&&\"function\"==typeof window.prompt?a=window.prompt(\"Input: \"):\"function\"==typeof readline&&(a=readline()),a||(a=\"\"),r.cache=p(a+\"\\\\n\",!0)}return r.cache.shift()}),a||(f=!1,a=v),a.printer||(a.printer=print),a.buffer||(a.buffer=[]),i||(s=!1,i=v),i.printer||(i.printer=print),i.buffer||(i.buffer=[]),$e.createFolder(\"/\",\"tmp\",!0,!0);var n=$e.createFolder(\"/\",\"dev\",!0,!0),o=$e.createDevice(n,\"stdin\",r),l=$e.createDevice(n,\"stdout\",null,a),b=$e.createDevice(n,\"stderr\",null,i);$e.createDevice(n,\"tty\",r,a),$e.streams[1]={path:\"/dev/stdin\",object:o,position:0,isRead:!0,isWrite:!1,isAppend:!1,isTerminal:!t,error:!1,eof:!1,ungotten:[]},$e.streams[2]={path:\"/dev/stdout\",object:l,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!f,error:!1,eof:!1,ungotten:[]},$e.streams[3]={path:\"/dev/stderr\",object:b,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!s,error:!1,eof:!1,ungotten:[]},We=_([1],\"void*\",we),Ze=_([2],\"void*\",we),Qe=_([3],\"void*\",we),$e.createPath(\"/\",\"dev/shm/tmp\",!0,!0),$e.streams[We]=$e.streams[1],$e.streams[Ze]=$e.streams[2],$e.streams[Qe]=$e.streams[3],qe=_([_([0,0,0,0,We,0,0,0,Ze,0,0,0,Qe,0,0,0],\"void*\",we)],\"void*\",we)},quit:function(){$e.init.initialized&&($e.streams[2]&&$e.streams[2].object.output.buffer.length>0&&$e.streams[2].object.output(\"\\\\n\".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output(\"\\\\n\".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,\"void*\",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p(\"/bin/this.program\"),\"i8\",we)];a();for(var v=0;v>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],[\"i8*\",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v(\"__cxa_demangle\",\"string\",[\"string\",\"string\",\"number\",\"number\"]);return function(r){return pi(r,\"\",1,0)}}();\n`\n"]} \ No newline at end of file diff --git a/deps/speedscope/favicon-16x16.f74b3187.png b/deps/speedscope/favicon-16x16.f74b3187.png new file mode 100644 index 0000000000000000000000000000000000000000..2db188b0932fc2e98db8343a89b8f9d2a3950411 GIT binary patch literal 679 zcmV;Y0$BZtP)Px$0#Hm;MNDaNUUr0xnV-74x_Nncgpikch>eMsoXE(? z#(sW`mz=AqrFe;rt;5!rmzQB+UVDv}k+sH|rK!5p;i03WQCM8Cu&_QqKT}gvU0qt0 zm6dymj)0DqZI7U*w!EOV!k(+I5fT)av%iR)rdwiWWo2iBl9`XO#q{*_O;lHSa%-Kf zwTz66eTh5ZsLa}fpRtFPmH+?$ zj+vi^rn-@#sUamOrMbgIbd#vb*I|aBgO{Pe+~zSeGi`#5V~C#z3k;{TxOaMdv(V&| zx5~A$u1aKYkEFNP=kT1Hn~$BNXp5i>a1*Qm0013yQchC<{*N<@~qDe$SR2b7ujpY)8 zU=T$YB*gAkK$OPr?(TU1R}tew?w>p7%-vZ4D+MRmdWA#@b$urvw}4hgc>&c5^9&P-y!MN?FUrqd*jhX7u-#u3cp zsM6;E0038dR9JLUVRs;Ka&Km7Y-J#Hd2nSQX>fF7004NLPx#32;bRa{vG=O8@{YO97=lmZ<;$0^CqcR7Ff_aZhG& z#K+8DU}LqnxU;vo6ciND(9q%G;p^-0LP}1sv$K$$qOQ5WjE#+Je~EQ>=?r40-VR#;k9 zX>ThmEG#!Vf1IqArmX+}{{aC3q_n)Cu(+qSx@l@_j+~Xfp@MP+uAqp5tK zx1pe)oSdA5l9`5;otCJv&*txqvc;OIuzR1kkh8~_yUm@r$BLPoPGW0ygp7)qpq;I> zlAog#9U^&(l8~gXoUF5hoU50YmVb?vczS$!owiD6b$Xt*IXph1v$~M8W)+axSp!5OHNH9BP1{~ zGjN2Bhlq$(VQ0VB=4XnbqoSgDh>fY9m4ASLLQ`Cuu)C3=r$$6Xdy}C}P*GQOf?Qo) zm94mnq_S6BUMwstCoMHlZG5Z0$A_o83l0*3qqwB7w64zEy4T}5LrTcv?31|4f}Eq7 zwZ>IcQ(S0l-ShfmWM`4K$z5)EbZ=^}v$$t{iK4~S)#ve^k&3Fr+1~B-XN8z;X=aVK z%2aB0h^oGFac^{kh@6m-{r~@?w!Sk)QI46QG%_-blbItnK)l-JgN>76b9zTqTf@S` zQCMA$j*pC(n4!JStGmL1c4=dAadUQfZIrKTd4HO*z(-tYyU*Egl&(-_bq5g~lC8UV zczLnP;e&#LfsmgdBrCwTu4;39nv#mQ$<=LSTAR1khnu5yiF8wh={tyEc{5GsRX!4AlwPgFv!fmX~x7{YuRl@g_U)1f){&3yq zQ%v6eicE*W>AgSQcAgs6N%!}sh+y=y!mkeSyXVjN>hTtwoB#jhn!8G z_~fPUGDGb8#cS5=ObWeU@amxuR(a0qxRq<;Q?7M9xSowwL44e*!%V;mgP@&qY?i ztir*-?c3fRxNV~XSYWHapFc`;Y2MUlFbQU3<66xD=JWge1+XB=Yh?#V8G~6+Z6ZJg z+(-(v@7(o$JkT4jcSgpKa~7ABl!Sr6VpXJo5cc}Cboug#(&FOM(nKJL0D|IMYH)eyCHeDX z^AZvgyn!GbOaMXZ4F+NW00t$#os7Kd*#H0lS9(-fbW&k=AaHVTW@&6?Aar?fWguyA zbYlPjc%0+%3K74o@e.id)}),r.children.forEach(e)}(e),t}function t(e,t){return e.map((r,n)=>{return r-(0===n?1e6*t:e[n-1])})}function r(r){return{samples:r.samples,startTime:1e6*r.startTime,endTime:1e6*r.endTime,nodes:e(r.head),timeDeltas:t(r.timestamps,r.startTime)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.chromeTreeToNodes=r; +},{}],"kWV1":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isChromeTimeline=i,exports.importFromChromeTimeline=l,exports.importFromChromeCPUProfile=u,exports.importFromOldV8CPUProfile=f;var e=require("../lib/profile"),t=require("../lib/utils"),n=require("../lib/value-formatters"),r=require("./v8cpuFormatter");function i(e){if(!Array.isArray(e))return!1;if(e.length<1)return!1;const t=e[0];return"pid"in t&&"tid"in t&&"ph"in t&&"cat"in t&&!!e.find(e=>"CpuProfile"===e.name||"Profile"===e.name||"ProfileChunk"===e.name)}function l(e,n){const r=new Map,i=new Map,l=new Map;(0,t.sortBy)(e,e=>e.ts);for(let t of e){if("CpuProfile"===t.name){const e=`${t.pid}:${t.tid}`,n=t.id||e;r.set(n,t.args.data.cpuProfile),i.set(n,e)}if("Profile"===t.name){const e=`${t.pid}:${t.tid}`;r.set(t.id||e,Object.assign({startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[]},t.args.data)),t.id&&i.set(t.id,`${t.pid}:${t.tid}`)}if("thread_name"===t.name&&l.set(`${t.pid}:${t.tid}`,t.args.name),"ProfileChunk"===t.name){const e=`${t.pid}:${t.tid}`,n=r.get(t.id||e);if(n){const e=t.args.data;e.cpuProfile&&(e.cpuProfile.nodes&&(n.nodes=n.nodes.concat(e.cpuProfile.nodes)),e.cpuProfile.samples&&(n.samples=n.samples.concat(e.cpuProfile.samples))),e.timeDeltas&&(n.timeDeltas=n.timeDeltas.concat(e.timeDeltas)),null!=e.startTime&&(n.startTime=e.startTime),null!=e.endTime&&(n.endTime=e.endTime)}else console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${t.id||e}`)}}if(r.size>0){const e=[];let o=0;return(0,t.itForEach)(r.keys(),t=>{let s=null,a=i.get(t);a&&(s=l.get(a)||null);const m=u(r.get(t));s&&r.size>1?(m.setName(`${n} - ${s}`),"CrRendererMain"===s&&(o=e.length)):m.setName(`${n}`),e.push(m)}),{name:n,indexToView:o,profiles:e}}throw new Error("Could not find CPU profile in Timeline")}const o=new Map;function s(e){return(0,t.getOrInsert)(o,e,e=>{const t=e.url;let n=e.lineNumber;null!=n&&n++;let r=e.columnNumber;null!=r&&r++;const i=e.functionName||(t?`(anonymous ${t.split("/").pop()}:${n})`:"(anonymous)");return{key:`${i}:${t}:${n}:${r}`,name:i,file:t,line:n,col:r}})}function a(e){const{functionName:t,url:n}=e;return"native dummy.js"===n||("(root)"===t||"(idle)"===t)}function m(e){return"(garbage collector)"===e||"(program)"===e}function u(r){const i=new e.CallTreeProfileBuilder(r.endTime-r.startTime),l=new Map;for(let e of r.nodes)l.set(e.id,e);for(let e of r.nodes)if("number"==typeof e.parent&&(e.parent=l.get(e.parent)),e.children)for(let t of e.children){const n=l.get(t);n&&(n.parent=e)}const o=[],u=[];let f=r.timeDeltas[0],c=f,p=NaN;for(let e=0;e0&&(0,t.lastOf)(d)!=c;){const e=s(d.pop().callFrame);i.leaveFrame(e,n)}const p=[];for(let e=f;e&&e!=c&&!a(e.callFrame);e=m(e.callFrame.functionName)?(0,t.lastOf)(d):e.parent||null)p.push(e);p.reverse();for(let e of p)i.enterFrame(s(e.callFrame),n);d=d.concat(p)}for(let e=d.length-1;e>=0;e--)i.leaveFrame(s(d[e].callFrame),(0,t.lastOf)(u));return i.setValueFormatter(new n.TimeFormatter("microseconds")),i.build()}function f(e){return u((0,r.chromeTreeToNodes)(e))} +},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4","./v8cpuFormatter":"y1V0"}],"I37H":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromStackprof=r;var e=require("../lib/profile"),t=require("../lib/value-formatters");function r(r){const{frames:a,mode:o,raw:l,raw_timestamp_deltas:s,samples:i}=r,n="object"==o,c=n?i:r.raw_timestamp_deltas.reduce((e,t)=>e+t,0),m=new e.StackListProfileBuilder(c);let p=0,u=[];for(let e=0;e=0;)e[t]=0}var i=0,l=1,d=2,f=3,o=258,b=29,s=256,u=s+1+b,c=30,p=19,h=2*u+1,v=15,y=16,x=7,g=256,m=16,w=17,A=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],q=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],z=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],j=512,B=new Array(2*(u+2));a(B);var C=new Array(2*c);a(C);var D=new Array(j);a(D);var E=new Array(o-f+1);a(E);var F=new Array(b);a(F);var G,H,I,J=new Array(c);function K(e,t,n,_,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=_,this.max_length=r,this.has_stree=e&&e.length}function L(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function M(e){return e<256?D[e]:D[256+(e>>>7)]}function N(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function O(e,t,n){e.bi_valid>y-n?(e.bi_buf|=t<>y-e.bi_valid,e.bi_valid+=n-y):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function R(e){16===e.bi_valid?(N(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}function T(e,t){var n,_,r,a,i,l,d=t.dyn_tree,f=t.max_code,o=t.stat_desc.static_tree,b=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,u=t.stat_desc.extra_base,c=t.stat_desc.max_length,p=0;for(a=0;a<=v;a++)e.bl_count[a]=0;for(d[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;nc&&(a=c,p++),d[2*_+1]=a,_>f||(e.bl_count[a]++,i=0,_>=u&&(i=s[_-u]),l=d[2*_],e.opt_len+=l*(a+i),b&&(e.static_len+=l*(o[2*_+1]+i)));if(0!==p){do{for(a=c-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[c]--,p-=2}while(p>0);for(a=c;0!==a;a--)for(_=e.bl_count[a];0!==_;)(r=e.heap[--n])>f||(d[2*r+1]!==a&&(e.opt_len+=(a-d[2*r+1])*d[2*r],d[2*r+1]=a),_--)}}function U(e,t,n){var _,r,a=new Array(v+1),i=0;for(_=1;_<=v;_++)a[_]=i=i+n[_-1]<<1;for(r=0;r<=t;r++){var l=e[2*r+1];0!==l&&(e[2*r]=Q(a[l]++,l))}}function V(){var e,t,n,_,r,a=new Array(v+1);for(n=0,_=0;_>=7;_8?N(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Y(t,n,_,r){X(t),r&&(N(t,_),N(t,~_)),e.arraySet(t.pending_buf,t.window,n,_,t.pending),t.pending+=_}function Z(e,t,n,_){var r=2*t,a=2*n;return e[r]>1;n>=1;n--)$(e,a,n);r=d;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],$(e,a,1),_=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=_,a[2*r]=a[2*n]+a[2*_],e.depth[r]=(e.depth[n]>=e.depth[_]?e.depth[n]:e.depth[_])+1,a[2*n+1]=a[2*_+1]=r,e.heap[1]=r++,$(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],T(e,t),U(a,f,e.bl_count)}function ne(e,t,n){var _,r,a=-1,i=t[1],l=0,d=7,f=4;for(0===i&&(d=138,f=3),t[2*(n+1)+1]=65535,_=0;_<=n;_++)r=i,i=t[2*(_+1)+1],++l=3&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}function ae(e,t,n,_){var r;for(O(e,t-257,5),O(e,n-1,5),O(e,_-4,4),r=0;r<_;r++)O(e,e.bl_tree[2*S[r]+1],3);_e(e,e.dyn_ltree,t-1),_e(e,e.dyn_dtree,n-1)}function ie(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return _;for(t=32;t0?(e.strm.data_type===r&&(e.strm.data_type=ie(e)),te(e,e.l_desc),te(e,e.d_desc),o=re(e),i=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=i&&(i=f)):i=f=_+5,_+4<=i&&-1!==n?fe(e,n,_,a):e.strategy===t||f===i?(O(e,(l<<1)+(a?1:0),3),ee(e,B,C)):(O(e,(d<<1)+(a?1:0),3),ae(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),ee(e,e.dyn_ltree,e.dyn_dtree)),W(e),a&&X(e)}function se(e,t,n){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(E[n]+s+1)]++,e.dyn_dtree[2*M(t)]++),e.last_lit===e.lit_bufsize-1}exports._tr_init=de,exports._tr_stored_block=fe,exports._tr_flush_block=be,exports._tr_tally=se,exports._tr_align=oe; +},{"../utils/common":"tbG5"}],"uxo6":[function(require,module,exports) { +"use strict";function e(e,r,o,t){for(var u=65535&e|0,i=e>>>16&65535|0,n=0;0!==o;){o-=n=o>2e3?2e3:o;do{i=i+(u=u+r[t++]|0)|0}while(--n);u%=65521,i%=65521}return u|i<<16|0}module.exports=e; +},{}],"X4kj":[function(require,module,exports) { +"use strict";function r(){for(var r,o=[],t=0;t<256;t++){r=t;for(var n=0;n<8;n++)r=1&r?3988292384^r>>>1:r>>>1;o[t]=r}return o}var o=r();function t(r,t,n,u){var a=o,e=u+n;r^=-1;for(var f=u;f>>8^a[255&(r^t[f])];return-1^r}module.exports=t; +},{}],"gMAY":[function(require,module,exports) { +"use strict";module.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}; +},{}],"BLBk":[function(require,module,exports) { +"use strict";var t,a=require("../utils/common"),e=require("./trees"),s=require("./adler32"),i=require("./crc32"),r=require("./messages"),n=0,h=1,l=3,_=4,d=5,o=0,u=1,g=-2,f=-3,c=-5,p=-1,m=1,w=2,v=3,k=4,z=0,b=2,x=8,y=9,B=15,S=8,q=29,I=256,A=I+1+q,C=30,R=19,j=2*A+1,D=15,E=3,H=258,K=H+E+1,N=32,F=42,G=69,J=73,L=91,M=103,O=113,P=666,Q=1,T=2,U=3,V=4,W=3;function X(t,a){return t.msg=r[a],a}function Y(t){return(t<<1)-(t>4?9:0)}function Z(t){for(var a=t.length;--a>=0;)t[a]=0}function $(t){var e=t.state,s=e.pending;s>t.avail_out&&(s=t.avail_out),0!==s&&(a.arraySet(t.output,e.pending_buf,e.pending_out,s,t.next_out),t.next_out+=s,e.pending_out+=s,t.total_out+=s,t.avail_out-=s,e.pending-=s,0===e.pending&&(e.pending_out=0))}function tt(t,a){e._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,a),t.block_start=t.strstart,$(t.strm)}function at(t,a){t.pending_buf[t.pending++]=a}function et(t,a){t.pending_buf[t.pending++]=a>>>8&255,t.pending_buf[t.pending++]=255&a}function st(t,e,r,n){var h=t.avail_in;return h>n&&(h=n),0===h?0:(t.avail_in-=h,a.arraySet(e,t.input,t.next_in,h,r),1===t.state.wrap?t.adler=s(t.adler,e,h,r):2===t.state.wrap&&(t.adler=i(t.adler,e,h,r)),t.next_in+=h,t.total_in+=h,h)}function it(t,a){var e,s,i=t.max_chain_length,r=t.strstart,n=t.prev_length,h=t.nice_match,l=t.strstart>t.w_size-K?t.strstart-(t.w_size-K):0,_=t.window,d=t.w_mask,o=t.prev,u=t.strstart+H,g=_[r+n-1],f=_[r+n];t.prev_length>=t.good_match&&(i>>=2),h>t.lookahead&&(h=t.lookahead);do{if(_[(e=a)+n]===f&&_[e+n-1]===g&&_[e]===_[r]&&_[++e]===_[r+1]){r+=2,e++;do{}while(_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&rn){if(t.match_start=a,n=s,s>=h)break;g=_[r+n-1],f=_[r+n]}}}while((a=o[a&d])>l&&0!=--i);return n<=t.lookahead?n:t.lookahead}function rt(t){var e,s,i,r,n,h=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=h+(h-K)){a.arraySet(t.window,t.window,h,h,0),t.match_start-=h,t.strstart-=h,t.block_start-=h,e=s=t.hash_size;do{i=t.head[--e],t.head[e]=i>=h?i-h:0}while(--s);e=s=h;do{i=t.prev[--e],t.prev[e]=i>=h?i-h:0}while(--s);r+=h}if(0===t.strm.avail_in)break;if(s=st(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=s,t.lookahead+t.insert>=E)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(e=t.pending_buf_size-5);;){if(t.lookahead<=1){if(rt(t),0===t.lookahead&&a===n)return Q;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var s=t.block_start+e;if((0===t.strstart||t.strstart>=s)&&(t.lookahead=t.strstart-s,t.strstart=s,tt(t,!1),0===t.strm.avail_out))return Q;if(t.strstart-t.block_start>=t.w_size-K&&(tt(t,!1),0===t.strm.avail_out))return Q}return t.insert=0,a===_?(tt(t,!0),0===t.strm.avail_out?U:V):(t.strstart>t.block_start&&(tt(t,!1),t.strm.avail_out),Q)}function ht(t,a){for(var s,i;;){if(t.lookahead=E&&(t.ins_h=(t.ins_h<=E)if(i=e._tr_tally(t,t.strstart-t.match_start,t.match_length-E),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=E){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=E&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=E-1)),t.prev_length>=E&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-E,i=e._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-E),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=(t.ins_h<=E&&t.strstart>0&&(i=l[r=t.strstart-1])===l[++r]&&i===l[++r]&&i===l[++r]){h=t.strstart+H;do{}while(i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&rt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=E?(s=e._tr_tally(t,1,t.match_length-E),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(s=e._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),s&&(tt(t,!1),0===t.strm.avail_out))return Q}return t.insert=0,a===_?(tt(t,!0),0===t.strm.avail_out?U:V):t.last_lit&&(tt(t,!1),0===t.strm.avail_out)?Q:T}function dt(t,a){for(var s;;){if(0===t.lookahead&&(rt(t),0===t.lookahead)){if(a===n)return Q;break}if(t.match_length=0,s=e._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,s&&(tt(t,!1),0===t.strm.avail_out))return Q}return t.insert=0,a===_?(tt(t,!0),0===t.strm.avail_out?U:V):t.last_lit&&(tt(t,!1),0===t.strm.avail_out)?Q:T}function ot(t,a,e,s,i){this.good_length=t,this.max_lazy=a,this.nice_length=e,this.max_chain=s,this.func=i}function ut(a){a.window_size=2*a.w_size,Z(a.head),a.max_lazy_match=t[a.level].max_lazy,a.good_match=t[a.level].good_length,a.nice_match=t[a.level].nice_length,a.max_chain_length=t[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=E-1,a.match_available=0,a.ins_h=0}function gt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=x,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new a.Buf16(2*j),this.dyn_dtree=new a.Buf16(2*(2*C+1)),this.bl_tree=new a.Buf16(2*(2*R+1)),Z(this.dyn_ltree),Z(this.dyn_dtree),Z(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new a.Buf16(D+1),this.heap=new a.Buf16(2*A+1),Z(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new a.Buf16(2*A+1),Z(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ft(t){var a;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=b,(a=t.state).pending=0,a.pending_out=0,a.wrap<0&&(a.wrap=-a.wrap),a.status=a.wrap?F:O,t.adler=2===a.wrap?0:1,a.last_flush=n,e._tr_init(a),o):X(t,g)}function ct(t){var a=ft(t);return a===o&&ut(t.state),a}function pt(t,a){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=a,o):g}function mt(t,e,s,i,r,n){if(!t)return g;var h=1;if(e===p&&(e=6),i<0?(h=0,i=-i):i>15&&(h=2,i-=16),r<1||r>y||s!==x||i<8||i>15||e<0||e>9||n<0||n>k)return X(t,g);8===i&&(i=9);var l=new gt;return t.state=l,l.strm=t,l.wrap=h,l.gzhead=null,l.w_bits=i,l.w_size=1<d||s<0)return a?X(a,g):g;if(f=a.state,!a.output||!a.input&&0!==a.avail_in||f.status===P&&s!==_)return X(a,0===a.avail_out?c:g);if(f.strm=a,r=f.last_flush,f.last_flush=s,f.status===F)if(2===f.wrap)a.adler=0,at(f,31),at(f,139),at(f,8),f.gzhead?(at(f,(f.gzhead.text?1:0)+(f.gzhead.hcrc?2:0)+(f.gzhead.extra?4:0)+(f.gzhead.name?8:0)+(f.gzhead.comment?16:0)),at(f,255&f.gzhead.time),at(f,f.gzhead.time>>8&255),at(f,f.gzhead.time>>16&255),at(f,f.gzhead.time>>24&255),at(f,9===f.level?2:f.strategy>=w||f.level<2?4:0),at(f,255&f.gzhead.os),f.gzhead.extra&&f.gzhead.extra.length&&(at(f,255&f.gzhead.extra.length),at(f,f.gzhead.extra.length>>8&255)),f.gzhead.hcrc&&(a.adler=i(a.adler,f.pending_buf,f.pending,0)),f.gzindex=0,f.status=G):(at(f,0),at(f,0),at(f,0),at(f,0),at(f,0),at(f,9===f.level?2:f.strategy>=w||f.level<2?4:0),at(f,W),f.status=O);else{var k=x+(f.w_bits-8<<4)<<8;k|=(f.strategy>=w||f.level<2?0:f.level<6?1:6===f.level?2:3)<<6,0!==f.strstart&&(k|=N),k+=31-k%31,f.status=O,et(f,k),0!==f.strstart&&(et(f,a.adler>>>16),et(f,65535&a.adler)),a.adler=1}if(f.status===G)if(f.gzhead.extra){for(p=f.pending;f.gzindex<(65535&f.gzhead.extra.length)&&(f.pending!==f.pending_buf_size||(f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),$(a),p=f.pending,f.pending!==f.pending_buf_size));)at(f,255&f.gzhead.extra[f.gzindex]),f.gzindex++;f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),f.gzindex===f.gzhead.extra.length&&(f.gzindex=0,f.status=J)}else f.status=J;if(f.status===J)if(f.gzhead.name){p=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),$(a),p=f.pending,f.pending===f.pending_buf_size)){m=1;break}m=f.gzindexp&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),0===m&&(f.gzindex=0,f.status=L)}else f.status=L;if(f.status===L)if(f.gzhead.comment){p=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),$(a),p=f.pending,f.pending===f.pending_buf_size)){m=1;break}m=f.gzindexp&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),0===m&&(f.status=M)}else f.status=M;if(f.status===M&&(f.gzhead.hcrc?(f.pending+2>f.pending_buf_size&&$(a),f.pending+2<=f.pending_buf_size&&(at(f,255&a.adler),at(f,a.adler>>8&255),a.adler=0,f.status=O)):f.status=O),0!==f.pending){if($(a),0===a.avail_out)return f.last_flush=-1,o}else if(0===a.avail_in&&Y(s)<=Y(r)&&s!==_)return X(a,c);if(f.status===P&&0!==a.avail_in)return X(a,c);if(0!==a.avail_in||0!==f.lookahead||s!==n&&f.status!==P){var z=f.strategy===w?dt(f,s):f.strategy===v?_t(f,s):t[f.level].func(f,s);if(z!==U&&z!==V||(f.status=P),z===Q||z===U)return 0===a.avail_out&&(f.last_flush=-1),o;if(z===T&&(s===h?e._tr_align(f):s!==d&&(e._tr_stored_block(f,0,0,!1),s===l&&(Z(f.head),0===f.lookahead&&(f.strstart=0,f.block_start=0,f.insert=0))),$(a),0===a.avail_out))return f.last_flush=-1,o}return s!==_?o:f.wrap<=0?u:(2===f.wrap?(at(f,255&a.adler),at(f,a.adler>>8&255),at(f,a.adler>>16&255),at(f,a.adler>>24&255),at(f,255&a.total_in),at(f,a.total_in>>8&255),at(f,a.total_in>>16&255),at(f,a.total_in>>24&255)):(et(f,a.adler>>>16),et(f,65535&a.adler)),$(a),f.wrap>0&&(f.wrap=-f.wrap),0!==f.pending?o:u)}function kt(t){var a;return t&&t.state?(a=t.state.status)!==F&&a!==G&&a!==J&&a!==L&&a!==M&&a!==O&&a!==P?X(t,g):(t.state=null,a===O?X(t,f):o):g}function zt(t,e){var i,r,n,h,l,_,d,u,f=e.length;if(!t||!t.state)return g;if(2===(h=(i=t.state).wrap)||1===h&&i.status!==F||i.lookahead)return g;for(1===h&&(t.adler=s(t.adler,e,f,0)),i.wrap=0,f>=i.w_size&&(0===h&&(Z(i.head),i.strstart=0,i.block_start=0,i.insert=0),u=new a.Buf8(i.w_size),a.arraySet(u,e,f-i.w_size,i.w_size,0),e=u,f=i.w_size),l=t.avail_in,_=t.next_in,d=t.input,t.avail_in=f,t.next_in=0,t.input=e,rt(i);i.lookahead>=E;){r=i.strstart,n=i.lookahead-(E-1);do{i.ins_h=(i.ins_h<=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function f(e,o){if(o<65537&&(e.subarray&&t||!e.subarray&&n))return String.fromCharCode.apply(null,r.shrinkBuf(e,o));for(var f="",u=0;u>>6,t[u++]=128|63&e):e<65536?(t[u++]=224|e>>>12,t[u++]=128|e>>>6&63,t[u++]=128|63&e):(t[u++]=240|e>>>18,t[u++]=128|e>>>12&63,t[u++]=128|e>>>6&63,t[u++]=128|63&e);return t},exports.buf2binstring=function(r){return f(r,r.length)},exports.binstring2buf=function(n){for(var t=new r.Buf8(n.length),e=0,o=t.length;e4)h[o++]=65533,t+=a-1;else{for(u&=2===a?31:3===a?15:7;a>1&&t1?h[o++]=65533:u<65536?h[o++]=u:(u-=65536,h[o++]=55296|u>>10&1023,h[o++]=56320|1023&u)}return f(h,o)},exports.utf8border=function(r,n){var t;for((n=n||r.length)>r.length&&(n=r.length),t=n-1;t>=0&&128==(192&r[t]);)t--;return t<0?n:0===t?n:t+e[r[t]]>n?t:n}; +},{"./common":"tbG5"}],"bdtv":[function(require,module,exports) { +"use strict";function t(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}module.exports=t; +},{}],"nFS2":[function(require,module,exports) { +"use strict";var t=require("./zlib/deflate"),i=require("./utils/common"),e=require("./utils/strings"),n=require("./zlib/messages"),r=require("./zlib/zstream"),s=Object.prototype.toString,o=0,a=4,u=0,h=1,d=2,l=-1,f=0,p=8;function w(o){if(!(this instanceof w))return new w(o);this.options=i.assign({level:l,method:p,chunkSize:16384,windowBits:15,memLevel:8,strategy:f,to:""},o||{});var a=this.options;a.raw&&a.windowBits>0?a.windowBits=-a.windowBits:a.gzip&&a.windowBits>0&&a.windowBits<16&&(a.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new r,this.strm.avail_out=0;var h=t.deflateInit2(this.strm,a.level,a.method,a.windowBits,a.memLevel,a.strategy);if(h!==u)throw new Error(n[h]);if(a.header&&t.deflateSetHeader(this.strm,a.header),a.dictionary){var d;if(d="string"==typeof a.dictionary?e.string2buf(a.dictionary):"[object ArrayBuffer]"===s.call(a.dictionary)?new Uint8Array(a.dictionary):a.dictionary,(h=t.deflateSetDictionary(this.strm,d))!==u)throw new Error(n[h]);this._dict_set=!0}}function c(t,i){var e=new w(i);if(e.push(t,!0),e.err)throw e.msg||n[e.err];return e.result}function m(t,i){return(i=i||{}).raw=!0,c(t,i)}function g(t,i){return(i=i||{}).gzip=!0,c(t,i)}w.prototype.push=function(n,r){var l,f,p=this.strm,w=this.options.chunkSize;if(this.ended)return!1;f=r===~~r?r:!0===r?a:o,"string"==typeof n?p.input=e.string2buf(n):"[object ArrayBuffer]"===s.call(n)?p.input=new Uint8Array(n):p.input=n,p.next_in=0,p.avail_in=p.input.length;do{if(0===p.avail_out&&(p.output=new i.Buf8(w),p.next_out=0,p.avail_out=w),(l=t.deflate(p,f))!==h&&l!==u)return this.onEnd(l),this.ended=!0,!1;0!==p.avail_out&&(0!==p.avail_in||f!==a&&f!==d)||("string"===this.options.to?this.onData(e.buf2binstring(i.shrinkBuf(p.output,p.next_out))):this.onData(i.shrinkBuf(p.output,p.next_out)))}while((p.avail_in>0||0===p.avail_out)&&l!==h);return f===a?(l=t.deflateEnd(this.strm),this.onEnd(l),this.ended=!0,l===u):f!==d||(this.onEnd(u),p.avail_out=0,!0)},w.prototype.onData=function(t){this.chunks.push(t)},w.prototype.onEnd=function(t){t===u&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},exports.Deflate=w,exports.deflate=c,exports.deflateRaw=m,exports.gzip=g; +},{"./zlib/deflate":"BLBk","./utils/common":"tbG5","./utils/strings":"Q3ZD","./zlib/messages":"gMAY","./zlib/zstream":"bdtv"}],"LP5M":[function(require,module,exports) { +"use strict";var i=30,e=12;module.exports=function(o,a){var t,d,n,l,s,f,r,b,c,u,v,m,w,h,k,_,x,g,p,z,j,q,y,A,B;t=o.state,d=o.next_in,A=o.input,n=d+(o.avail_in-5),l=o.next_out,B=o.output,s=l-(a-o.avail_out),f=l+(o.avail_out-257),r=t.dmax,b=t.wsize,c=t.whave,u=t.wnext,v=t.window,m=t.hold,w=t.bits,h=t.lencode,k=t.distcode,_=(1<>>=p=g>>>24,w-=p,0===(p=g>>>16&255))B[l++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=h[(65535&g)+(m&(1<>>=p,w-=p),w<15&&(m+=A[d++]<>>=p=g>>>24,w-=p,!(16&(p=g>>>16&255))){if(0==(64&p)){g=k[(65535&g)+(m&(1<r){o.msg="invalid distance too far back",t.mode=i;break i}if(m>>>=p,w-=p,j>(p=l-s)){if((p=j-p)>c&&t.sane){o.msg="invalid distance too far back",t.mode=i;break i}if(q=0,y=v,0===u){if(q+=b-p,p2;)B[l++]=y[q++],B[l++]=y[q++],B[l++]=y[q++],z-=3;z&&(B[l++]=y[q++],z>1&&(B[l++]=y[q++]))}else{q=l-j;do{B[l++]=B[q++],B[l++]=B[q++],B[l++]=B[q++],z-=3}while(z>2);z&&(B[l++]=B[q++],z>1&&(B[l++]=B[q++]))}break}}break}}while(d>3,m&=(1<<(w-=z<<3))-1,o.next_in=d,o.next_out=l,o.avail_in=d=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return d[v++]=20971520,d[v++]=20971520,h.bits=1,0;for(F=1;F0&&(a===e||1!==G))return-1;for(Q[1]=0,D=1;Di||a===t&&L>o)return 1;for(;;){y=D-J,B[E]j?(z=R[S+B[E]],A=N[O+B[E]]):(z=96,A=0),k=1<>J)+(p-=k)]=y<<24|z<<16|A|0}while(0!==p);for(k=1<>=1;if(0!==k?(M&=k-1,M+=k):M=0,E++,0==--P[D]){if(D===G)break;D=c[m+B[E]]}if(D>H&&(M&x)!==q){for(0===J&&(J=H),g+=F,K=1<<(I=D-J);I+Ji||a===t&&L>o)return 1;d[q=M&x]=H<<24|I<<16|g-v|0}}return 0!==M&&(d[g+M]=D-J<<24|64<<16|0),h.bits=H,0}; +},{"../utils/common":"tbG5"}],"GIDK":[function(require,module,exports) { +"use strict";var e=require("../utils/common"),a=require("./adler32"),t=require("./crc32"),i=require("./inffast"),s=require("./inftrees"),n=0,r=1,o=2,d=4,l=5,f=6,c=0,h=1,k=2,b=-2,m=-3,w=-4,u=-5,g=8,v=1,x=2,p=3,_=4,y=5,z=6,B=7,S=8,q=9,C=10,I=11,R=12,j=13,A=14,D=15,E=16,G=17,H=18,K=19,N=20,F=21,J=22,L=23,M=24,O=25,P=26,Q=27,T=28,U=29,V=30,W=31,X=32,Y=852,Z=592,$=15,ee=$;function ae(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function te(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new e.Buf16(320),this.work=new e.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ie(a){var t;return a&&a.state?(t=a.state,a.total_in=a.total_out=t.total=0,a.msg="",t.wrap&&(a.adler=1&t.wrap),t.mode=v,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new e.Buf32(Y),t.distcode=t.distdyn=new e.Buf32(Z),t.sane=1,t.back=-1,c):b}function se(e){var a;return e&&e.state?((a=e.state).wsize=0,a.whave=0,a.wnext=0,ie(e)):b}function ne(e,a){var t,i;return e&&e.state?(i=e.state,a<0?(t=0,a=-a):(t=1+(a>>4),a<48&&(a&=15)),a&&(a<8||a>15)?b:(null!==i.window&&i.wbits!==a&&(i.window=null),i.wrap=t,i.wbits=a,se(e))):b}function re(e,a){var t,i;return e?(i=new te,e.state=i,i.window=null,(t=ne(e,a))!==c&&(e.state=null),t):b}function oe(e){return re(e,ee)}var de,le,fe=!0;function ce(a){if(fe){var t;for(de=new e.Buf32(512),le=new e.Buf32(32),t=0;t<144;)a.lens[t++]=8;for(;t<256;)a.lens[t++]=9;for(;t<280;)a.lens[t++]=7;for(;t<288;)a.lens[t++]=8;for(s(r,a.lens,0,288,de,0,a.work,{bits:9}),t=0;t<32;)a.lens[t++]=5;s(o,a.lens,0,32,le,0,a.work,{bits:5}),fe=!1}a.lencode=de,a.lenbits=9,a.distcode=le,a.distbits=5}function he(a,t,i,s){var n,r=a.state;return null===r.window&&(r.wsize=1<=r.wsize?(e.arraySet(r.window,t,i-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((n=r.wsize-r.wnext)>s&&(n=s),e.arraySet(r.window,t,i-s,n,r.wnext),(s-=n)?(e.arraySet(r.window,t,i-s,s,0),r.wnext=s,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,$.check=t($.check,qe,2,0),oe=0,de=0,$.mode=x;break}if($.flags=0,$.head&&($.head.done=!1),!(1&$.wrap)||(((255&oe)<<8)+(oe>>8))%31){Y.msg="incorrect header check",$.mode=V;break}if((15&oe)!==g){Y.msg="unknown compression method",$.mode=V;break}if(de-=4,_e=8+(15&(oe>>>=4)),0===$.wbits)$.wbits=_e;else if(_e>$.wbits){Y.msg="invalid window size",$.mode=V;break}$.dmax=1<<_e,Y.adler=$.check=1,$.mode=512&oe?C:R,oe=0,de=0;break;case x:for(;de<16;){if(0===ne)break e;ne--,oe+=ee[ie++]<>8&1),512&$.flags&&(qe[0]=255&oe,qe[1]=oe>>>8&255,$.check=t($.check,qe,2,0)),oe=0,de=0,$.mode=p;case p:for(;de<32;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>8&255,qe[2]=oe>>>16&255,qe[3]=oe>>>24&255,$.check=t($.check,qe,4,0)),oe=0,de=0,$.mode=_;case _:for(;de<16;){if(0===ne)break e;ne--,oe+=ee[ie++]<>8),512&$.flags&&(qe[0]=255&oe,qe[1]=oe>>>8&255,$.check=t($.check,qe,2,0)),oe=0,de=0,$.mode=y;case y:if(1024&$.flags){for(;de<16;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>8&255,$.check=t($.check,qe,2,0)),oe=0,de=0}else $.head&&($.head.extra=null);$.mode=z;case z:if(1024&$.flags&&((ke=$.length)>ne&&(ke=ne),ke&&($.head&&(_e=$.head.extra_len-$.length,$.head.extra||($.head.extra=new Array($.head.extra_len)),e.arraySet($.head.extra,ee,ie,ke,_e)),512&$.flags&&($.check=t($.check,ee,ke,ie)),ne-=ke,ie+=ke,$.length-=ke),$.length))break e;$.length=0,$.mode=B;case B:if(2048&$.flags){if(0===ne)break e;ke=0;do{_e=ee[ie+ke++],$.head&&_e&&$.length<65536&&($.head.name+=String.fromCharCode(_e))}while(_e&&ke>9&1,$.head.done=!0),Y.adler=$.check=0,$.mode=R;break;case C:for(;de<32;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=7&de,de-=7&de,$.mode=Q;break}for(;de<3;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=1)){case 0:$.mode=A;break;case 1:if(ce($),$.mode=N,Z===f){oe>>>=2,de-=2;break e}break;case 2:$.mode=G;break;case 3:Y.msg="invalid block type",$.mode=V}oe>>>=2,de-=2;break;case A:for(oe>>>=7&de,de-=7&de;de<32;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>16^65535)){Y.msg="invalid stored block lengths",$.mode=V;break}if($.length=65535&oe,oe=0,de=0,$.mode=D,Z===f)break e;case D:$.mode=E;case E:if(ke=$.length){if(ke>ne&&(ke=ne),ke>re&&(ke=re),0===ke)break e;e.arraySet(te,ee,ie,ke,se),ne-=ke,ie+=ke,re-=ke,se+=ke,$.length-=ke;break}$.mode=R;break;case G:for(;de<14;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=5,de-=5,$.ndist=1+(31&oe),oe>>>=5,de-=5,$.ncode=4+(15&oe),oe>>>=4,de-=4,$.nlen>286||$.ndist>30){Y.msg="too many length or distance symbols",$.mode=V;break}$.have=0,$.mode=H;case H:for(;$.have<$.ncode;){for(;de<3;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=3,de-=3}for(;$.have<19;)$.lens[Ce[$.have++]]=0;if($.lencode=$.lendyn,$.lenbits=7,ze={bits:$.lenbits},ye=s(n,$.lens,0,19,$.lencode,0,$.work,ze),$.lenbits=ze.bits,ye){Y.msg="invalid code lengths set",$.mode=V;break}$.have=0,$.mode=K;case K:for(;$.have<$.nlen+$.ndist;){for(;ue=(Se=$.lencode[oe&(1<<$.lenbits)-1])>>>16&255,ge=65535&Se,!((we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=we,de-=we,$.lens[$.have++]=ge;else{if(16===ge){for(Be=we+2;de>>=we,de-=we,0===$.have){Y.msg="invalid bit length repeat",$.mode=V;break}_e=$.lens[$.have-1],ke=3+(3&oe),oe>>>=2,de-=2}else if(17===ge){for(Be=we+3;de>>=we)),oe>>>=3,de-=3}else{for(Be=we+7;de>>=we)),oe>>>=7,de-=7}if($.have+ke>$.nlen+$.ndist){Y.msg="invalid bit length repeat",$.mode=V;break}for(;ke--;)$.lens[$.have++]=_e}}if($.mode===V)break;if(0===$.lens[256]){Y.msg="invalid code -- missing end-of-block",$.mode=V;break}if($.lenbits=9,ze={bits:$.lenbits},ye=s(r,$.lens,0,$.nlen,$.lencode,0,$.work,ze),$.lenbits=ze.bits,ye){Y.msg="invalid literal/lengths set",$.mode=V;break}if($.distbits=6,$.distcode=$.distdyn,ze={bits:$.distbits},ye=s(o,$.lens,$.nlen,$.ndist,$.distcode,0,$.work,ze),$.distbits=ze.bits,ye){Y.msg="invalid distances set",$.mode=V;break}if($.mode=N,Z===f)break e;case N:$.mode=F;case F:if(ne>=6&&re>=258){Y.next_out=se,Y.avail_out=re,Y.next_in=ie,Y.avail_in=ne,$.hold=oe,$.bits=de,i(Y,fe),se=Y.next_out,te=Y.output,re=Y.avail_out,ie=Y.next_in,ee=Y.input,ne=Y.avail_in,oe=$.hold,de=$.bits,$.mode===R&&($.back=-1);break}for($.back=0;ue=(Se=$.lencode[oe&(1<<$.lenbits)-1])>>>16&255,ge=65535&Se,!((we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>ve)])>>>16&255,ge=65535&Se,!(ve+(we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=ve,de-=ve,$.back+=ve}if(oe>>>=we,de-=we,$.back+=we,$.length=ge,0===ue){$.mode=P;break}if(32&ue){$.back=-1,$.mode=R;break}if(64&ue){Y.msg="invalid literal/length code",$.mode=V;break}$.extra=15&ue,$.mode=J;case J:if($.extra){for(Be=$.extra;de>>=$.extra,de-=$.extra,$.back+=$.extra}$.was=$.length,$.mode=L;case L:for(;ue=(Se=$.distcode[oe&(1<<$.distbits)-1])>>>16&255,ge=65535&Se,!((we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>ve)])>>>16&255,ge=65535&Se,!(ve+(we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=ve,de-=ve,$.back+=ve}if(oe>>>=we,de-=we,$.back+=we,64&ue){Y.msg="invalid distance code",$.mode=V;break}$.offset=ge,$.extra=15&ue,$.mode=M;case M:if($.extra){for(Be=$.extra;de>>=$.extra,de-=$.extra,$.back+=$.extra}if($.offset>$.dmax){Y.msg="invalid distance too far back",$.mode=V;break}$.mode=O;case O:if(0===re)break e;if(ke=fe-re,$.offset>ke){if((ke=$.offset-ke)>$.whave&&$.sane){Y.msg="invalid distance too far back",$.mode=V;break}ke>$.wnext?(ke-=$.wnext,be=$.wsize-ke):be=$.wnext-ke,ke>$.length&&(ke=$.length),me=$.window}else me=te,be=se-$.offset,ke=$.length;ke>re&&(ke=re),re-=ke,$.length-=ke;do{te[se++]=me[be++]}while(--ke);0===$.length&&($.mode=F);break;case P:if(0===re)break e;te[se++]=$.length,re--,$.mode=F;break;case Q:if($.wrap){for(;de<32;){if(0===ne)break e;ne--,oe|=ee[ie++]<=0&&u.windowBits<16&&(u.windowBits=-u.windowBits,0===u.windowBits&&(u.windowBits=-15)),!(u.windowBits>=0&&u.windowBits<16)||n&&n.windowBits||(u.windowBits+=32),u.windowBits>15&&u.windowBits<48&&0==(15&u.windowBits)&&(u.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new e,this.strm.avail_out=0;var h=t.inflateInit2(this.strm,u.windowBits);if(h!==s.Z_OK)throw new Error(r[h]);this.header=new o,t.inflateGetHeader(this.strm,this.header)}function h(t,i){var n=new a(i);if(n.push(t,!0),n.err)throw n.msg||r[n.err];return n.result}function _(t,i){return(i=i||{}).raw=!0,h(t,i)}a.prototype.push=function(r,e){var o,a,h,_,w,l,d=this.strm,f=this.options.chunkSize,p=this.options.dictionary,c=!1;if(this.ended)return!1;a=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof r?d.input=n.binstring2buf(r):"[object ArrayBuffer]"===u.call(r)?d.input=new Uint8Array(r):d.input=r,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new i.Buf8(f),d.next_out=0,d.avail_out=f),(o=t.inflate(d,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(l="string"==typeof p?n.string2buf(p):"[object ArrayBuffer]"===u.call(p)?new Uint8Array(p):p,o=t.inflateSetDictionary(this.strm,l)),o===s.Z_BUF_ERROR&&!0===c&&(o=s.Z_OK,c=!1),o!==s.Z_STREAM_END&&o!==s.Z_OK)return this.onEnd(o),this.ended=!0,!1;d.next_out&&(0!==d.avail_out&&o!==s.Z_STREAM_END&&(0!==d.avail_in||a!==s.Z_FINISH&&a!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(h=n.utf8border(d.output,d.next_out),_=d.next_out-h,w=n.buf2string(d.output,h),d.next_out=_,d.avail_out=f-_,_&&i.arraySet(d.output,d.output,h,_,0),this.onData(w)):this.onData(i.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(c=!0)}while((d.avail_in>0||0===d.avail_out)&&o!==s.Z_STREAM_END);return o===s.Z_STREAM_END&&(a=s.Z_FINISH),a===s.Z_FINISH?(o=t.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===s.Z_OK):a!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),d.avail_out=0,!0)},a.prototype.onData=function(t){this.chunks.push(t)},a.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},exports.Inflate=a,exports.inflate=h,exports.inflateRaw=_,exports.ungzip=h; +},{"./zlib/inflate":"GIDK","./utils/common":"tbG5","./utils/strings":"Q3ZD","./zlib/constants":"xUUw","./zlib/messages":"gMAY","./zlib/zstream":"bdtv","./zlib/gzheader":"WIli"}],"f4vO":[function(require,module,exports) { +"use strict";var e=require("./lib/utils/common").assign,i=require("./lib/deflate"),r=require("./lib/inflate"),l=require("./lib/zlib/constants"),s={};e(s,i,r,l),module.exports=s; +},{"./lib/utils/common":"tbG5","./lib/deflate":"nFS2","./lib/inflate":"faQk","./lib/zlib/constants":"xUUw"}],"DstG":[function(require,module,exports) { +!function(e){var a=String.fromCharCode;function s(e,s,c){for(var n=e[s],r=1,i=0,t=0;t=32&&n<=126?"Unexpected character "+a(n)+" in JSON at position "+s+" (line "+r+", column "+i+")":"Unexpected byte 0x"+n.toString(16)+" in JSON at position "+s+" (line "+r+", column "+i+")"))}e.JSON_parse=function(e){if(!(e instanceof Uint8Array))throw new Error("JSON input must be a Uint8Array");for(var c,n=[],r=[],i=[],t=e.length,o=null,u=0,f=0;f=t&&s(e,t),34!==(p=e[f++]);)if(92===p)switch(e[f++]){case 34:l+='"';break;case 47:l+="/";break;case 92:l+="\\";break;case 98:l+="\b";break;case 102:l+="\f";break;case 110:l+="\n";break;case 114:l+="\r";break;case 116:l+="\t";break;case 117:for(var k=0,h=0;h<4;h++)k<<=4,(p=e[f++])>=48&&p<=57?k|=p-48:p>=97&&p<=102?k|=p+-87:p>=65&&p<=70?k|=p+-55:s(e,--f);l+=a(k);break;default:s(e,--f)}else if(p<=127)l+=a(p);else if(192==(224&p))l+=a((31&p)<<6|63&e[f++]);else if(224==(240&p))l+=a((15&p)<<12|(63&e[f++])<<6|63&e[f++]);else if(240==(248&p)){var d=(7&p)<<18|(63&e[f++])<<12|(63&e[f++])<<6|63&e[f++];d>65535&&(l+=a((d-=65536)>>10&1023|55296),d=56320|1023&d),l+=a(d)}l[0];break;case 91:l=[],n.push(o),r.push(c),i.push(u),o=null,c=l,u=1;continue;case 123:l={},n.push(o),r.push(c),i.push(u),o=null,c=l,u=2;continue;case 93:1!==u&&s(e,--f),l=c,o=n.pop(),c=r.pop(),u=i.pop();break;case 125:2!==u&&s(e,--f),l=c,o=n.pop(),c=r.pop(),u=i.pop();break;default:s(e,--f)}for(p=e[f];p<=32;)p=e[++f];switch(u){case 0:if(f===t)return l;break;case 1:if(c.push(l),44===p){f++;continue}if(93===p)continue;break;case 2:if(null===o){if(o=l,58===p){f++;continue}}else{if(c[o]=l,o=null,44===p){f++;continue}if(125===p)continue}}break}}s(e,f)}}("undefined"!=typeof exports?exports:this); +},{}],"QTYz":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.withMockedFileChunkSizeForTests=o,exports.MaybeCompressedDataReader=exports.TextProfileDataSource=exports.StringBackedTextFileContent=exports.BufferBackedTextFileContent=void 0;var e=n(require("pako")),t=require("uint8array-json-parser");function r(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return r=function(){return e},e}function n(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=r();if(t&&t.has(e))return t.get(e);var n={},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=s?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}var s=function(e,t,r,n){return new(r||(r=Promise))(function(s,i){function o(e){try{a(n.next(e))}catch(t){i(t)}}function u(e){try{a(n.throw(e))}catch(t){i(t)}}function a(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,u)}a((n=n.apply(e,t||[])).next())})};let i=1<<27;function o(e,t){return s(this,void 0,void 0,function*(){const r=i;i=e;try{yield t()}finally{i=r}})}function u(e){return"["===(e=e.trim())[0]&&"]"!==(e=e.replace(/,\s*$/,""))[e.length-1]&&(e+="]"),JSON.parse(e)}function a(e){let r=0;for(let t=0;t0&&/\s/.exec(String.fromCharCode(e[t-1]));)t--;if(","===String.fromCharCode(e[t-1])&&t--,"]"!==String.fromCharCode(e[t-1])){const r=new Uint8Array(t+1);r.set(e.subarray(0,t)),r[t]="]".charCodeAt(0),e=r}}return(0,t.JSON_parse)(e)}class c{constructor(e){this.chunks=[];const t=this.byteArray=new Uint8Array(e);let r="utf-8";if(t.length>2&&(255===t[0]&&254===t[1]?r="utf-16le":254===t[0]&&255===t[1]&&(r="utf-16be")),"undefined"!=typeof TextDecoder){const t=new TextDecoder(r);for(let r=0;r=i&&this.chunks.push("")}}splitLines(){let e=this.chunks[0].split("\n");for(let t=1;t0&&(e[e.length-1]+=r.shift()),e=e.concat(r))}return e}firstChunk(){return this.chunks[0]||""}parseAsJSON(){return 1===this.chunks.length?u(this.chunks[0]):a(this.byteArray)}}exports.BufferBackedTextFileContent=c;class h{constructor(e){this.s=e}splitLines(){return this.s.split("\n")}firstChunk(){return this.s}parseAsJSON(){return u(this.s)}}exports.StringBackedTextFileContent=h;class f{constructor(e,t){this.fileName=e,this.contents=t}name(){return s(this,void 0,void 0,function*(){return this.fileName})}readAsArrayBuffer(){return s(this,void 0,void 0,function*(){return new ArrayBuffer(0)})}readAsText(){return s(this,void 0,void 0,function*(){return new h(this.contents)})}}exports.TextProfileDataSource=f;class l{constructor(t,r){this.namePromise=t,this.uncompressedData=r.then(t=>s(this,void 0,void 0,function*(){try{return e.inflate(new Uint8Array(t)).buffer}catch(r){return t}}))}name(){return s(this,void 0,void 0,function*(){return yield this.namePromise})}readAsArrayBuffer(){return s(this,void 0,void 0,function*(){return yield this.uncompressedData})}readAsText(){return s(this,void 0,void 0,function*(){const e=yield this.readAsArrayBuffer();return new c(e)})}static fromFile(e){const t=new Promise(t=>{const r=new FileReader;r.addEventListener("loadend",()=>{if(!(r.result instanceof ArrayBuffer))throw new Error("Expected reader.result to be an instance of ArrayBuffer");t(r.result)}),r.readAsArrayBuffer(e)});return new l(Promise.resolve(e.name),t)}static fromArrayBuffer(e,t){return new l(Promise.resolve(e),Promise.resolve(t))}}exports.MaybeCompressedDataReader=l; +},{"pako":"f4vO","uint8array-json-parser":"DstG"}],"G28U":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromInstrumentsDeepCopy=a,exports.importFromInstrumentsTrace=w,exports.importRunFromInstrumentsTrace=g,exports.importThreadFromInstrumentsTrace=b,exports.readInstrumentsKeyedArchive=y,exports.decodeUTF8=v,exports.UID=void 0;var e=require("../lib/profile"),t=require("../lib/utils"),r=require("../lib/value-formatters"),n=require("./utils"),s=function(e,t,r,n){return new(r||(r=Promise))(function(s,i){function o(e){try{c(n.next(e))}catch(t){i(t)}}function a(e){try{c(n.throw(e))}catch(t){i(t)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}c((n=n.apply(e,t||[])).next())})};function i(e){const t=e.splitLines().map(e=>e.split("\t")),r=t.shift();if(!r)return[];const n=new Map;for(let i=0;i0;){const e=a.pop();c=Math.max(c,e.endValue),n.leaveFrame(e,c)}return"Bytes Used"in s[0]?n.setValueFormatter(new r.ByteFormatter):("Weight"in s[0]||"Running Time"in s[0])&&n.setValueFormatter(new r.TimeFormatter("milliseconds")),n.build()}function c(e){return s(this,void 0,void 0,function*(){const t={name:e.name,files:new Map,subdirectories:new Map},r=yield new Promise((t,r)=>{e.createReader().readEntries(e=>{t(e)},r)});for(let e of r)if(e.isDirectory){const r=yield c(e);t.subdirectories.set(r.name,r)}else{const r=yield new Promise((t,r)=>{e.file(t,r)});t.files.set(r.name,r)}return t})}function l(e){return n.MaybeCompressedDataReader.fromFile(e).readAsArrayBuffer()}function u(e){return n.MaybeCompressedDataReader.fromFile(e).readAsText()}function f(e,r){const n=(0,t.getOrThrow)(e.subdirectories,"corespace"),s=(0,t.getOrThrow)(n.subdirectories,`run${r}`);return(0,t.getOrThrow)(s.subdirectories,"core")}class h{constructor(e){this.bytePos=0,this.view=new DataView(e)}seek(e){this.bytePos=e}skip(e){this.bytePos+=e}hasMore(){return this.bytePosthis.view.byteLength?0:this.view.getUint8(this.bytePos-1)}readUint32(){return this.bytePos+=4,this.bytePos>this.view.byteLength?0:this.view.getUint32(this.bytePos-4,!0)}readUint48(){return this.bytePos+=6,this.bytePos>this.view.byteLength?0:this.view.getUint32(this.bytePos-6,!0)+this.view.getUint16(this.bytePos-2,!0)*Math.pow(2,32)}readUint64(){return this.bytePos+=8,this.bytePos>this.view.byteLength?0:this.view.getUint32(this.bytePos-8,!0)+this.view.getUint32(this.bytePos-4,!0)*Math.pow(2,32)}}function p(e){return s(this,void 0,void 0,function*(){const r=(0,t.getOrThrow)(e.subdirectories,"stores");for(let e of r.subdirectories.values()){const r=e.files.get("schema.xml");if(!r)continue;const n=yield u(r);if(!/name="time-profile"/.exec(n.firstChunk()))continue;const s=new h(yield l((0,t.getOrThrow)(e.files,"bulkstore")));s.readUint32(),s.readUint32(),s.readUint32();const i=s.readUint32(),o=s.readUint32();s.seek(i);const a=[];for(;;){const e=s.readUint48();if(0===e)break;const t=s.readUint32();s.skip(o-6-4-4);const r=s.readUint32();a.push({timestamp:e,threadID:t,backtraceID:r})}return a}throw new Error("Could not find sample list")})}function d(e,r){return s(this,void 0,void 0,function*(){const e=(0,t.getOrThrow)(r.subdirectories,"uniquing"),n=(0,t.getOrThrow)(e.subdirectories,"arrayUniquer"),s=(0,t.getOrThrow)(n.files,"integeruniquer.index"),i=(0,t.getOrThrow)(n.files,"integeruniquer.data"),o=new h(yield l(s)),a=new h(yield l(i));o.seek(32);let c=[];for(;o.hasMore();){const e=o.readUint32()+1048576*o.readUint32();if(0===e)continue;a.seek(e);let t=a.readUint32(),r=[];for(;t--;)r.push(a.readUint64());c.push(r)}return c})}function m(e){return s(this,void 0,void 0,function*(){const r=(0,t.getOrThrow)(e.files,"form.template"),n=y(yield l(r)),s=n["com.apple.xray.owner.template.version"];let i=1;"com.apple.xray.owner.template"in n&&(i=n["com.apple.xray.owner.template"].get("_selectedRunNumber"));let o=n.$1;"stubInfoByUUID"in n&&(o=Array.from(n.stubInfoByUUID.keys())[0]);const a=n["com.apple.xray.run.data"],c=[];for(let e of a.runNumbers){const r=(0,t.getOrThrow)(a.runData,e),n=(0,t.getOrThrow)(r,"symbolsByPid"),s=new Map;for(let i of n.values()){for(let e of i.symbols){if(!e)continue;const{sourcePath:r,symbolName:n,addressToLine:i}=e;for(let e of i.keys())(0,t.getOrInsert)(s,e,()=>{const s=n||`0x${(0,t.zeroPad)(e.toString(16),16)}`,i={key:`${r}:${s}`,name:s};return r&&(i.file=r),i})}c.push({number:e,addressToFrameMap:s})}}return{version:s,instrument:o,selectedRunNumber:i,runs:c}})}function w(e){return s(this,void 0,void 0,function*(){const t=yield c(e),{version:r,runs:n,instrument:s,selectedRunNumber:i}=yield m(t);if("com.apple.xray.instrument-type.coresampler2"!==s)throw new Error(`The only supported instrument from .trace import is "com.apple.xray.instrument-type.coresampler2". Got ${s}`);console.log("version: ",r),console.log("Importing time profile");const o=[];let a=0;for(let c of n){const{addressToFrameMap:r,number:n}=c,s=yield g({fileName:e.name,tree:t,addressToFrameMap:r,runNumber:n});c.number===i&&(a=o.length+s.indexToView),o.push(...s.profiles)}return{name:e.name,indexToView:a,profiles:o}})}function g(e){return s(this,void 0,void 0,function*(){const{fileName:r,tree:n,addressToFrameMap:s,runNumber:i}=e,o=f(n,i);let a=yield p(o);const c=yield d(a,o),l=new Map;for(let e of a)l.set(e.threadID,(0,t.getOrElse)(l,e.threadID,()=>0)+1);const u=Array.from(l.entries());(0,t.sortBy)(u,e=>-e[1]);const h=u.map(e=>e[0]);return{name:r,indexToView:0,profiles:h.map(e=>b({threadID:e,fileName:r,arrays:c,addressToFrameMap:s,samples:a}))}})}function b(n){let{fileName:s,addressToFrameMap:i,arrays:o,threadID:a,samples:c}=n;const l=new Map;c=c.filter(e=>e.threadID===a);const u=new e.StackListProfileBuilder((0,t.lastOf)(c).timestamp);function f(e,r){const n=i.get(e);if(n)r.push(n);else if(e in o)for(let t of o[e])f(t,r);else{const n={key:e,name:`0x${(0,t.zeroPad)(e.toString(16),16)}`};i.set(e,n),r.push(n)}}u.setName(`${s} - thread ${a}`);let h=null;for(let e of c){const r=(0,t.getOrInsert)(l,e.backtraceID,e=>{const t=[];return f(e,t),t.reverse(),t});if(null===h&&(u.appendSampleWithWeight([],e.timestamp),h=e.timestamp),e.timestamp{switch(e){case"NSTextStorage":case"NSParagraphStyle":case"NSFont":return null;case"PFTSymbolData":{const e=Object.create(null);e.symbolName=t.$0,e.sourcePath=t.$1,e.addressToLine=new Map;for(let r=3;;r+=2){const n=t["$"+r],s=t["$"+(r+1)];if(null==n||null==s)break;e.addressToLine.set(n,s)}return e}case"PFTOwnerData":{const e=Object.create(null);return e.ownerName=t.$0,e.ownerPath=t.$1,e}case"PFTPersistentSymbols":{const e=Object.create(null),r=t.$4;e.threadNames=t.$3,e.symbols=[];for(let n=1;ne)){if(1e5!==e.$version||"NSKeyedArchiver"!==e.$archiver||!S(e.$top)||!U(e.$objects))throw new Error("Invalid keyed archive");"$null"===e.$objects[0]&&(e.$objects[0]=null);for(let n=0;n{if(t instanceof x)return e.$objects[t.index];if(U(t))for(let e=0;ee)){if(S(t)&&t.$class){let n=N(e,t.$class).$classname;switch(n){case"NSDecimalNumberPlaceholder":{let e=t["NS.length"],r=t["NS.exponent"],n=t["NS.mantissa.bo"],s=t["NS.negative"],i=new Uint16Array(new Uint8Array(t["NS.mantissa"]).buffer),o=0;for(let t=0;t>8|(255&e)<<8),o+=e*Math.pow(65536,t)}return o*=Math.pow(10,r),s?-o:o}case"NSData":case"NSMutableData":return t["NS.bytes"]||t["NS.data"];case"NSString":case"NSMutableString":return t["NS.string"]?t["NS.string"]:t["NS.bytes"]?v(t["NS.bytes"]):(console.warn(`Unexpected ${n} format: `,t),null);case"NSArray":case"NSMutableArray":if("NS.objects"in t)return t["NS.objects"];let e=[];for(;;){let r="NS.object."+e.length;if(!(r in t))break;e.push(t[r])}return e;case"_NSKeyedCoderOldStyleArray":{const e=t["NS.count"];let r=[];for(let n=0;n>4){case 0:return this.parseSingleton(e,r);case 1:return this.parseInteger(e,1<({key:e,name:e})),duration:parseInt(i,10)})}return t}function r(r){const n=t(r),i=n.reduce((e,t)=>e+t.duration,0),o=new e.StackListProfileBuilder(i);if(0===n.length)return null;for(let e of n)o.appendSampleWithWeight(e.stack,e.duration);return o.build()} +},{"../lib/profile":"YG8z"}],"uNW1":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromFirefox=l;var e=require("../lib/profile"),t=require("../lib/utils"),r=require("../lib/value-formatters");function l(l){const n=l.profile,s=1===n.threads.length?n.threads[0]:n.threads.filter(e=>"GeckoMain"===e.name)[0],a=new Map;function o(e){let r=e[0];const l=[];for(;null!=r;){const e=s.stackTable.data[r],[t,n]=e;l.push(n),r=t}return l.reverse(),l.map(e=>{const r=s.frameTable.data[e],l=s.stringTable[r[0]],n=/(.*)\s+\((.*?)(?::(\d+))?(?::(\d+))?\)$/.exec(l);return n?n[2].startsWith("resource:")||"self-hosted"===n[2]||n[2].startsWith("self-hosted:")?null:(0,t.getOrInsert)(a,l,()=>({key:l,name:n[1],file:n[2],line:n[3]?parseInt(n[3]):void 0,col:n[4]?parseInt(n[4])+1:void 0})):null}).filter(e=>null!=e)}const i=new e.CallTreeProfileBuilder(l.duration);let u=[];for(let e of s.samples.data){const t=o(e),r=e[1];let l=-1;for(let e=0;el;e--)i.leaveFrame(u[e],r);for(let e=l+1;e0?e[1]:t?`(anonymous ${t.split("/").pop()}:${a})`:"(anonymous)",file:t.length>0?t:"(unknown file)",line:a,col:n}}break}case"CODE":switch(e.kind){case"LoadIC":case"StoreIC":case"KeyedStoreIC":case"KeyedLoadIC":case"LoadGlobalIC":case"Handler":r="(IC) "+r;break;case"BytecodeHandler":r="(bytecode) ~"+r;break;case"Stub":r="(stub) "+r;break;case"Builtin":r="(builtin) "+r;break;case"RegExp":r="(regexp) "+r}break;default:r=`(${e.type}) ${r}`}return{key:r,name:r}}function n(n){const o=new e.StackListProfileBuilder,s=new Map;let c=0;(0,t.sortBy)(n.ticks,e=>e.tm);for(let e of n.ticks){const r=[];for(let o=e.s.length-2;o>=0;o-=2){const c=e.s[o];-1!==c&&(c>n.code.length?r.push({key:c,name:`0x${c.toString(16)}`}):r.push((i=c,(0,t.getOrInsert)(s,i,e=>a(n.code[e],n)))))}o.appendSampleWithWeight(r,e.tm-c),c=e.tm}var i;return o.setValueFormatter(new r.TimeFormatter("microseconds")),o.build()} +},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"f2sa":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromLinuxPerf=l;var e=require("../lib/profile"),t=require("../lib/utils"),n=require("../lib/value-formatters");function s(e){const t=e.split("\n").filter(e=>!/^\s*#/.exec(e)),n={command:null,processID:null,threadID:null,time:null,eventType:"",stack:[]},s=t.shift();if(!s)return null;const r=/^(\S.+?)\s+(\d+)(?:\/?(\d+))?\s+/.exec(s);if(!r)return null;n.command=r[1],r[3]?(n.processID=parseInt(r[2],10),n.threadID=parseInt(r[3],10)):n.threadID=parseInt(r[2],10);const l=/\s+(\d+\.\d+):\s+/.exec(s);l&&(n.time=parseFloat(l[1]));const i=/(\S+):\s*$/.exec(s);i&&(n.eventType=i[1]);for(let o of t){const e=/^\s*(\w+)\s*(.+) \((\S*)\)/.exec(o);if(!e)continue;let[,t,s,r]=e;s=s.replace(/\+0x[\da-f]+$/,""),n.stack.push({address:`0x${t}`,symbolName:s,file:r})}return n.stack.reverse(),n}function r(e){const t=[];let n="";for(let s of e.splitLines())""===s?(n.length>0&&t.push(n),n=s):(n.length>0&&(n+="\n"),n+=s);return n.length>0&&t.push(n),t}function l(l){const i=new Map;let o=null;const a=r(l).map(s);for(let s of a){if(null==s)continue;if(null!=o&&o!=s.eventType)continue;if(null==s.time)continue;o=s.eventType;let r=[];s.command&&r.push(s.command),s.processID&&r.push(`pid: ${s.processID}`),s.threadID&&r.push(`tid: ${s.threadID}`);const l=r.join(" ");(0,t.getOrInsert)(i,l,()=>{const t=new e.StackListProfileBuilder;return t.setName(l),t.setValueFormatter(new n.TimeFormatter("seconds")),t}).appendSampleWithTimestamp(s.stack.map(({symbolName:e,file:t})=>({key:`${e} (${t})`,name:"[unknown]"===e?`??? (${t})`:e,file:t})),s.time)}return 0===i.size?null:{name:1===i.size?Array.from(i.keys())[0]:"",indexToView:0,profiles:Array.from((0,t.itMap)(i.values(),e=>e.build()))}} +},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"jm73":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromHaskell=l;var e=require("../lib/profile"),r=require("../lib/value-formatters");function t(e,r,l,o,i){if(0===e.ticks&&0===e.entries&&0===e.alloc&&0===e.children.length)return r;let a=r,s=o.get(e.id);l.enterFrame(s,a);for(let n of e.children)a=t(n,a,l,o,i);return a+=i(e),l.leaveFrame(s,a),a}function l(l){const o=new Map;for(let e of l.cost_centres){const r={key:e.id,name:`${e.module}.${e.label}`};e.src_loc.startsWith("<")||(r.file=e.src_loc),o.set(e.id,r)}const i=new e.CallTreeProfileBuilder(l.total_ticks);t(l.profile,0,i,o,e=>e.ticks),i.setValueFormatter(new r.TimeFormatter("milliseconds")),i.setName(`${l.program} time`);const a=new e.CallTreeProfileBuilder(l.total_ticks);return t(l.profile,0,a,o,e=>e.alloc),a.setValueFormatter(new r.ByteFormatter),a.setName(`${l.program} allocation`),{name:l.program,indexToView:0,profiles:[i.build(),a.build()]}} +},{"../lib/profile":"YG8z","../lib/value-formatters":"LsM4"}],"jP3w":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromSafari=i;var e=require("../lib/profile"),r=require("../lib/value-formatters");function t(e){return e.map(({name:e,url:r,line:t,column:i})=>({key:`${e}:${r}:${t}:${i}`,file:r,line:t,col:i,name:e||(r?`(anonymous ${r.split("/").pop()}:${t})`:"(anonymous)")})).reverse()}function i(i){1!==i.version&&console.warn(`Unknown Safari profile version ${i.version}... Might be incompatible.`);const{recording:n}=i,{sampleStackTraces:a,sampleDurations:o}=n,s=a.length;if(s<1)return console.warn("Empty profile"),null;const l=a[s-1].timestamp-a[0].timestamp+o[0],m=new e.StackListProfileBuilder(l);let p=Number.MAX_VALUE;return a.forEach((e,r)=>{const i=e.timestamp,n=o[r],a=i-n-p;a>.002&&m.appendSampleWithWeight([],a),m.appendSampleWithWeight(t(e.stackFrames),n),p=i}),m.setValueFormatter(new r.TimeFormatter("seconds")),m.setName(n.displayName),m.build()} +},{"../lib/profile":"YG8z","../lib/value-formatters":"LsM4"}],"oU4k":[function(require,module,exports) { +"use strict";function n(n,e){for(var r=new Array(arguments.length-1),t=0,l=2,o=!0;l1&&"="===r.charAt(e);)++a;return Math.ceil(3*r.length)/4-a};for(var e=new Array(64),a=new Array(123),t=0;t<64;)a[e[t]=t<26?t+65:t<52?t+71:t<62?t-4:t-59|43]=t++;r.encode=function(r,a,t){for(var n,i=null,o=[],c=0,s=0;a>2],n=(3&h)<<4,s=1;break;case 1:o[c++]=e[n|h>>4],n=(15&h)<<2,s=2;break;case 2:o[c++]=e[n|h>>6],o[c++]=e[63&h],s=0}c>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,o)),c=0)}return s&&(o[c++]=e[n],o[c++]=61,1===s&&(o[c++]=61)),i?(c&&i.push(String.fromCharCode.apply(String,o.slice(0,c))),i.join("")):String.fromCharCode.apply(String,o.slice(0,c))};var n="invalid encoding";r.decode=function(r,e,t){for(var i,o=t,c=0,s=0;s1)break;if(void 0===(h=a[h]))throw Error(n);switch(c){case 0:i=h,c=1;break;case 1:e[t++]=i<<2|(48&h)>>4,i=h,c=2;break;case 2:e[t++]=(15&i)<<4|(60&h)>>2,i=h,c=3;break;case 3:e[t++]=(3&i)<<6|h,c=0}}if(1===c)throw Error(n);return t-o},r.test=function(r){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(r)}; +},{}],"wJQW":[function(require,module,exports) { +"use strict";function t(){this._listeners={}}module.exports=t,t.prototype.on=function(t,s,e){return(this._listeners[t]||(this._listeners[t]=[])).push({fn:s,ctx:e||this}),this},t.prototype.off=function(t,s){if(void 0===t)this._listeners={};else if(void 0===s)this._listeners[t]=[];else for(var e=this._listeners[t],i=0;i0?0:2147483648,t,r);else if(isNaN(e))n(2143289344,t,r);else if(e>3.4028234663852886e38)n((o<<31|2139095040)>>>0,t,r);else if(e<1.1754943508222875e-38)n((o<<31|Math.round(e/1.401298464324817e-45))>>>0,t,r);else{var u=Math.floor(Math.log(e)/Math.LN2);n((o<<31|u+127<<23|8388607&Math.round(e*Math.pow(2,-u)*8388608))>>>0,t,r)}}function i(n,e,t){var r=n(e,t),o=2*(r>>31)+1,u=r>>>23&255,i=8388607&r;return 255===u?i?NaN:o*(1/0):0===u?1.401298464324817e-45*o*i:o*Math.pow(2,u-150)*(i+8388608)}n.writeFloatLE=u.bind(null,e),n.writeFloatBE=u.bind(null,t),n.readFloatLE=i.bind(null,r),n.readFloatBE=i.bind(null,o)}(),"undefined"!=typeof Float64Array?function(){var e=new Float64Array([-0]),t=new Uint8Array(e.buffer),r=128===t[7];function o(n,r,o){e[0]=n,r[o]=t[0],r[o+1]=t[1],r[o+2]=t[2],r[o+3]=t[3],r[o+4]=t[4],r[o+5]=t[5],r[o+6]=t[6],r[o+7]=t[7]}function u(n,r,o){e[0]=n,r[o]=t[7],r[o+1]=t[6],r[o+2]=t[5],r[o+3]=t[4],r[o+4]=t[3],r[o+5]=t[2],r[o+6]=t[1],r[o+7]=t[0]}function i(n,r){return t[0]=n[r],t[1]=n[r+1],t[2]=n[r+2],t[3]=n[r+3],t[4]=n[r+4],t[5]=n[r+5],t[6]=n[r+6],t[7]=n[r+7],e[0]}function a(n,r){return t[7]=n[r],t[6]=n[r+1],t[5]=n[r+2],t[4]=n[r+3],t[3]=n[r+4],t[2]=n[r+5],t[1]=n[r+6],t[0]=n[r+7],e[0]}n.writeDoubleLE=r?o:u,n.writeDoubleBE=r?u:o,n.readDoubleLE=r?i:a,n.readDoubleBE=r?a:i}():function(){function u(n,e,t,r,o,u){var i=r<0?1:0;if(i&&(r=-r),0===r)n(0,o,u+e),n(1/r>0?0:2147483648,o,u+t);else if(isNaN(r))n(0,o,u+e),n(2146959360,o,u+t);else if(r>1.7976931348623157e308)n(0,o,u+e),n((i<<31|2146435072)>>>0,o,u+t);else{var a;if(r<2.2250738585072014e-308)n((a=r/5e-324)>>>0,o,u+e),n((i<<31|a/4294967296)>>>0,o,u+t);else{var l=Math.floor(Math.log(r)/Math.LN2);1024===l&&(l=1023),n(4503599627370496*(a=r*Math.pow(2,-l))>>>0,o,u+e),n((i<<31|l+1023<<20|1048576*a&1048575)>>>0,o,u+t)}}}function i(n,e,t,r,o){var u=n(r,o+e),i=n(r,o+t),a=2*(i>>31)+1,l=i>>>20&2047,f=4294967296*(1048575&i)+u;return 2047===l?f?NaN:a*(1/0):0===l?5e-324*a*f:a*Math.pow(2,l-1075)*(f+4503599627370496)}n.writeDoubleLE=u.bind(null,e,0,4),n.writeDoubleBE=u.bind(null,t,4,0),n.readDoubleLE=i.bind(null,r,0,4),n.readDoubleBE=i.bind(null,o,4,0)}(),n}function e(n,e,t){e[t]=255&n,e[t+1]=n>>>8&255,e[t+2]=n>>>16&255,e[t+3]=n>>>24}function t(n,e,t){e[t]=n>>>24,e[t+1]=n>>>16&255,e[t+2]=n>>>8&255,e[t+3]=255&n}function r(n,e){return(n[e]|n[e+1]<<8|n[e+2]<<16|n[e+3]<<24)>>>0}function o(n,e){return(n[e]<<24|n[e+1]<<16|n[e+2]<<8|n[e+3])>>>0}module.exports=n(n); +},{}],"XRF3":[function(require,module,exports) { +"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire; +},{}],"nie5":[function(require,module,exports) { +"use strict";var r=exports;r.length=function(r){for(var t=0,n=0,e=0;e191&&e<224?a[i++]=(31&e)<<6|63&r[t++]:e>239&&e<365?(e=((7&e)<<18|(63&r[t++])<<12|(63&r[t++])<<6|63&r[t++])-65536,a[i++]=55296+(e>>10),a[i++]=56320+(1023&e)):a[i++]=(15&e)<<12|(63&r[t++])<<6|63&r[t++],i>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,a)),i=0);return o?(i&&o.push(String.fromCharCode.apply(String,a.slice(0,i))),o.join("")):String.fromCharCode.apply(String,a.slice(0,i))},r.write=function(r,t,n){for(var e,o,a=n,i=0;i>6|192,t[n++]=63&e|128):55296==(64512&e)&&56320==(64512&(o=r.charCodeAt(i+1)))?(e=65536+((1023&e)<<10)+(1023&o),++i,t[n++]=e>>18|240,t[n++]=e>>12&63|128,t[n++]=e>>6&63|128,t[n++]=63&e|128):(t[n++]=e>>12|224,t[n++]=e>>6&63|128,t[n++]=63&e|128);return n-a}; +},{}],"YX4y":[function(require,module,exports) { +"use strict";function r(r,n,t){var u=t||8192,e=u>>>1,l=null,c=u;return function(t){if(t<1||t>e)return r(t);c+t>u&&(l=r(u),c=0);var i=n.call(l,c,c+=t);return 7&c&&(c=1+(7|c)),i}}module.exports=r; +},{}],"Ty7D":[function(require,module,exports) { +"use strict";module.exports=i;var t=require("../util/minimal");function i(t,i){this.lo=t>>>0,this.hi=i>>>0}var o=i.zero=new i(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var r=i.zeroHash="\0\0\0\0\0\0\0\0";i.fromNumber=function(t){if(0===t)return o;var r=t<0;r&&(t=-t);var h=t>>>0,n=(t-h)/4294967296>>>0;return r&&(n=~n>>>0,h=~h>>>0,++h>4294967295&&(h=0,++n>4294967295&&(n=0))),new i(h,n)},i.from=function(r){if("number"==typeof r)return i.fromNumber(r);if(t.isString(r)){if(!t.Long)return i.fromNumber(parseInt(r,10));r=t.Long.fromString(r)}return r.low||r.high?new i(r.low>>>0,r.high>>>0):o},i.prototype.toNumber=function(t){if(!t&&this.hi>>>31){var i=1+~this.lo>>>0,o=~this.hi>>>0;return i||(o=o+1>>>0),-(i+4294967296*o)}return this.lo+4294967296*this.hi},i.prototype.toLong=function(i){return t.Long?new t.Long(0|this.lo,0|this.hi,Boolean(i)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(i)}};var h=String.prototype.charCodeAt;i.fromHash=function(t){return t===r?o:new i((h.call(t,0)|h.call(t,1)<<8|h.call(t,2)<<16|h.call(t,3)<<24)>>>0,(h.call(t,4)|h.call(t,5)<<8|h.call(t,6)<<16|h.call(t,7)<<24)>>>0)},i.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},i.prototype.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},i.prototype.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},i.prototype.length=function(){var t=this.lo,i=(this.lo>>>28|this.hi<<4)>>>0,o=this.hi>>>24;return 0===o?0===i?t<16384?t<128?1:2:t<2097152?3:4:i<16384?i<128?5:6:i<2097152?7:8:o<128?9:10}; +},{"../util/minimal":"KgKa"}],"yh9p":[function(require,module,exports) { +"use strict";exports.byteLength=u,exports.toByteArray=i,exports.fromByteArray=d;for(var r=[],t=[],e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,a=n.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function u(r){var t=h(r),e=t[0],n=t[1];return 3*(e+n)/4-n}function c(r,t,e){return 3*(t+e)/4-e}function i(r){var n,o,a=h(r),u=a[0],i=a[1],f=new e(c(r,u,i)),A=0,d=i>0?u-4:u;for(o=0;o>16&255,f[A++]=n>>8&255,f[A++]=255&n;return 2===i&&(n=t[r.charCodeAt(o)]<<2|t[r.charCodeAt(o+1)]>>4,f[A++]=255&n),1===i&&(n=t[r.charCodeAt(o)]<<10|t[r.charCodeAt(o+1)]<<4|t[r.charCodeAt(o+2)]>>2,f[A++]=n>>8&255,f[A++]=255&n),f}function f(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function A(r,t,e){for(var n,o=[],a=t;au?u:h+16383));return 1===o?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")}t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63; +},{}],"JgNJ":[function(require,module,exports) { +exports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),(o+=p+N>=1?n/f:n*Math.pow(2,1-N))*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l}; +},{}],"REa7":[function(require,module,exports) { +var r={}.toString;module.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}; +},{}],"dskh":[function(require,module,exports) { + +var global = arguments[3]; +var t=arguments[3],r=require("base64-js"),e=require("ieee754"),n=require("isarray");function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(r){return!1}}function o(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,r){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function d(t){return+t!=t&&(t=0),f.alloc(+t)}function v(t,r){if(f.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return $(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return K(t).length;default:if(n)return $(t).length;r=(""+r).toLowerCase(),n=!0}}function E(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,r,e);case"utf8":case"utf-8":return Y(this,r,e);case"ascii":return L(this,r,e);case"latin1":case"binary":return D(this,r,e);case"base64":return S(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function b(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function R(t,r,e,n,i){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return-1;e=t.length-1}else if(e<0){if(!i)return-1;e=0}if("string"==typeof r&&(r=f.from(r,n)),f.isBuffer(r))return 0===r.length?-1:_(t,r,e,n,i);if("number"==typeof r)return r&=255,f.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):_(t,[r],e,n,i);throw new TypeError("val must be string, number or Buffer")}function _(t,r,e,n,i){var o,u=1,f=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;u=2,f/=2,s/=2,e/=2}function h(t,r){return 1===u?t[r]:t.readUInt16BE(r*u)}if(i){var a=-1;for(o=e;of&&(e=f-s),o=e;o>=0;o--){for(var c=!0,l=0;li&&(n=i):n=i;var o=r.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var u=0;u239?4:h>223?3:h>191?2:1;if(i+c<=e)switch(c){case 1:h<128&&(a=h);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&h)<<6|63&o)>127&&(a=s);break;case 3:o=t[i+1],u=t[i+2],128==(192&o)&&128==(192&u)&&(s=(15&h)<<12|(63&o)<<6|63&u)>2047&&(s<55296||s>57343)&&(a=s);break;case 4:o=t[i+1],u=t[i+2],f=t[i+3],128==(192&o)&&128==(192&u)&&128==(192&f)&&(s=(15&h)<<18|(63&o)<<12|(63&u)<<6|63&f)>65535&&s<1114112&&(a=s)}null===a?(a=65533,c=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=c}return O(n)}exports.Buffer=f,exports.SlowBuffer=d,exports.INSPECT_MAX_BYTES=50,f.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:i(),exports.kMaxLength=o(),f.poolSize=8192,f._augment=function(t){return t.__proto__=f.prototype,t},f.from=function(t,r,e){return s(null,t,r,e)},f.TYPED_ARRAY_SUPPORT&&(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})),f.alloc=function(t,r,e){return a(null,t,r,e)},f.allocUnsafe=function(t){return c(null,t)},f.allocUnsafeSlow=function(t){return c(null,t)},f.isBuffer=function(t){return!(null==t||!t._isBuffer)},f.compare=function(t,r){if(!f.isBuffer(t)||!f.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var e=t.length,n=r.length,i=0,o=Math.min(e,n);i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},f.prototype.compare=function(t,r,e,n,i){if(!f.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),r<0||e>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&r>=e)return 0;if(n>=i)return-1;if(r>=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),u=(e>>>=0)-(r>>>=0),s=Math.min(o,u),h=this.slice(n,i),a=t.slice(r,e),c=0;ci)&&(e=i),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return A(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return P(this,t,r,e);case"latin1":case"binary":return T(this,t,r,e);case"base64":return B(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r,e);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function O(t){var r=t.length;if(r<=I)return String.fromCharCode.apply(String,t);for(var e="",n=0;nn)&&(e=n);for(var i="",o=r;oe)throw new RangeError("Trying to access beyond buffer length")}function k(t,r,e,n,i,o){if(!f.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>i||rt.length)throw new RangeError("Index out of range")}function N(t,r,e,n){r<0&&(r=65535+r+1);for(var i=0,o=Math.min(t.length-e,2);i>>8*(n?i:1-i)}function z(t,r,e,n){r<0&&(r=4294967295+r+1);for(var i=0,o=Math.min(t.length-e,4);i>>8*(n?i:3-i)&255}function F(t,r,e,n,i,o){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function j(t,r,n,i,o){return o||F(t,r,n,4,3.4028234663852886e38,-3.4028234663852886e38),e.write(t,r,n,i,23,4),n+4}function q(t,r,n,i,o){return o||F(t,r,n,8,1.7976931348623157e308,-1.7976931348623157e308),e.write(t,r,n,i,52,8),n+8}f.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--r]*i;return n},f.prototype.readUInt8=function(t,r){return r||M(t,1,this.length),this[t]},f.prototype.readUInt16LE=function(t,r){return r||M(t,2,this.length),this[t]|this[t+1]<<8},f.prototype.readUInt16BE=function(t,r){return r||M(t,2,this.length),this[t]<<8|this[t+1]},f.prototype.readUInt32LE=function(t,r){return r||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},f.prototype.readUInt32BE=function(t,r){return r||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},f.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||M(t,r,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*r)),n},f.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||M(t,r,this.length);for(var n=r,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*r)),o},f.prototype.readInt8=function(t,r){return r||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},f.prototype.readInt16LE=function(t,r){r||M(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt16BE=function(t,r){r||M(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt32LE=function(t,r){return r||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},f.prototype.readInt32BE=function(t,r){return r||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},f.prototype.readFloatLE=function(t,r){return r||M(t,4,this.length),e.read(this,t,!0,23,4)},f.prototype.readFloatBE=function(t,r){return r||M(t,4,this.length),e.read(this,t,!1,23,4)},f.prototype.readDoubleLE=function(t,r){return r||M(t,8,this.length),e.read(this,t,!0,52,8)},f.prototype.readDoubleBE=function(t,r){return r||M(t,8,this.length),e.read(this,t,!1,52,8)},f.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||k(this,t,r,e,Math.pow(2,8*e)-1,0);var i=1,o=0;for(this[r]=255&t;++o=0&&(o*=256);)this[r+i]=t/o&255;return r+e},f.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,1,255,0),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},f.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):N(this,t,r,!0),r+2},f.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):N(this,t,r,!1),r+2},f.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):z(this,t,r,!0),r+4},f.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):z(this,t,r,!1),r+4},f.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var i=Math.pow(2,8*e-1);k(this,t,r,e,i-1,-i)}var o=0,u=1,f=0;for(this[r]=255&t;++o>0)-f&255;return r+e},f.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var i=Math.pow(2,8*e-1);k(this,t,r,e,i-1,-i)}var o=e-1,u=1,f=0;for(this[r+o]=255&t;--o>=0&&(u*=256);)t<0&&0===f&&0!==this[r+o+1]&&(f=1),this[r+o]=(t/u>>0)-f&255;return r+e},f.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,1,127,-128),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},f.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):N(this,t,r,!0),r+2},f.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):N(this,t,r,!1),r+2},f.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):z(this,t,r,!0),r+4},f.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):z(this,t,r,!1),r+4},f.prototype.writeFloatLE=function(t,r,e){return j(this,t,r,!0,e)},f.prototype.writeFloatBE=function(t,r,e){return j(this,t,r,!1,e)},f.prototype.writeDoubleLE=function(t,r,e){return q(this,t,r,!0,e)},f.prototype.writeDoubleBE=function(t,r,e){return q(this,t,r,!1,e)},f.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r=0;--i)t[i+r]=this[i+e];else if(o<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(o=r;o55295&&e<57344){if(!i){if(e>56319){(r-=3)>-1&&o.push(239,191,189);continue}if(u+1===n){(r-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(r-=3)>-1&&o.push(239,191,189),i=e;continue}e=65536+(i-55296<<10|e-56320)}else i&&(r-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((r-=1)<0)break;o.push(e)}else if(e<2048){if((r-=2)<0)break;o.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;o.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return o}function G(t){for(var r=[],e=0;e>8,i=e%256,o.push(i),o.push(n);return o}function K(t){return r.toByteArray(X(t))}function Q(t,r,e,n){for(var i=0;i=r.length||i>=t.length);++i)r[i+e]=t[i];return i}function W(t){return t!=t} +},{"base64-js":"yh9p","ieee754":"JgNJ","isarray":"REa7","buffer":"dskh"}],"KgKa":[function(require,module,exports) { +var global = arguments[3]; +var Buffer = require("buffer").Buffer; +var e=arguments[3],r=require("buffer").Buffer,t=exports;function n(e,r,t){for(var n=Object.keys(r),o=0;o0)},t.Buffer=function(){try{var e=t.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(r){return null}}(),t._Buffer_from=null,t._Buffer_allocUnsafe=null,t.newBuffer=function(e){return"number"==typeof e?t.Buffer?t._Buffer_allocUnsafe(e):new t.Array(e):t.Buffer?t._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},t.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,t.Long=t.global.dcodeIO&&t.global.dcodeIO.Long||t.global.Long||t.inquire("long"),t.key2Re=/^true|false|0|1$/,t.key32Re=/^-?(?:0|[1-9][0-9]*)$/,t.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,t.longToHash=function(e){return e?t.LongBits.from(e).toHash():t.LongBits.zeroHash},t.longFromHash=function(e,r){var n=t.LongBits.fromHash(e);return t.Long?t.Long.fromBits(n.lo,n.hi,r):n.toNumber(Boolean(r))},t.merge=n,t.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},t.newError=o,t.ProtocolError=o("ProtocolError"),t.oneOfGetter=function(e){for(var r={},t=0;t-1;--t)if(1===r[e[t]]&&void 0!==this[e[t]]&&null!==this[e[t]])return e[t]}},t.oneOfSetter=function(e){return function(r){for(var t=0;t127;)i[n++]=127&t|128,t>>>=7;i[n]=t}function a(t,i){this.len=t,this.next=void 0,this.val=i}function f(t,i,n){for(;t.hi;)i[n++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)i[n++]=127&t.lo|128,t.lo=t.lo>>>7;i[n++]=t.lo}function c(t,i,n){i[n]=255&t,i[n+1]=t>>>8&255,i[n+2]=t>>>16&255,i[n+3]=t>>>24}u.create=i.Buffer?function(){return(u.create=function(){return new t})()}:function(){return new u},u.alloc=function(t){return new i.Array(t)},i.Array!==Array&&(u.alloc=i.pool(u.alloc,i.Array.prototype.subarray)),u.prototype._push=function(t,i,n){return this.tail=this.tail.next=new r(t,i,n),this.len+=i,this},a.prototype=Object.create(r.prototype),a.prototype.fn=p,u.prototype.uint32=function(t){return this.len+=(this.tail=this.tail.next=new a((t>>>=0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this},u.prototype.int32=function(t){return t<0?this._push(f,10,n.fromNumber(t)):this.uint32(t)},u.prototype.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},u.prototype.uint64=function(t){var i=n.from(t);return this._push(f,i.length(),i)},u.prototype.int64=u.prototype.uint64,u.prototype.sint64=function(t){var i=n.from(t).zzEncode();return this._push(f,i.length(),i)},u.prototype.bool=function(t){return this._push(l,1,t?1:0)},u.prototype.fixed32=function(t){return this._push(c,4,t>>>0)},u.prototype.sfixed32=u.prototype.fixed32,u.prototype.fixed64=function(t){var i=n.from(t);return this._push(c,4,i.lo)._push(c,4,i.hi)},u.prototype.sfixed64=u.prototype.fixed64,u.prototype.float=function(t){return this._push(i.float.writeFloatLE,4,t)},u.prototype.double=function(t){return this._push(i.float.writeDoubleLE,8,t)};var y=i.Array.prototype.set?function(t,i,n){i.set(t,n)}:function(t,i,n){for(var e=0;e>>0;if(!n)return this._push(l,1,0);if(i.isString(t)){var o=u.alloc(n=e.length(t));e.decode(t,o,0),t=o}return this.uint32(n)._push(y,n,t)},u.prototype.string=function(t){var i=o.length(t);return i?this.uint32(i)._push(o.write,i,t):this._push(l,1,0)},u.prototype.fork=function(){return this.states=new h(this),this.head=this.tail=new r(s,0,0),this.len=0,this},u.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(s,0,0),this.len=0),this},u.prototype.ldelim=function(){var t=this.head,i=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=t.next,this.tail=i,this.len+=n),this},u.prototype.finish=function(){for(var t=this.head.next,i=this.constructor.alloc(this.len),n=0;t;)t.fn(t.val,i,n),n+=t.len,t=t.next;return i},u._configure=function(i){t=i}; +},{"./util/minimal":"KgKa"}],"BjCp":[function(require,module,exports) { + +"use strict";module.exports=n;var t=require("./writer");(n.prototype=Object.create(t.prototype)).constructor=n;var e=require("./util/minimal"),r=e.Buffer;function n(){t.call(this)}n.alloc=function(t){return(n.alloc=e._Buffer_allocUnsafe)(t)};var i=r&&r.prototype instanceof Uint8Array&&"set"===r.prototype.set.name?function(t,e,r){e.set(t,r)}:function(t,e,r){if(t.copy)t.copy(e,r,0,t.length);else for(var n=0;n>>0;return this.uint32(r),r&&this._push(i,r,t),this},n.prototype.string=function(t){var e=r.byteLength(t);return this.uint32(e),e&&this._push(o,e,t),this}; +},{"./writer":"DEsF","./util/minimal":"KgKa"}],"z4LV":[function(require,module,exports) { +"use strict";module.exports=h;var t,i=require("./util/minimal"),s=i.LongBits,r=i.utf8;function o(t,i){return RangeError("index out of range: "+t.pos+" + "+(i||1)+" > "+t.len)}function h(t){this.buf=t,this.pos=0,this.len=t.length}var n="undefined"!=typeof Uint8Array?function(t){if(t instanceof Uint8Array||Array.isArray(t))return new h(t);throw Error("illegal buffer")}:function(t){if(Array.isArray(t))return new h(t);throw Error("illegal buffer")};function e(){var t=new s(0,0),i=0;if(!(this.len-this.pos>4)){for(;i<3;++i){if(this.pos>=this.len)throw o(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(127&this.buf[this.pos++])<<7*i)>>>0,t}for(;i<4;++i)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t;if(i=0,this.len-this.pos>4){for(;i<5;++i)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}else for(;i<5;++i){if(this.pos>=this.len)throw o(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function u(t,i){return(t[i-4]|t[i-3]<<8|t[i-2]<<16|t[i-1]<<24)>>>0}function f(){if(this.pos+8>this.len)throw o(this,8);return new s(u(this.buf,this.pos+=4),u(this.buf,this.pos+=4))}h.create=i.Buffer?function(s){return(h.create=function(s){return i.Buffer.isBuffer(s)?new t(s):n(s)})(s)}:n,h.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,h.prototype.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,o(this,10);return t}}(),h.prototype.int32=function(){return 0|this.uint32()},h.prototype.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},h.prototype.bool=function(){return 0!==this.uint32()},h.prototype.fixed32=function(){if(this.pos+4>this.len)throw o(this,4);return u(this.buf,this.pos+=4)},h.prototype.sfixed32=function(){if(this.pos+4>this.len)throw o(this,4);return 0|u(this.buf,this.pos+=4)},h.prototype.float=function(){if(this.pos+4>this.len)throw o(this,4);var t=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,t},h.prototype.double=function(){if(this.pos+8>this.len)throw o(this,4);var t=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,t},h.prototype.bytes=function(){var t=this.uint32(),i=this.pos,s=this.pos+t;if(s>this.len)throw o(this,t);return this.pos+=t,Array.isArray(this.buf)?this.buf.slice(i,s):i===s?new this.buf.constructor(0):this._slice.call(this.buf,i,s)},h.prototype.string=function(){var t=this.bytes();return r.read(t,0,t.length)},h.prototype.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw o(this,t);this.pos+=t}else do{if(this.pos>=this.len)throw o(this)}while(128&this.buf[this.pos++]);return this},h.prototype.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(t=7&this.uint32());)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+t+" at offset "+this.pos)}return this},h._configure=function(s){t=s;var r=i.Long?"toLong":"toNumber";i.merge(h.prototype,{int64:function(){return e.call(this)[r](!1)},uint64:function(){return e.call(this)[r](!0)},sint64:function(){return e.call(this).zzDecode()[r](!1)},fixed64:function(){return f.call(this)[r](!0)},sfixed64:function(){return f.call(this)[r](!1)}})}; +},{"./util/minimal":"KgKa"}],"Rkr2":[function(require,module,exports) { +"use strict";module.exports=r;var t=require("./reader");(r.prototype=Object.create(t.prototype)).constructor=r;var e=require("./util/minimal");function r(e){t.call(this,e)}e.Buffer&&(r.prototype._slice=e.Buffer.prototype.slice),r.prototype.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}; +},{"./reader":"z4LV","./util/minimal":"KgKa"}],"eoks":[function(require,module,exports) { +"use strict";module.exports=t;var e=require("../util/minimal");function t(t,r,i){if("function"!=typeof t)throw TypeError("rpcImpl must be a function");e.EventEmitter.call(this),this.rpcImpl=t,this.requestDelimited=Boolean(r),this.responseDelimited=Boolean(i)}(t.prototype=Object.create(e.EventEmitter.prototype)).constructor=t,t.prototype.rpcCall=function t(r,i,n,o,l){if(!o)throw TypeError("request must be specified");var u=this;if(!l)return e.asPromise(t,u,r,i,n,o);if(u.rpcImpl)try{return u.rpcImpl(r,i[u.requestDelimited?"encodeDelimited":"encode"](o).finish(),function(e,t){if(e)return u.emit("error",e,r),l(e);if(null!==t){if(!(t instanceof n))try{t=n[u.responseDelimited?"decodeDelimited":"decode"](t)}catch(e){return u.emit("error",e,r),l(e)}return u.emit("data",t,r),l(null,t)}u.end(!0)})}catch(c){return u.emit("error",c,r),void setTimeout(function(){l(c)},0)}else setTimeout(function(){l(Error("already ended"))},0)},t.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}; +},{"../util/minimal":"KgKa"}],"ay75":[function(require,module,exports) { +"use strict";var e=exports;e.Service=require("./rpc/service"); +},{"./rpc/service":"eoks"}],"Nr0F":[function(require,module,exports) { +"use strict";module.exports={}; +},{}],"qETn":[function(require,module,exports) { +"use strict";var r=exports;function e(){r.Reader._configure(r.BufferReader),r.util._configure()}r.build="minimal",r.Writer=require("./writer"),r.BufferWriter=require("./writer_buffer"),r.Reader=require("./reader"),r.BufferReader=require("./reader_buffer"),r.util=require("./util/minimal"),r.rpc=require("./rpc"),r.roots=require("./roots"),r.configure=e,r.Writer._configure(r.BufferWriter),e(); +},{"./writer":"DEsF","./writer_buffer":"BjCp","./reader":"z4LV","./reader_buffer":"Rkr2","./util/minimal":"KgKa","./rpc":"ay75","./roots":"Nr0F"}],"Myh2":[function(require,module,exports) { +"use strict";module.exports=require("./src/index-minimal"); +},{"./src/index-minimal":"qETn"}],"YdJi":[function(require,module,exports) { +"use strict";var e=require("protobufjs/minimal"),n=e.Reader,t=e.Writer,o=e.util,r=e.roots.default||(e.roots.default={});r.perftools=function(){var i,l={};return l.profiles=((i={}).Profile=function(){function i(e){if(this.sampleType=[],this.sample=[],this.mapping=[],this.location=[],this.function=[],this.stringTable=[],this.comment=[],e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.sampleType&&i.sampleType.length||(i.sampleType=[]),i.sampleType.push(r.perftools.profiles.ValueType.decode(e,e.uint32()));break;case 2:i.sample&&i.sample.length||(i.sample=[]),i.sample.push(r.perftools.profiles.Sample.decode(e,e.uint32()));break;case 3:i.mapping&&i.mapping.length||(i.mapping=[]),i.mapping.push(r.perftools.profiles.Mapping.decode(e,e.uint32()));break;case 4:i.location&&i.location.length||(i.location=[]),i.location.push(r.perftools.profiles.Location.decode(e,e.uint32()));break;case 5:i.function&&i.function.length||(i.function=[]),i.function.push(r.perftools.profiles.Function.decode(e,e.uint32()));break;case 6:i.stringTable&&i.stringTable.length||(i.stringTable=[]),i.stringTable.push(e.string());break;case 7:i.dropFrames=e.int64();break;case 8:i.keepFrames=e.int64();break;case 9:i.timeNanos=e.int64();break;case 10:i.durationNanos=e.int64();break;case 11:i.periodType=r.perftools.profiles.ValueType.decode(e,e.uint32());break;case 12:i.period=e.int64();break;case 13:if(i.comment&&i.comment.length||(i.comment=[]),2==(7&l))for(var s=e.uint32()+e.pos;e.pos>>0,e.dropFrames.high>>>0).toNumber())),null!=e.keepFrames&&(o.Long?(n.keepFrames=o.Long.fromValue(e.keepFrames)).unsigned=!1:"string"==typeof e.keepFrames?n.keepFrames=parseInt(e.keepFrames,10):"number"==typeof e.keepFrames?n.keepFrames=e.keepFrames:"object"==typeof e.keepFrames&&(n.keepFrames=new o.LongBits(e.keepFrames.low>>>0,e.keepFrames.high>>>0).toNumber())),null!=e.timeNanos&&(o.Long?(n.timeNanos=o.Long.fromValue(e.timeNanos)).unsigned=!1:"string"==typeof e.timeNanos?n.timeNanos=parseInt(e.timeNanos,10):"number"==typeof e.timeNanos?n.timeNanos=e.timeNanos:"object"==typeof e.timeNanos&&(n.timeNanos=new o.LongBits(e.timeNanos.low>>>0,e.timeNanos.high>>>0).toNumber())),null!=e.durationNanos&&(o.Long?(n.durationNanos=o.Long.fromValue(e.durationNanos)).unsigned=!1:"string"==typeof e.durationNanos?n.durationNanos=parseInt(e.durationNanos,10):"number"==typeof e.durationNanos?n.durationNanos=e.durationNanos:"object"==typeof e.durationNanos&&(n.durationNanos=new o.LongBits(e.durationNanos.low>>>0,e.durationNanos.high>>>0).toNumber())),null!=e.periodType){if("object"!=typeof e.periodType)throw TypeError(".perftools.profiles.Profile.periodType: object expected");n.periodType=r.perftools.profiles.ValueType.fromObject(e.periodType)}if(null!=e.period&&(o.Long?(n.period=o.Long.fromValue(e.period)).unsigned=!1:"string"==typeof e.period?n.period=parseInt(e.period,10):"number"==typeof e.period?n.period=e.period:"object"==typeof e.period&&(n.period=new o.LongBits(e.period.low>>>0,e.period.high>>>0).toNumber())),e.comment){if(!Array.isArray(e.comment))throw TypeError(".perftools.profiles.Profile.comment: array expected");for(n.comment=[],t=0;t>>0,e.comment[t].high>>>0).toNumber())}return null!=e.defaultSampleType&&(o.Long?(n.defaultSampleType=o.Long.fromValue(e.defaultSampleType)).unsigned=!1:"string"==typeof e.defaultSampleType?n.defaultSampleType=parseInt(e.defaultSampleType,10):"number"==typeof e.defaultSampleType?n.defaultSampleType=e.defaultSampleType:"object"==typeof e.defaultSampleType&&(n.defaultSampleType=new o.LongBits(e.defaultSampleType.low>>>0,e.defaultSampleType.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if((n.arrays||n.defaults)&&(t.sampleType=[],t.sample=[],t.mapping=[],t.location=[],t.function=[],t.stringTable=[],t.comment=[]),n.defaults){if(o.Long){var i=new o.Long(0,0,!1);t.dropFrames=n.longs===String?i.toString():n.longs===Number?i.toNumber():i}else t.dropFrames=n.longs===String?"0":0;o.Long?(i=new o.Long(0,0,!1),t.keepFrames=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.keepFrames=n.longs===String?"0":0,o.Long?(i=new o.Long(0,0,!1),t.timeNanos=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.timeNanos=n.longs===String?"0":0,o.Long?(i=new o.Long(0,0,!1),t.durationNanos=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.durationNanos=n.longs===String?"0":0,t.periodType=null,o.Long?(i=new o.Long(0,0,!1),t.period=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.period=n.longs===String?"0":0,o.Long?(i=new o.Long(0,0,!1),t.defaultSampleType=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.defaultSampleType=n.longs===String?"0":0}if(e.sampleType&&e.sampleType.length){t.sampleType=[];for(var l=0;l>>0,e.dropFrames.high>>>0).toNumber():e.dropFrames),null!=e.keepFrames&&e.hasOwnProperty("keepFrames")&&("number"==typeof e.keepFrames?t.keepFrames=n.longs===String?String(e.keepFrames):e.keepFrames:t.keepFrames=n.longs===String?o.Long.prototype.toString.call(e.keepFrames):n.longs===Number?new o.LongBits(e.keepFrames.low>>>0,e.keepFrames.high>>>0).toNumber():e.keepFrames),null!=e.timeNanos&&e.hasOwnProperty("timeNanos")&&("number"==typeof e.timeNanos?t.timeNanos=n.longs===String?String(e.timeNanos):e.timeNanos:t.timeNanos=n.longs===String?o.Long.prototype.toString.call(e.timeNanos):n.longs===Number?new o.LongBits(e.timeNanos.low>>>0,e.timeNanos.high>>>0).toNumber():e.timeNanos),null!=e.durationNanos&&e.hasOwnProperty("durationNanos")&&("number"==typeof e.durationNanos?t.durationNanos=n.longs===String?String(e.durationNanos):e.durationNanos:t.durationNanos=n.longs===String?o.Long.prototype.toString.call(e.durationNanos):n.longs===Number?new o.LongBits(e.durationNanos.low>>>0,e.durationNanos.high>>>0).toNumber():e.durationNanos),null!=e.periodType&&e.hasOwnProperty("periodType")&&(t.periodType=r.perftools.profiles.ValueType.toObject(e.periodType,n)),null!=e.period&&e.hasOwnProperty("period")&&("number"==typeof e.period?t.period=n.longs===String?String(e.period):e.period:t.period=n.longs===String?o.Long.prototype.toString.call(e.period):n.longs===Number?new o.LongBits(e.period.low>>>0,e.period.high>>>0).toNumber():e.period),e.comment&&e.comment.length)for(t.comment=[],l=0;l>>0,e.comment[l].high>>>0).toNumber():e.comment[l];return null!=e.defaultSampleType&&e.hasOwnProperty("defaultSampleType")&&("number"==typeof e.defaultSampleType?t.defaultSampleType=n.longs===String?String(e.defaultSampleType):e.defaultSampleType:t.defaultSampleType=n.longs===String?o.Long.prototype.toString.call(e.defaultSampleType):n.longs===Number?new o.LongBits(e.defaultSampleType.low>>>0,e.defaultSampleType.high>>>0).toNumber():e.defaultSampleType),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.ValueType=function(){function i(e){if(e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.type=e.int64();break;case 2:i.unit=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.type&&e.hasOwnProperty("type")&&!(o.isInteger(e.type)||e.type&&o.isInteger(e.type.low)&&o.isInteger(e.type.high))?"type: integer|Long expected":null!=e.unit&&e.hasOwnProperty("unit")&&!(o.isInteger(e.unit)||e.unit&&o.isInteger(e.unit.low)&&o.isInteger(e.unit.high))?"unit: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.ValueType)return e;var n=new r.perftools.profiles.ValueType;return null!=e.type&&(o.Long?(n.type=o.Long.fromValue(e.type)).unsigned=!1:"string"==typeof e.type?n.type=parseInt(e.type,10):"number"==typeof e.type?n.type=e.type:"object"==typeof e.type&&(n.type=new o.LongBits(e.type.low>>>0,e.type.high>>>0).toNumber())),null!=e.unit&&(o.Long?(n.unit=o.Long.fromValue(e.unit)).unsigned=!1:"string"==typeof e.unit?n.unit=parseInt(e.unit,10):"number"==typeof e.unit?n.unit=e.unit:"object"==typeof e.unit&&(n.unit=new o.LongBits(e.unit.low>>>0,e.unit.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!1);t.type=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.type=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.unit=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.unit=n.longs===String?"0":0}return null!=e.type&&e.hasOwnProperty("type")&&("number"==typeof e.type?t.type=n.longs===String?String(e.type):e.type:t.type=n.longs===String?o.Long.prototype.toString.call(e.type):n.longs===Number?new o.LongBits(e.type.low>>>0,e.type.high>>>0).toNumber():e.type),null!=e.unit&&e.hasOwnProperty("unit")&&("number"==typeof e.unit?t.unit=n.longs===String?String(e.unit):e.unit:t.unit=n.longs===String?o.Long.prototype.toString.call(e.unit):n.longs===Number?new o.LongBits(e.unit.low>>>0,e.unit.high>>>0).toNumber():e.unit),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Sample=function(){function i(e){if(this.locationId=[],this.value=[],this.label=[],e)for(var n=Object.keys(e),t=0;t>>3){case 1:if(i.locationId&&i.locationId.length||(i.locationId=[]),2==(7&l))for(var s=e.uint32()+e.pos;e.pos>>0,e.locationId[t].high>>>0).toNumber(!0))}if(e.value){if(!Array.isArray(e.value))throw TypeError(".perftools.profiles.Sample.value: array expected");for(n.value=[],t=0;t>>0,e.value[t].high>>>0).toNumber())}if(e.label){if(!Array.isArray(e.label))throw TypeError(".perftools.profiles.Sample.label: array expected");for(n.label=[],t=0;t>>0,e.locationId[i].high>>>0).toNumber(!0):e.locationId[i]}if(e.value&&e.value.length)for(t.value=[],i=0;i>>0,e.value[i].high>>>0).toNumber():e.value[i];if(e.label&&e.label.length)for(t.label=[],i=0;i>>3){case 1:i.key=e.int64();break;case 2:i.str=e.int64();break;case 3:i.num=e.int64();break;case 4:i.numUnit=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.key&&e.hasOwnProperty("key")&&!(o.isInteger(e.key)||e.key&&o.isInteger(e.key.low)&&o.isInteger(e.key.high))?"key: integer|Long expected":null!=e.str&&e.hasOwnProperty("str")&&!(o.isInteger(e.str)||e.str&&o.isInteger(e.str.low)&&o.isInteger(e.str.high))?"str: integer|Long expected":null!=e.num&&e.hasOwnProperty("num")&&!(o.isInteger(e.num)||e.num&&o.isInteger(e.num.low)&&o.isInteger(e.num.high))?"num: integer|Long expected":null!=e.numUnit&&e.hasOwnProperty("numUnit")&&!(o.isInteger(e.numUnit)||e.numUnit&&o.isInteger(e.numUnit.low)&&o.isInteger(e.numUnit.high))?"numUnit: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Label)return e;var n=new r.perftools.profiles.Label;return null!=e.key&&(o.Long?(n.key=o.Long.fromValue(e.key)).unsigned=!1:"string"==typeof e.key?n.key=parseInt(e.key,10):"number"==typeof e.key?n.key=e.key:"object"==typeof e.key&&(n.key=new o.LongBits(e.key.low>>>0,e.key.high>>>0).toNumber())),null!=e.str&&(o.Long?(n.str=o.Long.fromValue(e.str)).unsigned=!1:"string"==typeof e.str?n.str=parseInt(e.str,10):"number"==typeof e.str?n.str=e.str:"object"==typeof e.str&&(n.str=new o.LongBits(e.str.low>>>0,e.str.high>>>0).toNumber())),null!=e.num&&(o.Long?(n.num=o.Long.fromValue(e.num)).unsigned=!1:"string"==typeof e.num?n.num=parseInt(e.num,10):"number"==typeof e.num?n.num=e.num:"object"==typeof e.num&&(n.num=new o.LongBits(e.num.low>>>0,e.num.high>>>0).toNumber())),null!=e.numUnit&&(o.Long?(n.numUnit=o.Long.fromValue(e.numUnit)).unsigned=!1:"string"==typeof e.numUnit?n.numUnit=parseInt(e.numUnit,10):"number"==typeof e.numUnit?n.numUnit=e.numUnit:"object"==typeof e.numUnit&&(n.numUnit=new o.LongBits(e.numUnit.low>>>0,e.numUnit.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!1);t.key=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.key=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.str=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.str=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.num=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.num=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.numUnit=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.numUnit=n.longs===String?"0":0}return null!=e.key&&e.hasOwnProperty("key")&&("number"==typeof e.key?t.key=n.longs===String?String(e.key):e.key:t.key=n.longs===String?o.Long.prototype.toString.call(e.key):n.longs===Number?new o.LongBits(e.key.low>>>0,e.key.high>>>0).toNumber():e.key),null!=e.str&&e.hasOwnProperty("str")&&("number"==typeof e.str?t.str=n.longs===String?String(e.str):e.str:t.str=n.longs===String?o.Long.prototype.toString.call(e.str):n.longs===Number?new o.LongBits(e.str.low>>>0,e.str.high>>>0).toNumber():e.str),null!=e.num&&e.hasOwnProperty("num")&&("number"==typeof e.num?t.num=n.longs===String?String(e.num):e.num:t.num=n.longs===String?o.Long.prototype.toString.call(e.num):n.longs===Number?new o.LongBits(e.num.low>>>0,e.num.high>>>0).toNumber():e.num),null!=e.numUnit&&e.hasOwnProperty("numUnit")&&("number"==typeof e.numUnit?t.numUnit=n.longs===String?String(e.numUnit):e.numUnit:t.numUnit=n.longs===String?o.Long.prototype.toString.call(e.numUnit):n.longs===Number?new o.LongBits(e.numUnit.low>>>0,e.numUnit.high>>>0).toNumber():e.numUnit),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Mapping=function(){function i(e){if(e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.id=e.uint64();break;case 2:i.memoryStart=e.uint64();break;case 3:i.memoryLimit=e.uint64();break;case 4:i.fileOffset=e.uint64();break;case 5:i.filename=e.int64();break;case 6:i.buildId=e.int64();break;case 7:i.hasFunctions=e.bool();break;case 8:i.hasFilenames=e.bool();break;case 9:i.hasLineNumbers=e.bool();break;case 10:i.hasInlineFrames=e.bool();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.id&&e.hasOwnProperty("id")&&!(o.isInteger(e.id)||e.id&&o.isInteger(e.id.low)&&o.isInteger(e.id.high))?"id: integer|Long expected":null!=e.memoryStart&&e.hasOwnProperty("memoryStart")&&!(o.isInteger(e.memoryStart)||e.memoryStart&&o.isInteger(e.memoryStart.low)&&o.isInteger(e.memoryStart.high))?"memoryStart: integer|Long expected":null!=e.memoryLimit&&e.hasOwnProperty("memoryLimit")&&!(o.isInteger(e.memoryLimit)||e.memoryLimit&&o.isInteger(e.memoryLimit.low)&&o.isInteger(e.memoryLimit.high))?"memoryLimit: integer|Long expected":null!=e.fileOffset&&e.hasOwnProperty("fileOffset")&&!(o.isInteger(e.fileOffset)||e.fileOffset&&o.isInteger(e.fileOffset.low)&&o.isInteger(e.fileOffset.high))?"fileOffset: integer|Long expected":null!=e.filename&&e.hasOwnProperty("filename")&&!(o.isInteger(e.filename)||e.filename&&o.isInteger(e.filename.low)&&o.isInteger(e.filename.high))?"filename: integer|Long expected":null!=e.buildId&&e.hasOwnProperty("buildId")&&!(o.isInteger(e.buildId)||e.buildId&&o.isInteger(e.buildId.low)&&o.isInteger(e.buildId.high))?"buildId: integer|Long expected":null!=e.hasFunctions&&e.hasOwnProperty("hasFunctions")&&"boolean"!=typeof e.hasFunctions?"hasFunctions: boolean expected":null!=e.hasFilenames&&e.hasOwnProperty("hasFilenames")&&"boolean"!=typeof e.hasFilenames?"hasFilenames: boolean expected":null!=e.hasLineNumbers&&e.hasOwnProperty("hasLineNumbers")&&"boolean"!=typeof e.hasLineNumbers?"hasLineNumbers: boolean expected":null!=e.hasInlineFrames&&e.hasOwnProperty("hasInlineFrames")&&"boolean"!=typeof e.hasInlineFrames?"hasInlineFrames: boolean expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Mapping)return e;var n=new r.perftools.profiles.Mapping;return null!=e.id&&(o.Long?(n.id=o.Long.fromValue(e.id)).unsigned=!0:"string"==typeof e.id?n.id=parseInt(e.id,10):"number"==typeof e.id?n.id=e.id:"object"==typeof e.id&&(n.id=new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),null!=e.memoryStart&&(o.Long?(n.memoryStart=o.Long.fromValue(e.memoryStart)).unsigned=!0:"string"==typeof e.memoryStart?n.memoryStart=parseInt(e.memoryStart,10):"number"==typeof e.memoryStart?n.memoryStart=e.memoryStart:"object"==typeof e.memoryStart&&(n.memoryStart=new o.LongBits(e.memoryStart.low>>>0,e.memoryStart.high>>>0).toNumber(!0))),null!=e.memoryLimit&&(o.Long?(n.memoryLimit=o.Long.fromValue(e.memoryLimit)).unsigned=!0:"string"==typeof e.memoryLimit?n.memoryLimit=parseInt(e.memoryLimit,10):"number"==typeof e.memoryLimit?n.memoryLimit=e.memoryLimit:"object"==typeof e.memoryLimit&&(n.memoryLimit=new o.LongBits(e.memoryLimit.low>>>0,e.memoryLimit.high>>>0).toNumber(!0))),null!=e.fileOffset&&(o.Long?(n.fileOffset=o.Long.fromValue(e.fileOffset)).unsigned=!0:"string"==typeof e.fileOffset?n.fileOffset=parseInt(e.fileOffset,10):"number"==typeof e.fileOffset?n.fileOffset=e.fileOffset:"object"==typeof e.fileOffset&&(n.fileOffset=new o.LongBits(e.fileOffset.low>>>0,e.fileOffset.high>>>0).toNumber(!0))),null!=e.filename&&(o.Long?(n.filename=o.Long.fromValue(e.filename)).unsigned=!1:"string"==typeof e.filename?n.filename=parseInt(e.filename,10):"number"==typeof e.filename?n.filename=e.filename:"object"==typeof e.filename&&(n.filename=new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber())),null!=e.buildId&&(o.Long?(n.buildId=o.Long.fromValue(e.buildId)).unsigned=!1:"string"==typeof e.buildId?n.buildId=parseInt(e.buildId,10):"number"==typeof e.buildId?n.buildId=e.buildId:"object"==typeof e.buildId&&(n.buildId=new o.LongBits(e.buildId.low>>>0,e.buildId.high>>>0).toNumber())),null!=e.hasFunctions&&(n.hasFunctions=Boolean(e.hasFunctions)),null!=e.hasFilenames&&(n.hasFilenames=Boolean(e.hasFilenames)),null!=e.hasLineNumbers&&(n.hasLineNumbers=Boolean(e.hasLineNumbers)),null!=e.hasInlineFrames&&(n.hasInlineFrames=Boolean(e.hasInlineFrames)),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!0);t.id=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.id=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!0),t.memoryStart=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.memoryStart=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!0),t.memoryLimit=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.memoryLimit=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!0),t.fileOffset=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.fileOffset=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.filename=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.filename=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.buildId=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.buildId=n.longs===String?"0":0,t.hasFunctions=!1,t.hasFilenames=!1,t.hasLineNumbers=!1,t.hasInlineFrames=!1}return null!=e.id&&e.hasOwnProperty("id")&&("number"==typeof e.id?t.id=n.longs===String?String(e.id):e.id:t.id=n.longs===String?o.Long.prototype.toString.call(e.id):n.longs===Number?new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.memoryStart&&e.hasOwnProperty("memoryStart")&&("number"==typeof e.memoryStart?t.memoryStart=n.longs===String?String(e.memoryStart):e.memoryStart:t.memoryStart=n.longs===String?o.Long.prototype.toString.call(e.memoryStart):n.longs===Number?new o.LongBits(e.memoryStart.low>>>0,e.memoryStart.high>>>0).toNumber(!0):e.memoryStart),null!=e.memoryLimit&&e.hasOwnProperty("memoryLimit")&&("number"==typeof e.memoryLimit?t.memoryLimit=n.longs===String?String(e.memoryLimit):e.memoryLimit:t.memoryLimit=n.longs===String?o.Long.prototype.toString.call(e.memoryLimit):n.longs===Number?new o.LongBits(e.memoryLimit.low>>>0,e.memoryLimit.high>>>0).toNumber(!0):e.memoryLimit),null!=e.fileOffset&&e.hasOwnProperty("fileOffset")&&("number"==typeof e.fileOffset?t.fileOffset=n.longs===String?String(e.fileOffset):e.fileOffset:t.fileOffset=n.longs===String?o.Long.prototype.toString.call(e.fileOffset):n.longs===Number?new o.LongBits(e.fileOffset.low>>>0,e.fileOffset.high>>>0).toNumber(!0):e.fileOffset),null!=e.filename&&e.hasOwnProperty("filename")&&("number"==typeof e.filename?t.filename=n.longs===String?String(e.filename):e.filename:t.filename=n.longs===String?o.Long.prototype.toString.call(e.filename):n.longs===Number?new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber():e.filename),null!=e.buildId&&e.hasOwnProperty("buildId")&&("number"==typeof e.buildId?t.buildId=n.longs===String?String(e.buildId):e.buildId:t.buildId=n.longs===String?o.Long.prototype.toString.call(e.buildId):n.longs===Number?new o.LongBits(e.buildId.low>>>0,e.buildId.high>>>0).toNumber():e.buildId),null!=e.hasFunctions&&e.hasOwnProperty("hasFunctions")&&(t.hasFunctions=e.hasFunctions),null!=e.hasFilenames&&e.hasOwnProperty("hasFilenames")&&(t.hasFilenames=e.hasFilenames),null!=e.hasLineNumbers&&e.hasOwnProperty("hasLineNumbers")&&(t.hasLineNumbers=e.hasLineNumbers),null!=e.hasInlineFrames&&e.hasOwnProperty("hasInlineFrames")&&(t.hasInlineFrames=e.hasInlineFrames),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Location=function(){function i(e){if(this.line=[],e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.id=e.uint64();break;case 2:i.mappingId=e.uint64();break;case 3:i.address=e.uint64();break;case 4:i.line&&i.line.length||(i.line=[]),i.line.push(r.perftools.profiles.Line.decode(e,e.uint32()));break;case 5:i.isFolded=e.bool();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.id&&e.hasOwnProperty("id")&&!(o.isInteger(e.id)||e.id&&o.isInteger(e.id.low)&&o.isInteger(e.id.high)))return"id: integer|Long expected";if(null!=e.mappingId&&e.hasOwnProperty("mappingId")&&!(o.isInteger(e.mappingId)||e.mappingId&&o.isInteger(e.mappingId.low)&&o.isInteger(e.mappingId.high)))return"mappingId: integer|Long expected";if(null!=e.address&&e.hasOwnProperty("address")&&!(o.isInteger(e.address)||e.address&&o.isInteger(e.address.low)&&o.isInteger(e.address.high)))return"address: integer|Long expected";if(null!=e.line&&e.hasOwnProperty("line")){if(!Array.isArray(e.line))return"line: array expected";for(var n=0;n>>0,e.id.high>>>0).toNumber(!0))),null!=e.mappingId&&(o.Long?(n.mappingId=o.Long.fromValue(e.mappingId)).unsigned=!0:"string"==typeof e.mappingId?n.mappingId=parseInt(e.mappingId,10):"number"==typeof e.mappingId?n.mappingId=e.mappingId:"object"==typeof e.mappingId&&(n.mappingId=new o.LongBits(e.mappingId.low>>>0,e.mappingId.high>>>0).toNumber(!0))),null!=e.address&&(o.Long?(n.address=o.Long.fromValue(e.address)).unsigned=!0:"string"==typeof e.address?n.address=parseInt(e.address,10):"number"==typeof e.address?n.address=e.address:"object"==typeof e.address&&(n.address=new o.LongBits(e.address.low>>>0,e.address.high>>>0).toNumber(!0))),e.line){if(!Array.isArray(e.line))throw TypeError(".perftools.profiles.Location.line: array expected");n.line=[];for(var t=0;t>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.mappingId&&e.hasOwnProperty("mappingId")&&("number"==typeof e.mappingId?t.mappingId=n.longs===String?String(e.mappingId):e.mappingId:t.mappingId=n.longs===String?o.Long.prototype.toString.call(e.mappingId):n.longs===Number?new o.LongBits(e.mappingId.low>>>0,e.mappingId.high>>>0).toNumber(!0):e.mappingId),null!=e.address&&e.hasOwnProperty("address")&&("number"==typeof e.address?t.address=n.longs===String?String(e.address):e.address:t.address=n.longs===String?o.Long.prototype.toString.call(e.address):n.longs===Number?new o.LongBits(e.address.low>>>0,e.address.high>>>0).toNumber(!0):e.address),e.line&&e.line.length){t.line=[];for(var l=0;l>>3){case 1:i.functionId=e.uint64();break;case 2:i.line=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.functionId&&e.hasOwnProperty("functionId")&&!(o.isInteger(e.functionId)||e.functionId&&o.isInteger(e.functionId.low)&&o.isInteger(e.functionId.high))?"functionId: integer|Long expected":null!=e.line&&e.hasOwnProperty("line")&&!(o.isInteger(e.line)||e.line&&o.isInteger(e.line.low)&&o.isInteger(e.line.high))?"line: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Line)return e;var n=new r.perftools.profiles.Line;return null!=e.functionId&&(o.Long?(n.functionId=o.Long.fromValue(e.functionId)).unsigned=!0:"string"==typeof e.functionId?n.functionId=parseInt(e.functionId,10):"number"==typeof e.functionId?n.functionId=e.functionId:"object"==typeof e.functionId&&(n.functionId=new o.LongBits(e.functionId.low>>>0,e.functionId.high>>>0).toNumber(!0))),null!=e.line&&(o.Long?(n.line=o.Long.fromValue(e.line)).unsigned=!1:"string"==typeof e.line?n.line=parseInt(e.line,10):"number"==typeof e.line?n.line=e.line:"object"==typeof e.line&&(n.line=new o.LongBits(e.line.low>>>0,e.line.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!0);t.functionId=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.functionId=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.line=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.line=n.longs===String?"0":0}return null!=e.functionId&&e.hasOwnProperty("functionId")&&("number"==typeof e.functionId?t.functionId=n.longs===String?String(e.functionId):e.functionId:t.functionId=n.longs===String?o.Long.prototype.toString.call(e.functionId):n.longs===Number?new o.LongBits(e.functionId.low>>>0,e.functionId.high>>>0).toNumber(!0):e.functionId),null!=e.line&&e.hasOwnProperty("line")&&("number"==typeof e.line?t.line=n.longs===String?String(e.line):e.line:t.line=n.longs===String?o.Long.prototype.toString.call(e.line):n.longs===Number?new o.LongBits(e.line.low>>>0,e.line.high>>>0).toNumber():e.line),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Function=function(){function i(e){if(e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.id=e.uint64();break;case 2:i.name=e.int64();break;case 3:i.systemName=e.int64();break;case 4:i.filename=e.int64();break;case 5:i.startLine=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.id&&e.hasOwnProperty("id")&&!(o.isInteger(e.id)||e.id&&o.isInteger(e.id.low)&&o.isInteger(e.id.high))?"id: integer|Long expected":null!=e.name&&e.hasOwnProperty("name")&&!(o.isInteger(e.name)||e.name&&o.isInteger(e.name.low)&&o.isInteger(e.name.high))?"name: integer|Long expected":null!=e.systemName&&e.hasOwnProperty("systemName")&&!(o.isInteger(e.systemName)||e.systemName&&o.isInteger(e.systemName.low)&&o.isInteger(e.systemName.high))?"systemName: integer|Long expected":null!=e.filename&&e.hasOwnProperty("filename")&&!(o.isInteger(e.filename)||e.filename&&o.isInteger(e.filename.low)&&o.isInteger(e.filename.high))?"filename: integer|Long expected":null!=e.startLine&&e.hasOwnProperty("startLine")&&!(o.isInteger(e.startLine)||e.startLine&&o.isInteger(e.startLine.low)&&o.isInteger(e.startLine.high))?"startLine: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Function)return e;var n=new r.perftools.profiles.Function;return null!=e.id&&(o.Long?(n.id=o.Long.fromValue(e.id)).unsigned=!0:"string"==typeof e.id?n.id=parseInt(e.id,10):"number"==typeof e.id?n.id=e.id:"object"==typeof e.id&&(n.id=new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),null!=e.name&&(o.Long?(n.name=o.Long.fromValue(e.name)).unsigned=!1:"string"==typeof e.name?n.name=parseInt(e.name,10):"number"==typeof e.name?n.name=e.name:"object"==typeof e.name&&(n.name=new o.LongBits(e.name.low>>>0,e.name.high>>>0).toNumber())),null!=e.systemName&&(o.Long?(n.systemName=o.Long.fromValue(e.systemName)).unsigned=!1:"string"==typeof e.systemName?n.systemName=parseInt(e.systemName,10):"number"==typeof e.systemName?n.systemName=e.systemName:"object"==typeof e.systemName&&(n.systemName=new o.LongBits(e.systemName.low>>>0,e.systemName.high>>>0).toNumber())),null!=e.filename&&(o.Long?(n.filename=o.Long.fromValue(e.filename)).unsigned=!1:"string"==typeof e.filename?n.filename=parseInt(e.filename,10):"number"==typeof e.filename?n.filename=e.filename:"object"==typeof e.filename&&(n.filename=new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber())),null!=e.startLine&&(o.Long?(n.startLine=o.Long.fromValue(e.startLine)).unsigned=!1:"string"==typeof e.startLine?n.startLine=parseInt(e.startLine,10):"number"==typeof e.startLine?n.startLine=e.startLine:"object"==typeof e.startLine&&(n.startLine=new o.LongBits(e.startLine.low>>>0,e.startLine.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!0);t.id=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.id=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.name=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.name=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.systemName=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.systemName=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.filename=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.filename=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.startLine=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.startLine=n.longs===String?"0":0}return null!=e.id&&e.hasOwnProperty("id")&&("number"==typeof e.id?t.id=n.longs===String?String(e.id):e.id:t.id=n.longs===String?o.Long.prototype.toString.call(e.id):n.longs===Number?new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.name&&e.hasOwnProperty("name")&&("number"==typeof e.name?t.name=n.longs===String?String(e.name):e.name:t.name=n.longs===String?o.Long.prototype.toString.call(e.name):n.longs===Number?new o.LongBits(e.name.low>>>0,e.name.high>>>0).toNumber():e.name),null!=e.systemName&&e.hasOwnProperty("systemName")&&("number"==typeof e.systemName?t.systemName=n.longs===String?String(e.systemName):e.systemName:t.systemName=n.longs===String?o.Long.prototype.toString.call(e.systemName):n.longs===Number?new o.LongBits(e.systemName.low>>>0,e.systemName.high>>>0).toNumber():e.systemName),null!=e.filename&&e.hasOwnProperty("filename")&&("number"==typeof e.filename?t.filename=n.longs===String?String(e.filename):e.filename:t.filename=n.longs===String?o.Long.prototype.toString.call(e.filename):n.longs===Number?new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber():e.filename),null!=e.startLine&&e.hasOwnProperty("startLine")&&("number"==typeof e.startLine?t.startLine=n.longs===String?String(e.startLine):e.startLine:t.startLine=n.longs===String?o.Long.prototype.toString.call(e.startLine):n.longs===Number?new o.LongBits(e.startLine.low>>>0,e.startLine.high>>>0).toNumber():e.startLine),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i),l}(),module.exports=r; +},{"protobufjs/minimal":"Myh2"}],"VmHy":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importAsPprofProfile=r;var e=require("./profile.proto.js"),n=require("../lib/profile"),t=require("../lib/utils"),l=require("../lib/value-formatters");function r(r){if(0===r.byteLength)return null;let o;try{o=e.perftools.profiles.Profile.decode(new Uint8Array(r))}catch(b){return null}function i(e){return"number"==typeof e?e:e.low}function u(e){return o.stringTable[i(e)]||null}const s=new Map;function a(e){const{name:n,filename:t,startLine:l}=e,r=null!=n&&u(n)||"(unknown)",o=null!=t?u(t):null,i=null!=l?+l:null,s={key:`${r}:${o}:${i}`,name:r};return null!=o&&(s.file=o),null!=i&&(s.line=i),s}for(let e of o.function)if(e.id){const n=a(e);null!=n&&s.set(i(e.id),n)}function c(e){const{line:n}=e;if(null==n)return null;const l=(0,t.lastOf)(n);return null==l?null:l.functionId&&s.get(i(l.functionId))||null}const f=new Map;for(let e of o.location)if(null!=e.id){const n=c(e);n&&f.set(i(e.id),n)}const p=o.sampleType.map(e=>({type:e.type&&u(e.type)||"samples",unit:e.unit&&u(e.unit)||"count"})),d=o.defaultSampleType?+o.defaultSampleType:p.length-1,m=p[d],y=new n.StackListProfileBuilder;switch(m.unit){case"nanoseconds":case"microseconds":case"milliseconds":case"seconds":y.setValueFormatter(new l.TimeFormatter(m.unit));break;case"bytes":y.setValueFormatter(new l.ByteFormatter)}for(let e of o.sample){const n=e.locationId?e.locationId.map(e=>f.get(i(e))):[];n.reverse();const t=e.value[d];y.appendSampleWithWeight(n.filter(e=>null!=e),+t)}return y.build()} +},{"./profile.proto.js":"YdJi","../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"bNW7":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromChromeHeapProfile=i;var e=require("../lib/profile"),t=require("../lib/utils"),r=require("../lib/value-formatters");const n=new Map;function o(e){return(0,t.getOrInsert)(n,e,e=>{const t=e.url,r=e.lineNumber,n=e.columnNumber,o=e.functionName||(t?`(anonymous ${t.split("/").pop()}:${r})`:"(anonymous)");return{key:`${o}:${t}:${r}:${n}`,name:o,file:t,line:r,col:n}})}function i(t){const n=new Map;let i=0;const l=(e,t)=>{e.id=i++,n.set(e.id,e),t&&(e.parent=t.id),e.children.forEach(t=>l(t,e))};l(t.head);const s=e=>{if(0===e.children.length)return e.selfSize||0;const t=e.children.reduce((e,t)=>e+=s(t),e.selfSize);return e.totalSize=t,t},u=s(t.head),a=[];for(let e of n.values()){let t=[];for(t.push(e);void 0!==e.parent;){const r=n.get(e.parent);if(void 0===r)break;t.unshift(r),e=r}a.push(t)}const c=new e.StackListProfileBuilder(u);for(let e of a){const t=e[e.length-1];c.appendSampleWithWeight(e.map(e=>o(e.callFrame)),t.selfSize)}return c.setValueFormatter(new r.ByteFormatter),c.build()} +},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"KFvE":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isTraceEventFormatted=m,exports.importTraceEvents=g;var e=require("../lib/utils"),t=require("../lib/profile"),n=require("../lib/value-formatters");function r(t,n){return`${(0,e.zeroPad)(""+t,10)}:${(0,e.zeroPad)(""+n,10)}`}function s(t){const n=new Map;for(let s of t){(0,e.getOrInsert)(n,r(s.pid,s.tid),()=>[]).push(s)}return n}function o(e,t){if(0===e.length&&0===t.length)throw new Error("This method should not be given both queues empty");if(0===t.length)return"B";if(0===e.length)return"E";const n=e[0],r=t[0],s=n.ts,o=r.ts;return s0){let t=Number.MAX_SAFE_INTEGER;for(let n of e)t=Math.min(t,n.ts);for(let n of e)n.ts-=t}const r=[];for(let a of e)switch(a.ph){case"B":t.push(a);break;case"E":n.push(a);break;case"X":r.push(a);break;default:return a}function s(e){var t,n;return null!==(n=null!==(t=e.dur)&&void 0!==t?t:e.tdur)&&void 0!==n?n:0}r.sort((e,t)=>{if(e.tst.ts)return 1;const n=s(e),r=s(t);return n>r?-1:nt.ts?1:0}return t.sort(o),n.sort(o),[t,n]}function i(e){const t=[];for(let n of e)switch(n.ph){case"B":case"E":case"X":t.push(n)}return t}function u(e){const t=new Map;for(let n of e)"M"===n.ph&&"process_name"===n.name&&n.args&&n.args.name&&t.set(n.pid,n.args.name);return t}function c(e){const t=new Map;for(let n of e)"M"===n.ph&&"thread_name"===n.name&&n.args&&n.args.name&&t.set(r(n.pid,n.tid),n.args.name);return t}function f(e){let t=`${e.name||"(unnamed)"}`;return e.args&&(t+=` ${JSON.stringify(e.args)}`),t}function l(e){const t=f(e);return{name:t,key:t}}function h(f){const h=s(i(f)),d=u(f),p=c(f),m=[];return h.forEach(s=>{if(0===s.length)return;const{pid:i,tid:u}=s[0],c=new t.CallTreeProfileBuilder;c.setValueFormatter(new n.TimeFormatter("microseconds"));const f=d.get(i),h=p.get(r(i,u));null!=f&&null!=h?c.setName(`${f} (pid ${i}), ${h} (tid ${u})`):null!=f?c.setName(`${f} (pid ${i}, tid ${u})`):null!=h?c.setName(`${h} (pid ${i}, tid ${u})`):c.setName(`pid ${i}, tid ${u}`);const[g,$]=a(s),k=[],b=e=>{k.push(e),c.enterFrame(l(e),e.ts)},w=t=>{const n=(0,e.lastOf)(k);if(null==n)return void console.warn(`Tried to end frame "${l(t).key}", but the stack was empty. Doing nothing instead.`);const r=l(t),s=l(n);t.name===n.name?(r.key!==s.key&&console.warn(`ts=${t.ts}: Tried to end "${r.key}" when "${s.key}" was on the top of the stack. Ending ${s.key} instead.`),k.pop(),c.leaveFrame(s,t.ts)):console.warn(`ts=${t.ts}: Tried to end "${r.key}" when "${s.key}" was on the top of the stack. Doing nothing instead.`)};for(;g.length>0||$.length>0;){const t=o(g,$);switch(t){case"B":b(g.shift());break;case"E":{const t=(0,e.lastOf)(k);if(null!=t){const e=l(t);let n=!1;for(let t=1;t<$.length;t++){const r=$[t];if(r.ts>$[0].ts)break;const s=l(r);if(e.key===s.key){const e=$[0];$[0]=$[t],$[t]=e,n=!0;break}}if(!n)for(let r=1;r<$.length;r++){const e=$[r];if(e.ts>$[0].ts)break;if(e.name===t.name){const e=$[0];$[0]=$[r],$[r]=e,n=!0;break}}}w($.shift());break}default:return t}}for(let e=k.length-1;e>=0;e--){const t=l(k[e]);console.warn(`Frame "${t.key}" was still open at end of profile. Closing automatically.`),c.leaveFrame(t,c.getTotalWeight())}m.push([r(i,u),c.build()])}),(0,e.sortBy)(m,e=>e[0]),{name:"",indexToView:0,profiles:m.map(e=>e[1])}}function d(e){if(!Array.isArray(e))return!1;if(0===e.length)return!1;for(let t of e){if(!("ph"in t))return!1;switch(t.ph){case"B":case"E":case"X":if(!("ts"in t))return!1}}return!0}function p(e){return"traceEvents"in e&&d(e.traceEvents)}function m(e){return p(e)||d(e)}function g(e){if(p(e))return h(e.traceEvents);if(d(e))return h(e);return e} +},{"../lib/utils":"ucYa","../lib/profile":"YG8z","../lib/value-formatters":"LsM4"}],"TZYa":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromCallgrind=r;var e=require("../lib/profile"),t=require("../lib/utils"),i=require("../lib/value-formatters");class s{constructor(e,i){this.fileName=e,this.fieldName=i,this.frameSet=new t.KeyedSet,this.totalWeights=new Map,this.childrenTotalWeights=new Map}getOrInsertFrame(t){return e.Frame.getOrInsert(this.frameSet,t)}addToTotalWeight(e,t){this.totalWeights.has(e)?this.totalWeights.set(e,this.totalWeights.get(e)+t):this.totalWeights.set(e,t)}addSelfWeight(e,t){this.addToTotalWeight(this.getOrInsertFrame(e),t)}addChildWithTotalWeight(e,i,s){const n=this.getOrInsertFrame(e),r=this.getOrInsertFrame(i),a=(0,t.getOrInsert)(this.childrenTotalWeights,n,e=>new Map);a.has(r)?a.set(r,a.get(r)+s):a.set(r,s),this.addToTotalWeight(n,s)}toProfile(){const s=new Map;for(let[e,t]of this.totalWeights)s.set(e,t);for(let[e,i]of this.childrenTotalWeights)for(let[n,r]of i)s.set(n,(0,t.getOrElse)(s,n,()=>r)-r);let n=0;for(let[e,t]of s)n+=t;const r=new e.CallTreeProfileBuilder;let a=1;"Time_(10ns)"===this.fieldName?(r.setName(`${this.fileName} -- Time`),a=10,r.setValueFormatter(new i.TimeFormatter("nanoseconds"))):"Memory_(bytes)"==this.fieldName?(r.setName(`${this.fileName} -- Memory`),r.setValueFormatter(new i.ByteFormatter)):r.setName(`${this.fileName} -- ${this.fieldName}`);let l=0;const o=new Set,h=(e,i)=>{if(o.has(e))return;if(i<1e-4*n)return;const s=(0,t.getOrElse)(this.totalWeights,e,()=>0);if(0===s)return;const m=i/s;let c=s;r.enterFrame(e,l*a),o.add(e);for(let[t,n]of this.childrenTotalWeights.get(e)||[]){c-=n,h(t,n*m)}o.delete(e),l+=c*m,r.leaveFrame(e,l*a)};for(let[e,t]of s)t<=0||h(e,t);return r.build()}}class n{constructor(e,t){this.importedFileName=t,this.callGraphs=null,this.eventsLine=null,this.filename=null,this.functionName=null,this.calleeFilename=null,this.calleeFunctionName=null,this.savedFileNames={},this.savedFunctionNames={},this.lines=e.splitLines(),this.lineNum=0}parse(){for(;this.lineNume.toProfile())}:null}frameInfo(){const e=this.filename||"(unknown)",t=this.functionName||"(unknown)";return{key:`${e}:${t}`,name:t,file:e}}calleeFrameInfo(){const e=this.calleeFilename||"(unknown)",t=this.calleeFunctionName||"(unknown)";return{key:`${e}:${t}`,name:t,file:e}}parseHeaderLine(e){const t=/^\s*(\w+):\s*(.*)+$/.exec(e);if(!t)return!1;if("events"!==t[1])return!0;const i=t[2].split(" ");if(null!=this.callGraphs)throw new Error(`Duplicate "events: " lines specified. First was "${this.eventsLine}", now received "${e}" on ${this.lineNum}.`);return this.callGraphs=i.map(e=>new s(this.importedFileName,e)),!0}parseAssignmentLine(e){const t=/^(\w+)=\s*(.*)$/.exec(e);if(!t)return!1;const i=t[1],s=t[2];switch(i){case"fe":case"fi":case"fl":this.filename=this.parseNameWithCompression(s,this.savedFileNames),this.calleeFilename=this.filename;break;case"fn":this.functionName=this.parseNameWithCompression(s,this.savedFunctionNames);break;case"cfi":case"cfl":this.calleeFilename=this.parseNameWithCompression(s,this.savedFileNames);break;case"cfn":this.calleeFunctionName=this.parseNameWithCompression(s,this.savedFunctionNames);break;case"calls":this.parseCostLine(this.lines[this.lineNum++],"child");break;default:console.log(`Ignoring assignment to unrecognized key "${e}" on line ${this.lineNum}`)}return!0}parseNameWithCompression(e,t){{const i=/^\((\d+)\)\s*(.+)$/.exec(e);if(i){const e=i[1],s=i[2];if(e in t)throw new Error(`Redefinition of name with id: ${e}. Original value was "${t[e]}". Tried to redefine as "${s}" on line ${this.lineNum}.`);return t[e]=s,s}}{const i=/^\((\d+)\)$/.exec(e);if(i){const e=i[1];if(!(e in t))throw new Error(`Tried to use name with id ${e} on line ${this.lineNum} before it was defined.`);return t[e]}}return e}parseCostLine(e,t){const i=e.split(/\s+/),s=[];for(let n of i){const e=parseInt(n);if(isNaN(e))return!1;s.push(e)}if(0==s.length)return!1;if(!this.callGraphs)throw new Error(`Encountered a cost line on line ${this.lineNum} before event specification was provided.`);for(let n=0;n child.id),\n })\n node.children.forEach(visit)\n }\n visit(root)\n return nodes\n}\n\nfunction timestampsToDeltas(timestamps: number[], startTime: number): number[] {\n return timestamps.map((timestamp, index) => {\n const lastTimestamp = index === 0 ? startTime * 1000000 : timestamps[index - 1]\n return timestamp - lastTimestamp\n })\n}\n\n/**\n * Convert the old tree-based format to the new flat-array based format\n */\nexport function chromeTreeToNodes(content: OldCPUProfile): CPUProfile {\n // Note that both startTime and endTime are now in microseconds\n return {\n samples: content.samples,\n startTime: content.startTime * 1000000,\n endTime: content.endTime * 1000000,\n nodes: treeToArray(content.head),\n timeDeltas: timestampsToDeltas(content.timestamps, content.startTime),\n }\n}\n","import {Profile, FrameInfo, CallTreeProfileBuilder, ProfileGroup} from '../lib/profile'\nimport {getOrInsert, lastOf, sortBy, itForEach} from '../lib/utils'\nimport {TimeFormatter} from '../lib/value-formatters'\nimport {chromeTreeToNodes, OldCPUProfile} from './v8cpuFormatter'\n\n// See: https://github.com/v8/v8/blob/master/src/inspector/js_protocol.json\n\ninterface TimelineEvent {\n pid: number\n tid: number\n ts: number\n ph: string\n cat: string\n name: string\n dur: number\n tdur: number\n tts: number\n args: {[key: string]: any}\n id?: string\n}\n\ninterface PositionTickInfo {\n line: number\n ticks: number\n}\n\ninterface CPUProfileCallFrame {\n columnNumber: number\n functionName: string\n lineNumber: number\n scriptId: string\n url: string\n}\n\nexport interface CPUProfileNode {\n callFrame: CPUProfileCallFrame\n hitCount: number\n id: number\n children?: number[]\n positionTicks?: PositionTickInfo[]\n parent?: CPUProfileNode\n}\n\nexport interface CPUProfile {\n startTime: number\n endTime: number\n nodes: CPUProfileNode[]\n samples: number[]\n timeDeltas: number[]\n}\n\nexport function isChromeTimeline(rawProfile: any): boolean {\n if (!Array.isArray(rawProfile)) return false\n if (rawProfile.length < 1) return false\n const first = rawProfile[0]\n if (!('pid' in first && 'tid' in first && 'ph' in first && 'cat' in first)) return false\n if (\n !rawProfile.find(\n e => e.name === 'CpuProfile' || e.name === 'Profile' || e.name === 'ProfileChunk',\n )\n )\n return false\n return true\n}\n\nexport function importFromChromeTimeline(events: TimelineEvent[], fileName: string): ProfileGroup {\n // It seems like sometimes Chrome timeline files contain multiple CpuProfiles?\n // For now, choose the first one in the list.\n\n const cpuProfileByID = new Map()\n\n // Maps profile IDs (like \"0x3\") to pid/tid pairs formatted as `${pid}:${tid}`\n const pidTidById = new Map()\n\n // Maps pid/tid pairs to thread names\n const threadNameByPidTid = new Map()\n\n // The events aren't necessarily recorded in chronological order. Sort them so\n // that they are.\n sortBy(events, e => e.ts)\n\n for (let event of events) {\n if (event.name === 'CpuProfile') {\n const pidTid = `${event.pid}:${event.tid}`\n const id = event.id || pidTid\n cpuProfileByID.set(id, event.args.data.cpuProfile as CPUProfile)\n pidTidById.set(id, pidTid)\n }\n\n if (event.name === 'Profile') {\n const pidTid = `${event.pid}:${event.tid}`\n cpuProfileByID.set(event.id || pidTid, {\n startTime: 0,\n endTime: 0,\n nodes: [],\n samples: [],\n timeDeltas: [],\n ...event.args.data,\n })\n\n if (event.id) {\n pidTidById.set(event.id, `${event.pid}:${event.tid}`)\n }\n }\n\n if (event.name === 'thread_name') {\n threadNameByPidTid.set(`${event.pid}:${event.tid}`, event.args.name)\n }\n\n if (event.name === 'ProfileChunk') {\n const pidTid = `${event.pid}:${event.tid}`\n const cpuProfile = cpuProfileByID.get(event.id || pidTid)\n if (cpuProfile) {\n const chunk = event.args.data\n if (chunk.cpuProfile) {\n if (chunk.cpuProfile.nodes) {\n cpuProfile.nodes = cpuProfile.nodes.concat(chunk.cpuProfile.nodes)\n }\n if (chunk.cpuProfile.samples) {\n cpuProfile.samples = cpuProfile.samples.concat(chunk.cpuProfile.samples)\n }\n }\n if (chunk.timeDeltas) {\n cpuProfile.timeDeltas = cpuProfile.timeDeltas.concat(chunk.timeDeltas)\n }\n if (chunk.startTime != null) {\n cpuProfile.startTime = chunk.startTime\n }\n if (chunk.endTime != null) {\n cpuProfile.endTime = chunk.endTime\n }\n } else {\n console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${event.id || pidTid}`)\n }\n }\n }\n\n if (cpuProfileByID.size > 0) {\n const profiles: Profile[] = []\n let indexToView = 0\n\n itForEach(cpuProfileByID.keys(), profileId => {\n let threadName: string | null = null\n let pidTid = pidTidById.get(profileId)\n if (pidTid) {\n threadName = threadNameByPidTid.get(pidTid) || null\n if (threadName) {\n }\n }\n const profile = importFromChromeCPUProfile(cpuProfileByID.get(profileId)!)\n if (threadName && cpuProfileByID.size > 1) {\n profile.setName(`${fileName} - ${threadName}`)\n if (threadName === 'CrRendererMain') {\n indexToView = profiles.length\n }\n } else {\n profile.setName(`${fileName}`)\n }\n profiles.push(profile)\n })\n\n return {name: fileName, indexToView, profiles}\n } else {\n throw new Error('Could not find CPU profile in Timeline')\n }\n}\n\nconst callFrameToFrameInfo = new Map()\nfunction frameInfoForCallFrame(callFrame: CPUProfileCallFrame) {\n return getOrInsert(callFrameToFrameInfo, callFrame, callFrame => {\n const file = callFrame.url\n\n // In Chrome profiles, line numbers & column numbers are both 0-indexed.\n //\n // We're going to normalize these to be 1-based to avoid needing to normalize\n // these at the presentation layer.\n let line = callFrame.lineNumber\n if (line != null) line++\n\n let col = callFrame.columnNumber\n if (col != null) col++\n\n const name =\n callFrame.functionName ||\n (file ? `(anonymous ${file.split('/').pop()}:${line})` : '(anonymous)')\n\n return {\n key: `${name}:${file}:${line}:${col}`,\n name,\n file,\n line,\n col,\n }\n })\n}\n\nfunction shouldIgnoreFunction(callFrame: CPUProfileCallFrame) {\n const {functionName, url} = callFrame\n if (url === 'native dummy.js') {\n // I'm not really sure what this is about, but this seems to be used\n // as a way of avoiding edge cases in V8's implementation.\n // See: https://github.com/v8/v8/blob/b8626ca4/tools/js2c.py#L419-L424\n return true\n }\n return functionName === '(root)' || functionName === '(idle)'\n}\n\nfunction shouldPlaceOnTopOfPreviousStack(functionName: string) {\n return functionName === '(garbage collector)' || functionName === '(program)'\n}\n\nexport function importFromChromeCPUProfile(chromeProfile: CPUProfile): Profile {\n const profile = new CallTreeProfileBuilder(chromeProfile.endTime - chromeProfile.startTime)\n\n const nodeById = new Map()\n for (let node of chromeProfile.nodes) {\n nodeById.set(node.id, node)\n }\n for (let node of chromeProfile.nodes) {\n if (typeof node.parent === 'number') {\n node.parent = nodeById.get(node.parent)\n }\n\n if (!node.children) continue\n for (let childId of node.children) {\n const child = nodeById.get(childId)\n if (!child) continue\n child.parent = node\n }\n }\n\n const samples: number[] = []\n const sampleTimes: number[] = []\n\n // The first delta is relative to the profile startTime.\n // Ref: https://github.com/v8/v8/blob/44bd8fd7/src/inspector/js_protocol.json#L1485\n let elapsed = chromeProfile.timeDeltas[0]\n\n // Prevents negative time deltas from causing bad data. See\n // https://github.com/jlfwong/speedscope/pull/305 for details.\n let lastValidElapsed = elapsed\n\n let lastNodeId = NaN\n\n // The chrome CPU profile format doesn't collapse identical samples. We'll do that\n // here to save a ton of work later doing mergers.\n for (let i = 0; i < chromeProfile.samples.length; i++) {\n const nodeId = chromeProfile.samples[i]\n if (nodeId != lastNodeId) {\n samples.push(nodeId)\n if (elapsed < lastValidElapsed) {\n sampleTimes.push(lastValidElapsed)\n } else {\n sampleTimes.push(elapsed)\n lastValidElapsed = elapsed\n }\n }\n\n if (i === chromeProfile.samples.length - 1) {\n if (!isNaN(lastNodeId)) {\n samples.push(lastNodeId)\n if (elapsed < lastValidElapsed) {\n sampleTimes.push(lastValidElapsed)\n } else {\n sampleTimes.push(elapsed)\n lastValidElapsed = elapsed\n }\n }\n } else {\n const timeDelta = chromeProfile.timeDeltas[i + 1]\n elapsed += timeDelta\n lastNodeId = nodeId\n }\n }\n\n let prevStack: CPUProfileNode[] = []\n\n for (let i = 0; i < samples.length; i++) {\n const value = sampleTimes[i]\n const nodeId = samples[i]\n let stackTop = nodeById.get(nodeId)\n if (!stackTop) continue\n\n // Find lowest common ancestor of the current stack and the previous one\n let lca: CPUProfileNode | null = null\n\n // This is O(n^2), but n should be relatively small here (stack height),\n // so hopefully this isn't much of a problem\n for (\n lca = stackTop;\n lca && prevStack.indexOf(lca) === -1;\n lca = shouldPlaceOnTopOfPreviousStack(lca.callFrame.functionName)\n ? lastOf(prevStack)\n : lca.parent || null\n ) {}\n\n // Close frames that are no longer open\n while (prevStack.length > 0 && lastOf(prevStack) != lca) {\n const closingNode = prevStack.pop()!\n const frame = frameInfoForCallFrame(closingNode.callFrame)\n profile.leaveFrame(frame, value)\n }\n\n // Open frames that are now becoming open\n const toOpen: CPUProfileNode[] = []\n for (\n let node: CPUProfileNode | null = stackTop;\n node && node != lca && !shouldIgnoreFunction(node.callFrame);\n // Place Chrome internal functions on top of the previous call stack\n node = shouldPlaceOnTopOfPreviousStack(node.callFrame.functionName)\n ? lastOf(prevStack)\n : node.parent || null\n ) {\n toOpen.push(node)\n }\n toOpen.reverse()\n\n for (let node of toOpen) {\n profile.enterFrame(frameInfoForCallFrame(node.callFrame), value)\n }\n\n prevStack = prevStack.concat(toOpen)\n }\n\n // Close frames that are open at the end of the trace\n for (let i = prevStack.length - 1; i >= 0; i--) {\n profile.leaveFrame(frameInfoForCallFrame(prevStack[i].callFrame), lastOf(sampleTimes)!)\n }\n\n profile.setValueFormatter(new TimeFormatter('microseconds'))\n return profile.build()\n}\n\nexport function importFromOldV8CPUProfile(content: OldCPUProfile): Profile {\n return importFromChromeCPUProfile(chromeTreeToNodes(content))\n}\n","// https://github.com/tmm1/stackprof\n\nimport {Profile, FrameInfo, StackListProfileBuilder} from '../lib/profile'\nimport {TimeFormatter} from '../lib/value-formatters'\n\ninterface StackprofFrame {\n name: string\n file?: string\n line?: number\n}\n\nexport interface StackprofProfile {\n frames: {[number: string]: StackprofFrame}\n mode: string\n raw: number[]\n raw_timestamp_deltas: number[]\n samples: number\n}\n\nexport function importFromStackprof(stackprofProfile: StackprofProfile): Profile {\n const {frames, mode, raw, raw_timestamp_deltas, samples} = stackprofProfile\n const objectMode = mode == 'object'\n\n const size = objectMode ? samples : stackprofProfile.raw_timestamp_deltas.reduce((a, b) => a + b, 0)\n const profile = new StackListProfileBuilder(size)\n\n let sampleIndex = 0\n\n let prevStack: FrameInfo[] = []\n\n for (let i = 0; i < raw.length; ) {\n const stackHeight = raw[i++]\n\n let stack: FrameInfo[] = []\n for (let j = 0; j < stackHeight; j++) {\n const id = raw[i++]\n stack.push({\n key: id,\n ...frames[id],\n })\n }\n if (stack.length === 1 && stack[0].name === '(garbage collection)') {\n stack = prevStack.concat(stack)\n }\n const nSamples = raw[i++]\n\n if (objectMode) {\n profile.appendSampleWithWeight(stack, nSamples)\n } else {\n let sampleDuration = 0\n for (let j = 0; j < nSamples; j++) {\n sampleDuration += raw_timestamp_deltas[sampleIndex++]\n }\n\n profile.appendSampleWithWeight(stack, sampleDuration)\n }\n\n prevStack = stack\n }\n\n if (!objectMode) {\n profile.setValueFormatter(new TimeFormatter('microseconds'))\n }\n\n return profile.build()\n}\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = strings.string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","!function (exports) {\n var fromCharCode = String.fromCharCode;\n function throwSyntaxError(bytes, index, message) {\n var c = bytes[index];\n var line = 1;\n var column = 0;\n for (var i = 0; i < index; i++) {\n if (bytes[i] === 10 /* Newline */) {\n line++;\n column = 0;\n }\n else {\n column++;\n }\n }\n throw new SyntaxError(message ? message :\n index === bytes.length ? 'Unexpected end of input while parsing JSON' :\n c >= 0x20 && c <= 0x7E ? \"Unexpected character \" + fromCharCode(c) + \" in JSON at position \" + index + \" (line \" + line + \", column \" + column + \")\" :\n \"Unexpected byte 0x\" + c.toString(16) + \" in JSON at position \" + index + \" (line \" + line + \", column \" + column + \")\");\n }\n exports.JSON_parse = function (bytes) {\n if (!(bytes instanceof Uint8Array)) {\n throw new Error(\"JSON input must be a Uint8Array\");\n }\n var propertyStack = [];\n var objectStack = [];\n var stateStack = [];\n var length = bytes.length;\n var property = null;\n var state = 0 /* TopLevel */;\n var object;\n var i = 0;\n while (i < length) {\n var c = bytes[i++];\n // Skip whitespace\n if (c <= 32 /* Space */) {\n continue;\n }\n var value = void 0;\n // Validate state inside objects\n if (state === 2 /* Object */ && property === null && c !== 34 /* Quote */ && c !== 125 /* CloseBrace */) {\n throwSyntaxError(bytes, --i);\n }\n switch (c) {\n // True\n case 116 /* LowerT */: {\n if (bytes[i++] !== 114 /* LowerR */ || bytes[i++] !== 117 /* LowerU */ || bytes[i++] !== 101 /* LowerE */) {\n throwSyntaxError(bytes, --i);\n }\n value = true;\n break;\n }\n // False\n case 102 /* LowerF */: {\n if (bytes[i++] !== 97 /* LowerA */ || bytes[i++] !== 108 /* LowerL */ || bytes[i++] !== 115 /* LowerS */ || bytes[i++] !== 101 /* LowerE */) {\n throwSyntaxError(bytes, --i);\n }\n value = false;\n break;\n }\n // Null\n case 110 /* LowerN */: {\n if (bytes[i++] !== 117 /* LowerU */ || bytes[i++] !== 108 /* LowerL */ || bytes[i++] !== 108 /* LowerL */) {\n throwSyntaxError(bytes, --i);\n }\n value = null;\n break;\n }\n // Number begin\n case 45 /* Minus */:\n case 46 /* Dot */:\n case 48 /* Digit0 */:\n case 49 /* Digit1 */:\n case 50 /* Digit2 */:\n case 51 /* Digit3 */:\n case 52 /* Digit4 */:\n case 53 /* Digit5 */:\n case 54 /* Digit6 */:\n case 55 /* Digit7 */:\n case 56 /* Digit8 */:\n case 57 /* Digit9 */: {\n var index = i;\n value = fromCharCode(c);\n c = bytes[i];\n // Scan over the rest of the number\n while (true) {\n switch (c) {\n case 43 /* Plus */:\n case 45 /* Minus */:\n case 46 /* Dot */:\n case 48 /* Digit0 */:\n case 49 /* Digit1 */:\n case 50 /* Digit2 */:\n case 51 /* Digit3 */:\n case 52 /* Digit4 */:\n case 53 /* Digit5 */:\n case 54 /* Digit6 */:\n case 55 /* Digit7 */:\n case 56 /* Digit8 */:\n case 57 /* Digit9 */:\n case 101 /* LowerE */:\n case 69 /* UpperE */: {\n value += fromCharCode(c);\n c = bytes[++i];\n continue;\n }\n }\n // Number end\n break;\n }\n // Convert the string to a number\n value = +value;\n // Validate the number\n if (isNaN(value)) {\n throwSyntaxError(bytes, --index, 'Invalid number');\n }\n break;\n }\n // String begin\n case 34 /* Quote */: {\n value = '';\n while (true) {\n if (i >= length) {\n throwSyntaxError(bytes, length);\n }\n c = bytes[i++];\n // String end\n if (c === 34 /* Quote */) {\n break;\n }\n else if (c === 92 /* Backslash */) {\n switch (bytes[i++]) {\n // Normal escape sequence\n case 34 /* Quote */:\n value += '\\\"';\n break;\n case 47 /* Slash */:\n value += '\\/';\n break;\n case 92 /* Backslash */:\n value += '\\\\';\n break;\n case 98 /* LowerB */:\n value += '\\b';\n break;\n case 102 /* LowerF */:\n value += '\\f';\n break;\n case 110 /* LowerN */:\n value += '\\n';\n break;\n case 114 /* LowerR */:\n value += '\\r';\n break;\n case 116 /* LowerT */:\n value += '\\t';\n break;\n // Unicode escape sequence\n case 117 /* LowerU */: {\n var code = 0;\n for (var j = 0; j < 4; j++) {\n c = bytes[i++];\n code <<= 4;\n if (c >= 48 /* Digit0 */ && c <= 57 /* Digit9 */)\n code |= c - 48 /* Digit0 */;\n else if (c >= 97 /* LowerA */ && c <= 102 /* LowerF */)\n code |= c + (10 - 97 /* LowerA */);\n else if (c >= 65 /* UpperA */ && c <= 70 /* UpperF */)\n code |= c + (10 - 65 /* UpperA */);\n else\n throwSyntaxError(bytes, --i);\n }\n value += fromCharCode(code);\n break;\n }\n // Invalid escape sequence\n default:\n throwSyntaxError(bytes, --i);\n break;\n }\n }\n else if (c <= 0x7F) {\n value += fromCharCode(c);\n }\n else if ((c & 0xE0) === 0xC0) {\n value += fromCharCode(((c & 0x1F) << 6) | (bytes[i++] & 0x3F));\n }\n else if ((c & 0xF0) === 0xE0) {\n value += fromCharCode(((c & 0x0F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F));\n }\n else if ((c & 0xF8) == 0xF0) {\n var codePoint = ((c & 0x07) << 18) | ((bytes[i++] & 0x3F) << 12) | ((bytes[i++] & 0x3F) << 6) | (bytes[i++] & 0x3F);\n if (codePoint > 0xFFFF) {\n codePoint -= 0x10000;\n value += fromCharCode(((codePoint >> 10) & 0x3FF) | 0xD800);\n codePoint = 0xDC00 | (codePoint & 0x3FF);\n }\n value += fromCharCode(codePoint);\n }\n }\n // Force V8's rope representation to be flattened to compact the string and avoid running out of memory\n value[0];\n break;\n }\n // Array begin\n case 91 /* OpenBracket */: {\n value = [];\n // Push the stack\n propertyStack.push(property);\n objectStack.push(object);\n stateStack.push(state);\n // Enter the array\n property = null;\n object = value;\n state = 1 /* Array */;\n continue;\n }\n // Object begin\n case 123 /* OpenBrace */: {\n value = {};\n // Push the stack\n propertyStack.push(property);\n objectStack.push(object);\n stateStack.push(state);\n // Enter the object\n property = null;\n object = value;\n state = 2 /* Object */;\n continue;\n }\n // Array end\n case 93 /* CloseBracket */: {\n if (state !== 1 /* Array */) {\n throwSyntaxError(bytes, --i);\n }\n // Leave the array\n value = object;\n // Pop the stack\n property = propertyStack.pop();\n object = objectStack.pop();\n state = stateStack.pop();\n break;\n }\n // Object end\n case 125 /* CloseBrace */: {\n if (state !== 2 /* Object */) {\n throwSyntaxError(bytes, --i);\n }\n // Leave the object\n value = object;\n // Pop the stack\n property = propertyStack.pop();\n object = objectStack.pop();\n state = stateStack.pop();\n break;\n }\n default: {\n throwSyntaxError(bytes, --i);\n }\n }\n c = bytes[i];\n // Skip whitespace\n while (c <= 32 /* Space */) {\n c = bytes[++i];\n }\n switch (state) {\n case 0 /* TopLevel */: {\n // Expect the end of the input\n if (i === length) {\n return value;\n }\n break;\n }\n case 1 /* Array */: {\n object.push(value);\n // Check for more values\n if (c === 44 /* Comma */) {\n i++;\n continue;\n }\n // Expect the end of the array\n if (c === 93 /* CloseBracket */) {\n continue;\n }\n break;\n }\n case 2 /* Object */: {\n // Property\n if (property === null) {\n property = value;\n // Expect a colon\n if (c === 58 /* Colon */) {\n i++;\n continue;\n }\n }\n else {\n object[property] = value;\n property = null;\n // Check for more values\n if (c === 44 /* Comma */) {\n i++;\n continue;\n }\n // Expect the end of the object\n if (c === 125 /* CloseBrace */) {\n continue;\n }\n }\n break;\n }\n }\n // It's an error if we get here\n break;\n }\n throwSyntaxError(bytes, i);\n };\n}(typeof exports !== 'undefined' ? exports : this);\n","import * as pako from 'pako'\nimport {JSON_parse} from 'uint8array-json-parser'\n\nexport interface ProfileDataSource {\n name(): Promise\n readAsArrayBuffer(): Promise\n readAsText(): Promise\n}\n\nexport interface TextFileContent {\n splitLines(): string[]\n firstChunk(): string\n parseAsJSON(): any\n}\n\n// V8 has a maximum string size. To support files whose contents exceeds that\n// size, we provide an alternate string interface for text backed by a\n// Uint8Array instead.\n//\n// We provide a simple splitLines() which returns simple strings under the\n// assumption that most extremely large text profiles will be broken into many\n// lines. This isn't true in the general case, but will be true for most common\n// large files.\n//\n// See: https://github.com/v8/v8/blob/8b663818fc311217c2cdaaab935f020578bfb7a8/src/objects/string.h#L479-L483\n//\n// At time of writing (2021/03/27), the maximum string length in V8 is\n// 32 bit systems: 2^28 - 16 = ~268M chars\n// 64 bit systems: 2^29 - 24 = ~537M chars\n//\n// https://source.chromium.org/chromium/chromium/src/+/main:v8/include/v8-primitive.h;drc=cb88fe94d9044d860cc75c89e1bc270ab4062702;l=125\n//\n// We'll be conservative and feed in 2^27 bytes at a time (~134M chars\n// assuming utf-8 encoding)\nlet TEXT_FILE_CHUNK_SIZE = 1 << 27\n\nexport async function withMockedFileChunkSizeForTests(chunkSize: number, cb: () => any) {\n const original = TEXT_FILE_CHUNK_SIZE\n TEXT_FILE_CHUNK_SIZE = chunkSize\n try {\n await cb()\n } finally {\n TEXT_FILE_CHUNK_SIZE = original\n }\n}\n\nfunction permissivelyParseJSONString(content: string) {\n // This code is similar to the code from here:\n // https://github.com/catapult-project/catapult/blob/27e047e0494df162022be6aa8a8862742a270232/tracing/tracing/extras/importer/trace_event_importer.html#L197-L208\n //\n // If the event data begins with a [, then we know it should end with a ]. The\n // reason we check for this is because some tracing implementations cannot\n // guarantee that a ']' gets written to the trace file. So, we are forgiving\n // and if this is obviously the case, we fix it up before throwing the string\n // at JSON.parse.\n content = content.trim()\n if (content[0] === '[') {\n content = content.replace(/,\\s*$/, '')\n if (content[content.length - 1] !== ']') {\n content += ']'\n }\n }\n return JSON.parse(content)\n}\n\nfunction permissivelyParseJSONUint8Array(byteArray: Uint8Array) {\n let indexOfFirstNonWhitespaceChar = 0\n for (let i = 0; i < byteArray.length; i++) {\n if (!/\\s/.exec(String.fromCharCode(byteArray[i]))) {\n indexOfFirstNonWhitespaceChar = i\n break\n }\n }\n if (\n byteArray[indexOfFirstNonWhitespaceChar] === '['.charCodeAt(0) &&\n byteArray[byteArray.length - 1] !== ']'.charCodeAt(0)\n ) {\n // Strip trailing whitespace from the end of the array\n let trimmedLength = byteArray.length\n while (trimmedLength > 0 && /\\s/.exec(String.fromCharCode(byteArray[trimmedLength - 1]))) {\n trimmedLength--\n }\n\n // Ignore trailing comma\n if (String.fromCharCode(byteArray[trimmedLength - 1]) === ',') {\n trimmedLength--\n }\n\n if (String.fromCharCode(byteArray[trimmedLength - 1]) !== ']') {\n // Clone the array, ignoring any whitespace & trailing comma, then append a ']'\n //\n // Note: We could save a tiny bit of space here by avoiding copying the\n // leading whitespace, but it's a trivial perf boost and it complicates\n // the code.\n const newByteArray = new Uint8Array(trimmedLength + 1)\n newByteArray.set(byteArray.subarray(0, trimmedLength))\n newByteArray[trimmedLength] = ']'.charCodeAt(0)\n byteArray = newByteArray\n }\n }\n return JSON_parse(byteArray)\n}\n\nexport class BufferBackedTextFileContent implements TextFileContent {\n private chunks: string[] = []\n private byteArray: Uint8Array\n\n constructor(buffer: ArrayBuffer) {\n const byteArray = (this.byteArray = new Uint8Array(buffer))\n\n let encoding: string = 'utf-8'\n if (byteArray.length > 2) {\n if (byteArray[0] === 0xff && byteArray[1] === 0xfe) {\n // UTF-16, Little Endian encoding\n encoding = 'utf-16le'\n } else if (byteArray[0] === 0xfe && byteArray[1] === 0xff) {\n // UTF-16, Big Endian encoding\n encoding = 'utf-16be'\n }\n }\n\n if (typeof TextDecoder !== 'undefined') {\n // If TextDecoder is available, we'll try to use it to decode the string.\n const decoder = new TextDecoder(encoding)\n\n for (let chunkNum = 0; chunkNum < buffer.byteLength / TEXT_FILE_CHUNK_SIZE; chunkNum++) {\n const offset = chunkNum * TEXT_FILE_CHUNK_SIZE\n const view = new Uint8Array(\n buffer,\n offset,\n Math.min(buffer.byteLength - offset, TEXT_FILE_CHUNK_SIZE),\n )\n const chunk = decoder.decode(view, {stream: true})\n this.chunks.push(chunk)\n }\n } else {\n // JavaScript strings are UTF-16 encoded, but we're reading data from disk\n // that we're going to blindly assume it's ASCII encoded. This codepath\n // only exists for older browser support.\n\n console.warn('This browser does not support TextDecoder. Decoding text as ASCII.')\n this.chunks.push('')\n for (let i = 0; i < byteArray.length; i++) {\n this.chunks[this.chunks.length - 1] += String.fromCharCode(byteArray[i])\n ;(this.chunks[this.chunks.length - 1] as any) | 0 // This forces the string to be flattened\n\n if (this.chunks[this.chunks.length - 1].length >= TEXT_FILE_CHUNK_SIZE) {\n this.chunks.push('')\n }\n }\n }\n }\n\n splitLines(): string[] {\n let parts: string[] = this.chunks[0].split('\\n')\n for (let i = 1; i < this.chunks.length; i++) {\n const chunkParts = this.chunks[i].split('\\n')\n if (chunkParts.length === 0) continue\n if (parts.length > 0) {\n parts[parts.length - 1] += chunkParts.shift()\n }\n parts = parts.concat(chunkParts)\n }\n return parts\n }\n\n firstChunk(): string {\n return this.chunks[0] || ''\n }\n\n parseAsJSON(): any {\n // We only use the Uint8Array version of JSON.parse when necessary, because\n // it's around 4x slower than native.\n if (this.chunks.length === 1) {\n return permissivelyParseJSONString(this.chunks[0])\n }\n return permissivelyParseJSONUint8Array(this.byteArray)\n }\n}\n\nexport class StringBackedTextFileContent implements TextFileContent {\n constructor(private s: string) {}\n\n splitLines(): string[] {\n return this.s.split('\\n')\n }\n\n firstChunk(): string {\n return this.s\n }\n\n parseAsJSON(): any {\n return permissivelyParseJSONString(this.s)\n }\n}\n\nexport class TextProfileDataSource implements ProfileDataSource {\n constructor(private fileName: string, private contents: string) {}\n async name() {\n return this.fileName\n }\n\n async readAsArrayBuffer() {\n return new ArrayBuffer(0)\n }\n\n async readAsText() {\n return new StringBackedTextFileContent(this.contents)\n }\n}\n\nexport class MaybeCompressedDataReader implements ProfileDataSource {\n private uncompressedData: Promise\n\n constructor(\n private namePromise: Promise,\n maybeCompressedDataPromise: Promise,\n ) {\n this.uncompressedData = maybeCompressedDataPromise.then(async (fileData: ArrayBuffer) => {\n try {\n const result = pako.inflate(new Uint8Array(fileData)).buffer\n return result\n } catch (e) {\n return fileData\n }\n })\n }\n\n async name(): Promise {\n return await this.namePromise\n }\n\n async readAsArrayBuffer(): Promise {\n return await this.uncompressedData\n }\n\n async readAsText(): Promise {\n const buffer = await this.readAsArrayBuffer()\n return new BufferBackedTextFileContent(buffer)\n }\n\n static fromFile(file: File): MaybeCompressedDataReader {\n const maybeCompressedDataPromise: Promise = new Promise(resolve => {\n const reader = new FileReader()\n reader.addEventListener('loadend', () => {\n if (!(reader.result instanceof ArrayBuffer)) {\n throw new Error('Expected reader.result to be an instance of ArrayBuffer')\n }\n resolve(reader.result)\n })\n reader.readAsArrayBuffer(file)\n })\n\n return new MaybeCompressedDataReader(Promise.resolve(file.name), maybeCompressedDataPromise)\n }\n\n static fromArrayBuffer(name: string, buffer: ArrayBuffer): MaybeCompressedDataReader {\n return new MaybeCompressedDataReader(Promise.resolve(name), Promise.resolve(buffer))\n }\n}\n","// This file contains methods to import data from OS X Instruments.app\n// https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/index.html\n\nimport {\n Profile,\n FrameInfo,\n CallTreeProfileBuilder,\n StackListProfileBuilder,\n ProfileGroup,\n} from '../lib/profile'\nimport {sortBy, getOrThrow, getOrInsert, lastOf, getOrElse, zeroPad} from '../lib/utils'\nimport {ByteFormatter, TimeFormatter} from '../lib/value-formatters'\nimport {FileSystemDirectoryEntry, FileSystemEntry, FileSystemFileEntry} from './file-system-entry'\nimport {MaybeCompressedDataReader, TextFileContent} from './utils'\n\nfunction parseTSV(contents: TextFileContent): T[] {\n const lines = contents.splitLines().map(l => l.split('\\t'))\n\n const headerLine = lines.shift()\n if (!headerLine) return []\n\n const indexToField = new Map()\n for (let i = 0; i < headerLine.length; i++) {\n indexToField.set(i, headerLine[i])\n }\n\n const ret: T[] = []\n for (let line of lines) {\n const row = {} as T\n for (let i = 0; i < line.length; i++) {\n ;(row as any)[indexToField.get(i)!] = line[i]\n }\n ret.push(row)\n }\n return ret\n}\n\ninterface PastedTimeProfileRow {\n Weight?: string\n 'Source Path'?: string\n 'Symbol Name'?: string\n}\n\ninterface PastedAllocationsProfileRow {\n 'Bytes Used'?: string\n 'Source Path'?: string\n 'Symbol Name'?: string\n}\n\ninterface FrameInfoWithWeight extends FrameInfo {\n endValue: number\n}\n\nfunction getWeight(deepCopyRow: any): number {\n if ('Bytes Used' in deepCopyRow) {\n const bytesUsedString = deepCopyRow['Bytes Used']\n const parts = /\\s*(\\d+(?:[.]\\d+)?) (\\w+)\\s+(?:\\d+(?:[.]\\d+))%/.exec(bytesUsedString)\n if (!parts) return 0\n const value = parseInt(parts[1], 10)\n const units = parts[2]\n\n switch (units) {\n case 'Bytes':\n return value\n case 'KB':\n return 1024 * value\n case 'MB':\n return 1024 * 1024 * value\n case 'GB':\n return 1024 * 1024 * 1024 * value\n }\n throw new Error(`Unrecognized units ${units}`)\n }\n\n if ('Weight' in deepCopyRow || 'Running Time' in deepCopyRow) {\n const weightString = deepCopyRow['Weight'] || deepCopyRow['Running Time']\n const parts = /\\s*(\\d+(?:[.]\\d+)?) ?(\\w+)\\s+(?:\\d+(?:[.]\\d+))%/.exec(weightString)\n if (!parts) return 0\n const value = parseInt(parts[1], 10)\n const units = parts[2]\n\n switch (units) {\n case 'ms':\n return value\n case 's':\n return 1000 * value\n case 'min':\n return 60 * 1000 * value\n\n case 'cycles':\n return value\n case 'Kc':\n return 1000 * value\n case 'Mc':\n return 1000 * 1000 * value\n case 'Gc':\n return 1000 * 1000 * 1000 * value\n }\n throw new Error(`Unrecognized units ${units}`)\n }\n\n return -1\n}\n\n// Import from a deep copy made of a profile\nexport function importFromInstrumentsDeepCopy(contents: TextFileContent): Profile {\n const profile = new CallTreeProfileBuilder()\n const rows = parseTSV(contents)\n\n const stack: FrameInfoWithWeight[] = []\n let cumulativeValue: number = 0\n\n for (let row of rows) {\n const symbolName = row['Symbol Name']\n if (!symbolName) continue\n const trimmedSymbolName = symbolName.trim()\n let stackDepth = symbolName.length - trimmedSymbolName.length\n\n if (stack.length - stackDepth < 0) {\n throw new Error('Invalid format')\n }\n\n let framesToLeave: FrameInfoWithWeight[] = []\n\n while (stackDepth < stack.length) {\n const stackTop = stack.pop()!\n framesToLeave.push(stackTop)\n }\n\n for (let frameToLeave of framesToLeave) {\n cumulativeValue = Math.max(cumulativeValue, frameToLeave.endValue)\n profile.leaveFrame(frameToLeave, cumulativeValue)\n }\n\n const newFrameInfo: FrameInfoWithWeight = {\n key: `${row['Source Path'] || ''}:${trimmedSymbolName}`,\n name: trimmedSymbolName,\n file: row['Source Path'],\n endValue: cumulativeValue + getWeight(row),\n }\n\n profile.enterFrame(newFrameInfo, cumulativeValue)\n stack.push(newFrameInfo)\n }\n\n while (stack.length > 0) {\n const frameToLeave = stack.pop()!\n cumulativeValue = Math.max(cumulativeValue, frameToLeave.endValue)\n profile.leaveFrame(frameToLeave, cumulativeValue)\n }\n\n if ('Bytes Used' in rows[0]) {\n profile.setValueFormatter(new ByteFormatter())\n } else if ('Weight' in rows[0] || 'Running Time' in rows[0]) {\n profile.setValueFormatter(new TimeFormatter('milliseconds'))\n }\n\n return profile.build()\n}\n\ninterface TraceDirectoryTree {\n name: string\n files: Map\n subdirectories: Map\n}\n\nasync function extractDirectoryTree(entry: FileSystemDirectoryEntry): Promise {\n const node: TraceDirectoryTree = {\n name: entry.name,\n files: new Map(),\n subdirectories: new Map(),\n }\n\n const children = await new Promise((resolve, reject) => {\n entry.createReader().readEntries((entries: any[]) => {\n resolve(entries)\n }, reject)\n })\n\n for (let child of children) {\n if (child.isDirectory) {\n const subtree = await extractDirectoryTree(child as FileSystemDirectoryEntry)\n node.subdirectories.set(subtree.name, subtree)\n } else {\n const file = await new Promise((resolve, reject) => {\n ;(child as FileSystemFileEntry).file(resolve, reject)\n })\n node.files.set(file.name, file)\n }\n }\n\n return node\n}\n\nfunction readAsArrayBuffer(file: File): Promise {\n return MaybeCompressedDataReader.fromFile(file).readAsArrayBuffer()\n}\n\nfunction readAsText(file: File): Promise {\n return MaybeCompressedDataReader.fromFile(file).readAsText()\n}\n\nfunction getCoreDirForRun(tree: TraceDirectoryTree, selectedRun: number): TraceDirectoryTree {\n const corespace = getOrThrow(tree.subdirectories, 'corespace')\n const corespaceRunDir = getOrThrow(corespace.subdirectories, `run${selectedRun}`)\n return getOrThrow(corespaceRunDir.subdirectories, 'core')\n}\n\nclass BinReader {\n private bytePos: number = 0\n private view: DataView\n constructor(buffer: ArrayBuffer) {\n this.view = new DataView(buffer)\n }\n seek(pos: number) {\n this.bytePos = pos\n }\n skip(byteCount: number) {\n this.bytePos += byteCount\n }\n hasMore() {\n return this.bytePos < this.view.byteLength\n }\n bytesLeft() {\n return this.view.byteLength - this.bytePos\n }\n readUint8() {\n this.bytePos++\n if (this.bytePos > this.view.byteLength) return 0\n return this.view.getUint8(this.bytePos - 1)\n }\n\n // Note: we intentionally use Math.pow here rather than bit shifts\n // because JavaScript doesn't have true 64 bit integers.\n readUint32() {\n this.bytePos += 4\n if (this.bytePos > this.view.byteLength) return 0\n return this.view.getUint32(this.bytePos - 4, true)\n }\n readUint48() {\n this.bytePos += 6\n if (this.bytePos > this.view.byteLength) return 0\n\n return (\n this.view.getUint32(this.bytePos - 6, true) +\n this.view.getUint16(this.bytePos - 2, true) * Math.pow(2, 32)\n )\n }\n readUint64() {\n this.bytePos += 8\n if (this.bytePos > this.view.byteLength) return 0\n return (\n this.view.getUint32(this.bytePos - 8, true) +\n this.view.getUint32(this.bytePos - 4, true) * Math.pow(2, 32)\n )\n }\n}\n\ninterface Sample {\n timestamp: number\n threadID: number\n backtraceID: number\n}\n\nasync function getRawSampleList(core: TraceDirectoryTree): Promise {\n const stores = getOrThrow(core.subdirectories, 'stores')\n for (let storedir of stores.subdirectories.values()) {\n const schemaFile = storedir.files.get('schema.xml')\n if (!schemaFile) continue\n const schema = await readAsText(schemaFile)\n if (!/name=\"time-profile\"/.exec(schema.firstChunk())) {\n continue\n }\n const bulkstore = new BinReader(\n await readAsArrayBuffer(getOrThrow(storedir.files, 'bulkstore')),\n )\n // Ignore the first 3 words\n bulkstore.readUint32()\n bulkstore.readUint32()\n bulkstore.readUint32()\n const headerSize = bulkstore.readUint32()\n const bytesPerEntry = bulkstore.readUint32()\n\n bulkstore.seek(headerSize)\n\n const samples: Sample[] = []\n while (true) {\n // Schema as of Instruments 8.3.3 is a 6 byte timestamp, followed by a bunch\n // of stuff we don't care about, followed by a 4 byte backtrace ID\n const timestamp = bulkstore.readUint48()\n if (timestamp === 0) break\n\n const threadID = bulkstore.readUint32()\n\n bulkstore.skip(bytesPerEntry - 6 - 4 - 4)\n const backtraceID = bulkstore.readUint32()\n samples.push({timestamp, threadID, backtraceID})\n }\n return samples\n }\n throw new Error('Could not find sample list')\n}\n\nasync function getIntegerArrays(samples: Sample[], core: TraceDirectoryTree): Promise {\n const uniquing = getOrThrow(core.subdirectories, 'uniquing')\n const arrayUniquer = getOrThrow(uniquing.subdirectories, 'arrayUniquer')\n const integeruniquerindex = getOrThrow(arrayUniquer.files, 'integeruniquer.index')\n const integeruniquerdata = getOrThrow(arrayUniquer.files, 'integeruniquer.data')\n\n // integeruniquer.index is a binary file containing an array of [byte offset, MB offset] pairs\n // that indicate where array data starts in the .data file\n\n // integeruniquer.data is a binary file containing an array of arrays of 64 bit integer.\n // The schema is a 32 byte header followed by a stream of arrays.\n // Each array consists of a 4 byte size N followed by N 8 byte little endian integers\n\n // This table contains the memory addresses of stack frames\n\n const indexreader = new BinReader(await readAsArrayBuffer(integeruniquerindex))\n const datareader = new BinReader(await readAsArrayBuffer(integeruniquerdata))\n\n // Header we don't care about\n indexreader.seek(32)\n\n let arrays: number[][] = []\n\n while (indexreader.hasMore()) {\n const byteOffset = indexreader.readUint32() + indexreader.readUint32() * (1024 * 1024)\n\n if (byteOffset === 0) {\n // The first entry in the index table seems to just indicate the offset of\n // the header into the data file\n continue\n }\n\n datareader.seek(byteOffset)\n\n let length = datareader.readUint32()\n let array: number[] = []\n\n while (length--) {\n array.push(datareader.readUint64())\n }\n arrays.push(array)\n }\n\n return arrays\n}\n\ninterface SymbolInfo {\n symbolName: string | null\n sourcePath: string | null\n addressToLine: Map\n}\n\ninterface FormTemplateRunData {\n number: number\n addressToFrameMap: Map\n}\n\ninterface FormTemplateData {\n version: number\n selectedRunNumber: number\n instrument: string\n runs: FormTemplateRunData[]\n}\n\nasync function readFormTemplate(tree: TraceDirectoryTree): Promise {\n const formTemplate = getOrThrow(tree.files, 'form.template')\n const archive = readInstrumentsKeyedArchive(await readAsArrayBuffer(formTemplate))\n\n const version = archive['com.apple.xray.owner.template.version']\n let selectedRunNumber = 1\n if ('com.apple.xray.owner.template' in archive) {\n selectedRunNumber = archive['com.apple.xray.owner.template'].get('_selectedRunNumber')\n }\n let instrument = archive['$1']\n if ('stubInfoByUUID' in archive) {\n instrument = Array.from(archive['stubInfoByUUID'].keys())[0]\n }\n const allRunData = archive['com.apple.xray.run.data']\n\n const runs: FormTemplateRunData[] = []\n for (let runNumber of allRunData.runNumbers) {\n const runData = getOrThrow>(allRunData.runData, runNumber)\n\n const symbolsByPid = getOrThrow>(\n runData,\n 'symbolsByPid',\n )\n\n const addressToFrameMap = new Map()\n\n // TODO(jlfwong): Deal with profiles with conflicting addresses?\n for (let symbols of symbolsByPid.values()) {\n for (let symbol of symbols.symbols) {\n if (!symbol) continue\n const {sourcePath, symbolName, addressToLine} = symbol\n for (let address of addressToLine.keys()) {\n getOrInsert(addressToFrameMap, address, () => {\n const name = symbolName || `0x${zeroPad(address.toString(16), 16)}`\n const frame: FrameInfo = {\n key: `${sourcePath}:${name}`,\n name: name,\n }\n if (sourcePath) {\n frame.file = sourcePath\n }\n return frame\n })\n }\n }\n\n runs.push({\n number: runNumber,\n addressToFrameMap,\n })\n }\n }\n\n return {\n version,\n instrument,\n selectedRunNumber,\n runs,\n }\n}\n\n// Import from a .trace file saved from Mac Instruments.app\nexport async function importFromInstrumentsTrace(\n entry: FileSystemDirectoryEntry,\n): Promise {\n const tree = await extractDirectoryTree(entry)\n\n const {version, runs, instrument, selectedRunNumber} = await readFormTemplate(tree)\n if (instrument !== 'com.apple.xray.instrument-type.coresampler2') {\n throw new Error(\n `The only supported instrument from .trace import is \"com.apple.xray.instrument-type.coresampler2\". Got ${instrument}`,\n )\n }\n console.log('version: ', version)\n console.log(`Importing time profile`)\n\n const profiles: Profile[] = []\n let indexToView = 0\n\n for (let run of runs) {\n const {addressToFrameMap, number} = run\n const group = await importRunFromInstrumentsTrace({\n fileName: entry.name,\n tree,\n addressToFrameMap,\n runNumber: number,\n })\n\n if (run.number === selectedRunNumber) {\n indexToView = profiles.length + group.indexToView\n }\n\n profiles.push(...group.profiles)\n }\n\n return {name: entry.name, indexToView, profiles}\n}\n\nexport async function importRunFromInstrumentsTrace(args: {\n fileName: string\n tree: TraceDirectoryTree\n addressToFrameMap: Map\n runNumber: number\n}): Promise {\n const {fileName, tree, addressToFrameMap, runNumber} = args\n const core = getCoreDirForRun(tree, runNumber)\n let samples = await getRawSampleList(core)\n const arrays = await getIntegerArrays(samples, core)\n\n // We'll try to guess which thread is the main thread by assuming\n // it's the one with the most samples.\n const sampleCountByThreadID = new Map()\n for (let sample of samples) {\n sampleCountByThreadID.set(\n sample.threadID,\n getOrElse(sampleCountByThreadID, sample.threadID, () => 0) + 1,\n )\n }\n const counts = Array.from(sampleCountByThreadID.entries())\n sortBy(counts, c => -c[1])\n const threadIDs = counts.map(c => c[0])\n\n return {\n name: fileName,\n indexToView: 0,\n profiles: threadIDs.map(threadID =>\n importThreadFromInstrumentsTrace({\n threadID,\n fileName,\n arrays,\n addressToFrameMap,\n samples,\n }),\n ),\n }\n}\n\nexport function importThreadFromInstrumentsTrace(args: {\n fileName: string\n addressToFrameMap: Map\n threadID: number\n arrays: number[][]\n samples: Sample[]\n}): Profile {\n let {fileName, addressToFrameMap, arrays, threadID, samples} = args\n\n const backtraceIDtoStack = new Map()\n samples = samples.filter(s => s.threadID === threadID)\n\n const profile = new StackListProfileBuilder(lastOf(samples)!.timestamp)\n profile.setName(`${fileName} - thread ${threadID}`)\n\n function appendRecursive(k: number, stack: FrameInfo[]) {\n const frame = addressToFrameMap.get(k)\n if (frame) {\n stack.push(frame)\n } else if (k in arrays) {\n for (let addr of arrays[k]) {\n appendRecursive(addr, stack)\n }\n } else {\n const rawAddressFrame: FrameInfo = {\n key: k,\n name: `0x${zeroPad(k.toString(16), 16)}`,\n }\n addressToFrameMap.set(k, rawAddressFrame)\n stack.push(rawAddressFrame)\n }\n }\n\n let lastTimestamp: null | number = null\n for (let sample of samples) {\n const stackForSample = getOrInsert(backtraceIDtoStack, sample.backtraceID, id => {\n const stack: FrameInfo[] = []\n appendRecursive(id, stack)\n stack.reverse()\n return stack\n })\n\n if (lastTimestamp === null) {\n // The first sample is sometimes fairly late in the profile for some reason.\n // We'll just say nothing was known to be on the stack in that time.\n profile.appendSampleWithWeight([], sample.timestamp)\n lastTimestamp = sample.timestamp\n }\n\n if (sample.timestamp < lastTimestamp) {\n throw new Error('Timestamps out of order!')\n }\n\n profile.appendSampleWithWeight(stackForSample, sample.timestamp - lastTimestamp)\n lastTimestamp = sample.timestamp\n }\n\n profile.setValueFormatter(new TimeFormatter('nanoseconds'))\n return profile.build()\n}\n\nexport function readInstrumentsKeyedArchive(buffer: ArrayBuffer): any {\n const byteArray = new Uint8Array(buffer)\n const parsedPlist = parseBinaryPlist(byteArray)\n const data = expandKeyedArchive(parsedPlist, ($classname, object) => {\n switch ($classname) {\n case 'NSTextStorage':\n case 'NSParagraphStyle':\n case 'NSFont':\n // Stuff that's irrelevant for constructing a flamegraph\n return null\n\n case 'PFTSymbolData': {\n const ret = Object.create(null)\n ret.symbolName = object.$0\n ret.sourcePath = object.$1\n ret.addressToLine = new Map()\n for (let i = 3; ; i += 2) {\n const address = object['$' + i]\n const line = object['$' + (i + 1)]\n if (address == null || line == null) {\n break\n }\n ret.addressToLine.set(address, line)\n }\n return ret\n }\n\n case 'PFTOwnerData': {\n const ret = Object.create(null)\n ret.ownerName = object.$0\n ret.ownerPath = object.$1\n return ret\n }\n\n case 'PFTPersistentSymbols': {\n const ret = Object.create(null)\n const symbolCount = object.$4\n\n ret.threadNames = object.$3\n ret.symbols = []\n for (let i = 1; i < symbolCount; i++) {\n ret.symbols.push(object['$' + (4 + i)])\n }\n return ret\n }\n\n case 'XRRunListData': {\n const ret = Object.create(null)\n ret.runNumbers = object.$0\n ret.runData = object.$1\n return ret\n }\n\n case 'XRIntKeyedDictionary': {\n const ret = new Map()\n const size = object.$0\n for (let i = 0; i < size; i++) {\n const key = object['$' + (1 + 2 * i)]\n const value = object['$' + (1 + (2 * i + 1))]\n ret.set(key, value)\n }\n return ret\n }\n\n case 'XRCore': {\n const ret = Object.create(null)\n ret.number = object.$0\n ret.name = object.$1\n return ret\n }\n }\n return object\n })\n return data\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport function decodeUTF8(bytes: Uint8Array): string {\n let text = String.fromCharCode.apply(String, Array.from(bytes))\n if (text.slice(-1) === '\\0') text = text.slice(0, -1) // Remove a single trailing null character if present\n return decodeURIComponent(escape(text))\n}\n\nfunction isArray(value: any): boolean {\n return value instanceof Array\n}\n\nfunction isDictionary(value: any): boolean {\n return value !== null && typeof value === 'object' && Object.getPrototypeOf(value) === null\n}\n\nfunction followUID(objects: any[], value: any): any {\n return value instanceof UID ? objects[value.index] : value\n}\n\nfunction expandKeyedArchive(\n root: any,\n interpretClass: ($classname: string, obj: any) => any = x => x,\n): any {\n // Sanity checks\n if (\n root.$version !== 100000 ||\n root.$archiver !== 'NSKeyedArchiver' ||\n !isDictionary(root.$top) ||\n !isArray(root.$objects)\n ) {\n throw new Error('Invalid keyed archive')\n }\n\n // Substitute NSNull\n if (root.$objects[0] === '$null') {\n root.$objects[0] = null\n }\n\n // Pattern-match Objective-C constructs\n for (let i = 0; i < root.$objects.length; i++) {\n root.$objects[i] = paternMatchObjectiveC(root.$objects, root.$objects[i], interpretClass)\n }\n\n // Reconstruct the DAG from the parse tree\n let visit = (object: any) => {\n if (object instanceof UID) {\n return root.$objects[object.index]\n } else if (isArray(object)) {\n for (let i = 0; i < object.length; i++) {\n object[i] = visit(object[i])\n }\n } else if (isDictionary(object)) {\n for (let key in object) {\n object[key] = visit(object[key])\n }\n } else if (object instanceof Map) {\n const clone = new Map(object)\n object.clear()\n for (let [k, v] of clone.entries()) {\n object.set(visit(k), visit(v))\n }\n }\n return object\n }\n for (let i = 0; i < root.$objects.length; i++) {\n visit(root.$objects[i])\n }\n return visit(root.$top)\n}\n\nfunction paternMatchObjectiveC(\n objects: any[],\n value: any,\n interpretClass: ($classname: string, obj: any) => any = x => x,\n): any {\n if (isDictionary(value) && value.$class) {\n let name = followUID(objects, value.$class).$classname\n switch (name) {\n case 'NSDecimalNumberPlaceholder': {\n let length: number = value['NS.length']\n let exponent: number = value['NS.exponent']\n let byteOrder: number = value['NS.mantissa.bo']\n let negative: boolean = value['NS.negative']\n let mantissa = new Uint16Array(new Uint8Array(value['NS.mantissa']).buffer)\n let decimal = 0\n\n for (let i = 0; i < length; i++) {\n let digit = mantissa[i]\n\n if (byteOrder !== 1) {\n // I assume this is how this works but I am unable to test it\n digit = ((digit & 0xff00) >> 8) | ((digit & 0x00ff) << 8)\n }\n\n decimal += digit * Math.pow(65536, i)\n }\n\n decimal *= Math.pow(10, exponent)\n return negative ? -decimal : decimal\n }\n\n // Replace NSData with a Uint8Array\n case 'NSData':\n case 'NSMutableData':\n return value['NS.bytes'] || value['NS.data']\n\n // Replace NSString with a string\n case 'NSString':\n case 'NSMutableString':\n if (value['NS.string']) return value['NS.string']\n if (value['NS.bytes']) return decodeUTF8(value['NS.bytes'])\n console.warn(`Unexpected ${name} format: `, value)\n return null\n\n // Replace NSArray with an Array\n case 'NSArray':\n case 'NSMutableArray':\n if ('NS.objects' in value) {\n return value['NS.objects']\n }\n let array: any[] = []\n while (true) {\n let object = 'NS.object.' + array.length\n if (!(object in value)) {\n break\n }\n array.push(value[object])\n }\n return array\n\n case '_NSKeyedCoderOldStyleArray': {\n const count = value['NS.count']\n\n // const size = value['NS.size']\n // Types are encoded as single printable characters.\n // See: https://github.com/apple/swift-corelibs-foundation/blob/76995e8d3d8c10f3f3ec344dace43426ab941d0e/Foundation/NSObjCRuntime.swift#L19\n // const type = String.fromCharCode(value['NS.type'])\n\n let array: any[] = []\n for (let i = 0; i < count; i++) {\n const element = value['$' + i]\n array.push(element)\n }\n return array\n }\n\n case 'NSDictionary':\n case 'NSMutableDictionary':\n let map = new Map()\n if ('NS.keys' in value && 'NS.objects' in value) {\n for (let i = 0; i < value['NS.keys'].length; i++) {\n map.set(value['NS.keys'][i], value['NS.objects'][i])\n }\n } else {\n while (true) {\n let key = 'NS.key.' + map.size\n let object = 'NS.object.' + map.size\n if (!(key in value) || !(object in value)) {\n break\n }\n map.set(value[key], value[object])\n }\n }\n return map\n\n default:\n const converted = interpretClass(name, value)\n if (converted !== value) return converted\n }\n }\n return value\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport class UID {\n constructor(public index: number) {}\n}\n\nfunction parseBinaryPlist(bytes: Uint8Array): any {\n let text = 'bplist00'\n for (let i = 0; i < 8; i++) {\n if (bytes[i] !== text.charCodeAt(i)) {\n throw new Error('File is not a binary plist')\n }\n }\n return new BinaryPlistParser(\n new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength),\n ).parseRoot()\n}\n\ninterface LengthAndOffset {\n length: number\n offset: number\n}\n\n// See http://opensource.apple.com/source/CF/CF-550/CFBinaryPList.c for details\nclass BinaryPlistParser {\n referenceSize = 0\n objects: number[] = []\n offsetTable: number[] = []\n\n constructor(public view: DataView) {}\n\n parseRoot(): any {\n let trailer = this.view.byteLength - 32\n let offsetSize = this.view.getUint8(trailer + 6)\n this.referenceSize = this.view.getUint8(trailer + 7)\n\n // Just use the last 32-bits of these 64-bit big-endian values\n let objectCount = this.view.getUint32(trailer + 12, false)\n let rootIndex = this.view.getUint32(trailer + 20, false)\n let tableOffset = this.view.getUint32(trailer + 28, false)\n\n // Parse all offsets before starting to parse objects\n for (let i = 0; i < objectCount; i++) {\n this.offsetTable.push(this.parseInteger(tableOffset, offsetSize))\n tableOffset += offsetSize\n }\n\n // Parse the root object assuming the graph is a tree\n return this.parseObject(this.offsetTable[rootIndex])\n }\n\n parseLengthAndOffset(offset: number, extra: number): LengthAndOffset {\n if (extra !== 0x0f) return {length: extra, offset: 0}\n let marker = this.view.getUint8(offset++)\n if ((marker & 0xf0) !== 0x10)\n throw new Error('Unexpected non-integer length at offset ' + offset)\n let size = 1 << (marker & 0x0f)\n return {length: this.parseInteger(offset, size), offset: size + 1}\n }\n\n parseSingleton(offset: number, extra: number): any {\n if (extra === 0) return null\n if (extra === 8) return false\n if (extra === 9) return true\n throw new Error('Unexpected extra value ' + extra + ' at offset ' + offset)\n }\n\n parseInteger(offset: number, size: number): number {\n if (size === 1) return this.view.getUint8(offset)\n if (size === 2) return this.view.getUint16(offset, false)\n if (size === 4) return this.view.getUint32(offset, false)\n\n if (size === 8) {\n return (\n Math.pow(2, 32 * 1) * this.view.getUint32(offset + 0, false) +\n Math.pow(2, 32 * 0) * this.view.getUint32(offset + 4, false)\n )\n }\n\n if (size === 16) {\n return (\n Math.pow(2, 32 * 3) * this.view.getUint32(offset + 0, false) +\n Math.pow(2, 32 * 2) * this.view.getUint32(offset + 4, false) +\n Math.pow(2, 32 * 1) * this.view.getUint32(offset + 8, false) +\n Math.pow(2, 32 * 0) * this.view.getUint32(offset + 12, false)\n )\n }\n\n throw new Error('Unexpected integer of size ' + size + ' at offset ' + offset)\n }\n\n parseFloat(offset: number, size: number): number {\n if (size === 4) return this.view.getFloat32(offset, false)\n if (size === 8) return this.view.getFloat64(offset, false)\n throw new Error('Unexpected float of size ' + size + ' at offset ' + offset)\n }\n\n parseDate(offset: number, size: number): Date {\n if (size !== 8) throw new Error('Unexpected date of size ' + size + ' at offset ' + offset)\n let seconds = this.view.getFloat64(offset, false)\n return new Date(978307200000 + seconds * 1000) // Starts from January 1st, 2001\n }\n\n parseData(offset: number, extra: number): Uint8Array {\n let both = this.parseLengthAndOffset(offset, extra)\n return new Uint8Array(this.view.buffer, offset + both.offset, both.length)\n }\n\n parseStringASCII(offset: number, extra: number): string {\n let both = this.parseLengthAndOffset(offset, extra)\n let text = ''\n offset += both.offset\n for (let i = 0; i < both.length; i++) {\n text += String.fromCharCode(this.view.getUint8(offset++))\n }\n return text\n }\n\n parseStringUTF16(offset: number, extra: number): string {\n let both = this.parseLengthAndOffset(offset, extra)\n let text = ''\n offset += both.offset\n for (let i = 0; i < both.length; i++) {\n text += String.fromCharCode(this.view.getUint16(offset, false))\n offset += 2\n }\n return text\n }\n\n parseUID(offset: number, size: number): UID {\n return new UID(this.parseInteger(offset, size))\n }\n\n parseArray(offset: number, extra: number): any[] {\n let both = this.parseLengthAndOffset(offset, extra)\n let array: any[] = []\n let size = this.referenceSize\n offset += both.offset\n for (let i = 0; i < both.length; i++) {\n array.push(this.parseObject(this.offsetTable[this.parseInteger(offset, size)]))\n offset += size\n }\n return array\n }\n\n parseDictionary(offset: number, extra: number): Object {\n let both = this.parseLengthAndOffset(offset, extra)\n let dictionary = Object.create(null)\n let size = this.referenceSize\n let nextKey = offset + both.offset\n let nextValue = nextKey + both.length * size\n for (let i = 0; i < both.length; i++) {\n let key = this.parseObject(this.offsetTable[this.parseInteger(nextKey, size)])\n let value = this.parseObject(this.offsetTable[this.parseInteger(nextValue, size)])\n if (typeof key !== 'string') throw new Error('Unexpected non-string key at offset ' + nextKey)\n dictionary[key] = value\n nextKey += size\n nextValue += size\n }\n return dictionary\n }\n\n parseObject(offset: number): any {\n let marker = this.view.getUint8(offset++)\n let extra = marker & 0x0f\n switch (marker >> 4) {\n case 0x0:\n return this.parseSingleton(offset, extra)\n case 0x1:\n return this.parseInteger(offset, 1 << extra)\n case 0x2:\n return this.parseFloat(offset, 1 << extra)\n case 0x3:\n return this.parseDate(offset, 1 << extra)\n case 0x4:\n return this.parseData(offset, extra)\n case 0x5:\n return this.parseStringASCII(offset, extra)\n case 0x6:\n return this.parseStringUTF16(offset, extra)\n case 0x8:\n return this.parseUID(offset, extra + 1)\n case 0xa:\n return this.parseArray(offset, extra)\n case 0xd:\n return this.parseDictionary(offset, extra)\n }\n throw new Error('Unexpected marker ' + marker + ' at offset ' + --offset)\n }\n}\n","// https://github.com/brendangregg/FlameGraph#2-fold-stacks\n\nimport {Profile, FrameInfo, StackListProfileBuilder} from '../lib/profile'\nimport {TextFileContent} from './utils'\n\ninterface BGSample {\n stack: FrameInfo[]\n duration: number\n}\n\nfunction parseBGFoldedStacks(contents: TextFileContent): BGSample[] {\n const samples: BGSample[] = []\n for (const line of contents.splitLines()) {\n const match = /^(.*) (\\d+)$/gm.exec(line)\n if (!match) continue\n const stack = match[1]\n const n = match[2]\n\n samples.push({\n stack: stack.split(';').map(name => ({key: name, name: name})),\n duration: parseInt(n, 10),\n })\n }\n\n return samples\n}\n\nexport function importFromBGFlameGraph(contents: TextFileContent): Profile | null {\n const parsed = parseBGFoldedStacks(contents)\n const duration = parsed.reduce((prev: number, cur: BGSample) => prev + cur.duration, 0)\n const profile = new StackListProfileBuilder(duration)\n if (parsed.length === 0) {\n return null\n }\n for (let sample of parsed) {\n profile.appendSampleWithWeight(sample.stack, sample.duration)\n }\n return profile.build()\n}\n","import {Profile, FrameInfo, CallTreeProfileBuilder} from '../lib/profile'\nimport {getOrInsert} from '../lib/utils'\nimport {TimeFormatter} from '../lib/value-formatters'\n\ninterface Allocations {\n frames: any[]\n sites: any[]\n sizes: any[]\n timestamps: any[]\n}\n\ninterface Configuration {\n allocationsMaxLogLength: number\n allocationsSampleProbability: number\n bufferSize: number\n sampleFrequency: number\n withAllocations: boolean\n withMarkers: boolean\n withMemory: boolean\n withTicks: boolean\n}\n\ninterface Lib {\n arch: string\n breakpadId: string\n debugName: string\n debugPath: string\n end: any\n name: string\n offset: number\n path: string\n start: any\n}\n\ninterface Meta {\n abi: string\n asyncstack: number\n debug: number\n gcpoison: number\n interval: number\n misc: string\n oscpu: string\n platform: string\n processType: number\n product: string\n shutdownTime?: any\n stackwalk: number\n startTime: number\n toolkit: string\n version: number\n}\n\ninterface PausedRange {\n endTime: number\n reason: string\n startTime: number\n}\n\ntype Frame = [number] | [number, number | null, number | null, number, number]\n\ninterface FrameTable {\n data: Frame[]\n /*\n schema: {\n location: 0\n implementation: 1\n optimizations: 2\n line: 3\n category: 4\n }\n */\n}\n\ninterface MarkerMeta {\n category: string\n interval: string\n type: string\n}\ntype Marker = [number, number] | [number, number, MarkerMeta]\n\ninterface Markers {\n data: Marker[]\n /*\n schema: {\n name: 0\n time: 1\n data: 2\n }\n */\n}\n\ntype Sample = [number, number, number] | [number, number, number, number, number]\n\ninterface Samples {\n data: Sample[]\n /*\n schema: {\n stack: 0\n time: 1\n responsiveness: 2\n rss: 3\n uss: 4\n }\n */\n}\n\nexport interface StackTable {\n data: [number | null, number][]\n /*\n schema: {\n prefix: 0\n frame: 1\n }\n */\n}\n\nexport interface Thread {\n frameTable: FrameTable\n markers: Markers\n name: string\n pid: number\n processType: string\n registerTime: number\n samples: Samples\n stackTable: StackTable\n stringTable: string[]\n tid: number\n unregisterTime?: any\n}\n\nexport interface FirefoxCPUProfile {\n libs: Lib[]\n meta: Meta\n pausedRanges: PausedRange[]\n processes: any[]\n threads: Thread[]\n}\n\nexport interface FirefoxProfile {\n allocations: Allocations\n configuration: Configuration\n duration: number\n fileType: string\n frames: any[]\n label: string\n markers: any[]\n memory: any[]\n profile: FirefoxCPUProfile\n ticks: any[]\n version: number\n}\n\nexport function importFromFirefox(firefoxProfile: FirefoxProfile): Profile {\n const cpuProfile = firefoxProfile.profile\n\n const thread =\n cpuProfile.threads.length === 1\n ? cpuProfile.threads[0]\n : cpuProfile.threads.filter(t => t.name === 'GeckoMain')[0]\n\n const frameKeyToFrameInfo = new Map()\n\n function extractStack(sample: Sample): FrameInfo[] {\n let stackFrameId: number | null = sample[0]\n const ret: number[] = []\n\n while (stackFrameId != null) {\n const nextStackFrame: [number | null, number] = thread.stackTable.data[stackFrameId]\n const [nextStackId, frameId] = nextStackFrame\n ret.push(frameId)\n stackFrameId = nextStackId\n }\n ret.reverse()\n return ret\n .map(f => {\n const frameData = thread.frameTable.data[f]\n const location = thread.stringTable[frameData[0]]\n\n const match = /(.*)\\s+\\((.*?)(?::(\\d+))?(?::(\\d+))?\\)$/.exec(location)\n\n if (!match) return null\n\n if (\n match[2].startsWith('resource:') ||\n match[2] === 'self-hosted' ||\n match[2].startsWith('self-hosted:')\n ) {\n // Ignore Firefox-internals stuff\n return null\n }\n\n return getOrInsert(frameKeyToFrameInfo, location, () => ({\n key: location,\n name: match[1]!,\n file: match[2]!,\n\n // In Firefox profiles, line numbers are 1-based, but columns are\n // 0-based. Let's normalize both to be 1-based.\n line: match[3] ? parseInt(match[3]) : undefined,\n col: match[4] ? parseInt(match[4]) + 1 : undefined,\n }))\n })\n .filter(f => f != null) as FrameInfo[]\n }\n\n const profile = new CallTreeProfileBuilder(firefoxProfile.duration)\n\n let prevStack: FrameInfo[] = []\n for (let sample of thread.samples.data) {\n const stack = extractStack(sample)\n const value = sample[1]\n\n // Find lowest common ancestor of the current stack and the previous one\n let lcaIndex = -1\n\n for (let i = 0; i < Math.min(stack.length, prevStack.length); i++) {\n if (prevStack[i] !== stack[i]) {\n break\n }\n lcaIndex = i\n }\n\n // Close frames that are no longer open\n for (let i = prevStack.length - 1; i > lcaIndex; i--) {\n profile.leaveFrame(prevStack[i], value)\n }\n\n for (let i = lcaIndex + 1; i < stack.length; i++) {\n profile.enterFrame(stack[i], value)\n }\n\n prevStack = stack\n }\n\n profile.setValueFormatter(new TimeFormatter('milliseconds'))\n return profile.build()\n}\n","import {Profile, FrameInfo, StackListProfileBuilder} from '../lib/profile'\nimport {getOrInsert, sortBy} from '../lib/utils'\nimport {TimeFormatter} from '../lib/value-formatters'\n\n// This imports profiles generated by a combination of the following commands:\n//\n// node --prof /path/to/my/script.js\n// node --prof-process -preprocess -j isolate*.log > profile.v8log.json\n\n// References:\n// - https://github.com/nodejs/node/blob/7edd0a17af8d74dce7dd6c7554a8b8523f83efdc/lib/internal/v8_prof_processor.js#L5\n// - https://github.com/nodejs/node/blob/7edd0a17af8d74dce7dd6c7554a8b8523f83efdc/deps/v8/tools/tickprocessor.js\n// - https://github.com/nodejs/node/blob/2db2857c72c219e5ba1642a345e52cfdd8c44a66/deps/v8/tools/logreader.js#L147\n// - https://github.com/mapbox/flamebearer/blob/a8d4d5c0061ed439660783c613c43ab28b751219/index.js#L53\n\ninterface Code {\n name: string\n type: 'CODE' | 'CPP' | 'JS' | 'SHARED_LIB'\n timestamp?: number\n kind?:\n | 'Bultin'\n | 'BytecodeHandler'\n | 'Handler'\n | 'KeyedLoadIC'\n | 'KeyedStoreIC'\n | 'LoadGlobalIC'\n | 'LoadIC'\n | 'Opt'\n | 'StoreIC'\n | 'Stub'\n | 'Unopt'\n | 'Builtin'\n | 'RegExp'\n func?: number\n tm?: number\n}\n\ninterface Function {\n name: string\n codes: number[]\n}\n\ninterface Tick {\n // Timestamp\n tm: number\n\n // Virtual machine state?\n vm: number\n\n // stack\n s: number[]\n}\n\ninterface V8LogProfile {\n code: Code[]\n functions: Function[]\n ticks: Tick[]\n}\n\nfunction codeToFrameInfo(code: Code, v8log: V8LogProfile): FrameInfo {\n if (!code || !code.type) {\n return {\n key: '(unknown type)',\n name: '(unknown type)',\n }\n }\n\n let name = code.name\n switch (code.type) {\n case 'CPP': {\n const matches = name.match(/[tT] ([^(<]*)/)\n if (matches) name = `(c++) ${matches[1]}`\n break\n }\n\n case 'SHARED_LIB':\n name = '(LIB) ' + name\n break\n\n case 'JS': {\n const matches = name.match(/([a-zA-Z0-9\\._\\-$]*) ([a-zA-Z0-9\\.\\-_\\/$]*):(\\d+):(\\d+)/)\n if (matches) {\n const file = matches[2]\n const line = parseInt(matches[3], 10)\n const col = parseInt(matches[4], 10)\n const functionName =\n matches[1].length > 0\n ? matches[1]\n : file\n ? `(anonymous ${file.split('/').pop()}:${line})`\n : '(anonymous)'\n return {\n key: name,\n name: functionName,\n file: file.length > 0 ? file : '(unknown file)',\n line,\n col,\n }\n }\n break\n }\n\n case 'CODE': {\n switch (code.kind) {\n case 'LoadIC':\n case 'StoreIC':\n case 'KeyedStoreIC':\n case 'KeyedLoadIC':\n case 'LoadGlobalIC':\n case 'Handler':\n name = '(IC) ' + name\n break\n\n case 'BytecodeHandler':\n name = '(bytecode) ~' + name\n break\n case 'Stub':\n name = '(stub) ' + name\n break\n case 'Builtin':\n name = '(builtin) ' + name\n break\n case 'RegExp':\n name = '(regexp) ' + name\n break\n }\n break\n }\n\n default: {\n name = `(${code.type}) ${name}`\n break\n }\n }\n\n return {key: name, name}\n}\n\nexport function importFromV8ProfLog(v8log: V8LogProfile): Profile {\n const profile = new StackListProfileBuilder()\n\n const sToFrameInfo = new Map()\n function getFrameInfo(t: number) {\n return getOrInsert(sToFrameInfo, t, t => {\n const code = v8log.code[t]\n return codeToFrameInfo(code, v8log)\n })\n }\n\n let lastTm = 0\n\n sortBy(v8log.ticks, tick => tick.tm)\n\n for (let tick of v8log.ticks) {\n const stack: FrameInfo[] = []\n\n // tick.s holds the call stack at the time the sample was taken. The\n // structure is a little strange -- it seems to be capturing both the\n // JavaScript stack & the parallel C++ stack by interleaving the two.\n // Because the stacks might not be the same length, it looks like the\n // shorter stack is padded with indices of -1, so we'll just ignore those\n // stacks.\n //\n // If you change the start index to `let i = tick.s.length - 1` instead,\n // you'll see the C++ stack instead.\n //\n // Mostly the numbers in the stack seem to be indices into the `v8log.code`\n // array, but some of the numbers in the C++ stack seem to be raw memory\n // addresses.\n\n for (let i = tick.s.length - 2; i >= 0; i -= 2) {\n const id = tick.s[i]\n\n if (id === -1) continue\n if (id > v8log.code.length) {\n // Treat this like a memory address\n stack.push({\n key: id,\n name: `0x${id.toString(16)}`,\n })\n continue\n }\n stack.push(getFrameInfo(id))\n }\n profile.appendSampleWithWeight(stack, tick.tm - lastTm)\n lastTm = tick.tm\n }\n\n // Despite the code in the v8 processing library indicating that the\n // timestamps come from a variable called \"time_ns\", from making empirical\n // recordings, it really seems like these profiles are recording timestamps in\n // microseconds, not nanoseconds.\n // https://github.com/nodejs/node/blob/c39caa997c751473d0c8f50af8c6b14bcd389fa0/deps/v8/tools/profile.js#L1076\n profile.setValueFormatter(new TimeFormatter('microseconds'))\n\n return profile.build()\n}\n","import {StackListProfileBuilder, ProfileGroup} from '../lib/profile'\nimport {itMap, getOrInsert} from '../lib/utils'\nimport {TimeFormatter} from '../lib/value-formatters'\nimport {TextFileContent} from './utils'\n\n// This imports the output of the \"perf script\" command on linux.\n//\n// Reference: https://github.com/torvalds/linux/blob/0fbc4aea/tools/perf/builtin-script.c#L1622\n// Reference: https://github.com/brendangregg/FlameGraph/blob/18c3dea/stackcollapse-perf.pl#L163\n\ninterface PerfStackFrame {\n address: string\n symbolName: string\n file: string\n}\n\ninterface PerfEvent {\n command: string | null\n processID: number | null\n threadID: number | null\n time: number | null\n eventType: string\n stack: PerfStackFrame[]\n}\n\nfunction parseEvent(rawEvent: string): PerfEvent | null {\n const lines = rawEvent.split('\\n').filter(l => !/^\\s*#/.exec(l))\n\n const event: PerfEvent = {\n command: null,\n processID: null,\n threadID: null,\n time: null,\n eventType: '',\n stack: [],\n }\n\n const firstLine = lines.shift()\n if (!firstLine) return null\n\n // Note: command name may contain spaces, e.g.\n //\n // V8 WorkerThread 25607 4794564.109216: cycles:\n const eventStartMatch = /^(\\S.+?)\\s+(\\d+)(?:\\/?(\\d+))?\\s+/.exec(firstLine)\n if (!eventStartMatch) return null\n\n event.command = eventStartMatch[1]\n\n // default \"perf script\" output has TID but not PID\n if (eventStartMatch[3]) {\n event.processID = parseInt(eventStartMatch[2], 10)\n event.threadID = parseInt(eventStartMatch[3], 10)\n } else {\n event.threadID = parseInt(eventStartMatch[2], 10)\n }\n\n const timeMatch = /\\s+(\\d+\\.\\d+):\\s+/.exec(firstLine)\n if (timeMatch) {\n event.time = parseFloat(timeMatch[1])\n }\n\n const evName = /(\\S+):\\s*$/.exec(firstLine)\n if (evName) {\n event.eventType = evName[1]\n }\n\n for (let line of lines) {\n const lineMatch = /^\\s*(\\w+)\\s*(.+) \\((\\S*)\\)/.exec(line)\n if (!lineMatch) continue\n let [, address, symbolName, file] = lineMatch\n\n // Linux 4.8 included symbol offsets in perf script output by default, eg:\n // 7fffb84c9afc cpu_startup_entry+0x800047c022ec ([kernel.kallsyms])\n // strip these off:\n symbolName = symbolName.replace(/\\+0x[\\da-f]+$/, '')\n\n event.stack.push({address: `0x${address}`, symbolName, file})\n }\n event.stack.reverse()\n\n return event\n}\n\nfunction splitBlocks(contents: TextFileContent): string[] {\n // In perf files, blocks are separated by '\\n\\n'. If our input was a simple\n // string, we could use str.split('\\n\\n'), but since we have a TextFileContent\n // object which may be backed by several strings, we can't easily split this\n // way.\n //\n // Instead, we'll split into lines, and then re-group runs of non-empty strings.\n const blocks: string[] = []\n let pending: string = ''\n for (let line of contents.splitLines()) {\n if (line === '') {\n if (pending.length > 0) {\n blocks.push(pending)\n }\n pending = line\n } else {\n if (pending.length > 0) {\n pending += '\\n'\n }\n pending += line\n }\n }\n if (pending.length > 0) {\n blocks.push(pending)\n }\n return blocks\n}\n\nexport function importFromLinuxPerf(contents: TextFileContent): ProfileGroup | null {\n const profiles = new Map()\n\n let eventType: string | null = null\n const events = splitBlocks(contents).map(parseEvent)\n\n for (let event of events) {\n if (event == null) continue\n if (eventType != null && eventType != event.eventType) continue\n if (event.time == null) continue\n eventType = event.eventType\n\n let profileNameParts = []\n if (event.command) profileNameParts.push(event.command)\n if (event.processID) profileNameParts.push(`pid: ${event.processID}`)\n if (event.threadID) profileNameParts.push(`tid: ${event.threadID}`)\n const profileName = profileNameParts.join(' ')\n const builderState = getOrInsert(profiles, profileName, () => {\n const builder = new StackListProfileBuilder()\n builder.setName(profileName)\n builder.setValueFormatter(new TimeFormatter('seconds'))\n return builder\n })\n\n const builder = builderState\n\n builder.appendSampleWithTimestamp(\n event.stack.map(({symbolName, file}) => {\n return {\n key: `${symbolName} (${file})`,\n name: symbolName === '[unknown]' ? `??? (${file})` : symbolName,\n file: file,\n }\n }),\n event.time!,\n )\n }\n\n if (profiles.size === 0) {\n return null\n }\n\n return {\n name: profiles.size === 1 ? Array.from(profiles.keys())[0] : '',\n indexToView: 0,\n profiles: Array.from(itMap(profiles.values(), builder => builder.build())),\n }\n}\n","import {ProfileGroup, FrameInfo, CallTreeProfileBuilder} from '../lib/profile'\nimport {TimeFormatter, ByteFormatter} from '../lib/value-formatters'\n\n// See https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html#json-profile-format\n// for information on the GHC profiler JSON output format.\n\ninterface CostCentre {\n id: number\n label: string\n module: string\n src_loc: string\n is_caf: boolean\n}\n\ninterface ProfileTree {\n id: number\n entries: number\n alloc: number\n ticks: number\n children: ProfileTree[]\n}\n\ninterface HaskellProfile {\n program: string\n arguments: string[]\n rts_arguments: string[]\n end_time: string\n initial_capabilities: number\n total_time: number\n total_ticks: number\n tick_interval: number\n total_alloc: number\n cost_centres: CostCentre[]\n profile: ProfileTree\n}\n\n// The profiler already collapses recursion before output so using the JS stack here should be fine\nfunction addToProfile(\n tree: ProfileTree,\n startVal: number,\n profile: CallTreeProfileBuilder,\n infos: Map,\n attribute: (tree: ProfileTree) => number,\n): number {\n // If the expression never did anything we don't care about it\n if (tree.ticks === 0 && tree.entries === 0 && tree.alloc === 0 && tree.children.length === 0)\n return startVal\n\n let curVal = startVal\n let frameInfo = infos.get(tree.id)!\n\n profile.enterFrame(frameInfo, curVal)\n\n for (let child of tree.children) {\n curVal = addToProfile(child, curVal, profile, infos, attribute)\n }\n\n curVal += attribute(tree)\n\n profile.leaveFrame(frameInfo, curVal)\n\n return curVal\n}\n\nexport function importFromHaskell(haskellProfile: HaskellProfile): ProfileGroup {\n const idToFrameInfo = new Map()\n for (let centre of haskellProfile.cost_centres) {\n const frameInfo: FrameInfo = {\n key: centre.id,\n name: `${centre.module}.${centre.label}`,\n }\n\n // Ignore things like and \n if (!centre.src_loc.startsWith('<')) {\n // This also contains line and column information, but sometimes it contains ranges,\n // and in varying formats, so it's a better experience just to leave it as is\n frameInfo.file = centre.src_loc\n }\n\n idToFrameInfo.set(centre.id, frameInfo)\n }\n\n const timeProfile = new CallTreeProfileBuilder(haskellProfile.total_ticks)\n addToProfile(haskellProfile.profile, 0, timeProfile, idToFrameInfo, tree => tree.ticks)\n timeProfile.setValueFormatter(new TimeFormatter('milliseconds'))\n timeProfile.setName(`${haskellProfile.program} time`)\n\n const allocProfile = new CallTreeProfileBuilder(haskellProfile.total_ticks)\n addToProfile(haskellProfile.profile, 0, allocProfile, idToFrameInfo, tree => tree.alloc)\n allocProfile.setValueFormatter(new ByteFormatter())\n allocProfile.setName(`${haskellProfile.program} allocation`)\n\n return {\n name: haskellProfile.program,\n indexToView: 0,\n profiles: [timeProfile.build(), allocProfile.build()],\n }\n}\n","import {Profile, FrameInfo, StackListProfileBuilder} from '../lib/profile'\nimport {TimeFormatter} from '../lib/value-formatters'\n\ninterface Record {\n type: string\n eventType?: string\n startTime?: number\n endTime?: number\n // timeline-record-type-cpu\n timestamp?: number\n usage?: number\n threads?: any[]\n // timeline-record-type-script\n details?: number | string | any\n extraDetails?: null | any\n // timeline-record-type-network\n archiveStartTime?: number\n entry?: any\n // timeline-record-type-layout\n quad?: number[]\n}\n\ninterface ExprLocation {\n line: number\n column: number\n}\n\ninterface StackFrame {\n sourceID: string\n name: string\n line: number\n column: number\n url: string\n expressionLocation?: ExprLocation\n}\n\ninterface Sample {\n timestamp: number\n stackFrames: StackFrame[]\n}\n\ninterface Recording {\n displayName: string\n startTime: number\n endTime: number\n discontinuities: any[]\n instrumentTypes: string[]\n records: Record[]\n markers: any[]\n memoryPressureEvents: any[]\n sampleStackTraces: Sample[]\n sampleDurations: number[]\n}\n\ninterface Overview {\n secondsPerPixel: number\n scrollStartTime: number\n selectionStartTime: number\n selectionDuration: number\n}\n\ninterface SafariProfile {\n version: number\n recording: Recording\n overview: Overview\n}\n\nfunction makeStack(frames: StackFrame[]): FrameInfo[] {\n return frames\n .map(({name, url, line, column}) => ({\n key: `${name}:${url}:${line}:${column}`,\n file: url,\n line,\n col: column,\n name: name || (url ? `(anonymous ${url.split('/').pop()}:${line})` : '(anonymous)'),\n }))\n .reverse()\n}\n\nexport function importFromSafari(contents: SafariProfile): Profile | null {\n if (contents.version !== 1) {\n console.warn(`Unknown Safari profile version ${contents.version}... Might be incompatible.`)\n }\n\n const {recording} = contents\n const {sampleStackTraces, sampleDurations} = recording\n\n const count = sampleStackTraces.length\n if (count < 1) {\n console.warn('Empty profile')\n return null\n }\n\n const profileDuration =\n sampleStackTraces[count - 1].timestamp - sampleStackTraces[0].timestamp + sampleDurations[0]\n const profile = new StackListProfileBuilder(profileDuration)\n\n let previousEndTime = Number.MAX_VALUE\n\n sampleStackTraces.forEach((sample, i) => {\n const endTime = sample.timestamp\n const duration = sampleDurations[i]\n const startTime = endTime - duration\n const idleDurationBefore = startTime - previousEndTime\n\n // FIXME: 2ms is a lot, but Safari's timestamps and durations don't line up very well and will create\n // phantom idle time\n if (idleDurationBefore > 0.002) {\n profile.appendSampleWithWeight([], idleDurationBefore)\n }\n\n profile.appendSampleWithWeight(makeStack(sample.stackFrames), duration)\n\n previousEndTime = endTime\n })\n\n profile.setValueFormatter(new TimeFormatter('seconds'))\n profile.setName(recording.displayName)\n return profile.build()\n}\n","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n // note that the casts below are theoretically unnecessary as of today, but older statically\r\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n /**\r\n * Low bits.\r\n * @type {number}\r\n */\r\n this.lo = lo >>> 0;\r\n\r\n /**\r\n * High bits.\r\n * @type {number}\r\n */\r\n this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n if (value === 0)\r\n return zero;\r\n var sign = value < 0;\r\n if (sign)\r\n value = -value;\r\n var lo = value >>> 0,\r\n hi = (value - lo) / 4294967296 >>> 0;\r\n if (sign) {\r\n hi = ~hi >>> 0;\r\n lo = ~lo >>> 0;\r\n if (++lo > 4294967295) {\r\n lo = 0;\r\n if (++hi > 4294967295)\r\n hi = 0;\r\n }\r\n }\r\n return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n if (typeof value === \"number\")\r\n return LongBits.fromNumber(value);\r\n if (util.isString(value)) {\r\n /* istanbul ignore else */\r\n if (util.Long)\r\n value = util.Long.fromString(value);\r\n else\r\n return LongBits.fromNumber(parseInt(value, 10));\r\n }\r\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n if (!unsigned && this.hi >>> 31) {\r\n var lo = ~this.lo + 1 >>> 0,\r\n hi = ~this.hi >>> 0;\r\n if (!lo)\r\n hi = hi + 1 >>> 0;\r\n return -(lo + hi * 4294967296);\r\n }\r\n return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n return util.Long\r\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n /* istanbul ignore next */\r\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n if (hash === zeroHash)\r\n return zero;\r\n return new LongBits(\r\n ( charCodeAt.call(hash, 0)\r\n | charCodeAt.call(hash, 1) << 8\r\n | charCodeAt.call(hash, 2) << 16\r\n | charCodeAt.call(hash, 3) << 24) >>> 0\r\n ,\r\n ( charCodeAt.call(hash, 4)\r\n | charCodeAt.call(hash, 5) << 8\r\n | charCodeAt.call(hash, 6) << 16\r\n | charCodeAt.call(hash, 7) << 24) >>> 0\r\n );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n return String.fromCharCode(\r\n this.lo & 255,\r\n this.lo >>> 8 & 255,\r\n this.lo >>> 16 & 255,\r\n this.lo >>> 24 ,\r\n this.hi & 255,\r\n this.hi >>> 8 & 255,\r\n this.hi >>> 16 & 255,\r\n this.hi >>> 24\r\n );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n var mask = this.hi >> 31;\r\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n var mask = -(this.lo & 1);\r\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n var part0 = this.lo,\r\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n part2 = this.hi >>> 24;\r\n return part2 === 0\r\n ? part1 === 0\r\n ? part0 < 16384\r\n ? part0 < 128 ? 1 : 2\r\n : part0 < 2097152 ? 3 : 4\r\n : part1 < 16384\r\n ? part1 < 128 ? 5 : 6\r\n : part1 < 2097152 ? 7 : 8\r\n : part2 < 128 ? 9 : 10;\r\n};\r\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n// global object reference\r\nutil.global = typeof window !== \"undefined\" && window\r\n || typeof global !== \"undefined\" && global\r\n || typeof self !== \"undefined\" && self\r\n || this; // eslint-disable-line no-invalid-this\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(util.global.process && util.global.process.versions && util.global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n var value = obj[prop];\r\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Buffer = (function() {\r\n try {\r\n var Buffer = util.inquire(\"buffer\").Buffer;\r\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n } catch (e) {\r\n /* istanbul ignore next */\r\n return null;\r\n }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n /* istanbul ignore next */\r\n return typeof sizeOrArray === \"number\"\r\n ? util.Buffer\r\n ? util._Buffer_allocUnsafe(sizeOrArray)\r\n : new util.Array(sizeOrArray)\r\n : util.Buffer\r\n ? util._Buffer_from(sizeOrArray)\r\n : typeof Uint8Array === \"undefined\"\r\n ? sizeOrArray\r\n : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor}\r\n */\r\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\r\n || /* istanbul ignore next */ util.global.Long\r\n || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n return value\r\n ? util.LongBits.from(value).toHash()\r\n : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n var bits = util.LongBits.fromHash(hash);\r\n if (util.Long)\r\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.} dst Destination object\r\n * @param {Object.} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n if (dst[keys[i]] === undefined || !ifNotSet)\r\n dst[keys[i]] = src[keys[i]];\r\n return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n function CustomError(message, properties) {\r\n\r\n if (!(this instanceof CustomError))\r\n return new CustomError(message, properties);\r\n\r\n // Error.call(this, message);\r\n // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n /* istanbul ignore next */\r\n if (Error.captureStackTrace) // node\r\n Error.captureStackTrace(this, CustomError);\r\n else\r\n Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n if (properties)\r\n merge(this, properties);\r\n }\r\n\r\n (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n CustomError.prototype.toString = function toString() {\r\n return this.name + \": \" + this.message;\r\n };\r\n\r\n return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.} [properties] Additional properties\r\n * @example\r\n * try {\r\n * MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n * if (e instanceof ProtocolError && e.instance)\r\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n var fieldMap = {};\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n fieldMap[fieldNames[i]] = 1;\r\n\r\n /**\r\n * @returns {string|undefined} Set field name, if any\r\n * @this Object\r\n * @ignore\r\n */\r\n return function() { // eslint-disable-line consistent-return\r\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n return keys[i];\r\n };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n /**\r\n * @param {string} name Field name\r\n * @returns {undefined}\r\n * @this Object\r\n * @ignore\r\n */\r\n return function(name) {\r\n for (var i = 0; i < fieldNames.length; ++i)\r\n if (fieldNames[i] !== name)\r\n delete this[fieldNames[i]];\r\n };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n longs: String,\r\n enums: String,\r\n bytes: String,\r\n json: true\r\n};\r\n\r\n// Sets up buffer utility according to the environment (called in index-minimal)\r\nutil._configure = function() {\r\n var Buffer = util.Buffer;\r\n /* istanbul ignore if */\r\n if (!Buffer) {\r\n util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n return;\r\n }\r\n // because node 4.x buffers are incompatible & immutable\r\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n /* istanbul ignore next */\r\n function Buffer_from(value, encoding) {\r\n return new Buffer(value, encoding);\r\n };\r\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n /* istanbul ignore next */\r\n function Buffer_allocUnsafe(size) {\r\n return new Buffer(size);\r\n };\r\n};\r\n","\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n base64 = util.base64,\r\n utf8 = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n /**\r\n * Function to call.\r\n * @type {function(Uint8Array, number, *)}\r\n */\r\n this.fn = fn;\r\n\r\n /**\r\n * Value byte length.\r\n * @type {number}\r\n */\r\n this.len = len;\r\n\r\n /**\r\n * Next operation.\r\n * @type {Writer.Op|undefined}\r\n */\r\n this.next = undefined;\r\n\r\n /**\r\n * Value to write.\r\n * @type {*}\r\n */\r\n this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n /**\r\n * Current head.\r\n * @type {Writer.Op}\r\n */\r\n this.head = writer.head;\r\n\r\n /**\r\n * Current tail.\r\n * @type {Writer.Op}\r\n */\r\n this.tail = writer.tail;\r\n\r\n /**\r\n * Current buffer length.\r\n * @type {number}\r\n */\r\n this.len = writer.len;\r\n\r\n /**\r\n * Next state.\r\n * @type {State|null}\r\n */\r\n this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n /**\r\n * Current length.\r\n * @type {number}\r\n */\r\n this.len = 0;\r\n\r\n /**\r\n * Operations head.\r\n * @type {Object}\r\n */\r\n this.head = new Op(noop, 0, 0);\r\n\r\n /**\r\n * Operations tail\r\n * @type {Object}\r\n */\r\n this.tail = this.head;\r\n\r\n /**\r\n * Linked forked states.\r\n * @type {Object|null}\r\n */\r\n this.states = null;\r\n\r\n // When a value is written, the writer calculates its byte length and puts it into a linked\r\n // list of operations to perform when finish() is called. This both allows us to allocate\r\n // buffers of the exact required size and reduces the amount of work we have to do compared\r\n // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n ? function create_buffer_setup() {\r\n return (Writer.create = function create_buffer() {\r\n return new BufferWriter();\r\n })();\r\n }\r\n /* istanbul ignore next */\r\n : function create_array() {\r\n return new Writer();\r\n };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n this.tail = this.tail.next = new Op(fn, len, val);\r\n this.len += len;\r\n return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n while (val > 127) {\r\n buf[pos++] = val & 127 | 128;\r\n val >>>= 7;\r\n }\r\n buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n this.len = len;\r\n this.next = undefined;\r\n this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n this.len += (this.tail = this.tail.next = new VarintOp(\r\n (value = value >>> 0)\r\n < 128 ? 1\r\n : value < 16384 ? 2\r\n : value < 2097152 ? 3\r\n : value < 268435456 ? 4\r\n : 5,\r\n value)).len;\r\n return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n return value < 0\r\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n while (val.hi) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n val.hi >>>= 7;\r\n }\r\n while (val.lo > 127) {\r\n buf[pos++] = val.lo & 127 | 128;\r\n val.lo = val.lo >>> 7;\r\n }\r\n buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n var bits = LongBits.from(value).zzEncode();\r\n return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n var bits = LongBits.from(value);\r\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n ? function writeBytes_set(val, buf, pos) {\r\n buf.set(val, pos); // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytes_for(val, buf, pos) {\r\n for (var i = 0; i < val.length; ++i)\r\n buf[pos + i] = val[i];\r\n };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n var len = value.length >>> 0;\r\n if (!len)\r\n return this._push(writeByte, 1, 0);\r\n if (util.isString(value)) {\r\n var buf = Writer.alloc(len = base64.length(value));\r\n base64.decode(value, buf, 0);\r\n value = buf;\r\n }\r\n return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n var len = utf8.length(value);\r\n return len\r\n ? this.uint32(len)._push(utf8.write, len, value)\r\n : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n this.states = new State(this);\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n if (this.states) {\r\n this.head = this.states.head;\r\n this.tail = this.states.tail;\r\n this.len = this.states.len;\r\n this.states = this.states.next;\r\n } else {\r\n this.head = this.tail = new Op(noop, 0, 0);\r\n this.len = 0;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n var head = this.head,\r\n tail = this.tail,\r\n len = this.len;\r\n this.reset().uint32(len);\r\n if (len) {\r\n this.tail.next = head.next; // skip noop\r\n this.tail = tail;\r\n this.len += len;\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n var head = this.head.next, // skip noop\r\n buf = this.constructor.alloc(this.len),\r\n pos = 0;\r\n while (head) {\r\n head.fn(head.val, buf, pos);\r\n pos += head.len;\r\n head = head.next;\r\n }\r\n // this.head = this.tail = null;\r\n return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n BufferWriter = BufferWriter_;\r\n};\r\n","\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n ? function writeBytesBuffer_set(val, buf, pos) {\r\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n // also works for plain array values\r\n }\r\n /* istanbul ignore next */\r\n : function writeBytesBuffer_copy(val, buf, pos) {\r\n if (val.copy) // Buffer values\r\n val.copy(buf, pos, 0, val.length);\r\n else for (var i = 0; i < val.length;) // plain array values\r\n buf[pos++] = val[i++];\r\n };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n if (util.isString(value))\r\n value = util._Buffer_from(value, \"base64\");\r\n var len = value.length >>> 0;\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeBytesBuffer, len, value);\r\n return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n util.utf8.write(val, buf, pos);\r\n else\r\n buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n var len = Buffer.byteLength(value);\r\n this.uint32(len);\r\n if (len)\r\n this._push(writeStringBuffer, len, value);\r\n return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n","\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits = util.LongBits,\r\n utf8 = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n /**\r\n * Read buffer.\r\n * @type {Uint8Array}\r\n */\r\n this.buf = buffer;\r\n\r\n /**\r\n * Read buffer position.\r\n * @type {number}\r\n */\r\n this.pos = 0;\r\n\r\n /**\r\n * Read buffer length.\r\n * @type {number}\r\n */\r\n this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n ? function create_typed_array(buffer) {\r\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n }\r\n /* istanbul ignore next */\r\n : function create_array(buffer) {\r\n if (Array.isArray(buffer))\r\n return new Reader(buffer);\r\n throw Error(\"illegal buffer\");\r\n };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n ? function create_buffer_setup(buffer) {\r\n return (Reader.create = function create_buffer(buffer) {\r\n return util.Buffer.isBuffer(buffer)\r\n ? new BufferReader(buffer)\r\n /* istanbul ignore next */\r\n : create_array(buffer);\r\n })(buffer);\r\n }\r\n /* istanbul ignore next */\r\n : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n return function read_uint32() {\r\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n /* istanbul ignore if */\r\n if ((this.pos += 5) > this.len) {\r\n this.pos = this.len;\r\n throw indexOutOfRange(this, 10);\r\n }\r\n return value;\r\n };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n var value = this.uint32();\r\n return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n // tends to deopt with local vars for octet etc.\r\n var bits = new LongBits(0, 0);\r\n var i = 0;\r\n if (this.len - this.pos > 4) { // fast route (lo)\r\n for (; i < 4; ++i) {\r\n // 1st..4th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 5th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n i = 0;\r\n } else {\r\n for (; i < 3; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 1st..3th\r\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n // 4th\r\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n return bits;\r\n }\r\n if (this.len - this.pos > 4) { // fast route (hi)\r\n for (; i < 5; ++i) {\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n } else {\r\n for (; i < 5; ++i) {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n // 6th..10th\r\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n if (this.buf[this.pos++] < 128)\r\n return bits;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n return (buf[end - 4]\r\n | buf[end - 3] << 8\r\n | buf[end - 2] << 16\r\n | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 8);\r\n\r\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 4 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readFloatLE(this.buf, this.pos);\r\n this.pos += 4;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n /* istanbul ignore if */\r\n if (this.pos + 8 > this.len)\r\n throw indexOutOfRange(this, 4);\r\n\r\n var value = util.float.readDoubleLE(this.buf, this.pos);\r\n this.pos += 8;\r\n return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n var length = this.uint32(),\r\n start = this.pos,\r\n end = this.pos + length;\r\n\r\n /* istanbul ignore if */\r\n if (end > this.len)\r\n throw indexOutOfRange(this, length);\r\n\r\n this.pos += length;\r\n if (Array.isArray(this.buf)) // plain array\r\n return this.buf.slice(start, end);\r\n return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n ? new this.buf.constructor(0)\r\n : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n var bytes = this.bytes();\r\n return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n if (typeof length === \"number\") {\r\n /* istanbul ignore if */\r\n if (this.pos + length > this.len)\r\n throw indexOutOfRange(this, length);\r\n this.pos += length;\r\n } else {\r\n do {\r\n /* istanbul ignore if */\r\n if (this.pos >= this.len)\r\n throw indexOutOfRange(this);\r\n } while (this.buf[this.pos++] & 128);\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n switch (wireType) {\r\n case 0:\r\n this.skip();\r\n break;\r\n case 1:\r\n this.skip(8);\r\n break;\r\n case 2:\r\n this.skip(this.uint32());\r\n break;\r\n case 3:\r\n while ((wireType = this.uint32() & 7) !== 4) {\r\n this.skipType(wireType);\r\n }\r\n break;\r\n case 5:\r\n this.skip(4);\r\n break;\r\n\r\n /* istanbul ignore next */\r\n default:\r\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n }\r\n return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n BufferReader = BufferReader_;\r\n\r\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n util.merge(Reader.prototype, {\r\n\r\n int64: function read_int64() {\r\n return readLongVarint.call(this)[fn](false);\r\n },\r\n\r\n uint64: function read_uint64() {\r\n return readLongVarint.call(this)[fn](true);\r\n },\r\n\r\n sint64: function read_sint64() {\r\n return readLongVarint.call(this).zzDecode()[fn](false);\r\n },\r\n\r\n fixed64: function read_fixed64() {\r\n return readFixed64.call(this)[fn](true);\r\n },\r\n\r\n sfixed64: function read_sfixed64() {\r\n return readFixed64.call(this)[fn](false);\r\n }\r\n\r\n });\r\n};\r\n","\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n Reader.call(this, buffer);\r\n\r\n /**\r\n * Read buffer.\r\n * @name BufferReader#buf\r\n * @type {Buffer}\r\n */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n var len = this.uint32(); // modifies pos\r\n return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n","\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n * @type {function}\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n if (typeof rpcImpl !== \"function\")\r\n throw TypeError(\"rpcImpl must be a function\");\r\n\r\n util.EventEmitter.call(this);\r\n\r\n /**\r\n * RPC implementation. Becomes `null` once the service is ended.\r\n * @type {RPCImpl|null}\r\n */\r\n this.rpcImpl = rpcImpl;\r\n\r\n /**\r\n * Whether requests are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.requestDelimited = Boolean(requestDelimited);\r\n\r\n /**\r\n * Whether responses are length-delimited.\r\n * @type {boolean}\r\n */\r\n this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\r\n * @param {Constructor} requestCtor Request constructor\r\n * @param {Constructor} responseCtor Response constructor\r\n * @param {TReq|Properties} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message\r\n * @template TRes extends Message\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n if (!request)\r\n throw TypeError(\"request must be specified\");\r\n\r\n var self = this;\r\n if (!callback)\r\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n if (!self.rpcImpl) {\r\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n return undefined;\r\n }\r\n\r\n try {\r\n return self.rpcImpl(\r\n method,\r\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n function rpcCallback(err, response) {\r\n\r\n if (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n\r\n if (response === null) {\r\n self.end(/* endedByRPC */ true);\r\n return undefined;\r\n }\r\n\r\n if (!(response instanceof responseCtor)) {\r\n try {\r\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n return callback(err);\r\n }\r\n }\r\n\r\n self.emit(\"data\", response, method);\r\n return callback(null, response);\r\n }\r\n );\r\n } catch (err) {\r\n self.emit(\"error\", err, method);\r\n setTimeout(function() { callback(err); }, 0);\r\n return undefined;\r\n }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n if (this.rpcImpl) {\r\n if (!endedByRPC) // signal end to rpcImpl\r\n this.rpcImpl(null, null, null);\r\n this.rpcImpl = null;\r\n this.emit(\"end\").off();\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n * throw Error(\"no such method\");\r\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n * callback(err, responseData);\r\n * });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n","\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n","\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util = require(\"./util/minimal\");\r\nprotobuf.rpc = require(\"./rpc\");\r\nprotobuf.roots = require(\"./roots\");\r\nprotobuf.configure = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n protobuf.Reader._configure(protobuf.BufferReader);\r\n protobuf.util._configure();\r\n}\r\n\r\n// Set up buffer utility according to the environment\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n","// minimal library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-minimal\");\r\n","// THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY THIS FILE MANUALLY.\n//\n// To regenerate this file, run the following in the repository root:\n//\n// node node_modules/protobufjs/cli/bin/pbjs -t static-module -w commonjs -o src/import/profile.proto.js src/import/profile.proto\n//\n// Then prepend this comment to the result.\n/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n'use strict'\n\nvar $protobuf = require('protobufjs/minimal')\n\n// Common aliases\nvar $Reader = $protobuf.Reader,\n $Writer = $protobuf.Writer,\n $util = $protobuf.util\n\n// Exported root namespace\nvar $root = $protobuf.roots['default'] || ($protobuf.roots['default'] = {})\n\n$root.perftools = (function() {\n /**\n * Namespace perftools.\n * @exports perftools\n * @namespace\n */\n var perftools = {}\n\n perftools.profiles = (function() {\n /**\n * Namespace profiles.\n * @memberof perftools\n * @namespace\n */\n var profiles = {}\n\n profiles.Profile = (function() {\n /**\n * Properties of a Profile.\n * @memberof perftools.profiles\n * @interface IProfile\n * @property {Array.|null} [sampleType] Profile sampleType\n * @property {Array.|null} [sample] Profile sample\n * @property {Array.|null} [mapping] Profile mapping\n * @property {Array.|null} [location] Profile location\n * @property {Array.|null} [\"function\"] Profile function\n * @property {Array.|null} [stringTable] Profile stringTable\n * @property {number|Long|null} [dropFrames] Profile dropFrames\n * @property {number|Long|null} [keepFrames] Profile keepFrames\n * @property {number|Long|null} [timeNanos] Profile timeNanos\n * @property {number|Long|null} [durationNanos] Profile durationNanos\n * @property {perftools.profiles.IValueType|null} [periodType] Profile periodType\n * @property {number|Long|null} [period] Profile period\n * @property {Array.|null} [comment] Profile comment\n * @property {number|Long|null} [defaultSampleType] Profile defaultSampleType\n */\n\n /**\n * Constructs a new Profile.\n * @memberof perftools.profiles\n * @classdesc Represents a Profile.\n * @implements IProfile\n * @constructor\n * @param {perftools.profiles.IProfile=} [properties] Properties to set\n */\n function Profile(properties) {\n this.sampleType = []\n this.sample = []\n this.mapping = []\n this.location = []\n this['function'] = []\n this.stringTable = []\n this.comment = []\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Profile sampleType.\n * @member {Array.} sampleType\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.sampleType = $util.emptyArray\n\n /**\n * Profile sample.\n * @member {Array.} sample\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.sample = $util.emptyArray\n\n /**\n * Profile mapping.\n * @member {Array.} mapping\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.mapping = $util.emptyArray\n\n /**\n * Profile location.\n * @member {Array.} location\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.location = $util.emptyArray\n\n /**\n * Profile function.\n * @member {Array.} function\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype['function'] = $util.emptyArray\n\n /**\n * Profile stringTable.\n * @member {Array.} stringTable\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.stringTable = $util.emptyArray\n\n /**\n * Profile dropFrames.\n * @member {number|Long} dropFrames\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.dropFrames = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Profile keepFrames.\n * @member {number|Long} keepFrames\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.keepFrames = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Profile timeNanos.\n * @member {number|Long} timeNanos\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.timeNanos = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Profile durationNanos.\n * @member {number|Long} durationNanos\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.durationNanos = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Profile periodType.\n * @member {perftools.profiles.IValueType|null|undefined} periodType\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.periodType = null\n\n /**\n * Profile period.\n * @member {number|Long} period\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.period = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Profile comment.\n * @member {Array.} comment\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.comment = $util.emptyArray\n\n /**\n * Profile defaultSampleType.\n * @member {number|Long} defaultSampleType\n * @memberof perftools.profiles.Profile\n * @instance\n */\n Profile.prototype.defaultSampleType = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Creates a new Profile instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Profile\n * @static\n * @param {perftools.profiles.IProfile=} [properties] Properties to set\n * @returns {perftools.profiles.Profile} Profile instance\n */\n Profile.create = function create(properties) {\n return new Profile(properties)\n }\n\n /**\n * Encodes the specified Profile message. Does not implicitly {@link perftools.profiles.Profile.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Profile\n * @static\n * @param {perftools.profiles.IProfile} message Profile message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Profile.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.sampleType != null && message.sampleType.length)\n for (var i = 0; i < message.sampleType.length; ++i)\n $root.perftools.profiles.ValueType.encode(\n message.sampleType[i],\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n ).ldelim()\n if (message.sample != null && message.sample.length)\n for (var i = 0; i < message.sample.length; ++i)\n $root.perftools.profiles.Sample.encode(\n message.sample[i],\n writer.uint32(/* id 2, wireType 2 =*/ 18).fork(),\n ).ldelim()\n if (message.mapping != null && message.mapping.length)\n for (var i = 0; i < message.mapping.length; ++i)\n $root.perftools.profiles.Mapping.encode(\n message.mapping[i],\n writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n ).ldelim()\n if (message.location != null && message.location.length)\n for (var i = 0; i < message.location.length; ++i)\n $root.perftools.profiles.Location.encode(\n message.location[i],\n writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n ).ldelim()\n if (message['function'] != null && message['function'].length)\n for (var i = 0; i < message['function'].length; ++i)\n $root.perftools.profiles.Function.encode(\n message['function'][i],\n writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n ).ldelim()\n if (message.stringTable != null && message.stringTable.length)\n for (var i = 0; i < message.stringTable.length; ++i)\n writer.uint32(/* id 6, wireType 2 =*/ 50).string(message.stringTable[i])\n if (message.dropFrames != null && message.hasOwnProperty('dropFrames'))\n writer.uint32(/* id 7, wireType 0 =*/ 56).int64(message.dropFrames)\n if (message.keepFrames != null && message.hasOwnProperty('keepFrames'))\n writer.uint32(/* id 8, wireType 0 =*/ 64).int64(message.keepFrames)\n if (message.timeNanos != null && message.hasOwnProperty('timeNanos'))\n writer.uint32(/* id 9, wireType 0 =*/ 72).int64(message.timeNanos)\n if (message.durationNanos != null && message.hasOwnProperty('durationNanos'))\n writer.uint32(/* id 10, wireType 0 =*/ 80).int64(message.durationNanos)\n if (message.periodType != null && message.hasOwnProperty('periodType'))\n $root.perftools.profiles.ValueType.encode(\n message.periodType,\n writer.uint32(/* id 11, wireType 2 =*/ 90).fork(),\n ).ldelim()\n if (message.period != null && message.hasOwnProperty('period'))\n writer.uint32(/* id 12, wireType 0 =*/ 96).int64(message.period)\n if (message.comment != null && message.comment.length) {\n writer.uint32(/* id 13, wireType 2 =*/ 106).fork()\n for (var i = 0; i < message.comment.length; ++i) writer.int64(message.comment[i])\n writer.ldelim()\n }\n if (message.defaultSampleType != null && message.hasOwnProperty('defaultSampleType'))\n writer.uint32(/* id 14, wireType 0 =*/ 112).int64(message.defaultSampleType)\n return writer\n }\n\n /**\n * Encodes the specified Profile message, length delimited. Does not implicitly {@link perftools.profiles.Profile.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Profile\n * @static\n * @param {perftools.profiles.IProfile} message Profile message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Profile.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Profile message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Profile\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Profile} Profile\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Profile.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Profile()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n if (!(message.sampleType && message.sampleType.length)) message.sampleType = []\n message.sampleType.push(\n $root.perftools.profiles.ValueType.decode(reader, reader.uint32()),\n )\n break\n case 2:\n if (!(message.sample && message.sample.length)) message.sample = []\n message.sample.push($root.perftools.profiles.Sample.decode(reader, reader.uint32()))\n break\n case 3:\n if (!(message.mapping && message.mapping.length)) message.mapping = []\n message.mapping.push($root.perftools.profiles.Mapping.decode(reader, reader.uint32()))\n break\n case 4:\n if (!(message.location && message.location.length)) message.location = []\n message.location.push(\n $root.perftools.profiles.Location.decode(reader, reader.uint32()),\n )\n break\n case 5:\n if (!(message['function'] && message['function'].length)) message['function'] = []\n message['function'].push(\n $root.perftools.profiles.Function.decode(reader, reader.uint32()),\n )\n break\n case 6:\n if (!(message.stringTable && message.stringTable.length)) message.stringTable = []\n message.stringTable.push(reader.string())\n break\n case 7:\n message.dropFrames = reader.int64()\n break\n case 8:\n message.keepFrames = reader.int64()\n break\n case 9:\n message.timeNanos = reader.int64()\n break\n case 10:\n message.durationNanos = reader.int64()\n break\n case 11:\n message.periodType = $root.perftools.profiles.ValueType.decode(\n reader,\n reader.uint32(),\n )\n break\n case 12:\n message.period = reader.int64()\n break\n case 13:\n if (!(message.comment && message.comment.length)) message.comment = []\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos\n while (reader.pos < end2) message.comment.push(reader.int64())\n } else message.comment.push(reader.int64())\n break\n case 14:\n message.defaultSampleType = reader.int64()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Profile message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Profile\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Profile} Profile\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Profile.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Profile message.\n * @function verify\n * @memberof perftools.profiles.Profile\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Profile.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.sampleType != null && message.hasOwnProperty('sampleType')) {\n if (!Array.isArray(message.sampleType)) return 'sampleType: array expected'\n for (var i = 0; i < message.sampleType.length; ++i) {\n var error = $root.perftools.profiles.ValueType.verify(message.sampleType[i])\n if (error) return 'sampleType.' + error\n }\n }\n if (message.sample != null && message.hasOwnProperty('sample')) {\n if (!Array.isArray(message.sample)) return 'sample: array expected'\n for (var i = 0; i < message.sample.length; ++i) {\n var error = $root.perftools.profiles.Sample.verify(message.sample[i])\n if (error) return 'sample.' + error\n }\n }\n if (message.mapping != null && message.hasOwnProperty('mapping')) {\n if (!Array.isArray(message.mapping)) return 'mapping: array expected'\n for (var i = 0; i < message.mapping.length; ++i) {\n var error = $root.perftools.profiles.Mapping.verify(message.mapping[i])\n if (error) return 'mapping.' + error\n }\n }\n if (message.location != null && message.hasOwnProperty('location')) {\n if (!Array.isArray(message.location)) return 'location: array expected'\n for (var i = 0; i < message.location.length; ++i) {\n var error = $root.perftools.profiles.Location.verify(message.location[i])\n if (error) return 'location.' + error\n }\n }\n if (message['function'] != null && message.hasOwnProperty('function')) {\n if (!Array.isArray(message['function'])) return 'function: array expected'\n for (var i = 0; i < message['function'].length; ++i) {\n var error = $root.perftools.profiles.Function.verify(message['function'][i])\n if (error) return 'function.' + error\n }\n }\n if (message.stringTable != null && message.hasOwnProperty('stringTable')) {\n if (!Array.isArray(message.stringTable)) return 'stringTable: array expected'\n for (var i = 0; i < message.stringTable.length; ++i)\n if (!$util.isString(message.stringTable[i])) return 'stringTable: string[] expected'\n }\n if (message.dropFrames != null && message.hasOwnProperty('dropFrames'))\n if (\n !$util.isInteger(message.dropFrames) &&\n !(\n message.dropFrames &&\n $util.isInteger(message.dropFrames.low) &&\n $util.isInteger(message.dropFrames.high)\n )\n )\n return 'dropFrames: integer|Long expected'\n if (message.keepFrames != null && message.hasOwnProperty('keepFrames'))\n if (\n !$util.isInteger(message.keepFrames) &&\n !(\n message.keepFrames &&\n $util.isInteger(message.keepFrames.low) &&\n $util.isInteger(message.keepFrames.high)\n )\n )\n return 'keepFrames: integer|Long expected'\n if (message.timeNanos != null && message.hasOwnProperty('timeNanos'))\n if (\n !$util.isInteger(message.timeNanos) &&\n !(\n message.timeNanos &&\n $util.isInteger(message.timeNanos.low) &&\n $util.isInteger(message.timeNanos.high)\n )\n )\n return 'timeNanos: integer|Long expected'\n if (message.durationNanos != null && message.hasOwnProperty('durationNanos'))\n if (\n !$util.isInteger(message.durationNanos) &&\n !(\n message.durationNanos &&\n $util.isInteger(message.durationNanos.low) &&\n $util.isInteger(message.durationNanos.high)\n )\n )\n return 'durationNanos: integer|Long expected'\n if (message.periodType != null && message.hasOwnProperty('periodType')) {\n var error = $root.perftools.profiles.ValueType.verify(message.periodType)\n if (error) return 'periodType.' + error\n }\n if (message.period != null && message.hasOwnProperty('period'))\n if (\n !$util.isInteger(message.period) &&\n !(\n message.period &&\n $util.isInteger(message.period.low) &&\n $util.isInteger(message.period.high)\n )\n )\n return 'period: integer|Long expected'\n if (message.comment != null && message.hasOwnProperty('comment')) {\n if (!Array.isArray(message.comment)) return 'comment: array expected'\n for (var i = 0; i < message.comment.length; ++i)\n if (\n !$util.isInteger(message.comment[i]) &&\n !(\n message.comment[i] &&\n $util.isInteger(message.comment[i].low) &&\n $util.isInteger(message.comment[i].high)\n )\n )\n return 'comment: integer|Long[] expected'\n }\n if (message.defaultSampleType != null && message.hasOwnProperty('defaultSampleType'))\n if (\n !$util.isInteger(message.defaultSampleType) &&\n !(\n message.defaultSampleType &&\n $util.isInteger(message.defaultSampleType.low) &&\n $util.isInteger(message.defaultSampleType.high)\n )\n )\n return 'defaultSampleType: integer|Long expected'\n return null\n }\n\n /**\n * Creates a Profile message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Profile\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Profile} Profile\n */\n Profile.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Profile) return object\n var message = new $root.perftools.profiles.Profile()\n if (object.sampleType) {\n if (!Array.isArray(object.sampleType))\n throw TypeError('.perftools.profiles.Profile.sampleType: array expected')\n message.sampleType = []\n for (var i = 0; i < object.sampleType.length; ++i) {\n if (typeof object.sampleType[i] !== 'object')\n throw TypeError('.perftools.profiles.Profile.sampleType: object expected')\n message.sampleType[i] = $root.perftools.profiles.ValueType.fromObject(\n object.sampleType[i],\n )\n }\n }\n if (object.sample) {\n if (!Array.isArray(object.sample))\n throw TypeError('.perftools.profiles.Profile.sample: array expected')\n message.sample = []\n for (var i = 0; i < object.sample.length; ++i) {\n if (typeof object.sample[i] !== 'object')\n throw TypeError('.perftools.profiles.Profile.sample: object expected')\n message.sample[i] = $root.perftools.profiles.Sample.fromObject(object.sample[i])\n }\n }\n if (object.mapping) {\n if (!Array.isArray(object.mapping))\n throw TypeError('.perftools.profiles.Profile.mapping: array expected')\n message.mapping = []\n for (var i = 0; i < object.mapping.length; ++i) {\n if (typeof object.mapping[i] !== 'object')\n throw TypeError('.perftools.profiles.Profile.mapping: object expected')\n message.mapping[i] = $root.perftools.profiles.Mapping.fromObject(object.mapping[i])\n }\n }\n if (object.location) {\n if (!Array.isArray(object.location))\n throw TypeError('.perftools.profiles.Profile.location: array expected')\n message.location = []\n for (var i = 0; i < object.location.length; ++i) {\n if (typeof object.location[i] !== 'object')\n throw TypeError('.perftools.profiles.Profile.location: object expected')\n message.location[i] = $root.perftools.profiles.Location.fromObject(object.location[i])\n }\n }\n if (object['function']) {\n if (!Array.isArray(object['function']))\n throw TypeError('.perftools.profiles.Profile.function: array expected')\n message['function'] = []\n for (var i = 0; i < object['function'].length; ++i) {\n if (typeof object['function'][i] !== 'object')\n throw TypeError('.perftools.profiles.Profile.function: object expected')\n message['function'][i] = $root.perftools.profiles.Function.fromObject(\n object['function'][i],\n )\n }\n }\n if (object.stringTable) {\n if (!Array.isArray(object.stringTable))\n throw TypeError('.perftools.profiles.Profile.stringTable: array expected')\n message.stringTable = []\n for (var i = 0; i < object.stringTable.length; ++i)\n message.stringTable[i] = String(object.stringTable[i])\n }\n if (object.dropFrames != null)\n if ($util.Long)\n (message.dropFrames = $util.Long.fromValue(object.dropFrames)).unsigned = false\n else if (typeof object.dropFrames === 'string')\n message.dropFrames = parseInt(object.dropFrames, 10)\n else if (typeof object.dropFrames === 'number') message.dropFrames = object.dropFrames\n else if (typeof object.dropFrames === 'object')\n message.dropFrames = new $util.LongBits(\n object.dropFrames.low >>> 0,\n object.dropFrames.high >>> 0,\n ).toNumber()\n if (object.keepFrames != null)\n if ($util.Long)\n (message.keepFrames = $util.Long.fromValue(object.keepFrames)).unsigned = false\n else if (typeof object.keepFrames === 'string')\n message.keepFrames = parseInt(object.keepFrames, 10)\n else if (typeof object.keepFrames === 'number') message.keepFrames = object.keepFrames\n else if (typeof object.keepFrames === 'object')\n message.keepFrames = new $util.LongBits(\n object.keepFrames.low >>> 0,\n object.keepFrames.high >>> 0,\n ).toNumber()\n if (object.timeNanos != null)\n if ($util.Long)\n (message.timeNanos = $util.Long.fromValue(object.timeNanos)).unsigned = false\n else if (typeof object.timeNanos === 'string')\n message.timeNanos = parseInt(object.timeNanos, 10)\n else if (typeof object.timeNanos === 'number') message.timeNanos = object.timeNanos\n else if (typeof object.timeNanos === 'object')\n message.timeNanos = new $util.LongBits(\n object.timeNanos.low >>> 0,\n object.timeNanos.high >>> 0,\n ).toNumber()\n if (object.durationNanos != null)\n if ($util.Long)\n (message.durationNanos = $util.Long.fromValue(object.durationNanos)).unsigned = false\n else if (typeof object.durationNanos === 'string')\n message.durationNanos = parseInt(object.durationNanos, 10)\n else if (typeof object.durationNanos === 'number')\n message.durationNanos = object.durationNanos\n else if (typeof object.durationNanos === 'object')\n message.durationNanos = new $util.LongBits(\n object.durationNanos.low >>> 0,\n object.durationNanos.high >>> 0,\n ).toNumber()\n if (object.periodType != null) {\n if (typeof object.periodType !== 'object')\n throw TypeError('.perftools.profiles.Profile.periodType: object expected')\n message.periodType = $root.perftools.profiles.ValueType.fromObject(object.periodType)\n }\n if (object.period != null)\n if ($util.Long) (message.period = $util.Long.fromValue(object.period)).unsigned = false\n else if (typeof object.period === 'string') message.period = parseInt(object.period, 10)\n else if (typeof object.period === 'number') message.period = object.period\n else if (typeof object.period === 'object')\n message.period = new $util.LongBits(\n object.period.low >>> 0,\n object.period.high >>> 0,\n ).toNumber()\n if (object.comment) {\n if (!Array.isArray(object.comment))\n throw TypeError('.perftools.profiles.Profile.comment: array expected')\n message.comment = []\n for (var i = 0; i < object.comment.length; ++i)\n if ($util.Long)\n (message.comment[i] = $util.Long.fromValue(object.comment[i])).unsigned = false\n else if (typeof object.comment[i] === 'string')\n message.comment[i] = parseInt(object.comment[i], 10)\n else if (typeof object.comment[i] === 'number') message.comment[i] = object.comment[i]\n else if (typeof object.comment[i] === 'object')\n message.comment[i] = new $util.LongBits(\n object.comment[i].low >>> 0,\n object.comment[i].high >>> 0,\n ).toNumber()\n }\n if (object.defaultSampleType != null)\n if ($util.Long)\n (message.defaultSampleType = $util.Long.fromValue(\n object.defaultSampleType,\n )).unsigned = false\n else if (typeof object.defaultSampleType === 'string')\n message.defaultSampleType = parseInt(object.defaultSampleType, 10)\n else if (typeof object.defaultSampleType === 'number')\n message.defaultSampleType = object.defaultSampleType\n else if (typeof object.defaultSampleType === 'object')\n message.defaultSampleType = new $util.LongBits(\n object.defaultSampleType.low >>> 0,\n object.defaultSampleType.high >>> 0,\n ).toNumber()\n return message\n }\n\n /**\n * Creates a plain object from a Profile message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Profile\n * @static\n * @param {perftools.profiles.Profile} message Profile\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Profile.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.arrays || options.defaults) {\n object.sampleType = []\n object.sample = []\n object.mapping = []\n object.location = []\n object['function'] = []\n object.stringTable = []\n object.comment = []\n }\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.dropFrames =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.dropFrames = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.keepFrames =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.keepFrames = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.timeNanos =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.timeNanos = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.durationNanos =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.durationNanos = options.longs === String ? '0' : 0\n object.periodType = null\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.period =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.period = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.defaultSampleType =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.defaultSampleType = options.longs === String ? '0' : 0\n }\n if (message.sampleType && message.sampleType.length) {\n object.sampleType = []\n for (var j = 0; j < message.sampleType.length; ++j)\n object.sampleType[j] = $root.perftools.profiles.ValueType.toObject(\n message.sampleType[j],\n options,\n )\n }\n if (message.sample && message.sample.length) {\n object.sample = []\n for (var j = 0; j < message.sample.length; ++j)\n object.sample[j] = $root.perftools.profiles.Sample.toObject(message.sample[j], options)\n }\n if (message.mapping && message.mapping.length) {\n object.mapping = []\n for (var j = 0; j < message.mapping.length; ++j)\n object.mapping[j] = $root.perftools.profiles.Mapping.toObject(\n message.mapping[j],\n options,\n )\n }\n if (message.location && message.location.length) {\n object.location = []\n for (var j = 0; j < message.location.length; ++j)\n object.location[j] = $root.perftools.profiles.Location.toObject(\n message.location[j],\n options,\n )\n }\n if (message['function'] && message['function'].length) {\n object['function'] = []\n for (var j = 0; j < message['function'].length; ++j)\n object['function'][j] = $root.perftools.profiles.Function.toObject(\n message['function'][j],\n options,\n )\n }\n if (message.stringTable && message.stringTable.length) {\n object.stringTable = []\n for (var j = 0; j < message.stringTable.length; ++j)\n object.stringTable[j] = message.stringTable[j]\n }\n if (message.dropFrames != null && message.hasOwnProperty('dropFrames'))\n if (typeof message.dropFrames === 'number')\n object.dropFrames =\n options.longs === String ? String(message.dropFrames) : message.dropFrames\n else\n object.dropFrames =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.dropFrames)\n : options.longs === Number\n ? new $util.LongBits(\n message.dropFrames.low >>> 0,\n message.dropFrames.high >>> 0,\n ).toNumber()\n : message.dropFrames\n if (message.keepFrames != null && message.hasOwnProperty('keepFrames'))\n if (typeof message.keepFrames === 'number')\n object.keepFrames =\n options.longs === String ? String(message.keepFrames) : message.keepFrames\n else\n object.keepFrames =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.keepFrames)\n : options.longs === Number\n ? new $util.LongBits(\n message.keepFrames.low >>> 0,\n message.keepFrames.high >>> 0,\n ).toNumber()\n : message.keepFrames\n if (message.timeNanos != null && message.hasOwnProperty('timeNanos'))\n if (typeof message.timeNanos === 'number')\n object.timeNanos =\n options.longs === String ? String(message.timeNanos) : message.timeNanos\n else\n object.timeNanos =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.timeNanos)\n : options.longs === Number\n ? new $util.LongBits(\n message.timeNanos.low >>> 0,\n message.timeNanos.high >>> 0,\n ).toNumber()\n : message.timeNanos\n if (message.durationNanos != null && message.hasOwnProperty('durationNanos'))\n if (typeof message.durationNanos === 'number')\n object.durationNanos =\n options.longs === String ? String(message.durationNanos) : message.durationNanos\n else\n object.durationNanos =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.durationNanos)\n : options.longs === Number\n ? new $util.LongBits(\n message.durationNanos.low >>> 0,\n message.durationNanos.high >>> 0,\n ).toNumber()\n : message.durationNanos\n if (message.periodType != null && message.hasOwnProperty('periodType'))\n object.periodType = $root.perftools.profiles.ValueType.toObject(\n message.periodType,\n options,\n )\n if (message.period != null && message.hasOwnProperty('period'))\n if (typeof message.period === 'number')\n object.period = options.longs === String ? String(message.period) : message.period\n else\n object.period =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.period)\n : options.longs === Number\n ? new $util.LongBits(\n message.period.low >>> 0,\n message.period.high >>> 0,\n ).toNumber()\n : message.period\n if (message.comment && message.comment.length) {\n object.comment = []\n for (var j = 0; j < message.comment.length; ++j)\n if (typeof message.comment[j] === 'number')\n object.comment[j] =\n options.longs === String ? String(message.comment[j]) : message.comment[j]\n else\n object.comment[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.comment[j])\n : options.longs === Number\n ? new $util.LongBits(\n message.comment[j].low >>> 0,\n message.comment[j].high >>> 0,\n ).toNumber()\n : message.comment[j]\n }\n if (message.defaultSampleType != null && message.hasOwnProperty('defaultSampleType'))\n if (typeof message.defaultSampleType === 'number')\n object.defaultSampleType =\n options.longs === String\n ? String(message.defaultSampleType)\n : message.defaultSampleType\n else\n object.defaultSampleType =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.defaultSampleType)\n : options.longs === Number\n ? new $util.LongBits(\n message.defaultSampleType.low >>> 0,\n message.defaultSampleType.high >>> 0,\n ).toNumber()\n : message.defaultSampleType\n return object\n }\n\n /**\n * Converts this Profile to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Profile\n * @instance\n * @returns {Object.} JSON object\n */\n Profile.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Profile\n })()\n\n profiles.ValueType = (function() {\n /**\n * Properties of a ValueType.\n * @memberof perftools.profiles\n * @interface IValueType\n * @property {number|Long|null} [type] ValueType type\n * @property {number|Long|null} [unit] ValueType unit\n */\n\n /**\n * Constructs a new ValueType.\n * @memberof perftools.profiles\n * @classdesc Represents a ValueType.\n * @implements IValueType\n * @constructor\n * @param {perftools.profiles.IValueType=} [properties] Properties to set\n */\n function ValueType(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * ValueType type.\n * @member {number|Long} type\n * @memberof perftools.profiles.ValueType\n * @instance\n */\n ValueType.prototype.type = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * ValueType unit.\n * @member {number|Long} unit\n * @memberof perftools.profiles.ValueType\n * @instance\n */\n ValueType.prototype.unit = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Creates a new ValueType instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {perftools.profiles.IValueType=} [properties] Properties to set\n * @returns {perftools.profiles.ValueType} ValueType instance\n */\n ValueType.create = function create(properties) {\n return new ValueType(properties)\n }\n\n /**\n * Encodes the specified ValueType message. Does not implicitly {@link perftools.profiles.ValueType.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {perftools.profiles.IValueType} message ValueType message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueType.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.type != null && message.hasOwnProperty('type'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.type)\n if (message.unit != null && message.hasOwnProperty('unit'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int64(message.unit)\n return writer\n }\n\n /**\n * Encodes the specified ValueType message, length delimited. Does not implicitly {@link perftools.profiles.ValueType.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {perftools.profiles.IValueType} message ValueType message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ValueType.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a ValueType message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.ValueType} ValueType\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueType.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.ValueType()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n message.type = reader.int64()\n break\n case 2:\n message.unit = reader.int64()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a ValueType message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.ValueType} ValueType\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ValueType.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a ValueType message.\n * @function verify\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ValueType.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.type != null && message.hasOwnProperty('type'))\n if (\n !$util.isInteger(message.type) &&\n !(\n message.type &&\n $util.isInteger(message.type.low) &&\n $util.isInteger(message.type.high)\n )\n )\n return 'type: integer|Long expected'\n if (message.unit != null && message.hasOwnProperty('unit'))\n if (\n !$util.isInteger(message.unit) &&\n !(\n message.unit &&\n $util.isInteger(message.unit.low) &&\n $util.isInteger(message.unit.high)\n )\n )\n return 'unit: integer|Long expected'\n return null\n }\n\n /**\n * Creates a ValueType message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.ValueType} ValueType\n */\n ValueType.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.ValueType) return object\n var message = new $root.perftools.profiles.ValueType()\n if (object.type != null)\n if ($util.Long) (message.type = $util.Long.fromValue(object.type)).unsigned = false\n else if (typeof object.type === 'string') message.type = parseInt(object.type, 10)\n else if (typeof object.type === 'number') message.type = object.type\n else if (typeof object.type === 'object')\n message.type = new $util.LongBits(\n object.type.low >>> 0,\n object.type.high >>> 0,\n ).toNumber()\n if (object.unit != null)\n if ($util.Long) (message.unit = $util.Long.fromValue(object.unit)).unsigned = false\n else if (typeof object.unit === 'string') message.unit = parseInt(object.unit, 10)\n else if (typeof object.unit === 'number') message.unit = object.unit\n else if (typeof object.unit === 'object')\n message.unit = new $util.LongBits(\n object.unit.low >>> 0,\n object.unit.high >>> 0,\n ).toNumber()\n return message\n }\n\n /**\n * Creates a plain object from a ValueType message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.ValueType\n * @static\n * @param {perftools.profiles.ValueType} message ValueType\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n ValueType.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.type =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.type = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.unit =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.unit = options.longs === String ? '0' : 0\n }\n if (message.type != null && message.hasOwnProperty('type'))\n if (typeof message.type === 'number')\n object.type = options.longs === String ? String(message.type) : message.type\n else\n object.type =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.type)\n : options.longs === Number\n ? new $util.LongBits(message.type.low >>> 0, message.type.high >>> 0).toNumber()\n : message.type\n if (message.unit != null && message.hasOwnProperty('unit'))\n if (typeof message.unit === 'number')\n object.unit = options.longs === String ? String(message.unit) : message.unit\n else\n object.unit =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.unit)\n : options.longs === Number\n ? new $util.LongBits(message.unit.low >>> 0, message.unit.high >>> 0).toNumber()\n : message.unit\n return object\n }\n\n /**\n * Converts this ValueType to JSON.\n * @function toJSON\n * @memberof perftools.profiles.ValueType\n * @instance\n * @returns {Object.} JSON object\n */\n ValueType.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return ValueType\n })()\n\n profiles.Sample = (function() {\n /**\n * Properties of a Sample.\n * @memberof perftools.profiles\n * @interface ISample\n * @property {Array.|null} [locationId] Sample locationId\n * @property {Array.|null} [value] Sample value\n * @property {Array.|null} [label] Sample label\n */\n\n /**\n * Constructs a new Sample.\n * @memberof perftools.profiles\n * @classdesc Represents a Sample.\n * @implements ISample\n * @constructor\n * @param {perftools.profiles.ISample=} [properties] Properties to set\n */\n function Sample(properties) {\n this.locationId = []\n this.value = []\n this.label = []\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Sample locationId.\n * @member {Array.} locationId\n * @memberof perftools.profiles.Sample\n * @instance\n */\n Sample.prototype.locationId = $util.emptyArray\n\n /**\n * Sample value.\n * @member {Array.} value\n * @memberof perftools.profiles.Sample\n * @instance\n */\n Sample.prototype.value = $util.emptyArray\n\n /**\n * Sample label.\n * @member {Array.} label\n * @memberof perftools.profiles.Sample\n * @instance\n */\n Sample.prototype.label = $util.emptyArray\n\n /**\n * Creates a new Sample instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Sample\n * @static\n * @param {perftools.profiles.ISample=} [properties] Properties to set\n * @returns {perftools.profiles.Sample} Sample instance\n */\n Sample.create = function create(properties) {\n return new Sample(properties)\n }\n\n /**\n * Encodes the specified Sample message. Does not implicitly {@link perftools.profiles.Sample.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Sample\n * @static\n * @param {perftools.profiles.ISample} message Sample message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sample.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.locationId != null && message.locationId.length) {\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork()\n for (var i = 0; i < message.locationId.length; ++i) writer.uint64(message.locationId[i])\n writer.ldelim()\n }\n if (message.value != null && message.value.length) {\n writer.uint32(/* id 2, wireType 2 =*/ 18).fork()\n for (var i = 0; i < message.value.length; ++i) writer.int64(message.value[i])\n writer.ldelim()\n }\n if (message.label != null && message.label.length)\n for (var i = 0; i < message.label.length; ++i)\n $root.perftools.profiles.Label.encode(\n message.label[i],\n writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n ).ldelim()\n return writer\n }\n\n /**\n * Encodes the specified Sample message, length delimited. Does not implicitly {@link perftools.profiles.Sample.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Sample\n * @static\n * @param {perftools.profiles.ISample} message Sample message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sample.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Sample message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Sample\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Sample} Sample\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sample.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Sample()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n if (!(message.locationId && message.locationId.length)) message.locationId = []\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos\n while (reader.pos < end2) message.locationId.push(reader.uint64())\n } else message.locationId.push(reader.uint64())\n break\n case 2:\n if (!(message.value && message.value.length)) message.value = []\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos\n while (reader.pos < end2) message.value.push(reader.int64())\n } else message.value.push(reader.int64())\n break\n case 3:\n if (!(message.label && message.label.length)) message.label = []\n message.label.push($root.perftools.profiles.Label.decode(reader, reader.uint32()))\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Sample message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Sample\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Sample} Sample\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sample.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Sample message.\n * @function verify\n * @memberof perftools.profiles.Sample\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Sample.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.locationId != null && message.hasOwnProperty('locationId')) {\n if (!Array.isArray(message.locationId)) return 'locationId: array expected'\n for (var i = 0; i < message.locationId.length; ++i)\n if (\n !$util.isInteger(message.locationId[i]) &&\n !(\n message.locationId[i] &&\n $util.isInteger(message.locationId[i].low) &&\n $util.isInteger(message.locationId[i].high)\n )\n )\n return 'locationId: integer|Long[] expected'\n }\n if (message.value != null && message.hasOwnProperty('value')) {\n if (!Array.isArray(message.value)) return 'value: array expected'\n for (var i = 0; i < message.value.length; ++i)\n if (\n !$util.isInteger(message.value[i]) &&\n !(\n message.value[i] &&\n $util.isInteger(message.value[i].low) &&\n $util.isInteger(message.value[i].high)\n )\n )\n return 'value: integer|Long[] expected'\n }\n if (message.label != null && message.hasOwnProperty('label')) {\n if (!Array.isArray(message.label)) return 'label: array expected'\n for (var i = 0; i < message.label.length; ++i) {\n var error = $root.perftools.profiles.Label.verify(message.label[i])\n if (error) return 'label.' + error\n }\n }\n return null\n }\n\n /**\n * Creates a Sample message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Sample\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Sample} Sample\n */\n Sample.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Sample) return object\n var message = new $root.perftools.profiles.Sample()\n if (object.locationId) {\n if (!Array.isArray(object.locationId))\n throw TypeError('.perftools.profiles.Sample.locationId: array expected')\n message.locationId = []\n for (var i = 0; i < object.locationId.length; ++i)\n if ($util.Long)\n (message.locationId[i] = $util.Long.fromValue(object.locationId[i])).unsigned = true\n else if (typeof object.locationId[i] === 'string')\n message.locationId[i] = parseInt(object.locationId[i], 10)\n else if (typeof object.locationId[i] === 'number')\n message.locationId[i] = object.locationId[i]\n else if (typeof object.locationId[i] === 'object')\n message.locationId[i] = new $util.LongBits(\n object.locationId[i].low >>> 0,\n object.locationId[i].high >>> 0,\n ).toNumber(true)\n }\n if (object.value) {\n if (!Array.isArray(object.value))\n throw TypeError('.perftools.profiles.Sample.value: array expected')\n message.value = []\n for (var i = 0; i < object.value.length; ++i)\n if ($util.Long)\n (message.value[i] = $util.Long.fromValue(object.value[i])).unsigned = false\n else if (typeof object.value[i] === 'string')\n message.value[i] = parseInt(object.value[i], 10)\n else if (typeof object.value[i] === 'number') message.value[i] = object.value[i]\n else if (typeof object.value[i] === 'object')\n message.value[i] = new $util.LongBits(\n object.value[i].low >>> 0,\n object.value[i].high >>> 0,\n ).toNumber()\n }\n if (object.label) {\n if (!Array.isArray(object.label))\n throw TypeError('.perftools.profiles.Sample.label: array expected')\n message.label = []\n for (var i = 0; i < object.label.length; ++i) {\n if (typeof object.label[i] !== 'object')\n throw TypeError('.perftools.profiles.Sample.label: object expected')\n message.label[i] = $root.perftools.profiles.Label.fromObject(object.label[i])\n }\n }\n return message\n }\n\n /**\n * Creates a plain object from a Sample message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Sample\n * @static\n * @param {perftools.profiles.Sample} message Sample\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Sample.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.arrays || options.defaults) {\n object.locationId = []\n object.value = []\n object.label = []\n }\n if (message.locationId && message.locationId.length) {\n object.locationId = []\n for (var j = 0; j < message.locationId.length; ++j)\n if (typeof message.locationId[j] === 'number')\n object.locationId[j] =\n options.longs === String ? String(message.locationId[j]) : message.locationId[j]\n else\n object.locationId[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.locationId[j])\n : options.longs === Number\n ? new $util.LongBits(\n message.locationId[j].low >>> 0,\n message.locationId[j].high >>> 0,\n ).toNumber(true)\n : message.locationId[j]\n }\n if (message.value && message.value.length) {\n object.value = []\n for (var j = 0; j < message.value.length; ++j)\n if (typeof message.value[j] === 'number')\n object.value[j] =\n options.longs === String ? String(message.value[j]) : message.value[j]\n else\n object.value[j] =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.value[j])\n : options.longs === Number\n ? new $util.LongBits(\n message.value[j].low >>> 0,\n message.value[j].high >>> 0,\n ).toNumber()\n : message.value[j]\n }\n if (message.label && message.label.length) {\n object.label = []\n for (var j = 0; j < message.label.length; ++j)\n object.label[j] = $root.perftools.profiles.Label.toObject(message.label[j], options)\n }\n return object\n }\n\n /**\n * Converts this Sample to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Sample\n * @instance\n * @returns {Object.} JSON object\n */\n Sample.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Sample\n })()\n\n profiles.Label = (function() {\n /**\n * Properties of a Label.\n * @memberof perftools.profiles\n * @interface ILabel\n * @property {number|Long|null} [key] Label key\n * @property {number|Long|null} [str] Label str\n * @property {number|Long|null} [num] Label num\n * @property {number|Long|null} [numUnit] Label numUnit\n */\n\n /**\n * Constructs a new Label.\n * @memberof perftools.profiles\n * @classdesc Represents a Label.\n * @implements ILabel\n * @constructor\n * @param {perftools.profiles.ILabel=} [properties] Properties to set\n */\n function Label(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Label key.\n * @member {number|Long} key\n * @memberof perftools.profiles.Label\n * @instance\n */\n Label.prototype.key = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Label str.\n * @member {number|Long} str\n * @memberof perftools.profiles.Label\n * @instance\n */\n Label.prototype.str = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Label num.\n * @member {number|Long} num\n * @memberof perftools.profiles.Label\n * @instance\n */\n Label.prototype.num = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Label numUnit.\n * @member {number|Long} numUnit\n * @memberof perftools.profiles.Label\n * @instance\n */\n Label.prototype.numUnit = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Creates a new Label instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Label\n * @static\n * @param {perftools.profiles.ILabel=} [properties] Properties to set\n * @returns {perftools.profiles.Label} Label instance\n */\n Label.create = function create(properties) {\n return new Label(properties)\n }\n\n /**\n * Encodes the specified Label message. Does not implicitly {@link perftools.profiles.Label.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Label\n * @static\n * @param {perftools.profiles.ILabel} message Label message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Label.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.key != null && message.hasOwnProperty('key'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.key)\n if (message.str != null && message.hasOwnProperty('str'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int64(message.str)\n if (message.num != null && message.hasOwnProperty('num'))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.num)\n if (message.numUnit != null && message.hasOwnProperty('numUnit'))\n writer.uint32(/* id 4, wireType 0 =*/ 32).int64(message.numUnit)\n return writer\n }\n\n /**\n * Encodes the specified Label message, length delimited. Does not implicitly {@link perftools.profiles.Label.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Label\n * @static\n * @param {perftools.profiles.ILabel} message Label message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Label.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Label message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Label\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Label} Label\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Label.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Label()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n message.key = reader.int64()\n break\n case 2:\n message.str = reader.int64()\n break\n case 3:\n message.num = reader.int64()\n break\n case 4:\n message.numUnit = reader.int64()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Label message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Label\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Label} Label\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Label.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Label message.\n * @function verify\n * @memberof perftools.profiles.Label\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Label.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.key != null && message.hasOwnProperty('key'))\n if (\n !$util.isInteger(message.key) &&\n !(message.key && $util.isInteger(message.key.low) && $util.isInteger(message.key.high))\n )\n return 'key: integer|Long expected'\n if (message.str != null && message.hasOwnProperty('str'))\n if (\n !$util.isInteger(message.str) &&\n !(message.str && $util.isInteger(message.str.low) && $util.isInteger(message.str.high))\n )\n return 'str: integer|Long expected'\n if (message.num != null && message.hasOwnProperty('num'))\n if (\n !$util.isInteger(message.num) &&\n !(message.num && $util.isInteger(message.num.low) && $util.isInteger(message.num.high))\n )\n return 'num: integer|Long expected'\n if (message.numUnit != null && message.hasOwnProperty('numUnit'))\n if (\n !$util.isInteger(message.numUnit) &&\n !(\n message.numUnit &&\n $util.isInteger(message.numUnit.low) &&\n $util.isInteger(message.numUnit.high)\n )\n )\n return 'numUnit: integer|Long expected'\n return null\n }\n\n /**\n * Creates a Label message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Label\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Label} Label\n */\n Label.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Label) return object\n var message = new $root.perftools.profiles.Label()\n if (object.key != null)\n if ($util.Long) (message.key = $util.Long.fromValue(object.key)).unsigned = false\n else if (typeof object.key === 'string') message.key = parseInt(object.key, 10)\n else if (typeof object.key === 'number') message.key = object.key\n else if (typeof object.key === 'object')\n message.key = new $util.LongBits(object.key.low >>> 0, object.key.high >>> 0).toNumber()\n if (object.str != null)\n if ($util.Long) (message.str = $util.Long.fromValue(object.str)).unsigned = false\n else if (typeof object.str === 'string') message.str = parseInt(object.str, 10)\n else if (typeof object.str === 'number') message.str = object.str\n else if (typeof object.str === 'object')\n message.str = new $util.LongBits(object.str.low >>> 0, object.str.high >>> 0).toNumber()\n if (object.num != null)\n if ($util.Long) (message.num = $util.Long.fromValue(object.num)).unsigned = false\n else if (typeof object.num === 'string') message.num = parseInt(object.num, 10)\n else if (typeof object.num === 'number') message.num = object.num\n else if (typeof object.num === 'object')\n message.num = new $util.LongBits(object.num.low >>> 0, object.num.high >>> 0).toNumber()\n if (object.numUnit != null)\n if ($util.Long) (message.numUnit = $util.Long.fromValue(object.numUnit)).unsigned = false\n else if (typeof object.numUnit === 'string')\n message.numUnit = parseInt(object.numUnit, 10)\n else if (typeof object.numUnit === 'number') message.numUnit = object.numUnit\n else if (typeof object.numUnit === 'object')\n message.numUnit = new $util.LongBits(\n object.numUnit.low >>> 0,\n object.numUnit.high >>> 0,\n ).toNumber()\n return message\n }\n\n /**\n * Creates a plain object from a Label message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Label\n * @static\n * @param {perftools.profiles.Label} message Label\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Label.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.key =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.key = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.str =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.str = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.num =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.num = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.numUnit =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.numUnit = options.longs === String ? '0' : 0\n }\n if (message.key != null && message.hasOwnProperty('key'))\n if (typeof message.key === 'number')\n object.key = options.longs === String ? String(message.key) : message.key\n else\n object.key =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.key)\n : options.longs === Number\n ? new $util.LongBits(message.key.low >>> 0, message.key.high >>> 0).toNumber()\n : message.key\n if (message.str != null && message.hasOwnProperty('str'))\n if (typeof message.str === 'number')\n object.str = options.longs === String ? String(message.str) : message.str\n else\n object.str =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.str)\n : options.longs === Number\n ? new $util.LongBits(message.str.low >>> 0, message.str.high >>> 0).toNumber()\n : message.str\n if (message.num != null && message.hasOwnProperty('num'))\n if (typeof message.num === 'number')\n object.num = options.longs === String ? String(message.num) : message.num\n else\n object.num =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.num)\n : options.longs === Number\n ? new $util.LongBits(message.num.low >>> 0, message.num.high >>> 0).toNumber()\n : message.num\n if (message.numUnit != null && message.hasOwnProperty('numUnit'))\n if (typeof message.numUnit === 'number')\n object.numUnit = options.longs === String ? String(message.numUnit) : message.numUnit\n else\n object.numUnit =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.numUnit)\n : options.longs === Number\n ? new $util.LongBits(\n message.numUnit.low >>> 0,\n message.numUnit.high >>> 0,\n ).toNumber()\n : message.numUnit\n return object\n }\n\n /**\n * Converts this Label to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Label\n * @instance\n * @returns {Object.} JSON object\n */\n Label.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Label\n })()\n\n profiles.Mapping = (function() {\n /**\n * Properties of a Mapping.\n * @memberof perftools.profiles\n * @interface IMapping\n * @property {number|Long|null} [id] Mapping id\n * @property {number|Long|null} [memoryStart] Mapping memoryStart\n * @property {number|Long|null} [memoryLimit] Mapping memoryLimit\n * @property {number|Long|null} [fileOffset] Mapping fileOffset\n * @property {number|Long|null} [filename] Mapping filename\n * @property {number|Long|null} [buildId] Mapping buildId\n * @property {boolean|null} [hasFunctions] Mapping hasFunctions\n * @property {boolean|null} [hasFilenames] Mapping hasFilenames\n * @property {boolean|null} [hasLineNumbers] Mapping hasLineNumbers\n * @property {boolean|null} [hasInlineFrames] Mapping hasInlineFrames\n */\n\n /**\n * Constructs a new Mapping.\n * @memberof perftools.profiles\n * @classdesc Represents a Mapping.\n * @implements IMapping\n * @constructor\n * @param {perftools.profiles.IMapping=} [properties] Properties to set\n */\n function Mapping(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Mapping id.\n * @member {number|Long} id\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.id = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Mapping memoryStart.\n * @member {number|Long} memoryStart\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.memoryStart = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Mapping memoryLimit.\n * @member {number|Long} memoryLimit\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.memoryLimit = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Mapping fileOffset.\n * @member {number|Long} fileOffset\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.fileOffset = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Mapping filename.\n * @member {number|Long} filename\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.filename = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Mapping buildId.\n * @member {number|Long} buildId\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.buildId = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Mapping hasFunctions.\n * @member {boolean} hasFunctions\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.hasFunctions = false\n\n /**\n * Mapping hasFilenames.\n * @member {boolean} hasFilenames\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.hasFilenames = false\n\n /**\n * Mapping hasLineNumbers.\n * @member {boolean} hasLineNumbers\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.hasLineNumbers = false\n\n /**\n * Mapping hasInlineFrames.\n * @member {boolean} hasInlineFrames\n * @memberof perftools.profiles.Mapping\n * @instance\n */\n Mapping.prototype.hasInlineFrames = false\n\n /**\n * Creates a new Mapping instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {perftools.profiles.IMapping=} [properties] Properties to set\n * @returns {perftools.profiles.Mapping} Mapping instance\n */\n Mapping.create = function create(properties) {\n return new Mapping(properties)\n }\n\n /**\n * Encodes the specified Mapping message. Does not implicitly {@link perftools.profiles.Mapping.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {perftools.profiles.IMapping} message Mapping message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Mapping.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.id != null && message.hasOwnProperty('id'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.id)\n if (message.memoryStart != null && message.hasOwnProperty('memoryStart'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).uint64(message.memoryStart)\n if (message.memoryLimit != null && message.hasOwnProperty('memoryLimit'))\n writer.uint32(/* id 3, wireType 0 =*/ 24).uint64(message.memoryLimit)\n if (message.fileOffset != null && message.hasOwnProperty('fileOffset'))\n writer.uint32(/* id 4, wireType 0 =*/ 32).uint64(message.fileOffset)\n if (message.filename != null && message.hasOwnProperty('filename'))\n writer.uint32(/* id 5, wireType 0 =*/ 40).int64(message.filename)\n if (message.buildId != null && message.hasOwnProperty('buildId'))\n writer.uint32(/* id 6, wireType 0 =*/ 48).int64(message.buildId)\n if (message.hasFunctions != null && message.hasOwnProperty('hasFunctions'))\n writer.uint32(/* id 7, wireType 0 =*/ 56).bool(message.hasFunctions)\n if (message.hasFilenames != null && message.hasOwnProperty('hasFilenames'))\n writer.uint32(/* id 8, wireType 0 =*/ 64).bool(message.hasFilenames)\n if (message.hasLineNumbers != null && message.hasOwnProperty('hasLineNumbers'))\n writer.uint32(/* id 9, wireType 0 =*/ 72).bool(message.hasLineNumbers)\n if (message.hasInlineFrames != null && message.hasOwnProperty('hasInlineFrames'))\n writer.uint32(/* id 10, wireType 0 =*/ 80).bool(message.hasInlineFrames)\n return writer\n }\n\n /**\n * Encodes the specified Mapping message, length delimited. Does not implicitly {@link perftools.profiles.Mapping.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {perftools.profiles.IMapping} message Mapping message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Mapping.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Mapping message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Mapping} Mapping\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Mapping.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Mapping()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n message.id = reader.uint64()\n break\n case 2:\n message.memoryStart = reader.uint64()\n break\n case 3:\n message.memoryLimit = reader.uint64()\n break\n case 4:\n message.fileOffset = reader.uint64()\n break\n case 5:\n message.filename = reader.int64()\n break\n case 6:\n message.buildId = reader.int64()\n break\n case 7:\n message.hasFunctions = reader.bool()\n break\n case 8:\n message.hasFilenames = reader.bool()\n break\n case 9:\n message.hasLineNumbers = reader.bool()\n break\n case 10:\n message.hasInlineFrames = reader.bool()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Mapping message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Mapping} Mapping\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Mapping.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Mapping message.\n * @function verify\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Mapping.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.id != null && message.hasOwnProperty('id'))\n if (\n !$util.isInteger(message.id) &&\n !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))\n )\n return 'id: integer|Long expected'\n if (message.memoryStart != null && message.hasOwnProperty('memoryStart'))\n if (\n !$util.isInteger(message.memoryStart) &&\n !(\n message.memoryStart &&\n $util.isInteger(message.memoryStart.low) &&\n $util.isInteger(message.memoryStart.high)\n )\n )\n return 'memoryStart: integer|Long expected'\n if (message.memoryLimit != null && message.hasOwnProperty('memoryLimit'))\n if (\n !$util.isInteger(message.memoryLimit) &&\n !(\n message.memoryLimit &&\n $util.isInteger(message.memoryLimit.low) &&\n $util.isInteger(message.memoryLimit.high)\n )\n )\n return 'memoryLimit: integer|Long expected'\n if (message.fileOffset != null && message.hasOwnProperty('fileOffset'))\n if (\n !$util.isInteger(message.fileOffset) &&\n !(\n message.fileOffset &&\n $util.isInteger(message.fileOffset.low) &&\n $util.isInteger(message.fileOffset.high)\n )\n )\n return 'fileOffset: integer|Long expected'\n if (message.filename != null && message.hasOwnProperty('filename'))\n if (\n !$util.isInteger(message.filename) &&\n !(\n message.filename &&\n $util.isInteger(message.filename.low) &&\n $util.isInteger(message.filename.high)\n )\n )\n return 'filename: integer|Long expected'\n if (message.buildId != null && message.hasOwnProperty('buildId'))\n if (\n !$util.isInteger(message.buildId) &&\n !(\n message.buildId &&\n $util.isInteger(message.buildId.low) &&\n $util.isInteger(message.buildId.high)\n )\n )\n return 'buildId: integer|Long expected'\n if (message.hasFunctions != null && message.hasOwnProperty('hasFunctions'))\n if (typeof message.hasFunctions !== 'boolean') return 'hasFunctions: boolean expected'\n if (message.hasFilenames != null && message.hasOwnProperty('hasFilenames'))\n if (typeof message.hasFilenames !== 'boolean') return 'hasFilenames: boolean expected'\n if (message.hasLineNumbers != null && message.hasOwnProperty('hasLineNumbers'))\n if (typeof message.hasLineNumbers !== 'boolean') return 'hasLineNumbers: boolean expected'\n if (message.hasInlineFrames != null && message.hasOwnProperty('hasInlineFrames'))\n if (typeof message.hasInlineFrames !== 'boolean')\n return 'hasInlineFrames: boolean expected'\n return null\n }\n\n /**\n * Creates a Mapping message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Mapping} Mapping\n */\n Mapping.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Mapping) return object\n var message = new $root.perftools.profiles.Mapping()\n if (object.id != null)\n if ($util.Long) (message.id = $util.Long.fromValue(object.id)).unsigned = true\n else if (typeof object.id === 'string') message.id = parseInt(object.id, 10)\n else if (typeof object.id === 'number') message.id = object.id\n else if (typeof object.id === 'object')\n message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(\n true,\n )\n if (object.memoryStart != null)\n if ($util.Long)\n (message.memoryStart = $util.Long.fromValue(object.memoryStart)).unsigned = true\n else if (typeof object.memoryStart === 'string')\n message.memoryStart = parseInt(object.memoryStart, 10)\n else if (typeof object.memoryStart === 'number') message.memoryStart = object.memoryStart\n else if (typeof object.memoryStart === 'object')\n message.memoryStart = new $util.LongBits(\n object.memoryStart.low >>> 0,\n object.memoryStart.high >>> 0,\n ).toNumber(true)\n if (object.memoryLimit != null)\n if ($util.Long)\n (message.memoryLimit = $util.Long.fromValue(object.memoryLimit)).unsigned = true\n else if (typeof object.memoryLimit === 'string')\n message.memoryLimit = parseInt(object.memoryLimit, 10)\n else if (typeof object.memoryLimit === 'number') message.memoryLimit = object.memoryLimit\n else if (typeof object.memoryLimit === 'object')\n message.memoryLimit = new $util.LongBits(\n object.memoryLimit.low >>> 0,\n object.memoryLimit.high >>> 0,\n ).toNumber(true)\n if (object.fileOffset != null)\n if ($util.Long)\n (message.fileOffset = $util.Long.fromValue(object.fileOffset)).unsigned = true\n else if (typeof object.fileOffset === 'string')\n message.fileOffset = parseInt(object.fileOffset, 10)\n else if (typeof object.fileOffset === 'number') message.fileOffset = object.fileOffset\n else if (typeof object.fileOffset === 'object')\n message.fileOffset = new $util.LongBits(\n object.fileOffset.low >>> 0,\n object.fileOffset.high >>> 0,\n ).toNumber(true)\n if (object.filename != null)\n if ($util.Long)\n (message.filename = $util.Long.fromValue(object.filename)).unsigned = false\n else if (typeof object.filename === 'string')\n message.filename = parseInt(object.filename, 10)\n else if (typeof object.filename === 'number') message.filename = object.filename\n else if (typeof object.filename === 'object')\n message.filename = new $util.LongBits(\n object.filename.low >>> 0,\n object.filename.high >>> 0,\n ).toNumber()\n if (object.buildId != null)\n if ($util.Long) (message.buildId = $util.Long.fromValue(object.buildId)).unsigned = false\n else if (typeof object.buildId === 'string')\n message.buildId = parseInt(object.buildId, 10)\n else if (typeof object.buildId === 'number') message.buildId = object.buildId\n else if (typeof object.buildId === 'object')\n message.buildId = new $util.LongBits(\n object.buildId.low >>> 0,\n object.buildId.high >>> 0,\n ).toNumber()\n if (object.hasFunctions != null) message.hasFunctions = Boolean(object.hasFunctions)\n if (object.hasFilenames != null) message.hasFilenames = Boolean(object.hasFilenames)\n if (object.hasLineNumbers != null) message.hasLineNumbers = Boolean(object.hasLineNumbers)\n if (object.hasInlineFrames != null)\n message.hasInlineFrames = Boolean(object.hasInlineFrames)\n return message\n }\n\n /**\n * Creates a plain object from a Mapping message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Mapping\n * @static\n * @param {perftools.profiles.Mapping} message Mapping\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Mapping.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.id =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.id = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.memoryStart =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.memoryStart = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.memoryLimit =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.memoryLimit = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.fileOffset =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.fileOffset = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.filename =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.filename = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.buildId =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.buildId = options.longs === String ? '0' : 0\n object.hasFunctions = false\n object.hasFilenames = false\n object.hasLineNumbers = false\n object.hasInlineFrames = false\n }\n if (message.id != null && message.hasOwnProperty('id'))\n if (typeof message.id === 'number')\n object.id = options.longs === String ? String(message.id) : message.id\n else\n object.id =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.id)\n : options.longs === Number\n ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber(true)\n : message.id\n if (message.memoryStart != null && message.hasOwnProperty('memoryStart'))\n if (typeof message.memoryStart === 'number')\n object.memoryStart =\n options.longs === String ? String(message.memoryStart) : message.memoryStart\n else\n object.memoryStart =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.memoryStart)\n : options.longs === Number\n ? new $util.LongBits(\n message.memoryStart.low >>> 0,\n message.memoryStart.high >>> 0,\n ).toNumber(true)\n : message.memoryStart\n if (message.memoryLimit != null && message.hasOwnProperty('memoryLimit'))\n if (typeof message.memoryLimit === 'number')\n object.memoryLimit =\n options.longs === String ? String(message.memoryLimit) : message.memoryLimit\n else\n object.memoryLimit =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.memoryLimit)\n : options.longs === Number\n ? new $util.LongBits(\n message.memoryLimit.low >>> 0,\n message.memoryLimit.high >>> 0,\n ).toNumber(true)\n : message.memoryLimit\n if (message.fileOffset != null && message.hasOwnProperty('fileOffset'))\n if (typeof message.fileOffset === 'number')\n object.fileOffset =\n options.longs === String ? String(message.fileOffset) : message.fileOffset\n else\n object.fileOffset =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.fileOffset)\n : options.longs === Number\n ? new $util.LongBits(\n message.fileOffset.low >>> 0,\n message.fileOffset.high >>> 0,\n ).toNumber(true)\n : message.fileOffset\n if (message.filename != null && message.hasOwnProperty('filename'))\n if (typeof message.filename === 'number')\n object.filename = options.longs === String ? String(message.filename) : message.filename\n else\n object.filename =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.filename)\n : options.longs === Number\n ? new $util.LongBits(\n message.filename.low >>> 0,\n message.filename.high >>> 0,\n ).toNumber()\n : message.filename\n if (message.buildId != null && message.hasOwnProperty('buildId'))\n if (typeof message.buildId === 'number')\n object.buildId = options.longs === String ? String(message.buildId) : message.buildId\n else\n object.buildId =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.buildId)\n : options.longs === Number\n ? new $util.LongBits(\n message.buildId.low >>> 0,\n message.buildId.high >>> 0,\n ).toNumber()\n : message.buildId\n if (message.hasFunctions != null && message.hasOwnProperty('hasFunctions'))\n object.hasFunctions = message.hasFunctions\n if (message.hasFilenames != null && message.hasOwnProperty('hasFilenames'))\n object.hasFilenames = message.hasFilenames\n if (message.hasLineNumbers != null && message.hasOwnProperty('hasLineNumbers'))\n object.hasLineNumbers = message.hasLineNumbers\n if (message.hasInlineFrames != null && message.hasOwnProperty('hasInlineFrames'))\n object.hasInlineFrames = message.hasInlineFrames\n return object\n }\n\n /**\n * Converts this Mapping to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Mapping\n * @instance\n * @returns {Object.} JSON object\n */\n Mapping.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Mapping\n })()\n\n profiles.Location = (function() {\n /**\n * Properties of a Location.\n * @memberof perftools.profiles\n * @interface ILocation\n * @property {number|Long|null} [id] Location id\n * @property {number|Long|null} [mappingId] Location mappingId\n * @property {number|Long|null} [address] Location address\n * @property {Array.|null} [line] Location line\n * @property {boolean|null} [isFolded] Location isFolded\n */\n\n /**\n * Constructs a new Location.\n * @memberof perftools.profiles\n * @classdesc Represents a Location.\n * @implements ILocation\n * @constructor\n * @param {perftools.profiles.ILocation=} [properties] Properties to set\n */\n function Location(properties) {\n this.line = []\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Location id.\n * @member {number|Long} id\n * @memberof perftools.profiles.Location\n * @instance\n */\n Location.prototype.id = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Location mappingId.\n * @member {number|Long} mappingId\n * @memberof perftools.profiles.Location\n * @instance\n */\n Location.prototype.mappingId = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Location address.\n * @member {number|Long} address\n * @memberof perftools.profiles.Location\n * @instance\n */\n Location.prototype.address = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Location line.\n * @member {Array.} line\n * @memberof perftools.profiles.Location\n * @instance\n */\n Location.prototype.line = $util.emptyArray\n\n /**\n * Location isFolded.\n * @member {boolean} isFolded\n * @memberof perftools.profiles.Location\n * @instance\n */\n Location.prototype.isFolded = false\n\n /**\n * Creates a new Location instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Location\n * @static\n * @param {perftools.profiles.ILocation=} [properties] Properties to set\n * @returns {perftools.profiles.Location} Location instance\n */\n Location.create = function create(properties) {\n return new Location(properties)\n }\n\n /**\n * Encodes the specified Location message. Does not implicitly {@link perftools.profiles.Location.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Location\n * @static\n * @param {perftools.profiles.ILocation} message Location message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Location.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.id != null && message.hasOwnProperty('id'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.id)\n if (message.mappingId != null && message.hasOwnProperty('mappingId'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).uint64(message.mappingId)\n if (message.address != null && message.hasOwnProperty('address'))\n writer.uint32(/* id 3, wireType 0 =*/ 24).uint64(message.address)\n if (message.line != null && message.line.length)\n for (var i = 0; i < message.line.length; ++i)\n $root.perftools.profiles.Line.encode(\n message.line[i],\n writer.uint32(/* id 4, wireType 2 =*/ 34).fork(),\n ).ldelim()\n if (message.isFolded != null && message.hasOwnProperty('isFolded'))\n writer.uint32(/* id 5, wireType 0 =*/ 40).bool(message.isFolded)\n return writer\n }\n\n /**\n * Encodes the specified Location message, length delimited. Does not implicitly {@link perftools.profiles.Location.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Location\n * @static\n * @param {perftools.profiles.ILocation} message Location message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Location.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Location message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Location\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Location} Location\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Location.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Location()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n message.id = reader.uint64()\n break\n case 2:\n message.mappingId = reader.uint64()\n break\n case 3:\n message.address = reader.uint64()\n break\n case 4:\n if (!(message.line && message.line.length)) message.line = []\n message.line.push($root.perftools.profiles.Line.decode(reader, reader.uint32()))\n break\n case 5:\n message.isFolded = reader.bool()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Location message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Location\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Location} Location\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Location.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Location message.\n * @function verify\n * @memberof perftools.profiles.Location\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Location.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.id != null && message.hasOwnProperty('id'))\n if (\n !$util.isInteger(message.id) &&\n !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))\n )\n return 'id: integer|Long expected'\n if (message.mappingId != null && message.hasOwnProperty('mappingId'))\n if (\n !$util.isInteger(message.mappingId) &&\n !(\n message.mappingId &&\n $util.isInteger(message.mappingId.low) &&\n $util.isInteger(message.mappingId.high)\n )\n )\n return 'mappingId: integer|Long expected'\n if (message.address != null && message.hasOwnProperty('address'))\n if (\n !$util.isInteger(message.address) &&\n !(\n message.address &&\n $util.isInteger(message.address.low) &&\n $util.isInteger(message.address.high)\n )\n )\n return 'address: integer|Long expected'\n if (message.line != null && message.hasOwnProperty('line')) {\n if (!Array.isArray(message.line)) return 'line: array expected'\n for (var i = 0; i < message.line.length; ++i) {\n var error = $root.perftools.profiles.Line.verify(message.line[i])\n if (error) return 'line.' + error\n }\n }\n if (message.isFolded != null && message.hasOwnProperty('isFolded'))\n if (typeof message.isFolded !== 'boolean') return 'isFolded: boolean expected'\n return null\n }\n\n /**\n * Creates a Location message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Location\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Location} Location\n */\n Location.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Location) return object\n var message = new $root.perftools.profiles.Location()\n if (object.id != null)\n if ($util.Long) (message.id = $util.Long.fromValue(object.id)).unsigned = true\n else if (typeof object.id === 'string') message.id = parseInt(object.id, 10)\n else if (typeof object.id === 'number') message.id = object.id\n else if (typeof object.id === 'object')\n message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(\n true,\n )\n if (object.mappingId != null)\n if ($util.Long)\n (message.mappingId = $util.Long.fromValue(object.mappingId)).unsigned = true\n else if (typeof object.mappingId === 'string')\n message.mappingId = parseInt(object.mappingId, 10)\n else if (typeof object.mappingId === 'number') message.mappingId = object.mappingId\n else if (typeof object.mappingId === 'object')\n message.mappingId = new $util.LongBits(\n object.mappingId.low >>> 0,\n object.mappingId.high >>> 0,\n ).toNumber(true)\n if (object.address != null)\n if ($util.Long) (message.address = $util.Long.fromValue(object.address)).unsigned = true\n else if (typeof object.address === 'string')\n message.address = parseInt(object.address, 10)\n else if (typeof object.address === 'number') message.address = object.address\n else if (typeof object.address === 'object')\n message.address = new $util.LongBits(\n object.address.low >>> 0,\n object.address.high >>> 0,\n ).toNumber(true)\n if (object.line) {\n if (!Array.isArray(object.line))\n throw TypeError('.perftools.profiles.Location.line: array expected')\n message.line = []\n for (var i = 0; i < object.line.length; ++i) {\n if (typeof object.line[i] !== 'object')\n throw TypeError('.perftools.profiles.Location.line: object expected')\n message.line[i] = $root.perftools.profiles.Line.fromObject(object.line[i])\n }\n }\n if (object.isFolded != null) message.isFolded = Boolean(object.isFolded)\n return message\n }\n\n /**\n * Creates a plain object from a Location message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Location\n * @static\n * @param {perftools.profiles.Location} message Location\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Location.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.arrays || options.defaults) object.line = []\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.id =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.id = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.mappingId =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.mappingId = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.address =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.address = options.longs === String ? '0' : 0\n object.isFolded = false\n }\n if (message.id != null && message.hasOwnProperty('id'))\n if (typeof message.id === 'number')\n object.id = options.longs === String ? String(message.id) : message.id\n else\n object.id =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.id)\n : options.longs === Number\n ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber(true)\n : message.id\n if (message.mappingId != null && message.hasOwnProperty('mappingId'))\n if (typeof message.mappingId === 'number')\n object.mappingId =\n options.longs === String ? String(message.mappingId) : message.mappingId\n else\n object.mappingId =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.mappingId)\n : options.longs === Number\n ? new $util.LongBits(\n message.mappingId.low >>> 0,\n message.mappingId.high >>> 0,\n ).toNumber(true)\n : message.mappingId\n if (message.address != null && message.hasOwnProperty('address'))\n if (typeof message.address === 'number')\n object.address = options.longs === String ? String(message.address) : message.address\n else\n object.address =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.address)\n : options.longs === Number\n ? new $util.LongBits(\n message.address.low >>> 0,\n message.address.high >>> 0,\n ).toNumber(true)\n : message.address\n if (message.line && message.line.length) {\n object.line = []\n for (var j = 0; j < message.line.length; ++j)\n object.line[j] = $root.perftools.profiles.Line.toObject(message.line[j], options)\n }\n if (message.isFolded != null && message.hasOwnProperty('isFolded'))\n object.isFolded = message.isFolded\n return object\n }\n\n /**\n * Converts this Location to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Location\n * @instance\n * @returns {Object.} JSON object\n */\n Location.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Location\n })()\n\n profiles.Line = (function() {\n /**\n * Properties of a Line.\n * @memberof perftools.profiles\n * @interface ILine\n * @property {number|Long|null} [functionId] Line functionId\n * @property {number|Long|null} [line] Line line\n */\n\n /**\n * Constructs a new Line.\n * @memberof perftools.profiles\n * @classdesc Represents a Line.\n * @implements ILine\n * @constructor\n * @param {perftools.profiles.ILine=} [properties] Properties to set\n */\n function Line(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Line functionId.\n * @member {number|Long} functionId\n * @memberof perftools.profiles.Line\n * @instance\n */\n Line.prototype.functionId = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Line line.\n * @member {number|Long} line\n * @memberof perftools.profiles.Line\n * @instance\n */\n Line.prototype.line = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Creates a new Line instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Line\n * @static\n * @param {perftools.profiles.ILine=} [properties] Properties to set\n * @returns {perftools.profiles.Line} Line instance\n */\n Line.create = function create(properties) {\n return new Line(properties)\n }\n\n /**\n * Encodes the specified Line message. Does not implicitly {@link perftools.profiles.Line.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Line\n * @static\n * @param {perftools.profiles.ILine} message Line message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Line.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.functionId != null && message.hasOwnProperty('functionId'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.functionId)\n if (message.line != null && message.hasOwnProperty('line'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int64(message.line)\n return writer\n }\n\n /**\n * Encodes the specified Line message, length delimited. Does not implicitly {@link perftools.profiles.Line.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Line\n * @static\n * @param {perftools.profiles.ILine} message Line message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Line.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Line message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Line\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Line} Line\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Line.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Line()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n message.functionId = reader.uint64()\n break\n case 2:\n message.line = reader.int64()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Line message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Line\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Line} Line\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Line.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Line message.\n * @function verify\n * @memberof perftools.profiles.Line\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Line.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.functionId != null && message.hasOwnProperty('functionId'))\n if (\n !$util.isInteger(message.functionId) &&\n !(\n message.functionId &&\n $util.isInteger(message.functionId.low) &&\n $util.isInteger(message.functionId.high)\n )\n )\n return 'functionId: integer|Long expected'\n if (message.line != null && message.hasOwnProperty('line'))\n if (\n !$util.isInteger(message.line) &&\n !(\n message.line &&\n $util.isInteger(message.line.low) &&\n $util.isInteger(message.line.high)\n )\n )\n return 'line: integer|Long expected'\n return null\n }\n\n /**\n * Creates a Line message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Line\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Line} Line\n */\n Line.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Line) return object\n var message = new $root.perftools.profiles.Line()\n if (object.functionId != null)\n if ($util.Long)\n (message.functionId = $util.Long.fromValue(object.functionId)).unsigned = true\n else if (typeof object.functionId === 'string')\n message.functionId = parseInt(object.functionId, 10)\n else if (typeof object.functionId === 'number') message.functionId = object.functionId\n else if (typeof object.functionId === 'object')\n message.functionId = new $util.LongBits(\n object.functionId.low >>> 0,\n object.functionId.high >>> 0,\n ).toNumber(true)\n if (object.line != null)\n if ($util.Long) (message.line = $util.Long.fromValue(object.line)).unsigned = false\n else if (typeof object.line === 'string') message.line = parseInt(object.line, 10)\n else if (typeof object.line === 'number') message.line = object.line\n else if (typeof object.line === 'object')\n message.line = new $util.LongBits(\n object.line.low >>> 0,\n object.line.high >>> 0,\n ).toNumber()\n return message\n }\n\n /**\n * Creates a plain object from a Line message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Line\n * @static\n * @param {perftools.profiles.Line} message Line\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Line.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.functionId =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.functionId = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.line =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.line = options.longs === String ? '0' : 0\n }\n if (message.functionId != null && message.hasOwnProperty('functionId'))\n if (typeof message.functionId === 'number')\n object.functionId =\n options.longs === String ? String(message.functionId) : message.functionId\n else\n object.functionId =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.functionId)\n : options.longs === Number\n ? new $util.LongBits(\n message.functionId.low >>> 0,\n message.functionId.high >>> 0,\n ).toNumber(true)\n : message.functionId\n if (message.line != null && message.hasOwnProperty('line'))\n if (typeof message.line === 'number')\n object.line = options.longs === String ? String(message.line) : message.line\n else\n object.line =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.line)\n : options.longs === Number\n ? new $util.LongBits(message.line.low >>> 0, message.line.high >>> 0).toNumber()\n : message.line\n return object\n }\n\n /**\n * Converts this Line to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Line\n * @instance\n * @returns {Object.} JSON object\n */\n Line.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Line\n })()\n\n profiles.Function = (function() {\n /**\n * Properties of a Function.\n * @memberof perftools.profiles\n * @interface IFunction\n * @property {number|Long|null} [id] Function id\n * @property {number|Long|null} [name] Function name\n * @property {number|Long|null} [systemName] Function systemName\n * @property {number|Long|null} [filename] Function filename\n * @property {number|Long|null} [startLine] Function startLine\n */\n\n /**\n * Constructs a new Function.\n * @memberof perftools.profiles\n * @classdesc Represents a Function.\n * @implements IFunction\n * @constructor\n * @param {perftools.profiles.IFunction=} [properties] Properties to set\n */\n function Function(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n }\n\n /**\n * Function id.\n * @member {number|Long} id\n * @memberof perftools.profiles.Function\n * @instance\n */\n Function.prototype.id = $util.Long ? $util.Long.fromBits(0, 0, true) : 0\n\n /**\n * Function name.\n * @member {number|Long} name\n * @memberof perftools.profiles.Function\n * @instance\n */\n Function.prototype.name = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Function systemName.\n * @member {number|Long} systemName\n * @memberof perftools.profiles.Function\n * @instance\n */\n Function.prototype.systemName = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Function filename.\n * @member {number|Long} filename\n * @memberof perftools.profiles.Function\n * @instance\n */\n Function.prototype.filename = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Function startLine.\n * @member {number|Long} startLine\n * @memberof perftools.profiles.Function\n * @instance\n */\n Function.prototype.startLine = $util.Long ? $util.Long.fromBits(0, 0, false) : 0\n\n /**\n * Creates a new Function instance using the specified properties.\n * @function create\n * @memberof perftools.profiles.Function\n * @static\n * @param {perftools.profiles.IFunction=} [properties] Properties to set\n * @returns {perftools.profiles.Function} Function instance\n */\n Function.create = function create(properties) {\n return new Function(properties)\n }\n\n /**\n * Encodes the specified Function message. Does not implicitly {@link perftools.profiles.Function.verify|verify} messages.\n * @function encode\n * @memberof perftools.profiles.Function\n * @static\n * @param {perftools.profiles.IFunction} message Function message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Function.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create()\n if (message.id != null && message.hasOwnProperty('id'))\n writer.uint32(/* id 1, wireType 0 =*/ 8).uint64(message.id)\n if (message.name != null && message.hasOwnProperty('name'))\n writer.uint32(/* id 2, wireType 0 =*/ 16).int64(message.name)\n if (message.systemName != null && message.hasOwnProperty('systemName'))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.systemName)\n if (message.filename != null && message.hasOwnProperty('filename'))\n writer.uint32(/* id 4, wireType 0 =*/ 32).int64(message.filename)\n if (message.startLine != null && message.hasOwnProperty('startLine'))\n writer.uint32(/* id 5, wireType 0 =*/ 40).int64(message.startLine)\n return writer\n }\n\n /**\n * Encodes the specified Function message, length delimited. Does not implicitly {@link perftools.profiles.Function.verify|verify} messages.\n * @function encodeDelimited\n * @memberof perftools.profiles.Function\n * @static\n * @param {perftools.profiles.IFunction} message Function message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Function.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim()\n }\n\n /**\n * Decodes a Function message from the specified reader or buffer.\n * @function decode\n * @memberof perftools.profiles.Function\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {perftools.profiles.Function} Function\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Function.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n var end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.perftools.profiles.Function()\n while (reader.pos < end) {\n var tag = reader.uint32()\n switch (tag >>> 3) {\n case 1:\n message.id = reader.uint64()\n break\n case 2:\n message.name = reader.int64()\n break\n case 3:\n message.systemName = reader.int64()\n break\n case 4:\n message.filename = reader.int64()\n break\n case 5:\n message.startLine = reader.int64()\n break\n default:\n reader.skipType(tag & 7)\n break\n }\n }\n return message\n }\n\n /**\n * Decodes a Function message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof perftools.profiles.Function\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {perftools.profiles.Function} Function\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Function.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader)\n return this.decode(reader, reader.uint32())\n }\n\n /**\n * Verifies a Function message.\n * @function verify\n * @memberof perftools.profiles.Function\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Function.verify = function verify(message) {\n if (typeof message !== 'object' || message === null) return 'object expected'\n if (message.id != null && message.hasOwnProperty('id'))\n if (\n !$util.isInteger(message.id) &&\n !(message.id && $util.isInteger(message.id.low) && $util.isInteger(message.id.high))\n )\n return 'id: integer|Long expected'\n if (message.name != null && message.hasOwnProperty('name'))\n if (\n !$util.isInteger(message.name) &&\n !(\n message.name &&\n $util.isInteger(message.name.low) &&\n $util.isInteger(message.name.high)\n )\n )\n return 'name: integer|Long expected'\n if (message.systemName != null && message.hasOwnProperty('systemName'))\n if (\n !$util.isInteger(message.systemName) &&\n !(\n message.systemName &&\n $util.isInteger(message.systemName.low) &&\n $util.isInteger(message.systemName.high)\n )\n )\n return 'systemName: integer|Long expected'\n if (message.filename != null && message.hasOwnProperty('filename'))\n if (\n !$util.isInteger(message.filename) &&\n !(\n message.filename &&\n $util.isInteger(message.filename.low) &&\n $util.isInteger(message.filename.high)\n )\n )\n return 'filename: integer|Long expected'\n if (message.startLine != null && message.hasOwnProperty('startLine'))\n if (\n !$util.isInteger(message.startLine) &&\n !(\n message.startLine &&\n $util.isInteger(message.startLine.low) &&\n $util.isInteger(message.startLine.high)\n )\n )\n return 'startLine: integer|Long expected'\n return null\n }\n\n /**\n * Creates a Function message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof perftools.profiles.Function\n * @static\n * @param {Object.} object Plain object\n * @returns {perftools.profiles.Function} Function\n */\n Function.fromObject = function fromObject(object) {\n if (object instanceof $root.perftools.profiles.Function) return object\n var message = new $root.perftools.profiles.Function()\n if (object.id != null)\n if ($util.Long) (message.id = $util.Long.fromValue(object.id)).unsigned = true\n else if (typeof object.id === 'string') message.id = parseInt(object.id, 10)\n else if (typeof object.id === 'number') message.id = object.id\n else if (typeof object.id === 'object')\n message.id = new $util.LongBits(object.id.low >>> 0, object.id.high >>> 0).toNumber(\n true,\n )\n if (object.name != null)\n if ($util.Long) (message.name = $util.Long.fromValue(object.name)).unsigned = false\n else if (typeof object.name === 'string') message.name = parseInt(object.name, 10)\n else if (typeof object.name === 'number') message.name = object.name\n else if (typeof object.name === 'object')\n message.name = new $util.LongBits(\n object.name.low >>> 0,\n object.name.high >>> 0,\n ).toNumber()\n if (object.systemName != null)\n if ($util.Long)\n (message.systemName = $util.Long.fromValue(object.systemName)).unsigned = false\n else if (typeof object.systemName === 'string')\n message.systemName = parseInt(object.systemName, 10)\n else if (typeof object.systemName === 'number') message.systemName = object.systemName\n else if (typeof object.systemName === 'object')\n message.systemName = new $util.LongBits(\n object.systemName.low >>> 0,\n object.systemName.high >>> 0,\n ).toNumber()\n if (object.filename != null)\n if ($util.Long)\n (message.filename = $util.Long.fromValue(object.filename)).unsigned = false\n else if (typeof object.filename === 'string')\n message.filename = parseInt(object.filename, 10)\n else if (typeof object.filename === 'number') message.filename = object.filename\n else if (typeof object.filename === 'object')\n message.filename = new $util.LongBits(\n object.filename.low >>> 0,\n object.filename.high >>> 0,\n ).toNumber()\n if (object.startLine != null)\n if ($util.Long)\n (message.startLine = $util.Long.fromValue(object.startLine)).unsigned = false\n else if (typeof object.startLine === 'string')\n message.startLine = parseInt(object.startLine, 10)\n else if (typeof object.startLine === 'number') message.startLine = object.startLine\n else if (typeof object.startLine === 'object')\n message.startLine = new $util.LongBits(\n object.startLine.low >>> 0,\n object.startLine.high >>> 0,\n ).toNumber()\n return message\n }\n\n /**\n * Creates a plain object from a Function message. Also converts values to other types if specified.\n * @function toObject\n * @memberof perftools.profiles.Function\n * @static\n * @param {perftools.profiles.Function} message Function\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n Function.toObject = function toObject(message, options) {\n if (!options) options = {}\n var object = {}\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true)\n object.id =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.id = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.name =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.name = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.systemName =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.systemName = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.filename =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.filename = options.longs === String ? '0' : 0\n if ($util.Long) {\n var long = new $util.Long(0, 0, false)\n object.startLine =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long\n } else object.startLine = options.longs === String ? '0' : 0\n }\n if (message.id != null && message.hasOwnProperty('id'))\n if (typeof message.id === 'number')\n object.id = options.longs === String ? String(message.id) : message.id\n else\n object.id =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.id)\n : options.longs === Number\n ? new $util.LongBits(message.id.low >>> 0, message.id.high >>> 0).toNumber(true)\n : message.id\n if (message.name != null && message.hasOwnProperty('name'))\n if (typeof message.name === 'number')\n object.name = options.longs === String ? String(message.name) : message.name\n else\n object.name =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.name)\n : options.longs === Number\n ? new $util.LongBits(message.name.low >>> 0, message.name.high >>> 0).toNumber()\n : message.name\n if (message.systemName != null && message.hasOwnProperty('systemName'))\n if (typeof message.systemName === 'number')\n object.systemName =\n options.longs === String ? String(message.systemName) : message.systemName\n else\n object.systemName =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.systemName)\n : options.longs === Number\n ? new $util.LongBits(\n message.systemName.low >>> 0,\n message.systemName.high >>> 0,\n ).toNumber()\n : message.systemName\n if (message.filename != null && message.hasOwnProperty('filename'))\n if (typeof message.filename === 'number')\n object.filename = options.longs === String ? String(message.filename) : message.filename\n else\n object.filename =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.filename)\n : options.longs === Number\n ? new $util.LongBits(\n message.filename.low >>> 0,\n message.filename.high >>> 0,\n ).toNumber()\n : message.filename\n if (message.startLine != null && message.hasOwnProperty('startLine'))\n if (typeof message.startLine === 'number')\n object.startLine =\n options.longs === String ? String(message.startLine) : message.startLine\n else\n object.startLine =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.startLine)\n : options.longs === Number\n ? new $util.LongBits(\n message.startLine.low >>> 0,\n message.startLine.high >>> 0,\n ).toNumber()\n : message.startLine\n return object\n }\n\n /**\n * Converts this Function to JSON.\n * @function toJSON\n * @memberof perftools.profiles.Function\n * @instance\n * @returns {Object.} JSON object\n */\n Function.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions)\n }\n\n return Function\n })()\n\n return profiles\n })()\n\n return perftools\n})()\n\nmodule.exports = $root\n","import {perftools} from './profile.proto.js'\nimport {FrameInfo, StackListProfileBuilder, Profile} from '../lib/profile'\nimport {lastOf} from '../lib/utils'\nimport {TimeFormatter, ByteFormatter} from '../lib/value-formatters'\n\ninterface SampleType {\n type: string\n unit: string\n}\n\nexport function importAsPprofProfile(rawProfile: ArrayBuffer): Profile | null {\n if (rawProfile.byteLength === 0) return null\n\n let protoProfile: perftools.profiles.Profile\n try {\n protoProfile = perftools.profiles.Profile.decode(new Uint8Array(rawProfile))\n } catch (e) {\n return null\n }\n\n function i32(n: number | Long): number {\n return typeof n === 'number' ? n : (n as Long).low\n }\n\n function stringVal(key: number | Long): string | null {\n return protoProfile.stringTable[i32(key)] || null\n }\n\n const frameInfoByFunctionID = new Map()\n\n function frameInfoForFunction(f: perftools.profiles.IFunction): FrameInfo | null {\n const {name, filename, startLine} = f\n\n const nameString = (name != null && stringVal(name)) || '(unknown)'\n const fileNameString = filename != null ? stringVal(filename) : null\n const line = startLine != null ? +startLine : null\n\n const key = `${nameString}:${fileNameString}:${line}`\n\n const frameInfo: FrameInfo = {\n key,\n name: nameString,\n }\n\n if (fileNameString != null) {\n frameInfo.file = fileNameString\n }\n\n if (line != null) {\n frameInfo.line = line\n }\n\n return frameInfo\n }\n\n for (let f of protoProfile.function) {\n if (f.id) {\n const frameInfo = frameInfoForFunction(f)\n if (frameInfo != null) {\n frameInfoByFunctionID.set(i32(f.id), frameInfo)\n }\n }\n }\n\n function frameInfoForLocation(location: perftools.profiles.ILocation): FrameInfo | null {\n const {line} = location\n if (line == null) return null\n\n // From a comment on profile.proto:\n //\n // Multiple line indicates this location has inlined functions,\n // where the last entry represents the caller into which the\n // preceding entries were inlined.\n //\n // E.g., if memcpy() is inlined into printf:\n // line[0].function_name == \"memcpy\"\n // line[1].function_name == \"printf\"\n //\n // Let's just take the last line then\n const lastLine = lastOf(line)\n if (lastLine == null) return null\n\n if (lastLine.functionId) {\n return frameInfoByFunctionID.get(i32(lastLine.functionId)) || null\n } else {\n return null\n }\n }\n\n const frameByLocationID = new Map()\n\n for (let l of protoProfile.location) {\n if (l.id != null) {\n const frameInfo = frameInfoForLocation(l)\n if (frameInfo) {\n frameByLocationID.set(i32(l.id), frameInfo)\n }\n }\n }\n\n const sampleTypes: SampleType[] = protoProfile.sampleType.map(type => ({\n type: (type.type && stringVal(type.type)) || 'samples',\n unit: (type.unit && stringVal(type.unit)) || 'count',\n }))\n\n const sampleTypeIndex = protoProfile.defaultSampleType\n ? +protoProfile.defaultSampleType\n : sampleTypes.length - 1\n const sampleType = sampleTypes[sampleTypeIndex]\n\n const profileBuilder = new StackListProfileBuilder()\n\n switch (sampleType.unit) {\n case 'nanoseconds':\n case 'microseconds':\n case 'milliseconds':\n case 'seconds':\n profileBuilder.setValueFormatter(new TimeFormatter(sampleType.unit))\n break\n\n case 'bytes':\n profileBuilder.setValueFormatter(new ByteFormatter())\n break\n }\n\n for (let s of protoProfile.sample) {\n const stack = s.locationId ? s.locationId.map(l => frameByLocationID.get(i32(l))) : []\n stack.reverse()\n const value = s.value![sampleTypeIndex]\n profileBuilder.appendSampleWithWeight(stack.filter(f => f != null) as FrameInfo[], +value)\n }\n\n return profileBuilder.build()\n}\n","import {Profile, FrameInfo, StackListProfileBuilder} from '../lib/profile'\nimport {getOrInsert} from '../lib/utils'\nimport {ByteFormatter} from '../lib/value-formatters'\n\n/**\n * The V8 Heap Allocation profile is a way to represent heap allocation for each\n * javascript function. The format is a simple tree where the weight of each node\n * represent the memory allocated by the function and all its callee.\n * You can find more information on how to get a profile there :\n * https://developers.google.com/web/tools/chrome-devtools/memory-problems/#allocation-profile\n * You need to scroll down to \"Investigate memory allocation by function\"\n *\n * Note that Node.JS can retrieve this kind of profile via the Inspector protocol.\n */\n\ninterface HeapProfileCallFrame {\n columnNumber: number\n functionName: string\n lineNumber: number\n scriptId: string\n url: string\n}\n\ninterface HeapProfileNode {\n callFrame: HeapProfileCallFrame\n selfSize: number\n children: HeapProfileNode[]\n id: number\n parent?: number\n totalSize: number\n}\n\ninterface HeapProfile {\n head: HeapProfileNode\n}\n\nconst callFrameToFrameInfo = new Map()\nfunction frameInfoForCallFrame(callFrame: HeapProfileCallFrame) {\n return getOrInsert(callFrameToFrameInfo, callFrame, callFrame => {\n const file = callFrame.url\n const line = callFrame.lineNumber\n const col = callFrame.columnNumber\n const name =\n callFrame.functionName ||\n (file ? `(anonymous ${file.split('/').pop()}:${line})` : '(anonymous)')\n return {\n key: `${name}:${file}:${line}:${col}`,\n name,\n file,\n line,\n col,\n }\n })\n}\n\nexport function importFromChromeHeapProfile(chromeProfile: HeapProfile): Profile {\n const nodeById = new Map()\n let currentId = 0\n const computeId = (node: HeapProfileNode, parent?: HeapProfileNode) => {\n node.id = currentId++\n nodeById.set(node.id, node)\n if (parent) {\n node.parent = parent.id\n }\n\n node.children.forEach(children => computeId(children, node))\n }\n computeId(chromeProfile.head)\n\n // Compute the total size\n const computeTotalSize = (node: HeapProfileNode): number => {\n if (node.children.length === 0) return node.selfSize || 0\n const totalChild = node.children.reduce((total: number, children) => {\n total += computeTotalSize(children)\n return total\n }, node.selfSize)\n node.totalSize = totalChild\n return totalChild\n }\n const total = computeTotalSize(chromeProfile.head)\n\n // Compute all stacks by taking each last node and going upward\n const stacks: HeapProfileNode[][] = []\n for (let currentNode of nodeById.values()) {\n let stack: HeapProfileNode[] = []\n stack.push(currentNode)\n // While we found a parent\n while (true) {\n if (currentNode.parent === undefined) break\n const parent = nodeById.get(currentNode.parent)\n if (parent === undefined) break\n // Push the parent at the beginning of the stack\n stack.unshift(parent)\n currentNode = parent\n }\n stacks.push(stack)\n }\n\n const profile = new StackListProfileBuilder(total)\n\n for (let stack of stacks) {\n const lastFrame = stack[stack.length - 1]\n profile.appendSampleWithWeight(\n stack.map(frame => frameInfoForCallFrame(frame.callFrame)),\n lastFrame.selfSize,\n )\n }\n\n profile.setValueFormatter(new ByteFormatter())\n return profile.build()\n}\n","import {sortBy, zeroPad, getOrInsert, lastOf} from '../lib/utils'\nimport {ProfileGroup, CallTreeProfileBuilder, FrameInfo, Profile} from '../lib/profile'\nimport {TimeFormatter} from '../lib/value-formatters'\n\n// This file concerns import from the \"Trace Event Format\", authored by Google\n// and used for Google's own chrome://trace.\n//\n// The file format is extremely general, and we only support the parts of it\n// that logically map onto speedscope's visualization capabilities.\n// Specifically, we only support the \"B\", \"E\", and \"X\" event types. Everything\n// else is ignored. We do, however, support import of profiles that are\n// multi-process/multi-threaded. Each process is split into a separate profile.\n//\n// Note that Chrome Developer Tools uses this format as well, but all the\n// relevant data used in those profiles is stored in events with the name\n// \"CpuProfile\", \"Profile\", or \"ProfileChunk\". If we detect those, we prioritize\n// importing the profile as a Chrome Developer Tools profile. Otherwise,\n// we try to import it as a \"Trace Event Format\" file.\n//\n// Spec: https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview\n\ninterface TraceEvent {\n // The process ID for the process that output this event.\n pid: number\n\n // The thread ID for the thread that output this event.\n tid: number\n\n // The event type. This is a single character which changes depending on the type of event being output. The valid values are listed in the table below. We will discuss each phase type below.\n ph: string\n\n // The tracing clock timestamp of the event. The timestamps are provided at microsecond granularity.\n ts: number\n\n // The thread clock timestamp of the event. The timestamps are provided at microsecond granularity.\n tts?: number\n\n // The name of the event, as displayed in Trace Viewer\n name?: string\n\n // The event categories. This is a comma separated list of categories for the event. The categories can be used to hide events in the Trace Viewer UI.\n cat?: string\n\n // Any arguments provided for the event. Some of the event types have required argument fields, otherwise, you can put any information you wish in here. The arguments are displayed in Trace Viewer when you view an event in the analysis section.\n args: any\n\n // A fixed color name to associate with the event. If provided, cname must be one of the names listed in trace-viewer's base color scheme's reserved color names list\n cname?: string\n}\n\ninterface BTraceEvent extends TraceEvent {\n ph: 'B'\n}\n\ninterface ETraceEvent extends TraceEvent {\n ph: 'E'\n}\n\ninterface XTraceEvent extends TraceEvent {\n ph: 'X'\n dur?: number\n tdur?: number\n}\n\n// The trace format supports a number of event types that we ignore.\ntype ImportableTraceEvent = BTraceEvent | ETraceEvent | XTraceEvent\n\nfunction pidTidKey(pid: number, tid: number): string {\n // We zero-pad the PID and TID to make sorting them by pid/tid pair later easier.\n return `${zeroPad('' + pid, 10)}:${zeroPad('' + tid, 10)}`\n}\n\nfunction partitionByPidTid(events: ImportableTraceEvent[]): Map {\n const map = new Map()\n\n for (let ev of events) {\n const list = getOrInsert(map, pidTidKey(ev.pid, ev.tid), () => [])\n list.push(ev)\n }\n\n return map\n}\n\nfunction selectQueueToTakeFromNext(\n bEventQueue: BTraceEvent[],\n eEventQueue: ETraceEvent[],\n): 'B' | 'E' {\n if (bEventQueue.length === 0 && eEventQueue.length === 0) {\n throw new Error('This method should not be given both queues empty')\n }\n if (eEventQueue.length === 0) return 'B'\n if (bEventQueue.length === 0) return 'E'\n\n const bFront = bEventQueue[0]\n const eFront = eEventQueue[0]\n\n const bts = bFront.ts\n const ets = eFront.ts\n\n if (bts < ets) return 'B'\n if (ets < bts) return 'E'\n\n // If we got here, the 'B' event queue and the 'E' event queue have events at\n // the front with equal timestamps.\n\n // If the front of the 'E' queue matches the front of the 'B' queue by name,\n // then it means we have a zero duration event. Process the 'B' queue first\n // to ensure it opens before we try to close it.\n //\n // Otherwise, process the 'E' queue first.\n return bFront.name === eFront.name ? 'B' : 'E'\n}\n\nfunction convertToEventQueues(events: ImportableTraceEvent[]): [BTraceEvent[], ETraceEvent[]] {\n const beginEvents: BTraceEvent[] = []\n const endEvents: ETraceEvent[] = []\n\n // Rebase all of the timestamps on the lowest timestamp\n if (events.length > 0) {\n let firstTs = Number.MAX_SAFE_INTEGER\n for (let ev of events) {\n firstTs = Math.min(firstTs, ev.ts)\n }\n for (let ev of events) {\n ev.ts -= firstTs\n }\n }\n\n // Next, combine B, E, and X events into two timestamp ordered queues.\n const xEvents: XTraceEvent[] = []\n for (let ev of events) {\n switch (ev.ph) {\n case 'B': {\n beginEvents.push(ev)\n break\n }\n\n case 'E': {\n endEvents.push(ev)\n break\n }\n\n case 'X': {\n xEvents.push(ev)\n break\n }\n\n default: {\n const _exhaustiveCheck: never = ev\n return _exhaustiveCheck\n }\n }\n }\n\n function dur(x: XTraceEvent): number {\n return x.dur ?? x.tdur ?? 0\n }\n\n xEvents.sort((a, b) => {\n if (a.ts < b.ts) return -1\n if (a.ts > b.ts) return 1\n\n // Super weird special case: if we have two 'X' events with the same 'ts'\n // but different 'dur' the only valid interpretation is to put the one with\n // the longer 'dur' first, because you can't nest longer things in shorter\n // things.\n const aDur = dur(a)\n const bDur = dur(b)\n if (aDur > bDur) return -1\n if (aDur < bDur) return 1\n\n // Otherwise, retain the original order by relying upon a stable sort here.\n return 0\n })\n\n for (let x of xEvents) {\n const xDur = dur(x)\n beginEvents.push({...x, ph: 'B'} as BTraceEvent)\n endEvents.push({...x, ph: 'E', ts: x.ts + xDur} as ETraceEvent)\n }\n\n function compareTimestamps(a: TraceEvent, b: TraceEvent) {\n if (a.ts < b.ts) return -1\n if (a.ts > b.ts) return 1\n\n // Important: if the timestamps are the same, return zero. We're going to\n // rely upon a stable sort here.\n return 0\n }\n\n beginEvents.sort(compareTimestamps)\n endEvents.sort(compareTimestamps)\n\n return [beginEvents, endEvents]\n}\n\nfunction filterIgnoredEventTypes(events: TraceEvent[]): ImportableTraceEvent[] {\n const ret: ImportableTraceEvent[] = []\n for (let ev of events) {\n switch (ev.ph) {\n case 'B':\n case 'E':\n case 'X':\n ret.push(ev as ImportableTraceEvent)\n }\n }\n return ret\n}\n\nfunction getProcessNamesByPid(events: TraceEvent[]): Map {\n const processNamesByPid = new Map()\n for (let ev of events) {\n if (ev.ph === 'M' && ev.name === 'process_name' && ev.args && ev.args.name) {\n processNamesByPid.set(ev.pid, ev.args.name)\n }\n }\n return processNamesByPid\n}\n\nfunction getThreadNamesByPidTid(events: TraceEvent[]): Map {\n const threadNameByPidTid = new Map()\n\n for (let ev of events) {\n if (ev.ph === 'M' && ev.name === 'thread_name' && ev.args && ev.args.name) {\n threadNameByPidTid.set(pidTidKey(ev.pid, ev.tid), ev.args.name)\n }\n }\n return threadNameByPidTid\n}\n\nfunction keyForEvent(event: TraceEvent): string {\n let name = `${event.name || '(unnamed)'}`\n if (event.args) {\n name += ` ${JSON.stringify(event.args)}`\n }\n return name\n}\n\nfunction frameInfoForEvent(event: TraceEvent): FrameInfo {\n const key = keyForEvent(event)\n return {\n name: key,\n key: key,\n }\n}\n\nfunction eventListToProfileGroup(events: TraceEvent[]): ProfileGroup {\n const importableEvents = filterIgnoredEventTypes(events)\n const partitioned = partitionByPidTid(importableEvents)\n\n const processNamesByPid = getProcessNamesByPid(events)\n const threadNamesByPidTid = getThreadNamesByPidTid(events)\n\n const profilePairs: [string, Profile][] = []\n\n partitioned.forEach(eventsForThread => {\n if (eventsForThread.length === 0) return\n\n const {pid, tid} = eventsForThread[0]\n\n const profile = new CallTreeProfileBuilder()\n profile.setValueFormatter(new TimeFormatter('microseconds'))\n\n const processName = processNamesByPid.get(pid)\n const threadName = threadNamesByPidTid.get(pidTidKey(pid, tid))\n\n if (processName != null && threadName != null) {\n profile.setName(`${processName} (pid ${pid}), ${threadName} (tid ${tid})`)\n } else if (processName != null) {\n profile.setName(`${processName} (pid ${pid}, tid ${tid})`)\n } else if (threadName != null) {\n profile.setName(`${threadName} (pid ${pid}, tid ${tid})`)\n } else {\n profile.setName(`pid ${pid}, tid ${tid}`)\n }\n\n // The trace event format is hard to deal with because it specifically\n // allows events to be recorded out of order, *but* event ordering is still\n // important for events with the same timestamp. Because of this, rather\n // than thinking about the entire event stream as a single queue of events,\n // we're going to first construct two time-ordered lists of events:\n //\n // 1. ts ordered queue of 'B' events\n // 2. ts ordered queue of 'E' events\n //\n // We deal with 'X' events by converting them to one entry in the 'B' event\n // queue and one entry in the 'E' event queue.\n //\n // The high level goal is to deal with 'B' events in 'ts' order, breaking\n // ties by the order the events occurred in the file, and deal with 'E'\n // events in 'ts' order, breaking ties in whatever order causes the 'E'\n // events to match whatever is on the top of the stack.\n const [bEventQueue, eEventQueue] = convertToEventQueues(eventsForThread)\n\n const frameStack: BTraceEvent[] = []\n const enterFrame = (b: BTraceEvent) => {\n frameStack.push(b)\n profile.enterFrame(frameInfoForEvent(b), b.ts)\n }\n\n const tryToLeaveFrame = (e: ETraceEvent) => {\n const b = lastOf(frameStack)\n\n if (b == null) {\n console.warn(\n `Tried to end frame \"${\n frameInfoForEvent(e).key\n }\", but the stack was empty. Doing nothing instead.`,\n )\n return\n }\n\n const eFrameInfo = frameInfoForEvent(e)\n const bFrameInfo = frameInfoForEvent(b)\n\n if (e.name !== b.name) {\n console.warn(\n `ts=${e.ts}: Tried to end \"${eFrameInfo.key}\" when \"${bFrameInfo.key}\" was on the top of the stack. Doing nothing instead.`,\n )\n return\n }\n\n if (eFrameInfo.key !== bFrameInfo.key) {\n console.warn(\n `ts=${e.ts}: Tried to end \"${eFrameInfo.key}\" when \"${bFrameInfo.key}\" was on the top of the stack. Ending ${bFrameInfo.key} instead.`,\n )\n }\n\n frameStack.pop()\n profile.leaveFrame(bFrameInfo, e.ts)\n }\n\n while (bEventQueue.length > 0 || eEventQueue.length > 0) {\n const queueName = selectQueueToTakeFromNext(bEventQueue, eEventQueue)\n switch (queueName) {\n case 'B': {\n enterFrame(bEventQueue.shift()!)\n break\n }\n case 'E': {\n // Before we take the first event in the 'E' queue, let's first see if\n // there are any e events that exactly match the top of the stack.\n // We'll prioritize first by key, then by name if we can't find a key\n // match.\n const stackTop = lastOf(frameStack)\n if (stackTop != null) {\n const bFrameInfo = frameInfoForEvent(stackTop)\n\n let swapped: boolean = false\n\n for (let i = 1; i < eEventQueue.length; i++) {\n const eEvent = eEventQueue[i]\n if (eEvent.ts > eEventQueue[0].ts) {\n // Only consider 'E' events with the same ts as the front of the queue.\n break\n }\n\n const eFrameInfo = frameInfoForEvent(eEvent)\n if (bFrameInfo.key === eFrameInfo.key) {\n // We have a match! Process this one first.\n const temp = eEventQueue[0]\n eEventQueue[0] = eEventQueue[i]\n eEventQueue[i] = temp\n swapped = true\n break\n }\n }\n\n if (!swapped) {\n // There was no key match, let's see if we can find a name match\n for (let i = 1; i < eEventQueue.length; i++) {\n const eEvent = eEventQueue[i]\n if (eEvent.ts > eEventQueue[0].ts) {\n // Only consider 'E' events with the same ts as the front of the queue.\n break\n }\n\n if (eEvent.name === stackTop.name) {\n // We have a match! Process this one first.\n const temp = eEventQueue[0]\n eEventQueue[0] = eEventQueue[i]\n eEventQueue[i] = temp\n swapped = true\n break\n }\n }\n }\n\n // If swapped is still false at this point, it means we're about to\n // pop a stack frame that doesn't even match by name. Bummer.\n }\n\n const e = eEventQueue.shift()!\n\n tryToLeaveFrame(e)\n break\n }\n\n default:\n const _exhaustiveCheck: never = queueName\n return _exhaustiveCheck\n }\n }\n\n for (let i = frameStack.length - 1; i >= 0; i--) {\n const frame = frameInfoForEvent(frameStack[i])\n console.warn(`Frame \"${frame.key}\" was still open at end of profile. Closing automatically.`)\n profile.leaveFrame(frame, profile.getTotalWeight())\n }\n\n profilePairs.push([pidTidKey(pid, tid), profile.build()])\n })\n\n // For now, we just sort processes by pid & tid.\n // TODO: The standard specifies that metadata events with the name\n // \"process_sort_index\" and \"thread_sort_index\" can be used to influence the\n // order, but for simplicity we'll ignore that until someone complains :)\n sortBy(profilePairs, p => p[0])\n\n return {\n name: '',\n indexToView: 0,\n profiles: profilePairs.map(p => p[1]),\n }\n}\n\nfunction isTraceEventList(maybeEventList: any): maybeEventList is TraceEvent[] {\n if (!Array.isArray(maybeEventList)) return false\n if (maybeEventList.length === 0) return false\n\n // Both ph and ts should be provided for every event. In theory, many other\n // fields are mandatory, but without these fields, we won't usefully be able\n // to import the data, so we'll rely upon these.\n for (let el of maybeEventList) {\n if (!('ph' in el)) {\n return false\n }\n\n switch (el.ph) {\n case 'B':\n case 'E':\n case 'X':\n // All B, E, and X events must have a timestamp specified, otherwise we\n // won't be able to import correctly.\n if (!('ts' in el)) {\n return false\n }\n\n case 'M':\n // It's explicitly okay for \"M\" (metadata) events not to specify a \"ts\"\n // field, since usually there is no logical timestamp for them to have\n break\n }\n }\n\n return true\n}\n\nfunction isTraceEventObject(\n maybeTraceEventObject: any,\n): maybeTraceEventObject is {traceEvents: TraceEvent[]} {\n if (!('traceEvents' in maybeTraceEventObject)) return false\n return isTraceEventList(maybeTraceEventObject['traceEvents'])\n}\n\nexport function isTraceEventFormatted(\n rawProfile: any,\n): rawProfile is {traceEvents: TraceEvent[]} | TraceEvent[] {\n // We're only going to support the JSON formatted profiles for now.\n // The spec also discusses support for data embedded in ftrace supported data: https://lwn.net/Articles/365835/.\n\n return isTraceEventObject(rawProfile) || isTraceEventList(rawProfile)\n}\n\nexport function importTraceEvents(\n rawProfile: {traceEvents: TraceEvent[]} | TraceEvent[],\n): ProfileGroup {\n if (isTraceEventObject(rawProfile)) {\n return eventListToProfileGroup(rawProfile.traceEvents)\n } else if (isTraceEventList(rawProfile)) {\n return eventListToProfileGroup(rawProfile)\n } else {\n const _exhaustiveCheck: never = rawProfile\n return _exhaustiveCheck\n }\n}\n","// https://www.valgrind.org/docs/manual/cl-format.html\n//\n// Larger example files can be found by searching on github:\n// https://github.com/search?q=cfn%3D&type=code\n//\n// Converting callgrind files into flamegraphs is challenging because callgrind\n// formatted profiles contain call graphs with weighted nodes and edges, and\n// such a weighted call graph does not uniquely define a flamegraph.\n//\n// Consider a program that looks like this:\n//\n// // example.js\n// function backup(read) {\n// if (read) {\n// read()\n// } else {\n// write()\n// }\n// }\n//\n// function start() {\n// backup(true)\n// }\n//\n// function end() {\n// backup(false)\n// }\n//\n// start()\n// end()\n//\n// Profiling this program might result in a profile that looks like the\n// following flame graph defined in Brendan Gregg's plaintext format:\n//\n// start;backup;read 4\n// end;backup;write 4\n//\n// When we convert this execution into a call-graph, we get the following:\n//\n// +------------------+ +---------------+\n// | start (self: 0) | | end (self: 0) |\n// +------------------+ +---------------|\n// \\ /\n// (total: 4) \\ / (total: 4)\n// v v\n// +------------------+\n// | backup (self: 0) |\n// +------------------+\n// / \\\n// (total: 4) / \\ (total: 4)\n// v v\n// +----------------+ +-----------------+\n// | read (self: 4) | | write (self: 4) |\n// +----------------+ +-----------------+\n//\n// In the process of the conversion, we've lost information about the ratio of\n// time spent in read v.s. write in the start call v.s. the end call. The\n// following flame graph would yield the exact same call-graph, and therefore\n// the exact sample call-grind formatted profile:\n//\n// start;backup;read 3\n// start;backup;write 1\n// end;backup;read 1\n// end;backup;write 3\n//\n// This is unfortunate, since it means we can't produce a flamegraph that isn't\n// potentially lying about the what the actual execution behavior was. To\n// produce a flamegraph at all from the call graph representation, we have to\n// decide how much weight each sub-call should have. Given that we know the\n// total weight of each node, we'll make the incorrect assumption that every\n// invocation of a function will have the average distribution of costs among\n// the sub-function invocations. In the example given, this means we assume that\n// every invocation of backup() is assumed to spend half its time in read() and\n// half its time in write().\n//\n// So the flamegraph we'll produce from the given call-graph will actually be:\n//\n// start;backup;read 2\n// start;backup;write 2\n// end;backup;read 2\n// end;backup;write 2\n//\n// A particularly bad consequence is that the resulting flamegraph will suggest\n// that there was at some point a call stack that looked like\n// strat;backup;write, even though that never happened in the real program\n// execution.\n\nimport {CallTreeProfileBuilder, Frame, FrameInfo, Profile, ProfileGroup} from '../lib/profile'\nimport {getOrElse, getOrInsert, KeyedSet} from '../lib/utils'\nimport {ByteFormatter, TimeFormatter} from '../lib/value-formatters'\nimport {TextFileContent} from './utils'\n\nclass CallGraph {\n private frameSet = new KeyedSet()\n private totalWeights = new Map()\n private childrenTotalWeights = new Map>()\n\n constructor(private fileName: string, private fieldName: string) {}\n\n private getOrInsertFrame(info: FrameInfo): Frame {\n return Frame.getOrInsert(this.frameSet, info)\n }\n\n private addToTotalWeight(frame: Frame, weight: number) {\n if (!this.totalWeights.has(frame)) {\n this.totalWeights.set(frame, weight)\n } else {\n this.totalWeights.set(frame, this.totalWeights.get(frame)! + weight)\n }\n }\n\n addSelfWeight(frameInfo: FrameInfo, weight: number) {\n this.addToTotalWeight(this.getOrInsertFrame(frameInfo), weight)\n }\n\n addChildWithTotalWeight(parentInfo: FrameInfo, childInfo: FrameInfo, weight: number) {\n const parent = this.getOrInsertFrame(parentInfo)\n const child = this.getOrInsertFrame(childInfo)\n\n const childMap = getOrInsert(this.childrenTotalWeights, parent, k => new Map())\n\n if (!childMap.has(child)) {\n childMap.set(child, weight)\n } else {\n childMap.set(child, childMap.get(child) + weight)\n }\n\n this.addToTotalWeight(parent, weight)\n }\n\n toProfile(): Profile {\n // To convert a call graph into a profile, we first need to identify what\n // the \"root weights\" are. \"root weights\" are the total weight of each frame\n // while at the bottom of the call-stack. The majority of functions will have\n // zero weight while at the bottom of the call-stack, since most functions\n // are never at the bottom of the call-stack.\n const rootWeights = new Map()\n for (let [frame, totalWeight] of this.totalWeights) {\n rootWeights.set(frame, totalWeight)\n }\n for (let [_, childMap] of this.childrenTotalWeights) {\n for (let [child, weight] of childMap) {\n rootWeights.set(child, getOrElse(rootWeights, child, () => weight) - weight)\n }\n }\n\n let totalProfileWeight = 0\n for (let [_, rootWeight] of rootWeights) {\n totalProfileWeight += rootWeight\n }\n\n const profile = new CallTreeProfileBuilder()\n\n let unitMultiplier = 1\n\n // These are common field names used by Xdebug. Let's give them special\n // treatment to more helpfully display units.\n if (this.fieldName === 'Time_(10ns)') {\n profile.setName(`${this.fileName} -- Time`)\n unitMultiplier = 10\n profile.setValueFormatter(new TimeFormatter('nanoseconds'))\n } else if (this.fieldName == 'Memory_(bytes)') {\n profile.setName(`${this.fileName} -- Memory`)\n profile.setValueFormatter(new ByteFormatter())\n } else {\n profile.setName(`${this.fileName} -- ${this.fieldName}`)\n }\n\n let totalCumulative = 0\n\n const currentStack = new Set()\n\n const visit = (frame: Frame, callTreeWeight: number) => {\n if (currentStack.has(frame)) {\n // Call-graphs are allowed to have cycles. Call-trees are not. In case\n // we run into a cycle, we'll just avoid recursing into the same subtree\n // more than once in a call stack. The result will be that the time\n // spent in the recursive call will instead be attributed as self time\n // in the parent.\n return\n }\n\n // We need to calculate how much weight to give to a particular node in\n // the call-tree based on information from the call-graph. A given node\n // from the call-graph might correspond to several nodes in the call-tree,\n // so we need to decide how to distribute the weight of the call-graph\n // node to the various call-tree nodes.\n //\n // We assume that the weighting is evenly distributed. If a call-tree node\n // X occurs with weights x1 and x2, and we know from the call-graph that\n // child Y of X has a total weight y, then we assume the child Y of X has\n // weight y*x1/(x1 + x2) for the first occurrence, and y*x2(y1 + x2) for\n // the second occurrence.\n //\n // This assumption is incorrectly (sometimes wildly so), but we need to\n // make *some* assumption, and this seems to me the sanest option.\n //\n // See the comment at the top of the file for an example where this\n // assumption can yield especially misleading results.\n\n if (callTreeWeight < 1e-4 * totalProfileWeight) {\n // This assumption about even distribution can cause us to generate a\n // call tree with dramatically more nodes than the call graph.\n //\n // Consider a function which is called 1000 times, where the result is\n // cached. The first invocation has a complex call tree and may take\n // 100ms. Let's say that this complex call tree has 250 nodes.\n //\n // Subsequent calls use the cached result, so take only 1ms, and have no\n // children in their call trees. So we have, in total, (1 + 250) + 999\n // nodes in the call-tree for a total of 1250 nodes.\n //\n // The information specific to each invocation is, however, lost in the\n // call-graph representation.\n //\n // Because of the even distribution assumption we make, this means that\n // the call-trees of each invocation will have the same shape. Each 1ms\n // call-tree will look identical to the 100ms call-tree, just\n // horizontally compacted. So instead of 1251 nodes, we have\n // 1000*250=250,000 nodes in the resulting call graph.\n //\n // To mitigate this explosion of the # of nodes, we ignore subtrees\n // whose weights are less than 0.01% of the total weight of the profile.\n return\n }\n\n // totalWeightForFrame is the total weight for the given frame in the\n // entire call graph.\n const callGraphWeightForFrame = getOrElse(this.totalWeights, frame, () => 0)\n if (callGraphWeightForFrame === 0) {\n return\n }\n\n // This is the portion of the total time the given child spends within the\n // given parent that we'll attribute to this specific path in the call\n // tree.\n const ratio = callTreeWeight / callGraphWeightForFrame\n\n let selfWeightForFrame = callGraphWeightForFrame\n\n profile.enterFrame(frame, totalCumulative * unitMultiplier)\n\n currentStack.add(frame)\n for (let [child, callGraphEdgeWeight] of this.childrenTotalWeights.get(frame) || []) {\n selfWeightForFrame -= callGraphEdgeWeight\n const childCallTreeWeight = callGraphEdgeWeight * ratio\n visit(child, childCallTreeWeight)\n }\n currentStack.delete(frame)\n\n totalCumulative += selfWeightForFrame * ratio\n profile.leaveFrame(frame, totalCumulative * unitMultiplier)\n }\n\n for (let [rootFrame, rootWeight] of rootWeights) {\n if (rootWeight <= 0) {\n continue\n }\n // If we've reached here, it means that the given root frame has some\n // weight while at the top of the call-stack.\n visit(rootFrame, rootWeight)\n }\n\n return profile.build()\n }\n}\n\n// In writing this, I initially tried to use the formal grammar described in\n// section 3.2 of https://www.valgrind.org/docs/manual/cl-format.html, but\n// stopped because most of the information isn't relevant for visualization, and\n// because there's inconsistency between the grammar and subsequence\n// descriptions.\n//\n// For example, the grammar for headers specifies all the valid header names,\n// but then the writing below that mentions there may be a \"totals\" or \"summary\"\n// header, which should be disallowed by the formal grammar.\n//\n// So, instead, I'm not going to bother with a formal parse. Since there are no\n// real recursive structures in this file format, that should be okay.\nclass CallgrindParser {\n private lines: string[]\n private lineNum: number\n\n private callGraphs: CallGraph[] | null = null\n private eventsLine: string | null = null\n\n private filename: string | null = null\n private functionName: string | null = null\n private calleeFilename: string | null = null\n private calleeFunctionName: string | null = null\n\n private savedFileNames: {[id: string]: string} = {}\n private savedFunctionNames: {[id: string]: string} = {}\n\n constructor(contents: TextFileContent, private importedFileName: string) {\n this.lines = contents.splitLines()\n this.lineNum = 0\n }\n\n parse(): ProfileGroup | null {\n while (this.lineNum < this.lines.length) {\n const line = this.lines[this.lineNum++]\n\n if (/^\\s*#/.exec(line)) {\n // Line is a comment. Ignore it.\n continue\n }\n\n if (/^\\s*$/.exec(line)) {\n // Line is empty. Ignore it.\n continue\n }\n\n if (this.parseHeaderLine(line)) {\n continue\n }\n\n if (this.parseAssignmentLine(line)) {\n continue\n }\n\n if (this.parseCostLine(line, 'self')) {\n continue\n }\n\n throw new Error(`Unrecognized line \"${line}\" on line ${this.lineNum}`)\n }\n\n if (!this.callGraphs) {\n return null\n }\n return {\n name: this.importedFileName,\n indexToView: 0,\n profiles: this.callGraphs.map(cg => cg.toProfile()),\n }\n }\n\n private frameInfo(): FrameInfo {\n const file = this.filename || '(unknown)'\n const name = this.functionName || '(unknown)'\n const key = `${file}:${name}`\n return {key, name, file}\n }\n\n private calleeFrameInfo(): FrameInfo {\n const file = this.calleeFilename || '(unknown)'\n const name = this.calleeFunctionName || '(unknown)'\n const key = `${file}:${name}`\n return {key, name, file}\n }\n\n private parseHeaderLine(line: string): boolean {\n const headerMatch = /^\\s*(\\w+):\\s*(.*)+$/.exec(line)\n if (!headerMatch) return false\n\n if (headerMatch[1] !== 'events') {\n // We don't care about other headers. Ignore this line.\n return true\n }\n\n // Line specifies the formatting of subsequent cost lines.\n const fields = headerMatch[2].split(' ')\n\n if (this.callGraphs != null) {\n throw new Error(\n `Duplicate \"events: \" lines specified. First was \"${this.eventsLine}\", now received \"${line}\" on ${this.lineNum}.`,\n )\n }\n\n this.callGraphs = fields.map(fieldName => {\n return new CallGraph(this.importedFileName, fieldName)\n })\n\n return true\n }\n\n private parseAssignmentLine(line: string): boolean {\n const assignmentMatch = /^(\\w+)=\\s*(.*)$/.exec(line)\n if (!assignmentMatch) return false\n\n const key = assignmentMatch[1]\n const value = assignmentMatch[2]\n\n switch (key) {\n case 'fe':\n case 'fi':\n case 'fl': {\n this.filename = this.parseNameWithCompression(value, this.savedFileNames)\n this.calleeFilename = this.filename\n break\n }\n\n case 'fn': {\n this.functionName = this.parseNameWithCompression(value, this.savedFunctionNames)\n break\n }\n\n case 'cfi':\n case 'cfl': {\n this.calleeFilename = this.parseNameWithCompression(value, this.savedFileNames)\n break\n }\n\n case 'cfn': {\n this.calleeFunctionName = this.parseNameWithCompression(value, this.savedFunctionNames)\n break\n }\n\n case 'calls': {\n // TODO(jlfwong): This is currently ignoring the number of calls being\n // made. Accounting for the number of calls might be unhelpful anyway,\n // since it'll just be copying the exact same frame over-and-over again,\n // but that might be better than ignoring it.\n this.parseCostLine(this.lines[this.lineNum++], 'child')\n break\n }\n\n default: {\n console.log(`Ignoring assignment to unrecognized key \"${line}\" on line ${this.lineNum}`)\n }\n }\n\n return true\n }\n\n private parseNameWithCompression(name: string, saved: {[id: string]: string}): string {\n {\n const nameDefinitionMatch = /^\\((\\d+)\\)\\s*(.+)$/.exec(name)\n\n if (nameDefinitionMatch) {\n const id = nameDefinitionMatch[1]\n const name = nameDefinitionMatch[2]\n if (id in saved) {\n throw new Error(\n `Redefinition of name with id: ${id}. Original value was \"${saved[id]}\". Tried to redefine as \"${name}\" on line ${this.lineNum}.`,\n )\n }\n\n saved[id] = name\n return name\n }\n }\n\n {\n const nameUseMatch = /^\\((\\d+)\\)$/.exec(name)\n if (nameUseMatch) {\n const id = nameUseMatch[1]\n if (!(id in saved)) {\n throw new Error(\n `Tried to use name with id ${id} on line ${this.lineNum} before it was defined.`,\n )\n }\n return saved[id]\n }\n }\n\n return name\n }\n\n private parseCostLine(line: string, costType: 'self' | 'child'): boolean {\n // TODO(jlfwong): Handle \"Subposition compression\"\n // TODO(jlfwong): Allow hexadecimal encoding\n\n const parts = line.split(/\\s+/)\n const nums: number[] = []\n for (let part of parts) {\n // As far as I can tell from the specification, the callgrind format does\n // not accept floating point numbers.\n const asNum = parseInt(part)\n if (isNaN(asNum)) {\n return false\n }\n\n nums.push(asNum)\n }\n\n if (nums.length == 0) {\n return false\n }\n\n // TODO(jlfwong): Handle custom positions format w/ multiple parts\n const numPositionFields = 1\n\n // NOTE: We intentionally do not include the line number here because\n // callgrind uses the line number of the function invocation, not the\n // line number of the function definition, which conflicts with how\n // speedscope uses line numbers.\n //\n // const lineNum = nums[0]\n\n if (!this.callGraphs) {\n throw new Error(\n `Encountered a cost line on line ${this.lineNum} before event specification was provided.`,\n )\n }\n for (let i = 0; i < this.callGraphs.length; i++) {\n if (costType === 'self') {\n this.callGraphs[i].addSelfWeight(this.frameInfo(), nums[numPositionFields + i])\n } else if (costType === 'child') {\n this.callGraphs[i].addChildWithTotalWeight(\n this.frameInfo(),\n this.calleeFrameInfo(),\n nums[numPositionFields + i] || 0,\n )\n }\n }\n\n return true\n }\n}\n\nexport function importFromCallgrind(\n contents: TextFileContent,\n importedFileName: string,\n): ProfileGroup | null {\n return new CallgrindParser(contents, importedFileName).parse()\n}\n","import {Profile, ProfileGroup} from '../lib/profile'\nimport {FileSystemDirectoryEntry} from './file-system-entry'\n\nimport {\n importFromChromeCPUProfile,\n importFromChromeTimeline,\n isChromeTimeline,\n importFromOldV8CPUProfile,\n} from './chrome'\nimport {importFromStackprof} from './stackprof'\nimport {importFromInstrumentsDeepCopy, importFromInstrumentsTrace} from './instruments'\nimport {importFromBGFlameGraph} from './bg-flamegraph'\nimport {importFromFirefox} from './firefox'\nimport {importSpeedscopeProfiles} from '../lib/file-format'\nimport {importFromV8ProfLog} from './v8proflog'\nimport {importFromLinuxPerf} from './linux-tools-perf'\nimport {importFromHaskell} from './haskell'\nimport {importFromSafari} from './safari'\nimport {ProfileDataSource, TextProfileDataSource, MaybeCompressedDataReader} from './utils'\nimport {importAsPprofProfile} from './pprof'\nimport {decodeBase64} from '../lib/utils'\nimport {importFromChromeHeapProfile} from './v8heapalloc'\nimport {isTraceEventFormatted, importTraceEvents} from './trace-event'\nimport {importFromCallgrind} from './callgrind'\n\nexport async function importProfileGroupFromText(\n fileName: string,\n contents: string,\n): Promise {\n return await importProfileGroup(new TextProfileDataSource(fileName, contents))\n}\n\nexport async function importProfileGroupFromBase64(\n fileName: string,\n b64contents: string,\n): Promise {\n return await importProfileGroup(\n MaybeCompressedDataReader.fromArrayBuffer(fileName, decodeBase64(b64contents).buffer),\n )\n}\n\nexport async function importProfilesFromFile(file: File): Promise {\n return importProfileGroup(MaybeCompressedDataReader.fromFile(file))\n}\n\nexport async function importProfilesFromArrayBuffer(\n fileName: string,\n buffer: ArrayBuffer,\n): Promise {\n return importProfileGroup(MaybeCompressedDataReader.fromArrayBuffer(fileName, buffer))\n}\n\nasync function importProfileGroup(dataSource: ProfileDataSource): Promise {\n const fileName = await dataSource.name()\n\n const profileGroup = await _importProfileGroup(dataSource)\n if (profileGroup) {\n if (!profileGroup.name) {\n profileGroup.name = fileName\n }\n for (let profile of profileGroup.profiles) {\n if (profile && !profile.getName()) {\n profile.setName(fileName)\n }\n }\n return profileGroup\n }\n return null\n}\n\nfunction toGroup(profile: Profile | null): ProfileGroup | null {\n if (!profile) return null\n return {name: profile.getName(), indexToView: 0, profiles: [profile]}\n}\n\nasync function _importProfileGroup(dataSource: ProfileDataSource): Promise {\n const fileName = await dataSource.name()\n\n const buffer = await dataSource.readAsArrayBuffer()\n\n {\n const profile = importAsPprofProfile(buffer)\n if (profile) {\n console.log('Importing as protobuf encoded pprof file')\n return toGroup(profile)\n }\n }\n\n const contents = await dataSource.readAsText()\n\n // First pass: Check known file format names to infer the file type\n if (fileName.endsWith('.speedscope.json')) {\n console.log('Importing as speedscope json file')\n return importSpeedscopeProfiles(contents.parseAsJSON())\n } else if (fileName.endsWith('.chrome.json') || /Profile-\\d{8}T\\d{6}/.exec(fileName)) {\n console.log('Importing as Chrome Timeline')\n return importFromChromeTimeline(contents.parseAsJSON(), fileName)\n } else if (fileName.endsWith('.stackprof.json')) {\n console.log('Importing as stackprof profile')\n return toGroup(importFromStackprof(contents.parseAsJSON()))\n } else if (fileName.endsWith('.instruments.txt')) {\n console.log('Importing as Instruments.app deep copy')\n return toGroup(importFromInstrumentsDeepCopy(contents))\n } else if (fileName.endsWith('.linux-perf.txt')) {\n console.log('Importing as output of linux perf script')\n return importFromLinuxPerf(contents)\n } else if (fileName.endsWith('.collapsedstack.txt')) {\n console.log('Importing as collapsed stack format')\n return toGroup(importFromBGFlameGraph(contents))\n } else if (fileName.endsWith('.v8log.json')) {\n console.log('Importing as --prof-process v8 log')\n return toGroup(importFromV8ProfLog(contents.parseAsJSON()))\n } else if (fileName.endsWith('.heapprofile')) {\n console.log('Importing as Chrome Heap Profile')\n return toGroup(importFromChromeHeapProfile(contents.parseAsJSON()))\n } else if (fileName.endsWith('-recording.json')) {\n console.log('Importing as Safari profile')\n return toGroup(importFromSafari(contents.parseAsJSON()))\n } else if (fileName.startsWith('callgrind.')) {\n console.log('Importing as Callgrind profile')\n return importFromCallgrind(contents, fileName)\n }\n\n // Second pass: Try to guess what file format it is based on structure\n let parsed: any\n try {\n parsed = contents.parseAsJSON()\n } catch (e) {}\n if (parsed) {\n if (parsed['$schema'] === 'https://www.speedscope.app/file-format-schema.json') {\n console.log('Importing as speedscope json file')\n return importSpeedscopeProfiles(parsed)\n } else if (parsed['systemHost'] && parsed['systemHost']['name'] == 'Firefox') {\n console.log('Importing as Firefox profile')\n return toGroup(importFromFirefox(parsed))\n } else if (isChromeTimeline(parsed)) {\n console.log('Importing as Chrome Timeline')\n return importFromChromeTimeline(parsed, fileName)\n } else if ('nodes' in parsed && 'samples' in parsed && 'timeDeltas' in parsed) {\n console.log('Importing as Chrome CPU Profile')\n return toGroup(importFromChromeCPUProfile(parsed))\n } else if (isTraceEventFormatted(parsed)) {\n console.log('Importing as Trace Event Format profile')\n return importTraceEvents(parsed)\n } else if ('head' in parsed && 'samples' in parsed && 'timestamps' in parsed) {\n console.log('Importing as Chrome CPU Profile (old format)')\n return toGroup(importFromOldV8CPUProfile(parsed))\n } else if ('mode' in parsed && 'frames' in parsed && 'raw_timestamp_deltas' in parsed) {\n console.log('Importing as stackprof profile')\n return toGroup(importFromStackprof(parsed))\n } else if ('code' in parsed && 'functions' in parsed && 'ticks' in parsed) {\n console.log('Importing as --prof-process v8 log')\n return toGroup(importFromV8ProfLog(parsed))\n } else if ('head' in parsed && 'selfSize' in parsed['head']) {\n console.log('Importing as Chrome Heap Profile')\n return toGroup(importFromChromeHeapProfile(parsed))\n } else if ('rts_arguments' in parsed && 'initial_capabilities' in parsed) {\n console.log('Importing as Haskell GHC JSON Profile')\n return importFromHaskell(parsed)\n } else if ('recording' in parsed && 'sampleStackTraces' in parsed.recording) {\n console.log('Importing as Safari profile')\n return toGroup(importFromSafari(parsed))\n }\n } else {\n // Format is not JSON\n\n // If the first line is \"# callgrind format\", it's probably in Callgrind\n // Profile Format.\n if (\n /^# callgrind format/.exec(contents.firstChunk()) ||\n (/^events:/m.exec(contents.firstChunk()) && /^fn=/m.exec(contents.firstChunk()))\n ) {\n console.log('Importing as Callgrind profile')\n return importFromCallgrind(contents, fileName)\n }\n\n // If the first line contains \"Symbol Name\", preceded by a tab, it's probably\n // a deep copy from OS X Instruments.app\n if (/^[\\w \\t\\(\\)]*\\tSymbol Name/.exec(contents.firstChunk())) {\n console.log('Importing as Instruments.app deep copy')\n return toGroup(importFromInstrumentsDeepCopy(contents))\n }\n\n const fromLinuxPerf = importFromLinuxPerf(contents)\n if (fromLinuxPerf) {\n console.log('Importing from linux perf script output')\n return fromLinuxPerf\n }\n\n const fromBGFlameGraph = importFromBGFlameGraph(contents)\n if (fromBGFlameGraph) {\n console.log('Importing as collapsed stack format')\n return toGroup(fromBGFlameGraph)\n }\n }\n\n // Unrecognized format\n return null\n}\n\nexport async function importFromFileSystemDirectoryEntry(entry: FileSystemDirectoryEntry) {\n return importFromInstrumentsTrace(entry)\n}\n"]} \ No newline at end of file diff --git a/deps/speedscope/index.html b/deps/speedscope/index.html new file mode 100644 index 00000000..f3d886e0 --- /dev/null +++ b/deps/speedscope/index.html @@ -0,0 +1,2 @@ +speedscope + \ No newline at end of file diff --git a/deps/speedscope/perf-vertx-stacks-01-collapsed-all.2681da68.txt b/deps/speedscope/perf-vertx-stacks-01-collapsed-all.2681da68.txt new file mode 100644 index 00000000..4b5f79fe --- /dev/null +++ b/deps/speedscope/perf-vertx-stacks-01-collapsed-all.2681da68.txt @@ -0,0 +1,199 @@ +java;read;check_events_[k];hypercall_page_[k] 1 +java;start_thread;java_start;GCTaskThread::run;ScavengeRootsTask::do_it;ClassLoaderDataGraph::oops_do;ClassLoaderData::oops_do;PSScavengeKlassClosure::do_klass 1 +java;start_thread;java_start;GCTaskThread::run;StealTask::do_it;PSPromotionManager::drain_stacks_depth;oopDesc* PSPromotionManager::copy_to_survivor_space;InstanceKlass::oop_push_contents 1 +java;start_thread;java_start;GCTaskThread::run;StealTask::do_it;ParallelTaskTerminator::offer_termination 5 +java;start_thread;java_start;GCTaskThread::run;StealTask::do_it;SpinPause 7 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/buffer/AbstractByteBufAllocator:.directBuffer_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/AbstractReferenceCountedByteBuf:.release_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];io/netty/buffer/PooledByteBuf:.internalNioBuffer_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/NativeThread:.current_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j]; 3 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];Java_sun_nio_ch_FileDispatcherImpl_write0 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;sys_write_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];fget_light_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];__srcu_read_lock_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];__tcp_push_pending_frames_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];ktime_get_real_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];skb_clone_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_set_skb_tso_segs_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_hard_start_xmit_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_pick_tx_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];dev_queue_xmit_nit_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];loopback_xmit_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];loopback_xmit_[k];netif_rx_[k];netif_rx.part.82_[k];xen_restore_fl_direct_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];dev_hard_start_xmit_[k];loopback_xmit_[k];netif_rx_[k];netif_rx.part.82_[k];xen_restore_fl_direct_end_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];dma_issue_pending_all_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];__inet_lookup_established_[k] 3 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_event_data_recv_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];sock_def_readable_[k];__wake_up_sync_key_[k];check_events_[k];hypercall_page_[k] 19 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k] 3 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];bictcp_acked_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];ktime_get_real_[k];getnstimeofday_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];ktime_get_real_[k];getnstimeofday_[k];xen_clocksource_get_cycles_[k];xen_clocksource_read_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];tcp_rtt_estimator_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_[k];ip_local_deliver_finish_[k];tcp_v4_rcv_[k];tcp_v4_do_rcv_[k];tcp_rcv_established_[k];tcp_ack_[k];tcp_clean_rtx_queue_[k];tcp_valid_rtt_meas_[k];tcp_rtt_estimator_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];__do_softirq_[k];net_rx_action_[k];process_backlog_[k];__netif_receive_skb_[k];ip_rcv_[k];ip_rcv_finish_[k];ip_local_deliver_finish_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];local_bh_enable_[k];do_softirq_[k];call_softirq_[k];rcu_bh_qs_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_local_out_[k];ip_output_[k];ip_finish_output_[k];dev_queue_xmit_[k];netif_skb_features_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ip_queue_xmit_[k];ip_output_[k] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ktime_get_real_[k];getnstimeofday_[k];xen_clocksource_get_cycles_[k];pvclock_clocksource_read_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ktime_get_real_[k];getnstimeofday_[k];xen_clocksource_get_cycles_[k];xen_clocksource_read_[k];pvclock_clocksource_read_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];ktime_get_real_[k];xen_clocksource_get_cycles_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];__tcp_push_pending_frames_[k];tcp_write_xmit_[k];tcp_transmit_skb_[k];skb_dst_set_noref_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];lock_sock_nested_[k];_raw_spin_lock_bh_[k];local_bh_disable_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];__kmalloc_node_track_caller_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];__kmalloc_node_track_caller_[k];arch_local_irq_save_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];__phys_addr_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];get_slab_[k] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];__alloc_skb_[k];kmem_cache_alloc_node_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];sk_stream_alloc_skb_[k];ksize_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_send_mss_[k];tcp_current_mss_[k];ipv4_mtu_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_send_mss_[k];tcp_current_mss_[k];tcp_established_options_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_send_mss_[k];tcp_xmit_size_goal_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];do_sync_write_[k];sock_aio_write_[k];do_sock_write.isra.10_[k];inet_sendmsg_[k];tcp_sendmsg_[k];tcp_xmit_size_goal_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];fsnotify_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];fsnotify_[k];__srcu_read_lock_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];rw_verify_area_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];rw_verify_area_[k];apparmor_file_permission_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];rw_verify_area_[k];security_file_permission_[k];apparmor_file_permission_[k];common_file_perm_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/FileDispatcherImpl:.write0_[j];write;system_call_fastpath_[k];sys_write_[k];vfs_write_[k];sock_aio_write_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.write_[j];sun/nio/ch/SocketChannelImpl:.writerCleanup_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/buffer/PooledUnsafeDirectByteBuf:.readBytes_[j];sun/nio/ch/SocketChannelImpl:.writerCleanup_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/ChannelOutboundHandlerAdapter:.flush_[j];io/netty/channel/AbstractChannelHandlerContext:.flush_[j];io/netty/channel/DefaultChannelPipeline$HeadContext:.flush_[j];io/netty/channel/AbstractChannel$AbstractUnsafe:.flush0_[j];io/netty/channel/nio/AbstractNioByteChannel:.doWrite_[j];io/netty/util/Recycler:.recycle_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j];io/netty/channel/ChannelDuplexHandler:.flush_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelReadComplete_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j];org/vertx/java/core/net/impl/VertxHandler:.channelReadComplete_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/buffer/AbstractReferenceCountedByteBuf:.release_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];java/util/concurrent/ConcurrentHashMap:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/mozilla/javascript/Context:.getWrapFactory_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j] 3 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/ScriptableObject:.getParentScope_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/WrapFactory:.wrapAsJavaObject_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/WrapFactory:.wrapAsJavaObject_[j];java/util/HashMap:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/WrapFactory:.wrap_[j];java/util/HashMap:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];org/mozilla/javascript/ScriptableObject$RelinkedSlot:.getValue_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];vtable chunks_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];org/mozilla/javascript/ScriptableObject$Slot:.getValue_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.name_[j];org/mozilla/javascript/IdScriptableObject:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getPropFunctionAndThis_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.findInstanceIdInfo_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.has_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/MemberBox:.invoke_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/WrapFactory:.wrap_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.findFunction_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaObject:.get_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];org/mozilla/javascript/ScriptableObject$Slot:.getValue_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getPropFunctionAndThis_[j];org/mozilla/javascript/NativeJavaObject:.get_[j];java/util/HashMap:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];jint_disjoint_arraycopy_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.get_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.getObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject$RelinkedSlot:.getValue_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.findInstanceIdInfo_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 3 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];vtable chunks_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/NativeFunction:.initScriptFunction_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 6 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.newObject_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptableObject:.getParentScope_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j] 4 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 5 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 6 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptableObject:.getPrototype_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptableObject:.getParentScope_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/TopLevel:.getBuiltinPrototype_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/ScriptRuntime:.name_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];vtable chunks_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.has_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/IdScriptableObject:.setAttributes_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.createFunctionActivation_[j];org/mozilla/javascript/TopLevel:.getBuiltinPrototype_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/optimizer/OptRuntime:.call2_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.setObjectProp_[j];org/mozilla/javascript/IdScriptableObject:.put_[j];org/mozilla/javascript/ScriptableObject:.getSlot_[j];org/mozilla/javascript/ScriptableObject:.createSlot_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/ScriptRuntime:.indexFromString_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/ScriptRuntime:.setObjectElem_[j];org/mozilla/javascript/ScriptRuntime:.indexFromString_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];io/netty/handler/codec/http/DefaultHttpHeaders:.set_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j] 3 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/buffer/AbstractByteBuf:.writeBytes_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];io/netty/buffer/AbstractByteBuf:.writeBytes_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];io/netty/buffer/AbstractByteBufAllocator:.directBuffer_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];io/netty/buffer/AbstractByteBufAllocator:.directBuffer_[j];io/netty/util/concurrent/FastThreadLocal:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/handler/codec/http/HttpObjectEncoder:.encode_[j];java/util/ArrayList:.add_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];io/netty/util/internal/RecyclableArrayList:.newInstance_[j];io/netty/util/concurrent/FastThreadLocal:.get_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];java/util/ArrayList:.ensureExplicitCapacity_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];io/netty/handler/codec/MessageToMessageEncoder:.write_[j];vtable chunks_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/channel/AbstractChannelHandlerContext:.write_[j];org/vertx/java/core/http/impl/VertxHttpHandler:.write_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/handler/codec/http/DefaultHttpHeaders:.add0_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];io/netty/handler/codec/http/DefaultHttpHeaders:.set_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/NativeJavaMethod:.call_[j];org/mozilla/javascript/MemberBox:.invoke_[j];sun/reflect/DelegatingMethodAccessorImpl:.invoke_[j];sun/nio/cs/UTF_8$Encoder:._[j];jbyte_disjoint_arraycopy_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];org/vertx/java/core/net/impl/VertxHandler:.channelRead_[j];org/vertx/java/core/http/impl/DefaultHttpServer$ServerHandler:.doMessageReceived_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vhello_js_1:.call_[j];org/mozilla/javascript/gen/file__home_bgregg_testtest_vert_x_2_1_4_sys_mods_io_vertx_lang_js_1_1_0_[j];org/mozilla/javascript/ScriptRuntime:.name_[j];org/mozilla/javascript/ScriptRuntime:.nameOrFunction_[j];org/mozilla/javascript/IdScriptableObject:.get_[j];org/mozilla/javascript/ScriptableObject$RelinkedSlot:.getValue_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/buffer/AbstractByteBuf:.forEachByteAsc0_[j];io/netty/util/internal/AppendableCharSequence:.append_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpHeaders:.isTransferEncodingChunked_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.findWhitespace_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];io/netty/buffer/AbstractByteBuf:.forEachByteAsc0_[j] 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];io/netty/handler/codec/http/HttpHeaders:.hash_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];io/netty/handler/codec/http/HttpObjectDecoder:.splitHeader_[j] 5 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/AbstractChannelHandlerContext:.fireChannelRead_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelRead_[j];io/netty/handler/codec/http/HttpObjectDecoder:.decode_[j];io/netty/handler/codec/http/HttpObjectDecoder:.readHeaders_[j];java/util/Arrays:.fill_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];java/nio/channels/spi/AbstractInterruptibleChannel:.end_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read 2 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;sys_read_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];do_sync_read_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];__kfree_skb_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_rcv_space_adjust_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];__kfree_skb_[k];skb_release_data_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];__kfree_skb_[k];skb_release_head_state_[k];dst_release_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];_raw_spin_lock_bh_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];skb_copy_datagram_iovec_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];skb_copy_datagram_iovec_[k];copy_user_enhanced_fast_string_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];tcp_cleanup_rbuf_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];do_sync_read_[k];sock_aio_read_[k];sock_aio_read.part.13_[k];do_sock_read.isra.12_[k];inet_recvmsg_[k];tcp_recvmsg_[k];tcp_cleanup_rbuf_[k];__tcp_select_window_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j];sun/nio/ch/SocketChannelImpl:.read_[j];sun/nio/ch/FileDispatcherImpl:.read0_[j];read;system_call_fastpath_[k];sys_read_[k];vfs_read_[k];rw_verify_area_[k] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/nio/AbstractNioByteChannel$NioByteUnsafe:.read_[j];io/netty/handler/codec/ByteToMessageDecoder:.channelReadComplete_[j] 1 +java;start_thread;java_start;JavaThread::run;JavaThread::thread_main_inner;thread_entry;JavaCalls::call_virtual;JavaCalls::call_virtual;JavaCalls::call_helper;call_stub_[j];Interpreter_[j];Interpreter_[j];io/netty/channel/nio/NioEventLoop:.run_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeys_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKeysOptimized_[j];io/netty/channel/nio/NioEventLoop:.processSelectedKey_[j];io/netty/channel/socket/nio/NioSocketChannel:.doReadBytes_[j] 1 +java;start_thread;java_start;VMThread::run;VMThread::loop;VMThread::evaluate_operation;VM_Operation::evaluate;VM_ParallelGCFailedAllocation::doit;ParallelScavengeHeap::failed_mem_allocate;PSScavenge::invoke;PSScavenge::invoke_no_policy;PSIsAliveClosure::do_object_b 1 +java;start_thread;java_start;VMThread::run;VMThread::loop;VMThread::evaluate_operation;VM_Operation::evaluate;VM_ParallelGCFailedAllocation::doit;ParallelScavengeHeap::failed_mem_allocate;PSScavenge::invoke;PSScavenge::invoke_no_policy;StringTable::unlink_or_oops_do 2 +java;start_thread;java_start;VMThread::run;VMThread::loop;VMThread::evaluate_operation;VM_Operation::evaluate;VM_ParallelGCFailedAllocation::doit;ParallelScavengeHeap::failed_mem_allocate;PSScavenge::invoke;PSScavenge::invoke_no_policy;pthread_cond_signal@@GLIBC_2.3.2;system_call_fastpath_[k];sys_futex_[k];do_futex_[k];futex_wake_op_[k] 1 +java;write;check_events_[k];hypercall_page_[k] 3 diff --git a/deps/speedscope/release.txt b/deps/speedscope/release.txt new file mode 100644 index 00000000..6409cfde --- /dev/null +++ b/deps/speedscope/release.txt @@ -0,0 +1,3 @@ +speedscope@1.15.0 +Sat Oct 22 00:19:31 HKT 2022 +81a6f29ad1eb632683429084bd6c5f497667fb5e diff --git a/deps/speedscope/reset.8c46b7a1.css b/deps/speedscope/reset.8c46b7a1.css new file mode 100644 index 00000000..d88db9c0 --- /dev/null +++ b/deps/speedscope/reset.8c46b7a1.css @@ -0,0 +1,2 @@ +a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:initial}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}html{overflow:hidden}body,html{height:100%}body{overflow:auto} +/*# sourceMappingURL=reset.8c46b7a1.css.map */ \ No newline at end of file diff --git a/deps/speedscope/reset.8c46b7a1.css.map b/deps/speedscope/reset.8c46b7a1.css.map new file mode 100644 index 00000000..a56fd5df --- /dev/null +++ b/deps/speedscope/reset.8c46b7a1.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["reset.css"],"names":[],"mappings":"AAIA,2ZAaC,QAAS,CACT,SAAU,CACV,QAAS,CACT,cAAe,CACf,YAAa,CACb,sBACD,CAEA,8EAEC,aACD,CACA,KACC,aACD,CACA,MACC,eACD,CACA,aACC,WACD,CACA,oDAEC,UAAW,CACX,YACD,CACA,MACC,wBAAyB,CACzB,gBACD,CAIA,KACI,eAEJ,CACA,UAFI,WAKJ,CAHA,KAEI,aACJ","file":"reset.8c46b7a1.css","sourceRoot":"../../assets","sourcesContent":["/* http://meyerweb.com/eric/tools/css/reset/\n v2.0 | 20110126\n License: none (public domain)\n*/\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\n/* HTML5 display-role reset for older browsers */\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\n/* Prevent overscrolling */\n/* https://stackoverflow.com/a/17899813 */\nhtml {\n overflow: hidden;\n height: 100%;\n}\nbody {\n height: 100%;\n overflow: auto;\n}"]} \ No newline at end of file diff --git a/deps/speedscope/source-map.438fa06b.js b/deps/speedscope/source-map.438fa06b.js new file mode 100644 index 00000000..2ea3f37a --- /dev/null +++ b/deps/speedscope/source-map.438fa06b.js @@ -0,0 +1,24 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c>1;return 1==(1&e)?-r:r}exports.encode=function(n){var d,a="",c=i(n);do{d=c&o,(c>>>=r)>0&&(d|=t),a+=e.encode(d)}while(c>0);return a},exports.decode=function(n,i,a){var c,u,h=n.length,s=0,v=0;do{if(i>=h)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(u=e.decode(n.charCodeAt(i++))))throw new Error("Invalid base64 digit: "+n.charAt(i-1));c=!!(u&t),s+=(u&=o)<=0;s--)"."===(a=u[s])?u.splice(s,1):".."===a?c++:c>0&&(""===a?(u.splice(s+1,c),c=0):(u.splice(s,2),c--));return""===(r=u.join("/"))&&(r=i?"/":"."),n?(n.path=r,o(n)):r}function i(e,r){""===e&&(e="."),""===r&&(r=".");var i=t(r),u=t(e);if(u&&(e=u.path||"/"),i&&!i.scheme)return u&&(i.scheme=u.scheme),o(i);if(i||r.match(n))return r;if(u&&!u.host&&!u.path)return u.host=r,o(u);var c="/"===r.charAt(0)?r:a(e.replace(/\/+$/,"")+"/"+r);return u?(u.path=c,o(u)):c}function u(e,r){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==r.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return r;if((e=e.slice(0,t)).match(/^([^\/]+:\/)?\/*$/))return r;++n}return Array(n+1).join("../")+r.substr(e.length+1)}exports.urlParse=t,exports.urlGenerate=o,exports.normalize=a,exports.join=i,exports.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},exports.relative=u;var c=!("__proto__"in Object.create(null));function s(e){return e}function l(e){return p(e)?"$"+e:e}function h(e){return p(e)?e.slice(1):e}function p(e){if(!e)return!1;var r=e.length;if(r<9)return!1;if(95!==e.charCodeAt(r-1)||95!==e.charCodeAt(r-2)||111!==e.charCodeAt(r-3)||116!==e.charCodeAt(r-4)||111!==e.charCodeAt(r-5)||114!==e.charCodeAt(r-6)||112!==e.charCodeAt(r-7)||95!==e.charCodeAt(r-8)||95!==e.charCodeAt(r-9))return!1;for(var n=r-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function f(e,r,n){var t=d(e.source,r.source);return 0!==t?t:0!==(t=e.originalLine-r.originalLine)?t:0!==(t=e.originalColumn-r.originalColumn)||n?t:0!==(t=e.generatedColumn-r.generatedColumn)?t:0!==(t=e.generatedLine-r.generatedLine)?t:d(e.name,r.name)}function g(e,r,n){var t=e.generatedLine-r.generatedLine;return 0!==t?t:0!==(t=e.generatedColumn-r.generatedColumn)||n?t:0!==(t=d(e.source,r.source))?t:0!==(t=e.originalLine-r.originalLine)?t:0!==(t=e.originalColumn-r.originalColumn)?t:d(e.name,r.name)}function d(e,r){return e===r?0:null===e?1:null===r?-1:e>r?1:-1}function m(e,r){var n=e.generatedLine-r.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-r.generatedColumn)?n:0!==(n=d(e.source,r.source))?n:0!==(n=e.originalLine-r.originalLine)?n:0!==(n=e.originalColumn-r.originalColumn)?n:d(e.name,r.name)}function C(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function v(e,r,n){if(r=r||"",e&&("/"!==e[e.length-1]&&"/"!==r[0]&&(e+="/"),r=e+r),n){var u=t(n);if(!u)throw new Error("sourceMapURL could not be parsed");if(u.path){var c=u.path.lastIndexOf("/");c>=0&&(u.path=u.path.substring(0,c+1))}r=i(o(u),r)}return a(r)}exports.toSetString=c?s:l,exports.fromSetString=c?s:h,exports.compareByOriginalPositions=f,exports.compareByGeneratedPositionsDeflated=g,exports.compareByGeneratedPositionsInflated=m,exports.parseSourceMapInput=C,exports.computeSourceURL=v; +},{}],"dghU":[function(require,module,exports) { +var t=require("./util"),e=Object.prototype.hasOwnProperty,r="undefined"!=typeof Map;function n(){this._array=[],this._set=r?new Map:Object.create(null)}n.fromArray=function(t,e){for(var r=new n,i=0,s=t.length;i=0)return i}else{var s=t.toSetString(n);if(e.call(this._set,s))return this._set[s]}throw new Error('"'+n+'" is not in the set.')},n.prototype.at=function(t){if(t>=0&&ta||n==a&&s>=o||t.compareByGeneratedPositionsInflated(e,r)<=0}function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}r.prototype.unsortedForEach=function(t,e){this._array.forEach(t,e)},r.prototype.add=function(t){e(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))},r.prototype.toArray=function(){return this._sorted||(this._array.sort(t.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},exports.MappingList=r; +},{"./util":"XUQW"}],"Wwhl":[function(require,module,exports) { +var e=require("./base64-vlq"),n=require("./util"),o=require("./array-set").ArraySet,t=require("./mapping-list").MappingList;function r(e){e||(e={}),this._file=n.getArg(e,"file",null),this._sourceRoot=n.getArg(e,"sourceRoot",null),this._skipValidation=n.getArg(e,"skipValidation",!1),this._sources=new o,this._names=new o,this._mappings=new t,this._sourcesContents=null}r.prototype._version=3,r.fromSourceMap=function(e){var o=e.sourceRoot,t=new r({file:e.file,sourceRoot:o});return e.eachMapping(function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=o&&(r.source=n.relative(o,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),t.addMapping(r)}),e.sources.forEach(function(r){var i=r;null!==o&&(i=n.relative(o,r)),t._sources.has(i)||t._sources.add(i);var s=e.sourceContentFor(r);null!=s&&t.setSourceContent(r,s)}),t},r.prototype.addMapping=function(e){var o=n.getArg(e,"generated"),t=n.getArg(e,"original",null),r=n.getArg(e,"source",null),i=n.getArg(e,"name",null);this._skipValidation||this._validateMapping(o,t,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:o.line,generatedColumn:o.column,originalLine:null!=t&&t.line,originalColumn:null!=t&&t.column,source:r,name:i})},r.prototype.setSourceContent=function(e,o){var t=e;null!=this._sourceRoot&&(t=n.relative(this._sourceRoot,t)),null!=o?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[n.toSetString(t)]=o):this._sourcesContents&&(delete this._sourcesContents[n.toSetString(t)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},r.prototype.applySourceMap=function(e,t,r){var i=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');i=e.file}var s=this._sourceRoot;null!=s&&(i=n.relative(s,i));var l=new o,u=new o;this._mappings.unsortedForEach(function(o){if(o.source===i&&null!=o.originalLine){var t=e.originalPositionFor({line:o.originalLine,column:o.originalColumn});null!=t.source&&(o.source=t.source,null!=r&&(o.source=n.join(r,o.source)),null!=s&&(o.source=n.relative(s,o.source)),o.originalLine=t.line,o.originalColumn=t.column,null!=t.name&&(o.name=t.name))}var a=o.source;null==a||l.has(a)||l.add(a);var c=o.name;null==c||u.has(c)||u.add(c)},this),this._sources=l,this._names=u,e.sources.forEach(function(o){var t=e.sourceContentFor(o);null!=t&&(null!=r&&(o=n.join(r,o)),null!=s&&(o=n.relative(s,o)),this.setSourceContent(o,t))},this)},r.prototype._validateMapping=function(e,n,o,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||o||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&o))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:o,original:n,name:t}))},r.prototype._serializeMappings=function(){for(var o,t,r,i,s=0,l=1,u=0,a=0,c=0,p=0,g="",h=this._mappings.toArray(),m=0,f=h.length;m0){if(!n.compareByGeneratedPositionsInflated(t,h[m-1]))continue;o+=","}o+=e.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),o+=e.encode(i-p),p=i,o+=e.encode(t.originalLine-1-a),a=t.originalLine-1,o+=e.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),o+=e.encode(r-c),c=r)),g+=o}return g},r.prototype._generateSourcesContent=function(e,o){return e.map(function(e){if(!this._sourcesContents)return null;null!=o&&(e=n.relative(o,e));var t=n.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,t)?this._sourcesContents[t]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},exports.SourceMapGenerator=r; +},{"./base64-vlq":"iWlY","./util":"XUQW","./array-set":"dghU","./mapping-list":"AUTm"}],"rdpJ":[function(require,module,exports) { +function r(t,e,E,n,o,_){var U=Math.floor((e-t)/2)+t,s=o(E,n[U],!0);return 0===s?U:s>0?e-U>1?r(U,e,E,n,o,_):_==exports.LEAST_UPPER_BOUND?e1?r(t,U,E,n,o,_):_==exports.LEAST_UPPER_BOUND?U:t<0?-1:t}exports.GREATEST_LOWER_BOUND=1,exports.LEAST_UPPER_BOUND=2,exports.search=function(t,e,E,n){if(0===e.length)return-1;var o=r(-1,e.length,t,e,E,n||exports.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===E(e[o],e[o-1],!0);)--o;return o}; +},{}],"lFls":[function(require,module,exports) { +function n(n,r,t){var o=n[r];n[r]=n[t],n[t]=o}function r(n,r){return Math.round(n+Math.random()*(r-n))}function t(o,a,u,f){if(u=0){var a=this._originalMappings[s];if(void 0===r.column)for(var u=a.originalLine;a&&a.originalLine===u;)i.push({line:e.getArg(a,"generatedLine",null),column:e.getArg(a,"generatedColumn",null),lastColumn:e.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s];else for(var l=a.originalColumn;a&&a.originalLine===t&&a.originalColumn==l;)i.push({line:e.getArg(a,"generatedLine",null),column:e.getArg(a,"generatedColumn",null),lastColumn:e.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s]}return i},exports.SourceMapConsumer=i,s.prototype=Object.create(i.prototype),s.prototype.consumer=i,s.prototype._findSourceIndex=function(n){var r,t=n;if(null!=this.sourceRoot&&(t=e.relative(this.sourceRoot,t)),this._sources.has(t))return this._sources.indexOf(t);for(r=0;r1&&(i.source=f+u[1],f+=u[1],i.originalLine=h+u[2],h=i.originalLine,i.originalLine+=1,i.originalColumn=m+u[3],m=i.originalColumn,u.length>4&&(i.name=_+u[4],_+=u[4])),y.push(i),"number"==typeof i.originalLine&&v.push(i)}o(y,e.compareByGeneratedPositionsDeflated),this.__generatedMappings=y,o(v,e.compareByOriginalPositions),this.__originalMappings=v},s.prototype._findMapping=function(e,r,t,o,i,s){if(e[t]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[t]);if(e[o]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[o]);return n.search(e,r,i,s)},s.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[t];if(o.generatedLine===r.generatedLine){var s=e.getArg(o,"source",null);null!==s&&(s=this._sources.at(s),s=e.computeSourceURL(this.sourceRoot,s,this._sourceMapURL));var a=e.getArg(o,"name",null);return null!==a&&(a=this._names.at(a)),{source:s,line:e.getArg(o,"originalLine",null),column:e.getArg(o,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},s.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},s.prototype.sourceContentFor=function(n,r){if(!this.sourcesContent)return null;var t=this._findSourceIndex(n);if(t>=0)return this.sourcesContent[t];var o,i=n;if(null!=this.sourceRoot&&(i=e.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=e.urlParse(this.sourceRoot))){var s=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(s))return this.sourcesContent[this._sources.indexOf(s)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(r)return null;throw new Error('"'+i+'" is not in the SourceMap.')},s.prototype.generatedPositionFor=function(n){var r=e.getArg(n,"source");if((r=this._findSourceIndex(r))<0)return{line:null,column:null,lastColumn:null};var t={source:r,originalLine:e.getArg(n,"line"),originalColumn:e.getArg(n,"column")},o=this._findMapping(t,this._originalMappings,"originalLine","originalColumn",e.compareByOriginalPositions,e.getArg(n,"bias",i.GREATEST_LOWER_BOUND));if(o>=0){var s=this._originalMappings[o];if(s.source===t.source)return{line:e.getArg(s,"generatedLine",null),column:e.getArg(s,"generatedColumn",null),lastColumn:e.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},exports.BasicSourceMapConsumer=s,u.prototype=Object.create(i.prototype),u.prototype.constructor=i,u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){for(var e=[],n=0;n=0;e--)this.prepend(n[e]);else{if(!n[o]&&"string"!=typeof n)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+n);this.children.unshift(n)}return this},i.prototype.walk=function(n){for(var e,r=0,t=this.children.length;r0){for(e=[],r=0;r> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '

    /..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n"]} \ No newline at end of file diff --git a/deps/speedscope/speedscope.eee21de6.js b/deps/speedscope/speedscope.eee21de6.js new file mode 100644 index 00000000..0a76b583 --- /dev/null +++ b/deps/speedscope/speedscope.eee21de6.js @@ -0,0 +1,193 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c3)for(n=[n],o=3;o2&&(t.children=s.slice.call(arguments,2)),n={},t)"key"!==o&&"ref"!==o&&(n[o]=t[o]);return d(e.type,n,t.key||e.key,t.ref||e.ref,null)}function R(e){var t={},n={__c:"__cC"+i++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var o,_=this;return this.getChildContext||(o=[],this.getChildContext=function(){return t[n.__c]=_,t},this.shouldComponentUpdate=function(e){_.props.value!==e.value&&o.some(function(t){t.context=e.value,g(t)})},this.sub=function(e){o.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){o.splice(o.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Consumer.contextType=n,n.Provider.__=n,n}exports.isValidElement=t,exports.options=e,exports.options=e={__e:function(e,t){for(var n,o;t=t.__;)if((n=t.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(e))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(e)),o)return g(n.__E=n)}catch(t){e=t}throw e}},exports.isValidElement=t=function(e){return null!=e&&void 0===e.constructor},y.prototype.setState=function(e,t){var n;n=this.__s!==this.state?this.__s:this.__s=p({},this.state),"function"==typeof e&&(e=e(n,this.props)),e&&p(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),g(this))},y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),g(this))},y.prototype.render=v,n=[],o=0,_="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,r=u,i=0; +},{}],"ucYa":[function(require,module,exports) { +"use strict";function t(t){return t[t.length-1]||null}function e(t,e){t.sort(function(t,r){const n=e(t),o=e(r);return no?1:0})}function r(t,e,r){return t.has(e)||t.set(e,r(e)),t.get(e)}function n(t,e,r){return t.has(e)?t.get(e):r(e)}function o(t,e){if(!t.has(e))throw new Error(`Expected key ${e}`);return t.get(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.lastOf=t,exports.sortBy=e,exports.getOrInsert=r,exports.getOrElse=n,exports.getOrThrow=o,exports.itMap=l,exports.itForEach=u,exports.itReduce=i,exports.zeroPad=c,exports.formatPercent=a,exports.fract=f,exports.triangle=h,exports.findValueBisect=g,exports.findIndexBisect=p,exports.noop=x,exports.objectsHaveShallowEquality=d,exports.memoizeByShallowEquality=y,exports.memoizeByReference=w,exports.lazyStatic=E,exports.decodeBase64=A,exports.KeyedSet=void 0;class s{constructor(){this.map=new Map}getOrInsert(t){const e=t.key,r=this.map.get(e);return r||(this.map.set(e,t),t)}forEach(t){this.map.forEach(t)}[Symbol.iterator](){return this.map.values()}}function*l(t,e){for(let r of t)yield e(r)}function u(t,e){for(let r of t)e(r)}function i(t,e,r){let n=r;for(let o of t)n=e(n,o);return n}function c(t,e){return new Array(Math.max(e-t.length,0)+1).join("0")+t}function a(t){let e=`${t.toFixed(0)}%`;return 100===t?e="100%":t>99?e=">99%":t<.01?e="<0.01%":t<1?e=`${t.toFixed(2)}%`:t<10&&(e=`${t.toFixed(1)}%`),e}function f(t){return t-Math.floor(t)}function h(t){return 2*Math.abs(f(t)-.5)-1}function g(t,e,r,n,o=1){for(console.assert(!isNaN(o)&&!isNaN(n));;){if(e-t<=o)return[t,e];const s=(e+t)/2;r(s){let n;return null==e?(n=t(r),e={args:r,result:n},n):d(e.args,r)?e.result:(e.args=r,e.result=t(r),e.result)}}function w(t){let e=null;return r=>{let n;return null==e?(n=t(r),e={args:r,result:n},n):e.args===r?e.result:(e.args=r,e.result=t(r),e.result)}}function E(t){let e=null;return()=>(null==e&&(e={result:t()}),e.result)}exports.KeyedSet=s;const m=E(()=>{const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=new Map;for(let r=0;r>4,"="!==u&&(o[s++]=(15&a)<<4|f>>2),"="!==i&&(o[s++]=(7&f)<<6|h)}if(s!==n)throw new Error(`Expected to decode ${n} bytes, but only decoded ${s})`);return o} +},{}],"EhY8":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LRUCache=exports.List=void 0;class t{constructor(t){this.data=t,this.prev=null,this.next=null}}class e{constructor(){this.head=null,this.tail=null,this.size=0}getHead(){return this.head}getTail(){return this.tail}getSize(){return this.size}append(t){this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):this.head=this.tail=t,this.size++}prepend(t){return this.head?(this.head.prev=t,t.next=this.head,this.head=t):this.head=this.tail=t,this.size++,t}pop(){if(this.tail){const t=this.tail;return t.prev?(this.tail=t.prev,this.tail.next=null):this.head=this.tail=null,this.size--,t.prev=null,t}return null}dequeue(){if(this.head){const t=this.head;return t.next?(this.head=t.next,this.head.prev=null):this.head=this.tail=null,this.size--,t.next=null,t}return null}remove(t){null==t.prev?this.dequeue():null==t.next?this.pop():(t.next.prev=t.prev,t.prev.next=t.next,t.next=null,t.prev=null,this.size--)}}exports.List=e;class i{constructor(t){this.capacity=t,this.list=new e,this.map=new Map}has(t){return this.map.has(t)}get(t){const e=this.map.get(t);return e?(this.list.remove(e.listNode),this.list.prepend(e.listNode),e?e.value:null):null}getSize(){return this.list.getSize()}getCapacity(){return this.capacity}insert(e,i){const s=this.map.get(e);for(s&&this.list.remove(s.listNode);this.list.getSize()>=this.capacity;)this.map.delete(this.list.pop().data);const h=this.list.prepend(new t(e));this.map.set(e,{value:i,listNode:h})}getOrInsert(t,e){let i=this.get(t);return null==i&&(i=e(t),this.insert(t,i)),i}removeLRU(){const t=this.list.pop();if(!t)return null;const e=t.data,i=this.map.get(e).value;return this.map.delete(e),[e,i]}clear(){this.list=new e,this.map=new Map}}exports.LRUCache=i; +},{}],"tDuZ":[function(require,module,exports) { +"use strict";function t(t,i,s){return ts?s:t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.clamp=t,exports.Rect=exports.AffineTransform=exports.Vec2=void 0;class i{constructor(t,i){this.x=t,this.y=i}withX(t){return new i(t,this.y)}withY(t){return new i(this.x,t)}plus(t){return new i(this.x+t.x,this.y+t.y)}minus(t){return new i(this.x-t.x,this.y-t.y)}times(t){return new i(this.x*t,this.y*t)}timesPointwise(t){return new i(this.x*t.x,this.y*t.y)}dividedByPointwise(t){return new i(this.x/t.x,this.y/t.y)}dot(t){return this.x*t.x+this.y*t.y}equals(t){return this.x===t.x&&this.y===t.y}approxEquals(t,i=1e-9){return Math.abs(this.x-t.x)1)for(var n=1;n=0&&e<=31),t.TEXTURE0+e}var h,a;exports.Graphics=h,function(t){t.Rect=class{constructor(t=0,e=0,i=0,r=0){this.x=t,this.y=e,this.width=i,this.height=r}set(t,e,i,r){this.x=t,this.y=e,this.width=i,this.height=r}equals(t){return this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height}};class e{constructor(t,e,i,r){this.redF=t,this.greenF=e,this.blueF=i,this.alphaF=r}equals(t){return this.redF===t.redF&&this.greenF===t.greenF&&this.blueF===t.blueF&&this.alphaF===t.alphaF}}let i,r,s,n,h;e.TRANSPARENT=new e(0,0,0,0),t.Color=e,function(t){t[t.ZERO=0]="ZERO",t[t.ONE=1]="ONE",t[t.SOURCE_COLOR=2]="SOURCE_COLOR",t[t.TARGET_COLOR=3]="TARGET_COLOR",t[t.INVERSE_SOURCE_COLOR=4]="INVERSE_SOURCE_COLOR",t[t.INVERSE_TARGET_COLOR=5]="INVERSE_TARGET_COLOR",t[t.SOURCE_ALPHA=6]="SOURCE_ALPHA",t[t.TARGET_ALPHA=7]="TARGET_ALPHA",t[t.INVERSE_SOURCE_ALPHA=8]="INVERSE_SOURCE_ALPHA",t[t.INVERSE_TARGET_ALPHA=9]="INVERSE_TARGET_ALPHA",t[t.CONSTANT=10]="CONSTANT",t[t.INVERSE_CONSTANT=11]="INVERSE_CONSTANT"}(i=t.BlendOperation||(t.BlendOperation={})),function(t){t[t.TRIANGLES=0]="TRIANGLES",t[t.TRIANGLE_STRIP=1]="TRIANGLE_STRIP"}(r=t.Primitive||(t.Primitive={}));function a(t){return t==s.FLOAT?4:1}t.Context=class{constructor(){this.resizeEventHandlers=new Set}setCopyBlendState(){this.setBlendState(i.ONE,i.ZERO)}setAddBlendState(){this.setBlendState(i.ONE,i.ONE)}setPremultipliedBlendState(){this.setBlendState(i.ONE,i.INVERSE_SOURCE_ALPHA)}setUnpremultipliedBlendState(){this.setBlendState(i.SOURCE_ALPHA,i.INVERSE_SOURCE_ALPHA)}addAfterResizeEventHandler(t){this.resizeEventHandlers.add(t)}removeAfterResizeEventHandler(t){this.resizeEventHandlers.delete(t)}},function(t){t[t.FLOAT=0]="FLOAT",t[t.BYTE=1]="BYTE"}(s=t.AttributeType||(t.AttributeType={})),t.attributeByteLength=a;class _{constructor(t,e,i,r){this.name=t,this.type=e,this.count=i,this.byteOffset=r}}t.Attribute=_;t.VertexFormat=class{constructor(){this._attributes=[],this._stride=0}get attributes(){return this._attributes}get stride(){return this._stride}add(t,e,i){return this.attributes.push(new _(t,e,i,this.stride)),this._stride+=i*a(e),this}};t.VertexBuffer=class{uploadFloat32Array(t){this.upload(new Uint8Array(t.buffer),0)}uploadFloats(t){this.uploadFloat32Array(new Float32Array(t))}},function(t){t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR"}(n=t.PixelFilter||(t.PixelFilter={})),function(t){t[t.REPEAT=0]="REPEAT",t[t.CLAMP=1]="CLAMP"}(h=t.PixelWrap||(t.PixelWrap={}));class o{constructor(t,e,i){this.minFilter=t,this.magFilter=e,this.wrap=i}}o.LINEAR_CLAMP=new o(n.LINEAR,n.LINEAR,h.CLAMP),o.LINEAR_MIN_NEAREST_MAG_CLAMP=new o(n.LINEAR,n.NEAREST,h.CLAMP),o.NEAREST_CLAMP=new o(n.NEAREST,n.NEAREST,h.CLAMP),t.TextureFormat=o}(h||(exports.Graphics=h={})),exports.WebGL=a,function(t){class a extends h.Context{constructor(t=document.createElement("canvas")){super(),this._attributeCount=0,this._blendOperations=0,this._contextResetHandlers=[],this._currentClearColor=h.Color.TRANSPARENT,this._currentRenderTarget=null,this._defaultViewport=new h.Rect,this._forceStateUpdate=!0,this._generation=1,this._height=0,this._oldBlendOperations=0,this._oldRenderTarget=null,this._oldViewport=new h.Rect,this._width=0,this.handleWebglContextRestored=(()=>{this._attributeCount=0,this._currentClearColor=h.Color.TRANSPARENT,this._forceStateUpdate=!0,this._generation++;for(let t of this._contextResetHandlers)t()}),this.ANGLE_instanced_arrays=null,this.ANGLE_instanced_arrays_generation=-1;let e=t.getContext("webgl",{alpha:!1,antialias:!1,depth:!1,preserveDrawingBuffer:!1,stencil:!1});if(null==e)throw new Error("Setup failure");this._gl=e;let i=t.style;t.width=0,t.height=0,i.width=i.height="0",t.addEventListener("webglcontextlost",t=>{t.preventDefault()}),t.addEventListener("webglcontextrestored",this.handleWebglContextRestored),this._blendOperationMap={[h.BlendOperation.ZERO]:this._gl.ZERO,[h.BlendOperation.ONE]:this._gl.ONE,[h.BlendOperation.SOURCE_COLOR]:this._gl.SRC_COLOR,[h.BlendOperation.TARGET_COLOR]:this._gl.DST_COLOR,[h.BlendOperation.INVERSE_SOURCE_COLOR]:this._gl.ONE_MINUS_SRC_COLOR,[h.BlendOperation.INVERSE_TARGET_COLOR]:this._gl.ONE_MINUS_DST_COLOR,[h.BlendOperation.SOURCE_ALPHA]:this._gl.SRC_ALPHA,[h.BlendOperation.TARGET_ALPHA]:this._gl.DST_ALPHA,[h.BlendOperation.INVERSE_SOURCE_ALPHA]:this._gl.ONE_MINUS_SRC_ALPHA,[h.BlendOperation.INVERSE_TARGET_ALPHA]:this._gl.ONE_MINUS_DST_ALPHA,[h.BlendOperation.CONSTANT]:this._gl.CONSTANT_COLOR,[h.BlendOperation.INVERSE_CONSTANT]:this._gl.ONE_MINUS_CONSTANT_COLOR}}get widthInPixels(){return this._width}get heightInPixels(){return this._height}testContextLoss(){this.handleWebglContextRestored()}get gl(){return this._gl}get generation(){return this._generation}addContextResetHandler(t){r(this._contextResetHandlers,t)}removeContextResetHandler(t){s(this._contextResetHandlers,t)}get currentRenderTarget(){return this._currentRenderTarget}beginFrame(){this.setRenderTarget(null)}endFrame(){}setBlendState(t,e){this._blendOperations=a._packBlendModes(t,e)}setViewport(t,e,i,r){(null!=this._currentRenderTarget?this._currentRenderTarget.viewport:this._defaultViewport).set(t,e,i,r)}get viewport(){return null!=this._currentRenderTarget?this._currentRenderTarget.viewport:this._defaultViewport}get renderTargetWidthInPixels(){return null!=this._currentRenderTarget?this._currentRenderTarget.viewport.width:this._width}get renderTargetHeightInPixels(){return null!=this._currentRenderTarget?this._currentRenderTarget.viewport.height:this._height}draw(t,e,i){this._updateRenderTargetAndViewport(),f.from(e).prepare(),R.from(i).prepare(),this._updateFormat(e.format),this._updateBlendState(),this._gl.drawArrays(t==h.Primitive.TRIANGLES?this._gl.TRIANGLES:this._gl.TRIANGLE_STRIP,0,Math.floor(i.byteCount/e.format.stride)),this._forceStateUpdate=!1}resize(t,e,i,r){let s=this._gl.canvas;const n=s.getBoundingClientRect();if(this._width===t&&this._height===e&&n.width===i&&n.height===r)return;let h=s.style;s.width=t,s.height=e,h.width=`${i}px`,h.height=`${r}px`,this.setViewport(0,0,t,e),this._width=t,this._height=e,this.resizeEventHandlers.forEach(t=>t())}clear(t){this._updateRenderTargetAndViewport(),this._updateBlendState(),t.equals(this._currentClearColor)||(this._gl.clearColor(t.redF,t.greenF,t.blueF,t.alphaF),this._currentClearColor=t),this._gl.clear(this._gl.COLOR_BUFFER_BIT)}setRenderTarget(t){this._currentRenderTarget=A.from(t)}createMaterial(t,e,i){let r=new f(this,t,e,i);return r.program,r}createVertexBuffer(t){return i(t>0&&t%4==0),new R(this,t)}createTexture(t,e,i,r){return new p(this,t,e,i,r)}createRenderTarget(t){return new A(this,p.from(t))}getANGLE_instanced_arrays(){if(this.ANGLE_instanced_arrays_generation!==this._generation&&(this.ANGLE_instanced_arrays=null),!this.ANGLE_instanced_arrays&&(this.ANGLE_instanced_arrays=this.gl.getExtension("ANGLE_instanced_arrays"),!this.ANGLE_instanced_arrays))throw new Error("Failed to get extension ANGLE_instanced_arrays");return this.ANGLE_instanced_arrays}_updateRenderTargetAndViewport(){let t=this._currentRenderTarget,e=null!=t?t.viewport:this._defaultViewport,i=this._gl;(this._forceStateUpdate||this._oldRenderTarget!=t)&&(i.bindFramebuffer(i.FRAMEBUFFER,t?t.framebuffer:null),this._oldRenderTarget=t),!this._forceStateUpdate&&this._oldViewport.equals(e)||(i.viewport(e.x,this.renderTargetHeightInPixels-e.y-e.height,e.width,e.height),this._oldViewport.set(e.x,e.y,e.width,e.height))}_updateBlendState(){if(this._forceStateUpdate||this._oldBlendOperations!=this._blendOperations){let t=this._gl,e=this._blendOperations,r=this._oldBlendOperations,s=15&e,n=e>>4;i(s in this._blendOperationMap),i(n in this._blendOperationMap),e==a.COPY_BLEND_OPERATIONS?t.disable(t.BLEND):((this._forceStateUpdate||r==a.COPY_BLEND_OPERATIONS)&&t.enable(t.BLEND),t.blendFunc(this._blendOperationMap[s],this._blendOperationMap[n])),this._oldBlendOperations=e}}_updateFormat(t){let e=this._gl,i=t.attributes,r=i.length;for(let s=0;sr;)this._attributeCount--,e.disableVertexAttribArray(this._attributeCount);this._attributeCount=r}getWebGLInfo(){const t=this.gl.getExtension("WEBGL_debug_renderer_info");return{renderer:t?this.gl.getParameter(t.UNMASKED_RENDERER_WEBGL):null,vendor:t?this.gl.getParameter(t.UNMASKED_VENDOR_WEBGL):null,version:this.gl.getParameter(this.gl.VERSION)}}static from(t){return i(null==t||t instanceof a),t}static _packBlendModes(t,e){return t|e<<4}}a.COPY_BLEND_OPERATIONS=a._packBlendModes(h.BlendOperation.ONE,h.BlendOperation.ZERO),t.Context=a;class _{constructor(t,e,i=0,r=null,s=!0){this._material=t,this._name=e,this._generation=i,this._location=r,this._isDirty=s}get location(){let t=a.from(this._material.context);if(this._generation!=t.generation&&(this._location=t.gl.getUniformLocation(this._material.program,this._name),this._generation=t.generation,!e)){let e=this._material.program,r=t.gl;for(let t=0,s=r.getProgramParameter(e,r.ACTIVE_UNIFORMS);t0&&this._texture.height>0?this._texture.texture:null)}}class f{constructor(t,e,i,r,s={},n=[],h=0,a=null){this._context=t,this._format=e,this._vertexSource=i,this._fragmentSource=r,this._uniformsMap=s,this._uniformsList=n,this._generation=h,this._program=a}get context(){return this._context}get format(){return this._format}get vertexSource(){return this._vertexSource}get fragmentSource(){return this._fragmentSource}setUniformFloat(t,e){let r=this._uniformsMap[t]||null;null==r&&(r=new o(this,t),this._uniformsMap[t]=r,this._uniformsList.push(r)),i(r instanceof o),r.set(e)}setUniformInt(t,e){let r=this._uniformsMap[t]||null;null==r&&(r=new l(this,t),this._uniformsMap[t]=r,this._uniformsList.push(r)),i(r instanceof l),r.set(e)}setUniformVec2(t,e,r){let s=this._uniformsMap[t]||null;null==s&&(s=new u(this,t),this._uniformsMap[t]=s,this._uniformsList.push(s)),i(s instanceof u),s.set(e,r)}setUniformVec3(t,e,r,s){let n=this._uniformsMap[t]||null;null==n&&(n=new c(this,t),this._uniformsMap[t]=n,this._uniformsList.push(n)),i(n instanceof c),n.set(e,r,s)}setUniformVec4(t,e,r,s,n){let h=this._uniformsMap[t]||null;null==h&&(h=new d(this,t),this._uniformsMap[t]=h,this._uniformsList.push(h)),i(h instanceof d),h.set(e,r,s,n)}setUniformMat3(t,e,r,s,n,h,a,_,o,l){let u=this._uniformsMap[t]||null;null==u&&(u=new E(this,t),this._uniformsMap[t]=u,this._uniformsList.push(u)),i(u instanceof E),u.set(e,r,s,n,h,a,_,o,l)}setUniformSampler(t,e,r){let s=this._uniformsMap[t]||null;null==s&&(s=new g(this,t),this._uniformsMap[t]=s,this._uniformsList.push(s)),i(s instanceof g),s.set(e,r)}get program(){let t=this._context.gl;if(this._generation!=this._context.generation){this._program=t.createProgram(),this._compileShader(t,t.VERTEX_SHADER,this.vertexSource),this._compileShader(t,t.FRAGMENT_SHADER,this.fragmentSource);let r=this.format.attributes;for(let e=0;e=0),i(0<=t&&t+r<=this._byteCount),i(0<=e&&e+r<=this._byteCount),this._bytes&&t!=e&&0!=r&&(this._bytes.set(this._bytes.subarray(t,this._byteCount),e),this._growDirtyRegion(Math.min(t,e),Math.max(t,e)+r))}upload(t,e=0){i(0<=e&&e+t.length<=this._byteCount),i(null!=this._bytes),this._bytes.set(t,e),this._growDirtyRegion(e,e+t.length)}free(){this._buffer&&this._context.gl.deleteBuffer(this._buffer),this._generation=0}prepare(){let t=this._context.gl;this._generation!==this._context.generation&&(this._buffer=t.createBuffer(),this._generation=this._context.generation,this._isDirty=!0),t.bindBuffer(t.ARRAY_BUFFER,this._buffer),this._isDirty&&(t.bufferData(t.ARRAY_BUFFER,this._byteCount,t.DYNAMIC_DRAW),this._dirtyMin=this._totalMin,this._dirtyMax=this._totalMax,this._isDirty=!1),this._dirtyMin{const t=e.AffineTransform.betweenRects(i.configSpaceSrcRect,i.physicalSpaceDstRect),r=new e.Vec2(this.gl.viewport.width,this.gl.viewport.height);return e.AffineTransform.withTranslation(new e.Vec2(-1,1)).times(e.AffineTransform.withScale(new e.Vec2(2,-2).dividedByPointwise(r))).times(t)})()),this.gl.setUnpremultipliedBlendState(),this.gl.draw(t.Graphics.Primitive.TRIANGLES,this.material,i.batch.getBuffer())}}exports.RectangleBatchRenderer=c; +},{"../lib/math":"tDuZ","./graphics":"XGYN","./utils":"MMP6"}],"x77Y":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Color=void 0;var t=require("./math");class r{constructor(t=0,r=0,s=0,e=1){this.r=t,this.g=r,this.b=s,this.a=e}static fromLumaChromaHue(s,e,o){const i=o/60,a=e*(1-Math.abs(i%2-1)),[n,h,u]=i<1?[e,a,0]:i<2?[a,e,0]:i<3?[0,e,a]:i<4?[0,a,e]:i<5?[a,0,e]:[e,0,a],c=s-(.3*n+.59*h+.11*u);return new r((0,t.clamp)(n+c,0,1),(0,t.clamp)(h+c,0,1),(0,t.clamp)(u+c,0,1),1)}static fromCSSHex(t){if(7!==t.length||"#"!==t[0])throw new Error(`Invalid color input ${t}`);const s=parseInt(t.substr(1,2),16)/255,e=parseInt(t.substr(3,2),16)/255,o=parseInt(t.substr(5,2),16)/255;if(s<0||s>1||e<0||e>1||o<0||o>1)throw new Error(`Invalid color input ${t}`);return new r(s,e,o)}withAlpha(t){return new r(this.r,this.g,this.b,t)}toCSS(){return`rgba(${(255*this.r).toFixed()}, ${(255*this.g).toFixed()}, ${(255*this.b).toFixed()}, ${this.a.toFixed(2)})`}}exports.Color=r; +},{"./math":"tDuZ"}],"cFC1":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RowAtlas=void 0;var e=require("../lib/lru-cache"),t=require("./rectangle-batch-renderer"),r=require("../lib/math"),i=require("../lib/color"),c=require("./graphics"),h=require("./utils");class a{constructor(h,a,s){this.gl=h,this.rectangleBatchRenderer=a,this.textureRenderer=s,this.texture=h.createTexture(c.Graphics.TextureFormat.NEAREST_CLAMP,4096,4096),this.renderTarget=h.createRenderTarget(this.texture),this.rowCache=new e.LRUCache(this.texture.height),this.clearLineBatch=new t.RectangleBatch(h),this.clearLineBatch.addRect(r.Rect.unit,new i.Color(0,0,0,0)),h.addContextResetHandler(()=>{this.rowCache.clear()})}has(e){return this.rowCache.has(e)}getResolution(){return this.texture.width}getCapacity(){return this.texture.height}allocateLine(e){if(this.rowCache.getSize(){for(let i of e){let e=this.rowCache.get(i);if(null!=e)continue;e=this.allocateLine(i);const c=new r.Rect(new r.Vec2(0,e),new r.Vec2(this.texture.width,1));this.rectangleBatchRenderer.render({batch:this.clearLineBatch,configSpaceSrcRect:r.Rect.unit,physicalSpaceDstRect:c}),t(c,i)}})}renderViaAtlas(e,t){let i=this.rowCache.get(e);if(null==i)return!1;const c=new r.Rect(new r.Vec2(0,i),new r.Vec2(this.texture.width,1));return this.textureRenderer.render({texture:this.texture,srcRect:c,dstRect:t}),!0}}exports.RowAtlas=a; +},{"../lib/lru-cache":"EhY8","./rectangle-batch-renderer":"UGJH","../lib/math":"tDuZ","../lib/color":"x77Y","./graphics":"XGYN","./utils":"MMP6"}],"p3j0":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TextureRenderer=void 0;var e=require("../lib/math"),t=require("./graphics"),r=require("./utils");const n="\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n",i="\n precision mediump float;\n\n varying vec2 vUv;\n uniform sampler2D texture;\n\n void main() {\n gl_FragColor = texture2D(texture, vUv);\n }\n";class s{constructor(e){this.gl=e;const r=new t.Graphics.VertexFormat;r.add("position",t.Graphics.AttributeType.FLOAT,2),r.add("uv",t.Graphics.AttributeType.FLOAT,2);const s=[{pos:[-1,1],uv:[0,1]},{pos:[1,1],uv:[1,1]},{pos:[-1,-1],uv:[0,0]},{pos:[1,-1],uv:[1,0]}],o=[];for(let t of s)o.push(t.pos[0]),o.push(t.pos[1]),o.push(t.uv[0]),o.push(t.uv[1]);this.buffer=e.createVertexBuffer(r.stride*s.length),this.buffer.upload(new Uint8Array(new Float32Array(o).buffer)),this.material=e.createMaterial(r,n,i)}render(n){this.material.setUniformSampler("texture",n.texture,0),(0,r.setUniformAffineTransform)(this.material,"uvTransform",(()=>{const{srcRect:t,texture:r}=n,i=e.AffineTransform.withTranslation(new e.Vec2(0,1)).times(e.AffineTransform.withScale(new e.Vec2(1,-1))).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,new e.Vec2(r.width,r.height)),e.Rect.unit)).transformRect(t);return e.AffineTransform.betweenRects(e.Rect.unit,i)})()),(0,r.setUniformAffineTransform)(this.material,"positionTransform",(()=>{const{dstRect:t}=n,{viewport:r}=this.gl,i=new e.Vec2(r.width,r.height),s=e.AffineTransform.withScale(new e.Vec2(1,-1)).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,i),e.Rect.NDC)).transformRect(t);return e.AffineTransform.betweenRects(e.Rect.NDC,s)})()),this.gl.setUnpremultipliedBlendState(),this.gl.draw(t.Graphics.Primitive.TRIANGLE_STRIP,this.material,this.buffer)}}exports.TextureRenderer=s; +},{"../lib/math":"tDuZ","./graphics":"XGYN","./utils":"MMP6"}],"tdKg":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewportRectangleRenderer=void 0;var e=require("../lib/color"),i=require("./graphics"),r=require("./utils");const o=new i.Graphics.VertexFormat;o.add("position",i.Graphics.AttributeType.FLOAT,2);const n="\n attribute vec2 position;\n\n void main() {\n gl_Position = vec4(position, 0, 1);\n }\n",t=i=>{const{r:r,g:o,b:n}=e.Color.fromCSSHex(i.fgSecondaryColor),t=`${r.toFixed(1)}, ${o.toFixed(1)}, ${n.toFixed(1)}`;return`\n precision mediump float;\n\n uniform mat3 configSpaceToPhysicalViewSpace;\n uniform vec2 physicalSize;\n uniform vec2 physicalOrigin;\n uniform vec2 configSpaceViewportOrigin;\n uniform vec2 configSpaceViewportSize;\n uniform float framebufferHeight;\n\n void main() {\n vec2 origin = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportOrigin, 1.0)).xy;\n vec2 size = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportSize, 0.0)).xy;\n\n vec2 halfSize = physicalSize / 2.0;\n\n float borderWidth = 2.0;\n\n origin = floor(origin * halfSize) / halfSize + borderWidth * vec2(1.0, 1.0);\n size = floor(size * halfSize) / halfSize - 2.0 * borderWidth * vec2(1.0, 1.0);\n\n vec2 coord = gl_FragCoord.xy;\n coord.x = coord.x - physicalOrigin.x;\n coord.y = framebufferHeight - coord.y - physicalOrigin.y;\n vec2 clamped = clamp(coord, origin, origin + size);\n vec2 gap = clamped - coord;\n float maxdist = max(abs(gap.x), abs(gap.y));\n\n // TOOD(jlfwong): Could probably optimize this to use mix somehow.\n if (maxdist == 0.0) {\n // Inside viewport rectangle\n gl_FragColor = vec4(0, 0, 0, 0);\n } else if (maxdist < borderWidth) {\n // Inside viewport rectangle at border\n gl_FragColor = vec4(${t}, 0.8);\n } else {\n // Outside viewport rectangle\n gl_FragColor = vec4(${t}, 0.5);\n }\n }\n `};class a{constructor(e,i){this.gl=e;const r=[[-1,1],[1,1],[-1,-1],[1,-1]],a=[];for(let o of r)a.push(o[0]),a.push(o[1]);this.buffer=e.createVertexBuffer(o.stride*r.length),this.buffer.upload(new Uint8Array(new Float32Array(a).buffer)),this.material=e.createMaterial(o,n,t(i))}render(e){(0,r.setUniformAffineTransform)(this.material,"configSpaceToPhysicalViewSpace",e.configSpaceToPhysicalViewSpace),(0,r.setUniformVec2)(this.material,"configSpaceViewportOrigin",e.configSpaceViewportRect.origin),(0,r.setUniformVec2)(this.material,"configSpaceViewportSize",e.configSpaceViewportRect.size);const o=this.gl.viewport;this.material.setUniformVec2("physicalOrigin",o.x,o.y),this.material.setUniformVec2("physicalSize",o.width,o.height),this.material.setUniformFloat("framebufferHeight",this.gl.renderTargetHeightInPixels),this.gl.setBlendState(i.Graphics.BlendOperation.SOURCE_ALPHA,i.Graphics.BlendOperation.INVERSE_SOURCE_ALPHA),this.gl.draw(i.Graphics.Primitive.TRIANGLE_STRIP,this.material,this.buffer)}}exports.ViewportRectangleRenderer=a; +},{"../lib/color":"x77Y","./graphics":"XGYN","./utils":"MMP6"}],"Q0ad":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartColorPassRenderer=void 0;var e=require("../lib/math"),r=require("./graphics"),n=require("./utils");const t=new r.Graphics.VertexFormat;t.add("position",r.Graphics.AttributeType.FLOAT,2),t.add("uv",r.Graphics.AttributeType.FLOAT,2);const i="\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n",o=e=>`\n precision mediump float;\n\n uniform vec2 uvSpacePixelSize;\n uniform float renderOutlines;\n\n varying vec2 vUv;\n uniform sampler2D colorTexture;\n\n // https://en.wikipedia.org/wiki/HSL_and_HSV#From_luma/chroma/hue\n vec3 hcl2rgb(float H, float C, float L) {\n float hPrime = H / 60.0;\n float X = C * (1.0 - abs(mod(hPrime, 2.0) - 1.0));\n vec3 RGB =\n hPrime < 1.0 ? vec3(C, X, 0) :\n hPrime < 2.0 ? vec3(X, C, 0) :\n hPrime < 3.0 ? vec3(0, C, X) :\n hPrime < 4.0 ? vec3(0, X, C) :\n hPrime < 5.0 ? vec3(X, 0, C) :\n vec3(C, 0, X);\n\n float m = L - dot(RGB, vec3(0.30, 0.59, 0.11));\n return RGB + vec3(m, m, m);\n }\n\n float triangle(float x) {\n return 2.0 * abs(fract(x) - 0.5) - 1.0;\n }\n\n ${e}\n\n void main() {\n vec4 here = texture2D(colorTexture, vUv);\n\n if (here.z == 0.0) {\n // Background color\n gl_FragColor = vec4(0, 0, 0, 0);\n return;\n }\n\n // Sample the 4 surrounding pixels in the depth texture to determine\n // if we should draw a boundary here or not.\n vec4 N = texture2D(colorTexture, vUv + vec2(0, uvSpacePixelSize.y));\n vec4 E = texture2D(colorTexture, vUv + vec2(uvSpacePixelSize.x, 0));\n vec4 S = texture2D(colorTexture, vUv + vec2(0, -uvSpacePixelSize.y));\n vec4 W = texture2D(colorTexture, vUv + vec2(-uvSpacePixelSize.x, 0));\n\n // NOTE: For outline checks, we intentionally check both the right\n // and the left to determine if we're an edge. If a rectangle is a single\n // pixel wide, we don't want to render it as an outline, so this method\n // of checking ensures that we don't outline single physical-space\n // pixel width rectangles.\n if (\n renderOutlines > 0.0 &&\n (\n here.y == N.y && here.y != S.y || // Top edge\n here.y == S.y && here.y != N.y || // Bottom edge\n here.x == E.x && here.x != W.x || // Left edge\n here.x == W.x && here.x != E.x\n )\n ) {\n // We're on an edge! Draw transparent.\n gl_FragColor = vec4(0, 0, 0, 0);\n } else {\n // Not on an edge. Draw the appropriate color.\n gl_FragColor = vec4(colorForBucket(here.z), here.a);\n }\n }\n`;class a{constructor(e,r){this.gl=e;const n=[{pos:[-1,1],uv:[0,1]},{pos:[1,1],uv:[1,1]},{pos:[-1,-1],uv:[0,0]},{pos:[1,-1],uv:[1,0]}],a=[];for(let t of n)a.push(t.pos[0]),a.push(t.pos[1]),a.push(t.uv[0]),a.push(t.uv[1]);this.buffer=e.createVertexBuffer(t.stride*n.length),this.buffer.uploadFloats(a),this.material=e.createMaterial(t,i,o(r.colorForBucketGLSL))}render(t){const{srcRect:i,rectInfoTexture:o}=t,a=e.AffineTransform.withTranslation(new e.Vec2(0,1)).times(e.AffineTransform.withScale(new e.Vec2(1,-1))).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,new e.Vec2(o.width,o.height)),e.Rect.unit)).transformRect(i),s=e.AffineTransform.betweenRects(e.Rect.unit,a),{dstRect:c}=t,l=new e.Vec2(this.gl.viewport.width,this.gl.viewport.height),u=e.AffineTransform.withScale(new e.Vec2(1,-1)).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,l),e.Rect.NDC)).transformRect(c),h=e.AffineTransform.betweenRects(e.Rect.NDC,u),f=e.Vec2.unit.dividedByPointwise(new e.Vec2(t.rectInfoTexture.width,t.rectInfoTexture.height));this.material.setUniformSampler("colorTexture",t.rectInfoTexture,0),(0,n.setUniformAffineTransform)(this.material,"uvTransform",s),this.material.setUniformFloat("renderOutlines",t.renderOutlines?1:0),this.material.setUniformVec2("uvSpacePixelSize",f.x,f.y),(0,n.setUniformAffineTransform)(this.material,"positionTransform",h),this.gl.setUnpremultipliedBlendState(),this.gl.draw(r.Graphics.Primitive.TRIANGLE_STRIP,this.material,this.buffer)}}exports.FlamechartColorPassRenderer=a; +},{"../lib/math":"tDuZ","./graphics":"XGYN","./utils":"MMP6"}],"KwET":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CanvasContext=void 0;var e=require("./graphics"),r=require("./rectangle-batch-renderer"),t=require("./texture-renderer"),i=require("../lib/math"),n=require("./overlay-rectangle-renderer"),s=require("./flamechart-color-pass-renderer"),o=require("../lib/color");class a{constructor(i,a){this.animationFrameRequest=null,this.beforeFrameHandlers=new Set,this.onBeforeFrame=(()=>{this.animationFrameRequest=null,this.gl.setViewport(0,0,this.gl.renderTargetWidthInPixels,this.gl.renderTargetHeightInPixels);const r=o.Color.fromCSSHex(this.theme.bgPrimaryColor);this.gl.clear(new e.Graphics.Color(r.r,r.g,r.b,r.a));for(const e of this.beforeFrameHandlers)e()}),this.gl=new e.WebGL.Context(i),this.rectangleBatchRenderer=new r.RectangleBatchRenderer(this.gl),this.textureRenderer=new t.TextureRenderer(this.gl),this.viewportRectangleRenderer=new n.ViewportRectangleRenderer(this.gl,a),this.flamechartColorPassRenderer=new s.FlamechartColorPassRenderer(this.gl,a),this.theme=a,this.gl.addAfterResizeEventHandler(this.onBeforeFrame);const l=this.gl.getWebGLInfo();l&&console.log(`WebGL initialized. renderer: ${l.renderer}, vendor: ${l.vendor}, version: ${l.version}`),window.testContextLoss=(()=>{this.gl.testContextLoss()})}addBeforeFrameHandler(e){this.beforeFrameHandlers.add(e)}removeBeforeFrameHandler(e){this.beforeFrameHandlers.delete(e)}requestFrame(){this.animationFrameRequest||(this.animationFrameRequest=requestAnimationFrame(this.onBeforeFrame))}setViewport(e,r){const{origin:t,size:i}=e;let n=this.gl.viewport;this.gl.setViewport(t.x,t.y,i.x,i.y),r();let{x:s,y:o,width:a,height:l}=n;this.gl.setViewport(s,o,a,l)}renderBehind(e,r){const t=e.getBoundingClientRect(),n=new i.Rect(new i.Vec2(t.left*window.devicePixelRatio,t.top*window.devicePixelRatio),new i.Vec2(t.width*window.devicePixelRatio,t.height*window.devicePixelRatio));this.setViewport(n,r)}}exports.CanvasContext=a; +},{"./graphics":"XGYN","./rectangle-batch-renderer":"UGJH","./texture-renderer":"p3j0","../lib/math":"tDuZ","./overlay-rectangle-renderer":"tdKg","./flamechart-color-pass-renderer":"Q0ad","../lib/color":"x77Y"}],"zEXv":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFrameToColorBucket=exports.getProfileToView=exports.getRowAtlas=exports.getCanvasContext=exports.createGetCSSColorForFrame=exports.createGetColorBucketForFrame=void 0;var e=require("../lib/utils"),t=require("../gl/row-atlas"),o=require("../gl/canvas-context");const r=(0,e.memoizeByReference)(e=>t=>e.get(t.key)||0);exports.createGetColorBucketForFrame=r;const n=(0,e.memoizeByShallowEquality)(({theme:e,frameToColorBucket:t})=>{const o=r(t);return t=>{const r=o(t)/255;return e.colorForBucket(r).toCSS()}});exports.createGetCSSColorForFrame=n;const a=(0,e.memoizeByShallowEquality)(({theme:e,canvas:t})=>new o.CanvasContext(t,e));exports.getCanvasContext=a;const s=(0,e.memoizeByReference)(e=>new t.RowAtlas(e.gl,e.rectangleBatchRenderer,e.textureRenderer));exports.getRowAtlas=s;const l=(0,e.memoizeByShallowEquality)(({profile:e,flattenRecursion:t})=>t?e.getProfileWithRecursionFlattened():e);exports.getProfileToView=l;const c=(0,e.memoizeByReference)(e=>{const t=[];function o(e){return(e.file||"")+e.name}e.forEachFrame(e=>t.push(e)),t.sort(function(e,t){return o(e)>o(t)?1:-1});const r=new Map;for(let n=0;n=u.__.length&&u.__.push({}),u.__[_]}function a(_){return e=1,p(A,_)}function p(t,o,e){var u=f(_++,2);return u.__c||(u.__c=n,u.__=[e?e(o):A(void 0,o),function(_){var n=t(u.__[0],_);u.__[0]!==n&&(u.__[0]=n,u.__c.setState({}))}]),u.__}function h(t,e){var u=f(_++,3);!o.options.__s&&q(u.__H,e)&&(u.__=t,u.__H=e,n.__H.__h.push(u))}function v(t,e){var u=f(_++,4);!o.options.__s&&q(u.__H,e)&&(u.__=t,u.__H=e,n.__h.push(u))}function m(_){return e=5,l(function(){return{current:_}},[])}function H(_,n,t){e=6,v(function(){"function"==typeof _?_(n()):_&&(_.current=n())},null==t?t:t.concat(_))}function l(n,t){var o=f(_++,7);return q(o.__H,t)?(o.__H=t,o.__h=n,o.__=n()):o.__}function d(_,n){return e=8,l(function(){return _},n)}function x(t){var o=n.context[t.__c],e=f(_++,9);return e.__c=t,o?(null==e.__&&(e.__=!0,o.sub(n)),o.props.value):t.__}function y(_,n){o.options.useDebugValue&&o.options.useDebugValue(n?n(_):_)}function E(t){var o=f(_++,10),e=a();return o.__=t,n.componentDidCatch||(n.componentDidCatch=function(_){o.__&&o.__(_),e[1](_)}),[e[0],function(){e[1](void 0)}]}function b(){u.some(function(_){if(_.__P)try{_.__H.__h.forEach(g),_.__H.__h.forEach(D),_.__H.__h=[]}catch(n){return _.__H.__h=[],o.options.__e(n,_.__v),!0}}),u=[]}function g(_){_.t&&_.t()}function D(_){var n=_.__();"function"==typeof n&&(_.t=n)}function q(_,n){return!_||n.some(function(n,t){return n!==_[t]})}function A(_,n){return"function"==typeof n?n(_):n}o.options.__r=function(t){r&&r(t),_=0,(n=t.__c).__H&&(n.__H.__h.forEach(g),n.__H.__h.forEach(D),n.__H.__h=[])},o.options.diffed=function(_){i&&i(_);var n=_.__c;if(n){var e=n.__H;e&&e.__h.length&&(1!==u.push(n)&&t===o.options.requestAnimationFrame||((t=o.options.requestAnimationFrame)||function(_){var n,t=function(){clearTimeout(o),cancelAnimationFrame(n),setTimeout(_)},o=setTimeout(t,100);"undefined"!=typeof window&&(n=requestAnimationFrame(t))})(b))}},o.options.__c=function(_,n){n.some(function(_){try{_.__h.forEach(g),_.__h=_.__h.filter(function(_){return!_.__||D(_)})}catch(t){n.some(function(_){_.__h&&(_.__h=[])}),n=[],o.options.__e(t,_.__v)}}),c&&c(_,n)},o.options.unmount=function(_){s&&s(_);var n=_.__c;if(n){var t=n.__H;if(t)try{t.__.forEach(function(_){return _.t&&_.t()})}catch(_){o.options.__e(_,n.__v)}}}; +},{"preact":"aSor"}],"AQ6k":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e={version:!0,Children:!0,render:!0,hydrate:!0,unmountComponentAtNode:!0,createPortal:!0,createFactory:!0,cloneElement:!0,isValidElement:!0,findDOMNode:!0,PureComponent:!0,memo:!0,forwardRef:!0,unstable_batchedUpdates:!0,Suspense:!0,SuspenseList:!0,lazy:!0,createElement:!0,createContext:!0,createRef:!0,Fragment:!0,Component:!0};exports.render=E,exports.hydrate=k,exports.unmountComponentAtNode=j,exports.createPortal=C,exports.createFactory=A,exports.cloneElement=U,exports.isValidElement=S,exports.findDOMNode=F,exports.memo=i,exports.forwardRef=l,exports.Suspense=d,exports.SuspenseList=v,exports.lazy=m,Object.defineProperty(exports,"createElement",{enumerable:!0,get:function(){return n.createElement}}),Object.defineProperty(exports,"createContext",{enumerable:!0,get:function(){return n.createContext}}),Object.defineProperty(exports,"createRef",{enumerable:!0,get:function(){return n.createRef}}),Object.defineProperty(exports,"Fragment",{enumerable:!0,get:function(){return n.Fragment}}),Object.defineProperty(exports,"Component",{enumerable:!0,get:function(){return n.Component}}),exports.unstable_batchedUpdates=exports.PureComponent=exports.Children=exports.version=exports.default=void 0;var t=require("preact/hooks");Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&(Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(exports,n,{enumerable:!0,get:function(){return t[n]}}))});var n=require("preact");function r(e,t){for(var n in t)e[n]=t[n];return e}function o(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}var u=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).isPureReactComponent=!0,n}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,r.prototype.shouldComponentUpdate=function(e,t){return o(this.props,e)||o(this.state,t)},r}(n.Component);function i(e,t){function u(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:o(this.props,e)}function i(t){return this.shouldComponentUpdate=u,(0,n.createElement)(e,r({},t))}return i.prototype.isReactComponent=!0,i.displayName="Memo("+(e.displayName||e.name)+")",i.t=!0,i}exports.PureComponent=u;var a=n.options.__b;function l(e){function t(t){var n=r({},t);return delete n.ref,e(n,t.ref)}return t.prototype.isReactComponent=t.t=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}n.options.__b=function(e){e.type&&e.type.t&&e.ref&&(e.props.ref=e.ref,e.ref=null),a&&a(e)};var c=function(e,t){return e?(0,n.toChildArray)(e).reduce(function(e,n,r){return e.concat(t(n,r))},[]):null},p={map:c,forEach:c,count:function(e){return e?(0,n.toChildArray)(e).length:0},only:function(e){if(1!==(e=(0,n.toChildArray)(e)).length)throw new Error("Children.only() expects only one child.");return e[0]},toArray:n.toChildArray},s=n.options.__e;function f(e){return e&&((e=r({},e)).__c=null,e.__k=e.__k&&e.__k.map(f)),e}function d(){this.__u=0,this.o=null,this.__b=null}function _(e){var t=e.__.__c;return t&&t.u&&t.u(e)}function m(e){var t,r,o;function u(u){if(t||(t=e()).then(function(e){r=e.default||e},function(e){o=e}),o)throw o;if(!r)throw t;return(0,n.createElement)(r,u)}return u.displayName="Lazy",u.t=!0,u}function v(){this.i=null,this.l=null}exports.Children=p,n.options.__e=function(e,t,n){if(e.then)for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return r.__c(e,t.__c);s(e,t,n)},(d.prototype=new n.Component).__c=function(e,t){var n=this;null==n.o&&(n.o=[]),n.o.push(t);var r=_(n.__v),o=!1,u=function(){o||(o=!0,r?r(i):i())};t.__c=t.componentWillUnmount,t.componentWillUnmount=function(){u(),t.__c&&t.__c()};var i=function(){var e;if(!--n.__u)for(n.__v.__k[0]=n.state.u,n.setState({u:n.__b=null});e=n.o.pop();)e.forceUpdate()};n.__u++||n.setState({u:n.__b=n.__v.__k[0]}),e.then(u,u)},d.prototype.render=function(e,t){return this.__b&&(this.__v.__k[0]=f(this.__b),this.__b=null),[(0,n.createElement)(n.Component,null,t.u?null:e.children),t.u&&e.fallback]};var h=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]s()))}get(){return this.state}subscribe(s){this.observers.push(s)}unsubscribe(s){const t=this.observers.indexOf(s);-1!==t&&this.observers.splice(t,1)}}function i(t){const[e,r]=(0,s.useState)(t.get());return(0,s.useLayoutEffect)(()=>{function s(){r(t.get())}return r(t.get()),t.subscribe(s),()=>{t.unsubscribe(s)}},[t]),e}exports.Atom=r; +},{"preact/hooks":"MwGB"}],"dpTI":[function(require,module,exports) { +"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewMode=void 0,exports.ViewMode=e,function(e){e[e.CHRONO_FLAME_CHART=0]="CHRONO_FLAME_CHART",e[e.LEFT_HEAVY_FLAME_GRAPH=1]="LEFT_HEAVY_FLAME_GRAPH",e[e.SANDWICH_VIEW=2]="SANDWICH_VIEW"}(e||(exports.ViewMode=e={})); +},{}],"O1pB":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getHashParams=o;var e=require("../lib/view-mode");function r(r){switch(r){case"time-ordered":return e.ViewMode.CHRONO_FLAME_CHART;case"left-heavy":return e.ViewMode.LEFT_HEAVY_FLAME_GRAPH;case"sandwich":return e.ViewMode.SANDWICH_VIEW;default:return null}}function o(e=window.location.hash){try{if(!e.startsWith("#"))return{};const t=e.substr(1).split("&"),i={};for(const e of t){let[o,t]=e.split("=");if(t=decodeURIComponent(t),"profileURL"===o)i.profileURL=t;else if("title"===o)i.title=t;else if("localProfilePath"===o)i.localProfilePath=t;else if("view"===o){const e=r(t);null!==e?i.viewMode=e:console.error(`Ignoring invalid view specifier: ${t}`)}}return i}catch(o){return console.error("Error when loading hash fragment."),console.error(o),{}}} +},{"../lib/view-mode":"dpTI"}],"uxXA":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ProfileGroupAtom=exports.FlamechartID=void 0;var e,t=require("../lib/atom"),a=require("../lib/math"),l=require("../lib/utils");exports.FlamechartID=e,function(e){e.LEFT_HEAVY="LEFT_HEAVY",e.CHRONO="CHRONO",e.SANDWICH_INVERTED_CALLERS="SANDWICH_INVERTED_CALLERS",e.SANDWICH_CALLEES="SANDWICH_CALLEES"}(e||(exports.FlamechartID=e={}));let i={hover:null,selectedNode:null,configSpaceViewportRect:a.Rect.empty,logicalSpaceViewportSize:a.Vec2.zero};class s extends t.Atom{constructor(){super(...arguments),this.setProfileGroup=(e=>{this.set({name:e.name,indexToView:e.indexToView,profiles:e.profiles.map(e=>({profile:e,chronoViewState:i,leftHeavyViewState:i,sandwichViewState:{callerCallee:null}}))})}),this.setProfileIndexToView=(e=>{null!=this.state&&(e=(0,a.clamp)(e,0,this.state.profiles.length-1),this.set(Object.assign(Object.assign({},this.state),{indexToView:e})))}),this.setSelectedFrame=(e=>{if(null==this.state)return;null!=this.getActiveProfile()&&this.updateActiveSandwichViewState(t=>null==e?{callerCallee:null}:{callerCallee:{invertedCallerFlamegraph:i,calleeFlamegraph:i,selectedFrame:e}})})}set(e){const t=this.state;null!=t&&null!=e&&(0,l.objectsHaveShallowEquality)(t,e)||super.set(e)}getActiveProfile(){var e;return null==this.state?null:this.state.profiles[null===(e=this.state)||void 0===e?void 0:e.indexToView]||null}updateActiveProfileState(e){if(null==this.state)return;const{indexToView:t,profiles:a}=this.state;this.set(Object.assign(Object.assign({},this.state),{profiles:a.map((a,l)=>l!=t?a:e(a))}))}updateActiveSandwichViewState(e){this.updateActiveProfileState(t=>Object.assign(Object.assign({},t),{sandwichViewState:e(t.sandwichViewState)}))}updateFlamechartState(t,a){switch(t){case e.CHRONO:this.updateActiveProfileState(e=>Object.assign(Object.assign({},e),{chronoViewState:a(e.chronoViewState)}));break;case e.LEFT_HEAVY:this.updateActiveProfileState(e=>Object.assign(Object.assign({},e),{leftHeavyViewState:a(e.leftHeavyViewState)}));break;case e.SANDWICH_CALLEES:this.updateActiveSandwichViewState(e=>Object.assign(Object.assign({},e),{callerCallee:null==e.callerCallee?null:Object.assign(Object.assign({},e.callerCallee),{calleeFlamegraph:a(e.callerCallee.calleeFlamegraph)})}));break;case e.SANDWICH_INVERTED_CALLERS:this.updateActiveSandwichViewState(e=>Object.assign(Object.assign({},e),{callerCallee:null==e.callerCallee?null:Object.assign(Object.assign({},e.callerCallee),{invertedCallerFlamegraph:a(e.callerCallee.invertedCallerFlamegraph)})}))}}setFlamechartHoveredNode(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{hover:t}))}setSelectedNode(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{selectedNode:t}))}setConfigSpaceViewportRect(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{configSpaceViewportRect:t}))}setLogicalSpaceViewportSize(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{logicalSpaceViewportSize:t}))}clearHoverNode(){this.setFlamechartHoveredNode(e.CHRONO,null),this.setFlamechartHoveredNode(e.LEFT_HEAVY,null),this.setFlamechartHoveredNode(e.SANDWICH_CALLEES,null),this.setFlamechartHoveredNode(e.SANDWICH_INVERTED_CALLERS,null)}}exports.ProfileGroupAtom=s; +},{"../lib/atom":"QkVE","../lib/math":"tDuZ","../lib/utils":"ucYa"}],"LDQe":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.tableSortMethodAtom=exports.SortDirection=exports.SortField=exports.errorAtom=exports.loadingAtom=exports.canUseXHR=exports.dragActiveAtom=exports.glCanvasAtom=exports.hashParamsAtom=exports.profileGroupAtom=exports.viewModeAtom=exports.searchQueryAtom=exports.searchIsActiveAtom=exports.flattenRecursionAtom=void 0;var o=require("../lib/atom"),t=require("../lib/view-mode"),e=require("../lib/hash-params"),r=require("./profile-group");const s=new o.Atom(!1,"flattenRecursion");exports.flattenRecursionAtom=s;const n=new o.Atom(!1,"searchIsActive");exports.searchIsActiveAtom=n;const i=new o.Atom("","searchQueryAtom");exports.searchQueryAtom=i;const A=new o.Atom(t.ViewMode.CHRONO_FLAME_CHART,"viewMode");exports.viewModeAtom=A;const a=new r.ProfileGroupAtom(null,"profileGroup");exports.profileGroupAtom=a,A.subscribe(()=>{a.clearHoverNode()});const p=(0,e.getHashParams)(),c=new o.Atom(p,"hashParams");exports.hashParamsAtom=c;const m=new o.Atom(null,"glCanvas");exports.glCanvasAtom=m;const l=new o.Atom(!1,"dragActive");exports.dragActiveAtom=l;const x=window.location.protocol,d="http:"===x||"https:"===x;exports.canUseXHR=d;const u=d&&null!=p.profileURL,h=new o.Atom(u,"loading");exports.loadingAtom=h;const S=new o.Atom(!1,"error");var v,w;exports.errorAtom=S,exports.SortField=v,function(o){o[o.SYMBOL_NAME=0]="SYMBOL_NAME",o[o.SELF=1]="SELF",o[o.TOTAL=2]="TOTAL"}(v||(exports.SortField=v={})),exports.SortDirection=w,function(o){o[o.ASCENDING=0]="ASCENDING",o[o.DESCENDING=1]="DESCENDING"}(w||(exports.SortDirection=w={}));const E=new o.Atom({field:v.SELF,direction:w.DESCENDING},"tableSortMethod");exports.tableSortMethodAtom=E; +},{"../lib/atom":"QkVE","../lib/view-mode":"dpTI","../lib/hash-params":"O1pB","./profile-group":"uxXA"}],"MY42":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useActiveProfileState=t;var e=require("./getters"),i=require("."),r=require("../lib/atom");function t(){const t=(0,r.useAtom)(i.flattenRecursionAtom),o=(0,r.useAtom)(i.profileGroupAtom);if(!o)return null;if(o.indexToView>=o.profiles.length)return null;const n=o.indexToView,s=o.profiles[n];return Object.assign(Object.assign({},o.profiles[o.indexToView]),{profile:(0,e.getProfileToView)({profile:s.profile,flattenRecursion:t}),index:o.indexToView})} +},{"./getters":"zEXv",".":"LDQe","../lib/atom":"QkVE"}],"KQrJ":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.colorSchemeAtom=exports.ColorScheme=void 0;var e,o=require("../lib/atom");exports.ColorScheme=e,function(e){e[e.SYSTEM=0]="SYSTEM",e[e.DARK=1]="DARK",e[e.LIGHT=2]="LIGHT"}(e||(exports.ColorScheme=e={}));const r="speedscope-color-scheme";function t(){const o=window.localStorage&&window.localStorage[r];return"DARK"===o?e.DARK:"LIGHT"===o?e.LIGHT:e.SYSTEM}function c(){return matchMedia("(prefers-color-scheme: dark)")}function s(o){if(c().matches)switch(o){case e.SYSTEM:return e.LIGHT;case e.LIGHT:return e.DARK;case e.DARK:return e.SYSTEM}else switch(o){case e.SYSTEM:return e.DARK;case e.DARK:return e.LIGHT;case e.LIGHT:return e.SYSTEM}}class a extends o.Atom{constructor(){super(...arguments),this.cycleToNextColorScheme=(()=>{this.set(s(this.get()))})}}const n=new a(t(),"colorScheme");exports.colorSchemeAtom=n,n.subscribe(()=>{const o=n.get();switch(o){case e.DARK:window.localStorage[r]="DARK";break;case e.LIGHT:window.localStorage[r]="LIGHT";break;case e.SYSTEM:delete window.localStorage[r];break;default:return o}return o}); +},{"../lib/atom":"QkVE"}],"osod":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.darkTheme=void 0;var o,r=require("../../lib/color"),e=require("../../lib/utils");!function(o){o.LIGHTER_GRAY="#D0D0D0",o.LIGHT_GRAY="#BDBDBD",o.GRAY="#666666",o.DARK_GRAY="#222222",o.DARKER_GRAY="#0C0C0C",o.OFF_BLACK="#060606",o.BLACK="#000000",o.BLUE="#00769B",o.PALE_BLUE="#004E75",o.GREEN="#0F8A42",o.LIGHT_BROWN="#D6AE24",o.BROWN="#A66F1C"}(o||(o={}));const t=.2,l=.1,a=.2,R=.1,c=o=>{const t=(0,e.triangle)(30*o),l=.9*o*360,a=.2+.1*t,R=.2-.1*t;return r.Color.fromLumaChromaHue(R,a,l)},A=`\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${.2.toFixed(1)} + ${.1.toFixed(1)} * x;\n float L = ${.2.toFixed(1)} - ${.1.toFixed(1)} * x;\n return hcl2rgb(H, C, L);\n }\n`,C={fgPrimaryColor:o.LIGHTER_GRAY,fgSecondaryColor:o.GRAY,bgPrimaryColor:o.OFF_BLACK,bgSecondaryColor:o.DARKER_GRAY,altFgPrimaryColor:o.LIGHTER_GRAY,altFgSecondaryColor:o.GRAY,altBgPrimaryColor:o.BLACK,altBgSecondaryColor:o.DARKER_GRAY,selectionPrimaryColor:o.BLUE,selectionSecondaryColor:o.PALE_BLUE,weightColor:o.GREEN,searchMatchTextColor:o.DARKER_GRAY,searchMatchPrimaryColor:o.BROWN,searchMatchSecondaryColor:o.LIGHT_BROWN,colorForBucket:c,colorForBucketGLSL:A};exports.darkTheme=C; +},{"../../lib/color":"x77Y","../../lib/utils":"ucYa"}],"CjU5":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.lightTheme=void 0;var o,r=require("../../lib/color"),e=require("../../lib/utils");!function(o){o.WHITE="#FFFFFF",o.OFF_WHITE="#F6F6F6",o.LIGHT_GRAY="#BDBDBD",o.GRAY="#666666",o.DARK_GRAY="#222222",o.OFF_BLACK="#111111",o.BLACK="#000000",o.DARK_BLUE="#2F80ED",o.PALE_DARK_BLUE="#8EB7ED",o.GREEN="#6FCF97",o.YELLOW="#FEDC62",o.ORANGE="#FFAC02"}(o||(o={}));const t=.25,l=.2,a=.8,F=.15,c=o=>{const t=(0,e.triangle)(30*o),l=.9*o*360,a=.25+.2*t,F=.8-.15*t;return r.Color.fromLumaChromaHue(F,a,l)},i=`\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${.25.toFixed(1)} + ${.2.toFixed(1)} * x;\n float L = ${.8.toFixed(1)} - ${.15.toFixed(1)} * x;\n return hcl2rgb(H, C, L);\n }\n`,C={fgPrimaryColor:o.BLACK,fgSecondaryColor:o.LIGHT_GRAY,bgPrimaryColor:o.WHITE,bgSecondaryColor:o.OFF_WHITE,altFgPrimaryColor:o.WHITE,altFgSecondaryColor:o.LIGHT_GRAY,altBgPrimaryColor:o.BLACK,altBgSecondaryColor:o.DARK_GRAY,selectionPrimaryColor:o.DARK_BLUE,selectionSecondaryColor:o.PALE_DARK_BLUE,weightColor:o.GREEN,searchMatchTextColor:o.BLACK,searchMatchPrimaryColor:o.ORANGE,searchMatchSecondaryColor:o.YELLOW,colorForBucket:c,colorForBucketGLSL:i};exports.lightTheme=C; +},{"../../lib/color":"x77Y","../../lib/utils":"ucYa"}],"gzKG":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useTheme=i,exports.withTheme=u,exports.colorSchemeToString=a,exports.ThemeProvider=S,exports.ThemeContext=void 0;var e=require("preact"),r=require("preact/hooks"),t=require("../../app-state/color-scheme"),o=require("../../lib/atom"),c=require("../../lib/utils"),n=require("./dark-theme"),h=require("./light-theme");const s=(0,e.createContext)(h.lightTheme);function i(){return(0,r.useContext)(s)}function u(e){return(0,c.memoizeByReference)(e)}function m(){return matchMedia("(prefers-color-scheme: dark)")}function a(e){switch(e){case t.ColorScheme.SYSTEM:return"System";case t.ColorScheme.DARK:return"Dark";case t.ColorScheme.LIGHT:return"Light"}}function l(e,r){switch(e){case t.ColorScheme.SYSTEM:return r?n.darkTheme:h.lightTheme;case t.ColorScheme.DARK:return n.darkTheme;case t.ColorScheme.LIGHT:return h.lightTheme}}function S(c){const[n,h]=(0,r.useState)(()=>m().matches),i=(0,r.useCallback)(e=>{h(e.matches)},[h]);(0,r.useEffect)(()=>{const e=m();return e.addEventListener("change",i),()=>{e.removeEventListener("change",i)}},[i]);const u=l((0,o.useAtom)(t.colorSchemeAtom),n);return(0,e.h)(s.Provider,{value:u,children:c.children})}exports.ThemeContext=s; +},{"preact":"aSor","preact/hooks":"MwGB","../../app-state/color-scheme":"KQrJ","../../lib/atom":"QkVE","../../lib/utils":"ucYa","./dark-theme":"osod","./light-theme":"CjU5"}],"QXNG":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=t;var e=/-webkit-|-moz-|-ms-/;function t(t){return"string"==typeof t&&e.test(t)}module.exports=exports.default; +},{}],"tSfb":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var u=["-webkit-","-moz-",""];function i(e,r){if("string"==typeof r&&!(0,t.default)(r)&&r.indexOf("calc(")>-1)return u.map(function(e){return r.replace(/calc\(/g,e+"calc(")})}module.exports=exports.default; +},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"ie1g":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("css-in-js-utils/lib/isPrefixedValue"),r=t(e);function t(e){return e&&e.__esModule?e:{default:e}}var s=["-webkit-",""];function u(e,t){if("string"==typeof t&&!(0,r.default)(t)&&t.indexOf("cross-fade(")>-1)return s.map(function(e){return t.replace(/cross-fade\(/g,e+"cross-fade(")})}module.exports=exports.default; +},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"CYBj":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=o;var e=["-webkit-","-moz-",""],r={"zoom-in":!0,"zoom-out":!0,grab:!0,grabbing:!0};function o(o,t){if("cursor"===o&&r.hasOwnProperty(t))return e.map(function(e){return e+t})}module.exports=exports.default; +},{}],"MH9I":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var i=["-webkit-",""];function u(e,r){if("string"==typeof r&&!(0,t.default)(r)&&r.indexOf("filter(")>-1)return i.map(function(e){return r.replace(/filter\(/g,e+"filter(")})}module.exports=exports.default; +},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"jmPR":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e={flex:["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex","flex"],"inline-flex":["-webkit-inline-box","-moz-inline-box","-ms-inline-flexbox","-webkit-inline-flex","inline-flex"]};function i(i,l){if("display"===i&&e.hasOwnProperty(l))return e[l]}module.exports=exports.default; +},{}],"FRuF":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=s;var e={"space-around":"distribute","space-between":"justify","flex-start":"start","flex-end":"end"},t={alignContent:"msFlexLinePack",alignSelf:"msFlexItemAlign",alignItems:"msFlexAlign",justifyContent:"msFlexPack",order:"msFlexOrder",flexGrow:"msFlexPositive",flexShrink:"msFlexNegative",flexBasis:"msFlexPreferredSize"};function s(s,l,r){t.hasOwnProperty(s)&&(r[t[s]]=e[l]||l)}module.exports=exports.default; +},{}],"bHSr":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e={"space-around":"justify","space-between":"justify","flex-start":"start","flex-end":"end","wrap-reverse":"multiple",wrap:"multiple"},t={alignItems:"WebkitBoxAlign",justifyContent:"WebkitBoxPack",flexWrap:"WebkitBoxLines"};function i(i,r,o){"flexDirection"===i&&"string"==typeof r&&(r.indexOf("column")>-1?o.WebkitBoxOrient="vertical":o.WebkitBoxOrient="horizontal",r.indexOf("reverse")>-1?o.WebkitBoxDirection="reverse":o.WebkitBoxDirection="normal"),t.hasOwnProperty(i)&&(o[t[i]]=e[r]||r)}module.exports=exports.default; +},{}],"QxYG":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=n;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var i=["-webkit-","-moz-",""],a=/linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;function n(e,r){if("string"==typeof r&&!(0,t.default)(r)&&a.test(r))return i.map(function(e){return e+r})}module.exports=exports.default; +},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"qrrU":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var i=["-webkit-",""];function u(e,r){if("string"==typeof r&&!(0,t.default)(r)&&r.indexOf("image-set(")>-1)return i.map(function(e){return r.replace(/image-set\(/g,e+"image-set(")})}module.exports=exports.default; +},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"pEQ2":[function(require,module,exports) { +"use strict";function e(e,t){if("position"===e&&"sticky"===t)return["-webkit-sticky","sticky"]}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e,module.exports=exports.default; +},{}],"M0DH":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var t=["-webkit-","-moz-",""],e={maxHeight:!0,maxWidth:!0,width:!0,height:!0,columnWidth:!0,minWidth:!0,minHeight:!0},n={"min-content":!0,"max-content":!0,"fill-available":!0,"fit-content":!0,"contain-floats":!0};function i(i,o){if(e.hasOwnProperty(i)&&n.hasOwnProperty(o))return t.map(function(t){return t+o})}module.exports=exports.default; +},{}],"jNGL":[function(require,module,exports) { +"use strict";var e=/[A-Z]/g,r=/^ms-/,s={};function t(t){return t in s?s[t]:s[t]=t.replace(e,"-$&").toLowerCase().replace(r,"-ms-")}module.exports=t; +},{}],"S6J3":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("hyphenate-style-name"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}function u(e){return(0,t.default)(e)}module.exports=exports.default; +},{"hyphenate-style-name":"jNGL"}],"XxlV":[function(require,module,exports) { +"use strict";function e(e){return e.charAt(0).toUpperCase()+e.slice(1)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e,module.exports=exports.default; +},{}],"cnM4":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=l;var t=require("css-in-js-utils/lib/hyphenateProperty"),e=s(t),r=require("css-in-js-utils/lib/isPrefixedValue"),i=s(r),n=require("../../utils/capitalizeString"),o=s(n);function s(t){return t&&t.__esModule?t:{default:t}}var u={transition:!0,transitionProperty:!0,WebkitTransition:!0,WebkitTransitionProperty:!0,MozTransition:!0,MozTransitionProperty:!0},a={Webkit:"-webkit-",Moz:"-moz-",ms:"-ms-"};function f(t,r){if((0,i.default)(t))return t;for(var n=t.split(/,(?![^()]*(?:\([^()]*\))?\))/g),o=0,s=n.length;o-1&&"order"!==p)for(var d=r[l],c=0,b=d.length;c-1)return s;var a=n.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function(t){return!/-webkit-|-ms-/.test(t)}).join(",");return t.indexOf("Moz")>-1?a:(r["Webkit"+(0,o.default)(t)]=s,r["Moz"+(0,o.default)(t)]=a,n)}}module.exports=exports.default; +},{"css-in-js-utils/lib/hyphenateProperty":"S6J3","css-in-js-utils/lib/isPrefixedValue":"QXNG","../../utils/capitalizeString":"XxlV"}],"ZBgn":[function(require,module,exports) { +"use strict";function r(r){for(var t=5381,e=r.length;e;)t=33*t^r.charCodeAt(--e);return t>>>0}module.exports=r; +},{}],"D2Wi":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("./capitalizeString"),r=t(e);function t(e){return e&&e.__esModule?e:{default:e}}function u(e,t,u){if(e.hasOwnProperty(t)){for(var o={},a=e[t],n=(0,r.default)(t),f=Object.keys(u),l=0;l0&&(i[s]=d)}else{var x=(0,u.default)(l,s,n,i,t);x&&(i[s]=x),i=(0,r.default)(t,s,i)}}return i}}module.exports=exports.default; +},{"../utils/prefixProperty":"D2Wi","../utils/prefixValue":"qgi9","../utils/addNewValuesOnly":"a80f","../utils/isObject":"ek9P"}],"AARE":[function(require,module,exports) { +var global = arguments[3]; +var e=arguments[3];function t(e){r.length||(n(),a=!0),r[r.length]=e}module.exports=t;var n,r=[],a=!1,o=0,u=1024;function l(){for(;ou){for(var t=0,n=r.length-o;t4&&void 0!==arguments[4]?arguments[4]:[];if(!Q[e]){var o=N(t,r,i,V,n);te(e,o)}},ne=function(){$=[],Q={},ee=!1,Z=null},ie=function(){return $},oe=function(){if(ee)throw new Error("Cannot buffer while already buffering");ee=!0},ae=function(){ee=!1;var e=$;return $=[],e},se=function(){return ae().join("")},ue=function(){var e=ae();e.length>0&&K(e)};exports.flushToStyleTag=ue;var le=function(){return Object.keys(Q)},fe=function(e){e.forEach(function(e){Q[e]=!0})},ce=function e(t,r,n,i){for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:[];fe(e)}}()},ge="undefined"!=typeof window?null:{renderStatic:function(){return function(e){return ne(),oe(),{html:e(),css:{content:se(),renderedClassNames:le()}}}}()},Se=null;function ve(e,t){return{StyleSheet:Object.assign({},he,{extend:function(){return function(r){var n=r.map(function(e){return e.selectorHandler}).filter(function(e){return e});return ve(e,t.concat(n))}}()}),StyleSheetServer:ge,StyleSheetTestUtils:Se,minify:function(){return function(e){me=e?W:pe}}(),css:function(){return function(){for(var r=arguments.length,n=Array(r),i=0;i{const t=s(e.name,this.searchQuery);this.matches.set(e,0===t.length?null:t)})),this.matches.get(e)||null}}exports.ProfileSearchResults=r;class h{constructor(e,t){this.flamechart=e,this.profileResults=t,this.matches=null}getResults(){if(null==this.matches){const e=[],s=new Map,r=(h,a)=>{const{node:c}=h;if(this.profileResults.getMatchForFrame(c.frame)){const r=new t.Rect(new t.Vec2(h.start,a),new t.Vec2(h.end-h.start,1));s.set(c,e.length),e.push({configSpaceBounds:r,node:c})}h.children.forEach(e=>{r(e,a+1)})},h=this.flamechart.getLayers();h.length>0&&h[0].forEach(e=>r(e,0)),this.matches={matches:e,indexForNode:s}}return this.matches}count(){return this.getResults().matches.length}indexOf(e){const t=this.getResults().indexForNode.get(e);return void 0===t?null:t}at(e){const t=this.getResults().matches;if(e<0||e>=t.length)throw new Error(`Index ${e} out of bounds in list of ${t.length} matches.`);return t[e]}}exports.FlamechartSearchResults=h; +},{"./math":"tDuZ"}],"t9CM":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SearchView=exports.ProfileSearchContextProvider=exports.ProfileSearchContext=void 0;var e=require("aphrodite"),t=require("preact"),r=require("preact/hooks"),o=require("preact/compat"),n=require("./style"),s=require("../lib/profile-search"),i=require("../app-state/active-profile-state"),l=require("./themes/theme"),a=require("../app-state"),c=require("../lib/atom");function u(e){e.stopPropagation()}const h=(0,t.createContext)(null);exports.ProfileSearchContext=h;const p=({children:e})=>{const o=(0,i.useActiveProfileState)(),n=o?o.profile:null,l=(0,c.useAtom)(a.searchIsActiveAtom),u=(0,c.useAtom)(a.searchQueryAtom),p=(0,r.useMemo)(()=>n&&l&&0!==u.length?new s.ProfileSearchResults(n,u):null,[l,u,n]);return(0,t.h)(h.Provider,{value:p},e)};exports.ProfileSearchContextProvider=p;const d=(0,o.memo)(({numResults:o,resultIndex:n,selectNext:s,selectPrev:i})=>{const h=(0,l.useTheme)(),p=m(h),d=(0,c.useAtom)(a.searchIsActiveAtom),f=(0,c.useAtom)(a.searchQueryAtom),y=a.searchQueryAtom.set,g=a.searchIsActiveAtom.set,x=(0,r.useCallback)(e=>{const t=e.target.value;y(t)},[y]),b=(0,r.useRef)(null),v=(0,r.useCallback)(()=>g(!1),[g]),C=(0,r.useCallback)(e=>{e.shiftKey?i():s()},[i,s]),S=(0,r.useCallback)(e=>{e.stopPropagation(),"Escape"===e.key&&g(!1),"Enter"===e.key&&C(e),"f"==e.key&&(e.metaKey||e.ctrlKey)&&(b.current&&b.current.select(),e.preventDefault())},[g,C]);return(0,r.useEffect)(()=>{const e=e=>{"f"==e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b.current?b.current.select():(g(!0),requestAnimationFrame(()=>{b.current&&b.current.select()})))};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[g]),d?(0,t.h)("div",{className:(0,e.css)(p.searchView)},(0,t.h)("span",{className:(0,e.css)(p.icon)},"🔍"),(0,t.h)("span",{className:(0,e.css)(p.inputContainer)},(0,t.h)("input",{className:(0,e.css)(p.input),value:f,onInput:x,onKeyDown:S,onKeyUp:u,onKeyPress:u,ref:b})),null!=o&&(0,t.h)(t.Fragment,null,(0,t.h)("span",{className:(0,e.css)(p.resultCount)},null==n?"?":n+1,"/",o),(0,t.h)("button",{className:(0,e.css)(p.icon,p.button),onClick:i},"⬅️"),(0,t.h)("button",{className:(0,e.css)(p.icon,p.button),onClick:s},"➡️")),(0,t.h)("svg",{className:(0,e.css)(p.icon),onClick:v,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,t.h)("path",{d:"M4.99999 4.16217L11.6427 10.8048M11.6427 4.16217L4.99999 10.8048",stroke:h.altFgSecondaryColor}))):null});exports.SearchView=d;const m=(0,l.withTheme)(t=>e.StyleSheet.create({searchView:{position:"absolute",top:0,right:10,height:n.Sizes.TOOLBAR_HEIGHT,width:208,borderWidth:2,borderColor:t.altFgPrimaryColor,borderStyle:"solid",fontSize:n.FontSize.LABEL,boxSizing:"border-box",background:t.altBgSecondaryColor,color:t.altFgPrimaryColor,display:"flex",alignItems:"center"},inputContainer:{flexShrink:1,flexGrow:1,display:"flex"},input:{width:"100%",border:"none",background:"none",fontSize:n.FontSize.LABEL,lineHeight:`${n.Sizes.TOOLBAR_HEIGHT}px`,color:t.altFgPrimaryColor,":focus":{border:"none",outline:"none"},"::selection":{color:t.altFgPrimaryColor,background:t.selectionPrimaryColor}},resultCount:{verticalAlign:"middle"},icon:{flexShrink:0,verticalAlign:"middle",height:"100%",margin:"0px 2px 0px 2px",fontSize:n.FontSize.LABEL},button:{display:"inline",background:"none",border:"none",padding:0,":focus":{outline:"none"}}})); +},{"aphrodite":"CxN7","preact":"aSor","preact/hooks":"MwGB","preact/compat":"AQ6k","./style":"hvr4","../lib/profile-search":"DHvC","../app-state/active-profile-state":"MY42","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE"}],"FbpF":[function(require,module,exports) { +"use strict";function e(e){return e.replace(/\\([a-fA-F0-9]{2})/g,(e,n)=>{const t=parseInt(n,16);return String.fromCharCode(t)})}function n(n){const t=n.split("\n");if(!t.length)return null;if(""===t[t.length-1]&&t.pop(),!t.length)return null;const r=new Map,o=/^(\d+):(.+)$/,s=/^([\$\w]+):([\$\w-]+)$/;for(const u of t){const n=o.exec(u);if(n){r.set(`wasm-function[${n[1]}]`,e(n[2]));continue}const t=s.exec(u);if(!t)return null;r.set(t[1],e(t[2]))}return e=>r.has(e.name)?{name:r.get(e.name)}:null}Object.defineProperty(exports,"__esModule",{value:!0}),exports.importEmscriptenSymbolMap=n; +},{}],"Pua8":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ColorChit=o;var e=require("preact"),t=require("aphrodite"),r=require("./style"),i=require("./themes/theme");function o(r){const o=s((0,i.useTheme)());return(0,e.h)("span",{className:(0,t.css)(o.stackChit),style:{backgroundColor:r.color}})}const s=(0,i.withTheme)(e=>t.StyleSheet.create({stackChit:{position:"relative",top:-1,display:"inline-block",verticalAlign:"middle",marginRight:"0.5em",border:`1px solid ${e.fgSecondaryColor}`,width:r.FontSize.LABEL-2,height:r.FontSize.LABEL-2}})); +},{"preact":"aSor","aphrodite":"CxN7","./style":"hvr4","./themes/theme":"gzKG"}],"SGwe":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrollableListView=void 0;var e=require("preact"),t=require("preact/hooks");const r=({items:r,axis:l,renderItems:n,className:i,initialIndexInView:s})=>{const[u,o]=(0,t.useState)(null),[c,a]=(0,t.useState)(0),d=(0,t.useRef)(null),f="x"===l?"width":"height",x="x"===l?"left":"top",b="x"===l?"scrollLeft":"scrollTop",h=s?r.reduce((e,t,r)=>r{e?requestAnimationFrame(()=>{o(e.getBoundingClientRect()[f]),null!=m.current&&(e.scrollTo({[x]:m.current}),m.current=null)}):o(null),d.current=e},[o,f,x]),g=(0,t.useMemo)(()=>{if(null==d.current||null==u||null==c)return null;const e=c-u/4,t=c+u+u/4;let l=0,n=0,i=0;for(;i=e)break}const s=i;for(;i=t)break}return{firstVisibleIndex:s,lastVisibleIndex:Math.min(i,r.length-1),invisiblePrefixSize:n}},[u,c,r]),p=(0,t.useMemo)(()=>r.reduce((e,t)=>e+t.size,0),[r]),w=(0,t.useCallback)(()=>{null!=d.current&&a(d.current[b])},[b]);(0,t.useEffect)(()=>{const e=()=>{null!=d.current&&o(d.current.getBoundingClientRect()[f])};return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},[f]);const z=(0,t.useMemo)(()=>g?n(g.firstVisibleIndex,g.lastVisibleIndex):null,[n,g]),I=(0,t.useMemo)(()=>(0,e.h)("div",{style:{height:p}},(0,e.h)("div",{style:{transform:`translateY(${(null==g?void 0:g.invisiblePrefixSize)||0}px)`}},z)),[g,z,p]);return(0,e.h)("div",{className:i,ref:v,onScroll:w},I)};exports.ScrollableListView=r; +},{"preact":"aSor","preact/hooks":"MwGB"}],"Ivh5":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ProfileTableViewContainer=exports.ProfileTableView=void 0;var e=require("preact"),t=require("aphrodite"),r=require("../lib/utils"),o=require("./style"),l=require("./color-chit"),i=require("./scrollable-list-view"),a=require("../app-state/getters"),s=require("preact/compat"),c=require("preact/hooks"),n=require("./sandwich-view"),h=require("../lib/color"),d=require("./themes/theme"),m=require("../app-state"),u=require("../lib/atom");function S(r){const o=p((0,d.useTheme)());return(0,e.h)("div",{className:(0,t.css)(o.hBarDisplay)},(0,e.h)("div",{className:(0,t.css)(o.hBarDisplayFilled),style:{width:`${r.perc}%`}}))}function b(r){const o=(0,d.useTheme)(),l=p(o),{activeDirection:i}=r,a=i===m.SortDirection.ASCENDING?o.fgPrimaryColor:o.fgSecondaryColor,s=i===m.SortDirection.DESCENDING?o.fgPrimaryColor:o.fgSecondaryColor;return(0,e.h)("svg",{width:"8",height:"10",viewBox:"0 0 8 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:(0,t.css)(l.sortIcon)},(0,e.h)("path",{d:"M0 4L4 0L8 4H0Z",fill:a}),(0,e.h)("path",{d:"M0 4L4 0L8 4H0Z",transform:"translate(0 10) scale(1 -1)",fill:s}))}function g(t,r,o){const l=[];let i=0;for(let a of r)l.push(t.slice(i,a[0])),l.push((0,e.h)("span",{className:o},t.slice(a[0],a[1]))),i=a[1];return l.push(t.slice(i)),(0,e.h)("span",null,l)}const C=({frame:o,matchedRanges:i,profile:a,index:s,selectedFrame:c,setSelectedFrame:n,getCSSColorForFrame:h})=>{const m=p((0,d.useTheme)()),u=o.getTotalWeight(),b=o.getSelfWeight(),C=100*u/a.getTotalNonIdleWeight(),f=100*b/a.getTotalNonIdleWeight(),w=o===c;return(0,e.h)("tr",{key:`${s}`,onClick:n.bind(null,o),className:(0,t.css)(m.tableRow,s%2==0&&m.tableRowEven,w&&m.tableRowSelected)},(0,e.h)("td",{className:(0,t.css)(m.numericCell)},a.formatValue(u)," (",(0,r.formatPercent)(C),")",(0,e.h)(S,{perc:C})),(0,e.h)("td",{className:(0,t.css)(m.numericCell)},a.formatValue(b)," (",(0,r.formatPercent)(f),")",(0,e.h)(S,{perc:f})),(0,e.h)("td",{title:o.file,className:(0,t.css)(m.textCell)},(0,e.h)(l.ColorChit,{color:h(o)}),i?g(o.name,i,(0,t.css)(m.matched,w&&m.matchedSelected)):o.name))},f=(0,s.memo)(({profile:r,sortMethod:l,setSortMethod:a,selectedFrame:s,setSelectedFrame:h,getCSSColorForFrame:u,searchQuery:S,searchIsActive:g})=>{const f=p((0,d.useTheme)()),w=(0,c.useCallback)((e,t)=>{if(t.preventDefault(),l.field==e)a({field:e,direction:l.direction===m.SortDirection.ASCENDING?m.SortDirection.DESCENDING:m.SortDirection.ASCENDING});else switch(e){case m.SortField.SYMBOL_NAME:a({field:e,direction:m.SortDirection.ASCENDING});break;case m.SortField.SELF:case m.SortField.TOTAL:a({field:e,direction:m.SortDirection.DESCENDING})}},[l,a]),F=(0,c.useContext)(n.SandwichViewContext),y=(0,c.useCallback)((o,l)=>{if(!F)return null;const i=[];for(let e=o;e<=l;e++){const t=F.rowList[e],o=F.getSearchMatchForFrame(t);i.push(C({frame:t,matchedRanges:null==o?null:o,index:e,profile:r,selectedFrame:s,setSelectedFrame:h,getCSSColorForFrame:u}))}return 0===i.length&&(g?i.push((0,e.h)("tr",null,(0,e.h)("td",{className:(0,t.css)(f.emptyState)},'No symbol names match query "',S,'".'))):i.push((0,e.h)("tr",null,(0,e.h)("td",{className:(0,t.css)(f.emptyState)},"No symbols found.")))),(0,e.h)("table",{className:(0,t.css)(f.tableView)},i)},[F,r,s,h,u,g,S,f.emptyState,f.tableView]),N=(0,c.useMemo)(()=>null==F?[]:F.rowList.map(e=>({size:o.Sizes.FRAME_HEIGHT})),[F]),E=(0,c.useCallback)(e=>w(m.SortField.TOTAL,e),[w]),A=(0,c.useCallback)(e=>w(m.SortField.SELF,e),[w]),v=(0,c.useCallback)(e=>w(m.SortField.SYMBOL_NAME,e),[w]);return(0,e.h)("div",{className:(0,t.css)(o.commonStyle.vbox,f.profileTableView)},(0,e.h)("table",{className:(0,t.css)(f.tableView)},(0,e.h)("thead",{className:(0,t.css)(f.tableHeader)},(0,e.h)("tr",null,(0,e.h)("th",{className:(0,t.css)(f.numericCell),onClick:E},(0,e.h)(b,{activeDirection:l.field===m.SortField.TOTAL?l.direction:null}),"Total"),(0,e.h)("th",{className:(0,t.css)(f.numericCell),onClick:A},(0,e.h)(b,{activeDirection:l.field===m.SortField.SELF?l.direction:null}),"Self"),(0,e.h)("th",{className:(0,t.css)(f.textCell),onClick:v},(0,e.h)(b,{activeDirection:l.field===m.SortField.SYMBOL_NAME?l.direction:null}),"Symbol Name")))),(0,e.h)(i.ScrollableListView,{axis:"y",items:N,className:(0,t.css)(f.scrollView),renderItems:y,initialIndexInView:null==s?null:null==F?void 0:F.getIndexForFrame(s)}))});exports.ProfileTableView=f;const p=(0,d.withTheme)(e=>t.StyleSheet.create({profileTableView:{background:e.bgPrimaryColor,height:"100%"},scrollView:{overflowY:"auto",overflowX:"hidden",flexGrow:1,"::-webkit-scrollbar":{background:e.bgPrimaryColor},"::-webkit-scrollbar-thumb":{background:e.fgSecondaryColor,borderRadius:20,border:`3px solid ${e.bgPrimaryColor}`,":hover":{background:e.fgPrimaryColor}}},tableView:{width:"100%",fontSize:o.FontSize.LABEL,background:e.bgPrimaryColor},tableHeader:{borderBottom:`2px solid ${e.bgSecondaryColor}`,textAlign:"left",color:e.fgPrimaryColor,userSelect:"none"},sortIcon:{position:"relative",top:1,marginRight:o.Sizes.FRAME_HEIGHT/4},tableRow:{background:e.bgPrimaryColor,height:o.Sizes.FRAME_HEIGHT},tableRowEven:{background:e.bgSecondaryColor},tableRowSelected:{background:e.selectionPrimaryColor,color:e.altFgPrimaryColor},numericCell:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",position:"relative",textAlign:"right",paddingRight:o.Sizes.FRAME_HEIGHT,width:6*o.Sizes.FRAME_HEIGHT,minWidth:6*o.Sizes.FRAME_HEIGHT},textCell:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",width:"100%",maxWidth:0},hBarDisplay:{position:"absolute",background:h.Color.fromCSSHex(e.weightColor).withAlpha(.2).toCSS(),bottom:2,height:2,width:`calc(100% - ${2*o.Sizes.FRAME_HEIGHT}px)`,right:o.Sizes.FRAME_HEIGHT},hBarDisplayFilled:{height:"100%",position:"absolute",background:e.weightColor,right:0},matched:{borderBottom:`2px solid ${e.fgPrimaryColor}`},matchedSelected:{borderColor:e.altFgPrimaryColor},emptyState:{textAlign:"center",fontWeight:"bold"}})),w=(0,s.memo)(t=>{const{activeProfileState:r}=t,{profile:o,sandwichViewState:l}=r;if(!o)throw new Error("profile missing");const i=(0,u.useAtom)(m.tableSortMethodAtom),s=(0,d.useTheme)(),{callerCallee:n}=l,h=n?n.selectedFrame:null,S=(0,a.getFrameToColorBucket)(o),b=(0,a.createGetCSSColorForFrame)({theme:s,frameToColorBucket:S}),g=(0,c.useCallback)(e=>{m.profileGroupAtom.setSelectedFrame(e)},[]),C=(0,u.useAtom)(m.searchIsActiveAtom),p=(0,u.useAtom)(m.searchQueryAtom);return(0,e.h)(f,{profile:o,selectedFrame:h,getCSSColorForFrame:b,sortMethod:i,setSelectedFrame:g,setSortMethod:m.tableSortMethodAtom.set,searchIsActive:C,searchQuery:p})});exports.ProfileTableViewContainer=w; +},{"preact":"aSor","aphrodite":"CxN7","../lib/utils":"ucYa","./style":"hvr4","./color-chit":"Pua8","./scrollable-list-view":"SGwe","../app-state/getters":"zEXv","preact/compat":"AQ6k","preact/hooks":"MwGB","./sandwich-view":"L8J2","../lib/color":"x77Y","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE"}],"gFMr":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Flamechart=void 0;var t=require("./utils"),e=require("./math");class i{constructor(e){this.source=e,this.layers=[],this.totalWeight=0,this.minFrameWidth=1;const i=[];this.minFrameWidth=1/0;this.totalWeight=e.getTotalWeight(),e.forEachCall((e,r)=>{const s=(0,t.lastOf)(i),h={node:e,parent:s,children:[],start:r,end:r};s&&s.children.push(h),i.push(h)},(t,e)=>{console.assert(i.length>0);const r=i.pop();if(r.end=e,r.end-r.start==0)return;const s=i.length;for(;this.layers.length<=s;)this.layers.push([]);this.layers[s].push(r),this.minFrameWidth=Math.min(this.minFrameWidth,r.end-r.start)}),isFinite(this.minFrameWidth)||(this.minFrameWidth=1)}getTotalWeight(){return this.totalWeight}getLayers(){return this.layers}getColorBucketForFrame(t){return this.source.getColorBucketForFrame(t)}getMinFrameWidth(){return this.minFrameWidth}formatValue(t){return this.source.formatValue(t)}getClampedViewportWidth(t){const i=this.getTotalWeight(),r=Math.pow(2,40),s=(0,e.clamp)(3*this.getMinFrameWidth(),i/r,i);return(0,e.clamp)(t,s,i)}getClampedConfigSpaceViewportRect({configSpaceViewportRect:t,renderInverted:i}){const r=new e.Vec2(this.getTotalWeight(),this.getLayers().length),s=this.getClampedViewportWidth(t.size.x),h=t.size.withX(s),a=e.Vec2.clamp(t.origin,new e.Vec2(0,i?0:-1),e.Vec2.max(e.Vec2.zero,r.minus(h).plus(new e.Vec2(0,1))));return new e.Rect(a,t.size.withX(s))}}exports.Flamechart=i; +},{"./utils":"ucYa","./math":"tDuZ"}],"P80v":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartRenderer=exports.FlamechartRowAtlasKey=void 0;var e=require("./rectangle-batch-renderer"),t=require("../lib/math"),r=require("../lib/color"),n=require("../lib/utils"),s=require("./graphics"),o=require("./utils");const c=1e4;class i{constructor(e,t,r){this.batch=e,this.bounds=t,this.numPrecedingRectanglesInRow=r,this.children=[]}getBatch(){return this.batch}getBounds(){return this.bounds}getRectCount(){return this.batch.getRectCount()}getChildren(){return this.children}getParity(){return this.numPrecedingRectanglesInRow%2}forEachLeafNodeWithinBounds(e,t){this.bounds.hasIntersectionWith(e)&&t(this)}}class h{constructor(e){if(this.children=e,this.rectCount=0,0===e.length)throw new Error("Empty interior node");let r=1/0,n=-1/0,s=1/0,o=-1/0;for(let t of e){this.rectCount+=t.getRectCount();const e=t.getBounds();r=Math.min(r,e.left()),n=Math.max(n,e.right()),s=Math.min(s,e.top()),o=Math.max(o,e.bottom())}this.bounds=new t.Rect(new t.Vec2(r,s),new t.Vec2(n-r,o-s))}getBounds(){return this.bounds}getRectCount(){return this.rectCount}getChildren(){return this.children}forEachLeafNodeWithinBounds(e,t){if(this.bounds.hasIntersectionWith(e))for(let r of this.children)r.forEachLeafNodeWithinBounds(e,t)}}class a{constructor(e){this.stackDepth=e.stackDepth,this.zoomLevel=e.zoomLevel,this.index=e.index}get key(){return`${this.stackDepth}_${this.index}_${this.zoomLevel}`}static getOrInsert(e,t){return e.getOrInsert(new a(t))}}exports.FlamechartRowAtlasKey=a;class l{constructor(s,o,a,l,g,d={inverted:!1}){this.gl=s,this.rowAtlas=o,this.flamechart=a,this.rectangleBatchRenderer=l,this.colorPassRenderer=g,this.options=d,this.layers=[],this.rectInfoTexture=null,this.rectInfoRenderTarget=null,this.atlasKeys=new n.KeyedSet;const f=a.getLayers().length;for(let n=0;n=c&&(s.push(new i(u,new t.Rect(new t.Vec2(l,o),new t.Vec2(g-l,1)),R)),l=1/0,g=-1/0,u=new e.RectangleBatch(this.gl));const d=new t.Rect(new t.Vec2(a.start,o),new t.Vec2(a.end-a.start,1));l=Math.min(l,d.left()),g=Math.max(g,d.right());const f=new r.Color((1+h%255)/256,(1+n%255)/256,(1+this.flamechart.getColorBucketForFrame(a.node.frame))/256);u.addRect(d,f),R++}u.getRectCount()>0&&s.push(new i(u,new t.Rect(new t.Vec2(l,o),new t.Vec2(g-l,1)),R)),this.layers.push(new h(s))}}getRectInfoTexture(e,t){if(this.rectInfoTexture){const r=this.rectInfoTexture;r.width==e&&r.height==t||r.resize(e,t)}else this.rectInfoTexture=this.gl.createTexture(s.Graphics.TextureFormat.NEAREST_CLAMP,e,t);return this.rectInfoTexture}getRectInfoRenderTarget(e,t){const r=this.getRectInfoTexture(e,t);return this.rectInfoRenderTarget&&this.rectInfoRenderTarget.texture!=r&&(this.rectInfoRenderTarget.texture.free(),this.rectInfoRenderTarget.setColor(r)),this.rectInfoRenderTarget||(this.rectInfoRenderTarget=this.gl.createRenderTarget(r)),this.rectInfoRenderTarget}free(){this.rectInfoRenderTarget&&this.rectInfoRenderTarget.free(),this.rectInfoTexture&&this.rectInfoTexture.free()}configSpaceBoundsForKey(e){const{stackDepth:r,zoomLevel:n,index:s}=e,o=this.flamechart.getTotalWeight()/Math.pow(2,n),c=this.flamechart.getLayers().length,i=this.options.inverted?c-1-r:r;return new t.Rect(new t.Vec2(o*s,i),new t.Vec2(o,1))}render(e){const{configSpaceSrcRect:r,physicalSpaceDstRect:n}=e,c=[],i=t.AffineTransform.betweenRects(r,n);if(r.isEmpty())return;let h=0;for(;;){const e=a.getOrInsert(this.atlasKeys,{stackDepth:0,zoomLevel:h,index:0}),t=this.configSpaceBoundsForKey(e);if(i.transformRect(t).width(){const r=this.configSpaceBoundsForKey(t);this.layers[t.stackDepth].forEachLeafNodeWithinBounds(r,t=>{this.rectangleBatchRenderer.render({batch:t.getBatch(),configSpaceSrcRect:r,physicalSpaceDstRect:e})})});const T=this.getRectInfoRenderTarget(n.width(),n.height());(0,o.renderInto)(this.gl,T,()=>{this.gl.clear(new s.Graphics.Color(0,0,0,0));const e=new t.Rect(t.Vec2.zero,new t.Vec2(this.gl.viewport.width,this.gl.viewport.height)),n=t.AffineTransform.betweenRects(r,e);for(let t of m){const e=this.configSpaceBoundsForKey(t);this.rowAtlas.renderViaAtlas(t,n.transformRect(e))}for(let t of I){const e=this.configSpaceBoundsForKey(t),r=n.transformRect(e);this.layers[t.stackDepth].forEachLeafNodeWithinBounds(e,t=>{this.rectangleBatchRenderer.render({batch:t.getBatch(),configSpaceSrcRect:e,physicalSpaceDstRect:r})})}});const x=this.getRectInfoTexture(n.width(),n.height());this.colorPassRenderer.render({rectInfoTexture:x,srcRect:new t.Rect(t.Vec2.zero,new t.Vec2(x.width,x.height)),dstRect:n,renderOutlines:e.renderOutlines})}}exports.FlamechartRenderer=l; +},{"./rectangle-batch-renderer":"UGJH","../lib/math":"tDuZ","../lib/color":"x77Y","../lib/utils":"ucYa","./graphics":"XGYN","./utils":"MMP6"}],"jZ6t":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFlamechartStyle=void 0;var e=require("aphrodite"),o=require("./style"),r=require("./themes/theme");const t=(0,r.withTheme)(r=>e.StyleSheet.create({hoverCount:{color:r.weightColor},fill:{width:"100%",height:"100%",position:"absolute",left:0,top:0},minimap:{height:o.Sizes.MINIMAP_HEIGHT,borderBottom:`${o.Sizes.SEPARATOR_HEIGHT}px solid ${r.fgSecondaryColor}`},panZoomView:{flex:1},detailView:{display:"grid",height:o.Sizes.DETAIL_VIEW_HEIGHT,overflow:"hidden",gridTemplateColumns:"120px 120px 1fr",gridTemplateRows:"repeat(4, 1fr)",borderTop:`${o.Sizes.SEPARATOR_HEIGHT}px solid ${r.fgSecondaryColor}`,fontSize:o.FontSize.LABEL,position:"absolute",background:r.bgPrimaryColor,width:"100vw",bottom:0},stackTraceViewPadding:{padding:5},stackTraceView:{height:o.Sizes.DETAIL_VIEW_HEIGHT,lineHeight:`${o.FontSize.LABEL+2}px`,overflow:"auto","::-webkit-scrollbar":{background:r.bgPrimaryColor},"::-webkit-scrollbar-thumb":{background:r.fgSecondaryColor,borderRadius:20,border:`3px solid ${r.bgPrimaryColor}`,":hover":{background:r.fgPrimaryColor}}},stackLine:{whiteSpace:"nowrap"},stackFileLine:{color:r.fgSecondaryColor},statsTable:{display:"grid",gridTemplateColumns:"1fr 1fr",gridTemplateRows:`repeat(3, ${o.FontSize.LABEL+10}px)`,gridGap:"1px 1px",textAlign:"center",paddingRight:1},statsTableHeader:{gridColumn:"1 / 3"},statsTableCell:{position:"relative",display:"flex",justifyContent:"center",alignItems:"center"},thisInstanceCell:{background:r.selectionPrimaryColor,color:r.altFgPrimaryColor},allInstancesCell:{background:r.selectionSecondaryColor,color:r.altFgPrimaryColor},barDisplay:{position:"absolute",top:0,left:0,background:"rgba(0, 0, 0, 0.2)",width:"100%"}}));exports.getFlamechartStyle=t; +},{"aphrodite":"CxN7","./style":"hvr4","./themes/theme":"gzKG"}],"eeWS":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cachedMeasureTextWidth=i,exports.buildTrimmedText=s,exports.trimTextMid=h,exports.remapRangesToTrimmedText=o,exports.ELLIPSIS=void 0;var e=require("./utils");const t="…";exports.ELLIPSIS=t;const n=new Map;let r=-1;function i(e,t){return window.devicePixelRatio!==r&&(n.clear(),r=window.devicePixelRatio),n.has(t)||n.set(t,e.measureText(t).width),n.get(t)}function s(e,n){if(e.length<=n)return{trimmedString:e,trimmedLength:e.length,prefixLength:e.length,suffixLength:0,originalString:e,originalLength:e.length};let r=Math.floor(n/2);const i=n-r-1,s=e.substr(0,r),h=e.substr(e.length-i,i),g=s+t+h;return{trimmedString:g,trimmedLength:g.length,prefixLength:s.length,suffixLength:h.length,originalString:e,originalLength:e.length}}function h(t,n,r){if(i(t,n)<=r)return s(n,n.length);const[h]=(0,e.findValueBisect)(0,n.length,e=>i(t,s(n,e).trimmedString),r);return s(n,h)}var g;function a(e,t){return t{this.container=e||null}),this.overlayCanvas=null,this.overlayCtx=null,this.onWindowResize=(()=>{this.onBeforeFrame()}),this.onBeforeFrame=(()=>{this.maybeClearInteractionLock(),this.resizeOverlayCanvasIfNeeded(),this.renderRects(),this.renderOverlays()}),this.renderCanvas=(()=>{this.props.canvasContext.requestFrame()}),this.frameHadWheelEvent=!1,this.framesWithoutWheelEvents=0,this.interactionLock=null,this.maybeClearInteractionLock=(()=>{this.interactionLock&&(this.frameHadWheelEvent||(this.framesWithoutWheelEvents++,this.framesWithoutWheelEvents>=2&&(this.interactionLock=null,this.framesWithoutWheelEvents=0)),this.props.canvasContext.requestFrame()),this.frameHadWheelEvent=!1}),this.onWheel=(e=>{if(e.preventDefault(),this.frameHadWheelEvent=!0,(e.metaKey||e.ctrlKey)&&"pan"!==this.interactionLock){let t=1+e.deltaY/100;e.ctrlKey&&(t=1+e.deltaY/40),t=(0,o.clamp)(t,.1,10),this.zoom(t)}else"zoom"!==this.interactionLock&&this.pan(new o.Vec2(e.deltaX,e.deltaY));this.renderCanvas()}),this.dragStartConfigSpaceMouse=null,this.dragConfigSpaceViewportOffset=null,this.draggingMode=null,this.onMouseDown=(t=>{const i=this.configSpaceMouse(t);i&&(this.props.configSpaceViewportRect.contains(i)?(this.draggingMode=e.TRANSLATE_VIEWPORT,this.dragConfigSpaceViewportOffset=i.minus(this.props.configSpaceViewportRect.origin)):this.draggingMode=e.DRAW_NEW_VIEWPORT,this.dragStartConfigSpaceMouse=i,window.addEventListener("mousemove",this.onWindowMouseMove),window.addEventListener("mouseup",this.onWindowMouseUp),this.updateCursor(i))}),this.onWindowMouseMove=(t=>{if(!this.dragStartConfigSpaceMouse)return;let i=this.configSpaceMouse(t);if(i)if(this.updateCursor(i),i=new o.Rect(new o.Vec2(0,0),this.configSpaceSize()).closestPointTo(i),this.draggingMode===e.DRAW_NEW_VIEWPORT){const e=this.dragStartConfigSpaceMouse;let t=i;if(!e||!t)return;const s=Math.min(e.x,t.x),n=Math.max(e.x,t.x)-s,r=this.props.configSpaceViewportRect.height();this.props.setConfigSpaceViewportRect(new o.Rect(new o.Vec2(s,t.y-r/2),new o.Vec2(n,r)))}else if(this.draggingMode===e.TRANSLATE_VIEWPORT){if(!this.dragConfigSpaceViewportOffset)return;const e=i.minus(this.dragConfigSpaceViewportOffset);this.props.setConfigSpaceViewportRect(this.props.configSpaceViewportRect.withOrigin(e))}}),this.updateCursor=(t=>{this.draggingMode===e.TRANSLATE_VIEWPORT?(document.body.style.cursor="grabbing",document.body.style.cursor="-webkit-grabbing"):this.draggingMode===e.DRAW_NEW_VIEWPORT?document.body.style.cursor="col-resize":this.props.configSpaceViewportRect.contains(t)?(document.body.style.cursor="grab",document.body.style.cursor="-webkit-grab"):document.body.style.cursor="col-resize"}),this.onMouseLeave=(()=>{null==this.draggingMode&&(document.body.style.cursor="default")}),this.onMouseMove=(e=>{const t=this.configSpaceMouse(e);t&&this.updateCursor(t)}),this.onWindowMouseUp=(e=>{this.draggingMode=null,window.removeEventListener("mousemove",this.onWindowMouseMove),window.removeEventListener("mouseup",this.onWindowMouseUp);const t=this.configSpaceMouse(e);t&&this.updateCursor(t)}),this.overlayCanvasRef=(e=>{e?(this.overlayCanvas=e,this.overlayCtx=this.overlayCanvas.getContext("2d"),this.renderCanvas()):(this.overlayCanvas=null,this.overlayCtx=null)})}physicalViewSize(){return new o.Vec2(this.overlayCanvas?this.overlayCanvas.width:0,this.overlayCanvas?this.overlayCanvas.height:0)}getStyle(){return(0,s.getFlamechartStyle)(this.props.theme)}minimapOrigin(){return new o.Vec2(0,n.Sizes.FRAME_HEIGHT*window.devicePixelRatio)}configSpaceSize(){return new o.Vec2(this.props.flamechart.getTotalWeight(),this.props.flamechart.getLayers().length)}configSpaceToPhysicalViewSpace(){const e=this.minimapOrigin();return o.AffineTransform.betweenRects(new o.Rect(new o.Vec2(0,0),this.configSpaceSize()),new o.Rect(e,this.physicalViewSize().minus(e)))}logicalToPhysicalViewSpace(){return o.AffineTransform.withScale(new o.Vec2(window.devicePixelRatio,window.devicePixelRatio))}windowToLogicalViewSpace(){if(!this.container)return new o.AffineTransform;const e=this.container.getBoundingClientRect();return o.AffineTransform.withTranslation(new o.Vec2(-e.left,-e.top))}renderRects(){this.container&&(this.physicalViewSize().x<2||this.props.canvasContext.renderBehind(this.container,()=>{this.props.flamechartRenderer.render({configSpaceSrcRect:new o.Rect(new o.Vec2(0,0),this.configSpaceSize()),physicalSpaceDstRect:new o.Rect(this.minimapOrigin(),this.physicalViewSize().minus(this.minimapOrigin())),renderOutlines:!1}),this.props.canvasContext.viewportRectangleRenderer.render({configSpaceViewportRect:this.props.configSpaceViewportRect,configSpaceToPhysicalViewSpace:this.configSpaceToPhysicalViewSpace()})}))}renderOverlays(){const e=this.overlayCtx;if(!e)return;const t=this.physicalViewSize();e.clearRect(0,0,t.x,t.y);const i=this.configSpaceToPhysicalViewSpace(),s=this.configSpaceSize().x,c=(this.configSpaceToPhysicalViewSpace().inverted()||new o.AffineTransform).times(this.logicalToPhysicalViewSpace()).transformVector(new o.Vec2(200,1)).x,h=n.Sizes.FRAME_HEIGHT*window.devicePixelRatio,l=n.FontSize.LABEL*window.devicePixelRatio,p=(h-l)/2;e.font=`${l}px/${h}px ${n.FontFamily.MONOSPACE}`,e.textBaseline="top";let d=Math.pow(10,Math.floor(Math.log10(c)));c/d>5?d*=5:c/d>2&&(d*=2);const f=this.props.theme;e.fillStyle=a.Color.fromCSSHex(f.bgPrimaryColor).withAlpha(.8).toCSS(),e.fillRect(0,0,t.x,h),e.textBaseline="top";for(let n=Math.ceil(0/d)*d;n ")),t.push(c.name),c.file){let s=c.file;null!=c.line&&(s+=`:${c.line}`,null!=c.col&&(s+=`:${c.col}`)),t.push((0,l.h)("span",{className:(0,e.css)(r.stackFileLine)}," (",s,")"))}i.push((0,l.h)("div",{className:(0,e.css)(r.stackLine)},t))}return(0,l.h)("div",{className:(0,e.css)(r.stackTraceView)},(0,l.h)("div",{className:(0,e.css)(r.stackTraceViewPadding)},i))}function o(s){const a=(0,t.getFlamechartStyle)((0,c.useTheme)()),{flamechart:o,selectedNode:h}=s,{frame:n}=h;return(0,l.h)("div",{className:(0,e.css)(a.detailView)},(0,l.h)(r,{title:"This Instance",cellStyle:a.thisInstanceCell,grandTotal:o.getTotalWeight(),selectedTotal:h.getTotalWeight(),selectedSelf:h.getSelfWeight(),formatter:o.formatValue.bind(o)}),(0,l.h)(r,{title:"All Instances",cellStyle:a.allInstancesCell,grandTotal:o.getTotalWeight(),selectedTotal:n.getTotalWeight(),selectedSelf:n.getSelfWeight(),formatter:o.formatValue.bind(o)}),(0,l.h)(i,{node:h,getFrameColor:s.getCSSColorForFrame}))} +},{"aphrodite":"CxN7","preact":"aSor","./flamechart-style":"jZ6t","../lib/utils":"ucYa","./color-chit":"Pua8","./themes/theme":"gzKG"}],"e6nh":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BatchCanvasRectRenderer=exports.BatchCanvasTextRenderer=void 0;class t{constructor(){this.argsBatch=[]}text(t){this.argsBatch.push(t)}fill(t,e){if(0!==this.argsBatch.length){t.fillStyle=e;for(let e of this.argsBatch)t.fillText(e.text,e.x,e.y);this.argsBatch=[]}}}exports.BatchCanvasTextRenderer=t;class e{constructor(){this.argsBatch=[]}rect(t){this.argsBatch.push(t)}drawPath(t){t.beginPath();for(let e of this.argsBatch)t.rect(e.x,e.y,e.w,e.h);t.closePath(),this.argsBatch=[]}fill(t,e){0!==this.argsBatch.length&&(t.fillStyle=e,this.drawPath(t),t.fill())}stroke(t,e,s){0!==this.argsBatch.length&&(t.strokeStyle=e,t.lineWidth=s,this.drawPath(t),t.stroke())}}exports.BatchCanvasRectRenderer=e; +},{}],"e7Fh":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartPanZoomView=void 0;var e=require("../lib/math"),t=require("./style"),i=require("../lib/text-utils"),o=require("./flamechart-style"),s=require("preact"),r=require("aphrodite"),n=require("../lib/canvas-2d-batch-renderers"),a=require("../lib/color");class h extends s.Component{constructor(){super(...arguments),this.container=null,this.containerRef=(e=>{this.container=e||null}),this.overlayCanvas=null,this.overlayCtx=null,this.hoveredLabel=null,this.overlayCanvasRef=(e=>{e?(this.overlayCanvas=e,this.overlayCtx=this.overlayCanvas.getContext("2d"),this.renderCanvas()):(this.overlayCanvas=null,this.overlayCtx=null)}),this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT=t.Sizes.FRAME_HEIGHT,this.onWindowResize=(()=>{this.updateConfigSpaceViewport(),this.onBeforeFrame()}),this.frameHadWheelEvent=!1,this.framesWithoutWheelEvents=0,this.interactionLock=null,this.maybeClearInteractionLock=(()=>{this.interactionLock&&(this.frameHadWheelEvent||(this.framesWithoutWheelEvents++,this.framesWithoutWheelEvents>=2&&(this.interactionLock=null,this.framesWithoutWheelEvents=0)),this.props.canvasContext.requestFrame()),this.frameHadWheelEvent=!1}),this.onBeforeFrame=(()=>{this.resizeOverlayCanvasIfNeeded(),this.renderRects(),this.renderOverlays(),this.maybeClearInteractionLock()}),this.renderCanvas=(()=>{this.props.canvasContext.requestFrame()}),this.lastDragPos=null,this.mouseDownPos=null,this.onMouseDown=(t=>{this.mouseDownPos=this.lastDragPos=new e.Vec2(t.offsetX,t.offsetY),this.updateCursor(),window.addEventListener("mouseup",this.onWindowMouseUp)}),this.onMouseDrag=(t=>{if(!this.lastDragPos)return;const i=new e.Vec2(t.offsetX,t.offsetY);this.pan(this.lastDragPos.minus(i)),this.lastDragPos=i,this.hoveredLabel&&this.props.onNodeHover(null)}),this.onDblClick=(t=>{if(this.hoveredLabel){const t=this.hoveredLabel.configSpaceBounds,i=new e.Rect(t.origin.minus(new e.Vec2(0,1)),t.size.withY(this.props.configSpaceViewportRect.height()));this.props.setConfigSpaceViewportRect(i)}}),this.onClick=(t=>{const i=new e.Vec2(t.offsetX,t.offsetY),o=this.mouseDownPos;this.mouseDownPos=null,o&&i.minus(o).length()>5||(this.hoveredLabel?(this.props.onNodeSelect(this.hoveredLabel.node),this.renderCanvas()):this.props.onNodeSelect(null))}),this.onWindowMouseUp=(e=>{this.lastDragPos=null,this.updateCursor(),window.removeEventListener("mouseup",this.onWindowMouseUp)}),this.onMouseMove=(t=>{if(this.updateCursor(),this.lastDragPos)return t.preventDefault(),void this.onMouseDrag(t);this.hoveredLabel=null;const i=new e.Vec2(t.offsetX,t.offsetY),o=this.logicalToPhysicalViewSpace().transformPosition(i),s=this.configSpaceToPhysicalViewSpace().inverseTransformPosition(o);if(!s)return;const r=(t,i=0)=>{const o=t.end-t.start,n=this.props.renderInverted?this.configSpaceSize().y-1-i:i,a=new e.Rect(new e.Vec2(t.start,n),new e.Vec2(o,1));if(s.xa.right())return null;a.contains(s)&&(this.hoveredLabel={configSpaceBounds:a,node:t.node});for(let e of t.children)r(e,i+1)};for(let e of this.props.flamechart.getLayers()[0]||[])r(e);this.hoveredLabel?this.props.onNodeHover({node:this.hoveredLabel.node,event:t}):this.props.onNodeHover(null),this.renderCanvas()}),this.onMouseLeave=(e=>{this.hoveredLabel=null,this.props.onNodeHover(null),this.renderCanvas()}),this.onWheel=(t=>{t.preventDefault(),this.frameHadWheelEvent=!0;const i=t.metaKey||t.ctrlKey;let o=t.deltaY,s=t.deltaX;if(t.deltaMode===t.DOM_DELTA_LINE&&(o*=this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT,s*=this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT),i&&"pan"!==this.interactionLock){let i=1+o/100;t.ctrlKey&&(i=1+o/40),i=(0,e.clamp)(i,.1,10),this.zoom(new e.Vec2(t.offsetX,t.offsetY),i)}else"zoom"!==this.interactionLock&&this.pan(new e.Vec2(s,o));this.renderCanvas()}),this.onWindowKeyPress=(t=>{if(!this.container)return;const{width:i,height:o}=this.container.getBoundingClientRect();"="===t.key||"+"===t.key?(this.zoom(new e.Vec2(i/2,o/2),.5),t.preventDefault()):"-"!==t.key&&"_"!==t.key||(this.zoom(new e.Vec2(i/2,o/2),2),t.preventDefault()),t.ctrlKey||t.shiftKey||t.metaKey||("0"===t.key?this.zoom(new e.Vec2(i/2,o/2),1e9):"ArrowRight"===t.key||"KeyD"===t.code?this.pan(new e.Vec2(100,0)):"ArrowLeft"===t.key||"KeyA"===t.code?this.pan(new e.Vec2(-100,0)):"ArrowUp"===t.key||"KeyW"===t.code?this.pan(new e.Vec2(0,-100)):"ArrowDown"===t.key||"KeyS"===t.code?this.pan(new e.Vec2(0,100)):"Escape"===t.key&&(this.props.onNodeSelect(null),this.renderCanvas()))})}getStyle(){return(0,o.getFlamechartStyle)(this.props.theme)}setConfigSpaceViewportRect(e){this.props.setConfigSpaceViewportRect(e)}configSpaceSize(){return new e.Vec2(this.props.flamechart.getTotalWeight(),this.props.flamechart.getLayers().length)}physicalViewSize(){return new e.Vec2(this.overlayCanvas?this.overlayCanvas.width:0,this.overlayCanvas?this.overlayCanvas.height:0)}physicalBounds(){if(this.props.renderInverted){const t=this.physicalViewSize().y,i=(this.configSpaceSize().y+1)*this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT*window.devicePixelRatio;if(i{var u;const v=t.end-t.start,m=this.props.renderInverted?this.configSpaceSize().y-1-n:n,g=new e.Rect(new e.Vec2(t.start,m),new e.Vec2(v,1));if(!(vthis.props.configSpaceViewportRect.right()||g.right()this.props.configSpaceViewportRect.bottom())return;if(g.hasIntersectionWith(this.props.configSpaceViewportRect)){let e=s.transformRect(g);if(e.left()<0&&(e=e.withOrigin(e.origin.withX(0)).withSize(e.size.withX(e.size.x+e.left()))),e.right()>h.x&&(e=e.withSize(e.size.withX(h.x-e.left()))),e.width()>c){const s=null===(u=this.props.searchResults)||void 0===u?void 0:u.getMatchForFrame(t.node.frame),n=(0,i.trimTextMid)(o,t.node.frame.name,e.width()-2*p);if(s){const t=(0,i.remapRangesToTrimmedText)(n,s);let h=0,c=e.left()+p;const l=(a-r)/2-2;for(let[s,r]of t){c+=(0,i.cachedMeasureTextWidth)(o,n.trimmedString.substring(h,s));const t=(0,i.cachedMeasureTextWidth)(o,n.trimmedString.substring(s,r));w.rect({x:c,y:e.top()+l,w:t,h:a-2*l}),c+=t,h=r}}(null==this.props.searchResults||s?d:f).text({text:n.trimmedString,x:e.left()+p,y:Math.round(e.bottom()-(a-r)/2)})}}for(let e of t.children)y(e,n+1)}},g=2*window.devicePixelRatio;o.strokeStyle=this.props.theme.selectionSecondaryColor;const S=(s.inverseTransformVector(new e.Vec2(1,0))||new e.Vec2(0,0)).x,C=(t,i=0)=>{var o;if(!this.props.selectedNode&&null==this.props.searchResults)return;const r=t.end-t.start,n=this.props.renderInverted?this.configSpaceSize().y-1-i:i,a=new e.Rect(new e.Vec2(t.start,n),new e.Vec2(r,1));if(!(rthis.props.configSpaceViewportRect.right()||a.right()this.props.configSpaceViewportRect.bottom())){if(a.hasIntersectionWith(this.props.configSpaceViewportRect)){if(null===(o=this.props.searchResults)||void 0===o?void 0:o.getMatchForFrame(t.node.frame)){const e=s.transformRect(a);m.rect({x:Math.round(e.left()+g/2),y:Math.round(e.top()+g/2),w:Math.round(Math.max(0,e.width()-g)),h:Math.round(Math.max(0,e.height()-g))})}if(null!=this.props.selectedNode&&t.node.frame===this.props.selectedNode.frame){let e=t.node===this.props.selectedNode?u:v;const i=s.transformRect(a);e.rect({x:Math.round(i.left()+1+g/2),y:Math.round(i.top()+1+g/2),w:Math.round(Math.max(0,i.width()-2-g)),h:Math.round(Math.max(0,i.height()-2-g))})}}for(let e of t.children)C(e,i+1)}};for(let e of this.props.flamechart.getLayers()[0]||[])C(e);for(let e of this.props.flamechart.getLayers()[0]||[])y(e);const V=this.props.theme;if(m.fill(o,V.searchMatchPrimaryColor),w.fill(o,V.searchMatchSecondaryColor),f.fill(o,V.fgSecondaryColor),d.fill(o,null!=this.props.searchResults?V.searchMatchTextColor:V.fgPrimaryColor),v.stroke(o,V.selectionSecondaryColor,g),u.stroke(o,V.selectionPrimaryColor,g),this.hoveredLabel){let e=V.fgPrimaryColor;this.props.selectedNode===this.hoveredLabel.node&&(e=V.selectionPrimaryColor),o.lineWidth=2*devicePixelRatio,o.strokeStyle=e;const t=s.transformRect(this.hoveredLabel.configSpaceBounds);o.strokeRect(Math.round(t.left()),Math.round(t.top()),Math.round(Math.max(0,t.width())),Math.round(Math.max(0,t.height())))}this.renderTimeIndicators()}renderTimeIndicators(){const o=this.overlayCtx;if(!o)return;const s=this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT*window.devicePixelRatio,r=this.physicalViewSize(),n=this.configSpaceToPhysicalViewSpace(),h=(s-t.FontSize.LABEL*window.devicePixelRatio)/2,c=this.props.configSpaceViewportRect.left(),l=this.props.configSpaceViewportRect.right(),p=(this.configSpaceToPhysicalViewSpace().inverted()||new e.AffineTransform).times(this.logicalToPhysicalViewSpace()).transformVector(new e.Vec2(200,1)).x;let d=Math.pow(10,Math.floor(Math.log10(p)));p/d>5?d*=5:p/d>2&&(d*=2);const f=this.props.theme;{const t=this.props.renderInverted?r.y-s:0;o.fillStyle=a.Color.fromCSSHex(f.bgPrimaryColor).withAlpha(.8).toCSS(),o.fillRect(0,t,r.x,s),o.textBaseline="top";for(let s=Math.ceil(c/d)*d;s{this.props.flamechartRenderer.render({physicalSpaceDstRect:this.physicalBounds(),configSpaceSrcRect:this.props.configSpaceViewportRect,renderOutlines:!0})}))}pan(t){this.interactionLock="pan";const i=this.logicalToPhysicalViewSpace().transformVector(t),o=this.configSpaceToPhysicalViewSpace().inverseTransformVector(i);this.hoveredLabel&&this.props.onNodeHover(null),o&&this.props.transformViewport(e.AffineTransform.withTranslation(o))}zoom(t,i){this.interactionLock="zoom";const o=this.logicalToPhysicalViewSpace().transformPosition(t),s=this.configSpaceToPhysicalViewSpace().inverseTransformPosition(o);if(!s)return;const r=e.AffineTransform.withTranslation(s.times(-1)).scaledBy(new e.Vec2(i,1)).translatedBy(s);this.props.transformViewport(r)}updateCursor(){this.lastDragPos?(document.body.style.cursor="grabbing",document.body.style.cursor="-webkit-grabbing"):document.body.style.cursor="default"}shouldComponentUpdate(){return!1}componentWillReceiveProps(e){this.props.flamechart!==e.flamechart?(this.hoveredLabel=null,this.renderCanvas()):this.props.searchResults!==e.searchResults?this.renderCanvas():this.props.selectedNode!==e.selectedNode?this.renderCanvas():this.props.configSpaceViewportRect!==e.configSpaceViewportRect?this.renderCanvas():this.props.canvasContext!==e.canvasContext&&(this.props.canvasContext&&this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame),e.canvasContext&&(e.canvasContext.addBeforeFrameHandler(this.onBeforeFrame),e.canvasContext.requestFrame()))}componentDidMount(){this.props.canvasContext.addBeforeFrameHandler(this.onBeforeFrame),window.addEventListener("resize",this.onWindowResize),window.addEventListener("keydown",this.onWindowKeyPress)}componentWillUnmount(){this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame),window.removeEventListener("resize",this.onWindowResize),window.removeEventListener("keydown",this.onWindowKeyPress)}render(){const e=this.getStyle();return(0,s.h)("div",{className:(0,r.css)(e.panZoomView,t.commonStyle.vbox),onMouseDown:this.onMouseDown,onMouseMove:this.onMouseMove,onMouseLeave:this.onMouseLeave,onClick:this.onClick,onDblClick:this.onDblClick,onWheel:this.onWheel,ref:this.containerRef},(0,s.h)("canvas",{width:1,height:1,ref:this.overlayCanvasRef,className:(0,r.css)(e.fill)}))}}exports.FlamechartPanZoomView=h; +},{"../lib/math":"tDuZ","./style":"hvr4","../lib/text-utils":"eeWS","./flamechart-style":"jZ6t","preact":"aSor","aphrodite":"CxN7","../lib/canvas-2d-batch-renderers":"e6nh","../lib/color":"x77Y"}],"PGRN":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Hovertip=n;var e=require("./style"),t=require("aphrodite"),i=require("preact"),o=require("./themes/theme"),r=require("preact/hooks");function n(e){const n=a((0,o.useTheme)()),{containerSize:s,offset:d}=e,h=s.x,l=s.y,p=(0,r.useCallback)(e=>{if(!e)return;const t=e.getBoundingClientRect();let i=d.x+7;i+t.width>h-1&&(i=h-t.width-1)<1&&(i=1),e.style.left=`${i}px`;let o=d.y+7;o+t.height>l-1&&(o=d.y-t.height-1)<1&&(o=1),e.style.top=`${o}px`},[h,l,d.x,d.y]);return(0,i.h)("div",{className:(0,t.css)(n.hoverTip),ref:p},(0,i.h)("div",{className:(0,t.css)(n.hoverTipRow)},e.children))}const s=2,a=(0,o.withTheme)(i=>t.StyleSheet.create({hoverTip:{position:"absolute",background:i.bgPrimaryColor,border:"1px solid black",maxWidth:e.Sizes.TOOLTIP_WIDTH_MAX,paddingTop:2,paddingBottom:2,pointerEvents:"none",userSelect:"none",fontSize:e.FontSize.LABEL,fontFamily:e.FontFamily.MONOSPACE,zIndex:e.ZIndex.HOVERTIP},hoverTipRow:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflowX:"hidden",paddingLeft:2,paddingRight:2,maxWidth:e.Sizes.TOOLTIP_WIDTH_MAX}})); +},{"./style":"hvr4","aphrodite":"CxN7","preact":"aSor","./themes/theme":"gzKG","preact/hooks":"MwGB"}],"zsRf":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartSearchView=exports.FlamechartSearchContextProvider=exports.FlamechartSearchContext=void 0;var e=require("preact/compat"),t=require("preact/hooks"),l=require("./search-view"),r=require("../lib/profile-search"),c=require("../lib/math"),n=require("preact");const o=(0,n.createContext)(null);exports.FlamechartSearchContext=o;const u=({flamechart:e,selectedNode:c,setSelectedNode:u,configSpaceViewportRect:a,setConfigSpaceViewportRect:s,children:i})=>{const p=(0,t.useContext)(l.ProfileSearchContext),h=(0,t.useMemo)(()=>null==p?null:new r.FlamechartSearchResults(e,p),[e,p]);return(0,n.h)(o.Provider,{value:{results:h,flamechart:e,selectedNode:c,setSelectedNode:u,configSpaceViewportRect:a,setConfigSpaceViewportRect:s}},i)};exports.FlamechartSearchContextProvider=u;const a=(0,e.memo)(()=>{const e=(0,t.useContext)(o),r=null==e?null:e.results,u=null==e?null:e.selectedNode,a=null==e?null:e.setSelectedNode,s=null==e?null:e.configSpaceViewportRect,i=null==e?null:e.setConfigSpaceViewportRect,p=null==e?null:e.flamechart,h=null==r?null:r.count(),d=(0,t.useMemo)(()=>null==r?null:null==u?null:r.indexOf(u),[r,u]),f=(0,t.useCallback)(e=>{if(!a)return;if(!p)return;if(!s)return;if(!i)return;const t=e.configSpaceBounds,l=new c.Rect(t.origin.minus(new c.Vec2(0,1)),t.size.withY(s.height()));a(e.node),i(p.getClampedConfigSpaceViewportRect({configSpaceViewportRect:l}))},[s,i,a,p]),{selectPrev:x,selectNext:S}=(0,t.useMemo)(()=>null==h||0===h||null==r?{selectPrev:()=>{},selectNext:()=>{}}:{selectPrev:()=>{if(!(null==r?void 0:r.at))return;if(null==h||0===h)return;let e=null==d?h-1:d-1;e<0&&(e=h-1);const t=r.at(e);f(t)},selectNext:()=>{if(!(null==r?void 0:r.at))return;if(null==h||0===h)return;let e=null==d?0:d+1;e>=h&&(e=0);const t=r.at(e);f(t)}},[h,d,r,f]);return(0,n.h)(l.SearchView,{resultIndex:d,numResults:h,selectPrev:x,selectNext:S})});exports.FlamechartSearchView=a; +},{"preact/compat":"AQ6k","preact/hooks":"MwGB","./search-view":"t9CM","../lib/profile-search":"DHvC","../lib/math":"tDuZ","preact":"aSor"}],"Hete":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StatelessComponent=void 0;var e=require("preact");class t extends e.Component{}exports.StatelessComponent=t; +},{"preact":"aSor"}],"Z2mP":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartView=void 0;var e=require("preact"),t=require("aphrodite"),r=require("../lib/math"),i=require("../lib/utils"),o=require("./flamechart-minimap-view"),s=require("./style"),a=require("./flamechart-detail-view"),c=require("./flamechart-pan-zoom-view"),p=require("./hovertip"),h=require("./search-view"),n=require("./flamechart-search-view"),l=require("./flamechart-style"),m=require("../lib/preact-helpers");class f extends m.StatelessComponent{constructor(){super(...arguments),this.setConfigSpaceViewportRect=(e=>{const t=s.Sizes.DETAIL_VIEW_HEIGHT/s.Sizes.FRAME_HEIGHT,i=this.configSpaceSize(),o=this.props.flamechart.getClampedViewportWidth(e.size.x),a=e.size.withX(o),c=r.Vec2.clamp(e.origin,new r.Vec2(0,-1),r.Vec2.max(r.Vec2.zero,i.minus(a).plus(new r.Vec2(0,t+1))));this.props.setConfigSpaceViewportRect(new r.Rect(c,e.size.withX(o)))}),this.setLogicalSpaceViewportSize=(e=>{this.props.setLogicalSpaceViewportSize(e)}),this.transformViewport=(e=>{const t=e.transformRect(this.props.configSpaceViewportRect);this.setConfigSpaceViewportRect(t)}),this.onNodeHover=(e=>{this.props.setNodeHover(e)}),this.onNodeClick=(e=>{this.props.setSelectedNode(e)}),this.container=null,this.containerRef=(e=>{this.container=e||null})}getStyle(){return(0,l.getFlamechartStyle)(this.props.theme)}configSpaceSize(){return new r.Vec2(this.props.flamechart.getTotalWeight(),this.props.flamechart.getLayers().length)}formatValue(e){const t=100*e/this.props.flamechart.getTotalWeight(),r=(0,i.formatPercent)(t);return`${this.props.flamechart.formatValue(e)} (${r})`}renderTooltip(){if(!this.container)return null;const{hover:i}=this.props;if(!i)return null;const{width:o,height:s,left:a,top:c}=this.container.getBoundingClientRect(),h=new r.Vec2(i.event.clientX-a,i.event.clientY-c),n=i.node.frame,l=this.getStyle();return(0,e.h)(p.Hovertip,{containerSize:new r.Vec2(o,s),offset:h},(0,e.h)("span",{className:(0,t.css)(l.hoverCount)},this.formatValue(i.node.getTotalWeight()))," ",n.name,n.file?(0,e.h)("div",null,n.file,":",n.line):void 0)}render(){const r=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(r.fill,s.commonStyle.vbox),ref:this.containerRef},(0,e.h)(o.FlamechartMinimapView,{theme:this.props.theme,configSpaceViewportRect:this.props.configSpaceViewportRect,transformViewport:this.transformViewport,flamechart:this.props.flamechart,flamechartRenderer:this.props.flamechartRenderer,canvasContext:this.props.canvasContext,setConfigSpaceViewportRect:this.setConfigSpaceViewportRect}),(0,e.h)(h.ProfileSearchContext.Consumer,null,t=>(0,e.h)(e.Fragment,null,(0,e.h)(c.FlamechartPanZoomView,{theme:this.props.theme,canvasContext:this.props.canvasContext,flamechart:this.props.flamechart,flamechartRenderer:this.props.flamechartRenderer,renderInverted:!1,onNodeHover:this.onNodeHover,onNodeSelect:this.onNodeClick,selectedNode:this.props.selectedNode,transformViewport:this.transformViewport,configSpaceViewportRect:this.props.configSpaceViewportRect,setConfigSpaceViewportRect:this.setConfigSpaceViewportRect,logicalSpaceViewportSize:this.props.logicalSpaceViewportSize,setLogicalSpaceViewportSize:this.setLogicalSpaceViewportSize,searchResults:t}),(0,e.h)(n.FlamechartSearchView,null))),this.renderTooltip(),this.props.selectedNode&&(0,e.h)(a.FlamechartDetailView,{flamechart:this.props.flamechart,getCSSColorForFrame:this.props.getCSSColorForFrame,selectedNode:this.props.selectedNode}))}}exports.FlamechartView=f; +},{"preact":"aSor","aphrodite":"CxN7","../lib/math":"tDuZ","../lib/utils":"ucYa","./flamechart-minimap-view":"S7z0","./style":"hvr4","./flamechart-detail-view":"uohB","./flamechart-pan-zoom-view":"e7Fh","./hovertip":"PGRN","./search-view":"t9CM","./flamechart-search-view":"zsRf","./flamechart-style":"jZ6t","../lib/preact-helpers":"Hete"}],"PJJu":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useFlamechartSetters=h,exports.LeftHeavyFlamechartView=exports.getLeftHeavyFlamechart=exports.ChronoFlamechartView=exports.createMemoizedFlamechartRenderer=exports.getChronoViewFlamechart=void 0;var e=require("preact"),t=require("../lib/flamechart"),r=require("../gl/flamechart-renderer"),a=require("../lib/utils"),o=require("./flamechart-view"),c=require("../app-state/getters"),l=require("preact/compat"),i=require("./flamechart-search-view"),m=require("./themes/theme"),s=require("../app-state/profile-group"),n=require("../app-state");function h(e){return{setNodeHover:(0,l.useCallback)(t=>{n.profileGroupAtom.setFlamechartHoveredNode(e,t)},[e]),setLogicalSpaceViewportSize:(0,l.useCallback)(t=>{n.profileGroupAtom.setLogicalSpaceViewportSize(e,t)},[e]),setConfigSpaceViewportRect:(0,l.useCallback)(t=>{n.profileGroupAtom.setConfigSpaceViewportRect(e,t)},[e]),setSelectedNode:(0,l.useCallback)(t=>{n.profileGroupAtom.setSelectedNode(e,t)},[e])}}const p=(0,a.memoizeByShallowEquality)(({profile:e,getColorBucketForFrame:r})=>new t.Flamechart({getTotalWeight:e.getTotalWeight.bind(e),forEachCall:e.forEachCall.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:r}));exports.getChronoViewFlamechart=p;const f=e=>(0,a.memoizeByShallowEquality)(({canvasContext:t,flamechart:a})=>new r.FlamechartRenderer(t.gl,(0,c.getRowAtlas)(t),a,t.rectangleBatchRenderer,t.flamechartColorPassRenderer,e));exports.createMemoizedFlamechartRenderer=f;const C=f(),u=(0,l.memo)(t=>{const{activeProfileState:r,glCanvas:a}=t,{profile:l,chronoViewState:n}=r,f=(0,m.useTheme)(),u=(0,c.getCanvasContext)({theme:f,canvas:a}),d=(0,c.getFrameToColorBucket)(l),F=(0,c.createGetColorBucketForFrame)(d),g=(0,c.createGetCSSColorForFrame)({theme:f,frameToColorBucket:d}),S=p({profile:l,getColorBucketForFrame:F}),w=C({canvasContext:u,flamechart:S}),v=h(s.FlamechartID.CHRONO);return(0,e.h)(i.FlamechartSearchContextProvider,{flamechart:S,selectedNode:n.selectedNode,setSelectedNode:v.setSelectedNode,configSpaceViewportRect:n.configSpaceViewportRect,setConfigSpaceViewportRect:v.setConfigSpaceViewportRect},(0,e.h)(o.FlamechartView,Object.assign({theme:f,renderInverted:!1,flamechart:S,flamechartRenderer:w,canvasContext:u,getCSSColorForFrame:g},n,v)))});exports.ChronoFlamechartView=u;const d=(0,a.memoizeByShallowEquality)(({profile:e,getColorBucketForFrame:r})=>new t.Flamechart({getTotalWeight:e.getTotalNonIdleWeight.bind(e),forEachCall:e.forEachCallGrouped.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:r}));exports.getLeftHeavyFlamechart=d;const F=f(),g=(0,l.memo)(t=>{const{activeProfileState:r,glCanvas:a}=t,{profile:l,leftHeavyViewState:n}=r,p=(0,m.useTheme)(),f=(0,c.getCanvasContext)({theme:p,canvas:a}),C=(0,c.getFrameToColorBucket)(l),u=(0,c.createGetColorBucketForFrame)(C),g=(0,c.createGetCSSColorForFrame)({theme:p,frameToColorBucket:C}),S=d({profile:l,getColorBucketForFrame:u}),w=F({canvasContext:f,flamechart:S}),v=h(s.FlamechartID.LEFT_HEAVY);return(0,e.h)(i.FlamechartSearchContextProvider,{flamechart:S,selectedNode:n.selectedNode,setSelectedNode:v.setSelectedNode,configSpaceViewportRect:n.configSpaceViewportRect,setConfigSpaceViewportRect:v.setConfigSpaceViewportRect},(0,e.h)(o.FlamechartView,Object.assign({theme:p,renderInverted:!1,flamechart:S,flamechartRenderer:w,canvasContext:f,getCSSColorForFrame:g},n,v)))});exports.LeftHeavyFlamechartView=g; +},{"preact":"aSor","../lib/flamechart":"gFMr","../gl/flamechart-renderer":"P80v","../lib/utils":"ucYa","./flamechart-view":"Z2mP","../app-state/getters":"zEXv","preact/compat":"AQ6k","./flamechart-search-view":"zsRf","./themes/theme":"gzKG","../app-state/profile-group":"uxXA","../app-state":"LDQe"}],"MXNL":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStyle=exports.FlamechartWrapper=void 0;var e=require("aphrodite"),t=require("preact"),r=require("./style"),o=require("../lib/math"),i=require("./flamechart-pan-zoom-view"),s=require("../lib/utils"),p=require("./hovertip"),a=require("./themes/theme"),n=require("../lib/preact-helpers");class c extends n.StatelessComponent{constructor(){super(...arguments),this.setConfigSpaceViewportRect=(e=>{this.props.setConfigSpaceViewportRect(this.clampViewportToFlamegraph(e))}),this.setLogicalSpaceViewportSize=(e=>{this.props.setLogicalSpaceViewportSize(e)}),this.transformViewport=(e=>{this.setConfigSpaceViewportRect(e.transformRect(this.props.configSpaceViewportRect))}),this.container=null,this.containerRef=(e=>{this.container=e||null}),this.setNodeHover=(e=>{this.props.setNodeHover(e)})}clampViewportToFlamegraph(e){const{flamechart:t,renderInverted:r}=this.props;return t.getClampedConfigSpaceViewportRect({configSpaceViewportRect:e,renderInverted:r})}formatValue(e){const t=100*e/this.props.flamechart.getTotalWeight(),r=(0,s.formatPercent)(t);return`${this.props.flamechart.formatValue(e)} (${r})`}renderTooltip(){if(!this.container)return null;const{hover:r}=this.props;if(!r)return null;const{width:i,height:s,left:a,top:n}=this.container.getBoundingClientRect(),c=new o.Vec2(r.event.clientX-a,r.event.clientY-n),h=l(this.props.theme),m=r.node.frame;return(0,t.h)(p.Hovertip,{containerSize:new o.Vec2(i,s),offset:c},(0,t.h)("span",{className:(0,e.css)(h.hoverCount)},this.formatValue(r.node.getTotalWeight()))," ",m.name,m.file?(0,t.h)("div",null,m.file,":",m.line):void 0)}render(){return(0,t.h)("div",{className:(0,e.css)(r.commonStyle.fillY,r.commonStyle.fillX,r.commonStyle.vbox),ref:this.containerRef},(0,t.h)(i.FlamechartPanZoomView,{theme:this.props.theme,selectedNode:null,onNodeHover:this.setNodeHover,onNodeSelect:s.noop,configSpaceViewportRect:this.props.configSpaceViewportRect,setConfigSpaceViewportRect:this.setConfigSpaceViewportRect,transformViewport:this.transformViewport,flamechart:this.props.flamechart,flamechartRenderer:this.props.flamechartRenderer,canvasContext:this.props.canvasContext,renderInverted:this.props.renderInverted,logicalSpaceViewportSize:this.props.logicalSpaceViewportSize,setLogicalSpaceViewportSize:this.setLogicalSpaceViewportSize,searchResults:null}),this.renderTooltip())}}exports.FlamechartWrapper=c;const l=(0,a.withTheme)(t=>e.StyleSheet.create({hoverCount:{color:t.weightColor}}));exports.getStyle=l; +},{"aphrodite":"CxN7","preact":"aSor","./style":"hvr4","../lib/math":"tDuZ","./flamechart-pan-zoom-view":"e7Fh","../lib/utils":"ucYa","./hovertip":"PGRN","./themes/theme":"gzKG","../lib/preact-helpers":"Hete"}],"Cw7z":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.InvertedCallerFlamegraphView=void 0;var e=require("../lib/utils"),r=require("../lib/flamechart"),t=require("./flamechart-view-container"),a=require("../app-state/getters"),o=require("./flamechart-wrapper"),l=require("preact"),i=require("preact/compat"),n=require("./themes/theme"),m=require("../app-state/profile-group"),c=require("../app-state"),s=require("../lib/atom");const u=(0,e.memoizeByShallowEquality)(({profile:e,frame:r,flattenRecursion:t})=>{let a=e.getInvertedProfileForCallersOf(r);return t?a.getProfileWithRecursionFlattened():a}),h=(0,e.memoizeByShallowEquality)(({invertedCallerProfile:e,getColorBucketForFrame:t})=>new r.Flamechart({getTotalWeight:e.getTotalNonIdleWeight.bind(e),forEachCall:e.forEachCallGrouped.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:t})),f=(0,t.createMemoizedFlamechartRenderer)({inverted:!0}),p=(0,i.memo)(r=>{const{activeProfileState:i}=r;let{profile:p,sandwichViewState:C}=i;const d=(0,s.useAtom)(c.flattenRecursionAtom),F=(0,s.useAtom)(c.glCanvasAtom),g=(0,n.useTheme)();if(!p)throw new Error("profile missing");if(!F)throw new Error("glCanvas missing");const{callerCallee:v}=C;if(!v)throw new Error("callerCallee missing");const{selectedFrame:w}=v,q=(0,a.getFrameToColorBucket)(p),S=(0,a.createGetColorBucketForFrame)(q),E=(0,a.createGetCSSColorForFrame)({theme:g,frameToColorBucket:q}),b=(0,a.getCanvasContext)({theme:g,canvas:F}),B=h({invertedCallerProfile:u({profile:p,frame:w,flattenRecursion:d}),getColorBucketForFrame:S}),I=f({canvasContext:b,flamechart:B});return(0,l.h)(o.FlamechartWrapper,Object.assign({theme:g,renderInverted:!0,flamechart:B,flamechartRenderer:I,canvasContext:b,getCSSColorForFrame:E},(0,t.useFlamechartSetters)(m.FlamechartID.SANDWICH_INVERTED_CALLERS),v.invertedCallerFlamegraph,{setSelectedNode:e.noop}))});exports.InvertedCallerFlamegraphView=p; +},{"../lib/utils":"ucYa","../lib/flamechart":"gFMr","./flamechart-view-container":"PJJu","../app-state/getters":"zEXv","./flamechart-wrapper":"MXNL","preact":"aSor","preact/compat":"AQ6k","./themes/theme":"gzKG","../app-state/profile-group":"uxXA","../app-state":"LDQe","../lib/atom":"QkVE"}],"KT37":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CalleeFlamegraphView=void 0;var e=require("../lib/utils"),r=require("../lib/flamechart"),t=require("./flamechart-view-container"),a=require("../app-state/getters"),o=require("./flamechart-wrapper"),l=require("preact"),i=require("preact/compat"),c=require("./themes/theme"),m=require("../app-state/profile-group"),n=require("../app-state"),s=require("../lib/atom");const u=(0,e.memoizeByShallowEquality)(({profile:e,frame:r,flattenRecursion:t})=>{let a=e.getProfileForCalleesOf(r);return t?a.getProfileWithRecursionFlattened():a}),h=(0,e.memoizeByShallowEquality)(({calleeProfile:e,getColorBucketForFrame:t})=>new r.Flamechart({getTotalWeight:e.getTotalNonIdleWeight.bind(e),forEachCall:e.forEachCallGrouped.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:t})),f=(0,t.createMemoizedFlamechartRenderer)(),p=(0,i.memo)(r=>{const{activeProfileState:i}=r,{profile:p,sandwichViewState:C}=i,F=(0,s.useAtom)(n.flattenRecursionAtom),g=(0,s.useAtom)(n.glCanvasAtom),d=(0,c.useTheme)();if(!p)throw new Error("profile missing");if(!g)throw new Error("glCanvas missing");const{callerCallee:w}=C;if(!w)throw new Error("callerCallee missing");const{selectedFrame:q}=w,v=(0,a.getFrameToColorBucket)(p),S=(0,a.createGetColorBucketForFrame)(v),E=(0,a.createGetCSSColorForFrame)({theme:d,frameToColorBucket:v}),b=(0,a.getCanvasContext)({theme:d,canvas:g}),B=h({calleeProfile:u({profile:p,frame:q,flattenRecursion:F}),getColorBucketForFrame:S}),k=f({canvasContext:b,flamechart:B});return(0,l.h)(o.FlamechartWrapper,Object.assign({theme:d,renderInverted:!1,flamechart:B,flamechartRenderer:k,canvasContext:b,getCSSColorForFrame:E},(0,t.useFlamechartSetters)(m.FlamechartID.SANDWICH_CALLEES),w.calleeFlamegraph,{setSelectedNode:e.noop}))});exports.CalleeFlamegraphView=p; +},{"../lib/utils":"ucYa","../lib/flamechart":"gFMr","./flamechart-view-container":"PJJu","../app-state/getters":"zEXv","./flamechart-wrapper":"MXNL","preact":"aSor","preact/compat":"AQ6k","./themes/theme":"gzKG","../app-state/profile-group":"uxXA","../app-state":"LDQe","../lib/atom":"QkVE"}],"cWm7":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SandwichSearchView=void 0;var e=require("preact/compat"),l=require("preact/hooks"),t=require("./search-view"),r=require("preact"),s=require("./sandwich-view");const c=(0,e.memo)(()=>{const e=(0,l.useContext)(s.SandwichViewContext),c=null!=e?e.rowList:null,n=null!=(null==e?void 0:e.selectedFrame)?e.getIndexForFrame(e.selectedFrame):null,u=null!=c?c.length:null,{selectPrev:i,selectNext:a}=(0,l.useMemo)(()=>null==c||null==u||0===u||null==e?{selectPrev:()=>{},selectNext:()=>{}}:{selectPrev:()=>{let l=null==n?u-1:n-1;l<0&&(l=u-1),e.setSelectedFrame(c[l])},selectNext:()=>{let l=null==n?0:n+1;l>=u&&(l=0),e.setSelectedFrame(c[l])}},[n,c,u,e]);return(0,r.h)(t.SearchView,{resultIndex:n,numResults:u,selectPrev:i,selectNext:a})});exports.SandwichSearchView=c; +},{"preact/compat":"AQ6k","preact/hooks":"MwGB","./search-view":"t9CM","preact":"aSor","./sandwich-view":"L8J2"}],"L8J2":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SandwichViewContainer=exports.SandwichViewContext=void 0;var e=require("aphrodite"),t=require("./profile-table-view"),r=require("preact"),a=require("preact/compat"),l=require("preact/hooks"),o=require("./style"),s=require("./inverted-caller-flamegraph-view"),i=require("./callee-flamegraph-view"),n=require("./sandwich-search-view"),c=require("../lib/utils"),h=require("./search-view"),m=require("./themes/theme"),d=require("../app-state"),p=require("../lib/atom"),f=require("../lib/preact-helpers");class u extends f.StatelessComponent{constructor(){super(...arguments),this.setSelectedFrame=(e=>{this.props.setSelectedFrame(e)}),this.onWindowKeyPress=(e=>{"Escape"===e.key&&this.setSelectedFrame(null)})}componentDidMount(){window.addEventListener("keydown",this.onWindowKeyPress)}componentWillUnmount(){window.removeEventListener("keydown",this.onWindowKeyPress)}render(){const a=S(this.props.theme),{selectedFrame:l}=this.props;let c=null;return l&&(c=(0,r.h)("div",{className:(0,e.css)(o.commonStyle.fillY,a.callersAndCallees,o.commonStyle.vbox)},(0,r.h)("div",{className:(0,e.css)(o.commonStyle.hbox,a.panZoomViewWraper)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabelParent)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabel)},"Callers")),(0,r.h)(s.InvertedCallerFlamegraphView,{glCanvas:this.props.glCanvas,activeProfileState:this.props.activeProfileState})),(0,r.h)("div",{className:(0,e.css)(a.divider)}),(0,r.h)("div",{className:(0,e.css)(o.commonStyle.hbox,a.panZoomViewWraper)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabelParent,a.flamechartLabelParentBottom)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabel,a.flamechartLabelBottom)},"Callees")),(0,r.h)(i.CalleeFlamegraphView,{glCanvas:this.props.glCanvas,activeProfileState:this.props.activeProfileState})))),(0,r.h)("div",{className:(0,e.css)(o.commonStyle.hbox,o.commonStyle.fillY)},(0,r.h)("div",{className:(0,e.css)(a.tableView)},(0,r.h)(t.ProfileTableViewContainer,{activeProfileState:this.props.activeProfileState}),(0,r.h)(n.SandwichSearchView,null)),c)}}const S=(0,m.withTheme)(t=>e.StyleSheet.create({tableView:{position:"relative",flex:1},panZoomViewWraper:{flex:1},flamechartLabelParent:{display:"flex",flexDirection:"column",justifyContent:"flex-end",alignItems:"flex-start",fontSize:o.FontSize.TITLE,width:1.2*o.FontSize.TITLE,borderRight:`1px solid ${t.fgSecondaryColor}`},flamechartLabelParentBottom:{justifyContent:"flex-start"},flamechartLabel:{transform:"rotate(-90deg)",transformOrigin:"50% 50% 0",width:1.2*o.FontSize.TITLE,flexShrink:1},flamechartLabelBottom:{transform:"rotate(-90deg)",display:"flex",justifyContent:"flex-end"},callersAndCallees:{flex:1,borderLeft:`${o.Sizes.SEPARATOR_HEIGHT}px solid ${t.fgSecondaryColor}`},divider:{height:2,background:t.fgSecondaryColor}})),v=(0,r.createContext)(null);exports.SandwichViewContext=v;const w=(0,a.memo)(e=>{const{activeProfileState:t,glCanvas:a}=e,{sandwichViewState:o,index:s}=t,{callerCallee:i}=o,n=(0,m.useTheme)(),f=(0,l.useCallback)(e=>{d.profileGroupAtom.setSelectedFrame(e)},[]),S=t.profile,w=(0,p.useAtom)(d.tableSortMethodAtom),x=(0,l.useContext)(h.ProfileSearchContext),C=i?i.selectedFrame:null,g=(0,l.useMemo)(()=>{const e=[];switch(S.forEachFrame(t=>{x&&!x.getMatchForFrame(t)||e.push(t)}),w.field){case d.SortField.SYMBOL_NAME:(0,c.sortBy)(e,e=>e.name.toLowerCase());break;case d.SortField.SELF:(0,c.sortBy)(e,e=>e.getSelfWeight());break;case d.SortField.TOTAL:(0,c.sortBy)(e,e=>e.getTotalWeight())}return w.direction===d.SortDirection.DESCENDING&&e.reverse(),e},[S,x,w]),b=(0,l.useMemo)(()=>{const e=new Map;for(let t=0;t{const r=e.get(t);return null==r?null:r}},[g]),F=(0,l.useMemo)(()=>e=>null==x?null:x.getMatchForFrame(e),[x]),y={rowList:g,selectedFrame:C,setSelectedFrame:f,getIndexForFrame:b,getSearchMatchForFrame:F};return(0,r.h)(v.Provider,{value:y},(0,r.h)(u,{theme:n,activeProfileState:t,glCanvas:a,setSelectedFrame:f,selectedFrame:C,profileIndex:s}))});exports.SandwichViewContainer=w; +},{"aphrodite":"CxN7","./profile-table-view":"Ivh5","preact":"aSor","preact/compat":"AQ6k","preact/hooks":"MwGB","./style":"hvr4","./inverted-caller-flamegraph-view":"Cw7z","./callee-flamegraph-view":"KT37","./sandwich-search-view":"cWm7","../lib/utils":"ucYa","./search-view":"t9CM","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE","../lib/preact-helpers":"Hete"}],"LsM4":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ByteFormatter=exports.TimeFormatter=exports.RawValueFormatter=void 0;var t=require("./utils");class e{constructor(){this.unit="none"}format(t){return t.toLocaleString()}}exports.RawValueFormatter=e;class r{constructor(t){this.unit=t,this.multiplier="nanoseconds"===t?1e-9:"microseconds"===t?1e-6:"milliseconds"===t?.001:1}formatUnsigned(e){const r=e*this.multiplier;if(r/60>=1){const e=Math.floor(r/60),o=Math.floor(r-60*e).toString();return`${e}:${(0,t.zeroPad)(o,2)}`}return r/1>=1?`${r.toFixed(2)}s`:r/.001>=1?`${(r/.001).toFixed(2)}ms`:r/1e-6>=1?`${(r/1e-6).toFixed(2)}µs`:`${(r/1e-9).toFixed(2)}ns`}format(t){return`${t<0?"-":""}${this.formatUnsigned(Math.abs(t))}`}}exports.TimeFormatter=r;class o{constructor(){this.unit="bytes"}format(t){return t<1024?`${t.toFixed(0)} B`:(t/=1024)<1024?`${t.toFixed(2)} KB`:(t/=1024)<1024?`${t.toFixed(2)} MB`:`${(t/=1024).toFixed(2)} GB`}}exports.ByteFormatter=o; +},{"./utils":"ucYa"}],"FheM":[function(require,module,exports) { +var t=null;function e(){return t||(t=n()),t}function n(){try{throw new Error}catch(e){var t=(""+e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\/\/[^)\n]+/g);if(t)return r(t[0])}return"/"}function r(t){return(""+t).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)\/[^/]+$/,"$1")+"/"}exports.getBundleURL=e,exports.getBaseURL=r; +},{}],"TUK3":[function(require,module,exports) { +var r=require("./bundle-url").getBundleURL;function e(r){Array.isArray(r)||(r=[r]);var e=r[r.length-1];try{return Promise.resolve(require(e))}catch(n){if("MODULE_NOT_FOUND"===n.code)return new s(function(n,i){t(r.slice(0,-1)).then(function(){return require(e)}).then(n,i)});throw n}}function t(r){return Promise.all(r.map(u))}var n={};function i(r,e){n[r]=e}module.exports=exports=e,exports.load=t,exports.register=i;var o={};function u(e){var t;if(Array.isArray(e)&&(t=e[1],e=e[0]),o[e])return o[e];var i=(e.substring(e.lastIndexOf(".")+1,e.length)||e).toLowerCase(),u=n[i];return u?o[e]=u(r()+e).then(function(r){return r&&module.bundle.register(t,r),r}).catch(function(r){throw delete o[e],r}):void 0}function s(r){this.executor=r,this.promise=null}s.prototype.then=function(r,e){return null===this.promise&&(this.promise=new Promise(this.executor)),this.promise.then(r,e)},s.prototype.catch=function(r){return null===this.promise&&(this.promise=new Promise(this.executor)),this.promise.catch(r)}; +},{"./bundle-url":"FheM"}],"YG8z":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CallTreeProfileBuilder=exports.StackListProfileBuilder=exports.Profile=exports.CallTreeNode=exports.Frame=exports.HasWeights=void 0;var e=require("./utils"),t=require("./value-formatters"),r=function(e,t,r,s){return new(r||(r=Promise))(function(a,i){function l(e){try{n(s.next(e))}catch(t){i(t)}}function o(e){try{n(s.throw(e))}catch(t){i(t)}}function n(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(l,o)}n((s=s.apply(e,t||[])).next())})};const s=require("_bundle_loader")(require.resolve("./demangle-cpp"));class a{constructor(){this.selfWeight=0,this.totalWeight=0}getSelfWeight(){return this.selfWeight}getTotalWeight(){return this.totalWeight}addToTotalWeight(e){this.totalWeight+=e}addToSelfWeight(e){this.selfWeight+=e}overwriteWeightWith(e){this.selfWeight=e.selfWeight,this.totalWeight=e.totalWeight}}exports.HasWeights=a;class i extends a{constructor(e){super(),this.key=e.key,this.name=e.name,this.file=e.file,this.line=e.line,this.col=e.col}static getOrInsert(e,t){return e.getOrInsert(new i(t))}}exports.Frame=i,i.root=new i({key:"(speedscope root)",name:"(speedscope root)"});class l extends a{constructor(e,t){super(),this.frame=e,this.parent=t,this.children=[],this.frozen=!1}isRoot(){return this.frame===i.root}isFrozen(){return this.frozen}freeze(){this.frozen=!0}}exports.CallTreeNode=l;class o{constructor(r=0){this.name="",this.frames=new e.KeyedSet,this.appendOrderCalltreeRoot=new l(i.root,null),this.groupedCalltreeRoot=new l(i.root,null),this.samples=[],this.weights=[],this.valueFormatter=new t.RawValueFormatter,this.totalNonIdleWeight=null,this.totalWeight=r}getAppendOrderCalltreeRoot(){return this.appendOrderCalltreeRoot}getGroupedCalltreeRoot(){return this.groupedCalltreeRoot}shallowClone(){const e=new o(this.totalWeight);return Object.assign(e,this),e}formatValue(e){return this.valueFormatter.format(e)}setValueFormatter(e){this.valueFormatter=e}getWeightUnit(){return this.valueFormatter.unit}getName(){return this.name}setName(e){this.name=e}getTotalWeight(){return this.totalWeight}getTotalNonIdleWeight(){return null===this.totalNonIdleWeight&&(this.totalNonIdleWeight=this.groupedCalltreeRoot.children.reduce((e,t)=>e+t.getTotalWeight(),0)),this.totalNonIdleWeight}sortGroupedCallTree(){!function e(t){t.children.sort((e,t)=>-(e.getTotalWeight()-t.getTotalWeight())),t.children.forEach(e)}(this.groupedCalltreeRoot)}forEachCallGrouped(e,t){!function r(s,a){s.frame!==i.root&&e(s,a);let l=0;s.children.forEach(function(e){r(e,a+l),l+=e.getTotalWeight()}),s.frame!==i.root&&t(s,a+s.getTotalWeight())}(this.groupedCalltreeRoot,0)}forEachCall(t,r){let s=[],a=0,l=0;for(let o of this.samples){let n=null;for(n=o;n&&n.frame!=i.root&&-1===s.indexOf(n);n=n.parent);for(;s.length>0&&(0,e.lastOf)(s)!=n;){r(s.pop(),a)}const h=[];for(let e=o;e&&e.frame!=i.root&&e!=n;e=e.parent)h.push(e);h.reverse();for(let e of h)t(e,a);s=s.concat(h),a+=this.weights[l++]}for(let e=s.length-1;e>=0;e--)r(s[e],a)}forEachFrame(e){this.frames.forEach(e)}getProfileWithRecursionFlattened(){const e=new h,t=[],r=new Set;this.forEachCall(function(s,a){r.has(s.frame)?t.push(null):(r.add(s.frame),t.push(s),e.enterFrame(s.frame,a))},function(s,a){const i=t.pop();i&&(r.delete(i.frame),e.leaveFrame(i.frame,a))});const s=e.build();return s.name=this.name,s.valueFormatter=this.valueFormatter,this.forEachFrame(e=>{s.frames.getOrInsert(e).overwriteWeightWith(e)}),s}getInvertedProfileForCallersOf(e){const t=i.getOrInsert(this.frames,e),r=new n,s=[];!function e(r){if(r.frame===t)s.push(r);else for(let t of r.children)e(t)}(this.appendOrderCalltreeRoot);for(let l of s){const e=[];for(let t=l;null!=t&&t.frame!==i.root;t=t.parent)e.push(t.frame);r.appendSampleWithWeight(e,l.getTotalWeight())}const a=r.build();return a.name=this.name,a.valueFormatter=this.valueFormatter,a}getProfileForCalleesOf(e){const t=i.getOrInsert(this.frames,e),r=new n;!function e(s){if(s.frame===t)!function(e){const t=[];!function e(s){t.push(s.frame),r.appendSampleWithWeight(t,s.getSelfWeight());for(let t of s.children)e(t);t.pop()}(e)}(s);else for(let t of s.children)e(t)}(this.appendOrderCalltreeRoot);const s=r.build();return s.name=this.name,s.valueFormatter=this.valueFormatter,s}demangle(){return r(this,void 0,void 0,function*(){let e=null;for(let t of this.frames)t.name.startsWith("__Z")&&(e||(e=(yield s).demangleCpp),t.name=e(t.name))})}remapSymbols(e){for(let t of this.frames){const r=e(t);if(null==r)continue;const{name:s,file:a,line:i,col:l}=r;null!=s&&(t.name=s),null!=a&&(t.file=a),null!=i&&(t.line=i),null!=l&&(t.col=l)}}}exports.Profile=o;class n extends o{constructor(){super(...arguments),this.pendingSample=null}_appendSample(t,r,s){if(isNaN(r))throw new Error("invalid weight");let a=s?this.appendOrderCalltreeRoot:this.groupedCalltreeRoot,o=new Set;for(let n of t){const t=i.getOrInsert(this.frames,n),h=s?(0,e.lastOf)(a.children):a.children.find(e=>e.frame===t);if(h&&!h.isFrozen()&&h.frame==t)a=h;else{const e=a;a=new l(t,a),e.children.push(a)}a.addToTotalWeight(r),o.add(a.frame)}if(a.addToSelfWeight(r),s)for(let e of a.children)e.freeze();if(s){a.frame.addToSelfWeight(r);for(let e of o)e.addToTotalWeight(r);a===(0,e.lastOf)(this.samples)?this.weights[this.weights.length-1]+=r:(this.samples.push(a),this.weights.push(r))}}appendSampleWithWeight(e,t){if(0!==t){if(t<0)throw new Error("Samples must have positive weights");this._appendSample(e,t,!0),this._appendSample(e,t,!1)}}appendSampleWithTimestamp(e,t){if(this.pendingSample){if(t0?this.appendSampleWithWeight(this.pendingSample.stack,this.pendingSample.centralTimestamp-this.pendingSample.startTimestamp):(this.appendSampleWithWeight(this.pendingSample.stack,1),this.setValueFormatter(new t.RawValueFormatter))),this.totalWeight=Math.max(this.totalWeight,this.weights.reduce((e,t)=>e+t,0)),this.sortGroupedCallTree(),this}}exports.StackListProfileBuilder=n;class h extends o{constructor(){super(...arguments),this.appendOrderStack=[this.appendOrderCalltreeRoot],this.groupedOrderStack=[this.groupedCalltreeRoot],this.framesInStack=new Map,this.stack=[],this.lastValue=0}addWeightsToFrames(t){const r=t-this.lastValue;for(let e of this.framesInStack.keys())e.addToTotalWeight(r);const s=(0,e.lastOf)(this.stack);s&&s.addToSelfWeight(r)}addWeightsToNodes(t,r){const s=t-this.lastValue;for(let e of r)e.addToTotalWeight(s);const a=(0,e.lastOf)(r);a&&a.addToSelfWeight(s)}_enterFrame(t,r,s){let a=s?this.appendOrderStack:this.groupedOrderStack;this.addWeightsToNodes(r,a);let i=(0,e.lastOf)(a);if(i){if(s){const e=r-this.lastValue;if(e>0)this.samples.push(i),this.weights.push(r-this.lastValue);else if(e<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`)}const o=s?(0,e.lastOf)(i.children):i.children.find(e=>e.frame===t);let n;o&&!o.isFrozen()&&o.frame==t?n=o:(n=new l(t,i),i.children.push(n)),a.push(n)}}enterFrame(e,t){const r=i.getOrInsert(this.frames,e);this.addWeightsToFrames(t),this._enterFrame(r,t,!0),this._enterFrame(r,t,!1),this.stack.push(r);const s=this.framesInStack.get(r)||0;this.framesInStack.set(r,s+1),this.lastValue=t,this.totalWeight=Math.max(this.totalWeight,this.lastValue)}_leaveFrame(e,t,r){let s=r?this.appendOrderStack:this.groupedOrderStack;if(this.addWeightsToNodes(t,s),r){const r=this.appendOrderStack.pop();if(null==r)throw new Error(`Trying to leave ${e.key} when stack is empty`);if(null==this.lastValue)throw new Error(`Trying to leave a ${e.key} before any have been entered`);if(r.freeze(),r.frame.key!==e.key)throw new Error(`Tried to leave frame "${e.name}" while frame "${r.frame.name}" was at the top at ${t}`);const s=t-this.lastValue;if(s>0)this.samples.push(r),this.weights.push(t-this.lastValue);else if(s<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${t}`)}else this.groupedOrderStack.pop()}leaveFrame(e,t){const r=i.getOrInsert(this.frames,e);this.addWeightsToFrames(t),this._leaveFrame(r,t,!0),this._leaveFrame(r,t,!1),this.stack.pop();const s=this.framesInStack.get(r);null!=s&&(1===s?this.framesInStack.delete(r):this.framesInStack.set(r,s-1),this.lastValue=t,this.totalWeight=Math.max(this.totalWeight,this.lastValue))}build(){if(this.appendOrderStack.length>1||this.groupedOrderStack.length>1)throw new Error("Tried to complete profile construction with a non-empty stack");return this.sortGroupedCallTree(),this}}exports.CallTreeProfileBuilder=h; +},{"./utils":"ucYa","./value-formatters":"LsM4","_bundle_loader":"TUK3","./demangle-cpp":[["demangle-cpp.1768f4cc.js","bS28"],"demangle-cpp.1768f4cc.js.map","bS28"]}],"x8nU":[function(require,module,exports) { +"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileFormat=void 0,exports.FileFormat=e,function(e){let t,o;!function(e){e.EVENTED="evented",e.SAMPLED="sampled"}(t=e.ProfileType||(e.ProfileType={})),function(e){e.OPEN_FRAME="O",e.CLOSE_FRAME="C"}(o=e.EventType||(e.EventType={}))}(e||(exports.FileFormat=e={})); +},{}],"EHrm":[function(require,module,exports) { +module.exports={name:"speedscope",version:"1.15.0",description:"",repository:"jlfwong/speedscope",main:"index.js",bin:{speedscope:"./bin/cli.js"},scripts:{deploy:"./scripts/deploy.sh",prepack:"./scripts/build-release.sh",prettier:"prettier --write 'src/**/*.ts' 'src/**/*.tsx'",lint:"eslint 'src/**/*.ts' 'src/**/*.tsx'",jest:"./scripts/test-setup.sh && jest --runInBand",coverage:"npm run jest -- --coverage",typecheck:"tsc --noEmit",test:"./scripts/ci.sh",serve:"parcel assets/index.html --open --no-autoinstall"},files:["bin/cli.js","dist/release/**","!*.map"],browserslist:["last 2 Chrome versions","last 2 Firefox versions"],author:"",license:"MIT",devDependencies:{"@types/jest":"22.2.3","@types/jszip":"3.1.4","@types/node":"14.0.1","@types/pako":"1.0.0","@typescript-eslint/eslint-plugin":"4.19.0","@typescript-eslint/parser":"4.19.0",acorn:"7.2.0",aphrodite:"2.1.0",eslint:"6.0.0","eslint-plugin-prettier":"2.6.0","eslint-plugin-react-hooks":"4.0.2",jest:"24.3.0",jsverify:"0.8.3",jszip:"3.1.5",pako:"1.0.6","parcel-bundler":"1.12.4",preact:"10.4.1",prettier:"2.0.4",protobufjs:"6.8.8","source-map":"0.6.1","ts-jest":"24.3.0",typescript:"4.2.3","typescript-json-schema":"0.42.0","uglify-es":"3.2.2","uint8array-json-parser":"0.0.2"},jest:{transform:{"^.+\\.tsx?$":"ts-jest"},setupFilesAfterEnv:["./src/jest-setup.js"],testRegex:"\\.test\\.tsx?$",collectCoverageFrom:["**/*.{ts,tsx}","!**/*.d.{ts,tsx}"],moduleFileExtensions:["ts","tsx","js","jsx","json"]},dependencies:{open:"7.2.0"}}; +},{}],"Xzb6":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.exportProfileGroup=r,exports.importSpeedscopeProfiles=s,exports.saveToFile=l;var e=require("./profile"),t=require("./value-formatters"),n=require("./file-format-spec");function r(e){const t=[],n=new Map;function r(e){let r=n.get(e);if(null==r){const o={name:e.name};null!=e.file&&(o.file=e.file),null!=e.line&&(o.line=e.line),null!=e.col&&(o.col=e.col),r=t.length,n.set(e,r),t.push(o)}return r}const a={exporter:`speedscope@${require("../../package.json").version}`,name:e.name,activeProfileIndex:e.indexToView,$schema:"https://www.speedscope.app/file-format-schema.json",shared:{frames:t},profiles:[]};for(let s of e.profiles)a.profiles.push(o(s,r));return a}function o(e,t){const r={type:n.FileFormat.ProfileType.EVENTED,name:e.getName(),unit:e.getWeightUnit(),startValue:0,endValue:e.getTotalWeight(),events:[]};return e.forEachCall((e,o)=>{r.events.push({type:n.FileFormat.EventType.OPEN_FRAME,frame:t(e.frame),at:o})},(e,o)=>{r.events.push({type:n.FileFormat.EventType.CLOSE_FRAME,frame:t(e.frame),at:o})}),r}function a(r,o){function a(e){const{name:n,unit:o}=r;switch(o){case"nanoseconds":case"microseconds":case"milliseconds":case"seconds":e.setValueFormatter(new t.TimeFormatter(o));break;case"bytes":e.setValueFormatter(new t.ByteFormatter);break;case"none":e.setValueFormatter(new t.RawValueFormatter)}e.setName(n)}switch(r.type){case n.FileFormat.ProfileType.EVENTED:return function(t){const{startValue:r,endValue:s,events:l}=t,i=new e.CallTreeProfileBuilder(s-r);a(i);const c=o.map((e,t)=>Object.assign({key:t},e));for(let e of l)switch(e.type){case n.FileFormat.EventType.OPEN_FRAME:i.enterFrame(c[e.frame],e.at-r);break;case n.FileFormat.EventType.CLOSE_FRAME:i.leaveFrame(c[e.frame],e.at-r)}return i.build()}(r);case n.FileFormat.ProfileType.SAMPLED:return function(t){const{startValue:n,endValue:r,samples:s,weights:l}=t,i=new e.StackListProfileBuilder(r-n);a(i);const c=o.map((e,t)=>Object.assign({key:t},e));if(s.length!==l.length)throw new Error(`Expected samples.length (${s.length}) to equal weights.length (${l.length})`);for(let e=0;ec[e]),n)}return i.build()}(r)}}function s(e){return{name:e.name||e.profiles[0].name||"profile",indexToView:e.activeProfileIndex||0,profiles:e.profiles.map(t=>a(t,e.shared.frames))}}function l(e){const t=r(e),n=new Blob([JSON.stringify(t)],{type:"text/json"}),o=`${(t.name?t.name.split(".")[0]:"profile").replace(/\W+/g,"_")}.speedscope.json`;console.log("Saving",o);const a=document.createElement("a");a.download=o,a.href=window.URL.createObjectURL(n),a.dataset.downloadurl=["text/json",a.download,a.href].join(":"),document.body.appendChild(a),a.click(),document.body.removeChild(a)} +},{"./profile":"YG8z","./value-formatters":"LsM4","./file-format-spec":"x8nU","../../package.json":"EHrm"}],"C6HJ":[function(require,module,exports) { +"use strict";function r(r,e){return d(r,e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.fuzzyMatchStrings=r;const e="a".charCodeAt(0),t="z".charCodeAt(0),n="A".charCodeAt(0),o="Z".charCodeAt(0),c="0".charCodeAt(0),a="9".charCodeAt(0);var h;function u(r){const u=r.charCodeAt(0);return e<=u&&u<=t?h.charLower:n<=u&&u<=o?h.charUpper:c<=u&&u<=a?h.charNumber:h.charNonWord}function l(r,o){if(r===o)return!0;const c=o.charCodeAt(0);return e<=c&&c<=t&&r.charCodeAt(0)===c-e+n}function d(r,e){if(0==e.length)return{matchedRanges:[],score:0};let t=0,n=-1,o=-1,c=r.length,a=e.length;for(let h=0;h=n;h--){if(l(r[h],e[t])&&--t<0)return A(r,e,n=h,o)}throw new Error("Implementation error. This must be a bug in fzfFuzzyMatchV1")}!function(r){r[r.charNonWord=0]="charNonWord",r[r.charLower=1]="charLower",r[r.charUpper=2]="charUpper",r[r.charNumber=3]="charNumber"}(h||(h={}));const f=16,i=-3,s=-1,p=f/2,N=f/2,b=p+s,g=-(i+s),m=2;function w(r,e){return r===h.charNonWord&&e!==h.charNonWord?p:r===h.charLower&&e==h.charUpper||r!==h.charNumber&&e==h.charNumber?b:e===h.charNonWord?N:0}function A(r,e,t,n){let o=0,c=0,a=!1,d=0,N=0,b=new Array(e.length),A=h.charNonWord;t>0&&(A=u(r[t-1]));for(let h=t;h{p(),l(h)},[p,l,h]),I=(0,o.useCallback)(e=>{t(h)},[t,h]),P=i.getName(),w=1+Math.floor(Math.log10(d)),y=(0,r.css)(b.highlighted),S=(0,o.useMemo)(()=>{return s(P,g,y)},[P,g,y]);return(0,e.h)("div",{ref:u,onMouseUp:x,onMouseEnter:I,title:P,className:(0,r.css)(b.profileRow,m%2==0&&b.profileRowEven,a&&b.profileRowSelected,c&&b.profileRowHovered)},(0,e.h)("span",{className:(0,r.css)(b.profileIndex,a&&b.profileIndexSelected),style:{width:w+"em"}},h+1,":")," ",S)}function c(e){e.stopPropagation()}function d(e,o){const r=[];for(let l=0;l-e.score),r}function u({profiles:l,closeProfileSelect:t,indexToView:i,visible:s,setProfileIndexToView:u}){const p=f((0,n.useTheme)()),[h,g]=(0,o.useState)(""),m=(0,o.useCallback)(e=>{const o=e.target.value;g(o)},[g]),b=(0,o.useCallback)(e=>{e&&(s?e.select():e.blur())},[s]),x=(0,o.useMemo)(()=>d(l,h),[l,h]),[I,P]=(0,o.useState)(0),w=(0,o.useRef)(null);(0,o.useEffect)(()=>{s&&(P(null),null!==w.current&&w.current.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"}))},[s]);const y=(0,o.useCallback)(e=>{e.stopPropagation();let o=null;switch(e.key){case"Enter":null!=I&&(t(),u(I));break;case"Escape":t();break;case"ArrowDown":if(e.preventDefault(),o=0,null!=I){const e=x.findIndex(e=>e.indexInProfileGroup===I);-1!==e&&(o=e+1)}break;case"ArrowUp":if(e.preventDefault(),o=x.length-1,null!=I){const e=x.findIndex(e=>e.indexInProfileGroup===I);-1!==e&&(o=e-1)}}if(null!=o&&o>=0&&o{x.length>0&&(P(x[0].indexInProfileGroup),v(!0))},[P,x]);const C=(0,o.useCallback)(e=>{S&&e&&(e.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"}),v(!1))},[S,v]),k=(0,o.useCallback)(e=>{w.current=e,C(e)},[w,C]);return(0,e.h)("div",{className:(0,r.css)(p.profileSelectOuter)},(0,e.h)("div",{className:(0,r.css)(p.caret)}),(0,e.h)("div",{className:(0,r.css)(p.profileSelectBox)},(0,e.h)("div",{className:(0,r.css)(p.filterInputContainer)},(0,e.h)("input",{type:"text",className:(0,r.css)(p.filterInput),ref:b,placeholder:"Filter...",value:h,onInput:m,onKeyDown:y,onKeyUp:c,onKeyPress:c})),(0,e.h)("div",{className:(0,r.css)(p.profileSelectScrolling)},x.map(({profile:o,matchedRanges:r,indexInProfileGroup:n},s)=>{let c=void 0;const d=n===i,p=n===I;return d&&p?c=k:d?c=w:p&&(c=C),(0,e.h)(a,{setHoveredProfileIndex:P,indexInProfileGroup:n,indexInFilteredListView:s,hovered:n==I,selected:n===i,profile:o,profileCount:l.length,nodeRef:c,matchedRanges:r,setProfileIndexToView:u,closeProfileSelect:t})}),0===x.length?(0,e.h)("div",{className:(0,r.css)(p.profileRow)},'No results match filter "',h,'"'):null)))}const p=10,f=(0,n.withTheme)(e=>r.StyleSheet.create({filterInputContainer:{display:"flex",flexDirection:"column",padding:5,alignItems:"stretch"},filterInput:{color:e.altFgPrimaryColor,background:e.altBgSecondaryColor,borderRadius:5,padding:5,":focus":{border:"none",outline:"none"},"::selection":{color:e.altFgPrimaryColor,background:e.selectionPrimaryColor}},caret:{width:0,height:0,borderLeft:"5px solid transparent",borderRight:"5px solid transparent",borderBottom:"5px solid black"},highlighted:{background:e.selectionSecondaryColor},padding:{height:10,background:e.altBgPrimaryColor},profileRow:{height:l.Sizes.FRAME_HEIGHT-2,border:"1px solid transparent",textAlign:"left",paddingLeft:10,paddingRight:10,background:e.altBgPrimaryColor,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis",cursor:"pointer"},profileRowHovered:{border:`1px solid ${e.selectionPrimaryColor}`},profileRowSelected:{background:e.selectionPrimaryColor},profileRowEven:{background:e.altBgSecondaryColor},profileSelectScrolling:{maxHeight:`min(calc(100vh - ${l.Sizes.TOOLBAR_HEIGHT-20}px), ${20*l.Sizes.FRAME_HEIGHT}px)`,overflow:"auto","::-webkit-scrollbar":{background:e.altBgPrimaryColor},"::-webkit-scrollbar-thumb":{background:e.altFgSecondaryColor,borderRadius:20,border:`3px solid ${e.altBgPrimaryColor}`,":hover":{background:e.altBgPrimaryColor}}},profileSelectBox:{width:"100%",paddingBottom:10,background:e.altBgPrimaryColor,color:e.altFgPrimaryColor},profileSelectOuter:{width:"100%",maxWidth:480,margin:"0 auto",position:"relative",zIndex:l.ZIndex.PROFILE_SELECT,alignItems:"center",display:"flex",flexDirection:"column"},profileIndex:{textAlign:"right",display:"inline-block",color:e.altFgSecondaryColor},profileIndexSelected:{color:e.altFgPrimaryColor}})); +},{"preact":"aSor","preact/hooks":"MwGB","aphrodite":"CxN7","./style":"hvr4","../lib/fuzzy-find":"C6HJ","../lib/utils":"ucYa","./themes/theme":"gzKG"}],"BPHY":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Toolbar=T;var e=require("preact"),o=require("preact/hooks"),t=require("aphrodite"),i=require("./style"),s=require("./profile-select"),l=require("../lib/utils"),a=require("./themes/theme"),r=require("../lib/view-mode"),n=require("../app-state"),c=require("../app-state/color-scheme"),h=require("../lib/atom");function d(e,t){return(0,o.useCallback)(()=>e(t),[e,t])}function m(o){const i=g((0,a.useTheme)()),s=d(n.viewModeAtom.set,r.ViewMode.CHRONO_FLAME_CHART),l=d(n.viewModeAtom.set,r.ViewMode.LEFT_HEAVY_FLAME_GRAPH),c=d(n.viewModeAtom.set,r.ViewMode.SANDWICH_VIEW);return o.activeProfileState?(0,e.h)("div",{className:(0,t.css)(i.toolbarLeft)},(0,e.h)("div",{className:(0,t.css)(i.toolbarTab,o.viewMode===r.ViewMode.CHRONO_FLAME_CHART&&i.toolbarTabActive),onClick:s},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"🕰"),"Time Order"),(0,e.h)("div",{className:(0,t.css)(i.toolbarTab,o.viewMode===r.ViewMode.LEFT_HEAVY_FLAME_GRAPH&&i.toolbarTabActive),onClick:l},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"⬅️"),"Left Heavy"),(0,e.h)("div",{className:(0,t.css)(i.toolbarTab,o.viewMode===r.ViewMode.SANDWICH_VIEW&&i.toolbarTabActive),onClick:c},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"🥪"),"Sandwich")):null}const b=(()=>{let e=null;return o=>{let t=(null==o?void 0:o.profiles.map(e=>e.profile))||null;return(null===e||null!=t&&!(0,l.objectsHaveShallowEquality)(e,t))&&(e=t),e}})();function u(i){const l=g((0,a.useTheme)()),{activeProfileState:r,profileGroup:n}=i,c=b(n),[h,d]=(0,o.useState)(!1),m=(0,o.useCallback)(()=>{d(!0)},[d]),u=(0,o.useCallback)(()=>{d(!1)},[d]);return(0,o.useEffect)(()=>{const e=e=>{"t"===e.key&&(e.preventDefault(),d(!0))};return window.addEventListener("keypress",e),()=>{window.removeEventListener("keypress",e)}},[d]),(0,o.useEffect)(()=>{const e=e=>{"t"===e.key&&(e.preventDefault(),d(!0))};return window.addEventListener("keypress",e),()=>{window.removeEventListener("keypress",e)}},[d]),r&&n&&c?1===n.profiles.length?(0,e.h)(e.Fragment,null,r.profile.getName()):(0,e.h)("div",{className:(0,t.css)(l.toolbarCenter),onMouseLeave:u},(0,e.h)("span",{onMouseOver:m},r.profile.getName()," ",(0,e.h)("span",{className:(0,t.css)(l.toolbarProfileIndex)},"(",r.index+1,"/",n.profiles.length,")")),(0,e.h)("div",{style:{display:h?"block":"none"}},(0,e.h)(s.ProfileSelect,{setProfileIndexToView:i.setProfileIndexToView,indexToView:n.indexToView,profiles:c,closeProfileSelect:u,visible:h}))):(0,e.h)(e.Fragment,null,"🔬speedscope")}function p(o){const i=g((0,a.useTheme)()),s=(0,h.useAtom)(c.colorSchemeAtom),l=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab),onClick:o.saveFile},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"⤴️"),"Export"),r=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab),onClick:o.browseForFile},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"⤵️"),"Import"),n=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab),onClick:c.colorSchemeAtom.cycleToNextColorScheme},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"🎨"),(0,e.h)("span",{className:(0,t.css)(i.toolbarTabColorSchemeToggle)},(0,a.colorSchemeToString)(s))),d=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab)},(0,e.h)("a",{href:"https://github.com/jlfwong/speedscope#usage",className:(0,t.css)(i.noLinkStyle),target:"_blank"},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"❓"),"Help"));return(0,e.h)("div",{className:(0,t.css)(i.toolbarRight)},o.activeProfileState&&l,r,n,d)}function T(o){const i=g((0,a.useTheme)());return(0,e.h)("div",{className:(0,t.css)(i.toolbar)},(0,e.h)(m,Object.assign({},o)),(0,e.h)(u,Object.assign({},o)),(0,e.h)(p,Object.assign({},o)))}const g=(0,a.withTheme)(e=>t.StyleSheet.create({toolbar:{height:i.Sizes.TOOLBAR_HEIGHT,flexShrink:0,background:e.altBgPrimaryColor,color:e.altFgPrimaryColor,textAlign:"center",fontFamily:i.FontFamily.MONOSPACE,fontSize:i.FontSize.TITLE,lineHeight:`${i.Sizes.TOOLBAR_TAB_HEIGHT}px`,userSelect:"none"},toolbarLeft:{position:"absolute",height:i.Sizes.TOOLBAR_HEIGHT,overflow:"hidden",top:0,left:0,marginRight:2,textAlign:"left"},toolbarCenter:{paddingTop:1,height:i.Sizes.TOOLBAR_HEIGHT},toolbarRight:{height:i.Sizes.TOOLBAR_HEIGHT,overflow:"hidden",position:"absolute",top:0,right:0,marginRight:2,textAlign:"right"},toolbarProfileIndex:{color:e.altFgSecondaryColor},toolbarTab:{background:e.altBgSecondaryColor,marginTop:i.Sizes.SEPARATOR_HEIGHT,height:i.Sizes.TOOLBAR_TAB_HEIGHT,lineHeight:`${i.Sizes.TOOLBAR_TAB_HEIGHT}px`,paddingLeft:2,paddingRight:8,display:"inline-block",marginLeft:2,transition:`all ${i.Duration.HOVER_CHANGE} ease-in`,":hover":{background:e.selectionSecondaryColor}},toolbarTabActive:{background:e.selectionPrimaryColor,":hover":{background:e.selectionPrimaryColor}},toolbarTabColorSchemeToggle:{display:"inline-block",textAlign:"center",minWidth:"50px"},emoji:{display:"inline-block",verticalAlign:"middle",paddingTop:"0px",marginRight:"0.3em"},noLinkStyle:{textDecoration:"none",color:"inherit"}})); +},{"preact":"aSor","preact/hooks":"MwGB","aphrodite":"CxN7","./style":"hvr4","./profile-select":"tOar","../lib/utils":"ucYa","./themes/theme":"gzKG","../lib/view-mode":"dpTI","../app-state":"LDQe","../app-state/color-scheme":"KQrJ","../lib/atom":"QkVE"}],"bv0g":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importJavaScriptSourceMapSymbolRemapper=r;var e=require("./utils"),n=function(e,n,o,l){return new(o||(o=Promise))(function(r,i){function t(e){try{a(l.next(e))}catch(n){i(n)}}function u(e){try{a(l.throw(e))}catch(n){i(n)}}function a(e){var n;e.done?r(e.value):(n=e.value,n instanceof o?n:new o(function(e){e(n)})).then(t,u)}a((l=l.apply(e,n||[])).next())})};const o=require("_bundle_loader")(require.resolve("source-map")),l=!1;function r(r,i){return n(this,void 0,void 0,function*(){const n=yield o;let t=null,u=null;try{u=JSON.parse(r),t=new n.SourceMapConsumer(u)}catch(s){return null}const a=[];t.eachMapping(function(e){a.push(Object.assign(Object.assign({},e),{generatedColumn:e.generatedColumn+1,originalColumn:e.originalColumn+1}))},{},n.SourceMapConsumer.GENERATED_ORDER);const c=i.replace(/\.[^/]*$/,"");return n=>{var o;let r=!1;if((null==u?void 0:u.file)&&(null==u?void 0:u.file)===n.file?r=!0:("/"+(null===(o=n.file)||void 0===o?void 0:o.replace(/\.[^/]*$/,""))).endsWith("/"+c)&&(r=!0),!r)return null;if(null==n.line||null==n.col)return null;let i=(0,e.findIndexBisect)(a,e=>e.generatedLine>n.line||!(e.generatedLine=n.col);if(-1===i)i=a.length-1;else{if(0===i)return null;i--}const s=a[i],m={};if(null!=s.name)m.name=s.name;else if(null!=s.source){const e=null==t?void 0:t.sourceContentFor(s.source,!0);if(e){const n=e.split("\n")[s.originalLine-1];if(n){const e=/\w+/.exec(n.substr(s.originalColumn-1));e&&(m.name=e[0])}}}switch(m.name){case"constructor":m.name=n.name+" constructor";break;case"function":m.name=n.name;break;case"const":case"export":m.name=n.name}return m.name&&n.name.includes(m.name)&&(m.name=n.name),null!=s.source&&(m.file=s.source,m.line=s.originalLine,m.col=s.originalColumn),l&&(console.groupCollapsed(`Remapping "${n.name}" -> "${m.name}"`),console.log("before",Object.assign({},n)),console.log("item @ index",s),console.log("item @ index + 1",a[i+1]),console.log("after",m),console.groupEnd()),m}})} +},{"_bundle_loader":"TUK3","source-map":[["source-map.438fa06b.js","aRf0"],"source-map.438fa06b.js.map","aRf0"],"./utils":"ucYa"}],"ThNa":[function(require,module,exports) { +module.exports="perf-vertx-stacks-01-collapsed-all.2681da68.txt"; +},{}],"wCGh":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Application=exports.GLCanvas=void 0;var e=require("preact"),t=require("aphrodite"),o=require("./style"),i=require("../lib/emscripten"),r=require("./sandwich-view"),s=require("../lib/file-format"),n=require("./flamechart-view-container"),a=require("./toolbar"),l=require("../lib/js-source-map"),c=require("./themes/theme"),p=require("../lib/view-mode"),d=require("../app-state"),h=require("../lib/preact-helpers"),m=function(e,t,o,i){return new(o||(o=Promise))(function(r,s){function n(e){try{l(i.next(e))}catch(t){s(t)}}function a(e){try{l(i.throw(e))}catch(t){s(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(n,a)}l((i=i.apply(e,t||[])).next())})};const u=require("_bundle_loader")(require.resolve("../import"));function f(e,t){return m(this,void 0,void 0,function*(){return(yield u).importProfileGroupFromText(e,t)})}function v(e,t){return m(this,void 0,void 0,function*(){return(yield u).importProfileGroupFromBase64(e,t)})}function g(e,t){return m(this,void 0,void 0,function*(){return(yield u).importProfilesFromArrayBuffer(e,t)})}function w(e){return m(this,void 0,void 0,function*(){return(yield u).importProfilesFromFile(e)})}function y(e){return m(this,void 0,void 0,function*(){return(yield u).importFromFileSystemDirectoryEntry(e)})}u.then(()=>{}),require("_bundle_loader")(require.resolve("../lib/demangle-cpp")).then(()=>{}),require("_bundle_loader")(require.resolve("source-map")).then(()=>{});const b=require("../../sample/profiles/stackcollapse/perf-vertx-stacks-01-collapsed-all.txt");class x extends h.StatelessComponent{constructor(){super(...arguments),this.canvas=null,this.ref=(e=>{e instanceof HTMLCanvasElement?this.canvas=e:this.canvas=null,this.props.setGLCanvas(this.canvas)}),this.container=null,this.containerRef=(e=>{e instanceof HTMLElement?this.container=e:this.container=null}),this.maybeResize=(()=>{if(!this.container)return;if(!this.props.canvasContext)return;let{width:e,height:t}=this.container.getBoundingClientRect();const o=e,i=t,r=e*window.devicePixelRatio,s=t*window.devicePixelRatio;this.props.canvasContext.gl.resize(r,s,o,i)}),this.onWindowResize=(()=>{this.props.canvasContext&&this.props.canvasContext.requestFrame()})}componentWillReceiveProps(e){this.props.canvasContext!==e.canvasContext&&(this.props.canvasContext&&this.props.canvasContext.removeBeforeFrameHandler(this.maybeResize),e.canvasContext&&(e.canvasContext.addBeforeFrameHandler(this.maybeResize),e.canvasContext.requestFrame()))}componentDidMount(){window.addEventListener("resize",this.onWindowResize)}componentWillUnmount(){this.props.canvasContext&&this.props.canvasContext.removeBeforeFrameHandler(this.maybeResize),window.removeEventListener("resize",this.onWindowResize)}render(){const o=P(this.props.theme);return(0,e.h)("div",{ref:this.containerRef,className:(0,t.css)(o.glCanvasView)},(0,e.h)("canvas",{ref:this.ref,width:1,height:1}))}}exports.GLCanvas=x;class C extends h.StatelessComponent{constructor(){super(...arguments),this.loadExample=(()=>{this.loadProfile(()=>m(this,void 0,void 0,function*(){const e=yield fetch(b).then(e=>e.text());return yield f("perf-vertx-stacks-01-collapsed-all.txt",e)}))}),this.onDrop=(e=>{if(this.props.setDragActive(!1),e.preventDefault(),!e.dataTransfer)return;const t=e.dataTransfer.items[0];if("webkitGetAsEntry"in t){const e=t.webkitGetAsEntry();if(e.isDirectory&&e.name.endsWith(".trace"))return console.log("Importing as Instruments.app .trace file"),void this.loadProfile(()=>m(this,void 0,void 0,function*(){return yield y(e)}))}let o=e.dataTransfer.files.item(0);o&&this.loadFromFile(o)}),this.onDragOver=(e=>{this.props.setDragActive(!0),e.preventDefault()}),this.onDragLeave=(e=>{this.props.setDragActive(!1),e.preventDefault()}),this.onWindowKeyPress=(e=>m(this,void 0,void 0,function*(){if("1"===e.key)this.props.setViewMode(p.ViewMode.CHRONO_FLAME_CHART);else if("2"===e.key)this.props.setViewMode(p.ViewMode.LEFT_HEAVY_FLAME_GRAPH);else if("3"===e.key)this.props.setViewMode(p.ViewMode.SANDWICH_VIEW);else if("r"===e.key){const{flattenRecursion:e}=this.props;this.props.setFlattenRecursion(!e)}else if("n"===e.key){const{activeProfileState:e}=this.props;e&&this.props.setProfileIndexToView(e.index+1)}else if("p"===e.key){const{activeProfileState:e}=this.props;e&&this.props.setProfileIndexToView(e.index-1)}})),this.saveFile=(()=>{if(this.props.profileGroup){const{name:e,indexToView:t,profiles:o}=this.props.profileGroup,i={name:e,indexToView:t,profiles:o.map(e=>e.profile)};(0,s.saveToFile)(i)}}),this.browseForFile=(()=>{const e=document.createElement("input");e.type="file",e.addEventListener("change",this.onFileSelect),e.click()}),this.onWindowKeyDown=(e=>m(this,void 0,void 0,function*(){"s"===e.key&&(e.ctrlKey||e.metaKey)?(e.preventDefault(),this.saveFile()):"o"===e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.browseForFile())})),this.onDocumentPaste=(e=>{if(null!=document.activeElement&&"INPUT"===document.activeElement.nodeName)return;e.preventDefault(),e.stopPropagation();const t=e.clipboardData;if(!t)return;const o=t.getData("text");this.loadProfile(()=>m(this,void 0,void 0,function*(){return yield f("From Clipboard",o)}))}),this.onFileSelect=(e=>{const t=e.target.files.item(0);t&&this.loadFromFile(t)})}loadProfile(e){return m(this,void 0,void 0,function*(){if(this.props.setLoading(!0),yield new Promise(e=>setTimeout(e,0)),!this.props.glCanvas)return;console.time("import");let t=null;try{t=yield e()}catch(o){return console.log("Failed to load format",o),void this.props.setError(!0)}if(null==t)return alert("Unrecognized format! See documentation about supported formats."),void this.props.setLoading(!1);if(0===t.profiles.length)return alert("Successfully imported profile, but it's empty!"),void this.props.setLoading(!1);this.props.hashParams.title&&(t=Object.assign(Object.assign({},t),{name:this.props.hashParams.title})),document.title=`${t.name} - speedscope`,this.props.hashParams.viewMode&&this.props.setViewMode(this.props.hashParams.viewMode);for(let e of t.profiles)yield e.demangle();for(let e of t.profiles){const t=this.props.hashParams.title||e.getName();e.setName(t)}console.timeEnd("import"),this.props.setProfileGroup(t),this.props.setLoading(!1)})}getStyle(){return P(this.props.theme)}loadFromFile(e){this.loadProfile(()=>m(this,void 0,void 0,function*(){const t=yield w(e);if(t){for(let o of t.profiles)o.getName()||o.setName(e.name);return t}if(this.props.profileGroup&&this.props.activeProfileState){const t=new FileReader,o=new Promise(e=>{t.addEventListener("loadend",()=>{if("string"!=typeof t.result)throw new Error("Expected reader.result to be a string");e(t.result)})});t.readAsText(e);const r=yield o;let s=null;const n=(0,i.importEmscriptenSymbolMap)(r);n&&(console.log("Importing as emscripten symbol map"),s=n);const a=yield(0,l.importJavaScriptSourceMapSymbolRemapper)(r,e.name);if(!s&&a&&(console.log("Importing as JavaScript source map"),s=a),null!=s)return{name:this.props.profileGroup.name||"profile",indexToView:this.props.profileGroup.indexToView,profiles:this.props.profileGroup.profiles.map(e=>{const t=e.profile.shallowClone();return t.remapSymbols(s),t})}}return null}))}componentDidMount(){window.addEventListener("keydown",this.onWindowKeyDown),window.addEventListener("keypress",this.onWindowKeyPress),document.addEventListener("paste",this.onDocumentPaste),this.maybeLoadHashParamProfile()}componentWillUnmount(){window.removeEventListener("keydown",this.onWindowKeyDown),window.removeEventListener("keypress",this.onWindowKeyPress),document.removeEventListener("paste",this.onDocumentPaste)}maybeLoadHashParamProfile(){return m(this,void 0,void 0,function*(){const{profileURL:e}=this.props.hashParams;if(e){if(!d.canUseXHR)return void alert(`Cannot load a profile URL when loading from "${window.location.protocol}" URL protocol`);this.loadProfile(()=>m(this,void 0,void 0,function*(){const t=yield fetch(e);let o=new URL(e,window.location.href).pathname;return o.includes("/")&&(o=o.slice(o.lastIndexOf("/")+1)),yield g(o,yield t.arrayBuffer())}))}else if(this.props.hashParams.localProfilePath){window.speedscope={loadFileFromBase64:(e,t)=>{this.loadProfile(()=>v(e,t))}};const e=document.createElement("script");e.src=`file:///${this.props.hashParams.localProfilePath}`,document.head.appendChild(e)}})}renderLanding(){const o=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(o.landingContainer)},(0,e.h)("div",{className:(0,t.css)(o.landingMessage)},(0,e.h)("p",{className:(0,t.css)(o.landingP)},"👋 Hi there! Welcome to 🔬speedscope, an interactive"," ",(0,e.h)("a",{className:(0,t.css)(o.link),href:"http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html"},"flamegraph")," ","visualizer. Use it to help you make your software faster."),d.canUseXHR?(0,e.h)("p",{className:(0,t.css)(o.landingP)},"Drag and drop a profile file onto this window to get started, click the big blue button below to browse for a profile to explore, or"," ",(0,e.h)("a",{tabIndex:0,className:(0,t.css)(o.link),onClick:this.loadExample},"click here")," ","to load an example profile."):(0,e.h)("p",{className:(0,t.css)(o.landingP)},"Drag and drop a profile file onto this window to get started, or click the big blue button below to browse for a profile to explore."),(0,e.h)("div",{className:(0,t.css)(o.browseButtonContainer)},(0,e.h)("input",{type:"file",name:"file",id:"file",onChange:this.onFileSelect,className:(0,t.css)(o.hide)}),(0,e.h)("label",{for:"file",className:(0,t.css)(o.browseButton),tabIndex:0},"Browse")),(0,e.h)("p",{className:(0,t.css)(o.landingP)},"See the"," ",(0,e.h)("a",{className:(0,t.css)(o.link),href:"https://github.com/jlfwong/speedscope#usage",target:"_blank"},"documentation")," ","for information about supported file formats, keyboard shortcuts, and how to navigate around the profile."),(0,e.h)("p",{className:(0,t.css)(o.landingP)},"speedscope is open source. Please"," ",(0,e.h)("a",{className:(0,t.css)(o.link),target:"_blank",href:"https://github.com/jlfwong/speedscope/issues"},"report any issues on GitHub"),".")))}renderError(){const o=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(o.error)},(0,e.h)("div",null,"😿 Something went wrong."),(0,e.h)("div",null,"Check the JS console for more details."))}renderLoadingBar(){const o=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(o.loading)})}renderContent(){const{viewMode:t,activeProfileState:o,error:i,loading:s,glCanvas:a}=this.props;if(i)return this.renderError();if(s)return this.renderLoadingBar();if(!o||!a)return this.renderLanding();switch(t){case p.ViewMode.CHRONO_FLAME_CHART:return(0,e.h)(n.ChronoFlamechartView,{activeProfileState:o,glCanvas:a});case p.ViewMode.LEFT_HEAVY_FLAME_GRAPH:return(0,e.h)(n.LeftHeavyFlamechartView,{activeProfileState:o,glCanvas:a});case p.ViewMode.SANDWICH_VIEW:return(0,e.h)(r.SandwichViewContainer,{activeProfileState:o,glCanvas:a})}}render(){const o=this.getStyle();return(0,e.h)("div",{onDrop:this.onDrop,onDragOver:this.onDragOver,onDragLeave:this.onDragLeave,className:(0,t.css)(o.root,this.props.dragActive&&o.dragTargetRoot)},(0,e.h)(x,{setGLCanvas:this.props.setGLCanvas,canvasContext:this.props.canvasContext,theme:this.props.theme}),(0,e.h)(a.Toolbar,Object.assign({saveFile:this.saveFile,browseForFile:this.browseForFile},this.props)),(0,e.h)("div",{className:(0,t.css)(o.contentContainer)},this.renderContent()),this.props.dragActive&&(0,e.h)("div",{className:(0,t.css)(o.dragTarget)}))}}exports.Application=C;const P=(0,c.withTheme)(e=>t.StyleSheet.create({glCanvasView:{position:"absolute",width:"100vw",height:"100vh",zIndex:-1,pointerEvents:"none"},error:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"},loading:{height:3,marginBottom:-3,background:e.selectionPrimaryColor,transformOrigin:"0% 50%",animationName:[{from:{transform:"scaleX(0)"},to:{transform:"scaleX(1)"}}],animationTimingFunction:"cubic-bezier(0, 1, 0, 1)",animationDuration:"30s"},root:{width:"100vw",height:"100vh",overflow:"hidden",display:"flex",flexDirection:"column",position:"relative",fontFamily:o.FontFamily.MONOSPACE,lineHeight:"20px",color:e.fgPrimaryColor},dragTargetRoot:{cursor:"copy"},dragTarget:{boxSizing:"border-box",position:"absolute",top:0,left:0,width:"100%",height:"100%",border:`5px dashed ${e.selectionPrimaryColor}`,pointerEvents:"none"},contentContainer:{position:"relative",display:"flex",overflow:"hidden",flexDirection:"column",flex:1},landingContainer:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},landingMessage:{maxWidth:600},landingP:{marginBottom:16},hide:{display:"none"},browseButtonContainer:{display:"flex",alignItems:"center",justifyContent:"center"},browseButton:{marginBottom:16,height:72,flex:1,maxWidth:256,textAlign:"center",fontSize:o.FontSize.BIG_BUTTON,lineHeight:"72px",background:e.selectionPrimaryColor,color:e.altFgPrimaryColor,transition:`all ${o.Duration.HOVER_CHANGE} ease-in`,":hover":{background:e.selectionSecondaryColor}},link:{color:e.selectionPrimaryColor,cursor:"pointer",textDecoration:"none",transition:`all ${o.Duration.HOVER_CHANGE} ease-in`,":hover":{color:e.selectionSecondaryColor}}})); +},{"preact":"aSor","aphrodite":"CxN7","./style":"hvr4","../lib/emscripten":"FbpF","./sandwich-view":"L8J2","../lib/file-format":"Xzb6","./flamechart-view-container":"PJJu","./toolbar":"BPHY","../lib/js-source-map":"bv0g","./themes/theme":"gzKG","../lib/view-mode":"dpTI","../app-state":"LDQe","../lib/preact-helpers":"Hete","_bundle_loader":"TUK3","../import":[["import.a03bf119.js","uRa7"],"import.a03bf119.js.map","uRa7"],"../lib/demangle-cpp":[["demangle-cpp.1768f4cc.js","bS28"],"demangle-cpp.1768f4cc.js.map","bS28"],"source-map":[["source-map.438fa06b.js","aRf0"],"source-map.438fa06b.js.map","aRf0"],"../../sample/profiles/stackcollapse/perf-vertx-stacks-01-collapsed-all.txt":"ThNa"}],"A6uO":[function(require,module,exports) { +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApplicationContainer=void 0;var e=require("preact"),t=require("../app-state/getters"),o=require("preact/compat"),r=require("../app-state/active-profile-state"),a=require("./themes/theme"),i=require("../app-state"),s=require("../lib/atom"),n=require("./search-view"),m=require("./application");const u=(0,o.memo)(()=>{const u=(0,s.useAtom)(i.glCanvasAtom),l=(0,a.useTheme)(),p=(0,o.useMemo)(()=>u?(0,t.getCanvasContext)({theme:l,canvas:u}):null,[l,u]);return(0,e.h)(n.ProfileSearchContextProvider,null,(0,e.h)(m.Application,{activeProfileState:(0,r.useActiveProfileState)(),canvasContext:p,setGLCanvas:i.glCanvasAtom.set,setLoading:i.loadingAtom.set,setError:i.errorAtom.set,setProfileGroup:i.profileGroupAtom.setProfileGroup,setDragActive:i.dragActiveAtom.set,setViewMode:i.viewModeAtom.set,setFlattenRecursion:i.flattenRecursionAtom.set,setProfileIndexToView:i.profileGroupAtom.setProfileIndexToView,profileGroup:(0,s.useAtom)(i.profileGroupAtom),theme:l,flattenRecursion:(0,s.useAtom)(i.flattenRecursionAtom),viewMode:(0,s.useAtom)(i.viewModeAtom),hashParams:(0,s.useAtom)(i.hashParamsAtom),glCanvas:u,dragActive:(0,s.useAtom)(i.dragActiveAtom),loading:(0,s.useAtom)(i.loadingAtom),error:(0,s.useAtom)(i.errorAtom)}))});exports.ApplicationContainer=u; +},{"preact":"aSor","../app-state/getters":"zEXv","preact/compat":"AQ6k","../app-state/active-profile-state":"MY42","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE","./search-view":"t9CM","./application":"wCGh"}],"K5F6":[function(require,module,exports) { +"use strict";var e=require("preact"),o=require("./views/application-container"),d=require("./views/themes/theme");console.log(`speedscope v${require("../package.json").version}`),module.hot&&(module.hot.dispose(()=>{(0,e.render)((0,e.h)("div",null),document.body,document.body.lastElementChild||void 0)}),module.hot.accept()),(0,e.render)((0,e.h)(d.ThemeProvider,null,(0,e.h)(o.ApplicationContainer,null)),document.body,document.body.lastElementChild||void 0); +},{"preact":"aSor","./views/application-container":"A6uO","./views/themes/theme":"gzKG","../package.json":"EHrm"}],"Yi9z":[function(require,module,exports) { +module.exports=function(n){return new Promise(function(e,o){var r=document.createElement("script");r.async=!0,r.type="text/javascript",r.charset="utf-8",r.src=n,r.onerror=function(n){r.onerror=r.onload=null,o(n)},r.onload=function(){r.onerror=r.onload=null,e()},document.getElementsByTagName("head")[0].appendChild(r)})}; +},{}],0:[function(require,module,exports) { +var b=require("TUK3");b.register("js",require("Yi9z")); +},{}]},{},[0,"K5F6"], null) +//# sourceMappingURL=speedscope.eee21de6.js.map \ No newline at end of file diff --git a/deps/speedscope/speedscope.eee21de6.js.map b/deps/speedscope/speedscope.eee21de6.js.map new file mode 100644 index 00000000..45174365 --- /dev/null +++ b/deps/speedscope/speedscope.eee21de6.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../src/options.js","../src/constants.js","../src/create-element.js","../src/component.js","../src/render.js","../src/create-context.js","../src/util.js","../src/diff/children.js","../src/diff/props.js","../src/diff/index.js","../src/clone-element.js","../src/diff/catch-error.js","../src/lib/utils.ts","../src/lib/lru-cache.ts","../src/lib/math.ts","../node_modules/process/browser.js","../src/gl/graphics.ts","../src/gl/utils.ts","../src/gl/rectangle-batch-renderer.ts","../src/lib/color.ts","../src/gl/row-atlas.ts","../src/gl/texture-renderer.ts","../src/gl/overlay-rectangle-renderer.ts","../src/gl/flamechart-color-pass-renderer.ts","../src/gl/canvas-context.ts","../src/app-state/getters.ts","../src/index.js","../src/PureComponent.js","../src/memo.js","../src/forwardRef.js","../src/Children.js","../src/suspense.js","../src/suspense-list.js","../src/portals.js","../src/events.js","../src/lib/atom.ts","../src/lib/view-mode.ts","../src/lib/hash-params.ts","../src/app-state/profile-group.ts","../src/app-state/index.ts","../src/app-state/active-profile-state.ts","../src/app-state/color-scheme.ts","../src/views/themes/dark-theme.ts","../src/views/themes/light-theme.ts","../src/views/themes/theme.tsx","../node_modules/css-in-js-utils/lib/isPrefixedValue.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/calc.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/crossFade.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/cursor.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/filter.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/flex.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/flexboxIE.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/flexboxOld.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/gradient.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/imageSet.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/position.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/sizing.js","../node_modules/hyphenate-style-name/index.js","../node_modules/css-in-js-utils/lib/hyphenateProperty.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/utils/capitalizeString.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/plugins/transition.js","../node_modules/string-hash/index.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/utils/prefixProperty.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/utils/prefixValue.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/utils/addNewValuesOnly.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/utils/isObject.js","../node_modules/aphrodite/node_modules/inline-style-prefixer/static/createPrefixer.js","../node_modules/asap/browser-raw.js","../node_modules/asap/browser-asap.js","../node_modules/aphrodite/es/index.js","../src/views/style.ts","../src/lib/profile-search.ts","../src/views/search-view.tsx","../src/lib/emscripten.ts","../src/views/color-chit.tsx","../src/views/scrollable-list-view.tsx","../src/views/profile-table-view.tsx","../src/lib/flamechart.ts","../src/gl/flamechart-renderer.ts","../src/views/flamechart-style.ts","../src/lib/text-utils.ts","../src/views/flamechart-minimap-view.tsx","../src/views/flamechart-detail-view.tsx","../src/lib/canvas-2d-batch-renderers.ts","../src/views/flamechart-pan-zoom-view.tsx","../src/views/hovertip.tsx","../src/views/flamechart-search-view.tsx","../src/lib/preact-helpers.tsx","../src/views/flamechart-view.tsx","../src/views/flamechart-view-container.tsx","../src/views/flamechart-wrapper.tsx","../src/views/inverted-caller-flamegraph-view.tsx","../src/views/callee-flamegraph-view.tsx","../src/views/sandwich-search-view.tsx","../src/views/sandwich-view.tsx","../src/lib/value-formatters.ts","../node_modules/parcel-bundler/src/builtins/bundle-url.js","../node_modules/parcel-bundler/src/builtins/bundle-loader.js","../src/lib/profile.ts","../src/lib/file-format-spec.ts","../package.json","../src/lib/file-format.ts","../src/lib/fuzzy-find.ts","../src/views/profile-select.tsx","../src/views/toolbar.tsx","../src/lib/js-source-map.ts","../src/views/application.tsx","../src/views/application-container.tsx","../src/speedscope.tsx","../node_modules/parcel-bundler/src/builtins/loaders/browser/js-loader.js"],"names":["options","isValidElement","rerenderQueue","rerenderCount","defer","prevDebounce","IS_HYDRATE","i","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","assign","obj","props","removeNode","node","parentNode","removeChild","createElement","type","children","normalizedProps","arguments","length","push","defaultProps","createVNode","key","ref","original","vnode","_children","_parent","_depth","_dom","_nextDom","_component","constructor","_original","createRef","Fragment","Component","context","getDomSibling","childIndex","indexOf","sibling","updateParentDomPointers","child","base","enqueueRender","c","_dirty","debounceRendering","process","queue","sort","a","b","_vnode","some","component","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","sibDom","firstChildDom","refs","oldChildren","oldChildrenLength","toChildArray","childVNode","undefined","nextDom","outer","appendChild","nextSibling","insertBefore","value","unmount","applyRef","callback","flattened","Array","isArray","diffProps","dom","newProps","oldProps","hydrate","setProperty","setStyle","style","test","name","oldValue","s","useCapture","nameLower","cssText","replace","toLowerCase","slice","addEventListener","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","setAttribute","e","event","newVNode","tmp","isNew","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","prototype","render","doRender","sub","state","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","_force","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","cb","call","oldHtml","newHtml","nodeType","localName","document","createTextNode","createElementNS","is","data","childNodes","dangerouslySetInnerHTML","attributes","__html","innerHTML","checked","current","parentVNode","skipRemove","r","componentWillUnmount","this","replaceNode","_root","cloneElement","createContext","defaultValue","ctx","Consumer","Provider","subs","_this","_props","old","splice","_contextRef","error","hasCaught","getDerivedStateFromError","setState","componentDidCatch","update","forceUpdate","Promise","then","bind","resolve","setTimeout","cachedSetTimeout","cachedClearTimeout","module","exports","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","runClearTimeout","marker","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","timeout","len","run","Item","array","noop","nextTick","args","apply","title","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","currentIndex","currentComponent","prevRaf","currentHook","afterPaintEffects","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","index","_hook","hooks","__hooks","_list","_pendingEffects","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","_value","action","nextValue","useEffect","_skipEffects","argsChanged","_args","useLayoutEffect","useRef","initialValue","useMemo","useImperativeHandle","createHandle","factory","_factory","useCallback","useContext","_context","useDebugValue","formatter","useErrorBoundary","errState","err","flushAfterPaintEffects","forEach","invokeCleanup","invokeEffect","hook","_cleanup","result","oldArgs","newArgs","arg","f","requestAnimationFrame","raf","done","cancelAnimationFrame","window","filter","shallowDiffers","PureComponent","isPureReactComponent","memo","comparer","shouldUpdate","nextProps","updateRef","Memoed","isReactComponent","displayName","_forwarded","oldDiffHook","forwardRef","fn","Forwarded","clone","mapFn","reduce","acc","Children","map","count","only","toArray","oldCatchError","detachedClone","Suspense","_pendingSuspensionCount","_suspenders","_detachOnNextRender","suspended","_suspended","lazy","loader","prom","Lazy","default","SuspenseList","_next","_map","_childDidSuspend","promise","suspendingComponent","resolved","onResolved","onSuspensionComplete","_suspendedComponentWillUnmount","pop","fallback","list","delete","revealOrder","size","delegated","get","unsuspend","wrappedUnsuspend","Map","reverse","set","ContextProvider","Portal","container","wrap","_container","_temp","_unmount","_wrap","_hasMounted","createPortal","CAMEL_PROPS","REACT_ELEMENT_TYPE","Symbol","for","parent","firstChild","preactRender","preactHydrate","oldEventHook","setSafeDescriptor","proto","Object","defineProperty","configurable","v","persist","stoppedPropagating","defaultPrevented","origStopPropagation","stopPropagation","origPreventDefault","preventDefault","isPropagationStopped","isDefaultPrevented","nativeEvent","classNameDescriptor","class","oldVNodeHook","$$typeof","className","enumerable","shouldSanitize","attrs","multiple","selected","ondoubleclick","ondblclick","onbeforeinput","onchange","normalized","oninput","_patchedLifecycles","createFactory","element","preactCloneElement","unmountComponentAtNode","findDOMNode","unstable_batchedUpdates","w","m","ms","wm","wms","wmms","staticPrefixData","plugins","calc","crossFade","cursor","flex","flexboxIE","flexboxOld","gradient","imageSet","position","sizing","transition","prefixMap","_typeof","iterator","_createClass","defineProperties","target","descriptor","writable","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","MAP_EXISTS","OrderedElements","elements","keyOrder","shouldReorder","hasOwnProperty","nested","_nested","keys","has","addStyleType","styleType","UPPERCASE_RE","UPPERCASE_RE_TO_KEBAB","match","String","kebabifyStyleName","string","isUnitlessNumber","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridColumn","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","prefixKey","prefix","charAt","toUpperCase","substring","prefixes","prop","stringifyValue","stringifyAndImportantifyValue","importantify","hashString","toString","hashObject","object","JSON","stringify","_toConsumableArray","arr","arr2","from","prefixAll","defaultSelectorHandlers","pseudoSelectors","selector","baseSelector","generateSubtreeStyles","mediaQueries","generated","join","generateCSS","styleTypes","selectorHandlers","stringHandlers","useImportant","merged","plainDeclarations","generatedStyles","val","handler","newSelector","console","warn","generatedRuleset","generateCSSRuleset","unshift","runStringHandlers","declarations","stringHandlerKeys","transformRule","transformValue","arrayToObjectKeysReducer","originalElements","create","prefixedElements","elementNames","originalStyle","originalIndex","rules","_i","_typeof$1","_toConsumableArray$1","styleTag","injectStyleTag","cssRules","querySelector","head","getElementsByTagName","sheet","styleSheet","insertRule","numRules","rule","innerText","fontFamily","injectStyleOnce","src","animationName","finalVal","valVal","valKey","injectGeneratedCSSOnce","alreadyInjected","injectionBuffer","isBuffering","generatedCSS","_injectionBuffer","flushToStyleTag","definitions","reset","getBufferedStyles","startBuffering","flushToArray","ret","flushToString","getRenderedClassNames","addRenderedClassNames","classNames","processStyleDefinitions","styleDefinitions","classNameBits","definitionBits","_name","_definition","_len","injectAndGetClassName","unminifiedHashFn","str","initialHashFn","hashFn","StyleSheet","sheetDefinition","mappedSheetDefinition","stringVal","rehydrate","renderedClassNames","StyleSheetServer","renderStatic","renderFunc","html","css","content","StyleSheetTestUtils","makeExports","extend","extensions","extensionSelectorHandlers","extension","selectorHandler","minify","shouldMinify","_key","Aphrodite","StyleSheet$1","StyleSheetServer$1","StyleSheetTestUtils$1","bundleURL","getBundleURLCached","getBundleURL","matches","stack","getBaseURL","url","require","loadBundlesLazy","bundles","id","code","LazyPromise","reject","loadBundles","all","loadBundle","bundleLoaders","registerBundleLoader","load","register","bundle","lastIndexOf","bundleLoader","catch","executor","onSuccess","onError","description","repository","main","bin","speedscope","scripts","deploy","prepack","prettier","lint","jest","coverage","typecheck","serve","files","browserslist","author","license","devDependencies","acorn","aphrodite","eslint","jsverify","jszip","pako","preact","protobufjs","typescript","transform","setupFilesAfterEnv","testRegex","collectCoverageFrom","moduleFileExtensions","dependencies","open","script","async","charset","onerror","onload"],"mappings":"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","file":"speedscope.eee21de6.js","sourceRoot":"../../assets","sourcesContent":["import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tnewVNode._children = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","export function lastOf(ts: T[]): T | null {\n return ts[ts.length - 1] || null\n}\n\nexport function sortBy(ts: T[], key: (t: T) => number | string): void {\n function comparator(a: T, b: T) {\n const keyA = key(a)\n const keyB = key(b)\n return keyA < keyB ? -1 : keyA > keyB ? 1 : 0\n }\n ts.sort(comparator)\n}\n\nexport function getOrInsert(map: Map, k: K, fallback: (k: K) => V): V {\n if (!map.has(k)) map.set(k, fallback(k))\n return map.get(k)!\n}\n\nexport function getOrElse(map: Map, k: K, fallback: (k: K) => V): V {\n if (!map.has(k)) return fallback(k)\n return map.get(k)!\n}\n\nexport function getOrThrow(map: Map, k: K): V {\n if (!map.has(k)) {\n throw new Error(`Expected key ${k}`)\n }\n return map.get(k)!\n}\n\n// Intended to be used to de-duplicate objects based on a key property. This\n// allows value comparisons to be done efficiently and for the returned objects\n// to be used intuitively in Map objects.\n//\n// Example usage:\n//\n// export class Frame {\n// private constructor(readonly file: string, readonly name: string) {}\n// get key() { return `${this.file}:${this.name}` }\n// static getOrInsert(set: KeyedSet, file: string, name: string) {\n// return set.getOrInsert(set, new Frame(file, name))\n// }\n// }\n//\nexport interface HasKey {\n readonly key: string | number\n}\nexport class KeyedSet implements Iterable {\n private map = new Map()\n\n getOrInsert(t: T): T {\n const key = t.key\n const existing = this.map.get(key)\n if (existing) return existing\n this.map.set(key, t)\n return t\n }\n forEach(fn: (t: T) => void) {\n this.map.forEach(fn)\n }\n [Symbol.iterator]() {\n return this.map.values()\n }\n}\n\nexport function* itMap(it: Iterable, f: (t: T) => U): Iterable {\n for (let t of it) {\n yield f(t)\n }\n}\n\nexport function itForEach(it: Iterable, f: (t: T) => void): void {\n for (let t of it) {\n f(t)\n }\n}\n\nexport function itReduce(it: Iterable, f: (a: U, b: T) => U, init: U): U {\n let accum: U = init\n for (let t of it) {\n accum = f(accum, t)\n }\n return accum\n}\n\nexport function zeroPad(s: string, width: number) {\n return new Array(Math.max(width - s.length, 0) + 1).join('0') + s\n}\n\nexport function formatPercent(percent: number) {\n let formattedPercent = `${percent.toFixed(0)}%`\n if (percent === 100) formattedPercent = '100%'\n else if (percent > 99) formattedPercent = '>99%'\n else if (percent < 0.01) formattedPercent = '<0.01%'\n else if (percent < 1) formattedPercent = `${percent.toFixed(2)}%`\n else if (percent < 10) formattedPercent = `${percent.toFixed(1)}%`\n return formattedPercent\n}\n\nexport function fract(x: number) {\n return x - Math.floor(x)\n}\n\nexport function triangle(x: number) {\n return 2.0 * Math.abs(fract(x) - 0.5) - 1.0\n}\n\nexport function findValueBisect(\n lo: number,\n hi: number,\n f: (val: number) => number,\n target: number,\n targetRangeSize = 1,\n): [number, number] {\n console.assert(!isNaN(targetRangeSize) && !isNaN(target))\n while (true) {\n if (hi - lo <= targetRangeSize) return [lo, hi]\n const mid = (hi + lo) / 2\n const val = f(mid)\n if (val < target) lo = mid\n else hi = mid\n }\n}\n\n// Similar to Array.prototype.findIndex, except uses a binary search.\n//\n// This assumes that the condition transitions exactly once from false to true\n// in the list, e.g. the following is a valid input:\n//\n// ls = [a, b, c, d]\n// ls.map(f) = [false, false, true, true]\n//\n// The following is an invalid input:\n//\n// ls = [a, b, c, d]\n// ls.map(f) = [false, true, false, true]\nexport function findIndexBisect(ls: T[], f: (val: T) => boolean): number {\n if (ls.length === 0) return -1\n\n let lo = 0\n let hi = ls.length - 1\n\n while (hi !== lo) {\n const mid = Math.floor((lo + hi) / 2)\n\n if (f(ls[mid])) {\n // The desired index is <= mid\n hi = mid\n } else {\n // The desired index is > mid\n lo = mid + 1\n }\n }\n\n return f(ls[hi]) ? hi : -1\n}\n\nexport function noop(...args: any[]) {}\n\nexport function objectsHaveShallowEquality(a: T, b: T): boolean {\n for (let key in a) {\n if (a[key] !== b[key]) return false\n }\n for (let key in b) {\n if (a[key] !== b[key]) return false\n }\n return true\n}\n\nexport function memoizeByShallowEquality(cb: (t: T) => U): (t: T) => U {\n let last: {args: T; result: U} | null = null\n return (args: T) => {\n let result: U\n if (last == null) {\n result = cb(args)\n last = {args, result}\n return result\n } else if (objectsHaveShallowEquality(last.args, args)) {\n return last.result\n } else {\n last.args = args\n last.result = cb(args)\n return last.result\n }\n }\n}\n\nexport function memoizeByReference(cb: (t: T) => U): (t: T) => U {\n let last: {args: T; result: U} | null = null\n return (args: T) => {\n let result: U\n if (last == null) {\n result = cb(args)\n last = {args, result}\n return result\n } else if (last.args === args) {\n return last.result\n } else {\n last.args = args\n last.result = cb(args)\n return last.result\n }\n }\n}\n\nexport function lazyStatic(cb: () => T): () => T {\n let last: {result: T} | null = null\n return () => {\n if (last == null) {\n last = {result: cb()}\n }\n return last.result\n }\n}\n\nconst base64lookupTable = lazyStatic(\n (): Map => {\n const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n const ret = new Map()\n for (let i = 0; i < alphabet.length; i++) {\n ret.set(alphabet.charAt(i), i)\n }\n ret.set('=', -1)\n return ret\n },\n)\n\n// NOTE: There are probably simpler solutions to this problem, but I have this written already, so\n// until we run into problems with this, let's just use this.\n//\n// See: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem#The_Unicode_Problem\nexport function decodeBase64(encoded: string): Uint8Array {\n // Reference: https://www.rfc-editor.org/rfc/rfc4648.txt\n\n const lookupTable = base64lookupTable()\n\n // 3 byte groups are represented as sequneces of 4 characters.\n //\n // \"The encoding process represents 24-bit groups of input bits as output\n // strings of 4 encoded characters.\"\n //\n // \"Special processing is performed if fewer than 24 bits are available\n // at the end of the data being encoded. A full encoding quantum is\n // always completed at the end of a quantity. When fewer than 24 input\n // bits are available in an input group bits with value zero are added\n // (on the right) to form an integral number of 6-bit groups.\"\n\n if (encoded.length % 4 !== 0) {\n throw new Error(\n `Invalid length for base64 encoded string. Expected length % 4 = 0, got length = ${encoded.length}`,\n )\n }\n\n const quartetCount = encoded.length / 4\n let byteCount: number\n\n // Special processing is performed if fewer than 24 bits are available\n // at the end of the data being encoded. A full encoding quantum is\n // always completed at the end of a quantity. When fewer than 24 input\n // bits are available in an input group, bits with value zero are added\n // (on the right) to form an integral number of 6-bit groups. Padding\n // at the end of the data is performed using the '=' character. Since\n // all base 64 input is an integral number of octets, only the following\n // cases can arise:\n //\n // (1) The final quantum of encoding input is an integral multiple of 24\n // bits; here, the final unit of encoded output will be an integral\n // multiple of 4 characters with no \"=\" padding.\n //\n // (2) The final quantum of encoding input is exactly 8 bits; here, the\n // final unit of encoded output will be two characters followed by\n // two \"=\" padding characters.\n //\n // (3) The final quantum of encoding input is exactly 16 bits; here, the\n // final unit of encoded output will be three characters followed by\n // one \"=\" padding character.\n if (encoded.length >= 4) {\n if (encoded.charAt(encoded.length - 1) === '=') {\n if (encoded.charAt(encoded.length - 2) === '=') {\n // Case (2)\n byteCount = quartetCount * 3 - 2\n } else {\n // Case (3)\n byteCount = quartetCount * 3 - 1\n }\n } else {\n // Case (1)\n byteCount = quartetCount * 3\n }\n } else {\n // Case (1)\n byteCount = quartetCount * 3\n }\n\n const bytes = new Uint8Array(byteCount)\n let offset = 0\n\n for (let i = 0; i < quartetCount; i++) {\n const enc1 = encoded.charAt(i * 4 + 0)\n const enc2 = encoded.charAt(i * 4 + 1)\n const enc3 = encoded.charAt(i * 4 + 2)\n const enc4 = encoded.charAt(i * 4 + 3)\n\n const sextet1 = lookupTable.get(enc1)\n const sextet2 = lookupTable.get(enc2)\n const sextet3 = lookupTable.get(enc3)\n const sextet4 = lookupTable.get(enc4)\n\n if (sextet1 == null || sextet2 == null || sextet3 == null || sextet4 == null) {\n throw new Error(\n `Invalid quartet at indices ${i * 4} .. ${i * 4 + 3}: ${encoded.substring(\n i * 4,\n i * 4 + 3,\n )}`,\n )\n }\n\n bytes[offset++] = (sextet1 << 2) | (sextet2 >> 4)\n if (enc3 !== '=') {\n bytes[offset++] = ((sextet2 & 15) << 4) | (sextet3 >> 2)\n }\n if (enc4 !== '=') {\n bytes[offset++] = ((sextet3 & 7) << 6) | sextet4\n }\n }\n\n if (offset !== byteCount) {\n throw new Error(`Expected to decode ${byteCount} bytes, but only decoded ${offset})`)\n }\n\n return bytes\n}\n","class ListNode {\n prev: ListNode | null = null\n next: ListNode | null = null\n constructor(readonly data: V) {}\n}\n\nexport class List {\n private head: ListNode | null = null\n private tail: ListNode | null = null\n private size: number = 0\n constructor() {}\n\n getHead(): ListNode | null {\n return this.head\n }\n getTail(): ListNode | null {\n return this.tail\n }\n getSize(): number {\n return this.size\n }\n\n append(node: ListNode): void {\n if (!this.tail) {\n this.head = this.tail = node\n } else {\n this.tail.next = node\n node.prev = this.tail\n this.tail = node\n }\n this.size++\n }\n\n prepend(node: ListNode): ListNode {\n if (!this.head) {\n this.head = this.tail = node\n } else {\n this.head.prev = node\n node.next = this.head\n this.head = node\n }\n this.size++\n return node\n }\n\n pop(): ListNode | null {\n if (!this.tail) {\n return null\n } else {\n const ret = this.tail\n if (ret.prev) {\n this.tail = ret.prev\n this.tail.next = null\n } else {\n this.head = this.tail = null\n }\n this.size--\n ret.prev = null\n return ret\n }\n }\n\n dequeue(): ListNode | null {\n if (!this.head) {\n return null\n } else {\n const ret = this.head\n if (ret.next) {\n this.head = ret.next\n this.head.prev = null\n } else {\n this.head = this.tail = null\n }\n this.size--\n ret.next = null\n return ret\n }\n }\n\n remove(node: ListNode): void {\n if (node.prev == null) {\n this.dequeue()\n } else if (node.next == null) {\n this.pop()\n } else {\n // Neither first nor last, should be safe to just link\n // neighbours.\n node.next.prev = node.prev\n node.prev.next = node.next\n node.next = null\n node.prev = null\n this.size--\n }\n }\n}\n\ninterface LRUCacheNode {\n value: V\n listNode: ListNode\n}\n\nexport class LRUCache {\n private list = new List()\n private map = new Map>()\n\n constructor(private capacity: number) {}\n\n has(key: K): boolean {\n return this.map.has(key)\n }\n\n get(key: K): V | null {\n const node = this.map.get(key)\n if (!node) {\n return null\n }\n // Bring node to the front of the list\n this.list.remove(node.listNode)\n this.list.prepend(node.listNode)\n\n return node ? node.value : null\n }\n\n getSize() {\n return this.list.getSize()\n }\n\n getCapacity() {\n return this.capacity\n }\n\n insert(key: K, value: V) {\n const node = this.map.get(key)\n if (node) {\n this.list.remove(node.listNode)\n }\n // Evict old entries when out of capacity\n while (this.list.getSize() >= this.capacity) {\n this.map.delete(this.list.pop()!.data)\n }\n const listNode = this.list.prepend(new ListNode(key))\n this.map.set(key, {value, listNode})\n }\n\n getOrInsert(key: K, f: (key: K) => V): V {\n let value = this.get(key)\n if (value == null) {\n value = f(key)\n this.insert(key, value)\n }\n return value\n }\n\n removeLRU(): [K, V] | null {\n const oldest = this.list.pop()\n if (!oldest) return null\n const key = oldest.data\n const value = this.map.get(key)!.value\n this.map.delete(key)\n return [key, value]\n }\n\n clear() {\n this.list = new List()\n this.map = new Map>()\n }\n}\n","export function clamp(x: number, minVal: number, maxVal: number) {\n if (x < minVal) return minVal\n if (x > maxVal) return maxVal\n return x\n}\n\nexport class Vec2 {\n constructor(readonly x: number, readonly y: number) {}\n withX(x: number) {\n return new Vec2(x, this.y)\n }\n withY(y: number) {\n return new Vec2(this.x, y)\n }\n\n plus(other: Vec2) {\n return new Vec2(this.x + other.x, this.y + other.y)\n }\n minus(other: Vec2) {\n return new Vec2(this.x - other.x, this.y - other.y)\n }\n times(scalar: number) {\n return new Vec2(this.x * scalar, this.y * scalar)\n }\n timesPointwise(other: Vec2) {\n return new Vec2(this.x * other.x, this.y * other.y)\n }\n dividedByPointwise(other: Vec2) {\n return new Vec2(this.x / other.x, this.y / other.y)\n }\n dot(other: Vec2) {\n return this.x * other.x + this.y * other.y\n }\n equals(other: Vec2) {\n return this.x === other.x && this.y === other.y\n }\n approxEquals(other: Vec2, epsilon = 1e-9) {\n return Math.abs(this.x - other.x) < epsilon && Math.abs(this.y - other.y) < epsilon\n }\n\n length2() {\n return this.dot(this)\n }\n length() {\n return Math.sqrt(this.length2())\n }\n abs() {\n return new Vec2(Math.abs(this.x), Math.abs(this.y))\n }\n\n static min(a: Vec2, b: Vec2) {\n return new Vec2(Math.min(a.x, b.x), Math.min(a.y, b.y))\n }\n\n static max(a: Vec2, b: Vec2) {\n return new Vec2(Math.max(a.x, b.x), Math.max(a.y, b.y))\n }\n\n static clamp(v: Vec2, min: Vec2, max: Vec2) {\n return new Vec2(clamp(v.x, min.x, max.x), clamp(v.y, min.y, max.y))\n }\n\n static zero = new Vec2(0, 0)\n static unit = new Vec2(1, 1)\n\n flatten(): [number, number] {\n return [this.x, this.y]\n }\n}\n\nexport class AffineTransform {\n constructor(\n readonly m00 = 1,\n readonly m01 = 0,\n readonly m02 = 0,\n readonly m10 = 0,\n readonly m11 = 1,\n readonly m12 = 0,\n ) {}\n\n withScale(s: Vec2) {\n let {m00, m01, m02, m10, m11, m12} = this\n m00 = s.x\n m11 = s.y\n return new AffineTransform(m00, m01, m02, m10, m11, m12)\n }\n static withScale(s: Vec2) {\n return new AffineTransform().withScale(s)\n }\n scaledBy(s: Vec2) {\n return AffineTransform.withScale(s).times(this)\n }\n getScale() {\n return new Vec2(this.m00, this.m11)\n }\n\n withTranslation(t: Vec2) {\n let {m00, m01, m02, m10, m11, m12} = this\n m02 = t.x\n m12 = t.y\n return new AffineTransform(m00, m01, m02, m10, m11, m12)\n }\n static withTranslation(t: Vec2) {\n return new AffineTransform().withTranslation(t)\n }\n getTranslation() {\n return new Vec2(this.m02, this.m12)\n }\n translatedBy(t: Vec2) {\n return AffineTransform.withTranslation(t).times(this)\n }\n\n static betweenRects(from: Rect, to: Rect) {\n return AffineTransform.withTranslation(from.origin.times(-1))\n .scaledBy(new Vec2(to.size.x / from.size.x, to.size.y / from.size.y))\n .translatedBy(to.origin)\n }\n\n times(other: AffineTransform) {\n const m00 = this.m00 * other.m00 + this.m01 * other.m10\n const m01 = this.m00 * other.m01 + this.m01 * other.m11\n const m02 = this.m00 * other.m02 + this.m01 * other.m12 + this.m02\n\n const m10 = this.m10 * other.m00 + this.m11 * other.m10\n const m11 = this.m10 * other.m01 + this.m11 * other.m11\n const m12 = this.m10 * other.m02 + this.m11 * other.m12 + this.m12\n return new AffineTransform(m00, m01, m02, m10, m11, m12)\n }\n\n equals(other: AffineTransform) {\n return (\n this.m00 == other.m00 &&\n this.m01 == other.m01 &&\n this.m02 == other.m02 &&\n this.m10 == other.m10 &&\n this.m11 == other.m11 &&\n this.m12 == other.m12\n )\n }\n\n approxEquals(other: AffineTransform, epsilon = 1e-9) {\n return (\n Math.abs(this.m00 - other.m00) < epsilon &&\n Math.abs(this.m01 - other.m01) < epsilon &&\n Math.abs(this.m02 - other.m02) < epsilon &&\n Math.abs(this.m10 - other.m10) < epsilon &&\n Math.abs(this.m11 - other.m11) < epsilon &&\n Math.abs(this.m12 - other.m12) < epsilon\n )\n }\n\n timesScalar(s: number) {\n const {m00, m01, m02, m10, m11, m12} = this\n return new AffineTransform(s * m00, s * m01, s * m02, s * m10, s * m11, s * m12)\n }\n\n det() {\n const {m00, m01, m02, m10, m11, m12} = this\n const m20 = 0\n const m21 = 0\n const m22 = 1\n\n return (\n m00 * (m11 * m22 - m12 * m21) - m01 * (m10 * m22 - m12 * m20) + m02 * (m10 * m21 - m11 * m20)\n )\n }\n\n adj() {\n const {m00, m01, m02, m10, m11, m12} = this\n const m20 = 0\n const m21 = 0\n const m22 = 1\n\n // Adjugate matrix (a) is the transpose of the\n // cofactor matrix (c).\n //\n // 00 01 02\n // 10 11 12\n // 20 21 22\n\n const a00 = /* c00 = */ +(m11 * m22 - m12 * m21)\n const a01 = /* c10 = */ -(m01 * m22 - m02 * m21)\n const a02 = /* c20 = */ +(m01 * m12 - m02 * m11)\n const a10 = /* c01 = */ -(m10 * m22 - m12 * m20)\n const a11 = /* c11 = */ +(m00 * m22 - m02 * m20)\n const a12 = /* c21 = */ -(m00 * m12 - m02 * m10)\n\n return new AffineTransform(a00, a01, a02, a10, a11, a12)\n }\n\n inverted(): AffineTransform | null {\n const det = this.det()\n if (det === 0) return null\n const adj = this.adj()\n return adj.timesScalar(1 / det)\n }\n\n transformVector(v: Vec2) {\n return new Vec2(v.x * this.m00 + v.y * this.m01, v.x * this.m10 + v.y * this.m11)\n }\n\n inverseTransformVector(v: Vec2): Vec2 | null {\n const inv = this.inverted()\n if (!inv) return null\n return inv.transformVector(v)\n }\n\n transformPosition(v: Vec2) {\n return new Vec2(\n v.x * this.m00 + v.y * this.m01 + this.m02,\n v.x * this.m10 + v.y * this.m11 + this.m12,\n )\n }\n\n inverseTransformPosition(v: Vec2): Vec2 | null {\n const inv = this.inverted()\n if (!inv) return null\n return inv.transformPosition(v)\n }\n\n transformRect(r: Rect) {\n const size = this.transformVector(r.size)\n const origin = this.transformPosition(r.origin)\n\n if (size.x < 0 && size.y < 0) {\n return new Rect(origin.plus(size), size.abs())\n } else if (size.x < 0) {\n return new Rect(origin.withX(origin.x + size.x), size.abs())\n } else if (size.y < 0) {\n return new Rect(origin.withY(origin.y + size.y), size.abs())\n }\n\n return new Rect(origin, size)\n }\n\n inverseTransformRect(r: Rect): Rect | null {\n const inv = this.inverted()\n if (!inv) return null\n return inv.transformRect(r)\n }\n\n flatten(): [number, number, number, number, number, number, number, number, number] {\n // Flatten into GLSL format\n // prettier-ignore\n return [\n this.m00, this.m10, 0,\n this.m01, this.m11, 0,\n this.m02, this.m12, 1,\n ]\n }\n}\n\nexport class Rect {\n constructor(readonly origin: Vec2, readonly size: Vec2) {}\n\n isEmpty() {\n return this.width() == 0 || this.height() == 0\n }\n\n width() {\n return this.size.x\n }\n height() {\n return this.size.y\n }\n\n left() {\n return this.origin.x\n }\n right() {\n return this.left() + this.width()\n }\n top() {\n return this.origin.y\n }\n bottom() {\n return this.top() + this.height()\n }\n\n topLeft() {\n return this.origin\n }\n topRight() {\n return this.origin.plus(new Vec2(this.width(), 0))\n }\n\n bottomRight() {\n return this.origin.plus(this.size)\n }\n bottomLeft() {\n return this.origin.plus(new Vec2(0, this.height()))\n }\n\n withOrigin(origin: Vec2) {\n return new Rect(origin, this.size)\n }\n withSize(size: Vec2) {\n return new Rect(this.origin, size)\n }\n\n closestPointTo(p: Vec2) {\n return new Vec2(clamp(p.x, this.left(), this.right()), clamp(p.y, this.top(), this.bottom()))\n }\n\n distanceFrom(p: Vec2) {\n return p.minus(this.closestPointTo(p)).length()\n }\n\n contains(p: Vec2) {\n return this.distanceFrom(p) === 0\n }\n\n hasIntersectionWith(other: Rect) {\n const top = Math.max(this.top(), other.top())\n const bottom = Math.max(top, Math.min(this.bottom(), other.bottom()))\n if (bottom - top === 0) return false\n\n const left = Math.max(this.left(), other.left())\n const right = Math.max(left, Math.min(this.right(), other.right()))\n if (right - left === 0) return false\n return true\n }\n\n intersectWith(other: Rect): Rect {\n const topLeft = Vec2.max(this.topLeft(), other.topLeft())\n const bottomRight = Vec2.max(topLeft, Vec2.min(this.bottomRight(), other.bottomRight()))\n\n return new Rect(topLeft, bottomRight.minus(topLeft))\n }\n\n equals(other: Rect) {\n return this.origin.equals(other.origin) && this.size.equals(other.size)\n }\n\n approxEquals(other: Rect) {\n return this.origin.approxEquals(other.origin) && this.size.approxEquals(other.size)\n }\n\n area() {\n return this.size.x * this.size.y\n }\n\n static empty = new Rect(Vec2.zero, Vec2.zero)\n static unit = new Rect(Vec2.zero, Vec2.unit)\n static NDC = new Rect(new Vec2(-1, -1), new Vec2(2, 2))\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// This is a port of the GPU APIs from https://github.com/evanw/sky from Skew to\n// TypeScript.\n//\n// The MIT License (MIT)\n// Original work Copyright (c) 2016 Evan Wallace\n// Modified work Copyright (c) 2018 Jamie Wong\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n// NOTE: This file intentionally has no dependencies.\n\n// Dependencies & polyfills for import from skew\nconst RELEASE =\n typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production'\n\nfunction assert(condition: boolean) {\n if (!RELEASE) {\n if (!condition) throw new Error('Assertion failed.')\n }\n}\n\nfunction appendOne(ts: T[], t: T): void {\n if (ts.indexOf(t) === -1) ts.push(t)\n}\n\nfunction removeOne(ts: T[], t: T): void {\n const index = ts.indexOf(t)\n if (index !== -1) ts.splice(index, 1)\n}\n\nfunction TEXTURE_N(gl: WebGLRenderingContext, index: number) {\n assert(index >= 0 && index <= 31)\n return (gl.TEXTURE0 + index) as GLenum\n}\n\nexport namespace Graphics {\n export class Rect {\n constructor(\n public x: number = 0,\n public y: number = 0,\n public width: number = 0,\n public height: number = 0,\n ) {}\n\n set(x: number, y: number, width: number, height: number) {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n equals(other: Rect) {\n return (\n this.x === other.x &&\n this.y === other.y &&\n this.width === other.width &&\n this.height === other.height\n )\n }\n }\n\n export class Color {\n constructor(\n public redF: number,\n public greenF: number,\n public blueF: number,\n public alphaF: number,\n ) {}\n\n equals(other: Color): boolean {\n return (\n this.redF === other.redF &&\n this.greenF === other.greenF &&\n this.blueF === other.blueF &&\n this.alphaF === other.alphaF\n )\n }\n\n static TRANSPARENT = new Color(0, 0, 0, 0)\n }\n\n // Converted from https://github.com/evanw/sky/blob/c72de77/src/graphics/context.sk\n export enum BlendOperation {\n ZERO = 0,\n ONE = 1,\n\n SOURCE_COLOR = 2,\n TARGET_COLOR = 3,\n INVERSE_SOURCE_COLOR = 4,\n INVERSE_TARGET_COLOR = 5,\n\n SOURCE_ALPHA = 6,\n TARGET_ALPHA = 7,\n INVERSE_SOURCE_ALPHA = 8,\n INVERSE_TARGET_ALPHA = 9,\n\n CONSTANT = 10,\n INVERSE_CONSTANT = 11,\n }\n\n export enum Primitive {\n TRIANGLES,\n TRIANGLE_STRIP,\n }\n\n export abstract class Context {\n abstract addContextResetHandler(callback: () => void): void\n abstract beginFrame(): void\n abstract clear(color: Color): void\n\n abstract createMaterial(\n format: VertexFormat,\n vertexSource: string,\n fragmentSource: string,\n ): Material\n abstract createTexture(\n format: TextureFormat,\n width: number,\n height: number,\n pixels?: Uint8Array,\n ): Texture\n abstract createRenderTarget(texture: Texture): RenderTarget\n abstract createVertexBuffer(byteCount: number): VertexBuffer\n abstract currentRenderTarget: RenderTarget | null\n abstract draw(primitive: Primitive, material: Material, vertices: VertexBuffer): void\n abstract endFrame(): void\n abstract removeContextResetHandler(callback: () => void): void\n abstract resize(\n widthInPixels: number,\n heightInPixels: number,\n widthInAppUnits: number,\n heightInAppUnits: number,\n ): void\n abstract setRenderTarget(renderTarget: RenderTarget | null): void\n abstract setViewport(x: number, y: number, width: number, height: number): void\n abstract viewport: Rect\n abstract widthInPixels: number\n abstract heightInPixels: number\n\n abstract renderTargetHeightInPixels: number\n abstract renderTargetWidthInPixels: number\n\n abstract setBlendState(source: BlendOperation, target: BlendOperation): void\n setCopyBlendState() {\n this.setBlendState(BlendOperation.ONE, BlendOperation.ZERO)\n }\n setAddBlendState() {\n this.setBlendState(BlendOperation.ONE, BlendOperation.ONE)\n }\n setPremultipliedBlendState() {\n this.setBlendState(BlendOperation.ONE, BlendOperation.INVERSE_SOURCE_ALPHA)\n }\n setUnpremultipliedBlendState() {\n this.setBlendState(BlendOperation.SOURCE_ALPHA, BlendOperation.INVERSE_SOURCE_ALPHA)\n }\n\n protected resizeEventHandlers = new Set<() => void>()\n addAfterResizeEventHandler(callback: () => void): void {\n this.resizeEventHandlers.add(callback)\n }\n removeAfterResizeEventHandler(callback: () => void): void {\n this.resizeEventHandlers.delete(callback)\n }\n }\n\n export interface Material {\n context: Context\n format: VertexFormat\n fragmentSource: string\n vertexSource: string\n setUniformFloat(name: string, x: number): void\n setUniformInt(name: string, x: number): void\n setUniformVec2(name: string, x: number, y: number): void\n setUniformVec3(name: string, x: number, y: number, z: number): void\n setUniformVec4(name: string, x: number, y: number, z: number, w: number): void\n setUniformMat3(\n name: string,\n m00: number,\n m01: number,\n m02: number,\n m10: number,\n m11: number,\n m12: number,\n m20: number,\n m21: number,\n m22: number,\n ): void\n setUniformSampler(name: string, texture: Texture, index: number): void\n }\n\n export enum AttributeType {\n FLOAT,\n BYTE,\n }\n\n export function attributeByteLength(type: AttributeType) {\n return type == AttributeType.FLOAT ? 4 : 1\n }\n\n export class Attribute {\n constructor(\n readonly name: string,\n readonly type: AttributeType,\n readonly count: number,\n readonly byteOffset: number,\n ) {}\n }\n\n export class VertexFormat {\n private _attributes: Attribute[] = []\n private _stride = 0\n\n get attributes() {\n return this._attributes\n }\n get stride() {\n return this._stride\n }\n\n add(name: string, type: AttributeType, count: number): VertexFormat {\n this.attributes.push(new Attribute(name, type, count, this.stride))\n this._stride += count * attributeByteLength(type)\n return this\n }\n }\n\n export abstract class VertexBuffer {\n abstract byteCount: number\n abstract context: Context\n abstract move(sourceByteOffset: number, targetByteOffset: number, byteCount: number): void\n abstract upload(bytes: Uint8Array, byteOffset?: number): void\n uploadFloat32Array(floats: Float32Array) {\n this.upload(new Uint8Array(floats.buffer), 0)\n }\n uploadFloats(floats: number[]) {\n this.uploadFloat32Array(new Float32Array(floats))\n }\n abstract free(): void\n }\n\n export enum PixelFilter {\n NEAREST,\n LINEAR,\n }\n\n export enum PixelWrap {\n REPEAT,\n CLAMP,\n }\n\n export class TextureFormat {\n constructor(\n readonly minFilter: PixelFilter,\n readonly magFilter: PixelFilter,\n readonly wrap: PixelWrap,\n ) {}\n\n static LINEAR_CLAMP = new TextureFormat(PixelFilter.LINEAR, PixelFilter.LINEAR, PixelWrap.CLAMP)\n static LINEAR_MIN_NEAREST_MAG_CLAMP = new TextureFormat(\n PixelFilter.LINEAR,\n PixelFilter.NEAREST,\n PixelWrap.CLAMP,\n )\n static NEAREST_CLAMP = new TextureFormat(\n PixelFilter.NEAREST,\n PixelFilter.NEAREST,\n PixelWrap.CLAMP,\n )\n }\n\n export interface Texture {\n context: Context\n format: TextureFormat\n width: number\n height: number\n resize(width: number, height: number, pixels?: Uint8Array): void\n setFormat(format: TextureFormat): void\n free(): void\n }\n\n export interface RenderTarget {\n context: Context\n texture: Texture\n setColor(texture: Texture): void\n free(): void\n }\n}\n\n// Converted from https://github.com/evanw/sky/blob/c72de77/src/browser/context.sk\nexport namespace WebGL {\n export class Context extends Graphics.Context {\n private _attributeCount = 0\n private _blendOperationMap: {[key: number]: GLenum}\n private _blendOperations = 0\n private _contextResetHandlers: (() => void)[] = []\n private _currentClearColor = Graphics.Color.TRANSPARENT\n private _currentRenderTarget: RenderTarget | null = null\n private _defaultViewport = new Graphics.Rect()\n private _forceStateUpdate = true\n private _generation = 1\n private _gl: WebGLRenderingContext\n private _height = 0\n private _oldBlendOperations = 0\n private _oldRenderTarget: RenderTarget | null = null\n private _oldViewport = new Graphics.Rect()\n private _width = 0\n\n get widthInPixels() {\n return this._width\n }\n get heightInPixels() {\n return this._height\n }\n\n constructor(canvas: HTMLCanvasElement = document.createElement('canvas')) {\n super()\n let gl = canvas.getContext('webgl', {\n alpha: false,\n antialias: false,\n depth: false,\n preserveDrawingBuffer: false,\n stencil: false,\n })\n\n if (gl == null) {\n throw new Error('Setup failure')\n }\n\n this._gl = gl\n let style = canvas.style\n canvas.width = 0\n canvas.height = 0\n style.width = style.height = '0'\n\n canvas.addEventListener('webglcontextlost', (e: Event) => {\n e.preventDefault()\n })\n\n canvas.addEventListener('webglcontextrestored', this.handleWebglContextRestored)\n\n // Using maps makes these compact in release\n this._blendOperationMap = {\n [Graphics.BlendOperation.ZERO]: this._gl.ZERO,\n [Graphics.BlendOperation.ONE]: this._gl.ONE,\n\n [Graphics.BlendOperation.SOURCE_COLOR]: this._gl.SRC_COLOR,\n [Graphics.BlendOperation.TARGET_COLOR]: this._gl.DST_COLOR,\n [Graphics.BlendOperation.INVERSE_SOURCE_COLOR]: this._gl.ONE_MINUS_SRC_COLOR,\n [Graphics.BlendOperation.INVERSE_TARGET_COLOR]: this._gl.ONE_MINUS_DST_COLOR,\n\n [Graphics.BlendOperation.SOURCE_ALPHA]: this._gl.SRC_ALPHA,\n [Graphics.BlendOperation.TARGET_ALPHA]: this._gl.DST_ALPHA,\n [Graphics.BlendOperation.INVERSE_SOURCE_ALPHA]: this._gl.ONE_MINUS_SRC_ALPHA,\n [Graphics.BlendOperation.INVERSE_TARGET_ALPHA]: this._gl.ONE_MINUS_DST_ALPHA,\n\n [Graphics.BlendOperation.CONSTANT]: this._gl.CONSTANT_COLOR,\n [Graphics.BlendOperation.INVERSE_CONSTANT]: this._gl.ONE_MINUS_CONSTANT_COLOR,\n }\n }\n\n private handleWebglContextRestored = () => {\n this._attributeCount = 0\n this._currentClearColor = Graphics.Color.TRANSPARENT\n this._forceStateUpdate = true\n this._generation++\n for (let handler of this._contextResetHandlers) {\n handler()\n }\n }\n\n public testContextLoss() {\n this.handleWebglContextRestored()\n }\n\n get gl() {\n return this._gl\n }\n get generation() {\n return this._generation\n }\n addContextResetHandler(callback: () => void) {\n appendOne(this._contextResetHandlers, callback)\n }\n removeContextResetHandler(callback: () => void) {\n removeOne(this._contextResetHandlers, callback)\n }\n\n get currentRenderTarget() {\n return this._currentRenderTarget\n }\n\n beginFrame() {\n this.setRenderTarget(null)\n }\n\n endFrame() {}\n\n setBlendState(source: Graphics.BlendOperation, target: Graphics.BlendOperation) {\n this._blendOperations = Context._packBlendModes(source, target)\n }\n\n setViewport(x: number, y: number, width: number, height: number) {\n ;(this._currentRenderTarget != null\n ? this._currentRenderTarget.viewport\n : this._defaultViewport\n ).set(x, y, width, height)\n }\n\n get viewport() {\n return this._currentRenderTarget != null\n ? this._currentRenderTarget.viewport\n : this._defaultViewport\n }\n\n get renderTargetWidthInPixels() {\n return this._currentRenderTarget != null\n ? this._currentRenderTarget.viewport.width\n : this._width\n }\n\n get renderTargetHeightInPixels() {\n return this._currentRenderTarget != null\n ? this._currentRenderTarget.viewport.height\n : this._height\n }\n\n draw(\n primitive: Graphics.Primitive,\n material: Graphics.Material,\n vertices: Graphics.VertexBuffer,\n ) {\n // Update the texture set before preparing the material so uniform samplers can check for that they use different textures\n this._updateRenderTargetAndViewport()\n Material.from(material).prepare()\n\n // Update the vertex buffer before updating the format so attributes can bind correctly\n VertexBuffer.from(vertices).prepare()\n this._updateFormat(material.format)\n\n // Draw now that everything is ready\n this._updateBlendState()\n\n this._gl.drawArrays(\n primitive == Graphics.Primitive.TRIANGLES ? this._gl.TRIANGLES : this._gl.TRIANGLE_STRIP,\n 0,\n Math.floor(vertices.byteCount / material.format.stride),\n )\n\n // Forced state updates are done once after a context loss\n this._forceStateUpdate = false\n }\n\n resize(\n widthInPixels: number,\n heightInPixels: number,\n widthInAppUnits: number,\n heightInAppUnits: number,\n ) {\n let canvas = this._gl.canvas as HTMLCanvasElement\n const bounds = canvas.getBoundingClientRect()\n\n if (\n this._width === widthInPixels &&\n this._height === heightInPixels &&\n bounds.width === widthInAppUnits &&\n bounds.height === heightInAppUnits\n ) {\n // Nothing to do here!\n return\n }\n\n let style = canvas.style\n canvas.width = widthInPixels\n canvas.height = heightInPixels\n style.width = `${widthInAppUnits}px`\n style.height = `${heightInAppUnits}px`\n this.setViewport(0, 0, widthInPixels, heightInPixels)\n this._width = widthInPixels\n this._height = heightInPixels\n\n this.resizeEventHandlers.forEach(cb => cb())\n }\n\n clear(color: Graphics.Color) {\n this._updateRenderTargetAndViewport()\n this._updateBlendState()\n\n if (!color.equals(this._currentClearColor)) {\n this._gl.clearColor(color.redF, color.greenF, color.blueF, color.alphaF)\n this._currentClearColor = color\n }\n\n this._gl.clear(this._gl.COLOR_BUFFER_BIT)\n }\n\n setRenderTarget(renderTarget: Graphics.RenderTarget | null) {\n this._currentRenderTarget = RenderTarget.from(renderTarget)\n }\n\n createMaterial(\n format: Graphics.VertexFormat,\n vertexSource: string,\n fragmentSource: string,\n ): Graphics.Material {\n let material = new Material(this, format, vertexSource, fragmentSource)\n\n // Compiling shaders is really expensive so we want to get that started\n // as early as possible. In Chrome and possibly other browsers, shader\n // compilation can happen asynchronously as long as you don't call\n // useProgram().\n //\n // https://plus.google.com/+BrandonJonesToji/posts/4ERHkicC5Ny\n //\n material.program\n\n return material\n }\n\n createVertexBuffer(byteCount: number): Graphics.VertexBuffer {\n assert(byteCount > 0 && byteCount % 4 == 0)\n return new VertexBuffer(this, byteCount)\n }\n\n createTexture(\n format: Graphics.TextureFormat,\n width: number,\n height: number,\n pixels?: Uint8Array,\n ): Graphics.Texture {\n return new Texture(this, format, width, height, pixels)\n }\n\n createRenderTarget(texture: Graphics.Texture): Graphics.RenderTarget {\n return new RenderTarget(this, Texture.from(texture))\n }\n\n private ANGLE_instanced_arrays: ANGLE_instanced_arrays | null = null\n private ANGLE_instanced_arrays_generation: number = -1\n getANGLE_instanced_arrays(): ANGLE_instanced_arrays {\n if (this.ANGLE_instanced_arrays_generation !== this._generation) {\n this.ANGLE_instanced_arrays = null\n }\n if (!this.ANGLE_instanced_arrays) {\n this.ANGLE_instanced_arrays = this.gl.getExtension('ANGLE_instanced_arrays')\n if (!this.ANGLE_instanced_arrays) {\n throw new Error('Failed to get extension ANGLE_instanced_arrays')\n }\n }\n return this.ANGLE_instanced_arrays!\n }\n\n _updateRenderTargetAndViewport() {\n let renderTarget = this._currentRenderTarget\n let viewport = renderTarget != null ? renderTarget.viewport : this._defaultViewport\n let gl = this._gl\n\n if (this._forceStateUpdate || this._oldRenderTarget != renderTarget) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, renderTarget ? renderTarget.framebuffer : null)\n this._oldRenderTarget = renderTarget\n }\n\n if (this._forceStateUpdate || !this._oldViewport.equals(viewport)) {\n gl.viewport(\n viewport.x,\n this.renderTargetHeightInPixels - viewport.y - viewport.height,\n viewport.width,\n viewport.height,\n )\n this._oldViewport.set(viewport.x, viewport.y, viewport.width, viewport.height)\n }\n }\n\n _updateBlendState() {\n if (this._forceStateUpdate || this._oldBlendOperations != this._blendOperations) {\n let gl = this._gl\n let operations = this._blendOperations\n let oldOperations = this._oldBlendOperations\n let source = (operations & 0xf) as Graphics.BlendOperation\n let target = (operations >> 4) as Graphics.BlendOperation\n\n assert(source in this._blendOperationMap)\n assert(target in this._blendOperationMap)\n\n // Special-case the blend mode that just writes over the target buffer\n if (operations == Context.COPY_BLEND_OPERATIONS) {\n gl.disable(gl.BLEND)\n } else {\n if (this._forceStateUpdate || oldOperations == Context.COPY_BLEND_OPERATIONS) {\n gl.enable(gl.BLEND)\n }\n\n // Otherwise, use actual blending\n gl.blendFunc(this._blendOperationMap[source], this._blendOperationMap[target])\n }\n\n this._oldBlendOperations = operations\n }\n }\n\n _updateFormat(format: Graphics.VertexFormat) {\n // Update the attributes\n let gl = this._gl\n let attributes = format.attributes\n let count = attributes.length\n for (let i = 0; i < count; i++) {\n let attribute = attributes[i]\n let isByte = attribute.type == Graphics.AttributeType.BYTE\n gl.vertexAttribPointer(\n i,\n attribute.count,\n isByte ? gl.UNSIGNED_BYTE : gl.FLOAT,\n isByte,\n format.stride,\n attribute.byteOffset,\n )\n }\n\n // Update the attribute count\n while (this._attributeCount < count) {\n gl.enableVertexAttribArray(this._attributeCount)\n this._attributeCount++\n }\n while (this._attributeCount > count) {\n this._attributeCount--\n gl.disableVertexAttribArray(this._attributeCount)\n }\n this._attributeCount = count\n }\n\n getWebGLInfo(): {renderer: string | null; vendor: string | null; version: string | null} {\n const ext = this.gl.getExtension('WEBGL_debug_renderer_info')\n const renderer = ext ? this.gl.getParameter(ext.UNMASKED_RENDERER_WEBGL) : null\n const vendor = ext ? this.gl.getParameter(ext.UNMASKED_VENDOR_WEBGL) : null\n const version = this.gl.getParameter(this.gl.VERSION)\n return {renderer, vendor, version}\n }\n\n static from(context: Graphics.Context): Context {\n assert(context == null || context instanceof Context)\n return context as Context\n }\n\n static _packBlendModes(\n source: Graphics.BlendOperation,\n target: Graphics.BlendOperation,\n ): number {\n return source | (target << 4)\n }\n\n static COPY_BLEND_OPERATIONS = Context._packBlendModes(\n Graphics.BlendOperation.ONE,\n Graphics.BlendOperation.ZERO,\n )\n }\n\n abstract class Uniform {\n constructor(\n protected readonly _material: Material,\n protected readonly _name: string,\n protected _generation = 0,\n protected _location: WebGLUniformLocation | null = null,\n protected _isDirty = true,\n ) {}\n\n // Upload this uniform if it's dirty\n abstract prepare(): void\n\n get location(): WebGLUniformLocation {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation) {\n this._location = context.gl.getUniformLocation(this._material.program, this._name)\n this._generation = context.generation\n\n // Validate the shader against this uniform\n if (!RELEASE) {\n let program = this._material.program\n let gl = context.gl\n for (let i = 0, ii = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS); i < ii; i++) {\n let info = gl.getActiveUniform(program, i)\n if (info && info.name == this._name) {\n assert(info.size == 1)\n switch (info.type) {\n case gl.FLOAT: {\n assert(this instanceof UniformFloat)\n break\n }\n case gl.FLOAT_MAT3: {\n assert(this instanceof UniformMat3)\n break\n }\n case gl.FLOAT_VEC2: {\n assert(this instanceof UniformVec2)\n break\n }\n case gl.FLOAT_VEC3: {\n assert(this instanceof UniformVec3)\n break\n }\n case gl.FLOAT_VEC4: {\n assert(this instanceof UniformVec4)\n break\n }\n case gl.INT: {\n assert(this instanceof UniformInt)\n break\n }\n case gl.SAMPLER_2D: {\n assert(this instanceof UniformSampler)\n break\n }\n default:\n assert(false)\n }\n }\n }\n }\n }\n if (!this._location) {\n throw new Error('Failed to get uniform location')\n }\n return this._location\n }\n }\n\n class UniformFloat extends Uniform {\n private _x = 0.0\n\n set(x: number) {\n if (x != this._x) {\n this._x = x\n this._isDirty = true\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation || this._isDirty) {\n context.gl.uniform1f(this.location, this._x)\n this._isDirty = false\n }\n }\n }\n\n class UniformInt extends Uniform {\n private _x = 0\n\n set(x: number) {\n if (x != this._x) {\n this._x = x\n this._isDirty = true\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation || this._isDirty) {\n context.gl.uniform1i(this.location, this._x)\n this._isDirty = false\n }\n }\n }\n\n class UniformVec2 extends Uniform {\n private _x = 0.0\n private _y = 0.0\n\n set(x: number, y: number) {\n if (x != this._x || y != this._y) {\n this._x = x\n this._y = y\n this._isDirty = true\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation || this._isDirty) {\n context.gl.uniform2f(this.location, this._x, this._y)\n this._isDirty = false\n }\n }\n }\n\n class UniformVec3 extends Uniform {\n private _x = 0.0\n private _y = 0.0\n private _z = 0.0\n\n set(x: number, y: number, z: number) {\n if (x != this._x || y != this._y || z != this._z) {\n this._x = x\n this._y = y\n this._z = z\n this._isDirty = true\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation || this._isDirty) {\n context.gl.uniform3f(this.location, this._x, this._y, this._z)\n this._isDirty = false\n }\n }\n }\n\n class UniformVec4 extends Uniform {\n private _x = 0.0\n private _y = 0.0\n private _z = 0.0\n private _w = 0.0\n\n set(x: number, y: number, z: number, w: number) {\n if (x != this._x || y != this._y || z != this._z || w != this._w) {\n this._x = x\n this._y = y\n this._z = z\n this._w = w\n this._isDirty = true\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation || this._isDirty) {\n context.gl.uniform4f(this.location, this._x, this._y, this._z, this._w)\n this._isDirty = false\n }\n }\n }\n\n class UniformMat3 extends Uniform {\n private _values = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]\n\n set(\n m00: number,\n m01: number,\n m02: number,\n m10: number,\n m11: number,\n m12: number,\n m20: number,\n m21: number,\n m22: number,\n ) {\n // These values are deliberately transposed because WebGL requires the \"transpose\" argument of uniformMatrix() to be false\n UniformMat3._cachedValues[0] = m00\n UniformMat3._cachedValues[1] = m10\n UniformMat3._cachedValues[2] = m20\n UniformMat3._cachedValues[3] = m01\n UniformMat3._cachedValues[4] = m11\n UniformMat3._cachedValues[5] = m21\n UniformMat3._cachedValues[6] = m02\n UniformMat3._cachedValues[7] = m12\n UniformMat3._cachedValues[8] = m22\n\n for (let i = 0; i < 9; i++) {\n if (UniformMat3._cachedValues[i] != this._values[i]) {\n let swap = this._values\n this._values = UniformMat3._cachedValues\n UniformMat3._cachedValues = swap\n this._isDirty = true\n break\n }\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n if (this._generation != context.generation || this._isDirty) {\n context.gl.uniformMatrix3fv(this.location, false, this._values)\n this._isDirty = false\n }\n }\n\n // Statically allocate this to avoid allocations\n static _cachedValues = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]\n }\n\n class UniformSampler extends Uniform {\n private _texture: Texture | null = null\n private _index = -1\n\n set(texture: Graphics.Texture, index: number) {\n if (this._texture != texture || this._index != index) {\n this._texture = Texture.from(texture)\n this._index = index\n this._isDirty = true\n }\n }\n\n prepare() {\n let context = Context.from(this._material.context)\n let gl = context.gl\n assert(\n this._texture == null ||\n context.currentRenderTarget == null ||\n this._texture != context.currentRenderTarget.texture,\n )\n if (this._generation != context.generation || this._isDirty) {\n gl.uniform1i(this.location, this._index)\n this._isDirty = false\n }\n gl.activeTexture(TEXTURE_N(gl, this._index))\n gl.bindTexture(\n gl.TEXTURE_2D,\n this._texture != null && this._texture.width > 0 && this._texture.height > 0\n ? this._texture.texture\n : null,\n )\n }\n }\n\n class Material implements Graphics.Material {\n constructor(\n private readonly _context: Context,\n private readonly _format: Graphics.VertexFormat,\n private readonly _vertexSource: string,\n private readonly _fragmentSource: string,\n private readonly _uniformsMap: {[key: string]: Uniform} = {},\n private readonly _uniformsList: Uniform[] = [],\n private _generation = 0,\n private _program: WebGLProgram | null = null,\n ) {}\n\n get context() {\n return this._context\n }\n get format() {\n return this._format\n }\n get vertexSource() {\n return this._vertexSource\n }\n get fragmentSource() {\n return this._fragmentSource\n }\n\n setUniformFloat(name: string, x: number) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformFloat(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformFloat)\n ;(uniform as UniformFloat).set(x)\n }\n\n setUniformInt(name: string, x: number) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformInt(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformInt)\n ;(uniform as UniformInt).set(x)\n }\n\n setUniformVec2(name: string, x: number, y: number) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformVec2(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformVec2)\n ;(uniform as UniformVec2).set(x, y)\n }\n\n setUniformVec3(name: string, x: number, y: number, z: number) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformVec3(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformVec3)\n ;(uniform as UniformVec3).set(x, y, z)\n }\n\n setUniformVec4(name: string, x: number, y: number, z: number, w: number) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformVec4(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformVec4)\n ;(uniform as UniformVec4).set(x, y, z, w)\n }\n\n setUniformMat3(\n name: string,\n m00: number,\n m01: number,\n m02: number,\n m10: number,\n m11: number,\n m12: number,\n m20: number,\n m21: number,\n m22: number,\n ) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformMat3(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformMat3)\n ;(uniform as UniformMat3).set(m00, m01, m02, m10, m11, m12, m20, m21, m22)\n }\n\n setUniformSampler(name: string, texture: Graphics.Texture, index: number) {\n let uniform = this._uniformsMap[name] || null\n if (uniform == null) {\n uniform = new UniformSampler(this, name)\n this._uniformsMap[name] = uniform\n this._uniformsList.push(uniform)\n }\n assert(uniform instanceof UniformSampler)\n ;(uniform as UniformSampler).set(texture, index)\n }\n\n get program(): WebGLProgram {\n let gl = this._context.gl\n if (this._generation != this._context.generation) {\n this._program = gl.createProgram()!\n this._compileShader(gl, gl.VERTEX_SHADER, this.vertexSource)\n this._compileShader(gl, gl.FRAGMENT_SHADER, this.fragmentSource)\n let attributes = this.format.attributes\n for (let i = 0; i < attributes.length; i++) {\n gl.bindAttribLocation(this._program, i, attributes[i].name)\n }\n gl.linkProgram(this._program)\n if (!gl.getProgramParameter(this._program, gl.LINK_STATUS)) {\n throw new Error(`${gl.getProgramInfoLog(this._program)}`)\n }\n this._generation = this._context.generation\n\n // Validate this shader against the format\n if (!RELEASE) {\n for (let attribute of attributes) {\n for (\n let i = 0, ii = gl.getProgramParameter(this.program, gl.ACTIVE_ATTRIBUTES);\n i < ii;\n i++\n ) {\n let info = gl.getActiveAttrib(this.program, i)\n if (info && info.name == attribute.name) {\n assert(info.size == 1)\n switch (attribute.count) {\n case 1: {\n assert(info.type == gl.FLOAT)\n break\n }\n case 2: {\n assert(info.type == gl.FLOAT_VEC2)\n break\n }\n case 3: {\n assert(info.type == gl.FLOAT_VEC3)\n break\n }\n case 4: {\n assert(info.type == gl.FLOAT_VEC4)\n break\n }\n default: {\n assert(false)\n }\n }\n }\n }\n }\n }\n }\n return this._program!\n }\n\n prepare(): void {\n this._context.gl.useProgram(this.program)\n for (let uniform of this._uniformsList) {\n uniform.prepare()\n }\n }\n\n _compileShader(gl: WebGLRenderingContext, type: GLenum, source: string) {\n let shader = gl.createShader(type)\n if (!shader) {\n throw new Error('Failed to create shader')\n }\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n throw new Error(`${gl.getShaderInfoLog(shader)}`)\n }\n if (!this._program) {\n throw new Error('Tried to attach shader before program was created')\n }\n gl.attachShader(this._program, shader)\n }\n\n static from(material: Graphics.Material): Material {\n assert(material == null || material instanceof Material)\n return material as Material\n }\n }\n\n class VertexBuffer extends Graphics.VertexBuffer {\n private readonly _context: Context\n private _generation = 0\n private _buffer: WebGLBuffer | null = null\n private _bytes: Uint8Array | null = null\n private _isDirty = true\n private _dirtyMin = VertexBuffer.INT_MAX\n private _dirtyMax = 0\n private _totalMin = VertexBuffer.INT_MAX\n private _totalMax = 0\n private _byteCount = 0\n\n constructor(context: Context, byteCount: number) {\n super()\n this._context = context\n this._byteCount = byteCount\n this._bytes = new Uint8Array(byteCount)\n }\n\n get context() {\n return this._context\n }\n get byteCount() {\n return this._byteCount\n }\n\n move(sourceByteOffset: number, targetByteOffset: number, byteCount: number) {\n assert(byteCount >= 0)\n assert(0 <= sourceByteOffset && sourceByteOffset + byteCount <= this._byteCount)\n assert(0 <= targetByteOffset && targetByteOffset + byteCount <= this._byteCount)\n\n if (this._bytes && sourceByteOffset != targetByteOffset && byteCount != 0) {\n this._bytes.set(this._bytes.subarray(sourceByteOffset, this._byteCount), targetByteOffset)\n this._growDirtyRegion(\n Math.min(sourceByteOffset, targetByteOffset),\n Math.max(sourceByteOffset, targetByteOffset) + byteCount,\n )\n }\n }\n\n upload(bytes: Uint8Array, byteOffset: number = 0) {\n assert(0 <= byteOffset && byteOffset + bytes.length <= this._byteCount)\n assert(this._bytes != null)\n this._bytes!.set(bytes, byteOffset)\n this._growDirtyRegion(byteOffset, byteOffset + bytes.length)\n }\n\n free() {\n if (this._buffer) {\n this._context.gl.deleteBuffer(this._buffer)\n }\n\n // Reset the generation to force this to be re-uploaded if it's used again\n // in the future.\n this._generation = 0\n }\n\n prepare(): void {\n let gl = this._context.gl\n\n if (this._generation !== this._context.generation) {\n this._buffer = gl.createBuffer()\n this._generation = this._context.generation\n this._isDirty = true\n }\n\n gl.bindBuffer(gl.ARRAY_BUFFER, this._buffer)\n\n if (this._isDirty) {\n gl.bufferData(gl.ARRAY_BUFFER, this._byteCount, gl.DYNAMIC_DRAW)\n this._dirtyMin = this._totalMin\n this._dirtyMax = this._totalMax\n this._isDirty = false\n }\n\n if (this._dirtyMin < this._dirtyMax) {\n gl.bufferSubData(\n gl.ARRAY_BUFFER,\n this._dirtyMin,\n this._bytes!.subarray(this._dirtyMin, this._dirtyMax),\n )\n this._dirtyMin = VertexBuffer.INT_MAX\n this._dirtyMax = 0\n }\n }\n\n _growDirtyRegion(min: number, max: number) {\n this._dirtyMin = Math.min(this._dirtyMin, min)\n this._dirtyMax = Math.max(this._dirtyMax, max)\n this._totalMin = Math.min(this._totalMin, min)\n this._totalMax = Math.max(this._totalMax, max)\n }\n\n static INT_MAX = 0x7fffffff\n\n static from(buffer: Graphics.VertexBuffer): VertexBuffer {\n assert(buffer == null || buffer instanceof VertexBuffer)\n return buffer as VertexBuffer\n }\n }\n\n class Texture implements Graphics.Texture {\n constructor(\n private readonly _context: Context,\n private _format: Graphics.TextureFormat,\n private _width: number,\n private _height: number,\n private _pixels: Uint8Array | null = null,\n private _texture: WebGLTexture | null = null,\n private _generation = 0,\n private _isFormatDirty = true,\n private _isContentDirty = true,\n ) {}\n\n get context() {\n return this._context\n }\n get format() {\n return this._format\n }\n get width() {\n return this._width\n }\n get height() {\n return this._height\n }\n\n resize(width: number, height: number, pixels: Uint8Array | null = null) {\n this._width = width\n this._height = height\n this._pixels = pixels\n this._isContentDirty = true\n }\n\n setFormat(format: Graphics.TextureFormat) {\n if (this._format != format) {\n this._format = format\n this._isFormatDirty = true\n }\n }\n\n get texture(): WebGLTexture {\n let gl = this._context.gl\n\n // Create\n if (this._generation != this._context.generation) {\n this._texture = gl.createTexture()\n this._generation = this._context.generation\n this._isFormatDirty = true\n this._isContentDirty = true\n }\n\n // Format\n if (this._isFormatDirty) {\n gl.bindTexture(gl.TEXTURE_2D, this._texture)\n gl.texParameteri(\n gl.TEXTURE_2D,\n gl.TEXTURE_MAG_FILTER,\n this.format.magFilter == Graphics.PixelFilter.NEAREST ? gl.NEAREST : gl.LINEAR,\n )\n gl.texParameteri(\n gl.TEXTURE_2D,\n gl.TEXTURE_MIN_FILTER,\n this.format.minFilter == Graphics.PixelFilter.NEAREST ? gl.NEAREST : gl.LINEAR,\n )\n gl.texParameteri(\n gl.TEXTURE_2D,\n gl.TEXTURE_WRAP_S,\n this.format.wrap == Graphics.PixelWrap.REPEAT ? gl.REPEAT : gl.CLAMP_TO_EDGE,\n )\n gl.texParameteri(\n gl.TEXTURE_2D,\n gl.TEXTURE_WRAP_T,\n this.format.wrap == Graphics.PixelWrap.REPEAT ? gl.REPEAT : gl.CLAMP_TO_EDGE,\n )\n this._isFormatDirty = false\n }\n\n if (this._isContentDirty) {\n gl.bindTexture(gl.TEXTURE_2D, this._texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n this._width,\n this._height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n this._pixels,\n )\n this._isContentDirty = false\n }\n\n return this._texture!\n }\n\n free() {\n if (this.texture) {\n this._context.gl.deleteTexture(this.texture)\n this._generation = 0\n }\n }\n\n static from(texture: Graphics.Texture): Texture {\n assert(texture == null || texture instanceof Texture)\n return texture as Texture\n }\n }\n\n class RenderTarget implements Graphics.RenderTarget {\n constructor(\n private _context: Context,\n private _texture: Texture,\n private _framebuffer: WebGLFramebuffer | null = null,\n private _generation = 0,\n private _isDirty = true,\n private _viewport = new Graphics.Rect(),\n ) {}\n\n get context() {\n return this._context\n }\n get texture() {\n return this._texture\n }\n get viewport() {\n return this._viewport\n }\n setColor(texture: Graphics.Texture) {\n if (this._texture != texture) {\n this._texture = Texture.from(texture)\n this._isDirty = true\n }\n }\n\n get framebuffer(): WebGLFramebuffer {\n let gl = this._context.gl\n let texture = this._texture.texture\n\n // Create\n if (this._generation != this._context.generation) {\n this._framebuffer = gl.createFramebuffer()\n this._generation = this._context.generation\n this._isDirty = true\n }\n\n // Update\n if (this._isDirty) {\n gl.bindFramebuffer(gl.FRAMEBUFFER, this._framebuffer)\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0)\n assert(gl.checkFramebufferStatus(gl.FRAMEBUFFER) == gl.FRAMEBUFFER_COMPLETE)\n this._isDirty = false\n }\n\n return this._framebuffer!\n }\n\n free() {\n if (this._framebuffer) {\n this._context.gl.deleteFramebuffer(this._framebuffer)\n this._generation = 0\n }\n }\n\n static from(renderTarget: Graphics.RenderTarget | null): RenderTarget | null {\n assert(renderTarget == null || renderTarget instanceof RenderTarget)\n return renderTarget as RenderTarget | null\n }\n }\n}\n","import {Graphics} from './graphics'\nimport {AffineTransform, Vec2} from '../lib/math'\n\nexport function setUniformAffineTransform(\n material: Graphics.Material,\n name: string,\n transform: AffineTransform,\n) {\n let {m00, m01, m02, m10, m11, m12} = transform\n material.setUniformMat3(name, m00, m01, m02, m10, m11, m12, 0, 0, 1)\n}\nexport function setUniformVec2(material: Graphics.Material, name: string, vec: Vec2) {\n material.setUniformVec2(name, vec.x, vec.y)\n}\n\nexport function renderInto(gl: Graphics.Context, target: Graphics.RenderTarget, cb: () => void) {\n gl.setRenderTarget(target)\n gl.setViewport(0, 0, target.texture.width, target.texture.height)\n cb()\n gl.setRenderTarget(null)\n}\n","import {Rect, Vec2, AffineTransform} from '../lib/math'\nimport {Color} from '../lib/color'\nimport {Graphics} from './graphics'\nimport {setUniformAffineTransform} from './utils'\n\nconst vertexFormat = new Graphics.VertexFormat()\nvertexFormat.add('configSpacePos', Graphics.AttributeType.FLOAT, 2)\nvertexFormat.add('color', Graphics.AttributeType.FLOAT, 3)\n\nconst vert = `\n uniform mat3 configSpaceToNDC;\n\n attribute vec2 configSpacePos;\n attribute vec3 color;\n varying vec3 vColor;\n\n void main() {\n vColor = color;\n vec2 position = (configSpaceToNDC * vec3(configSpacePos, 1)).xy;\n gl_Position = vec4(position, 1, 1);\n }\n`\n\nconst frag = `\n precision mediump float;\n varying vec3 vColor;\n\n void main() {\n gl_FragColor = vec4(vColor.rgb, 1);\n }\n`\n\nexport class RectangleBatch {\n private rects: Rect[] = []\n private colors: Color[] = []\n constructor(private gl: Graphics.Context) {}\n\n getRectCount() {\n return this.rects.length\n }\n\n private buffer: Graphics.VertexBuffer | null = null\n getBuffer(): Graphics.VertexBuffer {\n if (this.buffer) {\n return this.buffer\n }\n\n const corners = [\n [0, 0],\n [1, 0],\n [0, 1],\n [1, 0],\n [0, 1],\n [1, 1],\n ]\n\n const bytes = new Uint8Array(vertexFormat.stride * corners.length * this.rects.length)\n const floats = new Float32Array(bytes.buffer)\n let idx = 0\n\n for (let i = 0; i < this.rects.length; i++) {\n const rect = this.rects[i]\n const color = this.colors[i]\n\n // TODO(jlfwong): In the conversion from regl to graphics.ts, I lost the\n // ability to do instanced drawing. This is a pretty significant hit to\n // the performance here since I need 6x the memory to allocate these\n // things. Adding instanced drawing to graphics.ts is non-trivial, so I'm\n // just going to try this for now.\n for (let corner of corners) {\n floats[idx++] = rect.origin.x + corner[0] * rect.size.x\n floats[idx++] = rect.origin.y + corner[1] * rect.size.y\n\n floats[idx++] = color.r\n floats[idx++] = color.g\n floats[idx++] = color.b\n }\n }\n\n if (idx !== floats.length) {\n throw new Error(\"Buffer expected to be full but wasn't\")\n }\n\n this.buffer = this.gl.createVertexBuffer(bytes.length)\n this.buffer.upload(bytes)\n return this.buffer\n }\n\n addRect(rect: Rect, color: Color) {\n this.rects.push(rect)\n this.colors.push(color)\n\n if (this.buffer) {\n this.buffer.free()\n this.buffer = null\n }\n }\n\n free() {\n if (this.buffer) {\n this.buffer.free()\n this.buffer = null\n }\n }\n}\n\nexport interface RectangleBatchRendererProps {\n batch: RectangleBatch\n configSpaceSrcRect: Rect\n physicalSpaceDstRect: Rect\n}\n\nexport class RectangleBatchRenderer {\n material: Graphics.Material\n constructor(private gl: Graphics.Context) {\n this.material = gl.createMaterial(vertexFormat, vert, frag)\n }\n\n render(props: RectangleBatchRendererProps) {\n setUniformAffineTransform(\n this.material,\n 'configSpaceToNDC',\n (() => {\n const configToPhysical = AffineTransform.betweenRects(\n props.configSpaceSrcRect,\n props.physicalSpaceDstRect,\n )\n\n const viewportSize = new Vec2(this.gl.viewport.width, this.gl.viewport.height)\n\n const physicalToNDC = AffineTransform.withTranslation(new Vec2(-1, 1)).times(\n AffineTransform.withScale(new Vec2(2, -2).dividedByPointwise(viewportSize)),\n )\n\n return physicalToNDC.times(configToPhysical)\n })(),\n )\n\n this.gl.setUnpremultipliedBlendState()\n this.gl.draw(Graphics.Primitive.TRIANGLES, this.material, props.batch.getBuffer())\n }\n}\n","import {clamp} from './math'\n\nexport class Color {\n constructor(\n readonly r: number = 0,\n readonly g: number = 0,\n readonly b: number = 0,\n readonly a: number = 1,\n ) {}\n\n static fromLumaChromaHue(L: number, C: number, H: number) {\n // 0 <= L <= 1\n // 0 <= C <= 1\n // 0 <= H <= 360\n // https://en.wikipedia.org/wiki/HSL_and_HSV#From_luma/chroma/hue\n\n const hPrime = H / 60\n const X = C * (1 - Math.abs((hPrime % 2) - 1))\n const [R1, G1, B1] =\n hPrime < 1\n ? [C, X, 0]\n : hPrime < 2\n ? [X, C, 0]\n : hPrime < 3\n ? [0, C, X]\n : hPrime < 4\n ? [0, X, C]\n : hPrime < 5\n ? [X, 0, C]\n : [C, 0, X]\n\n const m = L - (0.3 * R1 + 0.59 * G1 + 0.11 * B1)\n\n return new Color(clamp(R1 + m, 0, 1), clamp(G1 + m, 0, 1), clamp(B1 + m, 0, 1), 1.0)\n }\n\n static fromCSSHex(hex: string) {\n if (hex.length !== 7 || hex[0] !== '#') {\n throw new Error(`Invalid color input ${hex}`)\n }\n const r = parseInt(hex.substr(1, 2), 16) / 255\n const g = parseInt(hex.substr(3, 2), 16) / 255\n const b = parseInt(hex.substr(5, 2), 16) / 255\n if (r < 0 || r > 1 || g < 0 || g > 1 || b < 0 || b > 1) {\n throw new Error(`Invalid color input ${hex}`)\n }\n return new Color(r, g, b)\n }\n\n withAlpha(a: number): Color {\n return new Color(this.r, this.g, this.b, a)\n }\n\n toCSS(): string {\n return `rgba(${(255 * this.r).toFixed()}, ${(255 * this.g).toFixed()}, ${(\n 255 * this.b\n ).toFixed()}, ${this.a.toFixed(2)})`\n }\n}\n","import {LRUCache} from '../lib/lru-cache'\nimport {RectangleBatch, RectangleBatchRenderer} from './rectangle-batch-renderer'\nimport {Rect, Vec2} from '../lib/math'\nimport {Color} from '../lib/color'\nimport {Graphics} from './graphics'\nimport {TextureRenderer} from './texture-renderer'\nimport {renderInto} from './utils'\n\nexport class RowAtlas {\n private texture: Graphics.Texture\n private renderTarget: Graphics.RenderTarget\n private rowCache: LRUCache\n private clearLineBatch: RectangleBatch\n\n constructor(\n private gl: Graphics.Context,\n private rectangleBatchRenderer: RectangleBatchRenderer,\n private textureRenderer: TextureRenderer,\n ) {\n this.texture = gl.createTexture(Graphics.TextureFormat.NEAREST_CLAMP, 4096, 4096)\n this.renderTarget = gl.createRenderTarget(this.texture)\n this.rowCache = new LRUCache(this.texture.height)\n this.clearLineBatch = new RectangleBatch(gl)\n this.clearLineBatch.addRect(Rect.unit, new Color(0, 0, 0, 0))\n\n // All of the cached data is stored GPU-side, and we don't retain a copy of\n // it client-side. This means when we get a context loss event, the data is\n // totally gone. So let's clear our CPU-side cache to reflect that fact.\n gl.addContextResetHandler(() => {\n this.rowCache.clear()\n })\n }\n\n has(key: K) {\n return this.rowCache.has(key)\n }\n getResolution() {\n return this.texture.width\n }\n getCapacity() {\n return this.texture.height\n }\n\n private allocateLine(key: K): number {\n if (this.rowCache.getSize() < this.rowCache.getCapacity()) {\n // Not in cache, but cache isn't full\n const row = this.rowCache.getSize()\n this.rowCache.insert(key, row)\n return row\n } else {\n // Not in cache, and cache is full. Evict something.\n const [, row] = this.rowCache.removeLRU()!\n this.rowCache.insert(key, row)\n return row\n }\n }\n\n writeToAtlasIfNeeded(keys: K[], render: (textureDstRect: Rect, key: K) => void) {\n renderInto(this.gl, this.renderTarget, () => {\n for (let key of keys) {\n let row = this.rowCache.get(key)\n if (row != null) {\n // Already cached!\n continue\n }\n // Not cached -- we'll have to actually render\n row = this.allocateLine(key)\n\n const textureRect = new Rect(new Vec2(0, row), new Vec2(this.texture.width, 1))\n this.rectangleBatchRenderer.render({\n batch: this.clearLineBatch,\n configSpaceSrcRect: Rect.unit,\n physicalSpaceDstRect: textureRect,\n })\n render(textureRect, key)\n }\n })\n }\n\n renderViaAtlas(key: K, dstRect: Rect): boolean {\n let row = this.rowCache.get(key)\n if (row == null) {\n return false\n }\n\n const textureRect = new Rect(new Vec2(0, row), new Vec2(this.texture.width, 1))\n\n // At this point, we have the row in cache, and we can\n // paint directly from it into the framebuffer.\n this.textureRenderer.render({\n texture: this.texture,\n srcRect: textureRect,\n dstRect: dstRect,\n })\n return true\n }\n}\n","import {Vec2, Rect, AffineTransform} from '../lib/math'\nimport {Graphics} from './graphics'\nimport {setUniformAffineTransform} from './utils'\n\nexport interface TextureRendererProps {\n texture: Graphics.Texture\n srcRect: Rect\n dstRect: Rect\n}\n\nconst vert = `\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n`\n\nconst frag = `\n precision mediump float;\n\n varying vec2 vUv;\n uniform sampler2D texture;\n\n void main() {\n gl_FragColor = texture2D(texture, vUv);\n }\n`\n\nexport interface TextureRendererProps {\n texture: Graphics.Texture\n srcRect: Rect\n dstRect: Rect\n}\n\nexport class TextureRenderer {\n private buffer: Graphics.VertexBuffer\n private material: Graphics.Material\n\n constructor(private gl: Graphics.Context) {\n const vertexFormat = new Graphics.VertexFormat()\n vertexFormat.add('position', Graphics.AttributeType.FLOAT, 2)\n vertexFormat.add('uv', Graphics.AttributeType.FLOAT, 2)\n\n const vertices = [\n {pos: [-1, 1], uv: [0, 1]},\n {pos: [1, 1], uv: [1, 1]},\n {pos: [-1, -1], uv: [0, 0]},\n {pos: [1, -1], uv: [1, 0]},\n ]\n const floats: number[] = []\n for (let v of vertices) {\n floats.push(v.pos[0])\n floats.push(v.pos[1])\n floats.push(v.uv[0])\n floats.push(v.uv[1])\n }\n\n this.buffer = gl.createVertexBuffer(vertexFormat.stride * vertices.length)\n this.buffer.upload(new Uint8Array(new Float32Array(floats).buffer))\n this.material = gl.createMaterial(vertexFormat, vert, frag)\n }\n\n render(props: TextureRendererProps) {\n this.material.setUniformSampler('texture', props.texture, 0)\n setUniformAffineTransform(\n this.material,\n 'uvTransform',\n (() => {\n const {srcRect, texture} = props\n const physicalToUV = AffineTransform.withTranslation(new Vec2(0, 1))\n .times(AffineTransform.withScale(new Vec2(1, -1)))\n .times(\n AffineTransform.betweenRects(\n new Rect(Vec2.zero, new Vec2(texture.width, texture.height)),\n Rect.unit,\n ),\n )\n const uvRect = physicalToUV.transformRect(srcRect)\n return AffineTransform.betweenRects(Rect.unit, uvRect)\n })(),\n )\n setUniformAffineTransform(\n this.material,\n 'positionTransform',\n (() => {\n const {dstRect} = props\n\n const {viewport} = this.gl\n const viewportSize = new Vec2(viewport.width, viewport.height)\n\n const physicalToNDC = AffineTransform.withScale(new Vec2(1, -1)).times(\n AffineTransform.betweenRects(new Rect(Vec2.zero, viewportSize), Rect.NDC),\n )\n const ndcRect = physicalToNDC.transformRect(dstRect)\n return AffineTransform.betweenRects(Rect.NDC, ndcRect)\n })(),\n )\n\n this.gl.setUnpremultipliedBlendState()\n this.gl.draw(Graphics.Primitive.TRIANGLE_STRIP, this.material, this.buffer)\n }\n}\n","import {Color} from '../lib/color'\nimport {AffineTransform, Rect} from '../lib/math'\nimport {Theme} from '../views/themes/theme'\nimport {Graphics} from './graphics'\nimport {setUniformAffineTransform, setUniformVec2} from './utils'\n\nexport interface ViewportRectangleRendererProps {\n configSpaceToPhysicalViewSpace: AffineTransform\n configSpaceViewportRect: Rect\n}\n\nconst vertexFormat = new Graphics.VertexFormat()\nvertexFormat.add('position', Graphics.AttributeType.FLOAT, 2)\n\nconst vert = `\n attribute vec2 position;\n\n void main() {\n gl_Position = vec4(position, 0, 1);\n }\n`\n\nconst frag = (theme: Theme) => {\n const {r, g, b} = Color.fromCSSHex(theme.fgSecondaryColor)\n const rgb = `${r.toFixed(1)}, ${g.toFixed(1)}, ${b.toFixed(1)}`\n return `\n precision mediump float;\n\n uniform mat3 configSpaceToPhysicalViewSpace;\n uniform vec2 physicalSize;\n uniform vec2 physicalOrigin;\n uniform vec2 configSpaceViewportOrigin;\n uniform vec2 configSpaceViewportSize;\n uniform float framebufferHeight;\n\n void main() {\n vec2 origin = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportOrigin, 1.0)).xy;\n vec2 size = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportSize, 0.0)).xy;\n\n vec2 halfSize = physicalSize / 2.0;\n\n float borderWidth = 2.0;\n\n origin = floor(origin * halfSize) / halfSize + borderWidth * vec2(1.0, 1.0);\n size = floor(size * halfSize) / halfSize - 2.0 * borderWidth * vec2(1.0, 1.0);\n\n vec2 coord = gl_FragCoord.xy;\n coord.x = coord.x - physicalOrigin.x;\n coord.y = framebufferHeight - coord.y - physicalOrigin.y;\n vec2 clamped = clamp(coord, origin, origin + size);\n vec2 gap = clamped - coord;\n float maxdist = max(abs(gap.x), abs(gap.y));\n\n // TOOD(jlfwong): Could probably optimize this to use mix somehow.\n if (maxdist == 0.0) {\n // Inside viewport rectangle\n gl_FragColor = vec4(0, 0, 0, 0);\n } else if (maxdist < borderWidth) {\n // Inside viewport rectangle at border\n gl_FragColor = vec4(${rgb}, 0.8);\n } else {\n // Outside viewport rectangle\n gl_FragColor = vec4(${rgb}, 0.5);\n }\n }\n `\n}\n\nexport class ViewportRectangleRenderer {\n private material: Graphics.Material\n private buffer: Graphics.VertexBuffer\n\n constructor(private gl: Graphics.Context, theme: Theme) {\n const vertices = [\n [-1, 1],\n [1, 1],\n [-1, -1],\n [1, -1],\n ]\n const floats: number[] = []\n for (let v of vertices) {\n floats.push(v[0])\n floats.push(v[1])\n }\n this.buffer = gl.createVertexBuffer(vertexFormat.stride * vertices.length)\n this.buffer.upload(new Uint8Array(new Float32Array(floats).buffer))\n this.material = gl.createMaterial(vertexFormat, vert, frag(theme))\n }\n\n render(props: ViewportRectangleRendererProps) {\n setUniformAffineTransform(\n this.material,\n 'configSpaceToPhysicalViewSpace',\n props.configSpaceToPhysicalViewSpace,\n )\n\n // TODO(jlfwong): Pack these into a Vec4 instead\n setUniformVec2(this.material, 'configSpaceViewportOrigin', props.configSpaceViewportRect.origin)\n setUniformVec2(this.material, 'configSpaceViewportSize', props.configSpaceViewportRect.size)\n // TODO(jlfwong): Pack these into a Vec4 instead\n\n const viewport = this.gl.viewport\n this.material.setUniformVec2('physicalOrigin', viewport.x, viewport.y)\n this.material.setUniformVec2('physicalSize', viewport.width, viewport.height)\n\n this.material.setUniformFloat('framebufferHeight', this.gl.renderTargetHeightInPixels)\n\n this.gl.setBlendState(\n Graphics.BlendOperation.SOURCE_ALPHA,\n Graphics.BlendOperation.INVERSE_SOURCE_ALPHA,\n )\n this.gl.draw(Graphics.Primitive.TRIANGLE_STRIP, this.material, this.buffer)\n }\n}\n","import {Vec2, Rect, AffineTransform} from '../lib/math'\nimport {Theme} from '../views/themes/theme'\nimport {Graphics} from './graphics'\nimport {setUniformAffineTransform} from './utils'\n\nconst vertexFormat = new Graphics.VertexFormat()\nvertexFormat.add('position', Graphics.AttributeType.FLOAT, 2)\nvertexFormat.add('uv', Graphics.AttributeType.FLOAT, 2)\n\nconst vert = `\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n`\n\nconst frag = (colorForBucket: string) => `\n precision mediump float;\n\n uniform vec2 uvSpacePixelSize;\n uniform float renderOutlines;\n\n varying vec2 vUv;\n uniform sampler2D colorTexture;\n\n // https://en.wikipedia.org/wiki/HSL_and_HSV#From_luma/chroma/hue\n vec3 hcl2rgb(float H, float C, float L) {\n float hPrime = H / 60.0;\n float X = C * (1.0 - abs(mod(hPrime, 2.0) - 1.0));\n vec3 RGB =\n hPrime < 1.0 ? vec3(C, X, 0) :\n hPrime < 2.0 ? vec3(X, C, 0) :\n hPrime < 3.0 ? vec3(0, C, X) :\n hPrime < 4.0 ? vec3(0, X, C) :\n hPrime < 5.0 ? vec3(X, 0, C) :\n vec3(C, 0, X);\n\n float m = L - dot(RGB, vec3(0.30, 0.59, 0.11));\n return RGB + vec3(m, m, m);\n }\n\n float triangle(float x) {\n return 2.0 * abs(fract(x) - 0.5) - 1.0;\n }\n\n ${colorForBucket}\n\n void main() {\n vec4 here = texture2D(colorTexture, vUv);\n\n if (here.z == 0.0) {\n // Background color\n gl_FragColor = vec4(0, 0, 0, 0);\n return;\n }\n\n // Sample the 4 surrounding pixels in the depth texture to determine\n // if we should draw a boundary here or not.\n vec4 N = texture2D(colorTexture, vUv + vec2(0, uvSpacePixelSize.y));\n vec4 E = texture2D(colorTexture, vUv + vec2(uvSpacePixelSize.x, 0));\n vec4 S = texture2D(colorTexture, vUv + vec2(0, -uvSpacePixelSize.y));\n vec4 W = texture2D(colorTexture, vUv + vec2(-uvSpacePixelSize.x, 0));\n\n // NOTE: For outline checks, we intentionally check both the right\n // and the left to determine if we're an edge. If a rectangle is a single\n // pixel wide, we don't want to render it as an outline, so this method\n // of checking ensures that we don't outline single physical-space\n // pixel width rectangles.\n if (\n renderOutlines > 0.0 &&\n (\n here.y == N.y && here.y != S.y || // Top edge\n here.y == S.y && here.y != N.y || // Bottom edge\n here.x == E.x && here.x != W.x || // Left edge\n here.x == W.x && here.x != E.x\n )\n ) {\n // We're on an edge! Draw transparent.\n gl_FragColor = vec4(0, 0, 0, 0);\n } else {\n // Not on an edge. Draw the appropriate color.\n gl_FragColor = vec4(colorForBucket(here.z), here.a);\n }\n }\n`\n\nexport interface FlamechartColorPassRenderProps {\n rectInfoTexture: Graphics.Texture\n renderOutlines: boolean\n srcRect: Rect\n dstRect: Rect\n}\n\nexport class FlamechartColorPassRenderer {\n private material: Graphics.Material\n private buffer: Graphics.VertexBuffer\n\n constructor(private gl: Graphics.Context, theme: Theme) {\n const vertices = [\n {pos: [-1, 1], uv: [0, 1]},\n {pos: [1, 1], uv: [1, 1]},\n {pos: [-1, -1], uv: [0, 0]},\n {pos: [1, -1], uv: [1, 0]},\n ]\n const floats: number[] = []\n for (let v of vertices) {\n floats.push(v.pos[0])\n floats.push(v.pos[1])\n floats.push(v.uv[0])\n floats.push(v.uv[1])\n }\n\n this.buffer = gl.createVertexBuffer(vertexFormat.stride * vertices.length)\n this.buffer.uploadFloats(floats)\n this.material = gl.createMaterial(vertexFormat, vert, frag(theme.colorForBucketGLSL))\n }\n\n render(props: FlamechartColorPassRenderProps) {\n const {srcRect, rectInfoTexture} = props\n const physicalToUV = AffineTransform.withTranslation(new Vec2(0, 1))\n .times(AffineTransform.withScale(new Vec2(1, -1)))\n .times(\n AffineTransform.betweenRects(\n new Rect(Vec2.zero, new Vec2(rectInfoTexture.width, rectInfoTexture.height)),\n Rect.unit,\n ),\n )\n const uvRect = physicalToUV.transformRect(srcRect)\n const uvTransform = AffineTransform.betweenRects(Rect.unit, uvRect)\n\n const {dstRect} = props\n const viewportSize = new Vec2(this.gl.viewport.width, this.gl.viewport.height)\n\n const physicalToNDC = AffineTransform.withScale(new Vec2(1, -1)).times(\n AffineTransform.betweenRects(new Rect(Vec2.zero, viewportSize), Rect.NDC),\n )\n const ndcRect = physicalToNDC.transformRect(dstRect)\n const positionTransform = AffineTransform.betweenRects(Rect.NDC, ndcRect)\n\n const uvSpacePixelSize = Vec2.unit.dividedByPointwise(\n new Vec2(props.rectInfoTexture.width, props.rectInfoTexture.height),\n )\n\n this.material.setUniformSampler('colorTexture', props.rectInfoTexture, 0)\n setUniformAffineTransform(this.material, 'uvTransform', uvTransform)\n this.material.setUniformFloat('renderOutlines', props.renderOutlines ? 1.0 : 0.0)\n this.material.setUniformVec2('uvSpacePixelSize', uvSpacePixelSize.x, uvSpacePixelSize.y)\n setUniformAffineTransform(this.material, 'positionTransform', positionTransform)\n\n this.gl.setUnpremultipliedBlendState()\n this.gl.draw(Graphics.Primitive.TRIANGLE_STRIP, this.material, this.buffer)\n }\n}\n","import {Graphics, WebGL} from './graphics'\nimport {RectangleBatchRenderer} from './rectangle-batch-renderer'\nimport {TextureRenderer} from './texture-renderer'\nimport {Rect, Vec2} from '../lib/math'\nimport {ViewportRectangleRenderer} from './overlay-rectangle-renderer'\nimport {FlamechartColorPassRenderer} from './flamechart-color-pass-renderer'\nimport {Color} from '../lib/color'\nimport {Theme} from '../views/themes/theme'\n\ntype FrameCallback = () => void\n\nexport class CanvasContext {\n public readonly gl: WebGL.Context\n public readonly rectangleBatchRenderer: RectangleBatchRenderer\n public readonly textureRenderer: TextureRenderer\n public readonly viewportRectangleRenderer: ViewportRectangleRenderer\n public readonly flamechartColorPassRenderer: FlamechartColorPassRenderer\n public readonly theme: Theme\n\n constructor(canvas: HTMLCanvasElement, theme: Theme) {\n this.gl = new WebGL.Context(canvas)\n this.rectangleBatchRenderer = new RectangleBatchRenderer(this.gl)\n this.textureRenderer = new TextureRenderer(this.gl)\n this.viewportRectangleRenderer = new ViewportRectangleRenderer(this.gl, theme)\n this.flamechartColorPassRenderer = new FlamechartColorPassRenderer(this.gl, theme)\n this.theme = theme\n\n // Whenever the canvas is resized, draw immediately. This prevents\n // flickering during resizing.\n this.gl.addAfterResizeEventHandler(this.onBeforeFrame)\n\n const webGLInfo = this.gl.getWebGLInfo()\n if (webGLInfo) {\n console.log(\n `WebGL initialized. renderer: ${webGLInfo.renderer}, vendor: ${webGLInfo.vendor}, version: ${webGLInfo.version}`,\n )\n }\n ;(window as any)['testContextLoss'] = () => {\n this.gl.testContextLoss()\n }\n }\n\n private animationFrameRequest: number | null = null\n private beforeFrameHandlers = new Set()\n addBeforeFrameHandler(callback: FrameCallback) {\n this.beforeFrameHandlers.add(callback)\n }\n removeBeforeFrameHandler(callback: FrameCallback) {\n this.beforeFrameHandlers.delete(callback)\n }\n requestFrame() {\n if (!this.animationFrameRequest) {\n this.animationFrameRequest = requestAnimationFrame(this.onBeforeFrame)\n }\n }\n private onBeforeFrame = () => {\n this.animationFrameRequest = null\n this.gl.setViewport(0, 0, this.gl.renderTargetWidthInPixels, this.gl.renderTargetHeightInPixels)\n const color = Color.fromCSSHex(this.theme.bgPrimaryColor)\n this.gl.clear(new Graphics.Color(color.r, color.g, color.b, color.a))\n\n for (const handler of this.beforeFrameHandlers) {\n handler()\n }\n }\n\n setViewport(physicalBounds: Rect, cb: () => void): void {\n const {origin, size} = physicalBounds\n let viewportBefore = this.gl.viewport\n this.gl.setViewport(origin.x, origin.y, size.x, size.y)\n\n cb()\n\n let {x, y, width, height} = viewportBefore\n this.gl.setViewport(x, y, width, height)\n }\n\n renderBehind(el: Element, cb: () => void) {\n const bounds = el.getBoundingClientRect()\n const physicalBounds = new Rect(\n new Vec2(bounds.left * window.devicePixelRatio, bounds.top * window.devicePixelRatio),\n new Vec2(bounds.width * window.devicePixelRatio, bounds.height * window.devicePixelRatio),\n )\n\n this.setViewport(physicalBounds, cb)\n }\n}\n","import {Frame, Profile} from '../lib/profile'\nimport {memoizeByReference, memoizeByShallowEquality} from '../lib/utils'\nimport {RowAtlas} from '../gl/row-atlas'\nimport {CanvasContext} from '../gl/canvas-context'\nimport {FlamechartRowAtlasKey} from '../gl/flamechart-renderer'\nimport {Theme} from '../views/themes/theme'\n\nexport const createGetColorBucketForFrame = memoizeByReference(\n (frameToColorBucket: Map) => {\n return (frame: Frame): number => {\n return frameToColorBucket.get(frame.key) || 0\n }\n },\n)\n\nexport const createGetCSSColorForFrame = memoizeByShallowEquality(\n ({\n theme,\n frameToColorBucket,\n }: {\n theme: Theme\n frameToColorBucket: Map\n }) => {\n const getColorBucketForFrame = createGetColorBucketForFrame(frameToColorBucket)\n return (frame: Frame): string => {\n const t = getColorBucketForFrame(frame) / 255\n return theme.colorForBucket(t).toCSS()\n }\n },\n)\n\nexport const getCanvasContext = memoizeByShallowEquality(\n ({theme, canvas}: {theme: Theme; canvas: HTMLCanvasElement}) => {\n return new CanvasContext(canvas, theme)\n },\n)\n\nexport const getRowAtlas = memoizeByReference((canvasContext: CanvasContext) => {\n return new RowAtlas(\n canvasContext.gl,\n canvasContext.rectangleBatchRenderer,\n canvasContext.textureRenderer,\n )\n})\n\nexport const getProfileToView = memoizeByShallowEquality(\n ({profile, flattenRecursion}: {profile: Profile; flattenRecursion: boolean}): Profile => {\n return flattenRecursion ? profile.getProfileWithRecursionFlattened() : profile\n },\n)\nexport const getFrameToColorBucket = memoizeByReference(\n (profile: Profile): Map => {\n const frames: Frame[] = []\n profile.forEachFrame(f => frames.push(f))\n function key(f: Frame) {\n return (f.file || '') + f.name\n }\n function compare(a: Frame, b: Frame) {\n return key(a) > key(b) ? 1 : -1\n }\n frames.sort(compare)\n const frameToColorBucket = new Map()\n for (let i = 0; i < frames.length; i++) {\n frameToColorBucket.set(frames[i].key, Math.floor((255 * i) / frames.length))\n }\n\n return frameToColorBucket\n },\n)\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport class PureComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\t// Some third-party libraries check if this property is present\n\t\tthis.isPureReactComponent = true;\n\t}\n\n\tshouldComponentUpdate(props, state) {\n\t\treturn (\n\t\t\tshallowDiffers(this.props, props) || shallowDiffers(this.state, state)\n\t\t);\n\t}\n}\n","import { createElement } from 'preact';\nimport { shallowDiffers, assign } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, assign({}, props));\n\t}\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref);\n\t}\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (!children) return null;\n\treturn toChildArray(children).reduce(\n\t\t(acc, value, index) => acc.concat(fn(value, index)),\n\t\t[]\n\t);\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tchildren = toChildArray(children);\n\t\tif (children.length !== 1) {\n\t\t\tthrow new Error('Children.only() expects only one child.');\n\t\t}\n\t\treturn children[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode._component);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {Component} suspendingComponent The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingComponent) {\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = c.state._suspended;\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\treturn [\n\t\tcreateElement(Component, null, state._suspended ? null : props.children),\n\t\tstate._suspended && props.fallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('../src/internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tconst list = this;\n\tlist._map.forEach((node, child) => {\n\t\tresolve(list, child, node);\n\t});\n};\n","import { createElement, hydrate, render, _unmount } from 'preact';\n\nclass ContextProvider {\n\tgetChildContext() {\n\t\treturn this.props.context;\n\t}\n\trender(props) {\n\t\treturn props.children;\n\t}\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n */\nfunction Portal(props) {\n\tlet _this = this;\n\tlet container = props.container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops.vnode\n\t);\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props.vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n\n\t_this.componentWillUnmount = () => {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\treturn null;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { vnode, container });\n}\n","/**\n * Normalize event handlers like react does. Most famously it uses `onChange` for any input element.\n * @param {import('./internal').VNode} vnode The vnode to normalize events on\n */\nexport function applyEventNormalization({ type, props }) {\n\tif (!props || typeof type != 'string') return;\n\tlet newProps = {};\n\n\tfor (let i in props) {\n\t\tif (/^on(Ani|Tra|Tou)/.test(i)) {\n\t\t\tprops[i.toLowerCase()] = props[i];\n\t\t\tdelete props[i];\n\t\t}\n\t\tnewProps[i.toLowerCase()] = i;\n\t}\n\tif (newProps.ondoubleclick) {\n\t\tprops.ondblclick = props[newProps.ondoubleclick];\n\t\tdelete props[newProps.ondoubleclick];\n\t}\n\tif (newProps.onbeforeinput) {\n\t\tprops.onbeforeinput = props[newProps.onbeforeinput];\n\t\tdelete props[newProps.onbeforeinput];\n\t}\n\t// for *textual inputs* (incl textarea), normalize `onChange` -> `onInput`:\n\tif (\n\t\tnewProps.onchange &&\n\t\t(type === 'textarea' ||\n\t\t\t(type.toLowerCase() === 'input' && !/^fil|che|ra/i.test(props.type)))\n\t) {\n\t\tlet normalized = newProps.oninput || 'oninput';\n\t\tif (!props[normalized]) {\n\t\t\tprops[normalized] = props[newProps.onchange];\n\t\t\tdelete props[newProps.onchange];\n\t\t}\n\t}\n}\n","// This is a very small application state management library.\n//\n// All it provides is a way of specifying state \"atoms\" (basically a value with\n// a setter and a way to be notified when the value updates), and a single\n// preact hook to manage the subscribe/unsubscribe process for you.\n//\n// At the moment, atoms are intended to be globally defined, but the system\n// could easily be adapted to pass down the atoms via context rather than being\n// globally available.\n//\n// To support complex data-types, you can either have simple functions that call\n// the public setter, or subclass Atom. So, for example, here are a few\n// different ways of making a list atom with convenient helpers:\n//\n// # Simple functions being passed atom\n//\n// const myListAtom = new Atom([], \"myList\")\n// function push(atom: Atom, t: T) {\n// const next = [...atom.get(), t]\n// atom.set(next)\n// }\n// function removeLast(atom: Atom, t: T) {\n// const next = [...atom.get()]\n// next.pop()\n// atom.set(next)\n// }\n//\n//\n// # Simple functions operating on global atoms\n//\n// const myListAtom = new Atom([], \"myLisT\")\n// function push(t: number) {\n// myListAtom.set([...myListAtom.get(), t])\n// }\n// function removeLast() {\n// const next = [...myListAtom.get()]\n// myListAtom.set(next)\n// }\n//\n//\n// # Subclassing\n//\n// class ListAtom extends Atom {\n// push(t: T) {\n// const next = [...this.state, t]\n// this.set(next)\n// }\n// removeLast() {\n// const next = [...this.state]\n// next.pop()\n// this.set(next)\n// }\n// }\n// const myListAtom = new ListAtom([], \"myList\")\n//\n// This library is inspired by https://recoiljs.org/\n\nimport {useLayoutEffect, useState} from 'preact/hooks'\n\ntype AtomListener = () => void\n\nlet AtomDev: {[key: string]: Atom} | null = null\nlet hotReloadStash: Map | null = null\n\ndeclare const module: any\nif (process.env.NODE_ENV === 'development') {\n ;(window as any)['Atom'] = AtomDev = {}\n\n module.hot.dispose(() => {\n if (AtomDev) {\n hotReloadStash = new Map()\n for (let key in AtomDev) {\n hotReloadStash.set(key, AtomDev[key].get())\n }\n }\n\n ;(window as any)['Atom_hotReloadStash'] = hotReloadStash\n })\n\n hotReloadStash = (window as any)['Atom_hotReloadStash'] || null\n}\n\nexport class Atom {\n private observers: AtomListener[] = []\n constructor(protected state: T, debugKey: string) {\n if (process.env.NODE_ENV === 'development') {\n if (hotReloadStash?.has(debugKey)) {\n // If we have a stored value from a previous hot reload, use that\n // instead of whatever was passed to the constructor.\n this.state = hotReloadStash.get(debugKey)\n }\n\n if (AtomDev) {\n if (debugKey in AtomDev) {\n console.warn(`[Atom] Multiple atoms tried to register with the key ${debugKey}`)\n }\n AtomDev[debugKey] = this\n }\n }\n\n // We do the bind here rather than in the definition to facilitate\n // inheritance (we want the value defined on both the prototype and the\n // instance).\n this.set = this.set.bind(this)\n this.get = this.get.bind(this)\n }\n\n set(t: T) {\n if (this.state === t) {\n // No-op if the value didn't actually change\n return\n }\n this.state = t\n this.observers.forEach(fn => fn())\n }\n\n get(): T {\n return this.state\n }\n\n subscribe(listener: AtomListener) {\n this.observers.push(listener)\n }\n\n unsubscribe(listener: AtomListener) {\n const index = this.observers.indexOf(listener)\n if (index !== -1) {\n this.observers.splice(index, 1)\n }\n }\n}\n\nexport function useAtom(atom: Atom): T {\n const [value, setValue] = useState(atom.get())\n\n useLayoutEffect(() => {\n // We need to setValue here because it's possible something has changed the\n // value in the store between the atom.get() call above and layout. In most\n // cases this should no-op.\n setValue(atom.get())\n\n function listener() {\n setValue(atom.get())\n }\n\n atom.subscribe(listener)\n return () => {\n atom.unsubscribe(listener)\n }\n }, [atom])\n\n return value\n}\n","export const enum ViewMode {\n CHRONO_FLAME_CHART,\n LEFT_HEAVY_FLAME_GRAPH,\n SANDWICH_VIEW,\n}\n","import {ViewMode} from '../lib/view-mode'\n\nexport interface HashParams {\n profileURL?: string\n title?: string\n localProfilePath?: string\n viewMode?: ViewMode\n}\n\nfunction getViewMode(value: string): ViewMode | null {\n switch (value) {\n case 'time-ordered':\n return ViewMode.CHRONO_FLAME_CHART\n case 'left-heavy':\n return ViewMode.LEFT_HEAVY_FLAME_GRAPH\n case 'sandwich':\n return ViewMode.SANDWICH_VIEW\n default:\n return null\n }\n}\n\nexport function getHashParams(hashContents = window.location.hash): HashParams {\n try {\n if (!hashContents.startsWith('#')) {\n return {}\n }\n const components = hashContents.substr(1).split('&')\n const result: HashParams = {}\n for (const component of components) {\n let [key, value] = component.split('=')\n value = decodeURIComponent(value)\n if (key === 'profileURL') {\n result.profileURL = value\n } else if (key === 'title') {\n result.title = value\n } else if (key === 'localProfilePath') {\n result.localProfilePath = value\n } else if (key === 'view') {\n const mode = getViewMode(value)\n if (mode !== null) {\n result.viewMode = mode\n } else {\n console.error(`Ignoring invalid view specifier: ${value}`)\n }\n }\n }\n return result\n } catch (e) {\n console.error(`Error when loading hash fragment.`)\n console.error(e)\n return {}\n }\n}\n","import {Atom} from '../lib/atom'\nimport {clamp, Rect, Vec2} from '../lib/math'\nimport {CallTreeNode, Frame, Profile, ProfileGroup} from '../lib/profile'\nimport {objectsHaveShallowEquality} from '../lib/utils'\n\nexport interface FlamechartViewState {\n hover: {\n node: CallTreeNode\n event: MouseEvent\n } | null\n selectedNode: CallTreeNode | null\n logicalSpaceViewportSize: Vec2\n configSpaceViewportRect: Rect\n}\n\nexport interface CallerCalleeState {\n selectedFrame: Frame\n invertedCallerFlamegraph: FlamechartViewState\n calleeFlamegraph: FlamechartViewState\n}\n\nexport interface SandwichViewState {\n callerCallee: CallerCalleeState | null\n}\n\nexport interface ProfileState {\n profile: Profile\n chronoViewState: FlamechartViewState\n leftHeavyViewState: FlamechartViewState\n sandwichViewState: SandwichViewState\n}\n\nexport type ProfileGroupState = {\n name: string\n\n // The index within the list of profiles currently being viewed\n indexToView: number\n\n profiles: ProfileState[]\n} | null\n\nexport enum FlamechartID {\n LEFT_HEAVY = 'LEFT_HEAVY',\n CHRONO = 'CHRONO',\n SANDWICH_INVERTED_CALLERS = 'SANDWICH_INVERTED_CALLERS',\n SANDWICH_CALLEES = 'SANDWICH_CALLEES',\n}\n\nlet initialFlameChartViewState: FlamechartViewState = {\n hover: null,\n selectedNode: null,\n configSpaceViewportRect: Rect.empty,\n logicalSpaceViewportSize: Vec2.zero,\n}\n\nexport class ProfileGroupAtom extends Atom {\n set(newState: ProfileGroupState) {\n const oldState = this.state\n if (oldState != null && newState != null && objectsHaveShallowEquality(oldState, newState)) {\n return\n }\n super.set(newState)\n }\n\n getActiveProfile(): ProfileState | null {\n if (this.state == null) return null\n return this.state.profiles[this.state?.indexToView] || null\n }\n\n setProfileGroup = (group: ProfileGroup) => {\n this.set({\n name: group.name,\n indexToView: group.indexToView,\n profiles: group.profiles.map(p => ({\n profile: p,\n chronoViewState: initialFlameChartViewState,\n leftHeavyViewState: initialFlameChartViewState,\n sandwichViewState: {callerCallee: null},\n })),\n })\n }\n\n setProfileIndexToView = (indexToView: number) => {\n if (this.state == null) return\n\n indexToView = clamp(indexToView, 0, this.state.profiles.length - 1)\n\n this.set({\n ...this.state,\n indexToView,\n })\n }\n\n private updateActiveProfileState(fn: (profileState: ProfileState) => ProfileState) {\n if (this.state == null) return\n const {indexToView, profiles} = this.state\n this.set({\n ...this.state,\n profiles: profiles.map((p, i) => {\n if (i != indexToView) return p\n return fn(p)\n }),\n })\n }\n\n private updateActiveSandwichViewState(\n fn: (sandwichViewState: SandwichViewState) => SandwichViewState,\n ) {\n this.updateActiveProfileState(p => ({\n ...p,\n sandwichViewState: fn(p.sandwichViewState),\n }))\n }\n\n setSelectedFrame = (frame: Frame | null) => {\n if (this.state == null) return\n\n const profile = this.getActiveProfile()\n if (profile == null) {\n return\n }\n\n this.updateActiveSandwichViewState(sandwichViewState => {\n if (frame == null) {\n return {callerCallee: null}\n }\n return {\n callerCallee: {\n invertedCallerFlamegraph: initialFlameChartViewState,\n calleeFlamegraph: initialFlameChartViewState,\n selectedFrame: frame,\n },\n }\n })\n }\n\n private updateFlamechartState(\n id: FlamechartID,\n fn: (flamechartViewState: FlamechartViewState) => FlamechartViewState,\n ) {\n switch (id) {\n case FlamechartID.CHRONO: {\n this.updateActiveProfileState(p => ({\n ...p,\n chronoViewState: fn(p.chronoViewState),\n }))\n break\n }\n\n case FlamechartID.LEFT_HEAVY: {\n this.updateActiveProfileState(p => ({\n ...p,\n leftHeavyViewState: fn(p.leftHeavyViewState),\n }))\n break\n }\n\n case FlamechartID.SANDWICH_CALLEES: {\n this.updateActiveSandwichViewState(s => ({\n ...s,\n callerCallee:\n s.callerCallee == null\n ? null\n : {\n ...s.callerCallee,\n calleeFlamegraph: fn(s.callerCallee.calleeFlamegraph),\n },\n }))\n break\n }\n\n case FlamechartID.SANDWICH_INVERTED_CALLERS: {\n this.updateActiveSandwichViewState(s => ({\n ...s,\n callerCallee:\n s.callerCallee == null\n ? null\n : {\n ...s.callerCallee,\n invertedCallerFlamegraph: fn(s.callerCallee.invertedCallerFlamegraph),\n },\n }))\n break\n }\n }\n }\n\n setFlamechartHoveredNode(\n id: FlamechartID,\n hover: {node: CallTreeNode; event: MouseEvent} | null,\n ) {\n this.updateFlamechartState(id, f => ({\n ...f,\n hover,\n }))\n }\n\n setSelectedNode(id: FlamechartID, selectedNode: CallTreeNode | null) {\n this.updateFlamechartState(id, f => ({\n ...f,\n selectedNode,\n }))\n }\n\n setConfigSpaceViewportRect(id: FlamechartID, configSpaceViewportRect: Rect) {\n this.updateFlamechartState(id, f => ({\n ...f,\n configSpaceViewportRect,\n }))\n }\n\n setLogicalSpaceViewportSize(id: FlamechartID, logicalSpaceViewportSize: Vec2) {\n this.updateFlamechartState(id, f => ({\n ...f,\n logicalSpaceViewportSize,\n }))\n }\n\n clearHoverNode() {\n // TODO(jlfwong): This causes 4 separate observer events. This is probably\n // fine, since I hope that Preact/React are smart about batching re-renders?\n this.setFlamechartHoveredNode(FlamechartID.CHRONO, null)\n this.setFlamechartHoveredNode(FlamechartID.LEFT_HEAVY, null)\n this.setFlamechartHoveredNode(FlamechartID.SANDWICH_CALLEES, null)\n this.setFlamechartHoveredNode(FlamechartID.SANDWICH_INVERTED_CALLERS, null)\n }\n}\n","import {Atom} from '../lib/atom'\nimport {ViewMode} from '../lib/view-mode'\nimport {getHashParams, HashParams} from '../lib/hash-params'\nimport {ProfileGroupAtom} from './profile-group'\n\n// True if recursion should be flattened when viewing flamegraphs\nexport const flattenRecursionAtom = new Atom(false, 'flattenRecursion')\n\n// The query used in top-level views\n//\n// An empty string indicates that the search is open by no filter is applied.\n// searchIsActive is stored separately, because we may choose to persist the\n// query even when the search input is closed.\nexport const searchIsActiveAtom = new Atom(false, 'searchIsActive')\nexport const searchQueryAtom = new Atom('', 'searchQueryAtom')\n\n// Which top-level view should be displayed\nexport const viewModeAtom = new Atom(ViewMode.CHRONO_FLAME_CHART, 'viewMode')\n\n// The top-level profile group from which most other data will be derived\nexport const profileGroupAtom = new ProfileGroupAtom(null, 'profileGroup')\n\nviewModeAtom.subscribe(() => {\n // If we switch views, the hover information is no longer relevant\n profileGroupAtom.clearHoverNode()\n})\n\n// Parameters defined by the URL encoded k=v pairs after the # in the URL\nconst hashParams = getHashParams()\nexport const hashParamsAtom = new Atom(hashParams, 'hashParams')\n\n// The element used for WebGL\nexport const glCanvasAtom = new Atom(null, 'glCanvas')\n\n// True when a file drag is currently active. Used to indicate that the\n// application is a valid drop target.\nexport const dragActiveAtom = new Atom(false, 'dragActive')\n\n// True when the application is currently in a loading state. Used to\n// display a loading progress bar.\n\n// Speedscope is usable both from a local HTML file being served\n// from a file:// URL, and via websites. In the case of file:// URLs,\n// however, XHR will be unavailable to fetching files in adjacent directories.\nconst protocol = window.location.protocol\nexport const canUseXHR = protocol === 'http:' || protocol === 'https:'\nconst isImmediatelyLoading = canUseXHR && hashParams.profileURL != null\nexport const loadingAtom = new Atom(isImmediatelyLoading, 'loading')\n\n// True when the application is an error state, e.g. because the profile\n// imported was invalid.\nexport const errorAtom = new Atom(false, 'error')\n\nexport enum SortField {\n SYMBOL_NAME,\n SELF,\n TOTAL,\n}\n\nexport enum SortDirection {\n ASCENDING,\n DESCENDING,\n}\n\nexport interface SortMethod {\n field: SortField\n direction: SortDirection\n}\n\n// The table sorting method using for the sandwich view, specifying the column\n// to sort by, and the direction to sort that clumn.\nexport const tableSortMethodAtom = new Atom(\n {\n field: SortField.SELF,\n direction: SortDirection.DESCENDING,\n },\n 'tableSortMethod',\n)\n","import {Profile} from '../lib/profile'\nimport {getProfileToView} from './getters'\nimport {flattenRecursionAtom, profileGroupAtom} from '.'\nimport {FlamechartViewState, SandwichViewState} from './profile-group'\nimport {useAtom} from '../lib/atom'\n\nexport interface ApplicationState {}\n\nexport interface ActiveProfileState {\n profile: Profile\n index: number\n chronoViewState: FlamechartViewState\n leftHeavyViewState: FlamechartViewState\n sandwichViewState: SandwichViewState\n}\n\nexport function useActiveProfileState(): ActiveProfileState | null {\n const flattenRecursion = useAtom(flattenRecursionAtom)\n const profileGroupState = useAtom(profileGroupAtom)\n\n if (!profileGroupState) return null\n if (profileGroupState.indexToView >= profileGroupState.profiles.length) return null\n\n const index = profileGroupState.indexToView\n const profileState = profileGroupState.profiles[index]\n return {\n ...profileGroupState.profiles[profileGroupState.indexToView],\n profile: getProfileToView({\n profile: profileState.profile,\n flattenRecursion,\n }),\n index: profileGroupState.indexToView,\n }\n}\n","import {Atom} from '../lib/atom'\n\nexport const enum ColorScheme {\n // Default: respect prefers-color-schema\n SYSTEM,\n\n // Use dark theme\n DARK,\n\n // use light theme\n LIGHT,\n}\n\nconst localStorageKey = 'speedscope-color-scheme'\n\nfunction getStoredPreference(): ColorScheme {\n const storedPreference = window.localStorage && window.localStorage[localStorageKey]\n if (storedPreference === 'DARK') {\n return ColorScheme.DARK\n } else if (storedPreference === 'LIGHT') {\n return ColorScheme.LIGHT\n } else {\n return ColorScheme.SYSTEM\n }\n}\n\nfunction matchMediaDarkColorScheme(): MediaQueryList {\n return matchMedia('(prefers-color-scheme: dark)')\n}\n\nfunction nextColorScheme(scheme: ColorScheme): ColorScheme {\n const systemPrefersDarkMode = matchMediaDarkColorScheme().matches\n\n // We'll use a different cycling order for changing the color scheme depending\n // on what the *current* system preference is. This should guarantee that when\n // a user interacts with the color scheme toggle for the first time, it always\n // changes the color scheme.\n if (systemPrefersDarkMode) {\n switch (scheme) {\n case ColorScheme.SYSTEM: {\n return ColorScheme.LIGHT\n }\n case ColorScheme.LIGHT: {\n return ColorScheme.DARK\n }\n case ColorScheme.DARK: {\n return ColorScheme.SYSTEM\n }\n }\n } else {\n switch (scheme) {\n case ColorScheme.SYSTEM: {\n return ColorScheme.DARK\n }\n case ColorScheme.DARK: {\n return ColorScheme.LIGHT\n }\n case ColorScheme.LIGHT: {\n return ColorScheme.SYSTEM\n }\n }\n }\n}\n\nclass ColorSchemeAtom extends Atom {\n cycleToNextColorScheme = () => {\n this.set(nextColorScheme(this.get()))\n }\n}\n\nexport const colorSchemeAtom = new ColorSchemeAtom(getStoredPreference(), 'colorScheme')\n\ncolorSchemeAtom.subscribe(() => {\n const value = colorSchemeAtom.get()\n\n switch (value) {\n case ColorScheme.DARK: {\n window.localStorage[localStorageKey] = 'DARK'\n break\n }\n case ColorScheme.LIGHT: {\n window.localStorage[localStorageKey] = 'LIGHT'\n break\n }\n case ColorScheme.SYSTEM: {\n delete window.localStorage[localStorageKey]\n break\n }\n default: {\n const _exhaustiveCheck: never = value\n return _exhaustiveCheck\n }\n }\n return value\n})\n","import {Color} from '../../lib/color'\nimport {triangle} from '../../lib/utils'\nimport {Theme} from './theme'\n\n// These colors are intentionally not exported from this file, because these\n// colors are theme specific, and we want all color values to come from the\n// active theme.\nenum Colors {\n LIGHTER_GRAY = '#D0D0D0',\n LIGHT_GRAY = '#BDBDBD',\n GRAY = '#666666',\n DARK_GRAY = '#222222',\n DARKER_GRAY = '#0C0C0C',\n OFF_BLACK = '#060606',\n BLACK = '#000000',\n BLUE = '#00769B',\n PALE_BLUE = '#004E75',\n GREEN = '#0F8A42',\n LIGHT_BROWN = '#D6AE24',\n BROWN = '#A66F1C',\n}\n\nconst C_0 = 0.2\nconst C_d = 0.1\nconst L_0 = 0.2\nconst L_d = 0.1\n\nconst colorForBucket = (t: number) => {\n const x = triangle(30.0 * t)\n const H = 360.0 * (0.9 * t)\n const C = C_0 + C_d * x\n const L = L_0 - L_d * x\n return Color.fromLumaChromaHue(L, C, H)\n}\nconst colorForBucketGLSL = `\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${C_0.toFixed(1)} + ${C_d.toFixed(1)} * x;\n float L = ${L_0.toFixed(1)} - ${L_d.toFixed(1)} * x;\n return hcl2rgb(H, C, L);\n }\n`\n\nexport const darkTheme: Theme = {\n fgPrimaryColor: Colors.LIGHTER_GRAY,\n fgSecondaryColor: Colors.GRAY,\n\n bgPrimaryColor: Colors.OFF_BLACK,\n bgSecondaryColor: Colors.DARKER_GRAY,\n\n altFgPrimaryColor: Colors.LIGHTER_GRAY,\n altFgSecondaryColor: Colors.GRAY,\n\n altBgPrimaryColor: Colors.BLACK,\n altBgSecondaryColor: Colors.DARKER_GRAY,\n\n selectionPrimaryColor: Colors.BLUE,\n selectionSecondaryColor: Colors.PALE_BLUE,\n\n weightColor: Colors.GREEN,\n\n searchMatchTextColor: Colors.DARKER_GRAY,\n searchMatchPrimaryColor: Colors.BROWN,\n searchMatchSecondaryColor: Colors.LIGHT_BROWN,\n\n colorForBucket,\n colorForBucketGLSL,\n}\n","import {Color} from '../../lib/color'\nimport {triangle} from '../../lib/utils'\nimport {Theme} from './theme'\n\n// These colors are intentionally not exported from this file, because these\n// colors are theme specific, and we want all color values to come from the\n// active theme.\nenum Colors {\n WHITE = '#FFFFFF',\n OFF_WHITE = '#F6F6F6',\n LIGHT_GRAY = '#BDBDBD',\n GRAY = '#666666',\n DARK_GRAY = '#222222',\n OFF_BLACK = '#111111',\n BLACK = '#000000',\n DARK_BLUE = '#2F80ED',\n PALE_DARK_BLUE = '#8EB7ED',\n GREEN = '#6FCF97',\n YELLOW = '#FEDC62',\n ORANGE = '#FFAC02',\n}\n\nconst C_0 = 0.25\nconst C_d = 0.2\nconst L_0 = 0.8\nconst L_d = 0.15\n\nconst colorForBucket = (t: number) => {\n const x = triangle(30.0 * t)\n const H = 360.0 * (0.9 * t)\n const C = C_0 + C_d * x\n const L = L_0 - L_d * x\n return Color.fromLumaChromaHue(L, C, H)\n}\nconst colorForBucketGLSL = `\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${C_0.toFixed(1)} + ${C_d.toFixed(1)} * x;\n float L = ${L_0.toFixed(1)} - ${L_d.toFixed(1)} * x;\n return hcl2rgb(H, C, L);\n }\n`\n\nexport const lightTheme: Theme = {\n fgPrimaryColor: Colors.BLACK,\n fgSecondaryColor: Colors.LIGHT_GRAY,\n\n bgPrimaryColor: Colors.WHITE,\n bgSecondaryColor: Colors.OFF_WHITE,\n\n altFgPrimaryColor: Colors.WHITE,\n altFgSecondaryColor: Colors.LIGHT_GRAY,\n\n altBgPrimaryColor: Colors.BLACK,\n altBgSecondaryColor: Colors.DARK_GRAY,\n\n selectionPrimaryColor: Colors.DARK_BLUE,\n selectionSecondaryColor: Colors.PALE_DARK_BLUE,\n\n weightColor: Colors.GREEN,\n\n searchMatchTextColor: Colors.BLACK,\n searchMatchPrimaryColor: Colors.ORANGE,\n searchMatchSecondaryColor: Colors.YELLOW,\n\n colorForBucket,\n colorForBucketGLSL,\n}\n","import {h, ComponentChildren, createContext} from 'preact'\nimport {useCallback, useContext, useEffect, useState} from 'preact/hooks'\nimport {ColorScheme, colorSchemeAtom} from '../../app-state/color-scheme'\nimport {useAtom} from '../../lib/atom'\nimport {Color} from '../../lib/color'\nimport {memoizeByReference} from '../../lib/utils'\nimport {darkTheme} from './dark-theme'\nimport {lightTheme} from './light-theme'\n\nexport interface Theme {\n fgPrimaryColor: string\n fgSecondaryColor: string\n bgPrimaryColor: string\n bgSecondaryColor: string\n\n altFgPrimaryColor: string\n altFgSecondaryColor: string\n altBgPrimaryColor: string\n altBgSecondaryColor: string\n\n selectionPrimaryColor: string\n selectionSecondaryColor: string\n\n weightColor: string\n\n searchMatchTextColor: string\n searchMatchPrimaryColor: string\n searchMatchSecondaryColor: string\n\n colorForBucket: (t: number) => Color\n colorForBucketGLSL: string\n}\n\nexport const ThemeContext = createContext(lightTheme)\n\nexport function useTheme(): Theme {\n return useContext(ThemeContext)\n}\n\nexport function withTheme(cb: (theme: Theme) => T) {\n return memoizeByReference(cb)\n}\n\nfunction matchMediaDarkColorScheme(): MediaQueryList {\n return matchMedia('(prefers-color-scheme: dark)')\n}\n\nexport function colorSchemeToString(scheme: ColorScheme): string {\n switch (scheme) {\n case ColorScheme.SYSTEM: {\n return 'System'\n }\n case ColorScheme.DARK: {\n return 'Dark'\n }\n case ColorScheme.LIGHT: {\n return 'Light'\n }\n }\n}\n\nfunction getTheme(colorScheme: ColorScheme, systemPrefersDarkMode: boolean) {\n switch (colorScheme) {\n case ColorScheme.SYSTEM: {\n return systemPrefersDarkMode ? darkTheme : lightTheme\n }\n case ColorScheme.DARK: {\n return darkTheme\n }\n case ColorScheme.LIGHT: {\n return lightTheme\n }\n }\n}\n\nexport function ThemeProvider(props: {children: ComponentChildren}) {\n const [systemPrefersDarkMode, setSystemPrefersDarkMode] = useState(\n () => matchMediaDarkColorScheme().matches,\n )\n\n const matchMediaListener = useCallback(\n (event: MediaQueryListEvent) => {\n setSystemPrefersDarkMode(event.matches)\n },\n [setSystemPrefersDarkMode],\n )\n\n useEffect(() => {\n const media = matchMediaDarkColorScheme()\n media.addEventListener('change', matchMediaListener)\n return () => {\n media.removeEventListener('change', matchMediaListener)\n }\n }, [matchMediaListener])\n\n const colorScheme = useAtom(colorSchemeAtom)\n const theme = getTheme(colorScheme, systemPrefersDarkMode)\n return \n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = calc;\n\nvar _isPrefixedValue = require(\"css-in-js-utils/lib/isPrefixedValue\");\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = [\"-webkit-\", \"-moz-\", \"\"];\nfunction calc(property, value) {\n if (typeof value === \"string\" && !(0, _isPrefixedValue2.default)(value) && value.indexOf(\"calc(\") > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/calc\\(/g, prefix + \"calc(\");\n });\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = crossFade;\n\nvar _isPrefixedValue = require(\"css-in-js-utils/lib/isPrefixedValue\");\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = [\"-webkit-\", \"\"];\nfunction crossFade(property, value) {\n if (typeof value === \"string\" && !(0, _isPrefixedValue2.default)(value) && value.indexOf(\"cross-fade(\") > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + \"cross-fade(\");\n });\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = cursor;\nvar prefixes = [\"-webkit-\", \"-moz-\", \"\"];\n\nvar values = {\n \"zoom-in\": true,\n \"zoom-out\": true,\n grab: true,\n grabbing: true\n};\n\nfunction cursor(property, value) {\n if (property === \"cursor\" && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = filter;\n\nvar _isPrefixedValue = require(\"css-in-js-utils/lib/isPrefixedValue\");\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = [\"-webkit-\", \"\"];\nfunction filter(property, value) {\n if (typeof value === \"string\" && !(0, _isPrefixedValue2.default)(value) && value.indexOf(\"filter(\") > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + \"filter(\");\n });\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flex;\nvar values = {\n flex: [\"-webkit-box\", \"-moz-box\", \"-ms-flexbox\", \"-webkit-flex\", \"flex\"],\n \"inline-flex\": [\"-webkit-inline-box\", \"-moz-inline-box\", \"-ms-inline-flexbox\", \"-webkit-inline-flex\", \"inline-flex\"]\n};\n\nfunction flex(property, value) {\n if (property === \"display\" && values.hasOwnProperty(value)) {\n return values[value];\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxIE;\nvar alternativeValues = {\n \"space-around\": \"distribute\",\n \"space-between\": \"justify\",\n \"flex-start\": \"start\",\n \"flex-end\": \"end\"\n};\nvar alternativeProps = {\n alignContent: \"msFlexLinePack\",\n alignSelf: \"msFlexItemAlign\",\n alignItems: \"msFlexAlign\",\n justifyContent: \"msFlexPack\",\n order: \"msFlexOrder\",\n flexGrow: \"msFlexPositive\",\n flexShrink: \"msFlexNegative\",\n flexBasis: \"msFlexPreferredSize\"\n};\n\nfunction flexboxIE(property, value, style) {\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = flexboxOld;\nvar alternativeValues = {\n \"space-around\": \"justify\",\n \"space-between\": \"justify\",\n \"flex-start\": \"start\",\n \"flex-end\": \"end\",\n \"wrap-reverse\": \"multiple\",\n wrap: \"multiple\"\n};\n\nvar alternativeProps = {\n alignItems: \"WebkitBoxAlign\",\n justifyContent: \"WebkitBoxPack\",\n flexWrap: \"WebkitBoxLines\"\n};\n\nfunction flexboxOld(property, value, style) {\n if (property === \"flexDirection\" && typeof value === \"string\") {\n if (value.indexOf(\"column\") > -1) {\n style.WebkitBoxOrient = \"vertical\";\n } else {\n style.WebkitBoxOrient = \"horizontal\";\n }\n if (value.indexOf(\"reverse\") > -1) {\n style.WebkitBoxDirection = \"reverse\";\n } else {\n style.WebkitBoxDirection = \"normal\";\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = gradient;\n\nvar _isPrefixedValue = require(\"css-in-js-utils/lib/isPrefixedValue\");\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar prefixes = [\"-webkit-\", \"-moz-\", \"\"];\n\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;\n\nfunction gradient(property, value) {\n if (typeof value === \"string\" && !(0, _isPrefixedValue2.default)(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = imageSet;\n\nvar _isPrefixedValue = require(\"css-in-js-utils/lib/isPrefixedValue\");\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = [\"-webkit-\", \"\"];\nfunction imageSet(property, value) {\n if (typeof value === \"string\" && !(0, _isPrefixedValue2.default)(value) && value.indexOf(\"image-set(\") > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + \"image-set(\");\n });\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = position;\nfunction position(property, value) {\n if (property === \"position\" && value === \"sticky\") {\n return [\"-webkit-sticky\", \"sticky\"];\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = sizing;\nvar prefixes = [\"-webkit-\", \"-moz-\", \"\"];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n \"min-content\": true,\n \"max-content\": true,\n \"fill-available\": true,\n \"fit-content\": true,\n \"contain-floats\": true\n};\n\nfunction sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\n\nfunction hyphenateStyleName(string) {\n return string in cache\n ? cache[string]\n : cache[string] = string\n .replace(uppercasePattern, '-$&')\n .toLowerCase()\n .replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = capitalizeString;\nfunction capitalizeString(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = transition;\n\nvar _hyphenateProperty = require(\"css-in-js-utils/lib/hyphenateProperty\");\n\nvar _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);\n\nvar _isPrefixedValue = require(\"css-in-js-utils/lib/isPrefixedValue\");\n\nvar _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);\n\nvar _capitalizeString = require(\"../../utils/capitalizeString\");\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\n\nvar prefixMapping = {\n Webkit: \"-webkit-\",\n Moz: \"-moz-\",\n ms: \"-ms-\"\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if ((0, _isPrefixedValue2.default)(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = (0, _hyphenateProperty2.default)(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== \"order\") {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(\",\");\n }\n\n return multipleValues.join(\",\");\n}\n\nfunction transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === \"string\" && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(\",\");\n\n if (property.indexOf(\"Webkit\") > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(\",\");\n\n if (property.indexOf(\"Moz\") > -1) {\n return mozOutput;\n }\n\n style[\"Webkit\" + (0, _capitalizeString2.default)(property)] = webkitOutput;\n style[\"Moz\" + (0, _capitalizeString2.default)(property)] = mozOutput;\n return outputValue;\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nfunction hash(str) {\n var hash = 5381,\n i = str.length;\n\n while(i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */\n return hash >>> 0;\n}\n\nmodule.exports = hash;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixProperty;\n\nvar _capitalizeString = require(\"./capitalizeString\");\n\nvar _capitalizeString2 = _interopRequireDefault(_capitalizeString);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction prefixProperty(prefixProperties, property, style) {\n if (prefixProperties.hasOwnProperty(property)) {\n var newStyle = {};\n var requiredPrefixes = prefixProperties[property];\n var capitalizedProperty = (0, _capitalizeString2.default)(property);\n var keys = Object.keys(style);\n for (var i = 0; i < keys.length; i++) {\n var styleProperty = keys[i];\n if (styleProperty === property) {\n for (var j = 0; j < requiredPrefixes.length; j++) {\n newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property];\n }\n }\n newStyle[styleProperty] = style[styleProperty];\n }\n return newStyle;\n }\n return style;\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = prefixValue;\nfunction prefixValue(plugins, property, value, style, metaData) {\n for (var i = 0, len = plugins.length; i < len; ++i) {\n var processedValue = plugins[i](property, value, style, metaData);\n\n // we can stop processing if a value is returned\n // as all plugin criteria are unique\n if (processedValue) {\n return processedValue;\n }\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addNewValuesOnly;\nfunction addIfNew(list, value) {\n if (list.indexOf(value) === -1) {\n list.push(value);\n }\n}\n\nfunction addNewValuesOnly(list, values) {\n if (Array.isArray(values)) {\n for (var i = 0, len = values.length; i < len; ++i) {\n addIfNew(list, values[i]);\n }\n } else {\n addIfNew(list, values);\n }\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isObject;\nfunction isObject(value) {\n return value instanceof Object && !Array.isArray(value);\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPrefixer;\n\nvar _prefixProperty = require(\"../utils/prefixProperty\");\n\nvar _prefixProperty2 = _interopRequireDefault(_prefixProperty);\n\nvar _prefixValue = require(\"../utils/prefixValue\");\n\nvar _prefixValue2 = _interopRequireDefault(_prefixValue);\n\nvar _addNewValuesOnly = require(\"../utils/addNewValuesOnly\");\n\nvar _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);\n\nvar _isObject = require(\"../utils/isObject\");\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createPrefixer(_ref) {\n var prefixMap = _ref.prefixMap,\n plugins = _ref.plugins;\n\n function prefixAll(style) {\n for (var property in style) {\n var value = style[property];\n\n // handle nested objects\n if ((0, _isObject2.default)(value)) {\n style[property] = prefixAll(value);\n // handle array values\n } else if (Array.isArray(value)) {\n var combinedValue = [];\n\n for (var i = 0, len = value.length; i < len; ++i) {\n var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);\n (0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);\n }\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (combinedValue.length > 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = (0, _prefixProperty2.default)(prefixMap, property, style);\n }\n }\n\n return style;\n }\n\n return prefixAll;\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n","import calc from 'inline-style-prefixer/static/plugins/calc';\nimport crossFade from 'inline-style-prefixer/static/plugins/crossFade';\nimport cursor from 'inline-style-prefixer/static/plugins/cursor';\nimport filter from 'inline-style-prefixer/static/plugins/filter';\nimport flex from 'inline-style-prefixer/static/plugins/flex';\nimport flexboxIE from 'inline-style-prefixer/static/plugins/flexboxIE';\nimport flexboxOld from 'inline-style-prefixer/static/plugins/flexboxOld';\nimport gradient from 'inline-style-prefixer/static/plugins/gradient';\nimport imageSet from 'inline-style-prefixer/static/plugins/imageSet';\nimport position from 'inline-style-prefixer/static/plugins/position';\nimport sizing from 'inline-style-prefixer/static/plugins/sizing';\nimport transition from 'inline-style-prefixer/static/plugins/transition';\nimport stringHash from 'string-hash';\nimport createPrefixer from 'inline-style-prefixer/static/createPrefixer';\nimport asap from 'asap';\n\nvar w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\", \"Moz\"];\nvar wms = [\"Webkit\", \"ms\"];\nvar wmms = [\"Webkit\", \"Moz\", \"ms\"];\n\nvar staticPrefixData = {\n plugins: [calc, crossFade, cursor, filter, flex, flexboxIE, flexboxOld, gradient, imageSet, position, sizing, transition],\n prefixMap: { \"transform\": wms, \"transformOrigin\": wms, \"transformOriginX\": wms, \"transformOriginY\": wms, \"backfaceVisibility\": w, \"perspective\": w, \"perspectiveOrigin\": w, \"transformStyle\": w, \"transformOriginZ\": w, \"animation\": w, \"animationDelay\": w, \"animationDirection\": w, \"animationFillMode\": w, \"animationDuration\": w, \"animationIterationCount\": w, \"animationName\": w, \"animationPlayState\": w, \"animationTimingFunction\": w, \"appearance\": wm, \"userSelect\": wmms, \"fontKerning\": w, \"textEmphasisPosition\": w, \"textEmphasis\": w, \"textEmphasisStyle\": w, \"textEmphasisColor\": w, \"boxDecorationBreak\": w, \"clipPath\": w, \"maskImage\": w, \"maskMode\": w, \"maskRepeat\": w, \"maskPosition\": w, \"maskClip\": w, \"maskOrigin\": w, \"maskSize\": w, \"maskComposite\": w, \"mask\": w, \"maskBorderSource\": w, \"maskBorderMode\": w, \"maskBorderSlice\": w, \"maskBorderWidth\": w, \"maskBorderOutset\": w, \"maskBorderRepeat\": w, \"maskBorder\": w, \"maskType\": w, \"textDecorationStyle\": wm, \"textDecorationSkip\": wm, \"textDecorationLine\": wm, \"textDecorationColor\": wm, \"filter\": w, \"fontFeatureSettings\": wm, \"breakAfter\": wmms, \"breakBefore\": wmms, \"breakInside\": wmms, \"columnCount\": wm, \"columnFill\": wm, \"columnGap\": wm, \"columnRule\": wm, \"columnRuleColor\": wm, \"columnRuleStyle\": wm, \"columnRuleWidth\": wm, \"columns\": wm, \"columnSpan\": wm, \"columnWidth\": wm, \"writingMode\": wms, \"flex\": wms, \"flexBasis\": w, \"flexDirection\": wms, \"flexGrow\": w, \"flexFlow\": wms, \"flexShrink\": w, \"flexWrap\": wms, \"alignContent\": w, \"alignItems\": w, \"alignSelf\": w, \"justifyContent\": w, \"order\": w, \"transitionDelay\": w, \"transitionDuration\": w, \"transitionProperty\": w, \"transitionTimingFunction\": w, \"backdropFilter\": w, \"scrollSnapType\": wms, \"scrollSnapPointsX\": wms, \"scrollSnapPointsY\": wms, \"scrollSnapDestination\": wms, \"scrollSnapCoordinate\": wms, \"shapeImageThreshold\": w, \"shapeImageMargin\": w, \"shapeImageOutside\": w, \"hyphens\": wmms, \"flowInto\": wms, \"flowFrom\": wms, \"regionFragment\": wms, \"boxSizing\": m, \"textAlignLast\": m, \"tabSize\": m, \"wrapFlow\": ms, \"wrapThrough\": ms, \"wrapMargin\": ms, \"touchAction\": ms, \"gridTemplateColumns\": ms, \"gridTemplateRows\": ms, \"gridTemplateAreas\": ms, \"gridTemplate\": ms, \"gridAutoColumns\": ms, \"gridAutoRows\": ms, \"gridAutoFlow\": ms, \"grid\": ms, \"gridRowStart\": ms, \"gridColumnStart\": ms, \"gridRowEnd\": ms, \"gridRow\": ms, \"gridColumn\": ms, \"gridColumnEnd\": ms, \"gridColumnGap\": ms, \"gridRowGap\": ms, \"gridArea\": ms, \"gridGap\": ms, \"textSizeAdjust\": wms, \"borderImage\": w, \"borderImageOutset\": w, \"borderImageRepeat\": w, \"borderImageSlice\": w, \"borderImageSource\": w, \"borderImageWidth\": w }\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MAP_EXISTS = typeof Map !== 'undefined';\n\nvar OrderedElements = function () {\n /* ::\n elements: {[string]: any};\n keyOrder: string[];\n */\n\n function OrderedElements() {\n _classCallCheck(this, OrderedElements);\n\n this.elements = {};\n this.keyOrder = [];\n }\n\n _createClass(OrderedElements, [{\n key: 'forEach',\n value: function () {\n function forEach(callback /* : (string, any) => void */) {\n for (var i = 0; i < this.keyOrder.length; i++) {\n // (value, key) to match Map's API\n callback(this.elements[this.keyOrder[i]], this.keyOrder[i]);\n }\n }\n\n return forEach;\n }()\n }, {\n key: 'set',\n value: function () {\n function set(key /* : string */, value /* : any */, shouldReorder /* : ?boolean */) {\n if (!this.elements.hasOwnProperty(key)) {\n this.keyOrder.push(key);\n } else if (shouldReorder) {\n var index = this.keyOrder.indexOf(key);\n this.keyOrder.splice(index, 1);\n this.keyOrder.push(key);\n }\n\n if (value == null) {\n this.elements[key] = value;\n return;\n }\n\n if (MAP_EXISTS && value instanceof Map || value instanceof OrderedElements) {\n // We have found a nested Map, so we need to recurse so that all\n // of the nested objects and Maps are merged properly.\n var nested = this.elements.hasOwnProperty(key) ? this.elements[key] : new OrderedElements();\n value.forEach(function (value, key) {\n nested.set(key, value, shouldReorder);\n });\n this.elements[key] = nested;\n return;\n }\n\n if (!Array.isArray(value) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') {\n // We have found a nested object, so we need to recurse so that all\n // of the nested objects and Maps are merged properly.\n var _nested = this.elements.hasOwnProperty(key) ? this.elements[key] : new OrderedElements();\n var keys = Object.keys(value);\n for (var i = 0; i < keys.length; i += 1) {\n _nested.set(keys[i], value[keys[i]], shouldReorder);\n }\n this.elements[key] = _nested;\n return;\n }\n\n this.elements[key] = value;\n }\n\n return set;\n }()\n }, {\n key: 'get',\n value: function () {\n function get(key /* : string */) /* : any */{\n return this.elements[key];\n }\n\n return get;\n }()\n }, {\n key: 'has',\n value: function () {\n function has(key /* : string */) /* : boolean */{\n return this.elements.hasOwnProperty(key);\n }\n\n return has;\n }()\n }, {\n key: 'addStyleType',\n value: function () {\n function addStyleType(styleType /* : any */) /* : void */{\n var _this = this;\n\n if (MAP_EXISTS && styleType instanceof Map || styleType instanceof OrderedElements) {\n styleType.forEach(function (value, key) {\n _this.set(key, value, true);\n });\n } else {\n var keys = Object.keys(styleType);\n for (var i = 0; i < keys.length; i++) {\n this.set(keys[i], styleType[keys[i]], true);\n }\n }\n }\n\n return addStyleType;\n }()\n }]);\n\n return OrderedElements;\n}();\n\n/* ::\ntype ObjectMap = { [id:string]: any };\n*/\n\nvar UPPERCASE_RE = /([A-Z])/g;\nvar UPPERCASE_RE_TO_KEBAB = function UPPERCASE_RE_TO_KEBAB(match /* : string */) {\n return (/* : string */'-' + String(match.toLowerCase())\n );\n};\n\nvar kebabifyStyleName = function kebabifyStyleName(string /* : string */) /* : string */{\n var result = string.replace(UPPERCASE_RE, UPPERCASE_RE_TO_KEBAB);\n if (result[0] === 'm' && result[1] === 's' && result[2] === '-') {\n return '-' + String(result);\n }\n return result;\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n * Taken from React's CSSProperty.js\n */\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * Taken from React's CSSProperty.js\n *\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n * Taken from React's CSSProperty.js\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\n// Taken from React's CSSProperty.js\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\nvar stringifyValue = function stringifyValue(key /* : string */\n, prop /* : any */\n) /* : string */{\n if (typeof prop === \"number\") {\n if (isUnitlessNumber[key]) {\n return \"\" + prop;\n } else {\n return prop + \"px\";\n }\n } else {\n return '' + prop;\n }\n};\n\nvar stringifyAndImportantifyValue = function stringifyAndImportantifyValue(key /* : string */\n, prop /* : any */\n) {\n return (/* : string */importantify(stringifyValue(key, prop))\n );\n};\n\n// Turn a string into a hash string of base-36 values (using letters and numbers)\n// eslint-disable-next-line no-unused-vars\nvar hashString = function hashString(string /* : string */, key /* : ?string */) {\n return (/* string */stringHash(string).toString(36)\n );\n};\n\n// Hash a javascript object using JSON.stringify. This is very fast, about 3\n// microseconds on my computer for a sample object:\n// http://jsperf.com/test-hashfnv32a-hash/5\n//\n// Note that this uses JSON.stringify to stringify the objects so in order for\n// this to produce consistent hashes browsers need to have a consistent\n// ordering of objects. Ben Alpert says that Facebook depends on this, so we\n// can probably depend on this too.\nvar hashObject = function hashObject(object /* : ObjectMap */) {\n return (/* : string */hashString(JSON.stringify(object))\n );\n};\n\n// Given a single style value string like the \"b\" from \"a: b;\", adds !important\n// to generate \"b !important\".\nvar importantify = function importantify(string /* : string */) {\n return (/* : string */\n // Bracket string character access is very fast, and in the default case we\n // normally don't expect there to be \"!important\" at the end of the string\n // so we can use this simple check to take an optimized path. If there\n // happens to be a \"!\" in this position, we follow up with a more thorough\n // check.\n string[string.length - 10] === '!' && string.slice(-11) === ' !important' ? string : String(string) + ' !important'\n );\n};\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar prefixAll = createPrefixer(staticPrefixData);\n\n/* ::\nimport type { SheetDefinition } from './index.js';\ntype StringHandlers = { [id:string]: Function };\ntype SelectorCallback = (selector: string) => string[];\nexport type SelectorHandler = (\n selector: string,\n baseSelector: string,\n callback: SelectorCallback\n) => string[] | string | null;\n*/\n\n/**\n * `selectorHandlers` are functions which handle special selectors which act\n * differently than normal style definitions. These functions look at the\n * current selector and can generate CSS for the styles in their subtree by\n * calling the callback with a new selector.\n *\n * For example, when generating styles with a base selector of '.foo' and the\n * following styles object:\n *\n * {\n * ':nth-child(2n)': {\n * ':hover': {\n * color: 'red'\n * }\n * }\n * }\n *\n * when we reach the ':hover' style, we would call our selector handlers like\n *\n * handler(':hover', '.foo:nth-child(2n)', callback)\n *\n * Since our `pseudoSelectors` handles ':hover' styles, that handler would call\n * the callback like\n *\n * callback('.foo:nth-child(2n):hover')\n *\n * to generate its subtree `{ color: 'red' }` styles with a\n * '.foo:nth-child(2n):hover' selector. The callback would return an array of CSS\n * rules like\n *\n * ['.foo:nth-child(2n):hover{color:red !important;}']\n *\n * and the handler would then return that resulting CSS.\n *\n * `defaultSelectorHandlers` is the list of default handlers used in a call to\n * `generateCSS`.\n *\n * @name SelectorHandler\n * @function\n * @param {string} selector: The currently inspected selector. ':hover' in the\n * example above.\n * @param {string} baseSelector: The selector of the parent styles.\n * '.foo:nth-child(2n)' in the example above.\n * @param {function} generateSubtreeStyles: A function which can be called to\n * generate CSS for the subtree of styles corresponding to the selector.\n * Accepts a new baseSelector to use for generating those styles.\n * @returns {string[] | string | null} The generated CSS for this selector, or\n * null if we don't handle this selector.\n */\nvar defaultSelectorHandlers /* : SelectorHandler[] */ = [\n// Handle pseudo-selectors, like :hover and :nth-child(3n)\nfunction () {\n function pseudoSelectors(selector, baseSelector, generateSubtreeStyles) {\n if (selector[0] !== \":\") {\n return null;\n }\n return generateSubtreeStyles(baseSelector + selector);\n }\n\n return pseudoSelectors;\n}(),\n\n// Handle media queries (or font-faces)\nfunction () {\n function mediaQueries(selector, baseSelector, generateSubtreeStyles) {\n if (selector[0] !== \"@\") {\n return null;\n }\n // Generate the styles normally, and then wrap them in the media query.\n var generated = generateSubtreeStyles(baseSelector);\n return [String(selector) + '{' + String(generated.join('')) + '}'];\n }\n\n return mediaQueries;\n}()];\n\n/**\n * Generate CSS for a selector and some styles.\n *\n * This function handles the media queries and pseudo selectors that can be used\n * in aphrodite styles.\n *\n * @param {string} selector: A base CSS selector for the styles to be generated\n * with.\n * @param {Object} styleTypes: A list of properties of the return type of\n * StyleSheet.create, e.g. [styles.red, styles.blue].\n * @param {Array.} selectorHandlers: A list of selector\n * handlers to use for handling special selectors. See\n * `defaultSelectorHandlers`.\n * @param stringHandlers: See `generateCSSRuleset`\n * @param useImportant: See `generateCSSRuleset`\n *\n * To actually generate the CSS special-construct-less styles are passed to\n * `generateCSSRuleset`.\n *\n * For instance, a call to\n *\n * generateCSS(\".foo\", [{\n * color: \"red\",\n * \"@media screen\": {\n * height: 20,\n * \":hover\": {\n * backgroundColor: \"black\"\n * }\n * },\n * \":active\": {\n * fontWeight: \"bold\"\n * }\n * }], defaultSelectorHandlers);\n *\n * with the default `selectorHandlers` will make 5 calls to\n * `generateCSSRuleset`:\n *\n * generateCSSRuleset(\".foo\", { color: \"red\" }, ...)\n * generateCSSRuleset(\".foo:active\", { fontWeight: \"bold\" }, ...)\n * // These 2 will be wrapped in @media screen {}\n * generateCSSRuleset(\".foo\", { height: 20 }, ...)\n * generateCSSRuleset(\".foo:hover\", { backgroundColor: \"black\" }, ...)\n */\nvar generateCSS = function generateCSS(selector /* : string */\n, styleTypes /* : SheetDefinition[] */\n, selectorHandlers /* : SelectorHandler[] */\n, stringHandlers /* : StringHandlers */\n, useImportant /* : boolean */\n) /* : string[] */{\n var merged = new OrderedElements();\n\n for (var i = 0; i < styleTypes.length; i++) {\n merged.addStyleType(styleTypes[i]);\n }\n\n var plainDeclarations = new OrderedElements();\n var generatedStyles = [];\n\n // TODO(emily): benchmark this to see if a plain for loop would be faster.\n merged.forEach(function (val, key) {\n // For each key, see if one of the selector handlers will handle these\n // styles.\n var foundHandler = selectorHandlers.some(function (handler) {\n var result = handler(key, selector, function (newSelector) {\n return generateCSS(newSelector, [val], selectorHandlers, stringHandlers, useImportant);\n });\n if (result != null) {\n // If the handler returned something, add it to the generated\n // CSS and stop looking for another handler.\n if (Array.isArray(result)) {\n generatedStyles.push.apply(generatedStyles, _toConsumableArray(result));\n } else {\n // eslint-disable-next-line\n console.warn('WARNING: Selector handlers should return an array of rules.' + 'Returning a string containing multiple rules is deprecated.', handler);\n generatedStyles.push('@media all {' + String(result) + '}');\n }\n return true;\n }\n });\n // If none of the handlers handled it, add it to the list of plain\n // style declarations.\n if (!foundHandler) {\n plainDeclarations.set(key, val, true);\n }\n });\n var generatedRuleset = generateCSSRuleset(selector, plainDeclarations, stringHandlers, useImportant, selectorHandlers);\n\n if (generatedRuleset) {\n generatedStyles.unshift(generatedRuleset);\n }\n\n return generatedStyles;\n};\n\n/**\n * Helper method of generateCSSRuleset to facilitate custom handling of certain\n * CSS properties. Used for e.g. font families.\n *\n * See generateCSSRuleset for usage and documentation of paramater types.\n */\nvar runStringHandlers = function runStringHandlers(declarations /* : OrderedElements */\n, stringHandlers /* : StringHandlers */\n, selectorHandlers /* : SelectorHandler[] */\n) /* : void */{\n if (!stringHandlers) {\n return;\n }\n\n var stringHandlerKeys = Object.keys(stringHandlers);\n for (var i = 0; i < stringHandlerKeys.length; i++) {\n var key = stringHandlerKeys[i];\n if (declarations.has(key)) {\n // A declaration exists for this particular string handler, so we\n // need to let the string handler interpret the declaration first\n // before proceeding.\n //\n // TODO(emily): Pass in a callback which generates CSS, similar to\n // how our selector handlers work, instead of passing in\n // `selectorHandlers` and have them make calls to `generateCSS`\n // themselves. Right now, this is impractical because our string\n // handlers are very specialized and do complex things.\n declarations.set(key, stringHandlers[key](declarations.get(key), selectorHandlers),\n\n // Preserve order here, since we are really replacing an\n // unprocessed style with a processed style, not overriding an\n // earlier style\n false);\n }\n }\n};\n\nvar transformRule = function transformRule(key /* : string */\n, value /* : string */\n, transformValue /* : function */\n) {\n return (/* : string */String(kebabifyStyleName(key)) + ':' + String(transformValue(key, value)) + ';'\n );\n};\n\nvar arrayToObjectKeysReducer = function arrayToObjectKeysReducer(acc, val) {\n acc[val] = true;\n return acc;\n};\n\n/**\n * Generate a CSS ruleset with the selector and containing the declarations.\n *\n * This function assumes that the given declarations don't contain any special\n * children (such as media queries, pseudo-selectors, or descendant styles).\n *\n * Note that this method does not deal with nesting used for e.g.\n * psuedo-selectors or media queries. That responsibility is left to the\n * `generateCSS` function.\n *\n * @param {string} selector: the selector associated with the ruleset\n * @param {Object} declarations: a map from camelCased CSS property name to CSS\n * property value.\n * @param {Object.} stringHandlers: a map from camelCased CSS\n * property name to a function which will map the given value to the value\n * that is output.\n * @param {bool} useImportant: A boolean saying whether to append \"!important\"\n * to each of the CSS declarations.\n * @returns {string} A string of raw CSS.\n *\n * Examples:\n *\n * generateCSSRuleset(\".blah\", { color: \"red\" })\n * -> \".blah{color: red !important;}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {}, false)\n * -> \".blah{color: red}\"\n * generateCSSRuleset(\".blah\", { color: \"red\" }, {color: c => c.toUpperCase})\n * -> \".blah{color: RED}\"\n * generateCSSRuleset(\".blah:hover\", { color: \"red\" })\n * -> \".blah:hover{color: red}\"\n */\nvar generateCSSRuleset = function generateCSSRuleset(selector /* : string */\n, declarations /* : OrderedElements */\n, stringHandlers /* : StringHandlers */\n, useImportant /* : boolean */\n, selectorHandlers /* : SelectorHandler[] */\n) /* : string */{\n // Mutates declarations\n runStringHandlers(declarations, stringHandlers, selectorHandlers);\n\n var originalElements = Object.keys(declarations.elements).reduce(arrayToObjectKeysReducer, Object.create(null));\n\n // NOTE(emily): This mutates handledDeclarations.elements.\n var prefixedElements = prefixAll(declarations.elements);\n\n var elementNames = Object.keys(prefixedElements);\n if (elementNames.length !== declarations.keyOrder.length) {\n // There are some prefixed values, so we need to figure out how to sort\n // them.\n //\n // Loop through prefixedElements, looking for anything that is not in\n // sortOrder, which means it was added by prefixAll. This means that we\n // need to figure out where it should appear in the sortOrder.\n for (var i = 0; i < elementNames.length; i++) {\n if (!originalElements[elementNames[i]]) {\n // This element is not in the sortOrder, which means it is a prefixed\n // value that was added by prefixAll. Let's try to figure out where it\n // goes.\n var originalStyle = void 0;\n if (elementNames[i][0] === 'W') {\n // This is a Webkit-prefixed style, like \"WebkitTransition\". Let's\n // find its original style's sort order.\n originalStyle = elementNames[i][6].toLowerCase() + elementNames[i].slice(7);\n } else if (elementNames[i][1] === 'o') {\n // This is a Moz-prefixed style, like \"MozTransition\". We check\n // the second character to avoid colliding with Ms-prefixed\n // styles. Let's find its original style's sort order.\n originalStyle = elementNames[i][3].toLowerCase() + elementNames[i].slice(4);\n } else {\n // if (elementNames[i][1] === 's') {\n // This is a Ms-prefixed style, like \"MsTransition\".\n originalStyle = elementNames[i][2].toLowerCase() + elementNames[i].slice(3);\n }\n\n if (originalStyle && originalElements[originalStyle]) {\n var originalIndex = declarations.keyOrder.indexOf(originalStyle);\n declarations.keyOrder.splice(originalIndex, 0, elementNames[i]);\n } else {\n // We don't know what the original style was, so sort it to\n // top. This can happen for styles that are added that don't\n // have the same base name as the original style.\n declarations.keyOrder.unshift(elementNames[i]);\n }\n }\n }\n }\n\n var transformValue = useImportant === false ? stringifyValue : stringifyAndImportantifyValue;\n\n var rules = [];\n for (var _i = 0; _i < declarations.keyOrder.length; _i++) {\n var key = declarations.keyOrder[_i];\n var value = prefixedElements[key];\n if (Array.isArray(value)) {\n // inline-style-prefixer returns an array when there should be\n // multiple rules for the same key. Here we flatten to multiple\n // pairs with the same key.\n for (var j = 0; j < value.length; j++) {\n rules.push(transformRule(key, value[j], transformValue));\n }\n } else {\n rules.push(transformRule(key, value, transformValue));\n }\n }\n\n if (rules.length) {\n return String(selector) + '{' + String(rules.join(\"\")) + '}';\n } else {\n return \"\";\n }\n};\n\nvar _typeof$1 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n/* ::\nimport type { SheetDefinition, SheetDefinitions } from './index.js';\nimport type { MaybeSheetDefinition } from './exports.js';\nimport type { SelectorHandler } from './generate.js';\n*/\n\n// The current

    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 w%CaUs)RorNf3S)rOL|A@^+Rkf|;`eaHyJ zh7TDxPZ+X!?#H_1H|tJ`5Y`>1O{lvpl@r7!o&X-HWYl_dJHq8zkq0GC%7aN=Os*}* zfsR(s{8Fx8@aCbCvhM(li#QmR_qu@aQZH?H|5Hza3k z{q{c}+s;Nm{|58OIbdl3JKL)Vul>$?-mP>I5wjTK-3r=QVR&WfkAd*%@nHm{5q$D) zN@U33bo5vHJX1QhtZ0+Gc}kiq%t?rmMaiS*?L_IUfJQ^`O{0TxO}*d$^)5+WD$1~8 zqfNtiB`Rg744TJzx-!V$DYwl?2!Kp7gD<*TC2T-sgH=Nglb&D`GMxz4T78Fb&mAU8 zF0^Xn(iWlZBF|~a=|XB3{?R)=WJ_|H@0_*oxRDg-(Tw)SXb!5ts|0YDQEBNyQ4U~{ z#%=Q7Z@@o-{P&%Y6S>~n_~^Ob^bHwmUve|-zhO0uVTBGWb!Dv6%I1>B=vjccBQUG{ z)O6!?R^$kG4&gj82RqH!N)+Y3&k^$Hr^d*BB;+sd*sdl039h=Sno!DaWytorDXl$t z-LQua?rY}+T*~qilS6v=cp`?UjMoz}%zq+(Rezk+?wv%O~z@#T)QC^OUQ3~#u2vTw4h)`CU0=oxa(H@ zmy(cdrrH;s@fwhfF?4(z&SLa0g@95(<09dNV2lF7jeiLkX{YH4bPWa#zYG6iN*{TN zHt*3v)?_wpUVCy9nP3``)W9=nnoFjj@%!prmrx70|EpSykWDykHCAp2Q{c&!Y{5xe z^5~+L{s$Pd@_e6={>LhN`d`pnW(3f(bdl6d6NaAt7wdX8|7)JP{}tQ5@W0m5|2T}K zO#h2&>3@YNEj+U!{ZA7(g9*qBZVXyjUeCjy$TCVlI7-&YGD?a?4>@)s>X2iX0(NOF z!WCdJ(G4tjJU2VB-0a^acXP8;5(7%3k$9X&jzA-VatJ;!Z;U_)L?fA0fQqn0T?H!c zxlmt~R1ArYRMNZNW~5^DL6&8S)wLeW4#eYXw7TI`NtAdH$tY93_4{v)J+1%RMNHf& z%w;7y;|@TN!C@u9O{~kr@^518%_C4OzOUwQ$B&EBz&QES4M(%&uG_u^cnS!Mp$bp? z{h!oE&Hz4ikcu~Re556vqG%2JQfGxyE+vx5^vq&|bC4g%5o4nO+c-Aeyz+6c)rysx zPC?)Dd4Sc-<0B0Y$y%XmN2LZ`q9Ss)g5`XGr4(dxekIqW9HYB{)F2{k6yFI}I55VO zEovnl7Y}|O52O5d--ek1+1L_PzNTo^IDtK#OErRB+n&b|Zxjz;zf&z;k7k2Zf&vacygFhCs|iWJPe@p-uxcWjKQmT5hm$E##lVZv0L- zW66FcvR2L#<}6d7?xjNv*CVRMo;Gv@nMtqiI4b+n|SpoJW(NO74 z)UvEd%8WcI(@&(dN$MGP2v?J&cP0t{H%;5}d&3+f<@uS_-|v4eG2^2kyfLL{CEwD* z3nf%xzI||RCaw;-U@J3=yo&Z^!d4S`%B#1Tr3KvL+B8Og6~s#>7U! z>P&2SZbWdAV{ff)+e<45ySQc9i*Ho4$Q?LM;5ZmN#Ν5y7b(B@$){7lKAA_L!{7 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 j=qS$* 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

  2. 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