Fork: Archimedean Spiral v005

Fork: Archimedean Spiral v005

Log in to post a comment.

// Forked from "Fork: Archimedean Spiral" by rupertxrussell
// https://turtletoy.net/turtle/4355b2cb94

// Forked from "Archimedean Spiral" by Samolevsky
// https://turtletoy.net/turtle/2903b6cc46

// You can find the Turtle API reference here: https://turtletoy.net/syntax


// String input type. Created by Reinder Nijhoff 2024 - @reindernijhoff
// The MIT License
//
// https://turtletoy.net/turtle/0f84fd3ae4
//
// Turtletoy supports an extra adjustable variable type 'string' by adding 'type=string' in a comment
// behind the variable declaration.
//
// To showcase this additional type, I created a turtle that renders the text from the variable 'message' using
// different fonts that I converted from the SVG fonts of https://gitlab.com/oskay/svg-fonts
//
// The classic Hershey fonts included are derived from work by Dr. A. V. Hershey.
// Additional modern "EMS" fonts in this distribution are derivatives created from fonts licensed under the
// SIL Open Font License.
//
// Note!! To keep the download-size and compile-time of this turtle low, I only included the ASCII characters in
// this data set. If you want to use other characters, you can find the full converted font data here:
//
// https://turtletoy.net/turtle/385ab47af7
//
// Please only include the font-data of the specific font you want to use in your turtle. This will keep the
// download-size and compile-time of your turtle low.
//


// I plan to refine the positions of each spiral and I will use this numbers to assist
// the process.  
const textSize = 0; /// min=0 max=1 step=1 Size factor of the spiral


