@lukekaalim/act-insight 1.0.0 → 2.0.0

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/InsightApp.module.css +36 -0
  3. package/InsightApp2.ts +82 -0
  4. package/TreeViewer.module.css +3 -8
  5. package/TreeViewer.ts +16 -12
  6. package/Virtual.ts +29 -11
  7. package/assets/icons/ancestor_column.png +0 -0
  8. package/assets/icons/ancestor_column.svg +26 -0
  9. package/assets/icons/ancestor_skip_row_column.png +0 -0
  10. package/assets/icons/ancestor_skip_row_column.svg +52 -0
  11. package/assets/icons/breakpoint.png +0 -0
  12. package/assets/icons/breakpoint.svg +33 -0
  13. package/assets/icons/breakpoint_arrow.png +0 -0
  14. package/assets/icons/breakpoint_arrow.svg +22 -0
  15. package/assets/icons/breakpoint_arrow_paused.png +0 -0
  16. package/assets/icons/breakpoint_arrow_paused.svg +38 -0
  17. package/assets/icons/breakpoint_panel.png +0 -0
  18. package/assets/icons/breakpoint_panel.svg +121 -0
  19. package/assets/icons/breakpoint_unset.png +0 -0
  20. package/assets/icons/breakpoint_unset.svg +26 -0
  21. package/assets/icons/bug.png +0 -0
  22. package/assets/icons/bug.svg +65 -0
  23. package/assets/icons/children.png +0 -0
  24. package/assets/icons/children.svg +38 -0
  25. package/assets/icons/collapse.png +0 -0
  26. package/assets/icons/collapse.svg +38 -0
  27. package/assets/icons/commit.png +0 -0
  28. package/assets/icons/commit.svg +30 -0
  29. package/assets/icons/commit_tree.png +0 -0
  30. package/assets/icons/commit_tree.svg +44 -0
  31. package/assets/icons/effect.png +0 -0
  32. package/assets/icons/effect.svg +28 -0
  33. package/assets/icons/expand.png +0 -0
  34. package/assets/icons/expand.svg +47 -0
  35. package/assets/icons/eye.png +0 -0
  36. package/assets/icons/eye.svg +36 -0
  37. package/assets/icons/eye_closed.png +0 -0
  38. package/assets/icons/eye_closed.svg +32 -0
  39. package/assets/icons/filter.png +0 -0
  40. package/assets/icons/filter.svg +22 -0
  41. package/assets/icons/graph.png +0 -0
  42. package/assets/icons/graph.svg +129 -0
  43. package/assets/icons/history_list.png +0 -0
  44. package/assets/icons/history_list.svg +60 -0
  45. package/assets/icons/hook.png +0 -0
  46. package/assets/icons/hook.svg +22 -0
  47. package/assets/icons/index.ts +76 -0
  48. package/assets/icons/inspector_panel.png +0 -0
  49. package/assets/icons/inspector_panel.svg +135 -0
  50. package/assets/icons/magnifying_glass.png +0 -0
  51. package/assets/icons/magnifying_glass.svg +39 -0
  52. package/assets/icons/pause.png +0 -0
  53. package/assets/icons/pause.svg +34 -0
  54. package/assets/icons/play.png +0 -0
  55. package/assets/icons/play.svg +23 -0
  56. package/assets/icons/reload.png +0 -0
  57. package/assets/icons/reload.svg +39 -0
  58. package/assets/icons/selection.png +0 -0
  59. package/assets/icons/selection.svg +22 -0
  60. package/assets/icons/side_effects.png +0 -0
  61. package/assets/icons/side_effects.svg +48 -0
  62. package/assets/icons/skip.png +0 -0
  63. package/assets/icons/skip.svg +22 -0
  64. package/assets/icons/source.svg +1366 -0
  65. package/assets/icons/step.png +0 -0
  66. package/assets/icons/step.svg +51 -0
  67. package/assets/icons/step_over_children.png +0 -0
  68. package/assets/icons/step_over_children.svg +57 -0
  69. package/assets/icons/thread.png +0 -0
  70. package/assets/icons/thread.svg +32 -0
  71. package/assets/icons/tree_column.png +0 -0
  72. package/assets/icons/tree_column.svg +26 -0
  73. package/assets/icons/tree_end.png +0 -0
  74. package/assets/icons/tree_end.svg +35 -0
  75. package/assets/icons/tree_junction.png +0 -0
  76. package/assets/icons/tree_junction.svg +35 -0
  77. package/assets/icons/vertical_grab_handle.png +0 -0
  78. package/assets/icons/vertical_grab_handle.svg +36 -0
  79. package/components/BreakpointPanel.ts +110 -0
  80. package/components/BreakpointToggle.ts +14 -0
  81. package/components/Button.ts +53 -0
  82. package/components/Checkbox.ts +17 -0
  83. package/components/CommitInspector.ts +161 -0
  84. package/components/CommitTree.ts +295 -0
  85. package/components/ControlBar.ts +60 -0
  86. package/components/EffectTable.ts +125 -0
  87. package/components/FiltersPanel.ts +45 -0
  88. package/components/HistoryList.ts +0 -0
  89. package/components/InspectorPanel.ts +54 -0
  90. package/components/PlaybackBar.ts +42 -0
  91. package/components/ThreadInspector.ts +26 -0
  92. package/components/index.module.css +414 -0
  93. package/lib/controller.ts +222 -0
  94. package/lib/list.ts +82 -0
  95. package/lib/selection.ts +32 -0
  96. package/package.json +4 -4
  97. package/public/icons/icons.svg +520 -0
  98. package/public/icons/icons__breakpoint.png +0 -0
  99. package/public/icons/icons__breakpoint.svg +30 -0
  100. package/public/icons/icons__breakpoint_panel.png +0 -0
  101. package/public/icons/icons__breakpoint_panel.svg +121 -0
  102. package/public/icons/icons__children.png +0 -0
  103. package/public/icons/icons__children.svg +38 -0
  104. package/public/icons/icons__eye.png +0 -0
  105. package/public/icons/icons__eye.svg +36 -0
  106. package/public/icons/icons__inspector_panel.png +0 -0
  107. package/public/icons/icons__inspector_panel.svg +131 -0
  108. package/public/icons/icons__magnifying_glass.png +0 -0
  109. package/public/icons/icons__magnifying_glass.svg +39 -0
  110. package/public/icons/icons__pause.png +0 -0
  111. package/public/icons/icons__pause.svg +34 -0
  112. package/public/icons/icons__play.png +0 -0
  113. package/public/icons/icons__play.svg +23 -0
  114. package/public/icons/icons__skip.png +0 -0
  115. package/public/icons/icons__skip.svg +22 -0
  116. package/public/icons/icons__step.png +0 -0
  117. package/public/icons/icons__step.svg +51 -0
  118. package/utils.ts +78 -11
  119. package/InsightApp.ts +0 -365
  120. package/MenuBar.module.css +0 -18
  121. package/MenuBar.ts +0 -39
  122. package/ScheduleControls.ts +0 -61
  123. package/lookup.ts +0 -185
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @lukekaalim/act-insight
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Improve debugger support
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+ - @lukekaalim/act-recon@4.0.0
13
+ - @lukekaalim/act-debug@2.0.0
14
+ - @lukekaalim/act@4.2.0
15
+ - @lukekaalim/act-web@5.1.0
16
+
17
+ ## 1.1.0
18
+
19
+ ### Minor Changes
20
+
21
+ - bcbd299: SSR API for @lukekaalim/act-web
22
+ - beec21c: Fixed Web text element rehydration, remove nodejs dependencies from dehydration
23
+
24
+ ### Patch Changes
25
+
26
+ - Updated dependencies [bcbd299]
27
+ - Updated dependencies [beec21c]
28
+ - @lukekaalim/act-web@5.0.0
29
+ - @lukekaalim/act-recon@3.1.0
30
+ - @lukekaalim/act@4.1.0
31
+ - @lukekaalim/act-debug@1.0.1
32
+
3
33
  ## 1.0.0
