Merge pull request #1478 from gavin-ts/multiple-labelbox

fix: label box for multiple/3d shapes
This commit is contained in:
gavin-ts 2023-07-13 13:54:23 -07:00 committed by GitHub
commit 05154ad14c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 384 additions and 8 deletions

View file

@ -19,3 +19,4 @@
- Fixes edge case in compiler using dots in quotes [#1401](https://github.com/terrastruct/d2/pull/1401)
- Fixes grid label font size for TALA [#1412](https://github.com/terrastruct/d2/pull/1412)
- Fixes person shape label positioning with `multiple` or `3d` [#1478](https://github.com/terrastruct/d2/pull/1478)

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View file

@ -1201,9 +1201,11 @@ func drawShape(writer, appendixWriter io.Writer, diagramHash string, targetShape
offsetY /= 2
}
box.TopLeft.Y -= float64(offsetY)
box.Height += float64(offsetY)
box.Width += d2target.THREE_DEE_OFFSET
} else if targetShape.Multiple {
box.TopLeft.Y -= d2target.MULTIPLE_OFFSET
box.Height += d2target.MULTIPLE_OFFSET
box.Width += d2target.MULTIPLE_OFFSET
}
} else {

View file

@ -2778,6 +2778,7 @@ scenarios: {
loadFromFile(t, "multiple_offset"),
loadFromFile(t, "multiple_offset_left"),
loadFromFile(t, "multiple_box_selection"),
loadFromFile(t, "multiple_person_label"),
loadFromFile(t, "outside_bottom_labels"),
loadFromFile(t, "label_positions"),
loadFromFile(t, "icon_positions"),

View file

@ -0,0 +1,4 @@
?: "あ" {
shape: person
style.multiple: true
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View file

@ -0,0 +1,89 @@
{
"name": "",
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "?",
"type": "person",
"pos": {
"x": 0,
"y": 10
},
"width": 44,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B3",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": true,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "あ",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 19,
"labelHeight": 21,
"labelPosition": "OUTSIDE_BOTTOM_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 57 104"><svg id="d2-svg" class="d2-862838621" width="57" height="104" viewBox="-1 -2 57 104"><rect x="-1.000000" y="-2.000000" width="57.000000" height="104.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-862838621 .text-bold {
font-family: "d2-862838621-font-bold";
}
@font-face {
font-family: d2-862838621-font-bold;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAWgAAoAAAAAClwAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXxHXrmNtYXAAAAFUAAAAJgAAACYADAAoZ2x5ZgAAAXwAAABYAAAAWA4fL09oZWFkAAAB1AAAADYAAAA2G38e1GhoZWEAAAIMAAAAJAAAACQKfwXAaG10eAAAAjAAAAAEAAAABAKyAFBsb2NhAAACNAAAAAQAAAAEAAAALG1heHAAAAI4AAAAIAAAACAAGQD3bmFtZQAAAlgAAAMoAAAIKgjwVkFwb3N0AAAFgAAAAB0AAAAg/9EAMgADAioCvAAFAAACigJYAAAASwKKAlgAAAFeADIBKQAAAgsHAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPACAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAfAClAAAACAAAwAAAAEAAwABAAAADAAEABoAAAACAAIAAAAA//8AAP//AAEAAAAAAAAABQBQAAACYgKUAAMACQAPABIAFQAAMxEhESUzJycjBzczNzcjFwM3JwERB1ACEv6lpCcpBCkpBCogmB96X18BTV4ClP1sW01iYvZfOzv+nrm6/o0Bc7oAAAEAAAACC4VoCYP3Xw889QABA+gAAAAA2F2ghAAAAADdZi82/jf+xAhtA/EAAQADAAIAAAAAAAAAAQAAA9j+7wAACJj+N/43CG0AAQAAAAAAAAAAAAAAAAAAAAECsgBQAAAALAABAAAAAQCQAAwAYwAHAAEAAAAAAAAAAAAAAAAABAADeJyclM9uG1UUxn9ObNMKwQJFVbqJ7oJFkejYVEnVNiuH1IpFFAePC0JCSBPP+I8ynhl5Jg7hCVjzFrxFVzwEz4FYo/l87NgF0SaKknx37vnznXO+c4Ed/mabSvUh8Ec9MVxhr35ueIsH9RPD27TrW4arPKn9abhGWJsbrvN5rWf4I95WfzP8gP3qT4YfslttG/6YZ9Udw59sO/4y/Cn7vF3gCrzgV8MVdskMb7HDj4a3eYTFrFR5RNNwjc/YM1xnD+gzoSBmQsIIx5AJI66YEZHjEzFjwpCIEEeHFjGFviYEQo7Rf34N8CmYESjimAJHjE9MQM7YIv4ir5RzZRzqNLO7FgVjAi7kcUlAgiNlREpCxKXiFBRkvKJBg5yB+GYU5HjkTIjxSJkxokGXNqf0GTMhx9FWpJKZT8qQgmsC5XdmUXZmQERCbqyuSAjF04lfJO8Opzi6ZLJdj3y6EeFLHN/Ju+SWyvYrPP26NWabeZdsAubqZ6yuxLq51gTHui3ztvhWuOAV7l792WTy/h6F+l8o8gVXmn+oSSVikuDcLi18Kch3j3Ec6dzBV0e+p0OfE7q8oa9zix49WpzRp8Nr+Xbp4fiaLmccy6MjvLhrSzFn/IDjGzqyKWNH1p/FxCJ+JjN15+I4Ux1TMvW8ZO6p1kgV3n3C5Q6lG+rI5TPQHpWWTvNLtGcBI1NFJoZT9XKpjdz6F5oipqqlnO3tfbkNc9u95RbfkGqHS7UuOJWTWzB631S9dzRzrR+PgJCUC1kMSJnSoOBGvM8JuCLGcazunWhLClornzLPjVQSMRWDDonizMj0NzDd+MZ9sKF7Z29JKP+S6eWqqvtkcerV7YzeqHvLO9+6HK1NoGFTTdfUNBDXxLQfaafW+fvyzfW6pTzliJSY8F8vwDM8muxzwCFjZRjoZm6vQ1MvRJOXHKr6SyJZDaXnyCIc4PGcAw54yfN3+rhk4oyLW3FZz93imCO6HH5QFQv7Lke8Xn37/6y/i2lTtTierk4v7j3FJ3dQ6xfas9v3sqeJlZOYW7TbrTgjYFpycbvrNbnHeP8AAAD//wEAAP//9LdPUXicYmBmAIP/5xiMGLAAAAAAAP//AQAA//8vAQIDAAAA");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-862838621 .fill-N1{fill:#0A0F25;}
.d2-862838621 .fill-N2{fill:#676C7E;}
.d2-862838621 .fill-N3{fill:#9499AB;}
.d2-862838621 .fill-N4{fill:#CFD2DD;}
.d2-862838621 .fill-N5{fill:#DEE1EB;}
.d2-862838621 .fill-N6{fill:#EEF1F8;}
.d2-862838621 .fill-N7{fill:#FFFFFF;}
.d2-862838621 .fill-B1{fill:#0D32B2;}
.d2-862838621 .fill-B2{fill:#0D32B2;}
.d2-862838621 .fill-B3{fill:#E3E9FD;}
.d2-862838621 .fill-B4{fill:#E3E9FD;}
.d2-862838621 .fill-B5{fill:#EDF0FD;}
.d2-862838621 .fill-B6{fill:#F7F8FE;}
.d2-862838621 .fill-AA2{fill:#4A6FF3;}
.d2-862838621 .fill-AA4{fill:#EDF0FD;}
.d2-862838621 .fill-AA5{fill:#F7F8FE;}
.d2-862838621 .fill-AB4{fill:#EDF0FD;}
.d2-862838621 .fill-AB5{fill:#F7F8FE;}
.d2-862838621 .stroke-N1{stroke:#0A0F25;}
.d2-862838621 .stroke-N2{stroke:#676C7E;}
.d2-862838621 .stroke-N3{stroke:#9499AB;}
.d2-862838621 .stroke-N4{stroke:#CFD2DD;}
.d2-862838621 .stroke-N5{stroke:#DEE1EB;}
.d2-862838621 .stroke-N6{stroke:#EEF1F8;}
.d2-862838621 .stroke-N7{stroke:#FFFFFF;}
.d2-862838621 .stroke-B1{stroke:#0D32B2;}
.d2-862838621 .stroke-B2{stroke:#0D32B2;}
.d2-862838621 .stroke-B3{stroke:#E3E9FD;}
.d2-862838621 .stroke-B4{stroke:#E3E9FD;}
.d2-862838621 .stroke-B5{stroke:#EDF0FD;}
.d2-862838621 .stroke-B6{stroke:#F7F8FE;}
.d2-862838621 .stroke-AA2{stroke:#4A6FF3;}
.d2-862838621 .stroke-AA4{stroke:#EDF0FD;}
.d2-862838621 .stroke-AA5{stroke:#F7F8FE;}
.d2-862838621 .stroke-AB4{stroke:#EDF0FD;}
.d2-862838621 .stroke-AB5{stroke:#F7F8FE;}
.d2-862838621 .background-color-N1{background-color:#0A0F25;}
.d2-862838621 .background-color-N2{background-color:#676C7E;}
.d2-862838621 .background-color-N3{background-color:#9499AB;}
.d2-862838621 .background-color-N4{background-color:#CFD2DD;}
.d2-862838621 .background-color-N5{background-color:#DEE1EB;}
.d2-862838621 .background-color-N6{background-color:#EEF1F8;}
.d2-862838621 .background-color-N7{background-color:#FFFFFF;}
.d2-862838621 .background-color-B1{background-color:#0D32B2;}
.d2-862838621 .background-color-B2{background-color:#0D32B2;}
.d2-862838621 .background-color-B3{background-color:#E3E9FD;}
.d2-862838621 .background-color-B4{background-color:#E3E9FD;}
.d2-862838621 .background-color-B5{background-color:#EDF0FD;}
.d2-862838621 .background-color-B6{background-color:#F7F8FE;}
.d2-862838621 .background-color-AA2{background-color:#4A6FF3;}
.d2-862838621 .background-color-AA4{background-color:#EDF0FD;}
.d2-862838621 .background-color-AA5{background-color:#F7F8FE;}
.d2-862838621 .background-color-AB4{background-color:#EDF0FD;}
.d2-862838621 .background-color-AB5{background-color:#F7F8FE;}
.d2-862838621 .color-N1{color:#0A0F25;}
.d2-862838621 .color-N2{color:#676C7E;}
.d2-862838621 .color-N3{color:#9499AB;}
.d2-862838621 .color-N4{color:#CFD2DD;}
.d2-862838621 .color-N5{color:#DEE1EB;}
.d2-862838621 .color-N6{color:#EEF1F8;}
.d2-862838621 .color-N7{color:#FFFFFF;}
.d2-862838621 .color-B1{color:#0D32B2;}
.d2-862838621 .color-B2{color:#0D32B2;}
.d2-862838621 .color-B3{color:#E3E9FD;}
.d2-862838621 .color-B4{color:#E3E9FD;}
.d2-862838621 .color-B5{color:#EDF0FD;}
.d2-862838621 .color-B6{color:#F7F8FE;}
.d2-862838621 .color-AA2{color:#4A6FF3;}
.d2-862838621 .color-AA4{color:#EDF0FD;}
.d2-862838621 .color-AA5{color:#F7F8FE;}
.d2-862838621 .color-AB4{color:#EDF0FD;}
.d2-862838621 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="?"><g class="shape" ><path d="M 54 66 H 10 V 65 C 10 54 15 44 22 39 C 18 35 16 28 16 21 C 16 10 23 0 32 0 C 41 0 48 10 48 21 C 48 28 46 34 41 38 C 49 43 53 53 53 64 V 65 H 54 Z" class=" stroke-B1 fill-B3" style="stroke-width:2;" /><path d="M 44 76 H 0 V 75 C 0 64 5 54 12 49 C 8 45 6 38 6 31 C 6 20 13 10 22 10 C 31 10 38 20 38 31 C 38 38 36 44 31 48 C 39 53 43 63 43 74 V 75 H 44 Z" class=" stroke-B1 fill-B3" style="stroke-width:2;" /></g><text x="27.000000" y="97.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px"></text></g><mask id="d2-862838621" maskUnits="userSpaceOnUse" x="-1" y="-2" width="57" height="104">
<rect x="-1" y="-2" width="57" height="104" fill="white"></rect>
<rect x="17.500000" y="81.000000" width="19" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

View file

@ -0,0 +1,89 @@
{
"name": "",
"isFolderOnly": false,
"fontFamily": "SourceSansPro",
"shapes": [
{
"id": "?",
"type": "person",
"pos": {
"x": 12,
"y": 22
},
"width": 44,
"height": 66,
"opacity": 1,
"strokeDash": 0,
"strokeWidth": 2,
"borderRadius": 0,
"fill": "B3",
"stroke": "B1",
"shadow": false,
"3d": false,
"multiple": true,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "あ",
"fontSize": 16,
"fontFamily": "DEFAULT",
"language": "",
"color": "N1",
"italic": false,
"bold": true,
"underline": false,
"labelWidth": 19,
"labelHeight": 21,
"labelPosition": "OUTSIDE_BOTTOM_CENTER",
"zIndex": 0,
"level": 1
}
],
"connections": [],
"root": {
"id": "",
"type": "",
"pos": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"opacity": 0,
"strokeDash": 0,
"strokeWidth": 0,
"borderRadius": 0,
"fill": "N7",
"stroke": "",
"shadow": false,
"3d": false,
"multiple": false,
"double-border": false,
"tooltip": "",
"link": "",
"icon": null,
"iconPosition": "",
"blend": false,
"fields": null,
"methods": null,
"columns": null,
"label": "",
"fontSize": 0,
"fontFamily": "",
"language": "",
"color": "",
"italic": false,
"bold": false,
"underline": false,
"labelWidth": 0,
"labelHeight": 0,
"zIndex": 0,
"level": 0
}
}

View file

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.5.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 57 104"><svg id="d2-svg" class="d2-3813377123" width="57" height="104" viewBox="11 10 57 104"><rect x="11.000000" y="10.000000" width="57.000000" height="104.000000" rx="0.000000" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3813377123 .text-bold {
font-family: "d2-3813377123-font-bold";
}
@font-face {
font-family: d2-3813377123-font-bold;
src: url("data:application/font-woff;base64,d09GRgABAAAAAAWgAAoAAAAAClwAAguFAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAAA9AAAAGAAAABgXxHXrmNtYXAAAAFUAAAAJgAAACYADAAoZ2x5ZgAAAXwAAABYAAAAWA4fL09oZWFkAAAB1AAAADYAAAA2G38e1GhoZWEAAAIMAAAAJAAAACQKfwXAaG10eAAAAjAAAAAEAAAABAKyAFBsb2NhAAACNAAAAAQAAAAEAAAALG1heHAAAAI4AAAAIAAAACAAGQD3bmFtZQAAAlgAAAMoAAAIKgjwVkFwb3N0AAAFgAAAAB0AAAAg/9EAMgADAioCvAAFAAACigJYAAAASwKKAlgAAAFeADIBKQAAAgsHAwMEAwICBGAAAvcAAAADAAAAAAAAAABBREJPACAAIP//Au7/BgAAA9gBESAAAZ8AAAAAAfAClAAAACAAAwAAAAEAAwABAAAADAAEABoAAAACAAIAAAAA//8AAP//AAEAAAAAAAAABQBQAAACYgKUAAMACQAPABIAFQAAMxEhESUzJycjBzczNzcjFwM3JwERB1ACEv6lpCcpBCkpBCogmB96X18BTV4ClP1sW01iYvZfOzv+nrm6/o0Bc7oAAAEAAAACC4VoCYP3Xw889QABA+gAAAAA2F2ghAAAAADdZi82/jf+xAhtA/EAAQADAAIAAAAAAAAAAQAAA9j+7wAACJj+N/43CG0AAQAAAAAAAAAAAAAAAAAAAAECsgBQAAAALAABAAAAAQCQAAwAYwAHAAEAAAAAAAAAAAAAAAAABAADeJyclM9uG1UUxn9ObNMKwQJFVbqJ7oJFkejYVEnVNiuH1IpFFAePC0JCSBPP+I8ynhl5Jg7hCVjzFrxFVzwEz4FYo/l87NgF0SaKknx37vnznXO+c4Ed/mabSvUh8Ec9MVxhr35ueIsH9RPD27TrW4arPKn9abhGWJsbrvN5rWf4I95WfzP8gP3qT4YfslttG/6YZ9Udw59sO/4y/Cn7vF3gCrzgV8MVdskMb7HDj4a3eYTFrFR5RNNwjc/YM1xnD+gzoSBmQsIIx5AJI66YEZHjEzFjwpCIEEeHFjGFviYEQo7Rf34N8CmYESjimAJHjE9MQM7YIv4ir5RzZRzqNLO7FgVjAi7kcUlAgiNlREpCxKXiFBRkvKJBg5yB+GYU5HjkTIjxSJkxokGXNqf0GTMhx9FWpJKZT8qQgmsC5XdmUXZmQERCbqyuSAjF04lfJO8Opzi6ZLJdj3y6EeFLHN/Ju+SWyvYrPP26NWabeZdsAubqZ6yuxLq51gTHui3ztvhWuOAV7l792WTy/h6F+l8o8gVXmn+oSSVikuDcLi18Kch3j3Ec6dzBV0e+p0OfE7q8oa9zix49WpzRp8Nr+Xbp4fiaLmccy6MjvLhrSzFn/IDjGzqyKWNH1p/FxCJ+JjN15+I4Ux1TMvW8ZO6p1kgV3n3C5Q6lG+rI5TPQHpWWTvNLtGcBI1NFJoZT9XKpjdz6F5oipqqlnO3tfbkNc9u95RbfkGqHS7UuOJWTWzB631S9dzRzrR+PgJCUC1kMSJnSoOBGvM8JuCLGcazunWhLClornzLPjVQSMRWDDonizMj0NzDd+MZ9sKF7Z29JKP+S6eWqqvtkcerV7YzeqHvLO9+6HK1NoGFTTdfUNBDXxLQfaafW+fvyzfW6pTzliJSY8F8vwDM8muxzwCFjZRjoZm6vQ1MvRJOXHKr6SyJZDaXnyCIc4PGcAw54yfN3+rhk4oyLW3FZz93imCO6HH5QFQv7Lke8Xn37/6y/i2lTtTierk4v7j3FJ3dQ6xfas9v3sqeJlZOYW7TbrTgjYFpycbvrNbnHeP8AAAD//wEAAP//9LdPUXicYmBmAIP/5xiMGLAAAAAAAP//AQAA//8vAQIDAAAA");
}]]></style><style type="text/css"><![CDATA[.shape {
shape-rendering: geometricPrecision;
stroke-linejoin: round;
}
.connection {
stroke-linecap: round;
stroke-linejoin: round;
}
.blend {
mix-blend-mode: multiply;
opacity: 0.5;
}
.d2-3813377123 .fill-N1{fill:#0A0F25;}
.d2-3813377123 .fill-N2{fill:#676C7E;}
.d2-3813377123 .fill-N3{fill:#9499AB;}
.d2-3813377123 .fill-N4{fill:#CFD2DD;}
.d2-3813377123 .fill-N5{fill:#DEE1EB;}
.d2-3813377123 .fill-N6{fill:#EEF1F8;}
.d2-3813377123 .fill-N7{fill:#FFFFFF;}
.d2-3813377123 .fill-B1{fill:#0D32B2;}
.d2-3813377123 .fill-B2{fill:#0D32B2;}
.d2-3813377123 .fill-B3{fill:#E3E9FD;}
.d2-3813377123 .fill-B4{fill:#E3E9FD;}
.d2-3813377123 .fill-B5{fill:#EDF0FD;}
.d2-3813377123 .fill-B6{fill:#F7F8FE;}
.d2-3813377123 .fill-AA2{fill:#4A6FF3;}
.d2-3813377123 .fill-AA4{fill:#EDF0FD;}
.d2-3813377123 .fill-AA5{fill:#F7F8FE;}
.d2-3813377123 .fill-AB4{fill:#EDF0FD;}
.d2-3813377123 .fill-AB5{fill:#F7F8FE;}
.d2-3813377123 .stroke-N1{stroke:#0A0F25;}
.d2-3813377123 .stroke-N2{stroke:#676C7E;}
.d2-3813377123 .stroke-N3{stroke:#9499AB;}
.d2-3813377123 .stroke-N4{stroke:#CFD2DD;}
.d2-3813377123 .stroke-N5{stroke:#DEE1EB;}
.d2-3813377123 .stroke-N6{stroke:#EEF1F8;}
.d2-3813377123 .stroke-N7{stroke:#FFFFFF;}
.d2-3813377123 .stroke-B1{stroke:#0D32B2;}
.d2-3813377123 .stroke-B2{stroke:#0D32B2;}
.d2-3813377123 .stroke-B3{stroke:#E3E9FD;}
.d2-3813377123 .stroke-B4{stroke:#E3E9FD;}
.d2-3813377123 .stroke-B5{stroke:#EDF0FD;}
.d2-3813377123 .stroke-B6{stroke:#F7F8FE;}
.d2-3813377123 .stroke-AA2{stroke:#4A6FF3;}
.d2-3813377123 .stroke-AA4{stroke:#EDF0FD;}
.d2-3813377123 .stroke-AA5{stroke:#F7F8FE;}
.d2-3813377123 .stroke-AB4{stroke:#EDF0FD;}
.d2-3813377123 .stroke-AB5{stroke:#F7F8FE;}
.d2-3813377123 .background-color-N1{background-color:#0A0F25;}
.d2-3813377123 .background-color-N2{background-color:#676C7E;}
.d2-3813377123 .background-color-N3{background-color:#9499AB;}
.d2-3813377123 .background-color-N4{background-color:#CFD2DD;}
.d2-3813377123 .background-color-N5{background-color:#DEE1EB;}
.d2-3813377123 .background-color-N6{background-color:#EEF1F8;}
.d2-3813377123 .background-color-N7{background-color:#FFFFFF;}
.d2-3813377123 .background-color-B1{background-color:#0D32B2;}
.d2-3813377123 .background-color-B2{background-color:#0D32B2;}
.d2-3813377123 .background-color-B3{background-color:#E3E9FD;}
.d2-3813377123 .background-color-B4{background-color:#E3E9FD;}
.d2-3813377123 .background-color-B5{background-color:#EDF0FD;}
.d2-3813377123 .background-color-B6{background-color:#F7F8FE;}
.d2-3813377123 .background-color-AA2{background-color:#4A6FF3;}
.d2-3813377123 .background-color-AA4{background-color:#EDF0FD;}
.d2-3813377123 .background-color-AA5{background-color:#F7F8FE;}
.d2-3813377123 .background-color-AB4{background-color:#EDF0FD;}
.d2-3813377123 .background-color-AB5{background-color:#F7F8FE;}
.d2-3813377123 .color-N1{color:#0A0F25;}
.d2-3813377123 .color-N2{color:#676C7E;}
.d2-3813377123 .color-N3{color:#9499AB;}
.d2-3813377123 .color-N4{color:#CFD2DD;}
.d2-3813377123 .color-N5{color:#DEE1EB;}
.d2-3813377123 .color-N6{color:#EEF1F8;}
.d2-3813377123 .color-N7{color:#FFFFFF;}
.d2-3813377123 .color-B1{color:#0D32B2;}
.d2-3813377123 .color-B2{color:#0D32B2;}
.d2-3813377123 .color-B3{color:#E3E9FD;}
.d2-3813377123 .color-B4{color:#E3E9FD;}
.d2-3813377123 .color-B5{color:#EDF0FD;}
.d2-3813377123 .color-B6{color:#F7F8FE;}
.d2-3813377123 .color-AA2{color:#4A6FF3;}
.d2-3813377123 .color-AA4{color:#EDF0FD;}
.d2-3813377123 .color-AA5{color:#F7F8FE;}
.d2-3813377123 .color-AB4{color:#EDF0FD;}
.d2-3813377123 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="?"><g class="shape" ><path d="M 66 78 H 22 V 77 C 22 66 27 56 34 51 C 30 47 28 40 28 33 C 28 22 35 12 44 12 C 53 12 60 22 60 33 C 60 40 58 46 53 50 C 61 55 65 65 65 76 V 77 H 66 Z" class=" stroke-B1 fill-B3" style="stroke-width:2;" /><path d="M 56 88 H 12 V 87 C 12 76 17 66 24 61 C 20 57 18 50 18 43 C 18 32 25 22 34 22 C 43 22 50 32 50 43 C 50 50 48 56 43 60 C 51 65 55 75 55 86 V 87 H 56 Z" class=" stroke-B1 fill-B3" style="stroke-width:2;" /></g><text x="39.000000" y="109.000000" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px"></text></g><mask id="d2-3813377123" maskUnits="userSpaceOnUse" x="11" y="10" width="57" height="104">
<rect x="11" y="10" width="57" height="104" fill="white"></rect>
<rect x="29.500000" y="93.000000" width="19" height="21" fill="rgba(0,0,0,0.75)"></rect>
</mask></svg></svg>

After

Width:  |  Height:  |  Size: 8.6 KiB