const fonts = {
    HersheySerifBold: {"name":"HersheySerifBold","unitsPerEm":1000,"ascent":800,"descent":-200,"capHeight":500,"xHeight":300,"glyphs":"IADEDgDAIQCEDRQKJObeCGTn3gja6RQKsvMAQBQKJOYUCmj3VAto9wBAFAok5lQLJOZUC2j3AEBUCyTmigxk54oM2ulUC7LzAEAUCk\/83giK\/d4Ixf4UCgAAVAsAAIoMxf6KDIr9VAtP\/BQKT\/wAQBQKiv0UCsX+VAvF\/lQLiv0UCor9AEAAwCIAJhZiByTmLAZk5ywGxu4AQGIHZOcsBsbuAEBiByTmmAhk5ywGxu4AQHASJOY6EWTnOhHG7gBAcBJk5zoRxu4AQHASJOawE2TnOhHG7gBAAMAjANwZxA444SwGmAgAQCYWOOGEDZgIAEAsBjzxXBc88QBA7ASe+CYWnvgAQADAJACcGBgLOOEYC+wEAEAEEDjhBBDsBABA8BRQ7PAUEOuwExDrsBOQ7SYWkO0mFhDr8BSk6LATZOcEECTmGAsk5mIHZOfsBNrp7ASQ7SwG\/O\/YCXzyOhHo9LATKPbwFJ748BRP\/LATxf4AQCwGkO1iB\/zv2Ak88ToRsvOwE+j08BRo9wBAYgdk5ywG2uksBlDsYgfG7tgJ\/O86EXzy8BTo9CYWaPcmFhT78BSK\/bATxf4EEAAAGAsAAGIHxf4sBor97AQU++wEnvhiB574YgcU+ywGFPssBtT5AEAAwCUAiB0SGyTm7AQAAABAGAsk5oQNpOiEDRDrTgyQ7dgJxu5iB8bu7ARQ7OwE2uksBmTnmAgk5hgLJOaEDWTnOhGk6PAUpOicGGTnEhsk5gBAJhZo97ATnvhwEhT7cBKK\/fAUAABcFwAA3BnF\/hIbT\/wSG9T5nBho9yYWaPcAQADAJgD+H0gcPPFIHPzvEhv87xIbfPKIHXzyiB3870gcxu4SG8bu3Bn875wYfPImFp74sBNP\/DoRxf7EDgAA2AkAAGIHxf4sBk\/8LAae+GIHKPbEDjzxOhHG7nASUOxwEtrpOhFk58QOJOZODGTnGAva6RgLkO1ODDzxxA7o9LATFPtcF8X+3BkAAEgcAACIHYr9iB1P\/ABAmAjF\/mIHT\/xiB574mAgo9tgJ6PQAQDoRxu5wEtrpAEBwElDsOhFk5wBATgxk5xgLUOwAQE4M\/O\/EDrLzsBPU+VwXiv3cGcX+AEBODAAA2AnF\/pgIT\/yYCJ742Ako9sQOPPEAQBgL2ulODMbuBBCy8\/AU1PmcGIr9EhvF\/kgcxf6IHYr9AEAAwCcAGAtiByTmLAZk5ywGxu4AQGIHZOcsBsbuAEBiByTmmAhk5ywGxu4AQADAKAA6EYQNOOEYC7jjmAhk5ywGUOzsBHzy7ARo9ywGiv2YCHYCGAssBoQNmAgAQJgIpOhiB1DsLAY88SwGnvhiB4r9mAg7AQBAGAu449gJJOaYCNrpYgc88WIHnviYCAAA2AmxAxgLLAYAQADAKQA6ESwGOOGYCLjjGAtk54QNUOzEDnzyxA5o94QNiv0YC3YCmAgsBiwGmAgAQBgLpOhODFDshA088YQNnvhODIr9GAs7AQBAmAi449gJJOYYC9rpTgw88U4MnvgYCwAA2AmxA5gILAYAQADAKgCwExgLJObYCWTnTgyy8xgL6PQAQBgLJOYYC+j0AEAYCyTmTgxk59gJsvMYC+j0AEDsBNrpLAba6QQQPPE6ETzxAEDsBNrpOhE88QBA7ATa6ewEEOs6EfzvOhE88QBAOhHa6QQQ2uksBjzx7AQ88QBAOhHa6ewEPPEAQDoR2uk6ERDr7AT87+wEPPEAQADAKwDIHgQQ2ukEEMX+OhHF\/gBABBDa6ToR2uk6EcX+AEAsBrLzEhuy8xIb6PQAQCwGsvMsBuj0Ehvo9ABAAMAsAIQN2AnF\/pgIAABiBwAALAbF\/iwGiv1iB0\/8mAhP\/NgJiv3YCTsBmAixAywG7AQAQGIHiv1iB8X+mAjF\/pgIiv1iB4r9AECYCAAA2Ak7AQBA2AnF\/pgIsQMAQADALQD+HywG6PRIHOj0AEAAwC4AhA1iB0\/8LAaK\/SwGxf5iBwAAmAgAANgJxf7YCYr9mAhP\/GIHT\/wAQGIHiv1iB8X+mAjF\/pgIiv1iB4r9AEAAwC8ASBzcGTjhsQOYCOwEmAgAQNwZOOESGzjh7ASYCABAAMAwAJwYTgwk5pgIZOcsBhDr7AQ88ewE6PQsBhT7mAjF\/k4MAADEDgAAcBLF\/vAUFPsmFuj0JhY88fAUEOtwEmTnxA4k5k4MJOYAQJgIpOhiBxDrLAb87ywGKPZiBxT7mAiK\/QBAcBKK\/bATFPvwFCj28BT877ATEOtwEqToAEBODCTm2Alk55gI2uliB\/zvYgco9pgIT\/zYCcX+TgwAAABAxA4AADoRxf5wEk\/8sBMo9rAT\/O9wEtrpOhFk58QOJOYAQADAMQCcGE4MpOhODAAAAECEDaTohA3F\/gBAxA4k5sQOAAAAQMQOJOYYC9rpmAgQ6wBAYgcAALATAAAAQE4Mxf7YCQAAAEBODIr9GAsAAABAxA6K\/QQQAAAAQMQOxf46EQAAAEAAwDIAnBgsBhDrLAZQ7GIHUOxiBxDrLAYQ6wBALAba6WIH2umYCBDrmAhQ7GIHkO0sBpDt7ARQ7OwEEOssBqToYgdk5xgLJOYEECTmsBNk5\/AUpOgmFhDrJhaQ7fAU\/O86EXzyGAvo9JgIKPYsBp747ARP\/OwEAAAAQLATpOjwFBDr8BSQ7bAT\/O8AQAQQJOZwEmTnsBMQ67ATkO1wEvzvBBB88hgL6PQAQOwEiv0sBk\/8mAhP\/MQOiv2wE4r9JhZP\/ABAmAhP\/MQOxf6wE8X+8BSK\/QBAmAhP\/MQOAACwEwAA8BTF\/iYWT\/wmFtT5AEAAwDMAnBgsBhDrLAZQ7GIHUOxiBxDrLAYQ6wBALAba6WIH2umYCBDrmAhQ7GIHkO0sBpDt7ARQ7OwEEOssBqToYgdk5xgLJOYEECTmsBNk5\/AU2unwFJDtsBP87wQQPPEAQHASZOewE9rpsBOQ7XAS\/O8AQMQOJOY6EWTncBLa6XASkO06EfzvxA488QBATgw88QQQPPFwEnzy8BTo9CYWaPcmFhT78BSK\/bATxf4EEAAAGAsAAGIHxf4sBor97AQU++wE1PksBp74Ygee+JgI1PmYCBT7YgdP\/CwGT\/wAQLAT6PTwFGj38BQU+7ATiv0AQMQOPPE6EXzycBKy87ATaPewExT7cBLF\/gQQAAAAQCwG1PksBhT7YgcU+2IH1PksBtT5AEAAwDQAnBjEDtrpxA4AAABABBCk6AQQxf4AQDoRJOY6EQAAAEA6ESTmsQOe+FwXnvgAQBgLAADwFAAAAEDEDsX+TgwAAABAxA6K\/YQNAAAAQDoRiv1wEgAAAEA6EcX+sBMAAABAAMA1AJwYYgck5uwEfPJiB\/zvGAvG7sQOxu5wEvzv8BR88iYWKPYmFp748BRP\/HASxf7EDgAAGAsAAGIHxf4sBor97AQU++wE1PksBp74Ygee+JgI1PmYCBT7YgdP\/CwGT\/wAQLATfPLwFOj08BTU+bATT\/wAQMQOxu46EfzvcBI88bAT6PSwE9T5cBKK\/ToRxf7EDgAAAEAsBtT5LAYU+2IHFPtiB9T5LAbU+QBAYgck5rATJOYAQGIHZOc6EWTnAEBiB6ToTgyk6DoRZOewEyTmAEAAwDYAnBhwEtrpcBIQ67ATEOuwE9rpcBLa6QBAsBOk6HASpOg6EdrpOhEQ63ASUOywE1Ds8BQQ6\/AU2umwE2TnOhEk5oQNJObYCWTnYgfa6SwGUOzsBDzx7ASe+CwGT\/yYCMX+TgwAAMQOAABwEsX+8BRP\/CYWnvgmFmj38BSy83ASPPHEDvzvTgz879gJPPGYCHzyYgfo9ABAmAja6WIHUOwsBjzxLAae+GIHT\/yYCIr9AECwE0\/88BTU+fAUKPawE7LzAECEDSTmGAtk59gJpOiYCBDrYgf872IHnviYCE\/82AnF\/k4MAAAAQMQOAAA6EcX+cBKK\/bAT1PmwEyj2cBJ88joRPPHEDvzvAEAAwDcAnBjsBCTm7ASQ7QBAJhYk5iYW2unwFJDtBBCy88QOKPaEDRT7hA0AAABAxA7o9IQNaPdODBT7TgwAAABA8BSQ7cQOsvNODGj3GAsU+xgLAACEDQAAAEDsBBDrLAak6JgIJOYYCyTmOhHa6bAT2unwFKToJhYk5gBAYgek6JgIZOcYC2TnhA2k6ABA7AQQ6ywG2umYCKToGAuk6DoR2ukAQADAOACcGBgLJOZiB2TnLAba6SwGkO1iB\/zvGAs88QQQPPGwE\/zv8BSQ7fAU2umwE2TnBBAk5hgLJOYAQJgIZOdiB9rpYgeQ7ZgI\/O8AQHAS\/O+wE5DtsBPa6XASZOcAQBgLJObYCWTnmAja6ZgIkO3YCfzvGAs88QBABBA88ToR\/O9wEpDtcBLa6ToRZOcEECTmAEAYCzzxYgd88iwGsvPsBCj27AQU+ywGiv1iB8X+GAsAAAQQAACwE8X+8BSK\/SYWFPsmFij28BSy87ATfPIEEDzxAEBiB7LzLAYo9iwGFPtiB4r9AECwE4r98BQU+\/AUKPawE7LzAEAYCzzxmAh88mIHKPZiBxT7mAjF\/hgLAAAAQAQQAABwEsX+sBMU+7ATKPZwEnzyBBA88QBAAMA5AJwYYgcU+2IHT\/yYCE\/8mAgU+2IHFPsAQLATPPFwErLzOhHo9MQOKPZODCj2mAjo9CwGfPLsBMbu7ASQ7SwG2umYCGTnTgwk5sQOJOZwEmTn8BTa6SYWkO0mFuj08BTU+bATT\/w6EcX+hA0AANgJAABiB8X+LAZP\/CwGFPtiB9T5mAjU+dgJFPvYCU\/8mAiK\/WIHiv0AQGIHfPIsBvzvLAZQ7GIH2ukAQHASpOiwE9rp8BSQ7fAU6PSwE9T5cBJP\/ABATgwo9tgJ6PSYCLLzYgf872IHUOyYCKTo2Alk504MJOYAQMQOJOY6EWTncBLa6bATkO2wEyj2cBIU+zoRiv0EEMX+hA0AAABAAMA6AIQNYgfG7iwG\/O8sBjzxYgd88pgIfPLYCTzx2An875gIxu5iB8buAEBiB\/zvYgc88ZgIPPGYCPzvYgf87wBAYgdP\/CwGiv0sBsX+YgcAAJgIAADYCcX+2AmK\/ZgIT\/xiB0\/8AEBiB4r9YgfF\/pgIxf6YCIr9YgeK\/QBAAMA7AIQNYgfG7iwG\/O8sBjzxYgd88pgIfPLYCTzx2An875gIxu5iB8buAEBiB\/zvYgc88ZgIPPGYCPzvYgf87wBA2AnF\/pgIAABiBwAALAbF\/iwGiv1iB0\/8mAhP\/NgJiv3YCTsBmAixAywG7AQAQGIHiv1iB8X+mAjF\/pgIiv1iB4r9AECYCAAA2Ak7AQBA2AnF\/pgIsQMAQADAPACIHdwZ2uksBuj03BkAAABAAMA9AMgeLAbG7hIbxu4SG\/zvAEAsBsbuLAb87xIb\/O8AQCwGnvgSG574EhvU+QBALAae+CwG1PkSG9T5AEAAwD4AiB0sBtrp3Bno9CwGAAAAQADAPwBcFywGUOwsBhDrYgcQ62IHkO3sBJDt7AQQ6ywGpOhiB2Tn2Akk5sQOJOZwEmTnsBOk6PAUEOvwFJDtsBP873ASPPGEDbLzAEBwEqTosBPa6bATxu5wEvzvAEDEDiTmOhFk53AS2ulwEsbuOhE88QQQfPIAQE4MsvNODGj3hA1o94QNsvNODLLzAEBODE\/8GAuK\/RgLxf5ODAAAhA0AAMQOxf7EDor9hA1P\/E4MT\/wAQE4Miv1ODMX+hA3F\/oQNiv1ODIr9AEAAwEAANCFcF\/zvJhaQ7bATUOwEEFDshA2Q7U4Mxu4YC3zyGAso9k4MnvjEDtT5cBLU+fAUnvgmFij2AEAEEFDshA3G7k4MfPJODCj2hA2e+MQO1PkAQFwXUOwmFij2Jhae+JwY1PkSG9T5iB1o98gesvPIHjzxiB2Q7UgcEOvcGaToXBdk57ATJOYEECTmTgxk59gJpOhiBxDrLAaQ7ewEPPHsBOj0LAae+GIHFPvYCYr9TgzF\/gQQAACwEwAAXBfF\/twZiv0SG0\/8AECcGFDsXBco9lwXnvicGNT5AEAAwEEAnBiEDSTm7ATF\/gBATgza6bATAAAAQIQN2unwFAAAAECEDSTmJhYAAABAYgee+HASnvgAQHYCAADYCQAAAEAEEAAAnBgAAABA7ATF\/rEDAAAAQOwExf5iBwAAAECwE8X+OhEAAABAsBOK\/XASAAAAQPAUiv1cFwAAAEAAwEIAEhtiByTmYgcAAABAmAhk55gIxf4AQNgJJObYCQAAAECxAyTmcBIk5iYWZOdcF6TonBgQ65wYkO1cF\/zvJhY88XASfPIAQCYWpOhcFxDrXBeQ7SYW\/O8AQHASJObwFGTnJhba6SYWxu7wFDzxcBJ88gBA2Al88nASfPImFrLzXBfo9JwYaPecGBT7XBeK\/SYWxf5wEgAAsQMAAABAJhbo9FwXaPdcFxT7JhaK\/QBAcBJ88vAUsvMmFij2JhZP\/PAUxf5wEgAAAEDsBCTmYgdk5wBALAYk5mIHpOgAQBgLJObYCaToAEBODCTm2Alk5wBAYgfF\/uwEAAAAQGIHiv0sBgAAAEDYCYr9GAsAAABA2AnF\/k4MAAAAQADAQwDcGSYW2ulcFyTmXBeQ7SYW2umwE2TnOhEk5oQNJObYCWTnYgfa6SwGUOzsBPzv7AQo9iwG1PliB0\/82AnF\/oQNAAA6EQAAsBPF\/iYWT\/xcF9T5AECYCNrpYgdQ7CwG\/O8sBij2YgfU+ZgIT\/wAQIQNJOYYC2TnmAgQ62IH\/O9iByj2mAgU+xgLxf6EDQAAAEAAwEQAEhtiByTmYgcAAABAmAhk55gIxf4AQNgJJObYCQAAAECxAyTmBBAk5rATZOcmFtrpXBdQ7JwY\/O+cGCj2XBfU+SYWT\/ywE8X+BBAAALEDAAAAQPAU2ukmFlDsXBf871wXKPYmFtT58BRP\/ABABBAk5nASZOfwFBDrJhb87yYWKPbwFBT7cBLF\/gQQAAAAQOwEJOZiB2TnAEAsBiTmYgek6ABAGAsk5tgJpOgAQE4MJObYCWTnAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABAAMBFANwZYgck5mIHAAAAQJgIZOeYCMX+AEDYCSTm2AkAAABAsQMk5lwXJOZcF5DtAEDYCXzyOhF88gBAOhGQ7ToRaPcAQLEDAABcFwAAXBee+ABA7AQk5mIHZOcAQCwGJOZiB6ToAEAYCyTm2Amk6ABATgwk5tgJZOcAQDoRJOZcF2TnAECwEyTmXBek6ABA8BQk5lwX2ukAQCYWJOZcF5DtAEA6EZDtBBB88joRaPcAQDoR\/O\/EDnzyOhHo9ABAOhE88U4MfPI6EbLzAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABAOhEAAFwXxf4AQLATAABcF4r9AEDwFAAAXBdP\/ABAJhYAAFwXnvgAQADARgCcGGIHJOZiBwAAAECYCGTnmAjF\/gBA2Akk5tgJAAAAQLEDJOZcFyTmXBeQ7QBA2Al88joRfPIAQDoRkO06EWj3AECxAwAAhA0AAABA7AQk5mIHZOcAQCwGJOZiB6ToAEAYCyTm2Amk6ABATgwk5tgJZOcAQDoRJOZcF2TnAECwEyTmXBek6ABA8BQk5lwX2ukAQCYWJOZcF5DtAEA6EZDtBBB88joRaPcAQDoR\/O\/EDnzyOhHo9ABAOhE88U4MfPI6EbLzAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABAAMBHAEgcJhba6VwXJOZcF5DtJhba6bATZOc6ESTmhA0k5tgJZOdiB9rpLAZQ7OwE\/O\/sBCj2LAbU+WIHT\/zYCcX+hA0AADoRAACwE8X+JhbF\/lwXAABcFyj2AECYCNrpYgdQ7CwG\/O8sBij2YgfU+ZgIT\/wAQIQNJOYYC2TnmAgQ62IH\/O9iByj2mAgU+xgLxf6EDQAAAEAmFmj3JhaK\/QBA8BQo9vAUiv2wE8X+AEA6ESj2Ehso9gBAcBIo9vAUaPcAQLATKPbwFJ74AECcGCj2XBee+ABA3Bko9lwXaPcAQADASACIHWIHJOZiBwAAAECYCGTnmAjF\/gBA2Akk5tgJAAAAQCYWJOYmFgAAAEBcF2TnXBfF\/gBAnBgk5pwYAAAAQLEDJOaEDSTmAEBwEiTmSBwk5gBA2Al88iYWfPIAQLEDAACEDQAAAEBwEgAASBwAAABA7AQk5mIHZOcAQCwGJOZiB6ToAEAYCyTm2Amk6ABATgwk5tgJZOcAQLATJOYmFmTnAEDwFCTmJhak6ABA3Bkk5pwYpOgAQBIbJOacGGTnAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABAJhbF\/rATAAAAQCYWiv3wFAAAAECcGIr93BkAAABAnBjF\/hIbAAAAQADASQDEDmIHJOZiBwAAAECYCGTnmAjF\/gBA2Akk5tgJAAAAQLEDJOaEDSTmAECxAwAAhA0AAABA7AQk5mIHZOcAQCwGJOZiB6ToAEAYCyTm2Amk6ABATgwk5tgJZOcAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEAAwEoAsBNODCTmTgwU+xgLxf7YCQAAAECEDWTnhA0U+04Mxf4AQMQOJObEDhT7hA3F\/tgJAABiBwAA7ATF\/rEDT\/yxA9T57ASe+CwGnvhiB9T5YgcU+ywGT\/zsBE\/8AEDsBNT57AQU+ywGFPssBtT57ATU+QBAmAgk5nASJOYAQNgJJOZODGTnAEAYCyTmTgyk6ABABBAk5sQOpOgAQDoRJObEDmTnAEAAwEsAEhtiByTmYgcAAABAmAhk55gIxf4AQNgJJObYCQAAAEBcF2Tn2Ano9ABAhA188iYWAAAAQMQOfPJcFwAAAEDEDvzvnBgAAABAsQMk5oQNJOYAQLATJOYSGyTmAECxAwAAhA0AAABAcBIAABIbAAAAQOwEJOZiB2TnAEAsBiTmYgek6ABAGAsk5tgJpOgAQE4MJObYCWTnAEAmFiTmXBdk5wBA3Bkk5lwXZOcAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEAmFor9sBMAAABAJhaK\/dwZAAAAQADATAAmFmIHJOZiBwAAAECYCGTnmAjF\/gBA2Akk5tgJAAAAQLEDJOaEDSTmAECxAwAAJhYAACYWnvgAQOwEJOZiB2TnAEAsBiTmYgek6ABAGAsk5tgJpOgAQE4MJObYCWTnAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABABBAAACYWxf4AQHASAAAmFor9AECwEwAAJhZP\/ABA8BQAACYWnvgAQADATQD+H2IHJOZiB8X+AEBiByTmBBAAAABAmAgk5gQQT\/wAQNgJJOY6EU\/8AECcGCTmBBAAAABAnBgk5pwYAAAAQNwZZOfcGcX+AEASGyTmEhsAAABAsQMk5tgJJOYAQJwYJObIHiTmAECxAwAAGAsAAABA8BQAAMgeAAAAQOwEJOZiB2TnAEBIHCTmEhuk6ABAiB0k5hIbZOcAQGIHxf7sBAAAAEBiB8X+2AkAAABAnBjF\/iYWAAAAQJwYiv1cFwAAAEASG4r9SBwAAABAEhvF\/ogdAAAAQADATgCIHWIHJOZiB8X+AEBiByTmnBgAAABAmAgk5lwXT\/wAQNgJJOacGE\/8AECcGGTnnBgAAABAsQMk5tgJJOYAQPAUJOZIHCTmAECxAwAAGAsAAABA7AQk5mIHZOcAQCYWJOacGGTnAEASGyTmnBhk5wBAYgfF\/uwEAAAAQGIHxf7YCQAAAEAAwE8AEhuEDSTm2Alk52IH2uksBlDs7AQ88ewE6PQsBtT5YgdP\/NgJxf6EDQAABBAAALATxf4mFk\/8XBfU+ZwY6PScGDzxXBdQ7CYW2umwE2TnBBAk5oQNJOYAQJgI2uliB1DsLAb87ywGKPZiB9T5mAhP\/ABA8BRP\/CYW1PlcFyj2XBf87yYWUOzwFNrpAECEDSTmGAtk55gIEOtiB\/zvYgco9pgIFPsYC8X+hA0AAABABBAAAHASxf7wFBT7JhYo9iYW\/O\/wFBDrcBJk5wQQJOYAQADAUAASG2IHJOZiBwAAAECYCGTnmAjF\/gBA2Akk5tgJAAAAQLEDJOZwEiTmJhZk51wXpOicGBDrnBjG7lwXPPEmFnzycBKy89gJsvMAQCYWpOhcFxDrXBfG7iYWPPEAQHASJObwFGTnJhba6SYW\/O\/wFHzycBKy8wBAsQMAAIQNAAAAQOwEJOZiB2TnAEAsBiTmYgek6ABAGAsk5tgJpOgAQE4MJObYCWTnAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABAAMBRABIbhA0k5tgJZOdiB9rpLAZQ7OwEPPHsBOj0LAbU+WIHT\/zYCcX+hA0AAAQQAACwE8X+JhZP\/FwX1PmcGOj0nBg88VwXUOwmFtrpsBNk5wQQJOaEDSTmAECYCNrpYgdQ7CwG\/O8sBij2YgfU+ZgIT\/wAQPAUT\/wmFtT5XBco9lwX\/O8mFlDs8BTa6QBAhA0k5hgLZOeYCBDrYgf872IHKPaYCBT7GAvF\/oQNAAAAQAQQAABwEsX+8BQU+yYWKPYmFvzv8BQQ63ASZOcEECTmAEDYCU\/8GAvU+YQNnvjEDp74OhHU+XAST\/ywE7ED8BQsBlwXLAacGLEDnBg7AQBAsBM7AfAUsQMmFuwEXBfsBABAcBJP\/PAUdgImFrEDXBexA5wYdgIAQADAUgASG2IHJOZiBwAAAECYCGTnmAjF\/gBA2Akk5tgJAAAAQLEDJOZwEiTmJhZk51wXpOicGBDrnBiQ7VwX\/O8mFjzxcBJ88tgJfPIAQCYWpOhcFxDrXBeQ7SYW\/O8AQHASJObwFGTnJhba6SYWxu7wFDzxcBJ88gBAxA588joRsvNwEij28BSK\/SYWAACcGAAA3BmK\/dwZFPsAQPAUFPsmFor9XBfF\/pwYxf4AQDoRsvNwEuj0JhZP\/FwXiv2cGIr93BlP\/ABAsQMAAIQNAAAAQOwEJOZiB2TnAEAsBiTmYgek6ABAGAsk5tgJpOgAQE4MJObYCWTnAEBiB8X+7AQAAABAYgeK\/SwGAAAAQNgJiv0YCwAAAEDYCcX+TgwAAABAAMBTAJwY8BTa6SYWJOYmFpDt8BTa6XASZOfEDiTmGAsk5mIHZOfsBNrp7ASQ7SwG\/O\/YCXzyOhHo9LATKPbwFJ748BRP\/LATxf4AQCwGkO1iB\/zv2Ak88ToRsvOwE+j08BRo9wBAYgdk5ywG2uksBlDsYgfG7tgJ\/O86EXzy8BTo9CYWaPcmFhT78BSK\/bATxf4EEAAATgwAAJgIxf4sBk\/87ASe+OwEAAAsBk\/8AEAAwFQAnBixAyTmsQOQ7QBATgwk5k4MAAAAQIQNZOeEDcX+AEDEDiTmxA4AAABAXBck5lwXkO0AQLEDJOZcFyTmAECYCAAAcBIAAABA7AQk5rEDkO0AQCwGJOaxA9rpAEBiByTmsQOk6ABA2Akk5rEDZOcAQDoRJOZcF2TnAECwEyTmXBek6ABA8BQk5lwX2ukAQCYWJOZcF5DtAEBODMX+2AkAAABATgyK\/RgLAAAAQMQOiv0EEAAAAEDEDsX+OhEAAABAAMBVAIgdYgck5mIHnviYCE\/8GAvF\/sQOAAA6EQAA8BTF\/lwXT\/ycGJ74nBhk5wBAmAhk55gI1PnYCU\/8AEDYCSTm2AnU+RgLiv1ODMX+xA4AAABAsQMk5oQNJOYAQPAUJOZIHCTmAEDsBCTmYgdk5wBALAYk5mIHpOgAQBgLJObYCaToAEBODCTm2Alk5wBAJhYk5pwYZOcAQBIbJOacGGTnAEAAwFYAnBjsBCTmhA0AAABALAYk5oQNT\/yEDQAAAEBiByTmxA5P\/ABAJhZk54QNAAAAQHYCJOYYCyTmAEA6ESTmnBgk5gBAsQMk5iwGpOgAQJgIJOZiB6ToAEDYCSTmYgdk5wBAsBMk5iYWZOcAQFwXJOYmFmTnAEAAwFcAiB0sBiTmGAsAAABAYgck5hgL1PkYCwAAAECYCCTmTgzU+QBABBAk5k4M1PkYCwAAAEAEECTm8BQAAABAOhEk5vAU1PnwFAAAAEBwEiTmJhbU+QBA3Blk5yYW1PnwFAAAAEB2AiTmTgwk5gBABBAk5nASJOYAQCYWJOaIHSTmAECxAyTmYgdk5wBA7AQk5mIHpOgAQNgJJOaYCKToAEAYCyTmmAhk5wBAXBck5twZZOcAQEgcJObcGWTnAEAAwFgAnBjsBCTmsBMAAABALAYk5vAUAAAAQGIHJOYmFgAAAEDwFGTnLAbF\/gBAdgIk5hgLJOYAQDoRJOacGCTmAEB2AgAA2AkAAABABBAAAJwYAAAAQLEDJOZiB6ToAECYCCTmYgek6ABA2Akk5mIHZOcAQHASJObwFGTnAEBcFyTm8BRk5wBALAbF\/rEDAAAAQCwGxf6YCAAAAECwE8X+OhEAAABAsBOK\/XASAAAAQLATiv1cFwAAAEAAwFkAEhvsBCTmhA2y84QNAAAAQCwGJObEDrLzxA7F\/gBAYgck5gQQsvMEEAAAAEBcF2TnBBCy8wBAdgIk5hgLJOYAQLATJOYSGyTmAEDYCQAAsBMAAABAsQMk5iwGZOcAQNgJJOZiB2TnAEDwFCTmXBdk5wBA3Bkk5lwXZOcAQIQNxf4YCwAAAECEDYr9TgwAAABABBCK\/ToRAAAAQAQQxf5wEgAAAEAAwFoAnBgmFiTm7AQk5uwEkO0AQLATJObsBAAAAEDwFCTmLAYAAABAJhYk5mIHAAAAQOwEAAAmFgAAJhae+ABALAYk5uwEkO0AQGIHJObsBNrpAECYCCTm7ASk6ABAGAsk5uwEZOcAQAQQAAAmFsX+AEBwEgAAJhaK\/QBAsBMAACYWT\/wAQPAUAAAmFp74AEAAwFsAOhEsBjjhLAaYCABAYgc44WIHmAgAQCwGOOHEDjjhAEAsBpgIxA6YCABAAMBcADoROwEk5nASsQMAQADAXQA6EU4MOOFODJgIAECEDTjhhA2YCABA7AQ44YQNOOEAQOwEmAiEDZgIAEAAwF4AEhvsBGj3xA488ZwYaPcAQOwEaPfEDnzynBho9wBAAMBfAJwYOwGYCNwZmAgAQADAYADEDiwGJOZODJDtAEAsBiTm7ARk504MkO0AQADAYQCcGGIHfPJiBzzxmAg88ZgIsvMsBrLzLAY88WIH\/O\/YCcbuxA7G7joR\/O9wEjzxsBOy87ATT\/zwFMX+JhYAAABAOhE88XASsvNwEk\/8sBPF\/gBAxA7G7gQQ\/O86EXzyOhFP\/HASxf4mFgAAXBcAAABAOhHo9AQQKPbYCWj3LAae+OwEFPvsBE\/8LAbF\/tgJAACEDQAABBDF\/joRT\/wAQGIHnvgsBhT7LAZP\/GIHxf4AQAQQKPYYC2j3mAie+GIHFPtiB0\/8mAjF\/tgJAAAAQADAYgDcGWIHJOZiBwAAmAjF\/hgLxf4AQJgIZOeYCIr9AECxAyTm2Akk5tgJxf4AQNgJfPIYC\/zvhA3G7gQQxu6wE\/zvJhZ88lwXKPZcF574JhZP\/LATxf4EEAAAhA0AABgLxf7YCU\/8AEDwFHzyJhbo9CYW1PnwFE\/8AEAEEMbucBL877ATPPHwFOj08BTU+bATiv1wEsX+BBAAAABA7AQk5mIHZOcAQCwGJOZiB6ToAEAAwGMAXBewE7LzsBN88nASfPJwEuj08BTo9PAUfPJwEvzvBBDG7k4Mxu6YCPzvLAZ88uwEKPbsBJ74LAZP\/JgIxf5ODAAAxA4AAHASxf7wFE\/8AEBiB3zyLAbo9CwG1PliB0\/8AEBODMbu2An875gIPPFiB+j0YgfU+ZgIiv3YCcX+TgwAAABAAMBkANwZcBIk5nASAACcGAAAAECwE2TnsBPF\/gBAxA4k5vAUJObwFAAAAEBwEnzyOhH878QOxu5ODMbumAj87ywGfPLsBCj27ASe+CwGT\/yYCMX+TgwAAMQOAAA6EcX+cBJP\/ABAYgd88iwG6PQsBtT5YgdP\/ABATgzG7tgJ\/O+YCDzxYgfo9GIH1PmYCIr92AnF\/k4MAAAAQAQQJOZwEmTnAEA6ESTmcBKk6ABA8BSK\/SYWAAAAQPAUxf5cFwAAAEAAwGUAXBdiByj28BQo9vAUsvOwEzzxcBL878QOxu5ODMbumAj87ywGfPLsBCj27ASe+CwGT\/yYCMX+TgwAAMQOAABwEsX+8BRP\/ABAsBPo9LATsvNwEjzxAEBiB3zyLAbo9CwG1PliB0\/8AEBwEij2cBJ88joR\/O\/EDsbuAEBODMbu2An875gIPPFiB+j0YgfU+ZgIiv3YCcX+TgwAAABAAMBmADoRBBCk6AQQZOfEDmTnxA7a6ToR2uk6EWTnBBAk5k4MJObYCWTnmAik6GIHUOxiBwAAAEDYCaTomAhQ7JgIxf4AQE4MJOYYC2Tn2Ana6dgJAAAAQLEDxu7EDsbuAECxAwAAhA0AAABAYgfF\/uwEAAAAQGIHiv0sBgAAAEDYCYr9GAsAAABA2AnF\/k4MAAAAQADAZwBcF7AT\/O\/wFDzxJhb87\/AUxu6wE8buOhH87wQQPPEAQBgLxu6YCPzvYgc88SwGsvMsBij2Ygee+JgI1PkYCxT7hA0U+wQQ1Pk6EZ74cBIo9nASsvM6ETzxBBD874QNxu4YC8buAECYCDzxYgey82IHKPaYCJ74AEAEEJ74OhEo9joRsvMEEDzxAEAYC8bu2An875gIfPKYCGj32AnU+RgLFPsAQIQNFPvEDtT5BBBo9wQQfPLEDvzvhA3G7gBAYgee+CwG1PnsBE\/87ASK\/SwGAABiBzsBGAt2AgQQdgKwE7ED8BTsBABAYgcAABgLOwEEEDsBsBN2AgBA7ASK\/SwGxf7YCQAABBAAALATOwHwFLED8BTsBLATYgcEEJgImAiYCOwEYgexA+wEsQOxA+wEOwGYCAAAAECYCJgILAZiB+wE7ATsBLEDLAY7AZgIAAAAQADAaABIHGIHJOZiBwAAAECYCGTnmAjF\/gBAsQMk5tgJJObYCQAAAEDYCbLzGAs88U4M\/O\/EDsbucBLG7vAU\/O8mFjzxXBfo9FwXAAAAQPAUPPEmFuj0JhbF\/gBAcBLG7rAT\/O\/wFLLz8BQAAABAsQMAAIQNAAAAQDoRAAASGwAAAEDsBCTmYgdk5wBALAYk5mIHpOgAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEDwFMX+cBIAAABA8BSK\/bATAAAAQFwXiv2cGAAAAEBcF8X+3BkAAABAAMBpAMQOYgck5mIHpOjYCaTo2Akk5mIHJOYAQJgIJOaYCKToAEBiB2Tn2Alk5wBAYgfG7mIHAAAAQJgI\/O+YCMX+AECxA8bu2AnG7tgJAAAAQLEDAACEDQAAAEDsBMbuYgf87wBALAbG7mIHPPEAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEAAwGoABBDYCSTm2Amk6E4MpOhODCTm2Akk5gBAGAsk5hgLpOgAQNgJZOdODGTnAEDYCcbu2AmxA5gIYgdiB5gIAEAYC\/zvGAt2AtgJLAYAQCwGxu5ODMbuTgx2AhgLLAbYCWIHYgeYCLEDmAh2AmIHdgLsBOwE7ATsBGIHsQNiB7EDLAYAQGIHxu7YCfzvAECYCMbu2Ak88QBAAMBrABIbYgck5mIHAAAAQJgIZOeYCMX+AECxAyTm2Akk5tgJAAAAQPAU\/O\/YCRT7AEDEDij2XBcAAABAxA5o9yYWAAAAQIQNaPfwFAAAAEA6Ecbu3BnG7gBAsQMAAIQNAAAAQDoRAADcGQAAAEDsBCTmYgdk5wBALAYk5mIHpOgAQHASxu7wFPzvAECcGMbu8BT87wBAYgfF\/uwEAAAAQGIHiv0sBgAAAEDYCYr9GAsAAABA2AnF\/k4MAAAAQPAUiv1wEgAAAECwE4r9nBgAAABAAMBsAMQOYgck5mIHAAAAQJgIZOeYCMX+AECxAyTm2Akk5tgJAAAAQLEDAACEDQAAAEDsBCTmYgdk5wBALAYk5mIHpOgAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEAAwG0A1iliB8buYgcAAABAmAj875gIxf4AQLEDxu7YCcbu2AkAAABA2Amy8xgLPPFODPzvxA7G7nASxu7wFPzvJhY88VwX6PRcFwAAAEDwFDzxJhbo9CYWxf4AQHASxu6wE\/zv8BSy8\/AUAAAAQFwXsvOcGDzx3Bn870gcxu7+H8budCL877QjPPHqJOj06iQAAABAdCI88bQj6PS0I8X+AED+H8buNCH873QisvN0IgAAAECxAwAAhA0AAABAOhEAABIbAAAAQMgeAACbKAAAAEDsBMbuYgf87wBALAbG7mIHPPEAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEDwFMX+cBIAAABA8BSK\/bATAAAAQFwXiv2cGAAAAEBcF8X+3BkAAABAdCLF\/v4fAAAAQHQiiv00IQAAAEDqJIr9ICYAAABA6iTF\/mAnAAAAQADAbgBIHGIHxu5iBwAAAECYCPzvmAjF\/gBAsQPG7tgJxu7YCQAAAEDYCbLzGAs88U4M\/O\/EDsbucBLG7vAU\/O8mFjzxXBfo9FwXAAAAQPAUPPEmFuj0JhbF\/gBAcBLG7rAT\/O\/wFLLz8BQAAABAsQMAAIQNAAAAQDoRAAASGwAAAEDsBMbuYgf87wBALAbG7mIHPPEAQGIHxf7sBAAAAEBiB4r9LAYAAABA2AmK\/RgLAAAAQNgJxf5ODAAAAEDwFMX+cBIAAABA8BSK\/bATAAAAQFwXiv2cGAAAAEBcF8X+3BkAAABAAMBvAJwYTgzG7pgI\/O8sBnzy7AQo9uwEnvgsBk\/8mAjF\/k4MAADEDgAAcBLF\/vAUT\/wmFp74JhYo9vAUfPJwEvzvxA7G7k4Mxu4AQGIHfPIsBuj0LAbU+WIHT\/wAQLATT\/zwFNT58BTo9LATfPIAQE4Mxu7YCfzvmAg88WIH6PRiB9T5mAiK\/dgJxf5ODAAAAEDEDgAAOhHF\/nASiv2wE9T5sBPo9HASPPE6EfzvxA7G7gBAAMBwANwZYgfG7mIHmAgAQJgI\/O+YCGIHAECxA8bu2AnG7tgJmAgAQNgJfPIYC\/zvhA3G7gQQxu6wE\/zvJhZ88lwXKPZcF574JhZP\/LATxf4EEAAAhA0AABgLxf7YCU\/8AEDwFHzyJhbo9CYW1PnwFE\/8AEAEEMbucBL877ATPPHwFOj08BTU+bATiv1wEsX+BBAAAABAsQOYCIQNmAgAQOwExu5iB\/zvAEAsBsbuYgc88QBAYgdiB+wEmAgAQGIHLAYsBpgIAEDYCSwGGAuYCABA2AliB04MmAgAQADAcQCcGHAS\/O9wEpgIAECwEzzxsBNiBwBAOhH877AT\/O\/wFMbu8BSYCABAcBJ88joR\/O\/EDsbuTgzG7pgI\/O8sBnzy7AQo9uwEnvgsBk\/8mAjF\/k4MAADEDgAAOhHF\/nAST\/wAQGIHfPIsBuj0LAbU+WIHT\/wAQE4Mxu7YCfzvmAg88WIH6PRiB9T5mAiK\/dgJxf5ODAAAAEDEDpgInBiYCABAcBJiBwQQmAgAQHASLAY6EZgIAEDwFCwGJhaYCABA8BRiB1wXmAgAQADAcgDwFGIHxu5iBwAAAECYCPzvmAjF\/gBAsQPG7tgJxu7YCQAAAEBwEjzxcBL87zoR\/O86EXzysBN88rAT\/O9wEsbuBBDG7oQN\/O8YC3zy2Ako9gBAsQMAAIQNAAAAQOwExu5iB\/zvAEAsBsbuYgc88QBAYgfF\/uwEAAAAQGIHiv0sBgAAAEDYCYr9GAsAAABA2AnF\/k4MAAAAQADAcwDwFDoRPPFwEsbucBKy8zoRPPEEEPzvhA3G7pgIxu4sBvzv7AQ88ewEsvMsBij2mAho98QOnvg6EdT5cBKK\/QBALAb87+wEsvMAQCwG6PSYCCj2xA5o9zoRnvgAQHAS1Pk6EcX+AEDsBDzxLAay85gI6PTEDij2OhFo93AS1PlwEor9OhHF\/sQOAADYCQAAYgfF\/iwGiv3sBBT77AQAACwGiv0AQADAdABwEmIHpOhiB9T5mAiK\/dgJxf5ODAAAxA4AADoRxf5wEk\/8AECYCKTomAgU+9gJiv0AQGIHpOjYCSTm2AkU+xgLxf5ODAAAAECxA8buxA7G7gBAAMB1AEgcYgfG7mIH1PmYCIr92AnF\/k4MAAAEEAAAcBLF\/rATiv3wFBT7AECYCPzvmAgU+9gJiv0AQLEDxu7YCcbu2AkU+xgLxf5ODAAAAEDwFMbu8BQAABIbAAAAQCYW\/O8mFsX+AEA6EcbuXBfG7lwXAAAAQOwExu5iB\/zvAEAsBsbuYgc88QBAXBeK\/ZwYAAAAQFwXxf7cGQAAAEAAwHYAJhbsBMbuTgwAAABALAbG7k4Miv0AQGIHxu6EDYr9AECwE\/zvhA2K\/U4MAAAAQHYCxu4YC8buAEDEDsbuJhbG7gBAsQPG7mIHPPEAQNgJxu5iB\/zvAEA6EcbusBP87wBA8BTG7rAT\/O8AQADAdwCIHSwGxu4YCwAAAEBiB8buGAtP\/ABAmAjG7k4MT\/wAQAQQxu5ODE\/8GAsAAABABBDG7vAUAAAAQDoRxu7wFE\/8AEAEEMbucBLG7iYWT\/wAQNwZ\/O8mFk\/88BQAAABAdgLG7k4Mxu4AQCYWxu6IHcbuAECxA8buYgf87wBAGAvG7pgI\/O8AQFwXxu7cGfzvAEBIHMbu3Bn87wBAAMB4AJwYLAbG7nASAAAAQGIHxu6wEwAAAECYCMbu8BQAAABAsBP872IHxf4AQLEDxu5ODMbuAEAEEMbuXBfG7gBAsQMAABgLAAAAQMQOAABcFwAAAEDsBMbuYgf87wBAGAvG7pgI\/O8AQDoRxu6wE\/zvAEAmFsbusBP87wBAYgfF\/uwEAAAAQGIHxf7YCQAAAEBwEsX+BBAAAABAsBPF\/iYWAAAAQADAeQBcFywGxu6EDQAAAEBiB8buhA2K\/QBAmAjG7sQOiv0AQPAU\/O\/EDor9GAvsBJgIYgcsBpgIsQOYCHYCYgd2AuwE7ATsBOwEYgexA2IHsQMsBgBAsQPG7k4Mxu4AQAQQxu5cF8buAEDsBMbumAg88QBAGAvG7pgI\/O8AQHASxu7wFPzvAEAmFsbu8BT87wBAAMB6ACYWOhHG7uwEAAAAQHASxu4sBgAAAECwE8buYgcAAABAsBPG7uwExu7sBLLzAEDsBAAAsBMAALATFPsAQCwGxu7sBLLzAEBiB8bu7AR88gBAmAjG7uwEPPEAQBgLxu7sBPzvAECEDQAAsBPF\/gBABBAAALATiv0AQDoRAACwE0\/8AEBwEgAAsBMU+wBAAMB7ADoRTgw44dgJeOKYCLjjYgck5mIHpOiYCBDr2AlQ7BgLxu4YCzzxmAiy8wBA2Al44pgI7uSYCGTn2Ana6RgLEOtODJDtTgz87xgLfPIsBuj0GAto904M1PlODE\/8GAvF\/tgJAACYCHYCmAjsBNgJYgcAQJgIKPYYC574GAsU+9gJiv2YCMX+Ygc7AWIHsQOYCCwG2AliB04MmAgAQADAfADYCSwGOOEsBpgIAEAAwH0AOhFiBzjh2Al44hgLuONODCTmTgyk6BgLEOvYCVDsmAjG7pgIPPEYC7LzAEDYCXjiGAvu5BgLZOfYCdrpmAgQ62IHkO1iB\/zvmAh88oQN6PSYCGj3YgfU+WIHT\/yYCMX+2AkAABgLdgIYC+wE2AliBwBAGAso9pgInviYCBT72AmK\/RgLxf5ODDsBTgyxAxgLLAbYCWIHYgeYCABAAMB+AIgd7ASe+OwEKPYsBnzymAg88RgLPPGEDXzycBIo9vAUaPdcF2j33Bko9hIbsvMAQOwEKPYsBrLzmAh88hgLfPKEDbLzcBJo9\/AUnvhcF5743Blo9xIbsvMSGzzxAEAAwA=="},
};