4
34
 
5
35
  ### Major Changes
@@ -16,4 +16,40 @@
16
16
 
17
17
  position: absolute;
18
18
  */
19
+ }
20
+
21
+ .insightRoot {
22
+ display: flex;
23
+ flex-direction: column;
24
+
25
+ top: 0;
26
+ left: 0;
27
+ right: 0;
28
+ bottom: 0;
29
+
30
+ position: absolute;
31
+ overflow: hidden;
32
+
33
+ font-family: 'Fira Code';
34
+ }
35
+
36
+ .insightContent {
37
+ display: flex;
38
+ flex-direction: row;
39
+ flex: 1;
40
+ overflow: hidden;
41
+
42
+ min-width: 0px;
43
+ }
44
+
45
+ .activeWindow {
46
+ display: flex;
47
+ flex-direction: column;
48
+ flex: 1;
49
+ box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.199);
50
+ min-width: 0px;
51
+ }
52
+
53
+ h4 {
54
+ margin: 0 4px;
19
55
  }
package/InsightApp2.ts ADDED
@@ -0,0 +1,82 @@
1
+ import { Component, h, Node, OpaqueID, useEffect, useMemo, useRef, useState } from "@lukekaalim/act";
2
+ import { CommitReport, DebugClient } from "@lukekaalim/act-debug";
3
+
4
+ import classes from './InsightApp.module.css';
5
+
6
+ import { CommitTree } from "./components/CommitTree";
7
+ import { EffectTable } from "./components/EffectTable";
8
+ import { ControlBar } from "./components/ControlBar";
9
+ import { BreakpointPanel } from "./components/BreakpointPanel";
10
+ import { InspectorPanel } from "./components/InspectorPanel";
11
+ import { PlaybackBar } from "./components/PlaybackBar";
12
+ import { SelectionContext, SelectionTarget, useSelectionManager } from "./lib/selection";
13
+ import { CommitListEntry, createCommitList } from "./lib/list";
14
+ import { useInsightManager } from "./lib/controller";
15
+ import { CommitPreview } from "./TreeViewer";
16
+ import { CommitID } from "@lukekaalim/act-recon";
17
+ import { EffectButton } from "./components/Button";
18
+
19
+ export type InsightApp2Props = {
20
+ client: DebugClient;
21
+ onReady(): void;
22
+ }
23
+
24
+ export const InsightApp2: Component<InsightApp2Props> = ({ client, onReady }) => {
25
+ const [state, controller] = useInsightManager(client);
26
+
27
+ useEffect(() => {
28
+ onReady();
29
+ }, [])
30
+
31
+ const providers = (child: Node) => {
32
+ return h(SelectionContext.Provider, { value: state.selection },
33
+ child
34
+ )
35
+ }
36
+
37
+ const breakLocation = state.breakPosition && h('div', {}, [
38
+ state.breakPosition.commit && h('div', {}, h(CommitPreview, { commit: state.client.cache.getCommitOrThrow(state.breakPosition.commit ) })),
39
+ state.breakPosition.effect && h('div', {}, h(EffectButton, { onClick() {}, effectId: state.breakPosition.effect })),
40
+ state.breakPosition.named && h('div', {}, `@${state.breakPosition.named}`),
41
+ ])
42
+
43
+ return providers(h('div', { className: classes.insightRoot }, [
44
+ h(ControlBar, {
45
+ showBreakpointPanel: state.panels.breakpoints,
46
+ showInspectorPanel: state.panels.inspector,
47
+ activeWindow: state.activeWindow,
48
+
49
+ onChangeWindow: controller.changeWindow,
50
+ onShowInspectorPanelChange: controller.setShowInspectorPanel,
51
+ onShowBreakpointPanelChange: controller.setShowBreakpointPanel,
52
+ }),
53
+ h('div', { className: classes.insightContent }, [
54
+ state.panels.breakpoints && h(BreakpointPanel, {
55
+ controller,
56
+ onBreakpointsChange: (breakpoints) => client.setBreakpoints(breakpoints),
57
+ breakpoints: state.breakpoints,
58
+ paused: state.paused,
59
+ cache: client.cache,
60
+ state,
61
+
62
+ onResumePressed: () => client.resume(),
63
+ onStepPressed: () => client.step(),
64
+ }),
65
+ h('div', { className: classes.activeWindow }, [
66
+ state.activeWindow === 'commits' && h(CommitTree, { commits: state.commits, client, thread: state.thread, state, controller,
67
+ scrollTarget: state.commitScrollTarget,
68
+ onScrollTargetComplete: controller.onConsumeCommitScrollTarget }),
69
+ state.activeWindow === 'effects' && h(EffectTable, { state, controller }),
70
+ ]),
71
+ state.panels.inspector && h(InspectorPanel, { client, breakpoints: state.breakpoints, state, controller }),
72
+ ]),
73
+ state.paused && h(PlaybackBar, {
74
+ onResumeClick: () => client.resume(),
75
+ onStepClick: () => client.step(),
76
+ onReloadClick: () => console.warn('UNIMPLEMETED'),
77
+ onToggleBreakpointsEnabled: () => console.warn("UNIMPLEMNTED"),
78
+ breakpointsEnabled: true,
79
+ currentBreakLocation: breakLocation
80
+ }),
81
+ ]))
82
+ };
@@ -13,24 +13,19 @@
13
13
  padding: 4px;
