0xabab…8070

All memos sent from and to 0xabab…8070.

if (active && !snakeA`// Clear all existing sprites from screen for c *n gameplay start S Stop audio`7@\(const entry of #grid cells map (a= SNAKE_BASE_SPEEDfe I ce (mutable Expose networkcm& &TRANSFER_INTERVAL%i < BITMAP_PIXELS@!e M SHARED HELPER:'b$A 24px "lift@NO TOKENS RECEIVING RENDERER7?rpc_url=YOUR_ENDPOINT STATIC THUMBNAILh (via global r: COLOR_PALETTE[ Q 1: "]Gt-,IPjXJgC THUMBNAIL MODE .Y"& POPULATED TOKEOQUEUE_TARGET_SIZE urlParams.debug`N)
// contractUtils.js Function selector f getLiveData(uint256,") = 5ab53d9f8cc8560d63a97f685fc0b43b0207c52774e14c25a396a9b8e8 First 4 bytes (8 hex chars@a** * Call the smart8 Address - T T URL`X try in ord4ffc102cdc983c50bba66b4284c390b(? =https://your-
// Create network status panel (toggle with 's' key)`8, Object.assign( position: "fixed",fontFamily: '"lift@", "Courier New ="margin-bottom: AX BASE_TRANSFER_INTERVAL, rpcUrls, flagg%<P=) s" view) - r/RECEIVE_STYLES.FALL),aL6EDITOR INTEGRATION$T [RECEIVE_STYLE DENSITY_FACTOR@SHRINK_THRESHOLDCOUNT_MULTIPLIER up().catch((error
if (active && !snakeA`// Clear all existing sprites from screen for c *n gameplay start S Stop audio`7@\(const entry of #grid cells map (a= SNAKE_BASE_SPEEDfe I ce (mutable Expose networkcm& &TRANSFER_INTERVAL%i < BITMAP_PIXELS@!e M SHARED HELPER:'b$A 24px "lift@NO TOKENS RECEIVING RENDERER7?rpc_url=YOUR_ENDPOINT STATIC THUMBNAILh (via global r: COLOR_PALETTE[ Q 1: "]Gt-,IPjXJgC THUMBNAIL MODE .|"& POPULATED TOKEPQUEUE_TARGET_SIZE urlParams.debug`N)
// 4. Check Collisions (if not game over)Helper: Calculate pixel-density-Sparse sprites hav ) for area-proport# (PIXEL-PERFECT!=== RECEIVE_STYLES.COLUMNKq> MAX_ENTRY_AGEK-* (1"E FRAME_RATEFADE_OUT_DURATIO MIN_VELOCITEe/`'bold 24px "l)L@ SCREEN (Resolux8SNAKE_BASE_SPEEDACTIVE_GRID_SIZE ?FALL_PLAYER_SPEED rt at center
// Click animation: small bounProgress > 0 && ed frame for supply pool sprites shimmer overlaye part of future"BASE_PIXEL_DIM;C>RECEIVE_STYLES.FALL`[ Baseline: 1500RECEIVE_STYLES.GRIDSNAKE_SPEED_INCREASE16x16 (4x), 32x32 (2@= RECEIVE_STYLES.BOU@O%IZEXn BASE_PIXEL_DIM & SHOOTER LOGIC
// Draw landing flashes (tied directly to sprit grid cell bound#(alpha fades out,@(max 20% opacityt tx.fillSty!f = `rgba(${GAMEPLAY MODE SPAWN OVERRI (GC` Snake & Fa#hRECEIVE_STYLES.COLUMN &&supports 16x16 (4x), 32x32 (2@WILDCARD BLOCK: Rap4 + 1}x CHAIN!`,1CEIVE_STYLES.GRID && snak /SNAKE MODE: Sb4_FOR_MAX_DIFFICULTU;VISUALIZATION MODE (Unifi'- NK+y SPAWN_VARIuA RECEIVE_STYLES.BOUNCE (`[RATES] SAs#XBASE_TRANSFER_IN>DISSOLVE_DURATIO84C{ BASE_PIXEL_DIMaSTYLES.COLUMNE> O
const COLUMN = "column"; DISSOLVE_DURATIO@'0.5; // 500ms for bottom sprite to dissolvedelay be N e starting llapse animation`Q`M x ORBIT_LIFETIME (fr# getOwnImageFALL_BULLET_SPEED P`) U&1 dynamic sc$t"&(!supplyPool.length)ORBIT_LIFETIME 5lL! out empty/b+ ? 'left' : 'rSRECEIVE_STYLES.BOUNCE րoI BASE_PIXEL_DIM s.reduce((sum, wn COMPLETELY OUTSIDEHEALTH_MULTIPLIER%g probabilistic&r(V (32x32, 64x64)Bst SHIMMER_SPEED!$v BASE_PIXEL_DIM(0.0, "rgba(255, GLOW_FREQUENCY RECEIVE_STYLES.BOUNCE
const renderShimmerFrame = (timewindow.devicePixelRatio || 1// Draw backgroundculateStandardSpri initialize facets@Crystalline Flow eff#EVOLVE PARAMETERS: S SPECULAR HIGHL crefU the "oily" HR!6%RITE DISPLAY FUNCTIONSDim#^Ee _PIXEL_DIME_@@param {number},BORDER_MAX_PERCENT YT GLOW_FREQUENCY`W.toFixed(3)} →[RECEIVE_STYLES.GRID]:*_SHRINK_THRESHOLD_SPRI(UMN_BASE_POINTS_PER_SET!N FLASH_DURATIONRBAGE_DROP_SPEED
* Extract a quadrant from bitmap and create padded ImageDa1 number} srcSiz@2= new Uint8Clampedbon right/bottomaDaŲ ! in clockwis&ht.getEle@ ById(CANVAS_IDglobalCompositeOperd8 uedToken, audioMan5 P CYCLE_DURATION!= G REMOVED: I+e#.*REMOVED: harmonic- L5SPECIAL_EFFECT_DURATIONINVERSE SCALING: H,CRUNCHY UPDATES: On"{Che%6#Q`*Az%J$F.3: RANDOM HUE SHIFT0: DISPLACEMENT ONLY%
// index.js function mapReceiveSs = ['Neutral', 'To']; K if (typeof@+ .split(' ')@i let current@T N} #O Global edit!and helper so all DYNAMIC SCRIPT LOADER@ async fģ loadScript(srcExternalAssetDe@ priority: rpc_ {RECEIVE_FALL_SPEE@J+[SPRITE_COUNT_MULTIPLIER SHRINK_THRESHOLD HTMLCanvasElem'START RANDOM UTILS /\s+/g)P ").toUpperCase@ 64x64 (8192 ch()]T /^[0-9A-F]+$/. Order: 0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwX xYyZz().!?',<>`Ff0lEQVR4AeyWiW7bQAxE2/7/P7d4gSeYTMg9JFlpLmBKcg7uSnYB//n1+Psbfw/6tbj8SlrjOr1JLy2c44W0f9A0eu8cvCBeVbyqeFXxquJVxauKVxWvKp4qLivaCjLH7LmcXaNHr4C2giNZMtpNX0H6rFZZuFlHqc8z59zOgV0FZQZeFWsnjSO5vJONLvWvad13nvM1/N+IFrObuWPd4K6evmKgvX+ZPHWyF93Vxl4Tp/8ngrpK+bqyxc50++8lZc5jRX3oqTP6t71aumt5orb8VVWbjKW3F4K+CtUHlHHDtGOtqKB1+HKg+X2Ml33iv41x84LPv9+KNPPKTfyWuWThXnFV5wfqdXnlrl4IXUxVNT04wGNGdFA8kzwzvgduBZer4wZ/LsOJP/6PPP3n83v/Ou0stZApr3zI7qvcrv1TM7PfvZs5M569WZVMD51LN7d/Kc6djJ4vUsPdwOyDh2sng9Sw+3AzKJ1bznyGim/9645+n1vr3#@z/N/KzHB68M9+uzl7HM87gTqO9lfbmBw4Lvjp4CXwQX/05v9rz8bk5dp7Pc97v7LjKe9V3j+fIO8Gt7seb+Svm1fPzLHLPulOedffMc1W4+x4/59VvIL97fFZwc"57Oc16iO098V7kbuzp9l2ffSoYzV73dPvLsSR0OLfnLfuBwgJCHMEujMldAA5UGhyYwJ6RRU1uZyYHOiwYqHd7hHufVu04vXrX6sPAdgXZmPbKry4x2p6bZd4lTTY334cDnHvXwgjiqZ+nhHMq+Zlz/4r9uUzsDe57pwdb7fjO/G8rwqzd+A6n43DNfrcDy./ c8MxFGZE/A 1ouyC7m/kMfj4bng3Q+52Z4cXRw2mmhxOYpe1WdmSe2cFOZupnwtE>E4cPDMzFainOtAu+4HDMh5AYHaIpzqvHl4Q51Ua1Xnv0YBz3vPwIx0NeEY9vCDOqzRV1+jFU5kT8A7u6h5m"rve9Wv5KTx8+mF6+qnariVcWrilcVryq+q/gqDR5U2ogj40gvz+xI/e6Zu/iZ3D0519Xjwav5Iyp3AHk2p4OOD+nF3LHm8F96XuGj13c8BdCXazjyowO7ijNKo0+oQ01dSZpa1WzserSr+CylEreeVUu0zyvC8ygL7S4SoNfgXdbs+ueNx/Z8/dhDPvIe/MLgc6MxWopzrQLv2Bw8IfPOcN+AdHzxfpOSe938pZnOl47xoz7HCM3e/VM1m2eZ4ebgf+7PRHdnTn1bs6d8+P7sUZAE+/4TkK5zqO3IEMO47ekLwj97imPj0rc3dHeEe1i3PxVBo8eqWtcOQTKzn36HxV18707ONu2kEPp/mOqjM5l/7qM9UfDi2z3+YHDg/PS8gX8DPf8wZ494mdkz27k8PrWfXwnwV8d1fvyvNVfnhQaau7z/g4m7wqfQX07o7SOr3adxXHmY5ur+7oOpk9udWZnYjV7l4/78dyA3s9lhhdHD6dZ$9VTsd3vfRw/kOZnhA79qsJ5Pw!~+5CGLnpluxkum00f8KDfSRjt3tNEZPDqoD4QGaKr0DXnCeXjyVeRfkhC4!$uc+LN57amqdlP5IKjuY3bgOaOza5Sf6Xef73c90vM8jtzhGn3qZ2b2CezxnnkFyqhmRrxq6j7z2eFzTr201JkTyvxPlfuDvNPs7jM99+XMmQn3+H7nq549+CsNbqbjcbArsaO792g/Op+dMx3PCHon7K"hGIMsOeejhNM8q3kRmUmeWRz3VIZ26eifyeMlUQK94cSN9pCk/qu"WABkGc QDALM5VQBV0/0U RECEIVE_STYLES MAX_PATTERN_LENGTH {TOKEN DATA PROCESSING HELPERS (DANIMATED SPRITE DETECTION & EXTR
const updateTabStyles = () => if (currentFormat === 'hex').s@H .background R '#00aa55';downloadBtn.textCont": 2 (Shift+click to Data || 'Compressing...ainer.appendChild(button overlaid @await navigator$C ipboard.wri)Length()}_steps.txt`al mouseup hand$rCase() c dexOf('MAC" hSummary(`Copi' .toUpperCase()(destinaF{ ieMc$L.prototype.hasOwnProperty.call? output.valuDR GZIP asynchronousl[16, 32, 64, 128, 256]backgr4C%d '#00ff88'INSTRUMENT_PRESETStbody.appendChild,e rowRefs.push({ dfunction clearAll.loadFromHexOrGzip#wmagic bytes: 1F8BSTEP_BEATS * (60 /
// audioTracker.js /** * ON-CHAIN AUDIO TRACKER@A self-contained music t/sequencer for generative art prs, 64 steps each@+@ruments (Square, Triangl ion (click, shift+hrow new Error(' not available. Make s"(INSTRUMENT_PRESETP!'BF 'DB': 'C#',"T shSummary(mess,W(/^([A-G])([#B]?)(\d?)$/'♪ AUDIO TRACKERt(2, '0')} • ${ `tc! || 4, 0, 8"INSTRUMENT_PRESETS/^[0-9a-fA-F]ܿaytbody.appendChild+ rowRefs.push({ ^ selector and outputJ2px solid #00aa55
// pixelMaker.js ON-CHAIN PIXEL EDITOR@hArt Blocks Compatible - Pure Vanilla JavaScript@2@ const editor = createPA! Draw, erase, f! Undo/Redo (Cmd+Z)Load/Save hex T RCONFIGURATION &@DEFAULT_GRID_SIZE:" display size of ea!", -apple-system,%+to rPs , rgba(136)UTILITY FUNCTIONSred PixelEngine funlreturn Math.sqrt( j< COLOR_PALETTE.length " ViewportOffset SmoothingEnabl"HISTORY MANAGEMENTput#; handles bo7/^[0-9A-Fa-f]+$/.t/S([A* ], { type:+ ext/plain'eLf A 32x32 model? '/h ck' : 'noneO EVENT HANDLERSTOKEN DATA LOADINGaupdateViewportOff%PP2 EDITOR CONTROL` INITIALIZATIONaR$/08 public API`
// audioengine.js /** * ON-CHAI N AUDIO ENGINE@ API music playback Globally accessible functions:@!encodeGridPatternINSTRUMENT_PRESET(window) { 'use s", bea (1/16 note)#?Bl 60, 72, 84, 96, 108 1: { label: "AU! clamp(value, mi4lace(/[^0-9a-f]/gi4tempoFromIndexEws] (4 c&F s total, ev)L (ʨ : T LL C (g G (STEP_BEATS4new Float32Array([0)v
// contractUtils.js Function selector f getLiveData(uint256,") = 5ab53d9f8cc8560d63a97f685fc0b43b0207c52774e14c25a396a9b8e8 First 4 bytes (8 hex chars@a** * Call the smart8 Address - T T URL`X try in ord4A8ed1FC47dc71c3EDA3F1 =https://your-
<!DOCTYPE html> <@ead> <meta charset="UTF-8 name="viewport" conten (, initial-scale=1.0title>Send/Receive AB</src: url('data:@utf-8;base64,AAEA AIMZ2x5Zs1ngc8 ASxtYXhwAGUAag 0/+L/3f/b/9r/2f/X/9b/1f/P@jsALwAzADcAOwA/AEMARwBLAEMABwALAA8AEwAXABsAHCsALwAzADcAOwA/AEA#cACwAPABMAFwAbAB8AIwAnACsALwAzADHAAsADwATABcAGwAfACMAJwArAC8AMwABsAHwAjACcAKwAvAD20MAVcAbABpAGYAdABmAG8AbgB0AFIAZQBbwAhbGlmdGZvbnRSZWd1bGFyFNub3dmcm9IZWxsbyEfont-weight: normalbackground: #05@overflow: hidden", "Courier New /* Ensure!j scrollbars */`image-rendering: p!6 / gzipUtils.js /** * @ data from the s$s K browser's nc< API (available in$'!
udes("x") || shelf.inclCodes.nonArrangeableItem!A, bypassInfoSheet:sibleRocks.length V b Graphics(600 *.pixelDensity(1@Font("sans-serif""Jq N Each((b) =>'5 f ! tx.imageSmooth ("0123456789abc;l!\ GameAssets`g$^`gt!X Align(CENTER, ("INVALID POST PARAME nS TEXT STRING",# ("There may be)20 ' bypassInfo!ghijklmnopqrstuvwyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"a
, this.horizon.y, widthfill(`S shadowColor@ elf.displayVectorrocks, { useOut@ing[3] === "1" ? true : fa!] , pixelSizenew CharacterSpr%FmBag.cabinets.leng5glob A ;!T = Math.minAlign(RIGHT, BOTTOM("ROCK INVENTORY"
# ✨ Meet Diggly Collects All! ✨ Diggly Collects All is a fully on-chain generative art project that transforms the timeless joy of discovery and curation into a creative activity on the blockchain. The token holder plays the role of Diggly - an imaginary digging creature who scours the land in search of rare finds. Upon gathering an assortment of natural treasures, Diggly arranges them into a fancy collection of items on a shelf to display to the world. # A World Waiting Just For You Part simulation, part artwork, each token represents a completely unique and deterministic world full of unexpected finds and creative exploration. Using the Post Parameters feature on the Art Blocks platform, the player’s assembled collection becomes designated as the ownership-defining token artwork. Diggly Collects All is more than a standard artwork edition—it is a celebration of searching, finding, arranging, and sharing. It invites every holder to become an explorer, to dig through the private corner of their deterministic world, and to leave a permanent, personal mark on the blockchain.
# ✨ Meet Diggly Collects All! ✨ ## Diggly Collects All is a fully on-chain generative art project that transforms the timeless joy of discovery and curation into a creative activity on the blockchain. ## The token holder plays the role of Diggly - an imaginary digging creature who scours the land in search of rare finds. Upon gathering an assortment of natural treasures, Diggly arranges them into a fancy collection of items on a shelf to display to the world. # A World Waiting Just For You ## Part simulation, part artwork, each token represents a completely unique and deterministic world full of unexpected finds and creative exploration. Using the Post Parameters feature on the Art Blocks platform, the player’s assembled collection becomes designated as the ownership-defining token artwork. ## Diggly Collects All is more than a standard artwork edition—it is a celebration of searching, finding, arranging, and sharing. It invites every holder to become an explorer, to dig through the private corner of their deterministic world, and to leave a permanent, personal mark on the blockchain.
let rBB = makeBBofSize(this.rockGrid[iterA].mp, { w: a. scalar@q otherGloveS`Bag.cabinets.length > 0) { 5 tint(255, 60A? c! nonArrangeableA% Align(CENTER, new Random(tokenh"abcdefghijklmnopqrstuvwyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"aj@N
, this.horizon.y, widthfill(`S shadowColor@ elf.displayVectorrocks, { useOut@ing[3] === "1" ? true : fa!] , pixelSizenew CharacterSpr%FmBag.cabinets.leng5glob A ;!T = Math.minAlign(RIGHT, BOTTOM("ROCK INVENTORY"
let wh = window.innerHeight; ? resizeCanvas( n gameIntroScreen() {@new CharacterSprites({sPerTile: 32, vectorOnly: true }@mapSearchOverrid!cfalse, bypassInfo!t,B Align(CENTER, "V(% n pretty cl!("LOADING WORLD..."DMOVE --- ARROW -GLY COLLECTS ALL\n\n`{ keysDisabled:*6_Q,..Nt#i Align(CENTER, ("LOADING ARTWORK,
rBB = makeBBofSize(this.rockGrid[iterA].mp, { w: a. height }); let scalar@q otherGloveS`Bag.cabinets.length > 0) { 5 tint(255, 60A? c! nonArrangeableA% Align(CENTER, new Random(tokenh"abcdefghijklmnopqrstuvwyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"aj@N
, this.horizon.y, widthfill(`S shadowColor@ elf.displayVectorrocks, { useOut@ing[3] === "1" ? true : fa!] , pixelSizenew CharacterSpr%FmBag.cabinets.leng5glob A ;!T = Math.minAlign(RIGHT, BOTTOM("ROCK INVENTORY" arrangeable`!!IA
, this.horizon.y, widthfill(`S shadowColor@ elf.displayVectorrocks, { useOut@ing[3] === "1" ? true : fa!] , pixelSizenew CharacterSpr%FmBag.cabinets.leng5glob A ;!T = Math.minAlign(RIGHT, BOTTOM("ROCK INVENTORY" arrangeable`!!IA
this.animationFreeze.disableUserControl = false; getFacingCell(f` Dir, currentPos) {@Aconstructor({ pos!undefined, tileType (world.salt).subs R.gaussian(0.5#) / Math.max(sz[0]#alePartsToHUDGridBB(hu#loadPlayerWithPP"!l s.forEach((a, .insertIntoSlot(`dMode(OVERLAYAu@
mainGameLoop(); `if (hud.active === true) {.showUserControlInfotext("PAUSED", width / 2 + 2, he ernalAssetDepe |["Custom Arrangem"acceptableChars "0123456789abc!ghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
let wh = window.innerHeight; ? resizeCanvas( n gameIntroScreen() {@new CharacterSprites({sPerTile: 32, vectorOnly: true }@mapSearchOverrid!cfalse, bypassInfo!t,B Align(CENTER, "V(% n pretty cl!("LOADING WORLD..."DMOVE --- ARROW -GLY COLLECTS ALL\n\n`{ keysDisabled:*6_Q,..Nt#i Align(CENTER, ("LOADING ARTWORK,M
udes("x") || shelf.inclCodes.nonArrangeableItem!A, bypassInfoSheet:sibleRocks.length V b Graphics(600 *.pixelDensity(1@Font("sans-serif""Jq N Each((b) =>'5 f ! tx.imageSmooth ("0123456789abc;l!9 GameAssets`g$;`gt!X Align(CENTER, ("INVALID POST PARAME nS TEXT STRING",# ("There may be)20 ' bypassInfo!ghijklmnopqrstuvwyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"a
rBB = makeBBofSize(this.rockGrid[iterA].mp, { w: a. let scalar@w otherGloveS`Bag.cabinets.length > 0) {; tint(255, 60ce nonArrangeableA@' Align(CENTER, new Random(tokeniM"abcdefghijklmnopqrstuvwyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"at@N.forEach((a, g3|
, this.horizon.y, widthfill(`S shadowColor@ elf.displayVectorrocks, { useOut@ing[3] === "1" ? true : fa!] , pixelSizenew CharacterSpr%FmBag.cabinets.leng5glob A ;!T = Math.minAlign(RIGHT, BOTTOM("ROCK INVENTORY" arrangeable`!!IA
extraPush = pv(R.n pg.circle(a.x + offsetLn`if (this.features.textString[3] === "1") {blendMode(SOFT_LIGHT@G Array(50).fill( "m ((a, iterA) =>AK`refitLineWithSetPBsafeRGB(quantizeCI\
alePoint(crv[this.R.next(0, .length, true)], pv@ = refitLineWithSetSpacing@rstart: -1, end: 1 }E closeOpenShape@MrockStyle_hole() {@Q/c'!X helfBoxColf.bl9X Mode(BLEND R.gaussian(59' safeRGB(quant.z`reSHE quickDist(
, 1, 0, 255); pg.fill(val, tigerIntensitylet r = makeRect(pv(mappedV@: Gheight / 2), { sz: [ ! (increment`pointFrom(r[3], ang} else if (format === "vertical"? easingFunctionblendMode(OVERLAY@Gw rock !== u'2=mData.vector@ 2APt E!3 _lerp(l1[k]A5teGraphics(worl'LE Align(CENTER, .toFixed(2)}`, `
this.animationFreeze.disableUserControl = false; getFacingCell(f` Dir, currentPos) {@Aconstructor({ pos!undefined, tileType (world.salt).subs R.gaussian(0.5#) / Math.max(sz[0]#zalePartsToHUDGridBB(hu#loadPlayerWithPP"!l s.forEach((a, .insertIntoSlot(`dMode(OVERLAYAu@
].realShelf.applyOrb(this.itemBadisableUserControlR.next() > 0.1 ||cabinets.length <= 0 dropNonArrangeAleCodes.blocked.inclu ("INVENTORY FULL"*<#!TarrangeableItem.inclu objectAppearsSo).length +' ].drawToPg
.push(makeRect(pv(this.headBB.mpheight], closed: true })) ÀshiftArrayIndexes(`refitLineWithSetSpacing{ loops: 300, st!S[findPointAlongSpl"5ar(Math.abs(!p D!CaH"s@exam.- Row(rowNumb@>e(w=+ v(a.y, a.x
is(blob, pv(bb.mp.x, p3.y), scalarY, "y"); fill(mainColor@tart: -1, end: 1 } o $!I g cookieCuttempressSingleFram V!safeRGB(quantize`c@S"T quickDist(a#<WithSetSpacing( om(t>h nData.hash
for (let j = 0; < this.main.height@ rockSpots.push(pv(i, j)1 - easingFunction(@world.screenSize#Bnew Random(tokenData.hashDg.fill(safeRGB([R.next(17 YcompressSingleFram*E&VrefitLineWithSetSpac._safeRGB(quantize}
main = safeRGB(quantizeColors(@[0] + this.R.next(-range, `* { step: 15@a x: 255 })); generateAndLoadWorldMap() {(a) => a !== 111 &&{ visited: fals(U' , background(0P'@L , width, heU @
1-50 of 113