~aleteoryx/muditaos

ref: 3cbbeff551230786ae13c23a7bf4fa8c50099896 muditaos/module-services/service-cellular/doc/cellular_gsm_onoff_flow.svg -rw-r--r-- 19.2 KiB
3cbbeff5 — Lefucjusz [MOS-1011] Fix frequency switching stability 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="823px" preserveAspectRatio="none" style="width:1141px;height:823px;background:#F0F0F0;" version="1.1" viewBox="0 0 1141 823" width="1141px" zoomAndPan="magnify"><defs><filter height="300%" id="f1t9mvvq3glbw3" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="100.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="309" y="112.5625"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="100.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="309" y="295.3594"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="299.1953" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="309" y="475.0234"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="116.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="314" y="657.8203"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="164.6641" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="48.2969"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="153.6641" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="242.0938"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="71.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="504.1563"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="71.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="686.9531"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="774" y="212.9609"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="774" y="575.4219"/><rect fill="#F0F0F0" filter="url(#f1t9mvvq3glbw3)" height="146.6641" style="stroke: #000000; stroke-width: 2.0;" width="630" x="237.5" y="257.0938"/><rect fill="#F0F0F0" filter="url(#f1t9mvvq3glbw3)" height="146.6641" style="stroke: #000000; stroke-width: 2.0;" width="854.5" x="13" y="619.5547"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="97" x2="97" y1="38.2969" y2="783.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="313.5" x2="313.5" y1="38.2969" y2="783.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="573" x2="573" y1="38.2969" y2="783.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="778.5" x2="778.5" y1="38.2969" y2="783.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="1050.5" x2="1050.5" y1="38.2969" y2="783.2188"/><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="23" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="130" x="30" y="22.9951">Battery level check</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="23" y="782.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="130" x="30" y="802.2139">Battery level check</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="247.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="115" x="254.5" y="22.9951">System Manager</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="247.5" y="782.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="115" x="254.5" y="802.2139">System Manager</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="512" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="519" y="22.9951">Service Cellular</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="512" y="782.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="519" y="802.2139">Service Cellular</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="700.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="139" x="707.5" y="22.9951">Application Manager</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="700.5" y="782.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="139" x="707.5" y="802.2139">Application Manager</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="143" x="977.5" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="984.5" y="22.9951">ApplicaionDesktop</text><rect fill="#FEFECE" filter="url(#f1t9mvvq3glbw3)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="143" x="977.5" y="782.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="129" x="984.5" y="802.2139">ApplicaionDesktop</text><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="100.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="309" y="112.5625"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="100.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="309" y="295.3594"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="299.1953" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="309" y="475.0234"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="116.3984" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="314" y="657.8203"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="164.6641" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="48.2969"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="153.6641" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="242.0938"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="71.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="504.1563"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="71.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="568" y="686.9531"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="774" y="212.9609"/><rect fill="#FFFFFF" filter="url(#f1t9mvvq3glbw3)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="774" y="575.4219"/><rect fill="#EEEEEE" filter="url(#f1t9mvvq3glbw3)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1126.5" x="3" y="68.8633"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1129.5" y1="68.8633" y2="68.8633"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1129.5" y1="71.8633" y2="71.8633"/><rect fill="#EEEEEE" filter="url(#f1t9mvvq3glbw3)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="107" x="512.75" y="58.2969"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="88" x="518.75" y="74.3638">Initial check</text><polygon fill="#A80036" points="330,108.5625,320,112.5625,330,116.5625,326,112.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="324" x2="567" y1="112.5625" y2="112.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="230" x="336" y="107.4966">CellularCheckIfStartAllowedMessage</text><polygon fill="#A80036" points="556,137.6953,566,141.6953,556,145.6953,560,141.6953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="319" x2="562" y1="141.6953" y2="141.6953"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="197" x="326" y="136.6294">CellularPowerStateChange(Off)</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="578" x2="620" y1="170.8281" y2="170.8281"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="620" x2="620" y1="170.8281" y2="183.8281"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="579" x2="620" y1="183.8281" y2="183.8281"/><polygon fill="#A80036" points="589,179.8281,579,183.8281,589,187.8281,585,183.8281" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="585" y="165.7622">handle_power_state_change</text><polygon fill="#A80036" points="762,208.9609,772,212.9609,762,216.9609,766,212.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="314" x2="768" y1="212.9609" y2="212.9609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="231" x="321" y="207.895">CriticalBatteryLevelNotification(true)</text><polygon fill="#A80036" points="1039,238.0938,1049,242.0938,1039,246.0938,1043,242.0938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="779" x2="1045" y1="242.0938" y2="242.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="243" x="786" y="237.0278">actions::DisplayLowBatteryNotification</text><path d="M237.5,257.0938 L301.5,257.0938 L301.5,264.0938 L291.5,274.0938 L237.5,274.0938 L237.5,257.0938 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="146.6641" style="stroke: #000000; stroke-width: 2.0;" width="630" x="237.5" y="257.0938"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="19" x="252.5" y="270.1606">alt</text><polygon fill="#A80036" points="330,291.3594,320,295.3594,330,299.3594,326,295.3594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="324" x2="567" y1="295.3594" y2="295.3594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="230" x="336" y="290.2935">CellularCheckIfStartAllowedMessage</text><polygon fill="#A80036" points="556,320.4922,566,324.4922,556,328.4922,560,324.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="319" x2="562" y1="324.4922" y2="324.4922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="197" x="326" y="319.4263">CellularPowerStateChange(On)</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="578" x2="620" y1="353.625" y2="353.625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="620" x2="620" y1="353.625" y2="366.625"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="579" x2="620" y1="366.625" y2="366.625"/><polygon fill="#A80036" points="589,362.625,579,366.625,589,370.625,585,366.625" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="585" y="348.5591">handle_power_state_change</text><polygon fill="#A80036" points="767,391.7578,777,395.7578,767,399.7578,771,395.7578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="314" x2="773" y1="395.7578" y2="395.7578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="235" x="321" y="390.6919">CriticalBatteryLevelNotification(false)</text><rect fill="#EEEEEE" filter="url(#f1t9mvvq3glbw3)" height="3" style="stroke: #EEEEEE; stroke-width: 1.0;" width="1126.5" x="3" y="431.3242"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1129.5" y1="431.3242" y2="431.3242"/><line style="stroke: #000000; stroke-width: 1.0;" x1="3" x2="1129.5" y1="434.3242" y2="434.3242"/><rect fill="#EEEEEE" filter="url(#f1t9mvvq3glbw3)" height="23.1328" style="stroke: #000000; stroke-width: 2.0;" width="108" x="512.25" y="420.7578"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="89" x="518.25" y="436.8247">Normal flow</text><polygon fill="#A80036" points="297,471.0234,307,475.0234,297,479.0234,301,475.0234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="97" x2="303" y1="475.0234" y2="475.0234"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="188" x="104" y="469.9575">BatteryStateChangeMessage</text><polygon fill="#A80036" points="556,500.1563,566,504.1563,556,508.1563,560,504.1563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="319" x2="562" y1="504.1563" y2="504.1563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="197" x="326" y="499.0903">CellularPowerStateChange(Off)</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="578" x2="620" y1="533.2891" y2="533.2891"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="620" x2="620" y1="533.2891" y2="546.2891"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="579" x2="620" y1="546.2891" y2="546.2891"/><polygon fill="#A80036" points="589,542.2891,579,546.2891,589,550.2891,585,546.2891" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="585" y="528.2231">handle_power_state_change</text><polygon fill="#A80036" points="762,571.4219,772,575.4219,762,579.4219,766,575.4219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="319" x2="768" y1="575.4219" y2="575.4219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="231" x="326" y="570.356">CriticalBatteryLevelNotification(true)</text><polygon fill="#A80036" points="1039,600.5547,1049,604.5547,1039,608.5547,1043,604.5547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="779" x2="1045" y1="604.5547" y2="604.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="243" x="786" y="599.4888">actions::DisplayLowBatteryNotification</text><path d="M13,619.5547 L77,619.5547 L77,626.5547 L67,636.5547 L13,636.5547 L13,619.5547 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="146.6641" style="stroke: #000000; stroke-width: 2.0;" width="854.5" x="13" y="619.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="19" x="28" y="632.6216">alt</text><polygon fill="#A80036" points="302,653.8203,312,657.8203,302,661.8203,306,657.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="97" x2="308" y1="657.8203" y2="657.8203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="188" x="104" y="652.7544">BatteryStateChangeMessage</text><polygon fill="#A80036" points="556,682.9531,566,686.9531,556,690.9531,560,686.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="324" x2="562" y1="686.9531" y2="686.9531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="197" x="331" y="681.8872">CellularPowerStateChange(On)</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="578" x2="620" y1="716.0859" y2="716.0859"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="620" x2="620" y1="716.0859" y2="729.0859"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="579" x2="620" y1="729.0859" y2="729.0859"/><polygon fill="#A80036" points="589,725.0859,579,729.0859,589,733.0859,585,729.0859" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="585" y="711.02">handle_power_state_change</text><polygon fill="#A80036" points="767,754.2188,777,758.2188,767,762.2188,771,758.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="324" x2="773" y1="758.2188" y2="758.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="235" x="331" y="753.1528">CriticalBatteryLevelNotification(false)</text><!--MD5=[6dc43d04006142b5167758345b28292a]
@startuml
skinparam BackgroundColor F0F0F0

