doc/models_brief.svg

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: models_diagram Pages: 1 -->
<svg width="777pt" height="567pt"
 viewBox="0.00 0.00 776.93 567.09" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(336.925 304)">
<title>models_diagram</title>
<polygon fill="none" stroke="none" points="-336.925,263.093 -336.925,-304 440,-304 440,263.093 -336.925,263.093"/>
<!-- _diagram_info -->
<g id="node1" class="node"><title>_diagram_info</title>
<text text-anchor="start" x="230" y="-285.6" font-family="Times,serif" font-size="13.00">Models diagram</text>
<text text-anchor="start" x="230" y="-271.6" font-family="Times,serif" font-size="13.00">Date: Nov 09 2018 &#45; 23:35</text>
<text text-anchor="start" x="230" y="-257.6" font-family="Times,serif" font-size="13.00">Migration version: 20181109143540</text>
<text text-anchor="start" x="230" y="-243.6" font-family="Times,serif" font-size="13.00">Generated by RailRoady 1.5.3</text>
<text text-anchor="start" x="230" y="-229.6" font-family="Times,serif" font-size="13.00">http://railroady.prestonlee.com</text>
</g>
<!-- ShiftActivity -->
<g id="node2" class="node"><title>ShiftActivity</title>
<ellipse fill="none" stroke="black" cx="-223.469" cy="241.093" rx="56.59" ry="18"/>
<text text-anchor="middle" x="-223.469" y="244.793" font-family="Times,serif" font-size="14.00">ShiftActivity</text>
</g>
<!-- Customer -->
<g id="node3" class="node"><title>Customer</title>
<ellipse fill="none" stroke="black" cx="48.3941" cy="119.688" rx="45.4919" ry="18"/>
<text text-anchor="middle" x="48.3941" y="123.388" font-family="Times,serif" font-size="14.00">Customer</text>
</g>
<!-- Invoice -->
<g id="node13" class="node"><title>Invoice</title>
<ellipse fill="none" stroke="black" cx="-59.1282" cy="76.7833" rx="37.0935" ry="18"/>
<text text-anchor="middle" x="-59.1282" y="80.4833" font-family="Times,serif" font-size="14.00">Invoice</text>
</g>
<!-- Customer&#45;&gt;Invoice -->
<g id="edge2" class="edge"><title>Customer&#45;&gt;Invoice</title>
<path fill="none" stroke="#cd4ae5" d="M8.34281,103.707C-1.14875,99.9191 -11.2512,95.8879 -20.6701,92.1294"/>
<ellipse fill="none" stroke="#cd4ae5" cx="12.4188" cy="105.333" rx="4.00001" ry="4.00001"/>
<polygon fill="#cd4ae5" stroke="#cd4ae5" points="-20.8959,92.0394 -31.8516,92.5127 -25.5399,90.1863 -30.1838,88.3332 -30.1838,88.3332 -30.1838,88.3332 -25.5399,90.1863 -28.516,84.1536 -20.8959,92.0394 -20.8959,92.0394"/>
</g>
<!-- Address -->
<g id="node18" class="node"><title>Address</title>
<ellipse fill="none" stroke="black" cx="199.078" cy="207.718" rx="39.7935" ry="18"/>
<text text-anchor="middle" x="199.078" y="211.418" font-family="Times,serif" font-size="14.00">Address</text>
</g>
<!-- Customer&#45;&gt;Address -->
<g id="edge1" class="edge"><title>Customer&#45;&gt;Address</title>
<path fill="none" stroke="#2d78da" d="M81.175,138.839C106.152,153.431 140.417,173.448 165.572,188.144"/>
<ellipse fill="none" stroke="#2d78da" cx="77.4095" cy="136.639" rx="4.00002" ry="4.00002"/>
<polygon fill="#2d78da" stroke="#2d78da" points="165.759,188.253 176.663,189.412 170.076,190.775 174.393,193.297 174.393,193.297 174.393,193.297 170.076,190.775 172.124,197.183 165.759,188.253 165.759,188.253"/>
</g>
<!-- Transaction -->
<g id="node19" class="node"><title>Transaction</title>
<ellipse fill="none" stroke="black" cx="-6.73818" cy="230.164" rx="51.9908" ry="18"/>
<text text-anchor="middle" x="-6.73818" y="233.864" font-family="Times,serif" font-size="14.00">Transaction</text>
</g>
<!-- Customer&#45;&gt;Transaction -->
<g id="edge3" class="edge"><title>Customer&#45;&gt;Transaction</title>
<path fill="none" stroke="#ccc005" d="M35.9638,144.597C27.3252,161.907 15.8126,184.976 6.9181,202.799"/>
<ellipse fill="none" stroke="#ccc005" cx="37.75" cy="141.017" rx="4.00002" ry="4.00002"/>
<polygon fill="#ccc005" stroke="#ccc005" points="6.74632,203.143 6.30741,214.1 4.51364,207.617 2.28095,212.091 2.28095,212.091 2.28095,212.091 4.51364,207.617 -1.74551,210.082 6.74632,203.143 6.74632,203.143"/>
</g>
<!-- OptionType -->
<g id="node4" class="node"><title>OptionType</title>
<ellipse fill="none" stroke="black" cx="125.871" cy="31.8362" rx="53.0913" ry="18"/>
<text text-anchor="middle" x="125.871" y="35.5362" font-family="Times,serif" font-size="14.00">OptionType</text>
</g>
<!-- OptionValue -->
<g id="node12" class="node"><title>OptionValue</title>
<ellipse fill="none" stroke="black" cx="245.555" cy="37.2354" rx="55.7903" ry="18"/>
<text text-anchor="middle" x="245.555" y="40.9354" font-family="Times,serif" font-size="14.00">OptionValue</text>
</g>
<!-- OptionType&#45;&gt;OptionValue -->
<g id="edge4" class="edge"><title>OptionType&#45;&gt;OptionValue</title>
<path fill="none" stroke="#e4e2e5" d="M186.851,34.5872C186.984,34.5932 187.117,34.5992 187.25,34.6051"/>
<ellipse fill="none" stroke="#e4e2e5" cx="182.71" cy="34.4004" rx="4" ry="4"/>
<polygon fill="#e4e2e5" stroke="#e4e2e5" points="180.048,34.2799 190.241,30.2355 185.043,34.5054 190.038,34.7309 190.038,34.7309 190.038,34.7309 185.043,34.5054 189.835,39.2263 180.048,34.2799 180.048,34.2799"/>
</g>
<!-- Product -->
<g id="node5" class="node"><title>Product</title>
<ellipse fill="none" stroke="black" cx="-15.6053" cy="-77.7153" rx="38.1938" ry="18"/>
<text text-anchor="middle" x="-15.6053" y="-74.0153" font-family="Times,serif" font-size="14.00">Product</text>
</g>
<!-- Product&#45;&gt;OptionType -->
<g id="edge8" class="edge"><title>Product&#45;&gt;OptionType</title>
<path fill="none" stroke="#70ee5a" d="M10.8868,-57.2013C35.0894,-38.4601 70.8386,-10.7779 96.0374,8.73461"/>
<ellipse fill="none" stroke="#70ee5a" cx="7.52744" cy="-59.8026" rx="4.00002" ry="4.00002"/>
<polygon fill="#70ee5a" stroke="#70ee5a" points="96.24,8.89147 106.902,11.456 100.193,11.9527 104.147,15.014 104.147,15.014 104.147,15.014 100.193,11.9527 101.392,18.572 96.24,8.89147 96.24,8.89147"/>
</g>
<!-- Classification -->
<g id="node7" class="node"><title>Classification</title>
<ellipse fill="none" stroke="black" cx="-26.6117" cy="-191.115" rx="59.2899" ry="18"/>
<text text-anchor="middle" x="-26.6117" y="-187.415" font-family="Times,serif" font-size="14.00">Classification</text>
</g>
<!-- Product&#45;&gt;Classification -->
<g id="edge7" class="edge"><title>Product&#45;&gt;Classification</title>
<path fill="none" stroke="#51b350" d="M-18.1729,-104.17C-19.8795,-121.753 -22.1185,-144.821 -23.8613,-162.778"/>
<ellipse fill="none" stroke="#51b350" cx="-17.7601" cy="-99.9163" rx="4" ry="4"/>
<polygon fill="#51b350" stroke="#51b350" points="-23.8816,-162.988 -29.3267,-172.506 -24.3646,-167.964 -24.8477,-172.941 -24.8477,-172.941 -24.8477,-172.941 -24.3646,-167.964 -20.3688,-173.376 -23.8816,-162.988 -23.8816,-162.988"/>
</g>
<!-- Variant -->
<g id="node9" class="node"><title>Variant</title>
<ellipse fill="none" stroke="black" cx="97.0991" cy="-78.882" rx="37.0935" ry="18"/>
<text text-anchor="middle" x="97.0991" y="-75.182" font-family="Times,serif" font-size="14.00">Variant</text>
</g>
<!-- Product&#45;&gt;Variant -->
<g id="edge5" class="edge"><title>Product&#45;&gt;Variant</title>
<path fill="none" stroke="#13d481" d="M30.8802,-78.1965C37.0841,-78.2607 43.4528,-78.3266 49.6726,-78.391"/>
<ellipse fill="none" stroke="#13d481" cx="26.8657" cy="-78.155" rx="4" ry="4"/>
<polygon fill="#13d481" stroke="#13d481" points="49.9447,-78.3938 59.8975,-82.9971 54.9444,-78.4456 59.9442,-78.4974 59.9442,-78.4974 59.9442,-78.4974 54.9444,-78.4456 59.9908,-73.9976 49.9447,-78.3938 49.9447,-78.3938"/>
</g>
<!-- InvoiceLine -->
<g id="node17" class="node"><title>InvoiceLine</title>
<ellipse fill="none" stroke="black" cx="22.0409" cy="12.4315" rx="53.0913" ry="18"/>
<text text-anchor="middle" x="22.0409" y="16.1315" font-family="Times,serif" font-size="14.00">InvoiceLine</text>
</g>
<!-- Product&#45;&gt;InvoiceLine -->
<g id="edge6" class="edge"><title>Product&#45;&gt;InvoiceLine</title>
<path fill="none" stroke="#3f5709" d="M-5.07172,-52.4918C-0.212358,-40.8557 5.56807,-27.014 10.5407,-15.1066"/>
<ellipse fill="none" stroke="#3f5709" cx="-6.62615" cy="-56.2141" rx="4.00002" ry="4.00002"/>
<polygon fill="#3f5709" stroke="#3f5709" points="10.6362,-14.8779 18.6422,-7.38432 12.563,-10.264 14.4898,-5.65018 14.4898,-5.65018 14.4898,-5.65018 12.563,-10.264 10.3373,-3.91605 10.6362,-14.8779 10.6362,-14.8779"/>
</g>
<!-- Component -->
<g id="node6" class="node"><title>Component</title>
<ellipse fill="none" stroke="black" cx="93.5125" cy="-196.982" rx="51.9908" ry="18"/>
<text text-anchor="middle" x="93.5125" y="-193.282" font-family="Times,serif" font-size="14.00">Component</text>
</g>
<!-- User -->
<g id="node8" class="node"><title>User</title>
<ellipse fill="none" stroke="black" cx="-166.539" cy="54.4139" rx="27.0966" ry="18"/>
<text text-anchor="middle" x="-166.539" y="58.1139" font-family="Times,serif" font-size="14.00">User</text>
</g>
<!-- Shift -->
<g id="node10" class="node"><title>Shift</title>
<ellipse fill="none" stroke="black" cx="-120.83" cy="159.504" rx="27.8951" ry="18"/>
<text text-anchor="middle" x="-120.83" y="163.204" font-family="Times,serif" font-size="14.00">Shift</text>
</g>
<!-- User&#45;&gt;Shift -->
<g id="edge12" class="edge"><title>User&#45;&gt;Shift</title>
<path fill="none" stroke="#f5bc8e" d="M-155.705,79.3235C-148.736,95.3445 -139.684,116.156 -132.549,132.562"/>
<ellipse fill="none" stroke="#f5bc8e" cx="-157.396" cy="75.4354" rx="4.00002" ry="4.00002"/>
<polygon fill="#f5bc8e" stroke="#f5bc8e" points="-132.378,132.954 -124.263,140.33 -130.384,137.539 -128.389,142.124 -128.389,142.124 -128.389,142.124 -130.384,137.539 -132.516,143.919 -132.378,132.954 -132.378,132.954"/>
</g>
<!-- UserRole -->
<g id="node11" class="node"><title>UserRole</title>
<ellipse fill="none" stroke="black" cx="-285.449" cy="-10.9791" rx="44.393" ry="18"/>
<text text-anchor="middle" x="-285.449" y="-7.27912" font-family="Times,serif" font-size="14.00">UserRole</text>
</g>
<!-- User&#45;&gt;UserRole -->
<g id="edge9" class="edge"><title>User&#45;&gt;UserRole</title>
<path fill="none" stroke="#1ddfd9" d="M-194.636,38.9623C-211.179,29.8648 -232.259,18.2722 -249.944,8.54643"/>
<ellipse fill="none" stroke="#1ddfd9" cx="-191.029" cy="40.946" rx="4.00002" ry="4.00002"/>
<polygon fill="#1ddfd9" stroke="#1ddfd9" points="-250.079,8.47254 -261.01,7.59682 -254.46,6.06314 -258.841,3.65374 -258.841,3.65374 -258.841,3.65374 -254.46,6.06314 -256.673,-0.289347 -250.079,8.47254 -250.079,8.47254"/>
</g>
<!-- User&#45;&gt;Invoice -->
<g id="edge10" class="edge"><title>User&#45;&gt;Invoice</title>
<path fill="none" stroke="#90ea6c" d="M-132.328,61.5388C-123.061,63.4686 -112.9,65.5849 -103.175,67.6102"/>
<ellipse fill="none" stroke="#90ea6c" cx="-136.347" cy="60.7017" rx="4.00001" ry="4.00001"/>
<polygon fill="#90ea6c" stroke="#90ea6c" points="-103.044,67.6373 -92.3368,65.2707 -98.1493,68.6568 -93.2543,69.6762 -93.2543,69.6762 -93.2543,69.6762 -98.1493,68.6568 -94.1719,74.0817 -103.044,67.6373 -103.044,67.6373"/>
</g>
<!-- AccessKey -->
<g id="node15" class="node"><title>AccessKey</title>
<ellipse fill="none" stroke="black" cx="-282.671" cy="134.555" rx="50.0912" ry="18"/>
<text text-anchor="middle" x="-282.671" y="138.255" font-family="Times,serif" font-size="14.00">AccessKey</text>
</g>
<!-- User&#45;&gt;AccessKey -->
<g id="edge11" class="edge"><title>User&#45;&gt;AccessKey</title>
<path fill="none" stroke="#87bef8" d="M-192.21,72.129C-209.529,84.0806 -232.502,99.9342 -250.963,112.674"/>
<ellipse fill="none" stroke="#87bef8" cx="-188.748" cy="69.7403" rx="4.00002" ry="4.00002"/>
<polygon fill="#87bef8" stroke="#87bef8" points="-251.124,112.785 -256.798,122.168 -255.239,115.625 -259.354,118.465 -259.354,118.465 -259.354,118.465 -255.239,115.625 -261.91,114.761 -251.124,112.785 -251.124,112.785"/>
</g>
<!-- Variant&#45;&gt;Component -->
<g id="edge14" class="edge"><title>Variant&#45;&gt;Component</title>
<path fill="none" stroke="#adcde5" d="M96.3004,-105.181C95.7253,-124.116 94.9507,-149.622 94.364,-168.944"/>
<ellipse fill="none" stroke="#adcde5" cx="96.4251" cy="-101.074" rx="4" ry="4"/>
<polygon fill="#adcde5" stroke="#adcde5" points="94.3634,-168.966 89.5618,-178.824 94.2116,-173.963 94.0597,-178.961 94.0597,-178.961 94.0597,-178.961 94.2116,-173.963 98.5577,-179.098 94.3634,-168.966 94.3634,-168.966"/>
</g>
<!-- OptionValueVariant -->
<g id="node16" class="node"><title>OptionValueVariant</title>
<ellipse fill="none" stroke="black" cx="234.516" cy="-153.875" rx="82.5854" ry="18"/>
<text text-anchor="middle" x="234.516" y="-150.175" font-family="Times,serif" font-size="14.00">OptionValueVariant</text>
</g>
<!-- Variant&#45;&gt;OptionValueVariant -->
<g id="edge15" class="edge"><title>Variant&#45;&gt;OptionValueVariant</title>
<path fill="none" stroke="#f3489a" d="M129.283,-96.4457C148.805,-107.1 173.874,-120.78 194.647,-132.116"/>
<ellipse fill="none" stroke="#f3489a" cx="125.496" cy="-94.3787" rx="4.00002" ry="4.00002"/>
<polygon fill="#f3489a" stroke="#f3489a" points="194.776,-132.187 201.398,-140.928 199.165,-134.582 203.554,-136.978 203.554,-136.978 203.554,-136.978 199.165,-134.582 205.71,-133.028 194.776,-132.187 194.776,-132.187"/>
</g>
<!-- Variant&#45;&gt;InvoiceLine -->
<g id="edge13" class="edge"><title>Variant&#45;&gt;InvoiceLine</title>
<path fill="none" stroke="#fcac6b" d="M78.0583,-55.7175C67.356,-42.6975 53.9798,-26.4245 42.9826,-13.0456"/>
<ellipse fill="none" stroke="#fcac6b" cx="80.7922" cy="-59.0436" rx="4.00002" ry="4.00002"/>
<polygon fill="#fcac6b" stroke="#fcac6b" points="42.8378,-12.8694 39.9642,-2.28676 39.6628,-9.00685 36.4878,-5.14426 36.4878,-5.14426 36.4878,-5.14426 39.6628,-9.00685 33.0115,-8.00176 42.8378,-12.8694 42.8378,-12.8694"/>
</g>
<!-- Shift&#45;&gt;ShiftActivity -->
<g id="edge16" class="edge"><title>Shift&#45;&gt;ShiftActivity</title>
<path fill="none" stroke="#e6a495" d="M-145.286,178.944C-159.921,190.578 -178.615,205.438 -194.054,217.71"/>
<ellipse fill="none" stroke="#e6a495" cx="-141.84" cy="176.205" rx="4.00002" ry="4.00002"/>
<polygon fill="#e6a495" stroke="#e6a495" points="-194.421,218.002 -199.449,227.748 -198.335,221.114 -202.249,224.225 -202.249,224.225 -202.249,224.225 -198.335,221.114 -205.049,220.702 -194.421,218.002 -194.421,218.002"/>
</g>
<!-- Shift&#45;&gt;Invoice -->
<g id="edge17" class="edge"><title>Shift&#45;&gt;Invoice</title>
<path fill="none" stroke="#75cefa" d="M-103.636,136.452C-95.7053,125.82 -86.2669,113.166 -78.1268,102.254"/>
<ellipse fill="none" stroke="#75cefa" cx="-106.248" cy="139.954" rx="4.00002" ry="4.00002"/>
<polygon fill="#75cefa" stroke="#75cefa" points="-77.9095,101.962 -75.5376,91.256 -74.92,97.9544 -71.9305,93.9466 -71.9305,93.9466 -71.9305,93.9466 -74.92,97.9544 -68.3234,96.6372 -77.9095,101.962 -77.9095,101.962"/>
</g>
<!-- OptionValue&#45;&gt;OptionValueVariant -->
<g id="edge18" class="edge"><title>OptionValue&#45;&gt;OptionValueVariant</title>
<path fill="none" stroke="#c00df1" d="M244.014,10.5699C241.942,-25.3147 238.271,-88.8704 236.151,-125.574"/>
<ellipse fill="none" stroke="#c00df1" cx="244.266" cy="14.9177" rx="4" ry="4"/>
<polygon fill="#c00df1" stroke="#c00df1" points="236.148,-125.622 231.079,-135.346 235.86,-130.614 235.572,-135.606 235.572,-135.606 235.572,-135.606 235.86,-130.614 240.064,-135.865 236.148,-125.622 236.148,-125.622"/>
</g>
<!-- Invoice&#45;&gt;InvoiceLine -->
<g id="edge19" class="edge"><title>Invoice&#45;&gt;InvoiceLine</title>
<path fill="none" stroke="#1bd716" d="M-32.9154,56.0015C-24.6339,49.4359 -15.4358,42.1434 -6.97061,35.4321"/>
<ellipse fill="none" stroke="#1bd716" cx="-36.345" cy="58.7205" rx="4.00002" ry="4.00002"/>
<polygon fill="#1bd716" stroke="#1bd716" points="-6.9691,35.431 -1.92866,25.6921 -3.05105,32.3247 0.867003,29.2184 0.867003,29.2184 0.867003,29.2184 -3.05105,32.3247 3.66267,32.7446 -6.9691,35.431 -6.9691,35.431"/>
</g>
<!-- Invoice&#45;&gt;Transaction -->
<g id="edge20" class="edge"><title>Invoice&#45;&gt;Transaction</title>
<path fill="none" stroke="#a085c6" d="M-50.357,102.462C-40.9359,130.044 -26.013,173.733 -16.2978,202.176"/>
<ellipse fill="none" stroke="#a085c6" cx="-51.7229" cy="98.4635" rx="4.00001" ry="4.00001"/>
<polygon fill="#a085c6" stroke="#a085c6" points="-16.2064,202.444 -8.71554,210.453 -14.5902,207.176 -12.974,211.907 -12.974,211.907 -12.974,211.907 -14.5902,207.176 -17.2324,213.362 -16.2064,202.444 -16.2064,202.444"/>
</g>
<!-- Account -->
<g id="node14" class="node"><title>Account</title>
<ellipse fill="none" stroke="black" cx="-84.0078" cy="-23.5717" rx="40.0939" ry="18"/>
<text text-anchor="middle" x="-84.0078" y="-19.8717" font-family="Times,serif" font-size="14.00">Account</text>
</g>
<!-- Account&#45;&gt;Customer -->
<g id="edge25" class="edge"><title>Account&#45;&gt;Customer</title>
<path fill="none" stroke="#b3b7eb" d="M-62.8561,-0.685392C-38.6324,25.5249 0.901001,68.3004 25.7381,95.1744"/>
<ellipse fill="none" stroke="#b3b7eb" cx="-65.8455" cy="-3.91996" rx="4.00002" ry="4.00002"/>
<polygon fill="#b3b7eb" stroke="#b3b7eb" points="25.8475,95.2928 35.9396,99.5824 29.2412,98.9648 32.6348,102.637 32.6348,102.637 32.6348,102.637 29.2412,98.9648 29.3301,105.691 25.8475,95.2928 25.8475,95.2928"/>
</g>
<!-- Account&#45;&gt;Product -->
<g id="edge23" class="edge"><title>Account&#45;&gt;Product</title>
<path fill="none" stroke="#2db7dd" d="M-57.32,-44.6963C-52.7528,-48.3114 -47.9975,-52.0754 -43.4022,-55.7128"/>
<ellipse fill="none" stroke="#2db7dd" cx="-60.7184" cy="-42.0063" rx="4.00002" ry="4.00002"/>
<polygon fill="#2db7dd" stroke="#2db7dd" points="-43.2196,-55.8573 -38.1715,-65.5922 -39.2991,-58.9606 -35.3786,-62.0638 -35.3786,-62.0638 -35.3786,-62.0638 -39.2991,-58.9606 -32.5857,-58.5354 -43.2196,-55.8573 -43.2196,-55.8573"/>
</g>
<!-- Account&#45;&gt;User -->
<g id="edge22" class="edge"><title>Account&#45;&gt;User</title>
<path fill="none" stroke="#55e678" d="M-107.605,-1.27377C-118.841,9.34322 -132.231,21.9959 -143.407,32.5557"/>
<ellipse fill="none" stroke="#55e678" cx="-104.418" cy="-4.28568" rx="4.00002" ry="4.00002"/>
<polygon fill="#55e678" stroke="#55e678" points="-143.468,32.6132 -147.645,42.7521 -147.102,36.0473 -150.736,39.4813 -150.736,39.4813 -150.736,39.4813 -147.102,36.0473 -153.827,36.2105 -143.468,32.6132 -143.468,32.6132"/>
</g>
<!-- Account&#45;&gt;Invoice -->
<g id="edge24" class="edge"><title>Account&#45;&gt;Invoice</title>
<path fill="none" stroke="#f01634" d="M-77.5309,2.55348C-74.0139,16.7399 -69.6639,34.2863 -66.0763,48.7573"/>
<ellipse fill="none" stroke="#f01634" cx="-78.5972" cy="-1.74773" rx="4.00001" ry="4.00001"/>
<polygon fill="#f01634" stroke="#f01634" points="-66.0279,48.9527 -59.2538,57.576 -64.8247,53.8058 -63.6215,58.6588 -63.6215,58.6588 -63.6215,58.6588 -64.8247,53.8058 -67.9893,59.7417 -66.0279,48.9527 -66.0279,48.9527"/>
</g>
<!-- Category -->
<g id="node20" class="node"><title>Category</title>
<ellipse fill="none" stroke="black" cx="-127.917" cy="-173.475" rx="42.7926" ry="18"/>
<text text-anchor="middle" x="-127.917" y="-169.775" font-family="Times,serif" font-size="14.00">Category</text>
</g>
<!-- Account&#45;&gt;Category -->
<g id="edge27" class="edge"><title>Account&#45;&gt;Category</title>
<path fill="none" stroke="#40bfca" d="M-91.6464,-49.6497C-99.5014,-76.4661 -111.691,-118.082 -119.738,-145.553"/>
<ellipse fill="none" stroke="#40bfca" cx="-90.4287" cy="-45.4922" rx="4.00001" ry="4.00001"/>
<polygon fill="#40bfca" stroke="#40bfca" points="-119.79,-145.732 -126.92,-154.064 -121.196,-150.531 -122.602,-155.329 -122.602,-155.329 -122.602,-155.329 -121.196,-150.531 -118.283,-156.594 -119.79,-145.732 -119.79,-145.732"/>
</g>
<!-- Role -->
<g id="node21" class="node"><title>Role</title>
<ellipse fill="none" stroke="black" cx="-174.457" cy="-57.4255" rx="27.0966" ry="18"/>
<text text-anchor="middle" x="-174.457" y="-53.7255" font-family="Times,serif" font-size="14.00">Role</text>
</g>
<!-- Account&#45;&gt;Role -->
<g id="edge26" class="edge"><title>Account&#45;&gt;Role</title>
<path fill="none" stroke="#c24c89" d="M-122.66,-38.0387C-128.766,-40.3239 -135.034,-42.6702 -141.009,-44.9062"/>
<ellipse fill="none" stroke="#c24c89" cx="-118.881" cy="-36.6244" rx="4.00001" ry="4.00001"/>
<polygon fill="#c24c89" stroke="#c24c89" points="-141.338,-45.0295 -152.281,-44.3205 -146.021,-46.7822 -150.704,-48.535 -150.704,-48.535 -150.704,-48.535 -146.021,-46.7822 -149.126,-52.7494 -141.338,-45.0295 -141.338,-45.0295"/>
</g>
<!-- AccountSetting -->
<g id="node23" class="node"><title>AccountSetting</title>
<ellipse fill="none" stroke="black" cx="-267.281" cy="-174.026" rx="65.7887" ry="18"/>
<text text-anchor="middle" x="-267.281" y="-170.326" font-family="Times,serif" font-size="14.00">AccountSetting</text>
</g>
<!-- Account&#45;&gt;AccountSetting -->
<g id="edge21" class="edge"><title>Account&#45;&gt;AccountSetting</title>
<path fill="none" stroke="#5d8d8b" d="M-109.741,-44.6964C-144.156,-72.9489 -204.903,-122.818 -240.059,-151.679"/>
<ellipse fill="none" stroke="#5d8d8b" cx="-106.367" cy="-41.9266" rx="4.00002" ry="4.00002"/>
<ellipse fill="#5d8d8b" stroke="#5d8d8b" cx="-243.222" cy="-154.275" rx="4.00002" ry="4.00002"/>
</g>
<!-- Category&#45;&gt;Classification -->
<g id="edge29" class="edge"><title>Category&#45;&gt;Classification</title>
<path fill="none" stroke="#944d0b" d="M-80.2825,-181.77C-80.1898,-181.786 -80.097,-181.802 -80.0043,-181.818"/>
<ellipse fill="none" stroke="#944d0b" cx="-84.2284" cy="-181.083" rx="4.00001" ry="4.00001"/>
<polygon fill="#944d0b" stroke="#944d0b" points="-87.9066,-180.442 -78.827,-186.591 -82.9808,-181.3 -78.0549,-182.158 -78.0549,-182.158 -78.0549,-182.158 -82.9808,-181.3 -77.2827,-177.724 -87.9066,-180.442 -87.9066,-180.442"/>
</g>
<!-- Category&#45;&gt;Category -->
<g id="edge28" class="edge"><title>Category&#45;&gt;Category</title>
<path fill="none" stroke="#404a14" d="M-79.799,-179.676C-72.2069,-178.759 -67.0206,-176.692 -67.0206,-173.475 -67.0206,-170.526 -71.3785,-168.544 -77.9527,-167.527"/>
<ellipse fill="none" stroke="#404a14" cx="-84.0984" cy="-179.953" rx="4" ry="4"/>
<polygon fill="#404a14" stroke="#404a14" points="-78.1201,-167.514 -87.7416,-162.253 -83.1051,-167.127 -88.0901,-166.74 -88.0901,-166.74 -88.0901,-166.74 -83.1051,-167.127 -88.4386,-171.226 -78.1201,-167.514 -78.1201,-167.514"/>
<text text-anchor="middle" x="-30.0206" y="-169.775" font-family="Times,serif" font-size="14.00">subcategories</text>
</g>
<!-- Role&#45;&gt;UserRole -->
<g id="edge30" class="edge"><title>Role&#45;&gt;UserRole</title>
<path fill="none" stroke="#251002" d="M-205.375,-44.4873C-217.632,-39.3582 -231.894,-33.3903 -244.956,-27.9241"/>
<ellipse fill="none" stroke="#251002" cx="-201.415" cy="-46.1447" rx="4.00001" ry="4.00001"/>
<polygon fill="#251002" stroke="#251002" points="-244.985,-27.9121 -252.473,-19.9006 -249.597,-25.9819 -254.21,-24.0517 -254.21,-24.0517 -254.21,-24.0517 -249.597,-25.9819 -255.947,-28.2029 -244.985,-27.9121 -244.985,-27.9121"/>
</g>
<!-- ApplicationRecord -->
<g id="node22" class="node"><title>ApplicationRecord</title>
<ellipse fill="none" stroke="black" cx="-108" cy="-277" rx="77.1866" ry="18"/>
<text text-anchor="middle" x="-108" y="-273.3" font-family="Times,serif" font-size="14.00">ApplicationRecord</text>
</g>
</g>
</svg>