summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2023-02-20 14:58:49 +0100
committerTor Andersson <tor@ccxvii.net>2023-05-03 18:48:15 +0200
commit6957f7be1b0d24f0c46f0eeb3fa224493a74e7b5 (patch)
treea9fd2a54f70f29a34cc48c44d5e20cd57b6c97d0 /tools
parent013d3b84d36eaf593c0070325e4b1bba232a1dd0 (diff)
downloadandean-abyss-6957f7be1b0d24f0c46f0eeb3fa224493a74e7b5.tar.gz
Various tools and piece generation scripts.
Diffstat (limited to 'tools')
-rw-r--r--tools/areas.pbmbin0 -> 527863 bytes
-rw-r--r--tools/areas.svg110
-rw-r--r--tools/areas.xcfbin0 -> 10357677 bytes
-rw-r--r--tools/boxes.svg785
-rw-r--r--tools/cards.txt101
-rw-r--r--tools/cylinder_icon_auc.svg1
-rw-r--r--tools/cylinder_icon_auc.svg.bak22
-rw-r--r--tools/cylinder_icon_cartels.svg1
-rw-r--r--tools/cylinder_icon_cartels.svg.bak19
-rw-r--r--tools/cylinder_icon_farc.svg1
-rw-r--r--tools/cylinder_icon_farc.svg.bak23
-rw-r--r--tools/cylinder_icon_govt.svg1
-rw-r--r--tools/genboxes.py73
-rw-r--r--tools/gendata.js390
-rw-r--r--tools/genpieces.mjs303
-rw-r--r--tools/guerrilla_icon_auc.svg.bak22
-rw-r--r--tools/guerrilla_icon_cartels.svg.bak19
-rw-r--r--tools/guerrilla_icon_farc.svg.bak23
-rw-r--r--tools/icon_auc.pngbin0 -> 9405 bytes
-rw-r--r--tools/icon_cartels.pngbin0 -> 13850 bytes
-rw-r--r--tools/icon_farc.pngbin0 -> 8835 bytes
-rw-r--r--tools/icon_govt.pngbin0 -> 8566 bytes
-rw-r--r--tools/isometric_icon_auc.pbmbin0 -> 6923 bytes
-rw-r--r--tools/isometric_icon_cartels.pbmbin0 -> 6923 bytes
-rw-r--r--tools/isometric_icon_farc.pbmbin0 -> 6923 bytes
-rw-r--r--tools/render_cards.sh16
-rw-r--r--tools/render_cards_fixed.sh1
-rw-r--r--tools/render_tokens.sh5
-rw-r--r--tools/resize_cards.sh9
-rw-r--r--tools/scale_tokens.sh52
-rw-r--r--tools/slice_tokens.sh68
31 files changed, 2045 insertions, 0 deletions
diff --git a/tools/areas.pbm b/tools/areas.pbm
new file mode 100644
index 0000000..b1f7e00
--- /dev/null
+++ b/tools/areas.pbm
Binary files differ
diff --git a/tools/areas.svg b/tools/areas.svg
new file mode 100644
index 0000000..07b78f0
--- /dev/null
+++ b/tools/areas.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="2200"
+ height="3400"
+ viewBox="0 0 1650 2550"
+ id="svg26"
+ sodipodi:docname="areas.svg"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
+ <metadata
+ id="metadata32">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs30" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview28"
+ showgrid="false"
+ inkscape:zoom="0.3009954"
+ inkscape:cx="879.71784"
+ inkscape:cy="2582.1639"
+ inkscape:current-layer="svg26" />
+ <path
+ d="m 824,725 c -7,-2 -6,-15 -18,-10 -5,2 -17,-2 -15,-8 2,-9 11,-14 10,-24 3,-10 -7,-17 -11,-26 l -15,-29 c -3,-7 -11,-14 -10,-22 4,-10 -2,-23 -14,-24 -7,-2 -11,-11 -15,-18 -5,-8 -10,-17 -17,-24 -2,-9 -6,-17 -13,-22 -1,-8 -6,-21 5,-23 8,-4 16,-12 22,-19 6,-6 9,-14 12,-22 2,-11 2,-22 1,-33 7,4 15,7 24,6 16,0 33,1 49,-2 6,-5 15,-1 20,-7 6,-7 13,-11 20,-16 6,-8 16,-9 23,-13 7,-5 10,-15 19,-16 8,-7 19,-8 29,-12 9,-3 19,-2 25,-10 8,-4 16,-7 20,-15 4,-9 10,-17 11,-28 1,-4 0,-14 2,-5 5,8 18,9 24,2 8,-3 10,-13 9,-19 10,2 16,-8 25,-11 8,-7 17,4 25,5 6,2 15,4 18,9 l 13,22 c -3,7 -14,10 -19,17 -8,4 -5,19 -15,20 -7,4 -15,8 -24,7 l -27,7 c -7,2 -15,4 -21,9 -6,9 -21,6 -24,19 -5,9 -11,18 -15,29 -1,4 -10,6 -14,9 -9,-3 -19,0 -24,9 -5,7 -7,15 -12,22 -9,2 -11,12 -14,20 l -11,22 c -6,9 -15,15 -18,24 -2,12 0,25 -6,35 -6,9 -1,20 -4,30 -5,6 0,15 1,20 -8,5 -13,15 -12,24 -6,5 -12,10 -15,17 -3,8 -6,17 -12,24 -7,5 -16,14 -12,23 3,10 14,9 22,8 5,1 16,-4 9,4 1,7 -5,13 -11,15 z"
+ id="path2" />
+ <path
+ d="m 211,926 c -5,-7 -9,-14 -17,-18 -7,-7 -8,-18 -17,-24 -3,-8 -5,-17 -11,-25 -4,-5 -12,-14 -1,-15 8,-3 15,-10 15,-19 -1,-7 -3,-13 6,-13 5,7 13,10 21,11 10,3 20,-2 19,-13 0,-13 -16,-9 -22,-18 -4,-9 -10,-20 -22,-21 -6,-4 -15,-4 -21,-3 -4,-8 -18,-2 -18,-14 -4,-10 -14,-14 -23,-19 -5,-7 -16,-4 -19,-13 -4,-6 -7,-12 -15,-13 -8,-3 -14,-10 -22,-12 -14,-5 -29,-3 -43,-5 -6,-2 -20,6 -18,-3 v -47 c 10,-2 20,1 30,4 10,1 25,-4 23,11 11,0 21,2 31,4 11,0 23,-1 34,1 10,3 21,4 30,12 11,5 22,9 33,10 8,3 15,6 19,13 l 19,17 c 4,6 7,13 13,18 4,7 10,12 18,15 2,7 8,15 12,19 -9,6 -5,20 1,27 12,2 6,16 12,22 8,5 13,12 15,22 0,5 5,10 -3,11 -6,7 -16,12 -16,22 -2,6 6,13 -3,11 -5,1 -8,13 -11,5 -8,-3 -10,-12 -17,-16 -9,-2 -18,2 -20,11 -3,7 -2,16 2,21 -10,3 -13,15 -14,24 z"
+ id="path82" />
+ <path
+ d="m 704,714 c -9,1 -16,-7 -23,-11 l -20,-13 c -4,-8 -11,-11 -20,-13 -9,-4 -16,-11 -24,-16 -5,-5 -11,-8 -18,-11 -6,-6 -15,-8 -23,-4 -9,4 -17,9 -25,15 -6,1 -13,-8 -20,-9 5,-9 -5,-18 -3,-25 8,-7 6,-21 -1,-29 5,-8 13,-17 6,-27 0,-8 2,-13 10,-12 7,0 -1,-11 6,-12 5,-11 9,-22 9,-34 -1,-9 1,-16 10,-18 7,-5 11,-12 21,-10 11,1 16,-9 18,-19 3,-5 8,-18 13,-15 2,10 8,19 14,27 6,6 13,11 20,15 7,4 15,4 24,5 3,6 0,15 3,22 2,9 2,17 5,25 5,7 15,9 18,19 4,7 9,12 12,20 8,8 11,18 14,28 8,7 16,15 20,25 l 15,27 c 5,9 1,20 2,30 -1,12 -14,3 -22,5 -14,0 -27,7 -39,15 z"
+ id="path80" />
+ <path
+ id="path4"
+ d="m 1356,1097 c -8,-7 -18,-6 -24,-15 l -23,-23 c -2,-7 -7,-14 -11,-19 -2,-5 -9,-11 0,-9 l 260,1 h 26 v 42 c -7,-6 -18,-5 -27,-8 -10,0 -22,2 -30,7 -5,9 -18,2 -26,4 -10,-2 -18,8 -27,7 -9,-6 -19,0 -28,2 -9,1 -16,3 -25,-1 -11,1 -21,-3 -31,-7 -10,-1 -18,4 -26,10 -3,3 -4,7 -8,9 z m -70,-71 c -7,-6 -13,-14 -18,-22 -7,-7 -11,-16 -20,-22 -7,-4 -17,-5 -24,0 -7,-1 -15,-6 -22,-8 -11,-4 -20,-12 -32,-10 -4,-8 -13,-11 -22,-10 -9,-1 -16,5 -25,6 l -58,5 c -9,0 -18,-1 -26,3 -10,-1 -22,2 -29,-5 -6,-6 -16,-6 -22,-11 -11,-7 -19,-19 -32,-25 12,-3 24,-6 33,-14 16,-11 25,-31 23,-51 0,-19 -8,-39 -26,-50 -8,-6 -18,-8 -28,-9 -11,-1 -14,-13 -15,-22 -6,-9 -12,-17 -16,-27 -4,-8 -8,-16 -9,-25 -4,-9 -12,-16 -17,-24 -7,-8 -15,-15 -25,-17 -5,-4 -4,-20 -16,-17 -6,-1 -16,4 -18,4 4,-9 7,-19 16,-24 6,-6 2,-17 10,-22 8,-6 11,-14 9,-24 -4,-8 0,-19 -1,-28 3,-14 10,-28 9,-42 4,-9 13,-14 16,-24 5,-10 10,-22 17,-32 9,-6 11,-17 18,-25 4,-10 16,-4 23,-10 6,-4 15,-5 18,-12 3,-6 4,-18 8,-21 v 160 c 0,12 -6,23 -13,31 -7,10 0,22 6,31 8,6 9,14 8,23 v 156 h 300 z" />
+ <path
+ d="m 406,1433 c -10,-3 -20,-1 -30,-1 2,-6 13,-10 11,-19 2,-10 -7,-19 -16,-20 -8,0 -16,3 -23,-3 -6,-5 -17,5 -21,-1 -1,-9 -13,-12 -21,-11 -8,-2 -14,13 -18,2 -10,-2 -10,-15 -13,-21 1,-8 -1,-15 7,-19 2,-9 9,-16 8,-25 1,-9 6,-17 4,-27 5,-8 0,-17 -5,-24 -2,-9 -2,-19 -3,-29 -2,-11 1,-21 1,-32 -3,-7 -1,-17 -8,-23 -3,-4 -10,-11 -1,-11 11,1 21,-6 25,-16 3,-8 1,-18 -3,-25 l -11,-23 c -3,-6 -16,-15 -13,-20 12,-3 11,-19 13,-28 0,-12 7,-26 -4,-34 -2,-9 -11,-16 -20,-14 -1,-8 -7,-16 -14,-21 -1,-6 2,-22 -9,-28 -8,-4 -22,-13 -12,-22 7,-5 -2,-19 10,-18 6,-2 4,-14 10,-7 10,5 22,1 27,-8 5,-6 13,-7 18,-13 9,-7 2,-19 5,-25 9,-5 21,-9 21,-21 0,-9 -10,-12 -9,-21 -3,-9 -7,-18 -14,-25 -3,-4 -4,-19 2,-9 8,3 12,9 16,17 3,6 12,9 15,13 4,10 6,19 6,29 0,12 14,15 24,14 9,0 14,-9 14,-17 2,-10 -3,-19 -3,-29 0,-9 1,-19 -1,-28 -4,-7 -7,-16 -15,-19 10,-5 24,-5 32,-14 3,-9 15,-8 19,-16 6,-5 12,-9 19,-11 10,-5 12,-15 18,-24 6,-4 7,-19 12,-19 0,10 -2,19 -1,28 -1,9 4,18 8,24 6,6 7,15 16,19 8,2 16,8 26,8 10,1 -2,13 1,20 0,8 -4,16 -3,25 -1,10 6,20 15,24 10,3 17,15 28,10 7,-4 20,10 10,13 -10,3 -13,15 -10,24 5,7 -8,13 -4,22 3,10 -3,19 -4,29 -2,8 -5,15 -10,22 -1,8 2,17 -2,25 -4,5 -3,19 -9,19 -9,-2 -17,1 -24,3 -11,3 -20,9 -28,16 -7,2 -20,-1 -16,11 -2,13 0,27 -2,40 -1,11 1,22 8,30 3,7 9,12 15,17 6,6 13,10 21,12 9,2 14,6 13,16 3,10 -14,13 -12,24 -2,9 8,15 7,23 -8,7 3,20 -4,25 -9,3 -19,5 -26,11 -5,6 -13,8 -21,7 -9,5 0,20 -3,29 -3,11 -3,21 1,32 2,9 6,18 2,27 -9,5 0,25 -15,21 -9,-1 -19,8 -18,18 1,10 8,18 -1,26 -4,8 2,16 0,24 0,8 -2,17 -8,22 z"
+ id="path6" />
+ <path
+ d="m 545,1225 c -7,-7 -22,-8 -28,-13 8,-6 1,-15 2,-23 7,-6 15,-14 11,-25 -2,-8 -12,-13 -4,-21 -2,-14 13,-12 21,-18 7,-5 15,-10 20,-18 7,-8 11,-18 13,-29 2,-16 -1,-32 -7,-47 -6,-8 -12,-16 -20,-22 -11,-4 -5,-12 -2,-20 1,-9 6,-16 9,-24 2,-7 -2,-15 2,-23 2,-9 3,-19 8,-27 9,-5 4,-18 8,-24 9,-6 6,-18 7,-26 -1,-11 2,-22 -4,-32 -7,-7 -16,-11 -25,-14 -7,-8 -17,-6 -25,-9 -4,-6 4,-16 7,-23 3,-7 1,-16 6,-23 4,-6 13,-7 15,-15 14,-12 16,-31 15,-48 0,-7 -6,-15 4,-16 8,-6 15,-2 21,4 7,7 19,9 24,17 3,11 15,9 23,13 l 30,19 c 8,4 12,12 21,13 10,2 17,-5 24,-9 10,-3 23,-17 32,-8 3,11 1,22 4,33 -1,8 -7,18 -1,27 7,6 4,17 3,25 -3,9 -2,18 4,25 5,7 6,19 5,27 -2,9 -1,18 4,25 1,12 11,19 22,20 8,1 17,7 6,12 -5,9 -19,4 -23,10 l -3,35 c -8,3 -15,8 -23,10 -9,5 -4,18 -14,23 l -19,22 c -4,9 -18,6 -20,18 0,11 -9,18 -18,20 -10,2 -22,2 -28,11 l -12,20 c -3,9 2,19 -3,28 -3,8 -2,19 -8,25 -9,6 -5,18 -6,27 -1,9 -3,19 -7,27 -6,7 -16,10 -25,11 -10,2 -22,-2 -31,6 -4,2 -10,4 -15,4 z"
+ id="path8" />
+ <path
+ d="m 832,1302 c -12,2 -15,-11 -22,-18 -9,-7 -17,-15 -28,-18 -7,-3 -15,-4 -23,-5 -13,-1 -27,2 -39,7 -7,0 -13,15 -16,3 -7,-6 -16,-8 -22,-16 -5,-5 -6,-14 -13,-17 -9,-2 -18,-9 -22,-17 -2,-8 -5,-15 0,-23 2,-7 2,-16 9,-21 5,-9 1,-20 5,-30 2,-10 4,-20 8,-30 8,-5 2,-18 10,-21 11,-5 24,-7 32,-17 5,-8 19,-7 21,-17 0,-11 12,-17 17,-25 5,-7 12,-12 16,-20 5,-2 11,-5 14,-8 l 18,20 c 12,13 30,17 47,16 8,0 16,-4 24,-6 8,-5 17,-12 23,-20 6,-6 7,-16 12,-23 1,-14 3,-30 -4,-43 -4,-7 -7,-15 -14,-20 -5,-5 -12,-10 -19,-12 -7,-7 -20,-3 -27,-8 -8,-11 -19,-21 -32,-23 -11,-3 1,-20 -10,-25 -4,-6 -3,-17 -3,-24 6,-8 4,-19 -3,-26 -4,-9 -5,-22 0,-31 1,-10 -9,-15 -7,-26 -1,-4 -2,-19 3,-9 2,13 14,5 22,8 13,2 27,1 38,-5 9,-5 14,-15 23,-19 10,-6 12,11 16,17 8,7 9,19 15,28 6,8 3,20 11,27 5,3 9,10 1,11 -6,9 -23,-1 -19,13 l -4,33 c -1,19 8,39 24,51 3,3 11,5 8,12 0,9 -1,18 6,25 7,5 10,13 20,16 7,3 15,8 21,13 6,6 13,13 8,22 -5,8 -8,16 -10,26 -4,8 -13,15 -11,25 0,9 -14,3 -15,13 -4,10 -17,9 -20,19 -2,9 -5,21 -1,30 8,3 9,17 -1,17 -8,5 -9,21 1,23 4,2 7,7 13,7 7,4 6,17 -2,18 -7,5 -10,15 -11,22 -8,4 -12,12 -18,16 -6,7 -3,18 -10,24 -4,9 -9,17 -18,21 -10,7 -3,20 -10,28 -5,7 -15,0 -21,5 -4,2 -6,6 -11,7 z"
+ id="path10" />
+ <path
+ d="m 1078,1267 c -9,0 -14,-7 -17,-14 -7,-6 -17,-11 -27,-11 -7,-3 -11,-10 -17,-15 -7,-6 -13,-15 -23,-14 -6,1 -14,4 -16,-4 -5,-3 -7,-11 -13,-13 -2,-9 -11,-14 -12,-22 v -16 c -6,-5 -11,-11 -19,-14 -6,-3 8,-2 5,-9 1,-10 3,-22 -5,-30 -4,-9 3,-18 11,-22 9,-3 9,-14 19,-15 9,-5 4,-18 10,-25 8,-5 6,-15 9,-22 6,-6 5,-16 11,-21 4,-8 14,-1 21,-2 l 40,3 c 9,-3 18,-4 28,-6 l 50,-4 c 8,2 17,5 25,3 8,-1 10,-11 17,-10 7,5 16,10 25,10 8,6 19,9 29,6 11,-3 14,10 21,16 7,7 11,17 19,24 7,3 11,10 15,15 5,9 8,19 16,26 6,7 16,11 20,20 -8,2 -16,5 -24,5 -9,2 -19,-2 -25,5 -8,1 -13,7 -13,15 -3,10 -8,18 -13,26 -6,7 -13,15 -23,15 -12,1 -23,4 -32,11 l -28,16 c -7,9 -13,21 -24,26 -9,3 -17,8 -15,18 -3,12 -14,19 -24,22 -7,3 -13,10 -21,7 z"
+ id="path12" />
+ <path
+ d="m 345,1803 c -7,-3 -16,0 -11,-12 0,-9 1,-20 -3,-29 -3,-6 -5,-13 -10,-18 -5,-7 -14,-10 -17,-17 -2,-11 -7,-21 -5,-32 9,-9 8,-23 17,-30 10,-4 8,-20 19,-22 l 22,1 c 8,-6 9,-17 15,-23 5,-8 14,-13 15,-22 -1,-8 -2,-19 6,-24 5,-12 18,-11 28,-17 14,-5 22,-17 30,-28 5,-9 8,-20 7,-30 0,-19 -5,-39 -19,-52 -8,-7 -8,-15 -6,-25 1,-9 3,-17 6,-26 -1,-9 1,-18 12,-20 8,-6 2,-18 9,-26 1,-8 10,-11 7,-20 8,5 16,10 26,12 14,2 30,1 43,-6 a 64,64 0 0 0 35,-53 c 1,-10 1,-21 -4,-30 -5,-12 16,-3 23,-10 8,-4 20,-7 28,-1 9,0 15,3 20,10 6,7 8,18 19,20 9,4 15,12 19,21 9,7 2,20 4,30 0,12 1,25 -5,36 -4,11 -2,24 -7,35 -6,3 -16,-2 -23,4 -10,2 -19,-3 -28,-6 -10,-1 -24,2 -25,14 1,11 -2,21 -3,31 1,10 -9,17 -6,27 4,8 4,20 -8,19 -8,2 -15,5 -22,10 -4,9 -19,3 -22,10 -1,18 -3,36 -1,53 2,9 6,16 12,23 5,7 12,13 19,17 8,1 14,6 8,14 -1,10 -5,17 -13,22 -8,6 -19,8 -25,16 -8,5 -9,15 -10,24 -1,9 -11,14 -10,24 3,11 -7,13 -16,16 -7,3 -12,10 -15,18 -7,7 0,18 -3,25 -6,7 -4,17 -8,24 -9,5 -18,7 -27,9 -10,6 -21,6 -31,7 -10,3 -21,2 -31,5 -10,2 -20,-2 -30,1 -1,2 -3,1 -5,1 z"
+ id="path62" />
+ <path
+ d="m 908,1553 c -10,-4 -4,-17 -8,-26 -1,-10 -6,-19 -12,-26 -1,-10 -6,-23 -18,-22 -10,-4 -14,10 -21,8 -4,-8 -3,-18 -8,-26 -9,-8 -22,-4 -30,-14 -9,-2 -17,-7 -25,-12 -4,-10 -21,-10 -20,-22 3,-6 14,-2 19,-8 9,-3 16,-8 22,-14 7,-9 14,-16 17,-26 2,-10 6,-18 5,-28 -1,-8 1,-14 10,-12 9,1 21,4 27,-5 8,-3 14,-8 20,-14 4,-8 10,-12 16,-17 6,-6 2,-15 6,-22 4,-7 8,-17 13,-22 12,-3 6,-19 15,-24 8,-1 16,-1 23,-7 7,1 12,19 23,15 11,-4 18,4 25,11 8,6 12,17 23,17 9,0 20,2 20,13 6,5 12,11 20,11 10,1 20,2 29,-3 -1,11 3,21 0,32 -1,11 0,23 3,34 1,14 -2,28 -1,42 v 100 c -2,10 -1,22 0,32 2,8 -12,4 -15,1 -10,-5 -16,7 -26,7 -12,-1 -25,2 -37,-4 -4,-7 -14,-2 -16,5 -10,0 -21,10 -29,0 -7,-2 -15,-1 -22,-1 -1,14 -16,7 -22,14 -7,6 -16,7 -24,11 -1,0 -1,3 -2,2 z"
+ id="path60" />
+ <path
+ d="m 1153,1535 c -7,-2 -17,-14 -24,-5 -12,2 -14,-13 -15,-22 -1,-9 0,-18 2,-27 v -45 c -1,-10 -2,-20 -1,-30 2,-9 1,-17 -1,-25 1,-16 3,-33 0,-49 -2,-20 -1,-40 -1,-60 10,-3 15,-12 20,-19 4,-8 4,-20 15,-21 13,-6 19,-20 30,-29 9,-4 18,-9 26,-16 8,-7 20,-4 30,-7 9,-3 18,-11 24,-19 5,-9 11,-18 13,-29 2,-9 14,-10 21,-12 13,-2 27,1 38,-7 7,-9 13,5 23,2 8,1 15,-3 21,-8 6,-4 10,-16 17,-7 7,3 14,1 22,1 6,-1 9,8 16,5 9,2 16,-4 25,-3 8,-1 16,-3 25,-2 10,1 17,-6 27,-5 10,-1 21,1 30,-4 7,-6 16,-8 25,-6 11,-1 12,10 18,15 8,8 5,19 -4,24 -7,7 -16,11 -15,22 0,11 1,23 -4,33 -6,5 -15,7 -18,15 -5,7 -1,17 -1,26 -1,10 4,19 3,28 -3,13 -3,26 -5,39 -2,8 -8,19 -3,28 6,8 13,17 6,26 -2,12 6,22 11,32 -2,6 -10,5 -12,11 -7,1 -15,-12 -25,-6 -8,4 -17,-2 -25,0 -8,3 -17,4 -22,12 -10,0 -9,14 -19,14 -6,6 -16,2 -24,2 -7,3 -14,16 -23,8 -10,0 -18,6 -28,7 -8,3 -13,-11 -23,-5 -8,4 -18,0 -28,0 -11,-3 -18,7 -22,15 -10,-1 -17,6 -25,9 -5,6 -13,5 -15,13 -7,3 -18,-4 -21,7 -9,1 -13,13 -7,19 -5,5 -15,6 -18,14 -3,11 -2,22 -8,32 -3,8 -15,8 -23,6 -8,-1 -18,-4 -25,3 z"
+ id="path14" />
+ <path
+ d="m 214,1790 c -10,-3 -17,-10 -28,-9 -10,2 -12,-11 -21,-15 -1,-7 -3,-16 -11,-18 -9,-2 -17,4 -23,-5 -8,-3 -15,-9 -24,-11 -7,-3 -11,-13 -16,-19 -8,-5 -5,-18 -15,-21 -5,-1 -16,-4 -8,-9 7,0 17,6 25,1 6,-8 15,-3 23,-5 9,-3 7,-15 9,-23 -3,-7 -5,-16 -10,-22 -7,-1 0,-14 -6,-17 6,-8 8,-19 17,-24 7,-2 11,-6 18,-2 9,3 13,-8 19,-8 12,4 17,-7 26,-10 6,-9 17,-5 25,-8 5,-2 7,-7 14,-7 -2,-8 4,-14 9,-19 7,-4 10,-14 10,-23 -7,-9 4,-15 9,-22 11,-2 6,-16 14,-21 8,-3 17,-9 17,-19 -1,-8 9,-11 14,-15 5,-6 14,-10 12,-18 -1,-8 12,-5 14,-13 7,-1 15,7 23,4 -1,11 13,16 8,27 -8,3 -14,14 -24,13 -6,-1 -10,0 -8,7 l -1,30 c 0,12 -1,25 5,36 6,13 17,24 30,31 4,5 22,3 11,9 -6,10 -4,22 -8,33 -5,5 -8,12 -17,8 -11,-1 -14,10 -19,17 -8,2 -13,8 -18,13 0,11 -13,14 -16,23 -4,8 -4,16 -11,23 -6,12 -4,25 -1,38 2,10 -15,3 -22,6 -9,2 -17,7 -24,12 -8,5 -22,1 -19,15 -1,9 2,19 -2,27 z"
+ id="path56" />
+ <path
+ d="m 1274,1675 c -8,-5 -18,-5 -26,-9 -12,-3 -1,-15 -4,-24 3,-9 18,-11 15,-24 1,-11 -13,-15 -22,-14 -8,2 -17,8 -26,2 -10,-2 -24,5 -30,-6 -7,-5 -9,-17 -17,-24 -11,-3 4,-10 8,-13 10,-4 17,-12 26,-15 8,-4 19,-6 21,-17 6,-9 2,-21 6,-31 1,-5 13,-2 14,-10 7,-4 5,-14 6,-19 6,-6 20,3 22,-7 6,-2 3,-10 10,-10 8,-6 18,-10 29,-10 9,-1 6,-18 17,-13 10,1 19,1 28,-2 8,4 18,7 27,5 10,-1 18,-6 27,-3 9,-4 19,-6 27,-12 9,0 20,1 27,-6 7,-4 12,-10 18,-15 7,-4 14,-11 23,-5 9,0 18,-4 25,3 5,8 20,3 23,-5 5,-3 10,7 10,12 3,7 5,16 13,19 4,6 15,1 13,9 v 46 c -7,5 -15,10 -20,18 -6,7 -15,10 -22,16 -7,5 -12,13 -10,22 1,11 11,16 20,14 5,6 17,0 18,11 5,8 17,10 14,22 v 41 c -9,6 -17,13 -24,21 -7,6 -12,14 -17,21 -4,2 -12,13 -15,5 -6,-6 -6,-15 -11,-22 -7,-5 -18,-7 -27,-3 -10,1 -10,12 -12,20 1,7 1,12 -7,10 h -120 c -7,1 -14,-3 -21,-3 -8,-2 -15,-8 -24,-4 -6,6 -15,1 -22,6 z"
+ id="path54" />
+ <path
+ d="m 728,1692 c -10,-2 -16,-12 -23,-19 -8,-4 -15,-9 -24,-10 -9,4 -16,-4 -23,-9 -6,-6 -10,-14 -9,-23 1,-10 -3,-19 -5,-28 l -5,-29 c 6,-7 7,-17 10,-26 2,-10 -4,-19 -5,-29 -2,-9 -10,-13 -15,-20 -5,-8 -21,-8 -18,-19 0,-8 8,-15 5,-25 -4,-7 -4,-20 4,-24 7,-5 11,-10 21,-7 7,3 16,6 24,2 8,-2 16,-4 21,-9 10,-8 10,-23 10,-34 7,8 15,14 23,19 8,3 15,5 21,9 11,-1 0,17 10,19 0,11 16,8 18,17 3,5 9,3 11,10 7,2 12,12 21,8 10,2 5,16 13,22 4,7 17,0 15,11 4,11 18,10 27,10 6,0 12,-5 14,-5 -2,8 5,15 9,20 1,10 5,19 3,30 -9,2 -7,14 -17,16 -4,11 -16,13 -26,14 -6,5 -15,1 -21,6 -8,4 -19,-2 -29,-1 -9,-1 -22,-2 -21,11 -3,11 -3,21 -1,32 0,11 -6,23 -2,34 1,8 3,23 -10,21 -8,4 -17,5 -26,6 z"
+ id="path16" />
+ <path
+ d="m 986,1813 c -8,-9 -23,-1 -28,-12 -5,-7 -10,-12 -11,-20 -6,-5 -6,-17 -17,-17 -8,-7 -18,-11 -27,-17 -10,-6 -16,4 -26,2 -12,0 -11,13 -14,20 -6,4 -13,12 -20,11 -6,-9 -19,-9 -24,-19 -11,-5 -13,-17 -15,-27 -5,-7 -10,-14 -18,-17 -3,-7 -8,-15 -8,-23 0,-16 -1,-32 1,-48 3,-14 0,-28 2,-41 4,-4 16,0 22,-1 8,-1 17,2 25,-2 5,-4 14,0 18,-7 12,0 24,-4 31,-14 5,9 16,8 25,6 11,-2 7,-16 14,-20 6,-3 6,-9 13,-9 10,-6 19,-9 30,-10 6,-2 9,-14 15,-7 6,11 22,3 31,0 10,1 17,-8 27,-2 9,1 19,-1 29,-1 7,4 14,-1 18,-4 7,8 15,0 23,3 8,-1 14,8 23,6 8,-1 15,1 22,4 9,2 18,1 25,-4 4,2 -8,6 -11,8 -10,5 -19,13 -20,24 -2,9 5,11 12,13 7,7 9,18 16,24 6,5 10,12 19,9 9,-3 17,-1 26,1 9,0 19,1 26,-4 7,4 -9,7 -9,13 l -26,10 c -11,-2 -19,6 -29,8 -17,3 -35,-2 -51,6 -9,3 -11,15 -22,13 -9,4 -17,12 -23,20 -7,9 -16,16 -24,24 -4,7 -11,14 -11,23 1,9 -1,18 -7,25 -8,5 -10,16 -20,14 -7,6 -9,16 -16,23 -6,5 -12,8 -16,16 z"
+ id="path18" />
+ <path
+ d="m 1318,2055 c -9,1 -5,-12 -14,-14 -7,-10 -17,1 -25,-2 -8,3 -4,-11 -13,-10 -9,2 -23,-2 -28,7 0,6 -5,-1 -9,-1 9,-9 -1,-20 2,-29 0,-9 2,-20 -4,-28 -2,-10 -15,-11 -24,-13 -5,-4 -6,-13 -15,-12 -9,-3 -18,-4 -26,-9 -7,-6 -17,9 -17,-2 -2,-7 -6,-14 -5,-22 0,-7 -7,-13 -14,-14 -11,0 -15,-12 -25,-14 -10,1 -17,-5 -24,-10 -10,-2 -20,1 -28,-6 -9,-4 -16,-8 -23,-16 -5,-7 -10,-16 -18,-19 1,-8 -7,-10 -12,-11 1,-10 10,-16 17,-22 9,-5 8,-18 18,-21 9,-2 13,-12 19,-18 7,-8 11,-20 9,-30 3,-8 9,-13 13,-20 7,-5 12,-12 19,-19 6,-8 13,-17 24,-19 11,0 12,-13 23,-15 9,-5 18,1 27,-1 8,-3 18,-2 26,-6 9,-6 22,-2 31,-8 5,-3 10,-2 4,3 -4,9 3,19 11,24 7,7 19,4 26,10 4,6 1,16 2,23 0,21 0,42 2,64 4,11 18,3 26,4 12,-1 24,3 36,3 6,5 20,-3 17,9 v 23 c -7,-2 -10,-11 -19,-11 -8,0 -15,4 -20,8 -9,0 -18,3 -25,8 -11,6 -24,0 -36,4 -14,5 -6,20 -7,31 0,17 -5,34 -2,51 0,11 -2,22 2,33 4,9 13,13 15,23 5,6 18,-1 20,9 2,11 14,11 22,14 6,6 3,14 -1,20 -3,9 1,18 9,22 4,6 5,14 12,18 6,2 3,6 2,11 z"
+ id="path48" />
+ <path
+ d="m 912,1993 c -9,-3 -10,-17 -22,-13 -8,-2 -17,8 -23,-2 -7,-5 -19,-4 -25,2 -7,13 -16,-4 -24,-7 -10,-3 -20,1 -29,1 -6,-5 -11,-8 -16,-14 -9,-4 -20,-2 -30,-2 -11,0 -20,8 -31,9 -11,4 -22,10 -33,12 -5,-9 -16,-6 -20,-16 -7,-4 -13,-7 -11,-16 v -31 h -58 c -7,-6 -17,-12 -27,-11 -9,-3 -9,14 -16,6 -8,-3 -17,-4 -21,-11 -8,-5 -18,-2 -27,-5 -9,-1 -15,-8 -22,-13 -8,-4 -10,-17 -20,-22 -8,-2 -11,-11 -20,-10 -10,0 -19,-5 -29,-2 -7,1 -18,0 -16,11 2,9 -7,15 -14,8 -9,-4 -19,-5 -27,0 -8,-1 -19,-1 -24,-8 -6,-7 -17,-7 -25,-4 l -24,-7 c -5,-1 -7,-10 1,-7 9,3 16,-4 25,-7 7,-4 12,-11 19,-14 11,0 21,5 33,2 8,-3 17,1 25,-1 l 24,-3 c 8,-4 18,0 26,-4 11,-1 20,-7 31,-8 9,-4 22,-1 28,-11 8,-7 3,-18 6,-27 5,-9 1,-19 5,-27 3,-12 17,-9 23,-17 5,-8 17,-8 22,-15 3,-8 6,-20 -3,-26 -4,-5 -1,-17 6,-20 6,-8 18,-8 25,-16 9,-7 12,-16 15,-26 4,-6 5,-14 8,-20 10,-2 21,-4 28,-12 5,4 2,16 4,23 3,8 8,16 6,25 -3,9 4,15 7,23 4,9 15,10 21,17 9,5 20,-1 28,6 9,7 17,16 27,22 10,4 20,0 30,-1 7,0 17,-9 16,2 3,8 6,16 11,23 8,5 17,11 18,21 0,13 11,19 19,27 8,6 17,10 25,17 7,4 20,5 24,-5 9,-4 20,-11 18,-23 4,-5 15,-3 19,-4 5,8 16,7 22,14 9,2 11,12 16,18 0,8 9,13 12,21 6,9 19,4 26,9 12,2 3,21 17,20 6,2 2,16 13,14 7,2 6,15 15,17 5,8 15,10 23,15 11,5 -8,13 -10,20 -4,9 -13,14 -19,21 -4,4 -8,9 -14,8 h -15 c -6,5 -11,11 -19,14 -3,9 -13,14 -14,24 1,4 1,13 -5,6 -10,-7 -23,0 -31,7 -1,1 -2,4 -3,3 z"
+ id="path20" />
+ <path
+ d="m 1255,2451 c -8,-5 -11,-13 -14,-21 -7,-5 -10,-13 -18,-18 -3,-10 -15,-8 -24,-8 -7,3 -15,12 -22,3 -3,-5 7,-13 10,-19 4,-7 9,-12 12,-20 5,-8 7,-17 13,-23 l 16,-24 c 3,-6 7,-11 13,-17 4,-6 5,-14 11,-19 4,-8 5,-19 2,-28 -7,-6 -18,1 -21,-10 -7,-5 -11,-12 -18,-15 -8,-2 -16,3 -21,-5 -7,-6 -17,0 -21,-9 -7,-6 -13,-14 -23,-15 -3,-11 -16,-7 -24,-7 -10,1 -14,11 -24,12 -5,7 -18,5 -24,6 -6,-7 -15,-8 -21,-15 -9,-2 -20,-1 -27,-8 -9,-4 -17,3 -24,7 -6,5 -6,14 -15,17 -10,-2 -17,6 -24,10 -8,-3 -12,7 -19,4 -5,-4 -15,-2 -22,-3 -8,1 -17,-7 -26,-2 -6,6 -18,1 -25,7 -4,-10 -15,-12 -23,-14 -8,-8 5,-16 2,-25 v -32 l -17,-18 c -8,-6 -17,3 -24,4 -6,1 -5,-8 -11,-8 4,-9 3,-20 -2,-28 -3,-10 -7,-19 -14,-26 -6,-9 -16,-11 -25,-15 -7,0 -9,-1 -11,-8 -4,-9 -18,-4 -21,-14 -3,-8 -13,-4 -20,-7 -12,1 -15,-11 -14,-20 -3,-7 -9,-12 -9,-21 -6,-10 12,-7 17,-12 9,-3 17,-8 27,-9 9,-5 18,-6 28,-7 8,0 9,10 17,12 6,8 18,6 27,5 10,-7 14,7 22,10 8,1 19,3 26,-2 3,-7 8,-8 11,-1 8,5 18,4 26,0 7,-3 8,11 16,11 7,4 18,5 23,-3 7,-11 16,-2 26,-3 9,1 16,-9 14,-17 0,-8 9,-12 12,-19 8,-4 14,-15 24,-9 11,0 19,-10 27,-17 6,-8 16,-12 19,-22 7,-6 12,-19 23,-19 6,5 13,11 22,9 9,0 14,13 24,13 13,0 1,14 10,20 5,7 4,21 15,22 8,2 15,-4 22,1 9,3 22,2 26,13 4,10 18,2 22,11 9,7 2,16 0,25 1,8 8,13 2,20 -4,11 5,17 13,21 4,9 18,9 24,3 3,-5 1,-13 8,-10 -2,12 12,10 20,11 5,2 11,0 15,-2 6,6 5,17 16,15 8,2 19,0 15,11 1,9 -7,16 -8,25 l -9,51 c -3,15 -4,29 -8,44 -1,14 -3,28 -8,41 -5,7 -4,17 -5,26 -2,16 -5,33 -9,49 -2,17 -3,34 -8,50 l -7,33 c -1,8 -4,16 -4,24 z"
+ id="path44" />
+ <path
+ d="m 3,1848 v -68 c 9,-2 18,-5 27,-5 10,0 16,-12 24,-11 12,5 15,-9 23,-13 6,0 7,-14 11,-5 9,6 20,9 30,15 10,3 8,14 15,21 6,6 17,0 23,5 6,8 13,15 24,15 10,-1 15,7 25,9 10,1 18,4 22,14 6,8 15,12 24,17 7,7 3,21 14,25 l 29,8 c 9,0 18,-3 24,6 9,2 17,6 27,7 9,2 18,-1 27,-1 8,5 18,5 27,2 10,0 15,-10 13,-19 10,-5 21,0 30,6 8,4 11,12 16,18 l 21,17 c 4,2 16,6 6,5 H 3 Z"
+ id="path38" />
+ <path
+ id="path22"
+ d="m 1338,1764 c -8,-4 -17,-3 -26,-4 -8,0 -16,-5 -25,-2 0,-21 -2,-42 -1,-63 11,-3 22,-2 32,-7 9,4 19,3 28,6 v 69 z m -66,715 c 3,-9 4,-19 5,-28 2,-14 3,-28 8,-41 3,-13 2,-26 7,-39 3,-13 5,-27 6,-42 2,-11 3,-23 7,-34 3,-9 4,-19 4,-29 2,-12 7,-22 8,-34 3,-15 3,-31 7,-46 2,-12 4,-25 8,-37 0,-10 2,-20 5,-29 0,-9 4,-15 9,-23 v 382 z m 74,-417 c -5,-9 -4,-19 -9,-28 -7,-6 -12,-15 -17,-23 -1,-11 5,-23 -2,-34 -3,-8 -11,-12 -19,-14 -8,-5 -13,-13 -21,-17 -9,-3 -14,-12 -20,-18 l 1,-81 c 2,-10 18,-2 25,-6 10,-5 20,-7 31,-9 6,-5 11,-7 17,-1 5,4 16,4 14,13 z" />
+ <path
+ d="M 1014,2479 V 2259 H 648 v -277 c 7,8 18,11 19,23 0,8 5,16 7,22 -4,9 5,17 9,25 5,6 14,7 21,9 10,1 16,10 26,13 7,5 10,17 21,17 8,1 16,3 21,10 6,9 12,21 11,31 -4,10 -3,20 7,25 6,10 18,11 28,10 8,-4 16,-1 16,9 0,8 2,16 -2,23 -6,11 -1,24 4,34 6,8 19,3 23,13 6,7 17,5 26,4 7,-4 15,5 22,-1 9,-4 22,-3 32,0 11,6 26,3 37,-3 9,-1 14,-12 25,-10 10,-1 15,-11 20,-18 5,-6 16,1 24,1 4,7 11,10 19,12 7,9 19,4 29,4 8,0 17,-1 23,-7 9,-1 14,-11 21,-8 9,3 14,9 21,14 5,6 8,15 17,17 8,-2 15,-2 22,3 8,-1 17,2 21,10 2,8 19,9 10,17 -2,9 -9,16 -14,23 l -16,25 c -9,8 -12,21 -17,31 -5,7 -12,14 -16,22 l -14,20 c -4,9 2,18 10,23 9,3 17,7 26,8 9,1 17,-13 22,-1 9,5 14,14 18,24 1,4 16,10 5,8 -5,-1 -10,8 -10,-2 -2,-11 -14,-12 -22,-11 -11,-2 -22,0 -32,-3 -9,1 -19,4 -28,7 -6,6 -12,14 -16,21 -10,6 -26,2 -38,3 z"
+ id="path24" />
+</svg>
diff --git a/tools/areas.xcf b/tools/areas.xcf
new file mode 100644
index 0000000..1833a5c
--- /dev/null
+++ b/tools/areas.xcf
Binary files differ
diff --git a/tools/boxes.svg b/tools/boxes.svg
new file mode 100644
index 0000000..80c34e5
--- /dev/null
+++ b/tools/boxes.svg
@@ -0,0 +1,785 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1650"
+ height="2550"
+ viewBox="0 0 1650 2550"
+ version="1.1"
+ id="svg4"
+ sodipodi:docname="boxes.svg"
+ inkscape:version="1.0.2 (e86c870879, 2021-01-15)">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview6"
+ showgrid="true"
+ inkscape:zoom="0.53295475"
+ inkscape:cx="864.23733"
+ inkscape:cy="1174.1586"
+ inkscape:current-layer="svg4"
+ inkscape:document-rotation="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid12" />
+ </sodipodi:namedview>
+ <image
+ sodipodi:absref="/home/tor/src/rally/public/andean-abyss/tools/map75.png"
+ xlink:href="map75.png"
+ id="image2"
+ style="display:inline;image-rendering:pixelated"
+ height="2550"
+ width="1650"
+ y="0"
+ x="0"
+ sodipodi:insensitive="true" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.493691;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect840"
+ width="187"
+ height="525"
+ x="21"
+ y="85"
+ ry="0.60471976"
+ inkscape:label="Government Troops &amp; Police" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.506976;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect842"
+ width="207"
+ height="149"
+ x="224"
+ y="461"
+ ry="0.60640913"
+ inkscape:label="Government Capabilities" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.274073;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect844"
+ width="177"
+ height="54.999989"
+ x="287"
+ y="371"
+ ry="0.2798028"
+ inkscape:label="Government Bases" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.48446;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect846"
+ width="75.998398"
+ height="168"
+ x="240.00162"
+ y="129"
+ ry="0.60329688"
+ inkscape:label="President Samper" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.524685;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect848"
+ width="78"
+ height="168"
+ x="322"
+ y="129"
+ ry="0.60329688"
+ inkscape:label="President Pastrana" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.517915;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect850"
+ width="76"
+ height="168"
+ x="406"
+ y="129"
+ ry="0.60329688"
+ inkscape:label="President Uribe" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect14"
+ width="361"
+ height="303"
+ x="1215"
+ y="83"
+ ry="0.610479"
+ inkscape:label="FARC Guerrillas" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.486173;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect852"
+ width="350"
+ height="207.99992"
+ x="21"
+ y="2266"
+ ry="0.57717991"
+ inkscape:label="AUC Guerrillas" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.334478;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect854"
+ width="358"
+ height="55.000072"
+ x="447"
+ y="2386"
+ ry="0.33576393"
+ inkscape:label="AUC Bases" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.331207;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect856"
+ width="543"
+ height="56.000008"
+ x="445"
+ y="2295"
+ ry="0.31078935"
+ inkscape:label="FARC Bases" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.348075;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect858"
+ width="145"
+ height="125"
+ x="1391"
+ y="1728"
+ ry="0.4488816"
+ inkscape:label="Shipments" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect860"
+ width="230"
+ height="200"
+ x="1350"
+ y="1870"
+ ry="0.610479"
+ inkscape:label="Cartels Guerrillas" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.398203;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect862"
+ width="183"
+ height="305"
+ x="1373"
+ y="2117"
+ ry="0.46549022"
+ inkscape:label="Cartels Bases" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.514317;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect866"
+ width="102.99951"
+ height="225.99954"
+ x="1113"
+ y="439.00049"
+ ry="0.62712717"
+ inkscape:label="Eligible Factions" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.511935;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect882"
+ width="103.00004"
+ height="229"
+ x="1458"
+ y="439"
+ ry="0.62133193"
+ inkscape:label="Ineligible Factions" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.507445;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect868"
+ width="103"
+ height="45"
+ x="1113"
+ y="666"
+ ry="0.610479"
+ inkscape:label="Pass" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.517845;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect870"
+ width="73"
+ height="72"
+ x="1262"
+ y="439"
+ ry="0.62792122"
+ inkscape:label="SOP A1" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.517845;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect872"
+ width="73"
+ height="72"
+ x="1337"
+ y="439"
+ ry="0.62792122"
+ inkscape:label="SOP A2" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.521429;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect874"
+ width="73"
+ height="73"
+ x="1262"
+ y="517"
+ ry="0.6366424"
+ inkscape:label="SOP B1" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.521429;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect876"
+ width="73"
+ height="73"
+ x="1337"
+ y="517"
+ ry="0.6366424"
+ inkscape:label="SOP B2" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.500286;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect878"
+ width="73"
+ height="72"
+ x="1262"
+ y="596"
+ ry="0.62792128"
+ inkscape:label="SOP C1" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.537393;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect880"
+ width="73"
+ height="72"
+ x="1337"
+ y="596"
+ ry="0.67622286"
+ inkscape:label="SOP C2" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.475;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect884"
+ width="57"
+ height="57"
+ x="1025"
+ y="662"
+ ry="0.57995504"
+ inkscape:label="Prop Card marker" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.508231;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect886"
+ width="447"
+ height="72"
+ x="1113"
+ y="719"
+ ry="0.62792122"
+ inkscape:label="Propaganda Track" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.494975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect888"
+ width="58"
+ height="49"
+ x="19"
+ y="16"
+ ry="0.66474378"
+ inkscape:label="S0" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.494975;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect890"
+ width="50"
+ height="49"
+ x="79"
+ y="16"
+ ry="0.5982694"
+ inkscape:label="S1" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect892"
+ width="50"
+ height="50"
+ x="1589"
+ y="16"
+ ry="0.610479"
+ inkscape:label="S30" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect894"
+ width="50"
+ height="50"
+ x="1589"
+ y="2486"
+ ry="0.610479"
+ inkscape:label="S77" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect896"
+ width="50"
+ height="50"
+ x="444"
+ y="2486"
+ ry="0.610479"
+ inkscape:label="S99" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.498627;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect898"
+ width="196"
+ height="274"
+ x="220"
+ y="1935"
+ ry="0.61952311"
+ inkscape:label="Momentum 2" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.501643;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect864"
+ width="197"
+ height="274"
+ x="14"
+ y="1935"
+ ry="0.60825908"
+ inkscape:label="Momentum 1"
+ sodipodi:insensitive="true" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect935"
+ width="120"
+ height="119"
+ x="622"
+ y="376"
+ ry="0.610479"
+ inkscape:label="Santa Marta" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.460258;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect935-3"
+ width="110.00052"
+ height="110.0005"
+ x="444.99948"
+ y="456.99948"
+ ry="0.56431085"
+ inkscape:label="Cartagena" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.460256;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ id="rect935-3-3"
+ width="110.00003"
+ height="110.00002"
+ x="459"
+ y="653"
+ ry="0.56430835"
+ inkscape:label="Sincelejo" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect62"
+ width="126"
+ height="125"
+ x="450"
+ y="1003"
+ ry="0.56430799"
+ inkscape:label="Medellin" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect64"
+ width="120"
+ height="119"
+ x="447"
+ y="1219"
+ ry="0.56430799"
+ inkscape:label="Ibague" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect66"
+ width="126"
+ height="126"
+ x="328"
+ y="1434"
+ ry="0.56430799"
+ inkscape:label="Cali" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect68"
+ width="110"
+ height="110"
+ x="219"
+ y="1728"
+ ry="0.56430799"
+ inkscape:label="Pasto" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect70"
+ width="110"
+ height="109"
+ x="534"
+ y="1488"
+ ry="0.56430799"
+ inkscape:label="Neiva" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect72"
+ width="141"
+ height="140"
+ x="684"
+ y="1266"
+ ry="0.56430799"
+ inkscape:label="Bogota" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect74"
+ width="120"
+ height="120"
+ x="779"
+ y="920"
+ ry="0.56430799"
+ inkscape:label="Bucaramanga" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect76"
+ width="110"
+ height="110"
+ x="896"
+ y="809"
+ ry="0.56430799"
+ inkscape:label="Cucuta" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect91"
+ width="50"
+ height="50"
+ x="1384"
+ y="1517"
+ ry="0.610479"
+ inkscape:label="Guainia" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect93"
+ width="50"
+ height="50"
+ x="1142"
+ y="1760"
+ ry="0.610479"
+ inkscape:label="Vaupes" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect95"
+ width="50"
+ height="51"
+ x="1060"
+ y="2039"
+ ry="0.610479"
+ inkscape:label="Amazonas" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect97"
+ width="50"
+ height="50"
+ x="1315"
+ y="1249"
+ ry="0.610479"
+ inkscape:label="Vichada" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect107"
+ width="49"
+ height="49"
+ x="69"
+ y="1767"
+ ry="0.610479"
+ inkscape:label="Ecuador" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect105"
+ width="51"
+ height="51"
+ x="162"
+ y="661"
+ ry="0.610479"
+ inkscape:label="Panama" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect111"
+ width="27"
+ height="28"
+ x="789"
+ y="519"
+ ry="0.610479"
+ inkscape:label="Cesar" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect113"
+ width="27"
+ height="27"
+ x="632"
+ y="629"
+ ry="0.610479"
+ inkscape:label="Atlantico" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect115"
+ width="28"
+ height="27"
+ x="652"
+ y="897"
+ ry="0.610479"
+ inkscape:label="Antioquia" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect117"
+ width="28"
+ height="27"
+ x="359"
+ y="1026"
+ ry="0.610479"
+ inkscape:label="Choco" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect119"
+ width="27"
+ height="27"
+ x="199"
+ y="1629"
+ ry="0.610479"
+ inkscape:label="Narino" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect121"
+ width="28"
+ height="27"
+ x="443"
+ y="1615"
+ ry="0.610479"
+ inkscape:label="Huila" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect123"
+ width="28"
+ height="28"
+ x="804"
+ y="1163"
+ ry="0.610479"
+ inkscape:label="Santander" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect125"
+ width="27"
+ height="27"
+ x="1079"
+ y="1114"
+ ry="0.610479"
+ inkscape:label="Arauca" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect127"
+ width="28"
+ height="28"
+ x="959"
+ y="1396"
+ ry="0.610479"
+ inkscape:label="Meta East" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect129"
+ width="27"
+ height="28"
+ x="707"
+ y="1525"
+ ry="0.610479"
+ inkscape:label="Meta West" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect133"
+ width="28"
+ height="28"
+ x="962"
+ y="1655"
+ ry="0.610479"
+ inkscape:label="Guaviare" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect135"
+ width="27"
+ height="28"
+ x="666"
+ y="1812"
+ ry="0.610479"
+ inkscape:label="Putumayo"
+ sodipodi:insensitive="true" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.493054;stroke-miterlimit:10"
+ id="rect193"
+ width="29.094727"
+ height="29.419678"
+ x="626.90527"
+ y="681.58032"
+ ry="0.61384743"
+ inkscape:label="Sincelejo / Ayacucho"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.483021;stroke-miterlimit:10"
+ id="rect191"
+ width="28.696798"
+ height="27.683743"
+ x="979.30322"
+ y="963.31628"
+ ry="0.58933133"
+ inkscape:label="Cucuta / Arauca"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.512471;stroke-miterlimit:10"
+ id="rect189"
+ width="31.000025"
+ height="30.223455"
+ x="610"
+ y="1208.7765"
+ ry="0.64194202"
+ inkscape:label="Bucaramanga / Bogota / Ibague"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.490613;stroke-miterlimit:10"
+ id="rect187"
+ width="28.451546"
+ height="29.000051"
+ x="872.54846"
+ y="1262"
+ ry="0.626275"
+ inkscape:label="Bogota / Yopal"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect185"
+ width="29.468042"
+ height="29.083158"
+ x="597.37769"
+ y="1399.1935"
+ ry="0.610479"
+ inkscape:label="Bogota / Neiva"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.51607;stroke-miterlimit:10"
+ id="rect183"
+ width="28.666931"
+ height="28.913555"
+ x="811.10846"
+ y="1459"
+ ry="0.65035242"
+ inkscape:label="Bogota / San Jose"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.463051;stroke-miterlimit:10"
+ id="rect181"
+ width="28.999987"
+ height="28.000008"
+ x="516"
+ y="1684"
+ ry="0.60942155"
+ inkscape:label="Neiva / Pasto"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.474148;stroke-miterlimit:10"
+ id="rect179"
+ width="28.999996"
+ height="28.000023"
+ x="132"
+ y="1752"
+ ry="0.56254035"
+ inkscape:label="Pasto / Tumaco"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.464882;stroke-miterlimit:10"
+ id="rect177"
+ width="28.005878"
+ height="28.176392"
+ x="333.99411"
+ y="1610.8236"
+ ry="0.5722847"
+ inkscape:label="Cali / Pasto"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.476266;stroke-miterlimit:10"
+ id="rect175"
+ width="28.999994"
+ height="27.677717"
+ x="354"
+ y="1398.3223"
+ ry="0.610479"
+ inkscape:label="Cali / Buenaventura"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.523543;stroke-miterlimit:10"
+ id="rect173"
+ width="29.433331"
+ height="29.000032"
+ x="420.56668"
+ y="1347"
+ ry="0.64658195"
+ inkscape:label="Ibague / Cali"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.480959;stroke-miterlimit:10"
+ id="rect171"
+ width="30.000021"
+ height="30.000057"
+ x="496"
+ y="1154"
+ ry="0.59008443"
+ inkscape:label="Medellin / Ibague"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.50111;stroke-miterlimit:10"
+ id="rect169"
+ width="29"
+ height="28.000017"
+ x="500"
+ y="599"
+ ry="0.64088982"
+ inkscape:label="Cartagena / Sincelejo"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.5;stroke-miterlimit:10"
+ id="rect167"
+ width="28.037897"
+ height="26.637428"
+ x="549.11493"
+ y="862.35321"
+ ry="0.610479"
+ inkscape:label="Sincelejo / Medellin"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.529155;stroke-miterlimit:10"
+ id="rect165"
+ width="30.782864"
+ height="29.690521"
+ x="762"
+ y="815.30945"
+ ry="0.6642915"
+ inkscape:label="Bucaramanga / Ayacucho"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.561292;stroke-miterlimit:10"
+ id="rect163"
+ width="29.000031"
+ height="29.000002"
+ x="858"
+ y="693"
+ ry="0.66435766"
+ inkscape:label="Cucuta / Ayacucho"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.497694;stroke-miterlimit:10"
+ id="rect161"
+ width="29.999989"
+ height="30.00001"
+ x="731"
+ y="586"
+ ry="0.64581126"
+ inkscape:label="Santa Marta / Ayacucho"
+ clip-path="none" />
+ <rect
+ style="fill:#000000;fill-opacity:0.25098;stroke:#fe0000;stroke-width:0.533544;stroke-miterlimit:10"
+ id="rect159"
+ width="29.000029"
+ height="29.000004"
+ x="573"
+ y="452"
+ ry="0.6797027"
+ inkscape:label="Santa Marta / Cartagena"
+ clip-path="none" />
+</svg>
diff --git a/tools/cards.txt b/tools/cards.txt
new file mode 100644
index 0000000..67631f2
--- /dev/null
+++ b/tools/cards.txt
@@ -0,0 +1,101 @@
+GFAC
+1. 1st Division
+2. Ospina & Mora
+3. Tapias
+GFCA
+4. Caño Limón - Coveñas
+5. Occidental & Ecopetrol
+6. Oil Spill
+GAFC
+7. 7th Special Forces
+8. Fuerza Aérea Colombiana
+9. High Mountain Battalions
+GACF
+10. Blackhawks
+11. National Defense & Security Council
+12. Plan Colombia
+GCFA
+13. Plan Meteoro
+14. Tres Esquinas
+15. War Tax
+GCAF
+16. Coffee Prices
+17. Madrid Donors
+18. NSPD-18
+FGAC
+19. General Offensive
+20. Mono Jojoy
+21. Raúl Reyes
+FGCA
+22. Alfonso Cano
+23. DoD Contractors
+24. Operación Jaque
+FAGC
+25. Ejército de Liberación Nacional
+26. Gramaje
+27. Misil Antiaéreo
+FACG
+28. Hugo Chávez
+29. Kill Zone
+30. Peace Commission
+FCGA
+31. Betancourt
+32. Secuestrados
+33. Sucumbíos
+FCAG
+34. Airdropped AKs
+35. Crop Substitution
+36. Zona de Convivencia
+AGFC
+37. Former Military
+38. National Coordination Center
+39. Soldados campesinos
+AGCF
+40. Demobilization
+41. Mancuso
+42. Senado & Cámara
+AFGC
+43. Calima Front
+44. Colombia Nueva
+45. Los Derechos Humanos
+AFCG
+46. Limpieza
+47. Pinto & del Rosario
+48. Unión Sindical Obrera
+ACGF
+49. Bloques
+50. Carabineros
+51. Pipeline Repairs
+ACFG
+52. Castaño
+53. Criminal Air Force
+54. Deserters & Defectors
+CGFA
+55. DEA Agents
+56. Drogas La Rebaja
+57. Op Millennium
+CGAF
+58. General Serrano
+59. Salcedo
+60. The Chess Player
+CFGA
+61. Air Bridge
+62. Amazonía
+63. Narco-War
+CFAG
+64. Cocaine Labs
+65. Poppies
+66. Tingo María
+CAGF
+67. Mexican Traffickers
+68. Narco-Subs
+69. Riverines & Fast Boats
+CAFG
+70. Ayahuasca Tourism
+71. Darién
+72. Sicarios
+----
+73. Propaganda!
+74. Propaganda!
+75. Propaganda!
+76. Propaganda!
diff --git a/tools/cylinder_icon_auc.svg b/tools/cylinder_icon_auc.svg
new file mode 100644
index 0000000..6676cbd
--- /dev/null
+++ b/tools/cylinder_icon_auc.svg
@@ -0,0 +1 @@
+<path fill="#0072bc" stroke="#fff" stroke-width="2" d="m20.017 7.656-1.882 3.85-6.052.015H6.031l1.313.656c2.829 1.385 7.743 3.763 8.064 3.88.175.072.321.174.321.247 0 .073-.831 1.823-1.837 3.88-1.007 2.07-1.809 3.776-1.78 3.806.015.029.773-.307 1.648-.73.89-.437 3.092-1.502 4.915-2.391l3.296-1.604.714.35c.38.19 1.882.918 3.325 1.604 1.444.7 3.296 1.59 4.127 1.998.817.408 1.546.7 1.59.641.058-.043-.7-1.75-1.692-3.777-.977-2.012-1.764-3.719-1.764-3.777 0-.058.437-.306.991-.569.86-.408 5.994-2.887 7.978-3.85l.729-.364H25.85l-1.881-3.865C22.948 5.527 22.059 3.792 22 3.792c-.044 0-.933 1.735-1.983 3.864z"/>
diff --git a/tools/cylinder_icon_auc.svg.bak b/tools/cylinder_icon_auc.svg.bak
new file mode 100644
index 0000000..d52d98f
--- /dev/null
+++ b/tools/cylinder_icon_auc.svg.bak
@@ -0,0 +1,22 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="44" height="30"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+</metadata>
+<g transform="translate(1,0)scale(0.145833)">
+<g transform="translate(0.000000,192.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M1304 1395 l-129 -264 -415 -1 -415 0 90 -45 c194 -95 531 -258 553
+-266 12 -5 22 -12 22 -17 0 -5 -57 -125 -126 -266 -69 -142 -124 -259 -122
+-261 1 -2 53 21 113 50 61 30 212 103 337 164 l226 110 49 -24 c26 -13 129
+-63 228 -110 99 -48 226 -109 283 -137 56 -28 106 -48 109 -44 4 3 -48 120
+-116 259 -67 138 -121 255 -121 259 0 4 30 21 68 39 59 28 411 198 547 264
+l50 25 -416 0 -415 0 -129 265 c-70 146 -131 265 -135 265 -3 0 -64 -119 -136
+-265z"/>
+</g>
+</g>
+</svg>
diff --git a/tools/cylinder_icon_cartels.svg b/tools/cylinder_icon_cartels.svg
new file mode 100644
index 0000000..e5d5aa3
--- /dev/null
+++ b/tools/cylinder_icon_cartels.svg
@@ -0,0 +1 @@
+<path fill="#fff200" stroke="#636466" stroke-width="2" d="M26.958 7.665c-.89.116-2.654.612-3.864 1.093-2.96 1.152-7.117 3.602-8.371 4.915-1.02 1.064-1.4 2.027-1.4 3.529v1.254l-1.56 1.05c-.876.569-1.576 1.094-1.576 1.181 0 .132 2.509 1.896 2.698 1.896.044 0 .802-.481 1.707-1.079l1.618-1.094 1.182.088c1.895.117 4.725-.408 6.475-1.225 1.37-.627 3.806-2.436 5.687-4.2 3.383-3.165 3.88-5.936 1.283-7.088-.714-.306-2.741-.48-3.879-.32z"/>
diff --git a/tools/cylinder_icon_cartels.svg.bak b/tools/cylinder_icon_cartels.svg.bak
new file mode 100644
index 0000000..9b828e9
--- /dev/null
+++ b/tools/cylinder_icon_cartels.svg.bak
@@ -0,0 +1,19 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="44" height="30"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+</metadata>
+<g transform="translate(1,1)scale(0.145833)">
+<g transform="translate(0.000000,192.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M1780 1463 c-61 -8 -182 -42 -265 -75 -203 -79 -488 -247 -574 -337
+-70 -73 -96 -139 -96 -242 l0 -86 -107 -72 c-60 -39 -108 -75 -108 -81 0 -9
+172 -130 185 -130 3 0 55 33 117 74 l111 75 81 -6 c130 -8 324 28 444 84 94
+43 261 167 390 288 232 217 266 407 88 486 -49 21 -188 33 -266 22z"/>
+</g>
+</g>
+</svg>
diff --git a/tools/cylinder_icon_farc.svg b/tools/cylinder_icon_farc.svg
new file mode 100644
index 0000000..d65b0c5
--- /dev/null
+++ b/tools/cylinder_icon_farc.svg
@@ -0,0 +1 @@
+<path fill="#ffd800" stroke="#8c1042" stroke-width="2" d="m19.725 7.86-2.173 2.902-1.167.16c-.641.088-1.954.22-2.916.307-.963.088-2.232.219-2.815.306-.583.073-1.37.132-1.764.132-.38 0-.744.043-.788.102-.058.043 1.415 1.093 3.252 2.333 1.852 1.225 3.354 2.304 3.354 2.377 0 .088-.32 1.458-.729 3.063-.394 1.604-.729 2.975-.729 3.077 0 .19-.088.218 2.625-.744l3.792-1.327c.918-.321 1.823-.627 1.983-.671.262-.058 2.45.583 3.34.977.16.073.787.292 1.385.496.598.204 1.765.598 2.596.89.831.291 1.531.51 1.56.48.03-.028-.291-1.458-.729-3.178-.437-1.721-.758-3.165-.73-3.223.045-.044.657-.482 1.4-.948 4.376-2.83 5.426-3.544 5.236-3.617-.116-.029-.743-.102-1.385-.146-.642-.058-1.794-.16-2.552-.233-.759-.073-2.1-.19-2.96-.277-2.728-.263-2.29.044-4.74-3.238l-2.188-2.902-2.158 2.902z"/>
diff --git a/tools/cylinder_icon_farc.svg.bak b/tools/cylinder_icon_farc.svg.bak
new file mode 100644
index 0000000..68363c3
--- /dev/null
+++ b/tools/cylinder_icon_farc.svg.bak
@@ -0,0 +1,23 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="44" height="30"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+</metadata>
+<g transform="translate(1,0)scale(0.145833)">
+<g transform="translate(0.000000,192.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M1284 1381 l-149 -199 -80 -11 c-44 -6 -134 -15 -200 -21 -66 -6
+-153 -15 -193 -21 -40 -5 -94 -9 -121 -9 -26 0 -51 -3 -54 -7 -4 -3 97 -75
+223 -160 127 -84 230 -158 230 -163 0 -6 -22 -100 -50 -210 -27 -110 -50 -204
+-50 -211 0 -13 -6 -15 180 51 80 28 197 69 260 91 63 22 125 43 136 46 18 4
+168 -40 229 -67 11 -5 54 -20 95 -34 41 -14 121 -41 178 -61 57 -20 105 -35
+107 -33 2 2 -20 100 -50 218 -30 118 -52 217 -50 221 3 3 45 33 96 65 300 194
+372 243 359 248 -8 2 -51 7 -95 10 -44 4 -123 11 -175 16 -52 5 -144 13 -203
+19 -187 18 -157 -3 -325 222 l-150 199 -148 -199z"/>
+</g>
+</g>
+</svg>
diff --git a/tools/cylinder_icon_govt.svg b/tools/cylinder_icon_govt.svg
new file mode 100644
index 0000000..d091c13
--- /dev/null
+++ b/tools/cylinder_icon_govt.svg
@@ -0,0 +1 @@
+<path fill="#fff9ae" stroke="#001c5a" stroke-width="1.0" d="m20.017 7.656-1.882 3.85-6.052.015H6.031l1.313.656c2.829 1.385 7.743 3.763 8.064 3.88.175.072.321.174.321.247 0 .073-.831 1.823-1.837 3.88-1.007 2.07-1.809 3.776-1.78 3.806.015.029.773-.307 1.648-.73.89-.437 3.092-1.502 4.915-2.391l3.296-1.604.714.35c.38.19 1.882.918 3.325 1.604 1.444.7 3.296 1.59 4.127 1.998.817.408 1.546.7 1.59.641.058-.043-.7-1.75-1.692-3.777-.977-2.012-1.764-3.719-1.764-3.777 0-.058.437-.306.991-.569.86-.408 5.994-2.887 7.978-3.85l.729-.364H25.85l-1.881-3.865C22.948 5.527 22.059 3.792 22 3.792c-.044 0-.933 1.735-1.983 3.864z"/>
diff --git a/tools/genboxes.py b/tools/genboxes.py
new file mode 100644
index 0000000..8686ef7
--- /dev/null
+++ b/tools/genboxes.py
@@ -0,0 +1,73 @@
+mode = None
+
+list = []
+
+x = y = w = h = 0
+name = None
+
+def flush():
+ global x, y, w, h, name
+ if mode == 'rect':
+ list.append((x,y,w,h,'box',name))
+ if mode == 'circle':
+ x = cx - rx
+ y = cy - ry
+ w = rx * 2
+ h = ry * 2
+ list.append((x,y,w,h,'circle',name))
+ x = y = w = h = 0
+ name = None
+
+for line in open("tools/boxes.svg").readlines():
+ line = line.strip()
+ if line == "<rect":
+ flush()
+ mode = 'rect'
+ x = y = w = h = 0
+ elif line == "<ellipse":
+ flush()
+ mode = 'circle'
+ cx = cy = rx = ry = 0
+ if line.startswith('x="'): x = round(float(line.split('"')[1]))
+ if line.startswith('y="'): y = round(float(line.split('"')[1]))
+ if line.startswith('width="'): w = round(float(line.split('"')[1]))
+ if line.startswith('height="'): h = round(float(line.split('"')[1]))
+ if line.startswith('cx="'): cx = round(float(line.split('"')[1]))
+ if line.startswith('cy="'): cy = round(float(line.split('"')[1]))
+ if line.startswith('rx="'): rx = round(float(line.split('"')[1]))
+ if line.startswith('ry="'): ry = round(float(line.split('"')[1]))
+ if line.startswith('inkscape:label="'): name = line.split('"')[1]
+flush()
+
+def print_list():
+ print("const boxes = {")
+ for (x,y,w,h,c,name) in list:
+ print(f'"{name}": [{x},{y},{w},{h}],')
+ print("}")
+
+def print_list2():
+ print("const centers = {")
+ for (x,y,w,h,c,name) in list:
+ xc = round((x+w/2.0))
+ yc = round((y+h/2.0))
+ print(f'"{name}": [{xc},{yc}],')
+ print("}")
+
+def print_html():
+ # print('<html><style>')
+ # print('.box{position:absolute;background-color:#f008;border:2px solid blue;}')
+ # print('.circle{position:absolute;background-color:#0f08;border-radius:50%;border:2px solid blue;}')
+ # print('img{position:absolute;display:block}')
+ # print('</style>')
+ # print('<div style="position:relative;width:1275px;heigth:1650px;">')
+ # print('<img src="map75.png">')
+ for (x,y,w,h,c,name) in list:
+ x = round(x)
+ y = round(y)
+ w = round(w)
+ h = round(h)
+ print(f'<div class="{c}" style="top:{y}px;left:{x}px;width:{w}px;height:{h}px">{name}</div>')
+ # print('</div>')
+
+#print_html()
+print_list2()
diff --git a/tools/gendata.js b/tools/gendata.js
new file mode 100644
index 0000000..58340af
--- /dev/null
+++ b/tools/gendata.js
@@ -0,0 +1,390 @@
+let data = {}
+
+const IMAP = { G: "Government", F: "FARC", A: "AUC", C: "Cartels" }
+let initiative = null
+let cards = [ null ]
+function def_initiative(s) {
+ initiative = [ IMAP[s[0]], IMAP[s[1]], IMAP[s[2]], IMAP[s[3]] ]
+}
+function def_card(number, name) {
+ cards[number] = { number, name, initiative }
+}
+def_initiative("GFAC")
+def_card(1, "1st Division")
+def_card(2, "Ospina & Mora")
+def_card(3, "Tapias")
+def_initiative("GFCA")
+def_card(4, "Caño Limón - Coveñas")
+def_card(5, "Occidental & Ecopetrol")
+def_card(6, "Oil Spill")
+def_initiative("GAFC")
+def_card(7, "7th Special Forces")
+def_card(8, "Fuerza Aérea Colombiana")
+def_card(9, "High Mountain Battalions")
+def_initiative("GACF")
+def_card(10, "Blackhawks")
+def_card(11, "National Defense & Security Council")
+def_card(12, "Plan Colombia")
+def_initiative("GCFA")
+def_card(13, "Plan Meteoro")
+def_card(14, "Tres Esquinas")
+def_card(15, "War Tax")
+def_initiative("GCAF")
+def_card(16, "Coffee Prices")
+def_card(17, "Madrid Donors")
+def_card(18, "NSPD-18")
+def_initiative("FGAC")
+def_card(19, "General Offensive")
+def_card(20, "Mono Jojoy")
+def_card(21, "Raúl Reyes")
+def_initiative("FGCA")
+def_card(22, "Alfonso Cano")
+def_card(23, "DoD Contractors")
+def_card(24, "Operación Jaque")
+def_initiative("FAGC")
+def_card(25, "Ejército de Liberación Nacional")
+def_card(26, "Gramaje")
+def_card(27, "Misil Antiaéreo")
+def_initiative("FACG")
+def_card(28, "Hugo Chávez")
+def_card(29, "Kill Zone")
+def_card(30, "Peace Commission")
+def_initiative("FCGA")
+def_card(31, "Betancourt")
+def_card(32, "Secuestrados")
+def_card(33, "Sucumbíos")
+def_initiative("FCAG")
+def_card(34, "Airdropped AKs")
+def_card(35, "Crop Substitution")
+def_card(36, "Zona de Convivencia")
+def_initiative("AGFC")
+def_card(37, "Former Military")
+def_card(38, "National Coordination Center")
+def_card(39, "Soldados campesinos")
+def_initiative("AGCF")
+def_card(40, "Demobilization")
+def_card(41, "Mancuso")
+def_card(42, "Senado & Cámara")
+def_initiative("AFGC")
+def_card(43, "Calima Front")
+def_card(44, "Colombia Nueva")
+def_card(45, "Los Derechos Humanos")
+def_initiative("AFCG")
+def_card(46, "Limpieza")
+def_card(47, "Pinto & del Rosario")
+def_card(48, "Unión Sindical Obrera")
+def_initiative("ACGF")
+def_card(49, "Bloques")
+def_card(50, "Carabineros")
+def_card(51, "Pipeline Repairs")
+def_initiative("ACFG")
+def_card(52, "Castaño")
+def_card(53, "Criminal Air Force")
+def_card(54, "Deserters & Defectors")
+def_initiative("CGFA")
+def_card(55, "DEA Agents")
+def_card(56, "Drogas La Rebaja")
+def_card(57, "Op Millennium")
+def_initiative("CGAF")
+def_card(58, "General Serrano")
+def_card(59, "Salcedo")
+def_card(60, "The Chess Player")
+def_initiative("CFGA")
+def_card(61, "Air Bridge")
+def_card(62, "Amazonía")
+def_card(63, "Narco-War")
+def_initiative("CFAG")
+def_card(64, "Cocaine Labs")
+def_card(65, "Poppies")
+def_card(66, "Tingo María")
+def_initiative("CAGF")
+def_card(67, "Mexican Traffickers")
+def_card(68, "Narco-Subs")
+def_card(69, "Riverines & Fast Boats")
+def_initiative("CAFG")
+def_card(70, "Ayahuasca Tourism")
+def_card(71, "Darién")
+def_card(72, "Sicarios")
+initiative = null
+def_card(73, "Propaganda!")
+def_card(74, "Propaganda!")
+def_card(75, "Propaganda!")
+def_card(76, "Propaganda!")
+
+console.log("const cards = {")
+for (let c of cards) console.log(JSON.stringify(c) + ",")
+console.log("}")
+
+let spaces = [ ]
+let space_names = [ ]
+
+function add(list, item) {
+ if (!list.includes(item))
+ list.push(item)
+}
+
+function def_space(type, pop, name) {
+ spaces.push({ type, name, pop, adjacent: [] })
+ space_names.push(name)
+}
+
+function def_town(name) {
+ spaces.push({ type: "town", name, adjacent: [] })
+ space_names.push(name)
+}
+
+function def_loc(type, econ, cities, depts) {
+ let name = cities.join(" / ")
+ let loc_names = cities.concat(depts)
+ let loc_spaces = loc_names.map(n => space_names.indexOf(n))
+ let ix = spaces.length
+ spaces.push({ type, name, econ, adjacent: loc_spaces.filter(x=>x>0) })
+ for (let loc of loc_spaces)
+ if (loc >= 0)
+ add(spaces[loc].adjacent, ix)
+ space_names.push(name)
+ return ix
+}
+
+function adjacent(an, bn) {
+ ax = space_names.indexOf(an)
+ bx = space_names.indexOf(bn)
+ add(spaces[ax].adjacent, bx)
+ add(spaces[bx].adjacent, ax)
+}
+
+// Cities
+data.first_pop = 1
+data.first_city = spaces.length
+
+def_space("city", 8, "Bogotá")
+def_space("city", 3, "Cali")
+def_space("city", 2, "Bucaramanga")
+def_space("city", 2, "Ibagué")
+def_space("city", 2, "Santa Marta")
+def_space("city", 1, "Cartagena")
+def_space("city", 1, "Cúcuta")
+def_space("city", 1, "Medellín")
+def_space("city", 1, "Neiva")
+def_space("city", 1, "Pasto")
+def_space("city", 1, "Sincelejo")
+
+data.last_city = spaces.length-1
+
+data.first_dept = spaces.length
+
+// Departments
+def_space("forest", 1, "Atlántico")
+def_space("forest", 1, "Chocó")
+def_space("forest", 1, "Nariño")
+def_space("forest", 1, "Meta West")
+def_space("forest", 1, "Guaviare")
+def_space("forest", 1, "Putumayo")
+def_space("mountain", 1, "Cesar")
+def_space("mountain", 2, "Antioquia")
+def_space("mountain", 2, "Santander")
+def_space("mountain", 2, "Huila")
+def_space("grassland", 1, "Arauca")
+def_space("grassland", 1, "Meta East")
+
+data.last_pop = spaces.length-1
+
+def_space("grassland", 0, "Vichada")
+def_space("forest", 0, "Guainía")
+def_space("forest", 0, "Vaupés")
+def_space("forest", 0, "Amazonas")
+
+data.last_dept = spaces.length-1
+
+data.first_foreign = spaces.length
+
+// Foreign Countries
+def_space("foreign", 0, "Brasil")
+def_space("foreign", 0, "Ecuador")
+def_space("foreign", 0, "Panamá")
+def_space("foreign", 0, "Perú")
+def_space("foreign", 0, "Venezuela")
+
+data.last_foreign = spaces.length-1
+
+// LoC
+
+data.first_loc = spaces.length
+
+def_loc("road", 1, [ "Santa Marta", "Cartagena"], [ "Atlántico" ])
+def_loc("road", 1, [ "Cali", "Pasto"], [ "Nariño", "Huila" ])
+def_loc("road", 1, [ "Neiva", "Pasto"], [ "Huila", "Putumayo" ])
+def_loc("road", 1, [ "Bogotá", "San José" ], [ "Meta East", "Meta West", "Guaviare" ])
+
+def_loc("road", 1, [ "Pasto", "Tumaco" ], [ "Nariño", "Ecuador" ])
+def_loc("pipeline", 1, [ "Cali", "Buenaventura" ], [ "Chocó", "Nariño" ])
+
+def_loc("pipeline", 1, [ "Cartagena", "Sincelejo"], [ "Atlántico" ])
+def_loc("pipeline", 2, [ "Sincelejo", "Medellín"], [ "Chocó", "Antioquia" ])
+def_loc("pipeline", 1, [ "Medellín", "Ibagué"], [ "Chocó", "Antioquia" ])
+def_loc("pipeline", 1, [ "Ibagué", "Cali"], [ "Chocó", "Huila" ])
+
+def_loc("pipeline", 2, [ "Bucaramanga", "Ibagué", "Bogotá" ], [ "Antioquia", "Santa", "Huila" ])
+def_loc("pipeline", 2, [ "Bogotá", "Neiva" ], [ "Huila", "Meta West" ])
+def_loc("pipeline", 3, [ "Cúcuta", "Arauca" ], [ "Venezuela", "Arauca", "Santaner" ])
+def_loc("pipeline", 2, [ "Bogotá", "Yopal" ], [ "Santander", "Arauca", "Meta East"])
+
+let ayacucho = [
+ def_loc("pipeline", 2, [ "Santa Marta", "Ayacucho" ], [ "Cesar", "Santander", "Antioquia", "Atlántico" ]),
+ def_loc("pipeline", 2, [ "Bucaramanga", "Ayacucho" ], [ "Antioquia", "Atlántico", "Cesar", "Santander" ]),
+ def_loc("pipeline", 3, [ "Sincelejo", "Ayacucho" ], [ "Atlántico", "Cesar", "Santander", "Antioquia" ]),
+ def_loc("pipeline", 3, [ "Cúcuta", "Ayacucho" ], [ "Santander", "Antioquia", "Atlántico", "Cesar", "Venezuela" ]),
+]
+
+for (let a of ayacucho) {
+ for (let b of ayacucho)
+ if (a !== b)
+ add(spaces[a].adjacent, b)
+}
+
+data.last_loc = spaces.length-1
+
+// City in Dept
+
+adjacent("Santa Marta", "Cesar")
+adjacent("Santa Marta", "Atlántico")
+adjacent("Cartagena", "Atlántico")
+adjacent("Sincelejo", "Atlántico")
+adjacent("Sincelejo", "Antioquia")
+adjacent("Sincelejo", "Chocó")
+adjacent("Medellín", "Chocó")
+adjacent("Medellín", "Antioquia")
+adjacent("Ibagué", "Chocó")
+adjacent("Ibagué", "Antioquia")
+adjacent("Ibagué", "Huila")
+adjacent("Cali", "Chocó")
+adjacent("Cali", "Huila")
+adjacent("Cali", "Nariño")
+adjacent("Pasto", "Nariño")
+adjacent("Pasto", "Huila")
+adjacent("Pasto", "Putumayo")
+adjacent("Pasto", "Ecuador")
+adjacent("Cúcuta", "Venezuela")
+adjacent("Cúcuta", "Santander")
+adjacent("Bucaramanga", "Antioquia")
+adjacent("Bucaramanga", "Santander")
+adjacent("Bogotá", "Santander")
+adjacent("Bogotá", "Meta East")
+adjacent("Bogotá", "Meta West")
+adjacent("Bogotá", "Huila")
+adjacent("Neiva", "Huila")
+adjacent("Neiva", "Meta West")
+adjacent("Neiva", "Putumayo")
+
+// Foreign - Dept
+
+adjacent("Panamá", "Chocó")
+
+adjacent("Venezuela", "Cesar")
+adjacent("Venezuela", "Santander")
+adjacent("Venezuela", "Arauca")
+adjacent("Venezuela", "Vichada")
+adjacent("Venezuela", "Guainía")
+
+adjacent("Brasil", "Guainía")
+adjacent("Brasil", "Vaupés")
+adjacent("Brasil", "Amazonas")
+
+adjacent("Ecuador", "Nariño")
+adjacent("Ecuador", "Putumayo")
+
+adjacent("Perú", "Putumayo")
+adjacent("Perú", "Amazonas")
+
+// Dept - Dept (with redundancies)
+
+adjacent("Atlántico", "Cesar")
+adjacent("Atlántico", "Santander")
+adjacent("Atlántico", "Antioquia")
+
+adjacent("Chocó", "Antioquia")
+adjacent("Chocó", "Huila")
+adjacent("Chocó", "Nariño")
+
+adjacent("Nariño", "Chocó")
+adjacent("Nariño", "Huila")
+
+adjacent("Cesar", "Atlántico")
+adjacent("Cesar", "Santander")
+adjacent("Cesar", "Antioquia")
+
+adjacent("Antioquia", "Atlántico")
+adjacent("Antioquia", "Cesar")
+adjacent("Antioquia", "Santander")
+adjacent("Antioquia", "Huila")
+adjacent("Antioquia", "Chocó")
+
+adjacent("Santander", "Cesar")
+adjacent("Santander", "Arauca")
+adjacent("Santander", "Meta East")
+adjacent("Santander", "Huila")
+adjacent("Santander", "Antioquia")
+
+adjacent("Huila", "Antioquia")
+adjacent("Huila", "Santander")
+adjacent("Huila", "Meta West")
+adjacent("Huila", "Putumayo")
+adjacent("Huila", "Nariño")
+adjacent("Huila", "Chocó")
+
+adjacent("Arauca", "Vichada")
+adjacent("Arauca", "Meta East")
+adjacent("Arauca", "Santander")
+
+adjacent("Vichada", "Arauca")
+adjacent("Vichada", "Guainía")
+adjacent("Vichada", "Guaviare")
+adjacent("Vichada", "Meta East")
+
+adjacent("Meta East", "Arauca")
+adjacent("Meta East", "Vichada")
+adjacent("Meta East", "Guaviare")
+adjacent("Meta East", "Meta West")
+adjacent("Meta East", "Santander")
+
+adjacent("Meta West", "Meta East")
+adjacent("Meta West", "Guaviare")
+adjacent("Meta West", "Putumayo")
+adjacent("Meta West", "Huila")
+
+adjacent("Putumayo", "Meta West")
+adjacent("Putumayo", "Guaviare")
+adjacent("Putumayo", "Vaupés")
+adjacent("Putumayo", "Amazonas")
+adjacent("Putumayo", "Huila")
+
+adjacent("Guaviare", "Meta East")
+adjacent("Guaviare", "Vichada")
+adjacent("Guaviare", "Guainía")
+adjacent("Guaviare", "Vaupés")
+adjacent("Guaviare", "Putumayo")
+adjacent("Guaviare", "Meta West")
+
+adjacent("Guainía", "Vichada")
+adjacent("Guainía", "Vaupés")
+adjacent("Guainía", "Guaviare")
+
+adjacent("Vaupés", "Guainía")
+adjacent("Vaupés", "Amazonas")
+adjacent("Vaupés", "Putumayo")
+adjacent("Vaupés", "Guaviare")
+
+adjacent("Amazonas", "Vaupés")
+adjacent("Amazonas", "Putumayo")
+
+data.coastal_spaces = [ "Cesar", "Atlántico", "Chocó", "Nariño" ].map(n=>space_names.indexOf(n)).sort((a,b)=>a-b)
+
+for (let i = 1; i < spaces.length; ++i)
+ spaces[i].adjacent.sort((a,b)=>a-b)
+
+console.log("const spaces = [")
+for (let x of spaces) console.log(JSON.stringify(x) + ",")
+console.log("]")
+
+for (let k in data)
+ console.log("const", k, "=", JSON.stringify(data[k]))
diff --git a/tools/genpieces.mjs b/tools/genpieces.mjs
new file mode 100644
index 0000000..ec478f6
--- /dev/null
+++ b/tools/genpieces.mjs
@@ -0,0 +1,303 @@
+// Cylinder spaces on map are 48x48
+
+// SIZES in millimeters
+// cylinders = 14.5 x 10
+// discs = 14.5 x 4
+// cubes = 9 x 9
+// octagons = 10 x 10
+
+// SIZES in 75dpi pixels
+// cylinder = 43 x 29.5
+// disc = 43 x 12
+// cube = 26.6 x 26.6
+// octagon = 29.5 x 29.5
+
+// SIZES in 72dpi pixels
+// cylinder = 41 x 28
+// disc = 41 x 11
+// cube = 25 x 25
+// octagon = 28 x 28
+
+// isometric scale = 2 / 3
+// vertical scale = 2 / 3
+
+// octagon badge = 23x15 / 25x17
+
+import fs from "fs"
+import { formatHex, parseHex, convertRgbToOklab } from 'culori'
+
+function make_piece_colors(base) {
+ let rgb = parseHex(base)
+ let sh1 = convertRgbToOklab(rgb); sh1.l *= 0.9;
+ let sh2 = convertRgbToOklab(rgb); sh2.l *= 0.8;
+ let sh3 = convertRgbToOklab(rgb); sh3.l *= 0.7;
+ let sh4 = convertRgbToOklab(rgb); sh4.l *= 0.4;
+ return [ base, formatHex(sh1), formatHex(sh2), formatHex(sh3), formatHex(sh4) ]
+}
+
+const color_govt = make_piece_colors("#0087cb")
+const color_govt_police = make_piece_colors("#acdbf6")
+const color_auc = make_piece_colors("#ffde00")
+const color_farc = make_piece_colors("#db2128")
+const color_cartels = make_piece_colors("#68b045")
+
+function print_cylinder(output, icon_file, c) {
+ let icon = fs.readFileSync(icon_file).toString('utf8')
+ let svg = []
+ svg.push('<svg xmlns="http://www.w3.org/2000/svg" width="44" height="48">')
+
+ svg.push(`<linearGradient id="g">`)
+ svg.push(`<stop offset="0%" stop-color="${c[1]}"/>`)
+ svg.push(`<stop offset="50%" stop-color="${c[2]}"/>`)
+ svg.push(`<stop offset="100%" stop-color="${c[3]}"/>`)
+ svg.push('</linearGradient>')
+
+ svg.push(`<path fill="url(#g)" stroke="${c[4]}" d="M1.5 15 v 18 a 20.5 13.5 0 0 0 20.5 13.5 a 20.5 13.5 0 0 0 20.5 -13.5 v -18"/>`)
+ svg.push(`<ellipse fill="${c[0]}" stroke="${c[4]}" cx="22" cy="15" rx="20.5" ry="13.5"/>`)
+ svg.push(icon)
+
+ svg.push('</svg>')
+ fs.writeFileSync(output, svg.join("\n") + "\n")
+}
+
+function print_disc(output, c) {
+ let svg = []
+ svg.push('<svg xmlns="http://www.w3.org/2000/svg" width="44" height="38">')
+
+ svg.push(`<linearGradient id="g">`)
+ svg.push(`<stop offset="0%" stop-color="${c[1]}"/>`)
+ svg.push(`<stop offset="50%" stop-color="${c[2]}"/>`)
+ svg.push(`<stop offset="100%" stop-color="${c[3]}"/>`)
+ svg.push('</linearGradient>')
+
+ svg.push(`<path fill="url(#g)" stroke="${c[4]}" d="M1.5 15 v 8 a 20.5 13.5 0 0 0 20.5 13.5 20.5 13.5 0 0 0 20.5 -13.5 v -8"/>`)
+ svg.push(`<ellipse fill="${c[0]}" stroke="${c[4]}" cx="22" cy="15" rx="20.5" ry="13.5"/>`)
+
+ svg.push('</svg>')
+ fs.writeFileSync(output, svg.join("\n") + "\n")
+}
+
+const star_auc =
+"m11.414 4.602-1.03 2.062-3.315.008H3.755l.719.351c1.55.743 4.24 2.016 4.416 2.079.096.039.176.093.176.132 0 .04-.455.977-1.006 2.079-.551 1.109-.99 2.023-.975 2.039.008.015.424-.165.903-.391.487-.234 1.693-.805 2.691-1.281l1.805-.86.391.188c.208.101 1.03.492 1.821.86.79.374 1.805.85 2.26 1.07.447.218.847.374.87.343.033-.023-.383-.937-.926-2.023-.535-1.078-.966-1.992-.966-2.024 0-.03.24-.164.543-.304.471-.22 3.282-1.547 4.368-2.063l.4-.195H14.608l-1.03-2.07c-.559-1.141-1.046-2.07-1.078-2.07-.024 0-.511.929-1.086 2.07z"
+
+const star_farc =
+"m11.254 4.71-1.19 1.556-.639.086c-.351.046-1.07.117-1.597.164a36.08 36.08 0 0 0-1.541.164c-.32.039-.75.07-.967.07-.207 0-.407.023-.43.055-.033.023.774.586 1.78 1.25 1.014.656 1.837 1.234 1.837 1.273 0 .047-.176.781-.4 1.64-.215.86-.399 1.595-.399 1.65 0 .1-.048.116 1.438-.4l2.076-.71c.503-.172.998-.336 1.086-.36.144-.03 1.342.313 1.83.524.087.039.43.156.758.265.327.11.966.32 1.421.477.456.156.839.274.855.258.016-.016-.16-.781-.4-1.703-.239-.922-.415-1.696-.399-1.727.024-.023.36-.258.767-.508 2.396-1.515 2.97-1.898 2.867-1.937a8.238 8.238 0 0 0-.759-.078c-.351-.032-.982-.086-1.397-.125-.416-.04-1.15-.102-1.622-.149-1.493-.14-1.253.024-2.595-1.734l-1.198-1.555-1.182 1.555z"
+
+const leaf = "M15.215 4.57c-.487.063-1.453.328-2.116.586-1.621.617-3.897 1.93-4.584 2.633-.56.57-.767 1.086-.767 1.89v.673l-.854.562c-.48.305-.863.586-.863.633 0 .07 1.374 1.015 1.478 1.015.024 0 .439-.257.934-.578l.887-.586.646.047c1.039.063 2.588-.218 3.546-.656.75-.336 2.085-1.305 3.115-2.25 1.853-1.695 2.124-3.18.703-3.797-.392-.164-1.502-.258-2.125-.172z"
+
+function print_octagon(output, badge_path, badge_fill, badge_stroke, c) {
+ let svg = []
+
+ // a + b + b = 30
+ // a + 2 * a / sqrt(2) = 30
+ // 1 + 2 / sqrt(2) = 30 / a
+ // 2.4142 = 30 / a
+ // 2.4142 * a = 30
+ // a = 30 / 2.4142
+ // = 12.4
+
+ let w = 24
+ let a = w / (1 + 2 / Math.sqrt(2))
+ let b = a / Math.sqrt(2)
+ let xo = 0
+ let yo = 0
+ let ys = 2/3
+ let h = Math.round(w * 0.8)
+
+ let v = [
+ [ xo + (b + 0), (0) * ys + yo ],
+ [ xo + (b + a), (0) * ys + yo ],
+ [ xo + (b + a + b), (b) * ys + yo ],
+ [ xo + (b + a + b), (b + a) * ys + yo ],
+ [ xo + (b + a), (b + a + b) * ys + yo ],
+ [ xo + (b), (b + a + b) * ys + yo ],
+ [ xo + (0), (b + a) * ys + yo ],
+ [ xo + (0), (b) * ys + yo ],
+ ]
+
+ for (let xy of v) {
+ xy[0] = Math.round(xy[0]) + 0.5
+ xy[1] = Math.round(xy[1]) + 0.5
+ }
+
+ let v2 = [
+ [ v[3][0], v[3][1] ],
+ [ v[3][0], v[3][1] + h ],
+ [ v[4][0], v[4][1] + h ],
+ [ v[5][0], v[5][1] + h ],
+ [ v[6][0], v[6][1] + h ],
+ [ v[6][0], v[6][1] ],
+ ]
+
+ let v3 = [
+ [ v[4][0], v[4][1] ],
+ [ v[4][0], v[4][1] + h ],
+ ]
+
+ let v4 = [
+ [ v[5][0], v[5][1] ],
+ [ v[5][0], v[5][1] + h ],
+ ]
+
+ let f1 = [
+ [ v[3][0], v[3][1] ],
+ [ v[3][0], v[3][1] + h ],
+ [ v[4][0], v[4][1] + h ],
+ [ v[4][0], v[4][1] ],
+ ]
+
+ let f2 = [
+ [ v[4][0], v[4][1] ],
+ [ v[4][0], v[4][1] + h ],
+ [ v[5][0], v[5][1] + h ],
+ [ v[5][0], v[5][1] ],
+ ]
+
+ let f3 = [
+ [ v[5][0], v[5][1] ],
+ [ v[5][0], v[5][1] + h ],
+ [ v[6][0], v[6][1] + h ],
+ [ v[6][0], v[6][1] ],
+ ]
+
+ let p1 = v.map(([x,y])=>x + " " + y).join(" ")
+ let p2 = v2.map(([x,y])=>x + " " + y).join(" ")
+ let p3 = v3.map(([x,y])=>x + " " + y).join(" ")
+ let p4 = v4.map(([x,y])=>x + " " + y).join(" ")
+
+ svg.push('<svg xmlns="http://www.w3.org/2000/svg" width="25" height="36">')
+
+ svg.push(`<path fill="${c[0]}" d="M${v}"/>`)
+ if (badge_path)
+ svg.push(`<path fill="${badge_fill}" d="${badge_path}"/>`)
+ svg.push(`<path fill="${c[3]}" d="M${f1}"/>`)
+ svg.push(`<path fill="${c[2]}" d="M${f2}"/>`)
+ svg.push(`<path fill="${c[1]}" d="M${f3}"/>`)
+ svg.push(`<path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="${c[4]}" d="M${p1}z M${p2} M${p3} M${p4}"/>`)
+
+ svg.push('</svg>')
+ fs.writeFileSync(output, svg.join("\n") + "\n")
+}
+
+function print_cube(output, c) {
+ let svg = []
+
+ let xo = 0
+ let yo = 0
+ let ys = 2/3
+
+ let w = 20
+ let d = Math.sqrt(w * w + w * w)
+ let h = Math.round(w * 0.8)
+
+ let v = [
+ [ xo + (d/2), yo + (0) * ys ],
+ [ xo + (d), yo + (d/2) * ys ],
+ [ xo + (d/2), yo + (d) * ys ],
+ [ xo + (0), yo + (d/2) * ys ],
+ ]
+
+ for (let xy of v) {
+ xy[0] = Math.round(xy[0]) + 0.5
+ xy[1] = Math.round(xy[1]) + 0.5
+ }
+
+ let v2 = [
+ [ v[1][0], v[1][1] ],
+ [ v[1][0], v[1][1] + h ],
+ [ v[2][0], v[2][1] + h ],
+ [ v[3][0], v[3][1] + h ],
+ [ v[3][0], v[3][1] ],
+ ]
+
+ let v3 = [
+ [ v[2][0], v[2][1] ],
+ [ v[2][0], v[2][1] + h ],
+ ]
+
+ let f1 = [
+ [ v[1][0], v[1][1] ],
+ [ v[1][0], v[1][1] + h ],
+ [ v[2][0], v[2][1] + h ],
+ [ v[2][0], v[2][1] ],
+ ]
+
+ let f2 = [
+ [ v[2][0], v[2][1] ],
+ [ v[2][0], v[2][1] + h ],
+ [ v[3][0], v[3][1] + h ],
+ [ v[3][0], v[3][1] ],
+ ]
+
+ svg.push('<svg xmlns="http://www.w3.org/2000/svg" width="29" height="36">')
+
+ svg.push(`<path fill="${c[0]}" d="M${v}"/>`)
+ svg.push(`<path fill="${c[3]}" d="M${f1}"/>`)
+ svg.push(`<path fill="${c[1]}" d="M${f2}"/>`)
+
+ svg.push(`<path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke="${c[4]}" d="M${v}z M${v2} M${v3}"/>`)
+
+ svg.push('</svg>')
+ fs.writeFileSync(output, svg.join("\n") + "\n")
+}
+
+print_cylinder("images/govt_cylinder.svg", "tools/cylinder_icon_govt.svg", color_govt)
+print_cylinder("images/farc_cylinder.svg", "tools/cylinder_icon_farc.svg", color_farc)
+print_cylinder("images/auc_cylinder.svg", "tools/cylinder_icon_auc.svg", color_auc)
+print_cylinder("images/cartels_cylinder.svg", "tools/cylinder_icon_cartels.svg", color_cartels)
+
+print_disc("images/govt_base.svg", color_govt)
+print_disc("images/farc_base.svg", color_farc)
+print_disc("images/auc_base.svg", color_auc)
+print_disc("images/cartels_base.svg", color_cartels)
+
+print_octagon("images/farc_guerrilla_active.svg", star_farc, "#ffd800", "#8c1042", color_farc)
+print_octagon("images/farc_guerrilla.svg", null, null, null, color_farc)
+print_octagon("images/auc_guerrilla_active.svg", star_auc, "#0072bc", "#fff", color_auc)
+print_octagon("images/auc_guerrilla.svg", null, null, null, color_auc)
+print_octagon("images/cartels_guerrilla_active.svg", leaf, "#fff200", "#636466", color_cartels)
+print_octagon("images/cartels_guerrilla.svg", null, null, null, color_cartels)
+
+print_cube("images/govt_troops.svg", color_govt)
+print_cube("images/govt_police.svg", color_govt_police)
+
+let css = [ "/* TOKEN BORDER COLORS */" ]
+
+function border(base, sel) {
+ let rgb = parseHex(base)
+ // let hic = convertRgbToOklab(rgb); hic.l = Math.min(1,hic.l+0.1)
+ // let loc = convertRgbToOklab(rgb); loc.l = Math.max(0,loc.l-0.1)
+ // let shc = convertRgbToOklab(rgb); shc.l = Math.max(0,shc.l-0.4)
+ let hic = convertRgbToOklab(rgb); hic.l = Math.min(1,hic.l*1.2)
+ let loc = convertRgbToOklab(rgb); loc.l = Math.max(0,loc.l*0.8)
+ let shc = convertRgbToOklab(rgb); shc.l = Math.max(0,shc.l*0.4)
+ let sh = formatHex(shc)
+ let hi = formatHex(hic)
+ let lo = formatHex(loc)
+ css.push(`${sel} { background-color: ${base}; border-color: ${hi} ${lo} ${lo} ${hi}; box-shadow: 0 0 0 1px ${sh}, 0px 1px 4px #0008; }`)
+}
+
+border("#006cb7", "#token_total_support")
+border("#80643e", "#token_prop_card")
+border("#d74729", "#token_oppose_plus_bases")
+border("#004e81", "#token_el_presidente")
+border("#6a8796", "#token_aid")
+border("#4b87c0", ".token.passive_support")
+border("#b75f61", ".token.passive_opposition")
+border("#0054a6", ".token.active_support")
+border("#991a1e", ".token.active_opposition")
+border("#0054a6", ".token.govt_control")
+border("#991a1e", ".token.farc_control")
+border("#ffc509", ".token.farc_zone")
+//border("#22010e", ".token.terror")
+border("#535052", ".token.terror")
+border("#535052", ".token.sabotage")
+border("#9dadb3", ".token.unshaded")
+border("#465c80", ".token.shaded")
+border("#6d5735", ".token.reminder.sucumbios")
+border("#cf1f30", ".token.reminder.senado_farc")
+border("#6d9f3b", ".token.reminder.senado_cartels")
+border("#ffcf00", ".token.reminder.senado_auc")
+border("#8dc73f", ".token.reminder.darien")
+
+console.log(css.join("\n"))
diff --git a/tools/guerrilla_icon_auc.svg.bak b/tools/guerrilla_icon_auc.svg.bak
new file mode 100644
index 0000000..d7590c2
--- /dev/null
+++ b/tools/guerrilla_icon_auc.svg.bak
@@ -0,0 +1,22 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="25" height="17"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+</metadata>
+<g transform="translate(1,.5)scale(0.079861,0.078125)">
+<g transform="translate(0.000000,192.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M1304 1395 l-129 -264 -415 -1 -415 0 90 -45 c194 -95 531 -258 553
+-266 12 -5 22 -12 22 -17 0 -5 -57 -125 -126 -266 -69 -142 -124 -259 -122
+-261 1 -2 53 21 113 50 61 30 212 103 337 164 l226 110 49 -24 c26 -13 129
+-63 228 -110 99 -48 226 -109 283 -137 56 -28 106 -48 109 -44 4 3 -48 120
+-116 259 -67 138 -121 255 -121 259 0 4 30 21 68 39 59 28 411 198 547 264
+l50 25 -416 0 -415 0 -129 265 c-70 146 -131 265 -135 265 -3 0 -64 -119 -136
+-265z"/>
+</g>
+</g>
+</svg>
diff --git a/tools/guerrilla_icon_cartels.svg.bak b/tools/guerrilla_icon_cartels.svg.bak
new file mode 100644
index 0000000..9061687
--- /dev/null
+++ b/tools/guerrilla_icon_cartels.svg.bak
@@ -0,0 +1,19 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="25" height="17"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+</metadata>
+<g transform="translate(1,1)scale(0.079861,0.078125)">
+<g transform="translate(0.000000,192.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M1780 1463 c-61 -8 -182 -42 -265 -75 -203 -79 -488 -247 -574 -337
+-70 -73 -96 -139 -96 -242 l0 -86 -107 -72 c-60 -39 -108 -75 -108 -81 0 -9
+172 -130 185 -130 3 0 55 33 117 74 l111 75 81 -6 c130 -8 324 28 444 84 94
+43 261 167 390 288 232 217 266 407 88 486 -49 21 -188 33 -266 22z"/>
+</g>
+</g>
+</svg>
diff --git a/tools/guerrilla_icon_farc.svg.bak b/tools/guerrilla_icon_farc.svg.bak
new file mode 100644
index 0000000..ce0b1ff
--- /dev/null
+++ b/tools/guerrilla_icon_farc.svg.bak
@@ -0,0 +1,23 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="25" height="17"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.16, written by Peter Selinger 2001-2019
+</metadata>
+<g transform="translate(1,.5)scale(0.079861,0.078125)">
+<g transform="translate(0.000000,192.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M1284 1381 l-149 -199 -80 -11 c-44 -6 -134 -15 -200 -21 -66 -6
+-153 -15 -193 -21 -40 -5 -94 -9 -121 -9 -26 0 -51 -3 -54 -7 -4 -3 97 -75
+223 -160 127 -84 230 -158 230 -163 0 -6 -22 -100 -50 -210 -27 -110 -50 -204
+-50 -211 0 -13 -6 -15 180 51 80 28 197 69 260 91 63 22 125 43 136 46 18 4
+168 -40 229 -67 11 -5 54 -20 95 -34 41 -14 121 -41 178 -61 57 -20 105 -35
+107 -33 2 2 -20 100 -50 218 -30 118 -52 217 -50 221 3 3 45 33 96 65 300 194
+372 243 359 248 -8 2 -51 7 -95 10 -44 4 -123 11 -175 16 -52 5 -144 13 -203
+19 -187 18 -157 -3 -325 222 l-150 199 -148 -199z"/>
+</g>
+</g>
+</svg>
diff --git a/tools/icon_auc.png b/tools/icon_auc.png
new file mode 100644
index 0000000..c56ba06
--- /dev/null
+++ b/tools/icon_auc.png
Binary files differ
diff --git a/tools/icon_cartels.png b/tools/icon_cartels.png
new file mode 100644
index 0000000..3fdf6cc
--- /dev/null
+++ b/tools/icon_cartels.png
Binary files differ
diff --git a/tools/icon_farc.png b/tools/icon_farc.png
new file mode 100644
index 0000000..170f635
--- /dev/null
+++ b/tools/icon_farc.png
Binary files differ
diff --git a/tools/icon_govt.png b/tools/icon_govt.png
new file mode 100644
index 0000000..cb04a3e
--- /dev/null
+++ b/tools/icon_govt.png
Binary files differ
diff --git a/tools/isometric_icon_auc.pbm b/tools/isometric_icon_auc.pbm
new file mode 100644
index 0000000..7fb96ae
--- /dev/null
+++ b/tools/isometric_icon_auc.pbm
Binary files differ
diff --git a/tools/isometric_icon_cartels.pbm b/tools/isometric_icon_cartels.pbm
new file mode 100644
index 0000000..71a0ca0
--- /dev/null
+++ b/tools/isometric_icon_cartels.pbm
Binary files differ
diff --git a/tools/isometric_icon_farc.pbm b/tools/isometric_icon_farc.pbm
new file mode 100644
index 0000000..7f89f31
--- /dev/null
+++ b/tools/isometric_icon_farc.pbm
Binary files differ
diff --git a/tools/render_cards.sh b/tools/render_cards.sh
new file mode 100644
index 0000000..e53998d
--- /dev/null
+++ b/tools/render_cards.sh
@@ -0,0 +1,16 @@
+mkdir -p HIRES/cards
+for I in 01 02 03 04 05 06 07 08 09 $(seq 10 76) 7x BACK
+do
+ F1=$(echo "HIRES/AA CARD DECK PROOFS"/AAcard-$I".pdf")
+ F2=$(echo "HIRES/AA CARD DECK PROOFS"/AAcard-$I"_2018-nf.pdf")
+ if [ -e "$F1" ]
+ then
+ echo $F1
+ gs -r1200 -sDEVICE=png16m -o HIRES/cards/card_$I.png "$F1"
+ fi
+ if [ -e "$F2" ]
+ then
+ echo $F2
+ gs -r1200 -sDEVICE=png16m -o HIRES/cards/card_$I.png "$F2"
+ fi
+done
diff --git a/tools/render_cards_fixed.sh b/tools/render_cards_fixed.sh
new file mode 100644
index 0000000..d182e55
--- /dev/null
+++ b/tools/render_cards_fixed.sh
@@ -0,0 +1 @@
+gs -r1200 -sDEVICE=png16m -o HIRES/cards/card_61.png "HIRES/AAcard-61-fixed.pdf"
diff --git a/tools/render_tokens.sh b/tools/render_tokens.sh
new file mode 100644
index 0000000..e4973d3
--- /dev/null
+++ b/tools/render_tokens.sh
@@ -0,0 +1,5 @@
+mkdir -p HIRES/tokens
+# gs -r1200 -sDEVICE=png16m -o HIRES/tokens/sheet_a.png HIRES/AndeanAbyss_Tokens_FRONT-2018.pdf
+# gs -r1200 -sDEVICE=png16m -o HIRES/tokens/sheet_b.png HIRES/AndeanAbyss_Tokens_BACK-2018.pdf
+mutool draw -A0 -r1200 -z5 -o HIRES/tokens/sheet_a.png HIRES/AndeanAbyss_Tokens_FRONT-2018.pdf
+mutool draw -A0 -r1200 -z5 -o HIRES/tokens/sheet_b.png HIRES/AndeanAbyss_Tokens_BACK-2018.pdf
diff --git a/tools/resize_cards.sh b/tools/resize_cards.sh
new file mode 100644
index 0000000..b868e4f
--- /dev/null
+++ b/tools/resize_cards.sh
@@ -0,0 +1,9 @@
+mkdir -p cards.1x cards.2x
+for F in HIRES/cards/*.png
+do
+ echo $F
+ # 186x261 at 75dpi (unused)
+ # 248x348 at 100dpi
+ convert -colorspace RGB -gravity Center -crop 2976x4176+0+0 -resize 8.333333% -colorspace sRGB $F cards.1x/$(basename $F)
+ convert -colorspace RGB -gravity Center -crop 2976x4176+0+0 -resize 16.666666% -colorspace sRGB $F cards.2x/$(basename $F)
+done
diff --git a/tools/scale_tokens.sh b/tools/scale_tokens.sh
new file mode 100644
index 0000000..83bffdf
--- /dev/null
+++ b/tools/scale_tokens.sh
@@ -0,0 +1,52 @@
+mkdir -p tokens.1x tokens.2x
+
+function loop() {
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_1.ppm $OUT/govt_control.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_1.ppm $OUT/farc_control.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_6.ppm $OUT/farc_zone.png
+
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_7.ppm $OUT/unshaded_ndsc.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_8.ppm $OUT/unshaded_ospina.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_15.ppm $OUT/unshaded_tapias.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_16.ppm $OUT/unshaded_1st_div.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_23.ppm $OUT/unshaded_black_hawks.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_24.ppm $OUT/unshaded_7th_sf.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_32.ppm $OUT/unshaded_meteoro.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_40.ppm $OUT/unshaded_mtn_bns.png
+
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_7.ppm $OUT/shaded_ndsc.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_8.ppm $OUT/shaded_ospina.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_15.ppm $OUT/shaded_tapias.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_16.ppm $OUT/shaded_1st_div.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_23.ppm $OUT/shaded_black_hawks.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_24.ppm $OUT/shaded_7th_sf.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_32.ppm $OUT/shaded_meteoro.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_b_40.ppm $OUT/shaded_mtn_bns.png
+
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_30.ppm $OUT/oppose_plus_bases.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_31.ppm $OUT/aid.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_37.ppm $OUT/el_presidente.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_38.ppm $OUT/total_support.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/five_a_39.ppm $OUT/prop_card.png
+
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_1.ppm $OUT/active_support.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_2.ppm $OUT/terror.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_4.ppm $OUT/active_opposition.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_5.ppm $OUT/reminder_senado_cartels.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_6.ppm $OUT/reminder_darien.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_8.ppm $OUT/reminder_senado_auc.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_11.ppm $OUT/reminder_senado_farc.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_a_17.ppm $OUT/reminder_sucumbios.png
+
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_b_1.ppm $OUT/passive_support.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_b_2.ppm $OUT/sabotage.png
+ convert -colorspace RGB -resize $SCALE -colorspace sRGB HIRES/tokens/half_b_4.ppm $OUT/passive_opposition.png
+}
+
+OUT=tokens.1x
+SCALE=6.25%
+loop
+
+OUT=tokens.2x
+SCALE=12.5%
+loop
diff --git a/tools/slice_tokens.sh b/tools/slice_tokens.sh
new file mode 100644
index 0000000..5218792
--- /dev/null
+++ b/tools/slice_tokens.sh
@@ -0,0 +1,68 @@
+# die cut line width = 9 (+4 to center)
+# 1/2" tokens 600px wide
+# 5/8" tokens 750px wide
+
+# FRONT SHEET (left die cut edge)
+# 1/2" at 588 1188 1788 1388 2988
+# 1/2" at 4188 4788 5388 5988 6588
+# 5/8" at 7896 8882 9868 10855 11841
+
+# BACK SHEET (left die cut edge)
+# 1/2" at 5991 6591 7191 7791 8391 9591
+# 5/8" at 588 1574 2560 3546 4533
+
+# BOTH SHEETS (top die cut edge)
+# 1/2" at 1356 5256 5856
+# 5/8" at 756 1742 2728 3714 4700 5688 6674 7660
+
+# THEN trim some margins so the result @75dpi is 36 / 45
+# 1/2" 576x576+12+12
+# 5/8" 720x720+15+15
+
+pngtopnm HIRES/tokens/sheet_a.png > /tmp/big.ppm
+
+I=1
+for L in 592 4192 4792 5392 5992 6592
+do
+ for T in 1360 5260 5860
+ do
+ echo half $I $L $T
+ pnmcut $L $T 600 600 /tmp/big.ppm | pnmcut 12 12 576 576 | pnmtopng > HIRES/tokens/half_a_$I.ppm
+ I=$(expr $I + 1)
+ done
+done
+
+I=1
+for L in 7900 8886 9872 10859 11845
+do
+ for T in 760 1746 2732 3718 4704 5692 6678 7664
+ do
+ echo five $I $L $T
+ pnmcut $L $T 750 750 /tmp/big.ppm | pnmcut 15 15 720 720 | pnmtopng > HIRES/tokens/five_a_$I.ppm
+ I=$(expr $I + 1)
+ done
+done
+
+pngtopnm HIRES/tokens/sheet_b.png > /tmp/big.ppm
+
+I=1
+for L in 9595 8395 7795 7195 6595 5995
+do
+ for T in 1360 5260 5860
+ do
+ echo half $I $L $T
+ pnmcut $L $T 600 600 /tmp/big.ppm | pnmcut 12 12 576 576 | pnmtopng > HIRES/tokens/half_b_$I.ppm
+ I=$(expr $I + 1)
+ done
+done
+
+I=1
+for L in 4537 3550 2564 1578 592
+do
+ for T in 760 1746 2732 3718 4704 5692 6678 7664
+ do
+ echo five $I $L $T
+ pnmcut $L $T 750 750 /tmp/big.ppm | pnmcut 15 15 720 720 | pnmtopng > HIRES/tokens/five_b_$I.ppm
+ I=$(expr $I + 1)
+ done
+done