participant "Battery level check" as batt
participant "System Manager" as sysmgr
participant "Service Cellular" as cell
participant "Application Manager" as appmgr
participant "ApplicaionDesktop" as appdsktp

== Initial check ==

    activate cell
    cell -> sysmgr : CellularCheckIfStartAllowedMessage
    activate sysmgr
    sysmgr -> cell : CellularPowerStateChange(Off)
    cell -> cell : handle_power_state_change
    sysmgr -> appmgr : CriticalBatteryLevelNotification(true)
    deactivate cell
    deactivate sysmgr
    activate appmgr
    appmgr -> appdsktp : actions::DisplayLowBatteryNotification
    deactivate appmgr
alt
    activate cell
    cell -> sysmgr : CellularCheckIfStartAllowedMessage
    activate sysmgr
    sysmgr -> cell : CellularPowerStateChange(On)
    cell -> cell : handle_power_state_change
    sysmgr -> appmgr : CriticalBatteryLevelNotification(false)
    deactivate cell
    deactivate sysmgr
end

== Normal flow ==
    batt -> sysmgr : BatteryStateChangeMessage
    activate sysmgr
    sysmgr -> cell : CellularPowerStateChange(Off)
    activate cell
    cell -> cell : handle_power_state_change
    sysmgr -> appmgr : CriticalBatteryLevelNotification(true)
    deactivate cell
    activate appmgr
    appmgr -> appdsktp : actions::DisplayLowBatteryNotification
    deactivate appmgr
alt
    batt -> sysmgr : BatteryStateChangeMessage
    activate sysmgr
    sysmgr -> cell : CellularPowerStateChange(On)
    activate cell
    cell -> cell : handle_power_state_change
    sysmgr -> appmgr : CriticalBatteryLevelNotification(false)
    deactivate cell
end

@enduml

PlantUML version 1.2020.02(Sun Mar 01 05:22:07 EST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.12+7-post-Debian-2
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>