Object.entries(fonts).forEach(([key,fontData]) => {
    const turtle = new Turtle(0,0);
    Text(fontData).print(turtle,  '0', textSize);
    
    turtle.penup();
    turtle.goto(37.1, -17.1);
    turtle.pendown();
    Text(fontData).print(turtle,  '1', textSize);
    
    turtle.penup();
    turtle.goto(33.3, 24.2);
    turtle.pendown();
    Text(fontData).print(turtle,  '2', textSize);
    
    turtle.penup();
    turtle.goto(-3.8, 41.2);
    turtle.pendown();
    Text(fontData).print(turtle,  '3', textSize);
    
        turtle.penup();
    turtle.goto(-37.1, 17.1);
    turtle.pendown();
    Text(fontData).print(turtle,  '4', textSize);
    
        turtle.penup();
    turtle.goto(-33.3, -24.2);
    turtle.pendown();
    Text(fontData).print(turtle,  '5', textSize);
    
        turtle.penup();
    turtle.goto(3.8, -41.2);
    turtle.pendown();
    Text(fontData).print(turtle,  '6', textSize);
    
        turtle.penup();
    turtle.goto(7.88, -82.4);
    turtle.pendown();
    Text(fontData).print(turtle,  '7', textSize);
    
        turtle.penup();
    turtle.goto(40.5, -58.1);
    turtle.pendown();
    Text(fontData).print(turtle,  '8', textSize);
    
        turtle.penup();
    turtle.goto(73.8, -34.4);
    turtle.pendown();
    Text(fontData).print(turtle,  '9', textSize);
    
        turtle.penup();
    turtle.goto(70.0, 7.24);
    turtle.pendown();
    Text(fontData).print(turtle,  '10', textSize);
    
        turtle.penup();
    turtle.goto(66.1, 48.2);
    turtle.pendown();
    Text(fontData).print(turtle,  '11', textSize);
    
        turtle.penup();
    turtle.goto(29.0, 65.5);
    turtle.pendown();
    Text(fontData).print(turtle,  '12', textSize);
    
        turtle.penup();
    turtle.goto(-8.13, 82.2);
    turtle.pendown();
    Text(fontData).print(turtle,  '13', textSize);
    
        turtle.penup();
    turtle.goto(-40.8, 58.5);
    turtle.pendown();
    Text(fontData).print(turtle,  '14', textSize);
    
        turtle.penup();
    turtle.goto(-74.1, 34.8);
    turtle.pendown();
    Text(fontData).print(turtle,  '15', textSize);
    
    turtle.penup();
    turtle.goto(-69.6, -6.21);
    turtle.pendown();
    Text(fontData).print(turtle,  '16', textSize);
    
            turtle.penup();
    turtle.goto(-67.0, -47.8);
    turtle.pendown();
    Text(fontData).print(turtle,  '17', textSize);


    turtle.penup();
    turtle.goto(-29.3, -65.1);
    turtle.pendown();
    Text(fontData).print(turtle,  '18', textSize);
    

});




