Java StarLogo 2.0 english `turtle` `observer` patches-own [activator ; activating chemical inhibitor] ; inhibiting chemical TO SETUP ;----------------------------------------------------------------------------------------- ca ; clears display, patches, and turtles ask-patches [ setactivator ((random 2) * 100) ; randomly determines starting color ifelse (activator = 100) [setpc white ; white cells are "alive" with 100 activator setinhibitor 100] ; and 100 inhibitor [setpc black ; black cells are "dead" with 0 activator setinhibitor 0] ; and 0 inhibitor ] end TO DRAW_WHI ;-------------------------------------------------------------------------------------- if mouse-down? [ask-patches [if ((abs (xcor - mouse-xcor)) < 2) and ((abs (ycor - mouse-ycor)) < 2) [setpc white setactivator 100 ; creates live cells where mouse button is depressed setinhibitor 100]] ] end TO DRAW_BLA ;-------------------------------------------------------------------------------------- if mouse-down? [ask-patches [if ((abs (xcor - mouse-xcor)) < 2) and ((abs (ycor - mouse-ycor)) < 2) [setpc black setactivator 0 ; creates dead cells where mouse button is depressed setinhibitor 0]] ] end TO GO ;-------------------------------------------------------------------------------------------- ask-patches [ repeat x_active ; diffuses activator chemical in x direction [setactivator ((activator + (activator-at 1 0) + (activator-at (-1) 0)) / 3)] repeat y_active ; diffuses activator chemical in y direction [setactivator ((activator + (activator-at 0 1) + (activator-at 0 (-1))) / 3)] repeat x_inhibit ; diffuses inhibitor chemical in x direction [setinhibitor ((inhibitor + (inhibitor-at 1 0) + (inhibitor-at (-1) 0)) / 3)] repeat y_inhibit ; diffuses inhibitor chemical in y direction [setinhibitor ((inhibitor + (inhibitor-at 0 1) + (inhibitor-at 0 (-1))) / 3)] ifelse (bias + activator - inhibitor) > 0 [setpc white ; if cell has more activator, it is colored setactivator 100 ; white and turned on setinhibitor 100] [setpc black ; if cell has more inhibitor, it is colored setactivator 0 ; black and turned off setinhibitor 0] ] end `information` WHAT IS IT? ----------- This program simulates vertebrate skin patterns by use of a short-range activator and a long-range inhibitor. Each pigmented cell that is "turned on" (the white cells in the program) produces 100 units of an activating morphogen and 100 units of an inhibiting morphogen. Both chemicals diffuse a specified number of times in the x and y directions, and then each patch is evaluated. Patches with more activator than inhibitor turn white, and patches with more inhibitor than activator turn black. The process is then repeated; a steady-state pattern is usually quick to emerge. HOW TO USE IT ------------- The SETUP button randomly colors each patch and deposits the morphogens on patches that are white. The GO button executes the model according to the rules above. The DRAW_WHI and DRAW_BLA buttons allow the user to use the mouse to draw white and black patches, respectively. The X_ACTIVE, Y_ACTIVE, X_INHIBIT, and Y_INHIBIT sliders control the diffusion of the activator and inhibitor morphogens in each direction. More specifically, the slider variables control the number of times that each patch shares its contents with its two neighbors (in the given direction), such that each patch is left with an equal share of the patch's original morphogens. THINGS TO NOTICE ---------------- Modification of the absolute and relative sizes of the slider variables can cause a variety of patterns to emerge, resembling everything from zebras to vermiculated rabbit fish. CREDITS ------------- Modified by B. J. MacLennan Sep. 7, 2003 for Java StarLogo 2.0.2 from original version by William Thies on Scott Camazine's website. `interface` SLCanvas top-left 18 302 SLButton turtle-or-observer? observer top-left 273 41 width-height 90 30 name "draw black" line-to-run "draw_bla" forever? true button-number 3 show-name? true whichip 4 toolTip-text "use mouse to draw black patches" SLButton turtle-or-observer? observer top-left 273 162 width-height 91 30 name "draw white" line-to-run "draw_whi" forever? true button-number 4 show-name? true whichip 5 toolTip-text "use mouse to draw white patches" SLSlider top-left 102 166 width-height 94 25 name "Y inhibit" variable "y_inhibit" min-value 0 max-value 15 current-value 5 slider-number 3 show-name? true toolTip-text "rate of diffusion of inhibitor in Y direction" SLSlider top-left 45 162 width-height 97 25 name "X inhibit" variable "x_inhibit" min-value 0 max-value 15 current-value 5 slider-number 1 show-name? true toolTip-text "rate of diffusion of inhibitor in X direction" SLSlider top-left 99 37 width-height 95 25 name "Y active" variable "y_active" min-value 0 max-value 15 current-value 3 slider-number 2 show-name? true toolTip-text "rate of diffusion of activator in Y direction" SLButton turtle-or-observer? observer top-left 211 194 width-height 56 30 name "go" line-to-run "go" forever? true button-number 1 show-name? true whichip 6 SLButton turtle-or-observer? observer top-left 206 44 width-height 42 30 name "setup" line-to-run "setup" forever? false button-number 2 show-name? true whichip 7 SLSlider top-left 46 36 width-height 111 25 name "X active" variable "x_active" min-value 0 max-value 15 current-value 3 slider-number 0 show-name? true toolTip-text "rate of diffusion of activator in X direction" SLSlider top-left 159 104 width-height 81 25 name "bias" variable "bias" min-value -10 max-value 10 current-value 0 slider-number 4 show-name? true toolTip-text "constant bias applied to net activation and inhibition" `turtle shapes` H4sIAAAAAAAAAO3c2bIkR33A4UJsAgTCeDfGlPG+CEsz0kjyeq64cXDrCwcXkuyx RQQgLIkg7Kt+UD8Ab2FThU73TOp0V3VXZuX2fRHuX3TNqc7Kmpozi8V/ePmdj3/2 4cc/ejp+9P67P3360Tt3Lw737ubXl37146/MPz4d+Mwv/++zv/y/F49fQs8O08v/ /VLY8Ni5r4t1/jWf/dDnbT1/7eds3UeB+//6r74tAAD9eWF+vfbPESX02j+jpVp3 7+vYa/1zn7t2/VuvK/XPYa7riPXzsNe61u97/a3r3nodsdeNdR1rr2/p/AI7DsPn BgAAAAAAAACgBb/63xEV8t8kaAdd+prc12f/++639fth//bf0v6vvd7Y+899v3rb f8p7uUftv6/nIfUaufeXe/+l3Y/c99z+7d/+7d/+7d/+7b/1/efeb+77kXt/e+8/ 935y34/c1597/9fej9j3b+v69q96sZ8ZXvrov3727oen8aHzmEDjQ7l3KORR1Uwd jA8FgI69kP3PIqqqqrp/B+NDAQAAAAAAAKAhL2b/bxFUVVVVVVVVVVVVVVVVVVV1 e4dpINBLP3364Ucf/OQ4PvSFaU6g8aHcO0wvDz1CDzxOF7/u2vMjPuabrj/2+bde 79r7eev1Xvhx40MBoFsvzK9b/oy09c9cude/9c9qt65f+vm99dpzYn+e9ctef+tn tLZ+7K8vbf2t97PC80fjQwEAAAAAAACgFS/Or1v+W42lbv2M1Ndn//bf8/5Tr597 /9a3vvXTfg9R1Tqbeo3Sr8/+7d/+7d/+7d/+999f7ffH/u3f/tNdn/3bv/3n2//W z7C+9a1f9PqfHb768dMPf/zDj58e54d+tsn5oXcvH57rtT9e+/obHKaXrc/imud7 j/OfdenHLn3ell93ude/8f6ZHwqF2vp7R8G/96xi/4cHm+o8enX9/NDeG+vParHX TX0dudfPff9zrP+sLefGuK4cP/8l7X/tfYi1zq17uKS2n3/r7/L8jeaHAgAAcM65 /1/DXv8/h9zrQ89y//rLvT70bOnXX+xfj3uvBwDQvvTzQ1W13279jNzXn2vftd6H 1Gvk3p/927/9738fcu8n133Iff327/l/6FrOybl2Cfdpj/3n/vm3/773f0nOtUu4 Pz38/Oe4D7n3k+s+5L7+c9e01p5rxVrTz3/+fdd6H1KvkXt/9m//9m//e9+H3PvJ dR92uM7PDd+4nx/68w8++PfjENHPXRwieve9H1zskq3n3yr3EM/c629wmF4eekAv WfOAbzn/oV9k16675ppu+cVd8vo33r9VQ0SXfm2n/rXf+/r0yRDNw3Pd+/zcDBFl H+uGiG618S823a+/5s+It/6ZsZb1115HqnVzrP+sLefGuK4cP/8l7X/tfYi1zq17 uKS2n3/r7/L8jTGGiG79u3Ltf9e2f/vP2dzsv+/9AwDtyz3EK/f60LPcv/5yrw89 M0QUAKB2cYaI5pbiv7m4prnZv/3nbG72n3f/z3aPe13CPu3f/u3f/ve6D7n3k+s+ 5L7+XPsu+T5cknPtEu7THvvP/fNv/33v/5Kca5dwf3r4+c9xH3LvJ9d9yH39565p rT3XirVmCT/vNTwHe+y7tvtg//Zv//bf6/5T3Yfc+8l1H3a4zs8PL3347nvv/fDj 4/jQz18eH3r/n12+863n3p9z983hwa879/7+65c+51M9c97Z88+8j33+8euubHj+ 0ued+/pz7r7/i3VfeOX40EuPcvg1595f+ry11lzHnuff6pp7denrl/az8HXrxoeG vybvv0cE3ytuHvN37pm/8j8VP3cd5z7/3I9vXffc97Bb1//U11/540vrn72eSPu+ VjHrn7uOK3/c+hvXP/d79NLxK9e/9ff0a3/v33vda7//xLqupc+/9cdj7W+tT63z yZ+xjt34+VdfT7D+dmnGh97y16KHzt9q6fNjrXOta9Zfe6+u2Uvsn++t61nf+iWs n1qudZeu49yPx1rn1vVvvY5rPz/2c3Ht52+9no2fN8YYH3ov9t+ha7F6X+98+5M+ /G8oue/D6r+7XPvzedz3mUZ6LlL9HfBTXx/734o27v/Wv4OuPT/Zv5FF/je2ZPvP vc+N92FJrP1/6nO3Ptc77f+43sb7cPP133p+pH0f16vt10Hk/Z9T+v5TK+452Pvf 3nL/utjpOT9n8/4Tn5+a/a9s7P1H+vPdVva/svb/cHvZ/7n9xP56+3+usV2938J6 q9zXnfs+5L7eXPvPfZ2578Py59wFzb2v665nydr11n992p6u4y7o5a8/59b7t9/z cJfk+pc+Z/nr71atn3r/t15/LKv38f3/fb6Rv4/ntnrfK+9DK5b234ty9x1nfGju /4Ynd1PLtY9c+10S+7+RuXa93LZef2n7Sc3+0+9/62em/DnZ4/t4ifsv7fexvaX6 fbE0sfZp//b/UEtn//afsqWzf/tP2dLZf1/7XdLrvkP23+e+Q/YfZ/+l3K9br/vW /Zfy3MS+/qXPKe3XTezrr+XPC3vto7T7kHs/e92X3NeX6z7kvp5P+oXhaz96+h8f v/Jv7354HCD6henHzw4Q3eruX277yPvzbj2fmx2ml2cfnEsP+TW/IG79sbVrLV1v LT23/6X7E/HHVw0QpSy5vlfm+l4drrvX+ufW9XsV0I51A0S1rKb62jWflWP9h6S8 Z5fW3bqnpa/Z6xlSHT5x6ceedctn33L+ktbP3/n+jzEHiALAs3r/N7Re99/rv6H2 +m/IS/tudf9r993a/q/ddyv7v3XfrewfAAAAgNrEHSCqqqr6bJ8V47Ny7yfn/mu6 Dw/pYf+XpFgr937X7Dv1tZa+772usdR957i2kva99/5j34e9r7uU+5P7+nLtP/d1 qaqqarrees4le1xzjvWv1cr6W1nf+tavd/1bryPWuqWsv/Y6Uq2baP0vDi9/+MP/ fP/5CaJfnL4g2QTRc7b+L2X8L26SOUwvDz1Bl57SS0/emqf7mvMu/epYc17pvbTH pXsQ6cdNEG1I7u+Rub9X5/5fafpfiwL1MUG09K792mflXj/GdVx7ziUp112z/qXr iPlztfY6c66vZXXpx551y2ffcv6S1s/f+f6PJogCUIre/w3N/u8ebC96/zfl3icx 9j6RsvfJnCaUAgAAABCXCaKqqhqnWz/jISXsK/W+7f/8/ku+D7E/c40W933N/nPe h9Rr3KKFfW/Zf8r7sNe+Y+z/lvuw9/72vI8973/tfch9fbnvQ+7rUlVVzdFbz7lk j2vOsf61Wll/K+tb3/r1rn/rdcRat5T1115HqnUTrf/i8OWPfv7uT47DQ+f/KODm 4aF337n2jOfPO/bJuq9bOn728xd663mxeuv1Lwnv67n7/IzD9HLrQxrr4V76uqXj W7+J5HLr9V/787NwXhfDQ6/9tZRq3aXvgXuvn/o6Yt/3a783bl0/9vf2VOte+3tc qnVr/b24lj8DpFo/9fXcKte6n7qOhe+Tyb+PLny/3v79/IX5NfVfcHI3lGvdva9j rVru+7XXv3X9a8Vaf6tY9yu1XOvmXr+U+77Xc5D6+1fsdc9dx60/Hvv7XuTvc6Ph odRur78TlGbvvxOV4uq/G+70b197sf8r++Rya2P/l9u60vef+t/sSt1/Kf9Wm1ru f7O2/9vOu9Ve+127n73/fwK59x/uI9X3la2fX0uX5L6+Ur+vtNJQ7uux/316Tu7r sv+0XSv3debefyj3de+1zyW595Vr3+f0tt9Q7/sPbf33xOr/PdL+Lzb1+bnVv3/D Q7X+Lsl9fbn23er+t8p9/fafd/+13w/7b2s/re3/Wq3sP5bS978X+y9j/7ltvZ7a 939v6/XUtt9U7L/Pfd/rdd/3et2/577P/ff++17tf+5ZK/afe2u5D6n2Xer92Hu/ 9n/d/dj7/Ny1/8tSn5+7le//S8NLT3/yP//946fH8aFfmuYEHseH3v3zx/Nl3H3v /VUN3Z+/ZO35W9cPv+7W82Ptf/G+rrx/Zz/3/ufvxg6fjA+91rnHfO0vh6XjW9df +rzU61/7bWDp/K2fu2AeH/qpZ+R7P4jaJaWtv1Vr6+e+/6Wtf+31tbZ+7vtf2q// zd+nKl9/8/UWtn5vvR8fmtpOf6aJtn7sv0LWvv5Wra1/7fW1tv61al//2vNTX29p 68e+3tzrd2acxocu/pkh8t/N9/67/hL7t/+LLWSfufafm/3b/6Vu/nz7v9it19f6 9z/7t/+c3Sr1/reeb//2v+XzF9e3/4tdPN/3v6zdyv7t/1JTy33/7N/+LzW13vef mv3b/8Xav6p22vvxobXr/b8NsX/739LUn1/69dm//dv/7Z+fm/3b/5Zu/fzcSt9/ 6vtn//a/pamvv/f9p2b/9r+lWz8/t9z7T71+bvZv/ylbutT7L/3+5r5++7f/nPsH mvXl4cvvP/rg0XF46JefGx56/1V3r/z0uYZ6+fElS18XrrO47r9+98Gu/bqt5w+f DA8995vJ0m82rf742t90b/1Nee3Xb/3NfuX58/DQ0LXPsvOd7/x2z9+qtvWXzr+2 W6Vef+ufMbZ+nvXzrn8/PHTrn2Wc73znt3v+0tfH/rzc6197P5fEvv7Y6+f+POtn XX+chocuaf3Pwta3vvWtb33rW9/61re+9a1vfetbP/3nb2X/9n+ppX/+Vrmvb+v3 p9zf37ayf/vP2c3Xn/m/Xch9ffZv/ym7Ve7rt3/739Ktcl9/6/u/Hx6a+79Fsb71 rW9961vf+ta3vvWtb33rW9/65a+/9fNLvz77t/+e9791/dRKv/+p2b/9b2nv15ea /dv/ltbO/u1/S2tX+P6/Mrz03s/ee+9HT4/jQ7/y4PjQe3ffvNxzls479zmf+vHv /+L5Xvm5m8/fufduPS90w3mH6eXaxzLW49zKt4Gttt6/jT9/X39ofGgo1rN+q73X 3+vXfinrX/29de/vtdbPu7423dDe65W2fuzr2Sr9+g+PD439V5bcf2Uq7K9oxa0P 9Cv395/S1s/9+8/O649rxocuKe3Psnuz/7zNrfX9595f7vuT+/rtf1u3yn39qfe/ eZ2lf6ts/d8y7d/+7d/+7d/+e9y/qqqqVtclua8v9f6W5L5++9/WrXJff+79L2l9 f0vsP29zq3//68aH5v5vN5ZsvX77t/8tza31/W1l//a/pbVrfX8AAADAstb/fcC/ /9j/ltZu6/5Lvz+p92f/9n+puW28/peGF+e5oa+89mh+N1wYHUp3DtNL7l9iKfrQ L+M9z6+oq0aHAgAtWjc6VFXLanist/VVNUrHGKNDAQAAAAAAAIASxBkdqqqqqqqq qqoPNzyW+3rsX1VVVVVVVbXpfvU4OvTx/G4wOpSTw/RSyKMateGxvc+vqEaHAkC3 jA5VrbHhsd7WV9UoHY0OBQAAAAAAAIBWGB2qqqqqqqqqmrLhsdzXY/+qqqqqqqqq Tfdrx9Ghr8/vBqNDOTlML4U8qlEbHtv7/IpqdCgAdMvoUNUaGx7rbX1VjdLR6FAA AAAAAAAAaIXRoaqqqqqqqqopGx7LfT32r6qqqqqqqtp0Xz6ODn1jfjcYHcrJYXop 5FGN2vDY3udXVKNDAaBbRoeq1tjwWG/rq2qUjkaHAgAAAAAAAEArjA5VVVVVVVVV TdnwWO7rsX9VVVVVVVXVpvv14+jQJ/O7wehQTg7TSyGPatSGx/Y+v6IaHQoA3TI6 VLXGhsd6W19Vo3Q0OhQAAAAAAAAAWmF0qKqqqqqqqmrKhsdyX4/9q6qqqqqqqjbd XzuODn1zfjcYHcrJYXop5FGN2vDY3udXVKNDAaBbRoeq1tjwWG/rq2qUjkaHAgAA AAAAAEArjA5VVVVVVVVVTdnwWO7rsX9VVVVVVVXVpvuN4+jQt+Z3g9GhnByml0Ie 1agNj+19fkU1OhQAumV0qGqNDY/1tr6qRulodCgAAAAAAAAAtMLoUFVVVVVVVdWU DY/lvh77V1VVVVVVVW26v34cHfr2/G4wOpSTw/RSyKMateGxvc+vqEaHAkC3jA5V rbHhsd7WV9UoHY0OBQAAAAAAAIBWGB2qqqqqqqqqmrLhsdzXY/+qqqqqqqqqTfc3 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 XbDPdBUPFQAAFQ8V `settings` patch-size 8 num-shapes 64 screen-half-width 20 screen-half-height 19 interface-window-xcor 374 interface-window-ycor 29 interface-window-size 700 493 output-window-xcor 0 output-window-ycor 22 output-window-width 300 output-window-height 200 info-window-xcor 0 info-window-ycor 22 info-window-width 500 info-window-height 400 control-center-xcor 0 control-center-ycor 85 control-center-width 370 control-center-height 402 turtle-command-center-height 150 observer-command-center-height 150 `string table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `symbol table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `double table` H4sIAAAAAAAAAGNgYGBhgAKHSAht/wFC74fSAD7LU1QkAAAAAAAAJA== `list table` H4sIAAAAAAAAAHWPAQqAMAwDb60i4n98kf9/g9tMoVSFhYYkzSiwAkcD67g6EAbf x7THm7rNx6a8RSZ2Pnwy5J9Fb8l38Zi1o2Y96RlTy326w2smePQpt5T/Xnf+3MYN cfwyoFQBAAAAAAFU `bytecodes` H4sIAAAAAAAAANVUyU4CQRCtngFkUUCGxRUHGMQFcb94EmKiJiYmXjjKGjUaMTKE +Fee/Ar9J3umq6ebZvBuJ5NXXct7VZNKQ6zV+bD73UGvP2ydw7dzfgAgDMFh3x69 UbMG3inST3OMCgBhLpIMoU2oraFN0QigrQMxCNoBmpNDjgj6ggBpnsu55li9Dkpu WMrlvqjITegMS/SecIhpxcVdvXnfvLqmdtUbhFhRZC4jFoBk6ARWmHboTJKSJszS GJ3CiigxwmLJPHLExfRpMT2fXPyRoJjW61wTnfN7giWyCRo39X86gQba5S11fIk9 crU+RX8W962Ivryd0ab6IEaI9gzTveDuTMad/8FrI1K/Yn+m9WOS/jziAmJc4U8g JhEXlXhK0jd89NM++hlJP4uYQ1xS+JcRee2qEl+T9Nd99PM++huSvolYQCwq/CVE C7GsxDcl/YqP/hbTd+1tV1fU7uCd97JL7Yyyq1VpV/cQa9Ku7iMeKG8Krz+U6o8Q j6X6E8TTP94ZHYzGyLYHr2em2Xtvj83OS7v7zBbOFQu6bxpe2HGJQhgMqATjxye7 70NAZhLEPIKHgU+hPrMw7hXyJ5/XTBwn9xelDIC1LwYAAAAABi8= `observer world` H4sIAAAAAAAAAGMQSMhPKk4tKkstUiguSSxJTXBggAMrBq6CnPyS8syU9NQSIJ+F gS0nNS+9JAPI5mBgB8kVpOaBlXKDNSPJQgAjCAMA+OWZc2QAAAAAAABk `patch world` H4sIAAAAAAAAAI3d24tj95XF8eMQZpQZBgRzHvSgh8NBCCGE0P1+OVU6f8M8x+OY 2BAcM9PM5U1/8vwJ04m9j2t11e71FTTupj5Ze+9q6JVfsJ3iX/7487efvvuh+s9P 3376/o9N0X3+rfj9/3z31//4+8//6ee//PXTf//4pz9//+nzr4bF737+7vNf+8U/ /OX7n/786YfPP58U//g38/P3P33+xaD4/f/+8h/tFf/89+DOVZ9/lJ9//OvnH78r /vDtd59+/K9vP/065g8//vTDj//+4y+//Ob+f78sEn998/nmbz9+9+tPYmfretD1 1TX1O/fN55/8qSlh3gDmDWFeBfNq6EbQjeF+E5g3hXkz6OZw7gK6JXQr6NbQbaDb wu/LDubtYd4B5h2hO8G5Z5h3gXlX6G7Q3eF+DXVP5l5g3ovmpXe8wntfYd4D5j1g XgvzWs3Lvi/d19/Ffdwz1vXUpb8ffehKOHcA84bQVXBuDd0IujHcbwLdFLoZdHN4 xwLmLWHeCuatodtAt4VuB90e3nuA7gjnnqA7w7kX6K7Q3eB+d5jXUPdk7gXmvWhe escrzHuFeQ+Y94B5LcxrWV7XMz2TV6hL9+upS/P66mzPuLyBOtszLq+CeTV0I+jG 6tL9Jupszzg3U5fOnatz7xnrlurSuSvo1upsz7i8LXQ7dbZnXN4BuiN0J+jO6tx7 xrqrunTuDbq7Ovee8e7J5kbPWKd5tmesg/tFz1gH86Jn3H4tu7frmf7XXVNA14Ou D10J3QC6obo3n497xrlane0ZlzdWZ98zLm8K3Uydfc84t1CXzl2qS/NW6tK8NXQb 6LbQ7dTZnnF5B+iO6ux7xrmzunTuBbordDfo7upsz7i86BmXFz3j8qJnXF70jMuL nnF50TPWaV46N3rG5bUsr+uZ+PPc9Uxp9uupsz3jXKkunTuAbghdBfer1aV5I+jG 0E3U2feMczN16dy5OtszLm8J3UpdOnetLs3bqEvzttDtoNtDd1CX3nFUZ3vGubO6 dO5FnX3PuLybujTvri7Na6h7Mhc9Y53m2Z6xDu4XPWMd3C96xuW1LK/rmYHJK9TZ 94zL60NXQjeAbghdBV0N3Qi6MXQT6KbqbM84N1eXzl1At4Rupc72jHMb6LbQ7dSl d+zV2Z5x7qgunXtSZ3vG5V3U2Z5x7gbdHbqGuie7N3rGOs2zPePyomeci55xc6Nn nGs1L53bsv26nhmavAK6njr7nnF5JXQD6IbQVdDV0I3Upd+XMXQTdencqTrbM87N oVtAt1SX3rGCbg3dBrqtOtszzu3VpXMP0B3V2feMyzurS/Mu6tK8qzrbMy7vrs72 jHVP5l40L90vesa56Bk3N3rGuYfmpXOjZ5yLnrGO5XU9U5k7CnXp3B50fXXp3BK6 gbp07hC6CroauhF0Y3W2Z5ybqkvnzqCbq7M94/KW0K3U2feMcxvottDt1KV37NXZ 94xzR+hO6tL9ztBdoLuqsz3j8u7QNXBu9Ixz0TNubvSMy4uecXnRM85Fz1gH86Jn 3B0ty/vg73v+eG4B3Rd/34F9z7i89/+738fui3dgOvf9fy/4OK+CeTV0o3df/3ju WJ3tGeem0M2gm7/7+sd3LKBbqkvnrqBbv/v6x3M30G3V2Z5xeXvoDtAd1dmece78 7usfz71Ad4XuBt0duoa6pzjbMy4vesa56BnrYF70jHXw3vbd1z/Oa9l+Xc+MTF4B XQ+6vrr03hK6gbp07lBdmldBV6tL546gG6uzPePcVF06dwbdXF06dwHdErqVunS/ tbo0b6MuzdtCt1OXzt1Dd4DuqC7d76TO9oxzF+iu6tL9btDdoWuoe7I7omdcXvSM y4uesU7z0rnRMy4vesa5Fua1LK/rmfHXXVNA14Our+7NR79/pTrbMy5vqM72jMur oRupS+eOoZuoS+dOoZtBN4duoc72jHMrdenctTrbM85todtBt1eX3nGA7gjdSZ3t GZd3ge6qLp17g+6uLp3bUPdkc6NnrNO8dG70jHUwL3rGOpgXPWOd5tmemXzdNQV0 Pej60JXQDaAbQldBV0M3Uvfmo79vY3W2Z1zeFLqZunTuXF2at1Bne8blrdSleWt1 ad4Gui10O+j20B3U2feMyzupsz3j3EVdOveqzvaMc3d16dyGuiebGz1jnealc6Nn rIN50TPWwXujZ1xey/K6npmavAK6njrbM86V6tK5A+iG0FVwv1pdmjdSZ98zLm+i Ls2bQjdTl86dQ7dQZ3vG5a2gW0O3UWffM87t1KVz99AdoDuqS/c7qUvzztBdoLtC d4Puri69t6HuyeZGz1gH86JnrIN50TPu3ugZlxc94/LaJ3Jdz8zM3EKdfc8414eu hG4A3RC6Crpa3ZvPxz3j3Bi6CXRTdbZnXN4cuoU62zPOraBbQ7eBbgvdDrq9ujef j3vGuaM62zMu7wzdRV0696ouzbups+8Zl9fAvOgZ515g3ovmpftFz1gH94uecXnR My4vesbltSyv65m5ySvU2Z5xrq8unVuqsz3j3BC6CrpaXXrHSJ19zzg3UZfOnaqz PePcHLqFunS/JXQrdbZnXN4Guq062zPO7dWlcw/q0rwjdCd16dwzdBd1tmecu0F3 h66Bd0TPOBc9Yx3Mi55xd0TPOPeAeQ/NS/eLnrGO5XU9szB5hTrbMy6vry7NK9Wl eQPohtBVcL9aXZo3gm6szvaMc1N16dyZOtszzi3UpXOX0K3U2Z5xeRvottDtoNtD d1Bne8a5k7p07hm6C3RX6G7Q3aFr1Nn3jHMvmpfOjZ5xLnrGOpgXPePuiJ5xedEz Lq9leV3PfPHPMbzLK9Sl+/XU2feMyyuhG0A3hK6Cd9Tq0ryROvuecXkT6KbQzdTZ nnFuAd0SupW69I41dBvottDt1Nn3jMs7qLM94/JO6tK8s7o07wLdFbqbOvueca6h 7sncC8x7gXmvMO8V5j00783niz6CedEz1mleNrfrmS/+Obh3eYW69I4edH3oSnXp fgPohtBVcL8auhF0Y3X2PePypurSvJm6NG+uzvaMc0voVtCt1aV3bNSleVt1ad4O ur26dO5BXZp3VGffMy7vrC7Nu6hL867Q3aC7q7M9Y92TzY2ecXnRMy4vesY6mBc9 Yx3Mi55x97Ysr+uZtZlbQNdTZ98zLq+EbgDdUJ3tGedq6Ebq0v3G6mzPODeFbgbd XF16xwK6pTrbM86t1aVzN+pszzi3g24P3QG6o7r03hN0Z3W2Z1zeVV2ad1OX5t2h a+Dc6BmXFz1jnebZ94x1cL/oGZcXPePyomdcXsvyup7ZmLmFunRuT12a14euVGff M84N1aVzK+hqdbZnnBtDN1GX7jdVZ3vGuTl0C3XpfkvoVtCtodtAt4VuB91ene0Z l3eE7gTdGbqLuvSOq7o076YuzbtD11D3ZPtFz1inebZnrIN5D81L94uecXnRMy6v ZXldz2xNXqHO9ozL60NXqrM949xQXTq3gq6GbgTdGLoJdFN1tmdc3hy6BXRL6Fbq 7HvGuQ10W+h26tI79upsz7i8I3QndencM3QXdencqzr7nnHuri6d21D3ZC56xu0X PePcK8x71bx0v+gZ6+B+0TPWsbyuZ97/ewA1r1CX3tGDrg9dCd1Ane0Zl1dBV6uz 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 dj1j8rqeMXkty/t/RiaajnP6AAAAAPpz `turtle world` H4sIAAAAAAAAAE2Ouw7CMAxFr0QfCBATIwMDUwcGYGDkUxoaq6kUJVFiVPgaPhXc 8hB38TmSfWUsa75GtrRJrJjqM355oLDkWjbCJ+SXSKQFt5gF67nvdEssfkQ5eCAn skPeeOuj4BrZvRlpgflY/tc2lXXtexfE9siTUYEEK2S3902GSW/8+EeRzGfzgNKQ 0p1rRVbfP5+SYb4ATYOGr8sAAAAAAADL