@deephaven/console 0.46.1-beta.0 → 0.46.1-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HeapUsage.d.ts.map +1 -1
- package/dist/HeapUsage.js +29 -39
- package/dist/HeapUsage.js.map +1 -1
- package/package.json +13 -12
package/dist/HeapUsage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"HeapUsage.d.ts","sourceRoot":"","sources":["../src/HeapUsage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,YAAY,EAAuB,MAAM,OAAO,CAAC;AAGpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,OAAO,kBAAkB,CAAC;AAI1B,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,iBAAS,SAAS,CAAC,EACjB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,YAAmB,EACnB,eAAe,GAChB,EAAE,cAAc,GAAG,YAAY,CAmK/B;AAED,eAAe,SAAS,CAAC"}
|
package/dist/HeapUsage.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
2
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
3
|
-
import
|
|
3
|
+
import { useState, useRef, useCallback } from 'react';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { Tooltip } from '@deephaven/components';
|
|
6
6
|
import { Plot, ChartTheme } from '@deephaven/chart';
|
|
7
7
|
import Log from '@deephaven/log';
|
|
8
|
+
import { useAsyncInterval } from '@deephaven/react-hooks';
|
|
8
9
|
import "./HeapUsage.css";
|
|
9
10
|
var log = Log.module('HeapUsage');
|
|
10
11
|
function HeapUsage(_ref) {
|
|
@@ -26,45 +27,34 @@ function HeapUsage(_ref) {
|
|
|
26
27
|
timestamps: [],
|
|
27
28
|
usages: []
|
|
28
29
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
_timestamps.shift();
|
|
44
|
-
_usages.shift();
|
|
45
|
-
}
|
|
46
|
-
_timestamps.push(currentTime);
|
|
47
|
-
_usages.push(currentUsage);
|
|
48
|
-
} else {
|
|
49
|
-
historyUsage.current = {
|
|
50
|
-
timestamps: [],
|
|
51
|
-
usages: []
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
} catch (e) {
|
|
55
|
-
log.warn('Unable to get heap usage', e);
|
|
30
|
+
var setUsageUpdateInterval = useCallback( /*#__PURE__*/_asyncToGenerator(function* () {
|
|
31
|
+
try {
|
|
32
|
+
var newUsage = yield connection.getWorkerHeapInfo();
|
|
33
|
+
setMemoryUsage(newUsage);
|
|
34
|
+
if (bgMonitoring || isOpen) {
|
|
35
|
+
var currentUsage = (newUsage.totalHeapSize - newUsage.freeMemory) / newUsage.maximumHeapSize;
|
|
36
|
+
var currentTime = Date.now();
|
|
37
|
+
var {
|
|
38
|
+
timestamps: _timestamps,
|
|
39
|
+
usages: _usages
|
|
40
|
+
} = historyUsage.current;
|
|
41
|
+
while (_timestamps.length !== 0 && currentTime - _timestamps[0] > monitorDuration * 1.5) {
|
|
42
|
+
_timestamps.shift();
|
|
43
|
+
_usages.shift();
|
|
56
44
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
45
|
+
_timestamps.push(currentTime);
|
|
46
|
+
_usages.push(currentUsage);
|
|
47
|
+
} else {
|
|
48
|
+
historyUsage.current = {
|
|
49
|
+
timestamps: [],
|
|
50
|
+
usages: []
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
} catch (e) {
|
|
54
|
+
log.warn('Unable to get heap usage', e);
|
|
55
|
+
}
|
|
56
|
+
}), [isOpen, connection, monitorDuration, bgMonitoring]);
|
|
57
|
+
useAsyncInterval(setUsageUpdateInterval, isOpen ? hoverUpdateInterval : defaultUpdateInterval);
|
|
68
58
|
var toDecimalPlace = (num, dec) => Math.round(num * 10 ** dec) / 10 ** dec;
|
|
69
59
|
var decimalPlace = 2;
|
|
70
60
|
var GbToByte = 1024 ** 3;
|
package/dist/HeapUsage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeapUsage.js","names":["React","useEffect","useState","useRef","classNames","Tooltip","Plot","ChartTheme","Log","log","module","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","fetchAndUpdate","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","updateUsage","setInterval","clearInterval","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","lastTimestamp","totalPercentage","usedPercentage","width","toFixed","x","y","type","mode","staticPlot","responsive","height","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import React, { useEffect, useState, ReactElement, useRef } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { QueryConnectable } from '@deephaven/jsapi-types';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n useEffect(\n function setUsageUpdateInterval() {\n const fetchAndUpdate = async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n };\n fetchAndUpdate();\n\n const updateUsage = setInterval(\n fetchAndUpdate,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n return () => {\n clearInterval(updateUsage);\n };\n },\n [\n isOpen,\n hoverUpdateInterval,\n connection,\n defaultUpdateInterval,\n monitorDuration,\n bgMonitoring,\n ]\n );\n\n const toDecimalPlace = (num: number, dec: number) =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (text: string, size: string, bottomBorder = false) => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <>\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: ChartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: ChartTheme.linecolor,\n range: [0, 1],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeapUsage.js","names":["useState","useRef","useCallback","classNames","Tooltip","Plot","ChartTheme","Log","useAsyncInterval","log","module","HeapUsage","connection","defaultUpdateInterval","hoverUpdateInterval","bgMonitoring","monitorDuration","memoryUsage","setMemoryUsage","freeMemory","maximumHeapSize","totalHeapSize","isOpen","setIsOpen","historyUsage","timestamps","usages","setUsageUpdateInterval","newUsage","getWorkerHeapInfo","currentUsage","currentTime","Date","now","current","length","shift","push","e","warn","toDecimalPlace","num","dec","Math","round","decimalPlace","GbToByte","freeMemoryGB","totalHeapGB","maxHeapGB","inUseGB","getRow","text","size","bottomBorder","lastTimestamp","totalPercentage","usedPercentage","width","toFixed","x","y","type","mode","staticPlot","responsive","height","margin","l","t","r","b","plot_bgcolor","paper_bgcolor","colorway","xaxis","dtick","gridcolor","linecolor","range","linewidth","mirror","yaxis"],"sources":["../src/HeapUsage.tsx"],"sourcesContent":["import { useState, ReactElement, useRef, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { Tooltip } from '@deephaven/components';\nimport type { QueryConnectable } from '@deephaven/jsapi-types';\nimport { Plot, ChartTheme } from '@deephaven/chart';\nimport Log from '@deephaven/log';\nimport { useAsyncInterval } from '@deephaven/react-hooks';\nimport './HeapUsage.scss';\n\nconst log = Log.module('HeapUsage');\n\ninterface HeapUsageProps {\n connection: QueryConnectable;\n defaultUpdateInterval: number;\n hoverUpdateInterval: number;\n bgMonitoring?: boolean;\n\n // in millis\n monitorDuration: number;\n}\n\nfunction HeapUsage({\n connection,\n defaultUpdateInterval,\n hoverUpdateInterval,\n bgMonitoring = true,\n monitorDuration,\n}: HeapUsageProps): ReactElement {\n const [memoryUsage, setMemoryUsage] = useState({\n freeMemory: 0,\n maximumHeapSize: 999,\n totalHeapSize: 0,\n });\n\n const [isOpen, setIsOpen] = useState(false);\n\n const historyUsage = useRef<{ timestamps: number[]; usages: number[] }>({\n timestamps: [],\n usages: [],\n });\n\n const setUsageUpdateInterval = useCallback(async () => {\n try {\n const newUsage = await connection.getWorkerHeapInfo();\n setMemoryUsage(newUsage);\n\n if (bgMonitoring || isOpen) {\n const currentUsage =\n (newUsage.totalHeapSize - newUsage.freeMemory) /\n newUsage.maximumHeapSize;\n const currentTime = Date.now();\n\n const { timestamps, usages } = historyUsage.current;\n while (\n timestamps.length !== 0 &&\n currentTime - timestamps[0] > monitorDuration * 1.5\n ) {\n timestamps.shift();\n usages.shift();\n }\n\n timestamps.push(currentTime);\n usages.push(currentUsage);\n } else {\n historyUsage.current = { timestamps: [], usages: [] };\n }\n } catch (e) {\n log.warn('Unable to get heap usage', e);\n }\n }, [isOpen, connection, monitorDuration, bgMonitoring]);\n\n useAsyncInterval(\n setUsageUpdateInterval,\n isOpen ? hoverUpdateInterval : defaultUpdateInterval\n );\n\n const toDecimalPlace = (num: number, dec: number) =>\n Math.round(num * 10 ** dec) / 10 ** dec;\n\n const decimalPlace = 2;\n const GbToByte = 1024 ** 3;\n\n const { freeMemory, totalHeapSize, maximumHeapSize } = memoryUsage;\n\n const freeMemoryGB = toDecimalPlace(freeMemory / GbToByte, decimalPlace);\n const totalHeapGB = toDecimalPlace(totalHeapSize / GbToByte, decimalPlace);\n const maxHeapGB = toDecimalPlace(maximumHeapSize / GbToByte, decimalPlace);\n const inUseGB = totalHeapGB - freeMemoryGB;\n\n const getRow = (text: string, size: string, bottomBorder = false) => (\n <div\n className={classNames(`heap-usage-info-row`, {\n 'heading-bottom-border': bottomBorder,\n })}\n >\n <div className=\"font-weight-bold\">{text}</div>\n <div>{size}</div>\n </div>\n );\n\n const { timestamps, usages } = historyUsage.current;\n\n const lastTimestamp = timestamps[timestamps.length - 1] ?? 0;\n\n const totalPercentage = totalHeapSize / maximumHeapSize;\n const usedPercentage = (totalHeapSize - freeMemory) / maximumHeapSize;\n\n return (\n <>\n <div className=\"max-memory\">\n <div\n className=\"total-memory\"\n style={{\n width: `calc(${totalPercentage * 100}% - ${totalPercentage * 2}px`,\n }}\n />\n <div\n className={classNames('used-memory', {\n 'heap-overflow':\n (totalHeapSize - freeMemory) / maximumHeapSize > 0.95,\n })}\n style={{\n width: `calc(${usedPercentage * 100}% - ${usedPercentage * 2}px`,\n }}\n />\n <div className=\"memory-text\">{maxHeapGB.toFixed(1)} GB</div>\n </div>\n\n <Tooltip\n onEntered={() => setIsOpen(true)}\n onExited={() => setIsOpen(false)}\n interactive\n >\n <div className=\"heap-tooltip\">\n {getRow(\n 'In use:',\n `${inUseGB.toFixed(decimalPlace)} of ${maxHeapGB.toFixed(\n decimalPlace\n )} GB`,\n true\n )}\n {getRow('Free:', `${freeMemoryGB.toFixed(decimalPlace)} GB`)}\n {getRow('Total:', `${totalHeapGB.toFixed(decimalPlace)} GB`)}\n {getRow('Max:', `${maxHeapGB.toFixed(decimalPlace)} GB`)}\n <div className=\"heap-plot\">\n <Plot\n data={[\n {\n x: [...timestamps],\n y: [...usages],\n type: 'scatter',\n mode: 'lines',\n },\n ]}\n config={{ staticPlot: true, responsive: true }}\n style={{\n width: '196px',\n height: '100px',\n }}\n layout={{\n margin: { l: 2, t: 2, r: 2, b: 2 },\n plot_bgcolor: 'transparent',\n paper_bgcolor: 'transparent',\n colorway: ['#4878ea'],\n xaxis: {\n dtick: Math.round(monitorDuration / 6),\n gridcolor: ChartTheme.linecolor,\n range: [lastTimestamp - monitorDuration, lastTimestamp],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n yaxis: {\n dtick: 0.2,\n gridcolor: ChartTheme.linecolor,\n range: [0, 1],\n linecolor: ChartTheme.linecolor,\n linewidth: 2,\n mirror: true,\n },\n }}\n />\n </div>\n <div className=\"heap-utilisation-text\">\n % utilization over {Math.round(monitorDuration / 1000 / 60)} min.\n </div>\n </div>\n </Tooltip>\n </>\n );\n}\n\nexport default HeapUsage;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/console",
|
|
3
|
-
"version": "0.46.1-beta.
|
|
3
|
+
"version": "0.46.1-beta.2+a1893756",
|
|
4
4
|
"description": "Deephaven Console",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -23,14 +23,15 @@
|
|
|
23
23
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@deephaven/chart": "^0.46.1-beta.
|
|
27
|
-
"@deephaven/components": "^0.46.1-beta.
|
|
28
|
-
"@deephaven/icons": "^0.46.1-beta.
|
|
29
|
-
"@deephaven/jsapi-bootstrap": "^0.46.1-beta.
|
|
30
|
-
"@deephaven/jsapi-types": "^0.46.1-beta.
|
|
31
|
-
"@deephaven/log": "^0.46.1-beta.
|
|
32
|
-
"@deephaven/
|
|
33
|
-
"@deephaven/
|
|
26
|
+
"@deephaven/chart": "^0.46.1-beta.2+a1893756",
|
|
27
|
+
"@deephaven/components": "^0.46.1-beta.2+a1893756",
|
|
28
|
+
"@deephaven/icons": "^0.46.1-beta.2+a1893756",
|
|
29
|
+
"@deephaven/jsapi-bootstrap": "^0.46.1-beta.2+a1893756",
|
|
30
|
+
"@deephaven/jsapi-types": "^0.46.1-beta.2+a1893756",
|
|
31
|
+
"@deephaven/log": "^0.46.1-beta.2+a1893756",
|
|
32
|
+
"@deephaven/react-hooks": "^0.46.1-beta.2+a1893756",
|
|
33
|
+
"@deephaven/storage": "^0.46.1-beta.2+a1893756",
|
|
34
|
+
"@deephaven/utils": "^0.46.1-beta.2+a1893756",
|
|
34
35
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
35
36
|
"classnames": "^2.3.1",
|
|
36
37
|
"linkifyjs": "^4.1.0",
|
|
@@ -50,8 +51,8 @@
|
|
|
50
51
|
"react-dom": "^17.x"
|
|
51
52
|
},
|
|
52
53
|
"devDependencies": {
|
|
53
|
-
"@deephaven/jsapi-shim": "^0.46.1-beta.
|
|
54
|
-
"@deephaven/mocks": "^0.46.1-beta.
|
|
54
|
+
"@deephaven/jsapi-shim": "^0.46.1-beta.2+a1893756",
|
|
55
|
+
"@deephaven/mocks": "^0.46.1-beta.2+a1893756"
|
|
55
56
|
},
|
|
56
57
|
"files": [
|
|
57
58
|
"dist"
|
|
@@ -62,5 +63,5 @@
|
|
|
62
63
|
"publishConfig": {
|
|
63
64
|
"access": "public"
|
|
64
65
|
},
|
|
65
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "a18937562f6e9ce2d62b27f79a60adc341a435e9"
|
|
66
67
|
}
|