////////////////////////////////////////////////////////////////
// Text utility code. Created by Reinder Nijhoff 2024
// https://turtletoy.net/turtle/0f84fd3ae4
////////////////////////////////////////////////////////////////

function Text(fontData) {
    const decode = (data) => {
        const b = atob(data), a = new Int16Array(b.length / 2), g = {};
        for (let i = 0; i < b.length; i+=2) {
            a[i / 2 | 0] = b.charCodeAt(i) | (b.charCodeAt(i + 1) << 8);
        }
        for (let i = 0;i < a.length; i++) {
            let u = String.fromCharCode(a[i++]), x = a[i++], d = [], p = [];
            for (;a[i] !== -16384; i++) a[i] === 16384 ? (d.push(p), p = []) : p.push(a[i]);
            g[u] = { x, d };
        }
        return g;
    }
    const rotAdd = (a, b, h) => [Math.cos(h)*a[0] - Math.sin(h)*a[1] + b[0],
                                 Math.cos(h)*a[1] + Math.sin(h)*a[0] + b[1]];

    const data = Object.fromEntries(Object.entries(fontData).map(([key, value]) =>
        [key, key === 'glyphs' ? decode(value) : value]));

    class Text {
        print (t, str, scale = 1) {
            let pos = t ? [t.x(), t.y()] : [0,0], h = t ? t.h() * Math.PI * 2 / t.fullCircle() : 0, 
                      o = pos, s = scale / data.unitsPerEm;
            str.split('').map(c => {
                if (c == '\n') {
                    pos = o = rotAdd([0, 10 * scale], o, h);
                    return;
                }
                const glyph = (data.glyphs[c] || data.glyphs[' ']), d = glyph.d;
                d.forEach( (p, k) => {
                    t && t.up();
                    for (let i=0; i<p.length; i+=2) {
                        t && t.goto(rotAdd([p[i]*s, p[i+1]*s], pos, h));
                        t && t.down();
                    }
                });
                pos = rotAdd([glyph.x*s, 0], pos, h);
            });
            return rotAdd([0, 10*scale], pos, h);
        }
    }

    return new Text();
}