14
14
  border-radius: 8px;
15
15
 
16
- margin: 2px;
17
-
18
16
  border: 2px solid rgba(255, 255, 255, 0);
19
17
  white-space: nowrap;
20
- }
21
- .elementName:hover {
22
- font-weight: bold;
18
+
23
19
  cursor: pointer;
24
- border: 2px solid white;
20
+ font-weight: inherit;
25
21
  }
26
22
 
27
23
  .commit {
28
- display: flex;
24
+ display: inline-flex;
29
25
  flex-direction: column;
30
26
  overflow: visible;
31
27
  white-space: pre;
32
28
  width: max-content;
33
- flex: 1;
34
29
  }
35
30
 
36
31
  .elementBar.selected .elementName {
package/TreeViewer.ts CHANGED
@@ -7,6 +7,7 @@ import classes from './TreeViewer.module.css';
7
7
  import { CommitReport, TreeReport } from "@lukekaalim/act-debug";
8
8
  import { CommitID } from "@lukekaalim/act-recon";
9
9
  import { CommitAttributeTag } from './AttributeTag';
10
+ import { getTextForElementType } from "./utils";
10
11
 
11
12
  export type TreeViewerProps = {
12
13
  //commits: Map<CommitID, CommitReport>,
@@ -34,6 +35,8 @@ export type CommitPreviewProps = {
34
35
  attributes?: [string, string][],
35
36
 
36
37
  color?: string,
38
+ border?: string,
39
+ className?: string,
37
40
 
38
41
  depth?: number,
39
42
 
@@ -43,28 +46,25 @@ export type CommitPreviewProps = {
43
46
 
44
47
  export const CommitPreview: Component<CommitPreviewProps> = ({
45
48
  commit, depth = 0,
46
- attributes = [],
49
+ attributes = [['Id', commit.id.toString()]],
47
50
  renderCommit,
48
51
  color,
52
+ border = 'none',
49
53
  onClick,
54
+ className,
50
55
  }) => {
51
56
  const background = `hsl(${(depth * 22.3) % 360}deg, 50%, 80%)`;
52
- const elementBackground = color || `hsl(${stringHash(commit.element.type) % 360}deg, 60%, 80%)`;
57
+ const text = getTextForElementType(commit.element);
58
+ const elementBackground = color || `hsl(${stringHash(text) % 360}deg, 60%, 80%)`;
53
59
  const lineColor = `hsl(${stringHash(commit.id.toString()) % 360}, 100%, 20%)`
54
60
 
55
61
 
56
- return hs('div', { className: classes.commit, style: { position: 'relative' }, id: `commit:${commit.id}` }, [
57
- commit.children.length > 0 &&
58
- h('div', { style: {
59
- position: 'absolute',
60
- top: '5px',
61
- height: 'calc(100% - 18px)', width: '1px', background: lineColor, transform: `translate(20px, 0px)`
62
- } }),
62
+ return hs('div', { classList: [classes.commit, className], style: { position: 'relative' }, id: `commit:${commit.id}` }, [
63
63
 
64
64
  hs('div', { className: [classes.elementBar].join(' '), style: { 'position': 'relative' } }, [
65
- hs('button', { onClick, className: classes.elementName, style: { background: elementBackground } },
66
- commit.element.type),
67
- h(CommitAttributeTag, { name: 'Id', value: commit.id.toString() }),
65
+ hs('button', { onClick, className: classes.elementName, style: { background: elementBackground, border } },
66
+ text),
67
+ //h(CommitAttributeTag, { name: 'Id', value: commit.id.toString() }),
68
68
  attributes.map(([name, value]) => h(CommitAttributeTag, { name, value }))
69
69
  //h(CommitAttributeTag, { name: 'Version', value: commit.version.toString() }),
70
70
  ]),
@@ -80,4 +80,8 @@ export const CommitPreview: Component<CommitPreviewProps> = ({
80
80
  ])
81
81
  };
82
82
 
83
+ const renderElementName = () => {
84
+
85
+ }
86
+
83
87
  // h(CommitPreview, { commit: child, tree, depth: depth + 1, selectedCommits, onSelectCommit })))
package/Virtual.ts CHANGED
@@ -10,14 +10,12 @@ export type VirtualTreeProps = {
10
10
  chunkSize: number,
11
11
  chunkCount: number,
12
12
 
13
- windowRange: number,
14
-
15
- renderChunk(index: number): Node,
13
+ renderChunk(index: number, width: number): Node,
16
14
 
17
15
  viewportRef?: ReadonlyRef<HTMLElement | null>,
18
16
  }
19
17
 
20
- export const Virtual1D: Component<VirtualTreeProps> = ({ chunkSize, chunkCount, renderChunk, viewportRef: propViewportRef, windowRange }) => {
18
+ export const Virtual1D: Component<VirtualTreeProps> = ({ chunkSize, chunkCount, renderChunk, viewportRef: propViewportRef }) => {
21
19
  const [start, setStart] = useState(0);
22
20
  const [end, setEnd] = useState(0);
23
21
 
@@ -35,30 +33,50 @@ export const Virtual1D: Component<VirtualTreeProps> = ({ chunkSize, chunkCount,
35
33
  const setViewport = () => {
36
34
  const rect = viewport.getBoundingClientRect();
37
35
 
38
- setStart(Math.floor((viewport.scrollTop) / chunkSize))
39
- setEnd(Math.ceil((viewport.scrollTop + rect.height) / chunkSize))
36
+ const start = Math.floor((viewport.scrollTop) / chunkSize);
37
+ const end = Math.ceil((viewport.scrollTop + rect.height) / chunkSize)
38
+
39
+ setStart(start)
40
+ setEnd(end)
40
41
  };
41
42
  setViewport();
42
43
 
43
44
  viewport.addEventListener('scroll', setViewport)
45
+ const resize = new ResizeObserver(setViewport);
46
+ resize.observe(viewport);
44
47
  return () => {
45
48
  viewport.removeEventListener('scroll', setViewport)
49
+ resize.disconnect();
46
50
  }
47
- }, [propViewportRef])
51
+ }, [propViewportRef, chunkSize])
48
52
 
49
53
  const renderedIndices = Array
50
54
  .from({ length: end - start })
51
55
  .map((_, i) => start + i)
52
56
  .filter(x => x >= 0 && x < chunkCount);
57
+
58
+ const [width, setWidth] = useState(0);
59
+
60
+ useEffect(() => {
61
+ const list = listRef.current;
62
+ const viewport = viewportRef.current;
63
+ if (!list || !viewport)
64
+ return;
65
+ const rect = viewport.getBoundingClientRect();
66
+
67
+ const maxWidth = [...list.children].reduce((acc, curr) => Math.max(curr.getBoundingClientRect().width, acc), rect.width)
68
+
69
+ setWidth(prevMaxWidth => Math.max(maxWidth, prevMaxWidth));
70
+ }, [start, end])
53
71
 
54
72
 
55
73
  return [
56
74
  //h('pre', {}, renderedIndices.join(', ')),
57
- h('div', { ref: viewportRef, style: { overflow: 'auto', height: '100%' } },
58
- h('div', { ref: listRef, style: { height: (chunkSize * chunkCount) + 'px', position: 'relative' } },
75
+ h('div', { ref: viewportRef, style: { 'overflow': 'auto', flex: 1 } },
76
+ h('div', { ref: listRef, style: { height: (chunkSize * chunkCount) + 'px', position: 'relative', width: `${width}px` } },
59
77
  renderedIndices.map(index =>
60
- h('div', { style: { position: 'absolute', top: (index * chunkSize) + 'px', height: chunkSize, padding: '-1', border: '1px dotted black', width: '100%' }},
61
- renderChunk(index)))
78
+ h('div', { key: index, style: { position: 'absolute', top: (index * chunkSize) + 'px', height: chunkSize }},
79
+ renderChunk(index, width)))
62
80
  ))
63
81
  ];
64
82
  };
Binary file
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="12.48817mm"
6
+ height="3.8353176mm"
7
+ viewBox="0 0 12.48817 3.8353177"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(-47.030357,-38.101349)">
17
+ <rect
18
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.303001;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
19
+ id="rect34"
20
+ width="1.1926903"
21
+ height="4.396584"
22
+ x="53.017189"
23
+ y="37.867489"
24
+ ry="0.20103791" />
25
+ </g>
26
+ </svg>
@@ -0,0 +1,52 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="12.490001mm"
6
+ height="3.8399999mm"
7
+ viewBox="0 0 12.490001 3.84"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(-60.87492,-38.077965)">
17
+ <rect
18
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.303001;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
19
+ id="rect34-6"
20
+ width="1.1926903"
21
+ height="4.396584"
22
+ x="66.861916"
23
+ y="37.843967"
24
+ ry="0.20103791" />
25
+ <rect
26
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.295564;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
27
+ id="rect35"
28
+ width="7.7882543"
29
+ height="1.2862346"
30
+ x="63.341316"
31
+ y="39.387585"
32
+ ry="0.20103791" />
33
+ <circle
34
+ style="fill:#ffffff;fill-opacity:1;stroke:#5d7388;stroke-width:0.603;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
35
+ id="path39"
36
+ cx="64.382828"
37
+ cy="39.961376"
38
+ r="0.98221552" />
39
+ <circle
40
+ style="fill:#ffffff;fill-opacity:1;stroke:#5d7388;stroke-width:0.603;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
41
+ id="path39-2"
42
+ cx="67.392464"
43
+ cy="39.961376"
44
+ r="0.98221552" />
45
+ <circle
46
+ style="fill:#ffffff;fill-opacity:1;stroke:#5d7388;stroke-width:0.603;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
47
+ id="path39-2-5"
48
+ cx="70.369026"
49
+ cy="39.961376"
50
+ r="0.98221552" />
51
+ </g>
52
+ </svg>
Binary file
@@ -0,0 +1,33 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="11.941043mm"
6
+ height="11.941043mm"
7
+ viewBox="0 0 11.941043 11.941043"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(-5.4966703,-2.2270989)">
17
+ <g
18
+ id="g20">
19
+ <circle
20
+ style="fill:#d76a51;fill-opacity:1;stroke-width:0.20519"
21
+ id="path1"
22
+ cx="11.467192"
23
+ cy="8.1976204"
24
+ r="4.6302686" />
25
+ <circle
26
+ style="fill:#c83d1d;fill-opacity:1;stroke-width:0.162849"
27
+ id="path1-3"
28
+ cx="11.467192"
29
+ cy="8.1976204"
30
+ r="3.6748166" />
31
+ </g>
32
+ </g>
33
+ </svg>
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="12.01108mm"
6
+ height="5.519321mm"
7
+ viewBox="0 0 12.01108 5.5193212"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(-55.203632,-5.0938974)">
17
+ <path
18
+ id="rect15"
19
+ style="fill:#d76a51;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
20
+ d="m 55.961807,5.8284295 v 4.0752034 l 7.009391,-0.00155 3.516065,-2.0293335 -3.512447,-2.0360517 z" />
21
+ </g>
22
+ </svg>
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="12.010001mm"
6
+ height="5.5199995mm"
7
+ viewBox="0 0 12.010001 5.5199997"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(-55.153038,-11.508349)">
17
+ <path
18
+ id="rect15-7"
19
+ style="fill:#9babba;fill-opacity:1;stroke:none;stroke-width:0.139224;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
20
+ d="m 56.78394,12.51294 v 3.438583 l 5.914398,-0.0013 2.966792,-1.712314 -2.963739,-1.717984 z" />
21
+ <rect
22
+ style="fill:#5d7388;fill-opacity:1;stroke-width:0.22508"
23
+ id="rect5-3"
24
+ width="1.5069969"
25
+ height="4.8598962"
26
+ x="59.121918"
27
+ y="11.787687"
28
+ ry="0.085511364" />
29
+ <rect
30
+ style="fill:#5d7388;fill-opacity:1;stroke-width:0.22508"
31
+ id="rect5-5-9"
32
+ width="1.5069969"
33
+ height="4.8598962"
34
+ x="61.681629"
35
+ y="11.787687"
36
+ ry="0.085511364" />
37
+ </g>
38
+ </svg>
@@ -0,0 +1,121 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="11.940001mm"
6
+ height="11.94mm"
7
+ viewBox="0 0 11.940002 11.94"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(17.248171,-2.0375583)">
17
+ <g
18
+ id="g12">
19
+ <rect
20
+ style="fill:#c7d1d9;fill-opacity:1;stroke:#5d7388;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
21
+ id="rect11"
22
+ width="7.3140426"
23
+ height="9.9508686"
24
+ x="-16.158314"
25
+ y="2.9852602"
26
+ ry="0" />
27
+ <rect
28
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
29
+ id="rect12"
30
+ width="3.3841388"
31
+ height="0.63661981"
32
+ x="-15.746336"
33
+ y="3.7683892"
34
+ ry="0.23643248" />
35
+ <rect
36
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
37
+ id="rect12-1"
38
+ width="3.3841388"
39
+ height="0.63661981"
40
+ x="-15.059457"
41
+ y="4.6060472"
42
+ ry="0.23643248" />
43
+ <rect
44
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
45
+ id="rect12-6"
46
+ width="1.1057094"
47
+ height="0.63662004"
48
+ x="-15.746336"
49
+ y="5.4437051"
50
+ ry="0.23643248" />
51
+ <rect
52
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
53
+ id="rect12-1-5"
54
+ width="1.1392158"
55
+ height="0.63662004"
56
+ x="-15.746336"
57
+ y="6.281363"
58
+ ry="0.23643248" />
59
+ <rect
60
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
61
+ id="rect12-4"
62
+ width="1.3402537"
63
+ height="0.63662004"
64
+ x="-15.176728"
65
+ y="7.1860337"
66
+ ry="0.23643248" />
67
+ <rect
68
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
69
+ id="rect12-1-52"
70
+ width="3.0658281"
71
+ height="0.63661957"
72
+ x="-15.428026"
73
+ y="8.0236921"
74
+ ry="0.23643248" />
75
+ <rect
76
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
77
+ id="rect12-6-5"
78
+ width="3.4176464"
79
+ height="0.63661957"
80
+ x="-15.39452"
81
+ y="8.8613501"
82
+ ry="0.23643248" />
83
+ <rect
84
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
85
+ id="rect12-1-5-4"
86
+ width="3.3841388"
87
+ height="0.63661981"
88
+ x="-15.746336"
89
+ y="9.699008"
90
+ ry="0.23643248" />
91
+ <rect
92
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
93
+ id="rect12-1-5-0"
94
+ width="2.9150507"
95
+ height="0.63661957"
96
+ x="-15.210235"
97
+ y="10.620432"
98
+ ry="0.23643248" />
99
+ <rect
100
+ style="fill:#5d7388;fill-opacity:1;stroke:none;stroke-width:0.165;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
101
+ id="rect12-4-7"
102
+ width="3.3841388"
103
+ height="0.63661981"
104
+ x="-15.260494"
105
+ y="11.525103"
106
+ ry="0.23643248" />
107
+ </g>
108
+ <circle
109
+ style="fill:#d76a51;fill-opacity:1;stroke-width:0.144294"
110
+ id="path1-4"
111
+ cx="-10.329949"
112
+ cy="7.6289997"
113
+ r="3.2561009" />
114
+ <circle
115
+ style="fill:#c83d1d;fill-opacity:1;stroke-width:0.114519"
116
+ id="path1-3-9"
117
+ cx="-10.329949"
118
+ cy="7.6289997"
119
+ r="2.5842073" />
120
+ </g>
121
+ </svg>
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="11.940001mm"
6
+ height="11.94mm"
7
+ viewBox="0 0 11.940002 11.94"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="translate(-19.901739,11.277651)">
17
+ <g
18
+ id="g19"
19
+ transform="translate(0.42282735,0.21148449)">
20
+ <path
21
+ id="path1-0"
22
+ style="fill:#ba4c4c;fill-opacity:1;stroke-width:0.20519"
23
+ d="m 25.449343,-10.149018 c -2.55718,3.3e-5 -4.630175,2.073029 -4.630208,4.6302086 3.3e-5,2.5571795 2.073028,4.63017485 4.630208,4.63020832 2.55718,-3.292e-5 4.630176,-2.07302842 4.630209,-4.63020832 -3.3e-5,-2.55718 -2.073029,-4.6301756 -4.630209,-4.6302086 z m -2.3e-5,1.2973424 c 1.840668,5.25e-5 3.332813,1.4921966 3.332866,3.3328662 -5.3e-5,1.8406696 -1.492198,3.3328137 -3.332866,3.3328662 -1.840853,2.055e-4 -3.333282,-1.4920142 -3.333335,-3.3328662 5.3e-5,-1.840852 1.492482,-3.3330717 3.333335,-3.3328662 z" />
24
+ </g>
25
+ </g>
26
+ </svg>
Binary file