Java StarLogo 2.0 english `turtle` breeds [reds blues] turtles-own [ sugar-holdings ; agent's current store of sugar sugar-metabolism ; rate at which agents use up their store of sugar vision-level ; how far an agent can see ;; Variables used in finding best visible sugar neighbor max-so-far ; best sugar value found so far hd-of-max ; heading of that best sugar value r-of-max ; radius (distance) to that best sugar value r ; dummy variable used to check at different radii ] ;; Agent Rules to agent-move-M ;;move to-best-sugar-level... move-to-max ;; metabolize sugar setsugar-holdings sugar-holdings - sugar-metabolism if sugar-holdings <= 0 [die] ;; (if still alive) eat all the sugar at new location setsugar-holdings sugar-holdings + sugar-level-at 0 0 setsugar-level 0 end to reproduce ;; reproduce if have enough sugar-holdings if breed = blues [ if sugar-holdings > hatch-thresh-blues [ setsugar-holdings (sugar-holdings / 2) hatch [relocate move-to-max] ] ] if breed = reds [ if sugar-holdings > hatch-thresh-reds [ setsugar-holdings (sugar-holdings / 2) hatch [relocate move-to-max] ] ] end to relocate seth random 360 leap 1 if count-turtles-here > 1 [relocate] end to move-to-max if search = 1 [ ;; initialize variables used in finding and recording max setmax-so-far sugar-level sethd-of-max heading setr-of-max 0 ;; start facing random direction - to prevent biased handling of ties seth (90 * random 4) setr vision-level repeat vision-level [ ;; check at each distance repeat 4 [ ;; and in each of the four directions if (;; unoccupied? ( (count-turtles-towards 0 r) < 1 ) and ;; and better than best so far ((sugar-level-towards 0 r ) > max-so-far)) [ setmax-so-far sugar-level-towards 0 r sethd-of-max heading setr-of-max r ] rt 90 ] setr r - 1 ] seth hd-of-max ;check if better off than you are now? if (max-so-far > (sugar-level-at 0 0)) ;; better off? then move to the new spot [leap r-of-max] ] if search = 0 [ rt random 50 lt random 50 fd random vision-level ] end ;; Visualizations to sugar-color ; scale-color red (sugar-holdings) 0 (hatch-threshold + 5) end to metab-color scale-color purple (sugar-metabolism) 1 4 end to vis-color scale-color blue vision-level 1 4 end to color-turtles ; ifelse (colorscheme = 0) [sugar-color] ; [ifelse (colorscheme = 1) [metab-color] [vis-color]] end `observer` patches-own [ sugar-level ; amount of sugar currently at the patch sugar-capacity ; upper limit on amount of sugar that can be at the patch ] globals [colorscheme averagesugar averagevision averagemetabolism nowshown sumsgr] to setup ca setcolorscheme 0 setaveragesugar 0 setaveragevision 0 setaveragemetabolism 0 ;;Patches makecircles ;; Agents crt n-reds crt n-blues intro-reds intro-blues ; ask-turtles ; ; [ ; setvision-level (1 + random 4) ; setsugar-metabolism (1 + random 4) ; setsugar-holdings 10 ; setxy random (screen-width / 1) random (screen-height / 1) ; ; ; sugar-color ; ] ave-sugar ave-metabolism ave-vision setnowshown true clearplots end to go ask-turtles [agent-move-M color-turtles] ave-sugar ave-metabolism ave-vision ifelse alphinity = 0 [sugar-growback-Galpha] [sugar-growback-Ginfinity] if birth? = 1 [ask-turtles [reproduce]] end to growback ave-sugar ave-metabolism ave-vision ifelse alphinity = 0 [sugar-growback-Galpha] [sugar-growback-Ginfinity] end to intro-reds create-reds n-reds ask-reds [ setxy (random screen-height / (1 + segregate)) (random screen-width / (1 + segregate)) setc red setvision-level (1 + random redvision) setsugar-metabolism (1 + random redmet) setsugar-holdings 10 ] end to intro-blues create-blues n-blues ask-blues [ setxy (screen-height / (1 + segregate) + (random screen-height / (1 + segregate))) (screen-width / (1 + segregate) + (random screen-width / (1 + segregate))) setc blue setvision-level (1 + random bluevision) setsugar-metabolism (1 + random bluemet) setsugar-holdings 10 ] end to makecircles ;create the initial distribution ca crt 249 ask-patches [setsugar-capacity 0] ask-turtles [ht ;setup two groups of temporary turtles to draw the sugar ifelse (int (who / 2)) = (who / 2) [setxy screen-half-width / 2 screen-half-height / 2] [setxy (0 - screen-half-width) / 2 (0 - screen-half-height / 2)] setsugar-holdings capacity-constant repeat 12 ;create the two circles [setsugar-capacity (round sugar-holdings) setsugar-holdings (sugar-holdings - (capacity-constant / 12)) fd 1 ] ifelse ycor > 0 ;have the turtles create the connecting section [setsugar-holdings ( 1 - abs (225 - heading) / 45) if xcor > (screen-half-width) / 2 or ycor > (screen-half-height / 2) [die] hatch [setx xcor - .5 seth 225 repeat 16 [setsugar-capacity round (sugar-holdings) fd 1] die] seth 225 repeat 16 [setsugar-capacity round (sugar-holdings) fd 1] die ] [setsugar-holdings ( 1 - abs (45 - heading) / 45) if xcor < (0 - screen-half-width) / 2 or ycor < (0 - screen-half-height / 2) [die] hatch [setx xcor - .5 seth 45 repeat 16 [setsugar-capacity round (sugar-holdings) fd 1] die] seth 45 repeat 16 [setsugar-capacity round (sugar-holdings) fd 1] die ] ] ask-patches [setsugar-level sugar-capacity] color-em end to sugar-growback-Galpha ask-patches [ ;; grow sugar by alpha up to level permitted by patch capacity setsugar-level sugar-level + (milli-alpha / 1000) if sugar-level > sugar-capacity [ setsugar-level sugar-capacity ] ] ;; color the patches appropriately color-em end to sugar-growback-Ginfinity ask-patches [ ;; grow sugar immediately to level permitted by patch capacity setsugar-level sugar-capacity ] ;; color the patches appropriately color-em end to color-em ask-patches [scale-pc yellow sugar-level (1) (10)] end to ave-sugar setaveragesugar 0 ask-turtles[setaveragesugar (averagesugar + sugar-holdings)] setaveragesugar (averagesugar / count-turtles) end to ave-vision setaveragevision 0 ask-turtles[setaveragevision (averagevision + vision-level)] setaveragevision (averagevision / count-turtles) end to ave-metabolism setaveragemetabolism 0 ask-turtles[setaveragemetabolism (averagemetabolism + sugar-metabolism)] setaveragemetabolism (averagemetabolism / count-turtles) end `information` WHAT IS IT? ----------- This project explores an artificial society known as Sugarscape. This society was conceived of by Joshua Epstein and Robert Axtell (http://www.brook.edu/SUGARSCAPE/) In this society, agents (red) wander around on a landscape consisting of two connected mounds of sugar (yellow). As the agents move around on the landscape they metabolize some of their existing sugar. The agents are constantly looking for new sugar, and when they find it they add it to their resources. If the agents ever eat all of their sugar, then they will die. If they get enough sugar, then they can reproduce. Each agent has a random value for its metabolism, initial quantity of sugar, and vision level (that controls how far around it can look for more sugar). The sugar itself can grow back at different rates. For a more thorough description of Sugarscape, check out the Sugarscape web site (http://www.brook.edu/SUGARSCAPE/). HOW TO USE IT ------------- Click the SETUP button to setup the agents (red). Click the GO button to start the simulation. The N-AGENTS slider controls the initial number of agents. The HATCH-THRESHOLD slider sets the sugar level at which the agents reproduce. The CAPCITY-CONSTANT slider controls how much sugar there is initially. The MILLI-ALPHA slider controls how fast the sugar grows back if it is not growing back instantly (controlled by the INSTANT-GROWBACK? slider). The BLACK-IS and WHITE-IS sliders control the color coding of the sugar. The BIRTH slider controls whether (1) or not (0) the agents can give birth. The SHOW SUGAR button colors the turtles based on how much sugar they have. The SHOW VISION button colors the turtles based on how far their vision is. The SHOW METABOLISM button colors the turtles based on the value of their metabolism. THINGS TO NOTICE ---------------- Watch the COUNT-TURTLES monitor to see how the agent population changes over time. You can also watch the AVERAGESUGAR, AVERAGEVISION and AVERAGEMETABOLISM monitors to see how the average values of these turtle traits change over time. The plot window graphs the total number of agents, as well as these average values, over time. The value of these traits can be influenced by the environmental conditions. Sometimes coniditions will strongly select for longer range vision, or lower metabolism. EXPLORATIONS ------------- Under the current setting, the agents can survive and reproduce. Is the current Sugarscape capable of supporting an infinite number of agents, or is there a limit? How is that limit determined? How does the growback rate affect turtle vision and metabolism? How are these two quantities related in the population of turtles and within individual turtles? There are many extensions of this model that are described in the Artificial Societies book. Can you implement some of them? STARLOGO FEATURES ------------------- The turtles in Sugarscape are all called from an "ask-turtles" inside of an Observer procedure. This keeps the turtles in sync with each other. This also keeps them in sync with the patch procedures that are growing back the sugar. The turtles also make use of the "leap" command. This command is like the jump command, except that turtles will not execute it unless there are no other turtles on the patch they are trying to get to. By calling leap within the recursive turtle procedure "relocate", it is ensured that no two turtles stay on the same patch. `interface` SLCanvas top-left 10 233 SLTextWidget top-left 226 37 width-height 40 25 textwidth 31 linenums 1 words "REDS " drawBorder true textwidget-number 2 SLTextWidget top-left 224 151 width-height 41 25 textwidth 37 linenums 1 words "BLUES " drawBorder true textwidget-number 1 SLSlider top-left 153 29 width-height 62 25 name "slider5" variable "birth?" min-value 0 max-value 1 current-value 1 slider-number 5 show-name? false SLSlider top-left 255 5 width-height 101 25 name "initial reds" variable "n-reds" min-value 1 max-value 400 current-value 110 slider-number 0 show-name? true SLSlider top-left 254 114 width-height 107 25 name "initial blues" variable "n-blues" min-value 0 max-value 400 current-value 107 slider-number 11 show-name? true SLSlider top-left 15 50 width-height 121 25 name "capacity-constant" variable "capacity-constant" min-value 1 max-value 10 current-value 10 slider-number 1 show-name? false SLSlider top-left 46 43 width-height 135 25 name "Growback Rate" variable "milli-alpha" min-value 0 max-value 2000 current-value 373 slider-number 3 show-name? true SLSlider top-left 82 51 width-height 118 25 name "Instant Growback?" variable "alphinity" min-value 0 max-value 1 current-value 0 slider-number 4 show-name? true SLSlider top-left 282 130 width-height 83 25 name "vision-blues" variable "bluevision" min-value 1 max-value 10 current-value 4 slider-number 9 show-name? true SLSlider top-left 320 5 width-height 105 25 name "metab.-reds" variable "redmet" min-value 1 max-value 8 current-value 4 slider-number 8 show-name? true SLSlider top-left 356 3 width-height 116 25 name "red hatch-thresh" variable "hatch-thresh-reds" min-value 0 max-value 99 current-value 30 slider-number 2 show-name? true SLSlider top-left 356 110 width-height 122 25 name "blue hatch-thresh" variable "hatch-thresh-blues" min-value 0 max-value 99 current-value 31 slider-number 12 show-name? true SLSlider top-left 319 132 width-height 85 25 name "metab.-blue" variable "bluemet" min-value 1 max-value 8 current-value 4 slider-number 10 show-name? true SLMonitor top-left 461 569 width-height 77 36 name "monitor2" list-to-run "averagesugar" digits 1 delay 0.5 monitor-number 3 show-name? false whichip 22 onewhichip 23 SLMonitor top-left 423 572 width-height 78 36 name "monitor4" list-to-run "averagemetabolism" digits 2 delay 0.5 monitor-number 5 show-name? false whichip 24 onewhichip 25 SLMonitor top-left 424 482 width-height 80 36 name "monitor3" list-to-run "averagevision" digits 2 delay 0.5 monitor-number 4 show-name? false whichip 26 onewhichip 27 SLMonitor top-left 461 482 width-height 82 36 name "monitor1" list-to-run "count-turtles" digits 0 delay 0.5 monitor-number 2 show-name? false whichip 28 onewhichip 29 SLSlider top-left 284 16 width-height 77 25 name "vision-reds" variable "redvision" min-value 1 max-value 10 current-value 10 slider-number 7 show-name? true SLSlider top-left 189 65 width-height 80 25 name "segregate?" variable "segregate" min-value 0 max-value 1 current-value 0 slider-number 13 show-name? true SLLineWidget top-left 421 160 width-height 70 70 id 11 order 11 type 1 title "Vision" delay-string "1.0" xlabel "Time" ylabel "Average Vision" grid false connected true autoscaletrue location 0 0 whichip 30 onewhichip 31 wizard-on true lineset-id 1 lineset-name "Vision" lineset-order 11 lineset-type 1 lineset-color -16776961 lineset-displayed? true lineset-instruction " (average-of-blues [ vision-level ] ) " extrainfo-extra? true extrainfo-instruction "average of" extrainfo-breed "blues" extrainfo-var "vision-level" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 1 lineset-id 2 lineset-name "Vision" lineset-order 11 lineset-type 1 lineset-color -43776 lineset-displayed? true lineset-instruction " (average-of-reds [ vision-level ] ) " extrainfo-extra? true extrainfo-instruction "average of" extrainfo-breed "reds" extrainfo-var "vision-level" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 2 lineset-id 3 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -6262704 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 3 lineset-id 4 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -256 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 4 lineset-id 5 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -11418368 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 5 lineset-id 6 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -16711936 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 6 lineset-id 7 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -16711738 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 7 lineset-id 8 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -16711681 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 8 lineset-id 9 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -16744449 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 9 lineset-id 10 lineset-name "" lineset-order 11 lineset-type 1 lineset-color -7434610 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 10 SLLineWidget top-left 426 392 width-height 70 70 id 21 order 21 type 2 title "Blue Wealth Distribution" delay-string "1.0" xlabel "sugar holdings" ylabel "frequency" grid false autoscaletrue location 0 0 whichip 32 onewhichip 33 wizard-on true lineset-id 1 lineset-name "sugar holdings" lineset-order 21 lineset-type 2 lineset-color -16776961 lineset-displayed? true lineset-instruction " ask-blues [ %ptolemy-plot 21 1 (sugar-holdings) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "blues" extrainfo-var "sugar-holdings" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 1 lineset-id 2 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -43776 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 2 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 2 lineset-id 3 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -6262704 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 3 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 3 lineset-id 4 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -256 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 4 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 4 lineset-id 5 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -11418368 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 5 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 5 lineset-id 6 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -16711936 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 6 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 6 lineset-id 7 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -16711738 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 7 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 7 lineset-id 8 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -16711681 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 8 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 8 lineset-id 9 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -16744449 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 9 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 9 lineset-id 10 lineset-name "" lineset-order 21 lineset-type 2 lineset-color -7434610 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 21 10 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 10 SLLineWidget top-left 424 311 width-height 70 70 id 20 order 20 type 2 title "Red Wealth Distribution" delay-string "1.0" xlabel "sugar holdings" ylabel "frequency" grid false autoscaletrue location 0 0 whichip 34 onewhichip 35 wizard-on true lineset-id 1 lineset-name "sugar holdings" lineset-order 20 lineset-type 2 lineset-color -65536 lineset-displayed? true lineset-instruction " ask-reds [ %ptolemy-plot 20 1 (sugar-holdings) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "reds" extrainfo-var "sugar-holdings" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 1 lineset-id 2 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -43776 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 2 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 2 lineset-id 3 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -6262704 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 3 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 3 lineset-id 4 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -256 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 4 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 4 lineset-id 5 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -11418368 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 5 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 5 lineset-id 6 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -16711936 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 6 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 6 lineset-id 7 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -16711738 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 7 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 7 lineset-id 8 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -16711681 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 8 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 8 lineset-id 9 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -16744449 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 9 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 9 lineset-id 10 lineset-name "" lineset-order 20 lineset-type 2 lineset-color -7434610 lineset-displayed? false lineset-instruction " ask-turtles [ %ptolemy-plot 20 10 (Xcor) ]" extrainfo-extra? true extrainfo-instruction "histogram" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 10 SLLineWidget top-left 422 235 width-height 70 70 id 16 order 16 type 1 title "Metabolism" delay-string "1.0" xlabel "Time" ylabel "Average Metabolism" grid false connected true autoscaletrue location 0 0 whichip 36 onewhichip 37 wizard-on true lineset-id 1 lineset-name "metabolism" lineset-order 16 lineset-type 1 lineset-color -65536 lineset-displayed? true lineset-instruction " (average-of-reds [ sugar-metabolism ] ) " extrainfo-extra? true extrainfo-instruction "average of" extrainfo-breed "reds" extrainfo-var "sugar-metabolism" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 1 lineset-id 2 lineset-name "metabolism" lineset-order 16 lineset-type 1 lineset-color -16776961 lineset-displayed? false lineset-instruction " (average-of-blues [ sugar-metabolism ] ) " extrainfo-extra? true extrainfo-instruction "average of" extrainfo-breed "blues" extrainfo-var "sugar-metabolism" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 2 lineset-id 3 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -6262704 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 3 lineset-id 4 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -256 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 4 lineset-id 5 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -11418368 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 5 lineset-id 6 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -16711936 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 6 lineset-id 7 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -16711738 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 7 lineset-id 8 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -16711681 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 8 lineset-id 9 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -16744449 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 9 lineset-id 10 lineset-name "" lineset-order 16 lineset-type 1 lineset-color -7434610 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 10 SLLineWidget top-left 421 85 width-height 70 70 id 10 order 10 type 1 title "Sugar" delay-string "1.0" xlabel "Time" ylabel "Average Sugar Holdings" grid false connected true autoscaletrue location 0 0 whichip 38 onewhichip 39 wizard-on true lineset-id 1 lineset-name "Sugar" lineset-order 10 lineset-type 1 lineset-color -65536 lineset-displayed? true lineset-instruction " (average-of-reds [ sugar-holdings ] ) " extrainfo-extra? true extrainfo-instruction "average of" extrainfo-breed "reds" extrainfo-var "sugar-holdings" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 1 lineset-id 2 lineset-name "Sugar" lineset-order 10 lineset-type 1 lineset-color -16776961 lineset-displayed? true lineset-instruction " (average-of-blues [ sugar-holdings ] ) " extrainfo-extra? true extrainfo-instruction "average of" extrainfo-breed "blues" extrainfo-var "sugar-holdings" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 2 lineset-id 3 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -6262704 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 3 lineset-id 4 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -256 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 4 lineset-id 5 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -11418368 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 5 lineset-id 6 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -16711936 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 6 lineset-id 7 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -16711738 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 7 lineset-id 8 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -16711681 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 8 lineset-id 9 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -16744449 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 9 lineset-id 10 lineset-name "" lineset-order 10 lineset-type 1 lineset-color -7434610 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 10 SLLineWidget top-left 421 9 width-height 70 70 id 9 order 9 type 1 title "Agents" delay-string "1.0" xlabel "Time" ylabel "Number of Agents" grid false connected true autoscaletrue location 0 0 whichip 40 onewhichip 41 wizard-on true lineset-id 1 lineset-name "Reds" lineset-order 9 lineset-type 1 lineset-color -65536 lineset-displayed? true lineset-instruction "( count-reds) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "reds" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 1 lineset-id 2 lineset-name "Blues" lineset-order 9 lineset-type 1 lineset-color -16776961 lineset-displayed? true lineset-instruction "( count-blues) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "blues" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 2 lineset-id 3 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -6262704 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 3 lineset-id 4 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -256 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 4 lineset-id 5 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -11418368 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 5 lineset-id 6 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -16711936 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 6 lineset-id 7 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -16711738 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 7 lineset-id 8 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -16711681 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 8 lineset-id 9 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -16744449 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 9 lineset-id 10 lineset-name "" lineset-order 9 lineset-type 1 lineset-color -7434610 lineset-displayed? false lineset-instruction "( count-turtles) " extrainfo-extra? true extrainfo-instruction "number of" extrainfo-breed "turtles" extrainfo-var "Xcor" extrainfo-with false extrainfo-xy? false extrainfo-xval? false lineset-end 10 SLButton turtle-or-observer? observer top-left 114 128 width-height 40 30 name "button2" line-to-run "go" forever? true button-number 3 show-name? false whichip 21 SLSlider top-left 153 119 width-height 65 25 name "search?" variable "search" min-value 0 max-value 1 current-value 1 slider-number 6 show-name? true SLButton turtle-or-observer? observer top-left 113 32 width-height 40 30 name "button1" line-to-run "setup" forever? false button-number 2 show-name? false whichip 20 `turtle shapes` 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 DhUAABUO2Q== `template` null `settings` patch-size 8 num-shapes 256 screen-half-width 25 screen-half-height 25 interface-window-xcor 122 interface-window-ycor 30 interface-window-size 693 501 output-window-xcor 0 output-window-ycor 0 output-window-width 300 output-window-height 219 info-window-xcor 0 info-window-ycor 0 info-window-width 500 info-window-height 419 control-center-xcor -4 control-center-ycor -4 control-center-width 1032 control-center-height 712 turtle-command-center-height 150 observer-command-center-height 151 `string table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `symbol table` H4sIAAAAAAAAAGNgYGBkYCkpKk0FAJNWxWwKAAAAAAAACg== `double table` H4sIAAAAAAAAAGNgYBB0EGEAA/v/Gf8u/l382/7zve9731ffd4AIMzhwQGkBqLoP UL4MlFaB0hJQWglKK0BpPSgdBTHR/gGU79YAoWMOgGkAt2sN1owAAAAAAACM `list table` H4sIAAAAAAAAAIVUS3bDMAgESXb8S5pFeoj0vWy67kl6gl67u16huwprsEeO0+Q9 AgwwEkiyiFxFZNL85xJEWugInRAbY/EbKZjjjaLUsfw7G4a4Qo6uQ1nT7APWMbvD 2gM4Llo4R+iKY4fT7Z44hw3nR9a/1GfYiGy09zDxbIBPZLv+znKj+pBrTsDPxKEP MEW9c1T7Addtp24PU/TcoT7PJP4QL+cEslPmeKGcIZuHDfdim6Z4pL6ja4onxdm4 bVruZ/lUrMbvKJ1F2PBUZypzvn5579l/07on672BbQmfWvZpffRKd5zryI/sE19L fD63Xtd5cG+NrvfsHTKX0/n4+zJJwI66nmOifPS9zP2E846YQcSakWKzj5j377GE /QTCFZj1NGIP/qb4/Qbcl+5ZnpQ9mP/Kdw7fngpHrtmXndwKRy7PTym3wtHPQJjA X74X1M+/eXgDPeX4ffKZtI/ifwuDBr2oBQAAAAAFqA== `bytecodes` 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 `observer world` H4sIAAAAAAAAAD1O0QqDMAyMujmZG2x/4Hf4tE+xulALbSNN1d9f2omBg+Qudwm8 BhoZw4ah46giDh84q4f7Yinu5qsxynyB2qLXcZa+g1vSFvR5tc3mU20ENbQTWQo8 zegwbz2U3FEaedUqyFzA82A2w4ZSVAnvg3IY1UjWsBO6gsbTzjPt/v8Ir451yrjm HEGR3RmFoKwO4QfCia354wAAAAAAAOM= `patch world` H4sIAAAAAAAAAI3dO69j13nG8W3HsbcTJGDBgkF2QRAEQRDMBu/36+HtnNpQaguK INsQrJEzubjjF4g+QSp38fcI1KVybcAW4CZFAqRIkSZz5POu2eudWfP8F0Do9vMz Erk3/+PBHJ7sL3786uPXn/yk+fevP3796Y8PWTh/m33vnz/54hff/vmfvfr8i9f/ 9NO/++zT12/+qsi+++qTN3+sZd///NOff/b6J2/+vJv94Nm8+vTnb/6ikX3vl3/8 n+bZn387HFzzzeOvXh7fffMP/+Gzj3/xN59/+o+ffv7tD/SXf/wbn3z86uNPfvr6 l2/+znf2//3Hfx/7Y+V85/nxnZc/sX916XLoatDVoWtAV0DXhK4FXRu6DnRd6HrQ 9aEroRtAN4RuBN0Yugl0U+hm0M2hW0C3hG4F3Rq6DXRb6HbQ7aE7UHdn7gj3jnDv Ae49wL0T3DvBvTPcO8O9C9y7wL0r3LvCvRvcu8G9R7j3CPee4N4T27N/fniHvb/7 0uXQ1aCrQ9eAroCuCV0LujZ0Hei60PWg60NXQjeAbgjdCLoxdBPoptDNoJtDt4Bu Cd0KujV0G+i20O2g20N3oO7O3BHuHeHeA9x7gHsnuHeCe2e4d4Z7F7h3gXtXuHeF eze4d4N7j3DvEe49wb0nthe6n4u9DLocuhp0dega0BXQNaFrQdeGrgNdF7oedH3o SugG0A2hG0E3hm4C3RS6GXRz6BbQLaFbQbeGbgPdFroddHvoDtTdmTvGe9bFivv2 Ebqv3APce4B7J7h3gntnuHeGe9Z96eDeNd6rnPh1s+4rZ92XDu5Z96WDe9Z96dhe 6H5N7GXQ5dDVoKtD14CugK4JXQu6NnQd6LrQ9aDrQ1dCN4BuCN0IujF0E+im0M2g m0O3gG4J3Qq6NXQb6LbQ7aDbQ3eIXbIf1n3ljn7vq8U3//J//1Fx331+hO4r9wD3 HuDeCe6d4N4Z7p3h3gXuXeDrcfV7KQf3bvFe5cTXlXVfOeu+dHDPui8d2wvdr4u9 DLocuhp0dega0BXQNaFrQdeGrgNdF7oedH3oSugG0A2hG0E3hm4C3RS6GXRz6BbQ LaFbQbeGbgPdFroddPvYpXtO3d25VM/9nui+uUvx5dd//b//WnF/8vwI3ZcO7p3g 3gnuneHeGe5d4N4Fvh7XDDq/l9mJr4Ob30u5eK9y4uvUui8d3LPuS8f2QvcbYi+D LoeuBl0dugZ0BXRN6FrQtaHrQNeFrgddH7oSugF0Q+hG0I2hm0A3hW4G3Ry6BXRL 6FbQraHbQLeFbhe75PvuHrqDd4kuWPfNpXp0zKCDew9w7wHuneDeCe6d4d4Z7l3g 3gXuXeHe1e2lroOb21PdV+4x3quc+Lq37itn3ZeO7YXuF2Ivgy6HrgZdHboGdAV0 Teha0LWh60DXha4HXR+6EroBdEPoRtCNoZtAN4VuBt0cugV0S+hW0K2h20C3jV3y fXIH3d67VM+dS3XBuq/cEe4d/d6vf/3rf/ufn1Xc954fofvSwb0T3DvBvTPcO8O9 C9y7wNfj6vdE95W7ub3kzw/cnuq+dPFe5cT3kXVfOrYXut8Uexl0OXQ16OrQNaAr oGtC14KuDV0Hui50Pej60JXQDaAbQjeCbgzdBLopdDPo5tAtoFtCt4JuDd0Gum3s ZPeDS7zv7p1L9py6O3NHv5fo1tHvie6buy6++Wr+X4uK+9PnR+i+cie4d4J7Z7h3 hnsXt6e6r9zV74nuK3eDeze3l7pOH92e6n4z8ye+j6z70rG90P2W2Mugy6GrQVeH rgFdAV0TuhZ0beg60HWh60HXh66EbgDdELoRdGPoJtBNoZtBN4duAd0SuhV0a+g2 sUu+r22h23knum9OdV+6u3Opnvs90X1zyZ67vevXxZf//p/fr7jvPz9C95U7wb0T 3DvDvTPcu/i91M8P4PN3dXvJnx/411d0Xzq3p7qvrvtHv5dwT/Fe5cT3pXVfuND9 ttjLoMuhq0FXh64BXQFdE7oWdG3oOtB1oetB14euhG4A3RC6EXRj6CbQTaGbQTeH bgHdEroVdGvoNrGT3Q8u8T65cy71vruH7uBdogvWfeWObi/Vo6PbS/bc7d0++uij H/3hNxX3g+dH6L5yJ7h3gntnuHeGexe3l/z5gX/+RPfV63Z1e6r70sG9R7eX/PmB 21PdV/eldV+40P2O2Mugy6GrQVeHrgFdAV0TuhZ0beg60HWh60HXh66EbgDdELoR dGPoJtBNoZtBN4duAd0SuhV0a+g2sZPdD05035zqvnIH70T3zSV77vZS3Tq6vWTP M+jg3gnuneDeGe6d4d4F7l3865F4nq9uL/nzA7eXug5ubk91X7lHt6e6r+6jp3iv cuL70rovXOh+V+xl0OXQ1aCrQ9eAroCuCV0LujZ0Hei60PWg60NXQjeAbgjdCLox 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 5lT3X5zsvnBd71T3X5zsvnAl/HEH3qnuCzdyTnZfvG4T52T3zanuCzd3TnbfXGYn vo+Wsauc+L5cQbeGbgPdFroddHvoDtTdmTvCvdB94UL3lYN7ofvKwb3QfeXgXui+ cnAvdF85uBe6rxzcC91XDu6F7ivH9kL3z54luq9cHjvZ/eBE982p7itXeCe6b051 PzjRfXOq+8p1vRPdV64PXQndwDvRfeVGzqnuq9dt4pzqvrquZtDNnVPdV/fRu99n 1ru4+8q9+31x3u/e/bz997t3P8f3/e7dzwd8v3v3c4fe7w7U3Zk7wr13f1/n+927 v/8p4eDeu78ulHBw793rLuHgnnVfOrhn3ZcO7ln3pYN71n3p4J51Xzq297b79w/v ZdDlsdPdN6e6/+Jk94UrvFPdf3Gy++ZU91+c7L5wXeh60PWhK6EbQDeEbuSc7L54 3SbOye6bU90Xbu6c7L65zE58Hy1jVznxfbmCbg3dBrotdDvo9tAdqLszd4R7ofvC he4rB/dC95WDe6H7ysG90H3l4F7ovnJwL3RfObgXuq8c3AvdV47the5fPEt0X7k8 drL7wYnum1PdV67wTnRfuZZz6uv4ghNfx2dOdV+5HnR96EroBtANnVNfx6ee57Fz 6uv4lJt6J7qv3Nw51X11Hy1jVznxfbmCbg3dBrotdDvo9tAdqLszd4R74es9hbPu Swf3wu8rUQ7uhV+3Ug7uhftCObhn3ZcO7ln3pYN71n3p4J51Xzq297b79w/vZdDl sdPdF67unfjcnnDdqO4L1/ROdf/Fye4L1/FOfG6Pcj3o+tCV0A2gG3onPrdHvR5j 6CbeJa6DKXQz51LX6Ry6hXeZnfj+WMaucuL7cgXdGroNdFvodtDtoTtQd2fuCPdC 94UL3VcO7oXuKwf3QveVg3uh+8rBvdB95eBe6L5ycC90Xzm4F7qvHNsL3b96lui+ cjl0tdjJ7gcnuh+uB9F95ZrQtbwTn9OrXMc59Tm9yvWg60NXQjeAbuic+pxe5cbe JV63CXRT6GbOqe6r634Ru8qJ76MldCvo1tBtoNtCt4NuD92BujtzR7gXPldKOOu+ dHAvfP2KcnAv/P4Y5eBe+HU65eBeeF9RDu5Z96WDe9Z96eCedV86tve2+/cP72XQ 5dDVYqe7L1zDO/F9ecLPA1X3hWtB14au4534vjzK9aDrQ1dCN4BuCN3Iu8TzN4Zu At3UudR1NfMusxNfp/PYVU58fyygW0K3gm4N3Qa6LXQ76PbQHai7M3eEe6H7woXu Kwf3QveVg3uh+8rBvdB95eBe6L5ycC90Xzm4F7qvHNwL3VeO7YXu3zxLdF+5HLoa dPXYye4rV3gnvg9v+PUf0X3l2tB1oOtC14OuD10J3QC6IXQj6MbQTZxLXQdT7zI7 8XU1g24eu8qJr/sFdEvoVtCtodtAt4VuB90eugN1d+aOcC98LrVw1n3p4F74/Avl 4F74+hrl4F74fT7KwT3rvnRwz+5b6eCedV86uGfdl47tve3+/cN7GXQ5dDXo6tA1 Yqe7L1zTu0QXWtC1nZPdF64LXQ+6PnQldAPohtCNnEs9z2PoJt5lduLrYArdLHaV E1+nc+gW0C2hW0G3hm4D3Ra6HXR76A7U3Zk7wr3QfeFC95WDe6H7ysG90H3l4F7o vnJwL3RfObgXuq8c3AvdVw7uhe4rx/ZC9x89S3RfuRy6GnR16BrQFdA1Y5d8v29B 1/Yu0aMOdF3oetD1oSuhG0A3hG7kXeJ5HkM3gW4au8qJr5cZdHPoFtAtoVtBt4Zu A90Wuh10e+gO1N2ZO8I9675y1n3p4F74nE3l4J51Xzq4Z92XDu5Z96WDe9Z96eCe va9IB/es+9Kxvbfdv394L4Muh64GXR26BnQFdE3oWrHT3ReuA10Xuh50fehK6AbQ DaEbQTeOXeXEr9sEuil0M+jm0C2gW0K3gm4N3Qa6LXQ76PbQHai7M3eEe6H7woXu Kwf3QveVg3uh+8rBvdB95eBe6L5ycC90Xzm4F7qvHNwL3VeO7YXuP3mW6L5yOXQ1 6OrQNaAroGtC14KuDV0Hui50Pej60JXQDaAbQjeCbgzdBLopdDPo5tAtoFtCt4Ju Dd0Gui10O+j20B2ouzN3hHvWfeWs+9LBPeu+dHDPui8d3LPuSwf3rPvSwT3rvnRw z7ovHdyz7kvH9t52//7hvQy6HLoadHXoGtAV0DWha0HXhq4DXRe6HnR96EroBtAN oRtBN4ZuAt0Uuhl0c+gW0C2hW0G3hm4D3Ra6HXR76A7U3Zk7wr3QfeFC95WDe6H7 ysG90H3l4F7ovnJwL3RfObgXuq8c3AvdVw7uhe4rx/b+HwP4bCoKlwEAAAGXCg== `turtle world` H4sIAAAAAAAAAKWcB3hUVRbHH5CEpoiKoggSEBHBhC6CCk8koID0GggpZFIgySQz ExBEBRVFqiiKCFgQxIpiRWxjXVd0FdRlXXtd2y66lsW27Hs39380c9779nJuvg8m CTM/bznnf869M/6dFgWJ2liiIpIZTxQmIgWuQ183ORkVkarSRJn3/QQnvSgWiRR7 33ZymlVXRBNzy4tLIwnv5z5OY//n6kiV90O2kz4zWhGNed+2ddLmzVTfHeI0V3Ci neY08Z5eHJ1bVe391MtJj5cVVke8b7s6aefXvSbNaTS3LKrGkREv08/s7TQuixQW l1eVej+08v40dlrEa0sLY1ll0Qr/13H1gpZ1v6uMJAqLohXl8Urvdw2cQ+aUx8uj VVkVkTmRCu83DZ1mlYXnZ8WjWSWF/n+xkdO0rDgrWpLl/VYNoEns95/SnQb+czLU 69JikeK4YqYXVdRG/G8bHvC+vN/c7/3Znuxft4BuD/04Z3i3lk+VvOXm1q3uH9bY hzTw//b+atbQG4T3J0394g9/vL/vS/ZJZbaa1OGiV3YaMNN9bgDz3mSvuqfTeGvf W9RrYJ/1huNMD2Buc7M1i5i33z34t/ULDJgZIeO8xz1GszqDGds7/omGeYZzzwhg 3u3206y+YJ7ZsHhB+UADZlrI3O9KYnwYb23jrNrTX2tvMfc7Xb3vyY6amdg9ZfEv /RwL5h3JTpqJNUisv/S6nRs/NNz3IObtblfNxL4nItu2zk97xpAZtEdbB32jmaeC 2f2tHf1n32q4R0F5dFuyt2Y20cz4z2kv7t9zmSEzaJxb3FaaidyMP+cPNGLB3Iy9 SbYCc2Xul3NvHmoY80FzvxWvodiP+6HU+CSLmN9EGgJ9infc3vzHqiYWunRLUj89 idyMff1O24fe+MJCP2929Tjd3mA+4ifnS4ZzDxrnTclMzeoKpi+fm+6y2KMbab+R R7EReaO+b7rcMN+D9mije5peT+hT7Kgl+Q9UVxoyg8a5AVpMa1Dz/gPVsb2jLPZ9 PelmFzDv8AtSdwudvwH66bYEM9F09bdbWlrk5joXeoR9r/F2fXvzbw3XM4h5fVLP mXSppom3RbE9FjG/NtnVqfflVu9Z6inTAxb7fp2bqkvVGx56Y5+7xmKPrnV7alYn MEs++HTb1lqLGrcGT0+eAmZPT5ZaTLLIo2tQO9xM/Rj1iLlf2uTR1dA47JUb9bdo h0nMhzFXJ3UPhvrpRtu3GTtlsUl8pofM/SpoB/UhVX66jzeJpbD6vopyE7pUNeyF NZM6mOx7WP+50tXjo9pR6ZeOff0s8mgF9QzE9Kf++E8WdXM5xkn1qNJvQ5Y+ZpFH y4gF/axY52/8hRb1aCmYVN8r/Ja28yCLHuxK5Du+3NlP7/KKXAML/VyCcxH1n7P9 49HTz1ro/BUUn9ClWV4HNnLVYos8upxqMGrILG+Uu/KGWdTNxTRn1LhZR57w8fBu TS1y8zLsUVL3Dm65182/uH+XxTgvTbZNGWe5F0nDXlhhEUuXkG7iscxHrhltse+L qMYhn8q8k2FO0eEWtWMhneMyNbN0v1+MX7dgXkx7hJgqXdHFO2xfa3GOu8jV/QfV 91I/jXZNttC6C2mPsO8lfsuw7liLcS4gJup7ibpjedsi5i+gczHWM6LuQzZa1I75 yB86G0bU3UW+hc7PwzqiZ3Qj6p6hg0Vunk9nQmhesboT+NgiPudS7+WAqc7vWyx0 fg6eTrk5U521Sy3GWYt9p7ugmepcfLIFM4HzJvVgReoM+5WFLsVJ4zDOInXevMei vsfAovpepM6GUYvcrKH8AbNQneN6WmhI9VO4C4IuFaoz13cWvWI0iTzCuhao89FD FvFZBf2k/q5AnWXmWmhIJbtfylfnjhqL81FFUj+desZ8dUb4waIWz6Y+BLo0Q/Xz 8yzyaBbpO9h5qvf+zUI/y5GbFKfTVZ+8yGKcZXRuR780TfW06RZ5VOpm6nHql7m5 qv+80kLnSyg+cU+fq3rFQy1yM4IzIfLJnar6utUWeVSMXpHOXFNUD3aUxThnUn1H 7z1Z9UvrLHKzCLoJfXInqd6mnYXOFyZxHwL9nKj6kFssepsCuuvH/k9UPcOJFjGf T+uIWJqg6vsdFneqM9g97XhVi7MsdD6PYgnrOk7Vze0WuTmd3c+PVTWur8V6TiN9 Rz0ao+rRoxb5nkv6icfRqnbMt7hfmkr3Icj3UUrnTfQzLD6n0B5h/0cqTV5iMc7J 1HthPYcr/Vxlke+TqO9EPTpXad11FnOfiJpBGjJM6ZLJuSNs7hNo7oj5HKUhmy2Y 41HXk7inH6Ly3eT9jrD1HEfvG0LnB6vcvN8ij8aSHkGfXOM8CtPkMdB50tGBKuYX WvRLo+m9fMTUABWfKy36+VGsD+mnYmmDhdadRxpHfb3a9zstxjnSzdTriT3qofZo h0VPOyKpn05nma5qPU3vl4KYw+l9GZwROxnPPWyc51INxr63MR5nWI07h85H0M9m BzX3oJgfhvXEGRFfFus5FLlJezRnxKbPd2Zf5qa8ZxHCbBzAzKFxIT7ntM7Znchr acAMW88hdB+CHK39yBvmsg0W4zwb78tQjtZuW+ZNvosBM+wsM5jOWtD52vnZHvRB A6Yfn00CmGfReROxVOsvZ2vXYu4u9d7EPNxD5rxsyAyKpUGUk8ijxLv+xk8xZAat 50D0Sb9/5uR2b9s3fWK4nkFadyaNE3Up4U99d7XhOJ0A5hl0L488SgzyP4L2q2Es BTFPx/mdcjPR3M/NJYZzbxrAHIBege4G4nv9YGplse/96f6LPm/jD3PZzRbreRrl JjGr/Nw8xXDuQbHUj939xgf4ubnDUJeCYulU6j+Q9/F0PzeHGM49KN/74lxE78/E fGTOaxZz70N3v4j52EY/N6cbxmdQLPV2M/U4wY6V+bn5uUXM93JT4zPWx8/NhOHc g+KzJ+UkNDlWfy3+zzibBTB7YM7Ue9fs8oN+uWEsBa1nd6wnnRVq1vq5eYxF7chm 582aIj83N1vUuCyqHehDa/xd39nDcJxB+055jS+3+mcf+rhhHgXlZjfqP6BP1c/7 iXSO4dyD6mZXOhch36tX+7n5hkXMn0x5jsdqFfIFhrEUFPNd0NPQ+bi6i5+bX1vk +0mUR/TZGD+UNu2z0PnOxMQ4owv9hwxDZlCveCLdI6Ovi6r+s51FvneCzuPLrVK9 Yh8LnT+Beq9MMFVfN8KiX+pIeU6fY1E9WJEhM2juHZKYM+6XKlW/NM8iNzOxN7Se laq3ucow5oPm3t5N/SxHhepDtlr0NsdTbiKWKlTP8KTFeraj+zrMfbaq729a9PNt 0S9RfZ9dZprvYet5HJ2LoPOz1UMjQ2bQ3NtQP49xzlI1ro0hs3kA81h6bw993SxV j3oaMoN06RiaM/a/3Lh2hNW41nRHjfgsVzqfb9HPH01nA2hJ2fc+dI7h3IN06Sh6 /wjsMn85s1dY7HsrqsGZYHa07UOOpM8W4uxVqtrPxwyZQbp0BNVN9HWlY/3c3GOx nofT50OwBiWqbn5hUY9aUs9Nn+FZWPcoP8scRp8hx5mmpHXdRYO8Z2iR1E+n/Y+o upltEUuH0ufBcEaIqGHmWPQMh+D9A7obKH7X9HwUdu/dnPYdWles6mbc4hzXDPpJ Z4RiVTeXWvRgTdHHU3zOVHXzFos+uQn1iDhzzTQ+a4f1yY3xdKpLRWrbX7U4H2VQ r5gJpqqbn1nUjnR6DwUaUuhfBR34zaJfSmOfkShca3pvE6Yhjeg9FPoMj6qb3Sx6 2oaoHRSfBapuDjbco6BxNsB9TdIBU9XNqRb5Tudhmnu+0uQP5LnpHKD3TImp9PMw wz0KGKfzX8yZ3oucobRuoFyXnN+SqXeqeUqXKuV10/mVzpmoHdM3md7Ph/Sfzi+0 npmaOU3l+y7DcQb0is7PmDP1NrkqN3+2WM+fqHagFueqPDrZYj1//4w7fp6adzB3 6UHjbOimfkZ3iirFV8jPHU4a3aVC6yarHuxhw/UMYmaQFqOvn6Ry81P5nb/ThPoP 1I5JrU31M6R2OM2oT8K6TlS5ebbhegbF5yGIT9LPCSo3Y/L7T6cF9bToQ8YfVH0P iqWWtEdYg3HGd9Qh52LnCFpPnGXGqtw8YMFsxcY5Nvtg+s+g9TyazkfIozEqN/Pk 9d05hpjI+9GtTe9+04J7b6cN9cn6Ze55KpZq5X2d05Y+n4x8GrHb9HwUNs7j8XT6 DM9wtUfdLXQ+k+olYv6cZab38yF3QU5HqhnQuqHG57iQM5fTiXpv9HU5SkOGGjKD 5t6ZPkeNc/HZKt9vtagdXdzUz4MNrr++Ap3vis9y0F65xnkUFp+n4O6P1vNM45gP uVN1sl39dDprDzio+Aza9x70/4Ajpk41jqWwWtyL9BPx2dt63/uwO6seB7VHQcxT WV/X1Xg9M0Ji/jSqwdDPE4znHnJf5wyg+0TsexvjcYbl5hkU62A3M2aG7ftA6hUy nXpfhuMMYg5yUr7IM2dcMvWf/shk6/gHpsuZ2jNnDPsnU+ZZjAnPnBELpczBnKk9 c4aKmWdzpvbMOUvMHMKZ2jOnP0caMnNSX0aeOdmp/2LMHMqY8MxpJWYO40ztmVPw gZR5Dmdqz5x8V8o8lzO1Z870pJQ5nDFTPHMEzBGcqT1zJovHOZIztWfORPE4z+NM 7Zkj16VRnKk9c+S6NJox4Zkj16UxnKk9c+S6NJYztWeOXJfGcab2zJHr0njO1J45 cl2awJjwzJHr0kTO1J45cl2axJnaM0euS5M5U3vmyHVpCmfW98wRMKcyJjxz5LqU y5naM0euS9M4U3vmyHVpOmdqzxy5LuUxJjxz5Lo0gzO1Z45cl/I5U3vmyHWpgDHh mSPXpULO1J45cl0qYkx45sh1aSZnas8cuS4Vc6b2zJHrUoQx4Zkj16USzqzvmSNg ljImPHPkulTGmdozR65L5YwJzxy5Ls3iTO2ZI9el2ZypPXPkulTBmPDMketSJWdq zxy5LlUxJjxz5LoU5UztmSPXpWrGhGeOXJdqOFN75sh1KcaZ2jNHrktxxoRnjlyX EpxZ3zNHwKxlTHjmyHVpTurLyDNHrktzOVN75sh16XzGhGeOXJfmcab2zJHr0nzG hGeOXJcu4EztmSPXpQWMCc8cuS5dyJnaM0euSxdzpvbMkevSIsaEZ45cly7lTO2Z I9elxYwJzxy5Ll3BmfU9cwTMKxkTnjlyXVrGmdozR65LKxgTnjlyXVrFmPDMkevS asaEZ45cl65hTHjmyHXpWsaEZ45cl9ZypvbMkevSOsaEZ45cl9YzJjxz5Lq0kTHh mSPXpZsYE545cl26hTHhmSPXpVs5s75njoC5hTHhmSPXpa2MCc8cuS7dwZjwzJHr 0l2MCc8cuS7dw5jwzJHr0r2MCc8cuS5tZ0x45sh16QHGhGeOXJceYkx45sh16RHG hGeOXJceZUx45sh1qQFjwjNHrkuNGBOeOXJdSmfMFM8cAbNx6svIM0euS00ZE545 cl1qzpjwzJHr0qGMCc8cuS4dxpjwzJHr0uGMCc8cuS4dyZjwzJHr0lGMCc8cuS61 Zkx45sh16VjGhGeOXJeOC3hlHVuuS+0YC545cl1qz5naM0euSx0YE545cl06gTO1 Z45cl07kTO2ZI9elkzhTe+bIdelkztSeOXJd6saY8MyR61IWZ2rPHLkudedM7Zkj 16WeqS8jzxy5LvXmzPqeOQJm39SXkWeOXJf6pb6MPHPkusRWjTxz5Lp0Omfq/49P rktncqb2zJHr0kWMCc8cuS4t5EztmSPXpUs4U3vmyHXpMs7UnjlyXbqcM/WjXJeW MCY8c+S6tJQztWeOXJeWc6b2zJHr0krOrO+ZI2BexZjwzJHr0tWcqX0P5Lq0JvVl 5Jkj16XrOFN75sh16XrO1J45cl26gTHhmSPXpQ2cudB/yLDQpRs5U3vmyHXpZsaE Z45clzZxpvbMkevSZsaEZ45cl27jTO2ZI9el2zlTe+bIdelOxkzxzBEw7+ZM7Zkj 16VtjAnPHLku3ceZ2jNHrkv3c6Z6aGShSw8yJjxz5Lr0MGdqzxy5Lu1gTHjmyHVp J2dqzxy5Lj3GmPDMkevS45ypPXPkuvQEZ2rPHLkuPcmY8MyR69JTnKk9c+S6lGTM FM8cAfNpzqybs4UuPcOZ2jNHrkvPMiY8c+S69Bxnas8cuS49z5jwzJHr0gucqT1z 5Lr0J87UnjlyXXqRMeGZI9elP3OmPmvLdeklxoRnjlyXdnGm9syR69LLjAnPHLku vcKZ2jNHrkt/4cz6njkC5quMCc8cuS69xpnaM0euS7sZE545cl3aw5naM0euS68z Jjxz5Lr0BmPCM0euS28yJjxz5Lr0V8aEZ45cl/YyJjxz5Lr0N87UnjlyXXqLMeGZ I9elvzMmPHPkuvQ2Y8IzR65L7zBmimeOgPkuZ7a2vfd+jzHhmSPXpfcZE545cl1i gyHPHLkufciY8MyR69JHjAnPHLkufcyZ2jNHrkufMCY8c+S69CljwjNHrkufMSY8 c+S69A/GhGeOXJc+Z0x45sh16QvGhGeOXJe+ZMyh1ue4rxgTnjlyXfqaMeGZI9el fzImPHPkuvQvxoRnjlyX9jEmPHPkuvRN6svIM0euS98yJjxz5Lr0b8aEZ45cl75j THjmyHXpe8aEZ45cl35gTHjmyHXpR8ZsY61L/2FMeObIdWl/wCvr2EJd+h8SeHOZ uI8AAAAAj7g=