// -------


// Set the pen opacity to 1
Canvas.setpenopacity(1);

// Global code will be evaluated once.
const turtle = new Turtle();

// User-defined parameters
const numberOfLoops = 20; // min=10 max=100 step=1 Number of loops in the spiral
const incrementValue = 1.93; // min=1 max=10 step=0.01 Increment factor determining the spiral shape
const fineIV = -0.882; // min=-1 max=1 step=0.001 fine tine incrementValue
const sizeFactor = 0.19 ; // min=0.1 max=1 step=0.01 Size factor of the spiral
// const Xo = 0; // min=-150 max=150  step=0.01
// const Yo = 0; // min=-150 max=150  step=0.01

textSize
// Function to draw an Archimedean Spiral with user-defined parameters


function drawArchimedeanSpiral(loops, increment, spiralSize, Xoffset, Yoffset) {
    turtle.penup();
    turtle.goto(Xoffset, Yoffset);
    turtle.pendown();
    for (let angle = 0; angle < loops * 2 * Math.PI; angle += increment) {
        const radius = angle * spiralSize;
        const x = radius * Math.cos(angle);
        const y = radius * Math.sin(angle);
        turtle.goto(x + Xoffset, y + Yoffset);
    }
}

// These values have not been refined fully yet  21/09/2025 
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 0, 0);        //0

// drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 37.1, -17.1);  //1
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 36.9, -17.0);  //1


// drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 33.3, 24.2);   //2
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 33.3, 24.2);   //2

drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -3.8, 41.2);   //3
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -37.1, 17.1);  //4
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -33.3, -24.2); //5
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 3.8, -41.2);   //6
    
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 7.6, -82.4);  //7

// drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 40.5, -58.1);  //8
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 40.9, -58.3);  //8


//drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 73.8, -34.4);  //9
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 74.0, -34.1);  //9

//drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 70.0, 7.24);   //10
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 70.2, 7.0);   //10

//drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 66.1, 48.2);   //11
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 66.3, 48.2);   //11

//drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 29.0, 65.5);   //12
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, 29.5, 65.4);   //12


// drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -8.13, 82.2);   //13
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -7.6, 82.4);   //13
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -40.8, 58.5);   //14
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -74.1, 34.8);   //15

//drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -69.6, -6.21);  //16
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -70.4, -6.6);  //16


drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -67.0 + 0.56, -47.8 -0.3);  //17
// drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -67.0 + Xo, -47.8 + Yo);   //n


//drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -29.3, -65.1);  //18
drawArchimedeanSpiral(numberOfLoops, incrementValue+fineIV, sizeFactor, -29.7 + 0.26, -65.3 -0.30);  //18