summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'static/images/wyrd_values.drawio.svg')
-rwxr-xr-xstatic/images/wyrd_values.drawio.svg4
1 files changed, 4 insertions, 0 deletions
diff --git a/static/images/wyrd_values.drawio.svg b/static/images/wyrd_values.drawio.svg
new file mode 100755
index 0000000..2d00a62
--- /dev/null
+++ b/static/images/wyrd_values.drawio.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Do not edit this file with editors other than diagrams.net -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="341px" height="1132px" viewBox="-0.5 -0.5 341 1132" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2022-01-15T20:04:44.428Z&quot; agent=&quot;5.0 (Windows)&quot; etag=&quot;PlZJd1fJY488qEB62zIS&quot; version=&quot;16.2.7&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;C5RBs43oDa-KdzZeNtuy&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><clipPath id="mx-clip-184-111-152-26-0"><rect x="184" y="111" width="152" height="26"/></clipPath><clipPath id="mx-clip-184-211-152-24-0"><rect x="184" y="211" width="152" height="24"/></clipPath><clipPath id="mx-clip-184-311-152-24-0"><rect x="184" y="311" width="152" height="24"/></clipPath><clipPath id="mx-clip-184-411-152-24-0"><rect x="184" y="411" width="152" height="24"/></clipPath><clipPath id="mx-clip-184-511-152-24-0"><rect x="184" y="511" width="152" height="24"/></clipPath><clipPath id="mx-clip-184-611-152-24-0"><rect x="184" y="611" width="152" height="24"/></clipPath><clipPath id="mx-clip-184-711-152-24-0"><rect x="184" y="711" width="152" height="24"/></clipPath><clipPath id="mx-clip-4-1071-192-54-0"><rect x="4" y="1071" width="192" height="54"/></clipPath><clipPath id="mx-clip-174-971-152-24-0"><rect x="174" y="971" width="152" height="24"/></clipPath></defs><g><path d="M 20 26 L 20 0 L 180 0 L 180 26" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 20 26 L 20 40 L 180 40 L 180 26" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 20 26 L 180 26" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-style="italic" pointer-events="none" text-anchor="middle" font-size="12px"><text x="99.5" y="17.5">&lt;Value&gt;</text></g><path d="M 180 106 L 180 80 L 340 80 L 340 106" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 106 L 180 140 L 340 140 L 340 106" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 106 L 340 106" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="97.5">&lt;BoolValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-111-152-26-0)" font-size="12px"><text x="185.5" y="123.5">value: {Boolean}</text></g><path d="M 180 136 L 340 136" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 206 L 180 180 L 340 180 L 340 206" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 206 L 180 240 L 340 240 L 340 206" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 206 L 340 206" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="197.5">&lt;FloatValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-211-152-24-0)" font-size="12px"><text x="185.5" y="223.5">value: {Float}</text></g><path d="M 180 234 L 340 234" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 180 L 260 160 L 100 160 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 80 L 260 60 L 100 60 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 306 L 180 280 L 340 280 L 340 306" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 306 L 180 340 L 340 340 L 340 306" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 306 L 340 306" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="297.5">&lt;IntValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-311-152-24-0)" font-size="12px"><text x="185.5" y="323.5">value: {Integer}</text></g><path d="M 180 334 L 340 334" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 280 L 260 260 L 100 260 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 406 L 180 380 L 340 380 L 340 406" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 406 L 180 440 L 340 440 L 340 406" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 406 L 340 406" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="397.5">&lt;StringValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-411-152-24-0)" font-size="12px"><text x="185.5" y="423.5">value: {String}</text></g><path d="M 180 434 L 340 434" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 380 L 260 360 L 100 360 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 506 L 180 480 L 340 480 L 340 506" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 506 L 180 540 L 340 540 L 340 506" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 506 L 340 506" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="497.5">&lt;ListValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-511-152-24-0)" font-size="12px"><text x="185.5" y="523.5">value: {{String} -&gt; &lt;Value&gt;}</text></g><path d="M 180 534 L 340 534" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 480 L 260 460 L 100 460 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 606 L 180 580 L 340 580 L 340 606" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 606 L 180 640 L 340 640 L 340 606" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 606 L 340 606" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="597.5">&lt;PointerValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-611-152-24-0)" font-size="12px"><text x="185.5" y="623.5">value: {{String} List}</text></g><path d="M 180 634 L 340 634" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 580 L 260 560 L 100 560 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 706 L 180 680 L 340 680 L 340 706" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 706 L 180 740 L 340 740 L 340 706" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 180 706 L 340 706" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="259.5" y="697.5">&lt;StructureValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-184-711-152-24-0)" font-size="12px"><text x="185.5" y="723.5">value: {{String} -&gt; &lt;Value&gt;}</text></g><path d="M 180 734 L 340 734" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 260 680 L 260 660 L 100 660 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 780 L 100 760 L 100 52.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 41.12 L 105.5 52.12 L 94.5 52.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 20 806 L 20 780 L 180 780 L 180 806" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 20 806 L 20 820 L 180 820 L 180 806" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 20 806 L 180 806" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-style="italic" pointer-events="none" text-anchor="middle" font-size="12px"><text x="99.5" y="797.5">&lt;TextValue&gt;</text></g><path d="M 0 1066 L 0 1040 L 200 1040 L 200 1066" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 1066 L 0 1130 L 200 1130 L 200 1066" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 1066 L 200 1066" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="99.5" y="1057.5">&lt;AugmentedTextValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-4-1071-192-54-0)" font-size="12px"><text x="5.5" y="1083.5">content: {&lt;TextValue&gt; List}</text><text x="5.5" y="1097.5">effect_name: {String}</text><text x="5.5" y="1111.5">effect_parameters: {&lt;Value&gt; List}</text></g><path d="M 0 1125 L 200 1125" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 1040 L 100 930 L 100 832.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 821.12 L 105.5 832.12 L 94.5 832.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 170 886 L 170 860 L 330 860 L 330 886" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 170 886 L 170 900 L 330 900 L 330 886" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 170 886 L 330 886" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="249.5" y="877.5">&lt;NewlineTextValue&gt;</text></g><path d="M 170 891 L 330 891" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 250 860 L 250 840 L 100 840 L 100 832.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 821.12 L 105.5 832.12 L 94.5 832.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 170 966 L 170 940 L 330 940 L 330 966" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 170 966 L 170 1000 L 330 1000 L 330 966" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 170 966 L 330 966" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" text-anchor="middle" font-size="12px"><text x="249.5" y="957.5">&lt;StringTextValue&gt;</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-174-971-152-24-0)" font-size="12px"><text x="175.5" y="983.5">value: {String}</text></g><path d="M 170 994 L 330 994" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 250 940 L 250 920 L 100 920 L 100 832.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 100 821.12 L 105.5 832.12 L 94.5 832.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/></g></svg> \ No newline at end of file