-- tools/bundle.py lua_text: the bundle roll_cool (e3a1bb540fe9519731beea9a8a8a80ff73b7922ff7942b7e5627e4cb1f387eb1) return {["borges.engine"]="-- The engine: the one entry point hosts talk to.\n--\n-- A loaded game (M.load) holds what every player shares: the rules, the\n-- world and the map data it has read. Each player plays in a session of\n-- their own (Game:session()): where they are, what they carry, the\n-- space they're in (a dungeon), pace, the lines they've heard lately, the claims the server\n-- told them about. Many sessions can play on one game, and none\n-- can tell: each plays exactly as it would alone. A host that plays one\n-- player (the page) makes one session and talks to it; the server's\n-- replays make a session per act, on one game per version.\n--\n-- Hosts send actions as JSON and get back { events = [...] } as JSON. The same\n-- message shapes work in-process, over a socket or anywhere else.\n--\n-- Actions (every action carries `now`, unix seconds, supplied by the host):\n-- { type = \"goto\", lat =, lon = } jump to the cell containing a point\n-- (with gps input, travel there; `jump`\n-- = true jumps anyway)\n-- { type = \"goto_cell\", q =, r = } jump to a cell; `cell_type` and\n-- `tags` take it to be that type,\n-- with those kinds of place for its\n-- things (default: its type alone),\n-- whatever the map says: for a host\n-- that checks acts without the map\n-- (go/server/verify.go)\n-- { type = \"move\", dir = \"n\" } step to a neighbor (n ne se s sw nw)\n-- { type = \"look\" } describe the current cell again\n-- { type = \"map\", radius = 8 } cells around the current one\n-- { type = \"map\", cells = { {q, r}, ... } } just these cells (a host\n-- that keeps the cells it has asks\n-- only for new ones)\n-- { type = \"counts\", radius = 1 } how many things you could act on\n-- now in your cell and those within\n-- radius (1 or 2; mapped cells only):\n-- { cells = { {q, r, n}, ... } }\n-- { type = \"map_tile\", theme =, tile =, bounds =, features =, part = }\n-- map data from the host (no `now`);\n-- a big tile may come in numbered parts.\n-- It's the game's: every session has it\n-- { type = \"things\", fields = {...}, def = {...} }\n-- the game's things with those fields,\n-- and those parts of its things file,\n-- for a page (no `now`; the game's)\n-- { type = \"input\", mode = \"keys\" } how this player moves: \"keys\" (move\n-- actions; goto is a jump) or \"gps\"\n-- (goto follows the device; no `now`).\n-- Things may load for one only (`input`)\n-- { type = \"load_player\", player = {...} }\n-- the player saved by the host (no `now`)\n-- { type = \"find\", thing = uid, q =, r =, now =, input =, tags?, ball? }\n-- whether a cell's slot held a thing\n-- then, by the rolls alone (a server's\n-- check: SETUP.find; nothing changes)\n-- { type = \"roll_as\", loads?, seed?, start? }\n-- find rolls as an older version did\n-- from now on (none: as this one;\n-- SETUP.roll_as; no `now`)\n-- { type = \"act\", verb = \"take\", thing = uid }\n-- do something to a thing here or held\n-- { type = \"claimed\", uids = {...}, reset = false }\n-- shared things others have taken, from\n-- the server (no `now`); reset first\n-- forgets the ones it said before\n-- { type = \"weather\", area = { layer, q, r }, kinds = {...}, to = t }\n-- the forecast's weather in a coarse\n-- cell, from the server (no `now`),\n-- till `to`: ambient lines there say it.\n-- The game's, like map_tile: every\n-- session has it\n-- { type = \"collection\", name = \"compendium\" }\n-- every kind a collection can hold,\n-- and how many of each you have\n-- { type = \"altars\", radius = 1 } today's faction altars around you\n-- (the altars module's, lib/modules/\n-- altars.lua: a coarse cell's, where it\n-- stands; give at one with an act, verb\n-- \"donate\", thing \"ball:\" and a number)\n-- { type = \"shop\" } what's for sale today, and your purse\n-- (the shop module's, lib/modules/shop.lua:\n-- buy with an act, verb \"buy\", thing an\n-- item's uid)\n-- Spaces: a module can put you in a space of its own, off the map (a\n-- dungeon: lib/modules/dungeons.lua, which says its actions and events).\n-- Inside one, a room has no `visit`, `places`, `coarse` or `tags`, and\n-- the space says what's here, where you can go and what acting does.\n--\n-- Points of interest: a room on the map lists the cell's places from the\n-- map data (`places`: { { name, category }, ... }, best first; none, no\n-- list), for a host to show on request. The generated text never names a\n-- business; this list is the map's own.\n--\n-- Things (game.things, see core/borges/things.lua): a room event lists the\n-- things in the cell (`here`) and the ones you carry (`held`), each with\n-- the verbs it offers there, and when what's here may change next (`turns`,\n-- unix seconds: a host looks again then). An act event says what happened (`ok`, `text`)\n-- and carries the whole `player` for the host to save, plus fresh `here`\n-- and `held`. load_player answers with player_loaded. Room and act events\n-- carry `stats` when the game has any (Things:stats: a ball, collections).\n--\n-- Movement lines: a room reached by moving carries `arrival`, a line like\n-- \"You hurry north, off the street and into the park.\", when the pace or\n-- the kind of place (game.zones) changed since the last move, when the cell\n-- type changed (unless the last move had a line), or after QUIET_MOVES moves\n-- without one, so walking down a long block still says you're moving. Pace comes\n-- from time: with keys, how long you stayed before moving on; with gps, real\n-- speed (game.pace sets both), averaged over the last few moves so a\n-- steady pace doesn't flicker between two bands. One long stay is enough to\n-- count as lingering. Moves may carry `t`, a millisecond clock, for finer\n-- timing than `now`. The text is the pack symbol move_line.\n--\n-- Ambient lines (time of day and weather) come when there's news: on\n-- arriving somewhere by a jump, when the time of day or weather changes, or\n-- on entering a new zone if there's something not said lately (the last\n-- RECENT_SAID sentences) and it's been ZONE_QUIET moves since the last line. Otherwise a room has no `ambient`. A look always\n-- has one, but doesn't count as having said it.\n--\n-- Event lines: while an event with a `line` is on here (the things file's\n-- events), a room says it (`event`) on the first move or jump after it's\n-- on, then again every EVENT_GAP moves or so (5 to 10, drawn each time),\n-- worded anew from the file's word lists each time. A look says none (a\n-- page's quiet look would lose it), nor a space (a dungeon).\n--\n-- Visits: every room event on the map carries `visit` ({ q, r, day }) for\n-- the host to log (the server checks acts against that trail). The engine\n-- keeps none: no fog of war on the map, whose cells are too many to\n-- remember (fog may come back for small spaces, like an arena).\n--\n-- A game's modules (its manifest's `modules:`, carried in the bundle) add\n-- to the protocol: effects, rules and prefix acts for its things' verbs,\n-- and actions of their own (Game:registry).\n--\n-- Phase 1 has no action log or signing yet.\n\nlocal json = require \"borges.json\"\nlocal mapcells = require \"borges.mapcells\"\nlocal grammar = require \"borges.grammar\"\nlocal hash = require \"borges.hash\"\nlocal hex = require \"borges.hex\"\nlocal things = require \"borges.things\"\nlocal world = require \"borges.world\"\n\nlocal M = {}\n\n-- What this engine can do, by name, for a server replaying acts made with\n-- older versions (go/server/verify_saves.go caps): the bundle carries the list\n-- (tools/bundle.py `caps`). replay: a session per player (Game:session),\n-- rarity in the roll; check_act, apply_act, find: those actions; carries:\n-- a player keeps what this version doesn't know (Things:load_player);\n-- values: a session takes an action as a table (Session:handle_value).\nM.CAPS = { \"replay\", \"check_act\", \"apply_act\", \"carries\", \"find\", \"values\" }\n\n-- What every player shares.\nlocal Game = {}\nGame.__index = Game\n\n-- One player's play on a Game.\nlocal Session = {}\nSession.__index = Session\n\n-- The engine's actions, in three kinds (filled in below, after what they\n-- call): game actions, setup actions and play actions.\nlocal GAME, SETUP, PLAY\n\n-- keys: seconds spent in a room before moving on (below run = running...,\n-- above stroll = lingering). gps: m/s (below stroll = lingering, above\n-- zoom = faster than anyone runs).\nlocal PACE_DEFAULTS = {\n keys = { run = 2, walk = 6, stroll = 15 },\n gps = { stroll = 0.4, walk = 1.0, run = 2.5, zoom = 6.0 },\n}\n\n\nfunction M.new(game)\n local pace = game.pace or {}\n local keys, gps = {}, {}\n for k, v in pairs(PACE_DEFAULTS.keys) do keys[k] = math.tointeger((pace.keys or {})[k] or v) end\n for k, v in pairs(PACE_DEFAULTS.gps) do -- m/s -> mm/s\n gps[k] = math.floor(((pace.gps or {})[k] or v) * 1000 + 0.5)\n end\n return setmetatable({\n world = world.new(game), -- the map's world: its map data and caches grow as tiles come\n things = game.things and things.new(game.things, game.seed, game.clock.start),\n pace_keys = keys, pace_gps = gps,\n zones = game.zones or {},\n -- The actions this game answers: the engine's (PLAY, SETUP, below)\n -- and its modules' (Game:registry).\n actions = { play = setmetatable({}, { __index = function(_, k) return PLAY[k] end }),\n setup = setmetatable({}, { __index = function(_, k) return SETUP[k] end }) },\n hooks = { place = {}, room = {} }, -- the modules' (Game:registry place, room, enter)\n }, Game)\nend\n\n-- What a game's module registers with (engine M.load: each module is a\n-- function of this). effect(name, fn), rule(name, fn), prefix(verb,\n-- prefix, fn): what a verb can do (core/borges/things.lua: the context\n-- each gets); player(key, { load, save }): a field of the player's the\n-- module keeps (Things:player); action(name, fn, kind): an action of the protocol, fn(session,\n-- a, now) -> a list of events, `kind` \"play\" (with `now`, placed first)\n-- or \"setup\" (no `now`); place(fn): fn(session, place, q, r, now) adds\n-- to the place an act is checked at (what's here for the module: an\n-- altar); room(fn): fn(session, room event, now) adds to a room event;\n-- enter(fn): fn(session, value, a, place, now) -> the event after an act\n-- whose effects set `enter` (a dungeon: lib/modules/dungeons.lua);\n-- check(fn): fn(config, things def) runs now, to refuse a config that\n-- makes no sense (error); provide(name, api): what another module may use\n-- of this one (a table of functions); need(name) -> that api, from a\n-- module listed before this one (else an error saying so). game, things,\n-- config: the game's.\nfunction Game:registry()\n local game = self\n -- The things' registry (core/borges/things.lua M.registry: effect,\n -- rule, prefix, player, settle, owed, stats, words, roll_size, check),\n -- and the game's own: actions.\n local reg = self.things and things.registry(self.things, game.world.game) or {\n things = nil, config = game.world.game,\n check = function(fn) fn(game.world.game, nil) end,\n }\n if not self.things then\n game.provided = game.provided or {}\n reg.provide, reg.need = things.provides(game.provided)\n end\n reg.game = game\n reg.place = function(fn) table.insert(game.hooks.place, fn) end\n reg.room = function(fn) table.insert(game.hooks.room, fn) end\n reg.enter = function(fn) game.hooks.enter = fn end\n reg.action = function(name, fn, kind)\n if PLAY[name] or SETUP[name] or GAME[name] then error(\"the engine has an action \" .. name .. \" already\", 0) end\n game.actions[kind == \"setup\" and \"setup\" or \"play\"][name] = fn\n end\n return reg\nend\n\n-- A new player on this game: nowhere yet, carrying nothing.\n-- What it shares with the game (the rules, the map's world, the things'\n-- definitions) it only reads; everything it changes is its own.\nfunction Game:session()\n local s = setmetatable({\n game = self,\n pace_keys = self.pace_keys, pace_gps = self.pace_gps, zones = self.zones,\n world = self.world, -- the world you're in: the map's, or a space's own\n things = self.things and self.things:session(), -- with this player's claims and input\n player = self.things and self.things:load_player() or nil,\n q = nil, r = nil, came_from = nil,\n space = nil, -- a module's space you're in (a dungeon), or nil: on the map\n outside = nil, -- in a space: where you were on the map, { q, r }\n input = \"keys\",\n entered_at = nil, -- when you reached the current cell (ms)\n pace = nil, -- pace of the last move\n recent = {}, -- the last few moves: { ms, mm } each\n trail = {}, -- walking: the last few cells, { q, r } each (your heading)\n at = nil, -- walking: where the last move or jump put you (World:point)\n zone_changed = false,\n assumed = nil, -- goto_cell's cell_type and tags: { q, r, type, tags }, for things at that cell\n roll_as = nil, -- find rolls as an older version: { loads, seed, start } (SETUP.roll_as)\n sky = nil, -- \"tod|weather\" when an ambient line last came\n said = {}, -- the sentences of recent ambient lines, oldest first\n since_said = 0, -- moves since the last ambient line\n since_moved = 0, -- moves since the last movement line\n events_said = {}, -- the events whose line was said, by name\n since_event = 0, -- moves since the last event line\n event_gap = 0, -- moves till the next one (Session:event_line)\n }, Session)\n -- The things' days are the player's local ones (the ball's, a find's).\n if s.things then s.things.today = function(now) return s:today(now) end end\n return s\nend\n\nlocal SMOOTH = 3 -- moves averaged\nlocal RECENT_SAID = 10 -- ambient sentences remembered\nlocal QUIET_MOVES = 4 -- moves without a movement line before one comes anyway\nlocal HEADING_CELLS = 3 -- walking: a line says your heading from this many cells back\nlocal ZONE_QUIET = 12 -- moves between ambient lines that come from a zone change\nlocal EVENT_GAP = { 5, 10 } -- moves between an event's lines, at least and at most\n\n-- dt_ms: time since reaching the cell you're leaving; dist_mm: how far.\nfunction Session:pace_of(dt_ms, dist_mm)\n local recent = self.recent\n if self.input == \"gps\" then\n local p = self.pace_gps\n recent[#recent + 1] = { math.max(dt_ms, 1), dist_mm }\n if #recent > SMOOTH then table.remove(recent, 1) end\n local ms, mm = 0, 0\n for _, m in ipairs(recent) do ms, mm = ms + m[1], mm + m[2] end\n local speed = mm * 1000 // ms -- mm/s\n return (speed >= p.zoom and \"zoom\") or (speed >= p.run and \"run\") or (speed >= p.walk and \"walk\")\n or (speed >= p.stroll and \"stroll\") or \"linger\"\n end\n local p = self.pace_keys\n if dt_ms >= p.stroll * 1000 then -- one long stay is lingering; start averaging afresh\n self.recent = {}\n return \"linger\"\n end\n recent[#recent + 1] = { dt_ms, dist_mm }\n if #recent > SMOOTH then table.remove(recent, 1) end\n local ms = 0\n for _, m in ipairs(recent) do ms = ms + m[1] end\n ms = ms // #recent\n return (ms < p.run * 1000 and \"run\") or (ms < p.walk * 1000 and \"walk\") or \"stroll\"\nend\n\n-- The move's clock in ms: `t` if the host sent one, else `now` in seconds.\nlocal function clock(a, now)\n return math.tointeger(a.t) or now * 1000\nend\n\n-- Move to (q, r) from the current cell; returns the arrival line or nil.\n-- at: walking, where you are (World:point).\nfunction Session:travel(q, r, dir, now, at)\n local fq, fr = self.q, self.r\n local w = self.world\n local dt = math.max(0, now - (self.entered_at or now)) -- ms\n local dist = hex.distance(fq, fr, q, r) * w.w_play\n -- Walking, how far you really went since the last move (or jump), not\n -- cells: a walk along the cells' edges clips their corners, a cell's\n -- width each in a moment, and read as running.\n if at and self.at then dist = w:apart(self.at, at) end\n self.at = at\n local pace = self:pace_of(dt, dist)\n local from_type, to_type = w:base_facts(fq, fr).type, w:base_facts(q, r).type\n local zone_change = (self.zones[from_type] or from_type) ~= (self.zones[to_type] or to_type)\n local type_change, pace_change = from_type ~= to_type, pace ~= self.pace\n self.since_moved = self.since_moved + 1\n -- Within a zone, types change every step or two (street, houses, street):\n -- skip a type change right after a line.\n local narrate = pace_change or zone_change or (type_change and self.since_moved > 1)\n or self.since_moved > QUIET_MOVES\n -- The way you went, as a line says it: by keys, your step; walking, your\n -- heading over the last few cells, in eight (a walk due east zigzags ne,\n -- se: it says east).\n local way = dir\n if self.input == \"gps\" then\n local t = self.trail\n t[#t + 1] = { fq, fr }\n if #t > HEADING_CELLS then table.remove(t, 1) end\n way = hex.heading8(t[1][1], t[1][2], q, r) or dir\n end\n self.q, self.r = q, r\n self.came_from = hex.OPPOSITE[dir]\n self.entered_at, self.pace = now, pace\n self.zone_changed = zone_change\n if not narrate then return nil end\n self.since_moved = 0\n return w:move_line(fq, fr, q, r, { pace = pace, dir = way, from_type = from_type,\n type_change = type_change, pace_change = pace_change }) -- text, segments\nend\n\n-- A jump (warp, map click): no pace, no line. at: walking, where you are.\nfunction Session:jump(q, r, now, at)\n self.q, self.r = q, r\n self.at = at\n self.came_from = nil\n self.entered_at, self.pace, self.recent, self.trail = now, nil, {}, {}\n self.since_moved = 0\nend\n\n-- A game from a bundle (tools/bundle.py): JSON text or the decoded table.\n-- The host has already registered the bundle's `core` modules (that's how\n-- this code got loaded). Returns the Game and the bundle's hash (the\n-- ruleset hash).\nfunction M.load(bundle)\n local b = type(bundle) == \"string\" and json.decode(bundle) or bundle\n if b.format ~= 2 then error(\"unsupported bundle format: \" .. tostring(b.format)) end\n local game = {}\n for k, v in pairs(b.config) do game[k] = v end\n game.salience = game.salience or {}\n if b.logic then\n local mod, src = b.logic.module, b.logic.source\n package.loaded[mod] = nil\n package.preload[mod] = function(...) return assert(load(src, \"@\" .. mod))(...) end\n local hooks = require(mod)\n game.classify = hooks.classify\n game.salience.score = hooks.salience_score\n end\n game.things = b.things\n game.packs = {}\n for i, p in ipairs(b.packs or {}) do game.packs[i] = grammar.from_data(p) end\n game.flavors = {}\n for i, r in ipairs(b.flavors or {}) do\n local rule = {}\n for k, v in pairs(r) do rule[k] = v end\n rule.pack = grammar.from_data(r.pack)\n game.flavors[i] = rule\n end\n local g = M.new(game)\n -- The game's modules (bundle.modules: tools/bundle.py `modules:`), each\n -- a chunk returning a function of the registry (Game:registry), in the\n -- manifest's order.\n for _, m in ipairs(b.modules or {}) do\n package.loaded[m.module] = nil\n package.preload[m.module] = function(...) return assert(load(m.source, \"@\" .. m.module))(...) end\n local setup = require(m.module)\n if type(setup) ~= \"function\" then error(\"module \" .. tostring(m.name) .. \" must return a function of the registry\", 0) end\n setup(g:registry())\n end\n return g, b.hash\nend\n\nlocal day_of = things.day_of\n\n-- Today where you are (the map's world: in a space, where you came in):\n-- the game's day there, the cell it's counted in and when it ends\n-- (World:day_at).\nfunction Session:today(now)\n local o = self.outside or self\n if not o.q then return now // 86400, nil, (now // 86400 + 1) * 86400 end\n return self.game.world:day_at(o.q, o.r, now)\nend\n\n-- Whether a cell is in the space you're in (everywhere is, on the map).\nfunction Session:inside(q, r)\n return not self.space or self.space:contains(q, r)\nend\n\nlocal function blocked(text)\n return { { type = \"blocked\", text = text } }\nend\n\nlocal function cell_out(w, q, r)\n local lat, lon = w:center_latlon(q, r)\n return { q = q, r = r, lat = lat, lon = lon }\nend\n\n-- The cell of each coarse layer (game.yaml layers but play) you're in:\n-- layer -> \"q:r\" (the page asks for the weather again when its changes).\nfunction Session:coarse_cells()\n local out = {}\n local layers = self.game.world.game.layers\n for layer, m in pairs(layers) do\n if layer ~= \"play\" and math.tointeger(m) then\n local q, r = hex.parent(layers.play * 1000, self.q, self.r, m * 1000)\n out[layer] = q .. \":\" .. r\n end\n end\n return out\nend\n\n-- What kind of ambient line a room gets (see the top of this file), and the\n-- sentences to avoid. `how`: \"move\", \"jump\" or \"look\".\nfunction Session:ambient_mode(how, sky)\n local avoid = {}\n for _, t in ipairs(self.said) do avoid[t] = true end\n if how ~= \"move\" or sky ~= self.sky then return \"always\", avoid end\n if self.zone_changed and self.since_said >= ZONE_QUIET then return \"fresh\", avoid end\n return nil, avoid\nend\n\n-- An event's line for the room you came into (`how`: \"move\" or \"jump\"; a\n-- look says none), or nil: one with a `line` on here that hasn't been\n-- said yet, else (every EVENT_GAP moves or so) one of those on, by turns.\n-- -> text, segments.\nfunction Session:event_line(how, now, facts)\n local th = self.things\n if not th or self.space or how == \"look\" then return nil end\n if how == \"move\" then self.since_event = self.since_event + 1 end\n local defs, on = th.def.events or {}, {}\n for _, e in ipairs(th:events_on(self.q, self.r, now)) do\n if (defs[e.name] or {}).line then on[#on + 1] = e.name end\n end\n if #on == 0 then return nil end\n local pick\n for _, name in ipairs(on) do\n if not self.events_said[name] then pick = name break end\n end\n if not pick and self.since_event < self.event_gap then return nil end\n pick = pick or on[hash.below(#on, \"event\", self.q, self.r, now) + 1]\n self.events_said[pick] = true\n self.since_event = 0\n self.event_gap = EVENT_GAP[1] + hash.below(EVENT_GAP[2] - EVENT_GAP[1] + 1, \"event_gap\", self.q, self.r, now)\n return th:line(defs[pick].line, {}, \"event|\" .. pick .. \"|\" .. self.q .. \":\" .. self.r .. \"|\" .. now,\n facts.type, self.q, self.r, facts)\nend\n\nfunction Session:room_event(now, how, arrival, arrival_segs)\n local w = self.world\n local day = day_of(now)\n local t = w:time_facts(self.q, self.r, now)\n local mode, avoid = self:ambient_mode(how, world.sky(t))\n if self.space then mode = nil end -- (no sky in a space of its own)\n self.zone_changed = false\n if how == \"move\" then self.since_said = self.since_said + 1 end\n local d = w:describe(self.q, self.r, now, { ambient = mode, avoid = avoid })\n if d.ambient then\n self.sky = d.sky\n if how ~= \"look\" then self.since_said = 0 end\n if how ~= \"look\" then\n for _, part in ipairs(world.ambient_parts(d.marks.ambient)) do\n self.said[#self.said + 1] = part\n if #self.said > RECENT_SAID then table.remove(self.said, 1) end\n end\n end\n end\n local zone = self.zones[d.facts.type] or d.facts.type\n local event_text, event_segs = self:event_line(how, now, d.facts)\n local here, held, stats, turns, place\n if self.things then\n place = self:things_place(d.facts)\n self:place_hooks(place, self.q, self.r, now)\n here, held = self.things:view(self.player, place, self.q, self.r, now)\n stats = self.things:stats(self.player, now)\n turns = self.things:turns_at(place.tags, self.q, self.r, now)\n end\n local exits = json.array()\n for _, dir in ipairs(hex.DIRS) do\n local nq, nr = hex.neighbor(self.q, self.r, dir)\n local nf = self:inside(nq, nr) and w:facts(nq, nr)\n if nf then -- (past a space's edge: no exit)\n exits[#exits + 1] = {\n dir = dir, q = nq, r = nr, type = nf.type, salience = nf.salience,\n title = w:title(nq, nr),\n }\n end\n end\n local room = {\n type = \"room\",\n cell = cell_out(w, self.q, self.r),\n title = d.title,\n description = d.description,\n ambient = d.ambient, -- may be nil\n event = event_text, -- an event's line, now and then while one's on (Session:event_line); may be nil\n zone = zone, -- game.zones: the kind of place (built, green, ...)\n region = d.region,\n area = d.area,\n coarse = not self.space and self:coarse_cells() or nil, -- layer -> \"q:r\": the cells of each coarse layer you're in\n facts = d.facts,\n exits = exits,\n back = self.came_from,\n mapped = d.mapped,\n missing = json.array(d.missing),\n visit = not self.space and { q = self.q, r = self.r, day = day } or nil,\n places = not self.space and w:places(self.q, self.r) or nil, -- points of interest\n arrival = arrival,\n pace = self.pace,\n here = here, -- things in the cell; nil when the game has no things\n tags = not self.space and place and json.array(place.tags) or nil, -- its kinds of place, for things\n turns = turns, -- when what's here may change next (unix seconds), or nil\n held = held, -- things you carry\n stats = stats, -- what the player has to show (Things:stats)\n -- The same texts as segments: { text } or { text, source }, source being\n -- the word list (\"smell\") or \"=\" and a fact (\"=street\") it came from.\n marks = { title = d.marks.title, description = d.marks.description, ambient = d.marks.ambient,\n arrival = arrival_segs, event = event_segs },\n }\n if self.space then self.space:room(self, room, now) end -- (what's here in it, and the space itself)\n for _, fn in ipairs(self.game.hooks.room) do fn(self, room, now) end -- (the modules': an altar here)\n return room\nend\n\n-- The modules' say on the place an act is checked at (Game:registry\n-- place): an altar here, say.\nfunction Session:place_hooks(place, q, r, now)\n for _, fn in ipairs(self.game.hooks.place) do fn(self, place, q, r, now) end\nend\n\n-- A cell as the map draws it: its type (the map's classification, the same\n-- as its room's: World:base_facts) and whether its map data is in. None of\n-- what a room's text needs (names, the region's salience, a shop's made-up\n-- name): the map asks for thousands of cells.\nfunction Session:map_cell(q, r)\n local w = self.world\n return { q = q, r = r, type = w:base_facts(q, r).type, mapped = w:mapped(q, r) }\nend\n\n-- The cells within `radius` of you (or of cq, cr), or just `only`\n-- ({ {q, r}, ... }).\nfunction Session:map_event(radius, only, cq, cr)\n cq, cr = cq or self.q, cr or self.r\n local cells = json.array()\n for _, c in ipairs(only or hex.disk(cq, cr, radius)) do\n local q, r = math.tointeger(c[1]), math.tointeger(c[2])\n if not (q and r) then error(\"map cells must be { q, r } integer pairs\", 0) end\n cells[#cells + 1] = self:inside(q, r) and self:map_cell(q, r) or { q = q, r = r, void = true }\n end\n return { type = \"map\", center = { q = cq, r = cr }, radius = radius, cells = cells }\nend\n\n-- Actions, in three kinds. Game actions hand the game data every session\n-- shares (no `now`). Setup actions configure a session or hand it data (no\n-- `now`, no room). Play actions happen at a time (`now`) and mostly answer\n-- with a room. Each handler returns a list of events.\n\nGAME = {}\n\n-- A tile's data, and (added) the cells it can change: its bounds, and a\n-- margin for the buffer its shapes are clipped with ({ q0, q1, r0, r1 }), so\n-- a host keeping cells asks again for those, not all of them.\nlocal TILE_MARGIN = 4 -- cells\nfunction GAME.map_tile(game, a)\n local added = game.world:add_map_tile(a)\n local cells = added and game.world:cells_within(a.bounds, TILE_MARGIN) or nil\n return { { type = \"map_tile\", theme = a.theme, tile = a.tile, added = added, cells = cells } }\nend\n\n-- All map data forgotten, for the host to send again what's near you: a\n-- tile is megabytes here, and they'd pile up (a warp, a long walk).\nfunction GAME.map_reset(game)\n game.world:reset_map()\n return { { type = \"map_reset\" } }\nend\n\n-- The game's things, for a host's page (no `now`): per thing its number,\n-- name and the `fields` asked for, leaving out a thing with none of them\n-- (fields = { \"slot\" } is the wearables, { \"word\" } the words), and the\n-- parts of the things file named in `def` (THINGS_DEF: never the things,\n-- loads or symbols, which are big). A page reads what its game's look\n-- needs this way, from the engine's own copy (one source).\nlocal THINGS_DEF = { containers = true, verbs = true, messages = true, ball = true, collections = true, shop = true,\n parts = true, slots = true, events = true }\nlocal function list_of(v, what)\n if v == nil then return nil end\n if type(v) ~= \"table\" or (next(v) ~= nil and #v == 0) then error(what .. \" are a list of names\", 0) end\n for _, x in ipairs(v) do if type(x) ~= \"string\" then error(what .. \" are a list of names\", 0) end end\n return v\nend\nfunction GAME.things(game, a)\n local th = game.things or error(\"this game has no things\", 0)\n local fields, def = list_of(a.fields, \"fields\"), list_of(a.def, \"def\")\n local out = { type = \"things\" }\n if fields then\n local things = {}\n for id, t in pairs(th.def.things) do\n local x\n for _, f in ipairs(fields) do\n if t[f] ~= nil then\n x = x or { num = t.num, name = t.name }\n x[f] = t[f]\n end\n end\n things[id] = x\n end\n out.things = things\n end\n for _, k in ipairs(def or {}) do\n if not THINGS_DEF[k] then\n error(\"def names parts of the things file: containers, verbs, messages, ball, collections, shop, parts, slots, events\", 0)\n end\n if th.def[k] ~= nil then\n out.def = out.def or {}\n out.def[k] = th.def[k]\n end\n end\n return { out }\nend\n\n-- An action's `tags` (a cell's kinds of place): a list of names, or nil.\nlocal function tags_of(tags, what)\n if tags == nil then return nil end\n local ok = type(tags) == \"table\" and #tags > 0\n for _, t in ipairs(ok and tags or {}) do ok = ok and type(t) == \"string\" end\n if not ok then error(what .. \": tags are a list of kinds of place\", 0) end\n return tags\nend\n\n-- fn() with the things' per-act fields set (`input`, `quiet`, `late`: the\n-- act's, not the session's), put back as they were after, an error or not.\nlocal function acting(th, set, fn)\n local was = { input = th.input, quiet = th.quiet, late = th.late }\n th.input, th.quiet, th.late = set.input, set.quiet, set.late\n local res = table.pack(pcall(fn))\n th.input, th.quiet, th.late = was.input, was.quiet, was.late\n if not res[1] then error(res[2], 0) end\n return table.unpack(res, 2, res.n)\nend\n\nSETUP = {}\n\n-- The events on for this player (the server's: global ones, its own, and\n-- those in an area, a coarse cell, the weather's):\n-- { events = { { name, from, to, x?, area? = { layer, q, r } }, ... } }.\n-- Things:events_on reads them.\nfunction SETUP.events(self, a)\n local th = self.things or error(\"this game has no things\", 0)\n local layers = self.game.world.game.layers\n local list = {}\n for _, e in ipairs(type(a.events) == \"table\" and a.events or {}) do\n local from, to = math.tointeger(e.from), math.tointeger(e.to)\n local ar = type(e.area) == \"table\" and e.area or nil\n local area = ar and math.tointeger(layers[ar.layer]) and ar.layer ~= \"play\" and math.tointeger(ar.q)\n and math.tointeger(ar.r) and { w = layers[ar.layer] * 1000, q = math.tointeger(ar.q), r = math.tointeger(ar.r) }\n if type(e.name) == \"string\" and (th.def.events or {})[e.name] and from and to and (area or not ar) then\n local x = math.tointeger(e.x)\n list[#list + 1] = { name = e.name, from = from, to = to, x = x and x >= 1 and x or nil, area = area or nil }\n end\n end\n th.events, th.w_play = list, layers.play * 1000\n return { { type = \"events\", n = #list } }\nend\n\n-- The weather in a coarse cell (go/server/weather.go, from the forecast):\n-- { area = { layer, q, r }, kinds = { \"rain\", \"windy\", ... }, to }. Till\n-- `to`, the room's ambient line there goes by it (World:time_facts);\n-- without one (or anywhere else), it says no weather. A fact about a\n-- place, like map data: the game's, kept per cell (World.weather), so\n-- every session reads the same sky there. Without `kinds` or `to` the\n-- cell's is forgotten; without an area, every cell's.\nfunction GAME.weather(game, a)\n local w = game.world\n local layers = w.game.layers\n local ar = type(a.area) == \"table\" and a.area or {}\n local m, q, r, to = math.tointeger(layers[ar.layer]), math.tointeger(ar.q), math.tointeger(ar.r), math.tointeger(a.to)\n local kinds = {}\n for _, k in ipairs(type(a.kinds) == \"table\" and a.kinds or {}) do\n if type(k) == \"string\" then kinds[k] = true end\n end\n if not (m and ar.layer ~= \"play\" and q and r) then\n w.weather = {}\n return { { type = \"weather\", on = false } }\n end\n local key = m .. \"/\" .. q .. \":\" .. r\n w.weather[key] = to and { w = m * 1000, q = q, r = r, to = to, kinds = kinds } or nil\n return { { type = \"weather\", on = w.weather[key] ~= nil } }\nend\n\n-- A dev account's page: walking things load with the keys too (Things:loads).\nfunction SETUP.dev(self, a)\n local th = self.things or error(\"this game has no things\", 0)\n th.dev = a.on == true or nil\n return { { type = \"dev\", on = th.dev == true } }\nend\n\nfunction SETUP.input(self, a)\n if a.mode ~= \"keys\" and a.mode ~= \"gps\" then error(\"input mode must be keys or gps\", 0) end\n self.input = a.mode\n if self.things then self.things.input = a.mode end\n return { { type = \"input\", mode = self.input } }\nend\n\nfunction SETUP.claimed(self, a)\n if not self.things then error(\"this game has no things\", 0) end\n return { { type = \"claimed\", count = self.things:claim(a.uids, a.reset == true) } }\nend\n\nfunction SETUP.collection(self, a)\n if not self.things then error(\"this game has no things\", 0) end\n return { { type = \"collection\", name = a.name, kinds = self.things:collection(self.player, a.name) } }\nend\n\nfunction SETUP.load_player(self, a)\n if not self.things then error(\"this game has no things\", 0) end\n self.player = self.things:load_player(a.player)\n return { { type = \"player_loaded\", player = self.things:saved(self.player) } }\nend\n\n-- An act checked without its room, for a server's replays: the loaded\n-- player does `verb` to `thing` as though its cell (q, r) had `tags` (its\n-- kinds of place; default: the map's), at `now`, walking or on keys\n-- (`input`). Only the\n-- rolls, the rules and the effects: no room and no text but why it\n-- failed, and the player stays in the session (read it once, at the end:\n-- `player`). -> ok, why, enter (the dungeon it would take you into).\n-- A shared thing's take is played whole (it may be someone else's claim).\nfunction SETUP.check_act(self, a)\n local th = self.things or error(\"this game has no things\", 0)\n if not self.player then error(\"load a player first\", 0) end\n local q, r, now = math.tointeger(a.q), math.tointeger(a.r), math.tointeger(a.now)\n if not (q and r and now) then error(\"check_act needs integer q, r and now\", 0) end\n if type(a.verb) ~= \"string\" or type(a.thing) ~= \"string\" then error(\"check_act needs a verb and a thing\", 0) end\n if a.input ~= \"keys\" and a.input ~= \"gps\" then error(\"input mode must be keys or gps\", 0) end\n if self.space then error(\"check_act is on the map: leave the \" .. self.space.kind .. \" first\", 0) end\n local f = self.world:base_facts(q, r)\n local place = { type = f.type, tags = tags_of(a.tags, \"check_act\") or f.tags or { f.type } }\n self:jump(q, r, now) -- today's there (the ball's day and board), as for a room\n self:place_hooks(place, q, r, now)\n local ok, text, enter, bonk, note = acting(th, { input = a.input, quiet = true }, function()\n return th:act(self.player, a.verb, a.thing, place, q, r, now)\n end)\n return { { type = \"checked\", ok = ok, why = not ok and text or nil, enter = enter, bonk = bonk, note = note } }\nend\n\n-- A server checking acts made with an older version: from now on `find`\n-- rolls as that version did, with its loads (`loads`: as its bundle had\n-- them, the pools cut to its sizes, go/server/verify.go rollLoads), seed and\n-- clock start (`seed`, `start`) in place of this one's; none: this one's\n-- again. (Once per version, not per act: a version's loads are a lot of\n-- JSON.) Only find: rooms and acts roll as this version.\nfunction SETUP.roll_as(self, a)\n if not self.things then error(\"this game has no things\", 0) end\n if a.loads ~= nil then\n if type(a.loads) ~= \"table\" or (next(a.loads) ~= nil and #a.loads == 0) then error(\"loads are a list of loads\", 0) end\n for i, l in ipairs(a.loads) do\n if not (type(l) == \"table\" and type(l.name) == \"string\" and math.tointeger(l.every) and type(l.chances) == \"table\"\n and type(l.pools) == \"table\") then\n error(\"load #\" .. i .. \" needs name, every, chances and pools\", 0)\n end\n end\n end\n if a.seed ~= nil and type(a.seed) ~= \"string\" then error(\"a seed is a string\", 0) end\n if a.start ~= nil and not math.tointeger(a.start) then error(\"a clock start is unix seconds\", 0) end\n self.roll_as = (a.loads or a.seed or a.start) and { loads = a.loads, seed = a.seed, start = a.start } or nil\n return { { type = \"roll_as\", on = self.roll_as ~= nil } }\nend\n\n-- Whether a cell's slot held a thing (`thing`: its uid) at `now`, by the\n-- rolls alone (Things:find), for a server's checks: as the cell had `tags`\n-- (its kinds of place; default: the map's), for a player moving by\n-- `input`, with a ball of `ball` mm (what a banded load rolled for), with\n-- the events this session has on (SETUP.events), and as the version\n-- SETUP.roll_as says, if it does. Nothing changes: not the player, not\n-- where you are.\n-- -> { type = \"found\", there }, and when there: id, load (its name),\n-- every, slot, window, band (a banded load's), instance (its taken mark's\n-- key and window: what the server keeps as used).\nfunction SETUP.find(self, a)\n local th = self.things or error(\"this game has no things\", 0)\n local q, r, now = math.tointeger(a.q), math.tointeger(a.r), math.tointeger(a.now)\n if not (q and r and now) then error(\"find needs integer q, r and now\", 0) end\n if type(a.thing) ~= \"string\" then error(\"find needs a thing\", 0) end\n if a.input ~= \"keys\" and a.input ~= \"gps\" then error(\"input mode must be keys or gps\", 0) end\n local ball = nil\n if a.ball ~= nil then ball = math.tointeger(a.ball) or error(\"a ball is a whole size (mm)\", 0) end\n local f = self.world:base_facts(q, r)\n local tags = tags_of(a.tags, \"find\") or f.tags or { f.type }\n -- (The session's own fields shadow the game's while the roll runs.)\n local as = self.roll_as or {}\n th.input, th.with_loads, th.seed, th.start = a.input, as.loads, as.seed, as.start\n local ok, got = pcall(th.find, th, a.thing, tags, q, r, now, ball)\n th.input, th.with_loads, th.seed, th.start = self.input, nil, nil, nil\n if not ok then error(got, 0) end\n if not got then return { { type = \"found\", there = false } } end\n return { { type = \"found\", there = true, id = got.id, load = got.load, every = got.every, slot = got.slot,\n window = got.window, band = got.band, instance = got.instance } }\nend\n\n-- An act on a thing the server found in its cell's slot itself (SETUP.find:\n-- { id, every, slot, window }, and in a banded load { ball, band }: the\n-- ball's size the page said, its band): no roll here at all, only\n-- whether the player has used it, the rules and the effects. As\n-- check_act otherwise (same answer).\nfunction SETUP.apply_act(self, a)\n local th = self.things or error(\"this game has no things\", 0)\n if not self.player then error(\"load a player first\", 0) end\n local q, r, now = math.tointeger(a.q), math.tointeger(a.r), math.tointeger(a.now)\n local every, slot, window = math.tointeger(a.every), math.tointeger(a.slot), math.tointeger(a.window)\n if not (q and r and now and every and slot and window) then\n error(\"apply_act needs integer q, r, now, every, slot and window\", 0)\n end\n if type(a.verb) ~= \"string\" or type(a.thing) ~= \"string\" or type(a.id) ~= \"string\" then\n error(\"apply_act needs a verb, a thing and its id\", 0)\n end\n if self.space then error(\"apply_act is on the map: leave the \" .. self.space.kind .. \" first\", 0) end\n local f = self.world:base_facts(q, r)\n local place = { type = f.type, tags = tags_of(a.tags, \"apply_act\") or f.tags or { f.type } } -- (as find's)\n self:jump(q, r, now) -- today's there (the ball's day and board), as for a room\n -- A banded load's slot was rolled for the ball's size then: the page\n -- says what it was (`ball`), the server rolled with its band (`band`),\n -- and it has to be this player's ball, as these acts have grown it; an\n -- act from before them (`late`: another device's, synced since) one no\n -- bigger.\n -- (As the player was moving, `input`: which they rolled, a ball or a\n -- cube: its size, and what grows.)\n if a.input ~= nil and a.input ~= \"keys\" and a.input ~= \"gps\" then error(\"input mode must be keys or gps\", 0) end\n local band, ball = math.tointeger(a.band), math.tointeger(a.ball)\n local size = acting(th, { input = a.input or self.input }, function() return th:roll_size(self.player, now) end)\n if a.band ~= nil and not (band and ball and size and (ball == size or a.late == true and ball <= size)) then\n return { { type = \"checked\", ok = false, why = \"your ball wasn't that size then\" } }\n end\n local thing, ok, text, enter, bonk, note\n acting(th, { input = a.input or self.input, quiet = true, late = a.late == true }, function()\n thing = th:in_slot(self.player, a.id, a.thing, q, r, every, slot, window, band)\n ok, text, enter, bonk, note = th:act_on(self.player, a.verb, thing, a.thing, place, q, r, now)\n end)\n -- there: it was in its slot (so why it didn't work is the rules', not\n -- that it's gone: the server needn't look the whole way for it). note:\n -- the shared state it writes (Things:act_on), for the server to keep.\n return { { type = \"checked\", ok = ok, why = not ok and text or nil, enter = enter, bonk = bonk,\n there = thing ~= nil, note = note } }\nend\n\n-- The loaded player, as a save holds it.\nfunction SETUP.player(self)\n if not self.player then error(\"load a player first\", 0) end\n return { { type = \"player\", player = self.things:saved(self.player) } }\nend\n\nPLAY = {}\n\nPLAY[\"goto\"] = function(self, a, now)\n if self.space then\n if self.input == \"gps\" then return {} end\n return blocked(\"You can't get there from here: leave the \" .. self.space.kind .. \" first.\")\n end\n local q, r = self.world:locate(a.lat, a.lon)\n if self.input == \"gps\" and self.q and a.jump ~= true then\n -- The device moved: travel there (or stay put, if it's the same cell).\n local dir = hex.direction(self.q, self.r, q, r)\n local arrival, segs\n if dir then arrival, segs = self:travel(q, r, dir, clock(a, now), self.world:point(a.lat, a.lon)) end\n return { self:room_event(now, \"move\", arrival, segs) }\n end\n self:jump(q, r, clock(a, now), self.input == \"gps\" and self.world:point(a.lat, a.lon) or nil)\n return { self:room_event(now, \"jump\") }\nend\n\n-- A space may keep you where you are (a dungeon's run that's over): what\n-- it says, or nil.\nfunction Session:stuck() return self.space and self.space:stuck(self) end\n\n-- What a space says after a move into a cell (a dungeon's hazard), or nil.\nfunction Session:moved() return self.space and self.space:after_move(self) or nil end\n\nfunction PLAY.goto_cell(self, a, now)\n local q, r = math.tointeger(a.q), math.tointeger(a.r)\n if not (q and r) then error(\"goto_cell needs integer q and r\", 0) end\n if a.cell_type ~= nil and type(a.cell_type) ~= \"string\" then error(\"a cell_type is a string\", 0) end\n local tags = tags_of(a.tags, \"goto_cell\")\n local stuck = self:stuck()\n if stuck then return blocked(stuck) end\n if not self:inside(q, r) then return blocked(\"There's nothing there.\") end\n self:jump(q, r, clock(a, now))\n self.assumed = (a.cell_type or tags) and { q = q, r = r, type = a.cell_type, tags = tags } or nil\n local said = self:moved()\n return { self:room_event(now, \"jump\"), said }\nend\n\nfunction PLAY.move(self, a, now)\n if not hex.OFFSETS[a.dir] then error(\"unknown direction: \" .. tostring(a.dir), 0) end\n local q, r = hex.neighbor(self.q, self.r, a.dir)\n local stuck = self:stuck()\n if stuck then return blocked(stuck) end\n if not self:inside(q, r) then return blocked(\"You can't go that way.\") end\n local arrival, segs = self:travel(q, r, a.dir, clock(a, now))\n local said = self:moved()\n return { self:room_event(now, \"move\", arrival, segs), said }\nend\n\n-- Where things go by here: { type (for their text), tags (the kinds of\n-- place they load for) }: the map's (a cell's facts may list its tags: its\n-- land, and a street or trail through it; else its type alone), or\n-- goto_cell's while you're still in that cell.\nfunction Session:things_place(facts)\n local a = self.assumed\n if a and a.q == self.q and a.r == self.r and not self.space then\n return { type = a.type or facts.type, tags = a.tags or { a.type or facts.type } }\n end\n return { type = facts.type, tags = facts.tags or { facts.type } }\nend\n\nfunction PLAY.look(self, _, now)\n return { self:room_event(now, \"look\") }\nend\n\nfunction PLAY.map(self, a, now)\n return { self:map_event(math.tointeger(a.radius) or 8, a.cells) }\nend\n\n-- How many things there are to act on now in the cells around you (the\n-- page's map: a count in each): a room's, not too big for you, without\n-- their text (quiet: a cell's view, for each of up to 19).\nfunction PLAY.counts(self, a, now)\n local cells = json.array()\n if not self.things or self.space then return { { type = \"counts\", cells = cells } } end\n local radius = math.max(0, math.min(math.tointeger(a.radius) or 1, 2))\n local th, w = self.things, self.world\n th.quiet = true\n local ok, err = pcall(function()\n for _, c in ipairs(hex.disk(self.q, self.r, radius)) do\n local q, r = c[1], c[2]\n if w:mapped(q, r) then\n local facts = w:facts(q, r)\n local place = (q == self.q and r == self.r) and self:things_place(facts)\n or { type = facts.type, tags = facts.tags or { facts.type } }\n self:place_hooks(place, q, r, now)\n local n = 0\n for _, v in ipairs((th:view(self.player, place, q, r, now))) do\n if not v.too_big then n = n + 1 end\n end\n cells[#cells + 1] = { q, r, n }\n end\n end\n end)\n th.quiet = nil -- (whatever happened: a room's things have their text)\n if not ok then error(err, 0) end\n return { { type = \"counts\", cells = cells } }\nend\n\n\nfunction PLAY.act(self, a, now)\n if not self.things then error(\"this game has no things\", 0) end\n if self.space then return self.space:act(self, a, now) end\n if type(a.verb) ~= \"string\" or type(a.thing) ~= \"string\" then\n error(\"act needs a verb and a thing\", 0)\n end\n local facts = self.world:base_facts(self.q, self.r)\n local place = self:things_place(facts)\n place.facts = facts -- (the map's names, for what the act says: Things:act_on)\n self:place_hooks(place, self.q, self.r, now)\n local ball = self.things:roll_size(self.player, now) -- what a banded load rolled for (the ball's size)\n local ok, text, enter, bonk, note, marks, said = self.things:act(self.player, a.verb, a.thing, place, self.q, self.r, now)\n local here, held = self.things:view(self.player, place, self.q, self.r, now)\n -- events: the ones it rolled with (the page logs them: go/server/verify.go).\n local on = json.array()\n for _, e in ipairs(self.things:events_on(self.q, self.r, now)) do on[#on + 1] = e.name end\n local events = { { type = \"act\", verb = a.verb, thing = a.thing, ok = ok, text = text, enter = enter, ball_at = ball,\n bonk = bonk, note = note, events = on, marks = marks, -- (its text as segments: rainbow text)\n said = said and next(said) and said or nil, -- (what its effects said: a fight's outcome, for the page)\n here = here, held = held, player = self.things:saved(self.player), stats = self.things:stats(self.player, now) } }\n if enter then events[2] = self.game.hooks.enter(self, enter, a, place, now) end -- (a module's: into a dungeon)\n return events\nend\n\n-- Play actions that place you; every other one needs a place first.\nlocal PLACES = { [\"goto\"] = true, goto_cell = true }\n\nfunction Session:apply(a)\n if GAME[a.type] then return GAME[a.type](self.game, a) end\n local setup = self.game.actions.setup[a.type]\n if setup then return setup(self, a) end\n local play = self.game.actions.play[a.type] or error(\"unknown action type: \" .. tostring(a.type), 0)\n local now = math.tointeger(a.now) or error(\"action needs integer `now`\", 0)\n if not self.q and not PLACES[a.type] then error(\"not placed yet: send goto first\", 0) end\n return play(self, a, now)\nend\n\n-- JSON in, JSON out. Errors become an error event rather than crashing the host.\nlocal function handle(apply, self, message)\n local ok, result = pcall(function()\n -- Map tiles' points are only skimmed: see mapcells.skim.\n return apply(self, json.decode(message, mapcells.skim))\n end)\n if not ok then\n result = { { type = \"error\", message = tostring(result) } }\n end\n return json.encode({ events = json.array(result) })\nend\n\nfunction Session:handle(message) return handle(Session.apply, self, message) end\n\n-- The same, its action a table already: a host that builds it as\n-- json.decode would (go/lua/native: the server's, so a replay's thousands\n-- of actions aren't each written out and parsed again in Lua). The answer\n-- is the same text.\nlocal function handle_value(apply, self, a)\n local ok, result = pcall(function()\n return apply(self, a)\n end)\n if not ok then\n result = { { type = \"error\", message = tostring(result) } }\n end\n return json.encode({ events = json.array(result) })\nend\n\nfunction Session:handle_value(a) return handle_value(Session.apply, self, a) end\n\nreturn M\n",["borges.grammar"]="-- Grammar engine for generated text (Tracery-style, with Improv-style filtering).\n--\n-- A pack is { name = \"...\", symbols = { name = { options... } },\n-- types = { residential = { name = { options... } }, ... } }.\n-- Symbols under `types` apply only to cells of that type and take precedence\n-- over the shared ones, so shared sentence structures can use per-type word\n-- lists. A typed list with extend = true adds to the shared list of the same\n-- name; without it, it replaces the shared list for that type.\n-- An option is a string, or a table:\n-- { \"text with \", w = 3, when = { type = \"park\", wet = { 60, 100 } } }\n-- A symbol list may carry settings next to its options:\n-- spread = 3 or 7 nearby cells pick from disjoint groups (hex coloring)\n-- extend = true (in a later pack) add options instead of replacing\n--\n-- Template syntax (angle brackets, so packs can be written in YAML, where #\n-- starts a comment):\n-- expand a variable, a symbol or a fact, in that order\n-- with modifiers: a, cap, title, s, lower, ing\n-- [v:] expand once and store it in variable v\n--\n-- Packs arrive from game bundles as JSON data (see M.from_data).\n--\n-- Choices are deterministic: hash(seed, key, symbol, n), where n counts\n-- earlier picks of the same symbol in this generation.\n\nlocal hash = require \"borges.hash\"\nlocal hex = require \"borges.hex\"\n\nlocal M = {}\n\nlocal Grammar = {}\nGrammar.__index = Grammar\n\n-- base's options, then def's; def's settings win. Keeps base's `extend` flag.\nlocal function merge(base, def)\n local merged = {}\n for k, v in pairs(base) do merged[k] = v end\n for i = 1, #def do merged[#base + i] = def[i] end\n for k, v in pairs(def) do\n if type(k) ~= \"number\" and k ~= \"extend\" then merged[k] = v end\n end\n return merged\nend\n\nlocal function layer(into, defs)\n for name, def in pairs(defs) do\n local base = into[name]\n into[name] = (def.extend and base) and merge(base, def) or def\n end\nend\n\n-- A pack from JSON data. A symbol is a list of options, or an object with\n-- its options under \"options\" and settings (spread, extend) beside them; an\n-- option is a string or { text = \"...\", w = 3, when = { ... } }.\nlocal function def_from_data(d)\n local def, opts = {}, d\n if d.options then\n opts = d.options\n for k, v in pairs(d) do if k ~= \"options\" then def[k] = v end end\n end\n for i, o in ipairs(opts) do\n if type(o) == \"table\" then\n def[i] = { o.text, w = o.w, when = o.when }\n else\n def[i] = o\n end\n end\n return def\nend\n\nlocal function defs_from_data(t)\n local out = {}\n for name, d in pairs(t or {}) do out[name] = def_from_data(d) end\n return out\nend\n\nfunction M.from_data(p)\n local types = {}\n for t, defs in pairs(p.types or {}) do types[t] = defs_from_data(defs) end\n return { name = p.name, symbols = defs_from_data(p.symbols), types = types }\nend\n\n-- Later packs override earlier ones, symbol by symbol.\nfunction M.new(packs)\n local symbols, typed = {}, {}\n for i, pack in ipairs(packs) do\n if type(pack) ~= \"table\" or type(pack.symbols or pack.types) ~= \"table\" then\n error(\"grammar: pack #\" .. i .. \" has no symbols table (wrap require in parentheses?)\")\n end\n layer(symbols, pack.symbols or {})\n for t, defs in pairs(pack.types or {}) do\n typed[t] = typed[t] or {}\n layer(typed[t], defs)\n end\n end\n -- Typed lists that extend: add them to the final shared list.\n for _, defs in pairs(typed) do\n for name, def in pairs(defs) do\n if def.extend and symbols[name] then defs[name] = merge(symbols[name], def) end\n end\n end\n return setmetatable({ symbols = symbols, typed = typed }, Grammar)\nend\n\n-- The definition of a symbol for these facts: typed first, then shared.\nfunction Grammar:lookup(name, facts)\n local t = facts and facts.type and self.typed[facts.type]\n return (t and t[name]) or self.symbols[name]\nend\n\n-- Conditions\n\nlocal function check(cond, value, facts)\n local tc = type(cond)\n if tc == \"function\" then return cond(value, facts) and true or false end\n if cond == true then return value ~= nil and value ~= false end\n if cond == false then return value == nil or value == false end\n if tc == \"table\" then\n -- { lo, hi } numeric range, inclusive\n if #cond == 2 and type(cond[1]) == \"number\" then\n return type(value) == \"number\" and value >= cond[1] and value <= cond[2]\n end\n -- list of accepted values\n for _, c in ipairs(cond) do\n if value == c then return true end\n end\n return false\n end\n return value == cond\nend\n\nlocal function passes(option, facts)\n if type(option) ~= \"table\" or not option.when then return true end\n for k, cond in pairs(option.when) do\n if not check(cond, facts[k], facts) then return false end\n end\n return true\nend\n\nlocal function weight(option)\n if type(option) == \"table\" and option.w then\n return math.tointeger(option.w) or error(\"grammar: weights must be integers\")\n end\n return 1\nend\n\nlocal function text_of(option)\n return type(option) == \"table\" and option[1] or option\nend\n\n-- Modifiers\n\nlocal function article(s)\n local w = s:lower()\n if w:match(\"^hon\") or w:match(\"^hour\") or w:match(\"^heir\") then return \"an \" .. s end\n if w:match(\"^uni\") or w:match(\"^use\") or w:match(\"^one\") or w:match(\"^eu\") then\n return \"a \" .. s\n end\n return (w:match(\"^[aeiou]\") and \"an \" or \"a \") .. s\nend\n\n-- \"rises over the street\" -> \"rising over the street\": the first word, a\n-- verb in the third person (\"stands\", \"lies\", \"watches\", \"sits\"), becomes a\n-- participle; the rest stays as it is.\nlocal function participle(s)\n local word, rest = s:match(\"^(%S+)(.*)$\")\n if not word then return s end\n local w = word:lower()\n if w:match(\"ies$\") then return word:sub(1, -4) .. \"ying\" .. rest end -- lies, flies\n if w:match(\"[xzo]es$\") or w:match(\"[cs]hes$\") then -- watches, goes\n word = word:sub(1, -3)\n elseif w:match(\"s$\") and not w:match(\"ss$\") then\n word = word:sub(1, -2)\n end\n w = word:lower()\n if w:match(\"[^aeoy]e$\") then -- make -> making (but see -> seeing)\n word = word:sub(1, -2)\n elseif w:match(\"^[^aeiou]*[aeiou][^aeiouwxy]$\") then -- sit -> sitting\n word = word .. word:sub(-1)\n end\n return word .. \"ing\" .. rest\nend\n\nlocal SMALL = { a = 1, an = 1, [\"and\"] = 1, at = 1, by = 1, [\"for\"] = 1, [\"in\"] = 1,\n of = 1, on = 1, [\"or\"] = 1, the = 1, to = 1 }\n\nlocal modifiers = {\n a = article,\n cap = function(s) return (s:gsub(\"^%l\", string.upper)) end,\n ing = participle,\n lower = function(s) return s:lower() end,\n upper = function(s) return s:upper() end,\n s = function(s)\n if s:match(\"[sxz]$\") or s:match(\"[cs]h$\") then return s .. \"es\" end\n if s:match(\"[^aeiou]y$\") then return s:sub(1, -2) .. \"ies\" end\n return s .. \"s\"\n end,\n title = function(s)\n local i = 0\n return (s:gsub(\"%S+\", function(word)\n i = i + 1\n if i > 1 and SMALL[word:lower()] then return word:lower() end\n return (word:gsub(\"^%l\", string.upper))\n end))\n end,\n}\n\n-- Expansion\n\nlocal expand\n\nlocal function choose(ctx, name, def)\n -- 1. Conditions.\n local opts = {}\n for _, o in ipairs(def) do\n if passes(o, ctx.facts) then opts[#opts + 1] = o end\n end\n if #opts == 0 then return \"\" end\n\n -- 2. Spread: split the filtered list into k groups and take this cell's.\n local k = def.spread\n if k and ctx.cell and #opts >= k then\n local color = (k == 3) and hex.color3(ctx.cell.q, ctx.cell.r)\n or (k == 7) and hex.color7(ctx.cell.q, ctx.cell.r)\n or error(\"grammar: spread must be 3 or 7\")\n local group = {}\n for i, o in ipairs(opts) do\n if (i - 1) % k == color then group[#group + 1] = o end\n end\n opts = group\n end\n\n -- 3. Anti-repetition within this generation.\n local used = ctx.used[name]\n if used then\n local fresh = {}\n for _, o in ipairs(opts) do\n if not used[o] then fresh[#fresh + 1] = o end\n end\n if #fresh > 0 then opts = fresh end\n end\n\n -- 4. Weighted pick.\n local total = 0\n for _, o in ipairs(opts) do total = total + weight(o) end\n local n = (ctx.count[name] or 0) + 1\n ctx.count[name] = n\n local pick = hash.below(total, ctx.seed, ctx.key, name, n)\n local chosen\n for _, o in ipairs(opts) do\n pick = pick - weight(o)\n if pick < 0 then chosen = o break end\n end\n ctx.used[name] = used or {}\n ctx.used[name][chosen] = true\n local text = text_of(chosen)\n -- A pick with no slots in it is a word from a list: the caller notes it.\n ctx.leaf = not text:find(\"<\", 1, true)\n local out = expand(ctx, text)\n ctx.leaf = not text:find(\"<\", 1, true)\n return out\nend\n\nlocal function expand_tag(ctx, tag)\n local parts = {}\n for p in tag:gmatch(\"[^.]+\") do parts[#parts + 1] = p end\n local name = parts[1]\n local s, source\n local def = ctx.g:lookup(name, ctx.facts)\n if ctx.vars[name] ~= nil then\n s = ctx.vars[name]\n elseif def then\n s = choose(ctx, name, def)\n if ctx.leaf then source = name end\n elseif ctx.facts[name] ~= nil then\n s = tostring(ctx.facts[name])\n source = \"=\" .. name -- a fact, usually a name from the map\n else\n ctx.missing[#ctx.missing + 1] = name\n return \"{\" .. name .. \"?}\"\n end\n for i = 2, #parts do\n local mod = modifiers[parts[i]] or error(\"grammar: unknown modifier .\" .. parts[i])\n if s ~= \"\" then s = mod(s) end\n end\n if source and s ~= \"\" then ctx.sources[#ctx.sources + 1] = { s, source } end\n return s\nend\n\nexpand = function(ctx, template)\n ctx.depth = ctx.depth + 1\n if ctx.depth > 60 then error(\"grammar: recursion too deep in \" .. template) end\n local out, i, len = {}, 1, #template\n while i <= len do\n local c = template:sub(i, i)\n if c == \"<\" then\n local j = template:find(\">\", i + 1, true) or error(\"grammar: unclosed < in \" .. template)\n out[#out + 1] = expand_tag(ctx, template:sub(i + 1, j - 1))\n i = j + 1\n elseif c == \"[\" then\n local j = template:find(\"]\", i + 1, true) or error(\"grammar: unclosed [ in \" .. template)\n local var, rule = template:sub(i + 1, j - 1):match(\"^([%w_]+):(.*)$\")\n if not var then error(\"grammar: bad action in \" .. template) end\n ctx.vars[var] = expand(ctx, rule)\n i = j + 1\n else\n local j = template:find(\"[<%[]\", i) or len + 1\n out[#out + 1] = template:sub(i, j - 1)\n i = j\n end\n end\n ctx.depth = ctx.depth - 1\n return table.concat(out)\nend\n\n-- Surface polish: spacing, punctuation, sentence capitals.\nlocal function polish(s)\n s = s:gsub(\"%s+\", \" \")\n s = s:gsub(\" ([,.;:!?])\", \"%1\")\n s = s:gsub(\"([,;:])([,.;:])\", \"%2\")\n s = s:gsub(\"%.%.+\", \".\")\n s = s:gsub(\"^%s+\", \"\"):gsub(\"%s+$\", \"\")\n s = s:gsub(\"^%l\", string.upper)\n s = s:gsub(\"([.!?] )(%l)\", function(p, l) return p .. l:upper() end)\n return s\nend\n\n\n-- opts: { seed = string, key = string, facts = table, cell = { q =, r = } }\n-- Returns text, plus a list of names that could not be resolved.\n-- Where each part of the finished text came from: the words picked from\n-- lists and the facts filled in, found in order in the polished text.\n-- Returns { { text }, { text, source }, ... } covering the whole text, where\n-- source is a symbol name (\"smell\") or \"=\" and a fact name (\"=street\").\n-- Matching ignores case (polish capitalizes); a word a later modifier\n-- changed (a plural) may go unmarked, which is harmless.\nlocal function segments(text, sources)\n local lower = text:lower()\n local out, pos = {}, 1\n for _, src in ipairs(sources) do\n local needle = src[1]:gsub(\"%s+\", \" \"):lower()\n local s, e = lower:find(needle, pos, true)\n if s then\n if s > pos then out[#out + 1] = { text:sub(pos, s - 1) } end\n out[#out + 1] = { text:sub(s, e), src[2] }\n pos = e + 1\n end\n end\n if pos <= #text then out[#out + 1] = { text:sub(pos) } end\n return out\nend\n\n-- Returns the text, the names that could not be resolved, and its segments\n-- (see above). opts.vars: words already made (name -> text), used for \n-- before any symbol or fact.\nfunction Grammar:generate(template, opts)\n local vars = {}\n for k, v in pairs(opts.vars or {}) do vars[k] = v end\n local ctx = {\n g = self, seed = opts.seed, key = opts.key, facts = opts.facts or {},\n cell = opts.cell, vars = vars, used = {}, count = {}, depth = 0, missing = {},\n sources = {},\n }\n local text = polish(expand(ctx, template))\n return text, ctx.missing, segments(text, ctx.sources)\nend\n\nreturn M\n",["borges.hash"]="-- Deterministic, stateless hashing: the source of all randomness in the core.\n--\n-- Relies on Lua 5.4 64-bit integer arithmetic, which wraps on overflow\n-- identically on every host. Floats are rejected on purpose: anything fed into\n-- a hash must be an exact integer, a string or a boolean.\n\nlocal M = {}\n\n-- splitmix64 finalizer\nlocal function mix(h)\n h = (h ~ (h >> 30)) * 0xbf58476d1ce4e5b9\n h = (h ~ (h >> 27)) * 0x94d049bb133111eb\n return h ~ (h >> 31)\nend\n\nlocal FNV_OFFSET = 0xcbf29ce484222325\nlocal FNV_PRIME = 0x100000001b3\n\n-- Type tags keep 1, \"1\" and true from hashing alike.\nlocal TAG_INT, TAG_STR, TAG_BOOL = 0x1f, 0x2f, 0x3f\n\n-- A string's hash, kept: the same few (the game's seed, a hash's label:\n-- \"tier\", \"pick\") are hashed for every slot of every cell, and going\n-- through them byte by byte each time was most of what rolling a cell\n-- cost. At most STR_KEEP kept (then all forgotten: a string that comes up\n-- once, a uid, doesn't pile up).\nlocal STR_KEEP = 4096\nlocal str_hash, str_kept = {}, 0\n\nlocal function value_hash(v)\n local mt = math.type(v)\n if mt == \"integer\" then\n return mix(v ~ TAG_INT)\n elseif mt == \"float\" then\n error(\"hash: floats are not allowed (convert to an integer first)\", 3)\n end\n local tv = type(v)\n if tv == \"string\" then\n local got = str_hash[v]\n if got then return got end\n local h = FNV_OFFSET\n for i = 1, #v do\n h = (h ~ v:byte(i)) * FNV_PRIME\n end\n got = mix(h ~ TAG_STR)\n if str_kept >= STR_KEEP then str_hash, str_kept = {}, 0 end\n str_hash[v], str_kept = got, str_kept + 1\n return got\n elseif tv == \"boolean\" then\n return mix((v and 1 or 0) ~ TAG_BOOL)\n end\n error(\"hash: unsupported type \" .. tv, 3)\nend\n\n-- hash(...) -> 64-bit integer (may be negative). Order of arguments matters.\n-- (mix and an integer's value_hash written out in place: the same numbers,\n-- without two Lua calls for every value of every slot's hashes.)\nlocal math_type = math.type\nfunction M.hash(...)\n local h = 0x9e3779b97f4a7c15\n for i = 1, select(\"#\", ...) do\n local v = (select(i, ...))\n local x\n if math_type(v) == \"integer\" then\n x = v ~ TAG_INT\n x = (x ~ (x >> 30)) * 0xbf58476d1ce4e5b9\n x = (x ~ (x >> 27)) * 0x94d049bb133111eb\n x = x ~ (x >> 31)\n else\n x = value_hash(v)\n end\n h = h ~ x\n h = (h ~ (h >> 30)) * 0xbf58476d1ce4e5b9\n h = (h ~ (h >> 27)) * 0x94d049bb133111eb\n h = h ~ (h >> 31)\n end\n return h\nend\n\n-- Non-negative integer in [0, n).\nfunction M.below(n, ...)\n return (M.hash(...) >> 1) % n\nend\n\n-- Jump consistent hash (Lamping and Veach, 2014): an integer in [0, n) for\n-- the hash of `...`, such that growing n to n + 1 moves only about 1 in\n-- n + 1 of all keys, every one of them to the new n. So a pool that's only\n-- ever appended to keeps almost every pick when it grows.\nfunction M.jump(n, ...)\n local key, b, j = M.hash(...), -1, 0\n while j < n do\n b = j\n key = key * 2862933555777941757 + 1\n j = math.floor((b + 1) * (2147483648.0 / ((key >> 33) + 1)))\n end\n return b\nend\n\nreturn M\n",["borges.hex"]="-- Flat-top hex grid over an equirectangular projection, in integer math.\n--\n-- Coordinates:\n-- lat/lon degrees (floats), only at the edges: input from the host and\n-- display output. Converted once to integer 1e-7 degrees.\n-- planar x, y integer millimeters east / north of (0, 0).\n-- stretched u x * 2/sqrt(3). In (u, 2y) space every hex center sits on an\n-- integer lattice, so finding the nearest center needs no\n-- square roots or trig.\n-- axial q, r cell coordinates. A cell is (layer, q, r), never one integer.\n--\n-- Cell size is the distance between neighboring cell centers (one step).\n--\n-- Flat-top neighbors, with r increasing to the north:\n-- n = (0, 1) ne = (1, 0) se = (1, -1)\n-- s = (0, -1) sw = (-1, 0) nw = (-1, 1)\n\nlocal M = {}\n\n-- Millimeters per 1e-7 degree of latitude (spherical earth, 111,319.49 m/deg).\nlocal MM_PER_E7_NUM, MM_PER_E7_DEN = 11132, 1000\n\n-- 2/sqrt(3) as an integer ratio. The tiny error only makes hexes non-regular\n-- by about one part in ten million, and it is the same on every host.\nlocal STRETCH_NUM, STRETCH_DEN = 1154701, 1000000\n\nM.DIRS = { \"n\", \"ne\", \"se\", \"s\", \"sw\", \"nw\" }\n\nM.OFFSETS = {\n n = { 0, 1 }, ne = { 1, 0 }, se = { 1, -1 },\n s = { 0, -1 }, sw = { -1, 0 }, nw = { -1, 1 },\n}\n\nM.OPPOSITE = { n = \"s\", ne = \"sw\", se = \"nw\", s = \"n\", sw = \"ne\", nw = \"se\" }\n\n-- cos(x) from a Taylor series using only + - * /, which are exactly specified\n-- by IEEE 754. math.cos may differ in the last bit between platforms.\nlocal function det_cos(x)\n local term, sum, x2 = 1.0, 1.0, x * x\n for n = 1, 12 do\n term = -term * x2 / ((2 * n - 1) * (2 * n))\n sum = sum + term\n end\n return sum\nend\n\n-- A projection is defined by a reference latitude, where east-west distances\n-- are true. Pick one near where the game is played.\nfunction M.projection(ref_lat_deg)\n local rad = ref_lat_deg * 3.141592653589793 / 180.0\n local cos_ppm = math.floor(det_cos(rad) * 1000000 + 0.5)\n return { ref_lat = ref_lat_deg, cos_ppm = cos_ppm }\nend\n\nfunction M.to_e7(deg)\n return math.floor(deg * 10000000 + 0.5)\nend\n\n-- lat/lon (degrees) -> stretched lattice space (u, y2), integer millimeters.\nfunction M.project(proj, lat, lon)\n return M.project_e7(proj, M.to_e7(lat), M.to_e7(lon))\nend\n\n-- Same, from integer 1e-7 degrees. Pure integer math.\nfunction M.project_e7(proj, lat_e7, lon_e7)\n local y = lat_e7 * MM_PER_E7_NUM // MM_PER_E7_DEN\n local x = (lon_e7 * proj.cos_ppm // 1000000) * MM_PER_E7_NUM // MM_PER_E7_DEN\n local u = x * STRETCH_NUM // STRETCH_DEN\n return u, 2 * y\nend\n\n-- Stretched space -> lat/lon (degrees). Display only: not used for game logic.\nfunction M.unproject(proj, u, y2)\n local x = u * STRETCH_DEN / STRETCH_NUM\n local y = y2 / 2\n local lat = y * MM_PER_E7_DEN / MM_PER_E7_NUM / 1e7\n local lon = x * MM_PER_E7_DEN / MM_PER_E7_NUM * 1000000 / proj.cos_ppm / 1e7\n return lat, lon\nend\n\n-- Stretched space -> integer 1e-7 degrees (inverse of project_e7, to within\n-- rounding). Integer math, so it can be used in game logic.\nfunction M.unproject_e7(proj, u, y2)\n local x = u * STRETCH_DEN // STRETCH_NUM\n local lat_e7 = (y2 // 2) * MM_PER_E7_DEN // MM_PER_E7_NUM\n local lon_e7 = (x * MM_PER_E7_DEN // MM_PER_E7_NUM) * 1000000 // proj.cos_ppm\n return lat_e7, lon_e7\nend\n\n-- Center of cell (q, r) for spacing w (mm), in stretched space.\nfunction M.center(w, q, r)\n return q * w, w * (2 * r + q)\nend\n\n-- Cell containing the point (u, y2), for spacing w (mm).\n-- Picks the nearest center by exact integer distance. With\n-- d^2 = (du * sqrt(3)/2)^2 + (dy2 / 2)^2, comparing 3*du^2 + dy2^2 is enough.\nfunction M.locate(w, u, y2)\n local q0 = u // w\n local r0 = (y2 - q0 * w) // (2 * w)\n local best_q, best_r, best_d\n for dq = -1, 1 do\n for dr = -1, 1 do\n local q, r = q0 + dq, r0 + dr\n local du = u - q * w\n local dy = y2 - w * (2 * r + q)\n local d = 3 * du * du + dy * dy\n if not best_d or d < best_d\n or (d == best_d and (q < best_q or (q == best_q and r < best_r))) then\n best_q, best_r, best_d = q, r, d\n end\n end\n end\n return best_q, best_r\nend\n\nfunction M.neighbor(q, r, dir)\n local o = M.OFFSETS[dir]\n return q + o[1], r + o[2]\nend\n\nfunction M.distance(q1, r1, q2, r2)\n local dq, dr = q1 - q2, r1 - r2\n return (math.abs(dq) + math.abs(dr) + math.abs(dq + dr)) // 2\nend\n\n-- The direction (of the six) closest to the line from cell 1 to cell 2, or\n-- nil for the same cell. On screen a cell sits at x = 1.5 q, y = sqrt(3)/2\n-- (2r + q); dot products scaled by 4 stay in integers.\nfunction M.direction(q1, r1, q2, r2)\n local dq, dr = q2 - q1, r2 - r1\n if dq == 0 and dr == 0 then return nil end\n local best, best_dot\n for _, dir in ipairs(M.DIRS) do\n local o = M.OFFSETS[dir]\n local dot = 9 * dq * o[1] + 3 * (2 * dr + dq) * (2 * o[2] + o[1])\n if not best_dot or dot > best_dot then best, best_dot = dir, dot end\n end\n return best\nend\n\n-- The way from (q1, r1) to (q2, r2) in eight (n ne e se s sw w nw), as a\n-- compass says it: a walk due east over flat-topped hexes zigzags ne, se,\n-- but it heads east. nil if they're the same cell. (No trig: each sector\n-- by its slope, tan 67.5° = 1 + sqrt 2, the same on every host.)\nlocal STEEP = 2.414213562373095\nfunction M.heading8(q1, r1, q2, r2)\n local dq, dr = q2 - q1, r2 - r1\n if dq == 0 and dr == 0 then return nil end\n local x, y = 1.5 * dq, 1.7320508075688772 * (dr + dq / 2) -- east, north\n local ax, ay = math.abs(x), math.abs(y)\n local ns, ew = y > 0 and \"n\" or \"s\", x > 0 and \"e\" or \"w\"\n if ay > ax * STEEP then return ns end\n if ax > ay * STEEP then return ew end\n return ns .. ew\nend\n\n-- All cells within distance k of (q, r), in a fixed order.\nfunction M.disk(q, r, k)\n local out = {}\n for dq = -k, k do\n for dr = math.max(-k, -dq - k), math.min(k, -dq + k) do\n out[#out + 1] = { q + dq, r + dr }\n end\n end\n return out\nend\n\n-- Coloring with no two adjacent cells alike (3 colors), or no two cells within\n-- 2 steps alike (7 colors). Lua's % is floored, so results are non-negative.\nfunction M.color3(q, r) return (q - r) % 3 end\nfunction M.color7(q, r) return (q + 3 * r) % 7 end\n\n-- Parent of a fine cell in a coarser layer: the coarse cell that contains the\n-- fine cell's center.\nfunction M.parent(w_fine, q, r, w_coarse)\n local u, y2 = M.center(w_fine, q, r)\n return M.locate(w_coarse, u, y2)\nend\n\n-- Fine cells whose parent is the given coarse cell, in a fixed order.\nfunction M.children(w_fine, w_coarse, cq, cr)\n local u, y2 = M.center(w_coarse, cq, cr)\n local fq, fr = M.locate(w_fine, u, y2)\n local k = (2 * w_coarse) // (3 * w_fine) + 2\n local out = {}\n for _, c in ipairs(M.disk(fq, fr, k)) do\n local pq, pr = M.parent(w_fine, c[1], c[2], w_coarse)\n if pq == cq and pr == cr then out[#out + 1] = c end\n end\n return out\nend\n\nreturn M\n",["borges.json"]="-- Minimal JSON encode/decode for the host <-> core protocol.\n-- Object keys are emitted in sorted order so output is deterministic.\n-- Limitation: null inside arrays is not supported (Lua tables can't hold nil),\n-- and null object values are dropped.\n\nlocal M = {}\n\nlocal ARRAY = { __jsontype = \"array\" }\n\n-- Mark a table as a JSON array (needed for empty arrays).\nfunction M.array(t)\n return setmetatable(t or {}, ARRAY)\nend\n\nlocal escapes = {\n ['\"'] = '\\\\\"', [\"\\\\\"] = \"\\\\\\\\\", [\"\\b\"] = \"\\\\b\", [\"\\f\"] = \"\\\\f\",\n [\"\\n\"] = \"\\\\n\", [\"\\r\"] = \"\\\\r\", [\"\\t\"] = \"\\\\t\",\n}\n\nlocal function encode_string(s)\n return '\"' .. s:gsub('[%c\"\\\\]', function(c)\n return escapes[c] or string.format(\"\\\\u%04x\", c:byte())\n end) .. '\"'\nend\n\nlocal function is_array(t)\n if getmetatable(t) == ARRAY then return true end\n local n = #t\n if n == 0 then return false end\n local count = 0\n for _ in pairs(t) do count = count + 1 end\n return count == n\nend\n\nlocal encode\n\nlocal function encode_table(t, out)\n if is_array(t) then\n out[#out + 1] = \"[\"\n for i = 1, #t do\n if i > 1 then out[#out + 1] = \",\" end\n encode(t[i], out)\n end\n out[#out + 1] = \"]\"\n return\n end\n local keys = {}\n for k in pairs(t) do\n if type(k) ~= \"string\" then\n error(\"json: object keys must be strings, got \" .. type(k))\n end\n keys[#keys + 1] = k\n end\n table.sort(keys)\n out[#out + 1] = \"{\"\n for i, k in ipairs(keys) do\n if i > 1 then out[#out + 1] = \",\" end\n out[#out + 1] = encode_string(k)\n out[#out + 1] = \":\"\n encode(t[k], out)\n end\n out[#out + 1] = \"}\"\nend\n\nencode = function(v, out)\n local tv = type(v)\n if tv == \"nil\" then\n out[#out + 1] = \"null\"\n elseif tv == \"boolean\" then\n out[#out + 1] = tostring(v)\n elseif tv == \"number\" then\n if math.type(v) == \"integer\" then\n out[#out + 1] = string.format(\"%d\", v)\n elseif v ~= v or v == math.huge or v == -math.huge then\n error(\"json: cannot encode \" .. tostring(v))\n else\n out[#out + 1] = string.format(\"%.10g\", v)\n end\n elseif tv == \"string\" then\n out[#out + 1] = encode_string(v)\n elseif tv == \"table\" then\n encode_table(v, out)\n else\n error(\"json: cannot encode type \" .. tv)\n end\nend\n\nfunction M.encode(v)\n local out = {}\n encode(v, out)\n return table.concat(out)\nend\n\n-- Decoding. Map tiles are megabytes of JSON, mostly numbers, so this works\n-- on bytes and takes plain integers and plain strings in one step each.\n\nlocal byte, find, sub = string.byte, string.find, string.sub\n\nlocal decode_value\nlocal skim -- M.decode's: objects in arrays it may take whole (see there)\n\nlocal function skip(s, i)\n local b = byte(s, i)\n if not b then return #s + 1 end\n if b ~= 32 and b ~= 9 and b ~= 10 and b ~= 13 then return i end\n return find(s, \"[^ \\t\\r\\n]\", i) or #s + 1\nend\n\nlocal simple_escapes = { b = \"\\b\", f = \"\\f\", n = \"\\n\", r = \"\\r\", t = \"\\t\" }\n\nlocal function decode_string(s, i)\n local j = i + 1\n local k = find(s, '[\"\\\\]', j)\n if not k then error(\"json: unterminated string\") end\n if byte(s, k) == 34 then return sub(s, j, k - 1), k + 1 end -- no escapes\n local out = {}\n while true do\n if k > j then out[#out + 1] = sub(s, j, k - 1) end\n if byte(s, k) == 34 then return table.concat(out), k + 1 end -- '\"'\n local e = sub(s, k + 1, k + 1)\n if e == \"u\" then\n out[#out + 1] = utf8.char(tonumber(sub(s, k + 2, k + 5), 16))\n j = k + 6\n else\n out[#out + 1] = simple_escapes[e] or e\n j = k + 2\n end\n k = find(s, '[\"\\\\]', j)\n if not k then error(\"json: unterminated string\") end\n end\nend\n\ndecode_value = function(s, i)\n i = skip(s, i)\n local c = byte(s, i)\n if c == 123 then -- {\n local t = {}\n i = skip(s, i + 1)\n if byte(s, i) == 125 then return t, i + 1 end\n while true do\n -- A plain key and its colon (no escapes, no spaces) in one match.\n local _, e, k = find(s, '^\"([^\"\\\\]*)\":', i)\n if e then\n i = e\n else\n k, i = decode_string(s, skip(s, i))\n i = skip(s, i)\n if byte(s, i) ~= 58 then error(\"json: expected ':' at \" .. i) end\n end\n t[k], i = decode_value(s, i + 1)\n i = skip(s, i)\n local d = byte(s, i)\n if d == 125 then return t, i + 1 end\n if d ~= 44 then error(\"json: expected ',' or '}' at \" .. i) end\n i = i + 1\n end\n elseif c == 91 then -- [\n local t, n = M.array(), 0\n i = skip(s, i + 1)\n if byte(s, i) == 93 then return t, i + 1 end\n while true do\n local v, e\n local b = byte(s, i)\n if b == 91 then\n -- An integer pair (map coordinates: most of a tile) in one match.\n local _, x, y\n _, e, x, y = find(s, \"^%[(%-?%d+),(%-?%d+)%]\", i)\n if e then v, i = setmetatable({ tonumber(x), tonumber(y) }, ARRAY), e + 1 end\n elseif b == 123 and skim then\n v, e = skim(s, i)\n if v then i = e end\n end\n if not e then v, i = decode_value(s, i) end\n if v ~= nil then n = n + 1; t[n] = v end -- a null leaves no hole\n i = skip(s, i)\n local d = byte(s, i)\n if d == 93 then return t, i + 1 end\n if d ~= 44 then error(\"json: expected ',' or ']' at \" .. i) end\n i = i + 1\n end\n elseif c == 34 then -- \"\n return decode_string(s, i)\n elseif c == 116 and sub(s, i, i + 3) == \"true\" then\n return true, i + 4\n elseif c == 102 and sub(s, i, i + 4) == \"false\" then\n return false, i + 5\n elseif c == 110 and sub(s, i, i + 3) == \"null\" then\n return nil, i + 4\n else\n -- A plain integer (no fraction or exponent): the common case.\n local _, e = find(s, \"^-?%d+\", i)\n if e then\n local nb = byte(s, e + 1)\n if nb ~= 46 and nb ~= 101 and nb ~= 69 then return tonumber(sub(s, i, e)), e + 1 end\n end\n local num = s:match(\"^-?%d+%.?%d*[eE]?[-+]?%d*\", i)\n if not num or num == \"\" then error(\"json: unexpected character at \" .. i) end\n -- Integers stay integers; anything with a fraction or exponent is a float.\n local v = math.tointeger(tonumber(num)) or tonumber(num)\n if num:find(\"[.eE]\") then v = tonumber(num) + 0.0 end\n return v, i + #num\n end\nend\n\n-- skim(s, i), if given, sees each object in an array first (at its \"{\"),\n-- and may take it as it likes: it returns the value and the index past the\n-- object, or nil to have it decoded as usual.\nfunction M.decode(s, skim_with)\n skim = skim_with\n local v, i = decode_value(s, 1)\n i = skip(s, i)\n if i <= #s then error(\"json: trailing data at \" .. i) end\n return v\nend\n\nreturn M\n",["borges.mapcells"]="-- Map cells: assigns map features (supplied by the host) to play cells.\n--\n-- The host sends map tiles as generic features (see web/maptiles.js):\n-- { g = \"line\" | \"point\" | \"poly\", kind = \"road\", p = { ...props }, c = { part, ... } }\n-- with each part a flat { lat_e7, lon_e7, lat_e7, lon_e7, ... } list.\n--\n-- Rules, all in integer math:\n-- line every cell the line passes through (sampled every quarter cell),\n-- with `d`: how close the line comes to the cell's center, in mm.\n-- A line clipping a corner has a large d; the game decides the cutoff.\n-- point the cell containing the point\n-- poly every cell whose center is inside the polygon (even-odd rule, so\n-- holes work)\n-- A cell's items come in a fixed order (kind, geometry, name, class, subtype),\n-- whatever order the tiles arrived in.\n--\n-- This module knows geometry, not meaning: what a \"road\" or a \"landuse\" means\n-- for a cell is up to the game's classify hook.\n--\n-- Lazy: a tile only registers its lines and polygons with the chunks (16 x 16\n-- cells) their bounding boxes touch. A chunk is rasterized the first time one\n-- of its cells is asked about, so the work starts where the player is and\n-- grows with what they look at, instead of covering whole 2-4 km tiles up\n-- front. The result is the same as rasterizing everything at once: a chunk\n-- runs its features in the order they arrived and keeps only its own cells.\n-- Points are placed right away, but their props (most of a tile: a city\n-- center has tens of thousands of places) stay unread JSON (M.skim) until\n-- their chunk is built or a nearest-point lookup needs them.\n\nlocal hex = require \"borges.hex\"\nlocal json = require \"borges.json\"\n\nlocal M = {}\n\nlocal MapCells = {}\nMapCells.__index = MapCells\n\nlocal CHUNK = 16 -- chunk side, in cells (axial q and r)\nlocal NAMED_LINE_STEP = 100000 -- mm: 100 m between a named water line's points\n\nfunction M.new(proj, w)\n return setmetatable({\n proj = proj, w = w,\n cells = {}, -- key(q, r) -> { items = { { g, kind, p } ... }, seen = { key = true },\n -- kinds = { kind = { the items of that kind } } }\n coverage = {}, -- theme -> list of { s, w, n, e } bounds (e7)\n points = {}, -- kind -> list of { u, y2, p } for nearest-point lookups\n tiles = {}, -- \"theme/z/x/y\" -> true\n pending = {}, -- key(cq, cr) -> features waiting to be rasterized there\n built = {}, -- key(cq, cr) -> true once rasterized\n clip = nil, -- while building a chunk: { q0, q1, r0, r1 }\n }, MapCells)\nend\n\n-- One integer per cell (or chunk): cheaper to make than a \"q:r\" string, and\n-- lookups are the hot path. r stays well inside +-2^23 (2^23 cells of 15 m\n-- is far more than the earth).\nlocal KEY_R = 1 << 24\nlocal function key(q, r) return q * KEY_R + r end\nlocal function unkey(k)\n local q = (k + KEY_R // 2) // KEY_R\n return q, k - q * KEY_R\nend\n\n-- A cell's items in a fixed order (kind, geometry, name, class, subtype), not\n-- the order they arrived in: which tiles loaded first differs between the\n-- page and the server replaying it, and a game breaking a tie by \"the\n-- first one\" must see the same first one. Cells hold a few items, so a\n-- scan from the end is enough.\nlocal function insert_ordered(list, item)\n local i = #list\n while i > 0 and list[i].order > item.order do\n list[i + 1] = list[i]\n i = i - 1\n end\n list[i + 1] = item\nend\n\nfunction MapCells:add(q, r, g, kind, p, d)\n local c = self.clip\n if c and (q < c[1] or q > c[2] or r < c[3] or r > c[4]) then return false end\n local k = key(q, r)\n local cell = self.cells[k]\n if not cell then\n cell = { items = {}, seen = {}, kinds = {} }\n self.cells[k] = cell\n end\n -- Features cut at tile edges arrive once per tile; keep one copy (and, for\n -- lines, the closest approach to the center). Two features are the same\n -- one when they have the same kind, name, class and subtype: the map data\n -- carries no ids (they were most of the bytes, and nothing needs them), and\n -- the subtype keeps a forest and a field in one cell apart.\n local dedupe = kind .. \"|\" .. (p.name or \"\") .. \"|\" .. (p.class or \"\") .. \"|\" .. (p.subtype or \"\")\n local existing = cell.seen[dedupe]\n if existing then\n if d and existing.d and d < existing.d then existing.d = d end\n return false\n end\n local item = { g = g, kind = kind, p = p, d = d,\n order = kind .. \"\\0\" .. g .. \"\\0\" .. tostring(p.name or \"\") .. \"\\0\" .. tostring(p.class or \"\")\n .. \"\\0\" .. tostring(p.subtype or \"\") }\n cell.seen[dedupe] = item\n insert_ordered(cell.items, item)\n local same = cell.kinds[kind]\n if not same then same = {}; cell.kinds[kind] = same end\n insert_ordered(same, item)\n return true\nend\n\n-- Distance (mm) from the center of cell (q, r) to the segment (u1,v1)-(u2,v2),\n-- all in stretched space. Uses the metric 3*du^2 + dv^2 (= 4 * true distance^2).\nlocal function center_distance(w, q, r, u1, v1, u2, v2)\n local pu, pv = hex.center(w, q, r)\n local su, sv = u2 - u1, v2 - v1\n local len2 = 3 * su * su + sv * sv\n local t = 0.0\n if len2 > 0 then\n t = (3 * (pu - u1) * su + (pv - v1) * sv) / len2\n if t < 0 then t = 0.0 elseif t > 1 then t = 1.0 end\n end\n local du = pu - (u1 + math.floor(su * t))\n local dv = pv - (v1 + math.floor(sv * t))\n return math.floor(math.sqrt(3 * du * du + dv * dv)) // 2\nend\n\nlocal function project_part(proj, part)\n local pts = {}\n for i = 1, #part - 1, 2 do\n local u, y2 = hex.project_e7(proj, math.tointeger(part[i]), math.tointeger(part[i + 1]))\n pts[#pts + 1] = { u, y2 }\n end\n return pts\nend\n\n-- Cells a segment passes through stay within 1 of the box spanned by its\n-- end cells (axial coordinates interpolate linearly along a line).\nlocal function outside(c, q1, r1, q2, r2)\n if not c then return false end\n return math.max(q1, q2) + 1 < c[1] or math.min(q1, q2) - 1 > c[2]\n or math.max(r1, r2) + 1 < c[3] or math.min(r1, r2) - 1 > c[4]\nend\n\nfunction MapCells:add_line(kind, p, pts)\n local w = self.w\n local step = w // 4\n local lq, lr\n for i = 1, #pts - 1 do\n local u1, v1 = pts[i][1], pts[i][2]\n local u2, v2 = pts[i + 1][1], pts[i + 1][2]\n local q1, r1 = hex.locate(w, u1, v1)\n local q2, r2 = hex.locate(w, u2, v2)\n if outside(self.clip, q1, r1, q2, r2) then goto continue end\n local du, dv = u2 - u1, v2 - v1\n -- True length is sqrt(3*du^2 + dv^2) / 2 (see hex.locate).\n local len = math.floor(math.sqrt(3 * du * du + dv * dv)) // 2\n local n = len // step + 1\n for s = 0, n do\n local q, r = hex.locate(w, u1 + du * s // n, v1 + dv * s // n)\n if q ~= lq or r ~= lr then\n self:add(q, r, \"line\", kind, p, center_distance(w, q, r, u1, v1, u2, v2))\n lq, lr = q, r\n end\n end\n ::continue::\n end\nend\n\n-- Column scan: cell centers sit on vertical lines u = q*w, at y2 = w*(2r + q).\n-- For each column, find where the polygon's edges cross it, pair up the\n-- crossings (even-odd), and fill the centers in between.\nfunction MapCells:add_poly(kind, p, parts)\n local w = self.w\n local c = self.clip\n local crossings = {}\n for _, pts in ipairs(parts) do\n local n = #pts\n for i = 1, n do\n local a, b = pts[i], pts[i % n + 1]\n local u1, v1, u2, v2 = a[1], a[2], b[1], b[2]\n if u1 ~= u2 then\n if u1 > u2 then u1, v1, u2, v2 = u2, v2, u1, v1 end\n -- Columns with u in [u1, u2): half-open so shared vertices count once.\n local qa, qb = -((-u1) // w), (u2 - 1) // w\n if c then qa, qb = math.max(qa, c[1]), math.min(qb, c[2]) end\n for q = qa, qb do\n local v = v1 + (v2 - v1) * (q * w - u1) // (u2 - u1)\n local list = crossings[q]\n if not list then list = {}; crossings[q] = list end\n list[#list + 1] = v\n end\n end\n end\n end\n local count = 0\n for q, list in pairs(crossings) do\n table.sort(list)\n for i = 1, #list - 1, 2 do\n local lo, hi = list[i] - q * w, list[i + 1] - q * w\n local ra, rb = -((-lo) // (2 * w)), hi // (2 * w)\n if c then ra, rb = math.max(ra, c[3]), math.min(rb, c[4]) end\n for r = ra, rb do\n if self:add(q, r, \"poly\", kind, p) then count = count + 1 end\n end\n end\n end\n return count\nend\n\n-- A one-point feature as the host sends it (web/maptiles.js),\n-- read without its props: { g = \"point\", kind =, raw = its props' JSON,\n-- lat =, lon = (e7) }, and the index past it. Anything else: nil, and it's\n-- decoded as usual. For json.decode.\nlocal SKIM = '^{%s*\"g\":%s*\"point\",%s*\"kind\":%s*\"([^\"\\\\]+)\",%s*\"p\":%s*(%b{}),%s*'\n .. '\"c\":%s*%[%[%s*(%-?%d+),%s*(%-?%d+)%s*%]%]%s*}()'\n\nfunction M.skim(s, i)\n local _, _, kind, raw, lat, lon, e = string.find(s, SKIM, i)\n if not kind then return nil end\n return { g = \"point\", kind = kind, raw = raw, lat = tonumber(lat), lon = tonumber(lon) }, e\nend\n\n-- A point's props (see add_point), read the first time.\nlocal function props(pt)\n local p = pt[3]\n if not p then\n p = json.decode(pt[4])\n pt[3], pt[4] = p, nil\n end\n return p\nend\n\n-- Points go into the nearest-point lists right away, and into their cell\n-- through the same chunk queue as everything else: one table for both,\n-- { u, y2, props or nil, their JSON or nil, g =, kind =, q =, r = }.\n-- p: the props, or raw: their JSON.\nfunction MapCells:add_point(kind, p, lat, lon, raw)\n local u, y2 = hex.project_e7(self.proj, math.tointeger(lat), math.tointeger(lon))\n local q, r = hex.locate(self.w, u, y2)\n local list = self.points[kind]\n if not list then list = {}; self.points[kind] = list end\n local pt = { u, y2, p, raw, g = \"point\", kind = kind, q = q, r = r }\n list[#list + 1] = pt\n self:enqueue(q // CHUNK, r // CHUNK, pt)\nend\n\n-- Add one tile's worth of features. Returns false if it was already loaded.\n-- Hosts may split a big tile into parts (t.part = 1, 2, ...), sent in order.\nfunction MapCells:add_tile(t)\n local tk = t.theme .. \"/\" .. t.tile .. (t.part and (\"#\" .. math.tointeger(t.part)) or \"\")\n if self.tiles[tk] then return false end\n self.tiles[tk] = true\n -- A tile covers its theme, or (t.covers) several: one of our own tiles\n -- (tools/tiles.py) holds everything the game reads.\n local b = t.bounds\n local box = { math.tointeger(b[1]), math.tointeger(b[2]), math.tointeger(b[3]), math.tointeger(b[4]) }\n for _, theme in ipairs(t.covers or { t.theme }) do\n local cov = self.coverage[theme] or {}\n cov[#cov + 1] = box\n self.coverage[theme] = cov\n end\n for _, f in ipairs(t.features or {}) do\n local p = f.p or {}\n if f.raw then\n self:add_point(f.kind, nil, f.lat, f.lon, f.raw)\n elseif f.g == \"point\" then\n for _, part in ipairs(f.c) do self:add_point(f.kind, p, part[1], part[2]) end\n elseif f.g == \"line\" or f.g == \"poly\" then\n self:register(f.g, f.kind, p, f.c)\n end\n end\n return true\nend\n\n-- Project a line or polygon once and file it under every chunk its bounding\n-- box touches. Chunks already built rasterize it right away.\nfunction MapCells:register(g, kind, p, raw)\n local w = self.w\n local parts = {}\n local qmin, qmax, rmin, rmax\n for _, part in ipairs(raw) do\n local pts = project_part(self.proj, part)\n parts[#parts + 1] = pts\n for _, pt in ipairs(pts) do\n local q, r = hex.locate(w, pt[1], pt[2])\n if not qmin then qmin, qmax, rmin, rmax = q, q, r, r\n else\n if q < qmin then qmin = q elseif q > qmax then qmax = q end\n if r < rmin then rmin = r elseif r > rmax then rmax = r end\n end\n end\n end\n if not qmin then return end\n -- A named water line (a river's centerline) also goes into the\n -- nearest-point lists as points every NAMED_LINE_STEP, so water nearby\n -- that the data leaves unnamed can borrow its name (\"water_line\" points).\n if g == \"line\" and kind == \"water\" and p.name then\n local list = self.points.water_line\n if not list then list = {}; self.points.water_line = list end\n for _, pts in ipairs(parts) do\n for i = 1, #pts - 1 do\n local u1, v1, u2, v2 = pts[i][1], pts[i][2], pts[i + 1][1], pts[i + 1][2]\n local du, dv = u2 - u1, v2 - v1\n local n = (math.floor(math.sqrt(3 * du * du + dv * dv)) // 2) // NAMED_LINE_STEP + 1\n for s = 0, n - 1 do list[#list + 1] = { u1 + du * s // n, v1 + dv * s // n, p } end\n end\n list[#list + 1] = { pts[#pts][1], pts[#pts][2], p }\n end\n end\n local f = { g = g, kind = kind, p = p, parts = parts }\n for cq = (qmin - 1) // CHUNK, (qmax + 1) // CHUNK do\n for cr = (rmin - 1) // CHUNK, (rmax + 1) // CHUNK do\n self:enqueue(cq, cr, f)\n end\n end\nend\n\nfunction MapCells:enqueue(cq, cr, f)\n local ck = key(cq, cr)\n if self.built[ck] then\n self:rasterize(cq, cr, { f })\n else\n local list = self.pending[ck]\n if not list then list = {}; self.pending[ck] = list end\n list[#list + 1] = f\n end\nend\n\nfunction MapCells:rasterize(cq, cr, features)\n self.clip = { cq * CHUNK, cq * CHUNK + CHUNK - 1, cr * CHUNK, cr * CHUNK + CHUNK - 1 }\n for _, f in ipairs(features) do\n if f.g == \"line\" then\n for _, pts in ipairs(f.parts) do self:add_line(f.kind, f.p, pts) end\n elseif f.g == \"poly\" then\n self:add_poly(f.kind, f.p, f.parts)\n else\n self:add(f.q, f.r, \"point\", f.kind, props(f))\n end\n end\n self.clip = nil\nend\n\n-- Rasterize the chunk holding cell (q, r) if it hasn't been yet.\nfunction MapCells:ensure(q, r)\n local cq, cr = q // CHUNK, r // CHUNK\n local ck = key(cq, cr)\n if self.built[ck] then return end\n self.built[ck] = true\n local list = self.pending[ck]\n self.pending[ck] = nil\n if list then self:rasterize(cq, cr, list) end\nend\n\n-- Rasterize everything still pending (tests and tools).\nfunction MapCells:build_all()\n local keys = {}\n for ck in pairs(self.pending) do keys[#keys + 1] = ck end\n table.sort(keys)\n for _, ck in ipairs(keys) do\n local cq, cr = unkey(ck)\n self:ensure(cq * CHUNK, cr * CHUNK)\n end\nend\n\n-- Features in a cell, in the order they were added, or nil.\nfunction MapCells:items(q, r)\n self:ensure(q, r)\n local cell = self.cells[key(q, r)]\n return cell and cell.items\nend\n\n-- A cell's features of one kind, in the order they were added, or nil.\nfunction MapCells:items_of(q, r, kind)\n self:ensure(q, r)\n local cell = self.cells[key(q, r)]\n return cell and cell.kinds[kind]\nend\n\n-- True when every listed theme has a loaded tile covering the cell's center.\nfunction MapCells:covered(q, r, themes)\n local lat, lon = hex.unproject_e7(self.proj, hex.center(self.w, q, r))\n for _, theme in ipairs(themes) do\n local found = false\n for _, b in ipairs(self.coverage[theme] or {}) do\n if lat >= b[1] and lat <= b[3] and lon >= b[2] and lon <= b[4] then found = true break end\n end\n if not found then return false end\n end\n return true\nend\n\n-- Nearest point of a kind to (u, y2), within max_mm, whose props pass\n-- `keep` (if given); returns its props and 4 * its squared distance, or nil.\n-- Points further than ~500 km in either axis are skipped before squaring:\n-- with several cities loaded, the squares would overflow 64 bits.\nlocal FAR = 1000000000\n\n-- Equally near points: the one first by name, class, subtype (the same on\n-- every host, whatever order the tiles arrived in).\nlocal function tie_key(p)\n return tostring(p.name or \"\") .. \"\\0\" .. tostring(p.class or \"\") .. \"\\0\" .. tostring(p.subtype or \"\")\nend\n\nfunction MapCells:nearest(kind, u, y2, max_mm, keep)\n local best, best_d\n local limit = max_mm and (4 * max_mm * max_mm) or nil\n for _, pt in ipairs(self.points[kind] or {}) do\n local du, dv = pt[1] - u, pt[2] - y2\n local far = du > FAR or du < -FAR or dv > FAR or dv < -FAR\n local d = not far and (3 * du * du + dv * dv) -- 4 * true distance squared\n if d and (not limit or d <= limit) and (not best_d or d <= best_d) then\n local p = props(pt)\n if (not keep or keep(p)) and (not best_d or d < best_d or tie_key(p) < tie_key(best)) then\n best, best_d = p, d\n end\n end\n end\n return best, best_d\nend\n\nreturn M\n",["borges.noise"]="-- Integer value noise: smooth, spatially coherent fields over the map.\n--\n-- Values come from hashing lattice points, blended with an integer smoothstep,\n-- so results are identical on every host. Output range is [0, 65535].\n\nlocal hash = require \"borges.hash\"\n\nlocal M = {}\n\nlocal ONE = 65536\n\nlocal function smooth(t) -- t in [0, ONE) -> [0, ONE)\n return t * t * (3 * ONE - 2 * t) // (ONE * ONE)\nend\n\nlocal function lerp(a, b, t)\n return a + (b - a) * t // ONE\nend\n\nlocal function lattice(key, ix, iy)\n return hash.hash(key, ix, iy) >> 48\nend\n\n-- Single octave. key is an integer (see M.field); x, y and scale share units.\nfunction M.value(key, x, y, scale)\n local ix, iy = x // scale, y // scale\n local tx = smooth((x - ix * scale) * ONE // scale)\n local ty = smooth((y - iy * scale) * ONE // scale)\n local v00 = lattice(key, ix, iy)\n local v10 = lattice(key, ix + 1, iy)\n local v01 = lattice(key, ix, iy + 1)\n local v11 = lattice(key, ix + 1, iy + 1)\n return lerp(lerp(v00, v10, tx), lerp(v01, v11, tx), ty)\nend\n\n-- A named multi-octave field. Each octave has half the scale and half the\n-- weight of the one before. Returns a function (x, y) -> [0, 65535].\nfunction M.field(seed, name, scale, octaves)\n local keys, scales, weights, weight_sum = {}, {}, {}, 0\n for o = 1, octaves do\n keys[o] = hash.hash(seed, name, o)\n scales[o] = scale // (1 << (o - 1))\n weights[o] = 1 << (octaves - o)\n weight_sum = weight_sum + weights[o]\n end\n return function(x, y)\n local total = 0\n for o = 1, octaves do\n total = total + M.value(keys[o], x, y, scales[o]) * weights[o]\n end\n return total // weight_sum\n end\nend\n\nreturn M\n",["borges.sun"]="-- Where the sun is: how high above the horizon at a place and moment, and\n-- the local solar time, for the time of day.\n--\n-- Low-precision formulas (declination and the equation of time from the day\n-- of the year), good to a degree or so: a few minutes either way. Only\n-- + - * / on floats, which IEEE 754 fixes exactly, so every host agrees\n-- (math.sin may differ in the last bit between platforms); sines by Taylor\n-- series of angles reduced as integers (millidegrees).\n\nlocal M = {}\n\nlocal PI = 3.141592653589793\n\n-- sin of an angle in millidegrees (an integer).\nlocal function sin_md(md)\n md = md % 360000\n if md > 180000 then md = md - 360000 end\n local x = md * PI / 180000\n local term, sum, x2 = x, x, x * x\n for n = 1, 12 do\n term = -term * x2 / ((2 * n) * (2 * n + 1))\n sum = sum + term\n end\n return sum\nend\n\nlocal function cos_md(md) return sin_md(md + 90000) end\n\nM.sin_md = sin_md\n\nlocal DAY_2000 = 10957 -- days from 1970-01-01 to 2000-01-01\nlocal YEAR_E4 = 3652422 -- the tropical year, 365.2422 days, x 10^4\n\n-- now: unix time (s, UTC); lat_e7, lon_e7: degrees x 10^7. Returns the sine\n-- of the sun's elevation (negative below the horizon) and the local solar\n-- time in minutes (0 <= m < 1440, noon = 720 when the sun is highest).\nfunction M.at(now, lat_e7, lon_e7)\n local n = ((now // 86400 - DAY_2000) * 10000 % YEAR_E4) // 10000 -- day of the year, 0 = Jan 1\n local b = (n - 81) * 360000 // 365\n local eot = 9.87 * sin_md(2 * b) - 7.53 * cos_md(b) - 1.5 * sin_md(b) -- minutes\n -- The sun's declination, as its sine (sqrt is exact under IEEE 754 too):\n -- the earth's tilt, with the orbit's eccentricity nudging the season.\n local nudge = math.floor(1914 * sin_md((n - 2) * 98565 // 100) + 0.5)\n local sin_dec = -0.39779 * cos_md((n + 10) * 98565 // 100 + nudge)\n local cos_dec = math.sqrt(1 - sin_dec * sin_dec)\n local minutes = ((now % 86400) / 60 + lon_e7 * 4 / 10000000 + eot) % 1440\n local hour_angle = math.floor((minutes - 720) * 250 + 0.5) -- millidegrees, 0.25 degree a minute\n local lat = lat_e7 // 10000\n local up = sin_md(lat) * sin_dec + cos_md(lat) * cos_dec * cos_md(hour_angle)\n return up, minutes\nend\n\nreturn M\n",["borges.things"]="-- Things: what a cell holds and what you can do with it (packs/things/basic.yaml\n-- explains the data).\n--\n-- Where a thing can be:\n-- loaded rolled for a cell and a time window: each of the file's\n-- loads gives a cell `rolls` slots per window, and a slot's\n-- hash alone decides whether it holds a thing and its tier;\n-- the cell's kinds of place only which thing (Things:loaded).\n-- Windows count from the game's clock start, each cell's\n-- offset by its own hash, so the world doesn't restock at\n-- once. Nothing is stored until you take it; then your player\n-- notes \"taken here, this window\" (taken), so it's gone for you\n-- and comes back in a later window.\n-- held in one of your containers (inventory)\n-- left in a container with `place` (dropped): it remembers the cell\n-- and shows there, to you only. Unshared things never go back\n-- into the world.\n--\n-- The player is plain data the host keeps (JSON): this module changes it in\n-- place, and the engine hands it back for saving.\n--\n-- Input: a load may be for players moving one way only (`input`,\n-- \"gps\" or \"keys\"); a session says which way its player moves (Things:session()).\n--\n-- Shared things (one for everyone, first come first served): the server\n-- decides who got one. The host tells a session which ones are gone\n-- (`claimed`, by uid) and they stop loading for everyone else. Taking one\n-- works like any thing here; the host asks the server first whether it's\n-- still there (and undoes the take if not). With no server they act like\n-- unshared ones.\n--\n-- Lines (a `here` line, verb text, a rule's fail line) may use the things\n-- file's own word lists (`symbols`, like a pack's): picks one of its\n-- options, by the thing and the moment, so a troll can answer differently\n-- every time and every host still picks the same.\n\nlocal grammar = require \"borges.grammar\"\nlocal hash = require \"borges.hash\"\nlocal hex = require \"borges.hex\"\nlocal json = require \"borges.json\"\n\nlocal M = {}\n\nlocal Things = {}\nThings.__index = Things\n\n-- One player's own state on their view of the things (Things:session),\n-- never the shared definitions': how they move (input), whether they're a\n-- dev, the claims and events the server told them of, the play layer's\n-- size (w_play), their local day (today), and the flags a check sets\n-- around one act (quiet, late) and the last prune of their taken marks\n-- (pruned_at). The shared Things refuses them (__newindex below): set\n-- there, one player's would be everyone's.\nlocal SESSION = { input = true, dev = true, claimed = true, events = true, w_play = true, today = true,\n quiet = true, late = true, pruned_at = true }\nThings.__newindex = function(t, k, v)\n if SESSION[k] then\n error(\"per-player state (\" .. tostring(k) .. \") set on the shared things: use a session (Things:session)\", 2)\n end\n rawset(t, k, v)\nend\n\n-- start: the game's clock start (unix seconds).\n-- The definitions every player shares; a player's own view of them\n-- (claims, input) is Things:session().\n-- What a verb can do is a registry (the core's own, then the game's\n-- modules': engine M.load): effects by name (Things:effect), rules by\n-- name (Things:rule), and acts by a uid's prefix (Things:prefix: \"shop:\"\n-- buys, \"ball:\" gives at an altar), each a function of a context\n-- (Things:act_on: th, p, thing, uid, verb, place, q, r, now, words,\n-- line, and what an effect leaves for the next: inside, enter); and the\n-- player's fields a module keeps (Things:player: loaded from a save,\n-- saved by number).\nfunction M.new(def, seed, start)\n local self = setmetatable({ def = def, seed = seed, start = start or 0,\n effects = {}, rules = {}, rule_specs = {}, prefixes = {}, players = {}, player_keys = {},\n settlers = {}, owed_fns = {}, stats_fns = {}, words_fns = {}, view_fns = {}, size_fn = nil }, Things)\n M.core_registry(self)\n -- Collections: per collection, the kinds of thing that a verb (the\n -- game's or a thing's own) records into it, so what a full one holds\n -- (a module adds its own: a present's any of a kind).\n self.kinds = {}\n for name in pairs(def.collections or {}) do self.kinds[name] = {} end\n local function records(v, id)\n for _, e in ipairs(type(v) == \"table\" and v.effects or {}) do\n if type(e) == \"table\" and e.record then self.kinds[e.record][id] = true end\n end\n end\n -- Things every player holds (`always`: a container's), in a fixed order\n -- (their numbers).\n self.always = {}\n for id, th in pairs(def.things) do\n if th.always then table.insert(self.always, id) end\n end\n table.sort(self.always, M.by_num(def))\n -- Permanent numbers (bundles from 2026-10-19 on): saves hold them.\n self.slug_of = {}\n for id, th in pairs(def.things) do\n for vname, v in pairs(th.verbs or {}) do records(v == \"global\" and def.verbs[vname] or v, id) end\n if math.tointeger(th.num) then self.slug_of[math.tointeger(th.num)] = id end\n end\n if def.symbols and next(def.symbols) then\n self.grammar = grammar.new({ grammar.from_data({ name = \"things\", symbols = def.symbols }) })\n end\n return self\nend\n\n-- One player's view: the shared definitions, plus their own state (SESSION:\n-- set here, read through it), starting as a new player's: no claims,\n-- moving by keys. Everything else it reads from the shared Things.\nfunction Things:session()\n return setmetatable({ claimed = {}, input = \"keys\" }, { __index = self })\nend\n\n-- Shared things someone has taken, as the server says (uid -> true).\nfunction Things:claim(uids, reset)\n if reset then self.claimed = {} end\n local n = 0\n for _, uid in ipairs(uids or {}) do\n if type(uid) == \"string\" then self.claimed[uid] = true; n = n + 1 end\n end\n return n\nend\n\n-- The window of `every` seconds a cell's slot is in at `now`. Each slot has\n-- its own offset, so a cell's rolls turn over one at a time, not all at\n-- once (the first slot keeps the cell's offset from before slots).\nfunction Things:stagger(every, q, r, slot)\n if slot and slot > 1 then return hash.below(every, self.seed, \"stagger\", q, r, every, slot) end\n return hash.below(every, self.seed, \"stagger\", q, r, every)\nend\n\nfunction Things:window(every, q, r, now, slot)\n return (now - self.start + self:stagger(every, q, r, slot)) // every\nend\n\n-- The loads for this player's input: the game's, or for one check the\n-- loads of an older version (`with_loads`: engine SETUP.find, roll_as).\nfunction Things:loads()\n local out = {}\n for _, l in ipairs(self.with_loads or self.def.loads) do\n -- (A dev account's session gets every input's: walking things with the\n -- keys, to test them: the server lets dev accounts have them.)\n if not l.input or l.input == self.input or self.dev then out[#out + 1] = l end\n end\n return out\nend\n\n-- A load's tags among a cell's: a load `by: region` draws from the cell's\n-- region tags alone (region:pennsylvania: the regional flavor rules it's\n-- in), and only in the kinds of place it names (`cells`); every other load\n-- from the rest. A load with `not_cells` has nothing in a cell that's any\n-- of those, whatever else it is (brawl's items: none in a cemetery, even\n-- on a street through one).\nlocal function load_tags(l, tags)\n local mine, inside = {}, l.cells == nil\n for _, t in ipairs(tags) do\n local region = t:sub(1, 7) == \"region:\"\n if region == (l.by == \"region\") then mine[#mine + 1] = t end\n if not region and l.cells then\n for _, c in ipairs(l.cells) do inside = inside or c == t end\n end\n for _, c in ipairs(not region and l.not_cells or {}) do\n if c == t then return {} end\n end\n end\n return inside and mine or {}\nend\n\n-- How many slots a load gives a cell with `tags`: its `rolls` (one), or\n-- more in the kinds of place its `rolls_by` names ({park: 2}: brawl's\n-- items, twice as many in a park), the most of the cell's.\nlocal function rolls_in(l, tags)\n local n = l.rolls or 1\n for _, t in ipairs(l.rolls_by and tags or {}) do\n if (l.rolls_by[t] or 0) > n then n = l.rolls_by[t] end\n end\n return n\nend\n\n-- When the next of a cell's slots turns over after `now` (what's there may\n-- change then), or nil if nothing loads there (no load has a pool for any\n-- of the cell's tags).\nfunction Things:turns_at(tags, q, r, now)\n local soonest\n for _, l in ipairs(self:loads()) do\n local any = false\n for _, tag in ipairs(load_tags(l, tags)) do any = any or l.pools[tag] ~= nil end\n for slot = 1, any and rolls_in(l, tags) or 0 do\n local at = now + l.every - (now - self.start + self:stagger(l.every, q, r, slot)) % l.every\n if not soonest or at < soonest then soonest = at end\n end\n end\n return soonest\nend\n\n-- A thing as a save names it -> its id here, or nil if this version\n-- doesn't know it. Saves name things by number (17, or \"17\" as a key); older\n-- ones by id (\"acorn\").\nfunction Things:id_of(k)\n local n = math.tointeger(k) or (type(k) == \"string\" and k:match(\"^%d+$\") and math.tointeger(tonumber(k)))\n if n then return self.slug_of[n] end\n if type(k) == \"string\" and self.def.things[k] then return k end\n return nil\nend\n\n-- A thing's id here -> how a save names it: its number (a string where it's\n-- a key), or its id in a bundle from before numbers.\nfunction Things:num_of(id, as_key)\n local n = self.def.things[id] and math.tointeger(self.def.things[id].num)\n if not n then return id end\n return as_key and tostring(n) or n\nend\n\n-- The player as saved: things by number. (In play the engine works with\n-- ids; load_player takes either back.)\nfunction Things:saved(p)\n local out = {}\n for k, v in pairs(p) do out[k] = v end\n for _, m in ipairs(self.players) do -- each field as its keeper saves it (by number: Things:player)\n if m.save then m.save(self, p, out) end\n end\n return out\nend\n\n-- A player's field a module keeps (`key`): spec.load(th, data, p, keep)\n-- reads it from a save into the player (what this version doesn't know\n-- aside, in `keep`: Things:load_player), spec.save(th, p, out) writes it\n-- as a save holds it (by number). A field with no `save` is saved as it\n-- is. `th`: the session's Things.\nfunction Things:player(key, spec)\n self.players[#self.players + 1] = { key = key, load = spec.load, save = spec.save }\n self.player_keys[key] = true\nend\n\n-- A player from a save (`data`: Things:saved's shape, or nothing: a new\n-- player): each field read by what keeps it (the core's own,\n-- M.core_registry; the modules', Things:player), and what this version\n-- doesn't know kept aside (`unknown`: an older engine carrying a newer\n-- save) to go back out with the save. A top-level field no one keeps is a\n-- newer version's: carried as it is.\nfunction Things:load_player(data)\n data = data or {}\n local keep = {}\n local p = { containers = {}, taken = {} }\n for _, m in ipairs(self.players) do\n if m.load then m.load(self, data, p, keep) end\n end\n for k, v in pairs(data) do\n if type(k) == \"string\" and k ~= \"unknown\" and not self.player_keys[k] then p[k] = v end\n end\n if next(keep) then p.unknown = keep end\n return p\nend\n\nfunction Things:collection_names()\n local names = {}\n for name in pairs(self.kinds) do names[#names + 1] = name end\n table.sort(names)\n return names\nend\n\n-- The whole part of a cube root, exactly (a ball's size from its volume:\n-- lib/modules/ball.lua; a request's run: lib/modules/dungeons.lua).\nlocal CUBE_ROOT_MAX = 2097151 -- the largest x whose cube fits in 64 bits\nlocal function cube_root(v) -- the whole part, exactly\n local x = math.min(math.floor(v ^ (1 / 3) + 0.5), CUBE_ROOT_MAX)\n while x > 0 and x * x * x > v do x = x - 1 end\n while x < CUBE_ROOT_MAX and (x + 1) * (x + 1) * (x + 1) <= v do x = x + 1 end\n return x\nend\nM.cube_root = cube_root\n\nlocal function day_of(now) return math.floor(now // 86400) end\nM.day_of = day_of\n\n-- Today for the player: the day, the cell it's counted in (a board's) and\n-- when it ends, as the engine says for where they are (`today`, set per\n-- session: the game's local day, World:day_at); without, the UTC day.\nfunction Things:day(now)\n if self.today then return self.today(now) end\n return day_of(now), nil, (day_of(now) + 1) * 86400\nend\n\n-- A size as text: 8 mm, 2.5 cm, 45 cm, 1.23 m, 12.3 m, 150 m.\nfunction M.size_text(mm)\n local function show(per, places, unit)\n local scale = ({ 1, 10, 100 })[places + 1]\n local n = mm * scale // per\n local s = tostring(n // scale)\n if n % scale > 0 then\n s = s .. \".\" .. (string.format(\"%0\" .. places .. \"d\", n % scale):gsub(\"0+$\", \"\"))\n end\n return s .. \" \" .. unit\n end\n if mm < 10 then return mm .. \" mm\" end\n if mm < 100 then return show(10, 1, \"cm\") end\n if mm < 1000 then return show(10, 0, \"cm\") end\n if mm < 10000 then return show(1000, 2, \"m\") end\n if mm < 100000 then return show(1000, 1, \"m\") end\n return show(1000, 0, \"m\")\nend\n\nlocal PRUNE_EVERY = 600 -- seconds of play between forgetting old taken marks (Things:act_on)\n\n-- A slot's tiers, in the order a roll walks them (tools/bundle.py TIERS).\nlocal TIERS = { \"common\", \"uncommon\", \"rare\", \"epic\" }\nM.TIERS = TIERS\n\n-- Things' ids in a fixed order, by their numbers (a game's def): a sort's\n-- comparison.\nfunction M.by_num(def)\n return function(a, b)\n local na, nb = def.things[a].num or 0, def.things[b].num or 0\n if na ~= nb then return na < nb end\n return a < b\n end\nend\n\n-- For a module's reg.check: each verb a game's def has, the game's and\n-- each thing's own (not a thing's `global`, which is the game's), as\n-- fn(where, verb), where: \"verbs.roll\", \"things.cone.verbs.roll\". And a\n-- check's test for a whole number from lo to hi.\nfunction M.each_verb(def, fn)\n for name, v in pairs(def.verbs or {}) do fn(\"verbs.\" .. name, v) end\n for id, t in pairs(def.things or {}) do\n for name, v in pairs(t.verbs or {}) do\n if v ~= \"global\" then fn(\"things.\" .. id .. \".verbs.\" .. name, v) end\n end\n end\nend\n\nfunction M.whole(v, lo, hi)\n local n = math.type(v) and math.tointeger(v)\n return n ~= nil and n >= lo and n <= hi\nend\n\n-- Where something handed out goes (g: { into, record }): a container you\n-- carry, and a collection or none. Errors as a check does.\nfunction M.check_into(where, g, def)\n local c = (def.containers or {})[g.into]\n if not c or c.place then error(where .. \".into: a container you carry (not a place)\", 0) end\n if g.record ~= nil and not (def.collections or {})[g.record] then error(where .. \".record: a collection\", 0) end\nend\n\n-- A table's keys outside `allowed` ({ key = true }), sorted: what a check\n-- refuses.\nfunction M.unknown_keys(t, allowed)\n local out = {}\n for k in pairs(t) do if not allowed[k] then out[#out + 1] = tostring(k) end end\n table.sort(out)\n return out\nend\n\n-- A list in words: \"a\", \"a and b\", \"a, b and c\".\nfunction M.and_list(list)\n if #list <= 2 then return table.concat(list, \" and \") end\n return table.concat(list, \", \", 1, #list - 1) .. \" and \" .. list[#list]\nend\n\n-- A size's band in a banded load (tools/bundle.py band_key): 0 under the\n-- first edge, then one more for each edge it's at or over.\nlocal function band_of(mm, edges)\n local b = 0\n for _, e in ipairs(edges) do if mm >= e then b = b + 1 end end\n return b\nend\n\n-- A slot's hashes: the cell, the load's period, the window and the slot,\n-- and in a banded load the ball's band (each band its own world).\nlocal function slot_below(n, seed, label, q, r, every, w, slot, band)\n if band then return hash.below(n, seed, label, q, r, every, w, slot, band) end\n return hash.below(n, seed, label, q, r, every, w, slot)\nend\nlocal function slot_jump(n, seed, q, r, every, w, slot, band, again)\n local label = again and \"pick \" .. again or \"pick\"\n if band then return hash.jump(n, seed, label, q, r, every, w, slot, band) end\n return hash.jump(n, seed, label, q, r, every, w, slot)\nend\nlocal HOLE_TRIES = 8 -- picks again after landing on a hole in a pool\n\n-- A loaded thing's uid (\"id@q,r#window\", then \".slot\" past the first, then\n-- \"b2\" in a banded load: the ball's band) and its taken mark's key: the\n-- cell, the period, the slot and the band (\"q:r/every\", \"q:r/every.slot\",\n-- \"q:r/every.slotb2\").\nlocal function slot_suffix(slot) return slot > 1 and \".\" .. slot or \"\" end\nlocal function band_suffix(band) return band and \"b\" .. band or \"\" end\nlocal function loaded_uid(l, q, r)\n return l.id .. \"@\" .. q .. \",\" .. r .. \"#\" .. l.window .. slot_suffix(l.slot) .. band_suffix(l.band)\nend\nlocal function taken_key(q, r, every, slot, band) return q .. \":\" .. r .. \"/\" .. every .. slot_suffix(slot) .. band_suffix(band) end\n\n-- A taken mark's key read back: { q, r, every, slot }, or false for one\n-- that isn't a mark's (an older format: forgotten). Kept, as a key is\n-- the same every time it's read (at most MARKS_KEEP, then all forgotten).\nlocal MARKS_KEEP = 8192\nlocal marks_read, marks_kept = {}, 0\nlocal function mark_of(k)\n local m = marks_read[k]\n if m ~= nil then return m end\n local mq, mr, every, rest = k:match(\"^(-?%d+):(-?%d+)/(%d+)(.*)$\")\n local slot = rest and rest:match(\"^%.(%d+)\")\n if rest and not (rest:gsub(\"^%.%d+\", \"\"):gsub(\"^b%d+\", \"\") == \"\") then mq = nil end\n mq, mr, every = math.tointeger(tonumber(mq)), math.tointeger(tonumber(mr)), math.tointeger(tonumber(every))\n slot = slot and math.tointeger(tonumber(slot))\n m = (mq and mr and every and every > 0) and { q = mq, r = mr, every = every, slot = slot } or false\n if marks_kept >= MARKS_KEEP then marks_read, marks_kept = {}, 0 end\n marks_read[k], marks_kept = m, marks_kept + 1\n return m\nend\n\n-- What's loaded into a cell at `now`, by its kinds of place (`tags`: its\n-- land, and a street or trail through it) and, for a banded load, the\n-- ball's size (`ball`, mm): { { id, load (its name), window, every, slot,\n-- band, uid, instance }, ... }, instance being its taken mark's key and\n-- window (\"q:r/every.slotb2#window\": what a server keeps as used).\n-- Each load gives the cell `rolls` slots (default one), each with at most\n-- one thing. From the slot's hashes (a banded load's with the ball's band\n-- in them), in turn:\n-- tier by the load's chances (per million): none, or common, uncommon,\n-- rare, epic. The same in every kind of place: what a cell holds,\n-- or how much content its kinds of place have, never decides\n-- whether a slot has something or how rare it is.\n-- band (a banded load) the size band to draw from, by the slot: the\n-- load's first `own` slots the ball's own band (rollable as it\n-- grows; bigger ones to bump into), the next `above` the band\n-- above, the rest the band below (all rollable), so big things\n-- come up less than small; one past the ends is the ball's own\n-- tag one of the cell's tags, at even odds\n-- thing from that tag's pool for the tier (and band) by jump hash:\n-- pools are only ever appended to (tools/bundle.py thing_pools),\n-- so a new thing moves only about 1 in n + 1 of a pool's picks.\n-- An empty pool (content not written yet) goes on to the cell's\n-- other tags, then a tier down, then (a band with nothing at all\n-- there) the ball's own band, then the ones below it: a gap costs\n-- rarity or size, never whether the slot has something. With\n-- `bands.events: down`, a slot whose tag is an event's (event:...)\n-- takes its things first from its band, or the nearest smaller one\n-- that has some (its tier, then down): an event's things are out\n-- however big your ball is.\n-- So claiming a cell was another kind of place (the server checks acts\n-- without the map) only changes which thing a slot is, never whether there\n-- is one or its tier (but for a step down).\n-- The events on for this player at play cell (q, r) and `now`\n-- (self.events, the server's: { { name, from, to, x?, area? }, ... }): one\n-- with an area (a coarse cell: { w, q, r }, the weather's) only inside it.\nfunction Things:events_on(q, r, now)\n local out = {}\n for _, e in ipairs(self.events or {}) do\n local a = e.area\n if e.from <= now and now < e.to then\n local cq, cr\n if a then cq, cr = hex.parent(self.w_play, q, r, a.w) end\n if not a or (cq == a.q and cr == a.r) then out[#out + 1] = e end\n end\n end\n return out\nend\n\n-- How many times its chances a load has at play cell (q, r) and `now`:\n-- the events on there and then, each one's boost for it multiplied.\nfunction Things:boost(load, q, r, now)\n local x, seen = 1, {}\n for _, e in ipairs(self:events_on(q, r, now)) do\n local ev = (self.def.events or {})[e.name]\n -- (An event counts once, however many of its runs are on: no stacking;\n -- a run's x, a dev's choice, in place of the file's boost.)\n if ev and not seen[e.name] and (ev.boosts or {})[load] then\n seen[e.name] = true\n x = x * (e.x or ev.boosts[load])\n end\n end\n return x\nend\n\n-- The tags the events on at play cell (q, r) and `now` add to it\n-- (event:christmas: its things load there too), in the order they came\n-- on, once each.\nfunction Things:event_tags(q, r, now)\n local out, seen = {}, {}\n for _, e in ipairs(self:events_on(q, r, now)) do\n local ev = (self.def.events or {})[e.name]\n if ev then\n for _, t in ipairs(ev.tags or {}) do\n if not seen[t] then seen[t] = true; out[#out + 1] = t end\n end\n end\n end\n return out\nend\n\n-- The cell's tags with the events' on there and then after them.\nfunction Things:with_event_tags(cell_tags, q, r, now)\n local extra = self:event_tags(q, r, now)\n if #extra == 0 then return cell_tags end\n local all = {}\n for _, t in ipairs(cell_tags) do all[#all + 1] = t end\n for _, t in ipairs(extra) do all[#all + 1] = t end\n return all\nend\n\n-- What slot `slot` of load `l` holds at (q, r) and `now`, for a ball of\n-- `ball` mm (tags: the load's of the cell's, load_tags): its entry (as\n-- loaded lists them), or nil.\nfunction Things:in_load_slot(l, tags, q, r, now, ball, slot)\n local band = l.bands and band_of(ball or 0, l.bands.edges)\n local window = self:window(l.every, q, r, now, slot)\n local roll, tier = slot_below(1000000, self.seed, \"tier\", q, r, l.every, window, slot, band), nil\n local boost = self:boost(l.name, q, r, now)\n for i, t in ipairs(TIERS) do\n local c = (l.chances[t] or 0) * boost\n if roll < c then tier = i break end\n roll = roll - c\n end\n if not (tier and #tags > 0) then return nil end\n local keys = { false }\n if band then\n local own, above = l.bands.own, l.bands.above\n local b = slot <= own and band or slot <= own + above and band + 1 or band - 1\n if b < 0 or b > #l.bands.edges then b = band end\n keys = { \"b\" .. b } -- then the ball's own, then the bands below it\n for k = band, 0, -1 do if k ~= b then keys[#keys + 1] = \"b\" .. k end end\n end\n local first = slot_below(#tags, self.seed, \"tag\", q, r, l.every, window, slot, band)\n local pool\n local tag1 = tags[first + 1]\n if band and l.bands.events == \"down\" and tag1:sub(1, 6) == \"event:\" then\n local b = tonumber(keys[1]:sub(2))\n for k = b, 0, -1 do\n for t = tier, 1, -1 do\n local p = ((l.pools[tag1] or {})[TIERS[t]] or {})[\"b\" .. k]\n if p and #p > 0 then pool = p break end\n end\n if pool then break end\n end\n end\n for _, key in ipairs(pool and {} or keys) do\n for t = tier, 1, -1 do\n for k = 0, #tags - 1 do\n local p = (l.pools[tags[(first + k) % #tags + 1]] or {})[TIERS[t]]\n if p and key then p = p[key] end\n if p and #p > 0 then pool = p break end\n end\n if pool then break end\n end\n if pool then break end\n end\n if not pool then return nil end\n -- A hole (a thing that left the pool: tools/bundle.py thing_pools):\n -- pick again, so only its picks move.\n local id\n for again = 0, HOLE_TRIES do\n id = pool[slot_jump(#pool, self.seed, q, r, l.every, window, slot, band, again > 0 and again or nil) + 1]\n if id ~= \"\" then break end\n end\n if id == \"\" then return nil end\n local e = { id = id, load = l.name, window = window, every = l.every, slot = slot, band = band }\n e.uid, e.instance = loaded_uid(e, q, r), taken_key(q, r, l.every, slot, band) .. \"#\" .. window\n return e\nend\n\nfunction Things:loaded(cell_tags, q, r, now, ball)\n local out = {}\n cell_tags = self:with_event_tags(cell_tags, q, r, now)\n for _, l in ipairs(self:loads()) do\n local tags = load_tags(l, cell_tags)\n for slot = 1, rolls_in(l, tags) do\n out[#out + 1] = self:in_load_slot(l, tags, q, r, now, ball, slot)\n end\n end\n return out\nend\n\n-- A thing knocked off the ball (Things:bonk) is its instance's uid after\n-- this: a thing of its own (not the slot's: that's used), still the same\n-- variant.\nlocal LOOSE = \"loose:\"\nM.LOOSE = LOOSE\nM.ALWAYS = \"always:\" -- a thing every player holds: this, then its number\n\n-- A thing's variant, as its instance (`uid`) has it: one of its\n-- `variants` ({ key, name, chance per million }, in the order they were\n-- added; the rest of the million is its default), or nil for the default.\n-- The same hash everywhere, so the server's replay agrees.\nfunction Things:variant_of(id, uid)\n local vs = id and uid and (self.def.things[id] or {}).variants\n if not vs then return nil end\n uid = uid:gsub(\"^\" .. LOOSE, \"\") -- knocked loose (Things:bonk): the same one\n local roll, at = hash.below(1000000, self.seed, \"variant\", uid), 0\n for _, v in ipairs(vs) do\n at = at + v.chance\n if roll < at then return v end\n end\n return nil\nend\n\n-- A thing's name, as its instance's variant has it.\nfunction Things:name_of(id, uid)\n local v = self:variant_of(id, uid)\n return v and v.name or self.def.things[id].name\nend\n\n-- The words a line can use: (its name: `uid`'s variant's, if\n-- given), , , (the thing's), and in a game with a\n-- ball (its size now).\nfunction Things:words(id, verb, p, now, uid)\n local th = id and self.def.things[id]\n local name = th and self:name_of(id, uid) or \"\"\n local w = { thing = name, [\"thing.cap\"] = (name:gsub(\"^%l\", string.upper)), [\"thing.upper\"] = name:upper(),\n verb = verb or \"\" }\n if th and th.size then w.size = M.size_text(th.size) end\n for _, fn in ipairs(self.words_fns) do fn(self, w, id, p, now, uid) end -- (a module's: )\n return w\nend\n\n-- What a player has to show (nil if nothing): the ball's size and the\n-- biggest star (mm, and as text), when today ends (unix seconds: the ball\n-- starts again), per collection how many kinds are in it out of how many\n-- there are, and the purse (what wins, stars and finds paid: Things:purse).\nfunction Things:stats(p, now)\n local out\n for _, fn in ipairs(self.stats_fns) do -- (the modules': a ball, its star, when today ends)\n out = out or {}\n fn(self, p, now, out)\n end\n for name, kinds in pairs(self.kinds) do\n local found, of = 0, 0\n for id in pairs(kinds) do\n local th = self.def.things[id]\n local have = not th.retired and (p.collections or {})[name] and p.collections[name][id]\n if have or not (th.event_only or th.retired) then of = of + 1 end -- (an event's: once found; a retired one's, never)\n if have then found = found + 1 end\n end\n out = out or {}\n out.collections = out.collections or {}\n out.collections[name] = { found = found, of = of }\n end\n local purse = p and self:purse(p, now) -- (with the last star's pay, if it hasn't been paid yet)\n if purse then\n out = out or {}\n out.purse = purse\n end\n return out\nend\n\n-- A kind's variants, the default first, and how many of each you've\n-- found: { { name, n }, ... }.\nfunction Things:variants_found(p, id)\n local th, f = self.def.things[id], (p.variants or {})[id] or {}\n local out = json.array({ { name = th.name, n = f.default or 0 } })\n for _, v in ipairs(th.variants) do out[#out + 1] = { name = v.name, n = f[v.key] or 0 } end\n return out\nend\n\n-- A collection, every kind that can be in it, smallest first:\n-- { { id, name, size, size_text, n, day }, ... } (n 0 and no day: not\n-- found yet). A thing only events load (event_only) is left out until\n-- it's found; a retired one, always (found or not).\nfunction Things:collection(p, name)\n local kinds = self.kinds[name] or error(\"no collection \" .. tostring(name), 0)\n local have = (p.collections or {})[name] or {}\n local out = json.array()\n for id in pairs(kinds) do\n local th, e = self.def.things[id], have[id]\n if not th.retired and (e or not th.event_only) then -- (an event's thing: once found)\n out[#out + 1] = { id = id, name = th.name, size = th.size, size_text = th.size and M.size_text(th.size),\n part = th.part, n = e and e.n or 0, day = e and e.day, variants = th.variants and self:variants_found(p, id) or nil }\n end\n end\n table.sort(out, function(a, b)\n if (a.size or 0) ~= (b.size or 0) then return (a.size or 0) < (b.size or 0) end\n return a.id < b.id\n end)\n return out\nend\n\n-- A line from the data with the words put in.\nlocal function fill(text, words)\n return (text:gsub(\"<([%w._]+)>\", function(k) return words[k] end))\nend\nM.fill = fill\n\n-- fill, then the things file's word lists for any left. The same\n-- key picks the same line; ctype (the cell's type) is for options with\n-- `when: {type: ...}`. `facts` adds more: a request's lines get `id` (the\n-- thing's, for `when: {id: rabbit}`) and `thing` (its name, so word lists\n-- can say ).\n-- -> the line, and its segments (the grammar's: where each part came\n-- from, for rainbow text), or nil if nothing came from a list.\nfunction Things:line(text, words, key, ctype, q, r, facts)\n local s, segs = fill(text, words), nil\n if self.grammar and s:find(\"<\", 1, true) then\n local f = { type = ctype }\n for k, v in pairs(facts or {}) do f[k] = v end\n local _\n s, _, segs = self.grammar:generate(s, { seed = self.seed, key = key, facts = f, cell = { q = q, r = r } })\n end\n return s, segs\nend\n\n-- A verb's setting `key` for a thing: its own version's, else the game's.\nfunction Things:verb_setting(id, name, key)\n local v = self.def.things[id].verbs[name]\n if v ~= \"global\" and v[key] ~= nil then return v[key] end\n return (self.def.verbs[name] or {})[key]\nend\n\n-- The verbs a thing offers where it is (\"room\" or \"held\"), sorted.\nfunction Things:verbs_of(id, at)\n local out = json.array()\n for name in pairs(self.def.things[id].verbs or {}) do\n local from = self:verb_setting(id, name, \"from\") or \"room\"\n if from == \"any\" or from == at then out[#out + 1] = name end\n end\n table.sort(out)\n return out\nend\n\n-- Every thing you can see or reach: { uid, id, name, at, text, verbs, ... }\n-- plus how to take it away from where it is (internal: `_remove`).\n-- place: the cell's { type (its text's), tags (what loads there: Things:loaded) }.\nfunction Things:reachable(p, place, q, r, now)\n local out = {}\n for _, l in ipairs(self:loaded(place.tags, q, r, now, self:roll_size(p, now))) do\n local uid = l.uid\n local k = taken_key(q, r, l.every, l.slot, l.band)\n if p.taken[k] ~= l.window and not self.claimed[uid] then\n local th = self.def.things[l.id]\n out[#out + 1] = {\n uid = uid, id = l.id, at = \"room\",\n text = not self.quiet and self:line(th.here or self.def.messages.here, self:words(l.id, nil, p, now, uid),\n \"here|\" .. uid, place.type, q, r) or nil,\n _remove = function() p.taken[k] = l.window end,\n }\n end\n end\n local names = {}\n for name in pairs(p.containers) do names[#names + 1] = name end\n table.sort(names)\n for _, name in ipairs(names) do\n local c, place = p.containers[name], self.def.containers[name].place\n for _, e in ipairs(c) do\n if not place or (e.q == q and e.r == r) then\n out[#out + 1] = {\n uid = e.uid, id = e.id, at = place and \"room\" or \"held\", container = name,\n text = place and fill(self.def.messages.left, self:words(e.id, nil, p, now, e.uid)) or nil,\n _remove = function()\n for j, x in ipairs(c) do if x.uid == e.uid then table.remove(c, j) return end end\n end,\n }\n end\n end\n end\n -- What every player holds (`always`: a container's, never taken away).\n for _, id in ipairs(self.always) do\n out[#out + 1] = { uid = M.ALWAYS .. self:num_of(id), id = id, at = \"held\", container = self.def.things[id].always,\n _remove = function() end }\n end\n for _, t in ipairs(out) do\n t.name = self:name_of(t.id, t.uid)\n t.verbs = self:verbs_of(t.id, t.at)\n end\n return out\nend\n\n-- Mark a thing in the world used, as taking it does (an NPC beaten): it's\n-- gone for you until its window ends. -> false if it wasn't there to use.\nfunction Things:use(p, uid, place, q, r, now)\n for _, t in ipairs(self:reachable(p, place, q, r, now)) do\n if t.uid == uid and not t.container then t._remove() return true end\n end\n return false\nend\n\n-- For events: the reachable things without internals, split by where.\n-- `tap`: its only verb here has `tap: true`, so a tap does it (no choosing).\n-- `too_big`: too big to fit a rule of its verbs (a `fits`), for now.\nfunction Things:view(p, place, q, r, now)\n local here, held = json.array(), json.array()\n for _, t in ipairs(self:reachable(p, place, q, r, now)) do\n local th = self.def.things[t.id]\n local tap = #t.verbs == 1 and self:verb_setting(t.id, t.verbs[1], \"tap\") or nil\n local v = { uid = t.uid, id = t.id, name = t.name, text = t.text, verbs = t.verbs,\n container = t.container, shared = th.shared or nil, size = th.size, tap = tap,\n variant = (self:variant_of(t.id, t.uid) or {}).key }\n for mark in pairs(self:marks(p, t.id, t.verbs, now)) do v[mark] = true end -- (too_big: a fits rule's)\n for _, fn in ipairs(self.view_fns) do fn(self, p, v, now) end -- (a module's say on it: a fight's odds)\n if th.always then -- (everyone's: the page has them from the bundle)\n elseif t.at == \"held\" then held[#held + 1] = v else here[#here + 1] = v end\n end\n -- What's here in no telling order (by a hash of each, so the same each\n -- look): slot order would say which is the ball's own band's.\n local order = {}\n for _, v in ipairs(here) do order[v.uid] = hash.hash(self.seed, \"order\", v.uid) end\n table.sort(here, function(a, b) return order[a.uid] < order[b.uid] end)\n return here, held\nend\n\n-- Whether the player holds one of a thing (in a container they carry, or\n-- everyone's: `always`).\nfunction Things:has(p, id)\n if self.def.things[id].always then return true end\n for name, c in pairs(p.containers) do\n if not self.def.containers[name].place then\n for _, e in ipairs(c) do if e.id == id then return true end end\n end\n end\n return false\nend\n\n-- A thing into a container you carry (`uid`: its instance), and its kind\n-- into a collection (`record`, or none); which of its variants it is, by\n-- that uid's hash, as for anything with variants. A first find pays what\n-- the collection says (`pays`).\nfunction Things:give(p, id, uid, into, record, now)\n local c, cd = p.containers[into], self.def.containers[into]\n c[#c + 1] = { id = id, uid = uid }\n if cd.max and #c > cd.max then table.remove(c, 1) end\n if record then self:record(p, record, id, uid, now) end\nend\n\n-- A kind into a collection: how many, the day of the first, which variant\n-- (Things:variant_of, by `uid`); a first one pays what the collection says\n-- (pays: { stardust = 1 }).\nfunction Things:record(p, name, id, uid, now)\n p.collections = p.collections or {}\n local c = p.collections[name] or {}\n p.collections[name] = c\n if c[id] then\n c[id].n = c[id].n + 1\n else\n c[id] = { n = 1, day = (self:day(now)) }\n for what, n in pairs((self.def.collections[name] or {}).pays or {}) do\n p.purse = p.purse or {}\n p.purse[what] = (p.purse[what] or 0) + n\n end\n end\n if self.def.things[id].variants then -- which of its variants (default too) you've found, how many each\n local v = self:variant_of(id, uid)\n p.variants = p.variants or {}\n local f = p.variants[id] or {}\n p.variants[id] = f\n f[v and v.key or \"default\"] = (f[v and v.key or \"default\"] or 0) + 1\n end\nend\n\n-- Registering what a verb can do. An effect: fn(ctx, arg) (arg: the\n-- effect's value, or true for a bare one: `remove`); a rule: fn(ctx,\n-- rule) -> ok; a prefix act: fn(th, p, verb, uid, place, q, r, now) ->\n-- ok, text, ... for an act whose uid starts with `prefix` and verb is\n-- `verb` (a thing nowhere in the room or held: a shop's, a ball's).\nfunction Things:effect(name, fn) self.effects[name] = fn end\n-- A rule's `opts`: failed(ctx, rule) -> what the act returns instead of\n-- the plain refusal (ok, text, ...), or nil for that (a bonk); marks: the\n-- field a room's thing gets when the rule fails for it (too_big).\nfunction Things:rule(name, fn, opts) self.rules[name], self.rule_specs[name] = fn, opts or {} end\nfunction Things:prefix(verb, prefix, fn) self.prefixes[#self.prefixes + 1] = { verb = verb, prefix = prefix, fn = fn } end\n-- What a module adds to the player's purse and stats, and the words a\n-- line can use: settle(fn(p, now)): pay what's due into the purse (before\n-- spending: Things:settle); owed(fn(p, now, out)): what's due but not paid\n-- yet (Things:purse); stats(fn(p, now, out)): what the player has to show;\n-- words(fn(w, id, p, now, uid)); roll_size(fn(p, now)): the size a banded\n-- load rolls for (Things:roll_size).\nfunction Things:on_settle(fn) self.settlers[#self.settlers + 1] = fn end\nfunction Things:on_owed(fn) self.owed_fns[#self.owed_fns + 1] = fn end\nfunction Things:on_stats(fn) self.stats_fns[#self.stats_fns + 1] = fn end\nfunction Things:on_words(fn) self.words_fns[#self.words_fns + 1] = fn end\nfunction Things:on_view(fn) self.view_fns[#self.view_fns + 1] = fn end\nfunction Things:set_roll_size(fn) self.size_fn = fn end\n\n-- What's due into the purse, paid (the modules': a star's pay). Every\n-- hook gets the session's Things first (`self`: its player's local day,\n-- its dev flag), then its arguments.\nfunction Things:settle(p, now)\n for _, fn in ipairs(self.settlers) do fn(self, p, now) end\nend\n\n-- The purse as it will be once what's due is paid (Things:settle): what\n-- a player has to spend at `now`, { [currency] = n }, or nil for nothing.\nfunction Things:purse(p, now)\n local out = {}\n for what, n in pairs(p.purse or {}) do out[what] = n end\n for _, fn in ipairs(self.owed_fns) do fn(self, p, now, out) end\n return next(out) and out or nil\nend\n\n-- The size a banded load rolls for (a module's: the ball's), or nil.\nfunction Things:roll_size(p, now)\n return self.size_fn and self.size_fn(self, p, now) or nil\nend\n\n-- The marks a room's thing gets (`marks` of a rule: too_big) when a rule\n-- of its verbs (the game's or its own) fails for it now, { mark = true }.\nfunction Things:marks(p, id, verbs, now)\n local out, ctx = {}, { th = self, p = p, thing = { id = id }, now = now }\n for _, name in ipairs(verbs) do\n local own = self.def.things[id].verbs[name]\n for _, rules in ipairs({ (self.def.verbs[name] or {}).rules or {}, own ~= \"global\" and own.rules or {} }) do\n for _, rule in ipairs(rules) do\n for k in pairs(rule) do\n local spec = self.rule_specs[k]\n if spec and spec.marks and not out[spec.marks] and not self.rules[k](ctx, rule) then out[spec.marks] = true end\n end\n end\n end\n end\n return out\nend\n\n-- A registry's provide(name, api) and need(name) -> api, over `store`\n-- (what its modules have provided: one needs what a module listed before\n-- it provides, else it's an error saying so).\nfunction M.provides(store)\n return function(name, api) store[name] = api end,\n function(name) return store[name] or error(\"needs the \" .. name .. \" module, listed before it\", 0) end\nend\n\n-- What a module registers with, for these Things (the engine's registry,\n-- Game:registry, is this and its actions): effect, rule, prefix, player,\n-- settle, owed, stats, words, roll_size (each as Things has it), check\n-- (fn(config, def): run now), provide and need (M.provides: what modules\n-- use of each other), things (these), config (the game's, if any).\nfunction M.registry(th, config)\n th.provided = th.provided or {}\n local provide, need = M.provides(th.provided)\n return {\n provide = provide, need = need,\n things = th, config = config,\n effect = function(name, fn) th:effect(name, fn) end,\n rule = function(name, fn, opts) th:rule(name, fn, opts) end,\n prefix = function(verb, prefix, fn) th:prefix(verb, prefix, fn) end,\n player = function(key, spec) th:player(key, spec) end,\n settle = function(fn) th:on_settle(fn) end,\n owed = function(fn) th:on_owed(fn) end,\n stats = function(fn) th:on_stats(fn) end,\n words = function(fn) th:on_words(fn) end,\n view = function(fn) th:on_view(fn) end, -- fn(th, p, v, now): add to a thing's entry in the room (Things:view)\n roll_size = function(fn) th:set_roll_size(fn) end,\n check = function(fn) fn(config, th.def) end,\n action = function() end, -- (no actions without a game: the engine's registry has them)\n }\nend\n\n-- The core's own effects, rules and prefix acts, as the registry has them\n-- (a game's modules add theirs: engine M.load).\nfunction M.core_registry(th)\n th:rule(\"room_in\", function(c, rule)\n local cont, max = c.p.containers[rule.room_in], c.th.def.containers[rule.room_in].max\n return not max or #cont < max\n end)\n th:rule(\"has\", function(c, rule) return c.th:has(c.p, rule.has) end)\n th:effect(\"remove\", function(c) c.thing._remove() end)\n th:effect(\"record\", function(c, name) c.th:record(c.p, name, c.thing.id, c.thing.uid, c.now) end) -- its kind into a collection\n -- The player's own fields (Things:player): what every game's player\n -- has, each read from a save (what this version doesn't know kept\n -- aside: `keep`) and written back by number.\n local function unknown_of(data) return type(data.unknown) == \"table\" and data.unknown or {} end\n th:player(\"containers\", {\n load = function(s, data, p, keep) -- each container's things this version knows (else kept)\n local u = unknown_of(data)\n local function keep_entry(name, e)\n keep.containers = keep.containers or {}\n keep.containers[name] = keep.containers[name] or json.array()\n table.insert(keep.containers[name], e)\n end\n local saved_c, seen = {}, {}\n for _, from in ipairs({ data.containers or {}, u.containers or {} }) do\n for name, list in pairs(type(from) == \"table\" and from or {}) do\n if type(list) == \"table\" then\n saved_c[name], seen[name] = saved_c[name] or {}, seen[name] or {}\n for _, e in ipairs(list) do\n local uid = type(e) == \"table\" and e.uid\n if not (uid and seen[name][uid]) then table.insert(saved_c[name], e) end\n if uid then seen[name][uid] = true end\n end\n end\n end\n end\n local names = {}\n for name in pairs(s.def.containers) do names[#names + 1] = name end\n table.sort(names)\n for _, name in ipairs(names) do\n local list = json.array()\n for _, e in ipairs(saved_c[name] or {}) do\n if type(e) == \"table\" and type(e.uid) == \"string\" and (type(e.id) == \"string\" or math.tointeger(e.id)) then\n local q, r, id = math.tointeger(e.q), math.tointeger(e.r), s:id_of(e.id)\n if id then list[#list + 1] = { id = id, uid = e.uid, q = q, r = r }\n else keep_entry(name, e) end\n end\n end\n p.containers[name] = list\n end\n for name, list in pairs(saved_c) do\n if not s.def.containers[name] then\n for _, e in ipairs(list) do keep_entry(name, e) end\n end\n end\n end,\n save = function(s, p, out)\n out.containers = {}\n for name, list in pairs(p.containers or {}) do\n local l = json.array()\n for _, e in ipairs(list) do l[#l + 1] = { id = s:num_of(e.id), uid = e.uid, q = e.q, r = e.r } end\n out.containers[name] = l\n end\n end,\n })\n th:player(\"taken\", {\n load = function(s, data, p) -- shared things taken: uid -> when it's back\n for k, w in pairs(type(data.taken) == \"table\" and data.taken or {}) do\n if type(k) == \"string\" and math.tointeger(w) then p.taken[k] = math.tointeger(w) end\n end\n end,\n })\n th:player(\"collections\", {\n load = function(s, data, p, keep) -- per collection, the kinds it holds (those a collection can: else kept)\n local u = unknown_of(data)\n local saved = type(data.collections) == \"table\" and data.collections or {}\n -- (roll.cool's first saves kept the compendium as `book`.)\n if type(data.book) == \"table\" and saved.compendium == nil then saved.compendium = data.book end\n local saved_u = type(u.collections) == \"table\" and u.collections or {}\n local cnames = {}\n for name in pairs(saved) do cnames[name] = true end\n for name in pairs(saved_u) do cnames[name] = true end\n for name in pairs(cnames) do\n local kinds = s.kinds[name] or {}\n for _, from in ipairs({ saved_u[name] or {}, saved[name] or {} }) do\n for k, e in pairs(type(from) == \"table\" and from or {}) do\n if type(name) == \"string\" and type(k) == \"string\" and type(e) == \"table\"\n and math.tointeger(e.n) and math.tointeger(e.day) then\n local id = s:id_of(k)\n local known = id and kinds[id]\n local into = known and p or keep\n into.collections = into.collections or {}\n into.collections[name] = into.collections[name] or {}\n into.collections[name][known and id or k] = { n = math.tointeger(e.n), day = math.tointeger(e.day) }\n end\n end\n end\n end\n end,\n save = function(s, p, out)\n if not p.collections then return end\n out.collections = {}\n for name, kinds in pairs(p.collections) do\n out.collections[name] = {}\n for id, e in pairs(kinds) do out.collections[name][s:num_of(id, true)] = e end\n end\n end,\n })\n th:player(\"book\", { load = function() end }) -- (read with the collections)\n th:player(\"purse\", {\n load = function(s, data, p) -- what's been paid (game.win, a star): currency -> how much\n for what, n in pairs(type(data.purse) == \"table\" and data.purse or {}) do\n if type(what) == \"string\" and math.tointeger(n) and n > 0 then\n p.purse = p.purse or {}\n p.purse[what] = math.tointeger(n)\n end\n end\n end,\n })\n th:player(\"variants\", {\n load = function(s, data, p, keep) -- variants found: per kind (else kept), per variant (\"default\" too), how many\n local u = unknown_of(data)\n for _, from in ipairs({ type(u.variants) == \"table\" and u.variants or {},\n type(data.variants) == \"table\" and data.variants or {} }) do\n for k, f in pairs(from) do\n if type(k) == \"string\" and type(f) == \"table\" then\n local id = s:id_of(k)\n local into = id and p or keep\n local got = {}\n for v, n in pairs(f) do\n if type(v) == \"string\" and math.tointeger(n) and n > 0 then got[v] = math.tointeger(n) end\n end\n if next(got) then\n into.variants = into.variants or {}\n into.variants[id or k] = got\n end\n end\n end\n end\n end,\n save = function(s, p, out)\n if not p.variants then return end\n out.variants = {}\n for id, f in pairs(p.variants) do out.variants[s:num_of(id, true)] = f end\n end,\n })\n th:player(\"won\", { load = function() end }) -- NPCs beaten, before 2026-10-19 (a win marks its NPC used now): dropped\n th:effect(\"move_to\", function(c, into)\n local p, thing, cd = c.p, c.thing, c.th.def.containers[into]\n thing._remove()\n local cont = p.containers[into]\n local entry = { id = thing.id, uid = thing.uid }\n if cd.place then entry.q, entry.r = c.q, c.r end\n cont[#cont + 1] = entry\n if cd.max and #cont > cd.max then table.remove(cont, 1) end -- a place loses its oldest\n thing.container = into\n end)\nend\n\nfunction Things:act(p, verb, uid, place, q, r, now)\n for _, x in ipairs(self.prefixes) do\n if verb == x.verb and uid:sub(1, #x.prefix) == x.prefix then return x.fn(self, p, verb, uid, place, q, r, now) end\n end\n local thing\n for _, t in ipairs(self:reachable(p, place, q, r, now)) do\n if t.uid == uid then thing = t break end\n end\n return self:act_on(p, verb, thing, uid, place, q, r, now)\nend\n\n-- A thing a cell's slot holds, as the server found it there (Things:find),\n-- unless the player has used it (taken it, beaten it) or someone has\n-- claimed it: as reachable has it, or nil.\nfunction Things:in_slot(p, id, uid, q, r, every, slot, window, band)\n local k = taken_key(q, r, every, slot, band)\n if not self.def.things[id] or p.taken[k] == window or self.claimed[uid] then return nil end\n return { uid = uid, id = id, at = \"room\", _remove = function() p.taken[k] = window end }\nend\n\n-- The slot that holds `uid` at `now` in a cell with `tags`, by the rolls\n-- alone (Things:loaded; `ball`, mm, for a banded load), whoever has used\n-- it: its entry as loaded has it (id, load, every, slot, window, band,\n-- uid, instance), or nil: no slot held it.\n-- Whether the cell's slots hold `uid` (as loaded has them), and its entry.\n-- A uid names its slot (\".3\"; none: the first), and only that slot of a\n-- load can make a uid with it, so only that one is rolled, in each load,\n-- in order: the same answer as rolling every slot (loaded) and looking,\n-- for any uid (made up too: it's still the whole uid that has to match),\n-- for a tenth of the hashing.\nfunction Things:find(uid, tags, q, r, now, ball)\n local slot = type(uid) == \"string\" and uid:match(\"#%d+%.(%d+)\") or \"1\"\n slot = math.tointeger(tonumber(slot))\n if not slot or slot < 1 then return nil end\n tags = self:with_event_tags(tags, q, r, now)\n for _, l in ipairs(self:loads()) do\n local lt = load_tags(l, tags)\n if slot <= rolls_in(l, lt) then\n local e = self:in_load_slot(l, lt, q, r, now, ball, slot)\n if e and e.uid == uid then return e end\n end\n end\n return nil\nend\n\n-- Do `verb` to `thing` (reachable's, or in_slot's; nil: it isn't there).\nfunction Things:act_on(p, verb, thing, uid, place, q, r, now)\n local def = self.def\n local msg = def.messages\n if not thing then return false, fill(msg.gone, self:words(nil, verb, p, now)) end\n local th = def.things[thing.id]\n local inside -- what a present held (unwrap): \n local said = {} -- what effects say for the line (ctx.say: a fight's )\n local ctx -- the context every rule and effect gets (below)\n local function words()\n local w = self:words(thing.id, verb, p, now, thing.uid)\n w.inside = inside\n for k, v in pairs(said) do w[k] = v end\n return w\n end\n -- What you read: the same act at the same moment reads the same. The\n -- line's words are facts for its word lists too ( inside an\n -- option; `when: {id: goose}`, `when: {outcome: lost}`), as are the\n -- cell's names from the map (place.facts: , , `when:\n -- {shop: true}`). An effect may vary it (ctx.vary: a fight's count, so\n -- two fights in one second read differently). -> the line and its\n -- segments (a word's own part unmarked: only lists and the map's names\n -- are rainbow).\n local function line(text)\n local w = words()\n local facts = {}\n for k, v in pairs(place.facts or {}) do facts[k] = v end\n facts.id = thing.id\n for k, v in pairs(w) do facts[k] = v end\n local key = \"act|\" .. uid .. \"|\" .. verb .. \"|\" .. now .. (ctx.vary and \"|\" .. ctx.vary or \"\")\n local s, segs = self:line(text, w, key, place.type, q, r, facts)\n for _, seg in ipairs(segs or {}) do\n if seg[2] and w[seg[2]:sub(2)] ~= nil then seg[2] = nil end\n end\n return s, segs\n end\n local tv = (th.verbs or {})[verb]\n if tv == nil then return false, fill(msg.cant, words()) end\n local gv = def.verbs[verb]\n local spec = tv == \"global\" and gv or tv\n local from = spec.from or (gv and gv.from) or \"room\"\n if from ~= \"any\" and from ~= thing.at then\n return false, fill(thing.at == \"held\" and msg.carrying or msg.not_carrying, words())\n end\n -- The context every rule and effect gets (the registry's: M.core_registry).\n ctx = { th = self, p = p, thing = thing, uid = uid, verb = verb, place = place, q = q, r = r, now = now,\n words = words, line = line, say = said }\n\n -- 1. Rules: the game's for this verb, then the thing's own. A rule is\n -- one check by name ({fits = 80}, plus `fail` and what the check takes\n -- beside: `bonk`). A rule that fails may say what happens instead of the\n -- refusal (its spec's `failed`: a bonk).\n local function failed(rules)\n for _, rule in ipairs(rules or {}) do\n local which\n for k in pairs(rule) do\n local check = self.rules[k]\n if check and not check(ctx, rule) then which = k end\n end\n if which then return line(rule.fail), rule, which end\n end\n end\n local fail, rule, which = failed(gv and gv.rules)\n if not fail and tv ~= \"global\" then fail, rule, which = failed(tv.rules) end\n if fail then\n local instead = self.rule_specs[which].failed\n if instead then\n local r = table.pack(instead(ctx, rule))\n if r[1] ~= nil then return table.unpack(r, 1, r.n) end\n end\n return false, fail\n end\n\n -- 2. Behavior: the thing's own (or the game's, for `global`), then the\n -- game's too if the thing says `then: global`.\n local steps = { spec }\n if tv ~= \"global\" and tv[\"then\"] == \"global\" then steps[2] = gv end\n -- Room in every container something moves to, before anything changes.\n for _, s in ipairs(steps) do\n for _, e in ipairs(s.effects or {}) do\n if type(e) == \"table\" and e.move_to then\n local c, cd = p.containers[e.move_to], def.containers[e.move_to]\n if cd.max and not cd.place and #c >= cd.max and thing.container ~= e.move_to then\n return false, fill(msg.no_room, words())\n end\n end\n end\n end\n -- 2b. Each effect by name (a bare one, \"remove\", or {name = arg}), from\n -- the registry, in order; what one leaves for the line (inside), the\n -- engine (enter) or the server (note: shared state the act writes, a\n -- tag on a wall, which the server keeps once it has checked the act:\n -- the act's fifth value, as a prefix act's) goes in the context.\n local texts, marks = {}, json.array() -- what it says, and as segments (Things:line)\n for _, s in ipairs(steps) do\n for _, e in ipairs(s.effects or {}) do\n local name, arg = e, true\n if type(e) == \"table\" then name, arg = next(e) end\n local fn = self.effects[name] or error(\"no effect \" .. tostring(name), 0)\n fn(ctx, arg)\n inside = ctx.inside\n end\n if s.text and not self.quiet then\n local t, segs = line(s.text)\n if #texts > 0 then marks[#marks + 1] = { \" \" } end\n texts[#texts + 1] = t\n for _, seg in ipairs(segs or { { t } }) do marks[#marks + 1] = seg end\n end\n end\n self:prune(p, now)\n return true, table.concat(texts, \" \"), ctx.enter, nil, ctx.note, marks, said\nend\n\n-- Forgets p's taken marks from past windows (and any in an older format),\n-- at most once every PRUNE_EVERY seconds of play (act_on, after an act): a\n-- mark only hides its own window's thing, so an old one does nothing but\n-- wait, and going through them all on every act made a long sync's acts\n-- cost the square of their number.\nfunction Things:prune(p, now)\n if self.pruned_at and now >= self.pruned_at and now - self.pruned_at < PRUNE_EVERY then return end\n self.pruned_at = now\n for k, w in pairs(p.taken) do\n local m = mark_of(k)\n -- (A slot's window is the plain count of its periods, or one more:\n -- its stagger is under a period. So a mark below the count is over,\n -- one above it isn't, and only one on it needs the slot's hash.)\n local base = m and (now - self.start) // m.every\n if not m or w < base or (w == base and w < self:window(m.every, m.q, m.r, now, m.slot)) then\n p.taken[k] = nil\n end\n end\nend\n\nreturn M\n",["borges.world"]="-- The world: cells, facts, salience and generated text for one game.\n--\n-- Facts are what the text is about. They come from noise fields (seed +\n-- place), time, and, when the game uses map data, map features the host has\n-- loaded (see mapcells.lua).\n\nlocal hash = require \"borges.hash\"\nlocal hex = require \"borges.hex\"\nlocal noise = require \"borges.noise\"\nlocal grammar = require \"borges.grammar\"\nlocal mapcells = require \"borges.mapcells\"\nlocal sun = require \"borges.sun\"\n\nlocal M = {}\n\nlocal World = {}\nWorld.__index = World\n\n-- Rough 5th..95th percentile of noise output by octave count, used to spread\n-- field values over 0..100.\nlocal NORM = { { 9000, 56000 }, { 15000, 50000 }, { 17500, 47500 } }\n\nlocal CACHE_LIMIT = 20000\n\nfunction M.new(game)\n if type(game.classify) ~= \"function\" then\n error(\"game has no classify hook: its manifest needs `logic:` (see examples/dev/dev.lua)\", 0)\n end\n local self = setmetatable({}, World)\n self.game = game\n self.seed = game.seed\n self.proj = hex.projection(game.ref_lat)\n self.w_play = game.layers.play * 1000\n self.w_region = game.layers.c1 * 1000 -- regions: where salient cells are picked\n self.w_area = game.layers.area * 1000\n self.grammar = grammar.new(game.packs)\n self:setup_flavors(game.flavors or {})\n self.fields = {}\n local names = {}\n for name in pairs(game.fields) do names[#names + 1] = name end\n table.sort(names)\n for _, name in ipairs(names) do\n local def = game.fields[name]\n local norm = NORM[math.min(def.octaves, #NORM)]\n self.fields[#self.fields + 1] = {\n name = name, fn = noise.field(self.seed, name, def.scale * 1000, def.octaves),\n lo = norm[1], hi = norm[2],\n }\n end\n if game.map then\n self.map = mapcells.new(self.proj, self.w_play)\n self.map_themes = game.map.themes\n end\n self.weather = {} -- the forecast by coarse cell (engine GAME.weather), read by time_facts\n self:clear_cache()\n return self\nend\n\n-- Regional flavor (game.flavors, see packs/flavor/regions.yaml). Each rule names a\n-- pack and where it applies:\n-- country = \"US\" or { ... }, region = \"US-FL\" or { ... }\n-- ISO codes from the map's division data\n-- box = { south, west, north, east }\n-- degrees; used when the rule has no codes or no map data\n-- is loaded here (and in games without a map)\n-- weight = 2 how strongly its words show against the generic ones\n-- Every matching rule applies, in list order (broad first), and a flavor can\n-- only ADD to the lists it names: generic lists hold words true anywhere, and\n-- layers add local color on top. Flavor is decided per area (750 m), so a\n-- neighborhood never flickers between two.\nlocal function e7(deg) return math.floor(deg * 10000000 + 0.5) end\n\nlocal function one_of(cond, value)\n if value == nil then return false end\n if type(cond) == \"table\" then\n for _, c in ipairs(cond) do if c == value then return true end end\n return false\n end\n return cond == value\nend\n\n-- A flavor pack as additions only: every list extends, every option weighted.\nlocal function additions(defs, weight)\n local out = {}\n for name, def in pairs(defs) do\n local d = { extend = true }\n for k, v in pairs(def) do\n if type(k) ~= \"number\" and k ~= \"extend\" then d[k] = v end\n end\n for i, o in ipairs(def) do\n if type(o) == \"string\" then\n d[i] = { o, w = weight }\n else\n local c = {}\n for k, v in pairs(o) do c[k] = v end\n c.w = (c.w or 1) * weight\n d[i] = c\n end\n end\n out[name] = d\n end\n return out\nend\n\nfunction World:setup_flavors(rules)\n self.flavors, self.flavor_packs, self.flavor_grammars = {}, {}, {}\n for i, r in ipairs(rules) do\n local name = r.name or error(\"flavor rule #\" .. i .. \" needs a name\")\n local pack = r.pack or error(\"flavor \" .. name .. \" needs a pack\")\n local weight = math.tointeger(r.weight or 1) or error(\"flavor \" .. name .. \": weight must be an integer\")\n local types = {}\n for t, defs in pairs(pack.types or {}) do types[t] = additions(defs, weight) end\n self.flavor_packs[name] = { name = name, symbols = additions(pack.symbols or {}, weight), types = types }\n local box = r.box and { e7(r.box[1]), e7(r.box[2]), e7(r.box[3]), e7(r.box[4]) }\n self.flavors[#self.flavors + 1] = { name = name, country = r.country, region = r.region, box = box }\n end\nend\n\n-- The grammar for a stack of flavors (\"us+florida\"), built on first use.\nfunction World:flavor_grammar(stack)\n local g = self.flavor_grammars[stack]\n if not g then\n local packs = {}\n for _, p in ipairs(self.game.packs) do packs[#packs + 1] = p end\n for name in stack:gmatch(\"[^+]+\") do packs[#packs + 1] = self.flavor_packs[name] end\n g = grammar.new(packs)\n self.flavor_grammars[stack] = g\n end\n return g\nend\n\n-- The flavor stack for a point (stretched coords), like \"us+florida\", or nil.\nfunction World:flavor_at(u, y2)\n local stack = self:flavors_at(u, y2)\n return #stack > 0 and table.concat(stack, \"+\") or nil\nend\n\n-- The flavor rules a play cell is in, as its region cell's center is (the\n-- same for its hundred or so cells: a lookup per region, not per cell).\nfunction World:cell_flavors(q, r)\n local rq, rr = self:region_of(q, r)\n local k = rq .. \":\" .. rr\n local got = self.flavor_cache[k]\n if not got then\n got = self:flavors_at(hex.center(self.w_region, rq, rr))\n self.flavor_cache[k] = got\n end\n return got\nend\n\n-- The flavor rules a point (stretched coords) is in, broad to narrow:\n-- { \"us\", \"pennsylvania\", \"philly\" } (none: {}).\nfunction World:flavors_at(u, y2)\n if #self.flavors == 0 then return {} end\n -- Country and region codes from the nearest division point (any kind).\n local codes\n if self.map then\n for _, kind in ipairs({ \"hood\", \"macrohood\", \"locality\", \"division\" }) do\n codes = self.map:nearest(kind, u, y2, 30000000)\n if codes and codes.country then break end\n codes = nil\n end\n end\n local lat, lon = hex.unproject_e7(self.proj, u, y2)\n local stack = {}\n for _, f in ipairs(self.flavors) do\n local hit\n if (f.country or f.region) and codes then\n hit = one_of(f.country, codes.country) or one_of(f.region, codes.region)\n elseif f.box then\n hit = lat >= f.box[1] and lat <= f.box[3] and lon >= f.box[2] and lon <= f.box[4]\n end\n if hit then stack[#stack + 1] = f.name end\n end\n return stack\nend\n\n-- Add a map tile from the host. Everything derived from map data is\n-- recomputed afterwards.\nfunction World:add_map_tile(tile)\n if not self.map then error(\"this game does not use map data\", 0) end\n local added = self.map:add_tile(tile)\n if added then self:clear_cache() end\n return added\nend\n\n-- Forget all map data (the host sends again the tiles it wants kept).\nfunction World:reset_map()\n if not self.map then error(\"this game does not use map data\", 0) end\n self.map = mapcells.new(self.proj, self.w_play)\n self:clear_cache()\nend\n\n-- The cells (axial ranges: { q0, q1, r0, r1 }) a box of lat/lon (e7: s, w,\n-- n, e) covers, `margin` cells wider each way; nil for a bad box.\nfunction World:cells_within(b, margin)\n local box = type(b) == \"table\" and { math.tointeger(b[1]), math.tointeger(b[2]), math.tointeger(b[3]), math.tointeger(b[4]) }\n if not (box and box[1] and box[2] and box[3] and box[4]) then return nil end\n local q0, q1, r0, r1\n for _, c in ipairs({ { box[1], box[2] }, { box[1], box[4] }, { box[3], box[2] }, { box[3], box[4] } }) do\n local q, r = hex.locate(self.w_play, hex.project_e7(self.proj, c[1], c[2]))\n q0, q1 = math.min(q0 or q, q), math.max(q1 or q, q)\n r0, r1 = math.min(r0 or r, r), math.max(r1 or r, r)\n end\n return { q0 = q0 - margin, q1 = q1 + margin, r0 = r0 - margin, r1 = r1 + margin }\nend\n\n-- True when the map data for this cell is loaded (always true without a map).\nfunction World:mapped(q, r)\n return not self.map or self.map:covered(q, r, self.map_themes)\nend\n\nfunction World:clear_cache()\n self.base_cache, self.region_cache, self.area_cache, self.name_cache = {}, {}, {}, {}\n self.hood_cache = {}\n self.flavor_cache = {}\n self.cache_size = 0\nend\n\nlocal function key(q, r) return q .. \":\" .. r end\n\n-- Layer helpers\n\nfunction World:locate(lat, lon)\n local u, y2 = hex.project(self.proj, lat, lon)\n return hex.locate(self.w_play, u, y2)\nend\n\n-- Where a lat/lon is on the plane ({ u, y2 }: hex.project), and how far\n-- apart two such are (mm): the ground a walk really covered.\nfunction World:point(lat, lon) return { hex.project(self.proj, lat, lon) } end\nfunction World:apart(a, b)\n local dx, dy = (b[1] - a[1]) * 0.8660254037844386, (b[2] - a[2]) / 2\n return math.floor(math.sqrt(dx * dx + dy * dy) + 0.5)\nend\n\nfunction World:center_latlon(q, r)\n return hex.unproject(self.proj, hex.center(self.w_play, q, r))\nend\n\nfunction World:region_of(q, r)\n return hex.parent(self.w_play, q, r, self.w_region)\nend\n\nfunction World:area_of(q, r)\n return hex.parent(self.w_play, q, r, self.w_area)\nend\n\n-- The UTC offset (seconds) at `now` of the time zone at (lat, lon), from\n-- tools/timezones.py's table: a grid of `step` degree squares, each row runs\n-- of [first square, zone] (zone -1, the sea: its longitude / 15 hours,\n-- rounded), and each zone's rules [offset, then when it changes and the\n-- offset after, ...].\nlocal function zone_offset(zones, lat, lon, now)\n local step = zones.step\n local row = zones.rows[math.max(0, math.min(#zones.rows - 1, math.floor((lat + 90) / step))) + 1]\n local j = math.floor((lon + 180) / step)\n local zone = -1\n for k = 1, #row, 2 do\n if row[k] > j then break end\n zone = row[k + 1]\n end\n if zone < 0 then return math.floor(lon / 15 + 0.5) * 3600 end\n local rule = zones.rules[zones.rule[zone + 1] + 1]\n local off = rule[1]\n for k = 2, #rule, 2 do\n if rule[k] > now then break end\n off = rule[k + 1]\n end\n return off\nend\n\n-- The game's day at play cell (q, r) and `now`: with clock.day (a layer,\n-- c4 say) a day ends at local midnight in the time zone at the center of\n-- that layer's cell holding (q, r) (clock.zones: zone_offset), so a cell's\n-- day ends at one time even where zones meet in it; else the UTC day.\n-- -> the day (unix days), that cell (\"q:r\") or nil, and when the day ends\n-- (unix seconds).\nfunction World:day_at(q, r, now)\n local layer = self.game.clock.day\n if not layer then\n local day = now // 86400\n return day, nil, (day + 1) * 86400\n end\n local w = self.game.layers[layer] * 1000\n local cq, cr = hex.parent(self.w_play, q, r, w)\n local lat, lon = hex.unproject(self.proj, hex.center(w, cq, cr))\n local zones = self.game.clock.zones\n local offset = zone_offset(zones, lat, lon, now)\n local day = (now + offset) // 86400\n -- A change of offset (daylight saving) before then moves midnight with it.\n local ends = (day + 1) * 86400 - zone_offset(zones, lat, lon, (day + 1) * 86400 - offset)\n return day, cq .. \":\" .. cr, ends\nend\n\n-- The nearest map feature of a kind within k cells, its props passing\n-- `keep(props)`: searched ring by ring outward, stopping at the first ring\n-- with one. Ties (same distance) go to the smaller name, then to the first\n-- in hex.disk order.\nfunction World:nearest(q, r, kind, k, keep)\n if not self.map then return nil end\n local best\n local function look(cq, cr)\n local items = self.map:items_of(cq, cr, kind)\n if not items then return end\n for _, it in ipairs(items) do\n if (not keep or keep(it.p))\n and (not best or tostring(it.p.name) < tostring(best.name)) then\n best = it.p\n end\n end\n end\n for d = 0, k do\n -- Ring d in hex.disk's order: whole columns at the ends, else the top\n -- and bottom cell of each column.\n for dq = -d, d do\n local lo, hi = math.max(-d, -dq - d), math.min(d, -dq + d)\n if dq == -d or dq == d then\n for dr = lo, hi do look(q + dq, r + dr) end\n else\n look(q + dq, r + lo)\n if hi ~= lo then look(q + dq, r + hi) end\n end\n end\n if best then return best end\n end\n return nil\nend\n\n-- How many map features of a kind lie within k cells (those whose\n-- properties `keep` says yes to, if given: as nearest).\nfunction World:count(q, r, kind, k, keep)\n if not self.map then return 0 end\n local n = 0\n for dq = -k, k do\n for dr = math.max(-k, -dq - k), math.min(k, -dq + k) do\n for _, it in ipairs(self.map:items_of(q + dq, r + dr, kind) or {}) do\n if not keep or keep(it.p) then n = n + 1 end\n end\n end\n end\n return n\nend\n\n-- Base facts: everything derived from the cell alone (fields and type).\n\nfunction World:base_facts(q, r)\n local k = key(q, r)\n local f = self.base_cache[k]\n if f then return f end\n f = {}\n local u, y2 = hex.center(self.w_play, q, r)\n for _, field in ipairs(self.fields) do\n local v = field.fn(u, y2)\n local pct = (v - field.lo) * 100 // (field.hi - field.lo)\n f[field.name] = math.max(0, math.min(100, pct))\n end\n -- The game's classify hook sets f.type, and may ask for named facts:\n -- names = { street = { symbol = \"street_name\", key = \"ns:12\", facts = {...} } }\n local names = self.game.classify(f, {\n roll = hash.below(100, self.seed, \"classify\", q, r),\n q = q, r = r,\n x = u * 1000000 // 1154701, y = y2 // 2,\n items = self.map and self.map:items(q, r) or {},\n mapped = self:mapped(q, r),\n nearest = function(kind, k, keep) return self:nearest(q, r, kind, k, keep) end,\n count = function(kind, k, keep) return self:count(q, r, kind, k, keep) end,\n -- The nearest point-like feature of a kind within max_m meters (points,\n -- and \"water_line\": named water lines), its props passing `keep`.\n near_point = function(kind, max_m, keep)\n return self.map and (self.map:nearest(kind, u, y2, max_m * 1000, keep)) or nil\n end,\n -- The regional flavor rules the cell is in (World:cell_flavors).\n flavors = function() return self:cell_flavors(q, r) end,\n })\n for fact, spec in pairs(names or {}) do\n f[fact] = self:name(spec)\n end\n if self.cache_size > CACHE_LIMIT then self:clear_cache() end\n self.base_cache[k] = f\n self.cache_size = self.cache_size + 1\n return f\nend\n\n-- Names, regions (salience) and areas (neighborhood and feature names).\n\nfunction World:gen(symbol, key_str, facts, q, r, vars)\n local g = facts.flavor and self:flavor_grammar(facts.flavor) or self.grammar\n return g:generate(\"<\" .. symbol .. \">\", {\n seed = self.seed, key = key_str, facts = facts, cell = { q = q, r = r }, vars = vars,\n }) -- text, missing, segments\nend\n\n-- A name shared by every cell that asks for the same key (e.g. one street).\nfunction World:name(spec)\n local k = spec.symbol .. \"|\" .. spec.key\n local n = self.name_cache[k]\n if not n then\n n = self:gen(spec.symbol, \"name|\" .. k, spec.facts or {}, 0, 0)\n self.name_cache[k] = n\n end\n return n\nend\n\nfunction World:region(rq, rr)\n local k = key(rq, rr)\n local reg = self.region_cache[k]\n if reg then return reg end\n\n -- A game with no salient cells (dungeons) scores nothing: all quiet.\n local s = self.game.salience\n local fakes = s.fake_landmarks or 0\n if fakes + s.notable == 0 then\n reg = { q = rq, r = rr, salience = {} }\n self.region_cache[k] = reg\n return reg\n end\n\n local children = hex.children(self.w_play, self.w_region, rq, rr)\n local cu, cy2 = hex.center(self.w_region, rq, rr)\n local cq, cr = hex.locate(self.w_play, cu, cy2)\n\n -- Salience: score every child, keep the best few.\n local scored = {}\n for _, c in ipairs(children) do\n local f = self:base_facts(c[1], c[2])\n local dist = hex.distance(c[1], c[2], cq, cr)\n scored[#scored + 1] = {\n q = c[1], r = c[2],\n score = self.game.salience.score(f, dist),\n tie = hash.hash(self.seed, \"salience\", c[1], c[2]),\n }\n end\n table.sort(scored, function(a, b)\n if a.score ~= b.score then return a.score > b.score end\n return a.tie < b.tie\n end)\n -- The best few are notable. A fake landmark is a cell with a real name\n -- (the game's classify sets fake_landmark_name): the best named cells\n -- among them, up to the game's count. Nothing is one just for scoring\n -- well. (Not the map's `landmark` kind: artwork, towers, stations.)\n local salience = {}\n local cap = s.cap or {} -- type -> highest salience it may have, e.g. water = \"notable\"\n local n = 0\n for i, c in ipairs(scored) do\n local bf = self:base_facts(c.q, c.r)\n local level = i <= fakes + s.notable and \"notable\" or \"quiet\"\n if level == \"notable\" and bf.fake_landmark_name and n < fakes then\n level, n = \"fake_landmark\", n + 1\n end\n local most = cap[bf.type]\n if most == \"quiet\" or (most == \"notable\" and level == \"fake_landmark\") then level = most end\n salience[key(c.q, c.r)] = level\n end\n\n reg = { q = rq, r = rr, salience = salience }\n self.region_cache[k] = reg\n return reg\nend\n\n-- With map data, the name of the nearest real neighborhood to a point (a\n-- bigger one like the Mission when its point is nearer than any smaller\n-- one's), or else the town it's in (suburbs often have no neighborhoods\n-- mapped); nil without.\nfunction World:hood_at(u, y2)\n if not self.map then return nil end\n local h, hd = self.map:nearest(\"hood\", u, y2, 2500000)\n local m, md = self.map:nearest(\"macrohood\", u, y2, 5000000)\n local got = (m and (not h or md < hd)) and m or h or self.map:nearest(\"locality\", u, y2, 8000000)\n return got and got.name\nend\n\n-- The neighborhood a play cell is in, by its own center (hood_at), so the\n-- name changes near where the neighborhood's does; else its area's (a\n-- made-up one, without map data).\nfunction World:hood(q, r, area)\n local k = key(q, r)\n local name = self.hood_cache[k]\n if name == nil then\n name = self:hood_at(hex.center(self.w_play, q, r)) or false\n self.hood_cache[k] = name\n end\n return name or area.name\nend\n\n-- Areas are larger than regions. They name the neighborhood and the parks,\n-- creeks and woods in it, so a creek keeps its name for a while.\nfunction World:area(aq, ar)\n local k = key(aq, ar)\n local area = self.area_cache[k]\n if area then return area end\n local cu, cy2 = hex.center(self.w_area, aq, ar)\n local facts = self:base_facts(hex.locate(self.w_play, cu, cy2))\n local base = \"area|\" .. k\n -- With map data, the area's name is the neighborhood nearest its center\n -- (hood_at); a cell's own is nearest its own (World:hood).\n local hood = self:hood_at(cu, cy2)\n area = {\n q = aq, r = ar,\n flavor = self:flavor_at(cu, cy2),\n name = hood or self:gen(\"region_name\", base .. \"|name\", facts, aq, ar),\n park = self:gen(\"park_name\", base .. \"|park\", facts, aq, ar),\n water = self:gen(\"water_name\", base .. \"|water\", facts, aq, ar),\n woods = self:gen(\"woods_name\", base .. \"|woods\", facts, aq, ar),\n plaza = self:gen(\"plaza_name\", base .. \"|plaza\", facts, aq, ar),\n }\n self.area_cache[k] = area\n return area\nend\n\n-- Name facts a game may hide (names = { street = false }).\nlocal NAME_FACTS = { \"street\", \"cross\", \"intersection\", \"shop\", \"place\", \"feature_place\", \"park\",\n \"water\", \"woods\", \"plaza\", \"cemetery\", \"fake_landmark_name\", \"bridge_name\", \"landmark\" }\n\n-- Full facts for a play cell (stable: no time).\nfunction World:facts(q, r)\n local f = {}\n for k, v in pairs(self:base_facts(q, r)) do f[k] = v end\n -- Water next to land is a shore; only shores get \"the bank\" lines.\n if f.type == \"water\" then\n f.shore = false\n for _, dir in ipairs(hex.DIRS) do\n local nt = self:base_facts(hex.neighbor(q, r, dir)).type\n if nt ~= \"water\" and nt ~= \"unmapped\" then f.shore = true break end\n end\n end\n local rq, rr = self:region_of(q, r)\n local reg = self:region(rq, rr)\n local area = self:area(self:area_of(q, r))\n f.region = self:hood(q, r, area)\n f.flavor = area.flavor\n -- Generated feature names are only for games without map data; map games\n -- name things from the data (set by classify) or not at all.\n if not self.map then\n f.park, f.water = f.park or area.park, f.water or area.water\n f.woods, f.plaza = f.woods or area.woods, f.plaza or area.plaza\n end\n f.salience = reg.salience[key(q, r)] or \"quiet\"\n if f.type == \"commercial\" and not f.shop then\n f.shop = self:gen(\"shop_name\", \"shop|\" .. key(q, r), f, q, r)\n end\n local names = self.game.names or {}\n for _, k in ipairs(NAME_FACTS) do\n if f[k] ~= nil and names[k] == false then f[k] = nil end\n end\n if f.salience == \"fake_landmark\" then\n -- A game that hides their names (names = { fake_landmark_name = false })\n -- has none.\n f.fake_landmark = f.fake_landmark_name\n if not f.fake_landmark then f.salience = \"notable\" end\n end\n return f, reg, area\nend\n\n-- Facts that change with time: time of day, the sun's height and the weather.\n-- Time of day from the sun where the cell is: dawn and dusk while it's in\n-- twilight (from 12 degrees below the horizon, when the sky starts to\n-- lighten, to 6 above), night and evening when it's down further (evening\n-- until 10 pm, solar time), and the day split by the solar clock. So dawn\n-- comes late in winter, dusk late in summer, and near the poles there's\n-- midnight sun and polar night.\nlocal TWILIGHT = sun.sin_md(-12000)\nlocal DAYLIGHT = sun.sin_md(6000)\n-- How high the sun is while it's up (the fact sun): low under 20 degrees\n-- (light low and sideways, long shadows), high from 45 (short shadows),\n-- else mid. By the sun, not the clock: 10:50 on an October morning is mid,\n-- and a winter midday's sun is never high where it's far from the equator.\nlocal LOW_SUN = sun.sin_md(20000)\nlocal HIGH_SUN = sun.sin_md(45000)\n-- The kinds of sky (go/rules/rules.go Weather), the one said first when it says\n-- several (rain with thunder: thunder).\nlocal SKIES = { \"thunder\", \"snow\", \"sleet\", \"rain\", \"fog\", \"cloudy\", \"clear\" }\nlocal FALLING = { thunder = true, snow = true, sleet = true, rain = true }\n\nfunction World:time_facts(q, r, now)\n local clock = self.game.clock\n local u, y2 = hex.center(self.w_play, q, r)\n local up, minutes = sun.at(now, hex.unproject_e7(self.proj, u, y2))\n local tod\n if up < TWILIGHT then tod = (minutes >= 720 and minutes < 1320) and \"evening\" or \"night\"\n elseif up < DAYLIGHT then tod = minutes < 720 and \"dawn\" or \"dusk\"\n elseif minutes < 690 then tod = \"morning\"\n elseif minutes < 870 then tod = \"midday\"\n else tod = \"afternoon\" end\n local height = up >= DAYLIGHT and ((up < LOW_SUN and \"low\") or (up >= HIGH_SUN and \"high\") or \"mid\") or nil\n\n -- The weather: the forecast's for the coarse cell (q, r) is in, from the\n -- server (engine GAME.weather: go/server/weather.go; self.weather, by cell),\n -- till its hour's end. None known (no answer yet, or another cell), none\n -- said: nothing's made up.\n -- Facts: weather (SKIES), wind (windy, calm), heat (hot, cold, mild),\n -- and with something falling, amount (light, steady, heavy).\n local weather, wind, heat, amount\n for _, s in pairs(self.weather) do\n local cq, cr = hex.parent(self.w_play, q, r, s.w)\n if now < s.to and cq == s.q and cr == s.r then\n local k = s.kinds\n for _, sky in ipairs(SKIES) do\n if k[sky] then weather = sky; break end\n end\n weather = weather or \"cloudy\"\n wind = k.windy and \"windy\" or \"calm\"\n heat = (k.hot and \"hot\") or (k.cold and \"cold\") or \"mild\"\n if FALLING[weather] then amount = (k.heavy and \"heavy\") or (k.light and \"light\") or \"steady\" end\n break\n end\n end\n\n return { tod = tod, sun = height, weather = weather, wind = wind, heat = heat, amount = amount,\n epoch = (now - clock.start) // clock.ambient }\nend\n\n-- What the sky's like, as one string: when it changes, an ambient line\n-- comes (engine.lua Session:ambient_mode).\nfunction M.sky(t)\n return table.concat({ t.tod, t.weather or \"\", t.wind or \"\", t.heat or \"\", t.amount or \"\" }, \"|\")\nend\n\nlocal AMBIENT_TRIES = 8\n\n-- The ambient line (time of day and weather) for a cell. `mode`: \"always\"\n-- gives a line, preferring one that says nothing in `avoid` (a set of\n-- recently said sentences); \"fresh\" gives one only if it can avoid them all;\n-- nil gives none. Returns text, segments, or nil.\nfunction World:ambient(f, q, r, epoch, mode, avoid)\n if not mode then return nil end\n local first, first_segs\n for i = 1, AMBIENT_TRIES do\n local text, _, segs = self:gen(\"ambient\", \"ambient|\" .. key(q, r) .. \"|\" .. epoch .. \"|\" .. i, f, q, r)\n if text == \"\" then return nil end\n local stale = false\n for _, s in ipairs(segs) do\n if s[2] and avoid[s[1]] then stale = true; break end\n end\n if not stale then return text, segs end\n if not first then first, first_segs = text, segs end\n end\n if mode == \"always\" then return first, first_segs end\n return nil\nend\n\n-- The sentences an ambient line was made of (its picks from word lists), to\n-- avoid saying them again soon.\nfunction M.ambient_parts(segs)\n local out = {}\n for _, s in ipairs(segs or {}) do\n if s[2] and s[2]:sub(1, 1) ~= \"=\" then out[#out + 1] = s[1] end\n end\n return out\nend\n\n-- Title, description and the changing ambient line for a cell. `opts`:\n-- ambient (\"always\", \"fresh\" or nil, see World:ambient) and avoid.\nfunction World:describe(q, r, now, opts)\n opts = opts or { ambient = \"always\" }\n local f, reg, area = self:facts(q, r)\n local t = self:time_facts(q, r, now)\n for k, v in pairs(t) do f[k] = v end\n local k = key(q, r)\n local missing, marks = {}, {}\n local function gen(field, symbol, key_str)\n local text, miss, segs = self:gen(symbol, key_str, f, q, r)\n for _, m in ipairs(miss) do missing[#missing + 1] = symbol .. \": \" .. m end\n marks[field] = segs\n return text\n end\n -- Map data not loaded yet: the pack can say so (title_unmapped,\n -- description_unmapped); the host should load it and look again.\n local mapped = self:mapped(q, r)\n local suffix = (not mapped and self.grammar.symbols.title_unmapped) and \"_unmapped\" or \"\"\n local ambient\n ambient, marks.ambient = self:ambient(f, q, r, t.epoch, opts.ambient, opts.avoid or {})\n return {\n ambient = ambient,\n sky = M.sky(t),\n title = gen(\"title\", \"title\" .. suffix, \"title|\" .. k),\n description = gen(\"description\", \"description\" .. suffix, \"desc|\" .. k),\n marks = marks, -- where each part of the text came from (grammar segments)\n facts = f,\n mapped = mapped,\n region = { q = reg.q, r = reg.r },\n area = { q = area.q, r = area.r, name = f.region }, -- (the cell's neighborhood: World:hood)\n missing = missing,\n }\nend\n\n-- The line for arriving at (q, r) from (fq, fr) and its segments, or nil if\n-- the game's packs have no move_line. `extra`: pace, dir, from_type,\n-- type_change, pace_change.\nfunction World:move_line(fq, fr, q, r, extra)\n if not self.grammar.symbols.move_line then return nil end\n local f = {}\n for k, v in pairs(self:facts(q, r)) do f[k] = v end\n for k, v in pairs(extra) do f[k] = v end\n local k = \"move|\" .. key(fq, fr) .. \">\" .. key(q, r)\n -- How you leave one kind of place and reach another: each cell type's own\n -- words (move_from and move_into, in its pack), each picked as its type.\n local from = {}\n for kk, v in pairs(self:facts(fq, fr)) do from[kk] = v end\n -- (Made on their own, they come out capitalized: they go mid-sentence.)\n local function part(...) return ((self:gen(...)):gsub(\"^%u\", string.lower)) end\n local vars = {\n leave = part(\"move_from\", k .. \"|from\", from, fq, fr),\n arrive = part(\"move_into\", k .. \"|into\", f, q, r),\n }\n local text, _, segs = self:gen(\"move_line\", k, f, q, r, vars)\n if text == \"\" then return nil end\n return text, segs\nend\n\n-- The cell's points of interest (the map's places), best first (the\n-- map's confidence, then name): { { name, category }, ... }, or nil.\nfunction World:places(q, r)\n local list = {}\n for _, it in ipairs(self.map and self.map:items_of(q, r, \"place\") or {}) do\n local p = it.p\n if p and type(p.name) == \"string\" and p.name ~= \"\" then list[#list + 1] = p end\n end\n if #list == 0 then return nil end\n table.sort(list, function(a, b)\n if (a.conf or 0) ~= (b.conf or 0) then return (a.conf or 0) > (b.conf or 0) end\n return a.name < b.name\n end)\n local out = {}\n -- (\"place\" is the tiles' word for no category: none.)\n for i, p in ipairs(list) do out[i] = { name = p.name, category = p.cat ~= \"place\" and p.cat or nil } end\n return out\nend\n\n-- A short label for a cell, used for exits and the map.\nfunction World:title(q, r)\n local f = self:facts(q, r)\n local symbol = \"title\"\n if not self:mapped(q, r) and self.grammar.symbols.title_unmapped then\n symbol = \"title_unmapped\"\n end\n return (self:gen(symbol, symbol .. \"|\" .. key(q, r), f, q, r))\nend\n\nreturn M\n",}, function(A) return {format=2,name="roll_cool",caps=A{"replay","check_act","apply_act","carries","find","values",},config={ref_lat=40.0,layers={play=15,c1=150,area=750,c2=1500,c3=15000,c4=150000,altar=500,},clock={start=1767225600,ambient=900,day="c4",zones={step=0.5,rule=A{0,1,1,2,3,4,5,6,5,7,7,8,1,1,9,10,1,0,1,5,1,1,11,12,10,1,1,13,10,14,1,10,1,1,1,1,1,15,14,1,16,2,2,8,17,1,18,1,2,2,2,4,19,20,1,21,22,23,22,24,2,25,17,26,26,8,24,27,28,1,22,29,2,2,25,28,21,22,1,2,4,4,24,30,8,31,1,4,27,1,6,7,32,26,22,1,21,27,1,1,33,33,25,6,29,24,34,27,29,6,21,2,4,27,9,29,2,25,4,35,22,29,4,5,13,22,22,7,7,24,7,1,1,29,29,33,2,4,13,13,29,7,13,7,25,8,24,6,13,29,36,36,27,13,13,29,35,6,25,2,30,6,22,13,7,13,13,35,4,22,22,22,29,4,22,13,4,35,35,22,13,8,35,22,22,6,8,35,37,22,13,22,35,17,27,22,4,26,22,22,22,22,22,22,38,35,27,39,22,22,27,29,25,40,2,35,39,41,34,7,39,42,7,35,26,5,33,39,4,43,44,35,4,43,38,45,34,46,41,28,47,43,4,4,4,48,46,49,50,29,50,38,51,52,47,4,53,33,54,34,54,54,55,55,5,55,4,39,46,5,56,5,33,39,39,39,39,26,26,34,55,5,5,43,55,54,26,4,39,39,55,55,5,7,50,55,55,8,55,5,51,24,54,4,51,51,54,5,6,43,55,54,26,24,55,55,5,43,57,58,55,43,43,24,55,55,4,27,5,59,60,22,55,5,38,61,35,35,46,55,6,33,33,46,46,55,55,6,26,7,5,25,62,39,46,55,4,51,26,63,26,6,34,6,38,46,54,63,63,55,2,55,43,54,6,4,63,54,38,55,63,33,64,54,54,38,38,61,46,8,25,13,50,64,55,43,51,13,},rules=A{A{46800,1775311200,43200,1790431200,46800,1806760800,43200,1821880800,46800,1838210400,43200,1853330400,46800,1869660000,43200,1885384800,46800,1901714400,43200,1916834400,46800,1933164000,43200,1948284000,46800,1964613600,43200,1979733600,46800,1996063200,43200,2011183200,46800,2027512800,43200,2042632800,46800,2058962400,43200,2074687200,46800,2091016800,43200,2106136800,46800,},A{-10800,},A{7200,},A{0,1774746000,7200,1792890000,0,1806195600,7200,1824944400,0,1837645200,7200,1856394000,0,1869094800,7200,1887843600,0,1901149200,7200,1919293200,0,1932598800,7200,1950742800,0,1964048400,7200,1982797200,0,1995498000,7200,2014246800,0,2026947600,7200,2045696400,0,2058397200,7200,2077146000,0,2090451600,7200,2108595600,0,},A{10800,},A{18000,},A{25200,},A{28800,},A{36000,},A{-7200,},A{39600,1775318400,36000,1791043200,39600,1806768000,36000,1822492800,39600,1838217600,36000,1853942400,39600,1869667200,36000,1885996800,39600,1901721600,36000,1917446400,39600,1933171200,36000,1948896000,39600,1964620800,36000,1980345600,39600,1996070400,36000,2011795200,39600,2027520000,36000,2043244800,39600,2058969600,36000,2075299200,39600,2091024000,36000,2106748800,39600,},A{49500,1775311200,45900,1790431200,49500,1806760800,45900,1821880800,49500,1838210400,45900,1853330400,49500,1869660000,45900,1885384800,49500,1901714400,45900,1916834400,49500,1933164000,45900,1948284000,49500,1964613600,45900,1979733600,49500,1996063200,45900,2011183200,49500,2027512800,45900,2042632800,49500,2058962400,45900,2074687200,49500,2091016800,45900,2106136800,49500,},A{-10800,1775358000,-14400,1788667200,-10800,1806807600,-14400,1820116800,-10800,1838257200,-14400,1851566400,-10800,1870311600,-14400,1883016000,-10800,1901761200,-14400,1915070400,-10800,1933210800,-14400,1946520000,-10800,1964660400,-14400,1977969600,-10800,1996110000,-14400,2009419200,-10800,2027559600,-14400,2040868800,-10800,2059614000,-14400,2072318400,-10800,2091063600,-14400,2104372800,-10800,},A{0,},A{37800,1775320200,34200,1791045000,37800,1806769800,34200,1822494600,37800,1838219400,34200,1853944200,37800,1869669000,34200,1885998600,37800,1901723400,34200,1917448200,37800,1933173000,34200,1948897800,37800,1964622600,34200,1980347400,37800,1996072200,34200,2011797000,37800,2027521800,34200,2043246600,37800,2058971400,34200,2075301000,37800,2091025800,34200,2106750600,37800,},A{31500,},A{39600,1775314800,37800,1791041400,39600,1806764400,37800,1822491000,39600,1838214000,37800,1853940600,39600,1869663600,37800,1885995000,39600,1901718000,37800,1917444600,39600,1933167600,37800,1948894200,39600,1964617200,37800,1980343800,39600,1996066800,37800,2011793400,39600,2027516400,37800,2043243000,39600,2058966000,37800,2075297400,39600,2091020400,37800,2106747000,39600,},A{-36000,},A{-18000,1775358000,-21600,1788667200,-18000,1806807600,-21600,1820116800,-18000,1838257200,-21600,1851566400,-18000,1870311600,-21600,1883016000,-18000,1901761200,-21600,1915070400,-18000,1933210800,-21600,1946520000,-18000,1964660400,-21600,1977969600,-18000,1996110000,-21600,2009419200,-18000,2027559600,-21600,2040868800,-18000,2059614000,-21600,2072318400,-18000,2091063600,-21600,2104372800,-18000,},A{34200,},A{-28800,},A{46800,},A{-14400,},A{-32400,},A{39600,},A{43200,},A{14400,},A{-18000,},A{-39600,},A{3600,},A{23400,},A{50400,},A{-34200,},A{32400,},A{21600,},A{-21600,},A{19800,},A{-3600,},A{-25200,},A{-18000,1772953200,-14400,1793512800,-18000,1805007600,-14400,1825567200,-18000,1836457200,-14400,1857016800,-18000,1867906800,-14400,1888466400,-18000,1899356400,-14400,1919916000,-18000,1930806000,-14400,1951365600,-18000,1962860400,-14400,1983420000,-18000,1994310000,-14400,2014869600,-18000,2025759600,-14400,2046319200,-18000,2057209200,-14400,2077768800,-18000,2088658800,-14400,2109218400,-18000,},A{-18000,1772946000,-14400,1793509200,-18000,1805000400,-14400,1825563600,-18000,1836450000,-14400,1857013200,-18000,1867899600,-14400,1888462800,-18000,1899349200,-14400,1919912400,-18000,1930798800,-14400,1951362000,-18000,1962853200,-14400,1983416400,-18000,1994302800,-14400,2014866000,-18000,2025752400,-14400,2046315600,-18000,2057202000,-14400,2077765200,-18000,2088651600,-14400,2109214800,-18000,},A{3600,1771120800,0,1774144800,3600,1789866000,0,},A{7200,1776981600,10800,1793307600,7200,1809036000,10800,1824757200,7200,1840485600,10800,1856206800,7200,1871935200,10800,1887656400,7200,1903384800,10800,1919710800,7200,1934834400,10800,1951160400,7200,1966888800,10800,1982610000,7200,1998338400,10800,2014059600,7200,2029788000,10800,2045509200,7200,2061237600,10800,2076958800,7200,2092687200,10800,2109013200,7200,},A{-21600,1772956800,-18000,1793516400,-21600,1805011200,-18000,1825570800,-21600,1836460800,-18000,1857020400,-21600,1867910400,-18000,1888470000,-21600,1899360000,-18000,1919919600,-21600,1930809600,-18000,1951369200,-21600,1962864000,-18000,1983423600,-21600,1994313600,-18000,2014873200,-21600,2025763200,-18000,2046322800,-21600,2057212800,-18000,2077772400,-21600,2088662400,-18000,2109222000,-21600,},A{12600,},A{20700,},A{0,1774746000,3600,1792890000,0,1806195600,3600,1824944400,0,1837645200,3600,1856394000,0,1869094800,3600,1887843600,0,1901149200,3600,1919293200,0,1932598800,3600,1950742800,0,1964048400,3600,1982797200,0,1995498000,3600,2014246800,0,2026947600,3600,2045696400,0,2058397200,3600,2077146000,0,2090451600,3600,2108595600,0,},A{-28800,1772964000,-25200,1793523600,-28800,1805018400,-25200,1825578000,-28800,1836468000,-25200,1857027600,-28800,1867917600,-25200,1888477200,-28800,1899367200,-25200,1919926800,-28800,1930816800,-25200,1951376400,-28800,1962871200,-25200,1983430800,-28800,1994320800,-25200,2014880400,-28800,2025770400,-25200,2046330000,-28800,2057220000,-25200,2077779600,-28800,2088669600,-25200,2109229200,-28800,},A{16200,},A{7200,1774569600,10800,1792882800,7200,1806019200,10800,1824937200,7200,1837468800,10800,1856386800,7200,1868918400,10800,1887836400,7200,1900972800,10800,1919286000,7200,1932422400,10800,1950735600,7200,1963872000,10800,1982790000,7200,1995321600,10800,2014239600,7200,2026771200,10800,2045689200,7200,2058220800,10800,2077138800,7200,2090275200,10800,2108588400,7200,},A{-25200,1772960400,-21600,1793520000,-25200,1805014800,-21600,1825574400,-25200,1836464400,-21600,1857024000,-25200,1867914000,-21600,1888473600,-25200,1899363600,-21600,1919923200,-25200,1930813200,-21600,1951372800,-25200,1962867600,-21600,1983427200,-25200,1994317200,-21600,2014876800,-25200,2025766800,-21600,2046326400,-25200,2057216400,-21600,2077776000,-25200,2088666000,-21600,2109225600,-25200,},A{-14400,1772949600,-10800,1793509200,-14400,1805004000,-10800,1825563600,-14400,1836453600,-10800,1857013200,-14400,1867903200,-10800,1888462800,-14400,1899352800,-10800,1919912400,-14400,1930802400,-10800,1951362000,-14400,1962856800,-10800,1983416400,-14400,1994306400,-10800,2014866000,-14400,2025756000,-10800,2046315600,-14400,2057205600,-10800,2077765200,-14400,2088655200,-10800,2109214800,-14400,},A{7200,1774656000,10800,1792796400,7200,1806105600,10800,1824850800,7200,1837555200,10800,1856300400,7200,1869004800,10800,1887750000,7200,1901059200,10800,1919199600,7200,1932508800,10800,1950649200,7200,1963958400,10800,1982703600,7200,1995408000,10800,2014153200,7200,2026857600,10800,2045602800,7200,2058307200,10800,2077052400,7200,2090361600,10800,2107897200,7200,},A{7200,1774735200,10800,1792875600,7200,1806184800,10800,1824930000,7200,1837634400,10800,1856379600,7200,1869084000,10800,1887829200,7200,1901138400,10800,1919278800,7200,1932588000,10800,1950728400,7200,1964037600,10800,1982782800,7200,1995487200,10800,2014232400,7200,2026936800,10800,2045682000,7200,2058386400,10800,2077131600,7200,2090440800,10800,2108581200,7200,},A{7200,1774746000,10800,1792890000,7200,1806195600,10800,1824944400,7200,1837645200,10800,1856394000,7200,1869094800,10800,1887843600,7200,1901149200,10800,1919293200,7200,1932598800,10800,1950742800,7200,1964048400,10800,1982797200,7200,1995498000,10800,2014246800,7200,2026947600,10800,2045696400,7200,2058397200,10800,2077146000,7200,2090451600,10800,2108595600,7200,},A{3600,1774746000,7200,1792890000,3600,1806195600,7200,1824944400,3600,1837645200,7200,1856394000,3600,1869094800,7200,1887843600,3600,1901149200,7200,1919293200,3600,1932598800,7200,1950742800,3600,1964048400,7200,1982797200,3600,1995498000,7200,2014246800,3600,2026947600,7200,2045696400,3600,2058397200,7200,2077146000,3600,2090451600,7200,2108595600,3600,},A{-3600,1774746000,0,1792890000,-3600,1806195600,0,1824944400,-3600,1837645200,0,1856394000,-3600,1869094800,0,1887843600,-3600,1901149200,0,1919293200,-3600,1932598800,0,1950742800,-3600,1964048400,0,1982797200,-3600,1995498000,0,2014246800,-3600,2026947600,0,2045696400,-3600,2058397200,0,2077146000,-3600,2090451600,0,2108595600,-3600,},A{-10800,1772946000,-7200,1793505600,-10800,1805000400,-7200,1825560000,-10800,1836450000,-7200,1857009600,-10800,1867899600,-7200,1888459200,-10800,1899349200,-7200,1919908800,-10800,1930798800,-7200,1951358400,-10800,1962853200,-7200,1983412800,-10800,1994302800,-7200,2014862400,-10800,2025752400,-7200,2046312000,-10800,2057202000,-7200,2077761600,-10800,2088651600,-7200,2109211200,-10800,},A{-12600,1772947800,-9000,1793507400,-12600,1805002200,-9000,1825561800,-12600,1836451800,-9000,1857011400,-12600,1867901400,-9000,1888461000,-12600,1899351000,-9000,1919910600,-12600,1930800600,-9000,1951360200,-12600,1962855000,-9000,1983414600,-12600,1994304600,-9000,2014864200,-12600,2025754200,-9000,2046313800,-12600,2057203800,-9000,2077763400,-12600,2088653400,-9000,2109213000,-12600,},A{-28800,1772964000,-25200,},A{-21600,1772956800,-18000,},A{-25200,1772960400,-21600,},A{-36000,1772971200,-32400,1793530800,-36000,1805025600,-32400,1825585200,-36000,1836475200,-32400,1857034800,-36000,1867924800,-32400,1888484400,-36000,1899374400,-32400,1919934000,-36000,1930824000,-32400,1951383600,-36000,1962878400,-32400,1983438000,-36000,1994328000,-32400,2014887600,-36000,2025777600,-32400,2046337200,-36000,2057227200,-32400,2077786800,-36000,2088676800,-32400,2109236400,-36000,},A{-32400,1772967600,-28800,1793527200,-32400,1805022000,-28800,1825581600,-32400,1836471600,-28800,1857031200,-32400,1867921200,-28800,1888480800,-32400,1899370800,-28800,1919930400,-32400,1930820400,-28800,1951380000,-32400,1962874800,-28800,1983434400,-32400,1994324400,-28800,2014884000,-32400,2025774000,-28800,2046333600,-32400,2057223600,-28800,2077783200,-32400,2088673200,-28800,2109232800,-32400,},A{-7200,1774746000,-3600,1792890000,-7200,1806195600,-3600,1824944400,-7200,1837645200,-3600,1856394000,-7200,1869094800,-3600,1887843600,-7200,1901149200,-3600,1919293200,-7200,1932598800,-3600,1950742800,-7200,1964048400,-3600,1982797200,-7200,1995498000,-3600,2014246800,-7200,2026947600,-3600,2045696400,-7200,2058397200,-3600,2077146000,-7200,2090451600,-3600,2108595600,-7200,},},rows=A{A{0,0,},A{0,0,},A{0,0,},A{0,0,},A{0,0,},A{0,0,},A{0,0,},A{0,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,279,-1,292,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,256,-1,297,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,244,-1,301,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,245,-1,306,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,245,-1,310,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,245,-1,315,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,246,-1,319,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,246,-1,324,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,246,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,247,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0,},A{0,-1,200,1,225,2,247,-1,349,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,718,-1,},A{0,-1,200,1,225,2,247,-1,349,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,714,-1,},A{0,-1,200,1,225,2,248,-1,352,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,710,-1,},A{0,-1,200,1,225,2,248,-1,357,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,706,-1,},A{0,-1,200,1,225,2,249,-1,414,5,470,6,512,-1,516,7,532,8,554,10,600,11,680,0,702,-1,},A{0,-1,200,1,225,2,249,-1,421,5,470,6,507,-1,519,7,532,8,554,10,600,11,680,0,698,-1,},A{0,-1,200,1,225,2,249,-1,429,5,470,6,501,-1,522,7,532,8,554,10,600,11,680,0,694,-1,},A{0,-1,200,1,225,2,250,-1,436,5,470,6,495,-1,525,7,532,8,554,10,600,11,680,0,690,-1,},A{0,-1,226,2,250,-1,444,5,470,6,490,-1,528,7,532,8,554,10,600,11,680,0,686,-1,},A{0,-1,229,2,250,-1,451,5,470,6,484,-1,531,7,532,8,554,10,600,11,680,0,682,-1,},A{0,-1,230,12,232,2,251,-1,459,5,470,6,478,-1,538,8,554,10,589,-1,},A{0,-1,231,12,232,2,251,-1,466,5,470,6,473,-1,549,8,554,10,566,-1,},A{0,-1,232,13,238,2,251,-1,},A{0,-1,233,13,245,2,252,-1,},A{0,-1,234,13,244,2,251,-1,},A{0,-1,238,13,242,2,249,-1,},A{0,-1,243,2,247,-1,},A{0,-1,267,2,271,-1,},A{0,-1,266,2,273,-1,},A{0,-1,268,2,273,-1,},A{0,-1,},A{0,-1,305,14,306,-1,},A{0,-1,},A{0,-1,307,14,308,-1,},A{0,-1,306,14,308,-1,},A{0,-1,306,14,307,-1,},A{0,-1,303,14,304,-1,305,14,306,-1,},A{0,-1,222,13,223,-1,304,14,306,-1,},A{0,-1,220,13,227,-1,},A{0,-1,217,13,228,-1,677,15,678,-1,},A{0,-1,213,13,223,2,233,-1,286,14,289,-1,677,15,678,-1,},A{0,-1,213,13,223,2,227,-1,284,14,288,-1,677,15,679,-1,},A{0,-1,212,13,223,2,226,-1,276,14,277,-1,},A{0,-1,210,13,223,2,224,-1,},A{0,-1,210,13,223,2,224,-1,241,16,242,-1,698,17,699,-1,},A{0,-1,209,13,222,18,224,-1,238,16,244,-1,},A{0,-1,209,13,216,18,223,-1,237,16,245,-1,},A{0,-1,209,13,215,18,223,-1,237,16,245,-1,},A{0,-1,208,13,215,18,222,-1,691,17,693,-1,},A{0,-1,208,13,213,18,224,-1,},A{0,-1,208,13,213,18,225,-1,497,19,501,-1,717,17,718,-1,},A{0,-1,208,13,214,18,225,-1,497,19,502,-1,},A{0,-1,208,20,209,13,212,20,215,18,227,-1,497,19,500,-1,},A{0,-1,208,20,215,18,229,-1,},A{0,-1,208,20,215,18,229,-1,717,17,719,-1,},A{0,-1,209,20,216,18,229,-1,694,17,697,-1,},A{0,-1,208,20,216,18,229,-1,435,3,437,-1,693,17,694,-1,695,17,699,-1,},A{0,-1,209,20,217,18,229,-1,460,19,461,-1,463,19,465,-1,693,17,701,-1,},A{0,-1,209,20,216,21,230,-1,692,17,702,-1,},A{0,-1,209,20,217,21,230,-1,693,17,702,-1,},A{0,-1,209,20,218,21,230,-1,694,17,703,-1,},A{0,-1,6,22,9,-1,210,20,216,21,230,-1,695,17,704,-1,},A{0,-1,6,22,8,-1,210,23,211,20,214,23,217,21,230,-1,652,24,655,-1,697,17,707,-1,},A{0,-1,210,23,217,21,231,-1,651,24,657,-1,699,17,706,-1,},A{0,-1,211,23,216,21,233,-1,650,24,657,-1,701,17,707,-1,},A{0,-1,211,23,216,21,233,-1,650,24,657,-1,702,17,708,-1,},A{0,-1,211,23,216,25,234,-1,649,24,657,-1,702,17,709,-1,710,17,711,-1,},A{0,-1,212,23,216,25,235,-1,649,24,657,-1,704,17,713,-1,},A{0,-1,212,23,216,25,234,26,236,-1,649,24,652,-1,654,24,657,-1,704,17,713,-1,},A{0,-1,212,23,216,25,233,26,237,-1,339,27,341,-1,647,24,650,-1,655,24,657,-1,710,17,714,-1,},A{0,-1,213,23,217,25,233,26,236,-1,647,24,649,-1,654,24,657,-1,708,17,715,-1,},A{0,-1,213,23,217,25,233,26,237,-1,652,24,655,-1,707,17,716,-1,},A{0,-1,213,23,218,25,233,26,243,-1,515,19,516,-1,645,28,648,-1,650,28,654,-1,709,17,717,-1,},A{0,-1,212,23,218,25,233,26,245,-1,641,29,642,28,655,-1,709,17,717,-1,},A{0,-1,212,23,218,25,233,26,246,-1,515,19,516,-1,640,29,642,28,660,-1,709,17,714,-1,715,17,718,-1,},A{0,-1,212,23,218,25,222,30,223,25,233,26,247,-1,334,27,336,-1,639,29,642,28,659,31,661,-1,709,17,713,-1,},A{0,-1,213,23,218,25,220,30,224,25,233,26,247,-1,639,29,642,28,656,31,660,-1,708,17,712,-1,},A{0,-1,214,23,219,30,223,25,233,26,247,-1,633,29,635,-1,639,29,642,28,656,31,661,-1,707,17,712,-1,},A{0,-1,214,23,219,30,227,32,230,25,233,26,249,-1,632,29,642,28,649,31,661,-1,706,17,711,-1,},A{0,-1,215,23,219,30,227,32,230,25,233,26,247,33,250,-1,593,9,596,-1,631,29,642,28,647,31,662,-1,706,17,710,-1,},A{0,-1,215,23,219,30,227,32,230,34,233,26,245,33,252,-1,398,3,401,-1,591,9,598,-1,629,29,642,28,646,31,662,-1,705,17,708,-1,},A{0,-1,216,23,220,30,226,32,230,34,237,26,244,33,253,-1,396,3,411,-1,590,9,600,-1,601,9,602,-1,603,9,608,-1,630,29,642,28,644,31,663,-1,704,17,706,-1,},A{0,-1,198,23,199,-1,202,23,203,-1,216,23,220,30,226,32,230,34,238,26,242,34,243,33,253,35,254,-1,396,3,414,-1,589,9,609,-1,628,29,642,31,663,-1,},A{0,-1,216,23,220,30,226,32,230,34,243,33,253,35,255,-1,396,3,416,-1,591,9,609,-1,628,29,642,31,664,-1,},A{0,-1,216,23,220,30,226,32,230,34,244,33,254,35,256,-1,395,3,417,-1,591,9,611,-1,626,29,642,31,665,-1,},A{0,-1,216,23,219,36,221,30,222,36,223,30,225,32,230,34,244,33,253,35,256,-1,396,3,418,-1,591,9,611,37,616,-1,624,29,642,31,643,38,644,31,666,-1,},A{0,-1,216,23,219,36,226,39,228,34,244,33,251,35,258,-1,396,3,420,-1,591,9,611,37,618,29,622,-1,623,29,642,38,644,31,666,-1,678,40,679,-1,},A{0,-1,2,17,3,-1,216,23,219,36,226,39,228,34,244,33,250,35,259,-1,395,3,421,-1,590,9,618,29,642,31,666,-1,},A{0,-1,216,23,219,36,226,39,229,34,244,33,248,35,260,-1,395,3,421,-1,590,9,618,29,642,31,667,-1,},A{0,-1,3,17,4,-1,216,23,220,36,225,39,229,34,245,35,246,33,247,35,260,-1,394,3,415,41,417,3,422,-1,589,9,618,29,642,31,667,-1,},A{0,-1,217,23,220,36,223,39,229,21,230,34,246,35,261,-1,394,3,414,41,418,3,423,-1,589,9,618,29,642,31,667,-1,},A{0,-1,4,17,5,-1,216,23,220,36,222,39,228,21,230,34,247,35,261,-1,393,3,415,41,419,3,424,-1,589,9,618,29,642,31,667,-1,},A{0,-1,217,23,221,36,222,39,227,21,230,34,248,35,263,-1,392,42,393,3,396,42,399,3,416,41,418,3,425,-1,587,9,618,29,642,43,658,31,662,43,664,31,668,-1,},A{0,-1,217,23,221,39,224,21,230,34,248,35,263,-1,391,42,394,3,395,42,400,3,426,-1,587,9,618,29,642,43,666,31,668,-1,},A{0,-1,71,44,72,-1,217,23,222,21,228,45,230,34,250,35,264,-1,391,42,400,3,426,-1,588,9,618,29,642,43,667,-1,},A{0,-1,141,46,142,-1,218,23,222,21,228,45,230,34,243,47,249,34,252,35,264,-1,390,42,400,3,423,48,424,3,426,-1,587,9,618,29,642,43,667,-1,},A{0,-1,218,23,223,21,228,45,231,34,244,47,250,34,253,35,263,-1,390,42,400,3,401,49,404,3,422,48,424,50,426,-1,587,9,618,29,642,43,667,-1,},A{0,-1,199,23,201,-1,218,23,223,21,228,25,229,45,231,34,244,47,251,34,253,35,263,-1,389,42,400,3,402,49,405,3,422,48,424,50,426,-1,586,9,618,29,642,43,667,-1,},A{0,-1,218,23,223,21,226,25,231,34,244,47,251,34,252,35,264,-1,389,42,400,3,401,49,406,3,409,49,411,3,424,50,427,-1,450,51,451,-1,585,9,618,52,636,43,667,-1,},A{0,-1,219,23,223,21,226,25,234,34,245,47,251,35,265,-1,389,42,400,3,401,49,411,3,424,50,428,-1,448,51,454,-1,586,9,618,52,636,43,667,-1,},A{0,-1,110,53,111,-1,218,23,223,25,235,34,242,47,251,35,267,-1,389,42,400,49,412,3,424,50,431,-1,447,51,455,-1,586,9,618,52,636,43,667,-1,},A{0,-1,103,53,104,-1,218,23,224,25,229,54,232,25,235,34,241,47,251,35,269,-1,389,42,400,49,414,3,424,50,431,-1,447,51,455,-1,586,9,618,52,636,43,664,-1,665,43,666,-1,},A{0,-1,1,55,3,-1,64,44,65,-1,98,53,99,-1,219,23,226,54,227,25,228,54,232,25,235,34,238,47,249,56,252,35,271,-1,389,42,400,49,414,3,423,50,432,-1,447,51,456,-1,587,9,618,52,636,43,665,-1,},A{0,-1,61,44,62,-1,85,57,86,-1,89,57,91,-1,218,23,226,54,230,25,235,34,237,47,249,56,253,35,275,-1,389,42,400,49,415,3,423,50,431,-1,447,51,456,-1,587,9,618,52,636,43,664,-1,671,43,672,-1,},A{0,-1,54,44,55,-1,219,23,224,58,226,54,229,25,235,34,236,47,249,56,253,35,277,-1,389,42,400,49,416,3,423,50,431,-1,446,51,456,-1,587,9,618,52,636,43,662,-1,693,59,696,-1,},A{0,-1,7,55,8,-1,82,44,83,-1,219,23,224,58,227,54,230,25,231,58,232,25,235,47,248,56,255,35,278,-1,388,42,400,49,418,3,420,60,423,50,431,-1,446,51,456,-1,587,9,618,52,636,43,662,-1,664,43,666,-1,670,43,671,-1,692,59,695,-1,702,59,703,-1,},A{0,-1,50,44,51,-1,78,44,79,-1,82,44,83,-1,219,23,224,58,235,47,244,56,256,35,278,-1,387,42,402,49,418,60,424,50,431,-1,446,51,457,-1,588,9,618,52,636,43,663,-1,664,43,666,-1,667,43,668,-1,678,59,680,-1,690,59,694,-1,695,59,697,-1,709,61,710,-1,},A{0,-1,9,55,11,-1,40,62,41,-1,86,57,87,-1,219,23,224,58,235,47,244,56,256,35,279,-1,387,42,402,49,416,60,425,50,431,-1,447,51,457,-1,470,63,472,-1,589,9,618,52,636,43,661,-1,663,43,666,-1,671,43,672,-1,677,59,679,-1,689,59,693,-1,694,59,696,-1,},A{0,-1,2,61,3,-1,73,44,74,-1,81,44,83,-1,219,23,223,58,235,47,244,56,257,35,280,-1,386,42,402,49,415,60,425,50,430,-1,447,51,457,-1,470,63,472,-1,590,9,618,52,636,43,660,-1,664,43,665,-1,688,59,691,-1,692,59,695,-1,},A{0,-1,1,61,4,-1,10,55,11,-1,45,62,46,-1,219,23,223,58,236,47,244,56,258,35,280,-1,386,42,402,49,415,60,426,50,430,-1,448,51,458,-1,474,64,476,-1,590,9,592,-1,593,9,594,-1,596,9,618,52,636,43,658,65,659,-1,687,59,690,-1,692,59,694,-1,699,66,700,-1,},A{0,61,4,-1,9,55,12,-1,43,62,45,-1,79,44,80,-1,212,67,213,-1,219,23,223,58,236,47,243,58,244,56,258,35,281,-1,385,42,402,49,413,60,426,50,431,-1,448,51,458,-1,475,64,476,-1,486,64,487,-1,597,9,599,-1,600,9,618,52,636,43,657,-1,658,43,660,-1,676,59,678,-1,686,59,689,-1,691,59,692,-1,698,66,701,-1,},A{0,61,4,-1,10,55,11,-1,20,68,21,-1,42,62,43,-1,77,44,79,-1,81,44,83,-1,210,67,215,-1,219,23,223,58,244,56,257,35,281,-1,385,42,402,49,412,60,426,50,432,-1,448,51,458,-1,602,9,618,52,636,43,655,-1,664,43,665,-1,676,59,678,-1,686,59,688,-1,698,66,701,-1,716,61,},A{0,61,4,-1,10,55,13,-1,40,62,41,-1,76,44,77,-1,81,44,83,-1,87,44,88,-1,208,67,216,-1,219,23,222,58,245,56,255,35,281,-1,384,42,402,49,412,60,426,50,433,-1,448,51,459,-1,603,9,618,52,636,43,655,-1,664,43,665,-1,685,59,687,-1,697,66,699,-1,715,61,},A{0,61,4,-1,11,55,12,-1,33,62,34,-1,75,44,76,-1,78,44,79,-1,85,44,86,-1,206,67,220,23,222,58,245,56,254,35,280,69,281,-1,383,42,404,49,407,42,408,49,411,60,426,50,434,-1,447,51,459,-1,604,9,618,52,636,43,655,-1,685,59,687,-1,697,66,698,-1,714,61,},A{0,61,4,-1,58,44,59,-1,60,44,62,-1,73,44,75,-1,78,44,79,-1,205,67,220,23,221,58,245,70,246,56,252,70,254,35,280,69,283,-1,383,42,398,71,406,42,410,72,414,60,426,50,435,-1,447,51,459,-1,597,9,598,-1,604,9,618,52,636,43,654,-1,656,43,658,-1,661,43,663,-1,685,59,686,-1,696,66,698,-1,714,61,},A{0,61,3,-1,68,44,69,-1,71,44,72,-1,73,44,75,-1,83,44,84,-1,204,67,221,58,243,70,247,56,248,70,252,56,253,70,254,35,279,69,282,-1,383,71,384,42,387,71,406,72,415,60,426,50,439,-1,447,51,460,-1,598,9,599,-1,604,9,618,52,636,43,640,-1,641,43,653,-1,661,43,662,-1,663,43,665,-1,671,43,672,-1,695,66,698,-1,713,61,},A{0,61,3,-1,50,44,51,-1,52,44,53,-1,56,44,59,-1,69,44,75,-1,76,44,77,-1,203,67,222,58,243,70,254,35,279,69,282,-1,383,71,405,72,416,60,426,50,430,73,431,50,440,-1,447,51,460,-1,479,64,480,-1,604,9,618,52,636,43,640,-1,642,43,653,-1,658,43,659,-1,660,43,661,-1,695,66,698,-1,714,61,},A{0,61,2,-1,55,44,57,-1,67,44,69,-1,70,44,72,-1,73,44,74,-1,75,44,76,-1,202,67,222,58,240,70,255,35,280,69,283,-1,383,71,404,72,418,60,424,50,429,73,431,50,441,-1,448,51,460,-1,479,64,480,-1,606,9,618,52,636,-1,638,43,640,-1,642,43,652,-1,655,43,656,-1,694,66,697,-1,716,61,},A{0,61,1,-1,8,55,9,-1,12,55,13,-1,63,44,64,-1,66,44,71,-1,75,44,76,-1,78,44,79,-1,201,67,221,58,240,70,256,35,279,69,283,-1,348,27,349,-1,383,71,404,72,419,60,421,50,429,73,432,50,441,-1,450,51,461,-1,606,9,618,52,635,-1,642,43,652,-1,659,43,660,-1,693,66,697,-1,719,61,},A{0,-1,63,44,68,-1,201,67,222,58,239,70,257,35,277,69,282,-1,384,71,404,72,421,50,429,73,432,50,442,-1,453,51,461,-1,606,9,618,52,633,-1,643,43,652,-1,693,66,697,-1,},A{0,-1,62,44,65,-1,69,44,70,-1,82,44,83,-1,200,67,222,58,239,70,258,35,268,69,270,35,274,69,282,-1,384,71,404,72,422,50,429,73,432,50,442,-1,454,51,461,-1,609,9,618,52,632,-1,643,43,652,-1,693,66,697,-1,},A{0,-1,3,74,4,-1,18,75,19,-1,20,75,22,-1,67,44,69,-1,70,44,71,-1,77,44,78,-1,200,67,222,58,239,70,258,35,268,69,282,-1,384,71,404,72,425,50,427,73,431,50,442,-1,455,51,461,-1,603,9,604,-1,610,9,616,-1,618,52,634,-1,643,43,651,-1,693,66,696,-1,},A{0,-1,14,76,17,-1,199,67,222,58,239,70,258,35,268,69,283,-1,385,71,404,72,426,73,430,50,442,-1,455,51,461,-1,603,9,605,-1,611,9,615,-1,619,52,634,-1,643,43,650,-1,693,66,696,-1,},A{0,-1,7,74,8,-1,33,62,34,-1,198,67,222,58,236,77,239,70,259,35,264,78,265,35,267,69,283,-1,385,71,404,72,418,79,420,72,426,73,429,50,442,-1,456,51,460,-1,620,52,634,-1,643,43,648,-1,693,66,696,-1,},A{0,-1,198,67,222,58,234,77,240,70,259,78,267,69,284,-1,386,71,408,72,417,79,420,72,426,73,429,50,442,-1,448,80,449,-1,450,81,451,-1,457,51,460,-1,620,52,634,-1,643,43,648,-1,680,82,682,-1,},A{0,-1,198,67,222,58,231,77,240,70,259,78,267,69,285,-1,387,71,408,72,415,79,418,72,419,79,420,72,427,73,429,50,442,-1,446,80,450,-1,457,51,459,-1,553,83,554,-1,620,52,634,-1,643,43,648,-1,680,82,682,-1,697,82,698,-1,},A{0,-1,198,67,222,58,230,77,240,70,259,78,267,69,285,-1,387,71,408,72,411,79,417,72,427,73,429,50,442,-1,446,80,449,-1,458,51,459,-1,553,83,554,-1,620,52,634,-1,643,43,649,-1,667,84,668,-1,679,82,682,-1,693,82,694,-1,699,82,701,-1,},A{0,-1,56,85,57,-1,197,67,221,58,229,77,240,70,259,78,267,69,284,86,286,-1,387,71,404,79,405,71,408,72,409,79,410,72,411,79,417,72,427,73,430,87,438,50,442,-1,446,80,447,-1,620,52,626,-1,633,52,634,-1,644,43,649,-1,662,84,669,-1,679,82,680,-1,692,82,694,-1,},A{0,-1,28,62,29,-1,197,67,219,88,224,58,229,77,237,70,259,78,268,69,269,89,271,69,284,86,287,-1,387,71,405,79,417,72,427,73,429,87,440,50,442,-1,571,90,572,-1,602,91,608,-1,644,43,648,-1,660,84,667,-1,671,84,672,-1,683,82,685,-1,691,82,694,-1,},A{0,-1,55,85,56,-1,82,92,84,-1,196,67,219,88,226,58,229,77,237,70,259,78,269,89,272,69,284,86,288,-1,387,71,405,79,417,72,427,73,429,87,441,-1,455,93,456,-1,462,93,463,-1,473,64,474,-1,571,90,572,-1,599,91,609,-1,644,43,648,-1,655,84,666,-1,681,82,685,-1,691,82,693,-1,},A{0,-1,59,85,60,-1,81,92,83,-1,195,67,215,88,218,67,219,88,226,94,227,77,237,70,257,95,260,78,267,89,272,69,284,86,289,-1,386,71,404,79,417,72,426,73,429,87,440,-1,452,93,453,-1,455,93,456,-1,461,93,463,-1,598,91,610,-1,644,43,649,-1,654,84,666,-1,679,82,684,-1,694,82,695,-1,},A{0,-1,16,96,18,-1,79,92,80,-1,194,67,214,88,224,97,225,94,230,77,237,70,246,98,256,95,260,78,266,89,276,69,283,99,284,86,286,99,287,86,290,-1,386,71,404,79,417,72,425,87,440,-1,452,93,453,-1,461,93,463,-1,593,91,595,-1,597,91,608,100,609,91,610,100,612,-1,641,101,642,84,644,43,645,84,647,-1,653,84,668,-1,677,82,684,-1,719,102,},A{0,-1,78,92,80,-1,193,67,214,88,222,97,224,94,232,77,237,94,243,70,245,98,255,95,261,78,266,89,277,69,278,99,281,69,282,99,290,-1,386,71,404,79,418,72,423,87,440,-1,587,103,590,91,610,100,614,-1,640,101,642,84,648,-1,653,84,665,-1,674,82,683,-1,718,102,719,-1,},A{0,-1,192,67,213,88,221,97,224,94,233,77,235,94,243,70,245,98,255,95,262,78,267,89,278,99,291,-1,386,71,404,79,422,87,440,-1,581,103,589,91,611,100,612,-1,613,100,615,101,623,-1,635,101,642,84,648,-1,652,84,657,-1,660,84,663,-1,672,82,682,-1,685,82,686,-1,717,102,719,-1,},A{0,-1,79,92,80,-1,192,67,213,88,218,97,223,94,243,70,244,98,254,95,262,78,265,89,279,99,283,89,284,99,286,89,288,99,291,-1,331,27,332,-1,386,71,395,104,399,71,404,79,421,87,440,-1,574,103,589,91,611,101,624,-1,635,101,642,84,657,-1,671,82,682,-1,},A{0,-1,192,67,213,97,223,94,244,98,255,95,262,78,265,89,291,-1,385,71,394,104,399,71,401,79,421,87,440,-1,465,93,466,-1,472,93,473,-1,571,103,593,91,611,101,624,-1,636,101,642,84,656,-1,671,82,677,-1,714,102,715,-1,},A{0,-1,191,67,213,97,222,94,243,98,256,95,262,78,265,89,291,-1,385,71,394,104,400,79,420,87,440,-1,570,103,593,91,611,101,625,-1,627,101,630,-1,636,101,642,84,657,-1,670,105,672,82,675,-1,},A{0,-1,191,67,214,97,222,94,244,98,255,95,263,78,265,89,290,-1,384,71,393,104,399,79,419,87,440,-1,465,93,467,-1,502,106,503,-1,569,103,593,91,611,101,630,-1,636,101,642,84,662,-1,670,105,672,-1,678,82,679,-1,712,102,713,-1,714,102,715,-1,},A{0,-1,48,85,49,-1,191,67,214,97,221,94,244,98,255,95,263,78,265,89,290,-1,384,71,385,104,400,79,419,87,440,-1,466,93,468,-1,470,93,471,-1,568,103,593,91,611,101,630,-1,635,101,642,84,664,-1,669,105,671,-1,712,102,713,-1,},A{0,-1,191,67,214,97,221,94,245,98,254,95,263,78,264,89,290,-1,384,71,385,104,400,79,419,87,440,-1,466,93,467,-1,503,106,505,-1,563,103,592,91,611,101,631,-1,634,101,642,84,665,-1,668,105,671,-1,678,82,680,-1,},A{0,-1,191,67,201,107,202,67,216,97,221,94,245,98,254,95,264,89,286,-1,287,89,288,-1,383,108,385,71,386,104,389,108,390,104,400,79,419,87,440,-1,466,93,467,-1,470,93,472,-1,563,103,582,109,588,91,611,101,642,84,668,105,671,-1,673,105,674,-1,678,105,679,-1,},A{0,-1,17,110,18,-1,191,67,199,107,203,67,218,97,219,67,220,94,246,98,255,95,265,89,285,-1,382,108,391,104,401,79,419,111,420,87,437,112,440,-1,470,93,472,-1,562,103,579,109,588,91,611,101,642,84,668,105,670,-1,},A{0,-1,11,110,12,-1,18,110,19,-1,191,67,200,107,203,67,219,113,220,94,246,98,255,95,266,89,284,-1,292,89,293,-1,295,114,296,-1,381,115,383,108,392,104,401,79,418,111,421,87,436,112,440,-1,470,93,472,-1,561,103,578,109,589,91,610,101,642,84,668,105,670,-1,},A{0,-1,17,110,18,-1,197,107,204,67,219,113,220,94,246,98,257,95,266,89,282,-1,381,115,384,108,392,104,401,79,418,111,422,87,435,112,441,-1,560,103,578,109,589,91,610,101,642,84,668,105,670,-1,},A{0,-1,16,110,17,-1,197,107,206,67,220,113,221,94,247,98,256,95,267,89,281,-1,379,115,383,108,392,104,402,79,418,111,419,116,420,111,421,87,434,112,442,-1,559,103,579,109,589,91,610,101,642,84,666,-1,713,117,714,-1,},A{0,-1,198,107,208,67,214,113,216,67,217,113,221,94,247,98,256,95,267,89,274,-1,379,115,385,108,386,115,387,108,392,104,404,79,418,116,422,87,433,112,443,-1,558,103,579,109,590,91,608,101,641,-1,644,84,664,-1,},A{0,-1,198,107,209,67,213,113,221,94,246,98,255,95,267,89,272,-1,378,115,389,108,393,104,408,79,418,116,422,87,431,112,443,118,444,-1,557,103,577,109,591,91,608,101,639,-1,645,84,654,-1,656,84,662,-1,710,117,712,-1,},A{0,-1,177,119,181,-1,197,107,209,67,213,113,221,94,236,120,237,94,244,98,256,95,268,89,271,-1,371,121,372,-1,378,115,389,108,394,104,408,79,419,122,420,116,421,87,429,112,443,118,444,-1,557,103,577,109,592,91,608,101,636,-1,646,84,652,-1,658,84,660,-1,709,117,713,-1,},A{0,-1,176,119,182,-1,198,107,209,67,211,113,221,94,235,120,237,94,238,120,239,94,243,98,255,95,268,-1,377,115,389,108,395,104,407,79,419,122,428,112,442,118,445,-1,506,123,507,-1,556,103,576,109,591,91,609,101,633,-1,650,84,651,-1,708,117,710,-1,},A{0,-1,176,119,181,-1,198,107,209,67,210,113,220,94,236,120,239,94,242,98,254,95,265,-1,377,115,388,108,395,104,406,79,419,122,428,112,442,118,446,-1,506,123,507,-1,555,103,576,109,590,91,610,101,631,-1,},A{0,-1,176,119,181,-1,199,107,208,113,220,94,235,120,240,94,242,98,254,95,264,-1,373,124,374,-1,378,115,388,108,396,104,406,79,420,122,428,112,442,118,447,-1,506,123,508,-1,555,103,576,109,590,91,611,101,624,-1,626,101,630,-1,706,117,708,-1,},A{0,-1,176,119,179,-1,199,107,205,113,222,94,235,120,242,98,254,95,263,-1,301,114,302,-1,373,124,375,-1,378,115,389,108,396,104,406,79,420,122,429,112,442,118,448,-1,506,123,508,-1,554,103,576,109,588,91,611,101,623,-1,628,101,629,-1,706,117,708,-1,},A{0,-1,176,119,178,-1,200,107,203,113,220,94,226,125,231,94,235,120,242,126,243,98,253,95,262,-1,374,124,375,-1,378,121,383,115,386,108,387,115,389,108,396,104,405,79,421,122,430,112,442,118,449,-1,506,123,508,-1,554,103,567,127,568,103,577,109,580,128,584,109,588,91,611,101,618,-1,622,101,623,-1,669,129,670,-1,705,117,707,-1,},A{0,-1,45,85,46,-1,202,113,224,94,226,125,232,94,235,120,241,126,245,98,251,95,261,-1,374,124,375,-1,379,121,383,115,386,108,396,104,405,79,422,122,430,112,442,118,450,-1,505,123,508,-1,553,103,565,130,569,-1,570,103,577,109,579,128,589,91,599,-1,609,91,612,101,618,-1,705,117,707,-1,},A{0,-1,202,113,226,125,233,120,241,126,246,131,248,98,250,95,251,132,252,95,260,-1,379,121,380,133,383,115,385,133,386,115,387,133,392,108,396,104,407,79,422,122,430,112,442,118,452,-1,505,123,508,-1,552,103,564,130,569,-1,571,103,579,109,580,-1,581,128,590,91,598,-1,609,91,613,101,618,-1,705,117,707,-1,},A{0,-1,203,113,225,125,232,120,240,126,246,131,252,132,255,95,259,-1,379,133,392,134,393,108,397,104,406,79,422,122,430,112,442,118,453,-1,505,123,508,-1,551,103,562,130,569,-1,570,103,579,-1,582,128,590,91,597,-1,610,91,614,101,617,-1,622,135,624,-1,705,117,707,-1,},A{0,-1,203,113,225,125,232,120,240,126,245,131,252,132,255,95,258,-1,376,121,378,-1,379,133,391,134,393,108,397,104,405,79,422,122,429,112,443,118,454,-1,505,123,508,-1,550,103,561,130,568,-1,571,103,578,-1,584,128,591,91,597,-1,610,91,615,101,616,-1,622,135,625,-1,705,117,706,-1,},A{0,-1,41,85,42,-1,204,113,225,125,231,120,234,125,235,120,241,126,244,131,252,132,256,95,258,-1,377,121,378,133,390,134,397,104,406,79,421,136,422,122,424,136,425,122,429,112,436,137,440,112,443,118,455,-1,505,123,508,-1,550,103,560,130,568,-1,573,103,578,-1,586,128,591,91,597,-1,610,91,614,-1,622,135,625,-1,669,129,670,-1,},A{0,-1,205,113,224,125,230,120,231,125,236,120,241,126,244,131,251,132,257,95,258,-1,344,138,345,139,346,-1,371,140,375,-1,377,133,390,134,397,104,404,134,405,79,420,136,428,112,434,137,441,112,442,137,445,118,456,-1,505,123,508,-1,550,103,558,-1,559,130,568,-1,575,103,577,-1,587,128,589,141,590,128,592,91,595,128,598,-1,610,91,614,-1,623,135,626,-1,},A{0,-1,39,85,40,-1,205,113,224,125,238,120,240,126,244,131,251,132,257,-1,342,138,345,139,348,-1,355,142,357,-1,371,140,377,133,389,134,398,104,401,134,407,79,416,136,432,137,447,118,457,-1,505,123,508,-1,550,103,557,-1,559,130,568,-1,575,103,577,-1,588,141,590,128,598,143,600,-1,610,91,615,-1,623,135,626,-1,697,144,698,-1,},A{0,-1,205,113,224,125,238,126,246,131,251,132,255,-1,341,138,345,139,354,142,359,-1,370,140,378,133,389,134,415,136,432,137,450,118,457,-1,505,123,508,-1,550,103,556,-1,558,130,567,-1,590,128,599,143,602,-1,610,143,611,-1,612,91,614,-1,624,135,627,-1,667,145,668,-1,685,146,686,-1,697,144,699,-1,},A{0,-1,205,113,225,125,238,126,246,131,252,132,254,-1,340,138,345,139,354,142,362,-1,370,140,378,133,389,134,414,136,430,137,451,118,458,-1,505,123,508,-1,550,103,552,-1,557,130,562,147,563,130,567,-1,590,128,598,143,604,-1,609,143,612,-1,625,135,628,-1,666,145,668,-1,674,129,675,-1,696,144,697,-1,698,144,700,-1,704,144,705,-1,},A{0,-1,205,113,221,125,224,113,225,125,238,126,246,-1,338,138,344,139,354,142,362,148,363,149,365,140,379,133,389,134,413,136,430,137,452,118,459,-1,505,123,507,-1,520,150,523,-1,558,130,562,147,564,130,565,-1,591,128,596,143,613,-1,625,135,628,-1,681,129,682,-1,698,144,700,-1,703,144,705,-1,},A{0,-1,204,113,220,125,238,126,245,-1,337,138,343,139,354,142,361,148,363,149,366,140,380,133,382,140,383,133,390,134,412,136,429,137,453,118,459,-1,505,123,507,-1,519,150,524,-1,547,151,548,-1,558,147,564,-1,592,128,596,143,613,-1,626,135,629,-1,646,145,647,-1,658,145,659,-1,665,145,666,-1,675,129,677,-1,679,129,680,-1,698,144,699,-1,702,144,704,-1,},A{0,-1,195,152,204,113,216,125,239,126,243,-1,335,153,338,138,343,139,354,142,361,148,363,149,366,140,384,133,390,134,411,136,428,137,454,118,460,-1,505,123,506,-1,519,150,524,-1,547,151,548,-1,558,147,564,-1,587,128,588,-1,593,128,595,143,614,-1,627,135,630,-1,647,145,649,-1,652,145,653,-1,658,145,659,-1,662,145,664,-1,670,129,671,-1,675,129,677,-1,697,144,699,-1,702,144,704,-1,},A{0,-1,194,152,205,113,215,125,239,126,243,-1,333,153,339,138,341,154,344,139,354,142,361,148,363,149,365,140,384,133,391,155,395,134,411,136,427,137,455,118,460,-1,519,150,524,-1,546,151,547,-1,556,147,564,-1,587,128,589,-1,593,143,614,-1,628,135,630,-1,651,145,652,-1,663,145,664,-1,670,129,671,-1,696,144,698,-1,702,144,704,-1,},A{0,-1,193,156,194,152,205,113,215,125,240,126,242,-1,333,153,339,138,341,154,344,139,355,142,361,148,363,149,365,140,384,133,391,155,398,134,409,136,426,137,453,118,461,-1,506,151,507,-1,514,151,516,-1,519,150,523,-1,546,151,548,-1,556,147,562,-1,569,157,571,-1,586,157,587,-1,588,128,590,-1,594,143,613,-1,629,135,630,-1,634,145,635,-1,640,145,641,-1,653,145,654,-1,655,145,656,-1,663,145,664,-1,668,129,669,-1,694,144,697,-1,701,144,703,-1,},A{0,-1,191,156,194,152,205,113,215,125,240,-1,333,153,339,154,344,139,355,142,361,148,363,149,365,140,385,133,390,155,398,134,407,136,428,137,450,118,461,-1,505,151,507,-1,513,151,517,-1,519,150,523,-1,545,151,546,-1,555,147,562,-1,568,157,575,-1,583,157,586,-1,587,157,590,-1,594,143,613,-1,659,145,661,-1,663,145,665,-1,691,144,694,158,696,-1,700,144,703,-1,},A{0,-1,190,156,194,152,205,-1,206,113,213,125,239,-1,332,154,334,153,339,154,344,139,355,142,361,148,363,149,366,140,386,133,389,155,401,134,407,136,428,137,447,118,462,-1,505,151,507,-1,512,151,519,150,522,-1,545,151,546,-1,555,147,561,-1,566,157,576,-1,595,143,613,-1,650,145,651,-1,691,144,693,158,696,-1,699,144,703,-1,},A{0,-1,188,156,195,-1,200,152,203,-1,208,113,214,125,238,-1,332,154,335,153,338,154,344,139,354,142,361,148,363,149,367,140,387,133,388,155,402,134,407,159,408,136,413,159,416,136,418,159,419,136,428,137,447,118,462,-1,504,151,508,-1,512,151,519,150,521,-1,545,151,546,-1,555,160,557,147,561,-1,566,161,567,157,578,-1,588,157,589,-1,596,143,613,-1,636,145,637,-1,639,145,640,-1,681,144,682,-1,691,144,693,158,694,-1,698,144,702,-1,},A{0,-1,188,156,194,-1,208,113,214,125,236,162,239,-1,331,154,344,139,350,163,354,142,361,148,362,149,367,140,387,133,391,155,403,134,407,159,410,136,412,159,423,136,428,159,429,137,446,118,463,-1,504,151,508,-1,512,151,520,-1,544,151,545,-1,555,160,557,147,560,-1,565,161,568,157,579,-1,587,157,588,164,589,-1,597,143,613,-1,639,145,640,-1,691,144,694,-1,698,144,702,-1,},A{0,-1,188,156,193,-1,209,113,215,125,224,-1,225,125,228,-1,229,125,230,-1,231,125,236,162,239,-1,328,165,330,154,343,166,349,163,354,142,360,148,362,149,368,140,387,133,390,155,404,134,406,159,424,136,427,159,429,137,446,118,448,-1,450,118,463,-1,504,151,508,-1,511,151,520,-1,544,151,546,-1,555,160,558,147,559,-1,565,161,570,157,579,-1,588,143,589,-1,591,143,592,-1,598,143,612,-1,691,144,694,-1,699,144,700,-1,},A{0,-1,188,167,193,-1,210,113,216,125,217,-1,218,125,224,-1,231,125,234,-1,238,162,239,-1,327,165,330,154,343,166,349,163,362,149,367,140,388,133,390,155,406,159,425,136,426,159,430,137,444,168,446,118,447,-1,454,118,463,-1,504,151,507,-1,511,151,520,-1,544,151,546,-1,555,160,559,147,560,-1,565,161,572,157,579,-1,588,157,589,-1,598,143,612,-1,684,144,685,-1,690,144,695,-1,699,144,700,-1,},A{0,-1,187,167,194,-1,212,113,217,125,218,-1,219,125,221,-1,226,125,228,-1,230,125,232,-1,326,165,333,154,342,166,349,163,365,149,367,140,389,133,390,155,405,159,425,136,426,159,430,137,444,168,447,-1,460,118,463,-1,503,151,506,-1,510,151,520,-1,544,151,547,-1,554,160,559,147,560,-1,564,147,566,161,573,157,579,-1,599,143,612,-1,684,144,685,-1,690,144,693,-1,},A{0,-1,186,167,194,-1,196,113,197,-1,215,113,218,125,221,169,223,170,224,125,225,-1,236,171,237,-1,326,165,332,154,337,166,341,154,342,166,351,163,364,172,365,149,366,172,367,140,389,133,390,155,405,159,431,137,445,168,447,-1,464,173,465,-1,466,173,469,-1,503,151,505,-1,510,151,521,-1,545,151,548,-1,555,160,559,147,560,-1,563,147,565,161,574,157,579,-1,599,143,611,-1,700,144,701,-1,},A{0,-1,184,167,194,-1,196,113,197,-1,237,174,238,-1,326,175,337,166,352,163,363,172,368,140,388,133,389,155,404,159,432,137,444,176,446,168,447,173,451,-1,466,173,469,-1,509,151,521,-1,545,151,546,-1,555,160,558,147,565,161,575,157,579,-1,599,143,611,-1,},A{0,-1,181,177,185,178,186,167,194,-1,197,113,198,-1,237,174,238,-1,240,179,242,-1,326,180,328,175,331,180,332,175,337,166,352,163,362,172,368,140,374,172,375,140,376,172,380,140,384,172,385,140,388,155,404,159,432,137,443,176,446,173,454,-1,509,151,521,-1,545,151,547,-1,548,151,549,-1,555,160,558,147,565,161,575,157,579,-1,599,143,610,-1,649,181,650,-1,},A{0,-1,177,182,180,177,185,178,186,167,194,-1,237,183,239,-1,326,175,336,166,354,163,361,172,371,140,372,172,387,155,404,159,433,137,442,176,445,173,456,-1,508,151,521,-1,555,160,558,147,565,161,575,157,579,-1,600,143,609,-1,649,181,650,-1,},A{0,-1,176,182,181,177,182,178,189,167,195,-1,197,113,198,-1,199,113,200,-1,238,184,239,-1,326,175,336,166,356,163,361,172,387,155,405,159,433,137,441,176,444,-1,445,173,458,-1,508,151,521,-1,546,160,547,-1,555,160,557,147,566,161,570,185,572,161,575,157,579,-1,600,143,609,-1,650,186,651,-1,},A{0,-1,174,187,176,182,182,178,191,167,195,-1,237,184,239,-1,310,188,313,-1,325,175,336,166,358,163,360,172,388,155,405,159,433,176,443,-1,445,173,461,-1,508,151,521,-1,547,160,548,-1,552,160,557,147,571,185,575,157,579,-1,599,143,606,-1,651,186,652,-1,697,144,698,-1,},A{0,-1,173,187,176,182,182,178,195,-1,237,189,238,-1,310,188,314,-1,326,175,334,190,336,166,363,172,388,155,406,159,433,176,442,-1,444,173,464,-1,507,151,521,-1,550,160,557,147,571,185,575,157,579,-1,595,164,596,-1,599,143,606,-1,651,186,652,-1,},A{0,-1,164,187,169,-1,172,187,176,182,184,178,192,-1,193,178,196,-1,200,113,201,-1,202,113,203,-1,232,125,233,-1,236,191,238,-1,311,188,315,-1,326,175,333,190,349,166,368,172,389,155,407,159,433,176,442,-1,444,173,465,-1,507,151,523,-1,548,160,557,147,571,185,574,157,578,-1,582,164,585,-1,588,164,590,-1,599,143,605,-1,},A{0,-1,162,187,179,182,182,192,184,-1,186,178,190,-1,236,191,238,-1,311,188,315,-1,327,175,332,190,349,166,368,172,390,155,408,159,434,176,441,-1,444,173,465,-1,506,151,524,-1,548,160,558,147,570,185,574,157,577,-1,582,164,586,-1,589,164,590,-1,599,143,605,-1,651,186,652,-1,},A{0,-1,20,193,21,-1,160,187,178,182,182,192,185,-1,203,194,205,-1,235,195,236,-1,309,188,315,-1,327,190,349,166,368,172,391,155,408,159,434,176,439,-1,443,196,447,173,466,197,468,-1,469,197,470,-1,506,151,526,-1,548,160,557,147,570,185,573,157,576,-1,582,164,586,-1,599,143,605,-1,651,186,652,-1,},A{0,-1,157,187,177,182,182,192,185,-1,203,194,208,-1,234,198,235,199,237,-1,309,188,310,-1,327,190,349,166,369,172,391,155,408,159,435,176,438,-1,442,196,446,173,452,196,453,173,454,196,455,173,466,197,471,-1,506,151,526,-1,548,160,556,147,570,185,572,147,574,157,575,-1,583,164,584,-1,600,143,605,-1,651,186,652,-1,},A{0,-1,155,187,178,182,182,192,185,-1,203,194,208,-1,216,200,219,-1,225,201,226,-1,227,201,228,-1,230,202,231,-1,233,170,234,203,235,-1,236,199,237,-1,327,190,349,166,369,172,391,155,408,159,437,176,438,-1,441,196,456,173,465,197,473,-1,506,151,527,-1,548,160,556,147,562,185,563,147,569,185,571,147,574,-1,600,143,605,-1,651,186,652,-1,},A{0,-1,130,204,131,-1,153,187,176,205,182,206,183,192,184,206,185,-1,203,194,208,-1,211,207,216,200,223,-1,224,201,230,202,231,-1,233,208,235,-1,328,190,348,166,369,172,391,155,408,159,438,-1,441,196,457,173,465,197,474,-1,505,151,529,-1,547,160,555,147,562,185,566,147,568,185,571,147,573,-1,577,164,580,-1,601,143,605,-1,651,186,652,-1,},A{0,-1,48,193,49,-1,137,204,139,-1,152,187,170,-1,174,187,175,205,182,206,186,-1,211,207,217,200,224,-1,231,209,232,-1,327,190,348,166,369,172,391,155,408,159,438,-1,440,196,461,173,464,197,476,-1,505,151,530,-1,547,160,556,147,562,185,570,147,573,-1,577,164,582,-1,601,143,605,-1,651,186,652,-1,},A{0,-1,48,193,50,-1,138,204,139,-1,150,187,168,-1,178,205,182,206,185,-1,197,210,198,-1,214,207,217,200,223,-1,327,190,348,166,366,211,370,172,391,155,408,159,437,-1,440,196,465,197,476,-1,505,151,531,-1,546,160,556,147,562,185,568,147,572,-1,577,164,582,-1,602,143,605,-1,693,212,694,-1,},A{0,-1,47,193,50,-1,149,187,168,-1,178,205,182,206,185,-1,199,210,201,-1,204,213,207,-1,208,213,210,-1,213,207,216,200,223,-1,326,190,348,166,366,211,372,172,391,155,407,214,408,159,435,-1,439,196,468,197,476,-1,505,151,533,-1,546,160,557,147,561,185,569,147,573,-1,578,164,583,-1,602,143,605,-1,650,186,651,-1,},A{0,-1,48,193,49,-1,148,187,167,-1,179,205,183,206,187,-1,203,213,212,-1,214,207,215,-1,216,200,222,-1,326,190,348,166,365,211,374,172,392,155,405,214,410,159,435,-1,439,196,470,197,478,-1,503,151,534,-1,545,160,559,147,561,185,569,147,574,-1,575,147,576,-1,578,164,583,-1,603,143,605,-1,},A{0,-1,46,193,48,-1,148,215,150,187,166,-1,175,205,176,-1,179,205,185,206,187,-1,202,213,211,-1,212,216,214,-1,217,200,221,-1,325,217,326,190,348,166,362,211,375,172,391,155,403,214,410,159,435,-1,438,196,470,197,478,-1,500,151,535,-1,544,218,545,160,561,185,567,147,568,185,569,147,576,-1,578,164,584,-1,593,219,594,-1,603,143,604,-1,},A{0,-1,43,193,47,-1,147,204,148,-1,149,204,152,187,166,-1,179,205,185,206,187,-1,194,213,195,-1,200,213,209,-1,210,216,214,-1,216,220,218,-1,325,217,326,190,348,166,362,211,376,172,391,155,401,214,410,159,435,-1,438,196,471,197,479,-1,499,151,538,-1,544,160,561,185,562,164,564,185,566,147,576,164,585,-1,},A{0,-1,39,193,42,-1,43,193,45,-1,146,204,147,-1,148,204,152,187,166,-1,183,205,184,-1,185,206,186,-1,190,213,206,-1,207,216,215,220,218,-1,326,217,334,190,348,166,360,211,378,172,390,155,399,214,410,159,427,221,428,159,434,-1,437,196,471,197,480,-1,498,151,538,218,545,160,560,164,563,185,565,147,574,164,589,-1,601,219,603,-1,},A{0,-1,40,193,42,-1,148,204,151,187,165,-1,177,205,178,-1,180,205,181,-1,190,213,205,216,215,-1,326,217,334,190,347,166,359,211,380,172,390,155,397,214,410,221,434,-1,437,196,471,197,480,-1,497,151,538,218,545,151,546,160,558,164,563,185,564,147,573,164,588,222,589,164,591,-1,600,219,604,-1,},A{0,-1,140,204,141,-1,148,204,150,223,152,187,160,223,165,-1,180,205,181,-1,191,213,203,216,214,-1,327,217,334,190,347,166,357,211,381,172,388,214,389,172,390,155,395,214,410,221,433,-1,437,196,468,224,470,197,479,-1,497,151,538,218,545,151,546,160,559,164,568,147,574,164,593,-1,599,219,603,-1,},A{0,-1,139,204,142,-1,147,204,149,223,152,187,160,223,165,-1,194,213,200,-1,201,216,213,-1,327,217,335,190,347,166,356,211,383,172,387,214,391,155,393,214,410,221,433,-1,436,196,465,224,471,197,478,-1,496,151,537,218,543,151,544,218,545,151,547,160,558,164,570,147,571,164,595,-1,598,219,603,-1,},A{0,-1,27,193,28,-1,30,193,31,-1,138,204,141,-1,146,204,148,223,152,187,159,223,165,-1,199,216,212,-1,328,217,336,190,347,166,354,211,384,214,410,221,433,-1,435,196,464,224,471,197,478,-1,495,225,496,151,537,218,542,151,547,160,558,164,596,-1,599,219,604,-1,},A{0,-1,136,204,141,-1,144,204,148,223,153,187,159,223,165,-1,200,216,211,-1,329,217,336,190,347,166,353,211,383,214,410,221,432,-1,434,196,463,224,472,197,474,-1,494,225,498,151,499,225,500,151,501,225,502,151,537,218,544,151,549,160,555,164,597,-1,600,219,604,-1,607,226,609,-1,642,226,643,-1,},A{0,-1,135,204,140,-1,143,204,146,223,155,187,158,223,165,-1,194,227,199,-1,201,216,209,-1,330,217,336,190,347,166,351,211,380,214,410,221,431,-1,434,196,462,228,464,-1,465,224,467,-1,469,224,472,197,473,-1,492,225,502,151,536,218,545,151,549,160,555,164,599,-1,601,219,604,-1,608,226,611,-1,642,226,643,-1,},A{0,-1,135,204,139,-1,142,204,146,223,165,229,166,-1,197,227,200,-1,201,216,208,-1,330,217,336,190,350,211,380,214,410,221,430,-1,433,196,461,228,464,-1,465,224,466,-1,468,224,472,197,473,-1,478,230,483,225,502,151,538,218,540,151,549,160,556,164,600,-1,602,219,605,-1,642,226,643,-1,},A{0,-1,16,193,17,-1,135,204,139,-1,141,204,146,231,147,223,163,229,166,-1,196,227,200,-1,201,216,208,-1,330,217,336,190,348,211,379,214,410,221,430,-1,433,196,461,232,462,228,465,-1,471,224,472,197,473,-1,474,230,484,225,501,151,537,218,540,151,550,160,557,164,601,-1,622,226,623,-1,},A{0,-1,134,204,138,-1,141,204,144,231,147,223,162,229,163,233,166,-1,196,227,200,-1,201,216,207,-1,331,217,343,190,346,211,379,214,410,221,430,-1,432,196,461,232,462,228,463,-1,468,230,471,-1,472,197,474,230,484,225,500,151,537,218,538,151,550,160,557,164,601,-1,613,226,616,-1,},A{0,-1,132,204,138,-1,140,234,143,204,144,231,151,223,152,231,153,223,161,229,162,233,166,-1,195,227,200,-1,201,216,206,-1,332,217,343,190,345,211,380,214,410,221,429,-1,431,196,461,-1,466,230,473,-1,474,230,486,225,499,151,531,235,536,151,539,236,540,151,551,160,558,164,602,-1,613,226,617,-1,644,226,645,-1,},A{0,-1,131,204,136,-1,138,234,143,231,152,223,153,229,155,223,159,229,161,233,166,-1,194,227,200,-1,202,216,204,-1,333,217,343,211,380,214,410,221,428,-1,431,196,461,-1,464,230,486,225,499,151,529,235,536,151,538,236,544,151,552,160,557,164,603,-1,617,226,618,-1,641,226,642,-1,644,226,645,-1,},A{0,-1,8,193,9,-1,129,204,135,-1,138,234,142,231,152,223,153,229,156,223,159,229,160,233,166,-1,194,227,200,-1,323,237,325,-1,328,237,330,-1,333,238,343,211,380,214,410,221,429,196,461,-1,463,230,486,225,500,151,501,225,502,151,525,235,536,151,538,236,543,151,554,160,556,164,603,-1,616,226,619,-1,644,226,645,-1,},A{0,-1,3,239,4,-1,5,239,6,-1,128,240,130,-1,131,240,135,234,136,-1,137,234,142,231,152,223,153,229,155,223,157,229,159,233,168,-1,194,227,199,-1,325,237,330,-1,331,237,333,-1,335,238,343,211,380,214,410,221,429,196,458,-1,462,230,486,225,504,151,523,235,531,164,546,151,555,160,556,164,604,-1,618,226,620,-1,},A{0,-1,123,240,124,-1,131,240,135,234,143,231,151,241,153,229,155,223,156,229,159,233,170,-1,194,227,199,-1,324,237,325,-1,327,237,328,-1,332,237,333,-1,337,238,343,211,380,214,410,221,429,196,455,242,458,-1,461,230,483,225,505,151,521,235,529,164,548,151,553,164,605,-1,619,226,620,-1,},A{0,-1,123,240,124,-1,129,240,134,234,142,231,150,241,152,233,154,229,158,233,171,-1,176,233,183,-1,193,227,198,-1,332,237,334,-1,339,238,344,211,380,214,410,221,430,196,431,243,432,196,449,244,453,242,457,-1,460,230,483,225,506,151,521,235,527,164,551,151,552,164,605,-1,618,226,619,-1,},A{0,-1,128,240,134,234,143,231,148,241,151,233,155,229,157,233,183,-1,189,227,198,-1,332,237,333,-1,340,238,349,211,379,214,410,221,430,243,433,196,448,244,454,242,457,244,458,-1,459,230,482,245,492,225,507,151,521,235,526,164,606,-1,619,226,620,-1,640,226,641,-1,},A{0,-1,128,240,133,234,143,231,149,241,151,233,190,227,198,-1,328,246,329,-1,340,238,351,211,379,214,409,221,429,247,430,243,435,196,447,244,457,230,482,245,493,225,508,151,522,164,523,235,524,164,606,-1,620,226,622,-1,},A{0,-1,127,240,132,234,142,248,144,231,149,248,150,233,190,227,198,-1,340,238,353,211,379,249,380,214,410,221,429,247,431,243,436,196,445,244,456,230,483,245,493,225,509,151,520,164,607,-1,618,226,621,-1,622,226,623,-1,},A{0,-1,127,240,131,234,142,248,148,250,150,233,190,227,198,-1,340,238,352,211,379,249,380,214,410,221,417,-1,419,221,429,247,431,243,435,196,443,244,455,230,484,245,495,225,509,151,518,164,606,-1,618,226,623,-1,},A{0,-1,126,240,131,234,135,251,142,250,144,248,147,250,150,233,190,227,198,-1,340,238,354,211,378,249,381,214,411,221,413,-1,422,221,423,-1,429,247,431,243,436,196,442,244,456,230,482,245,496,225,497,245,498,225,509,151,517,164,605,-1,619,226,623,-1,639,226,640,-1,},A{0,-1,125,240,130,234,132,251,142,250,154,233,190,227,200,-1,230,252,231,-1,341,238,358,211,378,249,382,214,408,-1,429,247,430,253,431,243,439,244,455,230,482,245,499,225,511,151,517,164,604,-1,616,226,617,-1,618,226,624,-1,639,226,640,-1,},A{0,-1,123,254,124,-1,125,254,131,251,142,250,154,233,190,227,201,-1,325,246,327,-1,341,238,357,211,377,249,383,214,389,-1,401,214,407,-1,429,247,432,255,435,243,438,244,454,230,481,245,499,225,509,151,519,164,604,-1,617,226,627,-1,},A{0,-1,120,254,122,-1,123,254,131,251,142,250,154,233,189,227,202,-1,327,246,328,-1,342,238,357,211,376,249,383,214,384,-1,430,256,431,247,432,255,437,243,438,244,452,230,481,245,500,225,508,151,518,164,603,-1,612,257,614,-1,617,226,629,-1,631,226,632,-1,639,226,640,-1,},A{0,-1,119,254,120,-1,123,254,131,251,142,250,154,233,189,227,205,-1,344,238,357,211,375,249,383,-1,430,256,432,255,439,244,451,230,481,245,500,225,508,151,518,164,603,-1,611,257,614,-1,619,226,633,-1,638,226,640,-1,},A{0,-1,119,254,132,251,142,250,154,233,189,227,205,-1,346,238,357,211,376,249,382,-1,431,256,433,255,441,244,451,230,481,245,502,225,508,151,518,164,602,-1,610,257,617,-1,618,226,619,-1,620,226,635,-1,638,226,639,-1,},A{0,-1,118,254,131,251,142,250,154,233,189,227,208,-1,347,238,356,211,377,249,384,-1,424,258,428,-1,431,255,442,244,451,230,482,245,502,225,513,151,516,259,520,164,601,-1,610,257,618,-1,621,226,640,-1,},A{0,-1,118,254,131,251,138,250,154,233,189,227,209,-1,347,238,356,211,377,249,383,-1,407,260,413,-1,424,258,425,261,429,-1,431,255,442,244,452,230,482,245,503,225,514,151,516,259,521,164,601,-1,611,257,619,-1,624,226,641,-1,},A{0,-1,117,254,131,251,137,250,138,251,140,250,154,233,190,227,210,-1,348,238,350,-1,357,211,377,249,383,-1,385,262,386,-1,388,263,390,-1,407,260,408,-1,414,260,415,-1,428,261,430,-1,431,255,443,244,453,230,482,264,486,245,503,225,513,259,530,164,602,-1,612,257,619,-1,626,226,627,-1,628,226,642,-1,},A{0,-1,116,254,132,251,136,250,138,251,139,250,154,233,190,227,209,-1,347,265,350,-1,360,211,377,249,382,-1,388,263,389,-1,410,260,412,-1,413,260,414,-1,415,260,417,-1,418,266,422,-1,424,266,429,-1,431,266,433,255,443,244,451,230,482,264,489,245,503,225,512,259,533,164,539,259,542,164,604,-1,611,257,619,-1,626,226,627,-1,631,226,642,-1,},A{0,-1,116,254,132,251,137,250,154,233,190,267,191,227,209,-1,342,268,344,-1,346,265,356,-1,363,211,377,249,383,262,385,-1,388,262,391,-1,403,260,406,-1,408,260,412,-1,414,260,415,266,433,255,434,266,435,255,437,266,439,255,444,244,450,230,481,264,489,245,503,269,504,225,511,259,541,164,605,-1,611,257,619,-1,633,226,642,-1,},A{0,-1,115,254,132,250,156,233,190,227,209,-1,309,270,311,-1,342,268,345,265,357,-1,372,211,373,-1,374,211,375,-1,378,249,382,-1,386,262,391,-1,401,260,407,-1,413,260,414,-1,415,266,444,255,445,244,447,266,448,244,449,266,450,230,461,-1,467,230,479,264,491,245,494,271,496,269,497,245,498,269,499,245,503,269,506,245,507,269,508,245,509,259,542,164,606,-1,611,257,619,-1,623,257,624,-1,633,226,643,-1,},A{0,-1,113,254,132,250,157,233,188,227,210,-1,308,270,310,-1,342,268,345,265,359,-1,384,262,392,-1,401,260,410,-1,413,260,414,266,449,230,459,-1,467,264,470,230,476,264,493,271,496,269,501,245,503,269,510,259,541,164,603,-1,609,257,610,272,612,257,619,-1,633,226,643,-1,},A{0,-1,113,254,132,250,157,233,185,273,186,274,187,275,189,227,210,-1,303,270,304,-1,341,268,346,265,360,-1,385,262,393,-1,400,260,409,-1,412,266,449,230,458,-1,467,264,473,230,474,264,492,271,497,269,501,245,503,269,509,259,541,164,602,-1,609,272,614,257,618,-1,636,226,644,-1,},A{0,-1,112,254,132,250,157,233,185,274,187,276,190,227,210,-1,302,270,306,-1,340,268,346,265,361,-1,362,265,364,-1,376,262,378,-1,386,262,387,-1,389,262,395,-1,401,260,408,-1,409,260,410,-1,413,266,449,230,456,277,458,-1,466,264,489,271,496,269,508,259,542,164,606,-1,609,272,617,-1,638,226,644,-1,},A{0,-1,112,254,132,250,157,233,185,276,190,227,212,-1,297,270,298,-1,340,268,346,265,360,-1,362,265,364,-1,365,265,367,-1,376,262,380,-1,392,262,395,-1,400,260,407,-1,411,260,413,266,448,230,450,277,452,278,453,277,454,230,456,277,459,-1,466,264,487,271,495,269,504,279,505,269,507,259,545,164,607,-1,609,272,616,-1,639,226,644,-1,},A{0,-1,112,254,132,250,156,233,185,276,190,227,212,-1,297,270,298,-1,341,268,346,265,360,-1,361,265,362,-1,364,265,369,-1,376,262,380,-1,391,262,397,-1,398,260,400,280,401,260,406,-1,410,260,411,-1,412,266,449,278,452,277,460,-1,465,264,486,271,495,281,497,269,499,279,508,259,545,164,608,272,616,-1,639,226,645,-1,},A{0,-1,111,254,132,250,157,233,185,276,190,227,213,-1,342,268,346,265,361,-1,368,265,369,-1,376,262,380,-1,389,262,397,-1,398,280,401,260,405,-1,406,260,409,-1,411,266,447,278,452,277,462,-1,465,264,485,271,494,281,499,269,501,281,502,279,503,281,504,279,509,259,546,164,609,272,618,-1,639,226,644,-1,},A{0,-1,111,254,132,250,158,233,186,276,190,227,216,-1,342,268,346,265,362,-1,376,262,380,-1,385,262,397,-1,398,280,402,260,410,-1,412,266,447,278,451,277,461,-1,465,264,484,271,494,281,496,282,497,281,500,269,502,281,506,279,513,259,548,164,611,272,620,-1,639,226,643,-1,},A{0,-1,111,254,132,250,157,233,186,283,187,276,190,227,221,-1,342,268,347,265,365,-1,376,262,377,-1,378,262,380,-1,385,262,394,-1,398,280,401,284,406,260,410,285,411,260,413,266,436,-1,438,266,439,-1,441,266,446,286,450,277,452,286,453,277,455,287,456,277,459,-1,465,264,482,271,493,282,498,281,502,279,503,281,504,279,516,259,548,164,613,272,620,-1,639,226,643,-1,},A{0,-1,111,254,132,250,158,233,187,276,190,288,193,227,194,289,196,227,221,-1,342,268,347,265,367,-1,377,290,379,-1,384,262,393,-1,398,291,399,280,401,284,406,285,413,266,417,-1,424,266,433,-1,443,286,452,277,454,287,457,277,458,-1,465,264,470,292,472,271,474,264,480,271,493,282,500,281,501,279,519,259,551,164,569,293,571,164,616,272,620,-1,638,226,643,-1,646,226,647,-1,},A{0,-1,111,254,126,294,138,250,158,233,186,288,194,289,198,227,220,-1,342,265,367,-1,377,290,380,262,392,295,393,-1,397,291,399,280,401,296,403,284,405,285,416,-1,443,286,451,287,457,-1,465,292,467,264,469,292,472,271,476,264,480,271,492,282,502,279,520,282,521,259,552,164,564,293,573,164,618,272,622,297,623,-1,638,226,643,-1,644,226,647,-1,},A{0,-1,110,254,124,294,138,250,158,233,186,288,195,289,202,227,219,-1,341,265,360,290,361,265,362,290,367,-1,377,290,380,262,389,-1,392,295,396,298,397,291,400,296,405,285,416,-1,442,286,448,287,456,-1,463,292,472,271,492,299,494,282,503,279,505,282,507,279,518,282,520,259,553,164,555,293,581,164,621,297,628,-1,639,226,648,-1,649,226,650,-1,},A{0,-1,111,254,124,294,138,250,158,233,186,288,195,289,202,227,220,-1,228,300,229,-1,341,265,357,290,368,-1,369,290,374,-1,379,262,388,-1,392,295,395,298,397,291,399,296,406,285,417,-1,440,286,443,287,456,-1,462,292,472,271,491,299,496,282,508,279,509,282,522,259,552,293,582,164,622,297,630,-1,640,226,652,301,653,-1,},A{0,-1,111,254,124,294,138,250,158,233,186,288,196,289,207,227,223,-1,227,300,231,-1,240,300,241,-1,343,265,349,-1,357,290,375,262,377,-1,380,262,387,-1,390,295,394,298,399,296,405,285,408,302,412,285,417,302,418,-1,438,287,456,-1,462,292,472,271,483,299,496,282,521,259,551,293,584,164,622,297,631,-1,642,226,651,301,654,-1,},A{0,-1,111,254,124,294,138,250,159,233,186,288,195,289,208,227,225,-1,227,300,233,-1,357,290,374,262,385,-1,389,295,392,298,399,296,405,302,418,-1,427,303,429,-1,436,287,455,-1,460,292,472,271,482,299,495,282,521,259,551,293,583,164,622,297,632,-1,642,226,649,-1,650,226,651,301,653,-1,},A{0,-1,111,254,126,294,134,250,159,233,187,288,195,289,209,227,226,304,228,300,236,-1,357,290,374,262,385,-1,387,295,392,298,399,296,403,302,420,-1,426,303,431,-1,434,287,455,-1,460,292,472,271,481,299,495,282,520,259,548,293,583,164,622,297,633,-1,642,226,646,-1,653,301,656,-1,},A{0,-1,111,254,127,294,133,250,159,233,187,288,195,289,217,227,225,304,230,300,235,305,239,-1,357,290,374,262,386,-1,387,295,399,296,402,302,417,306,418,302,419,306,421,-1,425,303,433,287,456,-1,462,292,473,307,474,271,479,299,495,282,523,259,524,282,525,259,542,308,546,293,589,164,626,297,635,-1,641,226,645,-1,655,301,658,-1,},A{0,-1,111,254,131,250,159,233,184,309,185,288,193,289,219,227,224,304,231,300,236,305,241,-1,357,290,374,262,388,310,391,295,398,296,402,302,416,311,417,306,421,-1,425,303,431,-1,435,287,453,312,458,-1,465,292,473,307,478,299,495,282,525,259,541,308,546,293,592,164,627,297,636,-1,644,313,645,-1,657,301,661,-1,},A{0,-1,111,254,131,250,158,233,181,309,184,288,192,289,219,227,224,304,232,300,236,305,241,-1,356,290,372,314,373,290,374,314,376,262,377,314,379,262,387,310,392,295,394,315,401,302,416,311,418,306,431,-1,436,287,453,312,459,316,460,-1,466,316,469,292,472,316,473,307,479,299,491,282,525,259,542,308,547,293,593,164,628,297,637,-1,642,313,645,-1,646,313,648,-1,660,301,662,-1,},A{0,-1,111,254,130,250,156,317,158,233,179,288,190,289,220,227,224,304,231,300,237,305,240,-1,247,318,248,319,255,-1,355,290,373,314,381,262,385,320,392,310,393,315,403,302,416,311,420,306,435,287,454,312,458,316,462,-1,463,316,471,307,480,299,488,282,526,259,542,308,548,293,600,164,628,297,637,-1,643,313,648,-1,661,301,662,-1,663,301,664,-1,},A{0,-1,111,254,129,250,156,321,157,322,158,233,180,288,189,289,221,227,222,304,223,227,224,304,232,300,238,305,241,-1,245,319,246,-1,247,318,248,319,255,-1,353,290,374,314,379,320,393,315,404,302,416,311,419,306,437,287,453,312,457,316,470,307,482,299,485,307,486,282,531,259,541,308,548,293,599,164,628,297,639,-1,643,313,647,-1,664,301,665,323,666,-1,},A{0,-1,110,254,128,250,152,233,181,288,186,289,223,304,233,300,239,319,255,-1,350,290,375,324,386,320,394,315,396,325,397,315,405,302,415,311,418,306,438,287,446,326,448,287,452,312,454,316,455,312,456,316,470,307,483,299,484,307,488,282,531,259,540,308,547,293,594,164,595,293,598,164,622,297,625,164,630,297,639,-1,643,313,646,-1,665,323,667,-1,},A{0,-1,110,254,128,250,152,233,176,327,178,289,183,288,184,289,232,300,239,319,255,-1,349,290,375,324,386,320,394,325,400,315,405,306,413,311,416,306,440,287,444,326,450,312,454,328,460,316,470,307,488,282,531,259,537,308,547,293,592,164,622,297,627,164,629,297,641,-1,644,313,646,-1,666,323,667,-1,},A{0,-1,109,329,114,254,128,250,152,233,171,330,176,327,178,289,234,331,239,319,254,-1,350,290,376,324,388,332,390,320,392,332,394,325,405,306,439,287,445,326,452,312,453,328,465,316,468,307,486,333,489,282,534,259,536,308,548,293,549,308,550,293,592,164,621,297,641,-1,643,313,646,-1,649,313,650,-1,667,323,669,-1,},A{0,-1,106,329,127,334,128,335,140,336,144,337,157,330,178,289,237,331,240,319,254,-1,354,290,355,338,356,290,373,324,386,332,396,325,404,339,405,306,440,287,444,326,454,328,467,307,485,333,493,282,534,340,536,308,551,293,579,341,582,293,593,164,619,342,622,297,641,-1,644,313,649,-1,668,323,670,-1,},A{0,-1,105,329,126,334,127,335,140,336,146,337,157,330,180,289,234,331,242,319,254,-1,347,343,348,-1,355,344,356,290,358,-1,360,290,370,345,372,346,373,324,385,332,397,339,406,306,439,287,444,326,454,328,469,307,485,333,494,282,530,340,533,282,534,340,539,308,551,293,554,347,555,293,576,341,586,293,593,164,594,341,597,164,615,342,623,297,642,-1,644,313,649,-1,668,323,670,-1,},A{0,-1,103,329,127,335,140,336,146,337,157,330,180,289,234,331,243,319,249,-1,348,343,354,-1,362,290,368,345,372,324,385,332,393,339,394,332,395,339,407,306,435,287,443,326,455,328,456,348,457,328,469,307,485,333,496,282,529,340,539,347,541,308,549,347,556,293,566,349,569,293,574,349,576,341,588,293,589,341,599,164,615,342,623,297,642,-1,644,313,648,-1,669,323,672,-1,},A{0,-1,101,329,126,335,140,336,146,337,157,330,180,289,234,331,244,319,250,-1,349,343,362,290,366,345,372,324,388,332,391,339,408,306,431,287,443,326,452,348,458,328,469,307,470,350,472,307,478,350,482,307,485,333,493,282,528,340,539,347,556,293,565,349,576,341,599,164,615,342,621,297,642,-1,643,313,648,-1,670,323,673,351,674,-1,},A{0,-1,1,352,3,-1,99,329,125,335,140,336,146,337,157,330,179,327,180,289,200,353,201,289,234,331,246,319,250,-1,340,354,341,-1,349,343,364,290,365,345,371,355,372,324,390,339,407,306,429,287,446,348,460,328,467,350,483,307,484,333,491,282,519,340,521,282,522,340,538,347,556,293,564,349,577,341,600,164,614,342,622,297,642,-1,644,313,648,-1,672,351,676,-1,718,352,719,-1,},A{0,-1,1,352,9,-1,98,329,124,335,140,336,146,337,157,330,179,327,180,289,199,353,202,289,234,331,246,319,250,-1,338,354,345,-1,348,343,363,-1,367,355,372,324,389,339,407,356,409,306,414,356,421,306,429,287,445,348,462,350,481,333,491,282,519,340,536,347,557,293,560,349,582,341,601,164,613,342,624,297,643,313,647,-1,672,351,677,-1,714,352,718,-1,719,352,},A{0,-1,7,352,16,-1,17,352,18,-1,96,329,123,335,140,336,145,337,157,330,180,289,197,353,203,289,228,357,246,319,250,-1,338,354,348,-1,350,343,364,-1,368,355,374,324,389,339,406,356,423,287,425,306,428,287,446,348,459,358,463,350,482,333,492,282,518,340,537,347,558,349,585,341,602,164,613,342,627,297,643,313,647,-1,672,351,678,-1,706,352,708,-1,711,352,713,-1,714,352,716,-1,},A{0,-1,17,352,21,359,23,-1,95,329,123,335,141,336,146,337,157,330,180,289,196,353,202,289,227,357,232,289,233,357,246,319,249,-1,340,354,348,-1,350,343,364,-1,369,355,374,324,389,339,408,356,423,287,454,360,456,348,457,358,464,350,481,333,492,282,517,340,534,361,538,347,558,349,588,341,600,164,612,342,629,297,643,313,647,-1,672,351,680,-1,705,352,710,-1,},A{0,-1,20,352,21,-1,22,359,27,-1,94,329,121,335,142,336,147,337,157,330,183,289,196,353,202,289,226,357,246,319,249,-1,339,354,349,-1,350,343,361,-1,369,355,374,324,389,339,408,356,425,287,454,360,456,358,464,350,483,333,493,282,516,340,534,361,538,347,556,349,588,341,602,164,609,342,623,297,626,342,630,297,643,313,647,-1,671,351,681,-1,},A{0,-1,25,359,29,-1,93,329,120,335,140,336,147,337,156,330,183,289,196,353,202,289,225,357,249,-1,339,354,348,-1,353,343,361,-1,373,324,389,339,407,356,425,287,453,360,458,358,465,350,482,333,492,282,507,362,510,282,514,363,519,340,524,363,526,340,533,361,538,347,553,349,589,341,604,342,623,297,642,-1,644,313,647,-1,671,351,682,-1,},A{0,-1,27,359,31,-1,34,359,36,-1,93,329,119,364,120,335,140,336,144,337,156,330,180,289,195,353,201,289,225,357,247,-1,339,354,344,343,350,365,352,343,360,-1,375,324,388,-1,390,339,407,366,410,356,411,366,412,356,423,287,453,360,460,358,465,350,466,287,467,350,487,333,492,282,502,362,504,282,505,362,511,363,512,282,514,363,529,340,531,361,538,347,551,349,591,341,603,342,621,297,641,-1,644,313,647,-1,671,351,684,-1,},A{0,-1,30,359,36,367,37,-1,39,367,42,-1,92,368,99,329,117,364,120,335,140,337,155,330,180,289,196,353,201,289,226,357,230,289,232,357,247,-1,342,354,345,343,359,-1,376,324,380,-1,381,369,385,-1,386,324,388,-1,393,339,398,-1,399,370,406,366,411,356,422,287,458,360,459,287,467,350,493,282,502,362,511,363,530,361,537,347,553,349,594,341,604,342,623,297,639,-1,671,351,685,-1,692,351,696,-1,},A{0,-1,32,359,36,367,42,-1,92,368,100,329,115,364,120,335,140,337,156,330,180,289,190,353,191,289,193,353,204,289,233,357,244,-1,343,354,346,343,358,-1,376,369,385,-1,386,371,389,369,391,-1,401,370,402,366,413,356,422,287,467,350,497,282,500,350,501,282,502,362,511,363,530,361,537,347,553,349,593,341,604,342,625,297,637,-1,670,351,686,-1,691,351,693,-1,},A{0,-1,35,359,36,367,43,-1,44,367,46,-1,48,367,50,-1,90,368,100,329,113,364,120,335,140,337,156,330,180,289,187,372,190,353,206,289,233,357,241,-1,346,343,357,-1,376,369,381,-1,382,369,386,371,389,-1,391,371,392,-1,401,366,413,373,414,356,421,287,468,350,501,362,511,363,526,374,527,363,529,361,539,347,554,349,592,341,603,342,622,297,636,-1,671,351,686,-1,},A{0,-1,38,367,45,-1,46,367,47,-1,50,367,51,-1,90,368,99,329,113,364,120,335,140,337,156,330,180,289,184,372,190,353,207,289,232,357,240,-1,345,343,356,-1,376,369,382,-1,383,369,384,-1,385,371,394,-1,401,373,403,366,410,373,416,287,462,375,463,358,465,287,466,358,469,350,501,362,512,363,526,374,531,361,538,347,555,349,591,341,601,342,622,297,637,-1,646,297,647,-1,671,351,687,-1,},A{0,-1,20,359,22,-1,40,367,47,-1,50,367,53,-1,88,368,96,329,112,364,120,335,140,337,156,330,182,289,183,372,190,353,207,289,232,357,239,-1,344,343,356,-1,376,369,381,-1,382,369,384,371,394,-1,396,371,397,-1,401,373,416,287,460,375,463,358,468,350,503,362,513,363,520,374,536,361,537,347,556,349,591,341,593,349,594,341,599,342,624,297,638,-1,671,351,687,-1,},A{0,-1,18,359,21,-1,42,367,48,-1,50,367,56,-1,87,368,91,376,94,368,95,329,112,364,120,335,140,337,156,330,175,372,190,353,207,289,232,357,238,-1,344,343,357,-1,377,369,383,371,398,-1,402,373,416,287,454,375,462,358,469,350,501,362,512,374,538,347,555,349,596,341,599,342,622,297,640,-1,672,351,687,-1,},A{0,-1,44,367,50,-1,51,367,56,-1,86,368,90,376,94,329,110,364,120,335,140,337,156,330,175,372,190,353,206,289,232,357,238,-1,332,343,333,-1,342,343,357,-1,379,369,382,371,395,-1,396,371,399,-1,403,373,406,377,407,-1,408,373,412,377,415,287,455,375,464,358,468,350,501,362,511,374,539,347,556,349,561,347,562,349,594,341,598,342,624,297,642,-1,673,351,687,-1,},A{0,-1,41,367,43,-1,44,367,57,-1,85,376,93,329,110,378,120,335,140,337,156,330,174,372,190,353,205,289,232,357,237,-1,344,343,354,-1,371,379,378,-1,382,371,395,-1,398,371,399,-1,403,377,415,287,453,375,463,358,468,350,501,362,502,350,509,362,510,374,536,347,563,349,595,341,597,349,598,342,624,297,642,-1,676,351,688,-1,},A{0,-1,35,359,36,367,57,-1,83,380,84,376,92,329,106,378,120,335,140,337,156,330,174,372,190,353,203,289,223,353,227,289,233,357,235,-1,348,343,355,-1,370,379,380,-1,381,371,397,-1,403,377,415,287,454,375,468,350,511,374,536,347,565,349,568,347,570,349,598,342,625,297,644,-1,662,301,666,-1,678,351,690,-1,},A{0,-1,35,359,36,367,60,-1,67,367,68,-1,81,380,85,329,87,376,91,329,106,378,120,335,140,337,156,330,170,372,190,353,204,289,222,353,228,289,231,357,234,-1,347,343,349,-1,351,343,352,-1,353,343,356,-1,369,379,384,371,399,-1,405,377,416,287,454,375,459,287,460,375,467,350,512,374,537,347,566,349,567,347,571,349,579,342,581,349,582,342,583,349,585,342,587,349,597,342,623,381,631,297,654,301,672,-1,679,351,692,-1,},A{0,-1,26,359,29,-1,31,359,36,367,66,-1,70,367,72,-1,77,380,83,329,104,378,120,335,140,337,156,330,170,372,190,353,205,289,221,353,229,289,230,357,234,-1,269,382,274,-1,357,343,358,-1,369,379,384,371,399,383,403,384,408,-1,410,377,413,287,454,375,457,287,460,375,467,350,513,374,534,347,570,349,579,342,588,349,594,342,623,381,636,297,654,301,670,-1,681,351,693,-1,700,351,701,-1,},A{0,-1,14,359,16,-1,24,359,36,367,78,380,82,385,84,386,112,387,120,335,156,372,190,353,205,289,221,353,230,357,233,-1,266,382,275,-1,355,343,359,-1,369,379,385,371,398,383,402,384,415,287,454,375,457,287,465,350,514,374,529,347,571,349,580,342,590,349,594,342,624,381,636,297,651,301,671,-1,683,351,696,-1,699,351,702,-1,},A{0,-1,13,359,15,-1,29,359,36,367,78,385,84,386,111,387,120,335,156,372,190,327,192,353,205,289,221,353,232,-1,262,382,275,-1,356,343,359,-1,368,379,385,371,397,-1,400,383,401,384,416,287,454,375,457,287,464,350,514,374,519,350,521,374,522,350,525,374,529,347,569,349,581,342,626,381,637,297,653,301,673,-1,679,301,684,351,705,-1,},A{0,-1,27,359,36,367,78,385,84,386,106,387,120,335,156,372,190,327,194,353,204,289,217,353,231,-1,261,382,276,-1,346,388,347,-1,368,379,386,371,396,-1,402,384,418,287,473,350,531,347,570,349,580,342,626,381,637,297,653,301,674,-1,679,301,684,351,707,-1,},A{0,-1,27,359,36,367,78,385,84,386,105,387,120,335,156,372,190,327,196,353,204,289,216,353,232,-1,260,382,277,-1,345,388,348,-1,368,379,384,371,396,-1,402,384,420,287,479,350,530,347,572,349,579,342,630,381,640,297,648,389,649,297,653,301,685,351,709,390,710,-1,},A{0,-1,28,359,36,367,78,385,84,386,101,387,120,335,156,372,190,327,197,353,204,289,210,353,211,289,214,353,232,-1,259,382,277,-1,344,388,348,-1,369,379,385,371,396,-1,401,384,422,287,479,350,529,347,573,349,580,342,631,381,641,297,643,389,650,301,685,351,708,390,714,-1,717,390,719,-1,},A{0,-1,20,359,21,-1,29,359,36,367,78,385,84,386,101,387,120,335,156,372,190,327,199,353,233,-1,258,382,278,-1,371,379,384,371,398,-1,401,384,423,287,479,350,530,347,573,349,579,342,628,381,639,389,651,301,685,351,699,390,},A{0,-1,16,359,23,-1,30,359,36,367,78,385,84,386,100,387,120,335,156,372,187,327,200,353,233,-1,257,382,279,-1,317,391,324,-1,374,379,384,371,401,384,422,287,479,350,531,347,573,349,579,342,628,381,639,389,651,301,686,351,697,390,},A{0,-1,16,359,21,-1,34,359,36,367,78,385,84,386,100,387,120,335,156,372,185,327,200,353,233,-1,255,382,280,-1,312,391,328,-1,375,379,385,371,403,-1,404,384,420,287,479,350,531,347,573,349,577,342,625,381,641,389,651,301,685,351,699,390,718,-1,},A{0,-1,12,390,16,-1,30,359,31,-1,33,359,35,-1,36,367,78,385,84,386,98,387,120,335,156,372,186,327,199,353,232,-1,255,382,280,-1,312,391,332,-1,377,379,388,371,404,-1,406,384,421,287,479,350,532,347,576,349,577,342,626,381,641,389,652,323,657,301,660,323,661,301,686,351,697,390,718,-1,},A{0,-1,8,390,17,-1,26,359,36,367,78,385,84,386,95,387,120,335,144,392,156,372,187,327,197,353,234,-1,254,382,281,-1,311,391,334,-1,379,379,388,371,404,-1,408,384,420,287,479,350,532,347,572,342,625,297,626,381,640,389,649,323,666,301,685,390,686,351,691,390,},A{0,390,2,-1,3,390,5,-1,7,390,17,-1,25,359,36,367,78,385,84,386,95,387,120,335,140,392,156,372,187,327,196,353,235,-1,253,382,286,-1,310,391,334,-1,381,379,389,371,406,-1,408,384,419,287,483,350,529,347,573,342,624,297,626,381,627,297,628,381,639,389,646,323,666,301,681,390,},A{0,390,22,359,36,367,78,385,84,386,95,387,120,335,134,392,156,372,188,327,191,353,237,-1,252,382,289,-1,311,391,333,-1,382,379,389,371,408,384,420,287,484,350,528,347,573,342,623,297,630,381,641,323,667,301,678,390,},A{0,390,21,-1,26,359,36,367,78,385,84,386,93,387,120,335,131,392,156,372,190,353,238,-1,251,382,291,-1,312,391,332,-1,382,379,391,371,407,384,419,287,487,350,527,347,572,342,620,297,639,323,677,301,678,390,},A{0,390,18,-1,31,359,33,-1,34,359,36,367,78,385,84,386,92,387,120,335,128,392,156,372,190,353,238,-1,251,382,294,-1,383,379,392,371,408,384,418,287,489,350,526,347,572,342,620,297,640,323,678,390,},A{0,390,14,-1,31,359,36,367,78,385,84,386,88,387,120,335,124,392,182,372,190,353,237,-1,251,382,295,-1,322,391,324,-1,383,379,393,371,407,384,419,287,491,350,524,347,573,342,622,297,637,323,676,390,},A{0,390,11,-1,29,359,36,367,78,385,84,386,87,387,120,335,121,392,182,372,190,353,233,-1,251,382,298,-1,384,379,393,371,407,384,420,287,492,350,524,347,574,342,625,297,639,323,677,390,},A{0,390,7,-1,25,359,36,367,78,385,84,386,87,387,119,392,182,372,190,353,230,-1,251,382,304,-1,385,379,396,371,406,384,417,287,454,-1,459,287,491,350,525,347,574,342,626,297,642,323,680,390,},A{0,390,4,-1,27,359,36,367,78,385,84,386,87,387,119,392,182,372,190,353,228,-1,251,382,309,-1,387,379,401,371,403,384,405,379,407,384,408,379,410,384,417,287,437,-1,445,287,448,-1,449,287,450,-1,455,287,461,-1,464,287,491,350,526,347,574,342,626,297,643,323,685,390,},A{0,-1,32,359,36,367,78,385,84,386,87,387,119,392,182,372,190,353,228,-1,251,382,313,-1,390,379,402,384,403,379,411,384,418,379,419,287,433,-1,455,287,462,-1,476,287,490,350,524,347,573,342,625,297,643,323,685,390,},A{0,-1,33,359,36,367,78,385,83,-1,88,387,120,335,126,392,181,372,190,353,227,-1,249,382,316,-1,394,379,412,384,418,379,422,287,428,-1,477,287,488,-1,491,350,518,347,576,342,627,297,644,323,685,390,692,-1,694,390,716,-1,},A{0,-1,34,359,36,367,70,-1,71,367,75,-1,97,387,120,335,140,392,180,372,190,353,226,-1,249,382,317,393,318,-1,396,379,423,-1,473,287,481,-1,493,350,520,347,579,342,626,297,642,323,681,-1,700,390,703,-1,},A{0,390,3,-1,39,367,57,-1,59,367,61,-1,102,387,120,335,140,392,179,372,190,353,224,-1,248,382,311,393,318,-1,341,379,343,-1,402,379,422,-1,465,287,478,-1,492,350,521,347,581,342,624,297,643,323,686,-1,716,390,},A{0,390,6,-1,8,390,10,-1,45,367,51,-1,104,387,120,335,140,392,177,372,190,353,219,-1,248,382,311,393,318,-1,342,379,345,-1,407,379,417,-1,463,287,474,-1,493,350,519,347,585,342,621,-1,622,342,623,297,645,323,665,-1,671,323,675,-1,717,390,},A{0,390,3,-1,106,387,120,335,140,392,176,372,190,353,217,-1,247,382,311,393,318,-1,462,287,473,-1,495,350,520,347,584,342,621,-1,623,297,628,-1,630,297,646,323,663,-1,},A{0,-1,107,387,120,335,140,392,172,372,190,353,212,-1,246,382,311,393,313,382,317,-1,462,287,472,-1,496,350,517,347,583,342,621,-1,637,297,649,323,660,-1,},A{0,-1,108,387,120,335,140,392,165,372,190,353,210,-1,245,382,318,-1,463,287,474,-1,497,350,516,347,581,342,621,-1,639,297,650,323,651,-1,},A{0,-1,109,387,120,335,140,392,158,372,190,353,208,-1,244,382,320,-1,465,287,475,-1,498,350,516,347,581,342,602,-1,604,342,619,-1,639,342,649,-1,},A{0,-1,109,387,120,335,140,392,156,372,190,353,206,-1,243,382,321,-1,466,287,477,-1,520,347,582,342,598,-1,605,342,615,-1,631,342,633,-1,639,342,648,-1,},A{0,-1,108,387,120,335,140,392,156,372,190,353,201,-1,243,382,323,-1,397,394,400,-1,469,287,480,-1,524,347,582,342,588,-1,590,342,594,-1,629,342,633,-1,638,342,644,-1,},A{0,-1,110,387,120,335,140,392,156,372,169,395,173,372,190,353,203,-1,242,382,326,-1,470,287,482,-1,517,347,520,-1,527,347,585,342,587,-1,635,342,649,-1,655,342,663,-1,},A{0,-1,111,387,120,335,140,392,156,372,167,395,173,372,190,353,203,-1,239,382,327,-1,470,287,485,-1,522,347,526,-1,530,347,589,-1,630,342,663,-1,},A{0,-1,112,387,120,335,140,392,156,372,190,353,204,-1,226,396,232,382,325,-1,475,287,493,-1,522,347,527,-1,534,347,589,-1,630,342,651,-1,652,342,654,-1,663,342,667,-1,},A{0,-1,112,387,120,335,140,392,156,372,190,353,204,-1,219,396,232,382,314,397,325,-1,393,394,394,-1,409,394,410,-1,478,287,499,-1,543,347,589,-1,635,342,645,-1,664,342,667,-1,},A{0,-1,115,387,120,335,140,392,156,372,190,353,206,-1,212,396,231,382,314,397,325,-1,389,394,396,-1,402,394,405,-1,409,394,413,-1,490,287,500,-1,547,347,586,-1,656,342,661,-1,674,342,678,-1,},A{0,-1,119,387,120,335,140,392,156,372,190,353,206,-1,213,396,231,382,314,397,325,-1,386,394,397,-1,401,394,408,-1,536,347,543,-1,551,347,578,-1,672,342,674,-1,},A{0,-1,126,335,140,392,156,372,190,353,209,-1,212,396,230,382,314,397,327,-1,385,394,412,-1,542,347,546,-1,555,347,577,-1,},A{0,-1,129,335,140,392,156,372,190,353,212,396,229,382,314,397,326,-1,381,394,408,-1,545,347,550,-1,554,347,577,-1,},A{0,-1,134,335,140,392,156,372,190,353,214,-1,215,396,228,382,315,397,326,-1,379,394,405,-1,411,394,421,-1,552,347,573,-1,},A{0,-1,142,392,156,372,190,353,214,-1,222,396,226,382,315,397,330,-1,380,394,412,-1,542,347,570,-1,},A{0,-1,150,392,156,372,187,327,190,353,220,-1,223,382,327,-1,379,394,417,-1,460,287,464,-1,475,287,481,-1,510,347,515,-1,540,347,564,-1,},A{0,-1,158,372,187,327,190,353,223,382,330,-1,391,394,418,-1,421,394,429,-1,431,287,436,-1,451,287,485,-1,540,347,559,-1,},A{0,-1,165,372,190,353,226,382,336,-1,397,394,412,-1,448,287,493,-1,515,347,523,-1,542,347,559,-1,},A{0,-1,168,372,190,353,231,382,339,-1,459,287,464,-1,466,287,485,-1,486,287,492,-1,538,347,555,-1,},A{0,-1,173,372,190,353,235,382,337,-1,473,287,481,-1,482,287,490,-1,},A{0,-1,182,372,190,353,240,382,327,-1,},A{0,-1,189,372,190,353,238,-1,253,382,323,-1,},A{0,-1,204,353,224,-1,266,382,315,-1,},A{0,-1,282,382,306,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},A{0,-1,},},},},fields={dense={scale=2400,octaves=3,},wild={scale=700,octaves=3,},wet={scale=1600,octaves=2,},odd={scale=200,octaves=2,},},salience={fake_landmarks=1,notable=3,cap={water="notable",},},names={shop=false,},pace={keys={run=2,walk=6,stroll=15,},gps={stroll=0.4,walk=1.0,run=2.5,zoom=6.0,},},zones={residential="built",commercial="built",civic="built",street="built",plaza="built",industrial="built",lot="built",park="green",trail="green",field="green",cemetery="green",woods="woods",water="water",floor="dungeon",},name="roll_cool",seed="roll-cool-1",map={themes=A{"transportation","places","base","divisions",},},rainbow_text=false,boards={today="ball",ever="best",cube_today="cube",cube_ever="cube_best",},weather={layer="c3",},factions={sides={sun={name="sun",colors=A{"red","orange",},outline="red",wash="orange",light=A{"#ff4f81","#ffa94f",},about="For the early ones. Out before the streets are swept, home with a ball full of the morning.",},moon={name="moon",colors=A{"purple","blue",},outline="blue",wash="blue",light=A{"#4b2fc4","#1d6fbf",},about="For the late ones. Quiet streets, cold hands, and whatever the day left lying around.",},},cells="altar",gift={least=250,tiers=3,cube=0.25,},reward={percent=10,pay="stardust",most=A{1,2,3,},},take={pays=A{10,20,},paid=3,cube=3,},},trips={places=A{{name="Paris",country="France",spots=A{{name="Louvre Pyramid",lat=48.86099,lon=2.33584,},{name="Eiffel Tower",lat=48.85826,lon=2.2945,},{name="Sacré-Cœur",lat=48.88681,lon=2.34302,},},},{name="London",country="United Kingdom",spots=A{{name="Big Ben",lat=51.5007,lon=-0.12457,},{name="Tower Bridge",lat=51.50552,lon=-0.07537,},{name="British Museum",lat=51.51931,lon=-0.12671,},},},{name="Rome",country="Italy",spots=A{{name="Colosseum",lat=41.89094,lon=12.4919,},{name="Trevi Fountain",lat=41.90098,lon=12.48328,},{name="Pantheon",lat=41.89862,lon=12.47683,},},},{name="Barcelona",country="Spain",spots=A{{name="Sagrada Família",lat=41.4035,lon=2.17443,},{name="Park Güell",lat=41.41423,lon=2.15246,},{name="La Rambla",lat=41.38082,lon=2.17357,},},},{name="Madrid",country="Spain",spots=A{{name="Puerta del Sol",lat=40.41686,lon=-3.70388,},{name="Museo del Prado",lat=40.41379,lon=-3.69204,},},},{name="Lisbon",country="Portugal",spots=A{{name="Belém Tower",lat=38.69197,lon=-9.21544,},{name="Praça do Comércio",lat=38.70772,lon=-9.13652,},},},{name="Porto",country="Portugal",spots=A{{name="Livraria Lello",lat=41.14683,lon=-8.61485,},{name="Ponte Luís I",lat=41.14017,lon=-8.60946,},},},{name="Amsterdam",country="Netherlands",spots=A{{name="Dam Square",lat=52.37312,lon=4.89235,},{name="Rijksmuseum",lat=52.35984,lon=4.88504,},},},{name="Berlin",country="Germany",spots=A{{name="Brandenburg Gate",lat=52.51627,lon=13.3777,},{name="Alexanderplatz",lat=52.52198,lon=13.41364,},{name="East Side Gallery",lat=52.50445,lon=13.44084,},},},{name="Munich",country="Germany",spots=A{{name="Marienplatz",lat=48.13714,lon=11.5754,},{name="Englischer Garten",lat=48.16486,lon=11.6064,},},},{name="Prague",country="Czechia",spots=A{{name="Charles Bridge",lat=50.08663,lon=14.40987,},{name="Old Town Square",lat=50.08745,lon=14.42097,},},},{name="Vienna",country="Austria",spots=A{{name="Stephansdom",lat=48.20849,lon=16.37313,},{name="Schönbrunn Palace",lat=48.18499,lon=16.31157,},},},{name="Budapest",country="Hungary",spots=A{{name="Fisherman's Bastion",lat=47.50231,lon=19.0347,},{name="Hungarian Parliament",lat=47.50705,lon=19.04592,},},},{name="Copenhagen",country="Denmark",spots=A{{name="Kongens Nytorv",lat=55.68042,lon=12.58596,},{name="The Little Mermaid",lat=55.69305,lon=12.59929,},},},{name="Stockholm",country="Sweden",spots=A{{name="Stortorget",lat=59.325,lon=18.07082,},{name="Vasa Museum",lat=59.32815,lon=18.09137,},},},{name="Oslo",country="Norway",spots=A{{name="Oslo Opera House",lat=59.90752,lon=10.75268,},},},{name="Reykjavík",country="Iceland",spots=A{{name="Hallgrímskirkja",lat=64.1418,lon=-21.92671,},},},{name="Dublin",country="Ireland",spots=A{{name="Trinity College Dublin",lat=53.34371,lon=-6.25443,},{name="Temple Bar",lat=53.3455,lon=-6.26311,},},},{name="Edinburgh",country="United Kingdom",spots=A{{name="Edinburgh Castle",lat=55.94869,lon=-3.20042,},{name="Royal Mile",lat=55.95006,lon=-3.18835,},},},{name="Athens",country="Greece",spots=A{{name="Acropolis of Athens",lat=37.97169,lon=23.72632,},{name="Monastiraki Square",lat=37.97636,lon=23.72595,},},},{name="Istanbul",country="Turkey",spots=A{{name="Hagia Sophia",lat=41.0085,lon=28.98001,},{name="Grand Bazaar",lat=41.01095,lon=28.96802,},{name="Galata Tower",lat=41.02564,lon=28.97421,},},},{name="Florence",country="Italy",spots=A{{name="Ponte Vecchio",lat=43.76803,lon=11.25316,},{name="Duomo",lat=43.7731,lon=11.25548,},},},{name="Venice",country="Italy",spots=A{{name="Piazza San Marco",lat=45.43426,lon=12.33867,},{name="Rialto Bridge",lat=45.43807,lon=12.33565,},},},{name="Brussels",country="Belgium",spots=A{{name="Grand Place",lat=50.84673,lon=4.35241,},{name="Atomium",lat=50.89571,lon=4.34107,},},},{name="Warsaw",country="Poland",spots=A{{name="Palace of Culture and Science",lat=52.23177,lon=21.0058,},{name="Old Town Market Square",lat=52.24977,lon=21.01252,},},},{name="Kraków",country="Poland",spots=A{{name="Main Market Square",lat=50.06133,lon=19.93599,},{name="Wawel Castle",lat=50.05441,lon=19.93602,},},},{name="Seville",country="Spain",spots=A{{name="Plaza de España",lat=37.37697,lon=-5.98694,},{name="Seville Cathedral",lat=37.38591,lon=-5.99314,},},},{name="Saint Petersburg",country="Russia",spots=A{{name="Palace Square",lat=59.93904,lon=30.31535,},{name="Church of the Savior on Spilled Blood",lat=59.9401,lon=30.32883,},},},{name="Moscow",country="Russia",spots=A{{name="Red Square",lat=55.75359,lon=37.6215,},},},{name="Tokyo",country="Japan",spots=A{{name="Shibuya Crossing",lat=35.6595,lon=139.7005,},{name="Sensō-ji",lat=35.7134,lon=139.79553,},{name="Tokyo Tower",lat=35.65845,lon=139.74554,},},},{name="Kyoto",country="Japan",spots=A{{name="Fushimi Inari Taisha",lat=34.96752,lon=135.77971,},{name="Kinkaku-ji",lat=35.03953,lon=135.72954,},{name="Gion",lat=35.00469,lon=135.7784,},},},{name="Osaka",country="Japan",spots=A{{name="Dōtonbori",lat=34.66921,lon=135.50157,},{name="Osaka Castle",lat=34.68718,lon=135.5254,},},},{name="Seoul",country="South Korea",spots=A{{name="Gyeongbokgung",lat=37.57975,lon=126.97668,},{name="Myeongdong",lat=37.5609,lon=126.98638,},{name="Bukchon Hanok Village",lat=37.58239,lon=126.98586,},},},{name="Beijing",country="China",spots=A{{name="Forbidden City",lat=39.91728,lon=116.39077,},{name="Temple of Heaven",lat=39.87991,lon=116.40287,},},},{name="Shanghai",country="China",spots=A{{name="The Bund",lat=31.23534,lon=121.48763,},{name="Yu Garden",lat=31.22893,lon=121.48798,},},},{name="Shenzhen",country="China",spots=A{{name="Ping An Finance Centre",lat=22.53641,lon=114.05047,},},},{name="Hong Kong",country="China",spots=A{{name="Victoria Peak",lat=22.27604,lon=114.14546,},{name="Tsim Sha Tsui Promenade",lat=22.29942,lon=114.18565,},},},{name="Taipei",country="Taiwan",spots=A{{name="Taipei 101",lat=25.03384,lon=121.5645,},{name="Longshan Temple",lat=25.03528,lon=121.49958,},},},{name="Singapore",country="Singapore",spots=A{{name="Marina Bay Sands",lat=1.2837,lon=103.86072,},{name="Chinatown",lat=1.27997,lon=103.84369,},},},{name="Bangkok",country="Thailand",spots=A{{name="Grand Palace",lat=13.74935,lon=100.49186,},{name="Khao San Road",lat=13.75891,lon=100.49727,},},},{name="Hanoi",country="Vietnam",spots=A{{name="Ngọc Sơn Temple",lat=21.03073,lon=105.85238,},},},{name="Ho Chi Minh City",country="Vietnam",spots=A{{name="Bến Thành Market",lat=10.77253,lon=106.69804,},},},{name="Kuala Lumpur",country="Malaysia",spots=A{{name="Petronas Towers",lat=3.15797,lon=101.7112,},},},{name="Jakarta",country="Indonesia",spots=A{{name="National Monument",lat=-6.1754,lon=106.82717,},},},{name="Manila",country="Philippines",spots=A{{name="Intramuros",lat=14.59096,lon=120.97465,},},},{name="Mumbai",country="India",spots=A{{name="Gateway of India",lat=18.92197,lon=72.83457,},{name="Chhatrapati Shivaji Maharaj Terminus",lat=18.93986,lon=72.83552,},},},{name="Delhi",country="India",spots=A{{name="India Gate",lat=28.61293,lon=77.22949,},{name="Red Fort",lat=28.65608,lon=77.2408,},},},{name="Jaipur",country="India",spots=A{{name="Hawa Mahal",lat=26.92393,lon=75.82687,},},},{name="Agra",country="India",spots=A{{name="Taj Mahal",lat=27.17501,lon=78.0421,},},},{name="Varanasi",country="India",spots=A{{name="Dashashwamedh Ghat",lat=25.30625,lon=83.01015,},},},{name="Kathmandu",country="Nepal",spots=A{{name="Kathmandu Durbar Square",lat=27.70429,lon=85.30656,},},},{name="Dubai",country="United Arab Emirates",spots=A{{name="Burj Khalifa",lat=25.19703,lon=55.27413,},{name="Al Fahidi Historical Neighbourhood",lat=25.26423,lon=55.30017,},},},{name="Tel Aviv",country="Israel",spots=A{{name="Jaffa Clock Tower",lat=32.05507,lon=34.75627,},},},{name="Samarkand",country="Uzbekistan",spots=A{{name="Registan",lat=39.65478,lon=66.97576,},},},{name="Ulaanbaatar",country="Mongolia",spots=A{{name="Sükhbaatar Square",lat=47.91881,lon=106.9169,},},},{name="Cairo",country="Egypt",spots=A{{name="Great Pyramid of Giza",lat=29.97916,lon=31.13421,},{name="Khan el-Khalili",lat=30.04894,lon=31.26134,},},},{name="Marrakesh",country="Morocco",spots=A{{name="Jemaa el-Fnaa",lat=31.62578,lon=-7.9889,},},},{name="Tunis",country="Tunisia",spots=A{{name="Medina of Tunis",lat=36.79869,lon=10.17174,},},},{name="Cape Town",country="South Africa",spots=A{{name="V&A Waterfront",lat=-33.906,lon=18.41953,},{name="Bo-Kaap",lat=-33.92056,lon=18.41288,},},},{name="Johannesburg",country="South Africa",spots=A{{name="Constitution Hill",lat=-26.18801,lon=28.04109,},},},{name="Nairobi",country="Kenya",spots=A{{name="KICC",lat=-1.28809,lon=36.82326,},},},{name="Lagos",country="Nigeria",spots=A{{name="Tafawa Balewa Square",lat=6.44707,lon=3.40151,},},},{name="Accra",country="Ghana",spots=A{{name="Black Star Square",lat=5.54742,lon=-0.19256,},},},{name="Addis Ababa",country="Ethiopia",spots=A{{name="Meskel Square",lat=9.01023,lon=38.76063,},},},{name="Dakar",country="Senegal",spots=A{{name="Place de l'Indépendance",lat=14.66953,lon=-17.43206,},},},{name="Zanzibar City",country="Tanzania",spots=A{{name="Stone Town",lat=-6.16265,lon=39.18966,},},},{name="Amman",country="Jordan",spots=A{{name="Roman Theatre",lat=31.95162,lon=35.93929,},},},{name="New York City",country="United States",spots=A{{name="Empire State Building",lat=40.74844,lon=-73.98566,},{name="Brooklyn Bridge",lat=40.70622,lon=-73.99702,},{name="Central Park",lat=40.78277,lon=-73.96536,},},},{name="Philadelphia",country="United States",spots=A{{name="Philadelphia Museum of Art",lat=39.96557,lon=-75.18152,},{name="Liberty Bell",lat=39.94995,lon=-75.15021,},{name="Pat's King of Steaks",lat=39.93322,lon=-75.15924,},},},{name="Washington",country="United States",spots=A{{name="Lincoln Memorial",lat=38.88926,lon=-77.05021,},{name="United States Capitol",lat=38.88981,lon=-77.00902,},},},{name="Boston",country="United States",spots=A{{name="Faneuil Hall",lat=42.36003,lon=-71.05623,},{name="Fenway Park",lat=42.34646,lon=-71.0971,},},},{name="Chicago",country="United States",spots=A{{name="Cloud Gate",lat=41.88268,lon=-87.62334,},{name="Navy Pier",lat=41.8918,lon=-87.60414,},},},{name="San Francisco",country="United States",spots=A{{name="Golden Gate Bridge",lat=37.80745,lon=-122.47596,},{name="Fisherman's Wharf",lat=37.80813,lon=-122.41659,},{name="Painted Ladies",lat=37.77622,lon=-122.43279,},},},{name="Los Angeles",country="United States",spots=A{{name="Santa Monica Pier",lat=34.0089,lon=-118.4974,},{name="Griffith Observatory",lat=34.11822,lon=-118.30029,},{name="TCL Chinese Theatre",lat=34.10207,lon=-118.34095,},},},{name="Seattle",country="United States",spots=A{{name="Pike Place Market",lat=47.6094,lon=-122.34141,},{name="Space Needle",lat=47.62051,lon=-122.3493,},},},{name="New Orleans",country="United States",spots=A{{name="Jackson Square",lat=29.95747,lon=-90.06295,},{name="Bourbon Street",lat=29.95781,lon=-90.06636,},},},{name="Miami",country="United States",spots=A{{name="South Beach",lat=25.77443,lon=-80.13324,},},},{name="Las Vegas",country="United States",spots=A{{name="Bellagio",lat=36.11232,lon=-115.17872,},},},{name="Nashville",country="United States",spots=A{{name="Ryman Auditorium",lat=36.16125,lon=-86.7785,},},},{name="Toronto",country="Canada",spots=A{{name="CN Tower",lat=43.64256,lon=-79.38709,},{name="Kensington Market",lat=43.65521,lon=-79.40226,},},},{name="Montreal",country="Canada",spots=A{{name="Old Port of Montreal",lat=45.50441,lon=-73.55299,},{name="Mount Royal",lat=45.50859,lon=-73.58971,},},},{name="Vancouver",country="Canada",spots=A{{name="Gastown",lat=49.28366,lon=-123.10624,},{name="Stanley Park",lat=49.30207,lon=-123.14133,},},},{name="Mexico City",country="Mexico",spots=A{{name="Zócalo",lat=19.43265,lon=-99.1332,},{name="Chapultepec Castle",lat=19.42046,lon=-99.18209,},{name="Jardín Centenario, Coyoacán",lat=19.34926,lon=-99.16367,},},},{name="Oaxaca",country="Mexico",spots=A{{name="Zócalo de Oaxaca",lat=17.0606,lon=-96.72534,},},},{name="Havana",country="Cuba",spots=A{{name="Plaza Vieja",lat=23.13608,lon=-82.35003,},{name="Malecón",lat=23.14593,lon=-82.38596,},},},{name="Bogotá",country="Colombia",spots=A{{name="Plaza de Bolívar",lat=4.59817,lon=-74.076,},},},{name="Medellín",country="Colombia",spots=A{{name="Plaza Botero",lat=6.25185,lon=-75.56864,},},},{name="Cartagena",country="Colombia",spots=A{{name="Torre del Reloj",lat=10.42305,lon=-75.54921,},},},{name="Lima",country="Peru",spots=A{{name="Plaza Mayor de Lima",lat=-12.04594,lon=-77.03057,},{name="Miraflores",lat=-12.1215,lon=-77.02591,},},},{name="Cusco",country="Peru",spots=A{{name="Plaza de Armas",lat=-13.51677,lon=-71.97878,},},},{name="Quito",country="Ecuador",spots=A{{name="Plaza de la Independencia",lat=-0.22011,lon=-78.51209,},},},{name="Buenos Aires",country="Argentina",spots=A{{name="Obelisco",lat=-34.60371,lon=-58.38163,},{name="La Boca",lat=-34.63351,lon=-58.35904,},{name="Recoleta Cemetery",lat=-34.58766,lon=-58.3936,},},},{name="Rio de Janeiro",country="Brazil",spots=A{{name="Copacabana",lat=-22.97197,lon=-43.1843,},{name="Christ the Redeemer",lat=-22.95192,lon=-43.21046,},{name="Arcos da Lapa",lat=-22.91303,lon=-43.17996,},},},{name="São Paulo",country="Brazil",spots=A{{name="Avenida Paulista",lat=-23.55686,lon=-46.66141,},{name="Sé Cathedral",lat=-23.55127,lon=-46.63437,},},},{name="Santiago",country="Chile",spots=A{{name="Plaza de Armas",lat=-33.43742,lon=-70.65128,},},},{name="Sydney",country="Australia",spots=A{{name="Sydney Opera House",lat=-33.8572,lon=151.21512,},{name="Bondi Beach",lat=-33.8907,lon=151.27241,},},},{name="Melbourne",country="Australia",spots=A{{name="Flinders Street Station",lat=-37.81842,lon=144.96648,},{name="Federation Square",lat=-37.81774,lon=144.96916,},},},{name="Auckland",country="New Zealand",spots=A{{name="Sky Tower",lat=-36.84846,lon=174.76218,},},},{name="Wellington",country="New Zealand",spots=A{{name="Te Papa",lat=-41.29033,lon=174.78193,},},},{name="Honolulu",country="United States",spots=A{{name="Waikiki Beach",lat=21.2741,lon=-157.82431,},},},},days=14,},guide={links={bag="inventory",shop="shop",catalog="catalog",},lines={tap="Tap a thing to roll it into your {ball | cube}. You can roll smaller things, but watch out for bigger things.",walk="Walk around to find things to roll into your ball.",cube="When you're playing without GPS, you roll a cube, not a ball: it has its own size and its own boards. Use GPS to grow your ball.",stardust="Stardust: buys clothes at the [shop](shop). You get it for every new kind you roll up, and some other special cases.",present="Roll up presents to get what's inside.",altar="Sacrifice half your {ball | cube} to the altar to gain control of this area for your team. Your reward? Stardust for winning it, and more as you roll things there, walking. At midnight the altars move, and every area starts over.",mix="Your {ball | cube} is mostly {pct}% {part}.",star="At midnight your ball becomes a star, and a cube becomes a planet. Bigger *is* better.",word="Words can be used to describe you in your profile.",wearable="Something to wear: tap it in your [bag](bag) to put it on.",},help=A{{heading="Rolling",topics=A{{title="walking",line="Walk around to find things to roll into your ball.",},{title="rolling things up",line="Tap a thing to roll it into your {ball | cube}. You can roll smaller things, but watch out for bigger things.",},{title="the map",line="Each hex on the map is a room, about 15 m across, and its colour says what kind of place it is: tap *legend* to see which. You're in the middle.",},{title="ball or cube",line="When you're playing without GPS, you roll a cube, not a ball: it has its own size and its own boards. Use GPS to grow your ball.",},{title="what it's made of",line="What most of your {ball | cube} is made of shows under its size: food, detritus, animals and so on.",},{title="going fast",line="Faster than anyone runs (on a bus, in a car), rooms wait till you slow down, and nothing can be rolled up meanwhile.",},},},{heading="Your stuff",topics=A{{title="stardust",line="Stardust: buys clothes at the [shop](shop). You get it for every new kind you roll up, and some other special cases.",},{title="presents",line="Roll up presents to get what's inside.",},{title="things to wear",line="Something to wear: tap it in your [bag](bag) to put it on.",},{title="words",line="Words can be used to describe you in your profile.",},{title="the catalog",line="Every kind of thing you've rolled up is in the [catalog](catalog), by type. The ones you haven't found yet are there too, dim.",},},},{heading="Teams",topics=A{{title="altars and teams",line="Sacrifice half your {ball | cube} to the altar to gain control of this area for your team. Your reward? Stardust for winning it, and more as you roll things there, walking. At midnight the altars move, and every area starts over.",},{title="chat",line="Chat is with your team, in the area you're in. You need to be logged in. Nothing is kept: you see what's said while you're here. Tap a message to report it or to block whoever said it: then neither of you hears the other.",},},},{heading="Each day",topics=A{{title="stars and planets",line="At midnight your ball becomes a star, and a cube becomes a planet. Bigger *is* better.",},{title="the boards",line="The boards rank today's biggest, in your area and in the world, and the best ever. Your area is where your {ball | cube} last grew. Some names on them are NPCs, there so a board is never empty.",},},},{heading="Your account",topics=A{{title="playing as a guest",line="As a guest, your game is kept on this phone only: clear the browser or lose the phone and it's gone. Sign up to keep it, play on other devices, join a team and chat. Signing up keeps everything you have.",},{title="one device at a time",line="You play in one tab, on one device, at a time. Open the game somewhere else and it asks whether to play there; if you do, the other one stops.",},{title="deleting your account",line="Open your profile (top right), then *account*, then *delete account*. Everything of yours goes with it, for good.",},},},},},tutorial={fits=50,gift=A{"w_mortarboard","w_graduation_gown",},into="wardrobe",record="wardrobe",text="You graduated! A graduation cap and a graduation gown, yours to keep.",rooms=A{{title="A small, bare room",text="A small, bare room with one lamp. An acorn cap lies on the floor.",tip="Tap the acorn cap to roll it up. Then either tap the N button on the screen (or W if you have a keyboard) to go north.",things=A{{id="acorn_cap",name="acorn cap",size=15,},},},{title="A busier floor",text="The floor here is busier, and one thing on it is too big for you, for now.",tip="Roll up the small things. Bump into something too big and things come loose.",things=A{{id="hex_nut",name="hex nut",size=15,},{id="dime",name="dime",size=18,},{id="googly_eye",name="googly eye",size=15,},{id="cherry_pit",name="cherry pit",size=15,},{id="candy",name="candy",size=15,},{id="gravel",name="gravel",size=15,},},},{title="By the door",text="A blackberry sits by the door, bigger than the dime was. Roll up a few more things and it fits.",things=A{{id="blackberry",name="blackberry",size=20,},{id="marble",name="marble",size=16,},{id="die",name="die",size=16,},{id="subway_token",name="subway token",size=16,},},},{title="A window",text="A window, and the sky going dark outside. The sill is crowded.",tip="At midnight your ball becomes a star. Roll it as big as you can, every day.",things=A{{id="nickel",name="nickel",size=21,},{id="penny",name="penny",size=20,},{id="candy_corn",name="candy corn",size=20,},{id="cufflink",name="cufflink",size=20,},{id="bingo_chip",name="bingo chip",size=20,},{id="beetle",name="beetle",size=20,},{id="earplug",name="earplug",size=20,},{id="quarter",name="quarter",size=24,},{id="acorn",name="acorn",size=25,},{id="cherry",name="cherry",size=25,},{id="olive",name="olive",size=25,},{id="almond",name="almond",size=25,},{id="pom_pom",name="pom-pom",size=25,},},},{title="Graduation",text="Two presents on a table, with your name on them.",tip="Open them. They're yours to keep.",things=A{},gift=A{{id="w_mortarboard",name="graduation cap",},{id="w_graduation_gown",name="graduation gown",},},},{title="The door",text="A door, open onto the street. Out there is your neighborhood, and everything in it can be rolled up, eventually.",tip="Every day out there, your ball starts just this big.",things=A{},},},start=30,cheer={at=50,text="Great job, you're becoming",rainbow="GIGANTIC!!!",after="Keep rolling things up to make the biggest star in the universe.",},},},packs=A{{name="base",symbols={title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},},},},title_plain={spread=3,options=A{{text="",when={type="street",},},{text=", ",when={type="street",},},{text="On ",when={type="street",},},{text=" at ",w=3,when={type="street",corner=true,},},{text="Corner of and ",w=3,when={type="street",corner=true,},},{text="",when={type="commercial",},},{text="Outside ",when={type="commercial",},},{text="Shopfronts on ",when={type="commercial",street=true,},},{text=", ",when={type="commercial",street=true,},},{text=", ",when={type="residential",street=true,},},{text="Rowhouses on ",when={type="residential",street=true,},},{text=" block of ",when={type="residential",street=true,},},{text="Behind ",when={type="residential",street=true,},},{text=" residential block",when={type="residential",},},{text="",when={type="plaza",},},{text=", ",when={type="plaza",},},{text="The middle of ",when={type="plaza",},},{text="",when={type="park",},},{text=", ",when={type="park",},},{text=" corner of ",when={type="park",},},{text="",when={type="woods",},},{text="Deep in ",when={type="woods",wild=A{75,100,},},},{text="The edge of ",when={type="woods",},},{text="A clearing in ",when={type="woods",},},{text="",when={type="water",},},{text="The banks of ",when={type="water",},},{text=", ",when={type="water",},},{text=" ",when={type="field",},},{text=" off ",when={type="field",street=true,},},{text="Open near ",when={type="field",street=true,},},},},street_spot=A{"mid-block","by the curb cut","the north sidewalk","the south sidewalk","under the streetlight","by the bus stop",},house_spot=A{"the shady side","the sunny side","near the alley","middle of the block",},house_adj=A{"narrow","tidy","tired","brick","crooked","freshly painted",},plaza_spot=A{"by the fountain","the east steps","near the benches","the far corner",},park_spot=A{"the lower lawn","by the gate","along the path","the old grove",},park_adj=A{"quiet","overgrown","well-kept","forgotten","sunlit",},water_spot=A{"the shallows","under the willows","the far bank","by the footbridge",},field_noun=A{"field","meadow","pasture","lot","clearing",},field_adj=A{"open","empty","windy","fallow","wide",},tree=A{"oak","maple","sycamore","beech","tulip poplar","hemlock","birch","black cherry",},sign_text=A{"Back in 5 minutes","Cash only. Sorry","Yes, we're open","Ask about the soup","Closed for the season","Lost: one grey cat, answers to nothing",},fake_landmark_intro=A{{text=" .",w=3,},{text=" .",w=2,},{text=" is .",w=2,},{text=" .",w=2,},{text=" is , .",w=2,},"You're at , .","This is , .",},lm_verb=A{"stands","rises","looms","sits",},lm_where=A{"just ahead","right in front of you","across the street","close by","on your left","on your right",},lm_presence=A{"is impossible to miss","draws people from all around","is smaller than people say","is bigger up close than you'd think","is hard not to look at",},lm_aside=A{"which everyone around here gives directions by","the kind of place people arrange to meet at","a name everyone in the neighborhood knows","hard to miss from anywhere nearby","the one thing around here people come to see",},ambient=A{{text=" ",w=3,when={weather=A{"clear","cloudy","fog","rain","sleet","snow","thunder",},},},{text=" ",w=2,when={weather=A{"clear","cloudy","fog","rain","sleet","snow","thunder",},},},"",},tod_line=A{{text="It's the middle of the night.",when={tod="night",},},{text="It's late, and everything has gone quiet.",when={tod="night",},},{text="The small hours have settled in.",when={tod="night",},},{text="Night has the place to itself.",when={tod="night",},},{text="The streetlights hum in the dark.",when={type=A{"street","commercial","plaza","residential",},tod="night",},},{text="A few windows are still lit.",when={type=A{"residential","street","commercial",},tod="night",},},{text="Stars show between the branches.",when={type=A{"woods","park",},tod="night",weather="clear",},},{text="It's properly dark out here, away from the lights.",when={type=A{"park","trail","field","cemetery","woods",},tod="night",},},{text="Lights along the shore wobble in the black water.",when={type="water",tod="night",},},{text="The sky is just beginning to lighten.",when={tod="dawn",},},{text="Birds are starting up for the day.",when={tod="dawn",},},{text="It's early, and the light is still thin.",when={tod="dawn",},},{text="Dawn is coming on slowly.",when={tod="dawn",},},{text="The first delivery vans are out.",when={type=A{"street","commercial",},tod="dawn",},},{text="Dew is on the grass.",when={type=A{"park","trail","field","cemetery",},tod="dawn",},},{text="Mist lifts off the water in the first light.",when={type="water",tod="dawn",},},{text="It's morning, and the day is still deciding what it'll be.",when={tod="morning",weather="cloudy",},},{text="Morning light comes in low and sideways.",when={tod="morning",weather="clear",sun="low",},},{text="It's morning.",when={tod="morning",},},{text="The morning is getting underway.",when={tod="morning",},},{text="It's still early in the day.",when={tod="morning",},},{text="People hurry past, already late for something.",when={type=A{"street","commercial","plaza",},tod="morning",},},{text="Joggers are out on the paths.",when={type=A{"park","trail","field",},tod="morning",},},{text="It's around midday.",when={tod="midday",},},{text="It's the middle of the day.",when={tod="midday",},},{text="The day is at its height.",when={tod="midday",},},{text="The sun is high and the shadows are short.",when={weather="clear",tod="midday",sun="high",},},{text="The light is flat and even.",when={weather=A{"cloudy","fog",},tod="midday",},},{text="The lunch crowd comes and goes.",when={type=A{"commercial","street","plaza",},tod="midday",},},{text="The afternoon is wearing on.",when={tod="afternoon",},},{text="It's afternoon.",when={tod="afternoon",},},{text="The day has turned the corner into afternoon.",when={tod="afternoon",},},{text="The afternoon has gone slow and heavy.",when={tod="afternoon",},},{text="Long shadows stretch across the ground.",when={tod="afternoon",weather="clear",sun="low",},},{text="Light glances off the water.",when={type="water",tod=A{"morning","midday","afternoon",},weather="clear",},},{text="Dusk is settling in.",when={tod="dusk",},},{text="The day is fading.",when={tod="dusk",},},{text="It's getting dark.",when={tod="dusk",},},{text="The light is going amber.",when={weather="clear",tod="dusk",},},{text="Streetlights flicker on, one by one.",when={type=A{"street","commercial","plaza","residential","industrial","lot",},tod="dusk",},},{text="Birds are settling noisily into the trees.",when={type=A{"park","woods","cemetery",},tod="dusk",},},{text="The water has gone the color of the sky.",when={type="water",tod="dusk",},},{text="It's evening, and lights are coming on in windows.",when={type=A{"residential","street","commercial",},tod="evening",},},{text="It's evening.",when={tod="evening",},},{text="The evening has settled in.",when={tod="evening",},},{text="Night is coming on.",when={tod="evening",},},{text="The day is done.",when={tod="evening",},},{text="Someone, somewhere, is cooking dinner.",when={type="residential",tod="evening",},},{text="It's dark under the trees already.",when={type=A{"woods","park",},tod="evening",},},},weather_line=A{{text="The sky is clear.",when={weather="clear",},},{text="Not a cloud anywhere.",when={weather="clear",},},{text="The air is clear and still.",when={weather="clear",wind="calm",},},{text="The sky is open and wide.",when={type=A{"park","trail","field","water","cemetery",},weather="clear",},},{text="Sun comes through the leaves in patches.",when={type="woods",weather="clear",tod=A{"morning","midday","afternoon",},},},{text="Sunlight sits warm on the pavement.",when={type=A{"street","plaza","commercial","lot",},weather="clear",heat=A{"hot","mild",},tod=A{"morning","midday","afternoon",},},},{text="A flat grey sky presses down.",when={weather="cloudy",},},{text="Clouds have settled over everything.",when={weather="cloudy",},},{text="The sky is a lid of cloud.",when={weather="cloudy",},},{text="Low cloud drags overhead.",when={weather="cloudy",},},{text="The water is dull and grey under the cloud.",when={type="water",weather="cloudy",},},{text="The wind worries at anything loose.",when={wind="windy",},},{text="A gusty wind is blowing.",when={wind="windy",},},{text="The wind keeps changing its mind.",when={wind="windy",},},{text="The wind can't settle on a direction.",when={wind="windy",},},{text="Litter skitters along the ground in the wind.",when={type=A{"street","commercial","plaza","lot",},wind="windy",},},{text="The trees are thrashing in the wind.",when={type=A{"woods","park",},wind="windy",},},{text="The grass ripples in the wind.",when={type=A{"field","park","cemetery",},wind="windy",},},{text="The wind whips the water into small waves.",when={type="water",wind="windy",},},{text="Rain falls steadily.",when={weather="rain",amount="steady",},},{text="It's raining.",when={weather="rain",},},{text="A thin rain is coming down.",when={weather="rain",amount="light",},},{text="A fine drizzle hangs in the air.",when={weather="rain",amount="light",},},{text="The rain keeps on.",when={weather="rain",},},{text="Rain is coming down in sheets.",when={weather="rain",amount="heavy",},},{text="It's pouring.",when={weather="rain",amount="heavy",},},{text="Water sheets off every roof.",when={type=A{"residential","commercial","street",},weather=A{"rain","thunder",},amount="heavy",},},{text="Rain drums on the awnings.",when={type=A{"commercial","street",},weather="rain",},},{text="The gutters run with rainwater.",when={type=A{"street","residential",},weather="rain",},},{text="Rain patters on the leaves.",when={type=A{"woods","park",},weather="rain",},},{text="Rain dimples the surface of the water.",when={type="water",weather="rain",},},{text="Sleet spits down.",when={weather="sleet",},},{text="A cold, wet sleet is falling.",when={weather="sleet",},},{text="Sleet ticks against the windows.",when={type=A{"residential","commercial","street",},weather="sleet",},},{text="Slush gathers in the gutters.",when={type=A{"street","residential","commercial",},weather="sleet",},},{text="Snow is falling.",when={weather="snow",},},{text="Snow drifts down in big, slow flakes.",when={weather="snow",amount=A{"light","steady",},},},{text="A few flakes of snow wander down.",when={weather="snow",amount="light",},},{text="Snow is coming down hard and fast.",when={weather="snow",amount="heavy",},},{text="The snow muffles every sound.",when={weather="snow",amount=A{"steady","heavy",},},},{text="Snow gathers on the branches.",when={type=A{"woods","park","cemetery",},weather="snow",},},{text="Snow collects along the curbs.",when={type=A{"street","residential","commercial",},weather="snow",},},{text="Snowflakes vanish into the water.",when={type="water",weather="snow",},},{text="Thunder rumbles overhead.",when={weather="thunder",},},{text="Lightning flickers behind the clouds.",when={weather="thunder",},},{text="A storm is grinding through.",when={weather="thunder",},},{text="Rain hammers down between rolls of thunder.",when={weather="thunder",amount=A{"steady","heavy",},},},{text="The heat sits heavy and close.",when={heat="hot",},},{text="Even the shade is hot.",when={heat="hot",tod=A{"morning","midday","afternoon",},},},{text="Heat shimmers off the pavement.",when={type=A{"street","plaza","commercial","lot",},heat="hot",weather=A{"clear","cloudy",},tod=A{"midday","afternoon",},},},{text="The night hasn't cooled off at all.",when={heat="hot",tod=A{"evening","night",},},},{text="The cold bites at your face.",when={heat="cold",},},{text="Your breath shows in the air.",when={heat="cold",},},{text="Everything is stiff with cold.",when={heat="cold",},},{text="Fog softens everything in the distance.",when={weather="fog",},},{text="Fog has come down thick.",when={weather="fog",},},{text="The fog muffles every sound.",when={weather="fog",},},{text="The world ends a little way off, in fog.",when={weather="fog",},},{text="The fog has swallowed the far end of the street.",when={type="street",weather="fog",},},{text="Trees loom out of the fog.",when={type=A{"woods","park",},weather="fog",},},{text="You can't see the far shore for the fog.",when={type="water",weather="fog",},},},region_name=A{{text="",w=3,}," ",{text=" ",w=2,},{text=" Hollow",when={type=A{"woods","park",},},},{text=" Flats",when={type=A{"field","water",},},},},name_root=A{"Fish","Kensing","Ashe","Brew","Cotton","Frank","Holme","Kings","Mill","Oxen","Penn","Quarry","Saw","Tanner","Wood","Brick","Cedar","Rox",},name_end=A{"town","ton","ford","field","dale","borough","brook","wick","mount",},name_dir=A{"North","South","East","West","Upper","Lower","Old",},region_kind=A{"Heights","Park","Square","Point","Hill","Junction","Crossing",},surname=A{"Callow","Wister","Pastor","Biddle","Lardner","Penrose","Haverford","Tioga","Passmore","Weccacoe","Wingate","Fairhill","Cresson","Allegheny","Ridley","Moyamensing","Harrow","Lindley","Ogontz","Shunk","Mifflin","Dauphin",},street_name=A{{text=" Street",w=3,when={axis="ns",},},{text=" Street",w=2,when={axis="ns",},},{text=" Street",w=3,when={axis="ew",},},{text=" Avenue",when={axis="ew",},}," Lane",},ordinal=A{"2nd","3rd","4th","5th","7th","9th","10th","12th","13th","15th","17th","19th","20th","22nd","23rd","25th",},park_name=A{" Park"," Square"," Green"," Commons",},water_name=A{" Creek","the Run"," Creek","Mill Run",},woods_name=A{" Woods","the Wood"," Glen",},plaza_name=A{" Plaza"," Square","the Circle",},shop_name=A{"'s ","The "," & Sons "," ",},shop_kind=A{"hardware","bakery","laundromat","tailor","pharmacy","deli","bookshop","barber","pawn","florist","tackle shop","watch repair",},shop_adj=A{"copper","blue","lucky","corner","golden","crooked","little","night",},shop_noun=A{"kettle","spoon","lantern","anchor","key","owl","door","button",},},types={},},{name="map",symbols={title=A{{text="",when={salience="fake_landmark",},},{text="Intersection of ",when={salience=A{"quiet","notable",},streets_n=A{3,99,},},},{text=", over ",when={water=true,bridge=true,salience=A{"quiet","notable",},streets_n=A{0,2,},},},{text="",when={streets_n=A{0,2,},salience=A{"quiet","notable",},bridge_over_water=false,},},},landmark_line=A{{text=" splashes .",when={landmark_kind="fountain",landmark=true,},},{text="Water spills over the rim of .",when={landmark_kind="fountain",landmark=true,},},{text="A fountain splashes .",when={landmark_kind="fountain",landmark=false,},},{text="Water spills over the rim of a fountain .",when={landmark_kind="fountain",landmark=false,},},{text="A plaque names the artwork : .",when={landmark_kind="artwork",landmark=true,},},{text=", says the plaque on the artwork .",when={landmark_kind="artwork",landmark=true,},},{text="A piece of public art stands .",when={landmark_kind="artwork",landmark=false,},},{text="Someone has put a sculpture , and nobody has moved it.",when={landmark_kind="artwork",landmark=false,},},{text="Stairs lead down to the subway at .",when={landmark_kind="subway",landmark=true,},},{text="A sign for station marks the stairs down to the trains.",when={landmark_kind="subway",landmark=true,},},{text="Stairs lead down to the subway .",when={landmark_kind="subway",landmark=false,},},{text=" rises over the rooftops.",when={landmark_kind=A{"bell_tower","minaret","tower",},landmark=true,},},{text="A bell tower rises over the rooftops.",when={landmark_kind="bell_tower",landmark=false,},},{text="A minaret rises over the rooftops.",when={landmark_kind="minaret",landmark=false,},},{text="An old tower rises .",when={landmark_kind="tower",landmark=false,},},{text="The water tower stands on its legs above everything.",when={landmark_kind="water_tower",landmark=true,},},{text="A water tower stands on its legs above everything.",when={landmark_kind="water_tower",landmark=false,},},{text="A radio mast for rises , its red lights blinking.",when={landmark_kind="mast",landmark=true,},},{text="A radio mast rises , its red lights blinking.",when={landmark_kind="mast",landmark=false,},},},lmk_near=A{"nearby","just ahead",{text="right here",when={landmark_near=false,},},{text="a few steps away",when={landmark_near=true,},},},title_unmapped=A{"Uncharted",},description_unmapped=A{"The map of this place hasn't loaded yet.",},title_plain={extend=true,options=A{{text="",w=2,when={type="civic",},},{text="Outside ",when={type="civic",},},{text="The steps of ",when={type="civic",},},{text=", ",when={type="civic",street=true,},},{text="Loading docks off ",when={type="industrial",street=true,},},{text="",when={type="industrial",},},{text="Behind the warehouses",when={type="industrial",},},{text=" off ",when={type="lot",street=true,},},{text="",when={type="lot",},},{text="",when={type="cemetery",},},{text="Among the headstones",when={type="cemetery",},},{text=", ",when={type="cemetery",},},},},ind_noun=A{"loading yard","warehouse","depot","rail yard","scrapyard",},lot_noun=A{"parking lot","vacant lot","gravel lot","construction site",},cemetery_spot=A{"the old section","by the gate","the hilltop","the far row",},},types={},},{name="senses",symbols={description=A{{text=" ",w=3,when={salience="quiet",landmark_kind=false,},},{text=" ",w=1,when={salience="quiet",landmark_kind=false,},},{text=" ",w=3,when={salience="notable",landmark_kind=false,},},{text=" ",w=1,when={salience="notable",landmark_kind=false,},},{text=" ",w=3,when={salience="fake_landmark",},},{text=" ",w=1,when={salience="fake_landmark",},},{text=" ",w=3,when={salience=A{"quiet","notable",},landmark_kind=true,},},{text=" ",w=1,when={salience=A{"quiet","notable",},landmark_kind=true,},},},standout_line=A{{text=".",w=2,},{text="Here, .",w=1,},{text="You notice that .",w=1,},},moment=A{{text="",w=5,},{text="",w=4,},{text="",w=3,},"","","","",},m_sound=A{{text=".",w=2,},{text=" .",w=6,},{text=" as .",w=1,},{text=" while .",w=1,},},m_far=A{{text="You can hear .",w=2,},"The sound of carries from .","Under everything there's the sound of .",},m_speech=A{" , \"\"",", , \"\"",},m_smell=A{"The air smells of .",{text="A smell of from somewhere .",w=2,},"There's a smell of .","You catch a smell of , .","Something smells of .",},m_move=A{{text=".",w=2,},{text=" .",w=3,},{text=".",w=2,},{text=" .",w=3,},"There's movement : .","Something moves : .",", while .",", while .",},mover=A{{text=" ",w=3,},{text=" ",w=2,},},m_air=A{"."," .",},m_ground=A{{text=".",w=2,},"You notice that .",},sound_lead=A{{text="Somewhere ,",w=3,},{text=",",w=3,},"Just then,","For a moment,","Every so often,","Out of sight,","Close by,","Faintly,","Suddenly,","Briefly,","Out of nowhere,","From somewhere close by,","Somewhere to the left,","Somewhere to the right,",},sound_tail=A{{text="",w=10,},", and nobody seems to notice",", close enough to make you look",", clear as anything",", and a dog somewhere answers",", loud enough to carry",", half heard",", easy to miss",", muffled",", the way it probably does every day",},far_where=A{{text="from here",w=3,},"far off","in the distance","a few blocks away","somewhere off in the distance","now and then",},far_from=A{"far off","a few blocks away","somewhere in the distance","the far side of the neighborhood",},who=A{{text="someone",w=4,},"a woman","a man","a kid","an old man","an old woman","a voice","a teenager",},says=A{{text="says",w=6,},"calls out","mutters","says loudly","says, laughing",},smell_move=A{"drifts over","wafts over","comes","reaches you","carries",},smell_here=A{"in the air","here","on this stretch",},smell_after=A{"then it's gone","faint but clear","strong for a moment","and then it's gone again","from somewhere you can't place",},mv_lead=A{{text=",",w=10,},"Out of the corner of your eye,","Meanwhile,",},mv_where=A{"up ahead","a little way off","behind you","just ahead","off to one side","not far off","off to the left","off to the right","nearby","over to one side",},mv_tail=A{{text="",w=12,},", and nobody looks twice",", and nobody else seems to notice",", as if on cue",", as you watch",", the way it probably happens every day",},air_lead=A{"For a moment,","Now and then,","Every so often,","Once in a while,",},state=A{" is the only thing here worth a second look.",},feature=A{"a bench","a lamppost","a sign","a low wall","a tree",},standout=A{"one thing here looks older than everything around it",},near=A{"nearby","not far off","off to one side","a little way ahead","behind you",},sound=A{"a dog barks twice and gives up","a car door slams","someone laughs","a phone rings and rings","a door bangs shut","birds argue somewhere",},sound_far=A{"traffic","a train","a siren","a plane","church bells",},smell=A{"cut grass","exhaust","damp earth","someone's dinner",},movement=A{"a pigeon struts past","a plastic bag tumbles by","a bird lands, looks around and leaves","someone hurries past without looking up",},person=A{{text="someone",w=2,},"a man","a woman","a kid","an old man","an old woman","a teenager","a young woman","a young man",},person_with=A{"with a backpack","with headphones on","with a dog on a leash","with a tote bag over one shoulder","with a phone pressed to one ear","in a baseball cap","with a paper bag in one arm",},person_does=A{"stops, looks around, and moves on","passes without looking up",},air=A{"a vent somewhere breathes out warm air","a passing car leaves a smell of exhaust behind","a door opens nearby and lets out a gust of warm air",},ground=A{"the ground is uneven","the ground is worn bare in a path",},speaker=A{"nearby","out of sight","passing by",},overheard=A{"Is that yours?","We'll see.","Not today.","Which way is it?",},},types={},},{name="cells/cemetery",symbols={},types={cemetery={move_from=A{"out from among the graves",},move_into=A{"in among the headstones",},title=A{{text="",when={salience="fake_landmark",},},{text="",w=2,when={salience=A{"quiet","notable",},cemetery=true,},},{text="",w=2,when={salience=A{"quiet","notable",},},},},title_plain=A{{text="A cemetery",w=2,},"Among the headstones","Among the graves",},state={spread=3,options=A{{text=" stand in here.",w=3,},{text=" over the graves.",w=2,},{text="Here the cemetery is .",w=2,},{text=" between the graves.",w=2,},{text="There's , and .",w=1,},},},c_trail=A{{text="",w=1,},{text=", ",w=4,},},cem_stones=A{"headstones","gravestones","old stones","weathered headstones","granite markers","plain markers","stone crosses and slabs",},cem_trees=A{"old trees","dark evergreens","a few big trees","clipped yews","spreading oaks",},ct_verb=A{"stand","lean","spread",},c_path=A{"a gravel path","a narrow path","a paved lane","a grass path",},c_pverb=A{"runs","winds","cuts",},cem_thing=A{"a stone angel","a family vault","an iron fence around one plot","a water tap","a bench","a broken urn","a flat slab","a small obelisk",},c_spot=A{"by the path","among the stones","at the end of a row","under a tree",},grave_rows=A{"uneven rows","neat rows","crowded rows","long, straight rows",},grave_detail=A{"the older stones worn almost smooth","the paths raked smooth","lichen on the oldest stones","a few stones leaning badly","flowers on some of the newer graves","the names worn off the oldest ones","pebbles left on some of the stones","the grass trimmed close around each one","a few graves fenced in iron","dates going back a long way","plastic flowers faded pale",},cem_mood=A{"quiet","well kept","overgrown at the edges","very old",},standout=A{"one headstone is newer than the rest and covered in flowers","a stone angel stands over a family plot","a small mausoleum sits behind iron railings","an obelisk rises over the older graves","a stone angel has lost one wing","a tiny grave is covered in toys and pinwheels","a vault's iron door is rusted shut","a tree has lifted a row of stones on its roots","a photograph is set into one headstone","an old bell hangs at the gate",},near=A{"among the stones","by the gate","down the path","nearby","at the end of the row","beyond the wall","under the yews","among the graves",},sound=A{"a crow calls from a headstone","a rake scrapes on gravel","a watering can clanks against a tap","a mower drones somewhere among the rows","a gate creaks","gravel crunches on a path","a bird sings in the yews","a car door shuts","a bell tolls somewhere","a wreath's wire stand clatters over","a pigeon coos from a monument",},smell=A{"cut grass","wet stone","old flowers","damp earth","lilies","damp stone","yew","candle wax","cut flowers",},movement=A{"a groundskeeper walks the rows","someone kneels at a grave","a crow hops between the headstones","a woman kneels to tidy a grave","a squirrel runs along the top of a stone","a couple reads names along a row","a robin hops between the stones","a man sets down flowers and stands a while","a cat sits on a flat slab","someone rakes the gravel path",},ground=A{"gravel crunches on the path","the grass is soft and uneven","one grave has sunk into a shallow dip","the path is raked into neat lines","moss creeps over the edge of the path","a few stones have sunk at an angle",},speaker=A{"at a grave","on the path","by a grave","at the gate","along the row",},overheard=A{"She would have liked the flowers.","It's the third row, I think.","Do you want a minute?","She'd have liked these.","Which row did they say?","Look how old this one is.",},lm_verb=A{"opens out","spreads out","lies",},sound_far=A{"traffic","a church bell","a train",},air=A{"a smell of cut flowers hangs by a fresh grave","a thread of smoke rises from a candle in a jar","the air by the wall smells of moss",},person_with=A{"with a bunch of flowers","carrying a watering can","in a dark suit","in a baseball cap",},person_does=A{"lays flowers on a grave","reads the names on a stone","walks slowly between the rows","stands at a grave for a long time","kneels to pull weeds from a grave","tidies the flowers on a grave","wanders the rows, looking for a name",},},},},{name="cells/civic",symbols={},types={civic={move_from=A{"away from the big building",},move_into=A{"up to a large building","toward a public building",},title=A{{text="",when={salience="fake_landmark",},},{text="",w=3,when={salience=A{"quiet","notable",},place=true,},},{text="Outside ",w=1,when={salience=A{"quiet","notable",},place=true,},},{text="",w=2,when={salience=A{"quiet","notable",},},},},title_plain=A{{text="A public building",w=2,},"Outside a public building","The front steps",},civic_adj=A{"large","stone","brick","low","modern","old","imposing","plain","concrete","grand","squat","pale","solid","sober",},state={spread=3,options=A{{text=" .",w=4,},{text=" and front building here.",w=1,},{text="Here stands .",w=2,},{text="The street opens up in front of .",w=1,},{text="Behind , .",w=2,},{text="You're outside .",w=2,},{text=" , and out front.",w=1,},},},c_np=A{{text="",w=3,},{text=" building with ",w=2,},},civic_has=A{"tall columns","a clock over the door","wide steps","a flat roof","rows of tall windows","a flagpole out front","a newer wing on one side","heavy doors","a covered entrance","a ramp up one side","narrow slit windows","a copper roof gone green","its name over the door",},c_vp=A{{text="",w=3,},{text=" ",w=2,},},c_verb=A{"stands","sits","rises","waits",},c_where=A{"back from the street","behind a low wall","across the street","at the end of a short walk","behind iron railings","behind a strip of lawn","right on the sidewalk",},c_trail=A{{text="",w=2,},{text=", ",w=4,},{text=", its ",w=2,},},c_part=A{"windows","doors","steps","stone","roof","sign","front","entrance",},c_state=A{"worn","freshly cleaned","streaked with grime","plain","well kept","patched in places","darker than the rest of it","newer than the rest of it","grander than the street around it",},civic_building=A{"large building","public building","stone building","brick building","low modern building","building with tall columns","long building","concrete building","grand old building","building with wide steps","squat building","glass-fronted building","building set behind railings","tall building with narrow windows","building with a flat roof",},civic_stand=A{"stands back from the street","takes up most of the block","fills the block","faces the street","rises above its neighbors","sits behind a fence","occupies its whole lot","looms over the sidewalk","sits back behind a strip of lawn","dominates the street","keeps its distance from the street","presents a long, plain front to the street",},civic_detail=A{"its windows tall and narrow","a flag over the door","set back behind a short flight of steps","its doors heavy and glass","its stone worn smooth","a ramp curling up to a side door","its name carved over the entrance","its lawn fenced off","a row of flags along the front","cameras watching the doors","notices taped inside the doors","its windows set with wired glass","a bike rack crowded by the door","a sign with its opening hours by the door","a newer wing stuck onto one side","lamps on poles along its front","shrubs planted in a strip of gravel","its name in metal letters on the wall","iron railings all around it",},civic_feature=A{"a flagpole","a wide flight of steps","a bike rack","a bronze plaque","a row of benches","a low wall","a lawn kept short","a covered entrance","a bench by the door","a row of bollards","a wheelchair ramp","a stone planter","a notice board","a set of iron railings","a drinking fountain","a sculpture",},standout=A{"a bronze statue stands by the entrance","a mural covers the side wall","a clock is set into the front, a few minutes slow","an old cornerstone gives a date nobody remembers","a banner hangs over the entrance","a pair of stone lions guards the steps","a plaque by the steps marks a time capsule not to be opened for decades","a mosaic over the doors shows workers and farmers","the front steps are flanked by two enormous stone urns","a historical marker by the door explains something nobody stops to read","a fountain in front has been dry so long that grass grows in it","a cornerstone carries an old name the building no longer uses","the big bronze doors are covered in scenes in relief","a sundial is carved into the wall above the entrance","a row of old lampposts lines the front walk","a small bell tower rises from the roof","a ramp zigzags back and forth up the front of the building","a wall by the entrance is engraved with a long list of names",},near=A{"on the steps","by the entrance","inside","across the street","nearby","behind the building","at the side door","around the side","at the foot of the steps",},sound=A{"a door hisses shut","a bell rings somewhere in the building","a guard's radio crackles","voices echo from the lobby","a heavy door thuds shut","children shout in a yard","a photocopier hums through an open window","a name is called over a speaker","footsteps echo in a stairwell","a cart's wheels rattle over the threshold","a phone rings and rings","a buzzer sounds and a door unlocks",},smell=A{"floor polish","cut grass","old paper","coffee","disinfectant","toner","wax","warm dust",},movement=A{"people come and go through the front doors","a security guard paces the steps","a line shuffles forward at the entrance","a janitor wheels out a bin","pigeons settle along a ledge","a woman reads a notice taped to the door","two officials talk on the steps, holding folders","a cyclist locks up at the rack","someone sits on the steps eating a sandwich","a delivery is wheeled in through a side door","a man with a lanyard hurries out",},air=A{"a draft of cool air comes from the doors","warm air pushes out each time the doors open","a vent by the steps hums and breathes out warm air",},ground=A{"the steps are worn into shallow dips","the paving is smooth stone","a brass strip in the threshold is polished bright by shoes","a metal grate at the entrance clanks under a passing cart","the ramp's surface is grooved against slipping",},speaker=A{"on the steps","by the entrance","in the doorway","at the top of the steps","by the bike rack",},overheard=A{"Is it the second floor?","They said take a number.","Do you know if they're open?","I've been here since eight.","Which window was it?","Bring two forms of ID.","They moved it upstairs.","It closes at five, I think.","Do I need an appointment?",},person_does=A{"comes down the front steps","climbs the steps two at a time","pushes through the front doors","waits by the entrance","reads a notice by the door","sits on the steps","leafs through a folder of papers on the steps","stops to look up at the building","hurries in through a side door","holds the door for someone",},person_with={extend=true,options=A{"with a lanyard around the neck","with a folder under one arm","in a suit",},},},},},{name="cells/commercial",symbols={},types={commercial={move_from=A{"past the last of the shops",},move_into=A{"along the shopfronts","in among the shops",},title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},street=true,},},{text="",when={salience=A{"quiet","notable",},street=false,},},},street_title=A{"Shops on ","Along ","Storefronts on ",},title_plain=A{{text="A row of shops",w=2,},"Shopfronts","Outside a shop","A shopping street","Storefronts",},state={spread=3,options=A{{text=" .",w=5,},{text=" .",w=2,},{text="There are .",w=1,},{text="The street is lined with .",w=2,},{text="Here the street is all shops: , and .",w=2,},{text="You're outside , .",w=2,},{text=", , .",w=1,},{text=" , and .",w=2,},{text="There's , and .",w=1,},},},s_np=A{{text="",w=3,},{text=" with ",w=3,},{text=" ",w=2,},},s_adj=A{"busy-looking","shabby","tidy","old","newer","cramped","brightly painted","plain","mismatched",},shop_has=A{"awnings","big plate-glass windows","apartments above","hand-painted signs","roller shutters","neon signs in the windows","tiled doorways","goods set out front","faded lettering over the doors","deep doorways","chalkboards out front","bells over the doors","stickers all over the doors","signs hung out over the sidewalk",},s_vp=A{{text="",w=3,},{text=" ",w=2,},{text=" ",w=2,},{text=" ",w=1,},},s_verb=A{"stand","sit","run","go on","cluster","jostle","follow one another",},s_manner=A{"side by side","shoulder to shoulder","one after another","in a row","door to door","in an uneven row","with barely a gap between them",},s_where=A{"along the street","on both sides of the street","down the block","toward the corner","along this stretch","under the apartments","on this side of the street","the length of the block","along both curbs","facing the street","on the far side of the street",},s_inv=A{"along the street","on both sides of the street","across the street","down the block","on either side of you","all along here","up ahead","facing you",},s_vinv=A{"stand","sit","crowd",},s_trail=A{{text="",w=3,},{text=", ",w=3,},{text=", with ",w=2,},{text=", their ",w=2,},{text=", ",w=2,},},s_dq=A{"most","a few","some","one or two","nearly all",},s_dq_of=A{"most of them","a few of them","some of them","one or two of them","nearly all of them",},s_part=A{"awnings","signs","windows","doors","shutters","doorways","window displays",},s_state=A{"faded","freshly painted","mismatched","in every color","patched here and there","older than the shops behind them","crowded together","plastered with notices","spotless","grimy",},s_cond=A{"newly opened","long established, by the look of them","a little shabby","freshly done up","family-run, by the look of them","crammed with stock","half empty","for lease","selling more or less the same things",},s_np2=A{"a few empty storefronts","one or two newer shops","a couple of corner shops","some shops with ",},s_vp2=A{"fill the gaps","sit across the street","stand among them","hold the end of the block","break up the row",},s_spot=A{"by a door","across the street","at the corner","a few doors down","under an awning",},shops=A{"small shops","storefronts","shopfronts","narrow shops","shops with apartments above","little shops","family-run shops","low shopfronts","stores","businesses","shops and cafés","shops of every kind","old shopfronts",},shops_line=A{"line the street","crowd the sidewalk","run the length of the block","face each other across the street","fill the ground floors of the block","stand in a row","follow the street","take up the whole block","sit shoulder to shoulder","spill out onto the sidewalk","look out onto the street","cluster near the corner","stretch along both sides",},shops_detail=A{"their awnings faded","most with apartments above","their windows plastered with signs","a few of them shuttered","their grates painted with tags","their signs in several languages","each one narrower than the last","their doorways a step up from the sidewalk","their windows crowded with stock","their signs mismatched in size and color","a few of them empty, with signs in the windows","their awnings in every color","bells hung over most of the doors","their windows lettered in gold","one with a sign older than the rest","their goods spilling out onto the sidewalk","one gutted for renovation","their windows taped with sale signs","a few with benches out front","their names painted over older names","their entrances tiled in small, worn tiles","security cameras over most of the doors",},shop_item=A{"a shop with its grate half down","a window full of handwritten signs","a doorway with a bell over it","an awning patched with tape","a neon OPEN sign","a stack of crates by a door","a sandwich board on the sidewalk","a window full of faded posters","a rack of goods out on the sidewalk","a window full of mannequins","a stack of newspapers by a door","a bucket of cut flowers by a door","a stand of postcards","a window lettered in peeling gold","a door covered in stickers for credit cards","a doormat that says WELCOME","a gumball machine by a door","a hand-drawn arrow pointing upstairs","a window display gathering dust","a bench under an awning","a bin of bargain books",},shop_one=A{"a small shop","a narrow shop","a corner shop","a shop with a striped awning","a shop with a hand-lettered sign","a tiny shop","an old-fashioned shop","a shop with a tiled doorway","a shop with a green door","a shop with its name in gold leaf","a cramped little shop","a shop with a deep display window","a shop with a bench out front",},shop_one_detail=A{"its window crowded with stock","its door propped open","its sign half lit","its counter visible through the glass","a bell over its door","its shelves packed to the ceiling","its floor worn into a path to the counter","its name painted on the glass","its awning sagging a little","a cat asleep in its window","boxes stacked against half its window","its doorstep worn in the middle","its prices written on cardboard","a security camera over its door",},standout=A{"a chalkboard out front reads \"\"","a neon sign buzzes in one window","an old sign hangs over one door, half its letters gone","one shop window is full of sleeping cats","a hand-painted sign in one window reads \"\"","one shopfront is painted a deep, glossy red","one shop has kept its old tiled entryway, its name spelled out in the floor","one shop window is filled with a model train layout","an old barber pole is fixed beside one door","one storefront is covered top to bottom in hand-painted lettering","a giant fiberglass figure stands on the roof of one shop","one awning is striped and scalloped like a circus tent","an old clock hangs out over the sidewalk from one shop","one shop window displays nothing but a single chair","the painted name of an older business shows through above one shop's sign","an empty shop has its windows papered over with old newspapers","a pair of stone lions guards one doorway","one window holds a dusty display that hasn't changed in years","one shop's sign is just a huge painted hand pointing at the door","a stack of old televisions fills one shop window","one shop window is crowded with dozens of identical hats","a shop's name is set in mosaic into the sidewalk outside its door","one storefront is faced in mirrored tiles","a tiny shop has been squeezed into a gap no wider than its door","a faded mural of a long-closed shop's wares covers one wall",},near=A{"in a shop doorway","down the block","across the street","a few doors down","inside one of the shops","next door","up the block","behind a counter","at the corner","on the far side of the street",},sound=A{"a door chime rings","a shutter rattles","a cash drawer slams","a radio plays inside a shop","someone haggles over a price","a delivery dolly rattles over the curb","a blender whirs","a bell over a door jingles","a scanner beeps at a register","a door buzzer sounds","someone counts change out loud","a phone rings and rings","music thumps out of a doorway","a coffee grinder roars into life","a roller shutter clatters up","hangers scrape along a rail","a printer chatters out a receipt",},smell=A{"coffee","fried dough","bread","incense","floor cleaner","spices","frying oil","perfume","leather","new shoes","soap","cardboard","grilled meat","sugar","cut flowers",},movement=A{"a delivery driver wheels boxes inside","a shopkeeper sweeps the doorway","someone carries out a bag stacked too high","a cat slips into a shop","a man stacks crates by a door","a woman rearranges a window display","a man carries a ladder out of a shop","a shopper pauses at a window, then moves on","a woman tapes a new sign to a window","two shopkeepers talk across their doorways","a kid presses up against a shop window","someone wheels a rack of clothes across the sidewalk","a dog waits tied up outside a shop","a courier jogs in with a parcel",},air=A{"cool air spills from an open door","a fan in a doorway pushes warm air out","a kitchen vent breathes warm air over the sidewalk","cold air rolls out of an open refrigerator case","the air outside a bakery door is warm and sweet",},ground=A{"a cellar hatch is set into the sidewalk","the sidewalk is sticky by one door","flattened cardboard lies across a doorway","the paving is newer in front of one shop","a metal grate in the sidewalk rings under a hand truck","the tiles of an old shop entrance are worn smooth","a stray price sticker is stuck to the sidewalk","a doormat curls up at the edge of the sidewalk",},speaker=A{"in a doorway","behind a counter","on the sidewalk","at the register","by a window display","out front with a broom","by the door",},overheard=A{"Cash only, sorry.","We close at nine.","Do you have this in blue?","That'll be twelve fifty.","Back in five minutes.","You want a bag?","Is this the last one?","Can you hold it for me?","We're out of those.","Just looking, thanks.","Do you take cards?","Ask him, he knows.",},person_does=A{"comes out of a shop with a bag","peers into a shop window","ducks into a doorway","reads a menu taped to the glass","waits outside a shop, checking a phone","stops at a window display, then walks on","holds a door open for someone","counts change outside a shop","comes out empty-handed and tries the next door","walks slowly past the shopfronts","lingers by a sale rack on the sidewalk",},person_with={extend=true,options=A{"with a shopping bag","carrying a coffee","with an armful of packages",},},},},},{name="cells/field",symbols={},types={field={move_from=A{"off the open ground",},move_into=A{"out into the open",},title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},},},},title_plain=A{{text="An open field",w=2,},"A field","Open ground",},field_adj=A{"open","empty","grassy","overgrown","fallow","wide","flat","rough",},field_noun=A{"field","meadow","pasture","ground",},state={spread=3,options=A{{text=" here.",w=3,},{text=" .",w=1,},{text="There's nothing here but and .",w=1,},{text="The land is flat and .",w=2,},{text=" .",w=1,},{text="Across the , .",w=2,},},},f_verb=A{"opens out","stretches away","spreads out","runs off",},f_trail=A{{text="",w=1,},{text=", ",w=3,},},f_edge=A{"a fence at the far end","a line of trees in the distance","a gate","a hedge along one side",},fc_verb=A{"runs off in every direction","covers the ground here","fills the space between the fences","spreads out on every side",},f_far=A{"a fence marks the far edge","a line of trees stands at the far side","a lone tree stands in the middle","a gate hangs open in the fence","a track leads off toward a gate","a pond glints at the low end","a hedge marks the far boundary","a line of poles carries a wire away","a footpath cuts toward the trees","the ground rises toward a low ridge",},field_detail=A{"mown in long stripes","full of tall grass","fenced at the far end","with a single tree in the middle","cut by a rutted track","a footpath worn across it","molehills scattered over it","a gate in one corner","the grass cut short near the edges","a water trough by the fence","a power line strung across it","edged with a hedgerow",},f_little=A{"Nothing much stands here but","There's little here but","Out here it's all","The ground here is just",},field_cover=A{"tall grass and chicory","a hayfield","stubble from last year's crop","a scattering of wildflowers","rough grass and thistles","knee-high grass","clover and dandelions","bare plowed earth","young green shoots in rows","goldenrod and milkweed","tussocks of coarse grass",},standout=A{"a lone tree stands in the middle","a rusted tractor sits at the edge","a scarecrow leans on its post","a rain gauge stands on a post","an old fence runs out of nowhere","a wooden stile crosses the fence","a weathered bench faces the open ground","a row of beehives stands at the edge","an old stone trough sits half sunk in the grass","a ring of stones marks something old",},sound=A{"crickets chirp","insects tick in the grass","a tractor drones far off","a hawk screams overhead","grasshoppers click","a bird sings from a fence post","the grass hisses with something moving through it","a pheasant clatters up","crows argue over the stubble","a gate bangs","a plane drones overhead","bees work the clover","a skylark sings somewhere high up",},near=A{"across the field","at the far edge","nearby","along the fence","in the long grass","by the gate","over the hedge",},smell=A{"hay","cut grass","manure","wildflowers","damp earth","clover","dry grass","wild onion","earth",},movement=A{"a hawk circles overhead","a rabbit bolts","the grass ripples","a crow lands on a fence post","a hawk hangs over the grass","a rabbit bolts for the hedge","a flock of starlings wheels overhead","a butterfly zigzags over the grass","a crow walks the furrows","a dog runs loops in the grass","a deer lifts its head at the far edge","a walker crosses at the far side",},air=A{"the air hums with insects","the air smells of earth and grass","midges hang in the air in a loose cloud","seed fluff drifts over the grass","pollen hangs over the long grass","a cloud of gnats hangs over the grass",},ground=A{"the ground is lumpy","stubble covers the ground","tall grass leans every which way","the grass is flattened in a wide circle","a rabbit hole opens in the turf","the turf is pocked with hoofprints","dry stalks lie broken along a trodden line",},speaker=A{"across the field","by the fence","at the fence","walking a dog","at the far edge",},overheard=A{"Close the gate behind you.","How far back is the road?","We'll cut it next week.","Is this all public land?","Mind where you step.","Which way's the car?","You can see for miles.",},lm_verb=A{"opens out","spreads out","lies",},sound_far=A{"traffic","a tractor","a train","a dog","a plane",},person_with=A{"with a dog on a leash","with a backpack","with a walking stick","in a baseball cap","in muddy boots","with headphones on",},person_does=A{"crosses the far side of the field","follows the hedge","walks the fence line","stops at the gate","cuts across the grass toward the road","stands looking out over the field",},},},},{name="cells/floor",symbols={},types={floor={move_from=A{"off the bare floor",},move_into=A{"out across the bare floor",},title=A{"",},title_plain=A{{text="Bare floor",w=2,},"Open floor","The flagstones","Stone floor","An empty stretch of floor",},state={spread=3,options=A{{text=" .",w=3,},{text="The floor here is .",w=2,},{text=", only the floor, .",w=2,},{text="There's , and nothing else.",w=1,},{text=" and lie .",w=1,},},},fl_floor=A{"bare stone floor","worn flagstone","packed earth","smooth dark stone","cracked tile","rough-cut stone",},fl_spread=A{"stretches away into the dark","runs off in every direction","spreads out flat and even","goes on further than you can see",},fl_trail=A{{text="",w=1,},{text=", ",w=3,},},fl_lead=A{"Nothing stands here","There's nothing here","Nobody has left anything here",},fl_detail=A{"its seams packed with grit","dust lying undisturbed across it","damp in the hollows","scored with old scratches","worn smooth down the middle","a faint chalk line running across it","every stone a slightly different size",},fl_adj=A{"bare","smooth","uneven","dusty","cracked","worn",},fl_thing=A{"a scatter of grit","a bent nail","a shallow puddle","a chalk mark","a stub of candle","a drift of dust","a loose stone","a scrap of cloth",},fl_spot=A{"a little way off","to one side","just ahead","off in the dark",},moment=A{{text="",w=5,},{text="",w=3,},{text="",w=2,},"","","",},m_move=A{{text=".",w=2,},{text=" .",w=3,},"There's movement : .",},mv_tail=A{{text="",w=12,},", and then it's still again",", as you watch",},sound_lead=A{{text="Somewhere ,",w=3,},{text=",",w=3,},"Just then,","For a moment,","Every so often,","Faintly,","Suddenly,","Out of the dark,",},sound_tail=A{{text="",w=10,},", and then nothing",", and the echo takes a while to die",", half heard",", muffled",},far_where=A{"far off in the dark","from somewhere below","now and then",},far_from=A{"somewhere deeper in","far off in the dark",},sound=A{"water drips","a stone clicks against stone","something small skitters away","a long creak runs through the dark","grit trickles down from above","a low hum rises and fades","something settles with a sigh",},sound_far=A{"dripping water","a slow wind","something heavy shifting",},movement=A{"a beetle crosses the floor","a draft lifts the dust","a moth circles nothing in particular","a rat noses along the floor and is gone","dust drifts down through the dark","a spider lowers itself on a thread",},ground=A{"the stone is slick in places","a crack in the floor breathes cool air","the flagstones are worn into shallow dips","grit lies in the seams between the stones",},near=A{"in the dark","off to one side","just out of sight","further in",},smell=A{"damp stone","old dust","wet earth","mildew","cold ash","candle smoke",},air=A{"a cold draft moves through","the air is still and cool","a breath of colder air comes and goes","the air is heavy with damp",},},},},{name="cells/industrial",symbols={},types={industrial={move_from=A{"away from the warehouses",},move_into=A{"in among the warehouses",},title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},},},},title_plain=A{{text="Warehouses",w=2,},"An industrial yard","Behind the warehouses",},state={spread=3,options=A{{text=" .",w=3,},{text=" , .",w=2,},{text="Here it's all .",w=2,},{text=".",w=1,},{text="There's , and .",w=1,},},},ind_np=A{{text="warehouses",w=2,},"low warehouses","corrugated sheds","brick warehouses","big blank buildings","workshops","old factory buildings",},i_trail=A{{text="",w=1,},{text=", ",w=3,},},i_fence=A{"a chain-link fence","a high fence","a concrete wall","a fence topped with razor wire",},i_fverb=A{"surrounds","runs around","closes off",},i_mark=A{"trucks have worn ruts into the pavement here","oil stains spread across the pavement","old rail tracks are set into the street","the curbs are chipped where trucks cut the corner",},ind_thing=A{"a stack of pallets","a parked trailer","a rusting dumpster","a forklift","a loading ramp","a pile of scrap metal","a shipping container","a drum of something",},i_spot=A{"by a loading dock","against the fence","in the yard","by the gate","at the curb",},ind_stand=A{"line the street","stand in a long row","back onto the tracks","face a wide yard","sit behind fences","stretch along the street","crowd the block","stand with their backs to the street",},ind_detail=A{"their roll-up doors half open","their loading docks empty","their walls painted a faded gray","their windows high and wired","their roofs bristling with vents","their gutters rusted through","old company names painted over","trailers backed up to their docks","security lights over every door","their walls tagged low down","pallets stacked against them",},ind_one_detail=A{"its gate chained shut","its yard stacked with pallets","its sign faded to nothing","its lights on poles high over the fence",},ind_noun=A{"loading yard","warehouse","depot","rail yard","scrapyard","storage yard",},ind_things=A{"loading docks and chain-link","corrugated walls and parked trailers","concrete and razor wire","pallets and shipping containers","trailers and loading docks","brick and broken glass","fences and stacked crates","concrete pads and oil drums","roll-up doors and forklifts","gravel yards and parked trucks",},standout=A{"a forklift sits abandoned by a dock","a stack of shipping containers towers over the fence","an old crane stands idle","a rail spur ends at a rusted bumper","a faded company name runs along one wall","an old water tower stands on one roof","a smokestack rises from one building, long cold","an old freight car sits on a siding, half covered in vines","a mural of workers covers a whole warehouse wall","the painted name of a long-gone factory fades across a brick wall",},near=A{"in the yard","behind the fence","at a loading dock","nearby","behind a warehouse","at the loading dock","down the block",},sound=A{"a forklift beeps, backing up","a roll-up door rattles","a truck's air brakes hiss","a transformer hums","metal clangs on metal","a reversing alarm beeps and beeps","a compressor thumps","a pallet drops with a bang","a radio plays in a workshop","a grinder screams for a moment","a chain rattles through a pulley","a loading door slams down",},smell=A{"diesel","wet cardboard","machine oil","solvent","sawdust","hot metal","rubber","cardboard",},movement=A{"a truck backs up to a dock","a forklift crosses the yard","a worker in a vest checks a clipboard","a stray dog trots along the fence","a forklift carries a pallet across the yard","a man in overalls smokes by a door","a cat slips under a fence","sparks spill from a doorway","a worker rolls up a door","an empty trailer is pulled slowly past",},ground=A{"the pavement is rutted from trucks","oil stains spot the concrete","gravel lies loose over the ground","the pavement is stained black with oil","old rail tracks cut across the road","metal shavings lie in the gutter",},speaker=A{"at a loading dock","behind the fence","on a loading dock","by the gate","through an open door",},overheard=A{"Back it up, back it up.","Dock four's open.","Sign here.","That's the wrong pallet.","Lunch at twelve.",},air=A{"a vent on a roof pumps out a sharp chemical smell","dust drifts out of an open loading door","exhaust hangs where a truck has idled",},person=A{"a worker","a man","a woman","someone","a driver",},person_with=A{"in a hard hat","in a reflective vest","in work boots","with a clipboard","with gloves tucked in a back pocket",},person_does=A{"crosses the yard","waves a truck back toward a dock","unlocks a gate","smokes by a loading dock","carries a box out to a truck","checks a clipboard by a door","hoses down the pavement","rolls a door up",},},},},{name="cells/lot",symbols={},types={lot={move_from=A{"off the lot",},move_into=A{"onto an open lot",},title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},},},},title_plain=A{{text="A lot",w=2,},"An open lot",},state={spread=3,options=A{{text=" here.",w=3,},{text=": .",w=2,},{text="Here there's only .",w=1,},{text=", , .",w=1,},{text="The lot is .",w=2,},},},lot_lead=A{"Nothing has been built here yet","Nobody has built on this yet","It's an empty lot","The ground here is waiting for something",},lot_spread=A{"spreads out","opens up","stretches back from the street","fills the space between the buildings",},l_trail=A{{text="",w=1,},{text=", ",w=3,},},lot_thing=A{"a light pole","a concrete wheel stop","a pay machine","a dumpster","a pile of gravel","a sign about towing","an old tire","a heap of broken pallets",},lot_adj=A{"half paved","fenced","weedy","patched","bare","uneven",},lot_noun=A{"parking lot","vacant lot","gravel lot","paved lot",},lot_detail=A{"its lines faded to almost nothing","weeds pushing through the gravel","fenced off and waiting","a single light pole in the middle","its edges lined with concrete blocks","a pay machine by the entrance","a sign threatening to tow","potholes patched with gravel","a dumpster in one corner","concrete wheel stops in crooked rows","a fence around three sides",},standout=A{"a shopping cart has been left in the middle","a lone light pole stands over the asphalt","a chain-link fence sags where someone climbed it","a pile of gravel waits by the fence","a food truck has parked at the far end","a mural covers the wall along one side","a tree has pushed up through the asphalt","an abandoned car sits under a layer of dust","a hand-painted sign says customers only","someone has planted a little garden along the fence",},sound=A{"a car door slams","a car alarm chirps","a chain-link gate clanks shut","a plastic bag scrapes across the asphalt","an engine turns over and catches","a shopping cart rattles over the asphalt","a truck beeps, backing up","a horn honks twice","keys jangle","a skateboard rolls across",},movement=A{"a car circles looking for a space","a gull picks at a wrapper","a plastic bag skitters across the asphalt","a woman loads groceries into a trunk","a car noses into a space","a kid practices on a skateboard","a man smokes, leaning on a car","someone walks a dog along the fence","a crow picks at a fast-food bag",},ground=A{"gravel lies loose over the ground","the asphalt is cracked and weedy","faded parking lines run across the asphalt","oil stains darken the empty spaces","broken glass has been swept into a corner","a speed bump rises across the entrance",},near=A{"across the lot","by the fence","at the far end","behind the dumpster",},smell=A{"exhaust","asphalt","garbage","motor oil","gasoline",},air=A{"a car pulls out and leaves a smell of exhaust","warm air puffs from an idling car","the air smells of oil and dust","a whiff of exhaust drifts across the lot","an engine ticks as it cools",},speaker=A{"by a car","across the lot","at the pay machine",},overheard=A{"Where did we park?","Did you lock it?","Two hours max.","Is this spot taken?",},person_with={extend=true,options=A{"carrying shopping bags",},},person_does=A{"cuts across the lot","walks back to a car","looks for a car, keys in hand","crosses toward the street","loads bags into a trunk","waits by a car",},},},},{name="cells/park",symbols={},types={park={move_from=A{"off the grass",},move_into=A{"into the park","onto the grass","into the green",},title=A{{text="",when={salience="fake_landmark",},},{text="",w=3,when={salience=A{"quiet","notable",},park=true,},},{text=", ",w=1,when={salience=A{"quiet","notable",},park=true,},},{text="",w=2,when={salience=A{"quiet","notable",},},},},title_plain=A{{text="A park",w=2,},"Park paths","A corner of the park","In the park",},park_adj=A{"quiet","small","green","overgrown","well-kept","open","wide","neat","patchy","trampled","big","well-worn","oval",},park_spot=A{"the lower lawn","by the gate","along the path","the far corner","the main path",},state={spread=3,options=A{{text=" here.",w=3,},{text=" .",w=3,},{text=" and .",w=1,},{text=" .",w=3,},{text="Here the park is .",w=2,},{text=", and .",w=1,},{text="There's , and .",w=2,},{text="This part of the park is : , , .",w=1,},{text=" here, .",w=2,},},},p_trail=A{{text="",w=2,},{text=", ",w=4,},{text=", ",w=1,},{text=", with ",w=1,},},p_paths=A{{text="Paths",w=3,},"Gravel paths","Paved paths","Narrow paths","Worn dirt paths","Two paths",},p_pverb=A{"wind","curve","cut","run","loop","meander",},p_route=A{"between ","under ","past ","around ","across the grass","toward the gate","along the fence","around the edge of the lawn",},p_tverb=A{"stand","grow","lean","cluster","spread their branches",},p_twhere=A{"over lawn","along the path","around the edge of the grass","in a loose ring","by the fence","in a row along the path","beside the benches",},p_scatter=A{"scattered across it","along its edge","at the far side","in a ring around it","dotted here and there",},p_dot=A{"dot the grass","stand along the path","are scattered across the lawn","sit near the path",},p_spot=A{"by the path","under a tree","at the edge of the grass","near the gate","in the middle of the lawn","a little farther on",},park_ground=A{"trampled grass","a wide lawn","clover","a web of dirt paths","rough grass","a stretch of lawn","patchy grass","close-cut grass","long grass","an open green","a lawn ringed with paths","grass worn thin in patches",},park_spread=A{"spreads out","runs off in every direction","stretches away","opens up","rolls away","sprawls","reaches to the trees","runs up to the path","fills the space between the paths","carries on past the benches",},park_trees=A{"old oaks","maples","plane trees","young trees","a few big trees","tall trees","old trees","spreading trees","slender trees","leaning trees","big shade trees","evergreens","trees in neat rows","trees of every kind","gnarled old trees","young trees tied to stakes",},park_mood=A{"quiet","neatly kept","a little overgrown","wide open","small and closed in","open and plain","tidy","patchy and worn","dotted with trees","a little scruffy","carefully planted",},park_detail=A{"benches set along the paths","a low fence around the flower beds","the grass worn bare along the shortcuts","trash cans at every corner","lamps along the main path","a few picnic tables under the trees","a gravel path looping around the edge","shrubs planted along the fence","a box of dog bags by the gate","faded lines on the grass marking out some game","a low hedge around a playground","little plaques on most of the benches","a row of bins near the gate","the paths edged with low hoops of wire","signs asking you to keep off the new grass","an old wall along one side","a tool shed tucked in one corner","molehills scattered across the grass","a notice board by the entrance","the lawn mown in neat stripes",},park_thing=A{"a bench","a drinking fountain","a picnic table","a trash can","a lamppost","a flower bed","a small statue","a sign listing the rules","a bin for dog waste","a tree stump","a bike rack","a notice board","a sundial","a birdbath","a memorial bench","a rock with a plaque","a little footbridge","a sandbox",},standout=A{"a bandstand stands in the middle of the lawn","an old stone drinking fountain sits by the path","a war memorial stands where two paths cross","a huge old tree stands alone in the grass","a playground sits behind a low fence","a fountain splashes in a round stone basin","one tree has been carved with dozens of initials","a ring of stones sits in the grass, for no clear reason","a small stage faces an open stretch of lawn","a giant chessboard is painted on the paving, its pieces chained nearby","an old rope swing hangs from one big branch","a stone bench is carved with a line of poetry","an old bell hangs from a wooden frame by the path","a hedge has been clipped into the shape of an animal","a flagpole stands in a ring of flowers","a dry fountain basin has been planted with flowers","a bronze dog sits by the path, its nose polished by passing hands","a tall sculpture of bent steel stands in the grass","a row of trees stands each with a small plaque in someone's memory","an old cannon points across the lawn",},near=A{"across the lawn","down the path","behind the trees","by the gate","nearby","on the far side of the lawn","under the trees","along the fence","on the next path","at the edge of the park","beyond the hedge",},sound=A{"a dog barks after a ball","children shriek on the swings","birds argue in the trees","a sprinkler ticks around","someone plays guitar on a bench","a bird scolds from a branch","a ball thuds into the grass","a frisbee smacks into someone's hands","a toddler squeals, delighted","a whistle blows on a playing field","a dog's tags jingle past","someone claps for a dog to come back","a radio plays on a blanket","a stroller's wheels crunch on gravel","a gate clangs shut behind someone",},smell=A{"cut grass","damp earth","flowers","charcoal","pine","clover","wood chips","mulch","leaf litter",},movement=A{"a dog chases a ball across the grass","a jogger loops past","pigeons scatter from the path","a kid on a bike wobbles down the path","someone spreads a blanket on the grass","a crow picks at a wrapper","two kids chase each other around a tree","an old man throws crumbs to the pigeons","a bird pulls a worm out of the grass","a parent pushes a stroller along the path","a group stretches in a circle on the grass","someone walks four dogs at once","a park worker empties a bin into a cart","a couple shares a bench without talking","a runner stops to retie a shoe",},air=A{"a smell of earth rises from a freshly dug bed","a sprinkler's mist drifts across the path","the air smells green",},ground=A{"gravel crunches on the path","the grass is thick and soft","roots ridge the path","acorns lie scattered across the path","the path is packed hard","wood chips have been spread fresh along the path","a pine cone rolls off the edge of the path","the path turns to bare dirt","the grass is lumpy over old roots",},speaker=A{"on a bench","on the path","on the grass","under a tree","by the gate","walking a dog",},overheard=A{"Don't let him eat that.","One more lap.","Do you have the ball?","Look, a hawk.","Stay where I can see you.","Is this the way out?","Drop it. Drop it!","Five more minutes.","Who brought the frisbee?","Is that bench free?","We used to come here all the time.",},lm_verb=A{"opens out","spreads out","lies",},person_does=A{"crosses the grass","follows the path slowly","sits down on a bench","stops to stretch","lies back in the grass","wanders off the path to look at a tree","reads on a bench","does slow laps of the path","shakes out a blanket on the grass","throws a ball for a dog that won't bring it back",},person_with={extend=true,options=A{"with a frisbee","with a book under one arm","pushing a stroller",},},},},},{name="cells/plaza",symbols={},types={plaza={move_from=A{"out of the square",},move_into=A{"out into the square","onto the open paving",},title=A{{text="",when={salience="fake_landmark",},},{text="",w=2,when={salience=A{"quiet","notable",},plaza=true,},},{text="",w=2,when={salience=A{"quiet","notable",},},},},title_plain=A{"A plaza","An open square","A paved square","The middle of the square",},state={spread=3,options=A{{text=" here.",w=3,},{text="The square is .",w=2,},{text=", and .",w=1,},{text="You're out in the open, .",w=1,},{text=", .",w=2,},{text="There's , and .",w=1,},},},pl_floor=A{"pale paving stone","brick paving","a wide sweep of concrete","worn granite","old cobbled paving","smooth concrete","patterned tile","herringbone brick","gray flagstone",},pl_spread=A{"spreads out","opens up","stretches away","runs from edge to edge","fills the space between the buildings",},pl_trail=A{{text="",w=1,},{text=", ",w=4,},{text=", with in the middle",w=1,},},pl_dot=A{"stand on the paving","are scattered across it","mark the edges","break up the open space",},pl_around=A{"Around the edges","On every side","Along the sides","All the way around","At the edges",},pl_edge=A{"buildings look down on the paving","low walls keep out the traffic","trees stand in iron grates","benches face inward","bollards hold back the street","steps lead down to the sidewalk","shop fronts face onto the paving","a low hedge runs along the curb","cars pass close by","planters mark where the street begins",},pl_spot=A{"in the middle","by the steps","at one corner","along the edge","near the street",},plaza_adj=A{"wide","open","wider than it needs to be","plain","small","tidy","bare","hemmed in by buildings","ringed with trees",},plaza_detail=A{"its benches set in a long row","low walls marking its edges","planters at each corner","lamps standing in a ring","steps leading down on one side","its paving patched in places","trees standing in iron grates","a drain cut across the middle","a line of bollards along the street side","its edges stepped down to the street","a map of the area on a post",},plaza_thing=A{"a bench","a planter","a lamppost","a trash can","a low wall","a bike rack","a kiosk","a drinking fountain","a map board","a tree in an iron grate","a chess table","a recycling bin",},standout=A{"a dry fountain sits in the middle","a bronze statue has gone green","a sundial stands on a pedestal","a tall flagpole rises from the center","water jets shoot straight up out of the paving","a huge sculpture of rusted steel stands at one end","a clock on a tall post rises from the middle","a flower stall stands at one corner","a compass rose is inlaid in the paving","a plaque in the ground marks something that happened here",},near=A{"across the square","by the benches","on the steps","nearby","at the far side","at the edge of the square","under the trees",},sound=A{"a skateboard clatters off a ledge","pigeons coo","a street musician plays","a ball bounces off a wall","footsteps echo","someone laughs","a bike bell rings","heels click across the paving","a street vendor calls out","music drifts from a café","a busker tunes a guitar","a child shrieks and runs",},movement=A{"pigeons scatter","a kid chases pigeons","a skateboarder rolls past","people cut across toward the far side","pigeons scatter from a child running at them","a man feeds sparrows from his hand","two friends meet with a hug","a cyclist walks a bike across","a tour group shuffles after a raised umbrella","a delivery cart rattles over the paving","someone sets up a folding table to sell something","a woman sits on the steps eating a sandwich",},ground=A{"the paving is smooth and worn","one paving stone sits loose","chalk drawings cover a patch of the paving","a few paving stones are newer than the rest","gum spots dot the paving","the paving is worn smooth along a path across the middle",},speaker=A{"on a bench","by the benches","on the steps","by a bench","at a café table",},overheard=A{"Meet you by the statue.","Is that the clock tower?","Over here!","Is this the square?","Let's sit for a minute.","Take one of all of us.","Where's the bathroom?","They used to have a market here.",},lm_verb=A{"opens out","spreads out","lies",},smell=A{"coffee","roasting nuts","exhaust","cigarette smoke","flowers","fried food",},air=A{"a smell of coffee drifts from a kiosk","a vent at the edge breathes out warm air","the smell of a pretzel cart hangs at one corner",},person_does=A{"cuts across the square","sits on the edge of a planter","waits by the steps","crosses toward the far side","stops in the middle to look around","eats lunch on a ledge","takes a photo of the square","hands out flyers to anyone who'll take one","leans against a railing",},person_with={extend=true,options=A{"carrying a coffee","with a camera around the neck","with a skateboard under one arm",},},},},},{name="cells/residential",symbols={},types={residential={move_from=A{"away from the houses",},move_into=A{"in among the houses","onto a residential block","between the houses",},title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},street=true,},},{text="",when={salience=A{"quiet","notable",},street=false,},},},street_title=A{"Along ","Off ","Houses on ","A block of ","Behind ",},title_plain=A{{text="A residential street",w=2,},{text="A residential block",w=2,},"Houses","A row of houses","Homes","A side street","A block of houses",},standout=A{"a mural covers the side of the end building","one house is painted a startling pink","a tiny garden has been squeezed into the gap between two houses","a small tree grows out of one gutter","a faded painted ad for a long-gone business covers a brick wall","one front step is crowded with potted plants","a house at the end has been left half built","a little box of free books stands on a post by one gate","one front yard is crowded with sculptures welded from scrap metal","one house is painted in stripes from top to bottom","an old tree has heaved the sidewalk up into a ridge","one house is almost hidden behind a wall of climbing vines","every front window of one house is lined with dolls looking out","a hand-lettered sign on one fence begs drivers to slow down","one house has a little turret on its corner","a tiny house sits wedged between two bigger ones","a mosaic of broken tiles covers one whole front wall","a row of old chairs faces the street from one front yard","one house stands half demolished, its rooms open to the street","one door has a huge brass knocker shaped like a lion's head","a birdhouse built like a castle hangs beside one door","one gate is held shut with a tangle of old bike locks","a vegetable garden has taken over one entire front yard",},state={spread=3,options=A{{text=" .",w=6,},{text=" .",w=2,},{text=" .",w=3,},{text="There are .",w=2,},{text="It's .",w=2,},{text="There's nothing here but .",w=1,},{text="You're among .",w=1,},{text="The block is : .",w=1,},{text=" , and .",w=2,},{text=", , .",w=1,},},},lead=A{"Here,","On this block,","Around here,","Past ,","Beyond ,","From here to the corner,","Along here,","On this stretch,","Right here,","Near the corner,","Farther along,","Across the way,",},np=A{{text="",w=4,},{text=" ",w=2,},{text=" with ",w=3,},{text=" with and ",w=1,},},np2=A{"a few ","one or two ","some with ",},vp2=A{"fill the gaps between them","stand at the corner","sit across the street","break up the row","look newer than the rest","look older than the rest","wait at the end of the block","hold their own among them",},det=A{"the","some","a few","several","two rows of",},block_is=A{"a mix of old and new","mostly homes","all houses","a patchwork","plain and residential",{text="tightly built",when={dense=A{60,100,},},},{text="tightly packed",when={dense=A{60,100,},},},{text="loosely built",when={dense=A{0,59,},},},{text="roomy",when={dense=A{0,59,},},},},vp=A{{text="",w=3,},{text=" ",w=2,},{text=" ",w=2,},{text=" ",w=1,},},vverb=A{{text="",w=3,},{text="",w=2,when={dense=A{60,100,},},},{text="",w=2,when={dense=A{0,59,},},},},vverb_any=A{"stand","sit","line up","run","go on","follow one another","stretch",},vverb_city=A{"crowd","rise",},vverb_suburb=A{"spread out","sit back","sprawl","settle",},vmanner=A{{text="",w=3,},{text="",w=3,when={dense=A{60,100,},},},{text="",w=3,when={dense=A{0,59,},},},},vmanner_any=A{"side by side","in a row","in an uneven row","one after another","in no particular order","in a long row","more or less in line",},vmanner_city=A{"shoulder to shoulder","close together","wall to wall","in tight rows","with no gaps between them",},vmanner_suburb=A{"a little apart","well apart","in a loose row","at a polite distance","each on its own lot",},vwhere=A{{text="",w=3,},{text="",w=2,when={dense=A{60,100,},},},{text="",w=2,when={dense=A{0,59,},},},},vwhere_any=A{"along the street","on both sides of the street","down the block","toward the corner","along this stretch","to the end of the block","on this side of the street","as far as the corner","the length of the street","along both curbs","up and down the block","facing the street","on the near side","on the far side of the street",},vwhere_city=A{"right up to the sidewalk","along the narrow street","right up against the sidewalk","on both sides of the narrow street",},vwhere_suburb=A{"behind low fences","back from the curb","behind their lawns","at the ends of their driveways","behind hedges",},inv_where=A{"along the street","on both sides of the street","all down the block","past ","across the street","ahead","on either side of you","all along here","on the near side","facing you","up ahead",},vinv=A{"stand","sit",{text="rise",when={dense=A{60,100,},},},{text="crowd",when={dense=A{60,100,},},},},trail=A{{text="",w=4,},{text=", ",w=3,},{text=", with ",w=2,},{text=", their ",w=2,},{text=", ",w=2,},{text=", some , some ",w=1,},},dq=A{"each","most","a few","some","one or two","nearly all","every one",},dq_of=A{"most of them","a few of them","some of them","all of them","nearly all of them","one or two of them","one of them",},has=A{{text="",w=2,when={wooded=true,},},{text="",w=3,},{text="",w=2,when={dense=A{60,100,},},},{text="",w=2,when={dense=A{0,59,},},},},has_any=A{"bay windows","steep front steps","flat roofs","pitched roofs","little front gardens","iron railings","deep doorways","tall windows","small windows","painted trim","shutters","window boxes","peeling paint","fresh paint","balconies","side entrances","tiled roofs","low front walls","bars on the lower windows","their numbers painted by the doors","mismatched windows","heavy front doors","narrow front gardens","satellite dishes",},has_city=A{"narrow balconies","rows of buzzers","shops on the ground floor","awnings over the doors","basement windows at sidewalk level","stacked balconies","a floor or two added on top",},has_suburb=A{"wide driveways","attached garages","big front lawns","low hedges","carports","back yards","front porches","gravel drives",},part=A{"windows","doors","front doors","roofs","front steps","gutters","walls","railings","window frames","chimneys",},part_state=A{"patched here and there","painted ","all different","newly redone","worn","in need of paint","much the same","faded","freshly painted","mismatched","a little crooked","well kept","edged in a different color",},color=A{"white","cream","gray","blue","green","red","yellow","pale green","dark red","brown","sky blue","black","pink",},cond=A{"freshly painted","in need of paint","well kept","a bit run-down","fixed up recently","older than they look","much the same","nearly identical","set on narrow lots","split into flats","built in the same year, by the look of them","covered in scaffolding","shuttered","for sale","painted in bright colors","a little crooked","half hidden behind plants","painted ","with something growing on the roof",},building=A{{text="",w=3,},{text="",w=3,when={dense=A{60,100,},},},{text="",w=3,when={dense=A{0,59,},},},},building_any=A{"houses","homes","buildings","apartment buildings","residential buildings",},building_city=A{"apartment blocks","row houses","narrow buildings","attached houses","mid-rise buildings","blocks of flats","townhouses","apartment houses","multi-story buildings","residential towers","low-rise apartment buildings","walk-up apartment buildings","courtyard buildings",},building_suburb=A{"single-family homes","detached houses","bungalows","one-story houses","two-story houses","duplexes","cottages","split-level houses","semi-detached houses","family homes","family houses","low houses",},bldg_adj=A{"small","big","old","newer","narrow","plain","white","gray","red","yellow","pale","brick","wooden","concrete","tidy","shabby","modest","boxy","weathered","well-kept","run-down","matching","mismatched","blue","green","cream-colored","faded","sturdy","identical","tired-looking",},things=A{{text="",w=2,},{text=" ",w=3,},},stand=A{{text="",w=3,when={wooded=true,},},{text="",w=3,},{text="",w=3,when={dense=A{60,100,},},},{text="",w=3,when={dense=A{0,59,},},},},stand_any=A{"line the street","face each other across the street","run the length of the block","stand side by side","keep to themselves","share the block","sit in an uneven row","follow the street along","stand in a loose row","fill the block","go on one after another","sit close to the street","stand a little apart from each other","take up the whole block","crowd this stretch of street","sit quietly in a row","face the street","stand in no particular order","look much like each other",},stand_city=A{"stand shoulder to shoulder","crowd close together","rise on both sides of the street","press right up to the sidewalk","share walls the length of the block","tower over the narrow street","stand wall to wall","rise several stories on either side","leave no gap between them","stack up floor on floor","hem in the street","fill every lot on the block","loom over the sidewalk","stand packed in tight","block out most of the sky",},stand_suburb=A{"sit back behind lawns","sit back from the street","sit on wide, flat lots","stand behind low fences","line the curving street","face the street across their driveways","sit well apart from each other","stand on their own lots","spread out along the street","each sit in their own yard","stand back behind hedges","sit low and wide on their lots","keep a polite distance from each other","line up behind their front yards","sit at the ends of short driveways",},detail=A{{text="",w=4,when={wooded=true,},},{text="",w=3,},{text="",w=3,when={dense=A{60,100,},},},{text="",w=3,when={dense=A{0,59,},},},},detail_any=A{"most with their curtains drawn","some freshly painted, some not","plants on a few of the windowsills","their doors all different colors","wires strung between them","their walls patched here and there","each one a little different","their numbers painted by the doors","one with its windows boarded up","their roofs patched","satellite dishes on some of the roofs","a few with bars on the lower windows","one with a for-sale sign out front","mailboxes by every door","blinds half down in most of the windows","one with scaffolding up the front","their gutters sagging in places","none of them quite the same height","a few with flags hanging by the door","handwritten names taped by the doorbells","most of them older than they look","their front steps worn in the middle","antennas bristling from the roofs","one with a ramp built up to the door","their downspouts streaked with rust","shoes left outside a few of the doors","a beware-of-dog sign on one gate","holiday lights still strung along one gutter","window boxes on a few of them","one painted a color nobody else chose",},detail_city=A{"laundry hanging from a few windows","their windows close enough to touch","air conditioners jutting from the windows","intercom panels by every door","their ground-floor windows behind grilles","balconies stacked above the street","plants crowding the balconies","bikes parked in the entryways","their top floors added on later","their entrances a few steps up from the sidewalk","long columns of buzzers beside each door","drying racks out on the balconies","their basements half below the sidewalk","every ledge spiked against pigeons","one with a ground floor that used to be a shop","trash bins lined up in the gaps between them","their walls tagged up to head height","cables looping from building to building","their stairwell windows stacked one above another","doorways set deep into the walls","curtains of every color in the windows","one wrapped in netting for repairs",},detail_suburb=A{"their lawns cut short","cars parked in every driveway","a garage beside each one","their yards fenced","trees standing in their front yards","toys scattered across a few of the yards","their front walks edged with flowers","one yard gone completely wild","hedges between most of them","bins lined up by the garages","one lawn torn up for new turf","chairs set out on a few of the porches","a boat on a trailer in one driveway","a vegetable patch in one of the yards","one with a for-rent sign on the lawn","low walls along the front of each lot","the same few designs repeated with small changes","side gates latched shut","some with flower beds, some with gravel","one front yard paved over for parking","carports beside a few of them","a hammock strung in one side yard","a bird feeder hanging in one front yard",},extent=A{"for the whole block","as far as you can see","on both sides of the street","all the way to the corner","from one corner to the next","in both directions","up and down the street","on every side","as far as the next corner","down to the end of the block","from here to the next cross street","all along this stretch","the whole way along","end to end","as far as the street goes","right up to the corner","one after another to the end of the block","on and on down the block",},feature=A{{text="",w=3,},{text="",w=3,when={dense=A{60,100,},},},{text="",w=3,when={dense=A{0,59,},},},},feature_any=A{"a bicycle leaning on a wall","a potted plant by a door","a parked car","a trash bin","a doormat","a cat on a wall","laundry drying on a line","a satellite dish","a child's ball","a broken chair","a coiled hose","a sign in a window","a ladder against a wall","a scooter","a stack of empty flowerpots","wind chimes",},feature_city=A{"a row of buzzers by a door","a bike chained to a railing","bags of trash at the curb","a shopping cart left by a doorway","scaffolding over one doorway","a stroller folded by a doorway","a row of bins by a gate","a moped under a cover","a mattress propped against the curb","a parcel left on a step","a gate with a buzzer","a sign offering a room to rent","a basement stairwell behind a railing","a planter made from an old tire","a padlocked cellar door",},feature_suburb=A{"a garden gnome","a tricycle on its side","a sprinkler on a lawn","a car up on blocks in a driveway","a trampoline in a side yard","a plastic slide in a yard","a hedge clipped square","a mailbox on a post","a recycling bin at the curb","a garden shed","a birdbath","a wheelbarrow","a boat under a tarp","a swing set","a doghouse","a rosebush by a gate","a stack of firewood",},near=A{"nearby","a few doors down","on the other side of the street","down the block","up the street","a block over","behind one of the buildings","inside one of the buildings","next door","around the corner","behind the houses","on the next street","farther along","over a back fence","at the end of the block","two doors along",},sound=A{{text="",w=8,when={wooded=true,},},"a door bangs shut","a dog barks twice and gives up","a TV is on too loud","someone is practicing scales on a piano","pipes knock somewhere inside a wall","a radio is playing an old song","someone is hammering","a baby is crying","a car door slams","two neighbors are talking","someone laughs","a kettle starts to whistle","a washing machine thumps through its spin cycle","a phone rings and rings","a screen door creaks open and slaps shut","someone drags a trash bin to the curb","a vacuum cleaner drones behind a window","someone calls a name, then again, louder","keys jingle and a lock clicks","a dog behind a fence starts up and won't stop","dishes clatter in a kitchen","a child plays the same three notes on a recorder",},sound_far=A{"traffic","a train","church bells","a helicopter","a siren","a highway","construction",},smell=A{"cut grass","laundry","someone's dinner","frying onions","fresh paint","charcoal","garlic","cigarette smoke","bleach","toast","baking bread","curry","coffee","incense","fried fish","floor polish",},movement=A{{text="",w=6,when={wooded=true,},},"a cat slips under a parked car","a kid on a bike wobbles by","a curtain moves in an upstairs window","a man in slippers carries out the trash","a delivery van double-parks and puts its flashers on","someone jogs past with a dog","a plastic bag tumbles along the curb","pigeons lift off a roof all at once","a woman waters her plants from a doorstep","a car circles the block looking for parking","a mail carrier works down the block from door to door","two kids race each other to the corner","a man backs a car out with great care","an old woman pulls a wheeled shopping bag along the curb","a bird hops along the top of a fence","a neighbor sweeps the front steps","a window slides shut upstairs","two men carry a sofa out to a waiting van","someone on a ladder fiddles with a gutter",},air=A{"cool air breathes out of an open basement window","a dryer vent puffs out warm, soapy air","a bathroom fan hums out of a side window","air from a kitchen fan smells of whatever's cooking","a smell of soap drifts from a laundry room vent","warm air puffs from a grate in the sidewalk","a window fan pushes stale air out into the street","an open door lets out a smell of floor polish","a waft of cooking oil comes from a kitchen window","the air by the bins is sour",},ground=A{"the sidewalk tilts where a root has lifted it","seed pods litter the sidewalk","a loose paving stone rocks as someone steps on it","old chalk drawings are fading on the sidewalk","the curb is worn round at the corner","the pavement dips into a shallow bowl by a drain","a cracked slab clunks as a stroller rolls over it",},speaker=A{"on a doorstep","through an open window","on the far sidewalk","pacing the sidewalk on the phone","leaning out of a doorway","behind a screen door","on a balcony","at a gate",},overheard=A{"Did you move your car?","I told him, not on a Tuesday.","Is that yours?","We'll see.","Tell your mother I said hi.","Who left this here?","It's been like that for a year.","You want anything from the store?","Did you lock it?","They're painting again.","I'll be back in five minutes.","Whose dog is that?","That's not where it goes.","Don't forget the key.",},detail_leafy=A{"half hidden under old trees","big trees leaning over their roofs","their yards full of old trees","tall trees standing between them","branches hanging low over their driveways","their gutters choked with twigs","moss on the shady side of their roofs","roots lifting the walks in front of them","their upstairs windows looking out into branches","ivy climbing a few of the chimneys","a tree house in one of the yards","trunks as wide as their front doors",},stand_leafy=A{"sit half hidden among the trees","peek out from under the trees","stand under a high canopy of branches","sit back among old trees","hide behind big trunks","stand among the trees as if they were dropped there",},has_leafy=A{"big trees out front","yards full of old trees","trees right up against the walls","branches over the roofs","mossy roofs","wooded back yards",},sound_leafy=A{"a squirrel scrabbles up a trunk","a woodpecker drums on a tree in someone's yard","a branch creaks somewhere overhead","birds call back and forth in the trees","an acorn bounces off a car roof","a jay screams from a branch",},movement_leafy=A{"a squirrel runs along a power line","a squirrel races across the street and up a tree","a bird drops out of the branches onto a lawn","a deer steps out between two yards","a twig drops onto the sidewalk","someone rakes under a big tree",},person_does=A{"heads for the corner","crosses the street without looking","stops to read a flyer taped to a pole","fishes for keys at a front door","squints at the house numbers","comes out of a house and pulls the door shut","drifts past, looking at the houses","waits at the curb for a ride","cuts between two parked cars","walks slowly up the block","waves to someone in a window","sits down on a front step","hurries down the block",},person_with={extend=true,options=A{"pushing a stroller","in slippers","with a bag of groceries in each hand","carrying a laundry bag",},},},},},{name="cells/street",symbols={},types={street={move_from=A{"off the street",},move_into=A{"onto the street","out onto the street","into the traffic",},title=A{{text="",when={salience="fake_landmark",},},{text="",when={salience=A{"quiet","notable",},bridge_name=true,},},{text=", over ",when={salience=A{"quiet","notable",},bridge_name=false,bridge_over_water=true,street=true,water=true,},},{text="Intersection of ",when={salience=A{"quiet","notable",},bridge_name=false,streets_n=A{3,99,},bridge_over_water=false,},},{text="Corner of and ",when={salience=A{"quiet","notable",},bridge_name=false,cross=true,streets_n=A{2,2,},bridge_over_water=false,},},{text="Corner of and ",when={salience=A{"quiet","notable",},bridge_name=false,cross=true,intersection=false,bridge_over_water=false,},},{text="",when={salience=A{"quiet","notable",},bridge_name=false,street=true,corner=false,bridge_over_water=false,},},{text="",when={salience=A{"quiet","notable",},bridge_name=false,street=false,},},},title_plain=A{{text="",w=3,},"A side street",{text="A corner",w=4,when={corner=true,},},{text="An intersection",w=3,when={corner=true,},},{text="A bridge",w=12,when={bridge_over_water=true,},},{text="A busy road",w=4,when={major=true,},},},street_word=A{{text="street",w=3,},"road",},street_adj=A{"","",},st_shape=A{"narrow","wide","one-way","two-lane","long","short","broad","skinny",},st_surface=A{"leafy","plain","bumpy","patched","potholed","ordinary","well-kept","cracked","freshly paved","scruffy","tidy","worn",},state={spread=3,options=A{{text=" here.",w=4,when={bridge_over_water=false,},},{text="The here is .",w=3,when={bridge_over_water=false,},},{text=" line of the .",w=2,when={bridge_over_water=false,},},{text="Along the : , , .",w=1,when={bridge_over_water=false,},},{text="You're on .",w=2,when={bridge_over_water=false,},},{text="Here the passes and .",w=1,when={bridge_over_water=false,},},{text="There's and .",w=2,when={bridge_over_water=false,},},{text=" between .",w=2,when={bridge_over_water=false,},},{text=" .",w=10,when={corner=true,bridge_over_water=false,},},{text=" .",w=8,when={major=true,bridge_over_water=false,},},{text="The road crosses the water here on , .",when={bridge_over_water=true,},},{text="Here the road runs out over the water on , .",when={bridge_over_water=true,},},{text="You're out over the water on , .",when={bridge_over_water=true,},},},},st_subj=A{{text="",w=3,},{text="the ",w=2,},{text=" ",w=3,},},st_verb=A{{text="runs",w=3,},"goes","heads","stretches","carries on",},st_adjs=A{{text="",w=3,}," and "," but ",},st_sides=A{"both sides",{text="one side",},"either side",},st_spot=A{"by the curb","at the corner","across the street","a little farther on","on the far sidewalk","outside the nearest door",},st_trail=A{{text="",w=2,},{text=", ",w=4,},{text=", along ",w=1,},{text=", with by the curb",w=1,},{text=", and ",w=1,},},corner_open=A{{text="Two streets cross here at corner,",w=2,},"The streets meet at corner here,","It's corner,","This is corner,","Here two streets meet,","The reaches corner here,",},corner_more=A{{text="",w=2,}," and ",", with on one side",},major_open=A{{text=" of traffic run through here,",w=2,},"The road here is wide,","It's a big road, across,"," of traffic pass here,","A wide road runs through here, of it,",},major_more=A{{text="",w=2,}," and ",},street_course=A{"straight","in a gentle curve","off in both directions","between low walls","under a tangle of wires","dead straight","with a slight bend","toward the next corner","between rows of parked cars","a little crooked","past a line of utility poles","out of sight in both directions",},street_side=A{{text="",w=10,when={wooded=true,},},"parked cars along both curbs","trees planted every few yards","its sidewalks cracked and patched","its lane lines faded to almost nothing","wires strung overhead","its curbs painted at the corners","potholes patched in darker asphalt","storm drains every few yards","a streetlight leaning slightly","its crosswalk worn pale","parking meters along one side","speed bumps every half block","a painted bike lane along one side","its sidewalks narrow on both sides","signs on every pole about parking","its surface crowned in the middle","manhole covers down the middle","a faded center line down the middle","driveways cutting into the curbs here and there","its curbs high and chipped","tire marks swerving across it","the asphalt rippled near the corners","a sign warning of children crossing","its sidewalks dotted with old gum","trash cans chained to the poles","weeds pushing up along the curbs",},street_edge=A{"parked cars","street trees","lampposts","bike racks","trash cans","utility poles","low walls","fences","signposts","hedges","planters","bollards","chain-link fences","garden walls","driveways","mailboxes",},street_thing=A{"a fire hydrant","a bus stop sign","a manhole cover","a traffic sign","a bent signpost","a lamppost","a bench","a bicycle rack","a storm drain","a parked scooter","a utility pole","a street sign","a mailbox","a parking meter","a pole plastered with flyers","a traffic cone","a recycling bin","a loading zone sign","a shopping cart on its side","a speed bump","a concrete planter","an electrical box covered in stickers","a mattress leaning against a pole",},corner_kind=A{"busy","lopsided","four-way","wide","blind","narrow","crooked","awkward","tight","skewed","broad","tidy",},corner_detail=A{"the crosswalk paint worn thin","a traffic light hanging overhead","the curbs worn smooth","a stop sign leaning slightly","a fire hydrant on one corner","a signpost bristling with arrows","a mailbox on one corner","the curbs cut down into ramps","textured pads at the curb ramps","a bus stop on the far side","a cluster of signposts on one corner","a shop on one corner","a traffic island in the middle","a crossing button on every pole","the corners rounded wide for turning trucks","a bike lane cutting across it","stop lines painted thick and white","a camera on a pole watching the crossing","one corner fenced off for works",},bridge_kind=A{"long bridge","high bridge","low bridge","concrete bridge","steel bridge","short bridge","old stone bridge",},bridge_detail=A{"the railing cold and pitted","the water sliding by underneath","the deck humming when cars pass","a lamppost at each end",},lanes=A{"four lanes","six lanes","several lanes","three lanes","five lanes",},major_detail=A{"a long wait at every light","buses and trucks jostling for the curb","crosswalks painted in fading stripes","a median strip down the middle","traffic lights at every block","a concrete barrier down the middle","a bus lane along each curb","wide crosswalks with islands halfway across","signs overhead pointing to other parts of the city","turn lanes splitting off at the lights","tall streetlights down the median","arrows painted in every lane at the lights","the sidewalks set well back from the traffic","a guardrail along one side","a planted median with a few trees",},standout=A{"a ghost bike, painted white, is chained to a pole","someone has chalked a hopscotch grid across the sidewalk","a fire hydrant has been painted like a cartoon character","a public piano stands by the curb","a bent street sign points the wrong way","a mural covers the side of the corner building","a shoe dangles by its laces from the wires overhead","stickers have turned the stop sign into a joke","a tree has grown around an old street sign, swallowing half of it","someone has knitted a striped sleeve around a lamppost","a manhole cover here is stamped with a date over a hundred years old","a tiny door has been fixed to the base of a tree","the crosswalk is painted in rainbow stripes","an old horse trough sits by the curb, filled with flowers","a utility box is painted to look like a stack of books","a hand-painted sign under the street sign gives the street a different name","a bench here has a small brass plaque in someone's memory","a parking meter has been wrapped head to foot in stickers","a patch of old cobblestones shows through the worn asphalt","a traffic cone sits on top of a lamppost, nobody knows how","an old clock on a post keeps the wrong time",},near=A{"down the street","up the street","across the street","at the corner","a block away","nearby","behind you","at the next corner","on the far side","around the corner","half a block down","at the bus stop","farther up the street",},sound=A{{text="",w=6,when={wooded=true,},},"a car horn blares","bus brakes hiss","a bike bell rings","a car stereo thumps past","a delivery truck idles","a skateboard clatters","a motorcycle revs","a walk signal chirps","tires thump over a manhole cover","someone whistles for a ride","a bus kneels at the curb with a hiss","a street sweeper whirs along the gutter","a car alarm whoops twice and stops","a cab driver leans on the horn","someone rattles past with a shopping cart","a garbage truck groans through its lift","a truck downshifts with a roar","a crossing signal ticks","brakes squeal at the light",},smell=A{"exhaust","asphalt","diesel","fried food","cigarette smoke","garbage","coffee","hot tar","brake dust","roasting nuts","fried onions","hot rubber","a bakery",},movement=A{{text="",w=6,when={wooded=true,},},"a cyclist threads between the cars","a bus pulls away from the curb","a pigeon walks the crosswalk","a delivery van double-parks","a kid on a scooter weaves past","a dog walker untangles three leashes","a car crawls by looking for parking","a plastic bag tumbles down the gutter","someone jogs across against the light","a taxi swerves to the curb for a fare","a worker in a reflective vest waves cars around a hole","a delivery rider checks a phone at the corner","a bus groans around the corner","two cyclists ride side by side, talking","a car waits with its blinker ticking","a skateboarder rolls past, pushing off every few yards","someone crosses mid-block, looking both ways twice","a tow truck slowly circles the block",},air=A{"a bus pulls away in a wash of warm air","a truck's exhaust drifts past","warm air rises from a grate","a smell of hot brakes hangs over the curb","the hot smell of an engine reaches you as a car passes","a cloud of grit kicks up behind a truck","a street sweeper leaves a smell of wet asphalt behind it",},ground=A{"the curb is worn round at the corner","a manhole cover sits a little proud of the asphalt","the asphalt is patched in darker squares","broken glass is scattered in the gutter","a storm drain grate rattles under a passing bike","the sidewalk dips at a driveway","a freshly painted line stands out on the asphalt","raised bumps mark the curb ramp","gum spots dot the sidewalk","a crack runs the length of the curb",},speaker=A{"on the corner","on the opposite corner","at the bus stop","on the phone, walking fast","in a passing car","at the curb","waiting to cross","on a bike",},overheard=A{"Which way's the train?","You're blocking the driveway.","I'll call you back.","Left, then left again.","Hold on, the light's changing.","Is this the right bus?","Is it this one or the next?","Watch out for the bike.","They moved the stop.","Where did you park?","We're going to miss it.","Keep going, it's up here.",},street_side_leafy=A{"big trees arching over it","branches meeting overhead","roots buckling the sidewalks","twigs and seed pods in the gutters","trees crowding both curbs","old trees along both sides, their trunks scarred by car doors","wires threaded through the branches",},sound_leafy=A{"a squirrel chatters from a branch over the road","an acorn pings off a parked car","birds call back and forth in the trees","a woodpecker drums",},movement_leafy=A{"a squirrel darts across the road and back","a deer crosses at the end of the street","a car brakes for a squirrel","a branch sways under a landing bird",},person_does=A{"waits to cross","crosses against the light","jogs to make the light","steps off the curb, then back up","looks both ways and crosses","waits at the bus stop","hurries along the sidewalk","weaves between the parked cars","stops to read a street sign","heads for the corner","waves at a cab that doesn't stop","walks along the curb, looking for something dropped",},person_with={extend=true,options=A{"walking a bike","carrying a coffee","in a reflective vest",},},},},},{name="cells/water",symbols={},types={water={move_from=A{"away from the water",},move_into=A{{text="down to the water's edge",when={shore=true,},},{text="out over the water",when={shore=false,},},},title=A{{text="",when={salience="fake_landmark",},},{text="Under the ",when={salience=A{"quiet","notable",},bridge_name=true,},},{text="",w=2,when={salience=A{"quiet","notable",},bridge_name=false,water=true,},},{text="The edge of ",w=1,when={water=true,salience=A{"quiet","notable",},bridge_name=false,shore=true,},},{text="",w=2,when={salience=A{"quiet","notable",},bridge_name=false,},},},title_plain=A{{text="The water's edge",w=2,when={shore=true,},},{text="The shore",when={shore=true,},},{text="The bank",when={shore=true,},},{text="Open water",w=2,when={shore=false,},},{text="On the water",when={shore=false,},},},state={spread=3,options=A{{text="The ground slopes down to the water here, .",w=2,when={shore=true,},},{text="You're at the water's edge, .",w=2,when={shore=true,},},{text=" along the bank, the water .",w=2,when={shore=true,},},{text=" runs along the water here.",w=2,when={shore=true,},},{text="The water here is , .",w=2,when={shore=true,},},{text="Open water , .",w=3,when={shore=false,},},{text="Out here the water is , the shore .",w=2,when={shore=false,},},{text="Nothing here but water, , .",w=1,when={shore=false,},},{text="The shore is , the water .",w=1,when={shore=false,},},{text=", the water is .",w=2,when={shore=false,},},{text=", and the water around you is .",w=2,when={shore=false,},},},},bank_detail=A{"the bank undercut by the water","stones stacked along the edge","the mud full of footprints","a tangle of roots at the waterline","reeds standing in the shallows","a strip of pebbles along the edge","driftwood piled against the bank","an old rope tied to a stake","a line of rocks holding the bank in place","the waterline marked in a dark stain","a fishing line snagged in a bush","the grass worn down to a path","a duck's nest tucked under the overhang","smooth stones just under the surface","a wooden stake marking a depth","a little beach of coarse sand",},bank_noun=A{"a muddy bank","a stony bank","a low bank","a strip of shore","a steep bank","a stone embankment",},bk_trail=A{{text="",w=1,},{text=", ",w=3,},{text=", growing along it",w=1,},},sp_verb=A{"grow","crowd","lean out","stand thick",},ow_verb=A{"stretches out","spreads","runs",},ow_where=A{"on every side","in every direction","as far as the far shore","all around",},ow_far=A{"far from either bank","out in the middle","this far out","well away from the shore",},open_detail=A{"a few leaves drifting on the surface","a skin of pollen drifting on top","weed trailing just under the surface","a line of foam drifting slowly past","a feather turning on the surface","bubbles rising from somewhere below","a plastic bottle bobbing along","the bottom lost somewhere far below","a stick drifting slowly by","a slow swirl where the current turns",},shore_plants=A{"reeds","cattails","willows","tall grasses","low shrubs",},water_look=A{"dark and deep","brown and slow","green and murky","gray-green","cloudy with silt","the color of strong tea","dark under the surface","black where it's deepest","olive green","milky green","the color of weak coffee",},shore_far=A{"a dark line in every direction","farther off than it looked","low and green","hidden behind reeds",},standout=A{{text="",when={shore=true,},},{text="",when={shore=false,},},},standout_shore=A{"a lone rowboat is tied to a piling","a small dock reaches out from the bank","a heron stands motionless in the shallows","an old piling leans out of the shallows","a half-sunk log rests against the bank","a sunken boat lies on its side in the shallows","a rope swing hangs from a tree over the water","a set of old stone steps leads down into the water","a fishing pier juts out over the water","a lifebuoy hangs on a post",},standout_open=A{"a buoy bobs on its chain","a channel marker leans out of the water","an old piling sticks up out of the water","a lone rowboat drifts at anchor","a raft of ducks floats in the middle of the water","a lone swan floats in the middle","a sunken post shows just above the surface","a moored boat swings on its line",},moment=A{{text="",w=5,},{text="",w=4,},{text="",w=2,},"","",{text="",when={shore=true,},},{text="",w=2,when={shore=true,},},},m_lap=A{{text=" .",w=3,},"Something into the water .",},lap_subj=A{"water","the water","the current",},lap_act=A{"laps at the bank","laps at the reeds","sucks at the mud along the edge","knocks against the stones","knocks against a half-sunk log","slaps softly against the bank","gurgles around the roots","gurgles in a hollow under the bank","washes in under the overhang","pulls at a trailing branch",},plop_verb=A{"plops","drops","splashes","slips",},plop_where=A{"close to the bank","just out of sight","a few feet out","behind the reeds",},near=A{"out on the water","along the bank","across the water","nearby","on the far bank","among the reeds","downstream","upstream",},sound=A{"a duck splashes down","a fish jumps","a boat motor drones","a gull cries","a frog croaks","something splashes","water slaps against something hollow","a duck quacks twice","a goose honks","an oar knocks against a hull","something splashes in the reeds","a fishing line whirs out","a heron croaks, lifting off","a boat's wake slaps against the bank",},sound_far=A{"traffic","a train","a dog","a boat horn","traffic on a bridge",},smell=A{"mud","algae","fish","wet stone","river weed","diesel","wet rope","rotting reeds","tar",},movement=A{"a duck paddles past","a fish breaks the surface","a gull wheels overhead","a leaf drifts by","a dragonfly hovers over the water","ripples spread from something below","a swan glides by","a rowboat pulls past","a kayak slides along the far bank","a cormorant dives and comes up farther off","a turtle slides off a log","someone on the bank casts a line","a stick turns slowly in the current","a swallow skims the surface","a gull drops onto the water",},air=A{"the air is cool over the water","the air smells of the water","the air is damp this close to the water","a smell of weed and mud comes off the water",{text="midges hang over the shallows",when={shore=true,},},{text="midges hang low over the water",when={shore=false,},},},ground=A{"the mud is soft and pocked with footprints","loose stones lie heaped along the edge","the bank is slick and soft","the bank is cut into steps by many feet","a line of dried weed marks the high water","the stones at the edge are slick with weed","an old post juts out of the mud",},lm_verb=A{"opens out","spreads out","lies",},person_with={extend=true,options=A{"with a fishing rod","with a bag of bread for the ducks",},},person_does=A{"walks along the bank","stops to look out over the water","skims a stone","sits on the bank","casts a line into the water","throws bread to the ducks","stands at the edge, looking across",},m_move=A{{text=".",w=2,},{text=" .",w=3,},{text=".",w=2,when={shore=true,},},{text=" .",w=3,when={shore=true,},},"There's movement : .",{text="Something moves : .",when={shore=true,},},{text=", while .",when={shore=true,},},{text=", while .",when={shore=true,},},},},},},{name="cells/woods",symbols={},types={woods={move_from=A{"out of the trees",},move_into=A{"in among the trees","into the woods",},title=A{{text="",when={salience="fake_landmark",},},{text="",w=2,when={salience=A{"quiet","notable",},woods=true,},},{text="",w=2,when={salience=A{"quiet","notable",},},},},title_plain=A{{text="The woods",w=2,},"Among the trees","In the woods",},state={spread=3,options=A{{text=" .",w=3,},{text=" .",w=3,},{text="The canopy overhead is , .",w=1,},{text="Here the woods are .",w=2,},{text="You're among .",w=1,},{text="There's , and .",w=1,},{text=" through the trees here.",w=6,when={fenced=true,},},{text="Behind the trees grow .",w=4,when={fenced=true,},},},},fence=A{"a chain-link fence","a tall fence topped with barbed wire","an old wire fence","a rusting fence","a fence hung with warning signs",},fence_runs=A{"runs","cuts","climbs","winds",},fenced_trees=A{"thick and untended","right up against the wire","close around a gray metal shed","wild around a cracked concrete pad","close around a locked service gate","tall and unpruned","in a tangle nobody clears","around a rusting water tank","over an old gravel road",},w_trail=A{{text="",w=1,},{text=", ",w=4,},},w_under=A{"the ground beneath it bare","the floor beneath it soft with needles","saplings crowding up beneath it","ferns spreading out below","the trunks holding it up straight and gray","a few saplings struggling beneath it","the trail running on beneath it","dead branches caught up in it","vines hanging down from it","the trunks below it furred with moss","birds moving about high in it","the undergrowth thin beneath it",},w_path=A{"a narrow trail","a footpath","a deer track","an old trail","a faint path",},w_pverb=A{"cuts","winds","wanders","threads","runs",},w_route=A{"through the trees","between the trunks","around a fallen log","past a big rock","toward a clearing",},w_ptail=A{{text="",w=1,},{text=", ",w=3,},},woods_thing=A{"a fallen log","a mossy boulder","a stump","a tangle of brambles","a hollow tree","a patch of ferns","a ring of stones",},w_spot=A{"beside the trail","under the trees","a little way in","off to one side",},trees=A{"oaks","maples","beeches","tall pines","birches","young trees","old trees","tangled saplings","mixed trees","slender trunks","big old trunks","scrubby trees",},trees_stand=A{"crowd close","stand far apart","lean over the trail","rise straight and tall","grow thick here","stand close together","grow in a tangle","stand in ranks","lean every which way","close in on every side","thin out a little here",},woods_detail=A{"their trunks furred with moss","the ground thick with fallen leaves","ferns growing between them","a fallen trunk across the way","vines climbing the biggest ones","rocks breaking through the leaf litter","mushrooms on the fallen wood","brambles filling the gaps","the undergrowth thin beneath them","ivy wound around the trunks","their roots knuckled over the ground","deadfall piled between them",},trail_detail=A{"crossed by roots","marked with faded blazes","barely wide enough for one","worn deep between banks of leaves","winding around the bigger trunks",},canopy=A{"thick","patchy","high","low and tangled","dense and dark","broken in places","a long way up","a tangle of branches","woven tight","thin enough to see through",},woods_mood=A{"dense","hushed","old","tangled","open and airy","thick with undergrowth",},standout=A{{text="",w=6,when={fenced=true,},},"a fallen tree lies across the trail, its roots in the air","a ring of stones marks an old campfire","a rusted car door lies half buried in the leaves","one old tree is wider than three people","someone has built a small stone cairn by the trail","a hunting stand clings to a trunk","a rope swing hangs over a hollow","an old stone wall runs through the trees, going nowhere","a ring of mushrooms circles a stump","a tree has grown around a length of old iron fence","someone has built a little hut of branches against a trunk","a huge boulder sits among the trees, furred with moss",},fenced_standout=A{"a sign on the fence says AUTHORIZED PERSONNEL ONLY","a padlocked gate in the fence opens onto a service road","a big gray equipment box sits on a concrete pad among the trees","a tall mast rises out of the trees beyond the fence","a camera on a pole watches the fence line",},near=A{"nearby","deeper in the trees","off the trail","overhead","behind you","deeper in","behind a fallen log","among the ferns","high in the branches","farther along the trail","in the undergrowth",},sound=A{{text="something hums steadily behind the fence",w=2,when={fenced=true,},},"a woodpecker drums","a branch cracks","leaves rustle with something moving through them","birds call back and forth","a branch creaks","something small scurries through the leaves","a squirrel scolds from a trunk","a jay screams","something heavy crashes off through the brush","a twig snaps","a bird hammers at a log","insects drone","a dove coos","a crow caws twice","an acorn drops and bounces","a bird calls the same two notes over and over",},sound_far=A{"traffic","a dog","a train","a plane","a siren","voices","a chainsaw",},smell=A{"pine","wet leaves","damp earth","moss","rot","mushrooms","crushed ferns","bark","wild garlic","resin","leaf mold",},movement=A{"a bird darts between the trunks","a deer slips away between the trees","a leaf spirals down","a beetle crosses the trail","a crow drops onto a branch","a squirrel spirals up a trunk","a rabbit freezes, then bolts","a hiker passes with a walking stick","a spider lowers itself on a thread","a jogger thumps past on the trail","a mountain biker rattles down the trail","a dog crashes through the ferns after something","a moth flutters up from the leaves","a woodpecker hitches its way up a trunk","a butterfly drifts through a gap in the trees",},air=A{"it's cool and damp under the trees","the air smells of rotting leaves and pine","midges hang in a cloud between the trunks","gnats dance in a column over the trail","a smell of resin hangs between the trunks","a spider's thread drifts across the trail","cool air rises out of a hollow",},ground=A{"roots ridge the trail","the trail is soft with old leaves","a stick snaps somewhere under the trees","the path is churned to mud in places","acorns are scattered across the path","pine needles carpet the trail","a root has been worn smooth by passing feet","the trail crosses a patch of bare rock","old leaves pile up against a log","the trail is pocked with hoofprints",},speaker=A{"on the trail","up ahead","from behind the trees","passing on the trail","somewhere off the trail",},overheard=A{"Watch the roots.","Is this the loop trail?","I think it's this way.","Hold up, my shoe.","Did you see that?","How much farther?","I think we missed the turn.","Look at the size of that tree.","Is that poison ivy?",},lm_verb=A{"opens out","spreads out","lies",},person=A{"someone","a hiker","a man","a woman","a runner","an old man","a birdwatcher",},person_with=A{"with a walking stick","with a dog on a leash","with headphones on","in hiking boots","with binoculars around the neck","in a baseball cap","with a backpack",},person_does=A{"passes on the trail","climbs over a fallen log","stops to look up into the trees","picks a way around a muddy patch","steps off the trail to let others pass","crouches to look at something on the trail","follows the trail around a bend","sits on a rock, resting","turns around and heads back",},},},},{name="moves",symbols={move_line=A{{text=" .",w=3,when={type_change=false,pace_change=true,pace=A{"run","walk","stroll","zoom",},},},{text=" .",w=3,when={type_change=false,pace_change=false,pace=A{"run","walk","stroll","zoom",},},},{text=" , .",w=3,when={type_change=true,pace=A{"run","walk","stroll","zoom",},},},{text=" , and .",w=2,when={type_change=true,pace=A{"run","walk","stroll","zoom",},},},{text=" .",w=2,when={type_change=false,pace="linger",},},{text=" , .",w=2,when={type_change=true,pace="linger",},},},go=A{{text="",when={pace="run",},},{text="",when={pace="walk",},},{text="",when={pace="stroll",},},{text="",when={pace="zoom",},},{text="",w=100,when={type="water",pace=A{"run","walk","stroll",},},},},go_float=A{"You float","You bob along","You drift out over the water, heading","Somehow you skim the water, heading","Buoyed by everything you've rolled up, you float","You paddle along, more or less, heading",},go_run=A{"You hurry","You run","You jog","You dash","You hustle","You pick up the pace, heading",},go_walk=A{"You walk","You head","You make your way","You set out","You carry on",},go_stroll=A{"You wander","You amble","You stroll","You drift","You mosey","You saunter","You take your time heading",},go_zoom=A{"You zip","You zoom","You streak","You hurtle","You whip","Everything blurs as you rush","The world smears past as you race","You cover ground at an unreasonable clip, heading",},keep=A{{text="",when={pace="run",},},{text="",when={pace="walk",},},{text="",when={pace="stroll",},},{text="",when={pace="zoom",},},{text="",w=100,when={type="water",pace=A{"run","walk","stroll",},},},},keep_float=A{"You float on","You keep bobbing along","Still afloat, you head","You drift on across the water",},keep_run=A{"You keep running","You run on","You keep up the pace, heading","Still jogging, you head","You press on",},keep_walk=A{"You keep walking","You carry on","You walk on","You keep going","You continue","Step by step, you head",},keep_stroll=A{"You wander on","You keep ambling","You drift on","Still in no hurry, you head","You meander on",},keep_zoom=A{"You keep racing","You tear on","Still moving impossibly fast, you head","The blur carries you on",},set_off=A{"After a while, you set off","Eventually you move on, heading","At last you head","In your own time, you go","You linger a moment more, then head",},move_into=A{{text="somewhere the map hasn't caught up with",when={type="unmapped",},},},move_from=A{{text="away from the unknown",when={type="unmapped",},},},dir_word=A{{text="north",when={dir="n",},},{text="northeast",when={dir="ne",},},{text="east",when={dir="e",},},{text="southeast",when={dir="se",},},{text="south",when={dir="s",},},{text="southwest",when={dir="sw",},},{text="west",when={dir="w",},},{text="northwest",when={dir="nw",},},},},types={},},},flavors=A{{name="us",country="US",weight=1,pack={name="flavor.us",symbols={},types={residential={building_any=A{"townhouses","frame houses","clapboard houses",},detail_any=A{"their porches crowded with chairs","each with a mailbox by the door","an American flag on one or two","their porch lights on",},feature_any=A{"a basketball hoop over a garage","a little free library on a post","a FOR RENT sign in a window","a hand-lettered BEWARE OF DOG sign","a mailbox at the curb","a pickup in a driveway","a lawn chair facing the street","recycling bins at the curb","yard signs","a doorbell camera",},sound=A{"a screen door bangs shut","a garage door rumbles open","a lawnmower starts on the third try","a sprinkler ticks around",},sound_far=A{"an ice cream truck","a ballgame on someone's radio","a freight train",},movement=A{"a squirrel runs the length of a power line",},speaker=A{"on a porch",},},},},},{name="florida",region="US-FL",weight=2,pack={name="flavor.florida",symbols={},types={residential={building_any=A{{text="stucco houses",w=2,},"ranch houses","townhomes","condo buildings",},bldg_adj=A{"pastel","stucco","flat-roofed","pink","white-roofed",},stand_any=A{"sit low behind palm trees","sit back behind green lawns","line the curving street",},detail_any=A{"their roofs of orange barrel tile","hurricane shutters stacked by their doors","screened pool enclosures out back","palms planted out front","their garages bigger than their front doors",},feature_any=A{"a palm tree","an iguana on a driveway","a lizard on a garage door","a boat on a trailer","a golf cart","a hurricane shutter leaning on a wall",},sound=A{"a pool pump hums","sprinklers hiss on","a leaf blower drones",},smell=A{"chlorine","jasmine","sunscreen",},movement=A{"an iguana drops out of a tree","an ibis picks its way across a lawn","a lizard does push-ups on a wall",},overheard=A{"Did you put the shutters up?","Is the pool guy coming Tuesday?",},},},},},{name="alaska",region="US-AK",weight=2,pack={name="flavor.alaska",symbols={},types={residential={building_any=A{{text="log cabins",w=2,},"small frame houses on pilings","tin-roofed cabins","modular homes","metal-roofed houses",},has_any=A{"steep metal roofs","stovepipes","woodsheds","raised foundations",},detail_any=A{"woodpiles stacked to the eaves","their stovepipes smoking","their steep roofs shedding snow","their gravel yards rutted by trucks","a snowmachine parked by the door",},stand_any=A{"sit up on pilings above the ground","huddle against the cold",},feature_any=A{"a stack of firewood","a snowmachine by the door","a skiff turned over in the yard","a satellite dish on a post",},},},},},{name="alabama",region="US-AL",weight=2,pack={name="flavor.alabama",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="metal-roofed farmhouses",w=2,},"mill-village cottages","shotgun houses","Craftsman bungalows",},has_any=A{"deep front porches","metal roofs","brick chimneys","carports","window units",},detail_any=A{"their front porches deep and shaded","a rocking chair or a swing on every porch","their roofs of rusting tin","their yards of red clay and pecan trees","azaleas planted along the front",},stand_any=A{"sit back under pecan and magnolia trees","line the red-clay road",},feature_any=A{"a porch swing","a pecan tree in the yard","a gravel drive with a pickup in it","a satellite dish on a pole",},},},},},{name="arkansas",region="US-AR",weight=2,pack={name="flavor.arkansas",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="farmhouses",w=2,},"dogtrot houses","log cabins","frame houses on cinder-block piers",},has_any=A{"tin roofs","brick chimneys","metal carports",},detail_any=A{"their tin roofs rusted to a soft red","porches facing the road","a pickup parked in the yard","chimneys of fieldstone",},stand_any=A{"sit back from the highway","keep to the edge of the field",},feature_any=A{"a porch swing","a stacked-stone chimney","a garden plot beside the house","a satellite dish on the roof",},},},},},{name="arizona",region="US-AZ",weight=2,pack={name="flavor.arizona",symbols={},types={residential={building_any=A{{text="stucco ranch houses",w=3,},{text="tile-roofed Spanish-style houses",w=2,},"adobe houses","single-story stucco homes",},has_any=A{"red barrel-tile roofs","block walls","carports","window shades pulled down",},detail_any=A{"their roofs of red barrel tile","gravel yards with a saguaro or a barrel cactus","cinder-block walls around the yards","swamp coolers on some of the roofs","window shades pulled against the sun",},stand_any=A{"sit low and wide in the sun","sit behind block walls",},feature_any=A{"a saguaro in a gravel yard","a palo verde tree","a swamp cooler on a roof","a misting line over a patio",},},},},},{name="california",region="US-CA",weight=2,pack={name="flavor.california",symbols={},types={residential={building_any=A{{text="stucco houses",w=3,},{text="bungalows",w=2,},"Spanish revival houses","tract houses","ranch houses","stucco apartment buildings",},building_suburb=A{"stucco ranch houses","single-story tract homes",},bldg_adj=A{"pastel",},has_any=A{"red tile roofs","low stucco walls","solar panels","bougainvillea on the walls",},detail_any=A{"their roofs of red clay tile","palm trees leaning over the street","a lemon tree in a front yard","drought-tolerant front yards of gravel and succulents","solar panels on the roofs","a converted garage out back",},stand_any=A{"sit behind low stucco walls","line streets of palms","climb the hillside",},feature_any=A{"a lemon tree dropping fruit on the sidewalk","a small unit built behind the main house","a row of trash, recycling and compost bins","a bougainvillea crawling over a wall",},},},},},{name="colorado",region="US-CO",weight=2,pack={name="flavor.colorado",symbols={},types={residential={building_any=A{"brick bungalows","Denver squares",{text="ranch houses",w=2,},"log cabins","mountain lodges","Victorian miners' cottages",},building_suburb=A{"stucco and stone-veneer homes",},has_any=A{"steep roofs","stone chimneys","woodpiles","solar panels","xeriscaped yards",},detail_any=A{"solar panels on their south-facing roofs","their yards of rock and native grass","woodpiles by the doors","mountains standing at the end of the street","steep roofs built for snow",},stand_any=A{"sit with the mountains behind them",},feature_any=A{"a bike hanging on a porch","skis leaning by a door","a snow shovel by the steps","a woodpile under a tarp",},},},},},{name="connecticut",region="US-CT",weight=2,pack={name="flavor.connecticut",symbols={},types={residential={building_any=A{{text="colonials",w=3,},{text="Cape Cods",w=2,},"saltbox houses","Victorian houses","triple-deckers",},building_city=A{"triple-deckers","brick row buildings",},has_any=A{"black shutters","center chimneys","dormers","stone walls out front","white picket fences",},detail_any=A{"black shutters on every window","stone walls running along the road","center chimneys on the old ones","dormer windows in the roofs","mailboxes on posts at the curb",},stand_any=A{"sit back behind stone walls","stand under old maples",},feature_any=A{"a stone wall","a flag by the door","a boat on a trailer in a driveway","a woodpile under the eaves",},},},},},{name="dc",region="US-DC",weight=2,pack={name="flavor.dc",symbols={},types={residential={building_any=A{{text="rowhouses",w=3,},"Federal rowhouses","Victorian bay-front rowhouses","townhouses","porch-front rowhouses",{text="Wardman rowhouses",w=3,},"Romanesque Revival rowhouses",},has_any=A{"bay fronts","stoops with iron railings","painted doors","window boxes","deep front porches",},detail_any=A{"bay fronts rising along the block","stoops with iron railings","front doors painted in bright colors","window boxes on the sills","trees arching over the street",},stand_any=A{"share walls the length of the block","stand shoulder to shoulder",},feature_any=A{"a flag by the door","a small free library on a post","a cherry tree in bloom","a stoop with a bench",},},},},},{name="delaware",region="US-DE",weight=2,pack={name="flavor.delaware",symbols={},types={residential={building_any=A{"brick colonials","brick rowhouses","beach cottages","farmhouses","Cape Cods",},building_city=A{"brick rowhouses",},has_any=A{"brick chimneys","front porches",},detail_any=A{"their porches painted in pastels","outdoor showers on the beach side","crab pots stacked in the yard","old brick chimneys at either end",},stand_any=A{"sit low behind the dunes",},feature_any=A{"a crab pot stack","a boat on a trailer","an outdoor shower","a porch swing",},},},},},{name="georgia",region="US-GA",weight=2,pack={name="flavor.georgia",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="Craftsman bungalows",w=2,},"porch-fronted farmhouses","brick colonials","Victorian cottages",},has_any=A{"wide front porches","brick chimneys","carports",},detail_any=A{"pine straw heaped around their foundations","their porches with swings and rockers","red clay showing at the edge of the yard","a magnolia shading the front",},stand_any=A{"sit back under pines and oaks","stand behind pine-straw yards",},feature_any=A{"a porch swing","a magnolia in a front yard","a pine-straw bed","a pickup in a red-clay drive",},},},},},{name="hawaii",region="US-HI",weight=2,pack={name="flavor.hawaii",symbols={},types={residential={building_any=A{{text="plantation-style houses",w=3,},"small wooden houses on posts","corrugated-roofed houses","lanai houses",},bldg_adj=A{"pastel",},has_any=A{"metal roofs","raised foundations","louvered windows","rainwater tanks",},detail_any=A{"their lanais open to the street","plumeria trees in their yards","slippers lined up by every door","metal roofs streaked red-brown","louvered windows propped open",},stand_any=A{"sit up on posts","lean toward the trade winds",},feature_any=A{"slippers piled by a door","a plumeria tree","a mango tree dropping fruit","a surfboard leaning on a wall",},},},},},{name="iowa",region="US-IA",weight=2,pack={name="flavor.iowa",symbols={},types={residential={building_any=A{{text="farmhouses",w=3,},{text="foursquares",w=2,},"Queen Anne houses","brick ranch houses","small-town Victorian houses",},has_any=A{"front porches","storm windows","detached garages",},detail_any=A{"a windbreak of pines on the north side","grain bins behind the house","their white siding scrubbed by the weather","shade trees planted along the street",},stand_any=A{"sit behind a windbreak of trees","line small-town streets under old maples",},feature_any=A{"a windbreak of pines","a grain bin","a corn crib","a tire swing on an old maple",},},},},},{name="idaho",region="US-ID",weight=2,pack={name="flavor.idaho",symbols={},types={residential={building_any=A{{text="ranch houses",w=3,},"log homes",{text="farmhouses",w=2,},"A-frame cabins","Craftsman bungalows",},has_any=A{"metal roofs","wood stoves",},detail_any=A{"woodpiles stacked by the doors","an irrigation ditch running along the yard","their roofs of metal that sheds snow","long driveways running to the road",},stand_any=A{"sit back from the road behind their fields",},feature_any=A{"an irrigation ditch","a stack of firewood","a camper parked in the drive","a boat under a tarp",},},},},},{name="illinois",region="US-IL",weight=2,pack={name="flavor.illinois",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=2,},{text="foursquares",w=2,},"porch-front frame houses","farmhouses","Victorian houses","bungalows",},has_any=A{"front porches","storm doors","brick chimneys",},detail_any=A{"their porches with metal chairs","a silo behind a white farmhouse","storm doors on the front","maple trees shading the yard",},stand_any=A{"sit back on wide lots","line streets of old maples",},feature_any=A{"a flag by the door","a silo behind a farmhouse","a porch with metal glider chairs",},},},},},{name="indiana",region="US-IN",weight=2,pack={name="flavor.indiana",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=2,},{text="farmhouses",w=2,},"foursquares","limestone houses","porch-front frame houses",},has_any=A{"front porches","storm windows","brick chimneys",},detail_any=A{"a basketball hoop over nearly every garage","fields starting at the back fence","their porches with metal chairs","storm windows in the old ones",},stand_any=A{"sit back from the road","line the county road",},feature_any=A{{text="a basketball hoop over a garage",w=3,},"a barn behind a farmhouse","a grain bin at the edge of the yard","a flag by the door",},},},},},{name="kansas",region="US-KS",weight=2,pack={name="flavor.kansas",symbols={},types={residential={building_any=A{{text="farmhouses",w=3,},"foursquares",{text="ranch houses",w=2,},"limestone houses","brick bungalows",},has_any=A{"front porches","detached garages",},detail_any=A{"storm cellar doors mounded in the yard","a windbreak of cedars to the north","limestone fence posts along a field","grain elevators standing on the horizon",},stand_any=A{"sit behind rows of windbreak trees","sit low against the wind",},feature_any=A{"a storm cellar door","a windmill","a grain elevator on the horizon","a limestone fence post",},},},},},{name="kentucky",region="US-KY",weight=2,pack={name="flavor.kentucky",symbols={},types={residential={building_any=A{{text="brick houses",w=2,},{text="farmhouses",w=2,},"shotgun houses","frame houses on the hillside","Victorian houses","company houses",},building_city=A{"shotgun houses","brick row houses",},has_any=A{"tin roofs","front porches","stone chimneys",},detail_any=A{"black plank fences around horse pastures","dry-laid stone walls along the lanes","their tin roofs rusting red","porches facing the road","tobacco barns behind them",},stand_any=A{"climb the hillside one above another","sit back from the pasture fence",},feature_any=A{"a black plank fence","a tobacco barn","a porch swing","a stone wall along a lane",},},},},},{name="louisiana",region="US-LA",weight=2,pack={name="flavor.louisiana",symbols={},types={residential={building_any=A{{text="raised houses",w=2,},{text="shotgun houses",w=2,},"Creole cottages","camelback houses","Acadian cottages","camps on stilts","brick ranch houses",},building_city=A{"shotgun houses","camelback houses",},bldg_adj=A{"pastel",},has_any=A{"galleries","wide front porches","shutters","raised foundations","tin roofs",},detail_any=A{"their galleries running the length of the front","shutters closed against the sun","piers lifting them off the ground","live oaks over the yards","crepe myrtle along the fence","a blue tarp on one of the roofs",},stand_any=A{"sit up on piers","sit under live oaks",},feature_any=A{"a gallery with a porch swing","a boat on a trailer","a crepe myrtle","a live oak dripping moss",},},},},},{name="massachusetts",region="US-MA",weight=2,pack={name="flavor.massachusetts",symbols={},types={residential={building_any=A{{text="triple-deckers",w=3,},{text="capes",w=2,},"colonials","saltbox houses","Victorian houses","shingled cottages",},building_city=A{"triple-deckers","brick rowhouses","brick bowfront townhouses",},has_any=A{"stacked porches","cedar shingles","stone walls","dormers",},detail_any=A{"porches stacked three high on the fronts","gray cedar shingles weathered by salt","stone walls along the road","roses climbing the fence","a widow's walk on the old ones",},stand_any=A{"stand shoulder to shoulder","sit in a row along the water",},feature_any=A{"a triple-decker with three porches","a stone wall","a boat in a driveway","a rose-covered fence",},},},},},{name="maryland",region="US-MD",weight=2,pack={name="flavor.maryland",symbols={},types={residential={building_any=A{{text="brick colonials",w=2,},"rowhouses","watermen's houses","farmhouses","Cape Cods","beach cottages",},building_city=A{"formstone rowhouses","marble-stepped brick rowhouses",},has_any=A{"marble steps","painted window screens","brick chimneys",},detail_any=A{"marble steps scrubbed white","painted screens in their windows","crab pots stacked by the dock","a Maryland flag hung out front","docks running out behind them",},stand_any=A{"share walls along the block","sit on the water's edge",},feature_any=A{"a Maryland flag","a crab pot","a boat on a lift","a pair of marble steps",},},},},},{name="maine",region="US-ME",weight=2,pack={name="flavor.maine",symbols={},types={residential={building_any=A{{text="capes",w=3,},{text="farmhouses",w=2,},"clapboard houses","shingled cottages","fishermen's houses","Victorian houses",},has_any=A{"metal roofs","woodsheds","stone foundations","dormers",},detail_any=A{"woodpiles stacked high against the walls","a barn joined to the back of the house","lobster traps stacked in the yard","their metal roofs shedding snow","stone foundations heaved by frost",},stand_any=A{"sit low with the barn attached behind","huddle by the water",},feature_any=A{"a woodpile","a stack of lobster traps","a clothesline","a skiff on sawhorses",},},},},},{name="michigan",region="US-MI",weight=2,pack={name="flavor.michigan",symbols={},types={residential={building_any=A{{text="bungalows",w=2,},"two-family flats","Tudor revival houses",{text="ranch houses",w=2,},"cottages","log cabins",},building_city=A{"two-family flats","brick bungalows",},has_any=A{"detached garages","front porches","wood stoves",},detail_any=A{"detached garages at the back of the lots","half-timbering on the Tudor ones","docks reaching into the lake behind the cottages","woodpiles by the doors",},stand_any=A{"sit on narrow lots","sit back among pines and birches",},feature_any=A{"a boat on a trailer","a dock on a lake","a woodpile","a detached garage",},},},},},{name="minnesota",region="US-MN",weight=2,pack={name="flavor.minnesota",symbols={},types={residential={building_any=A{{text="ramblers",w=3,},{text="bungalows",w=2,},"Victorian houses","lake cabins","farmhouses","duplexes",},has_any=A{"three-season porches","storm doors",},detail_any=A{"three-season porches closed in with screens","driveways shoveled into walls of snow","a canoe on sawhorses in the yard","storm doors on every front",},stand_any=A{"sit back on wide lots","sit by the lake behind the pines",},feature_any=A{"a three-season porch","a canoe on sawhorses","a fish house out on the ice","a snowblower in an open garage",},},},},},{name="missouri",region="US-MO",weight=2,pack={name="flavor.missouri",symbols={},types={residential={building_any=A{{text="brick houses",w=2,},"two-family flats",{text="foursquares",w=2,},"bungalows","farmhouses","Ozark log cabins",},building_city=A{"brick two-family flats","brick row houses","Tudor revival houses",},has_any=A{"limestone trim","gangways between them","front porches","brick chimneys",},detail_any=A{"red brick with limestone trim around the doors","narrow gangways between the houses","Tudor half-timbering on the larger ones","porches with iron railings","their sidewalks shaded by old trees",},stand_any=A{"stand shoulder to shoulder in red brick","sit back from the bluff",},feature_any=A{"a gangway between two houses","a limestone step","a flag by the door","an iron porch rail",},},},},},{name="mississippi",region="US-MS",weight=2,pack={name="flavor.mississippi",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=2,},"shotgun houses","dogtrot houses","farmhouses","raised coastal houses","antebellum houses",},has_any=A{"deep porches","tin roofs","raised foundations","brick piers",},detail_any=A{"their porches deep enough for rocking chairs","tin roofs gone soft red","magnolias and crepe myrtle in the yard","red dirt showing through the grass",},stand_any=A{"sit back under live oaks","sit up on brick piers",},feature_any=A{"a porch swing","a magnolia","a gravel drive","a pecan tree",},},},},},{name="montana",region="US-MT",weight=2,pack={name="flavor.montana",symbols={},types={residential={building_any=A{{text="ranch houses",w=2,},{text="log homes",w=2,},"cabins","Victorian brick houses","small frame houses","manufactured homes",},has_any=A{"metal roofs","snow guards","wood stoves",},detail_any=A{"snow guards along their metal roofs","woodpiles stacked by the doors","long driveways running to the road","a ranch gate with its name burned into the beam",},stand_any=A{"sit far apart on big lots","sit with the mountains behind them",},feature_any=A{"a ranch gate with a name on it","a stack of firewood","a horse trailer","a pickup with a dog in it",},},},},},{name="north_carolina",region="US-NC",weight=2,pack={name="flavor.north_carolina",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="bungalows",w=2,},"farmhouses","mill-village houses","mountain cabins","beach houses on stilts",},has_any=A{"front porches","brick chimneys","raised foundations","wind chimes",},detail_any=A{"rocking chairs lined up on the porches","a tobacco barn out back","wind chimes on the porches","brick chimneys at each end",},stand_any=A{"sit back under pines and oaks","sit on stilts above the dunes",},feature_any=A{"a rocking chair on a porch","a tobacco barn","a boat on a trailer","a set of wind chimes",},},},},},{name="north_dakota",region="US-ND",weight=2,pack={name="flavor.north_dakota",symbols={},types={residential={building_any=A{{text="farmhouses",w=3,},{text="ranch houses",w=2,},"modular houses","small frame houses","brick houses",},has_any=A{"storm doors",},detail_any=A{"a shelterbelt of trees on the north side","grain bins behind the house","snow fences along the road","extension cords running out to the trucks",},stand_any=A{"sit behind shelterbelts","sit low against the wind",},feature_any=A{"an extension cord running to a truck's block heater","a shelterbelt","a grain bin","a snow fence",},},},},},{name="nebraska",region="US-NE",weight=2,pack={name="flavor.nebraska",symbols={},types={residential={building_any=A{{text="farmhouses",w=3,},"foursquares","brick bungalows",{text="ranch houses",w=2,},"small-town Victorian houses",},has_any=A{"front porches","detached garages",},detail_any=A{"a windbreak of cedars on the windy side","grain bins behind the house","wind-bent trees leaning off the road","storm cellar doors in the yards",},stand_any=A{"sit behind windbreaks","sit low against the wind",},feature_any=A{"a grain bin","a windmill","a windbreak of cedars","a storm cellar door",},},},},},{name="new_hampshire",region="US-NH",weight=2,pack={name="flavor.new_hampshire",symbols={},types={residential={building_any=A{{text="colonials",w=2,},{text="capes",w=2,},"farmhouses","mill houses","lakeside log cabins","triple-deckers",},has_any=A{"black shutters","woodsheds","stone walls out front","metal roofs",},detail_any=A{"stone walls running along the road","woodpiles stacked against the sides","black shutters on white clapboard","long brick rows of mill housing","woodsheds joined to the back",},stand_any=A{"sit behind stone walls","sit by the lake among the pines",},feature_any=A{"a woodpile","a stone wall","a mailbox on a post","a flag by the door",},},},},},{name="new_jersey",region="US-NJ",weight=2,pack={name="flavor.new_jersey",symbols={},types={residential={building_any=A{{text="split-level houses",w=2,},{text="colonials",w=2,},"two-family houses","Cape Cods","Victorian houses","shore bungalows",},building_city=A{"two-family houses","brick rowhouses",},has_any=A{"aluminum awnings","concrete steps","chain-link fences",},detail_any=A{"aluminum awnings over the doors","concrete front steps with iron railings","gingerbread trim on the Victorians","shore bungalows raised on pilings","pools behind the fences",},stand_any=A{"sit close together on small lots","sit up on stilts by the shore",},feature_any=A{"a flag by the door","a pool behind a fence","a boat in a driveway","a set of concrete steps with an iron rail",},},},},},{name="new_mexico",region="US-NM",weight=2,pack={name="flavor.new_mexico",symbols={},types={residential={building_any=A{{text="adobe houses",w=3,},{text="Pueblo Revival houses",w=2,},"Territorial-style houses","flat-roofed stucco homes","manufactured homes","mid-century ranch houses",},bldg_adj=A{"earth-colored",},has_any=A{"vigas poking through the walls","portales","flat roofs with canales","thick walls",},detail_any=A{"roof beams poking through their walls","strings of red chile drying by the door","flat roofs with spouts for rain","portales shading the fronts","earth-colored walls rounded at the corners",},stand_any=A{"sit low in the dust-colored light","hug the ground in earth tones",},feature_any=A{"a string of red chile by a door","an outdoor oven","a fence of upright sticks","a portal with a bench under it",},},},},},{name="nevada",region="US-NV",weight=2,pack={name="flavor.nevada",symbols={},types={residential={building_any=A{{text="stucco tract homes",w=3,},{text="single-story stucco houses",w=2,},"manufactured homes","old mining-town frame houses","ranch houses",},has_any=A{"red tile roofs","block walls","carports",},detail_any=A{"their roofs of red tile","gravel yards with a few cacti","block walls around the yards","gated entrances at the head of the street","blinds shut against the sun",},stand_any=A{"sit behind block walls","sit low and wide in the sun",},feature_any=A{"a gated entrance","a rock garden","a boat on a trailer","a cactus in a gravel bed",},},},},},{name="new_york",region="US-NY",weight=2,pack={name="flavor.new_york",symbols={},types={residential={building_any=A{{text="Victorian houses",w=2,},"farmhouses",{text="two-family houses",w=2,},"Cape Cods","ranch houses","stone houses","rustic camps",},building_city=A{"two-family houses","brick rowhouses",},has_any=A{"slate roofs","front porches","stone foundations","storm windows","woodstoves",},detail_any=A{"porches with a couple of chairs on them","their slate roofs gone green with age","snow piled high along the walks","stone walls dividing the lots","storm windows on in the cold months",},stand_any=A{"sit back under maples","line the lake road",},feature_any=A{"a snow shovel by the door","a woodpile","a flag by the door","a boat under a tarp",},},},},},{name="ohio",region="US-OH",weight=2,pack={name="flavor.ohio",symbols={},types={residential={building_any=A{{text="doubles",w=2,},{text="brick bungalows",w=2,},"Victorian houses",{text="farmhouses",w=2,},"foursquares",},building_city=A{"doubles","brick row houses",},has_any=A{"front porches","slate roofs","stone steps",},detail_any=A{"their porches stacked one over the other on the doubles","slate roofs on the older ones","buckeye trees shading the yards",},stand_any=A{"stand wall to wall",},feature_any=A{"a buckeye tree","a flag by the door","a porch swing",},},},},},{name="oklahoma",region="US-OK",weight=2,pack={name="flavor.oklahoma",symbols={},types={residential={building_any=A{{text="ranch houses",w=3,},{text="farmhouses",w=2,},"manufactured homes","brick houses","mid-century houses",},has_any=A{"metal roofs","carports",},detail_any=A{"storm cellar doors mounded in the yard","red dirt showing through the grass","windbreaks of trees on the south side","a pumpjack nodding at the back of a field",},stand_any=A{"sit low against the wind","sit back among the trees",},feature_any=A{"a storm cellar door","a pumpjack in the distance","a windmill","a trampoline behind a fence",},},},},},{name="oregon",region="US-OR",weight=2,pack={name="flavor.oregon",symbols={},types={residential={building_any=A{{text="Craftsman bungalows",w=3,},{text="cedar-sided houses",w=2,},"ranch houses","farmhouses","A-frames","houseboats",},has_any=A{"moss on the roofs","wide eaves","rain gutters","covered porches",},detail_any=A{"a bike with fenders chained to the porch rail","rain gutters on every eave","rhododendrons crowding the front yards","blackberry vines on the fences","the occasional hazelnut orchard behind a house","porches painted in strong colors",},stand_any=A{"sit close on small lots in the rain","sit back among the rhododendrons",},feature_any=A{"a bike with fenders","a rain barrel","a blackberry thicket","a front porch painted teal",},},},},},{name="pennsylvania",region="US-PA",weight=2,pack={name="flavor.pennsylvania",symbols={},types={residential={building_any=A{{text="twins",w=2,},{text="brick rowhouses",w=2,},"stone farmhouses","frame houses on the hillside","coal-town company rows","Victorian houses",},building_city=A{"brick rowhouses","twins",},has_any=A{"aluminum awnings","front porches","slate roofs",},detail_any=A{"porches joined end to end","bank barns standing behind the old farmhouses","aluminum awnings over half the doors","long runs of steps up the hillside","slate roofs weathered gray",},stand_any=A{"share walls along the block","climb the hillside one above another",},feature_any=A{"a hex sign on a barn","a stone farmhouse","a long run of steps up a hill","a flag by the door",},},},},},{name="rhode_island",region="US-RI",weight=2,pack={name="flavor.rhode_island",symbols={},types={residential={building_any=A{{text="triple-deckers",w=3,},"colonials","Victorian houses","shingled cottages","Cape Cods",},building_city=A{"triple-deckers","brick row buildings",},has_any=A{"gray cedar shingles","stacked porches","stone walls","dormers",},detail_any=A{"gray cedar shingles weathered by salt","porches stacked up the front of the triple-deckers","rose hedges along the fence","boats parked in the driveways","stone walls along the lanes",},stand_any=A{"stand packed together on small lots","sit near the water",},feature_any=A{"a boat on a trailer","a rose hedge","a stone wall","a Rhode Island flag with its anchor",},},},},},{name="south_carolina",region="US-SC",weight=2,pack={name="flavor.south_carolina",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="porch cottages",w=2,},"mill-village houses","farmhouses","raised Lowcountry houses","single houses turned sideways to the street",},bldg_adj=A{"pastel",},has_any=A{"deep porches","tin roofs","raised foundations","porch ceilings painted pale blue",},detail_any=A{"porches with ceilings painted pale blue","their floors raised on brick piers","live oaks draped with moss over the yards","tin roofs weathered gray",},stand_any=A{"sit up on piers","line the mill-village streets",},feature_any=A{"a porch swing","a live oak with moss","a palmetto in a yard","a pale blue porch ceiling",},},},},},{name="south_dakota",region="US-SD",weight=2,pack={name="flavor.south_dakota",symbols={},types={residential={building_any=A{{text="farmhouses",w=3,},{text="ranch houses",w=2,},"brick houses","hill-country log cabins","small frame houses",},has_any=A{"metal roofs",},detail_any=A{"shelterbelts of trees on the windy side","grain bins behind the house","snow fences along the road","pheasant cover along the fields",},stand_any=A{"sit behind shelterbelts","sit low against the wind",},feature_any=A{"a grain bin","a shelterbelt","a snow fence","a pickup in the yard",},},},},},{name="tennessee",region="US-TN",weight=2,pack={name="flavor.tennessee",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="bungalows",w=2,},"frame houses on the hillside","log cabins","Victorian houses","shotgun houses",},has_any=A{"front porches","tin roofs","stone chimneys","carports",},detail_any=A{"tin roofs rusting red","porches with rocking chairs","chimneys of fieldstone","their yards stepped up the hillside","dogwoods in the yards",},stand_any=A{"climb the hillside","line the ridge road",},feature_any=A{"a rocking chair on a porch","a stacked-stone chimney","a satellite dish on a pole","a dogwood in bloom",},},},},},{name="texas",region="US-TX",weight=2,pack={name="flavor.texas",symbols={},types={residential={building_any=A{{text="brick ranch houses",w=3,},{text="metal-roofed limestone houses",w=2,},"Spanish-style stucco houses","bungalows","farmhouses","raised Victorian houses",},building_suburb=A{"brick ranch houses","two-story brick homes",},has_any=A{"metal roofs","wide front porches",},detail_any=A{"a Texas star hung on the front","their roofs of standing-seam metal","live oaks shading the front yards","lots of brick and not much siding","a flag out front",},stand_any=A{"sit back on wide lots","sit under live oaks",},feature_any=A{"a Texas flag","a metal star on a wall","a windmill beside a farmhouse","a pickup in the drive",},},},},},{name="utah",region="US-UT",weight=2,pack={name="flavor.utah",symbols={},types={residential={building_any=A{{text="brick bungalows",w=2,},"Victorian cottages",{text="brick and stucco houses",w=2,},"ranch houses","red-sandstone houses","farmhouses",},has_any=A{"front porches",},detail_any=A{"mountains standing at the end of every street","wide streets between the houses","fruit trees in the back yards","red sandstone and red-tile roofs in the south",},stand_any=A{"sit under the mountains","line the wide streets",},feature_any=A{"a mountain at the end of the street","a fruit tree in a yard","a trampoline in a back yard","a flag by the door",},},},},},{name="virginia",region="US-VA",weight=2,pack={name="flavor.virginia",symbols={},types={residential={building_any=A{{text="brick colonials",w=3,},"Georgian houses","Federal rowhouses","townhouses","farmhouses","raised Tidewater houses",},building_city=A{"brick rowhouses","townhouses",},has_any=A{"brick chimneys at each end","black shutters","white columns","boxwood hedges",},detail_any=A{"brick chimneys at either end","black shutters against red brick","boxwood hedges along the walks","white columns holding up the porches","brick walkways leading to the doors",},stand_any=A{"sit back behind boxwood hedges","sit under old oaks",},feature_any=A{"a boxwood hedge","a brick walkway","a flag by the door","a white-columned porch",},},},},},{name="vermont",region="US-VT",weight=2,pack={name="flavor.vermont",symbols={},types={residential={building_any=A{{text="farmhouses",w=2,},{text="white clapboard houses",w=2,},"Greek Revival houses","Victorian houses","capes","sugar shacks",},has_any=A{"metal roofs","woodsheds","stone walls",},detail_any=A{"woodpiles stacked high by the doors","green hills rising behind the village","their metal roofs shedding snow","a sap bucket hung on a roadside maple","stone walls running into the woods","a barn joined to the back of the main house",},stand_any=A{"sit around the village green","sit with the hills behind them",},feature_any=A{"a woodpile","a sap bucket on a maple","a farm stand","a stone wall",},},},},},{name="washington",region="US-WA",weight=2,pack={name="flavor.washington",symbols={},types={residential={building_any=A{{text="Craftsman bungalows",w=2,},{text="cedar-shingled houses",w=2,},"houseboats","ranch houses","farmhouses among the apple orchards","brick houses",},has_any=A{"moss on the roofs","wide eaves","rain gutters","covered porches",},detail_any=A{"moss on the cedar shingles","Douglas firs standing close behind","ferns crowding the foundations","kayaks racked beside the garages","ferry horns drifting in from the water","apple orchards starting at the back fence",},stand_any=A{"sit under Douglas firs","sit above the water",},feature_any=A{"a kayak on a rack","a fern bed","a boat under a cover","a view across the water",},},},},},{name="wisconsin",region="US-WI",weight=2,pack={name="flavor.wisconsin",symbols={},types={residential={building_any=A{{text="bungalows",w=2,},"upper-and-lower flats",{text="farmhouses",w=2,},"ranch houses","Victorian houses","northwoods cabins",},building_city=A{"upper-and-lower flats","cream-colored brick houses",},has_any=A{"front porches","storm windows","woodpiles",},detail_any=A{"cream-colored brick on the older ones","a red barn behind the farmhouse","woodpiles stacked by the doors","bird feeders hung by the windows","storm windows on in the cold months",},stand_any=A{"sit under old maples","line the lake road",},feature_any=A{"a snowblower by the door","a boat in the driveway","a woodpile","a red barn behind a house",},},},},},{name="west_virginia",region="US-WV",weight=2,pack={name="flavor.west_virginia",symbols={},types={residential={building_any=A{{text="frame houses on the hillside",w=3,},"company houses","mobile homes","log cabins","brick Victorian houses",},has_any=A{"tin roofs","steps climbing from the road","stone chimneys",},detail_any=A{"their yards stepped up the hillside","steps climbing from the road to the door","their tin roofs rusted","porches facing the road","footbridges crossing the creek",},stand_any=A{"climb the hillside one above another","crowd the narrow valley",},feature_any=A{"a footbridge over a creek","a long flight of steps up a hill","a satellite dish on a pole","a porch swing",},},},},},{name="wyoming",region="US-WY",weight=2,pack={name="flavor.wyoming",symbols={},types={residential={building_any=A{{text="ranch houses",w=3,},{text="log cabins",w=2,},"manufactured homes","railroad-town brick Victorians","small frame houses",},has_any=A{"metal roofs","wood stoves",},detail_any=A{"windbreak fences standing in the yards","trees bent in the same direction by the wind","long driveways running to the road","woodpiles stacked against the walls",},stand_any=A{"sit low against the wind","sit far apart on big lots",},feature_any=A{"a snow fence","a horse trailer","a stack of firewood","a satellite dish",},},},},},{name="japan",country="JP",weight=2,pack={name="flavor.japan",symbols={},types={residential={building_any=A{{text="wooden houses",w=2,},{text="concrete houses",w=2,},"tiled-roof houses","low apartment blocks with outdoor stairs",},bldg_adj=A{"two-story","narrow",},stand_any=A{"sit a hand's width apart","line the narrow lane","stand behind low block walls","fill every lot to the edge",},detail_any=A{"laundry poles on every balcony","their air conditioner units hung on the walls","potted plants crowding their doorsteps","their outdoor stairs painted the same pale green","bicycles parked in front of each","their roofs of dark glazed tile","a nameplate by each door",},extent=A{"for the whole lane","on both sides of the lane",},feature_any=A{"a vending machine glowing at the corner","a row of potted morning glories","a bicycle with a child seat","a small shrine tucked between two houses","a convex traffic mirror on a pole","a stack of flattened cardboard tied with string",},near=A{"down the lane","across the lane",},sound=A{"a railway crossing bell starts ringing","a garbage truck plays its little tune","a bicycle bell rings twice",},sound_far=A{"a temple bell","a railway crossing","a loudspeaker truck",},smell=A{"miso soup","grilled fish","incense","rice cooking",},movement=A{"a delivery bike threads down the lane","a schoolkid with a big backpack trots past",},overheard=A{"Itterasshai!","Tadaima!","Otsukaresama.","Sumimasen.",},},},},},{name="guangdong",region="CN-GD",weight=2,pack={name="flavor.guangdong",symbols={},types={residential={building_any=A{{text="residential towers",w=2,},{text="tenement buildings",w=2,},"handshake buildings","old village houses",},bldg_adj=A{"tiled","thirty-story",},stand_any=A{"crowd so close their balconies nearly touch","rise thirty stories above the street","line the narrow alley","stand in rows behind a gate","lean over the alley on both sides",},detail_any=A{"air conditioners stacked up every wall","laundry hung on poles from every window","their windows covered with metal grilles","their tiles gone gray with grime","red couplets pasted around their doors","plants crowding their rooftops",},extent=A{"for the whole alley","on both sides of the alley",},feature_any=A{"a row of e-bikes charging by a door","red paper couplets around a doorway","a small altar with incense burning","a shop sign glowing at the end of the alley","a stack of delivery boxes","a security guard's booth","a plastic stool on a step",},near=A{"down the alley","across the alley","upstairs",},sound=A{"an e-bike horn beeps","someone is chopping vegetables","a TV drama is playing loudly","mahjong tiles clatter",},sound_far=A{"traffic on the expressway","a metro train",},smell=A{"incense","frying garlic","roast duck","wet concrete",},movement=A{"a delivery rider squeezes past on an e-bike","an old man walks backward, clapping, for exercise",},overheard=A{"Nǐ chī le ma?","Néih hóu!","Your package is downstairs.","Wait, wait.",},},},},},{name="cdmx",region="MX-CMX",weight=2,pack={name="flavor.cdmx",symbols={},types={residential={building_any=A{{text="concrete houses",w=2,},"colonial-era houses","art deco apartment buildings","flat-roofed houses",},bldg_adj=A{"pink","turquoise","ochre","brightly painted",},stand_any=A{"stand behind tall gates","share walls the length of the street",},detail_any=A{"rebar sticking up from their flat roofs","their walls painted pink, yellow and blue","bougainvillea spilling over their walls","iron grilles over their windows","water tanks on every roof","their gates topped with spikes",},feature_any=A{"a water tank on a roof","a street vendor's tricycle","a small shrine to the Virgin of Guadalupe in a wall niche","a dog on a rooftop","a gas cylinder by a door","a hand-painted SE VENDE sign","a tiled house number by a gate",},sound=A{"a gas truck plays its jingle","a dog barks from a rooftop","a vendor's recording calls out tamales","a radio plays cumbia",},sound_far=A{"a sweet-potato vendor's whistle",},smell=A{"tortillas","tacos al pastor","jacaranda",},movement=A{"a dog trots along a rooftop edge",},overheard=A{"¡Ahorita!","¿Qué onda?","Órale.","No pasa nada.",},},},},},{name="philly",box=A{39.86,-75.29,40.14,-74.95,},weight=2,pack={name="flavor.philly",symbols={},types={residential={building_any=A{{text="rowhomes",w=3,},"twins","porch-front rowhomes",},bldg_adj=A{"brick",},stand_any=A{"share walls the length of the block","march to the corner in a single brick wall","sit right on the sidewalk",},detail_any=A{"their marble steps scrubbed white","metal awnings over half the doors","their porches joined end to end","every cornice a different color","a plastic chair on every other porch",},feature_any=A{"a folding chair saving a parking spot","a Phillies flag","an Eagles flag","a mural on the end wall","a trash can chained to a railing",},sound_far=A{"the El","a dirt bike",},smell=A{"fresh rolls from a bakery","soft pretzels",},ground=A{"a metal cellar door booms as someone steps on it",},speaker=A{"on a stoop",},overheard=A{"That jawn's been sitting there all week.","Youse going down the shore?","Grab me a hoagie while you're out.","Go Birds!","Who's got the wooder ice?",},},},},},{name="nyc",box=A{40.49,-74.26,40.92,-73.7,},weight=2,pack={name="flavor.nyc",symbols={},types={residential={building_any=A{{text="brownstones",w=2,},{text="walk-ups",w=2,},"tenement buildings","prewar apartment buildings",},stand_any=A{"rise five stories on either side",},detail_any=A{"fire escapes zigzagging down their fronts","their stoops climbing to the parlor floor","water tanks perched on their roofs","their cornices heavy and ornate",},feature_any=A{"a stoop with a plant on every step","a fire escape crowded with plants","a cellar door open to the sidewalk","a scaffolding shed over the sidewalk",},sound_far=A{"the subway","car horns",},smell=A{"halal cart smoke","pizza","steam from a manhole",},ground=A{"a subway grate rattles as a train passes beneath","a cellar door clanks as someone steps on it",},overheard=A{"You gonna sit on that stoop all day?","Alternate side tomorrow, move the car.","The super said Thursday.",},},},},},{name="bay",box=A{37.2,-122.62,38.1,-121.7,},weight=2,pack={name="flavor.bay",symbols={},types={residential={building_any=A{{text="Victorians",w=2,},"Edwardians","stucco houses","flat-fronted apartment buildings",},bldg_adj=A{"painted","pastel",},stand_any=A{"climb the hill one after another","stand on garages like they're on stilts",},detail_any=A{"their bay windows stacked two high","a garage door set into the bottom of each","succulents crowding their window boxes","their trim picked out in three colors",},feature_any=A{"a lemon tree in a side yard","a front staircase steep as a ladder","a jade plant the size of a car","a solar panel on a garage roof",},sound_far=A{"a foghorn","a cable car bell","BART",},smell=A{"eucalyptus","salt","jasmine",},overheard=A{"That's hella far.","Parking here is hella bad.","You going to the city later?","Took me an hour on the bridge.",},},},},},{name="london",box=A{51.28,-0.51,51.7,0.33,},weight=2,pack={name="flavor.london",symbols={},types={residential={building_any=A{{text="terraced houses",w=3,},"terraces","mansion blocks","council flats","mews houses","semi-detached houses",},bldg_adj=A{"Georgian","Victorian","red-brick","soot-dark",},stand_any=A{"stand in an unbroken terrace","face each other across the road","sit behind low brick walls","curve away round the crescent",},detail_any=A{"their chimney pots in neat rows","each with a bay window","their front doors painted glossy colors","black iron railings along every front","a blue plaque on one of them","their basements reached by narrow steps",},feature_any=A{"wheelie bins in a front garden","a bike locked to the railings","an estate agent's board on a post","a cat on a windowsill",},near=A{"a few doors down the road","across the road","down the road",},sound_far=A{"a double-decker bus","a train","church bells",},smell=A{"chip fat","wet brick",},overheard=A{"Cheers, mate.","You alright?","Fancy a cuppa?","It's not far, ten minutes on the bus.",},},},},},{name="paris",box=A{48.7,2.15,49.0,2.55,},weight=2,pack={name="flavor.paris",symbols={},types={residential={building_any=A{{text="Haussmann buildings",w=3,},"six-story apartment buildings","narrow townhouses",},bldg_adj=A{"limestone","cream-colored",},stand_any=A{"rise six stories in a single cream-colored wall",},detail_any=A{"wrought-iron balconies running the length of their second floors","their zinc roofs gone gray","their shutters folded back","geraniums on every balcony","their carved doors twice as tall as a person","chimney pots crowding the roofline",},feature_any=A{"a heavy green door with a brass knob","a bike on a balcony","a keypad by a carriage door","a café chair someone forgot to take in","a small brass plate by a doorway","recycling bins with yellow lids",},sound_far=A{"a two-tone siren","the Métro",},smell=A{"fresh bread","coffee","wet stone",},overheard=A{"Bonjour!","On se voit demain?","Bon, allez.","Ça va, ça va.",},},},},},{name="chicago",box=A{41.64,-87.94,42.02,-87.52,},weight=2,pack={name="flavor.chicago",symbols={},types={residential={building_any=A{{text="two-flats",w=3,},{text="brick bungalows",w=3,},{text="greystones",w=2,},"three-flats","six-flats","courtyard buildings",},building_city=A{"two-flats","greystones","six-flats","courtyard buildings",},has_any=A{"limestone trim","stone steps","stacked wooden back porches","gangways between them",},detail_any=A{"wooden back porches stacked three high","gangways running between the buildings","garages opening off the alley behind","bay windows over the front steps","limestone sills set into the brick",},stand_any=A{"stand shoulder to shoulder on narrow lots","face each other across the alley",},feature_any=A{"a garage off the alley","a stoop with a folding chair on it","a parkway tree between the sidewalk and the street","a stack of wooden back porches",},},},},},{name="boston",box=A{42.23,-71.19,42.4,-70.99,},weight=2,pack={name="flavor.boston",symbols={},types={residential={building_any=A{{text="triple-deckers",w=3,},{text="bowfront rowhouses",w=2,},"brick townhouses","Victorian rowhouses","brownstone townhouses",},building_city=A{"triple-deckers","bowfront rowhouses","brick townhouses",},has_any=A{"bow fronts","stacked porches","iron railings","narrow stoops",},detail_any=A{"porches stacked three high on the fronts","brick sidewalks heaved by tree roots","iron railings running up narrow stoops","gas lamps beside some of the doors","window boxes on the sills",},stand_any=A{"stand shoulder to shoulder","curve with the street",},feature_any=A{"a brick sidewalk","a gas lamp by a door","a porch on each of three floors","a bay window curving out over the street",},},},},},{name="pittsburgh",box=A{40.36,-80.1,40.5,-79.85,},weight=2,pack={name="flavor.pittsburgh",symbols={},types={residential={building_any=A{{text="hillside houses",w=3,},"brick rowhouses",{text="two-story frame houses",w=2,},"mill-town company houses","porch-front rowhouses",},building_city=A{"hillside houses","brick rowhouses",},has_any=A{"long flights of steps","stone retaining walls","covered porches",},detail_any=A{"public steps climbing between the streets","their back yards dropping away down the slope","stone retaining walls holding up the yards","views down to the rivers","porches facing the hillside",},stand_any=A{"cling to the slope","climb the hillside one above another",},feature_any=A{"a public staircase between two streets","a retaining wall of stone","a view over the rivers","a bridge in the distance",},},},},},{name="baltimore",box=A{39.2,-76.72,39.37,-76.53,},weight=2,pack={name="flavor.baltimore",symbols={},types={residential={building_any=A{{text="formstone rowhouses",w=3,},{text="brick rowhouses",w=3,},"marble-stepped rowhouses",},building_city=A{"formstone rowhouses","brick rowhouses",},has_any=A{"marble steps","painted window screens","formstone fronts","arched doorways",},detail_any=A{"marble steps scrubbed white","painted screens in the windows","formstone fronts in gray and tan","arched doorways with wooden doors","awnings over the stoops",},stand_any=A{"share walls the length of the block","march to the corner in one brick wall",},feature_any=A{"a painted window screen","a pair of marble steps","an awning over a stoop","a folding chair on a stoop",},},},},},{name="new_orleans",box=A{29.9,-90.15,30.05,-89.95,},weight=2,pack={name="flavor.new_orleans",symbols={},types={residential={building_any=A{{text="shotgun houses",w=3,},{text="double shotguns",w=2,},"camelback houses","Creole cottages","Creole townhouses","raised center-hall cottages",},building_city=A{"shotgun houses","double shotguns","Creole townhouses",},has_any=A{"galleries","cast-iron balconies","tall shuttered windows","gingerbread trim","raised foundations",},detail_any=A{"wrought-iron galleries overhanging the sidewalk","shutters painted green or black","gingerbread trim under the eaves","porch columns carved and painted","narrow side yards between the houses",},stand_any=A{"sit up on piers","stand side by side with narrow gaps",},feature_any=A{"a gas lamp by a door","a banana tree in a side yard","beads hanging in a tree","a porch swing on a front gallery",},},},},},{name="charleston",box=A{32.74,-80.03,32.82,-79.9,},weight=2,pack={name="flavor.charleston",symbols={},types={residential={building_any=A{{text="Charleston single houses",w=3,},{text="pastel rowhouses",w=2,},"Georgian townhouses","Victorian houses",},building_city=A{"Charleston single houses","pastel rowhouses",},has_any=A{"piazzas","side porches","high garden walls","hurricane shutters",},detail_any=A{"piazzas running down their sides","front doors opening onto the side porches","garden walls enclosing narrow gardens","porch ceilings painted pale blue","wrought-iron gates in the walls",},stand_any=A{"stand end-on to the street","sit behind garden walls",},feature_any=A{"a wrought-iron gate","a palmetto","a side porch","a pale blue porch ceiling",},},},},},{name="savannah",box=A{31.99,-81.14,32.1,-81.04,},weight=2,pack={name="flavor.savannah",symbols={},types={residential={building_any=A{{text="brick rowhouses",w=2,},{text="Victorian houses",w=2,},"Georgian townhouses","cottages",},building_city=A{"brick rowhouses","Georgian townhouses",},has_any=A{"iron balconies","stoops with iron railings","tall shuttered windows",},detail_any=A{"live oaks hung with Spanish moss","small squares of grass between the blocks","iron stair railings climbing to the doors","brick sidewalks under the oaks",},stand_any=A{"face a small square","stand under old oaks",},feature_any=A{"a live oak with moss","an iron balcony","a small square with a fountain","a brick sidewalk",},},},},},{name="seattle",box=A{47.49,-122.42,47.73,-122.25,},weight=2,pack={name="flavor.seattle",symbols={},types={residential={building_any=A{{text="Craftsman bungalows",w=3,},"houseboats","townhouses","cottages","daylight-basement houses",},building_city=A{"townhouses","small apartment buildings",},has_any=A{"wide eaves","view decks","moss on the roofs",},detail_any=A{"houseboats tied up along the lake","steep streets cut into the hills","moss thick on the roofs","views out over the water","evergreens behind the houses",},stand_any=A{"climb the hillside","sit above the water",},feature_any=A{"a houseboat","a view of the mountains","a ferry horn far off","a rain barrel",},},},},},{name="milwaukee",box=A{42.96,-88.06,43.2,-87.86,},weight=2,pack={name="flavor.milwaukee",symbols={},types={residential={building_any=A{{text="Polish flats",w=3,},{text="cream-colored brick houses",w=3,},"bungalows","duplexes",},building_city=A{"Polish flats","cream-colored brick houses",},has_any=A{"stacked porches","front stoops","limestone trim",},detail_any=A{"cream-colored brick glowing pale yellow","an upper and a lower flat under one roof","tall narrow houses on small lots","front stoops with a couple of chairs",},stand_any=A{"stand shoulder to shoulder on small lots","line the street under old trees",},feature_any=A{"a flower bed along a stoop","a pair of front doors on one house","a stack of bikes on a porch",},},},},},{name="st_louis",box=A{38.53,-90.32,38.78,-90.18,},weight=2,pack={name="flavor.st_louis",symbols={},types={residential={building_any=A{{text="red-brick two-family flats",w=3,},{text="red-brick houses",w=3,},"shotgun houses","Tudor revival houses","bungalows",},building_city=A{"red-brick two-family flats","red-brick rowhouses",},has_any=A{"limestone trim","gangways between them","iron porch rails","ornate cornices",},detail_any=A{"limestone sills over red brick","narrow gangways between the houses","stained glass over the doors","ornate cornices along the rooflines","alleys running behind the blocks",},stand_any=A{"stand shoulder to shoulder in red brick","line the street under old trees",},feature_any=A{"a gangway between two houses","a limestone step","an alley behind the block",},},},},},{name="louisville",box=A{38.15,-85.85,38.3,-85.65,},weight=2,pack={name="flavor.louisville",symbols={},types={residential={building_any=A{{text="shotgun houses",w=3,},{text="Victorian mansions",w=2,},"brick rowhouses","bungalows",},building_city=A{"shotgun houses","brick rowhouses",},has_any=A{"tall porches","iron fences","stained-glass windows",},detail_any=A{"iron fences enclosing small yards","turrets and wide porches on the grander ones","a shotgun house with a porch swing","stained glass over the doors",},stand_any=A{"stand side by side on narrow lots","stand behind iron fences",},feature_any=A{"an iron fence","a porch swing","a turret on a corner house",},},},},},{name="cincinnati",box=A{39.07,-84.6,39.2,-84.4,},weight=2,pack={name="flavor.cincinnati",symbols={},types={residential={building_any=A{{text="Italianate rowhouses",w=3,},{text="hillside houses",w=2,},"brick two-family houses","Victorian houses",},building_city=A{"Italianate rowhouses","brick two-family houses",},has_any=A{"tall windows","iron balconies","long flights of steps","stone lintels",},detail_any=A{"stone lintels over the tall windows","houses stacked up the hillsides","long public stairways between the streets","iron balconies over the sidewalk",},stand_any=A{"climb the hillside one above another","stand wall to wall",},feature_any=A{"a long staircase up a hill","an iron balcony","a view down to the river",},},},},},{name="cleveland",box=A{41.43,-81.8,41.55,-81.55,},weight=2,pack={name="flavor.cleveland",symbols={},types={residential={building_any=A{{text="doubles",w=3,},"Victorian houses","bungalows","brick rowhouses",},building_city=A{"doubles","brick rowhouses",},has_any=A{"stacked porches","front porches","slate roofs",},detail_any=A{"porches stacked one above the other","narrow driveways running between the houses to garages","slate roofs weathered gray","a flag on one porch in three",},stand_any=A{"stand on narrow lots","sit close together",},feature_any=A{"a double with two front doors","a flag by the door","a narrow driveway between two houses",},},},},},{name="detroit",box=A{42.25,-83.3,42.45,-82.95,},weight=2,pack={name="flavor.detroit",symbols={},types={residential={building_any=A{{text="brick bungalows",w=3,},{text="two-family flats",w=2,},"Tudor revival houses","Colonial Revival houses","Craftsman houses",},building_city=A{"two-family flats","brick bungalows",},has_any=A{"detached garages","front porches","arched doorways","slate roofs",},detail_any=A{"garages at the end of narrow driveways","arched doorways on the brick ones","a vegetable garden on an empty lot beside a house","slate roofs on the older ones",},stand_any=A{"sit on deep narrow lots","stand in long even rows",},feature_any=A{"a vegetable garden on an empty lot","a detached garage","an arched front door",},},},},},{name="los_angeles",box=A{33.9,-118.55,34.2,-118.15,},weight=2,pack={name="flavor.los_angeles",symbols={},types={residential={building_any=A{{text="bungalows",w=3,},{text="dingbat apartment buildings",w=3,},{text="Spanish-style houses",w=2,},"bungalow courts","stucco apartment buildings","Craftsman houses",},building_city=A{"dingbat apartment buildings","bungalow courts","stucco apartment buildings",},has_any=A{"red tile roofs","carports under the second floor","security bars on the windows","bougainvillea on the walls",},detail_any=A{"parking tucked under the first floor","palm trees rising from the front yards","security bars on the windows","a bougainvillea crawling up a wall","small bungalows ranged around a courtyard",},stand_any=A{"sit behind low stucco walls","climb into the hills",},feature_any=A{"a lemon tree","a tall thin palm","a gate with a keypad","a small bungalow court",},},},},},{name="montreal",box=A{45.41,-73.98,45.7,-73.47,},weight=2,pack={name="flavor.montreal",symbols={},types={residential={building_any=A{{text="plexes",w=3,},{text="triplexes",w=3,},"duplexes","stone triplexes","row houses",},building_city=A{"plexes","triplexes","stone triplexes",},has_any=A{"outside staircases","iron balconies","dormers","metal roofs",},detail_any=A{"spiral staircases climbing the fronts","balconies stacked three high","lanes running behind the blocks","gray stone on the older ones",},stand_any=A{"stand shoulder to shoulder","face each other across the street",},feature_any=A{"a spiral staircase","a back lane","a Quebec flag",},},},},},{name="toronto",box=A{43.58,-79.64,43.86,-79.12,},weight=2,pack={name="flavor.toronto",symbols={},types={residential={building_any=A{{text="Victorian semis",w=3,},{text="bay-and-gable houses",w=3,},"row houses","laneway houses","brick houses",},building_city=A{"Victorian semis","row houses",},has_any=A{"bay windows","front porches","gables","wrought-iron railings",},detail_any=A{"bay-and-gable fronts in a row","porches with a couple of chairs","laneways running behind the blocks","red brick with decorative trim",},stand_any=A{"share a wall in pairs","stand close together on narrow lots",},feature_any=A{"a laneway house","a front-yard garden","a porch with two chairs",},},},},},{name="vancouver",box=A{49.19,-123.27,49.32,-123.02,},weight=2,pack={name="flavor.vancouver",symbols={},types={residential={building_any=A{{text="Vancouver specials",w=3,},"heritage Craftsman houses","laneway houses","townhouses","low-rise apartment buildings",},building_city=A{"glass condo towers","low-rise apartment buildings",},has_any=A{"low-pitched roofs","covered porches","rain gutters",},detail_any=A{"mountains standing behind the rooftops","laneway houses behind the main ones","rain-streaked stucco on the boxier ones","rhododendrons crowding the front yards",},stand_any=A{"sit against the mountain view","stand on narrow lots",},feature_any=A{"a laneway house","a rhododendron","a view of the mountains",},},},},},{name="st_johns",box=A{47.52,-52.82,47.62,-52.64,},weight=2,pack={name="flavor.st_johns",symbols={},types={residential={building_any=A{{text="row houses painted in bright colors",w=3,},{text="clapboard houses",w=2,},"saltbox houses","wooden row houses",},building_city=A{"wooden row houses",},has_any=A{"bright paint","steep steps","dormers",},detail_any=A{"walls painted in strong colors, house after house","steep streets dropping to the harbour","views down to the water","wooden steps up to the doors",},stand_any=A{"climb the hill above the harbour","stand in a bright row",},feature_any=A{"a view of the harbour","a set of steep wooden steps","a bright blue door",},},},},},},logic={module="lib.map",source="-- Map game logic (settings and text: examples/borges/game.yaml). Cells are typed\n-- from real Overture Maps data the host streams in (web/maptiles.js). Works\n-- anywhere Overture has data.\n--\n-- How a cell gets its type (its land), first match wins:\n-- 1. water a river or stream runs through, or the center is in water\n-- 2. building a building footprint that says what it is (not in a\n-- park, plaza or cemetery)\n-- 3. place a business, institution or monument is in the cell\n-- (commercial or civic, by category; not in a park,\n-- plaza or cemetery: there it's a feature of the park)\n-- 4. land land use (park, plaza, cemetery, school, retail,\n-- industrial...), natural land (woods, fields, sand), or\n-- land cover from satellite imagery (ESA WorldCover),\n-- only away from streets (COVER_STREET_GAP; a trail's\n-- tracks don't count: woods with a trail are woods):\n-- from above, a leafy suburb is all tree canopy.\n-- Industrial land under tree canopy is woods too (a\n-- fenced hilltop under a radio mast isn't a yard of\n-- warehouses): fact `fenced`.\n-- 5. places around nothing mapped here, but places all round: what most\n-- of them are, civic or commercial\n-- 6. fallback residential (a street with shops all round: commercial)\n-- A street through a cell isn't its type: it's the cell's other tag (what\n-- things load for: residential + street), and its facts (its name, a\n-- corner). A trail is the same, where a cell's only roads are tracks (dirt\n-- and fire roads: the map keeps only named ones). The one street cell is a\n-- bridge: type street (on its deck), its land water.\n\nlocal and_list = (require \"borges.things\").and_list\n\n-- How close (mm) a street must pass to a cell's center to make it a street\n-- cell, by road class. Cells are 15 m apart; a line through a cell is at most\n-- ~8.7 m from its center, so 8700 means \"touches at all\". Lower values thin\n-- streets out, but much below 6 m they start breaking into dashes. Alleys and\n-- service roads get less reach, so they don't swallow whole blocks.\nlocal STREET_REACH = 6000\nlocal STREET_REACH_BY_CLASS = { service = 4000, pedestrian = 4000, track = 4000, unknown = 4000 }\n\nlocal ROAD_RANK = {\n motorway = 1, trunk = 2, primary = 3, secondary = 4, tertiary = 5,\n residential = 6, living_street = 7, unclassified = 8, pedestrian = 9,\n service = 10, track = 11, unknown = 12,\n}\nlocal MAJOR = { motorway = true, trunk = true, primary = true, secondary = true }\nlocal MAJOR_ONLY = { motorway = true, trunk = true } -- roads nobody lives \"on\"\n\n-- Place categories: which root makes a place civic, and how much a root or\n-- category counts when choosing a cell's main place and its salience.\nlocal CIVIC_ROOTS = {\n community_and_government = true, education = true, arts_and_entertainment = true,\n cultural_and_historic = true,\n}\nlocal ROOT_WEIGHT = {\n food_and_drink = 30, shopping = 25, arts_and_entertainment = 30, cultural_and_historic = 35,\n community_and_government = 20, education = 20, lodging = 15, sports_and_recreation = 15,\n lifestyle_services = 10, travel_and_transportation = 10, health_care = 5,\n services_and_business = 0,\n}\nlocal FAKE_LANDMARK_CATS = {\n monument = 60, landmark_and_historical_building = 60, museum = 50, history_museum = 50,\n art_museum = 50, town_hall = 50, stadium_arena = 40, historic_site = 35,\n performing_arts_venue = 30, theatre_venue = 25, library = 30, courthouse = 30,\n christian_place_of_worship = 25, roman_catholic_place_of_worship = 25, church_cathedral = 40,\n college_university = 20, park = 20, train_station = 30,\n}\n\n-- Civic places that may name a fake landmark: kinds people steer by (the ones\n-- above, places of worship, a few more), never offices, clubs, services or\n-- a person's listing (\"Chatterjee, Anshu\").\nlocal FAKE_LANDMARK_OK = { public_plaza = true, hospital = true, high_school = true, memorial_park = true }\n\nlocal function fake_landmark_worthy(p)\n local cat = p.cat or \"\"\n return (FAKE_LANDMARK_CATS[cat] or FAKE_LANDMARK_OK[cat] or cat:find(\"place_of_worship\", 1, true))\n and not p.name:find(\",\", 1, true)\nend\n\n-- Land use (subtype, or \"subtype/class\") -> type, and which wins when a cell\n-- sits inside several polygons (lower number wins).\nlocal LANDUSE = {\n park = \"park\", recreation = \"park\", horticulture = \"park\", golf = \"park\",\n managed = \"park\", winter_sports = \"park\", entertainment = \"civic\",\n pedestrian = \"plaza\", cemetery = \"cemetery\", residential = \"residential\",\n education = \"civic\", medical = \"civic\", religious = \"civic\", military = \"civic\",\n agriculture = \"field\", aquaculture = \"water\", campground = \"woods\", protected = \"woods\",\n construction = \"lot\", landfill = \"industrial\", resource_extraction = \"industrial\",\n transportation = \"lot\",\n [\"developed/retail\"] = \"commercial\", [\"developed/commercial\"] = \"commercial\",\n [\"developed/industrial\"] = \"industrial\", [\"developed/institutional\"] = \"civic\",\n [\"developed/brownfield\"] = \"lot\", developed = \"residential\",\n [\"recreation/stadium\"] = \"civic\",\n}\nlocal TYPE_PRIORITY = {\n plaza = 1, cemetery = 2, civic = 3, park = 4, commercial = 5, industrial = 6,\n lot = 7, woods = 8, field = 9, water = 10, residential = 11,\n}\nlocal LAND = { forest = \"woods\", wood = \"woods\", grass = \"field\", shrub = \"field\", scrub = \"field\",\n sand = \"field\", rock = \"field\", wetland = \"water\" }\nlocal COVER = { urban = \"residential\", forest = \"woods\", crop = \"field\", grass = \"field\",\n shrub = \"field\", barren = \"lot\", wetland = \"water\", mangrove = \"water\", moss = \"field\" }\n\n-- Land cover counts only with no street within this many cells (45 m).\nlocal COVER_STREET_GAP = 3\n\nlocal DIRECTIONAL = { \"North \", \"South \", \"East \", \"West \", \"N \", \"S \", \"E \", \"W \" }\n\n-- \"North 15th Street\" and \"South 15th Street\" are one street at an intersection.\nlocal function base_name(name)\n for _, d in ipairs(DIRECTIONAL) do\n if name:sub(1, #d) == d then return name:sub(#d + 1) end\n end\n return name\nend\n\n\nlocal function humanize(cat)\n return (cat or \"place\"):gsub(\"_\", \" \")\nend\n\n-- Plain words for places the data doesn't name: no invented names.\nlocal UNNAMED_CIVIC = {\n education = \"the school\", medical = \"the hospital\", religious = \"the church\",\n military = \"the base\", entertainment = \"the venue\",\n}\nlocal UNNAMED_SHOP = { \"a corner shop\", \"a small shop\", \"one of the storefronts\" }\n\n-- Buildings (the map's `building` kind: footprints that say what they are,\n-- never plain houses). A building over a cell's center types it like a\n-- land-use area: by its subtype, or a class that says more (a library\n-- is \"entertainment\" in the data). Sheds and housing say nothing.\nlocal BUILDING = {\n civic = \"civic\", education = \"civic\", medical = \"civic\", religious = \"civic\",\n military = \"civic\", transportation = \"civic\", entertainment = \"civic\",\n commercial = \"commercial\", service = \"commercial\", industrial = \"industrial\",\n}\nlocal BUILDING_CLASS = {\n retail = \"commercial\", office = \"commercial\", hotel = \"commercial\", commercial = \"commercial\",\n industrial = \"industrial\", warehouse = \"industrial\", factory = \"industrial\",\n library = \"civic\", museum = \"civic\", hospital = \"civic\", school = \"civic\", university = \"civic\",\n train_station = \"civic\", civic = \"civic\", government = \"civic\", church = \"civic\",\n}\n\nlocal function building_type(p)\n return BUILDING_CLASS[p.class or \"\"] or BUILDING[p.subtype or \"\"]\nend\n\nlocal function landuse_type(p)\n return LANDUSE[(p.subtype or \"\") .. \"/\" .. (p.class or \"\")] or LANDUSE[p.subtype or \"\"]\nend\n\n-- Rivers are named on their centerline only; the water around it (river\n-- shapes, and plain water shapes close by) takes the nearest one's name.\nlocal LEND_M = { river = 1500, water = 300 }\n\n-- English names rivers with \"the\" (the Schuylkill River), not lakes or ponds.\nlocal function river_name(name)\n return name:match(\"^[Tt]he \") and name or \"the \" .. name\nend\n\nlocal function lent_name(p, at)\n local reach = LEND_M[p.subtype or \"\"]\n local line = reach and at.near_point(\"water_line\", reach, function(l) return l.subtype == \"river\" end)\n return line and river_name(line.name)\nend\n\nlocal function water_word(p)\n local s = p.subtype or \"\"\n if s == \"stream\" or s == \"canal\" then return \"the creek\" end\n if s == \"river\" then return \"the river\" end\n if s == \"pond\" or s == \"lake\" then return \"the \" .. s end\n if s == \"reservoir\" then return \"the reservoir\" end\n if s == \"ocean\" then return \"the ocean\" end\n if s == \"sea\" or s == \"physical\" then return \"the sea\" end\n return \"the water\"\nend\n\n-- The sea and its parts (Natural Earth's marine areas: subtype \"sea\", or\n-- the map's own: \"physical\"): \"the North Sea\", \"the Gulf of Mexico\", but\n-- \"Delaware Bay\", \"Long Island Sound\".\nlocal THE_SEA = { ocean = true, sea = true, gulf = true, strait = true, channel = true, generic = true }\n\nlocal function sea_name(p)\n local name = p.name\n if name:match(\"^[Tt]he \") then return name end\n if THE_SEA[p.class or \"\"] or name:match(\"^%a+ of \") then return \"the \" .. name end\n return name\nend\n\n-- Landmarks (the map's `landmark` kind: points from Overture's\n-- infrastructure, tools/tiles.py): artwork, fountains, subway stations,\n-- towers. Class -> the kind the text and things go by (landmark_kind; the\n-- tag landmark:); cooling towers are left out (power plants). A\n-- cell's one is the first by this order, a named one before an unnamed.\nlocal LANDMARK_KIND = {\n subway_station = \"subway\", fountain = \"fountain\", artwork = \"artwork\", bell_tower = \"bell_tower\",\n minaret = \"minaret\", defensive = \"tower\", watchtower = \"tower\", observation = \"tower\",\n water_tower = \"water_tower\", communication_tower = \"mast\",\n}\nlocal LANDMARK_ORDER = { \"subway\", \"fountain\", \"artwork\", \"bell_tower\", \"minaret\", \"tower\", \"water_tower\", \"mast\" }\nlocal LANDMARK_RANK = {}\nfor i, k in ipairs(LANDMARK_ORDER) do LANDMARK_RANK[k] = i end\n\n-- A landmark's name as the text uses it: no \"(Philadelphia)\" after a\n-- mast's call sign, no \"Station\" after a station's (the text says so).\nlocal function landmark_name(kind, name)\n if not name or name == \"\" then return nil end\n name = name:gsub(\"%s*%b()%s*$\", \"\")\n if kind == \"subway\" then name = name:gsub(\"%s+[Ss]tation$\", \"\") end\n return name ~= \"\" and name or nil\nend\n\n-- Places within 2 cells that make a street with no land of its own shops.\nlocal STREET_SHOPS = 4\nlocal PLACES_REACH, PLACES_NEAR = 3, 3 -- (a cell with nothing mapped: so many places within so many cells make it theirs)\n\nlocal function classify(f, at)\n f.streets_n, f.places_n, f.interest = 0, 0, 0\n f.corner, f.bridge, f.major, f.bridge_over_water, f.fenced = false, false, false, false, false\n if not at.mapped then\n f.type = \"unmapped\"\n return\n end\n\n -- Gather what's here, in a fixed order.\n local roads, places, polys, water_lines, landmarks = {}, {}, {}, {}, {}\n for _, it in ipairs(at.items) do\n if it.kind == \"road\" then\n if (it.d or 0) <= (STREET_REACH_BY_CLASS[it.p.class] or STREET_REACH) then\n roads[#roads + 1] = it.p\n end\n elseif it.kind == \"place\" then places[#places + 1] = it.p\n elseif it.kind == \"landmark\" then\n local kind = LANDMARK_KIND[it.p.class or \"\"]\n if kind then landmarks[#landmarks + 1] = { kind = kind, name = landmark_name(kind, it.p.name) } end\n elseif it.kind == \"water\" and it.g == \"line\" then water_lines[#water_lines + 1] = it.p\n elseif it.g == \"poly\" then polys[#polys + 1] = it end\n end\n\n -- Streets: names in order of road importance, one per base name.\n table.sort(roads, function(a, b)\n local ra, rb = ROAD_RANK[a.class] or 99, ROAD_RANK[b.class] or 99\n if ra ~= rb then return ra < rb end\n return (a.name or \"\") < (b.name or \"\")\n end)\n local names, seen = {}, {}\n for _, p in ipairs(roads) do\n if p.name and not seen[base_name(p.name)] then\n seen[base_name(p.name)] = true\n names[#names + 1] = p.name\n end\n if MAJOR[p.class] then f.major = true end\n if p.bridge then f.bridge = true end\n end\n f.streets_n = #names\n\n -- Water here: a line through the cell or a polygon over its center.\n -- Natural Earth's seas (subtype \"sea\") are coarse, about a kilometer (its\n -- Delaware Bay runs up the river over Camden): they only name the map's\n -- own unnamed ocean, never make water of land.\n local water, sea\n if #water_lines > 0 then water = water_lines[1] end\n for _, it in ipairs(polys) do\n if it.kind == \"water\" then\n if it.p.subtype == \"sea\" then sea = sea or it.p\n elseif not water or (it.p.name and not water.name) then water = it.p end\n end\n end\n if sea and water and not water.name and water.subtype == \"ocean\" then water = sea end\n if water then\n local sea = water.subtype == \"sea\" or water.subtype == \"physical\"\n f.water = water.name and (water.subtype == \"river\" and river_name(water.name)\n or sea and sea_name(water) or water.name)\n or lent_name(water, at) or water_word(water)\n end\n\n -- On a named bridge (its outline from the map): the cell takes its name,\n -- even where the road on it is an unnamed motorway.\n for _, it in ipairs(polys) do\n if it.kind == \"bridge\" then f.bridge_name = it.p.name break end\n end\n\n -- Main place: highest confidence + category interest, then name.\n local best, best_score\n for _, p in ipairs(places) do\n local score = p.conf + (ROOT_WEIGHT[p.root] or 0) + (FAKE_LANDMARK_CATS[p.cat] or 0)\n if not best or score > best_score or (score == best_score and p.name < best.name) then\n best, best_score = p, score\n end\n end\n f.places_n = #places\n if best then\n f.place, f.shop = best.name, best.name\n f.place_kind = humanize(best.cat)\n f.interest = (FAKE_LANDMARK_CATS[best.cat] or 0) + (ROOT_WEIGHT[best.root] or 0) // 2\n end\n\n -- The cell's landmark: what the text says is here (by name, if it has\n -- one), and what things are found by it.\n table.sort(landmarks, function(a, b)\n if (a.name ~= nil) ~= (b.name ~= nil) then return a.name ~= nil end\n if a.kind ~= b.kind then return LANDMARK_RANK[a.kind] < LANDMARK_RANK[b.kind] end\n return (a.name or \"\") < (b.name or \"\")\n end)\n local landmark = landmarks[1]\n if landmark then\n f.landmark_kind, f.landmark = landmark.kind, landmark.name\n f.interest = f.interest + (landmark.name and 30 or 15)\n else\n -- None here: one next door is in sight (landmark_near), for the text\n -- only (its things are its own cell's). A point is in one 15 m cell,\n -- and a fountain or a statue is bigger than that.\n local p = at.nearest(\"landmark\", 1, function(p) return LANDMARK_KIND[p.class or \"\"] ~= nil end)\n if p then\n local kind = LANDMARK_KIND[p.class]\n f.landmark_kind, f.landmark, f.landmark_near = kind, landmark_name(kind, p.name), true\n end\n end\n\n -- Land use and land polygons over the center; land cover only if they\n -- say nothing, whatever order they came in.\n local land_type, land_name, land_subtype, cover_type, building_t\n for _, it in ipairs(polys) do\n local t\n if it.kind == \"building\" then\n local b = building_type(it.p)\n if b and (not building_t or TYPE_PRIORITY[b] < TYPE_PRIORITY[building_t]) then building_t = b end\n elseif it.kind == \"landuse\" then t = landuse_type(it.p)\n elseif it.kind == \"land\" then t = LAND[it.p.subtype or \"\"] or LAND[it.p.class or \"\"]\n elseif it.kind == \"cover\" then\n local c = COVER[it.p.subtype or \"\"]\n if c and (not cover_type or TYPE_PRIORITY[c] < TYPE_PRIORITY[cover_type]) then cover_type = c end\n end\n -- Lower priority number wins; on a tie, a named area beats an unnamed one.\n if t and (not land_type or TYPE_PRIORITY[t] < TYPE_PRIORITY[land_type]\n or (TYPE_PRIORITY[t] == TYPE_PRIORITY[land_type] and it.p.name and not land_name)) then\n land_type, land_name, land_subtype = t, it.p.name, it.p.subtype\n end\n end\n if not land_type and cover_type and at.count(\"road\", COVER_STREET_GAP, function(p) return p.class ~= \"track\" end) == 0 then\n land_type = cover_type\n end\n if land_type == \"industrial\" and cover_type == \"woods\" then\n land_type, land_name, f.fenced = \"woods\", nil, true\n end\n -- Under tree canopy but not woods (a leafy street, houses among old\n -- trees): not a type, but the text can say so.\n f.wooded = cover_type == \"woods\" and land_type ~= \"woods\"\n\n -- Decide. What the cell is under any street or trail through it (its\n -- land: water, a place, land use, else residential) is its type, and one\n -- of its tags (what things load for: core/borges/things.lua); the street\n -- or trail is the other tag, and its facts (the map draws it as a line,\n -- not as street cells). But a bridge: a cell of its own,\n -- type street (on its deck), its land water.\n local land\n if water then\n land = \"water\"\n elseif building_t and not (land_type == \"park\" or land_type == \"plaza\" or land_type == \"cemetery\") then\n land = building_t\n elseif best and not (land_type == \"park\" or land_type == \"plaza\" or land_type == \"cemetery\") then\n land = CIVIC_ROOTS[best.root] and \"civic\" or \"commercial\"\n else\n land = land_type or \"residential\"\n end\n local tracks = 0\n for _, p in ipairs(roads) do\n if p.class == \"track\" then tracks = tracks + 1 end\n end\n local way\n if #roads > 0 and tracks == #roads and not water and not f.bridge_name then\n way = \"trail\"\n f.street = names[1]\n if #names >= 2 then f.cross = names[2] end\n elseif #roads > 0 or f.bridge_name then -- inside a bridge's outline is on its deck\n way = \"street\"\n f.street = names[1] -- nil for an unnamed road: titles fall back to a plain label\n if #names >= 2 then\n f.corner = true\n f.cross = names[2]\n f.intersection = and_list(names)\n end\n if water or f.bridge_name then f.bridge = true end\n f.bridge_over_water = f.bridge and water ~= nil\n end\n -- Nothing mapped here, but places all round (PLACES_NEAR of them within\n -- PLACES_REACH cells): what most of them are, civic or commercial, not\n -- the houses a cell with nothing mapped is by default (else inside City\n -- Hall, offices all through it, all but the cells their points fell in\n -- would be houses). A corner shop alone doesn't spread; a\n -- building that says what it is has the last word.\n if not land_type and not building_t and not best and not water then\n local all = at.count(\"place\", PLACES_REACH)\n if all >= PLACES_NEAR then\n land = 2 * at.count(\"place\", PLACES_REACH, function(p) return CIVIC_ROOTS[p.root] end) >= all and \"civic\" or \"commercial\"\n end\n end\n -- A street's own land is seldom mapped (it's road): downtown, with\n -- places all around, it's shops, not the houses a cell with nothing\n -- mapped is by default.\n if way == \"street\" and not land_type and not building_t and not best and not water and at.count(\"place\", 2) >= STREET_SHOPS then\n land = \"commercial\"\n end\n if f.bridge then\n f.type = \"street\"\n else\n f.type = land\n if best and f.type ~= \"civic\" and f.type ~= \"commercial\" and f.type ~= \"water\" then\n -- A place inside a park or plaza is a feature of it, not its type.\n f.feature_place = best.name\n end\n end\n f.tags = way and { land, way } or { land }\n -- And its main place's category (a pizza place: place:pizza_restaurant),\n -- for things found at that kind of place (a slice at a pizza place).\n if best and best.cat and best.cat ~= \"\" then f.tags[#f.tags + 1] = \"place:\" .. best.cat end\n -- And its landmark's kind (coins by a fountain: landmark:fountain).\n if landmark then f.tags[#f.tags + 1] = \"landmark:\" .. landmark.kind end\n -- And its regions (the regional flavor rules it's in: region:us,\n -- region:pennsylvania, region:philly), for a load by region alone\n -- (core/borges/things.lua load_tags).\n if at.flavors then\n for _, name in ipairs(at.flavors()) do f.tags[#f.tags + 1] = \"region:\" .. name end\n end\n\n -- Names for natural and open spaces: real ones, or a plain description.\n if f.type == \"park\" then f.park = land_name or \"the green\" end\n if f.type == \"plaza\" then f.plaza = land_name or \"the plaza\" end\n if f.type == \"woods\" then f.woods = land_name or \"the woods\" end\n if f.type == \"cemetery\" then f.cemetery = land_name or \"the cemetery\" end\n if f.type == \"civic\" and not f.place then\n f.place = land_name or UNNAMED_CIVIC[land_subtype or \"\"] or \"a public building\"\n end\n if f.type == \"commercial\" and not f.shop then\n f.shop = land_name or UNNAMED_SHOP[at.roll % #UNNAMED_SHOP + 1]\n f.place = f.shop\n end\n\n -- Streets near non-street cells, for \"off Pine Street\" and the like: the\n -- nearest named street people live and shop on, not an expressway.\n if not f.street then\n local near = at.nearest(\"road\", 6, function(p) return p.name and not MAJOR_ONLY[p.class] end)\n if near then f.street = near.name end\n end\n\n -- Replace the noise guesses for density, wildness and wetness with what the\n -- map says, so the generic detail lines fit.\n f.dense = math.min(100, 20 + 2 * at.count(\"place\", 4) + 4 * at.count(\"road\", 3))\n -- From above, a city block is never mostly tree canopy: under forest\n -- cover it's a suburb, however many streets meet nearby.\n if f.wooded then f.dense = math.min(f.dense, 50) end\n local WILD = { woods = 85, park = 60, field = 55, water = 60, cemetery = 45 }\n f.wild = WILD[f.type] or math.min(f.wild, 35)\n if water or f.type == \"water\" then f.wet = math.max(f.wet, 80) end\n\n -- What would make this a fake landmark, if it is one.\n -- A business never names a fake landmark: real shop names stay out of the text.\n -- Fake landmarks take the names of bridges, civic places and named land (a park,\n -- a cemetery), never of a business.\n f.fake_landmark_name = f.bridge_name or (f.type == \"civic\" and best and fake_landmark_worthy(best) and f.place)\n or (land_name and land_type ~= \"residential\" and land_name) or nil\n if f.intersection and f.streets_n >= 3 then f.interest = f.interest + 25 end\n if f.bridge_name then f.interest = f.interest + 30 end\n if land_name and land_type ~= \"residential\" then f.interest = f.interest + 15 end\nend\n\nlocal TYPE_BONUS = {\n civic = 40, plaza = 40, commercial = 25, park = 25, water = 25, cemetery = 20,\n woods = 15, street = 10, industrial = 0, lot = 0, field = 0, residential = 0, unmapped = -100,\n}\n\n-- Code hooks for map games (examples/borges/game.yaml, games/roll_cool/game.yaml).\nreturn {\n classify = classify,\n salience_score = function(f, dist_from_center)\n return f.odd + (TYPE_BONUS[f.type] or 0) + 10 * math.min(f.places_n, 5)\n + f.interest - dist_from_center * 3\n end,\n}\n",},modules=A{{name="wardrobe",module="lib.modules.wardrobe",source="-- The wardrobe: wearables and words, for a game whose things have them\n-- (roll.cool: games/roll_cool/things.yaml `slots`, things with a `slot`\n-- and a `tier`, things with `word`; presents that hold one; what the\n-- shop sells). A module (docs/architecture.md, Modules): the manifest lists it\n-- (`modules: [wardrobe]`), and it registers with the engine:\n-- effects wear (a wearable onto its slot, in place of what's there,\n-- and which variant), take_off (off its slot), unwrap (a\n-- present: one of a kind, wearable or word, by its instance's\n-- hash, into a container and a collection), describe (a word\n-- you go by: on, or off if it was)\n-- player worn (slot -> what's worn), worn_v (slot -> \"number/variant\"),\n-- words (the words you go by, in order); origins (an old\n-- save's: dropped as it loads)\n-- provides \"wardrobe\": gifts, wearables and words by tier (kind ->\n-- tier -> ids, by number): what a present picks from, and the\n-- shop's daily stock\n-- effects: wear, take_off, unwrap, describe\n-- words: inside\n-- fields: slot, tier, word, skill\n\nlocal json = require \"borges.json\"\n\nlocal things = require \"borges.things\"\nlocal TIERS, fill = things.TIERS, things.fill\n\n-- What a present or the shop hands out, by kind: a wearable (a thing with\n-- a slot) or a word (one for yourself, shown with your name: `word`).\n-- Those every player has (`always`) aren't handed out.\nlocal function is_kind(th, kind)\n if th.always then return false end\n if kind == \"wearable\" then return th.slot ~= nil end\n if kind == \"word\" then return th.word == true end\n return false\nend\n\nreturn function(reg)\n local th = reg.things or error(\"the wardrobe needs things\", 0)\n local def = th.def\n\n -- Its config: the things file's slots (where a wearable is worn: head,\n -- torso...); its things' (a wearable: a slot, a tier, how rare it is to\n -- come by, or shop: only the shop sells it; a word: word, and a tier\n -- unless every player has it, `always`; skill: what wearing it does,\n -- the page's: sort, magnet, at a level), neither found lying around (in\n -- no pool); and its effects' (their lines are the bundler's): unwrap's\n -- {tiers: {tier: odds}, give: {wearable or word: {odds, into, record,\n -- says}}}, describe's {max}.\n reg.check(function()\n local tiers, gives = {}, { wearable = true, word = true }\n for _, t in ipairs(TIERS) do tiers[t] = true end\n local slots, ok = {}, type(def.slots or {}) == \"table\"\n for _, x in ipairs(ok and def.slots or {}) do\n ok = ok and type(x) == \"string\" and x:match(\"^[a-z][a-z0-9_]*$\") and not slots[x]\n slots[x] = true\n end\n if not ok then error(\"slots: a list of names (head, torso, ...)\", 0) end\n local pooled = {}\n local function pool(v)\n if type(v) == \"string\" then pooled[v] = true end\n if type(v) == \"table\" then for _, x in pairs(v) do pool(x) end end\n end\n for _, l in ipairs(def.loads or {}) do pool(l.pools) end\n for id, t in pairs(def.things) do\n local w = \"things.\" .. id\n if t.word ~= nil and type(t.word) ~= \"boolean\" then error(w .. \".word: true or false\", 0) end\n if t.slot ~= nil or t.word then\n if t.slot ~= nil and not slots[t.slot] then error(w .. \".slot: one of the slots\", 0) end\n if not (tiers[t.tier] or t.tier == \"shop\" or (t.word and t.always and t.tier == nil)) then\n error(w .. \".tier: its tier: \" .. table.concat(TIERS, \", \") .. \" or shop (an `always` word has none)\", 0)\n end\n if pooled[id] then error(w .. \": a wearable isn't found lying around (no pools)\", 0) end\n elseif t.tier ~= nil then\n error(w .. \".tier: only a wearable has a tier of its own (a thing's is its pool's)\", 0)\n end\n ok = t.skill == nil or (t.slot ~= nil and type(t.skill) == \"table\")\n for k, v in pairs(ok and t.skill or {}) do\n ok = ok and type(k) == \"string\" and k:match(\"^[a-z][a-z0-9_]*$\") and things.whole(v, 1, 10)\n end\n if not ok then error(w .. \".skill: a wearable's {skill: level (1 to 10)}\", 0) end\n end\n things.each_verb(def, function(where, v)\n for i, e in ipairs(v.effects or {}) do\n local w = where .. \".effects[\" .. i .. \"]\"\n local u = type(e) == \"table\" and e.unwrap\n if u then\n w = w .. \".unwrap\"\n if type(u) ~= \"table\" or #things.unknown_keys(u, { give = true, tiers = true }) > 0 or not (u.give and u.tiers) then\n error(w .. \": {tiers: {tier: odds}, give: {wearable or word: {odds, into, record, says}}}\", 0)\n end\n local ok = type(u.tiers) == \"table\" and next(u.tiers) ~= nil\n for t, n in pairs(ok and u.tiers or {}) do\n if not (tiers[t] and things.whole(n, 0, math.maxinteger)) then ok = false end\n end\n if not ok then error(w .. \".tiers: whole-number odds per tier (\" .. table.concat(TIERS, \", \") .. \")\", 0) end\n if type(u.give) ~= \"table\" or next(u.give) == nil or #things.unknown_keys(u.give, gives) > 0 then\n error(w .. \".give: what it may hold (wearable, word): {odds, into, record, says}\", 0)\n end\n for kind, g in pairs(u.give) do\n local gw = w .. \".give.\" .. kind\n if type(g) ~= \"table\" or #things.unknown_keys(g, { odds = true, into = true, record = true, says = true }) > 0\n or g.odds == nil or g.into == nil then\n error(gw .. \": {odds, into: a container, record: a collection (or none), says: what says (or its name)}\", 0)\n end\n if not things.whole(g.odds, 1, math.maxinteger) then error(gw .. \".odds: whole-number odds, above 0\", 0) end\n things.check_into(gw, g, def)\n end\n end\n local d = type(e) == \"table\" and e.describe\n if d and not (type(d) == \"table\" and #things.unknown_keys(d, { max = true }) == 0 and things.whole(d.max, 1, 10)) then\n error(w .. \".describe: {max: how many words at once, 1 to 10}\", 0)\n end\n end\n end)\n end)\n\n -- Wearables and words by tier (gifts: kind -> tier -> ids), in a fixed\n -- order (their numbers). A retired one isn't handed out (whoever has one\n -- keeps it).\n local by_num = things.by_num(def)\n local gifts = { wearable = {}, word = {} }\n for id, t in pairs(def.things) do\n local kind = t.slot and gifts.wearable or t.word and gifts.word\n if kind and not t.always and not t.retired then\n kind[t.tier] = kind[t.tier] or {}\n table.insert(kind[t.tier], id)\n end\n end\n for _, kind in pairs(gifts) do\n for _, list in pairs(kind) do table.sort(list, by_num) end\n end\n reg.provide(\"wardrobe\", { gifts = gifts })\n -- A present's collections hold any of its kinds (things.kinds: what a\n -- full collection holds).\n local function records(v)\n for _, e in ipairs(type(v) == \"table\" and v.effects or {}) do\n for kind, g in pairs(type(e) == \"table\" and e.unwrap and e.unwrap.give or {}) do\n for wid, w in pairs(def.things) do\n if g.record and is_kind(w, kind) then th.kinds[g.record][wid] = true end\n end\n end\n end\n end\n for _, v in pairs(def.verbs or {}) do records(v) end\n for _, t in pairs(def.things) do\n for vname, v in pairs(t.verbs or {}) do records(v == \"global\" and def.verbs[vname] or v) end\n end\n\n -- What a present (its instance `uid`) holds, by its `unwrap`: which kind\n -- (give: { wearable = { odds, into, record }, word = ... }) by the kinds'\n -- odds, a tier by `tiers` ({ common = 60, ... }), then one of that kind\n -- and tier, all by the hash (the server's replay agrees). A word you have\n -- already isn't given again; a tier with nothing to give, the next one\n -- down; a kind with nothing at all, the next kind. -> its id and kind, or\n -- nil if there's nothing to give.\n local hash = require \"borges.hash\"\n local function gift_of(p, uid, unwrap)\n local kinds, total = {}, 0\n for kind, g in pairs(unwrap.give) do kinds[#kinds + 1] = kind; total = total + g.odds end\n table.sort(kinds)\n local roll, first = hash.below(math.max(total, 1), th.seed, \"present kind\", uid), 1\n for i, kind in ipairs(kinds) do\n roll = roll - unwrap.give[kind].odds\n if roll < 0 then first = i break end\n end\n local tiers, sum = unwrap.tiers, 0\n for _, t in ipairs(TIERS) do sum = sum + (tiers[t] or 0) end\n local tier = 1\n roll = hash.below(math.max(sum, 1), th.seed, \"present tier\", uid)\n for i, t in ipairs(TIERS) do\n roll = roll - (tiers[t] or 0)\n if roll < 0 then tier = i break end\n end\n for k = 0, #kinds - 1 do\n local kind = kinds[(first - 1 + k) % #kinds + 1]\n for i = tier, 1, -1 do\n local list = {}\n for _, id in ipairs(gifts[kind][TIERS[i]] or {}) do\n if kind ~= \"word\" or not th:has(p, id) then list[#list + 1] = id end\n end\n if #list > 0 then return list[hash.below(#list, th.seed, \"present\", uid) + 1], kind end\n end\n end\n return nil\n end\n\n reg.effect(\"wear\", function(c) -- a wearable onto its slot, in place of what was there, and which variant\n local p, thing = c.p, c.thing\n local slot = def.things[thing.id].slot\n p.worn = p.worn or {}\n p.worn[slot] = thing.id\n local v = th:variant_of(thing.id, thing.uid)\n p.worn_v = p.worn_v or {}\n p.worn_v[slot] = v and th:num_of(thing.id) .. \"/\" .. v.key or nil\n if next(p.worn_v) == nil then p.worn_v = nil end\n end)\n reg.effect(\"take_off\", function(c) -- off its slot, if it's what's there\n local p, slot = c.p, def.things[c.thing.id].slot\n if p.worn and p.worn[slot] == c.thing.id then\n p.worn[slot] = nil\n if p.worn_v then p.worn_v[slot] = nil end\n end\n if p.worn and next(p.worn) == nil then p.worn = nil end\n if p.worn_v and next(p.worn_v) == nil then p.worn_v = nil end\n end)\n reg.effect(\"unwrap\", function(c, unwrap) -- a present: a wearable or a word, by its instance's hash\n local p, thing = c.p, c.thing\n local id, kind = gift_of(p, thing.uid, unwrap)\n if not id then return end\n -- Its own uid (the present's): which of its variants it is (a navy\n -- beanie), by that uid's hash.\n local g, wuid = unwrap.give[kind], \"w:\" .. thing.uid\n th:give(p, id, wuid, g.into, g.record, c.now)\n local name = th:name_of(id, wuid)\n c.inside = g.says and fill(g.says, { thing = name }) or name\n end)\n reg.effect(\"describe\", function(c, d) -- a word you go by: on, or off if it was (the oldest goes past `max`)\n local p, id = c.p, c.thing.id\n p.words = p.words or json.array()\n local at\n for i, w in ipairs(p.words) do if w == id then at = i end end\n if at then table.remove(p.words, at) else table.insert(p.words, id) end\n while #p.words > d.max do table.remove(p.words, 1) end\n if #p.words == 0 then p.words = nil end\n end)\n\n -- The player's fields: loaded from a save (things this version doesn't\n -- know kept aside, as every field is: `keep`), and saved by number.\n reg.player(\"worn\", {\n load = function(s, data, p, keep) -- slot -> a wearable this version knows (else kept as it was)\n for slot, k in pairs(type(data.worn) == \"table\" and data.worn or {}) do\n local id = type(slot) == \"string\" and th:id_of(k)\n if id and def.things[id].slot == slot then\n p.worn = p.worn or {}\n p.worn[slot] = id\n elseif type(slot) == \"string\" then\n keep.worn = keep.worn or {}\n keep.worn[slot] = k\n end\n end\n end,\n save = function(s, p, out)\n if not p.worn then return end\n out.worn = {}\n for slot, id in pairs(p.worn) do out.worn[slot] = th:num_of(id) end\n end,\n })\n reg.player(\"worn_v\", {\n -- Which variant of what's worn: slot -> \"number/variant key\" (a thing\n -- number other than what's worn there: stale, an engine from before it\n -- changed what's worn).\n load = function(s, data, p)\n for slot, v in pairs(type(data.worn_v) == \"table\" and data.worn_v or {}) do\n if type(slot) == \"string\" and type(v) == \"string\" and v:match(\"^%d+/[%w_]+$\") then\n p.worn_v = p.worn_v or {}\n p.worn_v[slot] = v\n end\n end\n end,\n })\n reg.player(\"words\", {\n load = function(s, data, p, keep) -- words this version knows (else kept as they were)\n for _, k in ipairs(type(data.words) == \"table\" and data.words or {}) do\n local id = th:id_of(k)\n local into = id and def.things[id].word and p or keep\n into.words = into.words or json.array()\n table.insert(into.words, into == p and id or k)\n end\n end,\n save = function(s, p, out)\n if not p.words then return end\n out.words = json.array()\n for i, id in ipairs(p.words) do out.words[i] = th:num_of(id) end\n end,\n })\n reg.player(\"origins\", {\n -- Where what you held came from (a present opened: its cell and the\n -- moment), in a save from before 2026-10-24: not kept (privacy), so\n -- dropped as it loads (known here, so it isn't carried along). A shim:\n -- tests/shims.py.\n load = function() end,\n })\nend\n",},{name="shop",module="lib.modules.shop",source="-- The shop: what a currency buys (roll.cool: stardust, from stars, first\n-- finds and won requests; games/roll_cool/things.yaml `shop`). A module\n-- (docs/architecture.md, Modules): the manifest lists it (`modules: [wardrobe,\n-- shop]`: its daily stock is the wardrobe's wearables and words), and it\n-- registers with the engine:\n-- action shop: what's for sale now, and what you have to spend\n-- ({ type = \"shop\" }: { items, pay, purse, free })\n-- act verb \"buy\" on a uid \"shop:\" and the day and the thing's\n-- number (an item's, as the action lists them)\n-- player shopped: how many things you've bought (each one's instance);\n-- levels: what you have at a level above the first (a thing's\n-- number -> its level)\n-- The things file's `shop`: pay (the currency), text (what buying says),\n-- upgraded (what a level up says), always ({thing: {price, into, record,\n-- then, once, levels}}: in stock every day; levels: the price of each\n-- level after the first, bought one at a time, once you have it),\n-- daily ([{what: wearable or word, count, into, record, prices: {tier:\n-- price}}]: a different few each day, where you are, the same for everyone\n-- there).\n-- words: level\n\nlocal json = require \"borges.json\"\nlocal hash = require \"borges.hash\"\n\nlocal SHOP = \"shop:\"\nlocal things = require \"borges.things\"\nlocal TIERS, fill = things.TIERS, things.fill\n\n-- The things file's shop, as the bundler leaves it (`always` a list; its\n-- lines checked there): what each key may be. Errors as a check does.\nlocal function check(shop, def)\n local where, whole, unknown = \"shop\", things.whole, things.unknown_keys\n local price = function(v) return whole(v, 1, math.maxinteger) end\n if #unknown(shop, { pay = true, text = true, upgraded = true, always = true, daily = true }) > 0\n or shop.pay == nil or shop.text == nil then\n error(where .. \": pay (a currency), text, upgraded, always and daily\", 0)\n end\n if not (type(shop.pay) == \"string\" and shop.pay:match(\"^[a-z][a-z0-9_]*$\")) then\n error(where .. \".pay: a currency's name\", 0)\n end\n for _, a in ipairs(shop.always) do\n local aw = where .. \".always.\" .. tostring(a.thing)\n local t = def.things[a.thing]\n if not t then error(aw .. \": no such thing\", 0) end\n if #unknown(a, { thing = true, price = true, into = true, record = true, [\"then\"] = true, once = true, levels = true }) > 0\n or a.price == nil or (a.into ~= nil) == (a[\"then\"] ~= nil) then\n error(aw .. \": {price, into: a container (and record: a collection), or then: a verb of its own done to it, once}\", 0)\n end\n if not price(a.price) then error(aw .. \".price: a whole number, above 0\", 0) end\n if a.into ~= nil then things.check_into(aw, a, def)\n elseif not (t.verbs or {})[a[\"then\"]] then error(aw .. \".then: one of the thing's verbs\", 0) end\n if a.once ~= nil and type(a.once) ~= \"boolean\" then error(aw .. \".once: true or false: only one each\", 0) end\n if a.levels ~= nil then\n local ok = type(a.levels) == \"table\" and #a.levels >= 1 and #a.levels <= 20 and a.into ~= nil\n for _, v in ipairs(ok and a.levels or {}) do ok = ok and price(v) end\n if not ok then error(aw .. \".levels: the price of each level after the first (1 to 20 of them), for a thing kept\", 0) end\n if shop.upgraded == nil then error(where .. \".upgraded: what a level up says, with levels to buy\", 0) end\n end\n end\n if type(shop.daily) ~= \"table\" then error(where .. \".daily: a list of {what, count, into, record, prices}\", 0) end\n local tiers = {}\n for _, t in ipairs(TIERS) do tiers[t] = true end\n for i, d in ipairs(shop.daily) do\n local dw = where .. \".daily[\" .. i .. \"]\"\n if type(d) ~= \"table\" or #unknown(d, { what = true, count = true, into = true, record = true, prices = true }) > 0\n or d.what == nil or d.count == nil or d.into == nil or d.prices == nil then\n error(dw .. \": {what, count, into, record, prices}\", 0)\n end\n if d.what ~= \"wearable\" and d.what ~= \"word\" then error(dw .. \".what: one of wearable, word\", 0) end\n if not whole(d.count, 1, 20) then error(dw .. \".count: how many a day, 1 to 20\", 0) end\n things.check_into(dw, d, def)\n local ok = type(d.prices) == \"table\" and next(d.prices) ~= nil\n for t, v in pairs(ok and d.prices or {}) do ok = ok and tiers[t] and price(v) end\n if not ok then error(dw .. \".prices: tier: price (\" .. table.concat(TIERS, \", \") .. \")\", 0) end\n end\nend\n\nreturn function(reg)\n local th = reg.things or error(\"the shop needs things\", 0)\n -- (Its daily stock is the wardrobe's wearables and words, by tier.)\n local wardrobe = #((th.def.shop or {}).daily or {}) > 0 and reg.need(\"wardrobe\")\n reg.check(function() if th.def.shop then check(th.def.shop, th.def) end end)\n\n -- What's for sale at `now`, for the currency `pay`: { { uid, id, name,\n -- price, have, today }, ... }, its `always` things, then each `daily`\n -- line's `count` of a kind (wearable, word) at its tier's price, a\n -- different few each day (the day where you are: the same for everyone\n -- there), by the hash. `have`: one you can have only once (`once`, and\n -- any word) that you have. A thing with `levels`, once yours: its next\n -- level for sale (`level`: yours, `up`: the next, at its price), else\n -- (`level`: the top) had. A uid is the day and the thing's number:\n -- yesterday's isn't for sale today. nil: no shop.\n local function stock(p, now)\n local shop = th.def.shop\n if not shop then return nil end\n local day = th:day(now)\n local out = json.array()\n local function add(id, price, line, today)\n local once = line.once or line.levels or th.def.things[id].word\n local have, level, up = once and th:has(p, id) or nil, nil, nil\n if line.levels and have then\n level = (p.levels or {})[id] or 1\n if level <= #line.levels then price, up, have = line.levels[level], level + 1, nil end\n end\n out[#out + 1] = { uid = SHOP .. day .. \":\" .. th:num_of(id), id = id, name = th.def.things[id].name,\n price = price, have = have, level = level, up = up, top = line.levels and #line.levels + 1 or nil,\n today = today, _line = line }\n end\n for _, line in ipairs(shop.always or {}) do add(line.thing, line.price, line) end\n local gifts = wardrobe and wardrobe.gifts or {}\n for i, line in ipairs(shop.daily or {}) do\n local list = {}\n for _, t in ipairs(TIERS) do\n for _, id in ipairs(line.prices[t] and (gifts[line.what] or {})[t] or {}) do list[#list + 1] = { id = id } end\n end\n table.sort(list, function(a, b) -- (a fixed order: by number)\n return (th.def.things[a.id].num or 0) < (th.def.things[b.id].num or 0)\n end)\n for k = 1, math.min(line.count, #list) do -- (a shuffle's first few)\n local j = k + hash.below(#list - k + 1, th.seed, \"shop\", day, i, k)\n list[k], list[j] = list[j], list[k]\n add(list[k].id, line.prices[th.def.things[list[k].id].tier], line, true)\n end\n end\n return out\n end\n\n -- Buying `uid` (stock's) at `now`: the last star's pay first\n -- (Things:settle), then its price from the purse (free for a dev\n -- account), and it's yours: into the line's container and collection, or\n -- `then` a verb of its own done to it at once (a present: opened as you\n -- buy it). Each thing bought is an instance of its own (buy:1, buy:2...:\n -- how many you've bought), so which variant it is, or what a present\n -- holds, is the hash's. A level up (`up`): the thing's level, and\n -- nothing new. -> ok, text.\n local function buy(self, p, verb, uid, place, q, r, now)\n local shop, item = self.def.shop, nil\n for _, x in ipairs(stock(p, now) or {}) do if x.uid == uid then item = x end end\n if not item then return false, \"That's not in the shop today.\" end\n if item.have then return false, fill(\"You have already.\", self:words(item.id)) end\n self:settle(p, now)\n local price = self.dev and 0 or item.price\n local have = (p.purse or {})[shop.pay] or 0\n if have < price then\n return false, \"Not enough \" .. shop.pay .. \": \" .. item.name .. \" is \" .. price .. \", you have \" .. have .. \".\"\n end\n if price > 0 then\n p.purse[shop.pay] = have - price\n if p.purse[shop.pay] == 0 then p.purse[shop.pay] = nil end\n if next(p.purse) == nil then p.purse = nil end\n end\n if item.up then\n p.levels = p.levels or {}\n p.levels[item.id] = item.up\n local words = self:words(item.id)\n words.level = tostring(item.up)\n return true, fill(shop.upgraded, words)\n end\n p.shopped = (p.shopped or 0) + 1\n local line, mine = item._line, \"buy:\" .. p.shopped\n local text = fill(shop.text, self:words(item.id, \"buy\", p, now, mine))\n if line[\"then\"] then\n local ok, more = self:act_on(p, line[\"then\"], { uid = mine, id = item.id, at = \"room\", _remove = function() end },\n mine, place, q, r, now)\n if ok and more ~= \"\" then text = more end\n else\n self:give(p, item.id, mine, line.into, line.record, now)\n end\n return true, text\n end\n\n reg.prefix(\"buy\", SHOP, buy)\n reg.player(\"shopped\", {\n load = function(s, data, p) -- how many things you've bought (each one's instance)\n if math.tointeger(data.shopped) and data.shopped > 0 then p.shopped = math.tointeger(data.shopped) end\n end,\n })\n reg.player(\"levels\", {\n load = function(s, data, p, keep) -- a thing's number -> its level (2 or more), for what this version knows\n for k, n in pairs(type(data.levels) == \"table\" and data.levels or {}) do\n local id = th:id_of(k)\n if id and math.tointeger(n) and n > 1 then\n p.levels = p.levels or {}\n p.levels[id] = math.tointeger(n)\n elseif not id then -- (a newer version's thing)\n keep.levels = keep.levels or {}\n keep.levels[k] = n\n end\n end\n end,\n save = function(s, p, out)\n if not p.levels then return end\n out.levels = {}\n for id, n in pairs(p.levels) do out.levels[tostring(th:num_of(id))] = n end\n end,\n })\n -- What's for sale now, and what you have to spend (Things:purse: with\n -- the last star's pay, if it hasn't been paid yet). Buying is an act:\n -- { type = \"act\", verb = \"buy\", thing = an item's uid }.\n reg.action(\"shop\", function(session, a, now)\n local s = session.things -- (the session's: its dev flag)\n local items = stock(session.player, now) or error(\"this game has no shop\", 0)\n for _, x in ipairs(items) do x._line = nil end\n return { { type = \"shop\", items = items, pay = th.def.shop.pay, purse = s:purse(session.player, now),\n free = s.dev or nil } }\n end)\nend\n",},{name="ball",module="lib.modules.ball",source="-- The ball: rolling things up, as in Katamari (roll.cool; games/roll_cool/\n-- things.yaml `ball`: {start, star}, every thing's `size`, `parts`). A\n-- module (docs/architecture.md, Modules): the manifest lists it (`modules:\n-- [..., ball]`), and it registers with the engine:\n-- effect grow: the thing's volume (its size cubed) onto today's ball;\n-- the ball's size is the cube root, so each thing adds less\n-- the bigger you are\n-- rule fits: the thing is at most so many percent of your ball\n-- (`fits: 50`); a rule with `bonk` ({chance, knock, into,\n-- text}) knocks things loose when it fails. A thing a fits rule\n-- refuses is marked `too_big` in a room\n-- action ball: what's in today's ball, per kind and per part\n-- player ball ({ v, day, zone, ends, got, recent }), best (the biggest\n-- star, mm), star ({ day, paid }: what the last star paid);\n-- with a cube (ball.cube), cube, cube_best and cube_star too\n-- roll size the ball's size, what a banded load rolls for (Things:loaded)\n-- stats ball, ball_text, best, best_text, top_part ({ label, pct }:\n-- what most of today's ball is, by count), ends (when today ends:\n-- the ball becomes a star), last_star ({ ball = { day, pay } }:\n-- each shape's last star and what it pays)\n-- words in a line: its size now\n-- purse a ball from an earlier day pays for its star, so much per\n-- doubling of the ball from its start (ball.star), with the\n-- next act (settle) and counted before (owed)\n-- provides \"ball\": shape(s) (the session's: BALL or CUBE, its fields'\n-- names), size(s, p, now) (today's, mm), halve(s, p, now, ...)\n-- (Things:ball_halve), for a module listed after it\n-- A day is the player's local one (Things:day); a ball from an earlier\n-- day has become a star. Whole numbers only, so every host agrees.\n--\n-- Two shapes (ball.cube: true; roll.cool's): walking, a ball; by keys, a\n-- cube (that becomes a planet), each its own: its day's size, its best,\n-- what its last star paid, and its own boards (go/server/mod_ball.go). An act grows the\n-- one for how it was made (the session's input: Things:session); both\n-- pay at their day's end, whichever way you move then. Without it, one\n-- ball for both.\n-- effects: grow\n-- rules: fits\n-- words: loose\n\nlocal json = require \"borges.json\"\nlocal hash = require \"borges.hash\"\nlocal things = require \"borges.things\"\nlocal whole = things.whole\n\nlocal RECENT = 10 -- a ball's latest adds it keeps (what a bonk can knock off)\nlocal cube_root, size_text, LOOSE = things.cube_root, things.size_text, things.LOOSE\n-- Each shape's fields on the player: today's, the best, what its last star paid.\nlocal BALL = { name = \"ball\", ball = \"ball\", best = \"best\", star = \"star\" }\nlocal CUBE = { name = \"cube\", ball = \"cube\", best = \"cube_best\", star = \"cube_star\" }\n\nreturn function(reg)\n local th = reg.things or error(\"the ball needs things\", 0)\n local def = th.def\n -- Its config: the things file's ball, and every fits rule (its bonk's\n -- text is the bundler's: a line).\n reg.check(function()\n local b = def.ball\n if not (b and math.tointeger(b.start)) then error(\"the ball module needs the things file's ball: {start}\", 0) end\n for k in pairs(b) do\n if k ~= \"start\" and k ~= \"star\" and k ~= \"cube\" then error(\"ball: unknown key \" .. k .. \" (start, star, cube)\", 0) end\n end\n if b.cube ~= nil and type(b.cube) ~= \"boolean\" then error(\"ball.cube: true or false\", 0) end\n -- What a star pays: per currency, so much per doubling of the ball.\n for cur, n in pairs(b.star or {}) do\n if not (type(cur) == \"string\" and cur:match(\"^[a-z][a-z0-9_]*$\") and whole(n, 1, 1000)) then\n error(\"ball.star: currency: how much per doubling of the ball (a whole number, 1 to 1000)\", 0)\n end\n end\n things.each_verb(def, function(where, v)\n for i, r in ipairs(v.rules or {}) do\n local w = where .. \".rules[\" .. i .. \"]\"\n if r.bonk ~= nil and r.fits == nil then error(w .. \".bonk: only a fits rule bonks\", 0) end\n if r.fits ~= nil then\n if not whole(r.fits, 1, 1000) then error(w .. \": fits is a whole percent of your ball, 1 to 1000\", 0) end\n for k in pairs(r) do\n if k ~= \"fits\" and k ~= \"fail\" and k ~= \"bonk\" then error(w .. \": unknown key \" .. k, 0) end\n end\n end\n -- Bumping into something too big knocks things off the ball (Things:bonk).\n local bonk, bw = r.bonk, w .. \".bonk\"\n if bonk ~= nil then\n local n = 0\n for _ in pairs(type(bonk) == \"table\" and bonk or {}) do n = n + 1 end\n if not (n == 4 and bonk.chance and bonk.knock and bonk.into and bonk.text) then\n error(bw .. \": {chance: percent of hits, knock: at most how many come off, into: a place container, text}\", 0)\n end\n if not whole(bonk.chance, 1, 100) then error(bw .. \".chance: a whole percent, 1 to 100\", 0) end\n if not whole(bonk.knock, 1, 10) then error(bw .. \".knock: a whole number, 1 to 10\", 0) end\n if not ((def.containers or {})[bonk.into] or {}).place then\n error(bw .. \".into: a container that's a place (place: true): what comes off lands in the cell\", 0)\n end\n end\n end\n end)\n end)\n local start = def.ball.start\n\n -- The shape this session grows: by keys, the cube (a game with one).\n function th:shape() return def.ball.cube and self.input == \"keys\" and CUBE or BALL end\n local function shapes() return def.ball.cube and { BALL, CUBE } or { BALL } end\n\n -- Whether ball b's day is over at `now`: at its own end (b.ends:\n -- midnight where it last grew), wherever you are now. So a trip doesn't\n -- end it early, and once over it stays over (else flying east past\n -- midnight and back would make a star, then take it back with its\n -- stardust).\n -- (A ball from before balls kept their end: by the day where you are.\n -- A shim: tests/shims.py.)\n function th:ball_over(b, now)\n if math.tointeger(b.ends) then return now >= b.ends end\n return b.day < (self:day(now))\n end\n\n -- Today's ball at `now`, { v, day, zone, ends }: a fresh one if the saved\n -- one's day is over (p is left as it is), its day a day after that one's\n -- at least (never the same day twice: west over a day line). (f: a\n -- shape's fields; the session's shape by default.)\n function th:ball_at(p, now, f)\n f = f or self:shape()\n local b = p[f.ball]\n if b and not self:ball_over(b, now) then return b end\n local day, zone, ends = self:day(now)\n local d = b and math.max(day, b.day + 1) or day\n return { v = start * start * start, day = d, zone = zone, ends = ends + (d - day) * 86400 }\n end\n\n -- The ball's size (mm) at `now`.\n function th:ball_size(p, now) return cube_root(self:ball_at(p, now).v) end\n\n -- What's in a ball (`got`: { id = n }): { count, things = { { id, num,\n -- name, n, size_text, part }, ... } (most first, then biggest), parts =\n -- { { id, label, n }, ... } (most first; games with parts) }; with `day`\n -- (a star's), a thing first found that day (a collection's entry dated\n -- it) is `first`.\n function th:contents_of(got, p, day)\n local list, by_part, count = json.array(), {}, 0\n for id, n in pairs(got) do\n local t = def.things[id]\n local first\n if day then\n for _, name in ipairs(self:collection_names()) do\n local e = (((p or {}).collections or {})[name] or {})[id]\n if e and e.day == day then first = true end\n end\n end\n list[#list + 1] = { id = id, num = self:num_of(id), name = t.name, n = n, size = t.size,\n size_text = size_text(t.size), part = t.part, first = first }\n count = count + n\n if t.part then by_part[t.part] = (by_part[t.part] or 0) + n end\n end\n table.sort(list, function(a, b)\n if a.n ~= b.n then return a.n > b.n end\n if a.size ~= b.size then return a.size > b.size end\n return a.id < b.id\n end)\n local parts = json.array()\n for id, n in pairs(by_part) do parts[#parts + 1] = { id = id, label = def.parts[id], n = n } end\n table.sort(parts, function(a, b)\n if a.n ~= b.n then return a.n > b.n end\n return a.id < b.id\n end)\n return { count = count, things = list, parts = parts }\n end\n\n -- The biggest star so far at `now`, counting a ball from an earlier day.\n function th:best(p, now, f)\n f = f or self:shape()\n local best, b = p[f.best] or 0, p[f.ball]\n if b and self:ball_over(b, now) then best = math.max(best, cube_root(b.v)) end\n return best\n end\n\n -- What a star pays (ball.star: per currency, so much per doubling of the\n -- ball from its start; a part of one, its part): { [currency] = n }, nil\n -- for none.\n function th:star_pay(b)\n local star = def.ball.star\n if not (star and b) then return nil end\n local size = cube_root(b.v)\n local out\n for what, per in pairs(star) do\n local n, lo = 0, start\n while lo * 2 <= size do lo, n = lo * 2, n + 1 end\n local pay = size > start and per * n + per * (size - lo) // lo or 0\n if pay > 0 then out = out or {}; out[what] = pay end\n end\n return out\n end\n\n -- What a ball's star has paid so far (p.star, if it's that ball's day's).\n local function paid_for(p, b, f)\n local st = p[f.star]\n return st and st.day == b.day and st.paid or 0\n end\n\n -- A ball from an earlier day pays for its star into the purse (once: a\n -- late act that grew it since pays the rest, as p.star says what it has).\n -- -> what it paid now ({ [currency] = n }), or nil.\n function th:settle_star(p, now, f)\n f = f or self:shape()\n local b = p[f.ball]\n if not (b and self:ball_over(b, now)) then return nil end\n local due, got, was = self:star_pay(b), nil, paid_for(p, b, f)\n for what, n in pairs(due or {}) do\n if n > was then\n p.purse = p.purse or {}\n p.purse[what] = (p.purse[what] or 0) + n - was\n got = got or {}\n got[what] = n - was\n end\n p[f.star] = { day = b.day, paid = math.max(was, n) }\n end\n return got\n end\n -- (Every shape's: a day's cube pays whichever way you move after.)\n reg.settle(function(s, p, now) for _, f in ipairs(shapes()) do s:settle_star(p, now, f) end end)\n -- What the last stars will pay once they're settled, into the purse as\n -- it will be (Things:purse).\n reg.owed(function(s, p, now, out)\n for _, f in ipairs(shapes()) do\n local b = p[f.ball]\n if b and s:ball_over(b, now) then\n for what, n in pairs(s:star_pay(b) or {}) do\n if n > paid_for(p, b, f) then out[what] = (out[what] or 0) + n - paid_for(p, b, f) end\n end\n end\n end\n end)\n\n -- Today's ball, kept in p: yesterday's (or older) counts toward best, and\n -- pays for its star (settle_star), first.\n function th:keep_ball(p, now, f)\n f = f or self:shape()\n local b = self:ball_at(p, now, f)\n if b ~= p[f.ball] then\n if p[f.ball] then\n self:settle_star(p, now, f)\n p[f.best] = self:best(p, now, f)\n end\n p[f.ball] = b\n end\n return b\n end\n\n -- A ball whose contents don't add up to its volume (saved before balls\n -- kept them): if a collection's kinds first found that day add up to it\n -- exactly, they're what's in it (every one of them was rolled that day).\n -- Otherwise it stays as it is. (A collection with kinds that have no\n -- size, words say, can't be what's in it.)\n function th:recount_ball(p, f)\n local b = p[(f or BALL).ball]\n local function volume(got)\n local v = start * start * start\n for id, n in pairs(got) do\n local z = math.tointeger(def.things[id].size)\n if not z then return nil end\n v = v + n * z * z * z\n end\n return v\n end\n if volume(b.got or {}) == b.v then return end\n for _, name in ipairs(self:collection_names()) do\n local got = {}\n for id, e in pairs((p.collections or {})[name] or {}) do\n if e.day == b.day then got[id] = e.n end\n end\n if next(got) and volume(got) == b.v then b.got = got return end\n end\n end\n\n -- A `fits` rule: the thing is at most `pct` percent of your ball.\n function th:fits(p, id, pct, now)\n local size = def.things[id].size\n return size ~= nil and size * 100 <= pct * self:ball_size(p, now)\n end\n\n -- Bumping into something too big (a `fits` rule's `bonk`): `chance`\n -- percent of the time, 1 to `knock` of today's ball's recent adds come\n -- loose and land here (in the `into` container, a place: it keeps the\n -- latest of them), to be rolled up again; the ball shrinks by their\n -- volume, never below its start, and the compendium keeps them. Which\n -- and how many are the act's hash (its thing and time), so the server's\n -- replay agrees. -> their names (\"a, b and c\"), or nil: no bonk (nothing\n -- recent to lose).\n function th:bonk(p, b, uid, q, r, now)\n local ball = p[self:shape().ball]\n if not (ball and not self:ball_over(ball, now) and ball.recent and #ball.recent > 0) then return nil end\n if hash.below(100, self.seed, \"bonk\", uid, now) >= b.chance then return nil end\n local n = math.min(#ball.recent, 1 + hash.below(b.knock, self.seed, \"bonk n\", uid, now))\n local c, cd, names = p.containers[b.into], def.containers[b.into], {}\n for i = 1, n do\n local e = table.remove(ball.recent, 1 + hash.below(#ball.recent, self.seed, \"bonk pick\", uid, now, i))\n local z = def.things[e.id].size\n ball.v = math.max(start * start * start, ball.v - z * z * z)\n if ball.got and ball.got[e.id] then\n ball.got[e.id] = ball.got[e.id] > 1 and ball.got[e.id] - 1 or nil\n end\n c[#c + 1] = { id = e.id, uid = LOOSE .. e.uid, q = q, r = r }\n if cd.max and #c > cd.max then table.remove(c, 1) end\n names[#names + 1] = self:name_of(e.id, e.uid)\n end\n return things.and_list(names)\n end\n\n -- One of a kind out of today's ball (a gift at an altar, a bonk's loss):\n -- the ball shrinks by it, never below its start. -> whether it was in.\n function th:ball_take(p, id, now)\n local b = p[self:shape().ball]\n if not (b and not self:ball_over(b, now) and b.got and (b.got[id] or 0) > 0) then return false end\n local z = def.things[id].size\n b.v = math.max(start * start * start, b.v - z * z * z)\n b.got[id] = b.got[id] > 1 and b.got[id] - 1 or nil\n for i = #(b.recent or {}), 1, -1 do -- (what a bonk could knock off: not this any more)\n if b.recent[i].id == id then table.remove(b.recent, i) break end\n end\n return true\n end\n\n -- Half of what's in today's ball out of it (a gift at an altar): things\n -- picked by the hash (of `...`), one at a time, till half its contents'\n -- volume is gone. -> the ids taken (in the order picked), or nil:\n -- nothing in it today.\n function th:ball_halve(p, now, ...)\n local b = p[self:shape().ball]\n if not (b and not self:ball_over(b, now) and b.got and next(b.got)) then return nil end\n local ids, all, total = {}, {}, 0\n for id in pairs(b.got) do ids[#ids + 1] = id end\n table.sort(ids) -- (pairs' order isn't every host's)\n for _, id in ipairs(ids) do\n local z = def.things[id].size\n for _ = 1, b.got[id] do all[#all + 1] = id end\n total = total + b.got[id] * z * z * z\n end\n local taken, gone = {}, 0\n while gone * 2 < total and #all > 0 do\n local i = 1 + hash.below(#all, self.seed, \"halve\", #taken, ...)\n local id = all[i]\n all[i], all[#all] = all[#all], nil\n local z = def.things[id].size\n self:ball_take(p, id, now)\n gone, taken[#taken + 1] = gone + z * z * z, id\n end\n return taken\n end\n\n reg.effect(\"grow\", function(c) -- it and its volume onto today's ball\n local self, p, thing, now = c.th, c.p, c.thing, c.now\n -- (An act from a day before the ball's, synced late from another\n -- device: that day's ball is gone, so it grows nothing.)\n local mine = p[self:shape().ball]\n if self.late and mine and mine.day > (self:day(now)) then return end\n local b = self:keep_ball(p, now)\n -- Where it grew last (its board), and when its day ends there (a day\n -- ahead of that cell's, if you've walked west over a day line); never\n -- sooner than it did (east, a trip to Tokyo: the day goes on to its\n -- own end, as it would have at home).\n local day, zone, ends = self:day(now)\n b.zone = zone\n b.ends = math.max(math.tointeger(b.ends) or 0, ends + (b.day - day) * 86400)\n local t = def.things[thing.id]\n b.v = b.v + t.size * t.size * t.size\n b.got = b.got or {}\n b.got[thing.id] = (b.got[thing.id] or 0) + 1\n b.recent = b.recent or {} -- what a bonk can knock off\n b.recent[#b.recent + 1] = { id = thing.id, uid = (thing.uid:gsub(\"^\" .. LOOSE, \"\")) }\n if #b.recent > RECENT then table.remove(b.recent, 1) end\n end)\n reg.rule(\"fits\", function(c, rule) return c.th:fits(c.p, c.thing.id, rule.fits, c.now) end, {\n marks = \"too_big\", -- (a room's things: too big to roll, for now)\n -- Failed, in the room, with a `bonk`: things come loose (the act's\n -- done, nothing taken), or nothing recent to lose: the plain refusal.\n failed = function(c, rule)\n if not (rule.bonk and c.thing.at == \"room\") then return nil end\n local loose = c.th:bonk(c.p, rule.bonk, c.uid, c.q, c.r, c.now)\n if not loose then return nil end\n local w = c.words()\n w.loose = loose\n return true, c.th:line(rule.bonk.text, w, \"bonk|\" .. c.uid .. \"|\" .. c.now, c.place.type, c.q, c.r), nil, true\n end,\n })\n -- What was in a ball of an earlier day (a star: the server's, go/server/mod_ball.go\n -- stars): { got = { [thing number] = n }, day } -> its contents, as\n -- contents_of (kinds this engine doesn't know left out).\n reg.action(\"contents\", function(session, a, now)\n local th_, got = session.things, {}\n for num, n in pairs(type(a.got) == \"table\" and a.got or {}) do\n local id = th_:id_of(tostring(num))\n if id and math.tointeger(n) and n > 0 then got[id] = n end\n end\n return { { type = \"contents\", contents = th_:contents_of(got, session.player, math.tointeger(a.day)) } }\n end)\n reg.roll_size(function(s, p, now) return s:ball_size(p, now) end)\n -- (The session's shape: its name, \"ball\" or \"cube\", says which.)\n reg.stats(function(s, p, now, out)\n local ball, best = s:ball_size(p, now), s:best(p, now)\n local ends = s:ball_at(p, now).ends -- (its own end: when it becomes a star)\n out.ball, out.ball_text, out.best, out.best_text, out.ends = ball, size_text(ball), best, size_text(best), ends\n out.shape = s:shape().name\n local by, count, top = {}, 0, nil\n for id, n in pairs(s:ball_at(p, now).got or {}) do\n local part = def.things[id] and def.things[id].part\n if part then by[part] = (by[part] or 0) + n end\n count = count + n\n end\n for id, n in pairs(by) do\n if not top or n > by[top] or (n == by[top] and id < top) then top = id end\n end\n if top then out.top_part = { label = def.parts[top] or top, pct = by[top] * 100 // count } end\n -- Each shape's last star, and what it pays (a ball from an earlier day\n -- not yet settled: what it will).\n for _, f in ipairs(shapes()) do\n local b, st = p[f.ball], p[f.star]\n if b and s:ball_over(b, now) then\n out.last_star = out.last_star or {}\n out.last_star[f.name] = { day = b.day, pay = s:star_pay(b) }\n elseif st and st.paid and st.paid > 0 then\n local pay = {}\n for what in pairs(def.ball.star or {}) do pay[what] = st.paid end\n out.last_star = out.last_star or {}\n out.last_star[f.name] = { day = st.day, pay = pay }\n end\n end\n end)\n reg.words(function(s, w, id, p, now) if p then w.ball = size_text(s:ball_size(p, now)) end end)\n\n -- The player's fields: today's ball (its volume, and per kind how many\n -- are in it; a kind this version doesn't know kept in `unknown`), the\n -- biggest star so far, and what the last star paid.\n local function load_ball(s, data, p, f)\n local b = data[f.ball]\n if not (type(b) == \"table\" and math.tointeger(b.v) and math.tointeger(b.day)) then return end\n local mine = { v = math.tointeger(b.v), day = math.tointeger(b.day), zone = type(b.zone) == \"string\" and b.zone or nil,\n ends = math.tointeger(b.ends) }\n p[f.ball] = mine\n for _, got in ipairs({ type(b.unknown) == \"table\" and b.unknown or {}, type(b.got) == \"table\" and b.got or {} }) do\n for k, n in pairs(got) do\n if type(k) == \"string\" and math.tointeger(n) and n > 0 then\n local id = th:id_of(k)\n local into = id and \"got\" or \"unknown\"\n mine[into] = mine[into] or {}\n mine[into][id or k] = math.tointeger(n)\n end\n end\n end\n for _, e in ipairs(type(b.recent) == \"table\" and b.recent or {}) do\n local id = type(e) == \"table\" and type(e.uid) == \"string\" and th:id_of(e.id)\n if id then\n mine.recent = mine.recent or {}\n mine.recent[#mine.recent + 1] = { id = id, uid = e.uid }\n end\n end\n -- (A ball holding things this version doesn't know can't be recounted.)\n if not mine.unknown then s:recount_ball(p, f) end\n end\n local function save_ball(p, out, f)\n local mine = p[f.ball]\n if not mine then return end\n local b = {}\n for k, v in pairs(mine) do b[k] = v end\n if mine.got then\n b.got = {}\n for id, n in pairs(mine.got) do b.got[th:num_of(id, true)] = n end\n end\n if mine.recent then\n b.recent = json.array()\n for i, e in ipairs(mine.recent) do b.recent[i] = { id = th:num_of(e.id), uid = e.uid } end\n end\n out[f.ball] = b\n end\n for _, f in ipairs(shapes()) do\n reg.player(f.ball, {\n load = function(s, data, p) load_ball(s, data, p, f) end,\n save = function(s, p, out) save_ball(p, out, f) end,\n })\n reg.player(f.best, {\n load = function(s, data, p) if math.tointeger(data[f.best]) then p[f.best] = math.tointeger(data[f.best]) end end,\n })\n reg.player(f.star, {\n -- (Top-level, not the ball's: engines from before it carry it along.)\n load = function(s, data, p)\n local st = data[f.star]\n if type(st) == \"table\" and math.tointeger(st.day) and math.tointeger(st.paid) then\n p[f.star] = { day = math.tointeger(st.day), paid = math.tointeger(st.paid) }\n end\n end,\n })\n end\n\n reg.provide(\"ball\", { shape = th.shape, size = th.ball_size, halve = th.ball_halve })\nend\n",},{name="altars",module="lib.modules.altars",source="-- Altars: the engine's side of factions (roll.cool's Sun and Moon;\n-- game.yaml `factions`). The cells of a coarse layer (`cells`, 500 m) are\n-- won by giving things at their altars; the server keeps the score\n-- (go/server/mod_altars.go beside this). A cell has an altar for each\n-- side, each one of its play cells, others every day\n-- (the day at its center: when the boards turn over there): ALTAR_TRIES\n-- picks by the hash, and the sides (by name: moon, then sun) take them in\n-- turn, each the next that isn't water (the map's) nor next to one taken\n-- (with none such, the next that isn't taken). Giving counts at any of\n-- the picks, for the giver's side whoever's altar it is: the server checks\n-- acts without the map (and knows sides; the engine doesn't). A module\n-- (docs/architecture.md, Modules): the manifest lists it after the ball\n-- (`modules: [..., ball, altars]`: a gift comes out of the ball), and it\n-- registers with the engine:\n-- place an act's place says which altar it's at (place.altar: the\n-- coarse cell, \"q:r\"), and a room says when one stands here\n-- (room.altar = { cell, side })\n-- act verb \"donate\" on \"ball:half\": half of today's ball, at the\n-- altar (the server scores it: a tier; a cube's, by keys,\n-- `gift.cube` of one; for the day the altar stands, which\n-- the act's note says the end of: then the server starts the\n-- cell fresh)\n-- actions altars ({ radius }): today's altars in the coarse cells\n-- around you, a side's each, and when their day ends; reward ({ thing, at, tier }): what a roll pays\n-- where your team holds the cell, by its altar's tier\n-- (go/server/mod_altars.go rewards: the same hash, so the page can say it\n-- as it happens)\n\nlocal json = require \"borges.json\"\nlocal hash = require \"borges.hash\"\nlocal hex = require \"borges.hex\"\nlocal things = require \"borges.things\"\nlocal and_list, size_text = things.and_list, things.size_text\n\n-- The colour schemes' rainbow (web/themes.js RAINBOW): every scheme has these.\nlocal RAINBOW = { red = true, orange = true, yellow = true, green = true, blue = true, purple = true }\n\n-- The manifest's factions (go/server/mod_altars.go scores them; the page\n-- shows them), as the bundler leaves them (gift.least in millimeters):\n-- {sides: {name: {name, colors, outline,\n-- about, light?, wash?}} (two; colors: two of the rainbow, a gradient;\n-- outline: one, its name's; about: a line for the picker; light: two\n-- #rrggbb, its altars' gradient on a light scheme; wash: one of the\n-- rainbow, faint over its areas' cells on the map), cells: a coarse layer\n-- (the cells won), gift: {least: the smallest ball that\n-- gives, tiers: how high an altar goes, cube: what a cube's gift is, of a\n-- tier}, reward: {percent, pay, most: [n, ...]} (rolling in your side's\n-- cells: 0 to the altar's tier's n of the currency), take: {pays: [from,\n-- to] (of the reward's currency, for taking a cell), paid: the takes a day\n-- that pay, cube: the cells a cube takes a day}}. Errors as a check does.\nlocal function check(f, layers)\n local where, whole, unknown = \"factions\", things.whole, things.unknown_keys\n if #unknown(f, { sides = true, cells = true, gift = true, reward = true, take = true }) > 0\n or not (f.sides and f.cells and f.gift and f.reward and f.take) then\n error(where .. \": sides, cells, gift, reward and take\", 0)\n end\n local t = f.take\n if not (type(t) == \"table\" and #unknown(t, { pays = true, paid = true, cube = true }) == 0 and type(t.pays) == \"table\"\n and #t.pays == 2 and whole(t.pays[1], 0, 1000) and whole(t.pays[2], t.pays[1], 1000)\n and whole(t.paid, 0, 20) and whole(t.cube, 0, 20)) then\n error(where .. \".take: {pays: [from, to] (what taking a cell pays, 0 to 1000), paid: the takes a day that pay, \"\n .. \"cube: the cells a cube takes a day (0 to 20 each)}\", 0)\n end\n local g = f.gift\n if not (#unknown(g, { least = true, tiers = true, cube = true }) == 0 and math.tointeger(g.least) and whole(g.tiers, 1, 10)\n and type(g.cube) == \"number\" and g.cube > 0 and g.cube <= 1) then\n error(where .. \".gift: {least: the smallest ball that gives (a size), tiers: how high an altar goes (1 to 10), \"\n .. \"cube: a cube's gift, of a tier (above 0, 1 at most)}\", 0)\n end\n local rw = f.reward\n local ok = type(rw) == \"table\" and #unknown(rw, { percent = true, pay = true, most = true }) == 0 and whole(rw.percent, 1, 100)\n and type(rw.pay) == \"string\" and rw.pay:match(\"^[a-z][a-z0-9_]*$\") and type(rw.most) == \"table\" and #rw.most == g.tiers\n for _, n in ipairs(ok and rw.most or {}) do ok = ok and whole(n, 1, 1000) end\n if not ok then\n error(where .. \".reward: {percent: of rolls in your side's cells, pay: a currency, most: the most a roll pays, \"\n .. \"a whole number per tier}\", 0)\n end\n local n = 0\n ok = type(f.sides) == \"table\"\n for k, v in pairs(ok and f.sides or {}) do\n n = n + 1\n ok = ok and type(k) == \"string\" and k:match(\"^[a-z][a-z0-9_]*$\") and type(v) == \"table\"\n and #unknown(v, { name = true, colors = true, outline = true, about = true, light = true, wash = true }) == 0\n and v.name ~= nil and type(v.about) == \"string\" and type(v.colors) == \"table\" and #v.colors == 2\n and RAINBOW[v.colors[1]] and RAINBOW[v.colors[2]] and RAINBOW[v.outline] and (v.wash == nil or RAINBOW[v.wash])\n and (v.light == nil or (type(v.light) == \"table\" and #v.light == 2))\n for _, c in ipairs(ok and v.light or {}) do ok = ok and type(c) == \"string\" and c:match(\"^#%x%x%x%x%x%x$\") and c == c:lower() end\n end\n if not (ok and n == 2) then\n error(where .. \".sides: two sides: name -> {name, colors: two of red, orange, yellow, green, blue, purple \"\n .. \"(a gradient), outline: one of them (its name's), about: a line for the picker, light?: two #rrggbb \"\n .. \"(its altars' gradient on a light scheme), wash?: one of the rainbow (over its areas on the map)}\", 0)\n end\n if f.cells == \"play\" or not layers[f.cells] then error(where .. \".cells: a coarse layer (the cells that are won)\", 0) end\nend\n\nlocal ALTAR_TRIES = 8\nlocal ALTAR_SAMPLES = 400 -- (a pick lands inside the cell most of the time)\nlocal ALTAR_CACHE = 256\nlocal BALL = \"ball:\"\n\nreturn function(reg)\n local game, f = reg.game or error(\"the altars need a game\", 0), reg.config.factions\n if not reg.things then error(\"the altars need things\", 0) end\n local ball = reg.need(\"ball\") -- (half of it is what's given)\n reg.check(function()\n if not f then error(\"the altars module needs the manifest's factions\", 0) end\n check(f, game.world.game.layers or {})\n end)\n local w = game.world\n local wc = w.game.layers[f.cells] * 1000\n local cache = { n = 0 }\n local sides = {}\n for name in pairs(f.sides or {}) do sides[#sides + 1] = name end\n table.sort(sides)\n\n -- A coarse cell's day at `now` (its center's: the day there), and when\n -- it ends.\n local function day_of(cq, cr, now)\n local fq, fr = hex.locate(w.w_play, hex.center(wc, cq, cr))\n local day, _, ends = w:day_at(fq, fr, now)\n return day, ends, fq, fr\n end\n\n -- A coarse cell's altar picks at `now`: { { q, r }, ... }, and the day.\n local function altar_picks(cq, cr, now)\n local day, _, fq, fr = day_of(cq, cr, now)\n local key = cq .. \":\" .. cr .. \"/\" .. day\n if cache[key] then return cache[key], day end\n local k = (2 * wc) // (3 * w.w_play) + 2\n local picks = {}\n for n = 0, ALTAR_SAMPLES do\n if #picks >= ALTAR_TRIES then break end\n local dq = hash.below(2 * k + 1, w.seed, \"altar\", cq, cr, day, n, 1) - k\n local dr = hash.below(2 * k + 1, w.seed, \"altar\", cq, cr, day, n, 2) - k\n if math.abs(dq + dr) <= k then\n local pq, pr = hex.parent(w.w_play, fq + dq, fr + dr, wc)\n if pq == cq and pr == cr then picks[#picks + 1] = { fq + dq, fr + dr } end\n end\n end\n if cache.n >= ALTAR_CACHE then cache = { n = 0 } end\n cache[key], cache.n = picks, cache.n + 1\n return picks, day\n end\n\n -- Where a coarse cell's altars stand at `now`: { { side, q, r }, ... },\n -- in the sides' order. Each side's is the next pick that isn't water nor\n -- next to (or on) one taken; with none such, the next not taken.\n local function altars_of(cq, cr, now)\n local picks, out = altar_picks(cq, cr, now), {}\n local function free(c, wet)\n for _, a in ipairs(out) do\n if hex.distance(a.q, a.r, c[1], c[2]) < (wet and 1 or 2) then return false end\n end\n return wet or w:base_facts(c[1], c[2]).type ~= \"water\"\n end\n for _, side in ipairs(sides) do\n local got\n for _, c in ipairs(picks) do\n if free(c) then got = c; break end\n end\n if not got then\n for _, c in ipairs(picks) do\n if free(c, true) then got = c; break end\n end\n end\n got = got or picks[1]\n out[#out + 1] = { side = side, q = got[1], r = got[2] }\n end\n return out\n end\n\n -- The coarse cell (\"q:r\") whose altar play cell (q, r) is one of the\n -- picks for at `now` (and the side whose altar stands on it, if one\n -- does), or nil. Not in a space of a module's (a dungeon).\n local function altar_here(session, q, r, now)\n if session.space then return nil end\n local cq, cr = hex.parent(w.w_play, q, r, wc)\n for _, c in ipairs(altar_picks(cq, cr, now)) do\n if c[1] == q and c[2] == r then\n for _, a in ipairs(altars_of(cq, cr, now)) do\n if a.q == q and a.r == r then return cq .. \":\" .. cr, a.side end\n end\n return cq .. \":\" .. cr\n end\n end\n return nil\n end\n\n reg.place(function(session, place, q, r, now) place.altar = altar_here(session, q, r, now) end)\n reg.room(function(session, ev, now)\n local cell, side = altar_here(session, ev.cell.q, ev.cell.r, now)\n ev.altar = side and { cell = cell, side = side } or nil -- a side's altar stands here (its coarse cell)\n end)\n -- Giving half your ball at the altar here (place.altar; thing \"ball:half\":\n -- ball_halve, the things by the hash of the altar and the time), from a\n -- ball of `gift.least` or more. -> ok, text (what went: the biggest few),\n -- and { cell: the altar's, ends: when its day ends } (what the server\n -- scores: a tier, a cube's `gift.cube` of one, till then). A cube gives\n -- at the altar, as a ball does. (Logs\n -- from older bundles have a cube's \"ball:shrine\", given from anywhere,\n -- and, before 2026-10-24, one thing at a time, \"ball:\" and its number:\n -- those bundles replay them, and the server scores them as a quarter\n -- tier.)\n reg.prefix(\"donate\", BALL, function(self, p, verb, uid, place, q, r, now)\n local shape = ball.shape(self).name\n local at = place.altar\n if uid ~= BALL .. \"half\" then return false, \"An altar takes half your \" .. shape .. \".\"\n elseif not at then return false, \"There's no altar here.\" end\n if ball.size(self, p, now) < f.gift.least then\n return false, \"Your \" .. shape .. \"'s too small to give yet: it needs to be \" .. size_text(f.gift.least) .. \".\"\n end\n local taken = ball.halve(self, p, now, at, now)\n if not taken then return false, \"Nothing in your \" .. shape .. \" yet today: roll something up first.\" end\n local things = self.def.things\n table.sort(taken, function(a, b)\n if things[a].size ~= things[b].size then return things[a].size > things[b].size end\n return a < b\n end)\n local seen, names, kinds = {}, {}, 0\n for _, id in ipairs(taken) do\n if not seen[id] then\n seen[id], kinds = true, kinds + 1\n if kinds <= 3 then names[kinds] = self:name_of(id) end\n end\n end\n local list = kinds > #names and table.concat(names, \", \") .. \" and the rest\"\n or and_list(names)\n local cq, cr = hex.parent(w.w_play, q, r, wc)\n local _, ends = day_of(cq, cr, now)\n return true, \"given at the altar: half your \" .. shape .. \" (\" .. list .. \")\",\n nil, nil, { cell = at, ends = ends }\n end)\n -- Today's altars in the coarse cells within `radius` (0 to 3) of yours:\n -- { { cell = \"q:r\", side, q, r, here, ends }, ... }, where each stands (a\n -- cell's, a side's each), and when its day ends (it moves, and its cell\n -- starts fresh).\n reg.action(\"altars\", function(session, a, now)\n local k = math.tointeger(a.radius) or 1\n if k < 0 or k > 3 then error(\"altars radius is 0 to 3\", 0) end\n local o = session.outside or session\n local cq, cr = hex.parent(w.w_play, o.q, o.r, wc)\n local out = json.array()\n for _, c in ipairs(hex.disk(cq, cr, k)) do\n local _, ends = day_of(c[1], c[2], now)\n for _, a in ipairs(altars_of(c[1], c[2], now)) do\n out[#out + 1] = { cell = c[1] .. \":\" .. c[2], side = a.side, q = a.q, r = a.r, here = (c[1] == cq and c[2] == cr) or nil,\n ends = ends }\n end\n end\n return { { type = \"altars\", altars = out } }\n end)\n -- What a roll of `thing` (its uid) at `at` pays in a cell your team\n -- holds, its altar at `tier` (as the page last heard: the server pays by\n -- its own, at the sync): { type = \"reward\", n, pay } (n nil: not this\n -- time, or nothing).\n reg.action(\"reward\", function(session, a, now)\n local rw, seed, at = f.reward, w.seed, math.tointeger(a.at)\n local most = rw.most[math.max(1, math.min(#rw.most, math.tointeger(a.tier) or 1))]\n if not (type(a.thing) == \"string\" and at) then return { { type = \"reward\" } } end\n if session.things and ball.shape(session.things).name == \"cube\" then\n return { { type = \"reward\" } } -- (by keys, none)\n end\n if hash.below(100, seed, \"faction reward\", a.thing, at) >= rw.percent then return { { type = \"reward\" } } end\n local n = hash.below(most + 1, seed, \"faction reward n\", a.thing, at)\n return { { type = \"reward\", n = n > 0 and n or nil, pay = rw.pay } }\n end)\nend\n",},{name="tutorial",module="lib.modules.tutorial",source="-- The tutorial's end (web/tutorial.js plays a game's first rooms, the\n-- page's own: tutorial.yaml): graduating, once, gives the game's\n-- `tutorial.gift` (roll.cool: a graduation cap and gown) into\n-- its container and collection. A module (docs/architecture.md, Modules): the\n-- manifest lists it after the wardrobe, and it registers with the engine:\n-- act verb \"graduate\" on \"tutorial:done\": once a player\n-- player graduated: true, once you have\n\nlocal things = require \"borges.things\"\nlocal fill = things.fill\n\n-- The tutorial as the page has it (tools/bundle.py check_tutorial: each\n-- room's things {id, name, size}): its gift is things to wear, given into\n-- a container you carry; each room's things are to roll, with sizes; one\n-- gift room at most, before the last (the door out); and from its start\n-- (else the game's), each room can be cleared, the biggest that fits\n-- rolled first, the engine's way, and cleared, the ball is the game's\n-- start. Errors as a check does.\nlocal function check(t, def)\n local where = \"tutorial\"\n if not things.whole(t.fits, 1, 100) then error(where .. \".fits: the roll verb's fits (percent of the ball)\", 0) end\n local ok = type(t.gift) == \"table\" and #t.gift > 0\n for _, g in ipairs(ok and t.gift or {}) do ok = ok and (def.things[g] or {}).slot ~= nil end\n if not ok then error(where .. \".gift: things to wear (ids with a slot)\", 0) end\n things.check_into(where, t, def)\n if not (type(t.text) == \"string\" and t.text:match(\"%S\")) then error(where .. \".text: what graduating says\", 0) end\n local rooms = t.rooms\n if not (type(rooms) == \"table\" and #rooms >= 2) then error(where .. \".rooms: two rooms at least (the last, the door out)\", 0) end\n local gifts = 0\n for i, r in ipairs(rooms) do\n for _, x in ipairs(r.things) do\n local th = def.things[x.id]\n if not (th and (th.verbs or {}).roll and math.tointeger(th.size)) then\n error(where .. \".rooms[\" .. (i - 1) .. \"].things: \" .. x.id .. \": a thing to roll up, with a size\", 0)\n end\n end\n if r.gift then\n gifts = gifts + 1\n if gifts > 1 or i == #rooms then error(where .. \".rooms: one gift room at most, before the door\", 0) end\n end\n end\n local game = def.ball and def.ball.start\n local start = t.start or game\n if not (start and game) then return end\n local v = start * start * start\n for i, r in ipairs(rooms) do\n local left = {}\n for _, x in ipairs(r.things) do left[#left + 1] = x end\n while #left > 0 do\n local ball, best = things.cube_root(v), nil\n for k, x in ipairs(left) do\n if x.size * 100 <= t.fits * ball and (not best or x.size > left[best].size) then best = k end\n end\n if not best then\n local ids = {}\n for _, x in ipairs(left) do ids[#ids + 1] = x.id end\n error(where .. \".rooms[\" .. (i - 1) .. \"]: \" .. table.concat(ids, \", \") .. \": too big to roll up, at \"\n .. ball .. \" mm, after the rooms before\", 0)\n end\n local x = table.remove(left, best)\n v = v + x.size * x.size * x.size\n end\n end\n if things.cube_root(v) ~= game then\n error(where .. \".rooms: every room cleared, the ball is \" .. things.cube_root(v) .. \" mm, not the game's start (\"\n .. game .. \" mm)\", 0)\n end\nend\n\nreturn function(reg)\n if not reg.things then error(\"the tutorial needs things\", 0) end\n local t = reg.config.tutorial\n reg.check(function(_, def)\n if not t then error(\"the tutorial module needs the manifest's tutorial\", 0) end\n check(t, def)\n end)\n -- Graduating: the gift, once (each its own instance: tutorial:1, :2...).\n -- -> ok, text.\n reg.prefix(\"graduate\", \"tutorial:\", function(self, p, verb, uid, place, q, r, now)\n if uid ~= \"tutorial:done\" then return false, \"That isn't something to graduate from.\" end\n if p.graduated then return false, \"You've graduated already.\" end\n p.graduated = true\n for i, id in ipairs(t.gift) do self:give(p, id, \"tutorial:\" .. i, t.into, t.record, now) end\n return true, fill(t.text, {})\n end)\n reg.player(\"graduated\", {\n load = function(s, data, p) if data.graduated == true then p.graduated = true end end,\n })\nend\n",},},things={containers={dropped={place=true,max=100,},wardrobe={},words={},},verbs={wear={from="held",tap=true,effects=A{"wear",},text="now wearing: ",},take_off={from="held",effects=A{"take_off",},text="took off: ",},open={tap=true,effects=A{"remove",{unwrap={tiers={common=60,uncommon=30,rare=9,epic=1,},give={wearable={odds=4,into="wardrobe",record="wardrobe",},word={odds=1,into="words",record="words",says="a word for you: \"\"",},},},},},text="a present! inside: ",},describe={from="held",effects=A{{describe={max=3,},},},text="you go by: ",},roll={tap=true,rules=A{{fits=50,fail="too big to roll up, for now: ",bonk={chance=50,knock=3,into="dropped",text="bonk! came loose",},},},effects=A{"remove","grow",{record="compendium",},},text="rolled up: ",},},things={gerbil={name="gerbil",size=100,part="animals",retired=true,event_only=true,every=7200,num=1,},naked_mole_rat={name="naked mole-rat",size=100,part="animals",retired=true,event_only=true,every=7200,num=2,},guinea_pig={name="guinea pig",size=250,part="animals",retired=true,event_only=true,every=7200,num=3,},chinchilla={name="chinchilla",size=300,part="animals",retired=true,event_only=true,every=7200,num=4,},prairie_dog={name="prairie dog",size=350,part="animals",retired=true,event_only=true,every=7200,num=5,},mara={name="mara",size=700,part="animals",retired=true,event_only=true,every=7200,num=6,},capybara={name="capybara",size=1200,part="animals",retired=true,event_only=true,every=7200,num=7,},shrew={name="shrew",size=80,part="animals",retired=true,event_only=true,every=7200,num=8,},elephant_shrew={name="elephant shrew",size=120,part="animals",retired=true,event_only=true,every=7200,num=9,},sugar_glider={name="sugar glider",size=150,part="animals",retired=true,event_only=true,every=7200,num=10,},pika={name="pika",size=180,part="animals",retired=true,event_only=true,every=7200,num=11,},hedgehog={name="hedgehog",size=200,part="animals",retired=true,event_only=true,every=7200,num=12,},mouse_deer={name="mouse deer",size=450,part="animals",retired=true,event_only=true,every=7200,num=13,},n3={name="3",size=30,part="toys",retired=true,event_only=true,every=7200,num=14,},n6={name="6",size=30,part="toys",retired=true,event_only=true,every=7200,num=15,},n9={name="9",size=30,part="toys",retired=true,event_only=true,every=7200,num=16,},n12={name="12",size=30,part="toys",retired=true,event_only=true,every=7200,num=17,},n15={name="15",size=30,part="toys",retired=true,event_only=true,every=7200,num=18,},n18={name="18",size=30,part="toys",retired=true,event_only=true,every=7200,num=19,},n21={name="21",size=30,part="toys",retired=true,event_only=true,every=7200,num=20,},n27={name="27",size=30,part="toys",retired=true,event_only=true,every=7200,num=21,},n33={name="33",size=30,part="toys",retired=true,event_only=true,every=7200,num=22,},n36={name="36",size=30,part="toys",retired=true,event_only=true,every=7200,num=23,},n42={name="42",size=30,part="toys",retired=true,event_only=true,every=7200,num=24,},n45={name="45",size=30,part="toys",retired=true,event_only=true,every=7200,num=25,},n51={name="51",size=30,part="toys",retired=true,event_only=true,every=7200,num=26,},n57={name="57",size=30,part="toys",retired=true,event_only=true,every=7200,num=27,},n63={name="63",size=30,part="toys",retired=true,event_only=true,every=7200,num=28,},n72={name="72",size=30,part="toys",retired=true,event_only=true,every=7200,num=29,},n81={name="81",size=30,part="toys",retired=true,event_only=true,every=7200,num=30,},n87={name="87",size=30,part="toys",retired=true,event_only=true,every=7200,num=31,},n99={name="99",size=30,part="toys",retired=true,event_only=true,every=7200,num=32,},n111={name="111",size=30,part="toys",retired=true,event_only=true,every=7200,num=33,},n1={name="1",size=30,part="toys",retired=true,event_only=true,every=7200,num=34,},n2={name="2",size=30,part="toys",retired=true,event_only=true,every=7200,num=35,},n4={name="4",size=30,part="toys",retired=true,event_only=true,every=7200,num=36,},n5={name="5",size=30,part="toys",retired=true,event_only=true,every=7200,num=37,},n7={name="7",size=30,part="toys",retired=true,event_only=true,every=7200,num=38,},n10={name="10",size=30,part="toys",retired=true,event_only=true,every=7200,num=39,},n13={name="13",size=30,part="toys",retired=true,event_only=true,every=7200,num=40,},n14={name="14",size=30,part="toys",retired=true,event_only=true,every=7200,num=41,},n16={name="16",size=30,part="toys",retired=true,event_only=true,every=7200,num=42,},n20={name="20",size=30,part="toys",retired=true,event_only=true,every=7200,num=43,},n22={name="22",size=30,part="toys",retired=true,event_only=true,every=7200,num=44,},n25={name="25",size=30,part="toys",retired=true,event_only=true,every=7200,num=45,},n31={name="31",size=30,part="toys",retired=true,event_only=true,every=7200,num=46,},n34={name="34",size=30,part="toys",retired=true,event_only=true,every=7200,num=47,},n49={name="49",size=30,part="toys",retired=true,event_only=true,every=7200,num=48,},n52={name="52",size=30,part="toys",retired=true,event_only=true,every=7200,num=49,},n77={name="77",size=30,part="toys",retired=true,event_only=true,every=7200,num=50,},n91={name="91",size=30,part="toys",retired=true,event_only=true,every=7200,num=51,},n100={name="100",size=30,part="toys",retired=true,event_only=true,every=7200,num=52,},n101={name="101",size=30,part="toys",retired=true,event_only=true,every=7200,num=53,},n133={name="133",size=30,part="toys",retired=true,event_only=true,every=7200,num=54,},n143={name="143",size=30,part="toys",retired=true,event_only=true,every=7200,num=55,},proton={name="proton",size=10,part="nature",retired=true,event_only=true,every=7200,num=56,},neutron={name="neutron",size=10,part="nature",retired=true,event_only=true,every=7200,num=57,},positron={name="positron",size=10,part="nature",retired=true,event_only=true,every=7200,num=58,},photon={name="photon",size=10,part="nature",retired=true,event_only=true,every=7200,num=59,},rat_king={name="the rat king",here="",size=300,part="animals",retired=true,event_only=true,every=3600,num=60,},electron={name="an electron",here="",size=1,part="nature",retired=true,event_only=true,every=3600,num=61,},ember={name="an ember",here="",size=10,part="nature",retired=true,event_only=true,every=3600,num=62,},three={name="the number three",here="",size=1000,part="toys",retired=true,event_only=true,every=3600,num=63,},tick={name="tick",size=4,part="animals",verbs={roll="global",},every=7200,num=64,},ant={name="ant",size=5,part="animals",verbs={roll="global",},every=7200,num=65,},peppercorn={name="peppercorn",size=5,part="food",verbs={roll="global",},every=7200,num=66,},grain_of_rice={name="grain of rice",size=6,part="food",verbs={roll="global",},every=7200,num=67,},mosquito={name="mosquito",size=6,part="animals",verbs={roll="global",},every=7200,num=68,},sequin={name="sequin",size=6,part="crafts",verbs={roll="global",},every=7200,num=69,},housefly={name="housefly",size=7,part="animals",verbs={roll="global",},every=7200,num=70,},bead={name="bead",size=8,part="crafts",verbs={roll="global",},every=7200,num=71,},ladybug={name="ladybug",size=8,part="animals",verbs={roll="global",},every=7200,num=72,},pea={name="pea",size=9,part="food",verbs={roll="global",},every=7200,num=73,},baby_tooth={name="baby tooth",size=10,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=74,},cheerio={name="cheerio",size=10,part="food",verbs={roll="global",},every=7200,num=75,},chocolate_chip={name="chocolate chip",size=10,part="food",verbs={roll="global",},every=7200,num=76,},coffee_bean={name="coffee bean",size=10,part="food",verbs={roll="global",},every=7200,num=77,},confetti={name="confetti",size=10,part="detritus",verbs={roll="global",},every=7200,num=78,},dandelion_seed={name="dandelion seed",size=10,part="plants",verbs={roll="global",},every=7200,num=79,},diamond={name="diamond",size=10,part="valuables",verbs={roll="global",},every=7200,num=80,},holly_berry={name="holly berry",size=10,part="plants",verbs={roll="global",},every=7200,num=81,},pearl={name="pearl",size=10,part="valuables",verbs={roll="global",},every=7200,num=82,},resistor={name="resistor",size=10,part="electronics",verbs={roll="global",},every=7200,num=83,},sunflower_seed={name="sunflower seed",size=10,part="food",verbs={roll="global",},every=7200,num=84,},thumbtack={name="thumbtack",size=10,part="crafts",verbs={roll="global",},every=7200,num=85,},blueberry={name="blueberry",size=12,part="food",verbs={roll="global",},every=7200,num=86,},gemstone={name="gemstone",size=12,part="valuables",verbs={roll="global",},every=7200,num=87,},pill_bug={name="pill bug",size=12,part="animals",verbs={roll="global",},every=7200,num=88,},staple={name="staple",size=12,part="crafts",verbs={roll="global",},every=7200,num=89,},watch_battery={name="watch battery",size=12,part="electronics",verbs={roll="global",},every=7200,num=90,},contact_lens={name="contact lens",size=14,part="household",verbs={roll="global",},every=7200,num=91,},acorn_cap={name="acorn cap",size=15,part="plants",verbs={roll="global",},every=7200,num=92,},bee={name="bee",size=15,part="animals",verbs={roll="global",},every=7200,num=93,},button={name="button",size=15,part="clothes",verbs={roll="global",},every=7200,num=94,},candy={name="candy",size=15,part="food",verbs={roll="global",},every=7200,num=95,},cherry_pit={name="cherry pit",size=15,part="detritus",verbs={roll="global",},every=7200,num=96,},firefly={name="firefly",size=15,part="animals",verbs={roll="global",},every=7200,num=97,},gold_nugget={name="gold nugget",size=15,part="valuables",verbs={roll="global",},every=7200,num=98,},googly_eye={name="googly eye",size=15,part="crafts",verbs={roll="global",},every=7200,num=99,},gravel={name="gravel",size=15,part="nature",verbs={roll="global",},every=7200,num=100,},grommet={name="grommet",size=15,part="hardware",verbs={roll="global",},every=7200,num=101,},hex_nut={name="hex nut",size=15,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=102,},microsd_card={name="microsd card",size=15,part="electronics",verbs={roll="global",},every=7200,num=103,},mint={name="mint",size=15,part="food",verbs={roll="global",},every=7200,num=104,},pill={name="pill",size=15,part="household",verbs={roll="global",},every=7200,num=105,},rivet={name="rivet",size=15,part="hardware",verbs={roll="global",},every=7200,num=106,},sugar_cube={name="sugar cube",size=15,part="food",verbs={roll="global",},every=7200,num=107,},wild_strawberry={name="wild strawberry",size=15,part="food",verbs={roll="global",},every=7200,num=108,},die={name="die",size=16,part="toys",verbs={roll="global",},every=7200,num=109,},marble={name="marble",size=16,part="toys",variants=A{{key="cat_s_eye_marble",name="cat's eye marble",chance=200000,},{key="steelie",name="steelie",chance=50000,},},verbs={roll="global",},every=7200,num=110,},subway_token={name="subway token",size=16,part="valuables",verbs={roll="global",},every=7200,num=111,},dime={name="dime",size=18,part="valuables",verbs={roll="global",},every=7200,num=112,},beetle={name="beetle",size=20,part="animals",verbs={roll="global",},every=7200,num=113,},bingo_chip={name="bingo chip",size=20,part="toys",verbs={roll="global",},every=7200,num=114,},capacitor={name="capacitor",size=20,part="electronics",verbs={roll="global",},every=7200,num=115,},cough_drop={name="cough drop",size=20,part="household",verbs={roll="global",},every=7200,num=116,},cufflink={name="cufflink",size=20,part="clothes",verbs={roll="global",},every=7200,num=117,},earring={name="earring",size=20,part="valuables",verbs={roll="global",},every=7200,num=118,},forget_me_not={name="forget-me-not",size=20,part="plants",verbs={roll="global",},every=7200,num=119,},game_piece={name="game piece",size=20,part="toys",verbs={roll="global",},every=7200,num=120,},glass_shard={name="glass shard",size=20,part="detritus",verbs={roll="global",},every=7200,num=121,},grape={name="grape",size=20,part="food",verbs={roll="global",},every=7200,num=122,},gum={name="gum",size=20,part="food",verbs={roll="global",},every=7200,num=123,},gummy_bear={name="gummy bear",size=20,part="food",verbs={roll="global",},every=7200,num=124,},hazelnut={name="hazelnut",size=20,part="food",verbs={roll="global",},every=7200,num=125,},jelly_bean={name="jelly bean",size=20,part="food",verbs={roll="global",},every=7200,num=126,},lint={name="lint",size=20,part="detritus",verbs={roll="global",},every=7200,num=127,},microchip={name="microchip",size=20,part="electronics",verbs={roll="global",},every=7200,num=128,},pebble={name="pebble",size=20,part="nature",verbs={roll="global",},every=7200,num=129,},penny={name="penny",size=20,part="valuables",verbs={roll="global",},every=7200,num=130,},pistachio_shell={name="pistachio shell",size=20,part="detritus",verbs={roll="global",},every=7200,num=131,},popcorn={name="popcorn",size=20,part="food",verbs={roll="global",},every=7200,num=132,},raspberry={name="raspberry",size=20,part="food",verbs={roll="global",},every=7200,num=133,},ring={name="ring",size=20,part="valuables",verbs={roll="global",},every=7200,num=134,},rose_hip={name="rose hip",size=20,part="plants",verbs={roll="global",},every=7200,num=135,},spider={name="spider",size=20,part="animals",verbs={roll="global",},every=7200,num=136,},thimble={name="thimble",size=20,part="crafts",verbs={roll="global",},every=7200,num=137,},washer={name="washer",size=20,part="hardware",verbs={roll="global",},every=7200,num=138,},wasp={name="wasp",size=20,part="animals",verbs={roll="global",},every=7200,num=139,},nickel={name="nickel",size=21,part="valuables",verbs={roll="global",},every=7200,num=140,},quarter={name="quarter",size=24,part="valuables",verbs={roll="global",},every=7200,num=141,},acorn={name="acorn",size=25,part="plants",verbs={roll="global",},every=7200,num=142,},cherry={name="cherry",size=25,part="food",verbs={roll="global",},every=7200,num=143,},cricket={name="cricket",size=25,part="animals",verbs={roll="global",},every=7200,num=144,},earbud={name="earbud",size=25,part="electronics",verbs={roll="global",},every=7200,num=145,},fishhook={name="fishhook",size=25,part="toys",verbs={roll="global",},every=7200,num=146,},old_coin={name="old coin",size=25,part="valuables",verbs={roll="global",},every=7200,num=147,},olive={name="olive",size=25,part="food",verbs={roll="global",},every=7200,num=148,},pin_badge={name="pin badge",size=25,part="clothes",verbs={roll="global",},every=7200,num=149,},robin_egg={name="robin egg",size=25,part="nature",verbs={roll="global",},every=7200,num=150,},safety_pin={name="safety pin",size=25,part="crafts",verbs={roll="global",},every=7200,num=151,},sea_glass={name="sea glass",size=25,part="nature",verbs={roll="global",},every=7200,num=152,},shark_tooth={name="shark tooth",size=25,part="nature",verbs={roll="global",},every=7200,num=153,},sim_card={name="sim card",size=25,part="electronics",verbs={roll="global",},every=7200,num=154,},stamp={name="stamp",size=25,part="crafts",verbs={roll="global",},every=7200,num=155,},tadpole={name="tadpole",size=25,part="animals",verbs={roll="global",},every=7200,num=156,},token={name="token",size=25,part="valuables",verbs={roll="global",},every=7200,num=157,},zipper_pull={name="zipper pull",size=25,part="clothes",verbs={roll="global",},every=7200,num=158,},bottle_cap={name="bottle cap",size=30,part="detritus",verbs={roll="global",},every=7200,num=159,},bouncy_ball={name="bouncy ball",size=30,part="toys",verbs={roll="global",},every=7200,num=160,},buttercup={name="buttercup",size=30,part="plants",verbs={roll="global",},every=7200,num=161,},cigarette_butt={name="cigarette butt",size=30,part="detritus",verbs={roll="global",},every=7200,num=162,},clover={name="clover",size=30,part="plants",verbs={roll="global",},every=7200,num=163,},cotton_ball={name="cotton ball",size=30,part="household",verbs={roll="global",},every=7200,num=164,},dust_bunny={name="dust bunny",size=30,part="detritus",verbs={roll="global",},every=7200,num=165,},four_leaf_clover={name="four-leaf clover",size=30,part="plants",verbs={roll="global",},every=7200,num=166,},fuse={name="fuse",size=30,part="electronics",verbs={roll="global",},every=7200,num=167,},guitar_pick={name="guitar pick",size=30,part="instruments",verbs={roll="global",},every=7200,num=168,},hair_tie={name="hair tie",size=30,part="clothes",verbs={roll="global",},every=7200,num=169,},hearing_aid={name="hearing aid",size=30,part="electronics",verbs={roll="global",},every=7200,num=170,},ice_cube={name="ice cube",size=30,part="food",verbs={roll="global",},every=7200,num=171,},lego={name="lego",size=30,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=172,},lichen={name="lichen",size=30,part="plants",verbs={roll="global",},every=7200,num=173,},locket={name="locket",size=30,part="valuables",verbs={roll="global",},every=7200,num=174,},magnet={name="magnet",size=30,part="household",verbs={roll="global",},every=7200,num=175,},moth={name="moth",size=30,part="animals",verbs={roll="global",},every=7200,num=176,},paperclip={name="paperclip",size=30,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=177,},peanut={name="peanut",size=30,part="food",verbs={roll="global",},every=7200,num=178,},snail={name="snail",size=30,part="animals",verbs={roll="global",},every=7200,num=179,},spring={name="spring",size=30,part="hardware",verbs={roll="global",},every=7200,num=180,},toy_jack={name="toy jack",size=30,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=181,},violet={name="violet",size=30,part="plants",verbs={roll="global",},every=7200,num=182,},caterpillar={name="caterpillar",size=35,part="animals",verbs={roll="global",},every=7200,num=183,},chestnut={name="chestnut",size=35,part="plants",verbs={roll="global",},every=7200,num=184,},sewing_needle={name="sewing needle",size=35,part="crafts",verbs={roll="global",},every=7200,num=185,},strawberry={name="strawberry",size=35,part="food",verbs={roll="global",},every=7200,num=186,},arrowhead={name="arrowhead",size=40,part="nature",verbs={roll="global",},every=7200,num=187,},bobber={name="bobber",size=40,part="toys",verbs={roll="global",},every=7200,num=188,},bolt={name="bolt",size=40,part="hardware",verbs={roll="global",},every=7200,num=189,},brooch={name="brooch",size=40,part="valuables",verbs={roll="global",},every=7200,num=190,},candy_wrapper={name="candy wrapper",size=40,part="detritus",verbs={roll="global",},every=7200,num=191,},chess_pawn={name="chess pawn",size=40,part="toys",verbs={roll="global",},every=7200,num=192,},cork={name="cork",size=40,part="detritus",verbs={roll="global",},every=7200,num=193,},daisy={name="daisy",size=40,part="plants",verbs={roll="global",},every=7200,num=194,},eraser={name="eraser",size=40,part="crafts",verbs={roll="global",},every=7200,num=195,},grasshopper={name="grasshopper",size=40,part="animals",verbs={roll="global",},every=7200,num=196,},hermit_crab={name="hermit crab",size=40,part="animals",verbs={roll="global",},every=7200,num=197,},maple_seed={name="maple seed",size=40,part="plants",verbs={roll="global",},every=7200,num=198,},moss={name="moss",size=40,part="plants",verbs={roll="global",},every=7200,num=199,},pine_needle={name="pine needle",size=40,part="plants",verbs={roll="global",},every=7200,num=200,},ping_pong_ball={name="ping pong ball",size=40,part="toys",verbs={roll="global",},every=7200,num=201,},poker_chip={name="poker chip",size=40,part="toys",verbs={roll="global",},every=7200,num=202,},rosary={name="rosary",size=40,part="valuables",verbs={roll="global",},every=7200,num=203,},rubber_band={name="rubber band",size=40,part="crafts",verbs={roll="global",},every=7200,num=204,},screw={name="screw",size=40,part="hardware",verbs={roll="global",},every=7200,num=205,},seashell={name="seashell",size=40,part="nature",verbs={roll="global",},every=7200,num=206,},slug={name="slug",size=40,part="animals",verbs={roll="global",},every=7200,num=207,},sticker={name="sticker",size=40,part="crafts",verbs={roll="global",},every=7200,num=208,},tea_light={name="tea light",size=40,part="household",verbs={roll="global",},every=7200,num=209,},tealight={name="tealight",size=40,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=210,},walnut={name="walnut",size=40,part="food",verbs={roll="global",},every=7200,num=211,},watch={name="watch",size=40,part="clothes",verbs={roll="global",},every=7200,num=212,},golf_ball={name="golf ball",size=43,part="toys",verbs={roll="global",},every=7200,num=213,},allen_key={name="allen key",size=45,part="hardware",verbs={roll="global",},every=7200,num=214,},birthday_candle={name="birthday candle",size=45,part="household",verbs={roll="global",},every=7200,num=215,},bobby_pin={name="bobby pin",size=45,part="household",verbs={roll="global",},every=7200,num=216,},chalk={name="chalk",size=45,part="crafts",verbs={roll="global",},every=7200,num=217,},cracker={name="cracker",size=45,part="food",verbs={roll="global",},every=7200,num=218,},crayon_stub={name="crayon stub",size=45,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=219,},domino={name="domino",size=45,part="toys",verbs={roll="global",},every=7200,num=220,},fishing_lure={name="fishing lure",size=45,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=221,},fortune_cookie={name="fortune cookie",size=45,part="food",verbs={roll="global",},every=7200,num=222,},fossil={name="fossil",size=45,part="nature",verbs={roll="global",},every=7200,num=223,},golf_tee={name="golf tee",size=45,part="toys",verbs={roll="global",},every=7200,num=224,},ketchup_packet={name="ketchup packet",size=45,part="food",verbs={roll="global",},every=7200,num=225,},matchstick={name="matchstick",size=45,part="household",verbs={roll="global",},every=7200,num=226,},minnow={name="minnow",size=45,part="animals",verbs={roll="global",},every=7200,num=227,},mushroom={name="mushroom",size=45,part="plants",verbs={roll="global",},every=7200,num=228,},nail={name="nail",size=45,part="hardware",verbs={roll="global",},every=7200,num=229,},sand_dollar={name="sand dollar",size=45,part="nature",verbs={roll="global",},every=7200,num=230,},sugar_packet={name="sugar packet",size=45,part="food",verbs={roll="global",},every=7200,num=231,},ticket_stub={name="ticket stub",size=45,part="crafts",verbs={roll="global",},every=7200,num=232,},tie_clip={name="tie clip",size=45,part="clothes",verbs={roll="global",},every=7200,num=233,},usb_stick={name="usb stick",size=45,part="electronics",verbs={roll="global",},every=7200,num=234,},whistle={name="whistle",size=45,part="toys",verbs={roll="global",},every=7200,num=235,},battery={name="battery",size=50,part="electronics",verbs={roll="global",},every=7200,num=236,},cicada={name="cicada",size=50,part="animals",verbs={roll="global",},every=7200,num=237,},dumpling={name="dumpling",size=50,part="food",verbs={roll="global",},every=7200,num=238,},goldfish={name="goldfish",size=50,part="animals",verbs={roll="global",},every=7200,num=239,},matchbook={name="matchbook",size=50,part="household",verbs={roll="global",},every=7200,num=240,},plum={name="plum",size=50,part="food",verbs={roll="global",},every=7200,num=241,},pocket_watch={name="pocket watch",size=50,part="valuables",verbs={roll="global",},every=7200,num=242,},puzzle_piece={name="puzzle piece",size=50,part="toys",verbs={roll="global",},every=7200,num=243,},roll_of_film={name="roll of film",size=50,part="electronics",verbs={roll="global",},every=7200,num=244,},sushi={name="sushi",size=50,part="food",verbs={roll="global",},every=7200,num=245,},egg={name="egg",size=55,part="food",verbs={roll="global",},every=7200,num=246,},bearing={name="bearing",size=60,part="hardware",verbs={roll="global",},every=7200,num=247,},centipede={name="centipede",size=60,part="animals",verbs={roll="global",},every=7200,num=248,},compass={name="compass",size=60,part="hardware",verbs={roll="global",},every=7200,num=249,},key={name="key",size=60,part="household",verbs={roll="global",},every=7200,num=250,},kiwi={name="kiwi",size=60,part="food",verbs={roll="global",},every=7200,num=251,},lime={name="lime",size=60,part="food",verbs={roll="global",},every=7200,num=252,},mussel={name="mussel",size=60,part="animals",verbs={roll="global",},every=7200,num=253,},nail_polish={name="nail polish",size=60,part="clothes",verbs={roll="global",},every=7200,num=254,},rubiks_cube={name="rubik's cube",size=60,part="toys",verbs={roll="global",},every=7200,num=255,},toy_soldier={name="toy soldier",size=60,part="toys",verbs={roll="global",},every=7200,num=256,},yo_yo={name="yo-yo",size=60,part="toys",verbs={roll="global",},every=7200,num=257,},compact_mirror={name="compact mirror",size=70,part="clothes",verbs={roll="global",},every=7200,num=258,},cookie={name="cookie",size=70,part="food",verbs={roll="global",},every=7200,num=259,},cupcake={name="cupcake",size=70,part="food",verbs={roll="global",},every=7200,num=260,},doorknob={name="doorknob",size=70,part="household",verbs={roll="global",},every=7200,num=261,},frog={name="frog",size=70,part="animals",verbs={roll="global",},every=7200,num=262,},lemon={name="lemon",size=70,part="food",verbs={roll="global",},every=7200,num=263,},lighter={name="lighter",size=70,part="household",verbs={roll="global",},every=7200,num=264,},lip_balm={name="lip balm",size=70,part="clothes",verbs={roll="global",},every=7200,num=265,},medal={name="medal",size=70,part="valuables",verbs={roll="global",},every=7200,num=266,},padlock={name="padlock",size=70,part="hardware",verbs={roll="global",},every=7200,num=267,},pager={name="pager",size=70,part="electronics",verbs={roll="global",},every=7200,num=268,},peach={name="peach",size=70,part="food",verbs={roll="global",},every=7200,num=269,},slinky={name="slinky",size=70,part="toys",verbs={roll="global",},every=7200,num=270,},spinning_top={name="spinning top",size=70,part="toys",verbs={roll="global",},every=7200,num=271,},tennis_ball={name="tennis ball",size=70,part="toys",verbs={roll="global",},every=7200,num=272,},tomato={name="tomato",size=70,part="food",verbs={roll="global",},every=7200,num=273,},baseball={name="baseball",size=75,part="toys",verbs={roll="global",},every=7200,num=274,},hockey_puck={name="hockey puck",size=75,part="toys",verbs={roll="global",},every=7200,num=275,},lipstick={name="lipstick",size=75,part="clothes",verbs={roll="global",},every=7200,num=276,},apple={name="apple",size=80,part="food",variants=A{{key="green_apple",name="green apple",chance=250000,},{key="bitten_apple",name="bitten apple",chance=50000,},},verbs={roll="global",},every=7200,num=277,},clam={name="clam",size=80,part="animals",verbs={roll="global",},every=7200,num=278,},crystal={name="crystal",size=80,part="nature",verbs={roll="global",},every=7200,num=279,},doorbell={name="doorbell",size=80,part="household",verbs={roll="global",},every=7200,num=280,},dragonfly={name="dragonfly",size=80,part="animals",verbs={roll="global",},every=7200,num=281,},keychain={name="keychain",size=80,part="household",verbs={roll="global",},every=7200,num=282,},mouse={name="mouse",size=80,part="animals",verbs={roll="global",},every=7200,num=283,},muffin={name="muffin",size=80,part="food",verbs={roll="global",},every=7200,num=284,},onion={name="onion",size=80,part="food",verbs={roll="global",},every=7200,num=285,},orange={name="orange",size=80,part="food",verbs={roll="global",},every=7200,num=286,},pinecone={name="pinecone",size=80,part="plants",verbs={roll="global",},every=7200,num=287,},praying_mantis={name="praying mantis",size=80,part="animals",verbs={roll="global",},every=7200,num=288,},shuttlecock={name="shuttlecock",size=80,part="toys",verbs={roll="global",},every=7200,num=289,},succulent={name="succulent",size=80,part="plants",verbs={roll="global",},every=7200,num=290,},tape_measure={name="tape measure",size=80,part="hardware",verbs={roll="global",},every=7200,num=291,},toy_car={name="toy car",size=80,part="toys",verbs={roll="global",},every=7200,num=292,},bus_pass={name="bus pass",size=85,part="crafts",verbs={roll="global",},every=7200,num=293,},credit_card={name="credit card",size=85,part="valuables",verbs={roll="global",},every=7200,num=294,},library_card={name="library card",size=85,part="crafts",verbs={roll="global",},every=7200,num=295,},business_card={name="business card",size=90,part="crafts",verbs={roll="global",},every=7200,num=296,},butterfly={name="butterfly",size=90,part="animals",verbs={roll="global",},every=7200,num=297,},crayon={name="crayon",size=90,part="crafts",verbs={roll="global",},every=7200,num=298,},deck_of_cards={name="deck of cards",size=90,part="toys",verbs={roll="global",},every=7200,num=299,},donut={name="donut",size=90,part="food",verbs={roll="global",},every=7200,num=300,},floppy_disk={name="floppy disk",size=90,part="electronics",verbs={roll="global",},every=7200,num=301,},glue_stick={name="glue stick",size=90,part="crafts",verbs={roll="global",},every=7200,num=302,},hinge={name="hinge",size=90,part="hardware",verbs={roll="global",},every=7200,num=303,},hummingbird={name="hummingbird",size=90,part="animals",verbs={roll="global",},every=7200,num=304,},id_badge={name="id badge",size=90,part="crafts",verbs={roll="global",},every=7200,num=305,},pear={name="pear",size=90,part="food",verbs={roll="global",},every=7200,num=306,},polaroid={name="polaroid",size=90,part="crafts",verbs={roll="global",},every=7200,num=307,},pomegranate={name="pomegranate",size=90,part="food",verbs={roll="global",},every=7200,num=308,},potato={name="potato",size=90,part="food",verbs={roll="global",},every=7200,num=309,},salt_shaker={name="salt shaker",size=90,part="household",verbs={roll="global",},every=7200,num=310,},soap={name="soap",size=90,part="household",verbs={roll="global",},every=7200,num=311,},spark_plug={name="spark plug",size=90,part="hardware",verbs={roll="global",},every=7200,num=312,},teacup={name="teacup",size=90,part="household",verbs={roll="global",},every=7200,num=313,},toad={name="toad",size=90,part="animals",verbs={roll="global",},every=7200,num=314,},softball={name="softball",size=95,part="toys",verbs={roll="global",},every=7200,num=315,},avocado={name="avocado",size=100,part="food",verbs={roll="global",},every=7200,num=316,},baby_shoe={name="baby shoe",size=100,part="clothes",verbs={roll="global",},every=7200,num=317,},bagel={name="bagel",size=100,part="food",verbs={roll="global",},every=7200,num=318,},bell={name="bell",size=100,part="instruments",verbs={roll="global",},every=7200,num=319,},bell_pepper={name="bell pepper",size=100,part="food",verbs={roll="global",},every=7200,num=320,},cassette={name="cassette",size=100,part="electronics",verbs={roll="global",},every=7200,num=321,},coaster={name="coaster",size=100,part="household",verbs={roll="global",},every=7200,num=322,},coin_purse={name="coin purse",size=100,part="clothes",verbs={roll="global",},every=7200,num=323,},earthworm={name="earthworm",size=100,part="animals",verbs={roll="global",},every=7200,num=324,},flip_phone={name="flip phone",size=100,part="electronics",verbs={roll="global",},every=7200,num=325,},game_cartridge={name="game cartridge",size=100,part="toys",verbs={roll="global",},every=7200,num=326,},geode={name="geode",size=100,part="nature",verbs={roll="global",},every=7200,num=327,},harmonica={name="harmonica",size=100,part="instruments",verbs={roll="global",},every=7200,num=328,},juice_box={name="juice box",size=100,part="food",verbs={roll="global",},every=7200,num=329,},leaf={name="leaf",size=100,part="plants",variants=A{{key="red_leaf",name="red leaf",chance=200000,},{key="yellow_leaf",name="yellow leaf",chance=200000,},{key="brown_leaf",name="brown leaf",chance=150000,},{key="maple_leaf",name="maple leaf",chance=50000,},},verbs={roll="global",},every=7200,num=330,},lottery_ticket={name="lottery ticket",size=100,part="crafts",verbs={roll="global",},every=7200,num=331,},mug={name="mug",size=100,part="household",verbs={roll="global",},every=7200,num=332,},oyster={name="oyster",size=100,part="animals",verbs={roll="global",},every=7200,num=333,},perfume_bottle={name="perfume bottle",size=100,part="clothes",verbs={roll="global",},every=7200,num=334,},pickle={name="pickle",size=100,part="food",verbs={roll="global",},every=7200,num=335,},puffball={name="puffball",size=100,part="plants",verbs={roll="global",},every=7200,num=336,},roll_of_tape={name="roll of tape",size=100,part="crafts",verbs={roll="global",},every=7200,num=337,},rubber_duck={name="rubber duck",size=100,part="toys",variants=A{{key="pirate_rubber_duck",name="pirate rubber duck",chance=50000,},{key="golden_rubber_duck",name="golden rubber duck",chance=5000,},},verbs={roll="global",},every=7200,num=338,},snow_globe={name="snow globe",size=100,part="household",verbs={roll="global",},every=7200,num=339,},sponge={name="sponge",size=100,part="household",verbs={roll="global",},every=7200,num=340,},stone={name="stone",size=100,part="nature",verbs={roll="global",},every=7200,num=341,},computer_mouse={name="computer mouse",size=110,part="electronics",verbs={roll="global",},every=7200,num=342,},grapefruit={name="grapefruit",size=110,part="food",verbs={roll="global",},every=7200,num=343,},hamburger={name="hamburger",size=110,part="food",verbs={roll="global",},every=7200,num=344,},honey_jar={name="honey jar",size=110,part="food",verbs={roll="global",},every=7200,num=345,},light_bulb={name="light bulb",size=110,part="household",verbs={roll="global",},every=7200,num=346,},light_switch={name="light switch",size=110,part="household",verbs={roll="global",},every=7200,num=347,},paper_cup={name="paper cup",size=110,part="detritus",verbs={roll="global",},every=7200,num=348,},wallet={name="wallet",size=110,part="clothes",verbs={roll="global",},every=7200,num=349,},alarm_clock={name="alarm clock",size=120,part="household",verbs={roll="global",},every=7200,num=350,},ashtray={name="ashtray",size=120,part="household",verbs={roll="global",},every=7200,num=351,},bat={name="bat",size=120,part="animals",verbs={roll="global",},every=7200,num=352,},bow_tie={name="bow tie",size=120,part="clothes",verbs={roll="global",},every=7200,num=353,},camera={name="camera",size=120,part="electronics",verbs={roll="global",},every=7200,num=354,},can={name="can",size=120,part="detritus",verbs={roll="global",},every=7200,num=355,},cd={name="cd",size=120,part="electronics",verbs={roll="global",},every=7200,num=356,},cheese={name="cheese",size=120,part="food",verbs={roll="global",},every=7200,num=357,},gauge={name="gauge",size=120,part="hardware",verbs={roll="global",},every=7200,num=358,},hamster={name="hamster",size=120,part="animals",verbs={roll="global",},every=7200,num=359,},jar={name="jar",size=120,part="household",verbs={roll="global",},every=7200,num=360,},kazoo={name="kazoo",size=120,part="instruments",verbs={roll="global",},every=7200,num=361,},lollipop={name="lollipop",size=120,part="food",verbs={roll="global",},every=7200,num=362,},mango={name="mango",size=120,part="food",verbs={roll="global",},every=7200,num=363,},marker={name="marker",size=120,part="crafts",verbs={roll="global",},every=7200,num=364,},music_box={name="music box",size=120,part="instruments",verbs={roll="global",},every=7200,num=365,},ocarina={name="ocarina",size=120,part="instruments",verbs={roll="global",},every=7200,num=366,},outlet_cover={name="outlet cover",size=120,part="household",verbs={roll="global",},every=7200,num=367,},passport={name="passport",size=120,part="crafts",verbs={roll="global",},every=7200,num=368,},pretzel={name="pretzel",size=120,part="food",verbs={roll="global",},every=7200,num=369,},pulley={name="pulley",size=120,part="hardware",verbs={roll="global",},every=7200,num=370,},seed_packet={name="seed packet",size=120,part="plants",verbs={roll="global",},every=7200,num=371,},squeaky_toy={name="squeaky toy",size=120,part="toys",verbs={roll="global",},every=7200,num=372,},horseshoe={name="horseshoe",size=130,part="hardware",verbs={roll="global",},every=7200,num=373,},smoke_detector={name="smoke detector",size=130,part="household",verbs={roll="global",},every=7200,num=374,},candy_bar={name="candy bar",size=140,part="food",verbs={roll="global",},retired=true,event_only=true,every=7200,num=375,},croissant={name="croissant",size=140,part="food",verbs={roll="global",},every=7200,num=376,},pen={name="pen",size=140,part="crafts",verbs={roll="global",},every=7200,num=377,},reading_glasses={name="reading glasses",size=140,part="clothes",verbs={roll="global",},every=7200,num=378,},sandwich={name="sandwich",size=140,part="food",verbs={roll="global",},every=7200,num=379,},sunglasses={name="sunglasses",size=140,part="clothes",verbs={roll="global",},every=7200,num=380,},action_figure={name="action figure",size=150,part="toys",verbs={roll="global",},every=7200,num=381,},binoculars={name="binoculars",size=150,part="hardware",verbs={roll="global",},every=7200,num=382,},bowl={name="bowl",size=150,part="household",verbs={roll="global",},every=7200,num=383,},cactus={name="cactus",size=150,part="plants",verbs={roll="global",},every=7200,num=384,},calculator={name="calculator",size=150,part="electronics",verbs={roll="global",},every=7200,num=385,},candle={name="candle",size=150,part="household",verbs={roll="global",},every=7200,num=386,},cantaloupe={name="cantaloupe",size=150,part="food",verbs={roll="global",},every=7200,num=387,},chew_bone={name="chew bone",size=150,part="household",verbs={roll="global",},every=7200,num=388,},chipmunk={name="chipmunk",size=150,part="animals",verbs={roll="global",},every=7200,num=389,},cigar={name="cigar",size=150,part="household",verbs={roll="global",},every=7200,num=390,},circuit_board={name="circuit board",size=150,part="electronics",verbs={roll="global",},every=7200,num=391,},coconut={name="coconut",size=150,part="food",verbs={roll="global",},every=7200,num=392,},coffee_cup={name="coffee cup",size=150,part="household",verbs={roll="global",},every=7200,num=393,},comb={name="comb",size=150,part="clothes",verbs={roll="global",},every=7200,num=394,},coupon={name="coupon",size=150,part="crafts",verbs={roll="global",},every=7200,num=395,},feather={name="feather",size=150,part="nature",verbs={roll="global",},every=7200,num=396,},gear={name="gear",size=150,part="hardware",verbs={roll="global",},every=7200,num=397,},gourd={name="gourd",size=150,part="plants",verbs={roll="global",},every=7200,num=398,},hard_drive={name="hard drive",size=150,part="electronics",verbs={roll="global",},every=7200,num=399,},hose_nozzle={name="hose nozzle",size=150,part="hardware",verbs={roll="global",},every=7200,num=400,},hourglass={name="hourglass",size=150,part="household",verbs={roll="global",},every=7200,num=401,},joystick={name="joystick",size=150,part="electronics",verbs={roll="global",},every=7200,num=402,},lizard={name="lizard",size=150,part="animals",verbs={roll="global",},every=7200,num=403,},mole={name="mole",size=150,part="animals",verbs={roll="global",},every=7200,num=404,},parking_ticket={name="parking ticket",size=150,part="crafts",verbs={roll="global",},every=7200,num=405,},phone={name="phone",size=150,part="electronics",verbs={roll="global",},every=7200,num=406,},piggy_bank={name="piggy bank",size=150,part="household",verbs={roll="global",},every=7200,num=407,},popsicle={name="popsicle",size=150,part="food",verbs={roll="global",},every=7200,num=408,},postcard={name="postcard",size=150,part="crafts",verbs={roll="global",},every=7200,num=409,},razor={name="razor",size=150,part="clothes",verbs={roll="global",},every=7200,num=410,},receipt={name="receipt",size=150,part="detritus",verbs={roll="global",},every=7200,num=411,},saucer={name="saucer",size=150,part="household",verbs={roll="global",},every=7200,num=412,},sparrow={name="sparrow",size=150,part="animals",verbs={roll="global",},every=7200,num=413,},stapler={name="stapler",size=150,part="crafts",verbs={roll="global",},every=7200,num=414,},sunscreen={name="sunscreen",size=150,part="clothes",verbs={roll="global",},every=7200,num=415,},taco={name="taco",size=150,part="food",verbs={roll="global",},every=7200,num=416,},takeout={name="takeout box",size=150,part="detritus",verbs={roll="global",},every=7200,num=417,},tile={name="tile",size=150,part="hardware",verbs={roll="global",},every=7200,num=418,},valve={name="valve",size=150,part="hardware",verbs={roll="global",},every=7200,num=419,},zip_tie={name="zip tie",size=150,part="hardware",verbs={roll="global",},every=7200,num=420,},game_controller={name="game controller",size=160,part="electronics",verbs={roll="global",},every=7200,num=421,},hot_dog={name="hot dog",size=170,part="food",verbs={roll="global",},every=7200,num=422,},banana_peel={name="banana peel",size=180,part="detritus",verbs={roll="global",},every=7200,num=423,},cabbage={name="cabbage",size=180,part="food",verbs={roll="global",},every=7200,num=424,},carrot={name="carrot",size=180,part="food",verbs={roll="global",},every=7200,num=425,},crab={name="crab",size=180,part="animals",verbs={roll="global",},every=7200,num=426,},ice_cream_cone={name="ice cream cone",size=180,part="food",verbs={roll="global",},every=7200,num=427,},paperback={name="paperback",size=180,part="crafts",verbs={roll="global",},every=7200,num=428,},pencil={name="pencil",size=180,part="crafts",verbs={roll="global",},every=7200,num=429,},pliers={name="pliers",size=180,part="hardware",verbs={roll="global",},every=7200,num=430,},remote_control={name="remote control",size=180,part="electronics",verbs={roll="global",},every=7200,num=431,},spoon={name="spoon",size=180,part="household",verbs={roll="global",},every=7200,num=432,},fork={name="fork",size=190,part="household",verbs={roll="global",},every=7200,num=433,},paint_can={name="paint can",size=190,part="hardware",verbs={roll="global",},every=7200,num=434,},toothbrush={name="toothbrush",size=190,part="household",verbs={roll="global",},every=7200,num=435,},vhs_tape={name="vhs tape",size=190,part="electronics",verbs={roll="global",},every=7200,num=436,},birch_bark={name="birch bark",size=200,part="plants",verbs={roll="global",},every=7200,num=437,},bird_nest={name="bird nest",size=200,part="nature",verbs={roll="global",},every=7200,num=438,},bone={name="bone",size=200,part="nature",verbs={roll="global",},every=7200,num=439,},brick={name="brick",size=200,part="hardware",verbs={roll="global",},every=7200,num=440,},bubble_wand={name="bubble wand",size=200,part="toys",verbs={roll="global",},every=7200,num=441,},burrito={name="burrito",size=200,part="food",verbs={roll="global",},every=7200,num=442,},butter_knife={name="butter knife",size=200,part="household",verbs={roll="global",},every=7200,num=443,},canteen={name="canteen",size=200,part="household",verbs={roll="global",},every=7200,num=444,},conch={name="conch",size=200,part="nature",verbs={roll="global",},every=7200,num=445,},cucumber={name="cucumber",size=200,part="food",verbs={roll="global",},every=7200,num=446,},dog_bowl={name="dog bowl",size=200,part="household",verbs={roll="global",},every=7200,num=447,},ear_of_corn={name="ear of corn",size=200,part="food",verbs={roll="global",},every=7200,num=448,},eggplant={name="eggplant",size=200,part="food",verbs={roll="global",},every=7200,num=449,},flashlight={name="flashlight",size=200,part="hardware",verbs={roll="global",},every=7200,num=450,},flower_pot={name="flower pot",size=200,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=451,},folded_map={name="folded map",size=200,part="crafts",verbs={roll="global",},every=7200,num=452,},headphones={name="headphones",size=200,part="electronics",verbs={roll="global",},every=7200,num=453,},ketchup_bottle={name="ketchup bottle",size=200,part="food",verbs={roll="global",},every=7200,num=454,},lettuce={name="lettuce",size=200,part="food",verbs={roll="global",},every=7200,num=455,},magnifying_glass={name="magnifying glass",size=200,part="hardware",verbs={roll="global",},every=7200,num=456,},milk_carton={name="milk carton",size=200,part="food",verbs={roll="global",},every=7200,num=457,},mitten={name="mitten",size=200,part="clothes",verbs={roll="global",},every=7200,num=458,},napkin={name="napkin",size=200,part="detritus",verbs={roll="global",},every=7200,num=459,},paintbrush={name="paintbrush",size=200,part="hardware",verbs={roll="global",},every=7200,num=460,},pepper_mill={name="pepper mill",size=200,part="household",verbs={roll="global",},every=7200,num=461,},router={name="router",size=200,part="electronics",verbs={roll="global",},every=7200,num=462,},sand_shovel={name="sand shovel",size=200,part="toys",verbs={roll="global",},every=7200,num=463,},scissors={name="scissors",size=200,part="crafts",verbs={roll="global",},every=7200,num=464,},screwdriver={name="screwdriver",size=200,part="hardware",verbs={roll="global",},every=7200,num=465,},shampoo_bottle={name="shampoo bottle",size=200,part="household",verbs={roll="global",},every=7200,num=466,},skull={name="skull",size=200,part="nature",verbs={roll="global",},every=7200,num=467,},spray_can={name="spray can",size=200,part="hardware",verbs={roll="global",},every=7200,num=468,},sprinkler={name="sprinkler",size=200,part="hardware",verbs={roll="global",},every=7200,num=469,},starfish={name="starfish",size=200,part="animals",verbs={roll="global",},every=7200,num=470,},straw={name="straw",size=200,part="detritus",verbs={roll="global",},every=7200,num=471,},telephone={name="telephone",size=200,part="electronics",verbs={roll="global",},every=7200,num=472,},twig={name="twig",size=200,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=473,},walkie_talkie={name="walkie-talkie",size=200,part="electronics",verbs={roll="global",},every=7200,num=474,},notebook={name="notebook",size=210,part="crafts",verbs={roll="global",},every=7200,num=475,},starling={name="starling",size=210,part="animals",verbs={roll="global",},every=7200,num=476,},volleyball={name="volleyball",size=210,part="toys",verbs={roll="global",},every=7200,num=477,},beanie={name="beanie",size=220,part="clothes",verbs={roll="global",},every=7200,num=478,},bowling_ball={name="bowling ball",size=220,part="toys",verbs={roll="global",},every=7200,num=479,},cardinal={name="cardinal",size=220,part="animals",verbs={roll="global",},every=7200,num=480,},envelope={name="envelope",size=220,part="crafts",verbs={roll="global",},every=7200,num=481,},rat={name="rat",size=220,part="animals",verbs={roll="global",},every=7200,num=482,},soccer_ball={name="soccer ball",size=220,part="toys",verbs={roll="global",},every=7200,num=483,},sock={name="sock",size=220,part="clothes",verbs={roll="global",},every=7200,num=484,},teapot={name="teapot",size=220,part="household",verbs={roll="global",},every=7200,num=485,},water_bottle={name="water bottle",size=220,part="household",verbs={roll="global",},every=7200,num=486,},beer_bottle={name="beer bottle",size=230,part="detritus",verbs={roll="global",},every=7200,num=487,},chopstick={name="chopstick",size=230,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=488,},hairbrush={name="hairbrush",size=230,part="clothes",verbs={roll="global",},every=7200,num=489,},pie={name="pie",size=230,part="food",verbs={roll="global",},every=7200,num=490,},basketball={name="basketball",size=240,part="toys",verbs={roll="global",},every=7200,num=491,},glove={name="glove",size=240,part="clothes",verbs={roll="global",},every=7200,num=492,},baseball_cap={name="baseball cap",size=250,part="clothes",verbs={roll="global",},every=7200,num=493,},bonsai={name="bonsai",size=250,part="plants",verbs={roll="global",},every=7200,num=494,},bucket={name="bucket",size=250,part="household",verbs={roll="global",},every=7200,num=495,},cake={name="cake",size=250,part="food",verbs={roll="global",},every=7200,num=496,},chihuahua={name="chihuahua",size=250,part="animals",verbs={roll="global",},every=7200,num=497,},dandelion={name="dandelion",size=250,part="plants",verbs={roll="global",},every=7200,num=498,},fish={name="fish",size=250,part="animals",verbs={roll="global",},every=7200,num=499,},flyer={name="flyer",size=250,part="crafts",verbs={roll="global",},every=7200,num=500,},folding_fan={name="folding fan",size=250,part="clothes",verbs={roll="global",},every=7200,num=501,},grave_vase={name="grave vase",size=250,part="household",verbs={roll="global",},every=7200,num=502,},hardcover={name="hardcover",size=250,part="crafts",verbs={roll="global",},every=7200,num=503,},high_heel={name="high heel",size=250,part="clothes",verbs={roll="global",},every=7200,num=504,},jellyfish={name="jellyfish",size=250,part="animals",verbs={roll="global",},every=7200,num=505,},kitten={name="kitten",size=250,part="animals",verbs={roll="global",},every=7200,num=506,},lily_pad={name="lily pad",size=250,part="plants",verbs={roll="global",},every=7200,num=507,},lunchbox={name="lunchbox",size=250,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=508,},maraca={name="maraca",size=250,part="instruments",verbs={roll="global",},retired=true,event_only=true,every=7200,num=509,},nameplate={name="nameplate",size=250,part="crafts",verbs={roll="global",},every=7200,num=510,},picture_frame={name="picture frame",size=250,part="household",verbs={roll="global",},every=7200,num=511,},pinwheel={name="pinwheel",size=250,part="toys",verbs={roll="global",},every=7200,num=512,},pizza_slice={name="pizza slice",size=250,part="food",verbs={roll="global",},every=7200,num=513,},radio={name="radio",size=250,part="electronics",verbs={roll="global",},every=7200,num=514,},robin={name="robin",size=250,part="animals",verbs={roll="global",},every=7200,num=515,},salami={name="salami",size=250,part="food",verbs={roll="global",},every=7200,num=516,},soda_bottle={name="soda bottle",size=250,part="detritus",verbs={roll="global",},every=7200,num=517,},tablet={name="tablet",size=250,part="electronics",verbs={roll="global",},every=7200,num=518,},tambourine={name="tambourine",size=250,part="instruments",verbs={roll="global",},every=7200,num=519,},thermos={name="thermos",size=250,part="household",verbs={roll="global",},every=7200,num=520,},trophy={name="trophy",size=250,part="valuables",verbs={roll="global",},every=7200,num=521,},tulip={name="tulip",size=250,part="plants",verbs={roll="global",},every=7200,num=522,},turtle={name="turtle",size=250,part="animals",verbs={roll="global",},every=7200,num=523,},water_gun={name="water gun",size=250,part="toys",verbs={roll="global",},every=7200,num=524,},whisk={name="whisk",size=250,part="household",verbs={roll="global",},every=7200,num=525,},wrench={name="wrench",size=250,part="hardware",verbs={roll="global",},every=7200,num=526,},comic_book={name="comic book",size=260,part="crafts",verbs={roll="global",},every=7200,num=527,},flip_flop={name="flip-flop",size=260,part="clothes",verbs={roll="global",},every=7200,num=528,},plate={name="plate",size=260,part="household",verbs={roll="global",},every=7200,num=529,},slipper={name="slipper",size=260,part="clothes",verbs={roll="global",},every=7200,num=530,},frisbee={name="frisbee",size=270,part="toys",verbs={roll="global",},every=7200,num=531,},baseball_glove={name="baseball glove",size=280,part="toys",verbs={roll="global",},every=7200,num=532,},blue_jay={name="blue jay",size=280,part="animals",verbs={roll="global",},every=7200,num=533,},bread={name="bread",size=280,part="food",verbs={roll="global",},every=7200,num=534,},cereal_box={name="cereal box",size=280,part="food",verbs={roll="global",},every=7200,num=535,},football={name="football",size=280,part="toys",verbs={roll="global",},every=7200,num=536,},letter={name="letter",size=280,part="crafts",verbs={roll="global",},every=7200,num=537,},magazine={name="magazine",size=280,part="crafts",verbs={roll="global",},every=7200,num=538,},paper_bag={name="paper bag",size=280,part="detritus",verbs={roll="global",},every=7200,num=539,},pineapple={name="pineapple",size=280,part="food",verbs={roll="global",},every=7200,num=540,},saucepan={name="saucepan",size=280,part="household",verbs={roll="global",},every=7200,num=541,},shoe={name="shoe",size=280,part="clothes",verbs={roll="global",},every=7200,num=542,},egg_carton={name="egg carton",size=290,part="detritus",verbs={roll="global",},every=7200,num=543,},hammer={name="hammer",size=290,part="hardware",verbs={roll="global",},every=7200,num=544,},ladle={name="ladle",size=290,part="household",verbs={roll="global",},every=7200,num=545,},sneaker={name="sneaker",size=290,part="clothes",verbs={roll="global",},every=7200,num=546,},trowel={name="trowel",size=290,part="hardware",verbs={roll="global",},every=7200,num=547,},wine_bottle={name="wine bottle",size=290,part="food",verbs={roll="global",},every=7200,num=548,},balloon={name="balloon",size=300,part="toys",variants=A{{key="red_balloon",name="red balloon",chance=200000,},{key="heart_balloon",name="heart balloon",chance=50000,},{key="deflated_balloon",name="deflated balloon",chance=100000,},},verbs={roll="global",},every=7200,num=549,},bike_helmet={name="bike helmet",size=300,part="toys",verbs={roll="global",},every=7200,num=550,},birdhouse={name="birdhouse",size=300,part="household",verbs={roll="global",},every=7200,num=551,},car_battery={name="car battery",size=300,part="hardware",verbs={roll="global",},every=7200,num=552,},drill={name="drill",size=300,part="hardware",verbs={roll="global",},every=7200,num=553,},fedora={name="fedora",size=300,part="clothes",verbs={roll="global",},every=7200,num=554,},garden_gnome={name="garden gnome",size=300,part="household",verbs={roll="global",},every=7200,num=555,},gift_box={name="gift box",size=300,part="household",verbs={roll="global",},every=7200,num=556,},hard_hat={name="hard hat",size=300,part="clothes",verbs={roll="global",},every=7200,num=557,},kettle={name="kettle",size=300,part="household",verbs={roll="global",},every=7200,num=558,},lantern={name="lantern",size=300,part="household",verbs={roll="global",},every=7200,num=559,},license_plate={name="license plate",size=300,part="vehicles",verbs={roll="global",},every=7200,num=560,},message_in_a_bottle={name="message in a bottle",size=300,part="detritus",verbs={roll="global",},every=7200,num=561,},mixing_bowl={name="mixing bowl",size=300,part="household",verbs={roll="global",},every=7200,num=562,},mourning_dove={name="mourning dove",size=300,part="animals",verbs={roll="global",},every=7200,num=563,},newspaper={name="newspaper",size=300,part="crafts",verbs={roll="global",},every=7200,num=564,},pigeon={name="pigeon",size=300,part="animals",variants=A{{key="white_pigeon",name="white pigeon",chance=40000,},{key="one_legged_pigeon",name="one-legged pigeon",chance=20000,},},verbs={roll="global",},every=7200,num=565,},wishing_coin={name="wishing coin",size=20,part="valuables",verbs={roll="global",},every=7200,num=4823,},foreign_coin={name="foreign coin",size=25,part="valuables",verbs={roll="global",},every=7200,num=4824,},lost_sandal={name="lost sandal",size=250,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=4825,},toy_sailboat={name="toy sailboat",size=300,part="toys",verbs={roll="global",},every=7200,num=4826,},transit_card={name="transit card",size=85,part="valuables",verbs={roll="global",},retired=true,event_only=true,every=7200,num=4827,},subway_map={name="subway map",size=400,part="crafts",verbs={roll="global",},every=7200,num=4828,},turnstile={name="turnstile",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=4829,},art_guidebook={name="art guidebook",size=200,part="crafts",verbs={roll="global",},every=7200,num=4830,},bronze_plaque={name="bronze plaque",size=500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=4831,},sculpture_model={name="sculpture model",size=400,part="crafts",verbs={roll="global",},every=7200,num=4832,},small_bell={name="small bell",size=80,part="instruments",verbs={roll="global",},retired=true,event_only=true,every=7200,num=4833,},bell_rope={name="bell rope",size=3000,part="hardware",verbs={roll="global",},every=7200,num=4834,},rust_flake={name="rust flake",size=10,part="detritus",verbs={roll="global",},every=7200,num=4835,},ladder_rung={name="ladder rung",size=500,part="hardware",verbs={roll="global",},every=7200,num=4836,},red_beacon={name="red beacon",size=300,part="electronics",verbs={roll="global",},every=7200,num=4837,},plastic_flowers={name="plastic flowers",size=300,part="household",verbs={roll="global",},every=7200,num=566,},puppy={name="puppy",size=300,part="animals",verbs={roll="global",},every=7200,num=567,},purse={name="purse",size=300,part="clothes",verbs={roll="global",},every=7200,num=568,},ruler={name="ruler",size=300,part="crafts",verbs={roll="global",},every=7200,num=569,},shingle={name="shingle",size=300,part="hardware",verbs={roll="global",},every=7200,num=570,},side_mirror={name="side mirror",size=300,part="vehicles",verbs={roll="global",},every=7200,num=571,},toaster={name="toaster",size=300,part="household",verbs={roll="global",},every=7200,num=572,},vinyl_record={name="vinyl record",size=300,part="instruments",verbs={roll="global",},every=7200,num=573,},welding_mask={name="welding mask",size=300,part="hardware",verbs={roll="global",},every=7200,num=574,},wig={name="wig",size=300,part="clothes",verbs={roll="global",},every=7200,num=575,},recorder={name="recorder",size=320,part="instruments",verbs={roll="global",},every=7200,num=576,},bird_feeder={name="bird feeder",size=350,part="household",verbs={roll="global",},every=7200,num=577,},boot={name="boot",size=350,part="clothes",verbs={roll="global",},every=7200,num=578,},coffee_maker={name="coffee maker",size=350,part="household",verbs={roll="global",},every=7200,num=579,},doll={name="doll",size=350,part="toys",verbs={roll="global",},every=7200,num=580,},dustpan={name="dustpan",size=350,part="household",verbs={roll="global",},every=7200,num=581,},jack_o_lantern={name="jack-o'-lantern",size=350,part="plants",verbs={roll="global",},every=7200,event_only=true,num=582,},milk_crate={name="milk crate",size=350,part="detritus",verbs={roll="global",},every=7200,num=583,},paint_bucket={name="paint bucket",size=350,part="hardware",verbs={roll="global",},every=7200,num=584,},pumpkin={name="pumpkin",size=350,part="food",verbs={roll="global",},every=7200,num=585,},vase={name="vase",size=350,part="household",verbs={roll="global",},every=7200,num=586,},wall_clock={name="wall clock",size=350,part="household",verbs={roll="global",},every=7200,num=587,},watermelon={name="watermelon",size=350,part="food",verbs={roll="global",},every=7200,num=588,},bowling_pin={name="bowling pin",size=380,part="toys",verbs={roll="global",},every=7200,num=589,},steering_wheel={name="steering wheel",size=380,part="vehicles",verbs={roll="global",},every=7200,num=590,},antler={name="antler",size=400,part="nature",verbs={roll="global",},every=7200,num=591,},blender={name="blender",size=400,part="household",verbs={roll="global",},every=7200,num=592,},board_game={name="board game",size=400,part="toys",verbs={roll="global",},every=7200,num=593,},chessboard={name="chessboard",size=400,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=594,},cinder_block={name="cinder block",size=400,part="hardware",verbs={roll="global",},every=7200,num=595,},cutting_board={name="cutting board",size=400,part="household",verbs={roll="global",},every=7200,num=596,},drumstick={name="drumstick",size=400,part="instruments",verbs={roll="global",},every=7200,num=597,},duck={name="duck",size=400,part="animals",verbs={roll="global",},every=7200,num=598,},footstone={name="footstone",size=400,part="fixtures",verbs={roll="global",},every=7200,num=599,},globe={name="globe",size=400,part="household",verbs={roll="global",},every=7200,num=600,},hubcap={name="hubcap",size=400,part="vehicles",verbs={roll="global",},every=7200,num=601,},lobster={name="lobster",size=400,part="animals",verbs={roll="global",},every=7200,num=602,},memorial_flag={name="memorial flag",size=400,part="fixtures",verbs={roll="global",},every=7200,num=603,},mossy_rock={name="mossy rock",size=400,part="nature",verbs={roll="global",},every=7200,num=604,},pizza_box={name="pizza box",size=400,part="detritus",verbs={roll="global",},every=7200,num=605,},rabbit={name="rabbit",size=400,part="animals",verbs={roll="global",},every=7200,num=606,},rain_boot={name="rain boot",size=400,part="clothes",verbs={roll="global",},every=7200,num=607,},rose={name="rose",size=400,part="plants",verbs={roll="global",},every=7200,num=608,},seaweed={name="seaweed",size=400,part="plants",verbs={roll="global",},every=7200,num=609,},sewing_machine={name="sewing machine",size=400,part="household",verbs={roll="global",},every=7200,num=610,},snare_drum={name="snare drum",size=400,part="instruments",verbs={roll="global",},every=7200,num=611,},squirrel={name="squirrel",size=400,part="animals",variants=A{{key="black_squirrel",name="black squirrel",chance=80000,},{key="red_squirrel",name="red squirrel",chance=40000,},{key="albino_squirrel",name="albino squirrel",chance=5000,},},verbs={roll="global",},every=7200,num=612,},stack_of_newspapers={name="stack of newspapers",size=400,part="detritus",verbs={roll="global",},every=7200,num=613,},stockpot={name="stockpot",size=400,part="household",verbs={roll="global",},every=7200,num=614,},tackle_box={name="tackle box",size=400,part="toys",verbs={roll="global",},every=7200,num=615,},teddy_bear={name="teddy bear",size=400,part="toys",verbs={roll="global",},every=7200,num=616,},typewriter={name="typewriter",size=400,part="crafts",verbs={roll="global",},every=7200,num=617,},watering_can={name="watering can",size=400,part="household",verbs={roll="global",},every=7200,num=618,},accordion={name="accordion",size=450,part="instruments",verbs={roll="global",},every=7200,num=619,},bouquet={name="bouquet",size=450,part="plants",verbs={roll="global",},every=7200,num=620,},briefcase={name="briefcase",size=450,part="clothes",verbs={roll="global",},every=7200,num=621,},cat={name="cat",size=450,part="animals",variants=A{{key="tabby_cat",name="tabby cat",chance=250000,},{key="ginger_cat",name="ginger cat",chance=200000,},{key="tuxedo_cat",name="tuxedo cat",chance=100000,},},verbs={roll="global",},every=7200,num=622,},chicken={name="chicken",size=450,part="animals",verbs={roll="global",},every=7200,num=623,},crow={name="crow",size=450,part="animals",verbs={roll="global",},every=7200,num=624,},fern={name="fern",size=450,part="plants",verbs={roll="global",},every=7200,num=625,},frying_pan={name="frying pan",size=450,part="household",verbs={roll="global",},every=7200,num=626,},keyboard={name="keyboard",size=450,part="electronics",verbs={roll="global",},every=7200,num=627,},picnic_basket={name="picnic basket",size=450,part="household",verbs={roll="global",},every=7200,num=628,},record_player={name="record player",size=450,part="electronics",verbs={roll="global",},every=7200,num=629,},rolling_pin={name="rolling pin",size=450,part="household",verbs={roll="global",},every=7200,num=630,},shopping_bag={name="shopping bag",size=450,part="household",verbs={roll="global",},every=7200,num=631,},space_heater={name="space heater",size=450,part="household",verbs={roll="global",},every=7200,num=632,},stick={name="stick",size=450,part="plants",verbs={roll="global",},every=7200,num=633,},backpack={name="backpack",size=500,part="clothes",verbs={roll="global",},every=7200,num=634,},beach_ball={name="beach ball",size=500,part="toys",verbs={roll="global",},every=7200,num=635,},busted_tv={name="busted tv",size=500,part="electronics",verbs={roll="global",},every=7200,num=636,},cardboard_box={name="cardboard box",size=500,part="detritus",verbs={roll="global",},every=7200,num=637,},coil_of_rope={name="coil of rope",size=500,part="hardware",verbs={roll="global",},every=7200,num=638,},fan={name="fan",size=500,part="household",verbs={roll="global",},every=7200,num=639,},koi={name="koi",size=500,part="animals",verbs={roll="global",},every=7200,num=640,},microwave={name="microwave",size=500,part="household",verbs={roll="global",},every=7200,num=641,},mop_bucket={name="mop bucket",size=500,part="household",verbs={roll="global",},every=7200,num=642,},owl={name="owl",size=500,part="animals",verbs={roll="global",},every=7200,num=643,},pillow={name="pillow",size=500,part="household",verbs={roll="global",},every=7200,num=644,},printer={name="printer",size=500,part="electronics",verbs={roll="global",},every=7200,num=645,},seagull={name="seagull",size=500,part="animals",verbs={roll="global",},every=7200,num=646,},speaker={name="speaker",size=500,part="electronics",verbs={roll="global",},every=7200,num=647,},toolbox={name="toolbox",size=500,part="hardware",verbs={roll="global",},every=7200,num=648,},trumpet={name="trumpet",size=500,part="instruments",verbs={roll="global",},every=7200,num=649,},urn={name="urn",size=500,part="household",verbs={roll="global",},every=7200,num=650,},groundhog={name="groundhog",size=550,part="animals",verbs={roll="global",},every=7200,num=651,},hawk={name="hawk",size=550,part="animals",verbs={roll="global",},every=7200,num=652,},ukulele={name="ukulele",size=550,part="instruments",verbs={roll="global",},every=7200,num=653,},amplifier={name="amplifier",size=600,part="instruments",verbs={roll="global",},every=7200,num=654,},bag_of_cement={name="bag of cement",size=600,part="hardware",verbs={roll="global",},every=7200,num=655,},boombox={name="boombox",size=600,part="electronics",verbs={roll="global",},every=7200,num=656,},computer_monitor={name="computer monitor",size=600,part="electronics",verbs={roll="global",},every=7200,num=657,},cooler={name="cooler",size=600,part="household",verbs={roll="global",},every=7200,num=658,},crate={name="crate",size=600,part="hardware",verbs={roll="global",},every=7200,num=659,},driftwood={name="driftwood",size=600,part="nature",verbs={roll="global",},every=7200,num=660,},garter_snake={name="garter snake",size=600,part="animals",verbs={roll="global",},every=7200,num=661,},ivy={name="ivy",size=600,part="plants",verbs={roll="global",},every=7200,num=662,},lamp={name="lamp",size=600,part="household",verbs={roll="global",},every=7200,num=663,},laundry_basket={name="laundry basket",size=600,part="household",verbs={roll="global",},every=7200,num=664,},life_jacket={name="life jacket",size=600,part="toys",verbs={roll="global",},every=7200,num=665,},manhole_cover={name="manhole cover",size=600,part="fixtures",verbs={roll="global",},every=7200,num=666,},poodle={name="poodle",size=600,part="animals",verbs={roll="global",},every=7200,num=667,},potted_plant={name="potted plant",size=600,part="plants",verbs={roll="global",},every=7200,num=668,},rooster={name="rooster",size=600,part="animals",verbs={roll="global",},every=7200,num=669,},sandbag={name="sandbag",size=600,part="hardware",verbs={roll="global",},every=7200,num=670,},side_table={name="side table",size=600,part="household",verbs={roll="global",},every=7200,num=671,},skunk={name="skunk",size=600,part="animals",verbs={roll="global",},every=7200,num=672,},stray_dog={name="stray dog",size=600,part="animals",verbs={roll="global",},every=7200,num=673,},stump={name="stump",size=600,part="plants",verbs={roll="global",},every=7200,num=674,},tumbleweed={name="tumbleweed",size=600,part="plants",verbs={roll="global",},every=7200,num=675,},violin={name="violin",size=600,part="instruments",verbs={roll="global",},every=7200,num=676,},wreath={name="wreath",size=600,part="plants",verbs={roll="global",},every=7200,num=677,},clarinet={name="clarinet",size=650,part="instruments",verbs={roll="global",},every=7200,num=678,},tire={name="tire",size=650,part="vehicles",verbs={roll="global",},every=7200,num=679,},bicycle_wheel={name="bicycle wheel",size=700,part="vehicles",verbs={roll="global",},every=7200,num=680,},dog={name="dog",size=700,part="animals",verbs={roll="global",},every=7200,num=681,},doormat={name="doormat",size=700,part="household",verbs={roll="global",},every=7200,num=682,},duffel_bag={name="duffel bag",size=700,part="clothes",verbs={roll="global",},every=7200,num=683,},lamb={name="lamb",size=700,part="animals",verbs={roll="global",},every=7200,num=684,},milk_can={name="milk can",size=700,part="household",verbs={roll="global",},every=7200,num=685,},opossum={name="opossum",size=700,part="animals",verbs={roll="global",},every=7200,num=686,},pinata={name="pinata",size=700,part="toys",verbs={roll="global",},every=7200,num=687,},porcupine={name="porcupine",size=700,part="animals",verbs={roll="global",},every=7200,num=688,},raccoon={name="raccoon",size=700,part="animals",verbs={roll="global",},every=7200,num=689,},safety_vest={name="safety vest",size=700,part="clothes",verbs={roll="global",},every=7200,num=690,},saxophone={name="saxophone",size=700,part="instruments",verbs={roll="global",},every=7200,num=691,},stool={name="stool",size=700,part="household",verbs={roll="global",},every=7200,num=692,},storm_drain_grate={name="storm drain grate",size=700,part="fixtures",verbs={roll="global",},every=7200,num=693,},suitcase={name="suitcase",size=700,part="clothes",verbs={roll="global",},every=7200,num=694,},tennis_racket={name="tennis racket",size=700,part="toys",verbs={roll="global",},every=7200,num=695,},traffic_cone={name="traffic cone",size=700,part="fixtures",verbs={roll="global",},every=7200,num=696,},trash_bag={name="trash bag",size=700,part="detritus",verbs={roll="global",},every=7200,num=697,},tricycle={name="tricycle",size=700,part="vehicles",verbs={roll="global",},every=7200,num=698,},vulture={name="vulture",size=700,part="animals",verbs={roll="global",},every=7200,num=699,},fire_hydrant={name="fire hydrant",size=750,part="fixtures",verbs={roll="global",},every=7200,num=700,},bobcat={name="bobcat",size=800,part="animals",verbs={roll="global",},every=7200,num=701,},chainsaw={name="chainsaw",size=800,part="hardware",verbs={roll="global",},every=7200,num=702,},dollhouse={name="dollhouse",size=800,part="toys",verbs={roll="global",},every=7200,num=703,},plastic_flamingo={name="plastic flamingo",size=800,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=704,},skateboard={name="skateboard",size=800,part="toys",verbs={roll="global",},every=7200,num=705,},baseball_bat={name="baseball bat",size=850,part="toys",verbs={roll="global",},every=7200,num=706,},black_umbrella={name="black umbrella",size=900,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=707,},chair={name="chair",size=900,part="household",verbs={roll="global",},every=7200,num=708,},fox={name="fox",size=900,part="animals",verbs={roll="global",},every=7200,num=709,},inner_tube={name="inner tube",size=900,part="toys",verbs={roll="global",},every=7200,num=710,},lawn_chair={name="lawn chair",size=900,part="household",verbs={roll="global",},every=7200,num=711,},leaf_blower={name="leaf blower",size=900,part="hardware",verbs={roll="global",},every=7200,num=712,},oil_drum={name="oil drum",size=900,part="hardware",verbs={roll="global",},every=7200,num=713,},sawhorse={name="sawhorse",size=900,part="hardware",verbs={roll="global",},every=7200,num=714,},scooter={name="scooter",size=900,part="vehicles",verbs={roll="global",},every=7200,num=715,},toy_chest={name="toy chest",size=900,part="toys",verbs={roll="global",},every=7200,num=716,},umbrella={name="umbrella",size=900,part="clothes",verbs={roll="global",},every=7200,num=717,},banjo={name="banjo",size=950,part="instruments",verbs={roll="global",},every=7200,num=718,},beaver={name="beaver",size=1000,part="animals",verbs={roll="global",},every=7200,num=719,},bollard={name="bollard",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=720,},cable_spool={name="cable spool",size=1000,part="hardware",verbs={roll="global",},every=7200,num=721,},chain={name="chain",size=1000,part="hardware",verbs={roll="global",},every=7200,num=722,},coyote={name="coyote",size=1000,part="animals",verbs={roll="global",},every=7200,num=723,},eel={name="eel",size=1000,part="animals",verbs={roll="global",},every=7200,num=724,},gravestone={name="gravestone",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=725,},guitar={name="guitar",size=1000,part="instruments",verbs={roll="global",},every=7200,num=726,},heron={name="heron",size=1000,part="animals",verbs={roll="global",},every=7200,num=727,},kite={name="kite",size=1000,part="toys",verbs={roll="global",},every=7200,num=728,},muffler={name="muffler",size=1000,part="vehicles",verbs={roll="global",},every=7200,num=729,},otter={name="otter",size=1000,part="animals",verbs={roll="global",},every=7200,num=730,},pipe={name="pipe",size=1000,part="hardware",verbs={roll="global",},every=7200,num=731,},recycling_bin={name="recycling bin",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=732,},red_wagon={name="red wagon",size=1000,part="toys",verbs={roll="global",},every=7200,num=733,},rocking_horse={name="rocking horse",size=1000,part="toys",verbs={roll="global",},every=7200,num=734,},sandwich_board={name="sandwich board",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=735,},shopping_cart={name="shopping cart",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=736,},stove={name="stove",size=1000,part="household",verbs={roll="global",},every=7200,num=737,},stroller={name="stroller",size=1000,part="vehicles",verbs={roll="global",},every=7200,num=738,},television={name="television",size=1000,part="electronics",verbs={roll="global",},every=7200,num=739,},trash_can={name="trash can",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=740,},tuba={name="tuba",size=1000,part="instruments",verbs={roll="global",},every=7200,num=741,},turkey={name="turkey",size=1000,part="animals",verbs={roll="global",},every=7200,num=742,},washing_machine={name="washing machine",size=1000,part="household",verbs={roll="global",},every=7200,num=743,},weather_vane={name="weather vane",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=744,},wedding_cake={name="wedding cake",size=1000,part="food",verbs={roll="global",},every=7200,num=745,},golf_club={name="golf club",size=1100,part="toys",verbs={roll="global",},every=7200,num=746,},guitar_case={name="guitar case",size=1100,part="instruments",verbs={roll="global",},every=7200,num=747,},newspaper_box={name="newspaper box",size=1100,part="fixtures",verbs={roll="global",},every=7200,num=748,},office_chair={name="office chair",size=1100,part="household",verbs={roll="global",},every=7200,num=749,},vacuum={name="vacuum",size=1100,part="household",verbs={roll="global",},every=7200,num=750,},barricade={name="barricade",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=751,},boulder={name="boulder",size=1200,part="nature",verbs={roll="global",},every=7200,num=752,},buoy={name="buoy",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=753,},bush={name="bush",size=1200,part="plants",verbs={roll="global",},every=7200,num=754,},car_door={name="car door",size=1200,part="vehicles",verbs={roll="global",},every=7200,num=755,},cattail={name="cattail",size=1200,part="plants",verbs={roll="global",},every=7200,num=756,},crib={name="crib",size=1200,part="household",verbs={roll="global",},every=7200,num=757,},goat={name="goat",size=1200,part="animals",verbs={roll="global",},every=7200,num=758,},gumball_machine={name="gumball machine",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=759,},hay_bale={name="hay bale",size=1200,part="plants",verbs={roll="global",},every=7200,num=760,},log={name="log",size=1200,part="plants",verbs={roll="global",},every=7200,num=761,},paddle={name="paddle",size=1200,part="toys",verbs={roll="global",},every=7200,num=762,},pallet={name="pallet",size=1200,part="hardware",verbs={roll="global",},every=7200,num=763,},sled={name="sled",size=1200,part="toys",verbs={roll="global",},every=7200,num=764,},trombone={name="trombone",size=1200,part="instruments",verbs={roll="global",},every=7200,num=765,},cello={name="cello",size=1250,part="instruments",verbs={roll="global",},every=7200,num=766,},mailbox={name="mailbox",size=1300,part="fixtures",verbs={roll="global",},every=7200,num=767,},sheep={name="sheep",size=1300,part="animals",verbs={roll="global",},every=7200,num=768,},stone_cross={name="stone cross",size=1300,part="fixtures",verbs={roll="global",},every=7200,num=769,},swan={name="swan",size=1300,part="animals",verbs={roll="global",},every=7200,num=770,},broom={name="broom",size=1400,part="household",verbs={roll="global",},every=7200,num=771,},fence_post={name="fence post",size=1400,part="fixtures",verbs={roll="global",},every=7200,num=772,},fishing_rod={name="fishing rod",size=1400,part="toys",verbs={roll="global",},every=7200,num=773,},foosball_table={name="foosball table",size=1400,part="toys",verbs={roll="global",},every=7200,num=774,},great_dane={name="great dane",size=1400,part="animals",verbs={roll="global",},every=7200,num=775,},hockey_stick={name="hockey stick",size=1400,part="toys",verbs={roll="global",},every=7200,num=776,},ironing_board={name="ironing board",size=1400,part="household",verbs={roll="global",},every=7200,num=777,},mop={name="mop",size=1400,part="household",verbs={roll="global",},every=7200,num=778,},oar={name="oar",size=1400,part="toys",verbs={roll="global",},every=7200,num=779,},parking_meter={name="parking meter",size=1400,part="fixtures",verbs={roll="global",},every=7200,num=780,},pig={name="pig",size=1400,part="animals",verbs={roll="global",},every=7200,num=781,},pitchfork={name="pitchfork",size=1400,part="hardware",verbs={roll="global",},every=7200,num=782,},pool_noodle={name="pool noodle",size=1400,part="toys",verbs={roll="global",},every=7200,num=783,},shovel={name="shovel",size=1400,part="hardware",verbs={roll="global",},every=7200,num=784,},wheelbarrow={name="wheelbarrow",size=1400,part="hardware",verbs={roll="global",},every=7200,num=785,},air_conditioner={name="air conditioner",size=1500,part="household",verbs={roll="global",},every=7200,num=786,},doghouse={name="doghouse",size=1500,part="household",verbs={roll="global",},every=7200,num=787,},generator={name="generator",size=1500,part="hardware",verbs={roll="global",},every=7200,num=788,},pelican={name="pelican",size=1500,part="animals",verbs={roll="global",},every=7200,num=789,},piano={name="piano",size=1500,part="instruments",verbs={roll="global",},every=7200,num=790,},snowboard={name="snowboard",size=1500,part="toys",verbs={roll="global",},every=7200,num=791,},stone_lion={name="stone lion",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=792,},trail_sign={name="trail sign",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=793,},water_heater={name="water heater",size=1500,part="household",verbs={roll="global",},every=7200,num=794,},alpaca={name="alpaca",size=1600,part="animals",verbs={roll="global",},every=7200,num=795,},floor_lamp={name="floor lamp",size=1600,part="household",verbs={roll="global",},every=7200,num=796,},grandma={name="grandma",size=1600,part="people",verbs={roll="global",},every=7200,num=797,},jukebox={name="jukebox",size=1600,part="instruments",verbs={roll="global",},every=7200,num=798,},rake={name="rake",size=1600,part="hardware",verbs={roll="global",},every=7200,num=799,},snowman={name="snowman",size=1600,part="toys",variants=A{{key="snowman_with_a_carrot_nose",name="snowman with a carrot nose",chance=200000,},{key="melting_snowman",name="melting snowman",chance=150000,},},verbs={roll="global",},every=7200,event_only=true,num=800,},stone_angel={name="stone angel",size=1600,part="fixtures",verbs={roll="global",},every=7200,num=801,},nun={name="nun",size=1650,part="people",verbs={roll="global",},every=7200,num=802,},bathtub={name="bathtub",size=1700,part="household",verbs={roll="global",},every=7200,num=803,},bicycle={name="bicycle",size=1700,part="vehicles",verbs={roll="global",},every=7200,num=804,},cash_machine={name="cash machine",size=1700,part="fixtures",verbs={roll="global",},every=7200,num=805,},crossing_guard={name="crossing guard",size=1700,part="people",verbs={roll="global",},every=7200,num=806,},gardener={name="gardener",size=1700,part="people",verbs={roll="global",},every=7200,num=807,},librarian={name="librarian",size=1700,part="people",verbs={roll="global",},every=7200,num=808,},mime={name="mime",size=1700,part="people",verbs={roll="global",},every=7200,num=809,},mourner={name="mourner",size=1700,part="people",verbs={roll="global",},every=7200,num=810,},old_fridge={name="old fridge",size=1700,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=811,},seal={name="seal",size=1700,part="animals",verbs={roll="global",},every=7200,num=812,},skis={name="skis",size=1700,part="toys",verbs={roll="global",},every=7200,num=813,},student={name="student",size=1700,part="people",verbs={roll="global",},every=7200,num=814,},tourist={name="tourist",size=1700,part="people",verbs={roll="global",},every=7200,num=815,},angler={name="angler",size=1750,part="people",verbs={roll="global",},every=7200,num=816,},bus_driver={name="bus driver",size=1750,part="people",verbs={roll="global",},every=7200,num=817,},chef={name="chef",size=1750,part="people",verbs={roll="global",},every=7200,num=818,},dog_walker={name="dog walker",size=1750,part="people",verbs={roll="global",},every=7200,num=819,},groundskeeper={name="groundskeeper",size=1750,part="people",verbs={roll="global",},every=7200,num=820,},ice_cream_vendor={name="ice cream vendor",size=1750,part="people",verbs={roll="global",},every=7200,num=821,},janitor={name="janitor",size=1750,part="people",verbs={roll="global",},every=7200,num=822,},jogger={name="jogger",size=1750,part="people",verbs={roll="global",},every=7200,num=823,},mail_carrier={name="mail carrier",size=1750,part="people",verbs={roll="global",},every=7200,num=824,},painter={name="painter",size=1750,part="people",verbs={roll="global",},every=7200,num=825,},photographer={name="photographer",size=1750,part="people",verbs={roll="global",},every=7200,num=826,},skateboarder={name="skateboarder",size=1750,part="people",verbs={roll="global",},every=7200,num=827,},street_musician={name="street musician",size=1750,part="people",verbs={roll="global",},every=7200,num=828,},arcade_machine={name="arcade machine",size=1800,part="toys",verbs={roll="global",},every=7200,num=829,},bench={name="bench",size=1800,part="fixtures",verbs={roll="global",},every=7200,num=830,},bookshelf={name="bookshelf",size=1800,part="household",verbs={roll="global",},every=7200,num=831,},businessperson={name="businessperson",size=1800,part="people",verbs={roll="global",},every=7200,num=832,},coat_rack={name="coat rack",size=1800,part="household",verbs={roll="global",},every=7200,num=833,},construction_worker={name="construction worker",size=1800,part="people",verbs={roll="global",},every=7200,num=834,},deer={name="deer",size=1800,part="animals",verbs={roll="global",},every=7200,num=835,},donkey={name="donkey",size=1800,part="animals",verbs={roll="global",},every=7200,num=836,},farmer={name="farmer",size=1800,part="people",verbs={roll="global",},every=7200,num=837,},gravedigger={name="gravedigger",size=1800,part="people",verbs={roll="global",},every=7200,num=838,},lifeguard={name="lifeguard",size=1800,part="people",verbs={roll="global",},every=7200,num=839,},llama={name="llama",size=1800,part="animals",verbs={roll="global",},every=7200,num=840,},magician={name="magician",size=1800,part="people",verbs={roll="global",},every=7200,num=841,},mannequin={name="mannequin",size=1800,part="clothes",verbs={roll="global",},every=7200,num=842,},moped={name="moped",size=1800,part="vehicles",verbs={roll="global",},every=7200,num=843,},police_officer={name="police officer",size=1800,part="people",verbs={roll="global",},every=7200,num=844,},pony={name="pony",size=1800,part="animals",verbs={roll="global",},every=7200,num=845,},refrigerator={name="refrigerator",size=1800,part="household",verbs={roll="global",},every=7200,num=846,},scarecrow={name="scarecrow",size=1800,part="fixtures",verbs={roll="global",},every=7200,num=847,},scuba_diver={name="scuba diver",size=1800,part="people",verbs={roll="global",},every=7200,num=848,},sunflower={name="sunflower",size=1800,part="plants",verbs={roll="global",},every=7200,num=849,},vending_machine={name="vending machine",size=1800,part="fixtures",verbs={roll="global",},every=7200,num=850,},sumo_wrestler={name="sumo wrestler",size=1850,part="people",verbs={roll="global",},every=7200,num=851,},mattress={name="mattress",size=1900,part="household",verbs={roll="global",},every=7200,num=852,},anchor={name="anchor",size=2000,part="vehicles",verbs={roll="global",},every=7200,num=853,},beach_umbrella={name="beach umbrella",size=2000,part="toys",verbs={roll="global",},every=7200,num=854,},bear={name="bear",size=2000,part="animals",verbs={roll="global",},every=7200,num=855,},bed={name="bed",size=2000,part="household",verbs={roll="global",},every=7200,num=856,},bike_rack={name="bike rack",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=857,},claw_machine={name="claw machine",size=2000,part="toys",verbs={roll="global",},every=7200,num=858,},dumpster={name="dumpster",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=859,},gate={name="gate",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=860,},hedge={name="hedge",size=2000,part="plants",verbs={roll="global",},every=7200,num=861,},photo_booth={name="photo booth",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=862,},picket_fence={name="picket fence",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=863,},picnic_table={name="picnic table",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=864,},sapling={name="sapling",size=2000,part="plants",verbs={roll="global",},every=7200,num=865,},surfboard={name="surfboard",size=2000,part="toys",verbs={roll="global",},every=7200,num=866,},trough={name="trough",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=867,},wardrobe={name="wardrobe",size=2000,part="household",verbs={roll="global",},every=7200,num=868,},grandfather_clock={name="grandfather clock",size=2100,part="household",verbs={roll="global",},every=7200,num=869,},couch={name="couch",size=2200,part="household",verbs={roll="global",},every=7200,num=870,},motorcycle={name="motorcycle",size=2200,part="vehicles",verbs={roll="global",},every=7200,num=871,},phone_booth={name="phone booth",size=2200,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=872,},stop_sign={name="stop sign",size=2200,part="fixtures",verbs={roll="global",},every=7200,num=873,},outhouse={name="outhouse",size=2300,part="buildings",verbs={roll="global",},every=7200,num=874,},portable_toilet={name="portable toilet",size=2300,part="fixtures",verbs={roll="global",},every=7200,num=875,},sea_lion={name="sea lion",size=2300,part="animals",verbs={roll="global",},every=7200,num=876,},cow={name="cow",size=2400,part="animals",verbs={roll="global",},every=7200,num=877,},golf_cart={name="golf cart",size=2400,part="vehicles",verbs={roll="global",},every=7200,num=878,},horse={name="horse",size=2400,part="animals",verbs={roll="global",},every=7200,num=879,},chicken_coop={name="chicken coop",size=2500,part="buildings",verbs={roll="global",},every=7200,num=880,},christmas_tree={name="christmas tree",size=2500,part="plants",verbs={roll="global",},every=7200,event_only=true,num=881,},cornstalk={name="cornstalk",size=2500,part="plants",verbs={roll="global",},every=7200,num=882,},dolphin={name="dolphin",size=2500,part="animals",verbs={roll="global",},every=7200,num=883,},elk={name="elk",size=2500,part="animals",verbs={roll="global",},every=7200,num=884,},hot_dog_cart={name="hot dog cart",size=2500,part="vehicles",verbs={roll="global",},every=7200,num=885,},ladder={name="ladder",size=2500,part="hardware",verbs={roll="global",},every=7200,num=886,},ostrich={name="ostrich",size=2500,part="animals",verbs={roll="global",},every=7200,num=887,},parking_booth={name="parking booth",size=2500,part="buildings",verbs={roll="global",},every=7200,num=888,},patio_umbrella={name="patio umbrella",size=2500,part="household",verbs={roll="global",},every=7200,num=889,},sandbox={name="sandbox",size=2500,part="toys",verbs={roll="global",},every=7200,num=890,},bull={name="bull",size=2600,part="animals",verbs={roll="global",},every=7200,num=891,},grand_piano={name="grand piano",size=2700,part="instruments",verbs={roll="global",},every=7200,num=892,},ping_pong_table={name="ping pong table",size=2700,part="toys",verbs={roll="global",},every=7200,num=893,},pool_table={name="pool table",size=2700,part="toys",verbs={roll="global",},every=7200,num=894,},camel={name="camel",size=3000,part="animals",verbs={roll="global",},every=7200,num=895,},cannon={name="cannon",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=896,},cemetery_gate={name="cemetery gate",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=897,},chain_link_fence={name="chain-link fence",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=898,},diving_board={name="diving board",size=3000,part="toys",verbs={roll="global",},every=7200,num=899,},food_cart={name="food cart",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=900,},forklift={name="forklift",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=901,},fountain={name="fountain",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=902,},hammock={name="hammock",size=3000,part="household",verbs={roll="global",},every=7200,num=903,},haystack={name="haystack",size=3000,part="plants",verbs={roll="global",},every=7200,num=904,},jet_ski={name="jet ski",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=905,},merry_go_round={name="merry-go-round",size=3000,part="toys",verbs={roll="global",},every=7200,num=906,},moose={name="moose",size=3000,part="animals",verbs={roll="global",},every=7200,num=907,},newsstand={name="newsstand",size=3000,part="buildings",verbs={roll="global",},every=7200,num=908,},paddleboat={name="paddleboat",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=909,},shed={name="shed",size=3000,part="buildings",verbs={roll="global",},every=7200,num=910,},statue={name="statue",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=911,},street_sign={name="street sign",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=912,},tent={name="tent",size=3000,part="toys",verbs={roll="global",},every=7200,num=913,},alligator={name="alligator",size=3500,part="animals",verbs={roll="global",},every=7200,num=914,},kayak={name="kayak",size=3500,part="vehicles",verbs={roll="global",},every=7200,num=915,},seesaw={name="seesaw",size=3500,part="toys",verbs={roll="global",},every=7200,num=916,},bus_shelter={name="bus shelter",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=917,},lamppost={name="lamppost",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=918,},lifeguard_tower={name="lifeguard tower",size=4000,part="buildings",verbs={roll="global",},every=7200,num=919,},rowboat={name="rowboat",size=4000,part="vehicles",verbs={roll="global",},every=7200,num=920,},shark={name="shark",size=4000,part="animals",verbs={roll="global",},every=7200,num=921,},slide={name="slide",size=4000,part="toys",verbs={roll="global",},every=7200,num=922,},street_clock={name="street clock",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=923,},swing_set={name="swing set",size=4000,part="toys",verbs={roll="global",},every=7200,num=924,},trampoline={name="trampoline",size=4000,part="toys",verbs={roll="global",},every=7200,num=925,},treehouse={name="treehouse",size=4000,part="buildings",verbs={roll="global",},every=7200,num=926,},car={name="car",size=4500,part="vehicles",verbs={roll="global",},every=7200,num=927,},wrecked_car={name="wrecked car",size=4500,part="vehicles",verbs={roll="global",},every=7200,num=928,},taxi={name="taxi",size=4700,part="vehicles",verbs={roll="global",},every=7200,num=929,},canoe={name="canoe",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=930,},giraffe={name="giraffe",size=5000,part="animals",verbs={roll="global",},every=7200,num=931,},horse_carriage={name="horse carriage",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=932,},hunting_stand={name="hunting stand",size=5000,part="buildings",verbs={roll="global",},every=7200,num=933,},jungle_gym={name="jungle gym",size=5000,part="toys",verbs={roll="global",},every=7200,num=934,},police_car={name="police car",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=935,},steamroller={name="steamroller",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=936,},tractor={name="tractor",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=937,},traffic_light={name="traffic light",size=5000,part="fixtures",verbs={roll="global",},every=7200,num=938,},van={name="van",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=939,},pickup_truck={name="pickup truck",size=5500,part="vehicles",verbs={roll="global",},every=7200,num=940,},ambulance={name="ambulance",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=941,},bamboo={name="bamboo",size=6000,part="plants",verbs={roll="global",},every=7200,num=942,},bulldozer={name="bulldozer",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=943,},elephant={name="elephant",size=6000,part="animals",verbs={roll="global",},every=7200,num=944,},garage={name="garage",size=6000,part="buildings",verbs={roll="global",},every=7200,num=945,},gazebo={name="gazebo",size=6000,part="buildings",verbs={roll="global",},every=7200,num=946,},greenhouse={name="greenhouse",size=6000,part="buildings",verbs={roll="global",},every=7200,num=947,},hearse={name="hearse",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=948,},ice_cream_truck={name="ice cream truck",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=949,},mausoleum={name="mausoleum",size=6000,part="buildings",verbs={roll="global",},every=7200,num=950,},obelisk={name="obelisk",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=951,},scaffolding={name="scaffolding",size=6000,part="hardware",verbs={roll="global",},every=7200,num=952,},totem_pole={name="totem pole",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=953,},yew={name="yew",size=6000,part="plants",variants=A{{key="autumn_yew",name="autumn yew",chance=100000,},},verbs={roll="global",},every=7200,num=954,},backhoe={name="backhoe",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=955,},delivery_truck={name="delivery truck",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=956,},food_truck={name="food truck",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=957,},pontoon_boat={name="pontoon boat",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=958,},crypt={name="crypt",size=8000,part="buildings",verbs={roll="global",},every=7200,num=959,},dump_truck={name="dump truck",size=8000,part="vehicles",verbs={roll="global",},every=7200,num=960,},flagpole={name="flagpole",size=8000,part="fixtures",verbs={roll="global",},every=7200,num=961,},sailboat={name="sailboat",size=8000,part="vehicles",verbs={roll="global",},every=7200,num=962,},tree={name="tree",size=8000,part="plants",verbs={roll="global",},every=7200,num=963,},cement_mixer={name="cement mixer",size=9000,part="vehicles",verbs={roll="global",},every=7200,num=964,},garbage_truck={name="garbage truck",size=9000,part="vehicles",verbs={roll="global",},every=7200,num=965,},utility_pole={name="utility pole",size=9000,part="fixtures",verbs={roll="global",},every=7200,num=966,},bandstand={name="bandstand",size=10000,part="buildings",verbs={roll="global",},every=7200,num=967,},billboard={name="billboard",size=10000,part="fixtures",verbs={roll="global",},every=7200,num=968,},columbarium={name="columbarium",size=10000,part="buildings",verbs={roll="global",},every=7200,num=969,},conveyor_belt={name="conveyor belt",size=10000,part="hardware",verbs={roll="global",},every=7200,num=970,},excavator={name="excavator",size=10000,part="vehicles",verbs={roll="global",},every=7200,num=971,},fire_truck={name="fire truck",size=10000,part="vehicles",verbs={roll="global",},every=7200,num=972,},log_cabin={name="log cabin",size=10000,part="buildings",verbs={roll="global",},every=7200,num=973,},row_house={name="row house",size=10000,part="buildings",verbs={roll="global",},every=7200,num=974,},double_decker_bus={name="double-decker bus",size=11000,part="vehicles",verbs={roll="global",},every=7200,num=975,},boathouse={name="boathouse",size=12000,part="buildings",verbs={roll="global",},every=7200,num=976,},bus={name="bus",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=977,},duplex={name="duplex",size=12000,part="buildings",verbs={roll="global",},every=7200,num=978,},farmhouse={name="farmhouse",size=12000,part="buildings",verbs={roll="global",},every=7200,num=979,},floodlight_tower={name="floodlight tower",size=12000,part="fixtures",verbs={roll="global",},every=7200,num=980,},house={name="house",size=12000,part="buildings",verbs={roll="global",},every=7200,num=981,},houseboat={name="houseboat",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=982,},pizzeria={name="pizzeria",size=12000,part="buildings",verbs={roll="global",},every=7200,num=983,},school_bus={name="school bus",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=984,},shipping_container={name="shipping container",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=985,},tanker_truck={name="tanker truck",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=986,},willow={name="willow",size=12000,part="plants",verbs={roll="global",},every=7200,num=987,},trolley={name="trolley",size=14000,part="vehicles",verbs={roll="global",},every=7200,num=988,},arch={name="arch",size=15000,part="buildings",verbs={roll="global",},every=7200,num=989,},barn={name="barn",size=15000,part="buildings",verbs={roll="global",},every=7200,num=990,},carousel={name="carousel",size=15000,part="toys",verbs={roll="global",},every=7200,num=991,},chapel={name="chapel",size=15000,part="buildings",verbs={roll="global",},every=7200,num=992,},cypress={name="cypress",size=15000,part="plants",verbs={roll="global",},every=7200,num=993,},diner={name="diner",size=15000,part="buildings",verbs={roll="global",},every=7200,num=994,},dock={name="dock",size=15000,part="buildings",verbs={roll="global",},every=7200,num=995,},fallen_tree={name="fallen tree",size=15000,part="plants",verbs={roll="global",},every=7200,num=996,},fishing_boat={name="fishing boat",size=15000,part="vehicles",verbs={roll="global",},every=7200,num=997,},freight_car={name="freight car",size=15000,part="vehicles",verbs={roll="global",},every=7200,num=998,},helicopter={name="helicopter",size=15000,part="vehicles",verbs={roll="global",},every=7200,num=999,},laundromat={name="laundromat",size=15000,part="buildings",verbs={roll="global",},every=7200,num=1000,},maple={name="maple",size=15000,part="plants",verbs={roll="global",},every=7200,num=1001,},corner_shop={name="shop",size=15000,part="buildings",verbs={roll="global",},every=7200,num=1002,},whale={name="whale",size=15000,part="animals",verbs={roll="global",},every=7200,num=1003,},semi_truck={name="semi truck",size=18000,part="vehicles",verbs={roll="global",},every=7200,num=1004,},subway_car={name="subway car",size=18000,part="vehicles",verbs={roll="global",},every=7200,num=1005,},elm={name="elm",size=20000,part="plants",verbs={roll="global",},every=7200,num=1006,},fire_station={name="fire station",size=20000,part="buildings",verbs={roll="global",},every=7200,num=1007,},gas_station={name="gas station",size=20000,part="buildings",verbs={roll="global",},every=7200,num=1008,},hot_air_balloon={name="hot air balloon",size=20000,part="vehicles",verbs={roll="global",},every=7200,num=1009,},locomotive={name="locomotive",size=20000,part="vehicles",verbs={roll="global",},every=7200,num=1010,},monument={name="monument",size=20000,part="buildings",verbs={roll="global",},every=7200,num=1011,},pine={name="pine",size=20000,part="plants",verbs={roll="global",},every=7200,num=1012,},post_office={name="post office",size=20000,part="buildings",verbs={roll="global",},every=7200,num=1013,},silo={name="silo",size=20000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1014,},synagogue={name="synagogue",size=20000,part="buildings",verbs={roll="global",},every=7200,num=1015,},tugboat={name="tugboat",size=20000,part="vehicles",verbs={roll="global",},every=7200,num=1016,},bank={name="bank",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1017,},bell_tower={name="bell tower",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1018,},fire_tower={name="fire tower",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1019,},mansion={name="mansion",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1020,},mosque={name="mosque",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1021,},oak={name="oak",size=25000,part="plants",verbs={roll="global",},every=7200,num=1022,},police_station={name="police station",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1023,},sycamore={name="sycamore",size=25000,part="plants",verbs={roll="global",},every=7200,num=1024,},windmill={name="windmill",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1025,},yacht={name="yacht",size=25000,part="vehicles",verbs={roll="global",},every=7200,num=1026,},apartment_building={name="apartment building",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1027,},church={name="church",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1028,},library={name="library",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1029,},lighthouse={name="lighthouse",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1030,},movie_theater={name="movie theater",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1031,},oil_tank={name="oil tank",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1032,},water_tower={name="water tower",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1033,},waterfall={name="waterfall",size=30000,part="nature",verbs={roll="global",},every=7200,num=1034,},airplane={name="airplane",size=40000,part="vehicles",verbs={roll="global",},every=7200,num=1035,},clock_tower={name="clock tower",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1036,},courthouse={name="courthouse",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1037,},crane={name="crane",size=40000,part="hardware",verbs={roll="global",},every=7200,num=1038,},ferry={name="ferry",size=40000,part="vehicles",verbs={roll="global",},every=7200,num=1039,},grain_elevator={name="grain elevator",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1040,},hotel={name="hotel",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1041,},pylon={name="pylon",size=40000,part="fixtures",verbs={roll="global",},every=7200,num=1042,},school={name="school",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1043,},warehouse={name="warehouse",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1044,},drawbridge={name="drawbridge",size=50000,part="buildings",verbs={roll="global",},every=7200,num=1045,},ferris_wheel={name="ferris wheel",size=50000,part="toys",verbs={roll="global",},every=7200,num=1046,},parking_garage={name="parking garage",size=50000,part="buildings",verbs={roll="global",},every=7200,num=1047,},smokestack={name="smokestack",size=50000,part="buildings",verbs={roll="global",},every=7200,num=1048,},barge={name="barge",size=60000,part="vehicles",verbs={roll="global",},every=7200,num=1049,},cathedral={name="cathedral",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1050,},cooling_tower={name="cooling tower",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1051,},factory={name="factory",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1052,},hospital={name="hospital",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1053,},museum={name="museum",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1054,},pier={name="pier",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1055,},roller_coaster={name="roller coaster",size=60000,part="toys",verbs={roll="global",},every=7200,num=1056,},blimp={name="blimp",size=70000,part="vehicles",verbs={roll="global",},every=7200,num=1057,},city_hall={name="city hall",size=80000,part="buildings",verbs={roll="global",},every=7200,num=1058,},redwood={name="redwood",size=80000,part="plants",verbs={roll="global",},every=7200,num=1059,},wind_turbine={name="wind turbine",size=80000,part="buildings",verbs={roll="global",},every=7200,num=1060,},radio_tower={name="radio tower",size=100000,part="buildings",verbs={roll="global",},every=7200,num=1061,},submarine={name="submarine",size=100000,part="vehicles",verbs={roll="global",},every=7200,num=1062,},astronaut_ice_cream={name="astronaut ice cream",size=100,part="food",verbs={roll="global",},every=7200,num=1063,},basket_of_goodies={name="basket of goodies",size=300,part="household",verbs={roll="global",},every=7200,num=1064,},bone_dust={name="bone dust",size=30,part="nature",verbs={roll="global",},every=7200,num=1065,},chainmail={name="chainmail",size=1000,part="clothes",verbs={roll="global",},every=7200,num=1066,},crystal_ball={name="crystal ball",size=200,part="valuables",verbs={roll="global",},every=7200,num=1067,},data_chip={name="data chip",size=30,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1068,},datapad={name="datapad",size=250,part="electronics",verbs={roll="global",},every=7200,num=1069,},elven_arrowhead={name="elven arrowhead",size=50,part="hardware",verbs={roll="global",},every=7200,num=1070,},enchanted_feather={name="enchanted feather",size=250,part="nature",verbs={roll="global",},every=7200,num=1071,},energy_cell={name="energy cell",size=100,part="electronics",verbs={roll="global",},every=7200,num=1072,},fairy={name="fairy",size=100,part="people",verbs={roll="global",},every=7200,num=1073,},fairy_dust={name="fairy dust",size=20,part="nature",verbs={roll="global",},every=7200,num=1074,},fairy_ring_mushroom={name="fairy ring mushroom",size=100,part="plants",verbs={roll="global",},every=7200,num=1075,},gingerbread_man={name="gingerbread man",size=150,part="food",verbs={roll="global",},every=7200,num=1076,},glass_slipper={name="glass slipper",size=250,part="clothes",verbs={roll="global",},every=7200,num=1077,},golden_egg={name="golden egg",size=80,part="valuables",verbs={roll="global",},every=7200,num=1078,},healing_potion={name="healing potion",size=100,part="household",verbs={roll="global",},every=7200,num=1079,},hologram_projector={name="hologram projector",size=200,part="electronics",verbs={roll="global",},every=7200,num=1080,},hooded_cloak={name="hooded cloak",size=1300,part="clothes",verbs={roll="global",},every=7200,num=1081,},laser_sword={name="laser sword",size=1000,part="toys",verbs={roll="global",},every=7200,num=1082,},magic_acorn={name="magic acorn",size=30,part="plants",verbs={roll="global",},every=7200,num=1083,},magic_beans={name="magic beans",size=10,part="food",verbs={roll="global",},every=7200,num=1084,},magic_wand={name="magic wand",size=350,part="toys",verbs={roll="global",},every=7200,num=1085,},mermaid_s_comb={name="mermaid's comb",size=100,part="valuables",verbs={roll="global",},every=7200,num=1086,},moonstone={name="moonstone",size=40,part="nature",verbs={roll="global",},every=7200,num=1087,},neon_visor={name="neon visor",size=200,part="clothes",verbs={roll="global",},every=7200,num=1088,},pearl_necklace={name="pearl necklace",size=400,part="valuables",verbs={roll="global",},every=7200,num=1089,},pixie={name="pixie",size=80,part="people",verbs={roll="global",},every=7200,num=1090,},pointed_hat={name="pointed hat",size=400,part="clothes",verbs={roll="global",},every=7200,num=1091,},poisoned_apple={name="poisoned apple",size=80,part="food",verbs={roll="global",},every=7200,num=1092,},porridge_bowl={name="porridge bowl",size=200,part="household",verbs={roll="global",},every=7200,num=1093,},potion_bottle={name="potion bottle",size=120,part="household",verbs={roll="global",},every=7200,num=1094,},ration_pack={name="ration pack",size=150,part="food",verbs={roll="global",},every=7200,num=1095,},ray_gun={name="ray gun",size=250,part="toys",verbs={roll="global",},every=7200,num=1096,},red_riding_cloak={name="red riding cloak",size=1300,part="clothes",verbs={roll="global",},every=7200,num=1097,},scroll={name="scroll",size=400,part="crafts",verbs={roll="global",},every=7200,num=1098,},sea_glass_talisman={name="sea glass talisman",size=40,part="valuables",verbs={roll="global",},every=7200,num=1099,},short_sword={name="short sword",size=700,part="hardware",verbs={roll="global",},every=7200,num=1100,},space_helmet={name="space helmet",size=300,part="clothes",verbs={roll="global",},every=7200,num=1101,},spectral_candle={name="spectral candle",size=150,part="household",verbs={roll="global",},every=7200,num=1102,},spellbook={name="spellbook",size=300,part="crafts",verbs={roll="global",},every=7200,num=1103,},sprite={name="sprite",size=60,part="people",verbs={roll="global",},every=7200,num=1104,},tankard={name="tankard",size=150,part="household",verbs={roll="global",},every=7200,num=1105,},tavern_sign={name="tavern sign",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=1106,},three_little_pigs={name="three little pigs",size=600,part="animals",verbs={roll="global",},every=7200,num=1107,},tin_soldier={name="tin soldier",size=100,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1108,},torch={name="torch",size=600,part="household",verbs={roll="global",},every=7200,num=1109,},wooden_shield={name="wooden shield",size=800,part="hardware",verbs={roll="global",},every=7200,num=1110,},adventurer={name="adventurer",size=1750,part="people",verbs={roll="global",},every=7200,num=1111,},alchemist={name="alchemist",size=1700,part="people",verbs={roll="global",},every=7200,num=1112,},alien={name="alien",size=1400,part="people",verbs={roll="global",},every=7200,num=1113,},android={name="android",size=1800,part="people",verbs={roll="global",},every=7200,num=1114,},bard={name="bard",size=1750,part="people",verbs={roll="global",},every=7200,num=1115,},big_bad_wolf={name="big bad wolf",size=1300,part="animals",verbs={roll="global",},every=7200,num=1116,},billy_goat={name="billy goat",size=800,part="animals",verbs={roll="global",},every=7200,num=1117,},breadcrumb_trail={name="breadcrumb trail",size=1000,part="nature",verbs={roll="global",},every=7200,num=1118,},brick_house={name="brick house",size=3000,part="buildings",verbs={roll="global",},every=7200,num=1119,},broadsword={name="broadsword",size=1200,part="hardware",verbs={roll="global",},every=7200,num=1120,},broomstick={name="broomstick",size=1500,part="vehicles",verbs={roll="global",},every=7200,num=1121,},brownie={name="brownie",size=300,part="people",verbs={roll="global",},every=7200,num=1122,},castle_gate={name="castle gate",size=5000,part="fixtures",verbs={roll="global",},every=7200,num=1123,},cauldron={name="cauldron",size=500,part="household",verbs={roll="global",},every=7200,num=1124,},cursed_amulet={name="cursed amulet",size=50,part="valuables",verbs={roll="global",},every=7200,num=1125,},cyborg={name="cyborg",size=1800,part="people",verbs={roll="global",},every=7200,num=1126,},dragon_statue={name="dragon statue",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=1127,},dungeon_chest={name="dungeon chest",size=600,part="valuables",verbs={roll="global",},every=7200,num=1128,},dwarf_miner={name="dwarf miner",size=1300,part="people",verbs={roll="global",},every=7200,num=1129,},elf_archer={name="elf archer",size=1800,part="people",verbs={roll="global",},every=7200,num=1130,},elven_lantern={name="elven lantern",size=250,part="household",verbs={roll="global",},every=7200,num=1131,},elven_treehouse={name="elven treehouse",size=6000,part="buildings",verbs={roll="global",},every=7200,num=1132,},enchanted_mirror_pool={name="enchanted mirror pool",size=2000,part="nature",verbs={roll="global",},every=7200,num=1133,},fairy_godmother={name="fairy godmother",size=1600,part="people",verbs={roll="global",},every=7200,num=1134,},fairy_tale_book={name="fairy tale book",size=300,part="crafts",verbs={roll="global",},every=7200,num=1135,},flying_carpet={name="flying carpet",size=2000,part="vehicles",verbs={roll="global",},every=7200,num=1136,},force_field_generator={name="force field generator",size=400,part="electronics",verbs={roll="global",},every=7200,num=1137,},forest_elf={name="forest elf",size=1800,part="people",verbs={roll="global",},every=7200,num=1138,},frog_prince={name="frog prince",size=200,part="animals",verbs={roll="global",},every=7200,num=1139,},genie={name="genie",size=2000,part="people",verbs={roll="global",},every=7200,num=1140,},gnome={name="gnome",size=400,part="people",verbs={roll="global",},every=7200,num=1141,},goblin={name="goblin",size=1100,part="people",verbs={roll="global",},every=7200,num=1142,},golden_goose={name="golden goose",size=700,part="animals",verbs={roll="global",},every=7200,num=1143,},halfling={name="halfling",size=1000,part="people",verbs={roll="global",},every=7200,num=1144,},hoverboard={name="hoverboard",size=1000,part="vehicles",verbs={roll="global",},every=7200,num=1145,},innkeeper={name="innkeeper",size=1700,part="people",verbs={roll="global",},every=7200,num=1146,},invisible_robe={name="invisible robe",size=1400,part="clothes",verbs={roll="global",},every=7200,num=1147,},jetpack={name="jetpack",size=700,part="vehicles",verbs={roll="global",},every=7200,num=1148,},kelpie={name="kelpie",size=2000,part="animals",verbs={roll="global",},every=7200,num=1149,},knight={name="knight",size=1900,part="people",verbs={roll="global",},every=7200,num=1150,},knight_statue={name="knight statue",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1151,},knight_s_helm={name="knight's helm",size=350,part="clothes",verbs={roll="global",},every=7200,num=1152,},longbow={name="longbow",size=1700,part="hardware",verbs={roll="global",},every=7200,num=1153,},mad_scientist={name="mad scientist",size=1700,part="people",verbs={roll="global",},every=7200,num=1154,},magic_lamp={name="magic lamp",size=250,part="valuables",verbs={roll="global",},every=7200,num=1155,},magic_mirror={name="magic mirror",size=1800,part="household",verbs={roll="global",},every=7200,num=1156,},mermaid={name="mermaid",size=1700,part="people",verbs={roll="global",},every=7200,num=1157,},merman={name="merman",size=1800,part="people",verbs={roll="global",},every=7200,num=1158,},moon_rover={name="moon rover",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=1159,},necromancer={name="necromancer",size=1750,part="people",verbs={roll="global",},every=7200,num=1160,},pied_piper={name="pied piper",size=1800,part="people",verbs={roll="global",},every=7200,num=1161,},plasma_cutter={name="plasma cutter",size=400,part="hardware",verbs={roll="global",},every=7200,num=1162,},quiver_of_arrows={name="quiver of arrows",size=600,part="hardware",verbs={roll="global",},every=7200,num=1163,},robot_dog={name="robot dog",size=500,part="electronics",verbs={roll="global",},every=7200,num=1164,},selkie={name="selkie",size=1600,part="people",verbs={roll="global",},every=7200,num=1165,},skeleton_warrior={name="skeleton warrior",size=1800,part="people",verbs={roll="global",},every=7200,num=1166,},small_robot={name="small robot",size=600,part="electronics",verbs={roll="global",},every=7200,num=1167,},space_trooper={name="space trooper",size=1900,part="people",verbs={roll="global",},every=7200,num=1168,},spacesuit={name="spacesuit",size=1800,part="clothes",verbs={roll="global",},every=7200,num=1169,},spinning_wheel={name="spinning wheel",size=1200,part="household",verbs={roll="global",},every=7200,num=1170,},spirit_lantern={name="spirit lantern",size=300,part="household",verbs={roll="global",},every=7200,num=1171,},squire={name="squire",size=1600,part="people",verbs={roll="global",},every=7200,num=1172,},starship_captain={name="starship captain",size=1800,part="people",verbs={roll="global",},every=7200,num=1173,},stick_house={name="stick house",size=3000,part="buildings",verbs={roll="global",},every=7200,num=1174,},straw_house={name="straw house",size=3000,part="buildings",verbs={roll="global",},every=7200,num=1175,},sunken_treasure={name="sunken treasure",size=600,part="valuables",verbs={roll="global",},every=7200,num=1176,},talking_cat={name="talking cat",size=400,part="animals",verbs={roll="global",},every=7200,num=1177,},talking_owl={name="talking owl",size=500,part="animals",verbs={roll="global",},every=7200,num=1178,},teleporter_pad={name="teleporter pad",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1179,},tesla_coil={name="tesla coil",size=1500,part="electronics",verbs={roll="global",},every=7200,num=1180,},too_small_chair={name="too-small chair",size=600,part="household",verbs={roll="global",},every=7200,num=1181,},tree_guardian={name="tree guardian",size=3000,part="plants",verbs={roll="global",},every=7200,num=1182,},trident={name="trident",size=1800,part="hardware",verbs={roll="global",},every=7200,num=1183,},ugly_duckling={name="ugly duckling",size=300,part="animals",verbs={roll="global",},every=7200,num=1184,},unicorn_foal={name="unicorn foal",size=1100,part="animals",verbs={roll="global",},every=7200,num=1185,},water_sprite={name="water sprite",size=200,part="people",verbs={roll="global",},every=7200,num=1186,},white_stag={name="white stag",size=2000,part="animals",verbs={roll="global",},every=7200,num=1187,},wishing_well={name="wishing well",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=1188,},witch_s_cottage={name="witch's cottage",size=5000,part="buildings",verbs={roll="global",},every=7200,num=1189,},wizard={name="wizard",size=1750,part="people",verbs={roll="global",},every=7200,num=1190,},wizard_s_staff={name="wizard's staff",size=1800,part="hardware",verbs={roll="global",},every=7200,num=1191,},woodland_nymph={name="woodland nymph",size=1700,part="people",verbs={roll="global",},every=7200,num=1192,},wraith={name="wraith",size=1900,part="people",verbs={roll="global",},every=7200,num=1193,},alien_invader={name="alien invader",size=2000,part="people",verbs={roll="global",},every=7200,num=1194,},beanstalk={name="beanstalk",size=30000,part="plants",verbs={roll="global",},every=7200,num=1195,},bone_dragon={name="bone dragon",size=9000,part="animals",verbs={roll="global",},every=7200,num=1196,},castle={name="castle",size=40000,part="buildings",verbs={roll="global",},every=7200,num=1197,},centaur={name="centaur",size=2200,part="people",verbs={roll="global",},every=7200,num=1198,},crashed_spaceship={name="crashed spaceship",size=10000,part="vehicles",verbs={roll="global",},every=7200,num=1199,},crop_circle={name="crop circle",size=20000,part="nature",verbs={roll="global",},every=7200,num=1200,},cursed_tomb={name="cursed tomb",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=1201,},dragon={name="dragon",size=12000,part="animals",verbs={roll="global",},every=7200,num=1202,},dragon_egg={name="dragon egg",size=400,part="valuables",verbs={roll="global",},every=7200,num=1203,},dragon_scale={name="dragon scale",size=100,part="valuables",verbs={roll="global",},every=7200,num=1204,},elder_tree={name="elder tree",size=35000,part="plants",verbs={roll="global",},every=7200,num=1205,},flying_saucer={name="flying saucer",size=8000,part="vehicles",verbs={roll="global",},every=7200,num=1206,},forest_spirit={name="forest spirit",size=4000,part="nature",verbs={roll="global",},every=7200,num=1207,},giant={name="giant",size=6000,part="people",verbs={roll="global",},every=7200,num=1208,},giant_robot={name="giant robot",size=20000,part="vehicles",verbs={roll="global",},every=7200,num=1209,},gingerbread_house={name="gingerbread house",size=3000,part="buildings",verbs={roll="global",},every=7200,num=1210,},glass_coffin={name="glass coffin",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1211,},golem={name="golem",size=3000,part="people",verbs={roll="global",},every=7200,num=1212,},griffin={name="griffin",size=2500,part="animals",verbs={roll="global",},every=7200,num=1213,},king={name="king",size=1800,part="people",verbs={roll="global",},every=7200,num=1214,},kraken={name="kraken",size=20000,part="animals",verbs={roll="global",},every=7200,num=1215,},lake_spirit={name="lake spirit",size=3000,part="nature",verbs={roll="global",},every=7200,num=1216,},launch_tower={name="launch tower",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1217,},lich_s_phylactery={name="lich's phylactery",size=150,part="valuables",verbs={roll="global",},every=7200,num=1218,},ogre={name="ogre",size=3000,part="people",verbs={roll="global",},every=7200,num=1219,},orc_warrior={name="orc warrior",size=1900,part="people",verbs={roll="global",},every=7200,num=1220,},pegasus={name="pegasus",size=2500,part="animals",verbs={roll="global",},every=7200,num=1221,},phoenix={name="phoenix",size=1500,part="animals",verbs={roll="global",},every=7200,num=1222,},portal_ring={name="portal ring",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1223,},princess={name="princess",size=1650,part="people",verbs={roll="global",},every=7200,num=1224,},pumpkin_carriage={name="pumpkin carriage",size=4000,part="vehicles",verbs={roll="global",},every=7200,num=1225,},queen={name="queen",size=1700,part="people",verbs={roll="global",},every=7200,num=1226,},rocket={name="rocket",size=40000,part="vehicles",verbs={roll="global",},every=7200,num=1227,},rose_thorn_hedge={name="rose thorn hedge",size=2000,part="plants",verbs={roll="global",},every=7200,num=1228,},sea_serpent={name="sea serpent",size=15000,part="animals",verbs={roll="global",},every=7200,num=1229,},seven_dwarfs={name="seven dwarfs",size=10000,part="people",verbs={roll="global",},every=7200,num=1230,},sleeping_prince={name="sleeping prince",size=1800,part="people",verbs={roll="global",},every=7200,num=1231,},space_station_module={name="space station module",size=10000,part="buildings",verbs={roll="global",},every=7200,num=1232,},sphinx={name="sphinx",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1233,},sunken_castle={name="sunken castle",size=30000,part="buildings",verbs={roll="global",},every=7200,num=1234,},sword_in_the_stone={name="sword in the stone",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1235,},throne={name="throne",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1236,},time_machine={name="time machine",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=1237,},tower_with_long_braid={name="tower with long braid",size=15000,part="buildings",verbs={roll="global",},every=7200,num=1238,},troll={name="troll",size=3000,part="people",verbs={roll="global",},every=7200,num=1239,},troll_under_the_bridge={name="troll under the bridge",size=2500,part="people",verbs={roll="global",},every=7200,num=1240,},unicorn={name="unicorn",size=1700,part="animals",verbs={roll="global",},every=7200,num=1241,},wizard_s_tower={name="wizard's tower",size=25000,part="buildings",verbs={roll="global",},every=7200,num=1242,},atom={name="atom",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1243,},bacterium={name="bacterium",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1244,},boson={name="boson",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1245,},dna_strand={name="dna strand",size=2,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1246,},gluon={name="gluon",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1247,},molecule={name="molecule",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1248,},moon={name="moon",size=300,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1249,},muon={name="muon",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1250,},neutrino={name="neutrino",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1251,},quark={name="quark",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1252,},virus={name="virus",size=1,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1253,},aurora={name="aurora",size=20000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1254,},cell={name="cell",size=2,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1255,},comet={name="comet",size=2000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1256,},constellation={name="constellation",size=3000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1257,},electron_microscope={name="electron microscope",size=1500,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1258,},meteor={name="meteor",size=500,part="nature",verbs={roll="global",},every=7200,num=1259,},particle_accelerator={name="particle accelerator",size=30000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=1260,},satellite={name="satellite",size=3000,part="nature",verbs={roll="global",},every=7200,num=1261,},telescope={name="telescope",size=1200,part="nature",verbs={roll="global",},every=7200,num=1262,},antimatter={name="antimatter",size=1,part="nature",verbs={roll="global",},every=7200,num=1263,},asteroid={name="asteroid",size=5000,part="nature",verbs={roll="global",},every=7200,num=1264,},black_hole={name="black hole",size=500,part="nature",verbs={roll="global",},every=7200,num=1265,},dark_matter_sample={name="dark matter sample",size=10,part="nature",verbs={roll="global",},every=7200,num=1266,},galaxy={name="galaxy",size=100000,part="nature",verbs={roll="global",},every=7200,num=1267,},nebula={name="nebula",size=20000,part="nature",verbs={roll="global",},every=7200,num=1268,},ringed_planet={name="ringed planet",size=250,part="nature",verbs={roll="global",},every=7200,num=1269,},solar_eclipse={name="solar eclipse",size=10000,part="nature",verbs={roll="global",},every=7200,num=1270,},space_telescope={name="space telescope",size=4000,part="nature",verbs={roll="global",},every=7200,num=1271,},baked_potato={name="baked potato",size=150,part="food",verbs={roll="global",},every=7200,num=1272,},cornbread={name="cornbread",size=120,part="food",verbs={roll="global",},every=7200,num=1273,},fried_chicken={name="fried chicken",size=200,part="food",verbs={roll="global",},every=7200,num=1274,},mac_and_cheese={name="mac and cheese",size=180,part="food",verbs={roll="global",},every=7200,num=1275,},meatloaf={name="meatloaf",size=200,part="food",verbs={roll="global",},every=7200,num=1276,},pie_slice={name="pie slice",size=120,part="food",verbs={roll="global",},every=7200,num=1277,},cast_iron_skillet={name="cast-iron skillet",size=300,part="household",verbs={roll="global",},every=7200,num=1278,},cheesesteak={name="cheesesteak",size=250,part="food",verbs={roll="global",},every=7200,num=1279,},bao={name="bao",size=80,part="food",verbs={roll="global",},every=7200,num=1280,},chopsticks={name="chopsticks",size=230,part="household",verbs={roll="global",},every=7200,num=1281,},fried_rice={name="fried rice",size=200,part="food",verbs={roll="global",},every=7200,num=1282,},tofu={name="tofu",size=80,part="food",verbs={roll="global",},every=7200,num=1283,},lucky_cat={name="lucky cat",size=200,part="fixtures",verbs={roll="global",},every=7200,num=1284,},red_lantern={name="red lantern",size=400,part="fixtures",verbs={roll="global",},every=7200,num=1285,},baguette_basket={name="baguette basket",size=400,part="food",verbs={roll="global",},every=7200,num=1286,},baker={name="baker",size=1750,part="people",verbs={roll="global",},every=7200,num=1287,},birthday_cake_slice={name="birthday cake slice",size=100,part="food",verbs={roll="global",},every=7200,num=1288,},biscotti={name="biscotti",size=150,part="food",verbs={roll="global",},every=7200,num=1289,},brioche={name="brioche",size=150,part="food",verbs={roll="global",},every=7200,num=1290,},cannoli={name="cannoli",size=120,part="food",verbs={roll="global",},every=7200,num=1291,},cinnamon_roll={name="cinnamon roll",size=120,part="food",verbs={roll="global",},every=7200,num=1292,},croissant_basket={name="croissant basket",size=200,part="food",verbs={roll="global",},every=7200,num=1293,},danish={name="danish",size=120,part="food",verbs={roll="global",},every=7200,num=1294,},frosting_piping_bag={name="frosting piping bag",size=300,part="household",verbs={roll="global",},every=7200,num=1295,},pain_au_chocolat={name="pain au chocolat",size=120,part="food",verbs={roll="global",},every=7200,num=1296,},pao_de_queijo={name="pao de queijo",size=40,part="food",verbs={roll="global",},every=7200,num=1297,},rye_loaf={name="rye loaf",size=300,part="food",verbs={roll="global",},every=7200,num=1298,},scone={name="scone",size=100,part="food",verbs={roll="global",},every=7200,num=1299,},sourdough_loaf={name="sourdough loaf",size=300,part="food",verbs={roll="global",},every=7200,num=1300,},bread_knife={name="bread knife",size=350,part="household",verbs={roll="global",},every=7200,num=1301,},eclair={name="eclair",size=150,part="food",verbs={roll="global",},every=7200,num=1302,},flour_sack={name="flour sack",size=600,part="food",verbs={roll="global",},every=7200,num=1303,},macaron={name="macaron",size=40,part="food",verbs={roll="global",},every=7200,num=1304,},pastry_case={name="pastry case",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1305,},tart={name="tart",size=100,part="food",verbs={roll="global",},every=7200,num=1306,},bread_oven={name="bread oven",size=2000,part="household",verbs={roll="global",},every=7200,num=1307,},wedding_cake_topper={name="wedding cake topper",size=100,part="valuables",verbs={roll="global",},every=7200,num=1308,},bar_coaster={name="bar coaster",size=100,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1309,},bar_stool={name="bar stool",size=750,part="household",verbs={roll="global",},every=7200,num=1310,},bartender_s_rag={name="bartender's rag",size=300,part="household",verbs={roll="global",},every=7200,num=1311,},cocktail_umbrella={name="cocktail umbrella",size=100,part="household",verbs={roll="global",},every=7200,num=1312,},draft_beer={name="draft beer",size=180,part="food",verbs={roll="global",},every=7200,num=1313,},empty_wine_bottle={name="empty wine bottle",size=300,part="detritus",verbs={roll="global",},every=7200,num=1314,},open_sign={name="open sign",size=400,part="fixtures",verbs={roll="global",},every=7200,num=1315,},peanut_bowl={name="peanut bowl",size=150,part="food",verbs={roll="global",},every=7200,num=1316,},pint_glass={name="pint glass",size=160,part="household",verbs={roll="global",},every=7200,num=1317,},pretzel_bowl={name="pretzel bowl",size=200,part="food",verbs={roll="global",},every=7200,num=1318,},beer_tap={name="beer tap",size=400,part="fixtures",verbs={roll="global",},every=7200,num=1319,},caipirinha={name="caipirinha",size=150,part="food",verbs={roll="global",},every=7200,num=1320,},cocktail_shaker={name="cocktail shaker",size=250,part="household",verbs={roll="global",},every=7200,num=1321,},margarita={name="margarita",size=180,part="food",verbs={roll="global",},every=7200,num=1322,},mimosa={name="mimosa",size=200,part="food",verbs={roll="global",},every=7200,num=1323,},neon_bar_sign={name="neon bar sign",size=600,part="fixtures",verbs={roll="global",},every=7200,num=1324,},pool_cue={name="pool cue",size=1500,part="toys",verbs={roll="global",},every=7200,num=1325,},sake_bottle={name="sake bottle",size=300,part="food",verbs={roll="global",},every=7200,num=1326,},soju_bottle={name="soju bottle",size=200,part="food",verbs={roll="global",},every=7200,num=1327,},tip_on_a_table={name="tip on a table",size=100,part="valuables",verbs={roll="global",},every=7200,num=1328,},tv_above_the_bar={name="tv above the bar",size=1000,part="electronics",verbs={roll="global",},every=7200,num=1329,},bbq_sauce={name="bbq sauce",size=200,part="food",verbs={roll="global",},every=7200,num=1330,},check_presenter={name="check presenter",size=200,part="crafts",verbs={roll="global",},every=7200,num=1331,},chicken_wings={name="chicken wings",size=150,part="food",verbs={roll="global",},every=7200,num=1332,},onion_rings={name="onion rings",size=120,part="food",verbs={roll="global",},every=7200,num=1333,},steak={name="steak",size=250,part="food",verbs={roll="global",},every=7200,num=1334,},ribs_rack={name="ribs rack",size=350,part="food",verbs={roll="global",},every=7200,num=1335,},birthday_song_crew={name="birthday song crew",size=6000,part="people",verbs={roll="global",},every=7200,num=1336,},coleslaw={name="coleslaw",size=120,part="food",verbs={roll="global",},every=7200,num=1337,},paper_lined_tray={name="paper-lined tray",size=350,part="household",verbs={roll="global",},every=7200,num=1338,},pulled_pork={name="pulled pork",size=180,part="food",verbs={roll="global",},every=7200,num=1339,},brisket={name="brisket",size=300,part="food",verbs={roll="global",},every=7200,num=1340,},bulgogi={name="bulgogi",size=250,part="food",verbs={roll="global",},every=7200,num=1341,},tabletop_grill={name="tabletop grill",size=500,part="household",verbs={roll="global",},every=7200,num=1342,},smoker={name="smoker",size=2000,part="household",verbs={roll="global",},every=7200,num=1343,},growler={name="growler",size=350,part="household",verbs={roll="global",},every=7200,num=1344,},bratwurst={name="bratwurst",size=200,part="food",verbs={roll="global",},every=7200,num=1345,},hop_cone={name="hop cone",size=30,part="plants",verbs={roll="global",},every=7200,num=1346,},pretzel_with_mustard={name="pretzel with mustard",size=180,part="food",verbs={roll="global",},every=7200,num=1347,},string_lights={name="string lights",size=5000,part="fixtures",verbs={roll="global",},every=7200,num=1348,},beer_stein={name="beer stein",size=200,part="household",verbs={roll="global",},every=7200,num=1349,},long_wooden_table={name="long wooden table",size=4000,part="household",verbs={roll="global",},every=7200,num=1350,},empanada={name="empanada",size=120,part="food",verbs={roll="global",},every=7200,num=1351,},guarana_soda={name="guarana soda",size=150,part="food",verbs={roll="global",},every=7200,num=1352,},feijoada={name="feijoada",size=220,part="food",verbs={roll="global",},every=7200,num=1353,},picanha_skewer={name="picanha skewer",size=600,part="food",verbs={roll="global",},every=7200,num=1354,},avocado_toast={name="avocado toast",size=180,part="food",verbs={roll="global",},every=7200,num=1355,},bacon={name="bacon",size=180,part="food",verbs={roll="global",},every=7200,num=1356,},bagel_with_lox={name="bagel with lox",size=150,part="food",verbs={roll="global",},every=7200,num=1357,},hash_browns={name="hash browns",size=120,part="food",verbs={roll="global",},every=7200,num=1358,},maple_syrup={name="maple syrup",size=150,part="food",verbs={roll="global",},every=7200,num=1359,},omelette={name="omelette",size=220,part="food",verbs={roll="global",},every=7200,num=1360,},pancake_stack={name="pancake stack",size=220,part="food",verbs={roll="global",},every=7200,num=1361,},scrambled_eggs={name="scrambled eggs",size=180,part="food",verbs={roll="global",},every=7200,num=1362,},waffle={name="waffle",size=180,part="food",verbs={roll="global",},every=7200,num=1363,},tasting_flight={name="tasting flight",size=350,part="food",verbs={roll="global",},every=7200,num=1364,},brewing_kettle={name="brewing kettle",size=1500,part="household",verbs={roll="global",},every=7200,num=1365,},brewmaster={name="brewmaster",size=1800,part="people",verbs={roll="global",},every=7200,num=1366,},fermentation_tank={name="fermentation tank",size=3000,part="household",verbs={roll="global",},every=7200,num=1367,},boba_straw={name="boba straw",size=250,part="household",verbs={roll="global",},every=7200,num=1368,},bubble_tea={name="bubble tea",size=220,part="food",verbs={roll="global",},every=7200,num=1369,},sealed_cup_lid={name="sealed cup lid",size=100,part="detritus",verbs={roll="global",},every=7200,num=1370,},tapioca_pearls={name="tapioca pearls",size=10,part="food",verbs={roll="global",},every=7200,num=1371,},buffet_tray={name="buffet tray",size=500,part="household",verbs={roll="global",},every=7200,num=1372,},heat_lamp={name="heat lamp",size=400,part="household",verbs={roll="global",},every=7200,num=1373,},soup_ladle={name="soup ladle",size=300,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1374,},tray={name="tray",size=400,part="household",verbs={roll="global",},every=7200,num=1375,},dessert_bar={name="dessert bar",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1376,},sneeze_guard={name="sneeze guard",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1377,},cheeseburger={name="cheeseburger",size=120,part="food",verbs={roll="global",},every=7200,num=1378,},hamburger_patty={name="hamburger patty",size=100,part="food",verbs={roll="global",},every=7200,num=1379,},milkshake={name="milkshake",size=200,part="food",verbs={roll="global",},every=7200,num=1380,},soda_fountain_cup={name="soda fountain cup",size=220,part="food",verbs={roll="global",},every=7200,num=1381,},cappuccino={name="cappuccino",size=100,part="food",verbs={roll="global",},every=7200,num=1382,},chai={name="chai",size=100,part="food",verbs={roll="global",},every=7200,num=1383,},coffee_cup_sleeve={name="coffee cup sleeve",size=90,part="detritus",verbs={roll="global",},every=7200,num=1384,},cold_brew={name="cold brew",size=180,part="food",verbs={roll="global",},every=7200,num=1385,},college_student={name="college student",size=1750,part="people",verbs={roll="global",},every=7200,num=1386,},drip_coffee={name="drip coffee",size=140,part="food",verbs={roll="global",},every=7200,num=1387,},espresso={name="espresso",size=60,part="food",verbs={roll="global",},every=7200,num=1388,},latte={name="latte",size=140,part="food",verbs={roll="global",},every=7200,num=1389,},paper_menu={name="paper menu",size=300,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1390,},tea_cup={name="tea cup",size=60,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1391,},wifi_password_card={name="wifi password card",size=90,part="crafts",verbs={roll="global",},every=7200,num=1392,},chai_latte={name="chai latte",size=140,part="food",verbs={roll="global",},every=7200,num=1393,},coffee_grinder={name="coffee grinder",size=350,part="household",verbs={roll="global",},every=7200,num=1394,},espresso_machine_portafilter={name="espresso machine portafilter",size=180,part="hardware",verbs={roll="global",},every=7200,num=1395,},frappe={name="frappe",size=180,part="food",verbs={roll="global",},every=7200,num=1396,},laptop_with_stickers={name="laptop with stickers",size=350,part="electronics",verbs={roll="global",},every=7200,num=1397,},matcha={name="matcha",size=120,part="food",verbs={roll="global",},every=7200,num=1398,},mocha={name="mocha",size=120,part="food",verbs={roll="global",},every=7200,num=1399,},specials_chalkboard={name="specials chalkboard",size=800,part="fixtures",verbs={roll="global",},every=7200,num=1400,},streamer={name="streamer",size=1700,part="people",verbs={roll="global",},every=7200,num=1401,},candy_jar={name="candy jar",size=300,part="household",verbs={roll="global",},every=7200,num=1402,},chocolate_bar={name="chocolate bar",size=150,part="food",verbs={roll="global",},every=7200,num=1403,},licorice={name="licorice",size=200,part="food",verbs={roll="global",},every=7200,num=1404,},rock_candy={name="rock candy",size=150,part="food",verbs={roll="global",},every=7200,num=1405,},turkish_delight={name="turkish delight",size=30,part="food",verbs={roll="global",},every=7200,num=1406,},box_of_chocolates={name="box of chocolates",size=250,part="food",verbs={roll="global",},every=7200,num=1407,},chicken_nuggets={name="chicken nuggets",size=120,part="food",verbs={roll="global",},every=7200,num=1408,},chicken_bucket={name="chicken bucket",size=300,part="food",verbs={roll="global",},every=7200,num=1409,},egg_roll={name="egg roll",size=150,part="food",verbs={roll="global",},every=7200,num=1410,},fortune_cookie_slip={name="fortune cookie slip",size=70,part="crafts",verbs={roll="global",},every=7200,num=1411,},lo_mein={name="lo mein",size=200,part="food",verbs={roll="global",},every=7200,num=1412,},ramen_noodles={name="ramen noodles",size=400,part="food",verbs={roll="global",},every=7200,num=1413,},soup_spoon={name="soup spoon",size=180,part="household",verbs={roll="global",},every=7200,num=1414,},soy_sauce_dish={name="soy sauce dish",size=80,part="household",verbs={roll="global",},every=7200,num=1415,},spring_roll={name="spring roll",size=150,part="food",verbs={roll="global",},every=7200,num=1416,},wonton={name="wonton",size=40,part="food",verbs={roll="global",},every=7200,num=1417,},dim_sum_basket={name="dim sum basket",size=200,part="food",verbs={roll="global",},every=7200,num=1418,},hot_pot={name="hot pot",size=350,part="food",verbs={roll="global",},every=7200,num=1419,},lazy_susan={name="lazy susan",size=600,part="household",verbs={roll="global",},every=7200,num=1420,},restaurant_fish_tank={name="restaurant fish tank",size=1000,part="household",verbs={roll="global",},every=7200,num=1421,},tea_pot={name="tea pot",size=200,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1422,},peking_duck={name="peking duck",size=400,part="food",verbs={roll="global",},every=7200,num=1423,},cocoa_beans={name="cocoa beans",size=30,part="food",verbs={roll="global",},every=7200,num=1424,},chocolate_truffle={name="chocolate truffle",size=30,part="food",verbs={roll="global",},every=7200,num=1425,},muddler={name="muddler",size=200,part="household",verbs={roll="global",},every=7200,num=1426,},martini={name="martini",size=180,part="food",verbs={roll="global",},every=7200,num=1427,},old_fashioned={name="old fashioned",size=120,part="food",verbs={roll="global",},every=7200,num=1428,},vietnamese_coffee={name="vietnamese coffee",size=100,part="food",verbs={roll="global",},every=7200,num=1429,},coffee_roaster={name="coffee roaster",size=1200,part="household",verbs={roll="global",},every=7200,num=1430,},sprinkle_cupcake={name="sprinkle cupcake",size=80,part="food",verbs={roll="global",},every=7200,num=1431,},sprinkles={name="sprinkles",size=2,part="food",verbs={roll="global",},every=7200,num=1432,},blt={name="blt",size=150,part="food",verbs={roll="global",},every=7200,num=1433,},cornichon={name="cornichon",size=40,part="food",verbs={roll="global",},every=7200,num=1434,},deli_ticket={name="deli ticket",size=60,part="crafts",verbs={roll="global",},every=7200,num=1435,},pickle_spear={name="pickle spear",size=120,part="food",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1436,},sauerkraut={name="sauerkraut",size=120,part="food",verbs={roll="global",},every=7200,num=1437,},cheese_board={name="cheese board",size=400,part="food",verbs={roll="global",},every=7200,num=1438,},cold_cut_platter={name="cold cut platter",size=400,part="food",verbs={roll="global",},every=7200,num=1439,},meat_slicer={name="meat slicer",size=600,part="household",verbs={roll="global",},every=7200,num=1440,},pastrami={name="pastrami",size=200,part="food",verbs={roll="global",},every=7200,num=1441,},reuben={name="reuben",size=180,part="food",verbs={roll="global",},every=7200,num=1442,},jamon_leg={name="jamon leg",size=900,part="food",verbs={roll="global",},every=7200,num=1443,},crepe={name="crepe",size=220,part="food",verbs={roll="global",},every=7200,num=1444,},gelato={name="gelato",size=100,part="food",verbs={roll="global",},every=7200,num=1445,},mango_sticky_rice={name="mango sticky rice",size=150,part="food",verbs={roll="global",},every=7200,num=1446,},mochi={name="mochi",size=40,part="food",verbs={roll="global",},every=7200,num=1447,},churro_basket={name="churro basket",size=180,part="food",verbs={roll="global",},every=7200,num=1448,},creme_brulee={name="creme brulee",size=100,part="food",verbs={roll="global",},every=7200,num=1449,},tiramisu={name="tiramisu",size=100,part="food",verbs={roll="global",},every=7200,num=1450,},chili_dog={name="chili dog",size=180,part="food",verbs={roll="global",},every=7200,num=1451,},grilled_cheese={name="grilled cheese",size=150,part="food",verbs={roll="global",},every=7200,num=1452,},knife={name="knife",size=200,part="household",verbs={roll="global",},every=7200,num=1453,},line_cook={name="line cook",size=1750,part="people",verbs={roll="global",},every=7200,num=1454,},sundae={name="sundae",size=150,part="food",verbs={roll="global",},every=7200,num=1455,},yellow_mustard_bottle={name="yellow mustard bottle",size=200,part="food",verbs={roll="global",},every=7200,num=1456,},banana_split={name="banana split",size=250,part="food",verbs={roll="global",},every=7200,num=1457,},diner_counter_stool={name="diner counter stool",size=750,part="fixtures",verbs={roll="global",},every=7200,num=1458,},diner_waitress={name="diner waitress",size=1650,part="people",verbs={roll="global",},every=7200,num=1459,},jukebox_selector={name="jukebox selector",size=200,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1460,},gyro={name="gyro",size=200,part="food",verbs={roll="global",},every=7200,num=1461,},shawarma={name="shawarma",size=250,part="food",verbs={roll="global",},every=7200,num=1462,},doner_spit={name="doner spit",size=1000,part="household",verbs={roll="global",},every=7200,num=1463,},donut_box={name="donut box",size=300,part="household",verbs={roll="global",},every=7200,num=1464,},glazed_donut={name="glazed donut",size=100,part="food",verbs={roll="global",},every=7200,num=1465,},corn_dog={name="corn dog",size=200,part="food",verbs={roll="global",},every=7200,num=1466,},cup_noodles={name="cup noodles",size=120,part="food",verbs={roll="global",},every=7200,num=1467,},hot_sauce={name="hot sauce",size=150,part="food",verbs={roll="global",},every=7200,num=1468,},kids_meal_toy={name="kids meal toy",size=60,part="toys",verbs={roll="global",},every=7200,num=1469,},paper_boat_tray={name="paper boat tray",size=200,part="detritus",verbs={roll="global",},every=7200,num=1470,},sriracha_bottle={name="sriracha bottle",size=200,part="food",verbs={roll="global",},every=7200,num=1471,},drive_thru_speaker={name="drive-thru speaker",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1472,},hot_dog_roller_grill={name="hot dog roller grill",size=600,part="household",verbs={roll="global",},every=7200,num=1473,},chips={name="chips",size=200,part="food",verbs={roll="global",},every=7200,num=1474,},crumpled_newspaper={name="crumpled newspaper",size=300,part="detritus",verbs={roll="global",},every=7200,num=1475,},curry_sauce={name="curry sauce",size=100,part="food",verbs={roll="global",},every=7200,num=1476,},fish_and_chips={name="fish and chips",size=300,part="food",verbs={roll="global",},every=7200,num=1477,},lemon_wedge={name="lemon wedge",size=30,part="food",verbs={roll="global",},every=7200,num=1478,},malt_vinegar={name="malt vinegar",size=200,part="food",verbs={roll="global",},every=7200,num=1479,},mushy_peas={name="mushy peas",size=120,part="food",verbs={roll="global",},every=7200,num=1480,},paper_cone={name="paper cone",size=200,part="detritus",verbs={roll="global",},every=7200,num=1481,},pickled_onion={name="pickled onion",size=30,part="food",verbs={roll="global",},every=7200,num=1482,},tartar_sauce={name="tartar sauce",size=80,part="food",verbs={roll="global",},every=7200,num=1483,},vinegar_bottle={name="vinegar bottle",size=250,part="household",verbs={roll="global",},every=7200,num=1484,},wooden_chip_fork={name="wooden chip fork",size=100,part="household",verbs={roll="global",},every=7200,num=1485,},battered_cod={name="battered cod",size=250,part="food",verbs={roll="global",},every=7200,num=1486,},street_food_skewer={name="street food skewer",size=250,part="food",verbs={roll="global",},every=7200,num=1487,},food_truck_window={name="food truck window",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=1488,},generator_hum={name="generator hum",size=500,part="hardware",verbs={roll="global",},every=7200,num=1489,},hot_dog_cart_umbrella={name="hot dog cart umbrella",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1490,},taco_truck={name="taco truck",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=1491,},champagne_flute={name="champagne flute",size=200,part="household",verbs={roll="global",},every=7200,num=1492,},escargot={name="escargot",size=80,part="food",verbs={roll="global",},every=7200,num=1493,},french_onion_soup={name="french onion soup",size=140,part="food",verbs={roll="global",},every=7200,num=1494,},host_stand={name="host stand",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1495,},reservation_card={name="reservation card",size=90,part="crafts",verbs={roll="global",},every=7200,num=1496,},wine_carafe={name="wine carafe",size=250,part="household",verbs={roll="global",},every=7200,num=1497,},wine_list={name="wine list",size=300,part="crafts",verbs={roll="global",},every=7200,num=1498,},sommelier={name="sommelier",size=1750,part="people",verbs={roll="global",},every=7200,num=1499,},schnitzel={name="schnitzel",size=250,part="food",verbs={roll="global",},every=7200,num=1500,},baklava={name="baklava",size=80,part="food",verbs={roll="global",},every=7200,num=1501,},greek_salad={name="greek salad",size=200,part="food",verbs={roll="global",},every=7200,num=1502,},olive_oil_bottle={name="olive oil bottle",size=300,part="food",verbs={roll="global",},every=7200,num=1503,},pita={name="pita",size=200,part="food",verbs={roll="global",},every=7200,num=1504,},souvlaki={name="souvlaki",size=200,part="food",verbs={roll="global",},every=7200,num=1505,},spanakopita={name="spanakopita",size=100,part="food",verbs={roll="global",},every=7200,num=1506,},tzatziki={name="tzatziki",size=100,part="food",verbs={roll="global",},every=7200,num=1507,},hookah_hose={name="hookah hose",size=1500,part="household",verbs={roll="global",},every=7200,num=1508,},hookah_mouthpiece={name="hookah mouthpiece",size=50,part="household",verbs={roll="global",},every=7200,num=1509,},hookah_tobacco_tin={name="hookah tobacco tin",size=80,part="household",verbs={roll="global",},every=7200,num=1510,},incense_burner={name="incense burner",size=120,part="household",verbs={roll="global",},every=7200,num=1511,},mint_tea={name="mint tea",size=100,part="food",verbs={roll="global",},every=7200,num=1512,},pistachio={name="pistachio",size=20,part="food",verbs={roll="global",},every=7200,num=1513,},shisha_coal={name="shisha coal",size=40,part="household",verbs={roll="global",},every=7200,num=1514,},backgammon_board={name="backgammon board",size=450,part="toys",verbs={roll="global",},every=7200,num=1515,},floor_cushion={name="floor cushion",size=500,part="household",verbs={roll="global",},every=7200,num=1516,},hookah={name="hookah",size=600,part="household",verbs={roll="global",},every=7200,num=1517,},low_brass_table={name="low brass table",size=700,part="household",verbs={roll="global",},every=7200,num=1518,},samovar={name="samovar",size=500,part="household",verbs={roll="global",},every=7200,num=1519,},persian_rug={name="persian rug",size=2000,part="household",verbs={roll="global",},every=7200,num=1520,},celery_salt={name="celery salt",size=100,part="household",verbs={roll="global",},every=7200,num=1521,},chopped_onions={name="chopped onions",size=80,part="food",verbs={roll="global",},every=7200,num=1522,},neon_green_relish={name="neon green relish",size=100,part="food",verbs={roll="global",},every=7200,num=1523,},poppy_seed_bun={name="poppy seed bun",size=120,part="food",verbs={roll="global",},every=7200,num=1524,},sport_peppers={name="sport peppers",size=30,part="food",verbs={roll="global",},every=7200,num=1525,},tomato_wedge={name="tomato wedge",size=40,part="food",verbs={roll="global",},every=7200,num=1526,},chicago_dog={name="chicago dog",size=200,part="food",verbs={roll="global",},every=7200,num=1527,},ice_cream_scoop={name="ice cream scoop",size=200,part="household",verbs={roll="global",},every=7200,num=1528,},waffle_cone={name="waffle cone",size=150,part="food",verbs={roll="global",},every=7200,num=1529,},ice_cream_cooler={name="ice cream cooler",size=1200,part="household",verbs={roll="global",},every=7200,num=1530,},curry={name="curry",size=220,part="food",verbs={roll="global",},every=7200,num=1531,},mango_lassi={name="mango lassi",size=180,part="food",verbs={roll="global",},every=7200,num=1532,},naan={name="naan",size=250,part="food",verbs={roll="global",},every=7200,num=1533,},papadum={name="papadum",size=200,part="food",verbs={roll="global",},every=7200,num=1534,},samosa={name="samosa",size=100,part="food",verbs={roll="global",},every=7200,num=1535,},biryani={name="biryani",size=250,part="food",verbs={roll="global",},every=7200,num=1536,},spice_rack={name="spice rack",size=400,part="household",verbs={roll="global",},every=7200,num=1537,},tikka_masala={name="tikka masala",size=220,part="food",verbs={roll="global",},every=7200,num=1538,},tandoor_oven={name="tandoor oven",size=1200,part="household",verbs={roll="global",},every=7200,num=1539,},nasi_goreng={name="nasi goreng",size=220,part="food",verbs={roll="global",},every=7200,num=1540,},satay_skewer={name="satay skewer",size=200,part="food",verbs={roll="global",},every=7200,num=1541,},tempeh={name="tempeh",size=80,part="food",verbs={roll="global",},every=7200,num=1542,},rendang={name="rendang",size=200,part="food",verbs={roll="global",},every=7200,num=1543,},energy_drink={name="energy drink",size=150,part="food",verbs={roll="global",},every=7200,num=1544,},gamer={name="gamer",size=1750,part="people",verbs={roll="global",},every=7200,num=1545,},gaming_headset={name="gaming headset",size=200,part="electronics",verbs={roll="global",},every=7200,num=1546,},gaming_mouse={name="gaming mouse",size=120,part="electronics",verbs={roll="global",},every=7200,num=1547,},mouse_pad={name="mouse pad",size=350,part="electronics",verbs={roll="global",},every=7200,num=1548,},webcam={name="webcam",size=80,part="electronics",verbs={roll="global",},every=7200,num=1549,},dual_monitors={name="dual monitors",size=600,part="electronics",verbs={roll="global",},every=7200,num=1550,},gaming_chair={name="gaming chair",size=1300,part="household",verbs={roll="global",},every=7200,num=1551,},gaming_keyboard={name="gaming keyboard",size=450,part="electronics",verbs={roll="global",},every=7200,num=1552,},lan_party_sign={name="lan party sign",size=800,part="fixtures",verbs={roll="global",},every=7200,num=1553,},ring_light={name="ring light",size=300,part="electronics",verbs={roll="global",},every=7200,num=1554,},professional_gamer={name="professional gamer",size=1750,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1555,},bread_basket={name="bread basket",size=250,part="household",verbs={roll="global",},every=7200,num=1556,},calzone={name="calzone",size=200,part="food",verbs={roll="global",},every=7200,num=1557,},garlic_knot={name="garlic knot",size=60,part="food",verbs={roll="global",},every=7200,num=1558,},parmesan_shaker={name="parmesan shaker",size=120,part="household",verbs={roll="global",},every=7200,num=1559,},ravioli={name="ravioli",size=40,part="food",verbs={roll="global",},every=7200,num=1560,},spaghetti={name="spaghetti",size=250,part="food",verbs={roll="global",},every=7200,num=1561,},checkered_tablecloth={name="checkered tablecloth",size=1500,part="household",verbs={roll="global",},every=7200,num=1562,},lasagna={name="lasagna",size=250,part="food",verbs={roll="global",},every=7200,num=1563,},margherita_pizza={name="margherita pizza",size=350,part="food",verbs={roll="global",},every=7200,num=1564,},risotto={name="risotto",size=200,part="food",verbs={roll="global",},every=7200,num=1565,},wood_fired_oven={name="wood-fired oven",size=2000,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1566,},chopstick_rest={name="chopstick rest",size=40,part="household",verbs={roll="global",},every=7200,num=1567,},edamame={name="edamame",size=100,part="food",verbs={roll="global",},every=7200,num=1568,},maki_roll={name="maki roll",size=100,part="food",verbs={roll="global",},every=7200,num=1569,},miso_soup={name="miso soup",size=120,part="food",verbs={roll="global",},every=7200,num=1570,},nigiri={name="nigiri",size=60,part="food",verbs={roll="global",},every=7200,num=1571,},pickled_ginger={name="pickled ginger",size=50,part="food",verbs={roll="global",},every=7200,num=1572,},ramen_bowl={name="ramen bowl",size=220,part="food",verbs={roll="global",},every=7200,num=1573,},wasabi={name="wasabi",size=30,part="food",verbs={roll="global",},every=7200,num=1574,},bento_box={name="bento box",size=220,part="food",verbs={roll="global",},every=7200,num=1575,},noren_curtain={name="noren curtain",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=1576,},sashimi_plate={name="sashimi plate",size=250,part="food",verbs={roll="global",},every=7200,num=1577,},sushi_chef={name="sushi chef",size=1700,part="people",verbs={roll="global",},every=7200,num=1578,},tempura={name="tempura",size=150,part="food",verbs={roll="global",},every=7200,num=1579,},tonkatsu={name="tonkatsu",size=200,part="food",verbs={roll="global",},every=7200,num=1580,},udon={name="udon",size=200,part="food",verbs={roll="global",},every=7200,num=1581,},bibimbap={name="bibimbap",size=220,part="food",verbs={roll="global",},every=7200,num=1582,},kimchi={name="kimchi",size=150,part="food",verbs={roll="global",},every=7200,num=1583,},tteokbokki={name="tteokbokki",size=200,part="food",verbs={roll="global",},every=7200,num=1584,},banchan_dishes={name="banchan dishes",size=400,part="food",verbs={roll="global",},every=7200,num=1585,},arepa={name="arepa",size=120,part="food",verbs={roll="global",},every=7200,num=1586,},tamale={name="tamale",size=150,part="food",verbs={roll="global",},every=7200,num=1587,},ceviche={name="ceviche",size=150,part="food",verbs={roll="global",},every=7200,num=1588,},falafel={name="falafel",size=40,part="food",verbs={roll="global",},every=7200,num=1589,},hummus={name="hummus",size=120,part="food",verbs={roll="global",},every=7200,num=1590,},guacamole={name="guacamole",size=120,part="food",verbs={roll="global",},every=7200,num=1591,},horchata={name="horchata",size=180,part="food",verbs={roll="global",},every=7200,num=1592,},quesadilla={name="quesadilla",size=220,part="food",verbs={roll="global",},every=7200,num=1593,},salsa_bowl={name="salsa bowl",size=120,part="food",verbs={roll="global",},every=7200,num=1594,},taco_shell={name="taco shell",size=120,part="food",verbs={roll="global",},every=7200,num=1595,},tortilla_chips={name="tortilla chips",size=200,part="food",verbs={roll="global",},every=7200,num=1596,},enchilada={name="enchilada",size=200,part="food",verbs={roll="global",},every=7200,num=1597,},sombrero_on_the_wall={name="sombrero on the wall",size=550,part="fixtures",verbs={roll="global",},every=7200,num=1598,},pepperoni={name="pepperoni",size=80,part="food",verbs={roll="global",},every=7200,num=1599,},pizza_box_stack={name="pizza box stack",size=450,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1600,},pizza_cutter={name="pizza cutter",size=200,part="household",verbs={roll="global",},every=7200,num=1601,},red_pepper_flakes={name="red pepper flakes",size=100,part="household",verbs={roll="global",},every=7200,num=1602,},pizza_delivery_bag={name="pizza delivery bag",size=500,part="household",verbs={roll="global",},every=7200,num=1603,},pizza_peel={name="pizza peel",size=1200,part="hardware",verbs={roll="global",},every=7200,num=1604,},pizzaiolo={name="pizzaiolo",size=1750,part="people",verbs={roll="global",},every=7200,num=1605,},dart={name="dart",size=150,part="toys",verbs={roll="global",},every=7200,num=1606,},pub_quiz_sheet={name="pub quiz sheet",size=300,part="crafts",verbs={roll="global",},every=7200,num=1607,},dartboard={name="dartboard",size=450,part="toys",verbs={roll="global",},every=7200,num=1608,},narutomaki={name="narutomaki",size=30,part="food",verbs={roll="global",},every=7200,num=1609,},ramen_egg={name="ramen egg",size=50,part="food",verbs={roll="global",},every=7200,num=1610,},ticket_vending_machine={name="ticket vending machine",size=1800,part="electronics",verbs={roll="global",},every=7200,num=1611,},dishwasher={name="dishwasher",size=1700,part="people",verbs={roll="global",},every=7200,num=1612,},wine_glass={name="wine glass",size=200,part="household",verbs={roll="global",},every=7200,num=1613,},banh_mi={name="banh mi",size=300,part="food",verbs={roll="global",},every=7200,num=1614,},submarine_sandwich={name="submarine sandwich",size=300,part="food",verbs={roll="global",},every=7200,num=1615,},clam_chowder={name="clam chowder",size=150,part="food",verbs={roll="global",},every=7200,num=1616,},lobster_bib={name="lobster bib",size=300,part="clothes",verbs={roll="global",},every=7200,num=1617,},shrimp_cocktail={name="shrimp cocktail",size=150,part="food",verbs={roll="global",},every=7200,num=1618,},crab_leg={name="crab leg",size=300,part="food",verbs={roll="global",},every=7200,num=1619,},lobster_trap={name="lobster trap",size=700,part="hardware",verbs={roll="global",},every=7200,num=1620,},green_juice={name="green juice",size=200,part="food",verbs={roll="global",},every=7200,num=1621,},protein_powder={name="protein powder",size=300,part="food",verbs={roll="global",},every=7200,num=1622,},smoothie_bowl={name="smoothie bowl",size=180,part="food",verbs={roll="global",},every=7200,num=1623,},juicer={name="juicer",size=450,part="household",verbs={roll="global",},every=7200,num=1624,},croquette={name="croquette",size=60,part="food",verbs={roll="global",},every=7200,num=1625,},patatas_bravas={name="patatas bravas",size=150,part="food",verbs={roll="global",},every=7200,num=1626,},tapas_plate={name="tapas plate",size=180,part="food",verbs={roll="global",},every=7200,num=1627,},paella={name="paella",size=400,part="food",verbs={roll="global",},every=7200,num=1628,},sangria_pitcher={name="sangria pitcher",size=250,part="food",verbs={roll="global",},every=7200,num=1629,},foam_finger={name="foam finger",size=500,part="toys",verbs={roll="global",},every=7200,num=1630,},steak_knife={name="steak knife",size=220,part="household",verbs={roll="global",},every=7200,num=1631,},wedge_salad={name="wedge salad",size=200,part="food",verbs={roll="global",},every=7200,num=1632,},sushi_boat={name="sushi boat",size=600,part="household",verbs={roll="global",},every=7200,num=1633,},sushi_conveyor_belt={name="sushi conveyor belt",size=8000,part="fixtures",verbs={roll="global",},every=7200,num=1634,},sugar_tongs={name="sugar tongs",size=120,part="household",verbs={roll="global",},every=7200,num=1635,},teapot_with_cozy={name="teapot with cozy",size=250,part="household",verbs={roll="global",},every=7200,num=1636,},turkish_tea_glass={name="turkish tea glass",size=100,part="household",verbs={roll="global",},every=7200,num=1637,},scones_and_cream={name="scones and cream",size=180,part="food",verbs={roll="global",},every=7200,num=1638,},tea_sampler={name="tea sampler",size=200,part="food",verbs={roll="global",},every=7200,num=1639,},three_tier_tray={name="three-tier tray",size=350,part="household",verbs={roll="global",},every=7200,num=1640,},pad_thai={name="pad thai",size=250,part="food",verbs={roll="global",},every=7200,num=1641,},thai_iced_tea={name="thai iced tea",size=180,part="food",verbs={roll="global",},every=7200,num=1642,},green_curry={name="green curry",size=200,part="food",verbs={roll="global",},every=7200,num=1643,},tom_yum={name="tom yum",size=200,part="food",verbs={roll="global",},every=7200,num=1644,},theme_restaurant_prop={name="theme restaurant prop",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1645,},animatronic={name="animatronic",size=1600,part="electronics",verbs={roll="global",},every=7200,num=1646,},quinoa_bowl={name="quinoa bowl",size=200,part="food",verbs={roll="global",},every=7200,num=1647,},veggie_burger={name="veggie burger",size=120,part="food",verbs={roll="global",},every=7200,num=1648,},pho_bowl={name="pho bowl",size=240,part="food",verbs={roll="global",},every=7200,num=1649,},vermicelli_bowl={name="vermicelli bowl",size=220,part="food",verbs={roll="global",},every=7200,num=1650,},cork_screw={name="cork screw",size=120,part="household",verbs={roll="global",},every=7200,num=1651,},wine_barrel={name="wine barrel",size=900,part="household",verbs={roll="global",},every=7200,num=1652,},grape_crate={name="grape crate",size=500,part="household",verbs={roll="global",},every=7200,num=1653,},vineyard_row={name="vineyard row",size=20000,part="plants",verbs={roll="global",},every=7200,num=1654,},carnation={name="carnation",size=400,part="plants",verbs={roll="global",},every=7200,num=1655,},chrysanthemum={name="chrysanthemum",size=150,part="plants",verbs={roll="global",},every=7200,num=1656,},coin_on_a_gravestone={name="coin on a gravestone",size=20,part="valuables",verbs={roll="global",},every=7200,num=1657,},dried_rose={name="dried rose",size=250,part="plants",verbs={roll="global",},every=7200,num=1658,},faded_photo={name="faded photo",size=100,part="valuables",verbs={roll="global",},every=7200,num=1659,},funeral_program={name="funeral program",size=220,part="crafts",verbs={roll="global",},every=7200,num=1660,},garden_spade={name="garden spade",size=900,part="hardware",verbs={roll="global",},every=7200,num=1661,},gold_coin={name="gold coin",size=30,part="valuables",verbs={roll="global",},every=7200,num=1662,},grave_blanket={name="grave blanket",size=1200,part="plants",verbs={roll="global",},every=7200,num=1663,},grave_photo={name="grave photo",size=80,part="valuables",verbs={roll="global",},every=7200,num=1664,},incense_stick={name="incense stick",size=200,part="household",verbs={roll="global",},every=7200,num=1665,},lawn_clippings={name="lawn clippings",size=300,part="nature",verbs={roll="global",},every=7200,num=1666,},lily_of_the_valley={name="lily of the valley",size=150,part="plants",verbs={roll="global",},every=7200,num=1667,},love_letter={name="love letter",size=220,part="valuables",verbs={roll="global",},every=7200,num=1668,},marigold={name="marigold",size=100,part="plants",verbs={roll="global",},every=7200,num=1669,},plastic_rosary={name="plastic rosary",size=300,part="valuables",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1670,},poppy_wreath={name="poppy wreath",size=500,part="plants",verbs={roll="global",},every=7200,num=1671,},prayer_card={name="prayer card",size=100,part="crafts",verbs={roll="global",},every=7200,num=1672,},signet_ring={name="signet ring",size=20,part="valuables",verbs={roll="global",},every=7200,num=1673,},silver_dollar={name="silver dollar",size=40,part="valuables",verbs={roll="global",},every=7200,num=1674,},small_flag={name="small flag",size=300,part="fixtures",verbs={roll="global",},every=7200,num=1675,},small_statue={name="small statue",size=200,part="fixtures",verbs={roll="global",},every=7200,num=1676,},stone_lamb={name="stone lamb",size=400,part="fixtures",verbs={roll="global",},every=7200,num=1677,},teddy_bear_memorial={name="teddy bear memorial",size=300,part="toys",verbs={roll="global",},every=7200,num=1678,},wilted_lily={name="wilted lily",size=400,part="plants",verbs={roll="global",},every=7200,num=1679,},wind_up_music_box={name="wind-up music box",size=80,part="instruments",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1680,},angel_with_raised_wings={name="angel with raised wings",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1681,},bat_colony={name="bat colony",size=1000,part="animals",verbs={roll="global",},every=7200,num=1682,},candlestick={name="candlestick",size=300,part="valuables",verbs={roll="global",},every=7200,num=1683,},caretaker_s_shed={name="caretaker's shed",size=4000,part="buildings",verbs={roll="global",},every=7200,num=1684,},cedar_of_lebanon={name="cedar of lebanon",size=15000,part="plants",verbs={roll="global",},every=7200,num=1685,},chalice={name="chalice",size=250,part="valuables",verbs={roll="global",},every=7200,num=1686,},cherub={name="cherub",size=600,part="fixtures",verbs={roll="global",},every=7200,num=1687,},crow_on_a_headstone={name="crow on a headstone",size=450,part="animals",verbs={roll="global",},every=7200,num=1688,},crypt_door={name="crypt door",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1689,},dogwood={name="dogwood",size=6000,part="plants",verbs={roll="global",},every=7200,num=1690,},funeral_wreath={name="funeral wreath",size=800,part="plants",verbs={roll="global",},every=7200,num=1691,},garden_urn={name="garden urn",size=600,part="fixtures",verbs={roll="global",},every=7200,num=1692,},granite_marker={name="granite marker",size=600,part="fixtures",verbs={roll="global",},every=7200,num=1693,},grave_rubbing={name="grave rubbing",size=300,part="crafts",verbs={roll="global",},every=7200,num=1694,},hearse_driver={name="hearse driver",size=1800,part="people",verbs={roll="global",},every=7200,num=1695,},historian={name="historian",size=1700,part="people",verbs={roll="global",},every=7200,num=1696,},iron_gate={name="iron gate",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1697,},marble_cross={name="marble cross",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1698,},old_oak={name="old oak",size=20000,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1699,},ossuary={name="ossuary",size=5000,part="buildings",verbs={roll="global",},every=7200,num=1700,},owl_on_a_cross={name="owl on a cross",size=500,part="animals",verbs={roll="global",},every=7200,num=1701,},priest={name="priest",size=1750,part="people",verbs={roll="global",},every=7200,num=1702,},raven={name="raven",size=600,part="animals",verbs={roll="global",},every=7200,num=1703,},silver_spoon={name="silver spoon",size=200,part="valuables",verbs={roll="global",},every=7200,num=1704,},stone_bench={name="stone bench",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=1705,},visitor_with_flowers={name="visitor with flowers",size=1700,part="people",verbs={roll="global",},every=7200,num=1706,},war_memorial={name="war memorial",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1707,},weeping_willow={name="weeping willow",size=12000,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1708,},widow={name="widow",size=1600,part="people",verbs={roll="global",},every=7200,num=1709,},wrought_iron_fence={name="wrought-iron fence",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1710,},chapel_with_a_bell={name="chapel with a bell",size=12000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1711,},deed_to_the_land={name="deed to the land",size=280,part="valuables",verbs={roll="global",},every=7200,num=1712,},family_plot={name="family plot",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=1713,},funeral_director={name="funeral director",size=1800,part="people",verbs={roll="global",},every=7200,num=1714,},haunted_crypt={name="haunted crypt",size=6000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1715,},presidential_monument={name="presidential monument",size=15000,part="fixtures",verbs={roll="global",},every=7200,num=1716,},pyramid_tomb={name="pyramid tomb",size=10000,part="fixtures",verbs={roll="global",},every=7200,num=1717,},tomb_of_the_unknown={name="tomb of the unknown",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1718,},i_voted_sticker={name="I voted sticker",size=30,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1719,},id_card={name="ID card",size=80,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1720,},audio_cable={name="audio cable",size=3000,part="electronics",verbs={roll="global",},every=7200,num=1721,},ballot={name="ballot",size=220,part="crafts",verbs={roll="global",},every=7200,num=1722,},ballpoint_pen={name="ballpoint pen",size=140,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1723,},band_poster={name="band poster",size=600,part="crafts",verbs={roll="global",},every=7200,num=1724,},band_uniform={name="band uniform",size=1200,part="clothes",verbs={roll="global",},every=7200,num=1725,},baton={name="baton",size=350,part="instruments",verbs={roll="global",},every=7200,num=1726,},book_cart={name="book cart",size=1000,part="household",verbs={roll="global",},every=7200,num=1727,},bow={name="bow",size=750,part="instruments",verbs={roll="global",},every=7200,num=1728,},bugle={name="bugle",size=300,part="instruments",verbs={roll="global",},every=7200,num=1729,},capo={name="capo",size=80,part="instruments",verbs={roll="global",},every=7200,num=1730,},card_catalog={name="card catalog",size=1200,part="household",verbs={roll="global",},every=7200,num=1731,},clapperboard={name="clapperboard",size=250,part="household",verbs={roll="global",},every=7200,num=1732,},clipboard={name="clipboard",size=320,part="crafts",verbs={roll="global",},every=7200,num=1733,},coat_check_ticket={name="coat check ticket",size=50,part="crafts",verbs={roll="global",},every=7200,num=1734,},concert_program={name="concert program",size=220,part="crafts",verbs={roll="global",},every=7200,num=1735,},concert_wristband={name="concert wristband",size=250,part="valuables",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1736,},cornet={name="cornet",size=350,part="instruments",verbs={roll="global",},every=7200,num=1737,},date_stamp={name="date stamp",size=80,part="crafts",verbs={roll="global",},every=7200,num=1738,},drum_key={name="drum key",size=40,part="hardware",verbs={roll="global",},every=7200,num=1739,},drum_stool={name="drum stool",size=500,part="household",verbs={roll="global",},every=7200,num=1740,},drumhead={name="drumhead",size=350,part="instruments",verbs={roll="global",},every=7200,num=1741,},earplugs={name="earplugs",size=20,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1742,},family_photo={name="family photo",size=150,part="valuables",verbs={roll="global",},every=7200,num=1743,},flute={name="flute",size=650,part="instruments",verbs={roll="global",},every=7200,num=1744,},foot_pedal={name="foot pedal",size=150,part="electronics",verbs={roll="global",},every=7200,num=1745,},form={name="form",size=220,part="crafts",verbs={roll="global",},every=7200,num=1746,},glow_stick={name="glow stick",size=200,part="toys",verbs={roll="global",},every=7200,num=1747,},guitar_strap={name="guitar strap",size=1200,part="clothes",verbs={roll="global",},every=7200,num=1748,},guitar_string={name="guitar string",size=1000,part="instruments",verbs={roll="global",},every=7200,num=1749,},guitar_tuner={name="guitar tuner",size=80,part="instruments",verbs={roll="global",},every=7200,num=1750,},handbell={name="handbell",size=200,part="instruments",verbs={roll="global",},every=7200,num=1751,},hat_plume={name="hat plume",size=300,part="clothes",verbs={roll="global",},every=7200,num=1752,},highlighter={name="highlighter",size=140,part="crafts",verbs={roll="global",},every=7200,num=1753,},ink_pad={name="ink pad",size=80,part="crafts",verbs={roll="global",},every=7200,num=1754,},laminated_sign={name="laminated sign",size=300,part="crafts",verbs={roll="global",},every=7200,num=1755,},lanyard={name="lanyard",size=500,part="clothes",verbs={roll="global",},every=7200,num=1756,},library_book={name="library book",size=220,part="crafts",verbs={roll="global",},every=7200,num=1757,},light_up_wand={name="light-up wand",size=300,part="toys",verbs={roll="global",},every=7200,num=1758,},makeup_mirror={name="makeup mirror",size=500,part="household",verbs={roll="global",},every=7200,num=1759,},manila_folder={name="manila folder",size=300,part="crafts",verbs={roll="global",},every=7200,num=1760,},metronome={name="metronome",size=200,part="instruments",verbs={roll="global",},every=7200,num=1761,},microphone={name="microphone",size=200,part="instruments",verbs={roll="global",},every=7200,num=1762,},microphone_stand={name="microphone stand",size=1500,part="hardware",verbs={roll="global",},every=7200,num=1763,},music_stand_light={name="music stand light",size=250,part="electronics",verbs={roll="global",},every=7200,num=1764,},mute={name="mute",size=40,part="instruments",verbs={roll="global",},every=7200,num=1765,},oboe={name="oboe",size=650,part="instruments",verbs={roll="global",},every=7200,num=1766,},opera_glasses={name="opera glasses",size=120,part="household",verbs={roll="global",},every=7200,num=1767,},overdue_book={name="overdue book",size=220,part="crafts",verbs={roll="global",},every=7200,num=1768,},paper_clip={name="paper clip",size=30,part="crafts",verbs={roll="global",},every=7200,num=1769,},piccolo={name="piccolo",size=320,part="instruments",verbs={roll="global",},every=7200,num=1770,},playbill={name="playbill",size=220,part="crafts",verbs={roll="global",},every=7200,num=1771,},prop_sword={name="prop sword",size=800,part="toys",verbs={roll="global",},every=7200,num=1772,},queue_ticket={name="queue ticket",size=70,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1773,},rolled_up_map={name="rolled-up map",size=400,part="crafts",verbs={roll="global",},every=7200,num=1774,},rosin={name="rosin",size=50,part="instruments",verbs={roll="global",},every=7200,num=1775,},rubber_stamp={name="rubber stamp",size=80,part="crafts",verbs={roll="global",},every=7200,num=1776,},script={name="script",size=300,part="crafts",verbs={roll="global",},every=7200,num=1777,},setlist={name="setlist",size=300,part="crafts",verbs={roll="global",},every=7200,num=1778,},shako={name="shako",size=400,part="clothes",verbs={roll="global",},every=7200,num=1779,},sheet_music={name="sheet music",size=300,part="instruments",verbs={roll="global",},every=7200,num=1780,},stage_monitor={name="stage monitor",size=600,part="electronics",verbs={roll="global",},every=7200,num=1781,},staple_remover={name="staple remover",size=120,part="hardware",verbs={roll="global",},every=7200,num=1782,},theater_mask={name="theater mask",size=250,part="toys",verbs={roll="global",},every=7200,num=1783,},tour_t_shirt={name="tour t-shirt",size=700,part="clothes",verbs={roll="global",},every=7200,num=1784,},triangle={name="triangle",size=200,part="instruments",verbs={roll="global",},every=7200,num=1785,},tuning_fork={name="tuning fork",size=150,part="instruments",verbs={roll="global",},every=7200,num=1786,},usher_s_flashlight={name="usher's flashlight",size=150,part="electronics",verbs={roll="global",},every=7200,num=1787,},vip_pass={name="vip pass",size=120,part="valuables",verbs={roll="global",},every=7200,num=1788,},visitor_badge={name="visitor badge",size=80,part="crafts",verbs={roll="global",},every=7200,num=1789,},voter_registration={name="voter registration",size=220,part="crafts",verbs={roll="global",},every=7200,num=1790,},actor={name="actor",size=1750,part="people",verbs={roll="global",},every=7200,num=1791,},autograph={name="autograph",size=200,part="valuables",verbs={roll="global",},every=7200,num=1792,},bagpipes={name="bagpipes",size=700,part="instruments",verbs={roll="global",},every=7200,num=1793,},bake_sale_table={name="bake sale table",size=1800,part="fixtures",verbs={roll="global",},every=7200,num=1794,},bassist={name="bassist",size=1750,part="people",verbs={roll="global",},every=7200,num=1795,},baton_twirler={name="baton twirler",size=1650,part="people",verbs={roll="global",},every=7200,num=1796,},blouse={name="blouse",size=600,part="clothes",verbs={roll="global",},every=7200,num=1797,},bookmobile={name="bookmobile",size=8000,part="vehicles",verbs={roll="global",},every=7200,num=1798,},bouncer={name="bouncer",size=1900,part="people",verbs={roll="global",},every=7200,num=1799,},bulletin_board={name="bulletin board",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1800,},bust={name="bust",size=500,part="fixtures",verbs={roll="global",},every=7200,num=1801,},cellist={name="cellist",size=1750,part="people",verbs={roll="global",},every=7200,num=1802,},chalkboard={name="chalkboard",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1803,},choir_robe={name="choir robe",size=1400,part="clothes",verbs={roll="global",},every=7200,num=1804,},clerk={name="clerk",size=1700,part="people",verbs={roll="global",},every=7200,num=1805,},color_guard={name="color guard",size=1700,part="people",verbs={roll="global",},every=7200,num=1806,},concertmaster={name="concertmaster",size=1750,part="people",verbs={roll="global",},every=7200,num=1807,},conductor={name="conductor",size=1750,part="people",verbs={roll="global",},every=7200,num=1808,},costume_rack={name="costume rack",size=1800,part="household",verbs={roll="global",},every=7200,num=1809,},crt_monitor={name="crt monitor",size=400,part="electronics",verbs={roll="global",},every=7200,num=1810,},cymbal={name="cymbal",size=400,part="instruments",verbs={roll="global",},every=7200,num=1811,},dance_floor={name="dance floor",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=1812,},director_s_chair={name="director's chair",size=900,part="household",verbs={roll="global",},every=7200,num=1813,},disco_ball={name="disco ball",size=400,part="fixtures",verbs={roll="global",},every=7200,num=1814,},dj={name="dj",size=1750,part="people",verbs={roll="global",},every=7200,num=1815,},dj_turntable={name="dj turntable",size=500,part="electronics",verbs={roll="global",},every=7200,num=1816,},dress_shirt={name="dress shirt",size=700,part="clothes",verbs={roll="global",},every=7200,num=1817,},drum_major={name="drum major",size=1900,part="people",verbs={roll="global",},every=7200,num=1818,},drumline={name="drumline",size=5000,part="people",verbs={roll="global",},every=7200,num=1819,},drummer={name="drummer",size=1750,part="people",verbs={roll="global",},every=7200,num=1820,},filing_cabinet={name="filing cabinet",size=1300,part="household",verbs={roll="global",},every=7200,num=1821,},firefighter={name="firefighter",size=1800,part="people",verbs={roll="global",},every=7200,num=1822,},flag={name="flag",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=1823,},flutist={name="flutist",size=1700,part="people",verbs={roll="global",},every=7200,num=1824,},fog_machine={name="fog machine",size=500,part="electronics",verbs={roll="global",},every=7200,num=1825,},french_horn={name="french horn",size=500,part="instruments",verbs={roll="global",},every=7200,num=1826,},gavel={name="gavel",size=300,part="hardware",verbs={roll="global",},every=7200,num=1827,},globe_on_a_stand={name="globe on a stand",size=1200,part="household",verbs={roll="global",},every=7200,num=1828,},glockenspiel={name="glockenspiel",size=450,part="instruments",verbs={roll="global",},every=7200,num=1829,},guitarist={name="guitarist",size=1750,part="people",verbs={roll="global",},every=7200,num=1830,},jury_summons={name="jury summons",size=220,part="crafts",verbs={roll="global",},every=7200,num=1831,},karaoke_machine={name="karaoke machine",size=500,part="electronics",verbs={roll="global",},every=7200,num=1832,},keyboard_stand={name="keyboard stand",size=1200,part="hardware",verbs={roll="global",},every=7200,num=1833,},keyboardist={name="keyboardist",size=1750,part="people",verbs={roll="global",},every=7200,num=1834,},lab_coat={name="lab coat",size=1100,part="clothes",verbs={roll="global",},every=7200,num=1835,},laptop={name="laptop",size=350,part="electronics",verbs={roll="global",},every=7200,num=1836,},laser_pointer={name="laser pointer",size=120,part="electronics",verbs={roll="global",},every=7200,num=1837,},lead_singer={name="lead singer",size=1750,part="people",verbs={roll="global",},every=7200,num=1838,},marching_bass_drum={name="marching bass drum",size=700,part="instruments",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1839,},marquee={name="marquee",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=1840,},merch_table={name="merch table",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1841,},metal_detector={name="metal detector",size=2000,part="electronics",verbs={roll="global",},every=7200,num=1842,},mixing_board={name="mixing board",size=1200,part="electronics",verbs={roll="global",},every=7200,num=1843,},music_stand={name="music stand",size=1000,part="instruments",verbs={roll="global",},every=7200,num=1844,},opera_singer={name="opera singer",size=1700,part="people",verbs={roll="global",},every=7200,num=1845,},overhead_projector={name="overhead projector",size=500,part="electronics",verbs={roll="global",},every=7200,num=1846,},painting={name="painting",size=600,part="valuables",verbs={roll="global",},every=7200,num=1847,},photocopier={name="photocopier",size=1100,part="electronics",verbs={roll="global",},every=7200,num=1848,},piano_bench={name="piano bench",size=900,part="household",verbs={roll="global",},every=7200,num=1849,},piano_tuner={name="piano tuner",size=1750,part="people",verbs={roll="global",},every=7200,num=1850,},plaque={name="plaque",size=400,part="fixtures",verbs={roll="global",},every=7200,num=1851,},podium={name="podium",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1852,},polling_booth={name="polling booth",size=1800,part="fixtures",verbs={roll="global",},every=7200,num=1853,},ribbon_rosette={name="ribbon rosette",size=120,part="valuables",verbs={roll="global",},every=7200,num=1854,},road_case={name="road case",size=900,part="household",verbs={roll="global",},every=7200,num=1855,},roadie={name="roadie",size=1800,part="people",verbs={roll="global",},every=7200,num=1856,},savings_bond={name="savings bond",size=220,part="valuables",verbs={roll="global",},every=7200,num=1857,},school_bell={name="school bell",size=200,part="instruments",verbs={roll="global",},every=7200,num=1858,},school_crossing_sign={name="school crossing sign",size=2200,part="fixtures",verbs={roll="global",},every=7200,num=1859,},school_desk={name="school desk",size=750,part="household",verbs={roll="global",},every=7200,num=1860,},scrubs={name="scrubs",size=700,part="clothes",verbs={roll="global",},every=7200,num=1861,},sculpture={name="sculpture",size=500,part="valuables",verbs={roll="global",},every=7200,num=1862,},security_camera={name="security camera",size=200,part="electronics",verbs={roll="global",},every=7200,num=1863,},security_desk={name="security desk",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=1864,},soprano={name="soprano",size=1650,part="people",verbs={roll="global",},every=7200,num=1865,},sound_engineer={name="sound engineer",size=1750,part="people",verbs={roll="global",},every=7200,num=1866,},sousaphone={name="sousaphone",size=1100,part="instruments",verbs={roll="global",},every=7200,num=1867,},speaker_stack={name="speaker stack",size=2000,part="electronics",verbs={roll="global",},every=7200,num=1868,},spotlight={name="spotlight",size=400,part="electronics",verbs={roll="global",},every=7200,num=1869,},stagehand={name="stagehand",size=1750,part="people",verbs={roll="global",},every=7200,num=1870,},stock_certificate={name="stock certificate",size=280,part="valuables",verbs={roll="global",},every=7200,num=1871,},subwoofer={name="subwoofer",size=700,part="electronics",verbs={roll="global",},every=7200,num=1872,},teacher={name="teacher",size=1700,part="people",verbs={roll="global",},every=7200,num=1873,},tenor={name="tenor",size=1800,part="people",verbs={roll="global",},every=7200,num=1874,},theater_director={name="theater director",size=1750,part="people",verbs={roll="global",},every=7200,num=1875,},ticket_booth={name="ticket booth",size=2000,part="buildings",verbs={roll="global",},every=7200,num=1876,},timpani={name="timpani",size=700,part="instruments",verbs={roll="global",},every=7200,num=1877,},trumpet_player={name="trumpet player",size=1750,part="people",verbs={roll="global",},every=7200,num=1878,},usher={name="usher",size=1700,part="people",verbs={roll="global",},every=7200,num=1879,},velvet_curtain={name="velvet curtain",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=1880,},velvet_rope={name="velvet rope",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=1881,},viola={name="viola",size=660,part="instruments",verbs={roll="global",},every=7200,num=1882,},violinist={name="violinist",size=1750,part="people",verbs={roll="global",},every=7200,num=1883,},water_cooler={name="water cooler",size=1200,part="household",verbs={roll="global",},every=7200,num=1884,},xylophone={name="xylophone",size=700,part="instruments",verbs={roll="global",},every=7200,num=1885,},box_seat={name="box seat",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=1886,},capitol_dome={name="capitol dome",size=45000,part="buildings",verbs={roll="global",},every=7200,num=1887,},choir={name="choir",size=6000,part="people",verbs={roll="global",},every=7200,num=1888,},church_bell={name="church bell",size=1000,part="instruments",verbs={roll="global",},every=7200,num=1889,},concert_hall={name="concert hall",size=45000,part="buildings",verbs={roll="global",},every=7200,num=1890,},concert_hall_chandelier={name="concert hall chandelier",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=1891,},confetti_cannon={name="confetti cannon",size=400,part="toys",verbs={roll="global",},every=7200,num=1892,},crowd_surfer={name="crowd surfer",size=1800,part="people",verbs={roll="global",},every=7200,num=1893,},crown={name="crown",size=300,part="valuables",verbs={roll="global",},every=7200,num=1894,},double_bass={name="double bass",size=1800,part="instruments",verbs={roll="global",},every=7200,num=1895,},drum_kit={name="drum kit",size=1500,part="instruments",verbs={roll="global",},every=7200,num=1896,},field_show={name="field show",size=50000,part="people",verbs={roll="global",},every=7200,num=1897,},gong={name="gong",size=1000,part="instruments",verbs={roll="global",},every=7200,num=1898,},harp={name="harp",size=1700,part="instruments",verbs={roll="global",},every=7200,num=1899,},judge={name="judge",size=1750,part="people",verbs={roll="global",},every=7200,num=1900,},lighting_rig={name="lighting rig",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=1901,},marching_band={name="marching band",size=8000,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1902,},marimba={name="marimba",size=2000,part="instruments",verbs={roll="global",},every=7200,num=1903,},mayor={name="mayor",size=1800,part="people",verbs={roll="global",},every=7200,num=1904,},mosh_pit={name="mosh pit",size=5000,part="people",verbs={roll="global",},every=7200,num=1905,},orchestra={name="orchestra",size=8000,part="people",verbs={roll="global",},every=7200,num=1906,},orchestra_pit={name="orchestra pit",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=1907,},pipe_organ={name="pipe organ",size=8000,part="instruments",verbs={roll="global",},every=7200,num=1908,},scepter={name="scepter",size=900,part="valuables",verbs={roll="global",},every=7200,num=1909,},stadium={name="stadium",size=120000,part="buildings",verbs={roll="global",},every=7200,num=1910,},stage={name="stage",size=8000,part="fixtures",verbs={roll="global",},every=7200,num=1911,},stage_curtain={name="stage curtain",size=8000,part="fixtures",verbs={roll="global",},every=7200,num=1912,},stamp_collection={name="stamp collection",size=250,part="valuables",verbs={roll="global",},every=7200,num=1913,},statue_of_a_founder={name="statue of a founder",size=5000,part="fixtures",verbs={roll="global",},every=7200,num=1914,},theater={name="theater",size=35000,part="buildings",verbs={roll="global",},every=7200,num=1915,},tiara={name="tiara",size=200,part="valuables",verbs={roll="global",},every=7200,num=1916,},tour_bus={name="tour bus",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=1917,},train_station={name="train station",size=60000,part="buildings",verbs={roll="global",},every=7200,num=1918,},war_monument={name="war monument",size=8000,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1919,},baseball_card={name="baseball card",size=90,part="valuables",verbs={roll="global",},every=7200,num=1920,},bluetooth_speaker={name="bluetooth speaker",size=200,part="electronics",verbs={roll="global",},every=7200,num=1921,},bracelet={name="bracelet",size=70,part="valuables",verbs={roll="global",},every=7200,num=1922,},cardboard_tube={name="cardboard tube",size=300,part="detritus",verbs={roll="global",},every=7200,num=1923,},clothes_hanger={name="clothes hanger",size=400,part="household",verbs={roll="global",},every=7200,num=1924,},coffee_lid={name="coffee lid",size=80,part="detritus",verbs={roll="global",},every=7200,num=1925,},coffee_stirrer={name="coffee stirrer",size=140,part="detritus",verbs={roll="global",},every=7200,num=1926,},compact_disc={name="compact disc",size=120,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1927,},dvd={name="dvd",size=120,part="electronics",verbs={roll="global",},every=7200,num=1928,},e_reader={name="e-reader",size=170,part="electronics",verbs={roll="global",},every=7200,num=1929,},earbuds={name="earbuds",size=50,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1930,},empty_box={name="empty box",size=300,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1931,},engagement_ring={name="engagement ring",size=20,part="valuables",verbs={roll="global",},every=7200,num=1932,},french_fries={name="french fries",size=150,part="food",verbs={roll="global",},every=7200,num=1933,},gift_bag={name="gift bag",size=350,part="household",verbs={roll="global",},every=7200,num=1934,},gift_card={name="gift card",size=80,part="valuables",verbs={roll="global",},every=7200,num=1935,},gift_wrap={name="gift wrap",size=500,part="crafts",verbs={roll="global",},every=7200,num=1936,},gumball={name="gumball",size=20,part="food",verbs={roll="global",},every=7200,num=1937,},hand_sanitizer={name="hand sanitizer",size=100,part="household",verbs={roll="global",},every=7200,num=1938,},iced_coffee={name="iced coffee",size=180,part="food",verbs={roll="global",},every=7200,num=1939,},jewelry_box={name="jewelry box",size=200,part="valuables",verbs={roll="global",},every=7200,num=1940,},loyalty_card={name="loyalty card",size=90,part="crafts",verbs={roll="global",},every=7200,num=1941,},menu={name="menu",size=300,part="crafts",verbs={roll="global",},every=7200,num=1942,},name_tag={name="name tag",size=90,part="crafts",verbs={roll="global",},every=7200,num=1943,},order_number={name="order number",size=100,part="crafts",verbs={roll="global",},every=7200,num=1944,},pastry_box={name="pastry box",size=300,part="food",verbs={roll="global",},every=7200,num=1945,},pendant={name="pendant",size=40,part="valuables",verbs={roll="global",},every=7200,num=1946,},phone_case={name="phone case",size=150,part="electronics",verbs={roll="global",},every=7200,num=1947,},plastic_fork={name="plastic fork",size=150,part="detritus",verbs={roll="global",},every=7200,num=1948,},plastic_wrap={name="plastic wrap",size=300,part="detritus",verbs={roll="global",},every=7200,num=1949,},popcorn_bag={name="popcorn bag",size=200,part="detritus",verbs={roll="global",},every=7200,num=1950,},power_bank={name="power bank",size=120,part="electronics",verbs={roll="global",},every=7200,num=1951,},price_tag={name="price tag",size=30,part="crafts",verbs={roll="global",},every=7200,num=1952,},rare_coin={name="rare coin",size=20,part="valuables",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1953,},reusable_tote={name="reusable tote",size=400,part="household",verbs={roll="global",},every=7200,num=1954,},ribbon={name="ribbon",size=1000,part="crafts",verbs={roll="global",},every=7200,num=1955,},shoe_box={name="shoe box",size=350,part="household",verbs={roll="global",},every=7200,num=1956,},shop_bell={name="shop bell",size=50,part="hardware",verbs={roll="global",},every=7200,num=1957,},smartphone={name="smartphone",size=150,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1958,},smartwatch={name="smartwatch",size=40,part="electronics",verbs={roll="global",},every=7200,num=1959,},smoothie={name="smoothie",size=200,part="food",verbs={roll="global",},every=7200,num=1960,},soft_pretzel={name="soft pretzel",size=180,part="food",verbs={roll="global",},every=7200,num=1961,},styrofoam_cup={name="styrofoam cup",size=120,part="detritus",verbs={roll="global",},every=7200,num=1962,},sushi_roll={name="sushi roll",size=80,part="food",verbs={roll="global",},every=7200,num=1963,},tip_jar={name="tip jar",size=200,part="household",verbs={roll="global",},every=7200,num=1964,},trading_card={name="trading card",size=90,part="valuables",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1965,},twist_tie={name="twist tie",size=80,part="detritus",verbs={roll="global",},every=7200,num=1966,},used_napkin={name="used napkin",size=100,part="detritus",verbs={roll="global",},every=7200,num=1967,},wedding_band={name="wedding band",size=20,part="valuables",verbs={roll="global",},every=7200,num=1968,},wine_cork={name="wine cork",size=40,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1969,},antique_clock={name="antique clock",size=400,part="valuables",verbs={roll="global",},every=7200,num=1970,},baguette={name="baguette",size=600,part="food",verbs={roll="global",},every=7200,num=1971,},barber={name="barber",size=1750,part="people",verbs={roll="global",},every=7200,num=1972,},barber_pole={name="barber pole",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=1973,},barcode_scanner={name="barcode scanner",size=200,part="electronics",verbs={roll="global",},every=7200,num=1974,},barista={name="barista",size=1700,part="people",verbs={roll="global",},every=7200,num=1975,},bartender={name="bartender",size=1750,part="people",verbs={roll="global",},every=7200,num=1976,},cardboard_cutout={name="cardboard cutout",size=1800,part="toys",verbs={roll="global",},every=7200,num=1977,},cash={name="cash",size=100,part="valuables",verbs={roll="global",},every=7200,num=1978,},cash_drawer={name="cash drawer",size=400,part="household",verbs={roll="global",},every=7200,num=1979,},cash_register={name="cash register",size=400,part="electronics",verbs={roll="global",},every=7200,num=1980,},cashier={name="cashier",size=1700,part="people",verbs={roll="global",},every=7200,num=1981,},chef_hat={name="chef hat",size=300,part="clothes",verbs={roll="global",},every=7200,num=1982,},credit_card_reader={name="credit card reader",size=150,part="electronics",verbs={roll="global",},every=7200,num=1983,},desk_fan={name="desk fan",size=300,part="electronics",verbs={roll="global",},every=7200,num=1984,},display_case={name="display case",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=1985,},dumpster_overflow={name="dumpster overflow",size=1500,part="detritus",verbs={roll="global",},every=7200,num=1986,},electric_kettle={name="electric kettle",size=250,part="electronics",verbs={roll="global",},every=7200,num=1987,},escalator={name="escalator",size=10000,part="fixtures",verbs={roll="global",},every=7200,num=1988,},espresso_machine={name="espresso machine",size=500,part="household",verbs={roll="global",},every=7200,num=1989,},first_edition_book={name="first edition book",size=220,part="valuables",verbs={roll="global",},every=7200,num=1990,},fish_tank={name="fish tank",size=1000,part="household",verbs={roll="global",},every=7200,num=1991,},flat_screen_tv={name="flat screen tv",size=1000,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=1992,},gold_chain={name="gold chain",size=500,part="valuables",verbs={roll="global",},every=7200,num=1993,},gold_ring={name="gold ring",size=20,part="valuables",verbs={roll="global",},every=7200,num=1994,},hair_dryer={name="hair dryer",size=250,part="electronics",verbs={roll="global",},every=7200,num=1995,},lobster_tank={name="lobster tank",size=1200,part="household",verbs={roll="global",},every=7200,num=1996,},megaphone={name="megaphone",size=400,part="instruments",verbs={roll="global",},every=7200,num=1997,},necklace={name="necklace",size=400,part="valuables",verbs={roll="global",},every=7200,num=1998,},neon_sign={name="neon sign",size=800,part="fixtures",verbs={roll="global",},every=7200,num=1999,},nurse_cap={name="nurse cap",size=200,part="clothes",verbs={roll="global",},every=7200,num=2000,},pizza_oven={name="pizza oven",size=1200,part="household",verbs={roll="global",},every=7200,num=2001,},rotating_door={name="rotating door",size=2400,part="fixtures",verbs={roll="global",},every=7200,num=2002,},rotisserie_chicken={name="rotisserie chicken",size=300,part="food",verbs={roll="global",},every=7200,num=2003,},satellite_dish={name="satellite dish",size=600,part="electronics",verbs={roll="global",},every=7200,num=2004,},security_guard={name="security guard",size=1800,part="people",verbs={roll="global",},every=7200,num=2005,},shop_assistant={name="shop assistant",size=1700,part="people",verbs={roll="global",},every=7200,num=2006,},shop_cat={name="shop cat",size=400,part="animals",verbs={roll="global",},every=7200,num=2007,},shop_window={name="shop window",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=2008,},shopping_basket={name="shopping basket",size=400,part="household",verbs={roll="global",},every=7200,num=2009,},silver_tray={name="silver tray",size=400,part="valuables",verbs={roll="global",},every=7200,num=2010,},waiter={name="waiter",size=1750,part="people",verbs={roll="global",},every=7200,num=2011,},window_shopper={name="window shopper",size=1700,part="people",verbs={roll="global",},every=7200,num=2012,},atm={name="ATM",size=1800,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2013,},arcade_cabinet={name="arcade cabinet",size=1800,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2014,},cash_safe={name="cash safe",size=600,part="valuables",verbs={roll="global",},every=7200,num=2015,},delivery_robot={name="delivery robot",size=600,part="electronics",verbs={roll="global",},every=7200,num=2016,},department_store={name="department store",size=40000,part="buildings",verbs={roll="global",},every=7200,num=2017,},drive_through={name="drive-through",size=10000,part="buildings",verbs={roll="global",},every=7200,num=2018,},ev_charger={name="ev charger",size=1500,part="electronics",verbs={roll="global",},every=7200,num=2019,},food_court={name="food court",size=30000,part="buildings",verbs={roll="global",},every=7200,num=2020,},giant_inflatable={name="giant inflatable",size=5000,part="toys",verbs={roll="global",},every=7200,num=2021,},grand_opening_banner={name="grand opening banner",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=2022,},mall_fountain={name="mall fountain",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=2023,},parking_kiosk={name="parking kiosk",size=1600,part="electronics",verbs={roll="global",},every=7200,num=2024,},pinball_machine={name="pinball machine",size=1500,part="electronics",verbs={roll="global",},every=7200,num=2025,},revolving_sign={name="revolving sign",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=2026,},amber={name="amber",size=30,part="nature",verbs={roll="global",},every=7200,num=2027,},baling_twine={name="baling twine",size=500,part="hardware",verbs={roll="global",},every=7200,num=2028,},barn_swallow={name="barn swallow",size=180,part="animals",verbs={roll="global",},every=7200,num=2029,},bean_pod={name="bean pod",size=100,part="food",verbs={roll="global",},every=7200,num=2030,},caramel_apple={name="caramel apple",size=120,part="food",verbs={roll="global",},every=7200,num=2031,},chicory={name="chicory",size=900,part="plants",verbs={roll="global",},every=7200,num=2032,},clay={name="clay",size=100,part="nature",verbs={roll="global",},every=7200,num=2033,},corn_cob={name="corn cob",size=200,part="food",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2034,},cornflower={name="cornflower",size=600,part="plants",verbs={roll="global",},every=7200,num=2035,},cotton_candy={name="cotton candy",size=300,part="food",verbs={roll="global",},every=7200,num=2036,},face_paint={name="face paint",size=80,part="household",verbs={roll="global",},every=7200,num=2037,},feed_bucket={name="feed bucket",size=300,part="household",verbs={roll="global",},every=7200,num=2038,},festival_map={name="festival map",size=300,part="crafts",verbs={roll="global",},every=7200,num=2039,},festival_wristband={name="festival wristband",size=250,part="valuables",verbs={roll="global",},every=7200,num=2040,},field_mouse={name="field mouse",size=80,part="animals",verbs={roll="global",},every=7200,num=2041,},frost_patch={name="frost patch",size=300,part="nature",verbs={roll="global",},every=7200,num=2042,},funnel_cake={name="funnel cake",size=150,part="food",verbs={roll="global",},every=7200,num=2043,},glow_necklace={name="glow necklace",size=500,part="toys",verbs={roll="global",},every=7200,num=2044,},goldenrod={name="goldenrod",size=1000,part="plants",verbs={roll="global",},every=7200,num=2045,},gopher_mound={name="gopher mound",size=400,part="nature",verbs={roll="global",},every=7200,num=2046,},hailstone={name="hailstone",size=30,part="nature",verbs={roll="global",},every=7200,num=2047,},honeybee={name="honeybee",size=15,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2048,},killdeer={name="killdeer",size=250,part="animals",verbs={roll="global",},every=7200,num=2049,},ladybird={name="ladybird",size=8,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2050,},meadowlark={name="meadowlark",size=220,part="animals",verbs={roll="global",},every=7200,num=2051,},milkweed={name="milkweed",size=1200,part="plants",verbs={roll="global",},every=7200,num=2052,},molehill={name="molehill",size=300,part="nature",verbs={roll="global",},every=7200,num=2053,},monarch_butterfly={name="monarch butterfly",size=100,part="animals",verbs={roll="global",},every=7200,num=2054,},poppy={name="poppy",size=400,part="plants",verbs={roll="global",},every=7200,num=2055,},quail={name="quail",size=250,part="animals",verbs={roll="global",},every=7200,num=2056,},queen_anne_s_lace={name="queen anne's lace",size=800,part="plants",verbs={roll="global",},every=7200,num=2057,},rusty_horseshoe={name="rusty horseshoe",size=120,part="hardware",verbs={roll="global",},every=7200,num=2058,},shooting_star={name="shooting star",size=100,part="nature",verbs={roll="global",},every=7200,num=2059,},snowball={name="snowball",size=100,part="nature",verbs={roll="global",},every=7200,num=2060,},sparkler={name="sparkler",size=300,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2061,},vole={name="vole",size=100,part="animals",verbs={roll="global",},every=7200,num=2062,},water_bottle_refill={name="water bottle refill",size=250,part="household",verbs={roll="global",},every=7200,num=2063,},wheat_sheaf={name="wheat sheaf",size=500,part="plants",verbs={roll="global",},every=7200,num=2064,},wheat_stalk={name="wheat stalk",size=900,part="plants",verbs={roll="global",},every=7200,num=2065,},acrobat={name="acrobat",size=1700,part="people",verbs={roll="global",},every=7200,num=2066,},barn_cat={name="barn cat",size=400,part="animals",verbs={roll="global",},every=7200,num=2067,},bubble_machine={name="bubble machine",size=400,part="electronics",verbs={roll="global",},every=7200,num=2068,},carnival_game_booth={name="carnival game booth",size=3000,part="buildings",verbs={roll="global",},every=7200,num=2069,},clown={name="clown",size=1700,part="people",verbs={roll="global",},every=7200,num=2070,},cowboy={name="cowboy",size=1800,part="people",verbs={roll="global",},every=7200,num=2071,},coyote_pup={name="coyote pup",size=400,part="animals",verbs={roll="global",},every=7200,num=2072,},farm_gate={name="farm gate",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=2073,},farm_stand={name="farm stand",size=3000,part="buildings",verbs={roll="global",},every=7200,num=2074,},farmhand={name="farmhand",size=1800,part="people",verbs={roll="global",},every=7200,num=2075,},festival_goer={name="festival goer",size=1700,part="people",verbs={roll="global",},every=7200,num=2076,},festival_tent={name="festival tent",size=4000,part="buildings",verbs={roll="global",},every=7200,num=2077,},fireworks={name="fireworks",size=600,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2078,},food_stall={name="food stall",size=3000,part="buildings",verbs={roll="global",},every=7200,num=2079,},hay_fork={name="hay fork",size=1600,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2080,},hay_wagon={name="hay wagon",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=2081,},juggler_s_pins={name="juggler's pins",size=400,part="toys",verbs={roll="global",},every=7200,num=2082,},mailbox_on_a_post={name="mailbox on a post",size=1200,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2083,},meteorite={name="meteorite",size=100,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2084,},petrified_wood={name="petrified wood",size=200,part="nature",verbs={roll="global",},every=7200,num=2085,},pheasant={name="pheasant",size=700,part="animals",verbs={roll="global",},every=7200,num=2086,},plow={name="plow",size=2000,part="hardware",verbs={roll="global",},every=7200,num=2087,},portable_stage={name="portable stage",size=6000,part="fixtures",verbs={roll="global",},every=7200,num=2088,},ravine={name="ravine",size=10000,part="nature",verbs={roll="global",},every=7200,num=2089,},round_bale={name="round bale",size=1800,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2090,},sand_dune={name="sand dune",size=5000,part="nature",verbs={roll="global",},every=7200,num=2091,},scythe={name="scythe",size=1700,part="hardware",verbs={roll="global",},every=7200,num=2092,},sheepdog={name="sheepdog",size=600,part="animals",verbs={roll="global",},every=7200,num=2093,},shepherd={name="shepherd",size=1750,part="people",verbs={roll="global",},every=7200,num=2094,},snowdrift={name="snowdrift",size=2000,part="nature",verbs={roll="global",},every=7200,num=2095,},stilt_walker={name="stilt walker",size=3000,part="people",verbs={roll="global",},every=7200,num=2096,},turkey_hen={name="turkey hen",size=600,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2097,},unicycle={name="unicycle",size=1200,part="vehicles",verbs={roll="global",},every=7200,num=2098,},volcanic_rock={name="volcanic rock",size=150,part="nature",verbs={roll="global",},every=7200,num=2099,},water_trough={name="water trough",size=2000,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2100,},wooden_fence={name="wooden fence",size=50000,part="fixtures",verbs={roll="global",},every=7200,num=2101,},beer_tent={name="beer tent",size=8000,part="buildings",verbs={roll="global",},every=7200,num=2102,},center_pivot_irrigation={name="center pivot irrigation",size=80000,part="fixtures",verbs={roll="global",},every=7200,num=2103,},circus_tent={name="circus tent",size=25000,part="buildings",verbs={roll="global",},every=7200,num=2104,},combine_harvester={name="combine harvester",size=9000,part="vehicles",verbs={roll="global",},every=7200,num=2105,},crop_duster={name="crop duster",size=8000,part="vehicles",verbs={roll="global",},every=7200,num=2106,},draft_horse={name="draft horse",size=2500,part="animals",verbs={roll="global",},every=7200,num=2107,},fireworks_display={name="fireworks display",size=50000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2108,},fog_bank={name="fog bank",size=30000,part="nature",verbs={roll="global",},every=7200,num=2109,},grain_silo={name="grain silo",size=25000,part="buildings",verbs={roll="global",},every=7200,num=2110,},manure_spreader={name="manure spreader",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=2111,},ringmaster={name="ringmaster",size=1800,part="people",verbs={roll="global",},every=7200,num=2112,},solar_panel={name="solar panel",size=1500,part="electronics",verbs={roll="global",},every=7200,num=2113,},trapeze={name="trapeze",size=3000,part="toys",verbs={roll="global",},every=7200,num=2114,},ball_bearing={name="ball bearing",size=10,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2115,},coffee_thermos={name="coffee thermos",size=250,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2116,},cotter_pin={name="cotter pin",size=30,part="hardware",verbs={roll="global",},every=7200,num=2117,},ear_protection={name="ear protection",size=200,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2118,},gasket={name="gasket",size=60,part="hardware",verbs={roll="global",},every=7200,num=2119,},hi_vis_vest={name="hi-vis vest",size=500,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2120,},lunch_pail={name="lunch pail",size=250,part="household",verbs={roll="global",},every=7200,num=2121,},pallet_wrap={name="pallet wrap",size=400,part="detritus",verbs={roll="global",},every=7200,num=2122,},railroad_spike={name="railroad spike",size=180,part="hardware",verbs={roll="global",},every=7200,num=2123,},safety_goggles={name="safety goggles",size=150,part="clothes",verbs={roll="global",},every=7200,num=2124,},shift_schedule={name="shift schedule",size=300,part="crafts",verbs={roll="global",},every=7200,num=2125,},spool_of_wire={name="spool of wire",size=200,part="hardware",verbs={roll="global",},every=7200,num=2126,},steel_toe_boot={name="steel-toe boot",size=300,part="clothes",verbs={roll="global",},every=7200,num=2127,},transformer={name="transformer",size=300,part="electronics",verbs={roll="global",},every=7200,num=2128,},utility_knife={name="utility knife",size=150,part="hardware",verbs={roll="global",},every=7200,num=2129,},work_glove={name="work glove",size=250,part="clothes",verbs={roll="global",},every=7200,num=2130,},zip_lock_bag={name="zip-lock bag",size=200,part="detritus",verbs={roll="global",},every=7200,num=2131,},i_beam={name="I-beam",size=6000,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2132,},angle_grinder={name="angle grinder",size=300,part="hardware",verbs={roll="global",},every=7200,num=2133,},antenna={name="antenna",size=1000,part="electronics",verbs={roll="global",},every=7200,num=2134,},barrel_of_chemicals={name="barrel of chemicals",size=900,part="hardware",verbs={roll="global",},every=7200,num=2135,},control_panel={name="control panel",size=1500,part="electronics",verbs={roll="global",},every=7200,num=2136,},fire_coat={name="fire coat",size=1000,part="clothes",verbs={roll="global",},every=7200,num=2137,},fire_extinguisher={name="fire extinguisher",size=500,part="hardware",verbs={roll="global",},every=7200,num=2138,},flatbed_truck={name="flatbed truck",size=9000,part="vehicles",verbs={roll="global",},every=7200,num=2139,},foreman={name="foreman",size=1800,part="people",verbs={roll="global",},every=7200,num=2140,},forklift_driver={name="forklift driver",size=1800,part="people",verbs={roll="global",},every=7200,num=2141,},gas_cylinder={name="gas cylinder",size=1500,part="hardware",verbs={roll="global",},every=7200,num=2142,},hand_truck={name="hand truck",size=1300,part="hardware",verbs={roll="global",},every=7200,num=2143,},hazard_sign={name="hazard sign",size=400,part="fixtures",verbs={roll="global",},every=7200,num=2144,},jackhammer={name="jackhammer",size=800,part="hardware",verbs={roll="global",},every=7200,num=2145,},loading_ramp={name="loading ramp",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=2146,},mattress_pile={name="mattress pile",size=2000,part="detritus",verbs={roll="global",},every=7200,num=2147,},night_shift_worker={name="night shift worker",size=1750,part="people",verbs={roll="global",},every=7200,num=2148,},oil_can={name="oil can",size=300,part="hardware",verbs={roll="global",},every=7200,num=2149,},pallet_jack={name="pallet jack",size=1600,part="vehicles",verbs={roll="global",},every=7200,num=2150,},pipe_wrench={name="pipe wrench",size=600,part="hardware",verbs={roll="global",},every=7200,num=2151,},semi_trailer={name="semi trailer",size=16000,part="vehicles",verbs={roll="global",},every=7200,num=2152,},steel_drum={name="steel drum",size=900,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2153,},storage_tank={name="storage tank",size=10000,part="buildings",verbs={roll="global",},every=7200,num=2154,},time_clock={name="time clock",size=400,part="electronics",verbs={roll="global",},every=7200,num=2155,},traffic_camera={name="traffic camera",size=400,part="electronics",verbs={roll="global",},every=7200,num=2156,},welder={name="welder",size=1800,part="people",verbs={roll="global",},every=7200,num=2157,},welding_torch={name="welding torch",size=500,part="hardware",verbs={roll="global",},every=7200,num=2158,},wheel_chock={name="wheel chock",size=300,part="hardware",verbs={roll="global",},every=7200,num=2159,},blast_furnace={name="blast furnace",size=40000,part="buildings",verbs={roll="global",},every=7200,num=2160,},container_crane={name="container crane",size=60000,part="buildings",verbs={roll="global",},every=7200,num=2161,},grain_barge={name="grain barge",size=60000,part="vehicles",verbs={roll="global",},every=7200,num=2162,},hazmat_suit={name="hazmat suit",size=1700,part="clothes",verbs={roll="global",},every=7200,num=2163,},loading_dock={name="loading dock",size=6000,part="buildings",verbs={roll="global",},every=7200,num=2164,},oil_derrick={name="oil derrick",size=45000,part="buildings",verbs={roll="global",},every=7200,num=2165,},overhead_crane={name="overhead crane",size=15000,part="hardware",verbs={roll="global",},every=7200,num=2166,},power_substation={name="power substation",size=25000,part="buildings",verbs={roll="global",},every=7200,num=2167,},ski_boot={name="ski boot",size=350,part="clothes",verbs={roll="global",},every=7200,num=2168,},train_car={name="train car",size=15000,part="vehicles",verbs={roll="global",},every=7200,num=2169,},transmission_tower={name="transmission tower",size=45000,part="buildings",verbs={roll="global",},every=7200,num=2170,},bent_rebar={name="bent rebar",size=1000,part="hardware",verbs={roll="global",},every=7200,num=2171,},bread_tag={name="bread tag",size=30,part="detritus",verbs={roll="global",},every=7200,num=2172,},broken_toy={name="broken toy",size=150,part="detritus",verbs={roll="global",},every=7200,num=2173,},broken_umbrella={name="broken umbrella",size=800,part="household",verbs={roll="global",},every=7200,num=2174,},bubble_wrap={name="bubble wrap",size=400,part="detritus",verbs={roll="global",},every=7200,num=2175,},cigarette_pack={name="cigarette pack",size=90,part="detritus",verbs={roll="global",},every=7200,num=2176,},cracked_phone={name="cracked phone",size=150,part="detritus",verbs={roll="global",},every=7200,num=2177,},crow_with_a_french_fry={name="crow with a french fry",size=450,part="animals",verbs={roll="global",},every=7200,num=2178,},crumpled_paper={name="crumpled paper",size=100,part="detritus",verbs={roll="global",},every=7200,num=2179,},crushed_can={name="crushed can",size=80,part="detritus",verbs={roll="global",},every=7200,num=2180,},dandelion_in_a_crack={name="dandelion in a crack",size=200,part="plants",verbs={roll="global",},every=7200,num=2181,},discarded_sneaker={name="discarded sneaker",size=280,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2182,},fast_food_cup={name="fast-food cup",size=150,part="detritus",verbs={roll="global",},every=7200,num=2183,},feral_cat={name="feral cat",size=350,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2184,},garbage_bag={name="garbage bag",size=700,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2185,},gum_wrapper={name="gum wrapper",size=50,part="detritus",verbs={roll="global",},every=7200,num=2186,},jeans={name="jeans",size=1000,part="clothes",verbs={roll="global",},every=7200,num=2187,},lost_glove={name="lost glove",size=200,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2188,},lost_key={name="lost key",size=60,part="hardware",verbs={roll="global",},every=7200,num=2189,},orange_peel={name="orange peel",size=80,part="detritus",verbs={roll="global",},every=7200,num=2190,},packing_peanuts={name="packing peanuts",size=30,part="detritus",verbs={roll="global",},every=7200,num=2191,},paint_chip={name="paint chip",size=30,part="detritus",verbs={roll="global",},every=7200,num=2192,},plastic_cup={name="plastic cup",size=120,part="detritus",verbs={roll="global",},every=7200,num=2193,},pull_tab={name="pull tab",size=30,part="detritus",verbs={roll="global",},every=7200,num=2194,},rusty_nail={name="rusty nail",size=70,part="hardware",verbs={roll="global",},every=7200,num=2195,},scrap_wood={name="scrap wood",size=600,part="hardware",verbs={roll="global",},every=7200,num=2196,},six_pack_ring={name="six-pack ring",size=100,part="detritus",verbs={roll="global",},every=7200,num=2197,},sparrow_in_the_rafters={name="sparrow in the rafters",size=150,part="animals",verbs={roll="global",},every=7200,num=2198,},tire_tread={name="tire tread",size=500,part="detritus",verbs={roll="global",},every=7200,num=2199,},torn_poster={name="torn poster",size=600,part="detritus",verbs={roll="global",},every=7200,num=2200,},traffic_barrel={name="traffic barrel",size=900,part="hardware",verbs={roll="global",},every=7200,num=2201,},weeds={name="weeds",size=200,part="plants",verbs={roll="global",},every=7200,num=2202,},yard_sale_sign={name="yard sale sign",size=600,part="crafts",verbs={roll="global",},every=7200,num=2203,},abandoned_couch={name="abandoned couch",size=2000,part="household",verbs={roll="global",},every=7200,num=2204,},abandoned_luggage={name="abandoned luggage",size=700,part="detritus",verbs={roll="global",},every=7200,num=2205,},bag_of_leaves={name="bag of leaves",size=800,part="detritus",verbs={roll="global",},every=7200,num=2206,},blue_tarp={name="blue tarp",size=2000,part="hardware",verbs={roll="global",},every=7200,num=2207,},bumper={name="bumper",size=1600,part="vehicles",verbs={roll="global",},every=7200,num=2208,},car_seat={name="car seat",size=600,part="vehicles",verbs={roll="global",},every=7200,num=2209,},e_bike_battery={name="e-bike battery",size=300,part="electronics",verbs={roll="global",},every=7200,num=2210,},engine_block={name="engine block",size=600,part="vehicles",verbs={roll="global",},every=7200,num=2211,},flat_tire={name="flat tire",size=650,part="vehicles",verbs={roll="global",},every=7200,num=2212,},folding_chair={name="folding chair",size=900,part="household",verbs={roll="global",},every=7200,num=2213,},for_lease_sign={name="for lease sign",size=1000,part="crafts",verbs={roll="global",},every=7200,num=2214,},hot_dog_stand={name="hot dog stand",size=2000,part="buildings",verbs={roll="global",},every=7200,num=2215,},jersey_barrier={name="jersey barrier",size=2400,part="fixtures",verbs={roll="global",},every=7200,num=2216,},parking_attendant={name="parking attendant",size=1750,part="people",verbs={roll="global",},every=7200,num=2217,},pickup_bed_liner={name="pickup bed liner",size=1800,part="vehicles",verbs={roll="global",},every=7200,num=2218,},recycling_pile={name="recycling pile",size=1200,part="detritus",verbs={roll="global",},every=7200,num=2219,},rusted_bike_frame={name="rusted bike frame",size=1600,part="vehicles",verbs={roll="global",},every=7200,num=2220,},scrapper={name="scrapper",size=1750,part="people",verbs={roll="global",},every=7200,num=2221,},squatter={name="squatter",size=1750,part="people",verbs={roll="global",},every=7200,num=2222,},storage_unit={name="storage unit",size=3000,part="buildings",verbs={roll="global",},every=7200,num=2223,},stray_shopping_cart={name="stray shopping cart",size=1000,part="vehicles",verbs={roll="global",},every=7200,num=2224,},tow_truck={name="tow truck",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=2225,},treasure_map={name="treasure map",size=400,part="valuables",verbs={roll="global",},every=7200,num=2226,},vending_machine_husk={name="vending machine husk",size=1800,part="electronics",verbs={roll="global",},every=7200,num=2227,},abandoned_warehouse={name="abandoned warehouse",size=30000,part="buildings",verbs={roll="global",},every=7200,num=2228,},billboard_frame={name="billboard frame",size=10000,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2229,},burnt_out_car={name="burnt-out car",size=4500,part="vehicles",verbs={roll="global",},every=7200,num=2230,},bus_without_wheels={name="bus without wheels",size=12000,part="vehicles",verbs={roll="global",},every=7200,num=2231,},demolition_site={name="demolition site",size=20000,part="buildings",verbs={roll="global",},every=7200,num=2232,},fenced_off_crater={name="fenced-off crater",size=10000,part="nature",verbs={roll="global",},every=7200,num=2233,},tower_crane={name="tower crane",size=40000,part="buildings",verbs={roll="global",},every=7200,num=2234,},weathered_mural={name="weathered mural",size=15000,part="fixtures",verbs={roll="global",},every=7200,num=2235,},acorn_squash={name="acorn squash",size=150,part="food",verbs={roll="global",},every=7200,num=2236,},apple_core={name="apple core",size=80,part="detritus",verbs={roll="global",},every=7200,num=2237,},badminton_birdie={name="badminton birdie",size=80,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2238,},bocce_ball={name="bocce ball",size=100,part="toys",verbs={roll="global",},every=7200,num=2239,},bottle_of_bubbles={name="bottle of bubbles",size=100,part="toys",verbs={roll="global",},every=7200,num=2240,},castanets={name="castanets",size=80,part="instruments",verbs={roll="global",},every=7200,num=2241,},chewing_gum={name="chewing gum",size=30,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2242,},chipmunk_burrow={name="chipmunk burrow",size=300,part="nature",verbs={roll="global",},every=7200,num=2243,},clover_patch={name="clover patch",size=150,part="plants",verbs={roll="global",},every=7200,num=2244,},cowbell={name="cowbell",size=150,part="instruments",verbs={roll="global",},every=7200,num=2245,},dandelion_puff={name="dandelion puff",size=80,part="plants",verbs={roll="global",},every=7200,num=2246,},dog_park_ball={name="dog park ball",size=70,part="toys",verbs={roll="global",},every=7200,num=2247,},dog_toy={name="dog toy",size=150,part="toys",verbs={roll="global",},every=7200,num=2248,},friendship_bracelet={name="friendship bracelet",size=80,part="valuables",verbs={roll="global",},every=7200,num=2249,},goldfinch={name="goldfinch",size=120,part="animals",verbs={roll="global",},every=7200,num=2250,},hula_hoop={name="hula hoop",size=800,part="toys",verbs={roll="global",},every=7200,num=2251,},jacket={name="jacket",size=700,part="clothes",verbs={roll="global",},every=7200,num=2252,},jacks={name="jacks",size=30,part="toys",verbs={roll="global",},every=7200,num=2253,},jump_rope={name="jump rope",size=2500,part="toys",verbs={roll="global",},every=7200,num=2254,},lost_mitten={name="lost mitten",size=180,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2255,},mallard={name="mallard",size=550,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2256,},maracas={name="maracas",size=250,part="instruments",verbs={roll="global",},every=7200,num=2257,},moccasin={name="moccasin",size=280,part="clothes",verbs={roll="global",},every=7200,num=2258,},panpipes={name="panpipes",size=250,part="instruments",verbs={roll="global",},every=7200,num=2259,},picnic_cooler={name="picnic cooler",size=500,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2260,},popped_balloon={name="popped balloon",size=100,part="detritus",verbs={roll="global",},every=7200,num=2261,},sandcastle={name="sandcastle",size=300,part="toys",verbs={roll="global",},every=7200,num=2262,},sidewalk_chalk_drawing={name="sidewalk chalk drawing",size=1000,part="nature",verbs={roll="global",},every=7200,num=2263,},snowflake={name="snowflake",size=5,part="nature",verbs={roll="global",},every=7200,num=2264,},thermos_of_cocoa={name="thermos of cocoa",size=250,part="household",verbs={roll="global",},every=7200,num=2265,},basketball_hoop={name="basketball hoop",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=2266,},cherry_tree={name="cherry tree",size=6000,part="plants",verbs={roll="global",},every=7200,num=2267,},climbing_dome={name="climbing dome",size=3000,part="toys",verbs={roll="global",},every=7200,num=2268,},conga={name="conga",size=750,part="instruments",verbs={roll="global",},every=7200,num=2269,},djembe={name="djembe",size=600,part="instruments",verbs={roll="global",},every=7200,num=2270,},dog_run={name="dog run",size=10000,part="fixtures",verbs={roll="global",},every=7200,num=2271,},drinking_fountain={name="drinking fountain",size=1100,part="fixtures",verbs={roll="global",},every=7200,num=2272,},ducklings={name="ducklings",size=300,part="animals",verbs={roll="global",},every=7200,num=2273,},goose={name="goose",size=800,part="animals",verbs={roll="global",},every=7200,num=2274,},grill_station={name="grill station",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=2275,},horseshoe_pit={name="horseshoe pit",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=2276,},joggers={name="joggers",size=1800,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2277,},magnolia={name="magnolia",size=8000,part="plants",verbs={roll="global",},every=7200,num=2278,},monkey_bars={name="monkey bars",size=3000,part="toys",verbs={roll="global",},every=7200,num=2279,},park_bench_plaque={name="park bench plaque",size=200,part="fixtures",verbs={roll="global",},every=7200,num=2280,},park_ranger={name="park ranger",size=1800,part="people",verbs={roll="global",},every=7200,num=2281,},pickleball_paddle={name="pickleball paddle",size=400,part="toys",verbs={roll="global",},every=7200,num=2282,},picnic_blanket={name="picnic blanket",size=1500,part="household",verbs={roll="global",},every=7200,num=2283,},tai_chi_group={name="tai chi group",size=3000,part="people",verbs={roll="global",},every=7200,num=2284,},tennis_court={name="tennis court",size=23000,part="fixtures",verbs={roll="global",},every=7200,num=2285,},toddler_in_a_stroller={name="toddler in a stroller",size=1000,part="people",verbs={roll="global",},every=7200,num=2286,},water_fountain_statue={name="water fountain statue",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=2287,},amphitheater={name="amphitheater",size=20000,part="buildings",verbs={roll="global",},every=7200,num=2288,},baseball_diamond={name="baseball diamond",size=30000,part="fixtures",verbs={roll="global",},every=7200,num=2289,},botanical_garden={name="botanical garden",size=40000,part="plants",verbs={roll="global",},every=7200,num=2290,},didgeridoo={name="didgeridoo",size=1400,part="instruments",verbs={roll="global",},every=7200,num=2291,},public_pool={name="public pool",size=25000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2292,},skate_park={name="skate park",size=30000,part="fixtures",verbs={roll="global",},every=7200,num=2293,},weeping_cherry={name="weeping cherry",size=10000,part="plants",verbs={roll="global",},every=7200,num=2294,},balloon_animal={name="balloon animal",size=300,part="toys",verbs={roll="global",},every=7200,num=2295,},bongo={name="bongo",size=300,part="instruments",verbs={roll="global",},every=7200,num=2296,},caricature={name="caricature",size=400,part="crafts",verbs={roll="global",},every=7200,num=2297,},chess_set={name="chess set",size=400,part="toys",verbs={roll="global",},every=7200,num=2298,},churro={name="churro",size=200,part="food",verbs={roll="global",},every=7200,num=2299,},city_map={name="city map",size=250,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2300,},disposable_camera={name="disposable camera",size=100,part="electronics",verbs={roll="global",},every=7200,num=2301,},harmonica_rack={name="harmonica rack",size=200,part="instruments",verbs={roll="global",},every=7200,num=2302,},jug={name="jug",size=300,part="instruments",verbs={roll="global",},every=7200,num=2303,},lemonade={name="lemonade",size=200,part="food",verbs={roll="global",},every=7200,num=2304,},melodica={name="melodica",size=350,part="instruments",verbs={roll="global",},every=7200,num=2305,},painted_sign={name="painted sign",size=600,part="crafts",verbs={roll="global",},every=7200,num=2306,},pamphlet={name="pamphlet",size=220,part="detritus",verbs={roll="global",},every=7200,num=2307,},pigeon_seed={name="pigeon seed",size=80,part="food",verbs={roll="global",},every=7200,num=2308,},roasted_chestnuts={name="roasted chestnuts",size=100,part="food",verbs={roll="global",},every=7200,num=2309,},roller_skates={name="roller skates",size=280,part="clothes",verbs={roll="global",},every=7200,num=2310,},sidewalk_artist_s_chalk={name="sidewalk artist's chalk",size=80,part="crafts",verbs={roll="global",},every=7200,num=2311,},soft_serve={name="soft serve",size=150,part="food",verbs={roll="global",},every=7200,num=2312,},souvenir_magnet={name="souvenir magnet",size=50,part="valuables",verbs={roll="global",},every=7200,num=2313,},street_musician_s_hat={name="street musician's hat",size=300,part="clothes",verbs={roll="global",},every=7200,num=2314,},tin_whistle={name="tin whistle",size=300,part="instruments",verbs={roll="global",},every=7200,num=2315,},tip_cup={name="tip cup",size=100,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2316,},torn_ticket={name="torn ticket",size=60,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2317,},tourist_hat={name="tourist hat",size=300,part="clothes",verbs={roll="global",},every=7200,num=2318,},violin_case={name="violin case",size=800,part="instruments",verbs={roll="global",},every=7200,num=2319,},accordionist={name="accordionist",size=1700,part="people",verbs={roll="global",},every=7200,num=2320,},amphitheater_steps={name="amphitheater steps",size=10000,part="fixtures",verbs={roll="global",},every=7200,num=2321,},bass_guitar={name="bass guitar",size=1200,part="instruments",verbs={roll="global",},every=7200,num=2322,},bicycle_taxi={name="bicycle taxi",size=2500,part="vehicles",verbs={roll="global",},every=7200,num=2323,},busker={name="busker",size=1750,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2324,},chess_hustler={name="chess hustler",size=1700,part="people",verbs={roll="global",},every=7200,num=2325,},chess_table={name="chess table",size=800,part="household",verbs={roll="global",},every=7200,num=2326,},electric_guitar={name="electric guitar",size=1000,part="instruments",verbs={roll="global",},every=7200,num=2327,},fire_dancer={name="fire dancer",size=1800,part="people",verbs={roll="global",},every=7200,num=2328,},flower_seller={name="flower seller",size=1650,part="people",verbs={roll="global",},every=7200,num=2329,},ice_cream_cart={name="ice cream cart",size=2000,part="vehicles",verbs={roll="global",},every=7200,num=2330,},juggler={name="juggler",size=1800,part="people",verbs={roll="global",},every=7200,num=2331,},mandolin={name="mandolin",size=600,part="instruments",verbs={roll="global",},every=7200,num=2332,},market_stall={name="market stall",size=3000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2333,},pickpocket={name="pickpocket",size=1750,part="people",verbs={roll="global",},every=7200,num=2334,},pigeon_flock_taking_off={name="pigeon flock taking off",size=3000,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2335,},puppeteer={name="puppeteer",size=1700,part="people",verbs={roll="global",},every=7200,num=2336,},reflecting_pool={name="reflecting pool",size=8000,part="fixtures",verbs={roll="global",},every=7200,num=2337,},selfie_stick={name="selfie stick",size=800,part="electronics",verbs={roll="global",},every=7200,num=2338,},statue_of_a_general={name="statue of a general",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=2339,},statue_performer={name="statue performer",size=1800,part="people",verbs={roll="global",},every=7200,num=2340,},street_artist={name="street artist",size=1700,part="people",verbs={roll="global",},every=7200,num=2341,},street_preacher={name="street preacher",size=1750,part="people",verbs={roll="global",},every=7200,num=2342,},tour_guide={name="tour guide",size=1700,part="people",verbs={roll="global",},every=7200,num=2343,},city_gate={name="city gate",size=12000,part="buildings",verbs={roll="global",},every=7200,num=2344,},equestrian_statue={name="equestrian statue",size=5000,part="fixtures",verbs={roll="global",},every=7200,num=2345,},marketplace={name="marketplace",size=50000,part="buildings",verbs={roll="global",},every=7200,num=2346,},monument_column={name="monument column",size=35000,part="fixtures",verbs={roll="global",},every=7200,num=2347,},opera_house={name="opera house",size=35000,part="buildings",verbs={roll="global",},every=7200,num=2348,},palace={name="palace",size=80000,part="buildings",verbs={roll="global",},every=7200,num=2349,},triumphal_arch={name="triumphal arch",size=25000,part="buildings",verbs={roll="global",},every=7200,num=2350,},apron={name="apron",size=800,part="clothes",verbs={roll="global",},every=7200,num=2351,},baby_bottle={name="baby bottle",size=200,part="household",verbs={roll="global",},every=7200,num=2352,},baby_monitor={name="baby monitor",size=150,part="electronics",verbs={roll="global",},every=7200,num=2353,},bathrobe={name="bathrobe",size=1200,part="clothes",verbs={roll="global",},every=7200,num=2354,},belt={name="belt",size=1000,part="clothes",verbs={roll="global",},every=7200,num=2355,},cardigan={name="cardigan",size=700,part="clothes",verbs={roll="global",},every=7200,num=2356,},clothespin={name="clothespin",size=70,part="household",verbs={roll="global",},every=7200,num=2357,},diary={name="diary",size=200,part="valuables",verbs={roll="global",},every=7200,num=2358,},door_wedge={name="door wedge",size=100,part="hardware",verbs={roll="global",},every=7200,num=2359,},dress={name="dress",size=1200,part="clothes",verbs={roll="global",},every=7200,num=2360,},flannel_shirt={name="flannel shirt",size=700,part="clothes",verbs={roll="global",},every=7200,num=2361,},flowerpot={name="flowerpot",size=250,part="household",verbs={roll="global",},every=7200,num=2362,},fly_swatter={name="fly swatter",size=400,part="household",verbs={roll="global",},every=7200,num=2363,},fridge_magnet={name="fridge magnet",size=50,part="household",verbs={roll="global",},every=7200,num=2364,},garden_trowel={name="garden trowel",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2365,},handheld_console={name="handheld console",size=200,part="electronics",verbs={roll="global",},every=7200,num=2366,},hoodie={name="hoodie",size=700,part="clothes",verbs={roll="global",},every=7200,num=2367,},ice_cube_tray={name="ice cube tray",size=200,part="household",verbs={roll="global",},every=7200,num=2368,},icicle={name="icicle",size=500,part="nature",verbs={roll="global",},every=7200,num=2369,},jar_of_pickles={name="jar of pickles",size=150,part="food",verbs={roll="global",},every=7200,num=2370,},junk_mail={name="junk mail",size=220,part="detritus",verbs={roll="global",},every=7200,num=2371,},leaf_pile={name="leaf pile",size=1000,part="nature",verbs={roll="global",},every=7200,num=2372,},leftover_pizza={name="leftover pizza",size=300,part="food",verbs={roll="global",},every=7200,num=2373,},leggings={name="leggings",size=900,part="clothes",verbs={roll="global",},every=7200,num=2374,},lego_brick={name="lego brick",size=30,part="toys",verbs={roll="global",},every=7200,num=2375,},mp3_player={name="mp3 player",size=90,part="electronics",verbs={roll="global",},every=7200,num=2376,},necktie={name="necktie",size=1400,part="clothes",verbs={roll="global",},every=7200,num=2377,},nightgown={name="nightgown",size=1300,part="clothes",verbs={roll="global",},every=7200,num=2378,},oven_mitt={name="oven mitt",size=250,part="household",verbs={roll="global",},every=7200,num=2379,},pacifier={name="pacifier",size=50,part="household",verbs={roll="global",},every=7200,num=2380,},pajamas={name="pajamas",size=700,part="clothes",verbs={roll="global",},every=7200,num=2381,},phone_charger={name="phone charger",size=1000,part="electronics",verbs={roll="global",},every=7200,num=2382,},scarf={name="scarf",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2383,},shorts={name="shorts",size=500,part="clothes",verbs={roll="global",},every=7200,num=2384,},sippy_cup={name="sippy cup",size=150,part="household",verbs={roll="global",},every=7200,num=2385,},skirt={name="skirt",size=550,part="clothes",verbs={roll="global",},every=7200,num=2386,},spare_key={name="spare key",size=60,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2387,},spatula={name="spatula",size=300,part="household",verbs={roll="global",},every=7200,num=2388,},sticky_note={name="sticky note",size=70,part="crafts",verbs={roll="global",},every=7200,num=2389,},sweater={name="sweater",size=700,part="clothes",verbs={roll="global",},every=7200,num=2390,},sweatpants={name="sweatpants",size=1000,part="clothes",verbs={roll="global",},every=7200,num=2391,},t_shirt={name="t-shirt",size=700,part="clothes",verbs={roll="global",},every=7200,num=2392,},takeout_menu={name="takeout menu",size=250,part="crafts",verbs={roll="global",},every=7200,num=2393,},tank_top={name="tank top",size=550,part="clothes",verbs={roll="global",},every=7200,num=2394,},tea_bag={name="tea bag",size=60,part="food",verbs={roll="global",},every=7200,num=2395,},thermostat={name="thermostat",size=100,part="electronics",verbs={roll="global",},every=7200,num=2396,},welcome_mat={name="welcome mat",size=600,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2397,},wind_chime={name="wind chime",size=300,part="household",verbs={roll="global",},every=7200,num=2398,},air_fryer={name="air fryer",size=350,part="electronics",verbs={roll="global",},every=7200,num=2399,},ant_farm={name="ant farm",size=250,part="toys",verbs={roll="global",},every=7200,num=2400,},aquarium={name="aquarium",size=800,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2401,},babysitter={name="babysitter",size=1600,part="people",verbs={roll="global",},every=7200,num=2402,},birthday_cake={name="birthday cake",size=250,part="food",verbs={roll="global",},every=7200,num=2403,},casserole_dish={name="casserole dish",size=300,part="food",verbs={roll="global",},every=7200,num=2404,},charcoal_grill={name="charcoal grill",size=1000,part="household",verbs={roll="global",},every=7200,num=2405,},drone={name="drone",size=300,part="electronics",verbs={roll="global",},every=7200,num=2406,},electric_toothbrush={name="electric toothbrush",size=250,part="electronics",verbs={roll="global",},every=7200,num=2407,},encyclopedia_set={name="encyclopedia set",size=400,part="crafts",verbs={roll="global",},every=7200,num=2408,},garden_shed={name="garden shed",size=3000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2409,},graduation_gown={name="graduation gown",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2410,},grandmother={name="grandmother",size=1600,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2411,},hose_reel={name="hose reel",size=500,part="hardware",verbs={roll="global",},every=7200,num=2412,},jigsaw_puzzle={name="jigsaw puzzle",size=400,part="toys",verbs={roll="global",},every=7200,num=2413,},kid_on_a_tricycle={name="kid on a tricycle",size=1000,part="people",verbs={roll="global",},every=7200,num=2414,},kiddie_pool={name="kiddie pool",size=1500,part="toys",verbs={roll="global",},every=7200,num=2415,},kilt={name="kilt",size=700,part="clothes",verbs={roll="global",},every=7200,num=2416,},kimono={name="kimono",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2417,},lava_lamp={name="lava lamp",size=400,part="household",verbs={roll="global",},every=7200,num=2418,},lawn_flamingo={name="lawn flamingo",size=600,part="toys",verbs={roll="global",},every=7200,num=2419,},lawn_mower={name="lawn mower",size=1500,part="hardware",verbs={roll="global",},every=7200,num=2420,},lawn_sprinkler={name="lawn sprinkler",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2421,},led_lantern={name="led lantern",size=200,part="electronics",verbs={roll="global",},every=7200,num=2422,},mortarboard={name="graduation cap",size=250,part="clothes",verbs={roll="global",},every=7200,num=2423,},overalls={name="overalls",size=1100,part="clothes",verbs={roll="global",},every=7200,num=2424,},porch_swing={name="porch swing",size=1800,part="household",verbs={roll="global",},every=7200,num=2425,},propane_tank={name="propane tank",size=500,part="hardware",verbs={roll="global",},every=7200,num=2426,},robot_vacuum={name="robot vacuum",size=350,part="electronics",verbs={roll="global",},every=7200,num=2427,},rocking_chair={name="rocking chair",size=1000,part="household",verbs={roll="global",},every=7200,num=2428,},sarong={name="sarong",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2429,},slow_cooker={name="slow cooker",size=350,part="household",verbs={roll="global",},every=7200,num=2430,},snow_shovel={name="snow shovel",size=1400,part="hardware",verbs={roll="global",},every=7200,num=2431,},suit_jacket={name="suit jacket",size=800,part="clothes",verbs={roll="global",},every=7200,num=2432,},tie_dye_shirt={name="tie-dye shirt",size=700,part="clothes",verbs={roll="global",},every=7200,num=2433,},toddler={name="toddler",size=900,part="people",verbs={roll="global",},every=7200,num=2434,},toy_train_set={name="toy train set",size=1000,part="toys",verbs={roll="global",},every=7200,num=2435,},tutu={name="tutu",size=400,part="clothes",verbs={roll="global",},every=7200,num=2436,},tuxedo={name="tuxedo",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2437,},ugly_sweater={name="ugly sweater",size=700,part="clothes",verbs={roll="global",},every=7200,num=2438,},upright_piano={name="upright piano",size=1500,part="instruments",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2439,},vacuum_cleaner={name="vacuum cleaner",size=1200,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2440,},wedding_veil={name="wedding veil",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2441,},antique_trunk={name="antique trunk",size=900,part="household",verbs={roll="global",},every=7200,num=2442,},camper_trailer={name="camper trailer",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=2443,},garage_door={name="garage door",size=2400,part="buildings",verbs={roll="global",},every=7200,num=2444,},hot_tub={name="hot tub",size=2000,part="household",verbs={roll="global",},every=7200,num=2445,},motorhome={name="motorhome",size=9000,part="vehicles",verbs={roll="global",},every=7200,num=2446,},moving_truck={name="moving truck",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=2447,},swimming_pool={name="swimming pool",size=6000,part="buildings",verbs={roll="global",},every=7200,num=2448,},wedding_dress={name="wedding dress",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2449,},air_freshener={name="air freshener",size=80,part="household",verbs={roll="global",},every=7200,num=2450,},beret={name="beret",size=250,part="clothes",verbs={roll="global",},every=7200,num=2451,},bike_bell={name="bike bell",size=60,part="hardware",verbs={roll="global",},every=7200,num=2452,},bike_lock={name="bike lock",size=200,part="hardware",verbs={roll="global",},every=7200,num=2453,},bucket_hat={name="bucket hat",size=280,part="clothes",verbs={roll="global",},every=7200,num=2454,},bumper_sticker={name="bumper sticker",size=300,part="crafts",verbs={roll="global",},every=7200,num=2455,},bus_transfer={name="bus transfer",size=90,part="crafts",verbs={roll="global",},every=7200,num=2456,},chewed_pen={name="chewed pen",size=140,part="detritus",verbs={roll="global",},every=7200,num=2457,},clog={name="clog",size=280,part="clothes",verbs={roll="global",},every=7200,num=2458,},crosswalk_button={name="crosswalk button",size=100,part="fixtures",verbs={roll="global",},every=7200,num=2459,},delivery_bag={name="delivery bag",size=400,part="household",verbs={roll="global",},every=7200,num=2460,},dog_leash={name="dog leash",size=1500,part="household",verbs={roll="global",},every=7200,num=2461,},dog_poop_bag={name="dog poop bag",size=100,part="detritus",verbs={roll="global",},every=7200,num=2462,},dropped_earbud={name="dropped earbud",size=20,part="electronics",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2463,},earmuffs={name="earmuffs",size=200,part="clothes",verbs={roll="global",},every=7200,num=2464,},energy_drink_can={name="energy drink can",size=130,part="detritus",verbs={roll="global",},every=7200,num=2465,},headband={name="headband",size=200,part="clothes",verbs={roll="global",},every=7200,num=2466,},license_plate_frame={name="license plate frame",size=320,part="hardware",verbs={roll="global",},every=7200,num=2467,},loafer={name="loafer",size=280,part="clothes",verbs={roll="global",},every=7200,num=2468,},lost_scarf={name="lost scarf",size=1500,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2469,},metro_card={name="metro card",size=80,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2470,},parking_stub={name="parking stub",size=80,part="crafts",verbs={roll="global",},every=7200,num=2471,},plastic_bottle={name="plastic bottle",size=220,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2472,},puddle={name="puddle",size=1000,part="nature",verbs={roll="global",},every=7200,num=2473,},raincoat={name="raincoat",size=1000,part="clothes",verbs={roll="global",},every=7200,num=2474,},reflector={name="reflector",size=50,part="hardware",verbs={roll="global",},every=7200,num=2475,},road_flare={name="road flare",size=400,part="hardware",verbs={roll="global",},every=7200,num=2476,},sandal={name="sandal",size=280,part="clothes",verbs={roll="global",},every=7200,num=2477,},suspenders={name="suspenders",size=800,part="clothes",verbs={roll="global",},every=7200,num=2478,},takeout_container={name="takeout container",size=180,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2479,},visor={name="visor",size=250,part="clothes",verbs={roll="global",},every=7200,num=2480,},wet_leaf={name="wet leaf",size=100,part="nature",verbs={roll="global",},every=7200,num=2481,},windshield_wiper={name="windshield wiper",size=500,part="hardware",verbs={roll="global",},every=7200,num=2482,},ballet_slipper={name="ballet slipper",size=220,part="clothes",verbs={roll="global",},every=7200,num=2483,},bicycle_bell={name="bicycle bell",size=50,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2484,},bowler_hat={name="bowler hat",size=280,part="clothes",verbs={roll="global",},every=7200,num=2485,},bus_stop_sign={name="bus stop sign",size=2500,part="fixtures",verbs={roll="global",},every=7200,num=2486,},cape={name="cape",size=1300,part="clothes",verbs={roll="global",},every=7200,num=2487,},cargo_bike={name="cargo bike",size=2500,part="vehicles",verbs={roll="global",},every=7200,num=2488,},cleats={name="cleats",size=280,part="clothes",verbs={roll="global",},every=7200,num=2489,},commuter={name="commuter",size=1750,part="people",verbs={roll="global",},every=7200,num=2490,},cowboy_boot={name="cowboy boot",size=400,part="clothes",verbs={roll="global",},every=7200,num=2491,},cowboy_hat={name="cowboy hat",size=400,part="clothes",verbs={roll="global",},every=7200,num=2492,},dashiki={name="dashiki",size=900,part="clothes",verbs={roll="global",},every=7200,num=2493,},delivery_cyclist={name="delivery cyclist",size=1800,part="people",verbs={roll="global",},every=7200,num=2494,},dog_on_a_leash={name="dog on a leash",size=500,part="animals",verbs={roll="global",},every=7200,num=2495,},e_scooter={name="e-scooter",size=1100,part="vehicles",verbs={roll="global",},every=7200,num=2496,},flower_stall={name="flower stall",size=2000,part="buildings",verbs={roll="global",},every=7200,num=2497,},food_delivery_moped={name="food delivery moped",size=1800,part="vehicles",verbs={roll="global",},every=7200,num=2498,},ice_skates={name="ice skates",size=300,part="clothes",verbs={roll="global",},every=7200,num=2499,},payphone={name="payphone",size=2200,part="fixtures",verbs={roll="global",},every=7200,num=2500,},pedestrian={name="pedestrian",size=1700,part="people",verbs={roll="global",},every=7200,num=2501,},pigeon_flock={name="pigeon flock",size=1000,part="animals",verbs={roll="global",},every=7200,num=2502,},poncho={name="poncho",size=1200,part="clothes",verbs={roll="global",},every=7200,num=2503,},rental_bike={name="rental bike",size=1800,part="vehicles",verbs={roll="global",},every=7200,num=2504,},rickshaw={name="rickshaw",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=2505,},sari={name="sari",size=5000,part="clothes",verbs={roll="global",},every=7200,num=2506,},skateboard_wheel={name="skateboard wheel",size=60,part="hardware",verbs={roll="global",},every=7200,num=2507,},sombrero={name="sombrero",size=550,part="clothes",verbs={roll="global",},every=7200,num=2508,},speed_bump={name="speed bump",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=2509,},straw_hat={name="straw hat",size=400,part="clothes",verbs={roll="global",},every=7200,num=2510,},street_cat={name="street cat",size=350,part="animals",verbs={roll="global",},every=7200,num=2511,},street_lamp={name="street lamp",size=5000,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2512,},street_sweeper={name="street sweeper",size=5000,part="vehicles",verbs={roll="global",},every=7200,num=2513,},street_vendor={name="street vendor",size=1700,part="people",verbs={roll="global",},every=7200,num=2514,},top_hat={name="top hat",size=280,part="clothes",verbs={roll="global",},every=7200,num=2515,},tow_zone_sign={name="tow zone sign",size=2300,part="fixtures",verbs={roll="global",},every=7200,num=2516,},traffic_cop={name="traffic cop",size=1800,part="people",verbs={roll="global",},every=7200,num=2517,},yield_sign={name="yield sign",size=2200,part="fixtures",verbs={roll="global",},every=7200,num=2518,},cable_car={name="cable car",size=8000,part="vehicles",verbs={roll="global",},every=7200,num=2519,},cement_truck={name="cement truck",size=8000,part="vehicles",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2520,},city_bus={name="city bus",size=12000,part="vehicles",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2521,},limousine={name="limousine",size=7000,part="vehicles",verbs={roll="global",},every=7200,num=2522,},overpass={name="overpass",size=30000,part="buildings",verbs={roll="global",},every=7200,num=2523,},parade_float={name="parade float",size=10000,part="vehicles",verbs={roll="global",},every=7200,num=2524,},steam_roller={name="steam roller",size=5000,part="vehicles",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2525,},bandana={name="bandana",size=500,part="clothes",verbs={roll="global",},every=7200,num=2526,},buckeye={name="buckeye",size=30,part="plants",verbs={roll="global",},every=7200,num=2527,},bug_spray={name="bug spray",size=150,part="household",verbs={roll="global",},every=7200,num=2528,},bumblebee={name="bumblebee",size=20,part="animals",verbs={roll="global",},every=7200,num=2529,},cottontail={name="cottontail",size=400,part="animals",verbs={roll="global",},every=7200,num=2530,},dog_biscuit={name="dog biscuit",size=60,part="food",verbs={roll="global",},every=7200,num=2531,},energy_bar={name="energy bar",size=150,part="food",verbs={roll="global",},every=7200,num=2532,},first_aid_kit={name="first aid kit",size=200,part="household",verbs={roll="global",},every=7200,num=2533,},granola={name="granola",size=100,part="food",verbs={roll="global",},every=7200,num=2534,},mile_marker={name="mile marker",size=600,part="fixtures",verbs={roll="global",},every=7200,num=2535,},mud_puddle={name="mud puddle",size=1000,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2536,},quartz_crystal={name="quartz crystal",size=60,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2537,},river_stone={name="river stone",size=120,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2538,},stone_cairn={name="stone cairn",size=400,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2539,},sun_hat={name="sun hat",size=300,part="clothes",verbs={roll="global",},every=7200,num=2540,},thistle={name="thistle",size=600,part="plants",verbs={roll="global",},every=7200,num=2541,},trail_blaze={name="trail blaze",size=150,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2542,},trail_junction_sign={name="trail junction sign",size=1000,part="fixtures",verbs={roll="global",},every=7200,num=2543,},trail_mix={name="trail mix",size=120,part="food",verbs={roll="global",},every=7200,num=2544,},trail_shoe={name="trail shoe",size=300,part="clothes",verbs={roll="global",},every=7200,num=2545,},trekking_poles={name="trekking poles",size=1200,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2546,},wild_blueberry={name="wild blueberry",size=10,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2547,},wool_sock={name="wool sock",size=250,part="clothes",verbs={roll="global",},every=7200,num=2548,},wren={name="wren",size=110,part="animals",verbs={roll="global",},every=7200,num=2549,},bear_bell={name="bear bell",size=30,part="hardware",verbs={roll="global",},every=7200,num=2550,},bear_canister={name="bear canister",size=350,part="household",verbs={roll="global",},every=7200,num=2551,},bike_trail_map={name="bike trail map",size=300,part="crafts",verbs={roll="global",},every=7200,num=2552,},birdwatcher={name="birdwatcher",size=1750,part="people",verbs={roll="global",},every=7200,num=2553,},cairn={name="cairn",size=400,part="nature",verbs={roll="global",},every=7200,num=2554,},camp_stove={name="camp stove",size=150,part="hardware",verbs={roll="global",},every=7200,num=2555,},geocaching_log={name="geocaching log",size=100,part="crafts",verbs={roll="global",},every=7200,num=2556,},hiker_with_a_dog={name="hiker with a dog",size=1800,part="people",verbs={roll="global",},every=7200,num=2557,},hiking_pole={name="hiking pole",size=1200,part="hardware",verbs={roll="global",},every=7200,num=2558,},horseback_rider={name="horseback rider",size=2500,part="people",verbs={roll="global",},every=7200,num=2559,},log_bridge={name="log bridge",size=4000,part="fixtures",verbs={roll="global",},every=7200,num=2560,},mountain_biker={name="mountain biker",size=1800,part="people",verbs={roll="global",},every=7200,num=2561,},overlook={name="overlook",size=5000,part="fixtures",verbs={roll="global",},every=7200,num=2562,},rain_jacket={name="rain jacket",size=600,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2563,},rope_swing={name="rope swing",size=3000,part="toys",verbs={roll="global",},every=7200,num=2564,},sleeping_bag={name="sleeping bag",size=600,part="household",verbs={roll="global",},every=7200,num=2565,},stepping_stones={name="stepping stones",size=3000,part="nature",verbs={roll="global",},every=7200,num=2566,},tent_stake={name="tent stake",size=200,part="hardware",verbs={roll="global",},every=7200,num=2567,},trail_bench={name="trail bench",size=1800,part="fixtures",verbs={roll="global",},every=7200,num=2568,},trail_marker={name="trail marker",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=2569,},trail_ranger={name="trail ranger",size=1800,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2570,},trail_register={name="trail register",size=300,part="crafts",verbs={roll="global",},every=7200,num=2571,},trail_volunteer={name="trail volunteer",size=1750,part="people",verbs={roll="global",},every=7200,num=2572,},trailhead_kiosk={name="trailhead kiosk",size=2000,part="fixtures",verbs={roll="global",},every=7200,num=2573,},walking_stick={name="walking stick",size=1300,part="animals",verbs={roll="global",},every=7200,num=2574,},wooden_steps={name="wooden steps",size=3000,part="fixtures",verbs={roll="global",},every=7200,num=2575,},boardwalk={name="boardwalk",size=10000,part="buildings",verbs={roll="global",},every=7200,num=2576,},cliff_face={name="cliff face",size=20000,part="nature",verbs={roll="global",},every=7200,num=2577,},covered_bridge={name="covered bridge",size=20000,part="buildings",verbs={roll="global",},every=7200,num=2578,},fire_lookout={name="fire lookout",size=10000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2579,},footbridge={name="footbridge",size=6000,part="buildings",verbs={roll="global",},every=7200,num=2580,},geyser={name="geyser",size=15000,part="nature",verbs={roll="global",},every=7200,num=2581,},hot_spring={name="hot spring",size=4000,part="nature",verbs={roll="global",},every=7200,num=2582,},suspension_bridge={name="suspension bridge",size=30000,part="buildings",verbs={roll="global",},every=7200,num=2583,},trail_runner={name="trail runner",size=1800,part="people",verbs={roll="global",},every=7200,num=2584,},trail_shelter={name="trail shelter",size=5000,part="buildings",verbs={roll="global",},every=7200,num=2585,},trailhead_parking_lot={name="trailhead parking lot",size=30000,part="fixtures",verbs={roll="global",},every=7200,num=2586,},algae={name="algae",size=100,part="plants",verbs={roll="global",},every=7200,num=2587,},beach_glass={name="beach glass",size=30,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2588,},clamshell={name="clamshell",size=100,part="nature",verbs={roll="global",},every=7200,num=2589,},coral_fragment={name="coral fragment",size=100,part="nature",verbs={roll="global",},every=7200,num=2590,},crayfish={name="crayfish",size=100,part="animals",verbs={roll="global",},every=7200,num=2591,},duck_feather={name="duck feather",size=100,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2592,},fishing_bobber={name="fishing bobber",size=30,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2593,},fishing_line={name="fishing line",size=1000,part="detritus",verbs={roll="global",},every=7200,num=2594,},freshwater_mussel={name="freshwater mussel",size=80,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2595,},frog_spawn={name="frog spawn",size=100,part="animals",verbs={roll="global",},every=7200,num=2596,},kelp={name="kelp",size=2000,part="plants",verbs={roll="global",},every=7200,num=2597,},lure={name="lure",size=80,part="hardware",verbs={roll="global",},every=7200,num=2598,},mermaid_s_purse={name="mermaid's purse",size=80,part="nature",verbs={roll="global",},every=7200,num=2599,},newt={name="newt",size=100,part="animals",verbs={roll="global",},every=7200,num=2600,},obsidian={name="obsidian",size=80,part="nature",verbs={roll="global",},every=7200,num=2601,},perch={name="perch",size=250,part="animals",verbs={roll="global",},every=7200,num=2602,},plastic_bag={name="plastic bag",size=300,part="detritus",verbs={roll="global",},every=7200,num=2603,},pond_snail={name="pond snail",size=20,part="animals",verbs={roll="global",},every=7200,num=2604,},reed={name="reed",size=2000,part="plants",verbs={roll="global",},every=7200,num=2605,},salt_crystal={name="salt crystal",size=20,part="nature",verbs={roll="global",},every=7200,num=2606,},smooth_stone={name="smooth stone",size=50,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2607,},snorkel_mask={name="snorkel mask",size=200,part="clothes",verbs={roll="global",},every=7200,num=2608,},stickleback={name="stickleback",size=50,part="animals",verbs={roll="global",},every=7200,num=2609,},sunfish={name="sunfish",size=180,part="animals",verbs={roll="global",},every=7200,num=2610,},sunscreen_bottle={name="sunscreen bottle",size=120,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2611,},swim_goggles={name="swim goggles",size=150,part="clothes",verbs={roll="global",},every=7200,num=2612,},swim_trunks={name="swim trunks",size=400,part="clothes",verbs={roll="global",},every=7200,num=2613,},swimsuit={name="swimsuit",size=400,part="clothes",verbs={roll="global",},every=7200,num=2614,},trout={name="trout",size=400,part="animals",verbs={roll="global",},every=7200,num=2615,},water_beetle={name="water beetle",size=20,part="animals",verbs={roll="global",},every=7200,num=2616,},water_lily={name="water lily",size=400,part="plants",verbs={roll="global",},every=7200,num=2617,},water_strider={name="water strider",size=15,part="animals",verbs={roll="global",},every=7200,num=2618,},bass={name="bass",size=450,part="animals",verbs={roll="global",},every=7200,num=2619,},beaver_lodge={name="beaver lodge",size=2000,part="nature",verbs={roll="global",},every=7200,num=2620,},bikini={name="bikini",size=300,part="clothes",verbs={roll="global",},every=7200,num=2621,},bullfrog={name="bullfrog",size=150,part="animals",verbs={roll="global",},every=7200,num=2622,},carp={name="carp",size=600,part="animals",verbs={roll="global",},every=7200,num=2623,},catfish={name="catfish",size=800,part="animals",verbs={roll="global",},every=7200,num=2624,},cormorant={name="cormorant",size=800,part="animals",verbs={roll="global",},every=7200,num=2625,},dinghy={name="dinghy",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=2626,},egret={name="egret",size=900,part="animals",verbs={roll="global",},every=7200,num=2627,},flippers={name="flippers",size=400,part="clothes",verbs={roll="global",},every=7200,num=2628,},floating_dock={name="floating dock",size=5000,part="buildings",verbs={roll="global",},every=7200,num=2629,},gull={name="gull",size=500,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2630,},ice_floe={name="ice floe",size=8000,part="nature",verbs={roll="global",},every=7200,num=2631,},inflatable_raft={name="inflatable raft",size=2500,part="vehicles",verbs={roll="global",},every=7200,num=2632,},kingfisher={name="kingfisher",size=300,part="animals",verbs={roll="global",},every=7200,num=2633,},loon={name="loon",size=800,part="animals",verbs={roll="global",},every=7200,num=2634,},motorboat={name="motorboat",size=6000,part="vehicles",verbs={roll="global",},every=7200,num=2635,},muskrat={name="muskrat",size=500,part="animals",verbs={roll="global",},every=7200,num=2636,},osprey={name="osprey",size=600,part="animals",verbs={roll="global",},every=7200,num=2637,},paddleboard={name="paddleboard",size=3000,part="vehicles",verbs={roll="global",},every=7200,num=2638,},painted_turtle={name="painted turtle",size=150,part="animals",verbs={roll="global",},every=7200,num=2639,},pike={name="pike",size=900,part="animals",verbs={roll="global",},every=7200,num=2640,},sandcastle_moat={name="sandcastle moat",size=1000,part="nature",verbs={roll="global",},every=7200,num=2641,},sandpiper={name="sandpiper",size=200,part="animals",verbs={roll="global",},every=7200,num=2642,},sea_star={name="sea star",size=200,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2643,},snapping_turtle={name="snapping turtle",size=400,part="animals",verbs={roll="global",},every=7200,num=2644,},sturgeon={name="sturgeon",size=2000,part="animals",verbs={roll="global",},every=7200,num=2645,},swimmer={name="swimmer",size=1750,part="people",verbs={roll="global",},every=7200,num=2646,},wetsuit={name="wetsuit",size=1500,part="clothes",verbs={roll="global",},every=7200,num=2647,},container_ship={name="container ship",size=300000,part="vehicles",verbs={roll="global",},every=7200,num=2648,},dam={name="dam",size=60000,part="buildings",verbs={roll="global",},every=7200,num=2649,},glacier_chunk={name="glacier chunk",size=3000,part="nature",verbs={roll="global",},every=7200,num=2650,},humpback_whale={name="humpback whale",size=14000,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2651,},manatee={name="manatee",size=3000,part="animals",verbs={roll="global",},every=7200,num=2652,},orca={name="orca",size=7000,part="animals",verbs={roll="global",},every=7200,num=2653,},pirate_treasure_chest={name="pirate treasure chest",size=600,part="valuables",verbs={roll="global",},every=7200,num=2654,},ruby={name="ruby",size=10,part="valuables",verbs={roll="global",},every=7200,num=2655,},sea_turtle={name="sea turtle",size=1000,part="animals",verbs={roll="global",},every=7200,num=2656,},whale_shark={name="whale shark",size=10000,part="animals",verbs={roll="global",},every=7200,num=2657,},wooden_pier={name="wooden pier",size=40000,part="buildings",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2658,},acorn_weevil={name="acorn weevil",size=10,part="animals",verbs={roll="global",},every=7200,num=2659,},animal_track={name="animal track",size=100,part="nature",verbs={roll="global",},every=7200,num=2660,},bark_beetle={name="bark beetle",size=5,part="animals",verbs={roll="global",},every=7200,num=2661,},beechnut={name="beechnut",size=15,part="plants",verbs={roll="global",},every=7200,num=2662,},blackberry={name="blackberry",size=20,part="plants",verbs={roll="global",},every=7200,num=2663,},bracken={name="bracken",size=500,part="plants",verbs={roll="global",},every=7200,num=2664,},bracket_fungus={name="bracket fungus",size=200,part="plants",verbs={roll="global",},every=7200,num=2665,},burr={name="burr",size=20,part="plants",verbs={roll="global",},every=7200,num=2666,},chanterelle={name="chanterelle",size=80,part="plants",verbs={roll="global",},every=7200,num=2667,},chickadee={name="chickadee",size=120,part="animals",verbs={roll="global",},every=7200,num=2668,},claw_mark={name="claw mark",size=400,part="nature",verbs={roll="global",},every=7200,num=2669,},deer_track={name="deer track",size=80,part="nature",verbs={roll="global",},every=7200,num=2670,},dewdrop={name="dewdrop",size=5,part="nature",verbs={roll="global",},every=7200,num=2671,},flying_squirrel={name="flying squirrel",size=250,part="animals",verbs={roll="global",},every=7200,num=2672,},juniper_berry={name="juniper berry",size=7,part="plants",verbs={roll="global",},every=7200,num=2673,},katydid={name="katydid",size=50,part="animals",verbs={roll="global",},every=7200,num=2674,},luna_moth={name="luna moth",size=100,part="animals",verbs={roll="global",},every=7200,num=2675,},millipede={name="millipede",size=40,part="animals",verbs={roll="global",},every=7200,num=2676,},morel={name="morel",size=80,part="plants",verbs={roll="global",},every=7200,num=2677,},owl_pellet={name="owl pellet",size=50,part="nature",verbs={roll="global",},every=7200,num=2678,},pine_cone_cluster={name="pine cone cluster",size=200,part="plants",verbs={roll="global",},every=7200,num=2679,},salamander={name="salamander",size=120,part="animals",verbs={roll="global",},every=7200,num=2680,},spider_web={name="spider web",size=200,part="nature",verbs={roll="global",},every=7200,num=2681,},spiderweb_with_dew={name="spiderweb with dew",size=300,part="nature",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2682,},spruce_twig={name="spruce twig",size=250,part="plants",verbs={roll="global",},every=7200,num=2683,},toadstool={name="toadstool",size=80,part="plants",verbs={roll="global",},every=7200,num=2684,},tree_bark={name="tree bark",size=300,part="nature",verbs={roll="global",},every=7200,num=2685,},whip_poor_will={name="whip-poor-will",size=250,part="animals",verbs={roll="global",},every=7200,num=2686,},woodpecker={name="woodpecker",size=250,part="animals",verbs={roll="global",},every=7200,num=2687,},axe={name="axe",size=900,part="hardware",verbs={roll="global",},every=7200,num=2688,},badger={name="badger",size=700,part="animals",verbs={roll="global",},every=7200,num=2689,},barred_owl={name="barred owl",size=500,part="animals",verbs={roll="global",},every=7200,num=2690,},beech={name="beech",size=20000,part="plants",verbs={roll="global",},every=7200,num=2691,},beehive={name="beehive",size=500,part="animals",verbs={roll="global",},every=7200,num=2692,},birch={name="birch",size=15000,part="plants",verbs={roll="global",},every=7200,num=2693,},campfire={name="campfire",size=1000,part="nature",verbs={roll="global",},every=7200,num=2694,},campfire_ring={name="campfire ring",size=1500,part="fixtures",verbs={roll="global",},every=7200,num=2695,},cave_mouth={name="cave mouth",size=3000,part="nature",verbs={roll="global",},every=7200,num=2696,},cedar={name="cedar",size=20000,part="plants",verbs={roll="global",},every=7200,num=2697,},fairy_ring={name="fairy ring",size=3000,part="nature",verbs={roll="global",},every=7200,num=2698,},firewood={name="firewood",size=400,part="household",verbs={roll="global",},every=7200,num=2699,},forager={name="forager",size=1700,part="people",verbs={roll="global",},every=7200,num=2700,},geocache={name="geocache",size=120,part="toys",verbs={roll="global",},every=7200,num=2701,},gray_fox={name="gray fox",size=900,part="animals",verbs={roll="global",},every=7200,num=2702,},handsaw={name="handsaw",size=600,part="hardware",verbs={roll="global",},every=7200,num=2703,},headlamp={name="headlamp",size=80,part="electronics",verbs={roll="global",},every=7200,num=2704,},hemlock={name="hemlock",size=25000,part="plants",verbs={roll="global",},every=7200,num=2705,},hunting_cabin={name="hunting cabin",size=8000,part="buildings",verbs={roll="global",},every=7200,num=2706,},logger={name="logger",size=1800,part="people",verbs={roll="global",},every=7200,num=2707,},lost_hiking_boot={name="lost hiking boot",size=300,part="clothes",verbs={roll="global",},every=7200,num=2708,},marten={name="marten",size=500,part="animals",verbs={roll="global",},every=7200,num=2709,},mushroom_hunter={name="mushroom hunter",size=1700,part="people",verbs={roll="global",},every=7200,num=2710,},pileated_woodpecker={name="pileated woodpecker",size=450,part="animals",verbs={roll="global",},every=7200,num=2711,},rock_outcrop={name="rock outcrop",size=3000,part="nature",verbs={roll="global",},every=7200,num=2712,},sinkhole={name="sinkhole",size=4000,part="nature",verbs={roll="global",},every=7200,num=2713,},stream={name="stream",size=3000,part="nature",verbs={roll="global",},every=7200,num=2714,},survey_stake={name="survey stake",size=1000,part="hardware",verbs={roll="global",},every=7200,num=2715,},trail_camera={name="trail camera",size=150,part="electronics",verbs={roll="global",},every=7200,num=2716,},trail_map={name="trail map",size=250,part="crafts",verbs={roll="global",},every=7200,num=2717,},water_pump={name="water pump",size=1200,part="fixtures",verbs={roll="global",},every=7200,num=2718,},wild_boar={name="wild boar",size=1200,part="animals",verbs={roll="global",},every=7200,num=2719,},woodchuck={name="woodchuck",size=500,part="animals",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2720,},woodpile={name="woodpile",size=2000,part="household",verbs={roll="global",},every=7200,num=2721,},woodsman={name="woodsman",size=1800,part="people",verbs={roll="global",},every=7200,num=2722,},abandoned_cabin={name="abandoned cabin",size=8000,part="buildings",verbs={roll="global",},every=7200,num=2723,},ancient_oak={name="ancient oak",size=30000,part="plants",verbs={roll="global",},every=7200,num=2724,},bigfoot_footprint={name="bigfoot footprint",size=400,part="nature",verbs={roll="global",},every=7200,num=2725,},black_bear_cub={name="black bear cub",size=700,part="animals",verbs={roll="global",},every=7200,num=2726,},elk_herd={name="elk herd",size=10000,part="animals",verbs={roll="global",},every=7200,num=2727,},fire_tower_keeper={name="fire tower keeper",size=1750,part="people",verbs={roll="global",},every=7200,num=2728,},forest_ranger={name="forest ranger",size=1800,part="people",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2729,},great_horned_owl={name="great horned owl",size=550,part="animals",verbs={roll="global",},every=7200,num=2730,},hollow_tree={name="hollow tree",size=12000,part="plants",verbs={roll="global",},every=7200,num=2731,},lightning_struck_oak={name="lightning-struck oak",size=20000,part="plants",verbs={roll="global",},every=7200,num=2732,},lone_hiker={name="lone hiker",size=1800,part="people",verbs={roll="global",},every=7200,num=2733,},lynx={name="lynx",size=900,part="animals",verbs={roll="global",},every=7200,num=2734,},mountain_lion={name="mountain lion",size=1600,part="animals",verbs={roll="global",},every=7200,num=2735,},old_growth_cedar={name="old-growth cedar",size=40000,part="plants",verbs={roll="global",},every=7200,num=2736,},ranger_station={name="ranger station",size=6000,part="buildings",verbs={roll="global",},every=7200,num=2737,},sawmill={name="sawmill",size=20000,part="buildings",verbs={roll="global",},every=7200,num=2738,},stone_circle={name="stone circle",size=8000,part="nature",verbs={roll="global",},every=7200,num=2739,},wolf={name="wolf",size=1300,part="animals",verbs={roll="global",},every=7200,num=2740,},earwig={name="earwig",size=20,part="animals",verbs={roll="global",},every=7200,num=2741,},silverfish={name="silverfish",size=10,part="animals",verbs={roll="global",},every=7200,num=2742,},cockroach={name="cockroach",size=30,part="animals",verbs={roll="global",},every=7200,num=2743,},stink_bug={name="stink bug",size=15,part="animals",verbs={roll="global",},every=7200,num=2744,},inchworm={name="inchworm",size=25,part="animals",verbs={roll="global",},every=7200,num=2745,},jumping_spider={name="jumping spider",size=8,part="animals",verbs={roll="global",},every=7200,num=2746,},daddy_longlegs={name="daddy longlegs",size=40,part="animals",verbs={roll="global",},every=7200,num=2747,},flea={name="flea",size=2,part="animals",verbs={roll="global",},every=7200,num=2748,},aphid={name="aphid",size=2,part="animals",verbs={roll="global",},every=7200,num=2749,},gnat={name="gnat",size=3,part="animals",verbs={roll="global",},every=7200,num=2750,},leafhopper={name="leafhopper",size=6,part="animals",verbs={roll="global",},every=7200,num=2751,},damselfly={name="damselfly",size=35,part="animals",verbs={roll="global",},every=7200,num=2752,},stag_beetle={name="stag beetle",size=40,part="animals",verbs={roll="global",},every=7200,num=2753,},golden_scarab={name="golden scarab",size=25,part="animals",verbs={roll="global",},every=7200,num=2754,},fruit_fly={name="fruit fly",size=3,part="animals",verbs={roll="global",},every=7200,num=2755,},termite={name="termite",size=6,part="animals",verbs={roll="global",},every=7200,num=2756,},june_bug={name="june bug",size=20,part="animals",verbs={roll="global",},every=7200,num=2757,},false_eyelash={name="false eyelash",size=10,part="household",verbs={roll="global",},every=7200,num=2758,},earring_back={name="earring back",size=6,part="household",verbs={roll="global",},every=7200,num=2759,},hair_clip={name="hair clip",size=40,part="household",verbs={roll="global",},every=7200,num=2760,},lipstick_cap={name="lipstick cap",size=20,part="household",verbs={roll="global",},every=7200,num=2761,},dental_floss_pick={name="dental floss pick",size=40,part="household",verbs={roll="global",},every=7200,num=2762,},eyeshadow_pan={name="eyeshadow pan",size=30,part="household",verbs={roll="global",},every=7200,num=2763,},perfume_sample={name="perfume sample",size=45,part="household",verbs={roll="global",},every=7200,num=2764,},nose_stud={name="nose stud",size=5,part="household",verbs={roll="global",},every=7200,num=2765,},travel_soap={name="travel soap",size=45,part="household",verbs={roll="global",},every=7200,num=2766,},deodorant_cap={name="deodorant cap",size=40,part="household",verbs={roll="global",},every=7200,num=2767,},nail_file={name="nail file",size=45,part="household",verbs={roll="global",},every=7200,num=2768,},band_aid={name="band-aid",size=45,part="household",verbs={roll="global",},every=7200,num=2769,},earplug={name="earplug",size=20,part="household",verbs={roll="global",},every=7200,num=2770,},vitamin={name="vitamin",size=15,part="household",verbs={roll="global",},every=7200,num=2771,},pill_bottle_cap={name="pill bottle cap",size=30,part="household",verbs={roll="global",},every=7200,num=2772,},syringe_cap={name="syringe cap",size=20,part="household",verbs={roll="global",},every=7200,num=2773,},hearing_aid_battery={name="hearing aid battery",size=8,part="household",verbs={roll="global",},every=7200,num=2774,},test_strip={name="test strip",size=30,part="household",verbs={roll="global",},every=7200,num=2775,},thermometer_cover={name="thermometer cover",size=25,part="household",verbs={roll="global",},every=7200,num=2776,},glass_eye={name="glass eye",size=25,part="household",verbs={roll="global",},every=7200,num=2777,},medical_alert_charm={name="medical alert charm",size=20,part="household",verbs={roll="global",},every=7200,num=2778,},pom_pom={name="pom-pom",size=25,part="crafts",verbs={roll="global",},every=7200,num=2779,},spool_of_thread={name="spool of thread",size=40,part="crafts",verbs={roll="global",},every=7200,num=2780,},pinch_of_glitter={name="pinch of glitter",size=10,part="crafts",verbs={roll="global",},every=7200,num=2781,},pipe_cleaner={name="pipe cleaner",size=40,part="crafts",verbs={roll="global",},every=7200,num=2782,},felt_scrap={name="felt scrap",size=40,part="crafts",verbs={roll="global",},every=7200,num=2783,},stitch_marker={name="stitch marker",size=15,part="crafts",verbs={roll="global",},every=7200,num=2784,},glass_bead={name="glass bead",size=12,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2785,},rhinestone={name="rhinestone",size=8,part="crafts",verbs={roll="global",},every=7200,num=2786,},embroidery_floss={name="embroidery floss",size=45,part="crafts",verbs={roll="global",},every=7200,num=2787,},seed_pearl={name="seed pearl",size=5,part="crafts",verbs={roll="global",},every=7200,num=2788,},game_token={name="game token",size=20,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2789,},scrabble_tile={name="scrabble tile",size=20,part="toys",verbs={roll="global",},every=7200,num=2790,},arcade_token={name="arcade token",size=25,part="toys",verbs={roll="global",},every=7200,num=2791,},meeple={name="meeple",size=16,part="toys",verbs={roll="global",},every=7200,num=2792,},tiddlywink={name="tiddlywink",size=20,part="toys",verbs={roll="global",},every=7200,num=2793,},mahjong_tile={name="mahjong tile",size=30,part="toys",verbs={roll="global",},every=7200,num=2794,},d20={name="d20",size=20,part="toys",verbs={roll="global",},every=7200,num=2795,},jack={name="jack",size=30,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2796,},ivory_chess_knight={name="ivory chess knight",size=45,part="toys",verbs={roll="global",},every=7200,num=2797,},crystal_die={name="crystal die",size=20,part="toys",verbs={roll="global",},every=7200,num=2798,},cleat_stud={name="cleat stud",size=15,part="toys",verbs={roll="global",},every=7200,num=2799,},bike_valve_cap={name="bike valve cap",size=10,part="toys",verbs={roll="global",},every=7200,num=2800,},dart_flight={name="dart flight",size=40,part="toys",verbs={roll="global",},every=7200,num=2801,},hacky_sack={name="hacky sack",size=48,part="toys",verbs={roll="global",},every=7200,num=2802,},fishing_hook={name="fishing hook",size=20,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2803,},fishing_sinker={name="fishing sinker",size=15,part="toys",verbs={roll="global",},every=7200,num=2804,},championship_ring={name="championship ring",size=25,part="toys",verbs={roll="global",},every=7200,num=2805,},chewed_gum={name="chewed gum",size=15,part="detritus",verbs={roll="global",},every=7200,num=2806,},used_tissue={name="used tissue",size=45,part="detritus",verbs={roll="global",},every=7200,num=2807,},hairball={name="hairball",size=30,part="detritus",verbs={roll="global",},every=7200,num=2808,},toenail_clipping={name="toenail clipping",size=10,part="detritus",verbs={roll="global",},every=7200,num=2809,},booger={name="booger",size=5,part="detritus",verbs={roll="global",},every=7200,num=2810,},scab={name="scab",size=10,part="detritus",verbs={roll="global",},every=7200,num=2811,},spit={name="spit",size=20,part="detritus",verbs={roll="global",},every=7200,num=2812,},dead_fly={name="dead fly",size=7,part="detritus",verbs={roll="global",},every=7200,num=2813,},bird_dropping={name="bird dropping",size=30,part="detritus",verbs={roll="global",},every=7200,num=2814,},earwax={name="earwax",size=5,part="detritus",verbs={roll="global",},every=7200,num=2815,},hair_clump={name="hair clump",size=45,part="detritus",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2816,},moldy_crumb={name="moldy crumb",size=10,part="detritus",verbs={roll="global",},every=7200,num=2817,},used_band_aid={name="used band-aid",size=45,part="detritus",verbs={roll="global",},every=7200,num=2818,},loose_tooth={name="loose tooth",size=10,part="detritus",verbs={roll="global",},every=7200,num=2819,},mystery_goo={name="mystery goo",size=30,part="detritus",verbs={roll="global",},every=7200,num=2820,},nut={name="nut",size=10,part="hardware",verbs={roll="global",},every=7200,num=2821,},lock_washer={name="lock washer",size=12,part="hardware",verbs={roll="global",},every=7200,num=2822,},wing_nut={name="wing nut",size=25,part="hardware",verbs={roll="global",},every=7200,num=2823,},wire_nut={name="wire nut",size=20,part="hardware",verbs={roll="global",},every=7200,num=2824,},hex_key={name="hex key",size=45,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2825,},wood_screw={name="wood screw",size=40,part="hardware",verbs={roll="global",},every=7200,num=2826,},eye_hook={name="eye hook",size=40,part="hardware",verbs={roll="global",},every=7200,num=2827,},picture_hook={name="picture hook",size=20,part="hardware",verbs={roll="global",},every=7200,num=2828,},drywall_anchor={name="drywall anchor",size=30,part="hardware",verbs={roll="global",},every=7200,num=2829,},set_screw={name="set screw",size=8,part="hardware",verbs={roll="global",},every=7200,num=2830,},square_nail={name="square nail",size=40,part="hardware",verbs={roll="global",},every=7200,num=2831,},brass_key={name="brass key",size=45,part="hardware",verbs={roll="global",},every=7200,num=2832,},crumb={name="crumb",size=10,part="food",verbs={roll="global",},every=7200,num=2833,},sprinkle={name="sprinkle",size=10,part="food",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2834,},popcorn_kernel={name="popcorn kernel",size=10,part="food",verbs={roll="global",},every=7200,num=2835,},raisin={name="raisin",size=12,part="food",verbs={roll="global",},every=7200,num=2836,},corn_kernel={name="corn kernel",size=10,part="food",verbs={roll="global",},every=7200,num=2837,},olive_pit={name="olive pit",size=20,part="food",verbs={roll="global",},every=7200,num=2838,},candy_corn={name="candy corn",size=20,part="food",verbs={roll="global",},every=7200,event_only=true,num=2839,},almond={name="almond",size=25,part="food",verbs={roll="global",},every=7200,num=2840,},caper={name="caper",size=10,part="food",verbs={roll="global",},every=7200,num=2841,},saffron_thread={name="saffron thread",size=10,part="food",verbs={roll="global",},every=7200,num=2842,},black_truffle={name="black truffle",size=45,part="food",verbs={roll="global",},every=7200,num=2843,},caviar_pearl={name="caviar pearl",size=10,part="food",verbs={roll="global",},every=7200,num=2844,},gold_tooth={name="gold tooth",size=10,part="valuables",verbs={roll="global",},every=7200,num=2845,},advent_calendar={name="advent calendar",size=300,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=2846,},candy_cane={name="candy cane",size=150,part="food",verbs={roll="global",},every=7200,event_only=true,num=2847,},christmas_present={name="christmas present",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2848,},eggnog={name="eggnog",size=150,part="food",verbs={roll="global",},every=7200,event_only=true,num=2849,},fruitcake={name="fruitcake",size=200,part="food",verbs={roll="global",},every=7200,event_only=true,num=2850,},rock_salt={name="rock salt",size=10,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4838,},ice_scraper={name="ice scraper",size=400,part="hardware",verbs={roll="global",},every=7200,event_only=true,num=4839,},frozen_puddle={name="frozen puddle",size=800,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4840,},snow_angel={name="snow angel",size=1800,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4841,},snow_fort={name="snow fort",size=2500,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4842,},igloo={name="igloo",size=3000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4843,},snowplow={name="snowplow",size=6000,part="vehicles",verbs={roll="global",},every=7200,event_only=true,num=4844,},plowed_snowbank={name="plowed snowbank",size=15000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4845,},sledding_hill={name="sledding hill",size=60000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4846,},snowfield={name="snowfield",size=300000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4847,},raindrop={name="raindrop",size=4,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4848,},paper_boat={name="paper boat",size=150,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4849,},rain_gauge={name="rain gauge",size=300,part="hardware",verbs={roll="global",},every=7200,event_only=true,num=4850,},soggy_newspaper={name="soggy newspaper",size=400,part="detritus",verbs={roll="global",},every=7200,event_only=true,num=4851,},rain_barrel={name="rain barrel",size=1000,part="household",verbs={roll="global",},every=7200,event_only=true,num=4852,},downspout={name="downspout",size=3000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=4853,},rain_slicked_taxi={name="rain-slicked taxi",size=4500,part="vehicles",verbs={roll="global",},every=7200,event_only=true,num=4854,},flooded_underpass={name="flooded underpass",size=30000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=4855,},rainbow={name="rainbow",size=500000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=4856,},holiday_card={name="holiday card",size=150,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=2851,},holly_sprig={name="holly sprig",size=100,part="plants",verbs={roll="global",},every=7200,event_only=true,num=2852,},hot_cocoa={name="hot cocoa",size=120,part="food",verbs={roll="global",},every=7200,event_only=true,num=2853,},mistletoe={name="mistletoe",size=100,part="plants",verbs={roll="global",},every=7200,event_only=true,num=2854,},ornament={name="ornament",size=60,part="household",verbs={roll="global",},every=7200,event_only=true,num=2855,},santa_hat={name="santa hat",size=300,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2856,},stocking={name="stocking",size=400,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2857,},wrapping_paper_roll={name="wrapping paper roll",size=1000,part="crafts",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2858,},nutcracker={name="nutcracker",size=400,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2859,},reindeer={name="reindeer",size=1400,part="animals",verbs={roll="global",},every=7200,event_only=true,num=2860,},santa={name="santa",size=1800,part="people",verbs={roll="global",},every=7200,event_only=true,num=2861,},string_of_lights={name="string of lights",size=5000,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2862,},tinsel={name="tinsel",size=2000,part="household",verbs={roll="global",},every=7200,event_only=true,num=2863,},workshop_elf={name="workshop elf",size=1200,part="people",verbs={roll="global",},every=7200,event_only=true,num=2864,},yule_log={name="yule log",size=400,part="food",verbs={roll="global",},every=7200,event_only=true,num=2865,},carolers={name="carolers",size=3000,part="people",verbs={roll="global",},every=7200,event_only=true,num=2866,},sleigh={name="sleigh",size=3000,part="vehicles",verbs={roll="global",},every=7200,event_only=true,num=2867,},giant_inflatable_snowman={name="giant inflatable snowman",size=10000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4869,},giant_candy_cane={name="giant candy cane",size=10000,part="food",verbs={roll="global",},every=7200,event_only=true,num=4870,},giant_wreath={name="giant wreath",size=10000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4871,},giant_nutcracker={name="giant nutcracker",size=10000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4872,},christmas_tree_farm={name="Christmas tree farm",size=100000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4873,},colossal_christmas_tree={name="colossal Christmas tree",size=100000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4874,},colossal_snow_globe={name="colossal snow globe",size=100000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4875,},ofrenda_candle={name="ofrenda candle",size=150,part="household",verbs={roll="global",},every=7200,event_only=true,num=2868,},pan_de_muerto={name="pan de muerto",size=120,part="food",verbs={roll="global",},every=7200,event_only=true,num=2869,},papel_picado={name="papel picado",size=600,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=2870,},sugar_skull={name="sugar skull",size=100,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2871,},calavera_mask={name="calavera mask",size=250,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2872,},catrina_figure={name="catrina figure",size=1700,part="people",verbs={roll="global",},every=7200,event_only=true,num=2873,},ofrenda_altar={name="ofrenda altar",size=2000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=2874,},diya={name="diya",size=40,part="household",verbs={roll="global",},every=7200,event_only=true,num=2875,},laddu={name="laddu",size=40,part="food",verbs={roll="global",},every=7200,event_only=true,num=2876,},marigold_garland={name="marigold garland",size=1500,part="plants",verbs={roll="global",},every=7200,event_only=true,num=2877,},rangoli={name="rangoli",size=2000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=2878,},string_of_fairy_lights={name="string of fairy lights",size=5000,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2879,},candle_lantern={name="candle lantern",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2880,},diwali_sweets_box={name="diwali sweets box",size=250,part="food",verbs={roll="global",},every=7200,event_only=true,num=2881,},oil_lamp={name="oil lamp",size=150,part="household",verbs={roll="global",},every=7200,event_only=true,num=2882,},fireworks_wheel={name="fireworks wheel",size=3000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2883,},chocolate_bunny={name="chocolate bunny",size=120,part="food",verbs={roll="global",},every=7200,event_only=true,num=2884,},easter_basket={name="easter basket",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2885,},easter_bonnet={name="easter bonnet",size=300,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2886,},easter_lily={name="easter lily",size=400,part="plants",verbs={roll="global",},every=7200,event_only=true,num=2887,},hot_cross_bun={name="hot cross bun",size=80,part="food",verbs={roll="global",},every=7200,event_only=true,num=2888,},marshmallow_chick={name="marshmallow chick",size=40,part="food",verbs={roll="global",},every=7200,event_only=true,num=2889,},painted_egg={name="painted egg",size=60,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2890,},plastic_egg={name="plastic egg",size=50,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2891,},easter_bunny={name="easter bunny",size=1800,part="people",verbs={roll="global",},every=7200,event_only=true,num=2892,},easter_egg_hunt={name="easter egg hunt",size=8000,part="people",verbs={roll="global",},every=7200,event_only=true,num=2893,},giant_egg={name="giant egg",size=2000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2894,},crescent_lantern={name="crescent lantern",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2895,},date={name="date",size=30,part="food",verbs={roll="global",},every=7200,event_only=true,num=2896,},eid_cookie={name="eid cookie",size=60,part="food",verbs={roll="global",},every=7200,event_only=true,num=2897,},henna_cone={name="henna cone",size=120,part="household",verbs={roll="global",},every=7200,event_only=true,num=2898,},eid_gift_bag={name="eid gift bag",size=350,part="household",verbs={roll="global",},every=7200,event_only=true,num=2899,},ramadan_lantern={name="ramadan lantern",size=500,part="household",verbs={roll="global",},every=7200,event_only=true,num=2900,},sweets_tray={name="sweets tray",size=400,part="food",verbs={roll="global",},every=7200,event_only=true,num=2901,},bowl_of_candy={name="bowl of candy",size=250,part="food",verbs={roll="global",},every=7200,event_only=true,num=2902,},candy_bag={name="candy bag",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2903,},cobweb={name="cobweb",size=300,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2904,},full_size_candy_bar={name="full-size candy bar",size=180,part="food",verbs={roll="global",},every=7200,event_only=true,num=2905,},ghost_costume={name="ghost costume",size=1500,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2906,},paper_bat={name="paper bat",size=200,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2907,},plastic_fangs={name="plastic fangs",size=40,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2908,},plastic_spider={name="plastic spider",size=40,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2909,},porch_light={name="porch light",size=200,part="household",verbs={roll="global",},every=7200,event_only=true,num=2910,},trick_or_treat_bucket={name="trick-or-treat bucket",size=200,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2911,},trick_or_treater={name="trick-or-treater",size=1200,part="people",verbs={roll="global",},every=7200,event_only=true,num=2912,},vampire_cape={name="vampire cape",size=1300,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2913,},werewolf_mask={name="werewolf mask",size=350,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2914,},black_cat={name="black cat",size=400,part="animals",verbs={roll="global",},every=7200,event_only=true,num=2915,},halloween_costume={name="halloween costume",size=1200,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2916,},mummy_wrap={name="mummy wrap",size=2000,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2917,},skeleton_decoration={name="skeleton decoration",size=1700,part="household",verbs={roll="global",},every=7200,event_only=true,num=2918,},spooky_inflatable={name="spooky inflatable",size=3000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2919,},tombstone_prop={name="tombstone prop",size=600,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=2920,},vampire={name="vampire",size=1800,part="people",verbs={roll="global",},every=7200,event_only=true,num=2921,},werewolf={name="werewolf",size=1900,part="people",verbs={roll="global",},every=7200,event_only=true,num=2922,},witch={name="witch",size=1700,part="people",verbs={roll="global",},every=7200,event_only=true,num=2923,},zombie={name="zombie",size=1700,part="people",verbs={roll="global",},every=7200,event_only=true,num=2924,},haunted_house={name="haunted house",size=10000,part="buildings",verbs={roll="global",},every=7200,event_only=true,num=2925,},giant_jack_o_lantern={name="giant jack-o'-lantern",size=10000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4860,},giant_cobweb={name="giant cobweb",size=10000,part="household",verbs={roll="global",},every=7200,event_only=true,num=4861,},giant_inflatable_black_cat={name="giant inflatable black cat",size=10000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4862,},giant_candy_corn={name="giant candy corn",size=10000,part="food",verbs={roll="global",},every=7200,event_only=true,num=4863,},parade_float_skeleton={name="parade-float skeleton",size=10000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4864,},pumpkin_patch={name="pumpkin patch",size=100000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4865,},corn_maze={name="corn maze",size=100000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4866,},colossal_jack_o_lantern={name="colossal jack-o'-lantern",size=100000,part="plants",verbs={roll="global",},every=7200,event_only=true,num=4867,},colossal_candy_corn={name="colossal candy corn",size=100000,part="food",verbs={roll="global",},every=7200,event_only=true,num=4868,},dreidel={name="dreidel",size=40,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2926,},gelt={name="gelt",size=30,part="food",verbs={roll="global",},every=7200,event_only=true,num=2927,},hanukkah_candle={name="hanukkah candle",size=100,part="household",verbs={roll="global",},every=7200,event_only=true,num=2928,},latke={name="latke",size=100,part="food",verbs={roll="global",},every=7200,event_only=true,num=2929,},sufganiyot={name="sufganiyot",size=80,part="food",verbs={roll="global",},every=7200,event_only=true,num=2930,},blue_and_white_banner={name="blue and white banner",size=1500,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=2931,},hanukkiyah={name="hanukkiyah",size=300,part="household",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2932,},menorah={name="menorah",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2933,},firecracker={name="firecracker",size=80,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2934,},hot_dog_bun={name="hot dog bun",size=120,part="food",verbs={roll="global",},every=7200,event_only=true,num=2935,},watermelon_slice={name="watermelon slice",size=200,part="food",verbs={roll="global",},every=7200,event_only=true,num=2936,},marching_band_drum={name="marching band drum",size=700,part="instruments",verbs={roll="global",},every=7200,num=2937,},mandarin_orange={name="mandarin orange",size=70,part="food",verbs={roll="global",},every=7200,event_only=true,num=2938,},nian_gao={name="nian gao",size=120,part="food",verbs={roll="global",},every=7200,event_only=true,num=2939,},paper_lantern={name="paper lantern",size=300,part="household",verbs={roll="global",},every=7200,event_only=true,num=2940,},red_envelope={name="red envelope",size=100,part="valuables",verbs={roll="global",},every=7200,event_only=true,num=2941,},spring_couplet={name="spring couplet",size=1500,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=2942,},zodiac_figurine={name="zodiac figurine",size=100,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2943,},dragon_dance={name="dragon dance",size=15000,part="people",verbs={roll="global",},every=7200,event_only=true,num=2944,},firecracker_string={name="firecracker string",size=1000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2945,},lion_dance_costume={name="lion dance costume",size=2000,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2946,},giant_lantern={name="giant lantern",size=3000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=2947,},lantern_arch={name="lantern arch",size=10000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=4876,},giant_firecracker_string={name="giant firecracker string",size=10000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4877,},dragon_dance_dragon={name="dragon dance dragon",size=10000,part="toys",verbs={roll="global",},retired=true,event_only=true,every=7200,num=4878,},giant_mandarin_orange={name="giant mandarin orange",size=10000,part="food",verbs={roll="global",},every=7200,event_only=true,num=4879,},lantern_festival={name="lantern festival",size=100000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=4880,},colossal_paper_dragon={name="colossal paper dragon",size=100000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=4881,},colossal_red_envelope={name="colossal red envelope",size=100000,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=4882,},bead_necklace={name="bead necklace",size=600,part="valuables",verbs={roll="global",},every=7200,event_only=true,num=2948,},carnival_mask={name="carnival mask",size=200,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2949,},doubloon={name="doubloon",size=40,part="valuables",verbs={roll="global",},every=7200,event_only=true,num=2950,},king_cake={name="king cake",size=250,part="food",verbs={roll="global",},every=7200,event_only=true,num=2951,},brass_band={name="brass band",size=5000,part="people",verbs={roll="global",},every=7200,num=2952,},jester={name="jester",size=1700,part="people",verbs={roll="global",},every=7200,event_only=true,num=2953,},carnival_float={name="carnival float",size=12000,part="vehicles",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2954,},champagne_bottle={name="champagne bottle",size=300,part="food",verbs={roll="global",},every=7200,event_only=true,num=2955,},noisemaker={name="noisemaker",size=150,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2956,},party_hat={name="party hat",size=250,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2957,},party_horn={name="party horn",size=200,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2958,},sparkly_tiara={name="sparkly tiara",size=200,part="clothes",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2959,},countdown_clock={name="countdown clock",size=1000,part="electronics",verbs={roll="global",},every=7200,event_only=true,num=2960,},resolution_list={name="resolution list",size=220,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=2961,},ball_drop={name="ball drop",size=5000,part="fixtures",verbs={roll="global",},every=7200,event_only=true,num=2962,},green_beer={name="green beer",size=180,part="food",verbs={roll="global",},every=7200,event_only=true,num=2963,},green_hat={name="green hat",size=300,part="clothes",verbs={roll="global",},every=7200,event_only=true,num=2964,},shamrock={name="shamrock",size=50,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2965,},soda_bread={name="soda bread",size=200,part="food",verbs={roll="global",},every=7200,event_only=true,num=2966,},leprechaun={name="leprechaun",size=1100,part="people",verbs={roll="global",},every=7200,event_only=true,num=2967,},pot_of_gold={name="pot of gold",size=400,part="valuables",verbs={roll="global",},every=7200,event_only=true,num=2968,},rainbow_s_end={name="rainbow's end",size=10000,part="nature",verbs={roll="global",},every=7200,event_only=true,num=2969,},cornucopia={name="cornucopia",size=500,part="household",verbs={roll="global",},every=7200,event_only=true,num=2970,},cranberry_sauce={name="cranberry sauce",size=120,part="food",verbs={roll="global",},every=7200,event_only=true,num=2971,},gravy_boat={name="gravy boat",size=200,part="household",verbs={roll="global",},every=7200,event_only=true,num=2972,},mashed_potatoes={name="mashed potatoes",size=180,part="food",verbs={roll="global",},every=7200,event_only=true,num=2973,},pumpkin_pie={name="pumpkin pie",size=250,part="food",verbs={roll="global",},every=7200,event_only=true,num=2974,},roast_turkey={name="roast turkey",size=400,part="food",verbs={roll="global",},every=7200,event_only=true,num=2975,},stuffing={name="stuffing",size=200,part="food",verbs={roll="global",},every=7200,event_only=true,num=2976,},parade_balloon={name="parade balloon",size=8000,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2977,},dinner_table={name="dinner table",size=3000,part="household",verbs={roll="global",},every=7200,event_only=true,num=2978,},candy_hearts={name="candy hearts",size=20,part="food",verbs={roll="global",},every=7200,event_only=true,num=2979,},heart_box_of_chocolates={name="heart box of chocolates",size=200,part="food",verbs={roll="global",},every=7200,event_only=true,num=2980,},red_rose={name="red rose",size=500,part="plants",verbs={roll="global",},retired=true,event_only=true,every=7200,num=2981,},teddy_bear_with_a_heart={name="teddy bear with a heart",size=400,part="toys",verbs={roll="global",},every=7200,event_only=true,num=2982,},valentine_card={name="valentine card",size=150,part="crafts",verbs={roll="global",},every=7200,event_only=true,num=2983,},bouquet_of_roses={name="bouquet of roses",size=600,part="plants",verbs={roll="global",},every=7200,event_only=true,num=2984,},cupid={name="cupid",size=1200,part="people",verbs={roll="global",},every=7200,event_only=true,num=2985,},love_lock={name="love lock",size=100,part="valuables",verbs={roll="global",},every=7200,event_only=true,num=2986,},philly_soft_pretzel={name="Philly soft pretzel",size=80,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=2987,},hoagie={name="hoagie",size=200,part="food",verbs={roll="global",},every=10800,num=2988,},water_ice={name="water ice",size=150,part="food",verbs={roll="global",},every=10800,num=2989,},scrapple={name="scrapple",size=180,part="food",verbs={roll="global",},every=10800,num=2990,},roast_pork_sandwich={name="roast pork sandwich",size=200,part="food",verbs={roll="global",},every=10800,num=2991,},black_and_white_cookie={name="black-and-white cookie",size=80,part="food",verbs={roll="global",},every=10800,num=2992,},egg_cream={name="egg cream",size=150,part="food",verbs={roll="global",},every=10800,num=2993,},pastrami_on_rye={name="pastrami on rye",size=200,part="food",verbs={roll="global",},every=10800,num=2994,},chopped_cheese={name="chopped cheese",size=200,part="food",verbs={roll="global",},every=10800,num=2995,},halal_cart_platter={name="halal cart platter",size=280,part="food",verbs={roll="global",},every=10800,num=2996,},lobster_roll={name="lobster roll",size=200,part="food",verbs={roll="global",},every=10800,num=2997,},baked_beans={name="baked beans",size=180,part="food",verbs={roll="global",},every=10800,num=2998,},boston_cream_pie={name="Boston cream pie",size=220,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=2999,},fried_clams={name="fried clams",size=180,part="food",verbs={roll="global",},every=10800,num=3000,},deep_dish_pizza={name="deep-dish pizza",size=300,part="food",verbs={roll="global",},every=10800,num=3001,},italian_beef={name="Italian beef",size=200,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3002,},tavern_style_pizza={name="tavern-style pizza",size=300,part="food",verbs={roll="global",},every=10800,num=3003,},caramel_corn={name="caramel corn",size=120,part="food",verbs={roll="global",},every=10800,num=3004,},detroit_style_pizza={name="Detroit-style pizza",size=300,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3005,},coney_dog={name="coney dog",size=200,part="food",verbs={roll="global",},every=10800,num=3006,},paczki={name="paczki",size=80,part="food",verbs={roll="global",},every=10800,num=3007,},cherry_pie={name="cherry pie",size=220,part="food",verbs={roll="global",},every=10800,num=3008,},cheese_curds={name="cheese curds",size=120,part="food",verbs={roll="global",},every=10800,num=3009,},hotdish={name="hotdish",size=180,part="food",verbs={roll="global",},every=10800,num=3010,},juicy_lucy={name="Juicy Lucy",size=200,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3011,},butter_burger={name="butter burger",size=200,part="food",verbs={roll="global",},every=10800,num=3012,},walleye={name="walleye",size=180,part="food",verbs={roll="global",},every=10800,num=3013,},toasted_ravioli={name="toasted ravioli",size=80,part="food",verbs={roll="global",},every=10800,num=3014,},gooey_butter_cake={name="gooey butter cake",size=220,part="food",verbs={roll="global",},every=10800,num=3015,},st_louis_style_pizza={name="St. Louis-style pizza",size=300,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3016,},burnt_ends={name="burnt ends",size=180,part="food",verbs={roll="global",},every=10800,num=3017,},kolache={name="kolache",size=80,part="food",verbs={roll="global",},every=10800,num=3018,},queso={name="queso",size=180,part="food",verbs={roll="global",},every=10800,num=3019,},breakfast_taco={name="breakfast taco",size=200,part="food",verbs={roll="global",},every=10800,num=3020,},chicken_fried_steak={name="chicken-fried steak",size=180,part="food",verbs={roll="global",},every=10800,num=3021,},enchiladas={name="enchiladas",size=180,part="food",verbs={roll="global",},every=10800,num=3022,},dry_rub_ribs={name="dry-rub ribs",size=180,part="food",verbs={roll="global",},every=10800,num=3023,},vinegar_pulled_pork={name="vinegar pulled pork",size=180,part="food",verbs={roll="global",},every=10800,num=3024,},white_sauce_chicken={name="white sauce chicken",size=180,part="food",verbs={roll="global",},every=10800,num=3025,},gumbo={name="gumbo",size=180,part="food",verbs={roll="global",},every=10800,num=3026,},po_boy={name="po'boy",size=200,part="food",verbs={roll="global",},every=10800,num=3027,},beignet={name="beignet",size=80,part="food",verbs={roll="global",},every=10800,num=3028,},muffuletta={name="muffuletta",size=200,part="food",verbs={roll="global",},every=10800,num=3029,},crawfish_boil={name="crawfish boil",size=600,part="food",verbs={roll="global",},every=10800,num=3030,},jambalaya={name="jambalaya",size=180,part="food",verbs={roll="global",},every=10800,num=3031,},cuban_sandwich={name="Cuban sandwich",size=200,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3032,},key_lime_pie={name="key lime pie",size=220,part="food",verbs={roll="global",},every=10800,num=3033,},stone_crab={name="stone crab",size=180,part="food",verbs={roll="global",},every=10800,num=3034,},conch_fritter={name="conch fritter",size=80,part="food",verbs={roll="global",},every=10800,num=3035,},orange_juice={name="orange juice",size=150,part="food",verbs={roll="global",},every=10800,num=3036,},biscuits_and_gravy={name="biscuits and gravy",size=80,part="food",verbs={roll="global",},every=10800,num=3037,},grits={name="grits",size=180,part="food",verbs={roll="global",},every=10800,num=3038,},sweet_tea={name="sweet tea",size=150,part="food",verbs={roll="global",},every=10800,num=3039,},shrimp_and_grits={name="shrimp and grits",size=180,part="food",verbs={roll="global",},every=10800,num=3040,},hush_puppies={name="hush puppies",size=220,part="food",verbs={roll="global",},every=10800,num=3041,},pimento_cheese={name="pimento cheese",size=180,part="food",verbs={roll="global",},every=10800,num=3042,},collard_greens={name="collard greens",size=180,part="food",verbs={roll="global",},every=10800,num=3043,},peach_cobbler={name="peach cobbler",size=220,part="food",verbs={roll="global",},every=10800,num=3044,},cincinnati_chili_three_way={name="Cincinnati chili three-way",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3045,},pierogi={name="pierogi",size=220,part="food",verbs={roll="global",},every=10800,num=3046,},fries_in_the_sandwich={name="fries-in-the-sandwich",size=200,part="food",verbs={roll="global",},every=10800,num=3047,},buffalo_wings={name="buffalo wings",size=180,part="food",verbs={roll="global",},every=10800,num=3048,},beef_on_weck={name="beef on weck",size=200,part="food",verbs={roll="global",},every=10800,num=3049,},crab_cakes={name="crab cakes",size=220,part="food",verbs={roll="global",},every=10800,num=3050,},steamed_crabs={name="steamed crabs",size=180,part="food",verbs={roll="global",},every=10800,num=3051,},tin_of_crab_seasoning={name="tin of crab seasoning",size=150,part="food",verbs={roll="global",},every=10800,num=3052,},smith_island_cake={name="Smith Island cake",size=220,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3053,},half_smoke={name="half-smoke",size=200,part="food",verbs={roll="global",},every=10800,num=3054,},fish_taco={name="fish taco",size=200,part="food",verbs={roll="global",},every=10800,num=3055,},mission_burrito={name="Mission burrito",size=200,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3056,},sourdough_bread={name="sourdough bread",size=250,part="food",verbs={roll="global",},every=10800,num=3057,},tri_tip={name="tri-tip",size=180,part="food",verbs={roll="global",},every=10800,num=3058,},artichoke={name="artichoke",size=100,part="food",verbs={roll="global",},every=10800,num=3059,},marionberry_pie={name="marionberry pie",size=220,part="food",verbs={roll="global",},every=10800,num=3060,},geoduck={name="geoduck",size=180,part="food",verbs={roll="global",},every=10800,num=3061,},green_chile_stew={name="green chile stew",size=180,part="food",verbs={roll="global",},every=10800,num=3062,},sopaipilla={name="sopaipilla",size=180,part="food",verbs={roll="global",},every=10800,num=3063,},navajo_taco={name="Navajo taco",size=200,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3064,},chimichanga={name="chimichanga",size=200,part="food",verbs={roll="global",},every=10800,num=3065,},fry_sauce={name="fry sauce",size=180,part="food",verbs={roll="global",},every=10800,num=3066,},funeral_potatoes={name="funeral potatoes",size=180,part="food",verbs={roll="global",},every=10800,num=3067,},denver_omelet={name="Denver omelet",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3068,},elk_burger={name="elk burger",size=200,part="food",verbs={roll="global",},every=10800,num=3069,},buffet_plate={name="buffet plate",size=280,part="food",verbs={roll="global",},every=10800,num=3070,},prime_rib_special={name="prime rib special",size=180,part="food",verbs={roll="global",},every=10800,num=3071,},poutine={name="poutine",size=180,part="food",verbs={roll="global",},every=10800,num=3072,},butter_tart={name="butter tart",size=80,part="food",verbs={roll="global",},every=10800,num=3073,},nanaimo_bar={name="Nanaimo bar",size=80,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3074,},maple_taffy={name="maple taffy",size=120,part="food",verbs={roll="global",},every=10800,num=3075,},montreal_bagel={name="Montreal bagel",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3076,},smoked_meat_sandwich={name="smoked meat sandwich",size=200,part="food",verbs={roll="global",},every=10800,num=3077,},tourtiere={name="tourtière",size=180,part="food",verbs={roll="global",},every=10800,num=3078,},peameal_bacon_sandwich={name="peameal bacon sandwich",size=200,part="food",verbs={roll="global",},every=10800,num=3079,},ketchup_chips={name="ketchup chips",size=120,part="food",verbs={roll="global",},every=10800,num=3080,},kielbasa={name="kielbasa",size=180,part="food",verbs={roll="global",},every=10800,num=3081,},golabki={name="golabki",size=180,part="food",verbs={roll="global",},every=10800,num=3082,},kolacky={name="kolacky",size=80,part="food",verbs={roll="global",},every=10800,num=3083,},italian_ice={name="Italian ice",size=150,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3084,},arancini={name="arancini",size=80,part="food",verbs={roll="global",},every=10800,num=3085,},pizzelle={name="pizzelle",size=80,part="food",verbs={roll="global",},every=10800,num=3086,},meatball_sub={name="meatball sub",size=200,part="food",verbs={roll="global",},every=10800,num=3087,},corned_beef_and_cabbage={name="corned beef and cabbage",size=180,part="food",verbs={roll="global",},every=10800,num=3088,},irish_stew={name="Irish stew",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3089,},strudel={name="strudel",size=180,part="food",verbs={roll="global",},every=10800,num=3090,},kolsch_beer={name="kolsch beer",size=150,part="food",verbs={roll="global",},every=10800,num=3091,},lefse={name="lefse",size=180,part="food",verbs={roll="global",},every=10800,num=3092,},lutefisk={name="lutefisk",size=180,part="food",verbs={roll="global",},every=10800,num=3093,},krumkake={name="krumkake",size=80,part="food",verbs={roll="global",},every=10800,num=3094,},swedish_meatballs={name="Swedish meatballs",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3095,},shoofly_pie={name="shoofly pie",size=220,part="food",verbs={roll="global",},every=10800,num=3096,},whoopie_pie={name="whoopie pie",size=220,part="food",verbs={roll="global",},every=10800,num=3097,},chow_chow={name="chow-chow",size=180,part="food",verbs={roll="global",},every=10800,num=3098,},apple_butter={name="apple butter",size=180,part="food",verbs={roll="global",},every=10800,num=3099,},cafecito={name="cafecito",size=150,part="food",verbs={roll="global",},every=10800,num=3100,},pastelito={name="pastelito",size=80,part="food",verbs={roll="global",},every=10800,num=3101,},media_noche={name="media noche",size=200,part="food",verbs={roll="global",},every=10800,num=3102,},tamales={name="tamales",size=120,part="food",verbs={roll="global",},every=10800,num=3103,},tacos_al_pastor={name="tacos al pastor",size=200,part="food",verbs={roll="global",},every=10800,num=3104,},pozole={name="pozole",size=180,part="food",verbs={roll="global",},every=10800,num=3105,},menudo={name="menudo",size=180,part="food",verbs={roll="global",},every=10800,num=3106,},concha={name="concha",size=80,part="food",verbs={roll="global",},every=10800,num=3107,},pho={name="pho",size=180,part="food",verbs={roll="global",},every=10800,num=3108,},bun_cha={name="bun cha",size=180,part="food",verbs={roll="global",},every=10800,num=3109,},che={name="che",size=150,part="food",verbs={roll="global",},every=10800,num=3110,},dim_sum={name="dim sum",size=180,part="food",verbs={roll="global",},every=10800,num=3111,},egg_tart={name="egg tart",size=80,part="food",verbs={roll="global",},every=10800,num=3112,},roast_duck={name="roast duck",size=180,part="food",verbs={roll="global",},every=10800,num=3113,},kimchi_stew={name="kimchi stew",size=180,part="food",verbs={roll="global",},every=10800,num=3114,},korean_fried_chicken={name="Korean fried chicken",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3115,},adobo={name="adobo",size=180,part="food",verbs={roll="global",},every=10800,num=3116,},lumpia={name="lumpia",size=80,part="food",verbs={roll="global",},every=10800,num=3117,},halo_halo={name="halo-halo",size=180,part="food",verbs={roll="global",},every=10800,num=3118,},pancit={name="pancit",size=180,part="food",verbs={roll="global",},every=10800,num=3119,},bagel_and_lox={name="bagel and lox",size=180,part="food",verbs={roll="global",},every=10800,num=3120,},knish={name="knish",size=80,part="food",verbs={roll="global",},every=10800,num=3121,},matzo_ball_soup={name="matzo ball soup",size=180,part="food",verbs={roll="global",},every=10800,num=3122,},loukoumades={name="loukoumades",size=80,part="food",verbs={roll="global",},every=10800,num=3123,},saganaki={name="saganaki",size=180,part="food",verbs={roll="global",},every=10800,num=3124,},jerk_chicken={name="jerk chicken",size=180,part="food",verbs={roll="global",},every=10800,num=3125,},beef_patty={name="beef patty",size=80,part="food",verbs={roll="global",},every=10800,num=3126,},roti={name="roti",size=180,part="food",verbs={roll="global",},every=10800,num=3127,},oxtail={name="oxtail",size=180,part="food",verbs={roll="global",},every=10800,num=3128,},fattoush={name="fattoush",size=180,part="food",verbs={roll="global",},every=10800,num=3129,},kibbeh={name="kibbeh",size=180,part="food",verbs={roll="global",},every=10800,num=3130,},sambusa={name="sambusa",size=80,part="food",verbs={roll="global",},every=10800,num=3131,},suqaar={name="suqaar",size=180,part="food",verbs={roll="global",},every=10800,num=3132,},bariis={name="bariis",size=180,part="food",verbs={roll="global",},every=10800,num=3133,},hmong_sausage={name="Hmong sausage",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3134,},papaya_salad={name="papaya salad",size=180,part="food",verbs={roll="global",},every=10800,num=3135,},sticky_rice={name="sticky rice",size=120,part="food",verbs={roll="global",},every=10800,num=3136,},borscht={name="borscht",size=180,part="food",verbs={roll="global",},every=10800,num=3137,},holubtsi={name="holubtsi",size=180,part="food",verbs={roll="global",},every=10800,num=3138,},malasadas={name="malasadas",size=80,part="food",verbs={roll="global",},every=10800,num=3139,},linguica={name="linguica",size=180,part="food",verbs={roll="global",},every=10800,num=3140,},sweet_bread={name="sweet bread",size=250,part="food",verbs={roll="global",},every=10800,num=3141,},chorizo_and_eggs={name="chorizo and eggs",size=180,part="food",verbs={roll="global",},every=10800,num=3142,},basque_lamb_stew={name="Basque lamb stew",size=180,part="food",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3143,},etouffee={name="etouffee",size=180,part="food",verbs={roll="global",},every=10800,num=3144,},boudin={name="boudin",size=180,part="food",verbs={roll="global",},every=10800,num=3145,},andouille={name="andouille",size=180,part="food",verbs={roll="global",},every=10800,num=3146,},dirty_rice={name="dirty rice",size=180,part="food",verbs={roll="global",},every=10800,num=3147,},injera={name="injera",size=180,part="food",verbs={roll="global",},every=10800,num=3148,},doro_wat={name="doro wat",size=180,part="food",verbs={roll="global",},every=10800,num=3149,},alabama_license_plate={name="Alabama license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3150,},alabama_flag={name="Alabama flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3151,},alaska_license_plate={name="Alaska license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3152,},alaska_flag={name="Alaska flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3153,},arizona_license_plate={name="Arizona license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3154,},arizona_flag={name="Arizona flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3155,},arkansas_license_plate={name="Arkansas license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3156,},arkansas_flag={name="Arkansas flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3157,},california_license_plate={name="California license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3158,},california_flag={name="California flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3159,},colorado_license_plate={name="Colorado license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3160,},colorado_flag={name="Colorado flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3161,},connecticut_license_plate={name="Connecticut license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3162,},connecticut_flag={name="Connecticut flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3163,},delaware_license_plate={name="Delaware license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3164,},delaware_flag={name="Delaware flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3165,},d_c_license_plate={name="D.C. license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3166,},d_c_flag={name="D.C. flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3167,},florida_license_plate={name="Florida license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3168,},florida_flag={name="Florida flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3169,},georgia_license_plate={name="Georgia license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3170,},georgia_flag={name="Georgia flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3171,},hawaii_license_plate={name="Hawaii license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3172,},hawaii_flag={name="Hawaii flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3173,},idaho_license_plate={name="Idaho license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3174,},idaho_flag={name="Idaho flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3175,},illinois_license_plate={name="Illinois license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3176,},illinois_flag={name="Illinois flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3177,},indiana_license_plate={name="Indiana license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3178,},indiana_flag={name="Indiana flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3179,},iowa_license_plate={name="Iowa license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3180,},iowa_flag={name="Iowa flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3181,},kansas_license_plate={name="Kansas license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3182,},kansas_flag={name="Kansas flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3183,},kentucky_license_plate={name="Kentucky license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3184,},kentucky_flag={name="Kentucky flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3185,},louisiana_license_plate={name="Louisiana license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3186,},louisiana_flag={name="Louisiana flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3187,},maine_license_plate={name="Maine license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3188,},maine_flag={name="Maine flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3189,},maryland_license_plate={name="Maryland license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3190,},maryland_flag={name="Maryland flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3191,},massachusetts_license_plate={name="Massachusetts license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3192,},massachusetts_flag={name="Massachusetts flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3193,},michigan_license_plate={name="Michigan license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3194,},michigan_flag={name="Michigan flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3195,},minnesota_license_plate={name="Minnesota license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3196,},minnesota_flag={name="Minnesota flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3197,},mississippi_license_plate={name="Mississippi license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3198,},mississippi_flag={name="Mississippi flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3199,},missouri_license_plate={name="Missouri license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3200,},missouri_flag={name="Missouri flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3201,},montana_license_plate={name="Montana license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3202,},montana_flag={name="Montana flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3203,},nebraska_license_plate={name="Nebraska license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3204,},nebraska_flag={name="Nebraska flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3205,},nevada_license_plate={name="Nevada license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3206,},nevada_flag={name="Nevada flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3207,},new_hampshire_license_plate={name="New Hampshire license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3208,},new_hampshire_flag={name="New Hampshire flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3209,},new_jersey_license_plate={name="New Jersey license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3210,},new_jersey_flag={name="New Jersey flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3211,},new_mexico_license_plate={name="New Mexico license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3212,},new_mexico_flag={name="New Mexico flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3213,},new_york_license_plate={name="New York license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3214,},new_york_flag={name="New York flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3215,},north_carolina_license_plate={name="North Carolina license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3216,},north_carolina_flag={name="North Carolina flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3217,},north_dakota_license_plate={name="North Dakota license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3218,},north_dakota_flag={name="North Dakota flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3219,},ohio_license_plate={name="Ohio license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3220,},ohio_flag={name="Ohio flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3221,},oklahoma_license_plate={name="Oklahoma license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3222,},oklahoma_flag={name="Oklahoma flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3223,},oregon_license_plate={name="Oregon license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3224,},oregon_flag={name="Oregon flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3225,},pennsylvania_license_plate={name="Pennsylvania license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3226,},pennsylvania_flag={name="Pennsylvania flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3227,},rhode_island_license_plate={name="Rhode Island license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3228,},rhode_island_flag={name="Rhode Island flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3229,},south_carolina_license_plate={name="South Carolina license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3230,},south_carolina_flag={name="South Carolina flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3231,},south_dakota_license_plate={name="South Dakota license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3232,},south_dakota_flag={name="South Dakota flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3233,},tennessee_license_plate={name="Tennessee license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3234,},tennessee_flag={name="Tennessee flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3235,},texas_license_plate={name="Texas license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3236,},texas_flag={name="Texas flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3237,},utah_license_plate={name="Utah license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3238,},utah_flag={name="Utah flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3239,},vermont_license_plate={name="Vermont license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3240,},vermont_flag={name="Vermont flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3241,},virginia_license_plate={name="Virginia license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3242,},virginia_flag={name="Virginia flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3243,},washington_license_plate={name="Washington license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3244,},washington_flag={name="Washington flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3245,},west_virginia_license_plate={name="West Virginia license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3246,},west_virginia_flag={name="West Virginia flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3247,},wisconsin_license_plate={name="Wisconsin license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3248,},wisconsin_flag={name="Wisconsin flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3249,},wyoming_license_plate={name="Wyoming license plate",size=300,part="hardware",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3250,},wyoming_flag={name="Wyoming flag",size=1500,part="fixtures",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3251,},american_goldfinch={name="American goldfinch",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3252,},american_robin={name="American robin",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3253,},baltimore_oriole={name="Baltimore oriole",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3254,},california_gull={name="California gull",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3255,},california_quail={name="California quail",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3256,},carolina_wren={name="Carolina wren",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3257,},delaware_blue_hen_chicken={name="delaware blue hen chicken",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3258,},rhode_island_red_chicken={name="Rhode Island Red chicken",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3259,},black_capped_chickadee={name="black-capped chickadee",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3260,},brown_pelican={name="brown pelican",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3261,},brown_thrasher={name="brown thrasher",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3262,},cactus_wren={name="cactus wren",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3263,},common_loon={name="common loon",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3264,},eastern_bluebird={name="eastern bluebird",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3265,},greater_roadrunner={name="greater roadrunner",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3266,},hermit_thrush={name="hermit thrush",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3267,},lark_bunting={name="lark bunting",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3268,},mountain_bluebird={name="mountain bluebird",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3269,},nene={name="nene",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3270,},northern_cardinal={name="northern cardinal",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3271,},northern_mockingbird={name="northern mockingbird",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3272,},purple_finch={name="purple finch",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3273,},ring_necked_pheasant={name="ring-necked pheasant",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3274,},ruffed_grouse={name="ruffed grouse",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3275,},scissor_tailed_flycatcher={name="scissor-tailed flycatcher",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3276,},western_meadowlark={name="western meadowlark",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3277,},willow_goldfinch={name="willow goldfinch",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3278,},willow_ptarmigan={name="willow ptarmigan",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3279,},yellowhammer={name="yellowhammer",size=250,part="animals",verbs={roll="global",},retired=true,event_only=true,every=10800,num=3280,},w_aviator_cap={name="aviator cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4282,},w_balaclava={name="balaclava",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4283,},w_bandana={name="bandana",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4284,},w_baseball_cap={name="baseball cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4285,},w_beanie={name="beanie",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4286,},w_beret={name="beret",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4287,},w_bike_helmet={name="bike helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4288,},w_bowler_hat={name="bowler hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4289,},w_bucket_hat={name="bucket hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4290,},w_cat_ear_headband={name="cat-ear headband",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4291,},w_chef_hat={name="chef hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4292,},w_cowboy_hat={name="cowboy hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4293,},w_crown={name="crown",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4294,},w_earmuffs={name="earmuffs",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4295,},w_fedora={name="fedora",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4296,},w_flat_cap={name="flat cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4297,},w_flower_crown={name="flower crown",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4298,},w_football_helmet={name="football helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4299,},w_goggles={name="goggles",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4300,},w_hard_hat={name="hard hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4301,},w_headband={name="headband",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4302,},w_headphones={name="headphones",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4303,},w_infinity_scarf={name="infinity scarf",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",retired=true,event_only=true,every=7200,num=4304,},w_jester_hat={name="jester hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4305,},w_laurel_wreath={name="laurel wreath",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4306,},w_mortarboard={name="graduation cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4307,},w_newsboy_cap={name="newsboy cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4308,},w_nurse_cap={name="nurse cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4309,},w_panama_hat={name="panama hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4310,},w_party_hat={name="party hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4311,},w_pirate_hat={name="pirate hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4312,},w_pith_helmet={name="pith helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4313,},w_sailor_hat={name="sailor hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4314,},w_scarf={name="scarf",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4315,},w_scrunchie={name="scrunchie",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4316,},w_shower_cap={name="shower cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4317,},w_sombrero={name="sombrero",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4318,},w_straw_hat={name="straw hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4319,},w_sun_visor={name="sun visor",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4320,},w_swim_cap={name="swim cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4321,},w_tiara={name="tiara",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4322,},w_top_hat={name="top hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4323,},w_tricorn={name="tricorn",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4324,},w_trucker_cap={name="trucker cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4325,},w_ushanka={name="ushanka",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4326,},w_winter_scarf={name="winter scarf",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",retired=true,event_only=true,every=7200,num=4327,},w_witch_hat={name="witch hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4328,},w_wizard_hat={name="wizard hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4329,},w_t_shirt={name="t-shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4330,},w_hoodie={name="hoodie",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4331,},w_sweatshirt={name="sweatshirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4332,},w_sweater={name="sweater",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4333,},w_cardigan={name="cardigan",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4334,},w_turtleneck={name="turtleneck",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4335,},w_flannel_shirt={name="flannel shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4336,},w_dress_shirt={name="dress shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4337,},w_blouse={name="blouse",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4338,},w_tank_top={name="tank top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4339,},w_polo_shirt={name="polo shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4340,},w_henley={name="henley",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4341,},w_jersey={name="jersey",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4342,},w_hawaiian_shirt={name="hawaiian shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4343,},w_bowling_shirt={name="bowling shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4344,},w_tunic={name="tunic",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4345,},w_vest={name="vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4346,},w_puffer_vest={name="puffer vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4347,},w_denim_jacket={name="denim jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4348,},w_leather_jacket={name="leather jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4349,},w_bomber_jacket={name="bomber jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4350,},w_windbreaker={name="windbreaker",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4351,},w_raincoat={name="raincoat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4352,},w_trench_coat={name="trench coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4353,},w_peacoat={name="peacoat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4354,},w_parka={name="parka",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4355,},w_varsity_jacket={name="varsity jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4356,},w_track_jacket={name="track jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4357,},w_blazer={name="blazer",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4358,},w_tuxedo_jacket={name="tuxedo jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4359,},w_lab_coat={name="lab coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4360,},w_poncho={name="poncho",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4361,},w_cape={name="cape",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4362,},w_cloak={name="cloak",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4363,},w_apron={name="apron",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4364,},w_dashiki={name="dashiki",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4365,},w_robe={name="robe",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4366,},w_bathrobe={name="bathrobe",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4367,},w_pajama_top={name="pajama top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4368,},w_graduation_gown={name="graduation gown",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4369,},w_cycling_jersey={name="cycling jersey",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4370,},w_hi_vis_vest={name="hi-vis vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4371,},w_life_vest={name="life vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4372,},w_scrubs_top={name="scrubs top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4373,},w_kimono_jacket={name="kimono jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4374,},w_overalls={name="overalls",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4375,},w_lumberjack_coat={name="lumberjack coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4376,},w_ugly_sweater={name="ugly sweater",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4377,},w_fisherman_sweater={name="fisherman sweater",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4378,},w_jeans={name="jeans",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4379,},w_chinos={name="chinos",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4380,},w_khakis={name="khakis",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4381,},w_shorts={name="shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4382,},w_cargo_pants={name="cargo pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4383,},w_cargo_shorts={name="cargo shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4384,},w_sweatpants={name="sweatpants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4385,},w_joggers={name="joggers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4386,},w_leggings={name="leggings",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4387,},w_corduroys={name="corduroys",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4388,},w_skirt={name="skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4389,},w_mini_skirt={name="mini skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4390,},w_kilt={name="kilt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4391,},w_tutu={name="tutu",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4392,},w_trousers={name="trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4393,},w_slacks={name="slacks",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4394,},w_board_shorts={name="board shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4395,},w_swim_trunks={name="swim trunks",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4396,},w_bike_shorts={name="bike shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4397,},w_culottes={name="culottes",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4398,},w_capri_pants={name="capri pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4399,},w_snow_pants={name="snow pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4400,},w_rain_pants={name="rain pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4401,},w_jumpsuit={name="jumpsuit",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4402,},w_bell_bottoms={name="bell-bottoms",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4403,},w_harem_pants={name="harem pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4404,},w_lederhosen={name="lederhosen",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4405,},w_pajama_pants={name="pajama pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4406,},w_scrub_pants={name="scrub pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4407,},w_hiking_pants={name="hiking pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4408,},w_ski_pants={name="ski pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4409,},w_sarong={name="sarong",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4410,},w_wrap_skirt={name="wrap skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4411,},w_plaid_trousers={name="plaid trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4412,},w_tennis_skirt={name="tennis skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4413,},w_overall_shorts={name="overall shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4414,},w_sneakers={name="sneakers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4415,},w_high_tops={name="high-tops",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4416,},w_running_shoes={name="running shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4417,},w_boots={name="boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4418,},w_rain_boots={name="rain boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4419,},w_cowboy_boots={name="cowboy boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4420,},w_hiking_boots={name="hiking boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4421,},w_work_boots={name="work boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4422,},w_steel_toe_boots={name="steel-toe boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",retired=true,event_only=true,every=7200,num=4423,},w_combat_boots={name="combat boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4424,},w_snow_boots={name="snow boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4425,},w_loafers={name="loafers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4426,},w_oxfords={name="oxfords",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4427,},w_dress_shoes={name="dress shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4428,},w_sandals={name="sandals",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4429,},w_flip_flops={name="flip-flops",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4430,},w_slides={name="slides",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4431,},w_clogs={name="clogs",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4432,},w_slippers={name="slippers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4433,},w_high_heels={name="high heels",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4434,},w_ballet_flats={name="ballet flats",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4435,},w_mary_janes={name="mary janes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4436,},w_platform_shoes={name="platform shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4437,},w_wedges={name="wedges",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4438,},w_espadrilles={name="espadrilles",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4439,},w_moccasins={name="moccasins",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4440,},w_cleats={name="cleats",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4441,},w_roller_skates={name="roller skates",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4442,},w_ice_skates={name="ice skates",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4443,},w_ski_boots={name="ski boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4444,},w_tap_shoes={name="tap shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4445,},w_bowling_shoes={name="bowling shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4446,},w_golf_shoes={name="golf shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4447,},w_deck_shoes={name="deck shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4448,},w_jelly_shoes={name="jelly shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4449,},w_flippers={name="flippers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4450,},w_wool_socks={name="wool socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4451,},w_knee_socks={name="knee socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4452,},w_argyle_socks={name="argyle socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4453,},w_ankle_socks={name="ankle socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4454,},w_tube_socks={name="tube socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4455,},w_house_shoes={name="house shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4456,},w_waders={name="waders",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4457,},w_galoshes={name="galoshes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",retired=true,event_only=true,every=7200,num=4458,},w_antler_headband={name="antler headband",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4459,},w_moss_green_hooded_cloak={name="moss-green hooded cloak",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4460,},w_flannel_lumberjack_shirt={name="flannel lumberjack shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4461,},w_hiking_boots_with_leaves_in_the_laces={name="hiking boots with leaves in the laces",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",retired=true,event_only=true,every=7200,num=4462,},w_bark_patterned_camo_jacket={name="bark-patterned camo jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4463,},w_fox_fur_trim_hat={name="fox-fur trim hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4464,},w_black_lace_veil={name="black lace veil",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4465,},w_mourning_coat={name="mourning coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4466,},w_widow_s_weeds_skirt={name="widow's weeds skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",retired=true,event_only=true,every=7200,num=4467,},w_grave_digger_boots={name="grave-digger boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",every=7200,num=4468,},w_pale_funeral_gloves_hat={name="mourning hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4469,},w_hi_vis_jacket_with_a_name_tag={name="hi-vis jacket with a name tag",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4470,},w_steel_toe_boots_one_lace_missing={name="steel-toe boots (one lace missing)",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",retired=true,event_only=true,every=7200,num=4471,},w_duct_taped_hoodie={name="duct-taped hoodie",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4472,},w_under_construction_hard_hat={name="\"Under Construction\" hard hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",retired=true,event_only=true,every=7200,num=4473,},w_traffic_cone_costume={name="traffic-cone costume",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4474,},w_street_musician_s_coat={name="street musician's coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4475,},w_busker_s_beret={name="busker's beret",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",retired=true,event_only=true,every=7200,num=4476,},w_mime_s_striped_shirt={name="mime's striped shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4477,},w_tourist_fanny_pack_vest={name="tourist fanny-pack vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4478,},w_statue_performer_silver_suit={name="statue-performer silver suit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4479,},w_sailor_s_peacoat={name="sailor's peacoat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4480,},w_yellow_slicker={name="yellow slicker",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4481,},w_captain_s_hat={name="captain's hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4482,},w_fisherman_s_waders={name="fisherman's waders",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4483,},w_mermaid_scale_skirt={name="mermaid-scale skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4484,},w_courier_jacket={name="courier jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4485,},w_taxi_yellow_raincoat={name="taxi-yellow raincoat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4486,},w_crossing_guard_vest={name="crossing guard vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4487,},w_subway_map_scarf_shirt={name="subway-map scarf shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4488,},w_messenger_bag_vest={name="messenger-bag vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4489,},w_trekker_s_windbreaker={name="trekker's windbreaker",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4490,},w_trail_runner_shorts={name="trail-runner shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4491,},w_wide_brim_hiker_hat={name="wide-brim hiker hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4492,},w_leather_hiking_boots={name="leather hiking boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",retired=true,event_only=true,every=7200,num=4493,},w_bright_blaze_orange_vest={name="bright blaze-orange vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4494,},w_frisbee_team_jersey={name="frisbee-team jersey",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4495,},w_picnic_checkered_skirt={name="picnic-checkered skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4496,},w_kite_flyer_hoodie={name="kite-flyer hoodie",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4497,},w_jogger_s_headband={name="jogger's headband",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4498,},w_dog_walker_s_vest={name="dog-walker's vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4499,},w_farmer_s_overalls={name="farmer's overalls",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4500,},w_straw_sunhat={name="straw sunhat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4501,},w_plaid_barn_jacket={name="plaid barn jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4502,},w_rubber_chore_boots={name="rubber chore boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",every=7200,num=4503,},w_harvest_festival_apron={name="harvest-festival apron",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4504,},w_welder_s_mask_hat={name="welder's mask hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4505,},w_coveralls={name="coveralls",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4506,},w_steel_toe_work_boots={name="steel-toe work boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",retired=true,event_only=true,every=7200,num=4507,},w_foreman_s_hard_hat={name="foreman's hard hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",retired=true,event_only=true,every=7200,num=4508,},w_reflective_jumpsuit={name="reflective jumpsuit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4509,},w_barista_apron={name="barista apron",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4510,},w_shop_clerk_polo={name="shop-clerk polo",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4511,},w_chef_s_whites={name="chef's whites",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4512,},w_sale_day_sandwich_board_vest={name="sale-day sandwich-board vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4513,},w_mannequin_s_best_suit={name="mannequin's best suit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4514,},w_mail_carrier_s_jacket={name="mail carrier's jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4515,},w_judge_s_robe={name="judge's robe",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4516,},w_librarian_s_cardigan={name="librarian's cardigan",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4517,},w_crossing_guard_sash={name="crossing-guard sash",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4518,},w_mayor_s_sash={name="mayor's sash",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4519,},w_grandma_s_cardigan={name="grandma's cardigan",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4520,},w_birthday_party_hat={name="birthday-party hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4521,},w_pajama_set={name="pajama set",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4522,},w_holiday_ugly_sweater={name="holiday ugly sweater",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",retired=true,event_only=true,every=7200,num=4523,},w_garden_gnome_hat={name="garden-gnome hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",retired=true,event_only=true,every=7200,num=4524,},w_tights={name="tights",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4627,},w_fishnet_tights={name="fishnet tights",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4628,},w_long_johns={name="long johns",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4629,},w_track_pants={name="track pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4630,},w_yoga_pants={name="yoga pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4631,},w_pleated_skirt={name="pleated skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4632,},w_maxi_skirt={name="maxi skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4633,},w_midi_skirt={name="midi skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4634,},w_pencil_skirt={name="pencil skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4635,},w_denim_skirt={name="denim skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4636,},w_ripped_jeans={name="ripped jeans",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4637,},w_skinny_jeans={name="skinny jeans",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4638,},w_flared_jeans={name="flared jeans",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4639,},w_gym_shorts={name="gym shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4640,},w_running_shorts={name="running shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4641,},w_basketball_shorts={name="basketball shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4642,},w_bermuda_shorts={name="bermuda shorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4643,},w_thermal_leggings={name="thermal leggings",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4644,},w_lounge_pants={name="lounge pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4645,},w_pinstripe_trousers={name="pinstripe trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4646,},w_jorts={name="jorts",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4647,},w_cargo_skirt={name="cargo skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4648,},w_ski_bibs={name="ski bibs",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4649,},w_wide_leg_trousers={name="wide-leg trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4650,},w_parachute_pants={name="parachute pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4651,},w_palazzo_pants={name="palazzo pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4652,},w_chaps={name="chaps",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4653,},w_hakama={name="hakama",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4654,},w_dhoti={name="dhoti",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4655,},w_riding_breeches={name="riding breeches",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4656,},w_knickerbockers={name="knickerbockers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4657,},w_plus_fours={name="plus fours",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4658,},w_tuxedo_trousers={name="tuxedo trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4659,},w_hot_pants={name="hot pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4660,},present={name="present",size=300,part="household",verbs={open="global",},every=14400,num=4281,},w_astronaut_helmet={name="astronaut helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4661,},w_holo_visor={name="holo-visor",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4662,},w_antenna_headband={name="antenna headband",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4663,},w_cyber_goggles={name="cyber goggles",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4664,},w_hi_tech_parka={name="hi-tech parka",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4665,},w_astronaut_suit_top={name="astronaut suit top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4666,},w_mecha_suit_top={name="mecha suit top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="epic",every=7200,num=4667,},w_jetpack_harness={name="jetpack harness",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="epic",every=7200,num=4668,},w_chrome_bodysuit_top={name="chrome bodysuit top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4669,},w_light_up_jacket={name="light-up jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4670,},w_astronaut_suit_bottoms={name="astronaut suit bottoms",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4671,},w_mecha_suit_legs={name="mecha suit legs",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="epic",every=7200,num=4672,},w_chrome_leggings={name="chrome leggings",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4673,},w_flight_suit_trousers={name="flight-suit trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4674,},w_moon_boots={name="moon boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4675,},w_mag_boots={name="mag boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",every=7200,num=4676,},w_light_up_sneakers={name="light-up sneakers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4677,},w_hover_shoes={name="hover shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="epic",every=7200,num=4678,},w_ten_gallon_hat={name="ten-gallon hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4679,},w_duster={name="duster",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4680,},w_leather_vest={name="leather vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4681,},w_fringe_jacket={name="fringe jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4682,},w_pearl_snap_shirt={name="pearl-snap shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4683,},w_serape={name="serape",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4684,},w_sheriff_s_vest={name="sheriff's vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4685,},w_rodeo_jeans={name="rodeo jeans",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4686,},w_fringed_chaps={name="fringed chaps",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4687,},w_spurred_boots={name="spurred boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",every=7200,num=4688,},w_snakeskin_boots={name="snakeskin boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4689,},w_centurion_helmet={name="centurion helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4690,},w_toga={name="toga",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4691,},w_chiton={name="chiton",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4692,},w_loincloth={name="loincloth",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4693,},w_gladiator_sandals={name="gladiator sandals",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4694,},w_knight_s_helm={name="knight's helm",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4695,},w_hennin={name="hennin",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4696,},w_chainmail_coif={name="chainmail coif",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4697,},w_chainmail_shirt={name="chainmail shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4698,},w_tabard={name="tabard",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4699,},w_doublet={name="doublet",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4700,},w_hose={name="hose",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",retired=true,event_only=true,every=7200,num=4701,},w_plate_greaves={name="plate greaves",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4702,},w_pointed_shoes={name="pointed shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4703,},w_iron_sabatons={name="iron sabatons",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",every=7200,num=4704,},w_deerstalker={name="deerstalker",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4705,},w_bonnet={name="bonnet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4706,},w_frock_coat={name="frock coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4707,},w_waistcoat={name="waistcoat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4708,},w_bustle_skirt={name="bustle skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4709,},w_breeches={name="breeches",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4710,},w_spats={name="spats",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4711,},w_button_boots={name="button boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4712,},w_cloche_hat={name="cloche hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4713,},w_boater_hat={name="boater hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4714,},w_pillbox_hat={name="pillbox hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4715,},w_zoot_suit_jacket={name="zoot suit jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4716,},w_flapper_dress={name="flapper dress",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4717,},w_disco_shirt={name="disco shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4718,},w_shoulder_pad_blazer={name="shoulder-pad blazer",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4719,},w_tracksuit_top={name="tracksuit top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4720,},w_zoot_suit_trousers={name="zoot suit trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4721,},w_poodle_skirt={name="poodle skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4722,},w_leg_warmers={name="leg warmers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4723,},w_tracksuit_bottoms={name="tracksuit bottoms",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4724,},w_pedal_pushers={name="pedal pushers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4725,},w_spectator_shoes={name="spectator shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4726,},w_saddle_shoes={name="saddle shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4727,},w_go_go_boots={name="go-go boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4728,},w_business_suit={name="business suit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4729,},w_shirt_and_tie={name="shirt and tie",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4730,},w_power_suit={name="power suit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4731,},w_suit_trousers={name="suit trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4732,},w_dress_pants={name="dress pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4733,},w_wingtips={name="wingtips",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4734,},w_patent_leather_shoes={name="patent leather shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4735,},w_sensible_flats={name="sensible flats",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4736,},w_circlet={name="circlet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4737,},w_horned_helmet={name="horned helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4738,},w_pointy_elf_ears={name="pointy elf ears",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4739,},w_wizard_robe={name="wizard robe",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4740,},w_elven_cloak={name="elven cloak",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4741,},w_dragon_scale_armor={name="dragon-scale armor",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="epic",every=7200,num=4742,},w_fairy_wings={name="fairy wings",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4743,},w_ranger_s_leggings={name="ranger's leggings",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4744,},w_seven_league_boots={name="seven-league boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="epic",every=7200,num=4745,},w_curly_toed_slippers={name="curly-toed slippers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4746,},w_ski_goggles={name="ski goggles",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4747,},w_racing_helmet={name="racing helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4748,},w_luchador_mask={name="luchador mask",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4749,},w_fencing_mask={name="fencing mask",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4750,},w_swim_goggles={name="swim goggles",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4751,},w_karate_gi={name="karate gi",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4752,},w_fencing_jacket={name="fencing jacket",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4753,},w_wrestling_singlet={name="wrestling singlet",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4754,},w_rugby_shirt={name="rugby shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4755,},w_referee_shirt={name="referee shirt",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4756,},w_boxing_robe={name="boxing robe",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4757,},w_gi_pants={name="gi pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4758,},w_football_pants={name="football pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4759,},w_goalie_pads={name="goalie pads",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4760,},w_golf_knickers={name="golf knickers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4761,},w_track_spikes={name="track spikes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4762,},w_climbing_shoes={name="climbing shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4763,},w_ballet_slippers={name="ballet slippers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4764,},w_skateboard_shoes={name="skateboard shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4765,},w_basketball_sneakers={name="basketball sneakers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4766,},w_firefighter_s_helmet={name="firefighter's helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4767,},w_miner_s_helmet={name="miner's helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4768,},w_beekeeper_s_veil={name="beekeeper's veil",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4769,},w_pilot_s_cap={name="pilot's cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4770,},w_conductor_s_cap={name="conductor's cap",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4771,},w_diver_s_helmet={name="diver's helmet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="epic",every=7200,num=4772,},w_paper_hat={name="paper hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4773,},w_firefighter_s_coat={name="firefighter's coat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4774,},w_wetsuit_top={name="wetsuit top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="uncommon",every=7200,num=4775,},w_waiter_s_vest={name="waiter's vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="common",every=7200,num=4776,},w_turnout_pants={name="turnout pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4777,},w_chef_s_checkered_pants={name="chef's checkered pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4778,},w_wetsuit_bottoms={name="wetsuit bottoms",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4779,},w_carpenter_pants={name="carpenter pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4780,},w_painter_s_overalls={name="painter's overalls",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4781,},w_nurse_s_clogs={name="nurse's clogs",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4782,},w_rubber_boots={name="rubber boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",retired=true,event_only=true,every=7200,num=4783,},w_fascinator={name="fascinator",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4784,},w_opera_hat={name="opera hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4785,},w_ball_gown={name="ball gown",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4786,},w_tailcoat={name="tailcoat",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4787,},w_ball_gown_skirt={name="ball gown skirt",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4788,},w_evening_trousers={name="evening trousers",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="uncommon",every=7200,num=4789,},w_stilettos={name="stilettos",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4790,},w_glass_slippers={name="glass slippers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="epic",every=7200,num=4791,},w_shark_hat={name="shark hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4792,},w_propeller_beanie={name="propeller beanie",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4793,},w_tinfoil_hat={name="tinfoil hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4794,},w_clown_wig={name="clown wig",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="uncommon",every=7200,num=4795,},w_dinosaur_hood={name="dinosaur hood",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4796,},w_pumpkin_head={name="pumpkin head",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="rare",every=7200,num=4797,},w_banana_suit={name="banana suit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4798,},w_hot_dog_costume={name="hot dog costume",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4799,},w_inflatable_sumo_suit={name="inflatable sumo suit",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="epic",every=7200,num=4800,},w_dinosaur_costume_top={name="dinosaur costume top",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="rare",every=7200,num=4801,},w_dinosaur_tail={name="dinosaur tail",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4802,},w_chicken_legs={name="chicken legs",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4803,},w_mermaid_tail={name="mermaid tail",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="rare",every=7200,num=4804,},w_pajama_onesie_bottoms={name="pajama onesie bottoms",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",retired=true,event_only=true,every=7200,num=4805,},w_bunny_slippers={name="bunny slippers",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4806,},w_clown_shoes={name="clown shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4807,},w_dinosaur_feet={name="dinosaur feet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="rare",every=7200,num=4808,},w_rain_hat={name="rain hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4809,},w_trapper_hat={name="trapper hat",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4810,},w_sun_bonnet={name="sun bonnet",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="common",every=7200,num=4811,},w_thermal_tights={name="thermal tights",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4812,},w_fleece_pants={name="fleece pants",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="common",every=7200,num=4813,},w_mukluks={name="mukluks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="uncommon",every=7200,num=4814,},w_duck_boots={name="duck boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4815,},w_water_shoes={name="water shoes",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4816,},w_fuzzy_socks={name="fuzzy socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4817,},w_toe_socks={name="toe socks",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="common",every=7200,num=4818,},w_crown_of_stars={name="crown of stars",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="epic",every=7200,num=4819,},w_comet_cape={name="comet cape",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="epic",every=7200,num=4820,},w_nebula_leggings={name="nebula leggings",size=1000,part="clothes",verbs={wear="global",take_off="global",},slot="legs",tier="epic",every=7200,num=4821,},w_meteorite_boots={name="meteorite boots",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="feet",tier="epic",every=7200,num=4822,},word_curious={name="curious",word=true,always="words",verbs={describe="global",},every=7200,num=4525,},word_sleepy={name="sleepy",word=true,always="words",verbs={describe="global",},every=7200,num=4526,},word_brave={name="brave",word=true,always="words",verbs={describe="global",},every=7200,num=4527,},word_gentle={name="gentle",word=true,always="words",verbs={describe="global",},every=7200,num=4528,},word_cheerful={name="cheerful",word=true,always="words",verbs={describe="global",},every=7200,num=4529,},word_quiet={name="quiet",word=true,always="words",verbs={describe="global",},every=7200,num=4530,},word_bold={name="bold",word=true,always="words",verbs={describe="global",},every=7200,num=4531,},word_patient={name="patient",word=true,always="words",verbs={describe="global",},every=7200,num=4532,},word_sunny={name="sunny",word=true,always="words",verbs={describe="global",},every=7200,num=4533,},word_cozy={name="cozy",word=true,always="words",verbs={describe="global",},every=7200,num=4534,},word_wandering={name="wandering",word=true,always="words",verbs={describe="global",},every=7200,num=4535,},word_hungry={name="hungry",word=true,always="words",verbs={describe="global",},every=7200,num=4536,},word_lucky={name="lucky",word=true,always="words",verbs={describe="global",},every=7200,num=4537,},word_steady={name="steady",word=true,always="words",verbs={describe="global",},every=7200,num=4538,},word_nimble={name="nimble",word=true,always="words",verbs={describe="global",},every=7200,num=4539,},word_dreamy={name="dreamy",word=true,always="words",verbs={describe="global",},every=7200,num=4540,},word_plucky={name="plucky",word=true,always="words",verbs={describe="global",},every=7200,num=4541,},word_earnest={name="earnest",word=true,always="words",verbs={describe="global",},every=7200,num=4542,},word_mellow={name="mellow",word=true,always="words",verbs={describe="global",},every=7200,num=4543,},word_spry={name="spry",word=true,always="words",verbs={describe="global",},every=7200,num=4544,},word_tidy={name="tidy",word=true,always="words",verbs={describe="global",},every=7200,num=4545,},word_scrappy={name="scrappy",word=true,always="words",verbs={describe="global",},every=7200,num=4546,},word_chill={name="chill",word=true,always="words",verbs={describe="global",},every=7200,num=4547,},word_bouncy={name="bouncy",word=true,always="words",verbs={describe="global",},every=7200,num=4548,},word_determined={name="determined",word=true,always="words",verbs={describe="global",},every=7200,num=4549,},word_friendly={name="friendly",word=true,always="words",verbs={describe="global",},every=7200,num=4550,},word_shy={name="shy",word=true,always="words",verbs={describe="global",},every=7200,num=4551,},word_silly={name="silly",word=true,always="words",verbs={describe="global",},every=7200,num=4552,},word_wise={name="wise",word=true,always="words",verbs={describe="global",},every=7200,num=4553,},word_swift={name="swift",word=true,always="words",verbs={describe="global",},every=7200,num=4554,},word_keen={name="keen",word=true,always="words",verbs={describe="global",},every=7200,num=4555,},word_kind={name="kind",word=true,always="words",verbs={describe="global",},every=7200,num=4556,},word_restless={name="restless",word=true,always="words",verbs={describe="global",},every=7200,num=4557,},word_thoughtful={name="thoughtful",word=true,always="words",verbs={describe="global",},every=7200,num=4558,},word_giddy={name="giddy",word=true,always="words",verbs={describe="global",},every=7200,num=4559,},word_jolly={name="jolly",word=true,always="words",verbs={describe="global",},every=7200,num=4560,},word_humble={name="humble",word=true,always="words",verbs={describe="global",},every=7200,num=4561,},word_lively={name="lively",word=true,always="words",verbs={describe="global",},every=7200,num=4562,},word_loyal={name="loyal",word=true,always="words",verbs={describe="global",},every=7200,num=4563,},word_peppy={name="peppy",word=true,always="words",verbs={describe="global",},every=7200,num=4564,},word_wistful={name="wistful",word=true,tier="common",verbs={describe="global",},every=7200,num=4565,},word_zesty={name="zesty",word=true,tier="common",verbs={describe="global",},every=7200,num=4566,},word_dapper={name="dapper",word=true,tier="common",verbs={describe="global",},every=7200,num=4567,},word_breezy={name="breezy",word=true,tier="common",verbs={describe="global",},every=7200,num=4568,},word_sprightly={name="sprightly",word=true,tier="common",verbs={describe="global",},every=7200,num=4569,},word_snappy={name="snappy",word=true,tier="common",verbs={describe="global",},every=7200,num=4570,},word_chipper={name="chipper",word=true,tier="common",verbs={describe="global",},every=7200,num=4571,},word_intrepid={name="intrepid",word=true,tier="common",verbs={describe="global",},every=7200,num=4572,},word_whimsical={name="whimsical",word=true,tier="common",verbs={describe="global",},every=7200,num=4573,},word_tenacious={name="tenacious",word=true,tier="common",verbs={describe="global",},every=7200,num=4574,},word_jaunty={name="jaunty",word=true,tier="common",verbs={describe="global",},every=7200,num=4575,},word_rambling={name="rambling",word=true,tier="common",verbs={describe="global",},every=7200,num=4576,},word_perky={name="perky",word=true,tier="common",verbs={describe="global",},every=7200,num=4577,},word_sturdy={name="sturdy",word=true,tier="common",verbs={describe="global",},every=7200,num=4578,},word_crafty={name="crafty",word=true,tier="common",verbs={describe="global",},every=7200,num=4579,},word_mischievous={name="mischievous",word=true,tier="common",verbs={describe="global",},every=7200,num=4580,},word_sincere={name="sincere",word=true,tier="common",verbs={describe="global",},every=7200,num=4581,},word_unhurried={name="unhurried",word=true,tier="common",verbs={describe="global",},every=7200,num=4582,},word_starry_eyed={name="starry-eyed",word=true,tier="common",verbs={describe="global",},every=7200,num=4583,},word_rosy={name="rosy",word=true,tier="common",verbs={describe="global",},every=7200,num=4584,},word_peckish={name="peckish",word=true,tier="common",verbs={describe="global",},every=7200,num=4585,},word_fearless={name="fearless",word=true,tier="common",verbs={describe="global",},every=7200,num=4586,},word_sunburnt={name="sunburnt",word=true,tier="common",verbs={describe="global",},every=7200,num=4587,},word_absent_minded={name="absent-minded",word=true,tier="common",verbs={describe="global",},every=7200,num=4588,},word_well_traveled={name="well-traveled",word=true,tier="common",verbs={describe="global",},every=7200,num=4589,},word_effervescent={name="effervescent",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4590,},word_indefatigable={name="indefatigable",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4591,},word_serendipitous={name="serendipitous",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4592,},word_bodacious={name="bodacious",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4593,},word_gallant={name="gallant",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4594,},word_debonair={name="debonair",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4595,},word_quixotic={name="quixotic",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4596,},word_swashbuckling={name="swashbuckling",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4597,},word_rambunctious={name="rambunctious",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4598,},word_nocturnal={name="nocturnal",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4599,},word_dauntless={name="dauntless",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4600,},word_footloose={name="footloose",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4601,},word_cosmic={name="cosmic",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4602,},word_wily={name="wily",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4603,},word_magnanimous={name="magnanimous",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4604,},word_insatiable={name="insatiable",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4605,},word_impish={name="impish",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4606,},word_rakish={name="rakish",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4607,},word_luminous={name="luminous",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4608,},word_unflappable={name="unflappable",word=true,tier="uncommon",verbs={describe="global",},every=7200,num=4609,},word_peripatetic={name="peripatetic",word=true,tier="rare",verbs={describe="global",},every=7200,num=4610,},word_irrepressible={name="irrepressible",word=true,tier="rare",verbs={describe="global",},every=7200,num=4611,},word_mercurial={name="mercurial",word=true,tier="rare",verbs={describe="global",},every=7200,num=4612,},word_ebullient={name="ebullient",word=true,tier="rare",verbs={describe="global",},every=7200,num=4613,},word_incandescent={name="incandescent",word=true,tier="rare",verbs={describe="global",},every=7200,num=4614,},word_kaleidoscopic={name="kaleidoscopic",word=true,tier="rare",verbs={describe="global",},every=7200,num=4615,},word_iridescent={name="iridescent",word=true,tier="rare",verbs={describe="global",},every=7200,num=4616,},word_legendary={name="legendary",word=true,tier="rare",verbs={describe="global",},every=7200,num=4617,},word_mythical={name="mythical",word=true,tier="rare",verbs={describe="global",},every=7200,num=4618,},word_stellar={name="stellar",word=true,tier="rare",verbs={describe="global",},every=7200,num=4619,},word_discombobulated={name="discombobulated",word=true,tier="rare",verbs={describe="global",},every=7200,num=4620,},word_sesquipedalian={name="sesquipedalian",word=true,tier="rare",verbs={describe="global",},every=7200,num=4621,},word_celestial={name="celestial",word=true,tier="epic",verbs={describe="global",},every=7200,num=4622,},word_star_forged={name="star-forged",word=true,tier="epic",verbs={describe="global",},every=7200,num=4623,},word_unstoppable={name="unstoppable",word=true,tier="epic",verbs={describe="global",},every=7200,num=4624,},w_glasses_of_sorting={name="glasses of sorting",size=300,part="clothes",verbs={wear="global",take_off="global",},slot="head",tier="shop",color={text="#1b1b1b",bg="#e8c547",},every=7200,num=4625,},w_magnet_vest={name="magnet vest",size=700,part="clothes",verbs={wear="global",take_off="global",},slot="torso",tier="shop",color={text="#f2f2f2",bg="#c0392b",},every=7200,num=4626,},w_gravity_charm={name="gravity charm",size=40,part="clothes",verbs={wear="global",take_off="global",},slot="trinket",tier="shop",skill={magnet=1,},color={text="#f2f2f2",bg="#6c3fb5",},about="Rolls up the smallest things you can, as you come into a cell: one a level.",every=7200,num=4857,},w_trinket_of_sorting={name="trinket of sorting",size=50,part="clothes",verbs={wear="global",take_off="global",},slot="trinket",tier="shop",skill={sort=1,},color={text="#1b1b1b",bg="#e8c547",},about="Puts the biggest things you can roll up first in line: one a level.",every=7200,num=4858,},w_astro_compass={name="astro-compass",size=80,part="clothes",verbs={wear="global",take_off="global",},slot="trinket",tier="shop",color={text="#f2f2f2",bg="#1d3557",},about="Points to your area's altar. (Not yet: it still needs its stars aligned.)",every=7200,num=4859,},},loads=A{{name="walking",every=7200,rolls=8,bands={edges=A{50,500,1500,10000,100000,},own=1,above=0,events="down",},chances={common=500000,uncommon=164995,rare=5000,epic=50,},pools={woods={common={b0=A{"tick","ant","mosquito","ladybug","holly_berry","pill_bug","acorn_cap","firefly","wild_strawberry","beetle","forget_me_not","hazelnut","pebble","raspberry","acorn","four_leaf_clover","lichen","snail","moss","pine_needle","mushroom","fairy_dust","magic_acorn","magic_beans","moonstone","amber","hailstone","snowflake",},b1=A{"cicada","frog","pinecone","earthworm","leaf","chipmunk","feather","birch_bark","canteen","flashlight","","mossy_rock","elven_arrowhead","enchanted_feather","fairy","fairy_ring_mushroom","gingerbread_man","golden_egg","pixie","poisoned_apple","porridge_bowl","sprite","","clay","frost_patch","shooting_star","snowball","","","obsidian","animal_track","bracket_fungus","chanterelle","chickadee","claw_mark","deer_track","flying_squirrel","katydid","luna_moth","morel","owl_pellet","pine_cone_cluster","salamander","spider_web","crystal",},b2=A{"owl","garter_snake","ivy","skunk","stump","opossum","porcupine","raccoon","bobcat","beaver","coyote","otter","boulder","big_bad_wolf","billy_goat","breadcrumb_trail","goblin","golden_goose","halfling","quiver_of_arrows","spinning_wheel","talking_owl","too_small_chair","","bracken","puddle","trail_marker",},b3=A{"","deer","elk","hammock","tent","treehouse","hunting_stand","yew","tree","brick_house","elf_archer","elven_treehouse","enchanted_mirror_pool","fairy_godmother","forest_elf","longbow","magic_mirror","stick_house","straw_house","tree_guardian","white_stag","witch_s_cottage","woodland_nymph","","","satellite","sand_dune","snowdrift","ice_floe","campfire_ring","cave_mouth","fairy_ring","forager","hunting_cabin","logger","mushroom_hunter",},b4=A{"log_cabin","fallen_tree","maple","elm","pine","fire_tower","oak","sycamore","waterfall","redwood","","ravine","beech","birch","cedar","hemlock",},b5=A{"galaxy",},},uncommon={b0=A{"pearl","gemstone","gold_nugget","spider","robin_egg","violet","caterpillar","chestnut","maple_seed","slug","walnut","acorn_weevil","bark_beetle","beechnut","blackberry","burr","dewdrop","juniper_berry","millipede","daddy_longlegs",},b1=A{"centipede","compass","toad","geode","puffball","stone","bat","binoculars","bird_nest","cardinal","thermos","blue_jay","squirrel","stick","brownie","elven_lantern","frog_prince","gnome","talking_cat","ugly_duckling","","petrified_wood","volcanic_rock","treasure_map","led_lantern","","spruce_twig","toadstool","tree_bark","whip_poor_will","woodpecker",},b2=A{"hawk","chainsaw","unicorn_foal","meteor","telescope","axe","badger","barred_owl","beehive","campfire","gray_fox","handsaw","marten","survey_stake","water_pump","wild_boar","","groundhog",},b3=A{"bear","moose","centaur","forest_spirit","gingerbread_house","glass_coffin","griffin","king","ogre","orc_warrior","pegasus","phoenix","portal_ring","princess","pumpkin_carriage","queen","rose_thorn_hedge","sleeping_prince","troll","troll_under_the_bridge","unicorn","rock_outcrop","sinkhole","stream","woodpile","woodsman",},b4=A{"beanstalk","elder_tree","seven_dwarfs","tower_with_long_braid","nebula","solar_eclipse","fog_bank","cliff_face","geyser","ancient_oak",},},rare={b0=A{"arrowhead","fossil","ruby","inchworm","stag_beetle","termite","square_nail","black_truffle",},b1=A{"antler","fern","dragon_egg","dragon_scale","ringed_planet","firewood","geocache","headlamp","lost_hiking_boot","pileated_woodpecker","trail_camera","trail_map","bigfoot_footprint",},b2=A{"fox","turkey","log","black_hole","black_bear_cub","great_horned_owl","lynx","wolf",},b3=A{"asteroid","space_telescope","hot_spring","glacier_chunk","abandoned_cabin","fire_tower_keeper","","lone_hiker","mountain_lion","ranger_station","stone_circle","park_ranger",},b4=A{"elk_herd","hollow_tree","lightning_struck_oak","old_growth_cedar","sawmill",},},epic={b0=A{"golden_scarab",},},},field={common={b0=A{"tick","ant","ladybug","dandelion_seed","sunflower_seed","blueberry","bee","firefly","wild_strawberry","grape","pebble","raspberry","wasp","cricket","buttercup","clover","snail","caterpillar","strawberry","daisy",},b1=A{"egg","peach","tennis_ball","tomato","baseball","hockey_puck","apple","dragonfly","onion","praying_mantis","butterfly","pear","potato","softball","earthworm","puffball","stone","canteen","ear_of_corn","dandelion","enchanted_feather","fairy","fairy_ring_mushroom","gingerbread_man","pixie","scroll","spellbook","","barn_swallow","bean_pod","caramel_apple","clay","","cotton_candy","face_paint","feed_bucket","festival_map","festival_wristband","field_mouse","frost_patch","funnel_cake","gopher_mound",},b2=A{"groundhog","garter_snake","tumbleweed","vulture","baseball_bat","lawn_chair","coyote","kite","boulder","bush","fence_post","shovel","wheelbarrow","short_sword","wooden_shield","baling_twine","chicory","cornflower","glow_necklace","goldenrod","milkweed","queen_anne_s_lace","wheat_sheaf","wheat_stalk",},b3=A{"alpaca","deer","donkey","farmer","llama","pony","scarecrow","sunflower","gate","trough","cow","golf_cart","horse","chicken_coop","cornstalk","elk","bull","haystack","shed","hunting_stand","tractor","pickup_truck","teleporter_pad","","","satellite","acrobat","carnival_game_booth","clown","cowboy","farm_gate","farm_stand","farmhand","festival_goer","festival_tent","food_stall",},b4=A{"farmhouse","floodlight_tower","barn","hot_air_balloon","","windmill","water_tower","airplane","grain_elevator","pylon","ferris_wheel","","ravine","wooden_fence",},b5=A{"radio_tower",},},rare={b0=A{"gemstone","old_coin","four_leaf_clover","arrowhead","fossil","leafhopper",},b1=A{"watermelon","duck","rabbit","chicken","crow","ringed_planet","barn_cat","bubble_machine","coyote_pup","juggler_s_pins","","petrified_wood","volcanic_rock",},b2=A{"goat","hay_bale","sheep","hockey_stick","pig","pitchfork","black_hole","meteor",},b3=A{"troll_under_the_bridge","asteroid","space_telescope","beer_tent","combine_harvester","crop_duster","draft_horse","manure_spreader","ringmaster","solar_panel","trapeze",},b4=A{"circus_tent","","fog_bank","grain_silo",},},uncommon={b0=A{"grasshopper","golf_ball","golf_tee","whistle","magic_acorn","amber","hailstone","","","stink_bug","aphid","cleat_stud","corn_kernel",},b1=A{"horseshoe","cantaloupe","gourd","mole","cabbage","carrot","bone","cucumber","eggplant","lettuce","starling","soccer_ball","frisbee","baseball_glove","football","trowel","pumpkin","killdeer","meadowlark","molehill","monarch_butterfly","poppy","quail","rusty_horseshoe","shooting_star","snowball","","vole","water_bottle_refill",},b2=A{"hawk","rooster","lamb","milk_can","fox","turkey","weather_vane","golf_club","","telescope","","","pheasant","sheepdog","","unicycle","mailbox",},b3=A{"outhouse","ostrich","camel","greenhouse","alien_invader","flying_saucer","gingerbread_house","glass_coffin","king","princess","pumpkin_carriage","queen","rose_thorn_hedge","sleeping_prince","","hay_wagon","plow","portable_stage","","sand_dune","scythe","shepherd","snowdrift","stilt_walker","",},b4=A{"blimp","wind_turbine","beanstalk","crashed_spaceship","crop_circle","rocket","seven_dwarfs","tower_with_long_braid","nebula","solar_eclipse","center_pivot_irrigation",},b5=A{"galaxy",},},epic={b0=A{"golden_scarab",},},},park={common={b0=A{"tick","ant","ladybug","confetti","dandelion_seed","sunflower_seed","pill_bug","acorn_cap","bee","cherry_pit","firefly","marble","beetle","forget_me_not","pebble","rose_hip","wasp","acorn","cherry","cricket","robin_egg","bottle_cap","bouncy_ball","clover","","moth","peanut","snail","violet","caterpillar","chestnut","candy_wrapper","daisy","maple_seed","pine_needle","ping_pong_ball","lego_brick",},b1=A{"cicada","yo_yo","frog","tennis_ball","baseball","apple","pinecone","praying_mantis","shuttlecock","toy_car","butterfly","hummingbird","toad","earthworm","juice_box","leaf","camera","can","squeaky_toy","horseshoe","sandwich","sunglasses","binoculars","chipmunk","feather","lizard","mole","sparrow","banana_peel","","dandelion","robin","frisbee","mourning_dove","recorder","duck","rabbit","squirrel","stick","fairy","pixie","sprite","","hat_plume","shako","caramel_apple","cotton_candy","face_paint","festival_map","festival_wristband","funnel_cake","shooting_star","snowball","","water_bottle_refill","orange_peel","acorn_squash","apple_core",},b2=A{"beach_ball","koi","groundhog","boombox","cooler","garter_snake","poodle","skunk","stump","dog","duffel_bag","lamb","tennis_racket","tricycle","skateboard","baseball_bat","bush","band_uniform","flute","glow_necklace","","hula_hoop","jacket","","","sidewalk_chalk_drawing","trash_bag","trail_marker",},b3=A{"","rake","","gardener","dog_walker","ice_cream_vendor","jogger","painter","photographer","bench","lifeguard","bike_rack","hedge","picnic_table","sapling","portable_toilet","sandbox","fountain","hammock","merry_go_round","statue","tent","seesaw","lamppost","slide","swing_set","yew","tree","pied_piper","wishing_well","","","satellite","baton_twirler","color_guard","jump_rope",},b4=A{"bandstand","willow","carousel","cypress","fallen_tree","maple","elm","hot_air_balloon","oak","sycamore","","dog_run","tennis_court",},b5=A{"galaxy",},},uncommon={b0=A{"slug","walnut","golf_ball","golf_tee","mushroom","fairy_dust","hailstone","","jacks","snowflake","earwig","daddy_longlegs","aphid","gnat","june_bug","band_aid","","","cleat_stud","bike_valve_cap","bird_dropping","used_band_aid","crumb","","popcorn_kernel","sprinkles","chewed_gum","game_piece",},b1=A{"popsicle","sunscreen","hot_dog","ice_cream_cone","bird_nest","bone","bubble_wand","sand_shovel","sprinkler","volleyball","cardinal","soccer_ball","water_bottle","basketball","baseball_cap","bucket","pinwheel","tulip","turtle","water_gun","baseball_glove","blue_jay","","bocce_ball","bottle_of_bubbles","castanets","chipmunk_burrow","clover_patch","cowbell","dandelion_puff","dog_park_ball","dog_toy","friendship_bracelet","goldfinch","","maracas","moccasin","panpipes","popped_balloon","sandcastle","thermos_of_cocoa","mitten",},b2=A{"chair","lawn_chair","leaf_blower","scooter","kite","red_wagon","stroller","trash_can","sled","great_dane","invisible_robe","","telescope","","sousaphone","","unicycle","marching_band_drum",},b3=A{"ping_pong_table","cannon","giraffe","drum_major","drumline","acrobat","carnival_game_booth","clown","festival_goer","festival_tent","food_stall","portable_stage","snowdrift","stilt_walker","basketball_hoop","cherry_tree","climbing_dome","horseshoe_pit","","magnolia","monkey_bars","park_ranger","picnic_blanket","tai_chi_group","water_fountain_statue",},b4=A{"ferris_wheel","roller_coaster","nebula","solar_eclipse","field_show","circus_tent","","amphitheater","baseball_diamond",},},rare={b0=A{"four_leaf_clover","inchworm","jumping_spider","flea","tiddlywink","mahjong_tile","ivory_chess_knight","hacky_sack","scab","loose_tooth","raisin",},b1=A{"football","sneaker","balloon","bike_helmet","birdhouse","puppy","bird_feeder","","rose","crow","picnic_basket","fairy_tale_book","ringed_planet","bubble_machine","juggler_s_pins","ducklings","park_bench_plaque","pickleball_paddle","chess_set",},b3=A{"jungle_gym","bamboo","elephant","gazebo","ice_cream_truck","totem_pole","asteroid","space_telescope","beer_tent","ringmaster","trapeze","swimming_pool",},b2=A{"black_hole","conga","djembe","drinking_fountain","goose","grill_station","toddler_in_a_stroller","didgeridoo",},b4=A{"botanical_garden","","skate_park","weeping_cherry",},},},trail={common={b0=A{"tick","ant","ladybug","dandelion_seed","sunflower_seed","pill_bug","acorn_cap","bee","cherry_pit","firefly","marble","beetle","forget_me_not","pebble","rose_hip","wasp","acorn","cherry","cricket","robin_egg","bottle_cap","bouncy_ball","clover","","moth","peanut","lego_brick",},b1=A{"cicada","frog","tennis_ball","baseball","apple","pinecone","praying_mantis","shuttlecock","toy_car","butterfly","hummingbird","toad","earthworm","juice_box","leaf","camera","can","squeaky_toy","sunglasses","binoculars","chipmunk","feather","lizard","mole","sparrow","banana_peel","flashlight","","dandelion","robin","frisbee","mourning_dove","duck","rabbit","squirrel","stick","","frost_patch","shooting_star","snowball","dog_park_ball","moccasin","bug_spray","cottontail","dog_biscuit","energy_bar","first_aid_kit","granola","","","crystal","stone",},b2=A{"backpack","beach_ball","koi","groundhog","boombox","cooler","garter_snake","poodle","skunk","stump","dog","duffel_bag","tennis_racket","bush","bandana","mile_marker","","thistle","trail_junction_sign","","puddle",},b3=A{"","rake","","gardener","dog_walker","ice_cream_vendor","jogger","painter","photographer","bench","deer","hedge","picnic_table","sapling","portable_toilet","sandbox","fountain","hammock","merry_go_round","statue","tent","seesaw","lamppost","slide","swing_set","yew","tree","","","satellite",},b4=A{"bandstand","willow","carousel","cypress","fallen_tree","maple","elm","hot_air_balloon","oak","sycamore","","ravine",},b5=A{"galaxy",},},rare={b0=A{"gemstone","four_leaf_clover","bumblebee","","bear_bell","inchworm","gnat","bike_valve_cap","blueberry",},b1=A{"bird_feeder","","rose","crow","picnic_basket","ringed_planet","","volcanic_rock","bear_canister","bike_trail_map","cairn","camp_stove","geocaching_log","tent_stake","trail_register","chess_set",},b3=A{"gazebo","ice_cream_truck","totem_pole","asteroid","space_telescope","footbridge","hot_spring","trail_runner","trail_shelter",},b2=A{"black_hole","hiking_pole","","sleeping_bag","trail_marker","walking_stick","raincoat","meteor",},b4=A{"geyser","suspension_bridge","trailhead_parking_lot",},},uncommon={b0=A{"snail","violet","caterpillar","chestnut","daisy","maple_seed","pine_needle","slug","walnut","golf_ball","golf_tee","mushroom","whistle","amber","pull_tab","snowflake","buckeye",},b1=A{"popsicle","sunscreen","hot_dog","ice_cream_cone","bird_nest","bone","bubble_wand","sand_shovel","sprinkler","volleyball","cardinal","soccer_ball","water_bottle","basketball","baseball_cap","bucket","pinwheel","tulip","turtle","water_gun","baseball_glove","blue_jay","football","sneaker","balloon","bike_helmet","birdhouse","puppy","","sun_hat","","trail_mix","trail_shoe","wool_sock","wren",},b2=A{"tricycle","skateboard","baseball_bat","chair","lawn_chair","leaf_blower","kite","red_wagon","stroller","trash_can","sled","great_dane","","telescope",},b3=A{"ping_pong_table","cannon","giraffe","jungle_gym","bamboo","elephant","snowdrift","birdwatcher","hiker_with_a_dog","horseback_rider","log_bridge","mountain_biker","overlook","rope_swing","stepping_stones","trail_bench","","trail_volunteer","trailhead_kiosk","wooden_steps","park_ranger",},b4=A{"ferris_wheel","roller_coaster","nebula","solar_eclipse","boardwalk","cliff_face","covered_bridge","","fire_tower",},},},residential={common={b0=A{"ant","grain_of_rice","sequin","housefly","bead","ladybug","pea","","cheerio","holly_berry","thumbtack","watch_battery","contact_lens","bee","button","candy","googly_eye","pill","die","marble","earring","game_piece","grape","gummy_bear","jelly_bean","lint","penny","ring","spider","thimble","quarter","acorn","safety_pin","stamp","zipper_pull","bottle_cap","bouncy_ball","cotton_ball","dust_bunny","guitar_pick","hair_tie","hearing_aid","","locket","magnet","moth","","snail","","sewing_needle","brooch","chess_pawn","cork","eraser","maple_seed","ping_pong_ball","rubber_band","sticker","tea_light","","walnut","watch","allen_key","birthday_candle","bobby_pin","chalk","cracker","","domino","matchstick","nail","usb_stick","magic_beans","","","","","paper_clip",},b1=A{"battery","goldfish","puzzle_piece","egg","centipede","key","nail_polish","rubiks_cube","toy_soldier","yo_yo","compact_mirror","cookie","cupcake","doorknob","lemon","lip_balm","medal","padlock","pager","slinky","spinning_top","tennis_ball","tomato","lipstick","apple","doorbell","keychain","mouse","orange","succulent","tape_measure","toy_car","crayon","deck_of_cards","glue_stick","hinge","hummingbird","polaroid","soap","teacup","cassette","coaster","coin_purse","earthworm","flip_phone","game_cartridge","harmonica","juice_box","leaf","mug","roll_of_tape","camera","passport","calculator","coupon","paperback","sock","robin","birdhouse","garden_gnome","gift_box","kettle","mixing_bowl","mourning_dove","puppy","shingle","toaster","vinyl_record","recorder","bird_feeder","boot","doll","dustpan","vase","wall_clock","blender","board_game","cutting_board","pizza_box","rabbit","rain_boot","rose","squirrel","stockpot","teddy_bear","watering_can","cat","frying_pan","rolling_pin","space_heater","basket_of_goodies","crystal_ball","gingerbread_man","glass_slipper","golden_egg","healing_potion","magic_wand","poisoned_apple","porridge_bowl","potion_bottle","","love_letter","family_photo","metronome","sheet_music","tuning_fork","baseball_card","bluetooth_speaker","bracelet","","dvd","e_reader","jewelry_box","","","broken_toy","melodica","baby_bottle","baby_monitor","clothespin","diary","door_wedge","flowerpot","fly_swatter","fridge_magnet","","handheld_console","ice_cube_tray","jar_of_pickles","junk_mail","leftover_pizza","mp3_player","oven_mitt","pacifier","sippy_cup","","spatula","sticky_note","takeout_menu","tea_bag","thermostat","wind_chime","phone","lost_key",},b2=A{"busted_tv","cardboard_box","fan","microwave","pillow","toolbox","ivy","lamp","laundry_basket","poodle","potted_plant","side_table","skunk","clarinet","dog","doormat","opossum","raccoon","stool","trash_bag","tricycle","fire_hydrant","","skateboard","chair","lawn_chair","leaf_blower","recycling_bin","red_wagon","stove","stroller","television","washing_machine","vacuum","bush","mailbox","broom","fence_post","shovel","wheelbarrow","red_riding_cloak","three_little_pigs","jeans","jacket","apron","bathrobe","belt","cardigan","dress","flannel_shirt","hoodie","icicle","leaf_pile","leggings","necktie","nightgown",},b3=A{"rake","","bicycle","gardener","dog_walker","mail_carrier","refrigerator","sunflower","mattress","gate","hedge","sapling","chicken_coop","","ladder","patio_umbrella","diving_board","hammock","shed","swing_set","treehouse","car","tree","brick_house","fairy_godmother","flying_carpet","genie","magic_mirror","stick_house","straw_house","scarf","babysitter","","graduation_gown","","kiddie_pool","kimono","lawn_mower","porch_swing","sarong","tuxedo","",},b4=A{"row_house","duplex","house","maple","hot_air_balloon",},},rare={b1=A{"roll_of_film","floppy_disk","baby_shoe","snow_globe","hamster","kazoo","music_box","ocarina","hourglass","joystick","piggy_bank","magnifying_glass","bonsai","trophy","","sewing_machine","chicken","record_player","laptop","savings_bond","stock_certificate","antique_clock","desk_fan","electric_kettle","first_edition_book","necklace","silver_tray","e_bike_battery","air_fryer","ant_farm","birthday_cake","casserole_dish","drone","electric_toothbrush","encyclopedia_set","jigsaw_puzzle","lava_lamp","","led_lantern","mortarboard","robot_vacuum","slow_cooker","tutu",},b2=A{"pinata","dollhouse","toy_chest","rocking_horse","weather_vane","crib","ironing_board","propane_tank","rocking_chair","snow_shovel","suit_jacket","tie_dye_shirt","toddler","toy_train_set","ugly_sweater","","antique_trunk",},b3=A{"queen","rose_thorn_hedge","sleeping_prince","troll_under_the_bridge","pipe_organ","solar_panel","camper_trailer","garage_door","hot_tub","motorhome","moving_truck","swimming_pool","wedding_dress",},b4=A{"seven_dwarfs","tower_with_long_braid",},b0=A{"silverfish","jumping_spider","flea","eyeshadow_pan","nose_stud","hearing_aid_battery","test_strip","glass_eye","medical_alert_charm","stitch_marker","","embroidery_floss","seed_pearl","meeple","tiddlywink","mahjong_tile","d20","scab","earwax","loose_tooth","eye_hook","picture_hook","brass_key",},},uncommon={b1=A{"rubber_duck","sponge","light_bulb","light_switch","alarm_clock","cd","jar","lollipop","marker","outlet_cover","seed_packet","squeaky_toy","smoke_detector","action_figure","bowl","cactus","candle","chew_bone","comb","hose_nozzle","popsicle","razor","saucer","sparrow","tile","game_controller","pencil","remote_control","spoon","fork","paint_can","toothbrush","vhs_tape","bubble_wand","butter_knife","dog_bowl","flashlight","","headphones","milk_carton","mitten","paintbrush","pepper_mill","router","scissors","screwdriver","shampoo_bottle","sprinkler","telephone","notebook","beanie","cardinal","envelope","teapot","hairbrush","pie","basketball","glove","cake","chihuahua","hardcover","kitten","","picture_frame","pinwheel","radio","tablet","thermos","tulip","water_gun","whisk","comic_book","plate","slipper","bread","cereal_box","letter","saucepan","shoe","egg_carton","hammer","ladle","trowel","wine_bottle","lantern","coffee_maker","bowling_pin","drumstick","globe","typewriter","keyboard","frog_prince","magic_lamp","talking_cat","ugly_duckling","candlestick","silver_spoon","autograph","crt_monitor","lunch_pail",},b2=A{"ukulele","boombox","violin","wreath","lamb","banjo","guitar","turkey","great_dane","big_bad_wolf","billy_goat","breadcrumb_trail","golden_goose","spinning_wheel","too_small_chair","music_stand","","gold_chain","satellite_dish","bass_guitar","electric_guitar","mandolin","pajamas","phone_charger","shorts","skirt","sweater","sweatpants","t_shirt","tank_top","","","charcoal_grill","hose_reel","kid_on_a_tricycle","kilt","lawn_flamingo","overalls","fish_tank",},b3=A{"air_conditioner","doghouse","piano","snowboard","water_heater","floor_lamp","grandma","bathtub","skis","bookshelf","bed","picket_fence","wardrobe","grandfather_clock","couch","grand_piano","pool_table","trampoline","pickup_truck","garage","greenhouse","ice_cream_truck","utility_pole","gingerbread_house","glass_coffin","king","princess","pumpkin_carriage","wedding_veil",},b4=A{"mansion","apartment_building","beanstalk",},b0=A{"","","","","","","","signet_ring","engagement_ring","pendant","smartwatch","wedding_band","lego_brick","earwig","stink_bug","fruit_fly","june_bug","earring_back","hair_clip","lipstick_cap","dental_floss_pick","deodorant_cap","nail_file","band_aid","earplug","vitamin","pill_bottle_cap","pom_pom","spool_of_thread","pinch_of_glitter","pipe_cleaner","felt_scrap","","scrabble_tile","","used_tissue","hairball","toenail_clipping","booger","dead_fly","","moldy_crumb","nut","wing_nut","wire_nut","","wood_screw","drywall_anchor","crumb","raisin","corn_kernel","olive_pit","","almond","jacks",},},epic={b0=A{"championship_ring",},},},commercial={common={b0=A{"peppercorn","grain_of_rice","sequin","housefly","bead","pea","chocolate_chip","coffee_bean","pearl","thumbtack","blueberry","staple","watch_battery","button","candy","microsd_card","mint","sugar_cube","die","dime","cough_drop","cufflink","earring","grape","gum","gummy_bear","jelly_bean","microchip","penny","popcorn","ring","nickel","quarter","cherry","earbud","olive","pin_badge","safety_pin","sim_card","token","bottle_cap","cigarette_butt","ice_cube","magnet","","peanut","strawberry","brooch","candy_wrapper","cork","poker_chip","paper_clip",},b1=A{"dumpling","matchbook","plum","sushi","egg","key","kiwi","lime","nail_polish","compact_mirror","cookie","cupcake","lemon","lip_balm","peach","tomato","lipstick","apple","muffin","onion","orange","succulent","credit_card","business_card","deck_of_cards","donut","mug","paper_cup","smoke_detector","sunglasses","coffee_cup","receipt","takeout","banana_peel","headphones","napkin","radio","balloon","fedora","gift_box","newspaper","pigeon","purse","toaster","vinyl_record","coffee_maker","dustpan","milk_crate","pumpkin","vase","watermelon","blender","cutting_board","pizza_box","stack_of_newspapers","stockpot","bouquet","briefcase","cat","keyboard","shopping_bag","astronaut_ice_cream","datapad","energy_cell","hologram_projector","neon_visor","ration_pack","ray_gun","capo","coat_check_ticket","","drumhead","foot_pedal","glow_stick","guitar_tuner","light_up_wand","setlist","vip_pass","baseball_card","bluetooth_speaker","bracelet","cardboard_tube","clothes_hanger","coffee_lid","coffee_stirrer","","dvd","e_reader","","","french_fries","gift_bag","gift_card","hand_sanitizer","iced_coffee","jewelry_box","loyalty_card","menu","name_tag","order_number","pastry_box","phone_case","plastic_fork","plastic_wrap","popcorn_bag","power_bank","reusable_tote","shoe_box","shop_bell","","smoothie","soft_pretzel","styrofoam_cup","sushi_roll","tip_jar","","twist_tie","used_napkin","festival_wristband",},b2=A{"cardboard_box","fan","microwave","mop_bucket","printer","speaker","ukulele","computer_monitor","crate","lamp","potted_plant","wreath","doormat","stool","trash_bag","umbrella","guitar","sandwich_board","shopping_cart","stove","television","turkey","wedding_cake","newspaper_box","office_chair","vacuum","laser_sword","band_poster","drum_stool","guitar_strap","guitar_string","stage_monitor","tour_t_shirt","gift_wrap","ribbon",},b3=A{"jukebox","cash_machine","chef","janitor","arcade_machine","businessperson","coat_rack","mannequin","refrigerator","vending_machine","claw_machine","dumpster","photo_booth","","patio_umbrella","pool_table","food_cart","newsstand","android","cyborg","mad_scientist","spacesuit","starship_captain","audio_cable","microphone_stand","bassist","bouncer","dance_floor","dj","drummer","guitarist","keyboardist",},b4=A{"pizzeria","diner","laundromat","corner_shop","gas_station","bank","escalator",},},rare={b0=A{"diamond","gemstone","gold_ring","false_eyelash","eyeshadow_pan","perfume_sample","travel_soap","rhinestone","meeple","d20","dart_flight","","almond","caper","saffron_thread",},b1=A{"crystal","pomegranate","snow_globe","coconut","bowling_ball","bonsai","salami","pineapple","silver_spoon","disco_ball","laptop","laser_pointer","security_camera","spotlight","crown","stamp_collection","tiara","antique_clock","barcode_scanner","cash","cash_drawer","cash_register","chef_hat","credit_card_reader","desk_fan","electric_kettle","first_edition_book","hair_dryer","megaphone","necklace","nurse_cap","rotisserie_chicken","shop_cat","shopping_basket","silver_tray",},b2=A{"scepter","fish_tank","","gold_chain","lobster_tank","neon_sign","pizza_oven","satellite_dish","cash_safe","delivery_robot",},b3=A{"stage","","","ev_charger","giant_inflatable","grand_opening_banner","mall_fountain","parking_kiosk","pinball_machine","revolving_sign",},b4=A{"drive_through","food_court",},},uncommon={b0=A{"rubber_band","","watch","cracker","fortune_cookie","ketchup_packet","sugar_packet","ticket_stub","tie_clip","usb_stick","","gold_coin","drum_key","","engagement_ring","gumball","pendant","price_tag","","smartwatch","wedding_band","","cockroach","fruit_fly","lipstick_cap","nail_file","vitamin","spool_of_thread","arcade_token","chewed_gum","dead_fly","","moldy_crumb","crumb","popcorn_kernel","olive_pit","tea_light","earplug","old_coin","hairball",},b1=A{"id_badge","pear","potato","salt_shaker","teacup","avocado","bagel","bell_pepper","coaster","coin_purse","harmonica","lottery_ticket","perfume_bottle","pickle","sponge","computer_mouse","grapefruit","hamburger","honey_jar","wallet","ashtray","cd","cheese","jar","kazoo","lollipop","mango","seed_packet","","croissant","pen","sandwich","bowl","cactus","calculator","cantaloupe","cigar","circuit_board","comb","coupon","gourd","hard_drive","phone","postcard","stapler","taco","cabbage","carrot","spoon","fork","burrito","cucumber","eggplant","","ketchup_bottle","lettuce","milk_carton","pepper_mill","router","straw","","pie","cake","fish","high_heel","pizza_slice","soda_bottle","tablet","tambourine","comic_book","plate","bread","cereal_box","magazine","paper_bag","egg_carton","wine_bottle","wig","bowling_pin","drumstick","lobster","teddy_bear","chopsticks","flowerpot","chocolate_bar",},b2=A{"gumball_machine","broom","foosball_table","mop","parking_meter","hoverboard","jetpack","robot_dog","small_robot","blouse","dj_turntable","dress_shirt","fog_machine","karaoke_machine","keyboard_stand","mixing_board","painting","road_case","scrubs","sculpture","subwoofer","baguette","barber_pole","display_case","espresso_machine",},b3=A{"sumo_wrestler","delivery_truck","lead_singer","merch_table","roadie","sound_engineer","speaker_stack","velvet_rope","crowd_surfer","lighting_rig","mosh_pit","barber","barista","bartender","cardboard_cutout","cashier","dumpster_overflow","rotating_door","security_guard","shop_assistant","shop_window","waiter","window_shopper",},b4=A{"movie_theater","hotel","parking_garage","tour_bus","department_store",},},epic={b0=A{"crystal_die",},},},["place:french_restaurant"]={common={b0=A{"peppercorn","macaron",},b1=A{"cheese","croissant","wine_bottle","baguette_basket","brioche","croissant_basket","pain_au_chocolat","eclair","crepe",},b3=A{"chef",},b2=A{"host_stand",},},uncommon={b1=A{"tart","cheese_board","creme_brulee","champagne_flute","escargot","french_onion_soup",},b3=A{"sommelier",},b0=A{"black_truffle",},},rare={b1=A{"reservation_card","wine_carafe","wine_list",},},epic={b0=A{"caviar_pearl",},},},["place:indian_restaurant"]={common={b0=A{"peppercorn","grain_of_rice",},b1=A{"mango","chai","curry","mango_lassi","naan",},b2=A{"tandoor_oven",},},uncommon={b1=A{"papadum","samosa","biryani",},b0=A{"saffron_thread",},},rare={b1=A{"spice_rack","tikka_masala",},},},["place:steakhouse"]={common={b0=A{"peppercorn",},b1=A{"baked_potato","steak","knife","steak_knife",},b2=A{"picanha_skewer",},},uncommon={b1=A{"cast_iron_skillet","reservation_card","wedge_salad",},b2=A{"host_stand",},},rare={b1=A{"wine_list",},},},["place:chinese_restaurant"]={common={b0=A{"grain_of_rice","fortune_cookie",},b1=A{"dumpling","bao","chopsticks","fried_rice","tofu","","","egg_roll","fortune_cookie_slip","lo_mein","teacup","ladle",},b2=A{"lazy_susan",},},rare={b1=A{"hot_pot","","peking_duck","teapot",},},uncommon={b1=A{"lucky_cat","red_lantern","ramen_noodles","soup_spoon","soy_sauce_dish","spring_roll","dim_sum_basket",},b0=A{"wonton",},b2=A{"restaurant_fish_tank",},},},["place:japanese_restaurant"]={common={b0=A{"grain_of_rice","mochi",},b1=A{"sushi","chopsticks","soy_sauce_dish","edamame","maki_roll","miso_soup","nigiri","pickled_ginger","ramen_bowl",},b2=A{"noren_curtain",},b3=A{"sushi_chef",},},uncommon={b1=A{"lucky_cat","sake_bottle","matcha","","bento_box","sashimi_plate","teapot",},b0=A{"chopstick_rest",},},rare={b0=A{"wasabi",},b1=A{"tempura","tonkatsu","udon",},},},["place:sushi_restaurant"]={common={b0=A{"grain_of_rice","chopstick_rest",},b1=A{"sushi","chopsticks","soy_sauce_dish","edamame","maki_roll",},b3=A{"sushi_chef",},b2=A{"sushi_boat",},},rare={b1=A{"sake_bottle","sashimi_plate",},},uncommon={b1=A{"miso_soup","nigiri","pickled_ginger",},b0=A{"wasabi",},b3=A{"sushi_conveyor_belt",},},},["place:thai_restaurant"]={common={b0=A{"grain_of_rice",},b1=A{"lime","mango","coconut","fried_rice","soup_spoon","spring_roll",},},uncommon={b0=A{"peanut",},b1=A{"mango_sticky_rice","sriracha_bottle","satay_skewer","pad_thai","thai_iced_tea",},},rare={b1=A{"green_curry","tom_yum",},},},water={common={b0=A{"mosquito","pearl","pebble","fishhook","sea_glass","tadpole","snail","bobber","hermit_crab","seashell","","minnow","sand_dollar","sea_glass_talisman",},b1=A{"goldfish","mussel","frog","clam","dragonfly","rubber_duck","sunglasses","fish","lily_pad","message_in_a_bottle","duck","seaweed","mermaid_s_comb","pearl_necklace","","clay","shooting_star","","","algae","clamshell","coral_fragment","crayfish","","","frog_spawn","lure","mermaid_s_purse","newt","obsidian","perch","plastic_bag","","snorkel_mask","stickleback","sunfish","crystal","feather",},b2=A{"beach_ball","coil_of_rope","koi","seagull","cooler","driftwood","life_jacket","sandbag","inner_tube","beaver","eel","heron","otter","boulder","buoy","cattail","paddle","swan","","fishing_line","puddle",},b3=A{"pelican","diving_board","rowboat","pontoon_boat","kelpie","mermaid","merman","selkie","trident","","","satellite","sand_dune","kelp","reed","beaver_lodge","dinghy","floating_dock","ice_floe","inflatable_raft","motorboat","paddleboard","sturgeon","swimmer",},b4=A{"boathouse","houseboat","willow","dock","fishing_boat","whale","tugboat","yacht","lighthouse","waterfall","ferry","",},b5=A{"submarine","galaxy",},},rare={b0=A{"gold_nugget","shark_tooth","ruby","damselfly",},b1=A{"coconut","conch","ringed_planet","bikini","bullfrog","flippers","kingfisher","painted_turtle","sandpiper","","snapping_turtle",},b3=A{"sailboat","lake_spirit","asteroid","space_telescope","glacier_chunk","manatee","orca",},b2=A{"black_hole","osprey","pike","sandcastle_moat","pirate_treasure_chest","sea_turtle",},b4=A{"dam","","whale_shark","",},},uncommon={b1=A{"toad","oyster","stone","binoculars","sunscreen","crab","sand_shovel","starfish","volleyball","bucket","jellyfish","turtle","flip_flop","lobster","tackle_box","water_sprite","petrified_wood","treasure_map","","swim_goggles","swim_trunks","swimsuit","trout","water_lily","bass",},b2=A{"fishing_rod","oar","pool_noodle","sunken_treasure","","telescope","carp","catfish","cormorant","egret","","loon","muskrat",},b3=A{"seal","angler","lifeguard","scuba_diver","anchor","beach_umbrella","surfboard","sea_lion","dolphin","jet_ski","paddleboat","alligator","kayak","lifeguard_tower","shark","canoe","wetsuit",},b4=A{"drawbridge","barge","pier","kraken","sea_serpent","sunken_castle","nebula","solar_eclipse","fog_bank",},b0=A{"silver_dollar","","","pond_snail","salt_crystal","water_beetle","water_strider","gnat","","fishing_sinker",},b5=A{"container_ship",},},epic={b0=A{"caviar_pearl",},},},plaza={common={b0=A{"sequin","confetti","sunflower_seed","button","candy","die","marble","dime","earring","gum","jelly_bean","penny","pistachio_shell","popcorn","ring","quarter","earbud","pin_badge","bottle_cap","cigarette_butt","peanut","candy_wrapper","ticket_stub","gold_coin","","","","earring_back","cork","earplug",},b1=A{"yo_yo","lighter","polaroid","snow_globe","wallet","camera","can","ocarina","pretzel","sunglasses","feather","phone","popsicle","postcard","sparrow","takeout","hot_dog","banana_peel","ice_cream_cone","paperback","bubble_wand","folded_map","headphones","straw","water_bottle","glove","baseball_cap","flyer","folding_fan","high_heel","pizza_slice","flip_flop","frisbee","newspaper","pigeon","recorder","crystal_ball","healing_potion","magic_wand","pointed_hat","potion_bottle","ray_gun","scroll","spellbook","tankard","baton","bugle","capo","coat_check_ticket","concert_program","","cornet","glow_stick","guitar_tuner","handbell","hat_plume","light_up_wand","metronome","microphone","piccolo","setlist","shako",},b2=A{"backpack","koi","seagull","speaker","trumpet","ukulele","amplifier","boombox","violin","clarinet","saxophone","suitcase","skateboard","lawn_chair","scooter","umbrella","banjo","chainmail","hooded_cloak","short_sword","tavern_sign","torch","wooden_shield","band_poster","band_uniform","drum_stool","flute","guitar_strap","guitar_string","oboe","tour_t_shirt","glow_necklace","painted_sign","violin_case",},b3=A{"jukebox","bicycle","mime","tourist","ice_cream_vendor","painter","photographer","skateboarder","street_musician","bench","magician","photo_booth","","hot_dog_cart","food_cart","fountain","statue","lamppost","street_clock","obelisk","adventurer","alchemist","bard","broomstick","castle_gate","dragon_statue","flying_carpet","genie","innkeeper","knight","knight_statue","pied_piper","squire","wishing_well","wizard","wizard_s_staff","microphone_stand","bassist","baton_twirler","color_guard","drum_major","drumline","drummer","guitarist",},b4=A{"bandstand","double_decker_bus","arch","monument","clock_tower","ferris_wheel","cathedral","blimp","field_show","amphitheater_steps",},},rare={b0=A{"whistle","false_eyelash","nose_stud","","rhinestone","seed_pearl","mahjong_tile","ivory_chess_knight","hacky_sack","bead",},b1=A{"","tambourine","balloon","purse","drumstick","snare_drum","accordion","keyboard","fairy_tale_book","knight_s_helm","magic_lamp","cymbal","glockenspiel","laser_pointer","confetti_cannon","megaphone","bubble_machine","juggler_s_pins",},b2=A{"cello","church_bell","gong","djembe","didgeridoo","bass_guitar","chess_table","electric_guitar","mandolin","selfie_stick",},b3=A{"flagpole","double_bass","drum_kit","harp","lighting_rig","marimba","mosh_pit","stage","pinball_machine","beer_tent","ringmaster","trapeze","equestrian_statue",},b4=A{"opera_house","palace","triumphal_arch",},},uncommon={b0=A{"bouncy_ball","guitar_pick","hair_tie","ice_cube","","chess_pawn","sticker","watch","bobby_pin","chalk","domino","hair_clip","lipstick_cap","pinch_of_glitter","arcade_token","chewed_gum","spit","bird_dropping","crumb","","sprinkles","jacks",},b1=A{"harmonica","triangle","vip_pass","bluetooth_speaker","bracelet","popcorn_bag","used_napkin","caramel_apple","cotton_candy","face_paint","festival_map","festival_wristband","funnel_cake","","water_bottle_refill","castanets","cowbell","maracas","panpipes","popped_balloon","balloon_animal","bongo","caricature","chess_set","churro","","disposable_camera","harmonica_rack","jug","lemonade","melodica","pamphlet","pigeon_seed","roasted_chestnuts","roller_skates","sidewalk_artist_s_chalk","soft_serve","souvenir_magnet","street_musician_s_hat","tin_whistle","","","tourist_hat","tip_jar",},b2=A{"bollard","guitar","kite","trash_can","tuba","guitar_case","trombone","broadsword","cauldron","dungeon_chest","dwarf_miner","invisible_robe","bagpipes","fog_machine","french_horn","","road_case","sousaphone","viola","xylophone","","unicycle","conga","marching_band_drum","pigeon_flock",},b3=A{"horse_carriage","gazebo","food_truck","lead_singer","roadie","speaker_stack","acrobat","carnival_game_booth","clown","festival_goer","festival_tent","food_stall","portable_stage","stilt_walker","accordionist","bicycle_taxi","","chess_hustler","fire_dancer","flower_seller","ice_cream_cart","juggler","","pickpocket","","puppeteer","reflecting_pool","statue_of_a_general","statue_performer","street_artist","street_preacher","tour_guide",},b4=A{"tour_bus","circus_tent","","city_gate","marketplace","monument_column",},},epic={b0=A{"crystal_die","championship_ring",},},},lot={common={b0=A{"housefly","gravel","","capacitor","glass_shard","pebble","penny","washer","bottle_cap","cigarette_butt","spring","bolt","screw","nail",},b1=A{"battery","matchbook","lighter","mouse","spark_plug","cassette","lottery_ticket","stone","can","lizard","zip_tie","banana_peel","bone","brick","milk_carton","spray_can","rat","dandelion","egg_carton","pigeon","shopping_bag","astronaut_ice_cream","datapad","energy_cell","hologram_projector","neon_visor","ration_pack","ray_gun","space_helmet","cardboard_tube","","plastic_fork","plastic_wrap","styrofoam_cup","broken_toy","bubble_wrap",},b2=A{"busted_tv","cardboard_box","seagull","boombox","crate","stray_dog","tumbleweed","tire","bicycle_wheel","vulture","oil_drum","sawhorse","cable_spool","coyote","laser_sword","bent_rebar","broken_umbrella","","jeans","scrap_wood","tire_tread","torn_poster","traffic_barrel","yard_sale_sign",},b3=A{"","skateboarder","construction_worker","mattress","bike_rack","dumpster","couch","motorcycle","","portable_toilet","parking_booth","chain_link_fence","car","wrecked_car","van","ice_cream_truck","food_truck","android","cyborg","mad_scientist","moon_rover","space_trooper","spacesuit","starship_captain","payphone","refrigerator",},b4=A{"billboard","excavator","floodlight_tower","school_bus","shipping_container","parking_garage","crashed_spaceship","crop_circle","giant_robot","launch_tower",},},uncommon={b0=A{"","silver_dollar","","bread_tag","packing_peanuts","paint_chip","pull_tab","cockroach","chewed_gum","moldy_crumb","nut","microchip","old_coin",},b1=A{"flip_phone","vhs_tape","sock","beer_bottle","wrench","shoe","car_battery","cigarette_pack","cracked_phone","crow_with_a_french_fry","crumpled_paper","crushed_can","dandelion_in_a_crack","","fast_food_cup","","gum_wrapper","","lost_key","orange_peel","plastic_cup","rusty_nail","six_pack_ring","sparrow_in_the_rafters","weeds","street_cat","glove","sneaker",},b2=A{"raccoon","traffic_cone","trash_bag","chain","muffler","pipe","shopping_cart","car_door","pallet","alien","hoverboard","jetpack","robot_dog","small_robot","abandoned_luggage","bag_of_leaves",},b3=A{"teleporter_pad","tesla_coil","dumpster_overflow","mattress_pile","abandoned_couch","blue_tarp","bumper","hot_dog_stand","jersey_barrier","parking_attendant","pickup_bed_liner","rusted_bike_frame","scrapper","squatter","storage_unit","tow_truck","vending_machine_husk",},b4=A{"rocket","space_station_module","abandoned_warehouse","","bus_without_wheels","demolition_site",},},rare={b1=A{"license_plate","side_mirror","milk_crate","steering_wheel","cinder_block","hubcap","cat","force_field_generator","plasma_cutter","e_bike_battery","treasure_map",},b3=A{"pickup_truck","bulldozer","cement_mixer","alien_invader","flying_saucer","time_machine","burnt_out_car",},b2=A{"car_seat","engine_block","flat_tire","folding_chair","for_lease_sign","recycling_pile","stray_shopping_cart",},b4=A{"fenced_off_crater","tower_crane","weathered_mural",},b0=A{"syringe_cap","mystery_goo","lock_washer","wood_screw",},},},cemetery={common={b0=A{"ladybug","pill_bug","acorn_cap","forget_me_not","pebble","acorn","lichen","moth","snail","brooch","moss","rosary","","bone_dust","tea_light",},b1=A{"pinecone","leaf","bat","dandelion","grave_vase","pinwheel","mourning_dove","plastic_flowers","footstone","memorial_flag","squirrel","spectral_candle","carnation","chrysanthemum","dried_rose","faded_photo","funeral_program","grave_photo","incense_stick","lawn_clippings","lily_of_the_valley","love_letter","marigold","",},b2=A{"owl","urn","ivy","vulture","","gravestone","bush","garden_spade","grave_blanket","poppy_wreath","umbrella",},b3=A{"stone_lion","stone_angel","mourner","groundskeeper","bench","cemetery_gate","statue","mausoleum","yew","crypt","tree","necromancer","skeleton_warrior","wraith","angel_with_raised_wings","caretaker_s_shed","crypt_door","dogwood","hearse_driver",},b4=A{"columbarium","cypress","cedar_of_lebanon","","","willow","oak",},},uncommon={b0=A{"spider","old_coin","clover","locket","coin_on_a_gravestone","gold_coin","signet_ring","silver_dollar","daddy_longlegs",},b1=A{"pocket_watch","candle","skull","lantern","mossy_rock","bouquet","crow","cursed_amulet","spirit_lantern","prayer_card","small_flag","small_statue","stone_lamb","teddy_bear_memorial","wilted_lily","","music_box",},b2=A{"stone_cross","shovel","wheelbarrow","bat_colony","cherub","funeral_wreath","garden_urn","granite_marker",},b3=A{"nun","gravedigger","hearse","obelisk","historian","iron_gate","ossuary","priest","stone_bench","visitor_with_flowers","war_memorial","widow","wrought_iron_fence",},b4=A{"chapel","bell_tower","",},},rare={b0=A{"slug","mushroom","glass_eye","square_nail",},b3=A{"bone_dragon","cursed_tomb","family_plot","funeral_director","","tomb_of_the_unknown",},b1=A{"lich_s_phylactery","candlestick","chalice","crow_on_a_headstone","grave_rubbing","silver_spoon","deed_to_the_land",},b2=A{"marble_cross","owl_on_a_cross","raven",},b4=A{"presidential_monument","pyramid_tomb",},},epic={b0=A{"golden_scarab","gold_tooth",},},},["place:cafe"]={common={b0=A{"coffee_bean","sugar_cube",},b1=A{"cookie","muffin","bagel","honey_jar","paper_cup","croissant","sandwich","spoon","milk_carton","cake","biscotti","cinnamon_roll","croissant_basket","danish","pain_au_chocolat","scone","open_sign","avocado_toast",},b2=A{"pastry_case",},b3=A{"college_student",},},uncommon={b0=A{"sugar_packet","crumb",},b1=A{"cappuccino","chai","coffee_cup_sleeve","cold_brew","drip_coffee","espresso","latte","","","wifi_password_card","chai_latte","coffee_grinder","teacup","menu",},b2=A{"specials_chalkboard",},b3=A{"streamer",},},rare={b1=A{"espresso_machine_portafilter","frappe","laptop_with_stickers","matcha","mocha",},b0=A{"almond",},},},["place:coffee_shop"]={common={b0=A{"coffee_bean","sugar_cube",},b1=A{"cookie","muffin","donut","paper_cup","croissant","biscotti","cappuccino","coffee_cup_sleeve","cold_brew","drip_coffee",},b2=A{"pastry_case",},b3=A{"college_student",},},uncommon={b0=A{"sugar_packet",},b1=A{"espresso","latte","wifi_password_card","chai_latte","coffee_grinder","espresso_machine_portafilter","frappe",},b2=A{"coffee_roaster",},},rare={b1=A{"laptop_with_stickers","mocha","vietnamese_coffee",},},},civic={common={b0=A{"confetti","thumbtack","staple","googly_eye","mint","pill","subway_token","bingo_chip","cough_drop","cufflink","penny","stamp","cotton_ball","hearing_aid","","brooch","eraser","ping_pong_ball","rosary","rubber_band","tea_light","","tie_clip","usb_stick","","","","",},b1=A{"key","rubiks_cube","medal","shuttlecock","bus_pass","library_card","mug","pen","parking_ticket","paperback","pencil","notebook","hardcover","pigeon","ruler","coffee_maker","wall_clock","","globe","memorial_flag","briefcase","keyboard","crystal_ball","datapad","healing_potion","magic_wand","pointed_hat","potion_bottle","scroll","spellbook","tankard","","ballot","","baton","bugle","capo","clapperboard","clipboard","coat_check_ticket","concert_program","","cornet","date_stamp","drumhead","family_photo","foot_pedal","form","glow_stick","guitar_tuner","handbell","hat_plume","highlighter","ink_pad","laminated_sign","library_book","light_up_wand","manila_folder","metronome","microphone","music_stand_light","opera_glasses","overdue_book","piccolo","playbill","","rolled_up_map","rosin","rubber_stamp","script","setlist","shako","sheet_music","staple_remover","theater_mask","triangle","deli_ticket","festival_wristband","chess_set",},b2=A{"backpack","mop_bucket","printer","trumpet","computer_monitor","potted_plant","violin","clarinet","saxophone","suitcase","chair","tuba","wedding_cake","office_chair","trombone","cello","mailbox","mop","chainmail","hooded_cloak","short_sword","tavern_sign","torch","wooden_shield","broadsword","cauldron","dungeon_chest","band_poster","band_uniform","book_cart","bow","card_catalog","drum_stool","flute","guitar_strap","guitar_string","lanyard","makeup_mirror","oboe","prop_sword","stage_monitor","tour_t_shirt",},b3=A{"stone_lion","crossing_guard","tourist","janitor","mail_carrier","businessperson","coat_rack","police_officer","vending_machine","bike_rack","fountain","statue","adventurer","alchemist","android","bard","broomstick","castle_gate","dragon_statue","innkeeper","knight","knight_statue","squire","wizard","wizard_s_staff","","audio_cable","microphone_stand","actor","bake_sale_table","bassist","baton_twirler","bookmobile","bouncer","cellist","clerk","color_guard","concertmaster","conductor","costume_rack","dance_floor","dj","drum_major","drumline","drummer","firefighter","flag","flutist","guitarist","keyboardist","lead_singer","marquee","merch_table","metal_detector","opera_singer","piano_tuner",},b4=A{"fire_truck","school_bus","helicopter","fire_station","monument","post_office","synagogue","bank","bell_tower","mosque","police_station","church","library","clock_tower","",},b5=A{"stadium",},},uncommon={b1=A{"pocket_watch","business_card","crayon","glue_stick","id_badge","bell","roll_of_tape","computer_mouse","bow_tie","marker","smoke_detector","","reading_glasses","sandwich","calculator","candle","coffee_cup","postcard","stapler","folded_map","paintbrush","scissors","telephone","walkie_talkie","envelope","water_bottle","basketball","flyer","","nameplate","picture_frame","tablet","thermos","letter","magazine","recorder","board_game","snare_drum","typewriter","knight_s_helm","chalice","tuning_fork","usher_s_flashlight","vip_pass","visitor_badge","voter_registration","autograph","crt_monitor","cymbal","disco_ball","gavel","glockenspiel","chocolate_bar","lunch_pail",},b3=A{"piano","nun","librarian","student","bookshelf","grandfather_clock","grand_piano","ping_pong_table","cannon","police_car","ambulance","obelisk","totem_pole","flagpole","giant","golem","sphinx","throne","polling_booth","roadie","school_crossing_sign","security_desk","soprano","sound_engineer","speaker_stack","stagehand","teacher","tenor","theater_director","ticket_booth","trumpet_player","usher","velvet_curtain","velvet_rope","violinist","box_seat","choir","concert_hall_chandelier",},b4=A{"courthouse","school","cathedral","hospital","museum","city_hall","castle","dragon","wizard_s_tower","capitol_dome","concert_hall",},b2=A{"dwarf_miner","robot_dog","small_robot","bagpipes","blouse","bulletin_board","bust","chalkboard","choir_robe","director_s_chair","dj_turntable","dress_shirt","filing_cabinet","fog_machine","french_horn","globe_on_a_stand","karaoke_machine","keyboard_stand","lab_coat","","mixing_board","music_stand","overhead_projector","painting","photocopier","piano_bench","podium","road_case","school_desk","marching_band_drum",},b0=A{"","","","","","","","drum_key","","mute","paper_clip","band_aid","earplug","pom_pom","pinch_of_glitter","pipe_cleaner","felt_scrap","scrabble_tile","used_tissue","popcorn_kernel",},},rare={b1=A{"compass","pager","crystal","floppy_disk","passport","hourglass","magnifying_glass","trophy","deed_to_the_land","jury_summons","laptop","laser_pointer","plaque","ribbon_rosette","savings_bond","school_bell","security_camera","spotlight","stock_certificate","confetti_cannon","crown","stamp_collection","tiara",},b2=A{"sword_in_the_stone","scrubs","sculpture","sousaphone","subwoofer","timpani","viola","water_cooler","xylophone","church_bell","gong","scepter",},b0=A{"","antimatter","dark_matter_sample","travel_soap","hearing_aid_battery","test_strip","thermometer_cover","glass_eye",},b3=A{"crowd_surfer","double_bass","drum_kit","harp","judge","lighting_rig","","marimba","mayor","mosh_pit","orchestra","orchestra_pit","pipe_organ","stage","stage_curtain","statue_of_a_founder","","war_memorial","brass_band",},b4=A{"field_show","theater","tour_bus","train_station",},},},street={common={b0=A{"confetti","button","cherry_pit","gravel","subway_token","dime","earring","glass_shard","gum","pebble","penny","pistachio_shell","nickel","quarter","earbud","sim_card","bottle_cap","cigarette_butt","hair_tie","chestnut","candy_wrapper","maple_seed","screw","sticker","ketchup_packet","matchstick","ticket_stub","","microchip",},b1=A{"matchbook","key","lighter","leaf","can","coffee_cup","feather","receipt","sparrow","takeout","banana_peel","milk_carton","rat","glove","flyer","magazine","bike_helmet","fedora","license_plate","newspaper","pigeon","boot","milk_crate","hubcap","crow","shopping_bag","hologram_projector","","glow_stick","coffee_lid","","plastic_fork","plastic_wrap","popcorn_bag","styrofoam_cup","twist_tie","used_napkin","broken_toy","cracked_phone","crumpled_paper","orange_peel","six_pack_ring","popped_balloon","pamphlet","","air_freshener","beret","bike_bell","bike_lock","bucket_hat","bumper_sticker","bus_transfer","chewed_pen","clog","crosswalk_button","delivery_bag","dog_poop_bag","earmuffs","energy_drink_can","headband","festival_wristband",},b2=A{"backpack","manhole_cover","stray_dog","bicycle_wheel","duffel_bag","safety_vest","storm_drain_grate","suitcase","traffic_cone","trash_bag","fire_hydrant","","trash_can","torch","band_poster","tour_t_shirt","","torn_poster","hoodie","t_shirt","puddle","raincoat","suspenders","windshield_wiper","cardboard_box",},b3=A{"bicycle","crossing_guard","bus_driver","jogger","mail_carrier","moped","police_officer","bike_rack","motorcycle","","stop_sign","hot_dog_cart","food_cart","newsstand","street_sign","bus_shelter","lamppost","car","taxi","traffic_light","van","broomstick","baton_twirler","color_guard","drum_major","drumline","dumpster_overflow","scarf","dog_leash","","bus_stop_sign",},b4=A{"billboard","fire_truck","double_decker_bus","bus","school_bus","trolley",},},uncommon={b0=A{"","","","bread_tag","paint_chip","pull_tab","","","cockroach","earring_back","hair_clip","dental_floss_pick","deodorant_cap","band_aid","pill_bottle_cap","bike_valve_cap","chewed_gum","used_tissue","booger","cork","earplug","old_coin",},b1=A{"padlock","keychain","bus_pass","credit_card","donut","bagel","lottery_ticket","hamburger","paper_cup","wallet","ashtray","pretzel","cigar","parking_ticket","phone","taco","hot_dog","burrito","headphones","mitten","napkin","router","spray_can","straw","","starling","beanie","beer_bottle","baseball_cap","pizza_slice","soda_bottle","license_plate_frame","loafer","","parking_stub","","reflector","road_flare","sandal","","visor","wet_leaf","stick",},b2=A{"scooter","umbrella","bollard","recycling_bin","sandwich_board","stroller","newspaper_box","barricade","mailbox","parking_meter","hoverboard","","sousaphone","antenna","abandoned_luggage","bag_of_leaves","recycling_pile","marching_band_drum",},b3=A{"police_car","ambulance","hearse","delivery_truck","food_truck","cargo_bike","commuter","delivery_cyclist","flower_stall","food_delivery_moped","payphone","pedestrian","rental_bike","rickshaw","sari","speed_bump","","street_sweeper","street_vendor","tow_zone_sign","traffic_cop","yield_sign",},b4=A{"semi_truck","subway_car","gas_station","tour_bus","",},},rare={b1=A{"paper_bag","shoe","sneaker","security_camera","traffic_camera","e_bike_battery","drone","ballet_slipper","","bowler_hat","cleats","cowboy_boot","cowboy_hat","ice_skates","skateboard_wheel","straw_hat","street_cat","top_hat",},b3=A{"garbage_truck","utility_pole","","ev_charger","parking_kiosk","cable_car","","limousine","","arcade_machine","steamroller","cement_mixer",},b2=A{"cape","dashiki","dog_on_a_leash","e_scooter","pigeon_flock","poncho","sombrero",},b4=A{"overpass","parade_float",},b0=A{"syringe_cap","medical_alert_charm","spit","bird_dropping","used_band_aid","mystery_goo","nut","brass_key",},},epic={b0=A{"gold_tooth",},},},industrial={common={b0=A{"resistor","gravel","grommet","","rivet","capacitor","microchip","pebble","washer","bottle_cap","cigarette_butt","fuse","spring","bolt","screw","allen_key","nail","","","","","","","",},b1=A{"battery","bearing","padlock","mouse","tape_measure","id_badge","can","gear","zip_tie","brick","rat","wrench","hard_hat","welding_mask","cinder_block","astronaut_ice_cream","datapad","energy_cell","hologram_projector","neon_visor","ration_pack","ray_gun","space_helmet","","","gasket","lunch_pail","pallet_wrap","railroad_spike","safety_goggles","shift_schedule","spool_of_wire","steel_toe_boot","transformer","thermos","earmuffs",},b2=A{"coil_of_rope","toolbox","bag_of_cement","crate","sandbag","tire","safety_vest","traffic_cone","oil_drum","sawhorse","cable_spool","chain","muffler","pipe","barricade","pallet","laser_sword","",},b3=A{"generator","","construction_worker","vending_machine","dumpster","portable_toilet","ladder","chain_link_fence","forklift","wrecked_car","android","cyborg","mad_scientist","moon_rover","space_trooper","spacesuit","starship_captain","teleporter_pad","tesla_coil","","","control_panel","refrigerator",},b4=A{"billboard","conveyor_belt","excavator","floodlight_tower","shipping_container","tanker_truck","freight_car","semi_truck","locomotive","oil_tank","water_tower","airplane","crane","grain_elevator","cooling_tower","","semi_trailer","storage_tank",},b5=A{"radio_tower",},},uncommon={b1=A{"hinge","spark_plug","light_bulb","gauge","pulley","circuit_board","hard_drive","tile","valve","pliers","paint_can","flashlight","screwdriver","spray_can","walkie_talkie","radio","hammer","car_battery","drill","shingle","utility_knife","work_glove","zip_lock_bag",},b2=A{"shovel","wheelbarrow","alien","hoverboard","jetpack","robot_dog","small_robot","antenna","barrel_of_chemicals","fire_coat","fire_extinguisher","hand_truck",},b3=A{"steamroller","bulldozer","scaffolding","backhoe","dump_truck","cement_mixer","flatbed_truck","foreman","forklift_driver","gas_cylinder","loading_ramp","mattress_pile","night_shift_worker","pallet_jack","welder",},b4=A{"pylon","warehouse","smokestack","factory","wind_turbine","crashed_spaceship","giant_robot","launch_tower","rocket","space_station_module","blast_furnace","container_crane","grain_barge",},b0=A{"","","","","","","cotter_pin","cockroach","earplug","nut","lock_washer","wing_nut","wire_nut","","wood_screw","drywall_anchor",},},rare={b1=A{"paint_bucket","force_field_generator","plasma_cutter","angle_grinder","hazard_sign","oil_can","time_clock","traffic_camera","wheel_chock","ski_boot",},b2=A{"chainsaw","jackhammer","pipe_wrench","","welding_torch",},b3=A{"garbage_truck","flying_saucer","time_machine","solar_panel","hazmat_suit","loading_dock",},b0=A{"antimatter","dark_matter_sample","termite","mystery_goo","eye_hook","set_screw","square_nail",},b4=A{"oil_derrick","overhead_crane","power_substation","train_car","transmission_tower",},},},["place:candy_store"]={common={b0=A{"candy","gummy_bear",},b1=A{"lollipop","","candy_jar","chocolate_bar",},b2=A{"gumball_machine",},},uncommon={b0=A{"jelly_bean","turkish_delight",},b1=A{"licorice","rock_candy",},},rare={b1=A{"box_of_chocolates",},b0=A{"",},},},["place:cocktail_bar"]={common={b0=A{"mint",},b1=A{"lime","bartender_s_rag","cocktail_umbrella","muddler",},b2=A{"bar_stool",},b3=A{"string_lights",},},uncommon={b1=A{"cocktail_shaker","martini",},},rare={b1=A{"old_fashioned",},},},["place:middle_eastern_restaurant"]={common={b0=A{"mint","pistachio",},b1=A{"shawarma","baklava","pita","incense_burner",},b2=A{"floor_cushion","hookah",},b3=A{"persian_rug",},},uncommon={b1=A{"mint_tea","hummus",},b2=A{"low_brass_table",},b0=A{"falafel",},},rare={b1=A{"backgammon_board",},b2=A{"samovar",},},},["place:tea_room"]={common={b0=A{"mint","sugar_cube",},b1=A{"lemon","honey_jar","scone","chai","","mint_tea","sugar_tongs","teapot_with_cozy","teacup",},b2=A{"samovar",},},uncommon={b0=A{"sugar_packet",},b1=A{"chai_latte","matcha","","turkish_tea_glass","scones_and_cream","teapot",},},rare={b1=A{"tea_sampler","three_tier_tray",},},},["place:vietnamese_restaurant"]={common={b0=A{"mint",},b1=A{"soup_spoon","spring_roll","sriracha_bottle","banh_mi",},},rare={b1=A{"vietnamese_coffee",},},uncommon={b1=A{"pho_bowl","vermicelli_bowl",},},},["landmark:subway"]={common={b0=A{"gum",},b1=A{"rat","","subway_map","bus_pass",},},uncommon={b2=A{"turnstile",},},},["landmark:fountain"]={common={b0=A{"penny","quarter","wishing_coin",},b1=A{"rubber_duck",},},uncommon={b0=A{"foreign_coin",},b1=A{"","toy_sailboat","sandal",},},},["place:bar"]={common={b0=A{"popcorn","olive",},b1=A{"lime","lemon","pretzel","pineapple","","bartender_s_rag","cocktail_umbrella","draft_beer","empty_wine_bottle","open_sign","coaster",},b2=A{"bar_stool","neon_bar_sign",},b3=A{"pool_cue",},},uncommon={b0=A{"peanut",},b1=A{"peanut_bowl","pint_glass","pretzel_bowl","beer_tap","caipirinha","cocktail_shaker","margarita","mimosa",},b2=A{"tv_above_the_bar",},},rare={b1=A{"sake_bottle","soju_bottle","tip_on_a_table",},b0=A{"olive_pit",},},},["place:sports_bar"]={common={b0=A{"popcorn",},b1=A{"hot_dog","draft_beer","peanut_bowl","pint_glass",},b2=A{"bar_stool","neon_bar_sign",},b3=A{"pool_cue",},},uncommon={b0=A{"peanut",},b2=A{"tv_above_the_bar",},b1=A{"chicken_wings","energy_drink",},},rare={b1=A{"dart",},b2=A{"foam_finger",},},},["place:theme_restaurant"]={common={b0=A{"popcorn",},b3=A{"birthday_song_crew","theme_restaurant_prop",},},uncommon={b3=A{"animatronic",},},},["place:greek_restaurant"]={common={b0=A{"olive",},b1=A{"gyro","baklava","greek_salad","olive_oil_bottle",},},uncommon={b1=A{"pita","souvlaki","spanakopita",},},rare={b1=A{"tzatziki",},},},["place:italian_restaurant"]={common={b0=A{"olive","ravioli",},b1=A{"cheese","pizza_slice","salami","bread","wine_bottle","rolling_pin","cannoli","gelato","olive_oil_bottle","bread_basket",},b3=A{"chef","checkered_tablecloth",},},uncommon={b1=A{"tiramisu","wine_carafe","calzone","garlic_knot","parmesan_shaker","spaghetti",},b2=A{"pizza_oven",},b0=A{"olive_pit","caper",},b3=A{"",},},rare={b1=A{"lasagna","margherita_pizza","risotto",},b0=A{"black_truffle",},},},["place:mediterranean_restaurant"]={common={b0=A{"olive","falafel",},b1=A{"greek_salad","olive_oil_bottle",},},uncommon={b1=A{"pita",},b0=A{"olive_pit",},},rare={b1=A{"hummus",},},},["event:st_patricks"]={common={b0=A{"clover",},b1=A{"green_beer","green_hat","","soda_bread",},},uncommon={b2=A{"leprechaun",},b1=A{"pot_of_gold",},},rare={b4=A{"rainbow_s_end",},},},["place:pub"]={common={b0=A{"peanut","cracker",},b1=A{"pretzel","","bartender_s_rag","draft_beer","peanut_bowl","pint_glass","pretzel_bowl","pretzel_with_mustard","coaster",},b2=A{"bar_stool","neon_bar_sign",},b3=A{"college_student",},},rare={b1=A{"beer_tap","pub_quiz_sheet","dartboard",},},uncommon={b3=A{"pool_cue",},b2=A{"specials_chalkboard",},b1=A{"chips","fish_and_chips","malt_vinegar","mushy_peas","vinegar_bottle","dart",},b0=A{"pickled_onion",},},},["event:rain"]={common={b0=A{"snail","raindrop",},b1=A{"earthworm","paper_boat","soggy_newspaper",},b2=A{"","umbrella","puddle","",},b3=A{"downspout",},},uncommon={b1=A{"frog","rain_gauge",},b2=A{"broken_umbrella","poncho","rain_barrel",},b3=A{"rain_slicked_taxi",},b4=A{"flooded_underpass",},},rare={b5=A{"rainbow",},},},["place:delicatessen"]={common={b0=A{"cracker",},b1=A{"bagel","pickle","cheese","sandwich","hot_dog","salami","rye_loaf","bagel_with_lox",},b2=A{"meat_slicer",},},uncommon={b1=A{"blt","deli_ticket","","sauerkraut","cheese_board","cold_cut_platter",},b0=A{"cornichon",},b2=A{"jamon_leg",},},rare={b1=A{"pastrami","reuben",},},},["place:wine_bar"]={common={b0=A{"cracker",},b1=A{"cheese","wine_bottle","empty_wine_bottle","wine_glass","cork_screw",},b3=A{"sommelier",},b2=A{"wine_barrel",},},uncommon={b1=A{"tasting_flight","cheese_board","champagne_flute",},},rare={b1=A{"wine_carafe","wine_list",},},},["place:diner"]={common={b0=A{"ketchup_packet",},b1=A{"egg","donut","salt_shaker","pickle","hamburger","sandwich","spoon","fork","ketchup_bottle","milk_carton","pie","plate","cereal_box","mac_and_cheese","meatloaf","pie_slice","open_sign","check_presenter","onion_rings","coleslaw",},b3=A{"line_cook",},b2=A{"diner_counter_stool",},},uncommon={b0=A{"sugar_packet",},b1=A{"bacon","hash_browns","maple_syrup","omelette","pancake_stack","scrambled_eggs","waffle","cheeseburger","milkshake","drip_coffee","","blt","","chili_dog","grilled_cheese","menu",},b3=A{"diner_waitress",},},rare={b3=A{"jukebox",},b1=A{"tip_on_a_table","knife","sundae","yellow_mustard_bottle","banana_split","",},},},["place:fast_food_restaurant"]={common={b0=A{"ketchup_packet",},b1=A{"juice_box","hamburger","paper_cup","","hot_dog","fork","burrito","ketchup_bottle","pizza_slice","paper_lined_tray","heat_lamp","tray","chocolate_bar",},b3=A{"line_cook",},b2=A{"drive_thru_speaker",},},uncommon={b1=A{"cheeseburger","hamburger_patty","milkshake","soda_fountain_cup","chicken_nuggets","yellow_mustard_bottle","corn_dog","cup_noodles",},b2=A{"hot_dog_roller_grill",},},rare={b1=A{"hot_sauce","kids_meal_toy","paper_boat_tray","sriracha_bottle",},},},["place:asian_restaurant"]={common={b1=A{"dumpling","bao","chopsticks","fried_rice",},},uncommon={b1=A{"tofu","lucky_cat",},},rare={b1=A{"red_lantern",},},},["place:korean_restaurant"]={common={b1=A{"dumpling","chopsticks","bibimbap","kimchi",},b2=A{"tabletop_grill",},},uncommon={b1=A{"soju_bottle","bulgogi","tteokbokki",},},rare={b1=A{"banchan_dishes",},},},["place:breakfast_and_brunch_restaurant"]={common={b1=A{"egg","muffin","avocado","bagel","milk_carton","cereal_box","avocado_toast","bacon",},b0=A{"raisin",},},rare={b1=A{"mimosa","waffle",},},uncommon={b1=A{"bagel_with_lox","hash_browns","maple_syrup","omelette","pancake_stack","scrambled_eggs",},},},["place:ramen_restaurant"]={common={b1=A{"egg","ramen_noodles",},b2=A{"noren_curtain",},b0=A{"narutomaki",},b3=A{"ticket_vending_machine",},},uncommon={b1=A{"soup_spoon","ramen_bowl",},},rare={b1=A{"ramen_egg",},},},["place:mexican_restaurant"]={common={b1=A{"lime","avocado","taco","burrito","hot_sauce","tamale","guacamole","horchata",},b3=A{"taco_truck",},b2=A{"sombrero_on_the_wall",},b0=A{"corn_kernel",},},uncommon={b1=A{"margarita","quesadilla","salsa_bowl","taco_shell","tortilla_chips",},},rare={b1=A{"churro_basket","enchilada",},},},["place:bakery"]={common={b1=A{"cookie","cupcake","muffin","donut","bagel","honey_jar","croissant","pie","cake","bread","rolling_pin","baguette_basket","birthday_cake_slice","biscotti",},b2=A{"wedding_cake","flour_sack",},b3=A{"baker",},b0=A{"pao_de_queijo","crumb",},},uncommon={b1=A{"brioche","cannoli","cinnamon_roll","croissant_basket","danish","frosting_piping_bag","pain_au_chocolat","rye_loaf","scone","sourdough_loaf",},b2=A{"pastry_case",},b3=A{"bread_oven",},b0=A{"","sprinkles",},},rare={b1=A{"bread_knife","eclair","tart","wedding_cake_topper",},b0=A{"macaron",},},},["place:dessert_shop"]={common={b1=A{"cookie","cupcake","mango","popsicle","ice_cream_cone","cake","birthday_cake_slice","cannoli",},b0=A{"mochi",},},uncommon={b1=A{"eclair","crepe","gelato","mango_sticky_rice","churro_basket",},b0=A{"macaron",},},rare={b1=A{"creme_brulee","tiramisu",},},},["place:cupcake_shop"]={common={b1=A{"cupcake","birthday_cake_slice",},b0=A{"sprinkles",},},uncommon={b1=A{"frosting_piping_bag",},},rare={b1=A{"sprinkle_cupcake",},},},["place:seafood_restaurant"]={common={b1=A{"lemon","oyster","fish","lobster","fish_and_chips","tartar_sauce",},b2=A{"restaurant_fish_tank",},b0=A{"lemon_wedge",},},rare={b1=A{"ceviche","crab_leg",},},uncommon={b1=A{"clam_chowder","lobster_bib","shrimp_cocktail",},b2=A{"lobster_trap",},},epic={b0=A{"caviar_pearl",},},},["place:donut_shop"]={common={b1=A{"donut","donut_box",},b0=A{"sprinkles",},},uncommon={b1=A{"glazed_donut",},b0=A{"",},},},["place:fish_and_chips_restaurant"]={common={b1=A{"salt_shaker","fish","chips","crumpled_newspaper","curry_sauce","fish_and_chips",},b0=A{"lemon_wedge",},},uncommon={b1=A{"malt_vinegar","mushy_peas","paper_cone","tartar_sauce","vinegar_bottle",},b0=A{"pickled_onion",},},rare={b1=A{"wooden_chip_fork","battered_cod",},},},["place:restaurant"]={common={b1=A{"salt_shaker","spoon","fork","cake","plate","bread","wine_bottle","empty_wine_bottle",},b3=A{"chef","string_lights",},b2=A{"specials_chalkboard",},},uncommon={b1=A{"open_sign","check_presenter","","knife","bread_basket","wine_glass","menu",},b3=A{"line_cook",},b2=A{"host_stand",},},rare={b1=A{"tip_on_a_table","reservation_card",},b3=A{"dishwasher",},},},["place:vegetarian_restaurant"]={common={b1=A{"avocado","tofu","tempeh","hummus",},b0=A{"falafel",},},uncommon={b1=A{"smoothie_bowl","quinoa_bowl",},},rare={b1=A{"veggie_burger",},},},["landmark:bell_tower"]={common={b1=A{"feather","pigeon","","bell",},},uncommon={b3=A{"bell_rope",},b2=A{"weather_vane",},},},["landmark:minaret"]={common={b1=A{"feather","pigeon","","bell",},},},["place:gastropub"]={common={b1=A{"","coaster",},b3=A{"brewing_kettle",},b2=A{"specials_chalkboard",},},uncommon={b1=A{"pint_glass",},},},["place:smoothie_juice_bar"]={common={b1=A{"juice_box","mango","coconut","pineapple",},},uncommon={b1=A{"green_juice","protein_powder","smoothie_bowl",},},rare={b1=A{"juicer",},},},["place:burger_restaurant"]={common={b1=A{"pickle","hamburger","ketchup_bottle","onion_rings",},},uncommon={b1=A{"cheeseburger","hamburger_patty","milkshake",},},rare={b1=A{"soda_fountain_cup",},},},["place:sandwich_shop"]={common={b1=A{"pickle","sandwich","salami","bread","tray","blt",},b2=A{"meat_slicer",},b0=A{"crumb",},},rare={b1=A{"cheesesteak","reuben",},},uncommon={b1=A{"deli_ticket","","grilled_cheese","banh_mi","submarine_sandwich",},},},["place:hot_dog_restaurant"]={common={b1=A{"hot_dog","ketchup_bottle","","sauerkraut","chili_dog","yellow_mustard_bottle","pickle",},b0=A{"cornichon","sport_peppers",},b2=A{"hot_dog_roller_grill",},},uncommon={b1=A{"corn_dog","paper_boat_tray","celery_salt","chopped_onions","neon_green_relish",},b0=A{"tomato_wedge",},},rare={b1=A{"poppy_seed_bun","chicago_dog",},},},["place:bar_and_grill_restaurant"]={common={b1=A{"hamburger","bbq_sauce","check_presenter","chicken_wings",},b3=A{"birthday_song_crew",},},uncommon={b1=A{"onion_rings","steak",},},rare={b1=A{"ribs_rack",},},},["place:beer_garden"]={common={b1=A{"pretzel","pretzel_bowl",},b0=A{"hop_cone",},b3=A{"string_lights",},},uncommon={b1=A{"bratwurst","pretzel_with_mustard",},b3=A{"long_wooden_table",},},rare={b1=A{"beer_stein",},},},["place:german_restaurant"]={common={b1=A{"pretzel","rye_loaf","bratwurst","pretzel_with_mustard",},},uncommon={b1=A{"beer_stein","sauerkraut",},},rare={b1=A{"schnitzel",},},},["place:indonesian_restaurant"]={common={b1=A{"coconut","nasi_goreng",},},uncommon={b1=A{"satay_skewer","tempeh",},},rare={b1=A{"rendang",},},},["landmark:tower"]={common={b1=A{"feather",},b0=A{"rust_flake",},},uncommon={b2=A{"weather_vane",},},},["place:ice_cream_shop"]={common={b1=A{"popsicle","ice_cream_cone","spoon","gelato",},b0=A{"sprinkles",},b2=A{"ice_cream_cooler",},},uncommon={b1=A{"sundae","ice_cream_scoop","waffle_cone",},b0=A{"",},},rare={b1=A{"banana_split",},},},["place:food_truck_stand"]={common={b1=A{"taco","hot_dog",},b3=A{"food_truck_window","hot_dog_cart_umbrella",},b2=A{"generator_hum",},},uncommon={b1=A{"street_food_skewer",},b3=A{"taco_truck",},},},["place:taco_restaurant"]={common={b1=A{"taco","burrito","hot_sauce","guacamole",},b3=A{"taco_truck",},},uncommon={b1=A{"horchata","quesadilla","salsa_bowl","taco_shell",},},rare={b1=A{"tortilla_chips",},},},["place:buffet_restaurant"]={common={b1=A{"fork","plate",},b3=A{"long_wooden_table",},b2=A{"buffet_tray",},},uncommon={b1=A{"heat_lamp","","ladle",},b3=A{"dessert_bar",},b2=A{"sneeze_guard",},},rare={b1=A{"tray",},},},["place:american_restaurant"]={common={b1=A{"ketchup_bottle","pie","plate","baked_potato","cornbread","fried_chicken",},},uncommon={b1=A{"mac_and_cheese","meatloaf","pie_slice",},},rare={b1=A{"cast_iron_skillet","cheesesteak",},},},["event:snow"]={common={b1=A{"mitten","snowball","","ice_scraper",},b2=A{"sled","icicle","snow_shovel","frozen_puddle",},b3=A{"snowman","snowdrift",},b0=A{"snowflake","rock_salt",},b4=A{"plowed_snowbank",},},uncommon={b1=A{"earmuffs",},b3=A{"snow_angel","snow_fort","snowplow",},b4=A{"sledding_hill",},},rare={b3=A{"igloo",},b5=A{"snowfield",},},},["place:pizza_restaurant"]={common={b1=A{"pizza_slice","pineapple","rolling_pin","calzone","garlic_knot","parmesan_shaker",},b2=A{"flour_sack","pizza_delivery_bag",},b3=A{"checkered_tablecloth","pizzaiolo",},},uncommon={b1=A{"pepperoni","","pizza_cutter","pizza_box",},b3=A{"bread_oven",},b2=A{"pizza_peel",},},rare={b1=A{"margherita_pizza","red_pepper_flakes",},b2=A{"pizza_oven",},b3=A{"",},},},["place:winery"]={common={b1=A{"wine_bottle","empty_wine_bottle",},b3=A{"fermentation_tank",},b2=A{"wine_barrel",},b4=A{"vineyard_row",},},rare={b1=A{"tasting_flight",},},uncommon={b3=A{"sommelier",},b1=A{"wine_glass","cork_screw",},b2=A{"grape_crate",},},},["landmark:artwork"]={common={b1=A{"pigeon","art_guidebook",},b0=A{"paint_chip",},},uncommon={b1=A{"sculpture_model","plaque",},b2=A{"",},},},["landmark:water_tower"]={common={b0=A{"rust_flake",},},uncommon={b2=A{"ladder_rung",},},},["landmark:mast"]={common={b0=A{"rust_flake",},b2=A{"antenna",},},uncommon={b2=A{"ladder_rung",},b1=A{"red_beacon",},},},["event:halloween"]={common={b1=A{"jack_o_lantern","bowl_of_candy","candy_bag","","full_size_candy_bar","paper_bat","porch_light","trick_or_treat_bucket","werewolf_mask","spider_web",},b0=A{"candy_corn","plastic_fangs","plastic_spider",},b3=A{"ghost_costume",},b2=A{"trick_or_treater","vampire_cape",},b4=A{"giant_jack_o_lantern","giant_cobweb","giant_inflatable_black_cat",},b5=A{"pumpkin_patch","corn_maze",},},uncommon={b1=A{"black_cat",},b2=A{"halloween_costume","tombstone_prop",},b3=A{"mummy_wrap","skeleton_decoration","spooky_inflatable","vampire","werewolf","witch","zombie",},b4=A{"giant_candy_corn","parade_float_skeleton",},b5=A{"colossal_jack_o_lantern",},},rare={b4=A{"haunted_house",},b5=A{"colossal_candy_corn",},},},["event:valentines"]={common={b1=A{"heart_box_of_chocolates","teddy_bear_with_a_heart","valentine_card","rose",},b0=A{"candy_hearts",},b2=A{"",},},uncommon={b2=A{"bouquet_of_roses","cupid",},},rare={b1=A{"love_lock",},},},["event:christmas"]={common={b3=A{"snowman","christmas_tree",},b2=A{"","gift_wrap",},b1=A{"advent_calendar","candy_cane","christmas_present","eggnog","fruitcake","holiday_card","holly_sprig","hot_cocoa","mistletoe","ornament","santa_hat","stocking",},b4=A{"giant_inflatable_snowman","giant_candy_cane","giant_wreath",},b5=A{"christmas_tree_farm",},},uncommon={b3=A{"santa","","tinsel","string_lights",},b1=A{"nutcracker","yule_log",},b2=A{"reindeer","workshop_elf",},b4=A{"giant_nutcracker",},b5=A{"colossal_christmas_tree",},},rare={b3=A{"carolers","sleigh",},b5=A{"colossal_snow_globe",},},},["event:science"]={common={b0=A{"atom","bacterium","boson","dna_strand","gluon","molecule","muon","neutrino","quark","virus","cell",},b3=A{"electron_microscope",},b4=A{"particle_accelerator",},},},["event:night_sky"]={common={b1=A{"moon",},b4=A{"aurora",},b3=A{"comet","constellation",},},uncommon={b2=A{"meteor",},},},["place:barbecue_restaurant"]={common={b1=A{"cornbread","bbq_sauce","coleslaw","paper_lined_tray",},b2=A{"tabletop_grill",},b3=A{"smoker",},},uncommon={b1=A{"cast_iron_skillet","ribs_rack","pulled_pork","brisket",},},rare={b1=A{"bulgogi",},},},["place:chicken_restaurant"]={common={b1=A{"fried_chicken","chicken_wings",},},uncommon={b1=A{"coleslaw","chicken_nuggets",},},rare={b1=A{"chicken_bucket",},},},["place:brazilian_restaurant"]={common={b0=A{"pao_de_queijo",},b1=A{"empanada","guarana_soda",},b2=A{"picanha_skewer",},},uncommon={b1=A{"caipirinha",},},rare={b1=A{"feijoada",},},},["place:lounge"]={common={b1=A{"cocktail_umbrella","cocktail_shaker",},},uncommon={b1=A{"martini","old_fashioned",},},rare={b1=A{"champagne_flute",},},},["place:beer_bar"]={common={b1=A{"draft_beer","beer_tap",},},uncommon={b1=A{"growler",},},},["place:brewery"]={common={b1=A{"draft_beer","beer_tap",},b0=A{"hop_cone",},b3=A{"brewing_kettle","brewmaster",},},uncommon={b1=A{"growler","beer_stein",},b3=A{"fermentation_tank",},},rare={b1=A{"tasting_flight",},},},["event:diwali"]={common={b3=A{"marigold_garland","rangoli","","string_lights",},b0=A{"diya","laddu",},},uncommon={b1=A{"candle_lantern","diwali_sweets_box","oil_lamp",},},rare={b3=A{"fireworks_wheel",},},},["place:latin_american_restaurant"]={common={b1=A{"empanada","arepa",},},uncommon={b1=A{"tamale",},},rare={b1=A{"ceviche",},},},["place:spanish_restaurant"]={common={b1=A{"empanada","croquette","patatas_bravas","tapas_plate",},b2=A{"jamon_leg",},b0=A{"saffron_thread",},},uncommon={b1=A{"churro_basket","paella",},},rare={b1=A{"sangria_pitcher",},},},["place:pancake_house"]={common={b1=A{"maple_syrup","pancake_stack",},},uncommon={b1=A{"waffle",},},rare={b1=A{"crepe",},},},["place:bubble_tea_shop"]={common={b1=A{"boba_straw","bubble_tea",},b0=A{"tapioca_pearls",},},uncommon={b1=A{"sealed_cup_lid",},},},["place:hookah_bar"]={common={b3=A{"college_student","hookah_hose",},b1=A{"hookah_mouthpiece","hookah_tobacco_tin",},b0=A{"pistachio",},b2=A{"floor_cushion","hookah",},},uncommon={b1=A{"incense_burner","mint_tea",},b0=A{"shisha_coal",},b2=A{"low_brass_table",},b3=A{"persian_rug",},},rare={b1=A{"backgammon_board",},b2=A{"samovar",},},},["place:internet_cafe"]={common={b3=A{"college_student","gamer",},b1=A{"wifi_password_card","cup_noodles","energy_drink","gaming_headset","gaming_mouse",},b2=A{"dual_monitors","gaming_chair",},},uncommon={b1=A{"laptop_with_stickers","mouse_pad","webcam",},b3=A{"streamer",},b2=A{"lan_party_sign",},},rare={b1=A{"gaming_keyboard","ring_light",},b3=A{"",},},},["place:chocolatier"]={common={b1=A{"chocolate_bar",},b0=A{"cocoa_beans",},},uncommon={b1=A{"box_of_chocolates",},b0=A{"chocolate_truffle",},},},["place:turkish_restaurant"]={common={b0=A{"turkish_delight",},b1=A{"baklava","mint_tea",},b2=A{"samovar",},},uncommon={b2=A{"doner_spit",},b0=A{"pistachio",},b1=A{"turkish_tea_glass",},},rare={b1=A{"backgammon_board",},},},["place:tapas_bar"]={common={b2=A{"jamon_leg",},b1=A{"croquette","patatas_bravas",},},uncommon={b1=A{"tapas_plate","paella",},},rare={b1=A{"sangria_pitcher",},},},["place:doner_kebab_restaurant"]={common={b1=A{"gyro",},b2=A{"doner_spit",},},uncommon={b1=A{"shawarma",},},},["event:new_years"]={common={b1=A{"sparkler","champagne_bottle","noisemaker","party_hat","party_horn","","tiara",},b2=A{"fireworks",},},uncommon={b4=A{"fireworks_display",},b2=A{"countdown_clock",},b1=A{"resolution_list",},},rare={b3=A{"ball_drop",},},},["event:independence_day"]={common={b1=A{"sparkler","firecracker","hot_dog_bun","watermelon_slice",},b2=A{"fireworks",},},uncommon={b4=A{"fireworks_display",},b2=A{"marching_band_drum",},},},["event:mardi_gras"]={rare={b4=A{"","parade_float",},},common={b2=A{"bead_necklace",},b1=A{"carnival_mask","king_cake",},b0=A{"doubloon",},},uncommon={b3=A{"brass_band","jester",},},},["place:movie_theater"]={common={b0=A{"popcorn_kernel",},},},["event:day_of_the_dead"]={common={b1=A{"ofrenda_candle","pan_de_muerto","sugar_skull",},b2=A{"papel_picado",},},uncommon={b1=A{"calavera_mask",},b3=A{"catrina_figure",},},rare={b3=A{"ofrenda_altar",},},},["event:easter"]={common={b1=A{"chocolate_bunny","easter_basket","easter_bonnet","easter_lily","hot_cross_bun","painted_egg","plastic_egg",},b0=A{"marshmallow_chick",},},uncommon={b3=A{"easter_bunny","easter_egg_hunt",},},rare={b3=A{"giant_egg",},},},["event:eid"]={common={b1=A{"crescent_lantern","eid_cookie","henna_cone",},b0=A{"date",},},uncommon={b1=A{"eid_gift_bag","sweets_tray",},b2=A{"ramadan_lantern",},},},["event:hanukkah"]={common={b0=A{"dreidel","gelt",},b1=A{"hanukkah_candle","latke","sufganiyot",},},uncommon={b3=A{"blue_and_white_banner",},b1=A{"","menorah",},},},["event:lunar_new_year"]={common={b1=A{"mandarin_orange","nian_gao","paper_lantern","red_envelope","zodiac_figurine",},b3=A{"spring_couplet",},b4=A{"lantern_arch","giant_firecracker_string","",},b5=A{"lantern_festival",},},uncommon={b4=A{"dragon_dance","giant_mandarin_orange",},b2=A{"firecracker_string",},b3=A{"lion_dance_costume",},b5=A{"colossal_paper_dragon",},},rare={b3=A{"giant_lantern",},b5=A{"colossal_red_envelope",},},},["event:thanksgiving"]={common={b2=A{"cornucopia",},b1=A{"cranberry_sauce","gravy_boat","mashed_potatoes","pumpkin_pie","roast_turkey","stuffing",},},uncommon={b3=A{"parade_balloon",},},rare={b3=A{"dinner_table",},},},},},{name="people",every=3600,input="keys",chances={common=0,},pools={civic={common=A{"","",},},commercial={common=A{"","",},},field={common=A{"","",},},industrial={common=A{"","",},},lot={common=A{"","",},},park={common=A{"","","",},},plaza={common=A{"","",},},residential={common=A{"","","","",},},street={common=A{"","","",},},trail={common=A{"","","",},},woods={common=A{"","",},},},},{name="presents",every=14400,input="gps",chances={common=2500,},pools={cemetery={common=A{"present",},},civic={common=A{"present",},},commercial={common=A{"present",},},field={common=A{"present",},},industrial={common=A{"present",},},lot={common=A{"present",},},park={common=A{"present",},},plaza={common=A{"present",},},residential={common=A{"present",},},street={common=A{"present",},},trail={common=A{"present",},},water={common=A{"present",},},woods={common=A{"present",},},},},{name="regional",every=10800,by="region",cells=A{"residential",},chances={common=160000,uncommon=40000,},pools={["region:philly"]={common=A{"","hoagie","water_ice","scrapple","roast_pork_sandwich","black_and_white_cookie","pastrami_on_rye","","arancini","pizzelle","meatball_sub","corned_beef_and_cabbage","","bagel_and_lox","knish","matzo_ball_soup",},},["region:pennsylvania"]={common=A{"scrapple","shoofly_pie","whoopie_pie","chow_chow","apple_butter","",},uncommon=A{"","",},},["region:ohio"]={common=A{"scrapple","shoofly_pie","whoopie_pie","chow_chow","apple_butter","sambusa","suqaar","bariis","",},uncommon=A{"","",},},["region:indiana"]={common=A{"scrapple","shoofly_pie","whoopie_pie","chow_chow","apple_butter","",},uncommon=A{"","",},},["region:nyc"]={common=A{"black_and_white_cookie","egg_cream","pastrami_on_rye","chopped_cheese","halal_cart_platter","","arancini","pizzelle","meatball_sub","corned_beef_and_cabbage","","dim_sum","egg_tart","roast_duck","kimchi_stew","","bagel_and_lox","knish","matzo_ball_soup","loukoumades","saganaki","jerk_chicken","beef_patty","roti","oxtail","fattoush","kibbeh",},},["region:montreal"]={common=A{"black_and_white_cookie","pastrami_on_rye","poutine","butter_tart","maple_taffy","","smoked_meat_sandwich","tourtiere","ketchup_chips","bagel_and_lox","knish","matzo_ball_soup","fattoush","kibbeh",},},["region:massachusetts"]={common=A{"lobster_roll","baked_beans","","fried_clams","malasadas","linguica","sweet_bread","",},uncommon=A{"","",},},["region:connecticut"]={common=A{"lobster_roll","baked_beans","","fried_clams","",},uncommon=A{"","",},},["region:rhode_island"]={common=A{"lobster_roll","baked_beans","","fried_clams","malasadas","linguica","sweet_bread","",},uncommon=A{"","",},},["region:new_hampshire"]={common=A{"lobster_roll","baked_beans","","fried_clams","",},uncommon=A{"","",},},["region:vermont"]={common=A{"lobster_roll","baked_beans","","fried_clams","",},uncommon=A{"","",},},["region:maine"]={common=A{"lobster_roll","baked_beans","","fried_clams","",},uncommon=A{"","",},},["region:chicago"]={common=A{"deep_dish_pizza","","tavern_style_pizza","caramel_corn","paczki","pierogi","kielbasa","golabki","kolacky","corned_beef_and_cabbage","","tamales","tacos_al_pastor","pozole","menudo","concha","loukoumades","saganaki",},},["region:michigan"]={common=A{"","coney_dog","paczki","cherry_pie","",},uncommon=A{"","",},},["region:pittsburgh"]={common=A{"paczki","pierogi","fries_in_the_sandwich","kielbasa","golabki","kolacky","borscht","holubtsi",},},["region:new_york"]={common=A{"paczki","pierogi","buffalo_wings","beef_on_weck","kielbasa","golabki","kolacky","",},uncommon=A{"","",},},["region:detroit"]={common=A{"paczki","pierogi","kielbasa","golabki","kolacky","fattoush","kibbeh",},},["region:minnesota"]={common=A{"cheese_curds","hotdish","","butter_burger","walleye","lefse","lutefisk","krumkake","","sambusa","suqaar","bariis","","papaya_salad","sticky_rice","",},uncommon=A{"","",},},["region:wisconsin"]={common=A{"cheese_curds","hotdish","","butter_burger","walleye","lefse","lutefisk","krumkake","","","papaya_salad","sticky_rice","",},uncommon=A{"","",},},["region:north_dakota"]={common=A{"cheese_curds","hotdish","","butter_burger","walleye","lefse","lutefisk","krumkake","","",},uncommon=A{"","",},},["region:south_dakota"]={common=A{"cheese_curds","hotdish","","butter_burger","walleye","",},uncommon=A{"","",},},["region:st_louis"]={common=A{"toasted_ravioli","gooey_butter_cake","","burnt_ends","","arancini","pizzelle","meatball_sub","strudel","kolsch_beer",},},["region:missouri"]={common=A{"toasted_ravioli","gooey_butter_cake","","burnt_ends","",},uncommon=A{"","",},},["region:kansas"]={common=A{"toasted_ravioli","gooey_butter_cake","","burnt_ends","",},uncommon=A{"","",},},["region:texas"]={common=A{"kolache","queso","breakfast_taco","chicken_fried_steak","enchiladas","strudel","kolsch_beer","tamales","tacos_al_pastor","pozole","menudo","concha","pho","bun_cha","che","etouffee","boudin","andouille","dirty_rice","",},uncommon=A{"","",},},["region:tennessee"]={common=A{"dry_rub_ribs","biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:north_carolina"]={common=A{"vinegar_pulled_pork","biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:south_carolina"]={common=A{"vinegar_pulled_pork","biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:alabama"]={common=A{"white_sauce_chicken","biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:new_orleans"]={common=A{"gumbo","po_boy","beignet","muffuletta","crawfish_boil","jambalaya",},},["region:louisiana"]={common=A{"gumbo","po_boy","beignet","muffuletta","crawfish_boil","jambalaya","biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","etouffee","boudin","andouille","dirty_rice","",},uncommon=A{"","",},},["region:florida"]={common=A{"","key_lime_pie","stone_crab","conch_fritter","orange_juice","cafecito","pastelito","media_noche","loukoumades","saganaki","jerk_chicken","beef_patty","roti","oxtail","",},uncommon=A{"","",},},["region:georgia"]={common=A{"biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","kimchi_stew","","",},uncommon=A{"","",},},["region:mississippi"]={common=A{"biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:kentucky"]={common=A{"biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:arkansas"]={common=A{"biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:virginia"]={common=A{"biscuits_and_gravy","grits","sweet_tea","shrimp_and_grits","hush_puppies","pimento_cheese","collard_greens","peach_cobbler","",},uncommon=A{"","",},},["region:maryland"]={common=A{"crab_cakes","steamed_crabs","tin_of_crab_seasoning","","",},uncommon=A{"","",},},["region:dc"]={common=A{"crab_cakes","steamed_crabs","tin_of_crab_seasoning","","half_smoke","pho","bun_cha","che","injera","doro_wat","",},uncommon=A{"",},},["region:baltimore"]={common=A{"crab_cakes","steamed_crabs","tin_of_crab_seasoning","",},},["region:california"]={common=A{"fish_taco","","sourdough_bread","tri_tip","artichoke","tamales","tacos_al_pastor","pozole","menudo","concha","pho","bun_cha","che","","papaya_salad","sticky_rice","malasadas","linguica","sweet_bread","",},uncommon=A{"","",},},["region:washington"]={common=A{"marionberry_pie","geoduck","",},uncommon=A{"","",},},["region:oregon"]={common=A{"marionberry_pie","geoduck","",},uncommon=A{"","",},},["region:arizona"]={common=A{"green_chile_stew","sopaipilla","","chimichanga","tamales","tacos_al_pastor","pozole","menudo","concha","",},uncommon=A{"","",},},["region:new_mexico"]={common=A{"green_chile_stew","sopaipilla","","chimichanga","tamales","tacos_al_pastor","pozole","menudo","concha","",},uncommon=A{"","",},},["region:utah"]={common=A{"fry_sauce","funeral_potatoes","","elk_burger","",},uncommon=A{"","",},},["region:colorado"]={common=A{"","elk_burger","",},uncommon=A{"","",},},["region:wyoming"]={common=A{"","elk_burger","",},uncommon=A{"","",},},["region:montana"]={common=A{"","elk_burger","",},uncommon=A{"","",},},["region:idaho"]={common=A{"","elk_burger","chorizo_and_eggs","","",},uncommon=A{"","",},},["region:nevada"]={common=A{"buffet_plate","prime_rib_special","chorizo_and_eggs","","",},uncommon=A{"","",},},["region:toronto"]={common=A{"poutine","butter_tart","peameal_bacon_sandwich","ketchup_chips","dim_sum","egg_tart","roast_duck","jerk_chicken","beef_patty","roti","oxtail",},},["region:vancouver"]={common=A{"poutine","butter_tart","","ketchup_chips","dim_sum","egg_tart","roast_duck",},},["region:st_johns"]={common=A{"poutine","butter_tart","ketchup_chips",},},["region:boston"]={common=A{"","arancini","pizzelle","meatball_sub","corned_beef_and_cabbage","",},},["region:cleveland"]={common=A{"","arancini","pizzelle","meatball_sub",},},["region:milwaukee"]={common=A{"strudel","kolsch_beer",},},["region:cincinnati"]={common=A{"","strudel","kolsch_beer",},},["region:seattle"]={common=A{"pho","bun_cha","che","injera","doro_wat",},},["region:bay"]={common=A{"dim_sum","egg_tart","roast_duck","adobo","lumpia","halo_halo","pancit",},},["region:los_angeles"]={common=A{"dim_sum","egg_tart","roast_duck","kimchi_stew","","adobo","lumpia","halo_halo","pancit",},},["region:new_jersey"]={common=A{"kimchi_stew","","",},uncommon=A{"","",},},["region:alaska"]={common=A{"",},uncommon=A{"","",},},["region:delaware"]={common=A{"",},uncommon=A{"","",},},["region:hawaii"]={common=A{"",},uncommon=A{"","",},},["region:illinois"]={common=A{"",},uncommon=A{"","",},},["region:iowa"]={common=A{"",},uncommon=A{"","",},},["region:nebraska"]={common=A{"",},uncommon=A{"","",},},["region:oklahoma"]={common=A{"",},uncommon=A{"","",},},["region:west_virginia"]={common=A{"",},uncommon=A{"","",},},},},},messages={here=".",left="You left here.",gone="That isn't here any more.",cant="You can't .",carrying="You're already carrying .",not_carrying="You aren't carrying .",no_room="There's no room for .",},symbols={halloween_line=A{" . "," "," .",},halloween_sight=A{"A jack-o'-lantern grins","Paper bats flutter","A plastic skeleton lounges","Fake cobwebs droop","A witch's hat hangs","An inflatable black cat sways",},halloween_where=A{"on a stoop","in a window","along a fence","under a streetlight","by a front door","on a porch",},halloween_scene=A{"Somewhere a doorbell rings, and a chorus shouts \"trick or treat!\"","A recorded cackle loops from someone's porch.","Candy wrappers crinkle in the gutter.","A speaker in a bush moans, on a loop.","A kid in a bedsheet ghost costume waddles past.",},halloween_mood=A{"It's Halloween week.","Spooky season is in full swing.","There's candy in the air.","The whole street is in on it.","Everything's a little spookier this week.",},christmas_line=A{" . "," ",},christmas_sight=A{"String lights blink","A wreath hangs","An inflatable snowman leans","A plastic reindeer stands guard","Tinsel glints",},christmas_where=A{"on a porch rail","in a window","over a doorway","along a fence","on a lamppost",},christmas_sound=A{"Someone's speaker is playing the same carol again.","Sleigh bells jingle from a doorway.","Wrapping paper rustles in a recycling bin.",},christmas_mood=A{"It's Christmastime.","The holidays are here.","Everyone's in a festive mood.",},lunar_new_year_line=A{" . "," ",},lunar_new_year_sight=A{"Red lanterns sway","A paper dragon's tail peeks out","Red envelopes are taped up","Paper cuttings brighten",},lunar_new_year_where=A{"over a doorway","in a shop window","along a balcony","on a door",},lunar_new_year_sound=A{"Firecrackers pop a few blocks away.","A drum beats somewhere nearby.",},lunar_new_year_mood=A{"It's the new year.","The new year's just begun.","Good luck is in the air.",},unbirthday_line=A{"It's a very merry unbirthday! Presents are everywhere.","Presents, presents everywhere. A very merry unbirthday!",},rat_king_here=A{"A rat in a paper crown sits on a bottle cap as if it were a throne. The rat king.","The rat king holds court on a drain grate, his tail draped like a cape.","A rat with a bottle-cap crown is giving orders to nobody in particular. The rat king.",},electron_here=A{"An electron zips in tight little circles here, humming to itself.","A tiny electron hovers here, crackling faintly. It seems to be waiting for someone.",},ember_here=A{"A single ember glows in the gutter here, refusing to go out.","An ember sits on the ground, pulsing orange, muttering to itself.",},three_here=A{"The number three is here, leaning on a lamppost, counting the cars. It gets to three and starts over.","A large, friendly number three stands here, looking pleased with itself.",},},ball={start=60,star={stardust=10,},cube=true,},collections={compendium={pays={stardust=1,},},wardrobe={},words={},},shop={pay="stardust",text="bought: ",upgraded="upgraded: , level ",always=A{{thing="present",price=40,["then"]="open",},{thing="w_trinket_of_sorting",price=300,into="wardrobe",record="wardrobe",levels=A{500,1000,2000,3000,4000,5000,10000,},},{thing="w_gravity_charm",price=500,into="wardrobe",record="wardrobe",levels=A{1000,2000,3000,4000,5000,10000,20000,},},},daily=A{{what="wearable",count=3,into="wardrobe",record="wardrobe",prices={uncommon=80,rare=200,epic=600,},},{what="word",count=3,into="words",record="words",prices={common=30,uncommon=60,rare=150,epic=400,},},},},parts={food="food",plants="plants",animals="animals",people="people",nature="nature",detritus="detritus",valuables="valuables",clothes="clothes",toys="toys and games",instruments="instruments",household="household",electronics="electronics",hardware="hardware",vehicles="vehicles",fixtures="street fixtures",buildings="buildings",crafts="crafts",},slots=A{"head","torso","legs","feet","trinket",},events={unbirthday={name="a very merry unbirthday!",text="a very merry unbirthday! ten times the presents, everywhere",line="",minutes=5,boosts={presents=10,},},halloween={name="happy halloween!",text="happy halloween! spooky things are out",line="",minutes=60,tags=A{"event:halloween",},dates=A{A{"10-24","10-31",},},},christmas={name="merry christmas!",text="merry christmas! christmas things everywhere",line="",minutes=60,tags=A{"event:christmas",},dates=A{A{"12-18","12-26",},},},lunar_new_year={name="happy lunar new year!",text="happy lunar new year! new year things are out",line="",minutes=60,tags=A{"event:lunar_new_year",},dates=A{A{"2027-02-06","2027-02-12",},A{"2028-01-26","2028-02-01",},A{"2029-02-13","2029-02-19",},A{"2030-02-03","2030-02-09",},},},snowing={name="it's snowing",text="it's snowing here: snow things are out",minutes=60,tags=A{"event:snow",},weather=A{"snow","sleet",},},raining={name="it's raining",text="it's raining here: rain things are out",minutes=60,tags=A{"event:rain",},weather=A{"rain","sleet","thunder",},},},},colors={cemetery={map="green1",text="green1",},civic={map="red",text="red",},commercial={map="orange",text="orange",},field={map="yellow",text="yellow",},floor={map="dark5",text="dark5",},industrial={map="red1",text="red1",},lot={map="dark5",text="dark5",},park={map="green",text="green",},plaza={map="fg_dark",text="blue",},residential={map="purple",text="purple",},street={map="terminal_black",text="fg_dark",},water={map="blue",text="cyan",},woods={map="teal",text="teal",},},look=true,hash="e3a1bb540fe9519731beea9a8a8a80ff73b7922ff7942b7e5627e4cb1f387eb1",} end, "{\"hash\":\"e3a1bb540fe9519731beea9a8a8a80ff73b7922ff7942b7e5627e4cb1f387eb1\",\"colors\":{\"cemetery\":{\"map\":\"green1\",\"text\":\"green1\"},\"civic\":{\"map\":\"red\",\"text\":\"red\"},\"commercial\":{\"map\":\"orange\",\"text\":\"orange\"},\"field\":{\"map\":\"yellow\",\"text\":\"yellow\"},\"floor\":{\"map\":\"dark5\",\"text\":\"dark5\"},\"industrial\":{\"map\":\"red1\",\"text\":\"red1\"},\"lot\":{\"map\":\"dark5\",\"text\":\"dark5\"},\"park\":{\"map\":\"green\",\"text\":\"green\"},\"plaza\":{\"map\":\"fg_dark\",\"text\":\"blue\"},\"residential\":{\"map\":\"purple\",\"text\":\"purple\"},\"street\":{\"map\":\"terminal_black\",\"text\":\"fg_dark\"},\"water\":{\"map\":\"blue\",\"text\":\"cyan\"},\"woods\":{\"map\":\"teal\",\"text\":\"teal\"}},\"config\":{\"ref_lat\":40.0,\"layers\":{\"play\":15,\"c1\":150,\"area\":750,\"c2\":1500,\"c3\":15000,\"c4\":150000,\"altar\":500},\"clock\":{\"start\":1767225600,\"ambient\":900,\"day\":\"c4\",\"zones\":{\"step\":0.5,\"rule\":[0,1,1,2,3,4,5,6,5,7,7,8,1,1,9,10,1,0,1,5,1,1,11,12,10,1,1,13,10,14,1,10,1,1,1,1,1,15,14,1,16,2,2,8,17,1,18,1,2,2,2,4,19,20,1,21,22,23,22,24,2,25,17,26,26,8,24,27,28,1,22,29,2,2,25,28,21,22,1,2,4,4,24,30,8,31,1,4,27,1,6,7,32,26,22,1,21,27,1,1,33,33,25,6,29,24,34,27,29,6,21,2,4,27,9,29,2,25,4,35,22,29,4,5,13,22,22,7,7,24,7,1,1,29,29,33,2,4,13,13,29,7,13,7,25,8,24,6,13,29,36,36,27,13,13,29,35,6,25,2,30,6,22,13,7,13,13,35,4,22,22,22,29,4,22,13,4,35,35,22,13,8,35,22,22,6,8,35,37,22,13,22,35,17,27,22,4,26,22,22,22,22,22,22,38,35,27,39,22,22,27,29,25,40,2,35,39,41,34,7,39,42,7,35,26,5,33,39,4,43,44,35,4,43,38,45,34,46,41,28,47,43,4,4,4,48,46,49,50,29,50,38,51,52,47,4,53,33,54,34,54,54,55,55,5,55,4,39,46,5,56,5,33,39,39,39,39,26,26,34,55,5,5,43,55,54,26,4,39,39,55,55,5,7,50,55,55,8,55,5,51,24,54,4,51,51,54,5,6,43,55,54,26,24,55,55,5,43,57,58,55,43,43,24,55,55,4,27,5,59,60,22,55,5,38,61,35,35,46,55,6,33,33,46,46,55,55,6,26,7,5,25,62,39,46,55,4,51,26,63,26,6,34,6,38,46,54,63,63,55,2,55,43,54,6,4,63,54,38,55,63,33,64,54,54,38,38,61,46,8,25,13,50,64,55,43,51,13],\"rules\":[[46800,1775311200,43200,1790431200,46800,1806760800,43200,1821880800,46800,1838210400,43200,1853330400,46800,1869660000,43200,1885384800,46800,1901714400,43200,1916834400,46800,1933164000,43200,1948284000,46800,1964613600,43200,1979733600,46800,1996063200,43200,2011183200,46800,2027512800,43200,2042632800,46800,2058962400,43200,2074687200,46800,2091016800,43200,2106136800,46800],[-10800],[7200],[0,1774746000,7200,1792890000,0,1806195600,7200,1824944400,0,1837645200,7200,1856394000,0,1869094800,7200,1887843600,0,1901149200,7200,1919293200,0,1932598800,7200,1950742800,0,1964048400,7200,1982797200,0,1995498000,7200,2014246800,0,2026947600,7200,2045696400,0,2058397200,7200,2077146000,0,2090451600,7200,2108595600,0],[10800],[18000],[25200],[28800],[36000],[-7200],[39600,1775318400,36000,1791043200,39600,1806768000,36000,1822492800,39600,1838217600,36000,1853942400,39600,1869667200,36000,1885996800,39600,1901721600,36000,1917446400,39600,1933171200,36000,1948896000,39600,1964620800,36000,1980345600,39600,1996070400,36000,2011795200,39600,2027520000,36000,2043244800,39600,2058969600,36000,2075299200,39600,2091024000,36000,2106748800,39600],[49500,1775311200,45900,1790431200,49500,1806760800,45900,1821880800,49500,1838210400,45900,1853330400,49500,1869660000,45900,1885384800,49500,1901714400,45900,1916834400,49500,1933164000,45900,1948284000,49500,1964613600,45900,1979733600,49500,1996063200,45900,2011183200,49500,2027512800,45900,2042632800,49500,2058962400,45900,2074687200,49500,2091016800,45900,2106136800,49500],[-10800,1775358000,-14400,1788667200,-10800,1806807600,-14400,1820116800,-10800,1838257200,-14400,1851566400,-10800,1870311600,-14400,1883016000,-10800,1901761200,-14400,1915070400,-10800,1933210800,-14400,1946520000,-10800,1964660400,-14400,1977969600,-10800,1996110000,-14400,2009419200,-10800,2027559600,-14400,2040868800,-10800,2059614000,-14400,2072318400,-10800,2091063600,-14400,2104372800,-10800],[0],[37800,1775320200,34200,1791045000,37800,1806769800,34200,1822494600,37800,1838219400,34200,1853944200,37800,1869669000,34200,1885998600,37800,1901723400,34200,1917448200,37800,1933173000,34200,1948897800,37800,1964622600,34200,1980347400,37800,1996072200,34200,2011797000,37800,2027521800,34200,2043246600,37800,2058971400,34200,2075301000,37800,2091025800,34200,2106750600,37800],[31500],[39600,1775314800,37800,1791041400,39600,1806764400,37800,1822491000,39600,1838214000,37800,1853940600,39600,1869663600,37800,1885995000,39600,1901718000,37800,1917444600,39600,1933167600,37800,1948894200,39600,1964617200,37800,1980343800,39600,1996066800,37800,2011793400,39600,2027516400,37800,2043243000,39600,2058966000,37800,2075297400,39600,2091020400,37800,2106747000,39600],[-36000],[-18000,1775358000,-21600,1788667200,-18000,1806807600,-21600,1820116800,-18000,1838257200,-21600,1851566400,-18000,1870311600,-21600,1883016000,-18000,1901761200,-21600,1915070400,-18000,1933210800,-21600,1946520000,-18000,1964660400,-21600,1977969600,-18000,1996110000,-21600,2009419200,-18000,2027559600,-21600,2040868800,-18000,2059614000,-21600,2072318400,-18000,2091063600,-21600,2104372800,-18000],[34200],[-28800],[46800],[-14400],[-32400],[39600],[43200],[14400],[-18000],[-39600],[3600],[23400],[50400],[-34200],[32400],[21600],[-21600],[19800],[-3600],[-25200],[-18000,1772953200,-14400,1793512800,-18000,1805007600,-14400,1825567200,-18000,1836457200,-14400,1857016800,-18000,1867906800,-14400,1888466400,-18000,1899356400,-14400,1919916000,-18000,1930806000,-14400,1951365600,-18000,1962860400,-14400,1983420000,-18000,1994310000,-14400,2014869600,-18000,2025759600,-14400,2046319200,-18000,2057209200,-14400,2077768800,-18000,2088658800,-14400,2109218400,-18000],[-18000,1772946000,-14400,1793509200,-18000,1805000400,-14400,1825563600,-18000,1836450000,-14400,1857013200,-18000,1867899600,-14400,1888462800,-18000,1899349200,-14400,1919912400,-18000,1930798800,-14400,1951362000,-18000,1962853200,-14400,1983416400,-18000,1994302800,-14400,2014866000,-18000,2025752400,-14400,2046315600,-18000,2057202000,-14400,2077765200,-18000,2088651600,-14400,2109214800,-18000],[3600,1771120800,0,1774144800,3600,1789866000,0],[7200,1776981600,10800,1793307600,7200,1809036000,10800,1824757200,7200,1840485600,10800,1856206800,7200,1871935200,10800,1887656400,7200,1903384800,10800,1919710800,7200,1934834400,10800,1951160400,7200,1966888800,10800,1982610000,7200,1998338400,10800,2014059600,7200,2029788000,10800,2045509200,7200,2061237600,10800,2076958800,7200,2092687200,10800,2109013200,7200],[-21600,1772956800,-18000,1793516400,-21600,1805011200,-18000,1825570800,-21600,1836460800,-18000,1857020400,-21600,1867910400,-18000,1888470000,-21600,1899360000,-18000,1919919600,-21600,1930809600,-18000,1951369200,-21600,1962864000,-18000,1983423600,-21600,1994313600,-18000,2014873200,-21600,2025763200,-18000,2046322800,-21600,2057212800,-18000,2077772400,-21600,2088662400,-18000,2109222000,-21600],[12600],[20700],[0,1774746000,3600,1792890000,0,1806195600,3600,1824944400,0,1837645200,3600,1856394000,0,1869094800,3600,1887843600,0,1901149200,3600,1919293200,0,1932598800,3600,1950742800,0,1964048400,3600,1982797200,0,1995498000,3600,2014246800,0,2026947600,3600,2045696400,0,2058397200,3600,2077146000,0,2090451600,3600,2108595600,0],[-28800,1772964000,-25200,1793523600,-28800,1805018400,-25200,1825578000,-28800,1836468000,-25200,1857027600,-28800,1867917600,-25200,1888477200,-28800,1899367200,-25200,1919926800,-28800,1930816800,-25200,1951376400,-28800,1962871200,-25200,1983430800,-28800,1994320800,-25200,2014880400,-28800,2025770400,-25200,2046330000,-28800,2057220000,-25200,2077779600,-28800,2088669600,-25200,2109229200,-28800],[16200],[7200,1774569600,10800,1792882800,7200,1806019200,10800,1824937200,7200,1837468800,10800,1856386800,7200,1868918400,10800,1887836400,7200,1900972800,10800,1919286000,7200,1932422400,10800,1950735600,7200,1963872000,10800,1982790000,7200,1995321600,10800,2014239600,7200,2026771200,10800,2045689200,7200,2058220800,10800,2077138800,7200,2090275200,10800,2108588400,7200],[-25200,1772960400,-21600,1793520000,-25200,1805014800,-21600,1825574400,-25200,1836464400,-21600,1857024000,-25200,1867914000,-21600,1888473600,-25200,1899363600,-21600,1919923200,-25200,1930813200,-21600,1951372800,-25200,1962867600,-21600,1983427200,-25200,1994317200,-21600,2014876800,-25200,2025766800,-21600,2046326400,-25200,2057216400,-21600,2077776000,-25200,2088666000,-21600,2109225600,-25200],[-14400,1772949600,-10800,1793509200,-14400,1805004000,-10800,1825563600,-14400,1836453600,-10800,1857013200,-14400,1867903200,-10800,1888462800,-14400,1899352800,-10800,1919912400,-14400,1930802400,-10800,1951362000,-14400,1962856800,-10800,1983416400,-14400,1994306400,-10800,2014866000,-14400,2025756000,-10800,2046315600,-14400,2057205600,-10800,2077765200,-14400,2088655200,-10800,2109214800,-14400],[7200,1774656000,10800,1792796400,7200,1806105600,10800,1824850800,7200,1837555200,10800,1856300400,7200,1869004800,10800,1887750000,7200,1901059200,10800,1919199600,7200,1932508800,10800,1950649200,7200,1963958400,10800,1982703600,7200,1995408000,10800,2014153200,7200,2026857600,10800,2045602800,7200,2058307200,10800,2077052400,7200,2090361600,10800,2107897200,7200],[7200,1774735200,10800,1792875600,7200,1806184800,10800,1824930000,7200,1837634400,10800,1856379600,7200,1869084000,10800,1887829200,7200,1901138400,10800,1919278800,7200,1932588000,10800,1950728400,7200,1964037600,10800,1982782800,7200,1995487200,10800,2014232400,7200,2026936800,10800,2045682000,7200,2058386400,10800,2077131600,7200,2090440800,10800,2108581200,7200],[7200,1774746000,10800,1792890000,7200,1806195600,10800,1824944400,7200,1837645200,10800,1856394000,7200,1869094800,10800,1887843600,7200,1901149200,10800,1919293200,7200,1932598800,10800,1950742800,7200,1964048400,10800,1982797200,7200,1995498000,10800,2014246800,7200,2026947600,10800,2045696400,7200,2058397200,10800,2077146000,7200,2090451600,10800,2108595600,7200],[3600,1774746000,7200,1792890000,3600,1806195600,7200,1824944400,3600,1837645200,7200,1856394000,3600,1869094800,7200,1887843600,3600,1901149200,7200,1919293200,3600,1932598800,7200,1950742800,3600,1964048400,7200,1982797200,3600,1995498000,7200,2014246800,3600,2026947600,7200,2045696400,3600,2058397200,7200,2077146000,3600,2090451600,7200,2108595600,3600],[-3600,1774746000,0,1792890000,-3600,1806195600,0,1824944400,-3600,1837645200,0,1856394000,-3600,1869094800,0,1887843600,-3600,1901149200,0,1919293200,-3600,1932598800,0,1950742800,-3600,1964048400,0,1982797200,-3600,1995498000,0,2014246800,-3600,2026947600,0,2045696400,-3600,2058397200,0,2077146000,-3600,2090451600,0,2108595600,-3600],[-10800,1772946000,-7200,1793505600,-10800,1805000400,-7200,1825560000,-10800,1836450000,-7200,1857009600,-10800,1867899600,-7200,1888459200,-10800,1899349200,-7200,1919908800,-10800,1930798800,-7200,1951358400,-10800,1962853200,-7200,1983412800,-10800,1994302800,-7200,2014862400,-10800,2025752400,-7200,2046312000,-10800,2057202000,-7200,2077761600,-10800,2088651600,-7200,2109211200,-10800],[-12600,1772947800,-9000,1793507400,-12600,1805002200,-9000,1825561800,-12600,1836451800,-9000,1857011400,-12600,1867901400,-9000,1888461000,-12600,1899351000,-9000,1919910600,-12600,1930800600,-9000,1951360200,-12600,1962855000,-9000,1983414600,-12600,1994304600,-9000,2014864200,-12600,2025754200,-9000,2046313800,-12600,2057203800,-9000,2077763400,-12600,2088653400,-9000,2109213000,-12600],[-28800,1772964000,-25200],[-21600,1772956800,-18000],[-25200,1772960400,-21600],[-36000,1772971200,-32400,1793530800,-36000,1805025600,-32400,1825585200,-36000,1836475200,-32400,1857034800,-36000,1867924800,-32400,1888484400,-36000,1899374400,-32400,1919934000,-36000,1930824000,-32400,1951383600,-36000,1962878400,-32400,1983438000,-36000,1994328000,-32400,2014887600,-36000,2025777600,-32400,2046337200,-36000,2057227200,-32400,2077786800,-36000,2088676800,-32400,2109236400,-36000],[-32400,1772967600,-28800,1793527200,-32400,1805022000,-28800,1825581600,-32400,1836471600,-28800,1857031200,-32400,1867921200,-28800,1888480800,-32400,1899370800,-28800,1919930400,-32400,1930820400,-28800,1951380000,-32400,1962874800,-28800,1983434400,-32400,1994324400,-28800,2014884000,-32400,2025774000,-28800,2046333600,-32400,2057223600,-28800,2077783200,-32400,2088673200,-28800,2109232800,-32400],[-7200,1774746000,-3600,1792890000,-7200,1806195600,-3600,1824944400,-7200,1837645200,-3600,1856394000,-7200,1869094800,-3600,1887843600,-7200,1901149200,-3600,1919293200,-7200,1932598800,-3600,1950742800,-7200,1964048400,-3600,1982797200,-7200,1995498000,-3600,2014246800,-7200,2026947600,-3600,2045696400,-7200,2058397200,-3600,2077146000,-7200,2090451600,-3600,2108595600,-7200]],\"rows\":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,0,60,-1,200,1,225,2,290,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,279,-1,292,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,256,-1,297,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,244,-1,301,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,245,-1,306,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,245,-1,310,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,245,-1,315,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,246,-1,319,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,246,-1,324,1,326,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,246,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,247,-1,349,3,360,4,410,5,470,6,515,7,532,8,590,9,680,0],[0,-1,200,1,225,2,247,-1,349,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,718,-1],[0,-1,200,1,225,2,247,-1,349,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,714,-1],[0,-1,200,1,225,2,248,-1,352,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,710,-1],[0,-1,200,1,225,2,248,-1,357,3,360,4,410,5,470,6,515,7,532,8,554,10,600,11,680,0,706,-1],[0,-1,200,1,225,2,249,-1,414,5,470,6,512,-1,516,7,532,8,554,10,600,11,680,0,702,-1],[0,-1,200,1,225,2,249,-1,421,5,470,6,507,-1,519,7,532,8,554,10,600,11,680,0,698,-1],[0,-1,200,1,225,2,249,-1,429,5,470,6,501,-1,522,7,532,8,554,10,600,11,680,0,694,-1],[0,-1,200,1,225,2,250,-1,436,5,470,6,495,-1,525,7,532,8,554,10,600,11,680,0,690,-1],[0,-1,226,2,250,-1,444,5,470,6,490,-1,528,7,532,8,554,10,600,11,680,0,686,-1],[0,-1,229,2,250,-1,451,5,470,6,484,-1,531,7,532,8,554,10,600,11,680,0,682,-1],[0,-1,230,12,232,2,251,-1,459,5,470,6,478,-1,538,8,554,10,589,-1],[0,-1,231,12,232,2,251,-1,466,5,470,6,473,-1,549,8,554,10,566,-1],[0,-1,232,13,238,2,251,-1],[0,-1,233,13,245,2,252,-1],[0,-1,234,13,244,2,251,-1],[0,-1,238,13,242,2,249,-1],[0,-1,243,2,247,-1],[0,-1,267,2,271,-1],[0,-1,266,2,273,-1],[0,-1,268,2,273,-1],[0,-1],[0,-1,305,14,306,-1],[0,-1],[0,-1,307,14,308,-1],[0,-1,306,14,308,-1],[0,-1,306,14,307,-1],[0,-1,303,14,304,-1,305,14,306,-1],[0,-1,222,13,223,-1,304,14,306,-1],[0,-1,220,13,227,-1],[0,-1,217,13,228,-1,677,15,678,-1],[0,-1,213,13,223,2,233,-1,286,14,289,-1,677,15,678,-1],[0,-1,213,13,223,2,227,-1,284,14,288,-1,677,15,679,-1],[0,-1,212,13,223,2,226,-1,276,14,277,-1],[0,-1,210,13,223,2,224,-1],[0,-1,210,13,223,2,224,-1,241,16,242,-1,698,17,699,-1],[0,-1,209,13,222,18,224,-1,238,16,244,-1],[0,-1,209,13,216,18,223,-1,237,16,245,-1],[0,-1,209,13,215,18,223,-1,237,16,245,-1],[0,-1,208,13,215,18,222,-1,691,17,693,-1],[0,-1,208,13,213,18,224,-1],[0,-1,208,13,213,18,225,-1,497,19,501,-1,717,17,718,-1],[0,-1,208,13,214,18,225,-1,497,19,502,-1],[0,-1,208,20,209,13,212,20,215,18,227,-1,497,19,500,-1],[0,-1,208,20,215,18,229,-1],[0,-1,208,20,215,18,229,-1,717,17,719,-1],[0,-1,209,20,216,18,229,-1,694,17,697,-1],[0,-1,208,20,216,18,229,-1,435,3,437,-1,693,17,694,-1,695,17,699,-1],[0,-1,209,20,217,18,229,-1,460,19,461,-1,463,19,465,-1,693,17,701,-1],[0,-1,209,20,216,21,230,-1,692,17,702,-1],[0,-1,209,20,217,21,230,-1,693,17,702,-1],[0,-1,209,20,218,21,230,-1,694,17,703,-1],[0,-1,6,22,9,-1,210,20,216,21,230,-1,695,17,704,-1],[0,-1,6,22,8,-1,210,23,211,20,214,23,217,21,230,-1,652,24,655,-1,697,17,707,-1],[0,-1,210,23,217,21,231,-1,651,24,657,-1,699,17,706,-1],[0,-1,211,23,216,21,233,-1,650,24,657,-1,701,17,707,-1],[0,-1,211,23,216,21,233,-1,650,24,657,-1,702,17,708,-1],[0,-1,211,23,216,25,234,-1,649,24,657,-1,702,17,709,-1,710,17,711,-1],[0,-1,212,23,216,25,235,-1,649,24,657,-1,704,17,713,-1],[0,-1,212,23,216,25,234,26,236,-1,649,24,652,-1,654,24,657,-1,704,17,713,-1],[0,-1,212,23,216,25,233,26,237,-1,339,27,341,-1,647,24,650,-1,655,24,657,-1,710,17,714,-1],[0,-1,213,23,217,25,233,26,236,-1,647,24,649,-1,654,24,657,-1,708,17,715,-1],[0,-1,213,23,217,25,233,26,237,-1,652,24,655,-1,707,17,716,-1],[0,-1,213,23,218,25,233,26,243,-1,515,19,516,-1,645,28,648,-1,650,28,654,-1,709,17,717,-1],[0,-1,212,23,218,25,233,26,245,-1,641,29,642,28,655,-1,709,17,717,-1],[0,-1,212,23,218,25,233,26,246,-1,515,19,516,-1,640,29,642,28,660,-1,709,17,714,-1,715,17,718,-1],[0,-1,212,23,218,25,222,30,223,25,233,26,247,-1,334,27,336,-1,639,29,642,28,659,31,661,-1,709,17,713,-1],[0,-1,213,23,218,25,220,30,224,25,233,26,247,-1,639,29,642,28,656,31,660,-1,708,17,712,-1],[0,-1,214,23,219,30,223,25,233,26,247,-1,633,29,635,-1,639,29,642,28,656,31,661,-1,707,17,712,-1],[0,-1,214,23,219,30,227,32,230,25,233,26,249,-1,632,29,642,28,649,31,661,-1,706,17,711,-1],[0,-1,215,23,219,30,227,32,230,25,233,26,247,33,250,-1,593,9,596,-1,631,29,642,28,647,31,662,-1,706,17,710,-1],[0,-1,215,23,219,30,227,32,230,34,233,26,245,33,252,-1,398,3,401,-1,591,9,598,-1,629,29,642,28,646,31,662,-1,705,17,708,-1],[0,-1,216,23,220,30,226,32,230,34,237,26,244,33,253,-1,396,3,411,-1,590,9,600,-1,601,9,602,-1,603,9,608,-1,630,29,642,28,644,31,663,-1,704,17,706,-1],[0,-1,198,23,199,-1,202,23,203,-1,216,23,220,30,226,32,230,34,238,26,242,34,243,33,253,35,254,-1,396,3,414,-1,589,9,609,-1,628,29,642,31,663,-1],[0,-1,216,23,220,30,226,32,230,34,243,33,253,35,255,-1,396,3,416,-1,591,9,609,-1,628,29,642,31,664,-1],[0,-1,216,23,220,30,226,32,230,34,244,33,254,35,256,-1,395,3,417,-1,591,9,611,-1,626,29,642,31,665,-1],[0,-1,216,23,219,36,221,30,222,36,223,30,225,32,230,34,244,33,253,35,256,-1,396,3,418,-1,591,9,611,37,616,-1,624,29,642,31,643,38,644,31,666,-1],[0,-1,216,23,219,36,226,39,228,34,244,33,251,35,258,-1,396,3,420,-1,591,9,611,37,618,29,622,-1,623,29,642,38,644,31,666,-1,678,40,679,-1],[0,-1,2,17,3,-1,216,23,219,36,226,39,228,34,244,33,250,35,259,-1,395,3,421,-1,590,9,618,29,642,31,666,-1],[0,-1,216,23,219,36,226,39,229,34,244,33,248,35,260,-1,395,3,421,-1,590,9,618,29,642,31,667,-1],[0,-1,3,17,4,-1,216,23,220,36,225,39,229,34,245,35,246,33,247,35,260,-1,394,3,415,41,417,3,422,-1,589,9,618,29,642,31,667,-1],[0,-1,217,23,220,36,223,39,229,21,230,34,246,35,261,-1,394,3,414,41,418,3,423,-1,589,9,618,29,642,31,667,-1],[0,-1,4,17,5,-1,216,23,220,36,222,39,228,21,230,34,247,35,261,-1,393,3,415,41,419,3,424,-1,589,9,618,29,642,31,667,-1],[0,-1,217,23,221,36,222,39,227,21,230,34,248,35,263,-1,392,42,393,3,396,42,399,3,416,41,418,3,425,-1,587,9,618,29,642,43,658,31,662,43,664,31,668,-1],[0,-1,217,23,221,39,224,21,230,34,248,35,263,-1,391,42,394,3,395,42,400,3,426,-1,587,9,618,29,642,43,666,31,668,-1],[0,-1,71,44,72,-1,217,23,222,21,228,45,230,34,250,35,264,-1,391,42,400,3,426,-1,588,9,618,29,642,43,667,-1],[0,-1,141,46,142,-1,218,23,222,21,228,45,230,34,243,47,249,34,252,35,264,-1,390,42,400,3,423,48,424,3,426,-1,587,9,618,29,642,43,667,-1],[0,-1,218,23,223,21,228,45,231,34,244,47,250,34,253,35,263,-1,390,42,400,3,401,49,404,3,422,48,424,50,426,-1,587,9,618,29,642,43,667,-1],[0,-1,199,23,201,-1,218,23,223,21,228,25,229,45,231,34,244,47,251,34,253,35,263,-1,389,42,400,3,402,49,405,3,422,48,424,50,426,-1,586,9,618,29,642,43,667,-1],[0,-1,218,23,223,21,226,25,231,34,244,47,251,34,252,35,264,-1,389,42,400,3,401,49,406,3,409,49,411,3,424,50,427,-1,450,51,451,-1,585,9,618,52,636,43,667,-1],[0,-1,219,23,223,21,226,25,234,34,245,47,251,35,265,-1,389,42,400,3,401,49,411,3,424,50,428,-1,448,51,454,-1,586,9,618,52,636,43,667,-1],[0,-1,110,53,111,-1,218,23,223,25,235,34,242,47,251,35,267,-1,389,42,400,49,412,3,424,50,431,-1,447,51,455,-1,586,9,618,52,636,43,667,-1],[0,-1,103,53,104,-1,218,23,224,25,229,54,232,25,235,34,241,47,251,35,269,-1,389,42,400,49,414,3,424,50,431,-1,447,51,455,-1,586,9,618,52,636,43,664,-1,665,43,666,-1],[0,-1,1,55,3,-1,64,44,65,-1,98,53,99,-1,219,23,226,54,227,25,228,54,232,25,235,34,238,47,249,56,252,35,271,-1,389,42,400,49,414,3,423,50,432,-1,447,51,456,-1,587,9,618,52,636,43,665,-1],[0,-1,61,44,62,-1,85,57,86,-1,89,57,91,-1,218,23,226,54,230,25,235,34,237,47,249,56,253,35,275,-1,389,42,400,49,415,3,423,50,431,-1,447,51,456,-1,587,9,618,52,636,43,664,-1,671,43,672,-1],[0,-1,54,44,55,-1,219,23,224,58,226,54,229,25,235,34,236,47,249,56,253,35,277,-1,389,42,400,49,416,3,423,50,431,-1,446,51,456,-1,587,9,618,52,636,43,662,-1,693,59,696,-1],[0,-1,7,55,8,-1,82,44,83,-1,219,23,224,58,227,54,230,25,231,58,232,25,235,47,248,56,255,35,278,-1,388,42,400,49,418,3,420,60,423,50,431,-1,446,51,456,-1,587,9,618,52,636,43,662,-1,664,43,666,-1,670,43,671,-1,692,59,695,-1,702,59,703,-1],[0,-1,50,44,51,-1,78,44,79,-1,82,44,83,-1,219,23,224,58,235,47,244,56,256,35,278,-1,387,42,402,49,418,60,424,50,431,-1,446,51,457,-1,588,9,618,52,636,43,663,-1,664,43,666,-1,667,43,668,-1,678,59,680,-1,690,59,694,-1,695,59,697,-1,709,61,710,-1],[0,-1,9,55,11,-1,40,62,41,-1,86,57,87,-1,219,23,224,58,235,47,244,56,256,35,279,-1,387,42,402,49,416,60,425,50,431,-1,447,51,457,-1,470,63,472,-1,589,9,618,52,636,43,661,-1,663,43,666,-1,671,43,672,-1,677,59,679,-1,689,59,693,-1,694,59,696,-1],[0,-1,2,61,3,-1,73,44,74,-1,81,44,83,-1,219,23,223,58,235,47,244,56,257,35,280,-1,386,42,402,49,415,60,425,50,430,-1,447,51,457,-1,470,63,472,-1,590,9,618,52,636,43,660,-1,664,43,665,-1,688,59,691,-1,692,59,695,-1],[0,-1,1,61,4,-1,10,55,11,-1,45,62,46,-1,219,23,223,58,236,47,244,56,258,35,280,-1,386,42,402,49,415,60,426,50,430,-1,448,51,458,-1,474,64,476,-1,590,9,592,-1,593,9,594,-1,596,9,618,52,636,43,658,65,659,-1,687,59,690,-1,692,59,694,-1,699,66,700,-1],[0,61,4,-1,9,55,12,-1,43,62,45,-1,79,44,80,-1,212,67,213,-1,219,23,223,58,236,47,243,58,244,56,258,35,281,-1,385,42,402,49,413,60,426,50,431,-1,448,51,458,-1,475,64,476,-1,486,64,487,-1,597,9,599,-1,600,9,618,52,636,43,657,-1,658,43,660,-1,676,59,678,-1,686,59,689,-1,691,59,692,-1,698,66,701,-1],[0,61,4,-1,10,55,11,-1,20,68,21,-1,42,62,43,-1,77,44,79,-1,81,44,83,-1,210,67,215,-1,219,23,223,58,244,56,257,35,281,-1,385,42,402,49,412,60,426,50,432,-1,448,51,458,-1,602,9,618,52,636,43,655,-1,664,43,665,-1,676,59,678,-1,686,59,688,-1,698,66,701,-1,716,61],[0,61,4,-1,10,55,13,-1,40,62,41,-1,76,44,77,-1,81,44,83,-1,87,44,88,-1,208,67,216,-1,219,23,222,58,245,56,255,35,281,-1,384,42,402,49,412,60,426,50,433,-1,448,51,459,-1,603,9,618,52,636,43,655,-1,664,43,665,-1,685,59,687,-1,697,66,699,-1,715,61],[0,61,4,-1,11,55,12,-1,33,62,34,-1,75,44,76,-1,78,44,79,-1,85,44,86,-1,206,67,220,23,222,58,245,56,254,35,280,69,281,-1,383,42,404,49,407,42,408,49,411,60,426,50,434,-1,447,51,459,-1,604,9,618,52,636,43,655,-1,685,59,687,-1,697,66,698,-1,714,61],[0,61,4,-1,58,44,59,-1,60,44,62,-1,73,44,75,-1,78,44,79,-1,205,67,220,23,221,58,245,70,246,56,252,70,254,35,280,69,283,-1,383,42,398,71,406,42,410,72,414,60,426,50,435,-1,447,51,459,-1,597,9,598,-1,604,9,618,52,636,43,654,-1,656,43,658,-1,661,43,663,-1,685,59,686,-1,696,66,698,-1,714,61],[0,61,3,-1,68,44,69,-1,71,44,72,-1,73,44,75,-1,83,44,84,-1,204,67,221,58,243,70,247,56,248,70,252,56,253,70,254,35,279,69,282,-1,383,71,384,42,387,71,406,72,415,60,426,50,439,-1,447,51,460,-1,598,9,599,-1,604,9,618,52,636,43,640,-1,641,43,653,-1,661,43,662,-1,663,43,665,-1,671,43,672,-1,695,66,698,-1,713,61],[0,61,3,-1,50,44,51,-1,52,44,53,-1,56,44,59,-1,69,44,75,-1,76,44,77,-1,203,67,222,58,243,70,254,35,279,69,282,-1,383,71,405,72,416,60,426,50,430,73,431,50,440,-1,447,51,460,-1,479,64,480,-1,604,9,618,52,636,43,640,-1,642,43,653,-1,658,43,659,-1,660,43,661,-1,695,66,698,-1,714,61],[0,61,2,-1,55,44,57,-1,67,44,69,-1,70,44,72,-1,73,44,74,-1,75,44,76,-1,202,67,222,58,240,70,255,35,280,69,283,-1,383,71,404,72,418,60,424,50,429,73,431,50,441,-1,448,51,460,-1,479,64,480,-1,606,9,618,52,636,-1,638,43,640,-1,642,43,652,-1,655,43,656,-1,694,66,697,-1,716,61],[0,61,1,-1,8,55,9,-1,12,55,13,-1,63,44,64,-1,66,44,71,-1,75,44,76,-1,78,44,79,-1,201,67,221,58,240,70,256,35,279,69,283,-1,348,27,349,-1,383,71,404,72,419,60,421,50,429,73,432,50,441,-1,450,51,461,-1,606,9,618,52,635,-1,642,43,652,-1,659,43,660,-1,693,66,697,-1,719,61],[0,-1,63,44,68,-1,201,67,222,58,239,70,257,35,277,69,282,-1,384,71,404,72,421,50,429,73,432,50,442,-1,453,51,461,-1,606,9,618,52,633,-1,643,43,652,-1,693,66,697,-1],[0,-1,62,44,65,-1,69,44,70,-1,82,44,83,-1,200,67,222,58,239,70,258,35,268,69,270,35,274,69,282,-1,384,71,404,72,422,50,429,73,432,50,442,-1,454,51,461,-1,609,9,618,52,632,-1,643,43,652,-1,693,66,697,-1],[0,-1,3,74,4,-1,18,75,19,-1,20,75,22,-1,67,44,69,-1,70,44,71,-1,77,44,78,-1,200,67,222,58,239,70,258,35,268,69,282,-1,384,71,404,72,425,50,427,73,431,50,442,-1,455,51,461,-1,603,9,604,-1,610,9,616,-1,618,52,634,-1,643,43,651,-1,693,66,696,-1],[0,-1,14,76,17,-1,199,67,222,58,239,70,258,35,268,69,283,-1,385,71,404,72,426,73,430,50,442,-1,455,51,461,-1,603,9,605,-1,611,9,615,-1,619,52,634,-1,643,43,650,-1,693,66,696,-1],[0,-1,7,74,8,-1,33,62,34,-1,198,67,222,58,236,77,239,70,259,35,264,78,265,35,267,69,283,-1,385,71,404,72,418,79,420,72,426,73,429,50,442,-1,456,51,460,-1,620,52,634,-1,643,43,648,-1,693,66,696,-1],[0,-1,198,67,222,58,234,77,240,70,259,78,267,69,284,-1,386,71,408,72,417,79,420,72,426,73,429,50,442,-1,448,80,449,-1,450,81,451,-1,457,51,460,-1,620,52,634,-1,643,43,648,-1,680,82,682,-1],[0,-1,198,67,222,58,231,77,240,70,259,78,267,69,285,-1,387,71,408,72,415,79,418,72,419,79,420,72,427,73,429,50,442,-1,446,80,450,-1,457,51,459,-1,553,83,554,-1,620,52,634,-1,643,43,648,-1,680,82,682,-1,697,82,698,-1],[0,-1,198,67,222,58,230,77,240,70,259,78,267,69,285,-1,387,71,408,72,411,79,417,72,427,73,429,50,442,-1,446,80,449,-1,458,51,459,-1,553,83,554,-1,620,52,634,-1,643,43,649,-1,667,84,668,-1,679,82,682,-1,693,82,694,-1,699,82,701,-1],[0,-1,56,85,57,-1,197,67,221,58,229,77,240,70,259,78,267,69,284,86,286,-1,387,71,404,79,405,71,408,72,409,79,410,72,411,79,417,72,427,73,430,87,438,50,442,-1,446,80,447,-1,620,52,626,-1,633,52,634,-1,644,43,649,-1,662,84,669,-1,679,82,680,-1,692,82,694,-1],[0,-1,28,62,29,-1,197,67,219,88,224,58,229,77,237,70,259,78,268,69,269,89,271,69,284,86,287,-1,387,71,405,79,417,72,427,73,429,87,440,50,442,-1,571,90,572,-1,602,91,608,-1,644,43,648,-1,660,84,667,-1,671,84,672,-1,683,82,685,-1,691,82,694,-1],[0,-1,55,85,56,-1,82,92,84,-1,196,67,219,88,226,58,229,77,237,70,259,78,269,89,272,69,284,86,288,-1,387,71,405,79,417,72,427,73,429,87,441,-1,455,93,456,-1,462,93,463,-1,473,64,474,-1,571,90,572,-1,599,91,609,-1,644,43,648,-1,655,84,666,-1,681,82,685,-1,691,82,693,-1],[0,-1,59,85,60,-1,81,92,83,-1,195,67,215,88,218,67,219,88,226,94,227,77,237,70,257,95,260,78,267,89,272,69,284,86,289,-1,386,71,404,79,417,72,426,73,429,87,440,-1,452,93,453,-1,455,93,456,-1,461,93,463,-1,598,91,610,-1,644,43,649,-1,654,84,666,-1,679,82,684,-1,694,82,695,-1],[0,-1,16,96,18,-1,79,92,80,-1,194,67,214,88,224,97,225,94,230,77,237,70,246,98,256,95,260,78,266,89,276,69,283,99,284,86,286,99,287,86,290,-1,386,71,404,79,417,72,425,87,440,-1,452,93,453,-1,461,93,463,-1,593,91,595,-1,597,91,608,100,609,91,610,100,612,-1,641,101,642,84,644,43,645,84,647,-1,653,84,668,-1,677,82,684,-1,719,102],[0,-1,78,92,80,-1,193,67,214,88,222,97,224,94,232,77,237,94,243,70,245,98,255,95,261,78,266,89,277,69,278,99,281,69,282,99,290,-1,386,71,404,79,418,72,423,87,440,-1,587,103,590,91,610,100,614,-1,640,101,642,84,648,-1,653,84,665,-1,674,82,683,-1,718,102,719,-1],[0,-1,192,67,213,88,221,97,224,94,233,77,235,94,243,70,245,98,255,95,262,78,267,89,278,99,291,-1,386,71,404,79,422,87,440,-1,581,103,589,91,611,100,612,-1,613,100,615,101,623,-1,635,101,642,84,648,-1,652,84,657,-1,660,84,663,-1,672,82,682,-1,685,82,686,-1,717,102,719,-1],[0,-1,79,92,80,-1,192,67,213,88,218,97,223,94,243,70,244,98,254,95,262,78,265,89,279,99,283,89,284,99,286,89,288,99,291,-1,331,27,332,-1,386,71,395,104,399,71,404,79,421,87,440,-1,574,103,589,91,611,101,624,-1,635,101,642,84,657,-1,671,82,682,-1],[0,-1,192,67,213,97,223,94,244,98,255,95,262,78,265,89,291,-1,385,71,394,104,399,71,401,79,421,87,440,-1,465,93,466,-1,472,93,473,-1,571,103,593,91,611,101,624,-1,636,101,642,84,656,-1,671,82,677,-1,714,102,715,-1],[0,-1,191,67,213,97,222,94,243,98,256,95,262,78,265,89,291,-1,385,71,394,104,400,79,420,87,440,-1,570,103,593,91,611,101,625,-1,627,101,630,-1,636,101,642,84,657,-1,670,105,672,82,675,-1],[0,-1,191,67,214,97,222,94,244,98,255,95,263,78,265,89,290,-1,384,71,393,104,399,79,419,87,440,-1,465,93,467,-1,502,106,503,-1,569,103,593,91,611,101,630,-1,636,101,642,84,662,-1,670,105,672,-1,678,82,679,-1,712,102,713,-1,714,102,715,-1],[0,-1,48,85,49,-1,191,67,214,97,221,94,244,98,255,95,263,78,265,89,290,-1,384,71,385,104,400,79,419,87,440,-1,466,93,468,-1,470,93,471,-1,568,103,593,91,611,101,630,-1,635,101,642,84,664,-1,669,105,671,-1,712,102,713,-1],[0,-1,191,67,214,97,221,94,245,98,254,95,263,78,264,89,290,-1,384,71,385,104,400,79,419,87,440,-1,466,93,467,-1,503,106,505,-1,563,103,592,91,611,101,631,-1,634,101,642,84,665,-1,668,105,671,-1,678,82,680,-1],[0,-1,191,67,201,107,202,67,216,97,221,94,245,98,254,95,264,89,286,-1,287,89,288,-1,383,108,385,71,386,104,389,108,390,104,400,79,419,87,440,-1,466,93,467,-1,470,93,472,-1,563,103,582,109,588,91,611,101,642,84,668,105,671,-1,673,105,674,-1,678,105,679,-1],[0,-1,17,110,18,-1,191,67,199,107,203,67,218,97,219,67,220,94,246,98,255,95,265,89,285,-1,382,108,391,104,401,79,419,111,420,87,437,112,440,-1,470,93,472,-1,562,103,579,109,588,91,611,101,642,84,668,105,670,-1],[0,-1,11,110,12,-1,18,110,19,-1,191,67,200,107,203,67,219,113,220,94,246,98,255,95,266,89,284,-1,292,89,293,-1,295,114,296,-1,381,115,383,108,392,104,401,79,418,111,421,87,436,112,440,-1,470,93,472,-1,561,103,578,109,589,91,610,101,642,84,668,105,670,-1],[0,-1,17,110,18,-1,197,107,204,67,219,113,220,94,246,98,257,95,266,89,282,-1,381,115,384,108,392,104,401,79,418,111,422,87,435,112,441,-1,560,103,578,109,589,91,610,101,642,84,668,105,670,-1],[0,-1,16,110,17,-1,197,107,206,67,220,113,221,94,247,98,256,95,267,89,281,-1,379,115,383,108,392,104,402,79,418,111,419,116,420,111,421,87,434,112,442,-1,559,103,579,109,589,91,610,101,642,84,666,-1,713,117,714,-1],[0,-1,198,107,208,67,214,113,216,67,217,113,221,94,247,98,256,95,267,89,274,-1,379,115,385,108,386,115,387,108,392,104,404,79,418,116,422,87,433,112,443,-1,558,103,579,109,590,91,608,101,641,-1,644,84,664,-1],[0,-1,198,107,209,67,213,113,221,94,246,98,255,95,267,89,272,-1,378,115,389,108,393,104,408,79,418,116,422,87,431,112,443,118,444,-1,557,103,577,109,591,91,608,101,639,-1,645,84,654,-1,656,84,662,-1,710,117,712,-1],[0,-1,177,119,181,-1,197,107,209,67,213,113,221,94,236,120,237,94,244,98,256,95,268,89,271,-1,371,121,372,-1,378,115,389,108,394,104,408,79,419,122,420,116,421,87,429,112,443,118,444,-1,557,103,577,109,592,91,608,101,636,-1,646,84,652,-1,658,84,660,-1,709,117,713,-1],[0,-1,176,119,182,-1,198,107,209,67,211,113,221,94,235,120,237,94,238,120,239,94,243,98,255,95,268,-1,377,115,389,108,395,104,407,79,419,122,428,112,442,118,445,-1,506,123,507,-1,556,103,576,109,591,91,609,101,633,-1,650,84,651,-1,708,117,710,-1],[0,-1,176,119,181,-1,198,107,209,67,210,113,220,94,236,120,239,94,242,98,254,95,265,-1,377,115,388,108,395,104,406,79,419,122,428,112,442,118,446,-1,506,123,507,-1,555,103,576,109,590,91,610,101,631,-1],[0,-1,176,119,181,-1,199,107,208,113,220,94,235,120,240,94,242,98,254,95,264,-1,373,124,374,-1,378,115,388,108,396,104,406,79,420,122,428,112,442,118,447,-1,506,123,508,-1,555,103,576,109,590,91,611,101,624,-1,626,101,630,-1,706,117,708,-1],[0,-1,176,119,179,-1,199,107,205,113,222,94,235,120,242,98,254,95,263,-1,301,114,302,-1,373,124,375,-1,378,115,389,108,396,104,406,79,420,122,429,112,442,118,448,-1,506,123,508,-1,554,103,576,109,588,91,611,101,623,-1,628,101,629,-1,706,117,708,-1],[0,-1,176,119,178,-1,200,107,203,113,220,94,226,125,231,94,235,120,242,126,243,98,253,95,262,-1,374,124,375,-1,378,121,383,115,386,108,387,115,389,108,396,104,405,79,421,122,430,112,442,118,449,-1,506,123,508,-1,554,103,567,127,568,103,577,109,580,128,584,109,588,91,611,101,618,-1,622,101,623,-1,669,129,670,-1,705,117,707,-1],[0,-1,45,85,46,-1,202,113,224,94,226,125,232,94,235,120,241,126,245,98,251,95,261,-1,374,124,375,-1,379,121,383,115,386,108,396,104,405,79,422,122,430,112,442,118,450,-1,505,123,508,-1,553,103,565,130,569,-1,570,103,577,109,579,128,589,91,599,-1,609,91,612,101,618,-1,705,117,707,-1],[0,-1,202,113,226,125,233,120,241,126,246,131,248,98,250,95,251,132,252,95,260,-1,379,121,380,133,383,115,385,133,386,115,387,133,392,108,396,104,407,79,422,122,430,112,442,118,452,-1,505,123,508,-1,552,103,564,130,569,-1,571,103,579,109,580,-1,581,128,590,91,598,-1,609,91,613,101,618,-1,705,117,707,-1],[0,-1,203,113,225,125,232,120,240,126,246,131,252,132,255,95,259,-1,379,133,392,134,393,108,397,104,406,79,422,122,430,112,442,118,453,-1,505,123,508,-1,551,103,562,130,569,-1,570,103,579,-1,582,128,590,91,597,-1,610,91,614,101,617,-1,622,135,624,-1,705,117,707,-1],[0,-1,203,113,225,125,232,120,240,126,245,131,252,132,255,95,258,-1,376,121,378,-1,379,133,391,134,393,108,397,104,405,79,422,122,429,112,443,118,454,-1,505,123,508,-1,550,103,561,130,568,-1,571,103,578,-1,584,128,591,91,597,-1,610,91,615,101,616,-1,622,135,625,-1,705,117,706,-1],[0,-1,41,85,42,-1,204,113,225,125,231,120,234,125,235,120,241,126,244,131,252,132,256,95,258,-1,377,121,378,133,390,134,397,104,406,79,421,136,422,122,424,136,425,122,429,112,436,137,440,112,443,118,455,-1,505,123,508,-1,550,103,560,130,568,-1,573,103,578,-1,586,128,591,91,597,-1,610,91,614,-1,622,135,625,-1,669,129,670,-1],[0,-1,205,113,224,125,230,120,231,125,236,120,241,126,244,131,251,132,257,95,258,-1,344,138,345,139,346,-1,371,140,375,-1,377,133,390,134,397,104,404,134,405,79,420,136,428,112,434,137,441,112,442,137,445,118,456,-1,505,123,508,-1,550,103,558,-1,559,130,568,-1,575,103,577,-1,587,128,589,141,590,128,592,91,595,128,598,-1,610,91,614,-1,623,135,626,-1],[0,-1,39,85,40,-1,205,113,224,125,238,120,240,126,244,131,251,132,257,-1,342,138,345,139,348,-1,355,142,357,-1,371,140,377,133,389,134,398,104,401,134,407,79,416,136,432,137,447,118,457,-1,505,123,508,-1,550,103,557,-1,559,130,568,-1,575,103,577,-1,588,141,590,128,598,143,600,-1,610,91,615,-1,623,135,626,-1,697,144,698,-1],[0,-1,205,113,224,125,238,126,246,131,251,132,255,-1,341,138,345,139,354,142,359,-1,370,140,378,133,389,134,415,136,432,137,450,118,457,-1,505,123,508,-1,550,103,556,-1,558,130,567,-1,590,128,599,143,602,-1,610,143,611,-1,612,91,614,-1,624,135,627,-1,667,145,668,-1,685,146,686,-1,697,144,699,-1],[0,-1,205,113,225,125,238,126,246,131,252,132,254,-1,340,138,345,139,354,142,362,-1,370,140,378,133,389,134,414,136,430,137,451,118,458,-1,505,123,508,-1,550,103,552,-1,557,130,562,147,563,130,567,-1,590,128,598,143,604,-1,609,143,612,-1,625,135,628,-1,666,145,668,-1,674,129,675,-1,696,144,697,-1,698,144,700,-1,704,144,705,-1],[0,-1,205,113,221,125,224,113,225,125,238,126,246,-1,338,138,344,139,354,142,362,148,363,149,365,140,379,133,389,134,413,136,430,137,452,118,459,-1,505,123,507,-1,520,150,523,-1,558,130,562,147,564,130,565,-1,591,128,596,143,613,-1,625,135,628,-1,681,129,682,-1,698,144,700,-1,703,144,705,-1],[0,-1,204,113,220,125,238,126,245,-1,337,138,343,139,354,142,361,148,363,149,366,140,380,133,382,140,383,133,390,134,412,136,429,137,453,118,459,-1,505,123,507,-1,519,150,524,-1,547,151,548,-1,558,147,564,-1,592,128,596,143,613,-1,626,135,629,-1,646,145,647,-1,658,145,659,-1,665,145,666,-1,675,129,677,-1,679,129,680,-1,698,144,699,-1,702,144,704,-1],[0,-1,195,152,204,113,216,125,239,126,243,-1,335,153,338,138,343,139,354,142,361,148,363,149,366,140,384,133,390,134,411,136,428,137,454,118,460,-1,505,123,506,-1,519,150,524,-1,547,151,548,-1,558,147,564,-1,587,128,588,-1,593,128,595,143,614,-1,627,135,630,-1,647,145,649,-1,652,145,653,-1,658,145,659,-1,662,145,664,-1,670,129,671,-1,675,129,677,-1,697,144,699,-1,702,144,704,-1],[0,-1,194,152,205,113,215,125,239,126,243,-1,333,153,339,138,341,154,344,139,354,142,361,148,363,149,365,140,384,133,391,155,395,134,411,136,427,137,455,118,460,-1,519,150,524,-1,546,151,547,-1,556,147,564,-1,587,128,589,-1,593,143,614,-1,628,135,630,-1,651,145,652,-1,663,145,664,-1,670,129,671,-1,696,144,698,-1,702,144,704,-1],[0,-1,193,156,194,152,205,113,215,125,240,126,242,-1,333,153,339,138,341,154,344,139,355,142,361,148,363,149,365,140,384,133,391,155,398,134,409,136,426,137,453,118,461,-1,506,151,507,-1,514,151,516,-1,519,150,523,-1,546,151,548,-1,556,147,562,-1,569,157,571,-1,586,157,587,-1,588,128,590,-1,594,143,613,-1,629,135,630,-1,634,145,635,-1,640,145,641,-1,653,145,654,-1,655,145,656,-1,663,145,664,-1,668,129,669,-1,694,144,697,-1,701,144,703,-1],[0,-1,191,156,194,152,205,113,215,125,240,-1,333,153,339,154,344,139,355,142,361,148,363,149,365,140,385,133,390,155,398,134,407,136,428,137,450,118,461,-1,505,151,507,-1,513,151,517,-1,519,150,523,-1,545,151,546,-1,555,147,562,-1,568,157,575,-1,583,157,586,-1,587,157,590,-1,594,143,613,-1,659,145,661,-1,663,145,665,-1,691,144,694,158,696,-1,700,144,703,-1],[0,-1,190,156,194,152,205,-1,206,113,213,125,239,-1,332,154,334,153,339,154,344,139,355,142,361,148,363,149,366,140,386,133,389,155,401,134,407,136,428,137,447,118,462,-1,505,151,507,-1,512,151,519,150,522,-1,545,151,546,-1,555,147,561,-1,566,157,576,-1,595,143,613,-1,650,145,651,-1,691,144,693,158,696,-1,699,144,703,-1],[0,-1,188,156,195,-1,200,152,203,-1,208,113,214,125,238,-1,332,154,335,153,338,154,344,139,354,142,361,148,363,149,367,140,387,133,388,155,402,134,407,159,408,136,413,159,416,136,418,159,419,136,428,137,447,118,462,-1,504,151,508,-1,512,151,519,150,521,-1,545,151,546,-1,555,160,557,147,561,-1,566,161,567,157,578,-1,588,157,589,-1,596,143,613,-1,636,145,637,-1,639,145,640,-1,681,144,682,-1,691,144,693,158,694,-1,698,144,702,-1],[0,-1,188,156,194,-1,208,113,214,125,236,162,239,-1,331,154,344,139,350,163,354,142,361,148,362,149,367,140,387,133,391,155,403,134,407,159,410,136,412,159,423,136,428,159,429,137,446,118,463,-1,504,151,508,-1,512,151,520,-1,544,151,545,-1,555,160,557,147,560,-1,565,161,568,157,579,-1,587,157,588,164,589,-1,597,143,613,-1,639,145,640,-1,691,144,694,-1,698,144,702,-1],[0,-1,188,156,193,-1,209,113,215,125,224,-1,225,125,228,-1,229,125,230,-1,231,125,236,162,239,-1,328,165,330,154,343,166,349,163,354,142,360,148,362,149,368,140,387,133,390,155,404,134,406,159,424,136,427,159,429,137,446,118,448,-1,450,118,463,-1,504,151,508,-1,511,151,520,-1,544,151,546,-1,555,160,558,147,559,-1,565,161,570,157,579,-1,588,143,589,-1,591,143,592,-1,598,143,612,-1,691,144,694,-1,699,144,700,-1],[0,-1,188,167,193,-1,210,113,216,125,217,-1,218,125,224,-1,231,125,234,-1,238,162,239,-1,327,165,330,154,343,166,349,163,362,149,367,140,388,133,390,155,406,159,425,136,426,159,430,137,444,168,446,118,447,-1,454,118,463,-1,504,151,507,-1,511,151,520,-1,544,151,546,-1,555,160,559,147,560,-1,565,161,572,157,579,-1,588,157,589,-1,598,143,612,-1,684,144,685,-1,690,144,695,-1,699,144,700,-1],[0,-1,187,167,194,-1,212,113,217,125,218,-1,219,125,221,-1,226,125,228,-1,230,125,232,-1,326,165,333,154,342,166,349,163,365,149,367,140,389,133,390,155,405,159,425,136,426,159,430,137,444,168,447,-1,460,118,463,-1,503,151,506,-1,510,151,520,-1,544,151,547,-1,554,160,559,147,560,-1,564,147,566,161,573,157,579,-1,599,143,612,-1,684,144,685,-1,690,144,693,-1],[0,-1,186,167,194,-1,196,113,197,-1,215,113,218,125,221,169,223,170,224,125,225,-1,236,171,237,-1,326,165,332,154,337,166,341,154,342,166,351,163,364,172,365,149,366,172,367,140,389,133,390,155,405,159,431,137,445,168,447,-1,464,173,465,-1,466,173,469,-1,503,151,505,-1,510,151,521,-1,545,151,548,-1,555,160,559,147,560,-1,563,147,565,161,574,157,579,-1,599,143,611,-1,700,144,701,-1],[0,-1,184,167,194,-1,196,113,197,-1,237,174,238,-1,326,175,337,166,352,163,363,172,368,140,388,133,389,155,404,159,432,137,444,176,446,168,447,173,451,-1,466,173,469,-1,509,151,521,-1,545,151,546,-1,555,160,558,147,565,161,575,157,579,-1,599,143,611,-1],[0,-1,181,177,185,178,186,167,194,-1,197,113,198,-1,237,174,238,-1,240,179,242,-1,326,180,328,175,331,180,332,175,337,166,352,163,362,172,368,140,374,172,375,140,376,172,380,140,384,172,385,140,388,155,404,159,432,137,443,176,446,173,454,-1,509,151,521,-1,545,151,547,-1,548,151,549,-1,555,160,558,147,565,161,575,157,579,-1,599,143,610,-1,649,181,650,-1],[0,-1,177,182,180,177,185,178,186,167,194,-1,237,183,239,-1,326,175,336,166,354,163,361,172,371,140,372,172,387,155,404,159,433,137,442,176,445,173,456,-1,508,151,521,-1,555,160,558,147,565,161,575,157,579,-1,600,143,609,-1,649,181,650,-1],[0,-1,176,182,181,177,182,178,189,167,195,-1,197,113,198,-1,199,113,200,-1,238,184,239,-1,326,175,336,166,356,163,361,172,387,155,405,159,433,137,441,176,444,-1,445,173,458,-1,508,151,521,-1,546,160,547,-1,555,160,557,147,566,161,570,185,572,161,575,157,579,-1,600,143,609,-1,650,186,651,-1],[0,-1,174,187,176,182,182,178,191,167,195,-1,237,184,239,-1,310,188,313,-1,325,175,336,166,358,163,360,172,388,155,405,159,433,176,443,-1,445,173,461,-1,508,151,521,-1,547,160,548,-1,552,160,557,147,571,185,575,157,579,-1,599,143,606,-1,651,186,652,-1,697,144,698,-1],[0,-1,173,187,176,182,182,178,195,-1,237,189,238,-1,310,188,314,-1,326,175,334,190,336,166,363,172,388,155,406,159,433,176,442,-1,444,173,464,-1,507,151,521,-1,550,160,557,147,571,185,575,157,579,-1,595,164,596,-1,599,143,606,-1,651,186,652,-1],[0,-1,164,187,169,-1,172,187,176,182,184,178,192,-1,193,178,196,-1,200,113,201,-1,202,113,203,-1,232,125,233,-1,236,191,238,-1,311,188,315,-1,326,175,333,190,349,166,368,172,389,155,407,159,433,176,442,-1,444,173,465,-1,507,151,523,-1,548,160,557,147,571,185,574,157,578,-1,582,164,585,-1,588,164,590,-1,599,143,605,-1],[0,-1,162,187,179,182,182,192,184,-1,186,178,190,-1,236,191,238,-1,311,188,315,-1,327,175,332,190,349,166,368,172,390,155,408,159,434,176,441,-1,444,173,465,-1,506,151,524,-1,548,160,558,147,570,185,574,157,577,-1,582,164,586,-1,589,164,590,-1,599,143,605,-1,651,186,652,-1],[0,-1,20,193,21,-1,160,187,178,182,182,192,185,-1,203,194,205,-1,235,195,236,-1,309,188,315,-1,327,190,349,166,368,172,391,155,408,159,434,176,439,-1,443,196,447,173,466,197,468,-1,469,197,470,-1,506,151,526,-1,548,160,557,147,570,185,573,157,576,-1,582,164,586,-1,599,143,605,-1,651,186,652,-1],[0,-1,157,187,177,182,182,192,185,-1,203,194,208,-1,234,198,235,199,237,-1,309,188,310,-1,327,190,349,166,369,172,391,155,408,159,435,176,438,-1,442,196,446,173,452,196,453,173,454,196,455,173,466,197,471,-1,506,151,526,-1,548,160,556,147,570,185,572,147,574,157,575,-1,583,164,584,-1,600,143,605,-1,651,186,652,-1],[0,-1,155,187,178,182,182,192,185,-1,203,194,208,-1,216,200,219,-1,225,201,226,-1,227,201,228,-1,230,202,231,-1,233,170,234,203,235,-1,236,199,237,-1,327,190,349,166,369,172,391,155,408,159,437,176,438,-1,441,196,456,173,465,197,473,-1,506,151,527,-1,548,160,556,147,562,185,563,147,569,185,571,147,574,-1,600,143,605,-1,651,186,652,-1],[0,-1,130,204,131,-1,153,187,176,205,182,206,183,192,184,206,185,-1,203,194,208,-1,211,207,216,200,223,-1,224,201,230,202,231,-1,233,208,235,-1,328,190,348,166,369,172,391,155,408,159,438,-1,441,196,457,173,465,197,474,-1,505,151,529,-1,547,160,555,147,562,185,566,147,568,185,571,147,573,-1,577,164,580,-1,601,143,605,-1,651,186,652,-1],[0,-1,48,193,49,-1,137,204,139,-1,152,187,170,-1,174,187,175,205,182,206,186,-1,211,207,217,200,224,-1,231,209,232,-1,327,190,348,166,369,172,391,155,408,159,438,-1,440,196,461,173,464,197,476,-1,505,151,530,-1,547,160,556,147,562,185,570,147,573,-1,577,164,582,-1,601,143,605,-1,651,186,652,-1],[0,-1,48,193,50,-1,138,204,139,-1,150,187,168,-1,178,205,182,206,185,-1,197,210,198,-1,214,207,217,200,223,-1,327,190,348,166,366,211,370,172,391,155,408,159,437,-1,440,196,465,197,476,-1,505,151,531,-1,546,160,556,147,562,185,568,147,572,-1,577,164,582,-1,602,143,605,-1,693,212,694,-1],[0,-1,47,193,50,-1,149,187,168,-1,178,205,182,206,185,-1,199,210,201,-1,204,213,207,-1,208,213,210,-1,213,207,216,200,223,-1,326,190,348,166,366,211,372,172,391,155,407,214,408,159,435,-1,439,196,468,197,476,-1,505,151,533,-1,546,160,557,147,561,185,569,147,573,-1,578,164,583,-1,602,143,605,-1,650,186,651,-1],[0,-1,48,193,49,-1,148,187,167,-1,179,205,183,206,187,-1,203,213,212,-1,214,207,215,-1,216,200,222,-1,326,190,348,166,365,211,374,172,392,155,405,214,410,159,435,-1,439,196,470,197,478,-1,503,151,534,-1,545,160,559,147,561,185,569,147,574,-1,575,147,576,-1,578,164,583,-1,603,143,605,-1],[0,-1,46,193,48,-1,148,215,150,187,166,-1,175,205,176,-1,179,205,185,206,187,-1,202,213,211,-1,212,216,214,-1,217,200,221,-1,325,217,326,190,348,166,362,211,375,172,391,155,403,214,410,159,435,-1,438,196,470,197,478,-1,500,151,535,-1,544,218,545,160,561,185,567,147,568,185,569,147,576,-1,578,164,584,-1,593,219,594,-1,603,143,604,-1],[0,-1,43,193,47,-1,147,204,148,-1,149,204,152,187,166,-1,179,205,185,206,187,-1,194,213,195,-1,200,213,209,-1,210,216,214,-1,216,220,218,-1,325,217,326,190,348,166,362,211,376,172,391,155,401,214,410,159,435,-1,438,196,471,197,479,-1,499,151,538,-1,544,160,561,185,562,164,564,185,566,147,576,164,585,-1],[0,-1,39,193,42,-1,43,193,45,-1,146,204,147,-1,148,204,152,187,166,-1,183,205,184,-1,185,206,186,-1,190,213,206,-1,207,216,215,220,218,-1,326,217,334,190,348,166,360,211,378,172,390,155,399,214,410,159,427,221,428,159,434,-1,437,196,471,197,480,-1,498,151,538,218,545,160,560,164,563,185,565,147,574,164,589,-1,601,219,603,-1],[0,-1,40,193,42,-1,148,204,151,187,165,-1,177,205,178,-1,180,205,181,-1,190,213,205,216,215,-1,326,217,334,190,347,166,359,211,380,172,390,155,397,214,410,221,434,-1,437,196,471,197,480,-1,497,151,538,218,545,151,546,160,558,164,563,185,564,147,573,164,588,222,589,164,591,-1,600,219,604,-1],[0,-1,140,204,141,-1,148,204,150,223,152,187,160,223,165,-1,180,205,181,-1,191,213,203,216,214,-1,327,217,334,190,347,166,357,211,381,172,388,214,389,172,390,155,395,214,410,221,433,-1,437,196,468,224,470,197,479,-1,497,151,538,218,545,151,546,160,559,164,568,147,574,164,593,-1,599,219,603,-1],[0,-1,139,204,142,-1,147,204,149,223,152,187,160,223,165,-1,194,213,200,-1,201,216,213,-1,327,217,335,190,347,166,356,211,383,172,387,214,391,155,393,214,410,221,433,-1,436,196,465,224,471,197,478,-1,496,151,537,218,543,151,544,218,545,151,547,160,558,164,570,147,571,164,595,-1,598,219,603,-1],[0,-1,27,193,28,-1,30,193,31,-1,138,204,141,-1,146,204,148,223,152,187,159,223,165,-1,199,216,212,-1,328,217,336,190,347,166,354,211,384,214,410,221,433,-1,435,196,464,224,471,197,478,-1,495,225,496,151,537,218,542,151,547,160,558,164,596,-1,599,219,604,-1],[0,-1,136,204,141,-1,144,204,148,223,153,187,159,223,165,-1,200,216,211,-1,329,217,336,190,347,166,353,211,383,214,410,221,432,-1,434,196,463,224,472,197,474,-1,494,225,498,151,499,225,500,151,501,225,502,151,537,218,544,151,549,160,555,164,597,-1,600,219,604,-1,607,226,609,-1,642,226,643,-1],[0,-1,135,204,140,-1,143,204,146,223,155,187,158,223,165,-1,194,227,199,-1,201,216,209,-1,330,217,336,190,347,166,351,211,380,214,410,221,431,-1,434,196,462,228,464,-1,465,224,467,-1,469,224,472,197,473,-1,492,225,502,151,536,218,545,151,549,160,555,164,599,-1,601,219,604,-1,608,226,611,-1,642,226,643,-1],[0,-1,135,204,139,-1,142,204,146,223,165,229,166,-1,197,227,200,-1,201,216,208,-1,330,217,336,190,350,211,380,214,410,221,430,-1,433,196,461,228,464,-1,465,224,466,-1,468,224,472,197,473,-1,478,230,483,225,502,151,538,218,540,151,549,160,556,164,600,-1,602,219,605,-1,642,226,643,-1],[0,-1,16,193,17,-1,135,204,139,-1,141,204,146,231,147,223,163,229,166,-1,196,227,200,-1,201,216,208,-1,330,217,336,190,348,211,379,214,410,221,430,-1,433,196,461,232,462,228,465,-1,471,224,472,197,473,-1,474,230,484,225,501,151,537,218,540,151,550,160,557,164,601,-1,622,226,623,-1],[0,-1,134,204,138,-1,141,204,144,231,147,223,162,229,163,233,166,-1,196,227,200,-1,201,216,207,-1,331,217,343,190,346,211,379,214,410,221,430,-1,432,196,461,232,462,228,463,-1,468,230,471,-1,472,197,474,230,484,225,500,151,537,218,538,151,550,160,557,164,601,-1,613,226,616,-1],[0,-1,132,204,138,-1,140,234,143,204,144,231,151,223,152,231,153,223,161,229,162,233,166,-1,195,227,200,-1,201,216,206,-1,332,217,343,190,345,211,380,214,410,221,429,-1,431,196,461,-1,466,230,473,-1,474,230,486,225,499,151,531,235,536,151,539,236,540,151,551,160,558,164,602,-1,613,226,617,-1,644,226,645,-1],[0,-1,131,204,136,-1,138,234,143,231,152,223,153,229,155,223,159,229,161,233,166,-1,194,227,200,-1,202,216,204,-1,333,217,343,211,380,214,410,221,428,-1,431,196,461,-1,464,230,486,225,499,151,529,235,536,151,538,236,544,151,552,160,557,164,603,-1,617,226,618,-1,641,226,642,-1,644,226,645,-1],[0,-1,8,193,9,-1,129,204,135,-1,138,234,142,231,152,223,153,229,156,223,159,229,160,233,166,-1,194,227,200,-1,323,237,325,-1,328,237,330,-1,333,238,343,211,380,214,410,221,429,196,461,-1,463,230,486,225,500,151,501,225,502,151,525,235,536,151,538,236,543,151,554,160,556,164,603,-1,616,226,619,-1,644,226,645,-1],[0,-1,3,239,4,-1,5,239,6,-1,128,240,130,-1,131,240,135,234,136,-1,137,234,142,231,152,223,153,229,155,223,157,229,159,233,168,-1,194,227,199,-1,325,237,330,-1,331,237,333,-1,335,238,343,211,380,214,410,221,429,196,458,-1,462,230,486,225,504,151,523,235,531,164,546,151,555,160,556,164,604,-1,618,226,620,-1],[0,-1,123,240,124,-1,131,240,135,234,143,231,151,241,153,229,155,223,156,229,159,233,170,-1,194,227,199,-1,324,237,325,-1,327,237,328,-1,332,237,333,-1,337,238,343,211,380,214,410,221,429,196,455,242,458,-1,461,230,483,225,505,151,521,235,529,164,548,151,553,164,605,-1,619,226,620,-1],[0,-1,123,240,124,-1,129,240,134,234,142,231,150,241,152,233,154,229,158,233,171,-1,176,233,183,-1,193,227,198,-1,332,237,334,-1,339,238,344,211,380,214,410,221,430,196,431,243,432,196,449,244,453,242,457,-1,460,230,483,225,506,151,521,235,527,164,551,151,552,164,605,-1,618,226,619,-1],[0,-1,128,240,134,234,143,231,148,241,151,233,155,229,157,233,183,-1,189,227,198,-1,332,237,333,-1,340,238,349,211,379,214,410,221,430,243,433,196,448,244,454,242,457,244,458,-1,459,230,482,245,492,225,507,151,521,235,526,164,606,-1,619,226,620,-1,640,226,641,-1],[0,-1,128,240,133,234,143,231,149,241,151,233,190,227,198,-1,328,246,329,-1,340,238,351,211,379,214,409,221,429,247,430,243,435,196,447,244,457,230,482,245,493,225,508,151,522,164,523,235,524,164,606,-1,620,226,622,-1],[0,-1,127,240,132,234,142,248,144,231,149,248,150,233,190,227,198,-1,340,238,353,211,379,249,380,214,410,221,429,247,431,243,436,196,445,244,456,230,483,245,493,225,509,151,520,164,607,-1,618,226,621,-1,622,226,623,-1],[0,-1,127,240,131,234,142,248,148,250,150,233,190,227,198,-1,340,238,352,211,379,249,380,214,410,221,417,-1,419,221,429,247,431,243,435,196,443,244,455,230,484,245,495,225,509,151,518,164,606,-1,618,226,623,-1],[0,-1,126,240,131,234,135,251,142,250,144,248,147,250,150,233,190,227,198,-1,340,238,354,211,378,249,381,214,411,221,413,-1,422,221,423,-1,429,247,431,243,436,196,442,244,456,230,482,245,496,225,497,245,498,225,509,151,517,164,605,-1,619,226,623,-1,639,226,640,-1],[0,-1,125,240,130,234,132,251,142,250,154,233,190,227,200,-1,230,252,231,-1,341,238,358,211,378,249,382,214,408,-1,429,247,430,253,431,243,439,244,455,230,482,245,499,225,511,151,517,164,604,-1,616,226,617,-1,618,226,624,-1,639,226,640,-1],[0,-1,123,254,124,-1,125,254,131,251,142,250,154,233,190,227,201,-1,325,246,327,-1,341,238,357,211,377,249,383,214,389,-1,401,214,407,-1,429,247,432,255,435,243,438,244,454,230,481,245,499,225,509,151,519,164,604,-1,617,226,627,-1],[0,-1,120,254,122,-1,123,254,131,251,142,250,154,233,189,227,202,-1,327,246,328,-1,342,238,357,211,376,249,383,214,384,-1,430,256,431,247,432,255,437,243,438,244,452,230,481,245,500,225,508,151,518,164,603,-1,612,257,614,-1,617,226,629,-1,631,226,632,-1,639,226,640,-1],[0,-1,119,254,120,-1,123,254,131,251,142,250,154,233,189,227,205,-1,344,238,357,211,375,249,383,-1,430,256,432,255,439,244,451,230,481,245,500,225,508,151,518,164,603,-1,611,257,614,-1,619,226,633,-1,638,226,640,-1],[0,-1,119,254,132,251,142,250,154,233,189,227,205,-1,346,238,357,211,376,249,382,-1,431,256,433,255,441,244,451,230,481,245,502,225,508,151,518,164,602,-1,610,257,617,-1,618,226,619,-1,620,226,635,-1,638,226,639,-1],[0,-1,118,254,131,251,142,250,154,233,189,227,208,-1,347,238,356,211,377,249,384,-1,424,258,428,-1,431,255,442,244,451,230,482,245,502,225,513,151,516,259,520,164,601,-1,610,257,618,-1,621,226,640,-1],[0,-1,118,254,131,251,138,250,154,233,189,227,209,-1,347,238,356,211,377,249,383,-1,407,260,413,-1,424,258,425,261,429,-1,431,255,442,244,452,230,482,245,503,225,514,151,516,259,521,164,601,-1,611,257,619,-1,624,226,641,-1],[0,-1,117,254,131,251,137,250,138,251,140,250,154,233,190,227,210,-1,348,238,350,-1,357,211,377,249,383,-1,385,262,386,-1,388,263,390,-1,407,260,408,-1,414,260,415,-1,428,261,430,-1,431,255,443,244,453,230,482,264,486,245,503,225,513,259,530,164,602,-1,612,257,619,-1,626,226,627,-1,628,226,642,-1],[0,-1,116,254,132,251,136,250,138,251,139,250,154,233,190,227,209,-1,347,265,350,-1,360,211,377,249,382,-1,388,263,389,-1,410,260,412,-1,413,260,414,-1,415,260,417,-1,418,266,422,-1,424,266,429,-1,431,266,433,255,443,244,451,230,482,264,489,245,503,225,512,259,533,164,539,259,542,164,604,-1,611,257,619,-1,626,226,627,-1,631,226,642,-1],[0,-1,116,254,132,251,137,250,154,233,190,267,191,227,209,-1,342,268,344,-1,346,265,356,-1,363,211,377,249,383,262,385,-1,388,262,391,-1,403,260,406,-1,408,260,412,-1,414,260,415,266,433,255,434,266,435,255,437,266,439,255,444,244,450,230,481,264,489,245,503,269,504,225,511,259,541,164,605,-1,611,257,619,-1,633,226,642,-1],[0,-1,115,254,132,250,156,233,190,227,209,-1,309,270,311,-1,342,268,345,265,357,-1,372,211,373,-1,374,211,375,-1,378,249,382,-1,386,262,391,-1,401,260,407,-1,413,260,414,-1,415,266,444,255,445,244,447,266,448,244,449,266,450,230,461,-1,467,230,479,264,491,245,494,271,496,269,497,245,498,269,499,245,503,269,506,245,507,269,508,245,509,259,542,164,606,-1,611,257,619,-1,623,257,624,-1,633,226,643,-1],[0,-1,113,254,132,250,157,233,188,227,210,-1,308,270,310,-1,342,268,345,265,359,-1,384,262,392,-1,401,260,410,-1,413,260,414,266,449,230,459,-1,467,264,470,230,476,264,493,271,496,269,501,245,503,269,510,259,541,164,603,-1,609,257,610,272,612,257,619,-1,633,226,643,-1],[0,-1,113,254,132,250,157,233,185,273,186,274,187,275,189,227,210,-1,303,270,304,-1,341,268,346,265,360,-1,385,262,393,-1,400,260,409,-1,412,266,449,230,458,-1,467,264,473,230,474,264,492,271,497,269,501,245,503,269,509,259,541,164,602,-1,609,272,614,257,618,-1,636,226,644,-1],[0,-1,112,254,132,250,157,233,185,274,187,276,190,227,210,-1,302,270,306,-1,340,268,346,265,361,-1,362,265,364,-1,376,262,378,-1,386,262,387,-1,389,262,395,-1,401,260,408,-1,409,260,410,-1,413,266,449,230,456,277,458,-1,466,264,489,271,496,269,508,259,542,164,606,-1,609,272,617,-1,638,226,644,-1],[0,-1,112,254,132,250,157,233,185,276,190,227,212,-1,297,270,298,-1,340,268,346,265,360,-1,362,265,364,-1,365,265,367,-1,376,262,380,-1,392,262,395,-1,400,260,407,-1,411,260,413,266,448,230,450,277,452,278,453,277,454,230,456,277,459,-1,466,264,487,271,495,269,504,279,505,269,507,259,545,164,607,-1,609,272,616,-1,639,226,644,-1],[0,-1,112,254,132,250,156,233,185,276,190,227,212,-1,297,270,298,-1,341,268,346,265,360,-1,361,265,362,-1,364,265,369,-1,376,262,380,-1,391,262,397,-1,398,260,400,280,401,260,406,-1,410,260,411,-1,412,266,449,278,452,277,460,-1,465,264,486,271,495,281,497,269,499,279,508,259,545,164,608,272,616,-1,639,226,645,-1],[0,-1,111,254,132,250,157,233,185,276,190,227,213,-1,342,268,346,265,361,-1,368,265,369,-1,376,262,380,-1,389,262,397,-1,398,280,401,260,405,-1,406,260,409,-1,411,266,447,278,452,277,462,-1,465,264,485,271,494,281,499,269,501,281,502,279,503,281,504,279,509,259,546,164,609,272,618,-1,639,226,644,-1],[0,-1,111,254,132,250,158,233,186,276,190,227,216,-1,342,268,346,265,362,-1,376,262,380,-1,385,262,397,-1,398,280,402,260,410,-1,412,266,447,278,451,277,461,-1,465,264,484,271,494,281,496,282,497,281,500,269,502,281,506,279,513,259,548,164,611,272,620,-1,639,226,643,-1],[0,-1,111,254,132,250,157,233,186,283,187,276,190,227,221,-1,342,268,347,265,365,-1,376,262,377,-1,378,262,380,-1,385,262,394,-1,398,280,401,284,406,260,410,285,411,260,413,266,436,-1,438,266,439,-1,441,266,446,286,450,277,452,286,453,277,455,287,456,277,459,-1,465,264,482,271,493,282,498,281,502,279,503,281,504,279,516,259,548,164,613,272,620,-1,639,226,643,-1],[0,-1,111,254,132,250,158,233,187,276,190,288,193,227,194,289,196,227,221,-1,342,268,347,265,367,-1,377,290,379,-1,384,262,393,-1,398,291,399,280,401,284,406,285,413,266,417,-1,424,266,433,-1,443,286,452,277,454,287,457,277,458,-1,465,264,470,292,472,271,474,264,480,271,493,282,500,281,501,279,519,259,551,164,569,293,571,164,616,272,620,-1,638,226,643,-1,646,226,647,-1],[0,-1,111,254,126,294,138,250,158,233,186,288,194,289,198,227,220,-1,342,265,367,-1,377,290,380,262,392,295,393,-1,397,291,399,280,401,296,403,284,405,285,416,-1,443,286,451,287,457,-1,465,292,467,264,469,292,472,271,476,264,480,271,492,282,502,279,520,282,521,259,552,164,564,293,573,164,618,272,622,297,623,-1,638,226,643,-1,644,226,647,-1],[0,-1,110,254,124,294,138,250,158,233,186,288,195,289,202,227,219,-1,341,265,360,290,361,265,362,290,367,-1,377,290,380,262,389,-1,392,295,396,298,397,291,400,296,405,285,416,-1,442,286,448,287,456,-1,463,292,472,271,492,299,494,282,503,279,505,282,507,279,518,282,520,259,553,164,555,293,581,164,621,297,628,-1,639,226,648,-1,649,226,650,-1],[0,-1,111,254,124,294,138,250,158,233,186,288,195,289,202,227,220,-1,228,300,229,-1,341,265,357,290,368,-1,369,290,374,-1,379,262,388,-1,392,295,395,298,397,291,399,296,406,285,417,-1,440,286,443,287,456,-1,462,292,472,271,491,299,496,282,508,279,509,282,522,259,552,293,582,164,622,297,630,-1,640,226,652,301,653,-1],[0,-1,111,254,124,294,138,250,158,233,186,288,196,289,207,227,223,-1,227,300,231,-1,240,300,241,-1,343,265,349,-1,357,290,375,262,377,-1,380,262,387,-1,390,295,394,298,399,296,405,285,408,302,412,285,417,302,418,-1,438,287,456,-1,462,292,472,271,483,299,496,282,521,259,551,293,584,164,622,297,631,-1,642,226,651,301,654,-1],[0,-1,111,254,124,294,138,250,159,233,186,288,195,289,208,227,225,-1,227,300,233,-1,357,290,374,262,385,-1,389,295,392,298,399,296,405,302,418,-1,427,303,429,-1,436,287,455,-1,460,292,472,271,482,299,495,282,521,259,551,293,583,164,622,297,632,-1,642,226,649,-1,650,226,651,301,653,-1],[0,-1,111,254,126,294,134,250,159,233,187,288,195,289,209,227,226,304,228,300,236,-1,357,290,374,262,385,-1,387,295,392,298,399,296,403,302,420,-1,426,303,431,-1,434,287,455,-1,460,292,472,271,481,299,495,282,520,259,548,293,583,164,622,297,633,-1,642,226,646,-1,653,301,656,-1],[0,-1,111,254,127,294,133,250,159,233,187,288,195,289,217,227,225,304,230,300,235,305,239,-1,357,290,374,262,386,-1,387,295,399,296,402,302,417,306,418,302,419,306,421,-1,425,303,433,287,456,-1,462,292,473,307,474,271,479,299,495,282,523,259,524,282,525,259,542,308,546,293,589,164,626,297,635,-1,641,226,645,-1,655,301,658,-1],[0,-1,111,254,131,250,159,233,184,309,185,288,193,289,219,227,224,304,231,300,236,305,241,-1,357,290,374,262,388,310,391,295,398,296,402,302,416,311,417,306,421,-1,425,303,431,-1,435,287,453,312,458,-1,465,292,473,307,478,299,495,282,525,259,541,308,546,293,592,164,627,297,636,-1,644,313,645,-1,657,301,661,-1],[0,-1,111,254,131,250,158,233,181,309,184,288,192,289,219,227,224,304,232,300,236,305,241,-1,356,290,372,314,373,290,374,314,376,262,377,314,379,262,387,310,392,295,394,315,401,302,416,311,418,306,431,-1,436,287,453,312,459,316,460,-1,466,316,469,292,472,316,473,307,479,299,491,282,525,259,542,308,547,293,593,164,628,297,637,-1,642,313,645,-1,646,313,648,-1,660,301,662,-1],[0,-1,111,254,130,250,156,317,158,233,179,288,190,289,220,227,224,304,231,300,237,305,240,-1,247,318,248,319,255,-1,355,290,373,314,381,262,385,320,392,310,393,315,403,302,416,311,420,306,435,287,454,312,458,316,462,-1,463,316,471,307,480,299,488,282,526,259,542,308,548,293,600,164,628,297,637,-1,643,313,648,-1,661,301,662,-1,663,301,664,-1],[0,-1,111,254,129,250,156,321,157,322,158,233,180,288,189,289,221,227,222,304,223,227,224,304,232,300,238,305,241,-1,245,319,246,-1,247,318,248,319,255,-1,353,290,374,314,379,320,393,315,404,302,416,311,419,306,437,287,453,312,457,316,470,307,482,299,485,307,486,282,531,259,541,308,548,293,599,164,628,297,639,-1,643,313,647,-1,664,301,665,323,666,-1],[0,-1,110,254,128,250,152,233,181,288,186,289,223,304,233,300,239,319,255,-1,350,290,375,324,386,320,394,315,396,325,397,315,405,302,415,311,418,306,438,287,446,326,448,287,452,312,454,316,455,312,456,316,470,307,483,299,484,307,488,282,531,259,540,308,547,293,594,164,595,293,598,164,622,297,625,164,630,297,639,-1,643,313,646,-1,665,323,667,-1],[0,-1,110,254,128,250,152,233,176,327,178,289,183,288,184,289,232,300,239,319,255,-1,349,290,375,324,386,320,394,325,400,315,405,306,413,311,416,306,440,287,444,326,450,312,454,328,460,316,470,307,488,282,531,259,537,308,547,293,592,164,622,297,627,164,629,297,641,-1,644,313,646,-1,666,323,667,-1],[0,-1,109,329,114,254,128,250,152,233,171,330,176,327,178,289,234,331,239,319,254,-1,350,290,376,324,388,332,390,320,392,332,394,325,405,306,439,287,445,326,452,312,453,328,465,316,468,307,486,333,489,282,534,259,536,308,548,293,549,308,550,293,592,164,621,297,641,-1,643,313,646,-1,649,313,650,-1,667,323,669,-1],[0,-1,106,329,127,334,128,335,140,336,144,337,157,330,178,289,237,331,240,319,254,-1,354,290,355,338,356,290,373,324,386,332,396,325,404,339,405,306,440,287,444,326,454,328,467,307,485,333,493,282,534,340,536,308,551,293,579,341,582,293,593,164,619,342,622,297,641,-1,644,313,649,-1,668,323,670,-1],[0,-1,105,329,126,334,127,335,140,336,146,337,157,330,180,289,234,331,242,319,254,-1,347,343,348,-1,355,344,356,290,358,-1,360,290,370,345,372,346,373,324,385,332,397,339,406,306,439,287,444,326,454,328,469,307,485,333,494,282,530,340,533,282,534,340,539,308,551,293,554,347,555,293,576,341,586,293,593,164,594,341,597,164,615,342,623,297,642,-1,644,313,649,-1,668,323,670,-1],[0,-1,103,329,127,335,140,336,146,337,157,330,180,289,234,331,243,319,249,-1,348,343,354,-1,362,290,368,345,372,324,385,332,393,339,394,332,395,339,407,306,435,287,443,326,455,328,456,348,457,328,469,307,485,333,496,282,529,340,539,347,541,308,549,347,556,293,566,349,569,293,574,349,576,341,588,293,589,341,599,164,615,342,623,297,642,-1,644,313,648,-1,669,323,672,-1],[0,-1,101,329,126,335,140,336,146,337,157,330,180,289,234,331,244,319,250,-1,349,343,362,290,366,345,372,324,388,332,391,339,408,306,431,287,443,326,452,348,458,328,469,307,470,350,472,307,478,350,482,307,485,333,493,282,528,340,539,347,556,293,565,349,576,341,599,164,615,342,621,297,642,-1,643,313,648,-1,670,323,673,351,674,-1],[0,-1,1,352,3,-1,99,329,125,335,140,336,146,337,157,330,179,327,180,289,200,353,201,289,234,331,246,319,250,-1,340,354,341,-1,349,343,364,290,365,345,371,355,372,324,390,339,407,306,429,287,446,348,460,328,467,350,483,307,484,333,491,282,519,340,521,282,522,340,538,347,556,293,564,349,577,341,600,164,614,342,622,297,642,-1,644,313,648,-1,672,351,676,-1,718,352,719,-1],[0,-1,1,352,9,-1,98,329,124,335,140,336,146,337,157,330,179,327,180,289,199,353,202,289,234,331,246,319,250,-1,338,354,345,-1,348,343,363,-1,367,355,372,324,389,339,407,356,409,306,414,356,421,306,429,287,445,348,462,350,481,333,491,282,519,340,536,347,557,293,560,349,582,341,601,164,613,342,624,297,643,313,647,-1,672,351,677,-1,714,352,718,-1,719,352],[0,-1,7,352,16,-1,17,352,18,-1,96,329,123,335,140,336,145,337,157,330,180,289,197,353,203,289,228,357,246,319,250,-1,338,354,348,-1,350,343,364,-1,368,355,374,324,389,339,406,356,423,287,425,306,428,287,446,348,459,358,463,350,482,333,492,282,518,340,537,347,558,349,585,341,602,164,613,342,627,297,643,313,647,-1,672,351,678,-1,706,352,708,-1,711,352,713,-1,714,352,716,-1],[0,-1,17,352,21,359,23,-1,95,329,123,335,141,336,146,337,157,330,180,289,196,353,202,289,227,357,232,289,233,357,246,319,249,-1,340,354,348,-1,350,343,364,-1,369,355,374,324,389,339,408,356,423,287,454,360,456,348,457,358,464,350,481,333,492,282,517,340,534,361,538,347,558,349,588,341,600,164,612,342,629,297,643,313,647,-1,672,351,680,-1,705,352,710,-1],[0,-1,20,352,21,-1,22,359,27,-1,94,329,121,335,142,336,147,337,157,330,183,289,196,353,202,289,226,357,246,319,249,-1,339,354,349,-1,350,343,361,-1,369,355,374,324,389,339,408,356,425,287,454,360,456,358,464,350,483,333,493,282,516,340,534,361,538,347,556,349,588,341,602,164,609,342,623,297,626,342,630,297,643,313,647,-1,671,351,681,-1],[0,-1,25,359,29,-1,93,329,120,335,140,336,147,337,156,330,183,289,196,353,202,289,225,357,249,-1,339,354,348,-1,353,343,361,-1,373,324,389,339,407,356,425,287,453,360,458,358,465,350,482,333,492,282,507,362,510,282,514,363,519,340,524,363,526,340,533,361,538,347,553,349,589,341,604,342,623,297,642,-1,644,313,647,-1,671,351,682,-1],[0,-1,27,359,31,-1,34,359,36,-1,93,329,119,364,120,335,140,336,144,337,156,330,180,289,195,353,201,289,225,357,247,-1,339,354,344,343,350,365,352,343,360,-1,375,324,388,-1,390,339,407,366,410,356,411,366,412,356,423,287,453,360,460,358,465,350,466,287,467,350,487,333,492,282,502,362,504,282,505,362,511,363,512,282,514,363,529,340,531,361,538,347,551,349,591,341,603,342,621,297,641,-1,644,313,647,-1,671,351,684,-1],[0,-1,30,359,36,367,37,-1,39,367,42,-1,92,368,99,329,117,364,120,335,140,337,155,330,180,289,196,353,201,289,226,357,230,289,232,357,247,-1,342,354,345,343,359,-1,376,324,380,-1,381,369,385,-1,386,324,388,-1,393,339,398,-1,399,370,406,366,411,356,422,287,458,360,459,287,467,350,493,282,502,362,511,363,530,361,537,347,553,349,594,341,604,342,623,297,639,-1,671,351,685,-1,692,351,696,-1],[0,-1,32,359,36,367,42,-1,92,368,100,329,115,364,120,335,140,337,156,330,180,289,190,353,191,289,193,353,204,289,233,357,244,-1,343,354,346,343,358,-1,376,369,385,-1,386,371,389,369,391,-1,401,370,402,366,413,356,422,287,467,350,497,282,500,350,501,282,502,362,511,363,530,361,537,347,553,349,593,341,604,342,625,297,637,-1,670,351,686,-1,691,351,693,-1],[0,-1,35,359,36,367,43,-1,44,367,46,-1,48,367,50,-1,90,368,100,329,113,364,120,335,140,337,156,330,180,289,187,372,190,353,206,289,233,357,241,-1,346,343,357,-1,376,369,381,-1,382,369,386,371,389,-1,391,371,392,-1,401,366,413,373,414,356,421,287,468,350,501,362,511,363,526,374,527,363,529,361,539,347,554,349,592,341,603,342,622,297,636,-1,671,351,686,-1],[0,-1,38,367,45,-1,46,367,47,-1,50,367,51,-1,90,368,99,329,113,364,120,335,140,337,156,330,180,289,184,372,190,353,207,289,232,357,240,-1,345,343,356,-1,376,369,382,-1,383,369,384,-1,385,371,394,-1,401,373,403,366,410,373,416,287,462,375,463,358,465,287,466,358,469,350,501,362,512,363,526,374,531,361,538,347,555,349,591,341,601,342,622,297,637,-1,646,297,647,-1,671,351,687,-1],[0,-1,20,359,22,-1,40,367,47,-1,50,367,53,-1,88,368,96,329,112,364,120,335,140,337,156,330,182,289,183,372,190,353,207,289,232,357,239,-1,344,343,356,-1,376,369,381,-1,382,369,384,371,394,-1,396,371,397,-1,401,373,416,287,460,375,463,358,468,350,503,362,513,363,520,374,536,361,537,347,556,349,591,341,593,349,594,341,599,342,624,297,638,-1,671,351,687,-1],[0,-1,18,359,21,-1,42,367,48,-1,50,367,56,-1,87,368,91,376,94,368,95,329,112,364,120,335,140,337,156,330,175,372,190,353,207,289,232,357,238,-1,344,343,357,-1,377,369,383,371,398,-1,402,373,416,287,454,375,462,358,469,350,501,362,512,374,538,347,555,349,596,341,599,342,622,297,640,-1,672,351,687,-1],[0,-1,44,367,50,-1,51,367,56,-1,86,368,90,376,94,329,110,364,120,335,140,337,156,330,175,372,190,353,206,289,232,357,238,-1,332,343,333,-1,342,343,357,-1,379,369,382,371,395,-1,396,371,399,-1,403,373,406,377,407,-1,408,373,412,377,415,287,455,375,464,358,468,350,501,362,511,374,539,347,556,349,561,347,562,349,594,341,598,342,624,297,642,-1,673,351,687,-1],[0,-1,41,367,43,-1,44,367,57,-1,85,376,93,329,110,378,120,335,140,337,156,330,174,372,190,353,205,289,232,357,237,-1,344,343,354,-1,371,379,378,-1,382,371,395,-1,398,371,399,-1,403,377,415,287,453,375,463,358,468,350,501,362,502,350,509,362,510,374,536,347,563,349,595,341,597,349,598,342,624,297,642,-1,676,351,688,-1],[0,-1,35,359,36,367,57,-1,83,380,84,376,92,329,106,378,120,335,140,337,156,330,174,372,190,353,203,289,223,353,227,289,233,357,235,-1,348,343,355,-1,370,379,380,-1,381,371,397,-1,403,377,415,287,454,375,468,350,511,374,536,347,565,349,568,347,570,349,598,342,625,297,644,-1,662,301,666,-1,678,351,690,-1],[0,-1,35,359,36,367,60,-1,67,367,68,-1,81,380,85,329,87,376,91,329,106,378,120,335,140,337,156,330,170,372,190,353,204,289,222,353,228,289,231,357,234,-1,347,343,349,-1,351,343,352,-1,353,343,356,-1,369,379,384,371,399,-1,405,377,416,287,454,375,459,287,460,375,467,350,512,374,537,347,566,349,567,347,571,349,579,342,581,349,582,342,583,349,585,342,587,349,597,342,623,381,631,297,654,301,672,-1,679,351,692,-1],[0,-1,26,359,29,-1,31,359,36,367,66,-1,70,367,72,-1,77,380,83,329,104,378,120,335,140,337,156,330,170,372,190,353,205,289,221,353,229,289,230,357,234,-1,269,382,274,-1,357,343,358,-1,369,379,384,371,399,383,403,384,408,-1,410,377,413,287,454,375,457,287,460,375,467,350,513,374,534,347,570,349,579,342,588,349,594,342,623,381,636,297,654,301,670,-1,681,351,693,-1,700,351,701,-1],[0,-1,14,359,16,-1,24,359,36,367,78,380,82,385,84,386,112,387,120,335,156,372,190,353,205,289,221,353,230,357,233,-1,266,382,275,-1,355,343,359,-1,369,379,385,371,398,383,402,384,415,287,454,375,457,287,465,350,514,374,529,347,571,349,580,342,590,349,594,342,624,381,636,297,651,301,671,-1,683,351,696,-1,699,351,702,-1],[0,-1,13,359,15,-1,29,359,36,367,78,385,84,386,111,387,120,335,156,372,190,327,192,353,205,289,221,353,232,-1,262,382,275,-1,356,343,359,-1,368,379,385,371,397,-1,400,383,401,384,416,287,454,375,457,287,464,350,514,374,519,350,521,374,522,350,525,374,529,347,569,349,581,342,626,381,637,297,653,301,673,-1,679,301,684,351,705,-1],[0,-1,27,359,36,367,78,385,84,386,106,387,120,335,156,372,190,327,194,353,204,289,217,353,231,-1,261,382,276,-1,346,388,347,-1,368,379,386,371,396,-1,402,384,418,287,473,350,531,347,570,349,580,342,626,381,637,297,653,301,674,-1,679,301,684,351,707,-1],[0,-1,27,359,36,367,78,385,84,386,105,387,120,335,156,372,190,327,196,353,204,289,216,353,232,-1,260,382,277,-1,345,388,348,-1,368,379,384,371,396,-1,402,384,420,287,479,350,530,347,572,349,579,342,630,381,640,297,648,389,649,297,653,301,685,351,709,390,710,-1],[0,-1,28,359,36,367,78,385,84,386,101,387,120,335,156,372,190,327,197,353,204,289,210,353,211,289,214,353,232,-1,259,382,277,-1,344,388,348,-1,369,379,385,371,396,-1,401,384,422,287,479,350,529,347,573,349,580,342,631,381,641,297,643,389,650,301,685,351,708,390,714,-1,717,390,719,-1],[0,-1,20,359,21,-1,29,359,36,367,78,385,84,386,101,387,120,335,156,372,190,327,199,353,233,-1,258,382,278,-1,371,379,384,371,398,-1,401,384,423,287,479,350,530,347,573,349,579,342,628,381,639,389,651,301,685,351,699,390],[0,-1,16,359,23,-1,30,359,36,367,78,385,84,386,100,387,120,335,156,372,187,327,200,353,233,-1,257,382,279,-1,317,391,324,-1,374,379,384,371,401,384,422,287,479,350,531,347,573,349,579,342,628,381,639,389,651,301,686,351,697,390],[0,-1,16,359,21,-1,34,359,36,367,78,385,84,386,100,387,120,335,156,372,185,327,200,353,233,-1,255,382,280,-1,312,391,328,-1,375,379,385,371,403,-1,404,384,420,287,479,350,531,347,573,349,577,342,625,381,641,389,651,301,685,351,699,390,718,-1],[0,-1,12,390,16,-1,30,359,31,-1,33,359,35,-1,36,367,78,385,84,386,98,387,120,335,156,372,186,327,199,353,232,-1,255,382,280,-1,312,391,332,-1,377,379,388,371,404,-1,406,384,421,287,479,350,532,347,576,349,577,342,626,381,641,389,652,323,657,301,660,323,661,301,686,351,697,390,718,-1],[0,-1,8,390,17,-1,26,359,36,367,78,385,84,386,95,387,120,335,144,392,156,372,187,327,197,353,234,-1,254,382,281,-1,311,391,334,-1,379,379,388,371,404,-1,408,384,420,287,479,350,532,347,572,342,625,297,626,381,640,389,649,323,666,301,685,390,686,351,691,390],[0,390,2,-1,3,390,5,-1,7,390,17,-1,25,359,36,367,78,385,84,386,95,387,120,335,140,392,156,372,187,327,196,353,235,-1,253,382,286,-1,310,391,334,-1,381,379,389,371,406,-1,408,384,419,287,483,350,529,347,573,342,624,297,626,381,627,297,628,381,639,389,646,323,666,301,681,390],[0,390,22,359,36,367,78,385,84,386,95,387,120,335,134,392,156,372,188,327,191,353,237,-1,252,382,289,-1,311,391,333,-1,382,379,389,371,408,384,420,287,484,350,528,347,573,342,623,297,630,381,641,323,667,301,678,390],[0,390,21,-1,26,359,36,367,78,385,84,386,93,387,120,335,131,392,156,372,190,353,238,-1,251,382,291,-1,312,391,332,-1,382,379,391,371,407,384,419,287,487,350,527,347,572,342,620,297,639,323,677,301,678,390],[0,390,18,-1,31,359,33,-1,34,359,36,367,78,385,84,386,92,387,120,335,128,392,156,372,190,353,238,-1,251,382,294,-1,383,379,392,371,408,384,418,287,489,350,526,347,572,342,620,297,640,323,678,390],[0,390,14,-1,31,359,36,367,78,385,84,386,88,387,120,335,124,392,182,372,190,353,237,-1,251,382,295,-1,322,391,324,-1,383,379,393,371,407,384,419,287,491,350,524,347,573,342,622,297,637,323,676,390],[0,390,11,-1,29,359,36,367,78,385,84,386,87,387,120,335,121,392,182,372,190,353,233,-1,251,382,298,-1,384,379,393,371,407,384,420,287,492,350,524,347,574,342,625,297,639,323,677,390],[0,390,7,-1,25,359,36,367,78,385,84,386,87,387,119,392,182,372,190,353,230,-1,251,382,304,-1,385,379,396,371,406,384,417,287,454,-1,459,287,491,350,525,347,574,342,626,297,642,323,680,390],[0,390,4,-1,27,359,36,367,78,385,84,386,87,387,119,392,182,372,190,353,228,-1,251,382,309,-1,387,379,401,371,403,384,405,379,407,384,408,379,410,384,417,287,437,-1,445,287,448,-1,449,287,450,-1,455,287,461,-1,464,287,491,350,526,347,574,342,626,297,643,323,685,390],[0,-1,32,359,36,367,78,385,84,386,87,387,119,392,182,372,190,353,228,-1,251,382,313,-1,390,379,402,384,403,379,411,384,418,379,419,287,433,-1,455,287,462,-1,476,287,490,350,524,347,573,342,625,297,643,323,685,390],[0,-1,33,359,36,367,78,385,83,-1,88,387,120,335,126,392,181,372,190,353,227,-1,249,382,316,-1,394,379,412,384,418,379,422,287,428,-1,477,287,488,-1,491,350,518,347,576,342,627,297,644,323,685,390,692,-1,694,390,716,-1],[0,-1,34,359,36,367,70,-1,71,367,75,-1,97,387,120,335,140,392,180,372,190,353,226,-1,249,382,317,393,318,-1,396,379,423,-1,473,287,481,-1,493,350,520,347,579,342,626,297,642,323,681,-1,700,390,703,-1],[0,390,3,-1,39,367,57,-1,59,367,61,-1,102,387,120,335,140,392,179,372,190,353,224,-1,248,382,311,393,318,-1,341,379,343,-1,402,379,422,-1,465,287,478,-1,492,350,521,347,581,342,624,297,643,323,686,-1,716,390],[0,390,6,-1,8,390,10,-1,45,367,51,-1,104,387,120,335,140,392,177,372,190,353,219,-1,248,382,311,393,318,-1,342,379,345,-1,407,379,417,-1,463,287,474,-1,493,350,519,347,585,342,621,-1,622,342,623,297,645,323,665,-1,671,323,675,-1,717,390],[0,390,3,-1,106,387,120,335,140,392,176,372,190,353,217,-1,247,382,311,393,318,-1,462,287,473,-1,495,350,520,347,584,342,621,-1,623,297,628,-1,630,297,646,323,663,-1],[0,-1,107,387,120,335,140,392,172,372,190,353,212,-1,246,382,311,393,313,382,317,-1,462,287,472,-1,496,350,517,347,583,342,621,-1,637,297,649,323,660,-1],[0,-1,108,387,120,335,140,392,165,372,190,353,210,-1,245,382,318,-1,463,287,474,-1,497,350,516,347,581,342,621,-1,639,297,650,323,651,-1],[0,-1,109,387,120,335,140,392,158,372,190,353,208,-1,244,382,320,-1,465,287,475,-1,498,350,516,347,581,342,602,-1,604,342,619,-1,639,342,649,-1],[0,-1,109,387,120,335,140,392,156,372,190,353,206,-1,243,382,321,-1,466,287,477,-1,520,347,582,342,598,-1,605,342,615,-1,631,342,633,-1,639,342,648,-1],[0,-1,108,387,120,335,140,392,156,372,190,353,201,-1,243,382,323,-1,397,394,400,-1,469,287,480,-1,524,347,582,342,588,-1,590,342,594,-1,629,342,633,-1,638,342,644,-1],[0,-1,110,387,120,335,140,392,156,372,169,395,173,372,190,353,203,-1,242,382,326,-1,470,287,482,-1,517,347,520,-1,527,347,585,342,587,-1,635,342,649,-1,655,342,663,-1],[0,-1,111,387,120,335,140,392,156,372,167,395,173,372,190,353,203,-1,239,382,327,-1,470,287,485,-1,522,347,526,-1,530,347,589,-1,630,342,663,-1],[0,-1,112,387,120,335,140,392,156,372,190,353,204,-1,226,396,232,382,325,-1,475,287,493,-1,522,347,527,-1,534,347,589,-1,630,342,651,-1,652,342,654,-1,663,342,667,-1],[0,-1,112,387,120,335,140,392,156,372,190,353,204,-1,219,396,232,382,314,397,325,-1,393,394,394,-1,409,394,410,-1,478,287,499,-1,543,347,589,-1,635,342,645,-1,664,342,667,-1],[0,-1,115,387,120,335,140,392,156,372,190,353,206,-1,212,396,231,382,314,397,325,-1,389,394,396,-1,402,394,405,-1,409,394,413,-1,490,287,500,-1,547,347,586,-1,656,342,661,-1,674,342,678,-1],[0,-1,119,387,120,335,140,392,156,372,190,353,206,-1,213,396,231,382,314,397,325,-1,386,394,397,-1,401,394,408,-1,536,347,543,-1,551,347,578,-1,672,342,674,-1],[0,-1,126,335,140,392,156,372,190,353,209,-1,212,396,230,382,314,397,327,-1,385,394,412,-1,542,347,546,-1,555,347,577,-1],[0,-1,129,335,140,392,156,372,190,353,212,396,229,382,314,397,326,-1,381,394,408,-1,545,347,550,-1,554,347,577,-1],[0,-1,134,335,140,392,156,372,190,353,214,-1,215,396,228,382,315,397,326,-1,379,394,405,-1,411,394,421,-1,552,347,573,-1],[0,-1,142,392,156,372,190,353,214,-1,222,396,226,382,315,397,330,-1,380,394,412,-1,542,347,570,-1],[0,-1,150,392,156,372,187,327,190,353,220,-1,223,382,327,-1,379,394,417,-1,460,287,464,-1,475,287,481,-1,510,347,515,-1,540,347,564,-1],[0,-1,158,372,187,327,190,353,223,382,330,-1,391,394,418,-1,421,394,429,-1,431,287,436,-1,451,287,485,-1,540,347,559,-1],[0,-1,165,372,190,353,226,382,336,-1,397,394,412,-1,448,287,493,-1,515,347,523,-1,542,347,559,-1],[0,-1,168,372,190,353,231,382,339,-1,459,287,464,-1,466,287,485,-1,486,287,492,-1,538,347,555,-1],[0,-1,173,372,190,353,235,382,337,-1,473,287,481,-1,482,287,490,-1],[0,-1,182,372,190,353,240,382,327,-1],[0,-1,189,372,190,353,238,-1,253,382,323,-1],[0,-1,204,353,224,-1,266,382,315,-1],[0,-1,282,382,306,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1],[0,-1]]}},\"fields\":{\"dense\":{\"scale\":2400,\"octaves\":3},\"wild\":{\"scale\":700,\"octaves\":3},\"wet\":{\"scale\":1600,\"octaves\":2},\"odd\":{\"scale\":200,\"octaves\":2}},\"salience\":{\"fake_landmarks\":1,\"notable\":3,\"cap\":{\"water\":\"notable\"}},\"names\":{\"shop\":false},\"pace\":{\"keys\":{\"run\":2,\"walk\":6,\"stroll\":15},\"gps\":{\"stroll\":0.4,\"walk\":1.0,\"run\":2.5,\"zoom\":6.0}},\"zones\":{\"residential\":\"built\",\"commercial\":\"built\",\"civic\":\"built\",\"street\":\"built\",\"plaza\":\"built\",\"industrial\":\"built\",\"lot\":\"built\",\"park\":\"green\",\"trail\":\"green\",\"field\":\"green\",\"cemetery\":\"green\",\"woods\":\"woods\",\"water\":\"water\",\"floor\":\"dungeon\"},\"name\":\"roll_cool\",\"seed\":\"roll-cool-1\",\"map\":{\"themes\":[\"transportation\",\"places\",\"base\",\"divisions\"]},\"rainbow_text\":false,\"boards\":{\"today\":\"ball\",\"ever\":\"best\",\"cube_today\":\"cube\",\"cube_ever\":\"cube_best\"},\"weather\":{\"layer\":\"c3\"},\"factions\":{\"sides\":{\"sun\":{\"name\":\"sun\",\"colors\":[\"red\",\"orange\"],\"outline\":\"red\",\"wash\":\"orange\",\"light\":[\"#ff4f81\",\"#ffa94f\"],\"about\":\"For the early ones. Out before the streets are swept, home with a ball full of the morning.\"},\"moon\":{\"name\":\"moon\",\"colors\":[\"purple\",\"blue\"],\"outline\":\"blue\",\"wash\":\"blue\",\"light\":[\"#4b2fc4\",\"#1d6fbf\"],\"about\":\"For the late ones. Quiet streets, cold hands, and whatever the day left lying around.\"}},\"cells\":\"altar\",\"gift\":{\"least\":250,\"tiers\":3,\"cube\":0.25},\"reward\":{\"percent\":10,\"pay\":\"stardust\",\"most\":[1,2,3]},\"take\":{\"pays\":[10,20],\"paid\":3,\"cube\":3}},\"trips\":{\"places\":[{\"name\":\"Paris\",\"country\":\"France\",\"spots\":[{\"name\":\"Louvre Pyramid\",\"lat\":48.86099,\"lon\":2.33584},{\"name\":\"Eiffel Tower\",\"lat\":48.85826,\"lon\":2.2945},{\"name\":\"Sacré-Cœur\",\"lat\":48.88681,\"lon\":2.34302}]},{\"name\":\"London\",\"country\":\"United Kingdom\",\"spots\":[{\"name\":\"Big Ben\",\"lat\":51.5007,\"lon\":-0.12457},{\"name\":\"Tower Bridge\",\"lat\":51.50552,\"lon\":-0.07537},{\"name\":\"British Museum\",\"lat\":51.51931,\"lon\":-0.12671}]},{\"name\":\"Rome\",\"country\":\"Italy\",\"spots\":[{\"name\":\"Colosseum\",\"lat\":41.89094,\"lon\":12.4919},{\"name\":\"Trevi Fountain\",\"lat\":41.90098,\"lon\":12.48328},{\"name\":\"Pantheon\",\"lat\":41.89862,\"lon\":12.47683}]},{\"name\":\"Barcelona\",\"country\":\"Spain\",\"spots\":[{\"name\":\"Sagrada Família\",\"lat\":41.4035,\"lon\":2.17443},{\"name\":\"Park Güell\",\"lat\":41.41423,\"lon\":2.15246},{\"name\":\"La Rambla\",\"lat\":41.38082,\"lon\":2.17357}]},{\"name\":\"Madrid\",\"country\":\"Spain\",\"spots\":[{\"name\":\"Puerta del Sol\",\"lat\":40.41686,\"lon\":-3.70388},{\"name\":\"Museo del Prado\",\"lat\":40.41379,\"lon\":-3.69204}]},{\"name\":\"Lisbon\",\"country\":\"Portugal\",\"spots\":[{\"name\":\"Belém Tower\",\"lat\":38.69197,\"lon\":-9.21544},{\"name\":\"Praça do Comércio\",\"lat\":38.70772,\"lon\":-9.13652}]},{\"name\":\"Porto\",\"country\":\"Portugal\",\"spots\":[{\"name\":\"Livraria Lello\",\"lat\":41.14683,\"lon\":-8.61485},{\"name\":\"Ponte Luís I\",\"lat\":41.14017,\"lon\":-8.60946}]},{\"name\":\"Amsterdam\",\"country\":\"Netherlands\",\"spots\":[{\"name\":\"Dam Square\",\"lat\":52.37312,\"lon\":4.89235},{\"name\":\"Rijksmuseum\",\"lat\":52.35984,\"lon\":4.88504}]},{\"name\":\"Berlin\",\"country\":\"Germany\",\"spots\":[{\"name\":\"Brandenburg Gate\",\"lat\":52.51627,\"lon\":13.3777},{\"name\":\"Alexanderplatz\",\"lat\":52.52198,\"lon\":13.41364},{\"name\":\"East Side Gallery\",\"lat\":52.50445,\"lon\":13.44084}]},{\"name\":\"Munich\",\"country\":\"Germany\",\"spots\":[{\"name\":\"Marienplatz\",\"lat\":48.13714,\"lon\":11.5754},{\"name\":\"Englischer Garten\",\"lat\":48.16486,\"lon\":11.6064}]},{\"name\":\"Prague\",\"country\":\"Czechia\",\"spots\":[{\"name\":\"Charles Bridge\",\"lat\":50.08663,\"lon\":14.40987},{\"name\":\"Old Town Square\",\"lat\":50.08745,\"lon\":14.42097}]},{\"name\":\"Vienna\",\"country\":\"Austria\",\"spots\":[{\"name\":\"Stephansdom\",\"lat\":48.20849,\"lon\":16.37313},{\"name\":\"Schönbrunn Palace\",\"lat\":48.18499,\"lon\":16.31157}]},{\"name\":\"Budapest\",\"country\":\"Hungary\",\"spots\":[{\"name\":\"Fisherman's Bastion\",\"lat\":47.50231,\"lon\":19.0347},{\"name\":\"Hungarian Parliament\",\"lat\":47.50705,\"lon\":19.04592}]},{\"name\":\"Copenhagen\",\"country\":\"Denmark\",\"spots\":[{\"name\":\"Kongens Nytorv\",\"lat\":55.68042,\"lon\":12.58596},{\"name\":\"The Little Mermaid\",\"lat\":55.69305,\"lon\":12.59929}]},{\"name\":\"Stockholm\",\"country\":\"Sweden\",\"spots\":[{\"name\":\"Stortorget\",\"lat\":59.325,\"lon\":18.07082},{\"name\":\"Vasa Museum\",\"lat\":59.32815,\"lon\":18.09137}]},{\"name\":\"Oslo\",\"country\":\"Norway\",\"spots\":[{\"name\":\"Oslo Opera House\",\"lat\":59.90752,\"lon\":10.75268}]},{\"name\":\"Reykjavík\",\"country\":\"Iceland\",\"spots\":[{\"name\":\"Hallgrímskirkja\",\"lat\":64.1418,\"lon\":-21.92671}]},{\"name\":\"Dublin\",\"country\":\"Ireland\",\"spots\":[{\"name\":\"Trinity College Dublin\",\"lat\":53.34371,\"lon\":-6.25443},{\"name\":\"Temple Bar\",\"lat\":53.3455,\"lon\":-6.26311}]},{\"name\":\"Edinburgh\",\"country\":\"United Kingdom\",\"spots\":[{\"name\":\"Edinburgh Castle\",\"lat\":55.94869,\"lon\":-3.20042},{\"name\":\"Royal Mile\",\"lat\":55.95006,\"lon\":-3.18835}]},{\"name\":\"Athens\",\"country\":\"Greece\",\"spots\":[{\"name\":\"Acropolis of Athens\",\"lat\":37.97169,\"lon\":23.72632},{\"name\":\"Monastiraki Square\",\"lat\":37.97636,\"lon\":23.72595}]},{\"name\":\"Istanbul\",\"country\":\"Turkey\",\"spots\":[{\"name\":\"Hagia Sophia\",\"lat\":41.0085,\"lon\":28.98001},{\"name\":\"Grand Bazaar\",\"lat\":41.01095,\"lon\":28.96802},{\"name\":\"Galata Tower\",\"lat\":41.02564,\"lon\":28.97421}]},{\"name\":\"Florence\",\"country\":\"Italy\",\"spots\":[{\"name\":\"Ponte Vecchio\",\"lat\":43.76803,\"lon\":11.25316},{\"name\":\"Duomo\",\"lat\":43.7731,\"lon\":11.25548}]},{\"name\":\"Venice\",\"country\":\"Italy\",\"spots\":[{\"name\":\"Piazza San Marco\",\"lat\":45.43426,\"lon\":12.33867},{\"name\":\"Rialto Bridge\",\"lat\":45.43807,\"lon\":12.33565}]},{\"name\":\"Brussels\",\"country\":\"Belgium\",\"spots\":[{\"name\":\"Grand Place\",\"lat\":50.84673,\"lon\":4.35241},{\"name\":\"Atomium\",\"lat\":50.89571,\"lon\":4.34107}]},{\"name\":\"Warsaw\",\"country\":\"Poland\",\"spots\":[{\"name\":\"Palace of Culture and Science\",\"lat\":52.23177,\"lon\":21.0058},{\"name\":\"Old Town Market Square\",\"lat\":52.24977,\"lon\":21.01252}]},{\"name\":\"Kraków\",\"country\":\"Poland\",\"spots\":[{\"name\":\"Main Market Square\",\"lat\":50.06133,\"lon\":19.93599},{\"name\":\"Wawel Castle\",\"lat\":50.05441,\"lon\":19.93602}]},{\"name\":\"Seville\",\"country\":\"Spain\",\"spots\":[{\"name\":\"Plaza de España\",\"lat\":37.37697,\"lon\":-5.98694},{\"name\":\"Seville Cathedral\",\"lat\":37.38591,\"lon\":-5.99314}]},{\"name\":\"Saint Petersburg\",\"country\":\"Russia\",\"spots\":[{\"name\":\"Palace Square\",\"lat\":59.93904,\"lon\":30.31535},{\"name\":\"Church of the Savior on Spilled Blood\",\"lat\":59.9401,\"lon\":30.32883}]},{\"name\":\"Moscow\",\"country\":\"Russia\",\"spots\":[{\"name\":\"Red Square\",\"lat\":55.75359,\"lon\":37.6215}]},{\"name\":\"Tokyo\",\"country\":\"Japan\",\"spots\":[{\"name\":\"Shibuya Crossing\",\"lat\":35.6595,\"lon\":139.7005},{\"name\":\"Sensō-ji\",\"lat\":35.7134,\"lon\":139.79553},{\"name\":\"Tokyo Tower\",\"lat\":35.65845,\"lon\":139.74554}]},{\"name\":\"Kyoto\",\"country\":\"Japan\",\"spots\":[{\"name\":\"Fushimi Inari Taisha\",\"lat\":34.96752,\"lon\":135.77971},{\"name\":\"Kinkaku-ji\",\"lat\":35.03953,\"lon\":135.72954},{\"name\":\"Gion\",\"lat\":35.00469,\"lon\":135.7784}]},{\"name\":\"Osaka\",\"country\":\"Japan\",\"spots\":[{\"name\":\"Dōtonbori\",\"lat\":34.66921,\"lon\":135.50157},{\"name\":\"Osaka Castle\",\"lat\":34.68718,\"lon\":135.5254}]},{\"name\":\"Seoul\",\"country\":\"South Korea\",\"spots\":[{\"name\":\"Gyeongbokgung\",\"lat\":37.57975,\"lon\":126.97668},{\"name\":\"Myeongdong\",\"lat\":37.5609,\"lon\":126.98638},{\"name\":\"Bukchon Hanok Village\",\"lat\":37.58239,\"lon\":126.98586}]},{\"name\":\"Beijing\",\"country\":\"China\",\"spots\":[{\"name\":\"Forbidden City\",\"lat\":39.91728,\"lon\":116.39077},{\"name\":\"Temple of Heaven\",\"lat\":39.87991,\"lon\":116.40287}]},{\"name\":\"Shanghai\",\"country\":\"China\",\"spots\":[{\"name\":\"The Bund\",\"lat\":31.23534,\"lon\":121.48763},{\"name\":\"Yu Garden\",\"lat\":31.22893,\"lon\":121.48798}]},{\"name\":\"Shenzhen\",\"country\":\"China\",\"spots\":[{\"name\":\"Ping An Finance Centre\",\"lat\":22.53641,\"lon\":114.05047}]},{\"name\":\"Hong Kong\",\"country\":\"China\",\"spots\":[{\"name\":\"Victoria Peak\",\"lat\":22.27604,\"lon\":114.14546},{\"name\":\"Tsim Sha Tsui Promenade\",\"lat\":22.29942,\"lon\":114.18565}]},{\"name\":\"Taipei\",\"country\":\"Taiwan\",\"spots\":[{\"name\":\"Taipei 101\",\"lat\":25.03384,\"lon\":121.5645},{\"name\":\"Longshan Temple\",\"lat\":25.03528,\"lon\":121.49958}]},{\"name\":\"Singapore\",\"country\":\"Singapore\",\"spots\":[{\"name\":\"Marina Bay Sands\",\"lat\":1.2837,\"lon\":103.86072},{\"name\":\"Chinatown\",\"lat\":1.27997,\"lon\":103.84369}]},{\"name\":\"Bangkok\",\"country\":\"Thailand\",\"spots\":[{\"name\":\"Grand Palace\",\"lat\":13.74935,\"lon\":100.49186},{\"name\":\"Khao San Road\",\"lat\":13.75891,\"lon\":100.49727}]},{\"name\":\"Hanoi\",\"country\":\"Vietnam\",\"spots\":[{\"name\":\"Ngọc Sơn Temple\",\"lat\":21.03073,\"lon\":105.85238}]},{\"name\":\"Ho Chi Minh City\",\"country\":\"Vietnam\",\"spots\":[{\"name\":\"Bến Thành Market\",\"lat\":10.77253,\"lon\":106.69804}]},{\"name\":\"Kuala Lumpur\",\"country\":\"Malaysia\",\"spots\":[{\"name\":\"Petronas Towers\",\"lat\":3.15797,\"lon\":101.7112}]},{\"name\":\"Jakarta\",\"country\":\"Indonesia\",\"spots\":[{\"name\":\"National Monument\",\"lat\":-6.1754,\"lon\":106.82717}]},{\"name\":\"Manila\",\"country\":\"Philippines\",\"spots\":[{\"name\":\"Intramuros\",\"lat\":14.59096,\"lon\":120.97465}]},{\"name\":\"Mumbai\",\"country\":\"India\",\"spots\":[{\"name\":\"Gateway of India\",\"lat\":18.92197,\"lon\":72.83457},{\"name\":\"Chhatrapati Shivaji Maharaj Terminus\",\"lat\":18.93986,\"lon\":72.83552}]},{\"name\":\"Delhi\",\"country\":\"India\",\"spots\":[{\"name\":\"India Gate\",\"lat\":28.61293,\"lon\":77.22949},{\"name\":\"Red Fort\",\"lat\":28.65608,\"lon\":77.2408}]},{\"name\":\"Jaipur\",\"country\":\"India\",\"spots\":[{\"name\":\"Hawa Mahal\",\"lat\":26.92393,\"lon\":75.82687}]},{\"name\":\"Agra\",\"country\":\"India\",\"spots\":[{\"name\":\"Taj Mahal\",\"lat\":27.17501,\"lon\":78.0421}]},{\"name\":\"Varanasi\",\"country\":\"India\",\"spots\":[{\"name\":\"Dashashwamedh Ghat\",\"lat\":25.30625,\"lon\":83.01015}]},{\"name\":\"Kathmandu\",\"country\":\"Nepal\",\"spots\":[{\"name\":\"Kathmandu Durbar Square\",\"lat\":27.70429,\"lon\":85.30656}]},{\"name\":\"Dubai\",\"country\":\"United Arab Emirates\",\"spots\":[{\"name\":\"Burj Khalifa\",\"lat\":25.19703,\"lon\":55.27413},{\"name\":\"Al Fahidi Historical Neighbourhood\",\"lat\":25.26423,\"lon\":55.30017}]},{\"name\":\"Tel Aviv\",\"country\":\"Israel\",\"spots\":[{\"name\":\"Jaffa Clock Tower\",\"lat\":32.05507,\"lon\":34.75627}]},{\"name\":\"Samarkand\",\"country\":\"Uzbekistan\",\"spots\":[{\"name\":\"Registan\",\"lat\":39.65478,\"lon\":66.97576}]},{\"name\":\"Ulaanbaatar\",\"country\":\"Mongolia\",\"spots\":[{\"name\":\"Sükhbaatar Square\",\"lat\":47.91881,\"lon\":106.9169}]},{\"name\":\"Cairo\",\"country\":\"Egypt\",\"spots\":[{\"name\":\"Great Pyramid of Giza\",\"lat\":29.97916,\"lon\":31.13421},{\"name\":\"Khan el-Khalili\",\"lat\":30.04894,\"lon\":31.26134}]},{\"name\":\"Marrakesh\",\"country\":\"Morocco\",\"spots\":[{\"name\":\"Jemaa el-Fnaa\",\"lat\":31.62578,\"lon\":-7.9889}]},{\"name\":\"Tunis\",\"country\":\"Tunisia\",\"spots\":[{\"name\":\"Medina of Tunis\",\"lat\":36.79869,\"lon\":10.17174}]},{\"name\":\"Cape Town\",\"country\":\"South Africa\",\"spots\":[{\"name\":\"V&A Waterfront\",\"lat\":-33.906,\"lon\":18.41953},{\"name\":\"Bo-Kaap\",\"lat\":-33.92056,\"lon\":18.41288}]},{\"name\":\"Johannesburg\",\"country\":\"South Africa\",\"spots\":[{\"name\":\"Constitution Hill\",\"lat\":-26.18801,\"lon\":28.04109}]},{\"name\":\"Nairobi\",\"country\":\"Kenya\",\"spots\":[{\"name\":\"KICC\",\"lat\":-1.28809,\"lon\":36.82326}]},{\"name\":\"Lagos\",\"country\":\"Nigeria\",\"spots\":[{\"name\":\"Tafawa Balewa Square\",\"lat\":6.44707,\"lon\":3.40151}]},{\"name\":\"Accra\",\"country\":\"Ghana\",\"spots\":[{\"name\":\"Black Star Square\",\"lat\":5.54742,\"lon\":-0.19256}]},{\"name\":\"Addis Ababa\",\"country\":\"Ethiopia\",\"spots\":[{\"name\":\"Meskel Square\",\"lat\":9.01023,\"lon\":38.76063}]},{\"name\":\"Dakar\",\"country\":\"Senegal\",\"spots\":[{\"name\":\"Place de l'Indépendance\",\"lat\":14.66953,\"lon\":-17.43206}]},{\"name\":\"Zanzibar City\",\"country\":\"Tanzania\",\"spots\":[{\"name\":\"Stone Town\",\"lat\":-6.16265,\"lon\":39.18966}]},{\"name\":\"Amman\",\"country\":\"Jordan\",\"spots\":[{\"name\":\"Roman Theatre\",\"lat\":31.95162,\"lon\":35.93929}]},{\"name\":\"New York City\",\"country\":\"United States\",\"spots\":[{\"name\":\"Empire State Building\",\"lat\":40.74844,\"lon\":-73.98566},{\"name\":\"Brooklyn Bridge\",\"lat\":40.70622,\"lon\":-73.99702},{\"name\":\"Central Park\",\"lat\":40.78277,\"lon\":-73.96536}]},{\"name\":\"Philadelphia\",\"country\":\"United States\",\"spots\":[{\"name\":\"Philadelphia Museum of Art\",\"lat\":39.96557,\"lon\":-75.18152},{\"name\":\"Liberty Bell\",\"lat\":39.94995,\"lon\":-75.15021},{\"name\":\"Pat's King of Steaks\",\"lat\":39.93322,\"lon\":-75.15924}]},{\"name\":\"Washington\",\"country\":\"United States\",\"spots\":[{\"name\":\"Lincoln Memorial\",\"lat\":38.88926,\"lon\":-77.05021},{\"name\":\"United States Capitol\",\"lat\":38.88981,\"lon\":-77.00902}]},{\"name\":\"Boston\",\"country\":\"United States\",\"spots\":[{\"name\":\"Faneuil Hall\",\"lat\":42.36003,\"lon\":-71.05623},{\"name\":\"Fenway Park\",\"lat\":42.34646,\"lon\":-71.0971}]},{\"name\":\"Chicago\",\"country\":\"United States\",\"spots\":[{\"name\":\"Cloud Gate\",\"lat\":41.88268,\"lon\":-87.62334},{\"name\":\"Navy Pier\",\"lat\":41.8918,\"lon\":-87.60414}]},{\"name\":\"San Francisco\",\"country\":\"United States\",\"spots\":[{\"name\":\"Golden Gate Bridge\",\"lat\":37.80745,\"lon\":-122.47596},{\"name\":\"Fisherman's Wharf\",\"lat\":37.80813,\"lon\":-122.41659},{\"name\":\"Painted Ladies\",\"lat\":37.77622,\"lon\":-122.43279}]},{\"name\":\"Los Angeles\",\"country\":\"United States\",\"spots\":[{\"name\":\"Santa Monica Pier\",\"lat\":34.0089,\"lon\":-118.4974},{\"name\":\"Griffith Observatory\",\"lat\":34.11822,\"lon\":-118.30029},{\"name\":\"TCL Chinese Theatre\",\"lat\":34.10207,\"lon\":-118.34095}]},{\"name\":\"Seattle\",\"country\":\"United States\",\"spots\":[{\"name\":\"Pike Place Market\",\"lat\":47.6094,\"lon\":-122.34141},{\"name\":\"Space Needle\",\"lat\":47.62051,\"lon\":-122.3493}]},{\"name\":\"New Orleans\",\"country\":\"United States\",\"spots\":[{\"name\":\"Jackson Square\",\"lat\":29.95747,\"lon\":-90.06295},{\"name\":\"Bourbon Street\",\"lat\":29.95781,\"lon\":-90.06636}]},{\"name\":\"Miami\",\"country\":\"United States\",\"spots\":[{\"name\":\"South Beach\",\"lat\":25.77443,\"lon\":-80.13324}]},{\"name\":\"Las Vegas\",\"country\":\"United States\",\"spots\":[{\"name\":\"Bellagio\",\"lat\":36.11232,\"lon\":-115.17872}]},{\"name\":\"Nashville\",\"country\":\"United States\",\"spots\":[{\"name\":\"Ryman Auditorium\",\"lat\":36.16125,\"lon\":-86.7785}]},{\"name\":\"Toronto\",\"country\":\"Canada\",\"spots\":[{\"name\":\"CN Tower\",\"lat\":43.64256,\"lon\":-79.38709},{\"name\":\"Kensington Market\",\"lat\":43.65521,\"lon\":-79.40226}]},{\"name\":\"Montreal\",\"country\":\"Canada\",\"spots\":[{\"name\":\"Old Port of Montreal\",\"lat\":45.50441,\"lon\":-73.55299},{\"name\":\"Mount Royal\",\"lat\":45.50859,\"lon\":-73.58971}]},{\"name\":\"Vancouver\",\"country\":\"Canada\",\"spots\":[{\"name\":\"Gastown\",\"lat\":49.28366,\"lon\":-123.10624},{\"name\":\"Stanley Park\",\"lat\":49.30207,\"lon\":-123.14133}]},{\"name\":\"Mexico City\",\"country\":\"Mexico\",\"spots\":[{\"name\":\"Zócalo\",\"lat\":19.43265,\"lon\":-99.1332},{\"name\":\"Chapultepec Castle\",\"lat\":19.42046,\"lon\":-99.18209},{\"name\":\"Jardín Centenario, Coyoacán\",\"lat\":19.34926,\"lon\":-99.16367}]},{\"name\":\"Oaxaca\",\"country\":\"Mexico\",\"spots\":[{\"name\":\"Zócalo de Oaxaca\",\"lat\":17.0606,\"lon\":-96.72534}]},{\"name\":\"Havana\",\"country\":\"Cuba\",\"spots\":[{\"name\":\"Plaza Vieja\",\"lat\":23.13608,\"lon\":-82.35003},{\"name\":\"Malecón\",\"lat\":23.14593,\"lon\":-82.38596}]},{\"name\":\"Bogotá\",\"country\":\"Colombia\",\"spots\":[{\"name\":\"Plaza de Bolívar\",\"lat\":4.59817,\"lon\":-74.076}]},{\"name\":\"Medellín\",\"country\":\"Colombia\",\"spots\":[{\"name\":\"Plaza Botero\",\"lat\":6.25185,\"lon\":-75.56864}]},{\"name\":\"Cartagena\",\"country\":\"Colombia\",\"spots\":[{\"name\":\"Torre del Reloj\",\"lat\":10.42305,\"lon\":-75.54921}]},{\"name\":\"Lima\",\"country\":\"Peru\",\"spots\":[{\"name\":\"Plaza Mayor de Lima\",\"lat\":-12.04594,\"lon\":-77.03057},{\"name\":\"Miraflores\",\"lat\":-12.1215,\"lon\":-77.02591}]},{\"name\":\"Cusco\",\"country\":\"Peru\",\"spots\":[{\"name\":\"Plaza de Armas\",\"lat\":-13.51677,\"lon\":-71.97878}]},{\"name\":\"Quito\",\"country\":\"Ecuador\",\"spots\":[{\"name\":\"Plaza de la Independencia\",\"lat\":-0.22011,\"lon\":-78.51209}]},{\"name\":\"Buenos Aires\",\"country\":\"Argentina\",\"spots\":[{\"name\":\"Obelisco\",\"lat\":-34.60371,\"lon\":-58.38163},{\"name\":\"La Boca\",\"lat\":-34.63351,\"lon\":-58.35904},{\"name\":\"Recoleta Cemetery\",\"lat\":-34.58766,\"lon\":-58.3936}]},{\"name\":\"Rio de Janeiro\",\"country\":\"Brazil\",\"spots\":[{\"name\":\"Copacabana\",\"lat\":-22.97197,\"lon\":-43.1843},{\"name\":\"Christ the Redeemer\",\"lat\":-22.95192,\"lon\":-43.21046},{\"name\":\"Arcos da Lapa\",\"lat\":-22.91303,\"lon\":-43.17996}]},{\"name\":\"São Paulo\",\"country\":\"Brazil\",\"spots\":[{\"name\":\"Avenida Paulista\",\"lat\":-23.55686,\"lon\":-46.66141},{\"name\":\"Sé Cathedral\",\"lat\":-23.55127,\"lon\":-46.63437}]},{\"name\":\"Santiago\",\"country\":\"Chile\",\"spots\":[{\"name\":\"Plaza de Armas\",\"lat\":-33.43742,\"lon\":-70.65128}]},{\"name\":\"Sydney\",\"country\":\"Australia\",\"spots\":[{\"name\":\"Sydney Opera House\",\"lat\":-33.8572,\"lon\":151.21512},{\"name\":\"Bondi Beach\",\"lat\":-33.8907,\"lon\":151.27241}]},{\"name\":\"Melbourne\",\"country\":\"Australia\",\"spots\":[{\"name\":\"Flinders Street Station\",\"lat\":-37.81842,\"lon\":144.96648},{\"name\":\"Federation Square\",\"lat\":-37.81774,\"lon\":144.96916}]},{\"name\":\"Auckland\",\"country\":\"New Zealand\",\"spots\":[{\"name\":\"Sky Tower\",\"lat\":-36.84846,\"lon\":174.76218}]},{\"name\":\"Wellington\",\"country\":\"New Zealand\",\"spots\":[{\"name\":\"Te Papa\",\"lat\":-41.29033,\"lon\":174.78193}]},{\"name\":\"Honolulu\",\"country\":\"United States\",\"spots\":[{\"name\":\"Waikiki Beach\",\"lat\":21.2741,\"lon\":-157.82431}]}],\"days\":14},\"guide\":{\"links\":{\"bag\":\"inventory\",\"shop\":\"shop\",\"catalog\":\"catalog\"},\"lines\":{\"tap\":\"Tap a thing to roll it into your {ball | cube}. You can roll smaller things, but watch out for bigger things.\",\"walk\":\"Walk around to find things to roll into your ball.\",\"cube\":\"When you're playing without GPS, you roll a cube, not a ball: it has its own size and its own boards. Use GPS to grow your ball.\",\"stardust\":\"Stardust: buys clothes at the [shop](shop). You get it for every new kind you roll up, and some other special cases.\",\"present\":\"Roll up presents to get what's inside.\",\"altar\":\"Sacrifice half your {ball | cube} to the altar to gain control of this area for your team. Your reward? Stardust for winning it, and more as you roll things there, walking. At midnight the altars move, and every area starts over.\",\"mix\":\"Your {ball | cube} is mostly {pct}% {part}.\",\"star\":\"At midnight your ball becomes a star, and a cube becomes a planet. Bigger *is* better.\",\"word\":\"Words can be used to describe you in your profile.\",\"wearable\":\"Something to wear: tap it in your [bag](bag) to put it on.\"},\"help\":[{\"heading\":\"Rolling\",\"topics\":[{\"title\":\"walking\",\"line\":\"Walk around to find things to roll into your ball.\"},{\"title\":\"rolling things up\",\"line\":\"Tap a thing to roll it into your {ball | cube}. You can roll smaller things, but watch out for bigger things.\"},{\"title\":\"the map\",\"line\":\"Each hex on the map is a room, about 15 m across, and its colour says what kind of place it is: tap *legend* to see which. You're in the middle.\"},{\"title\":\"ball or cube\",\"line\":\"When you're playing without GPS, you roll a cube, not a ball: it has its own size and its own boards. Use GPS to grow your ball.\"},{\"title\":\"what it's made of\",\"line\":\"What most of your {ball | cube} is made of shows under its size: food, detritus, animals and so on.\"},{\"title\":\"going fast\",\"line\":\"Faster than anyone runs (on a bus, in a car), rooms wait till you slow down, and nothing can be rolled up meanwhile.\"}]},{\"heading\":\"Your stuff\",\"topics\":[{\"title\":\"stardust\",\"line\":\"Stardust: buys clothes at the [shop](shop). You get it for every new kind you roll up, and some other special cases.\"},{\"title\":\"presents\",\"line\":\"Roll up presents to get what's inside.\"},{\"title\":\"things to wear\",\"line\":\"Something to wear: tap it in your [bag](bag) to put it on.\"},{\"title\":\"words\",\"line\":\"Words can be used to describe you in your profile.\"},{\"title\":\"the catalog\",\"line\":\"Every kind of thing you've rolled up is in the [catalog](catalog), by type. The ones you haven't found yet are there too, dim.\"}]},{\"heading\":\"Teams\",\"topics\":[{\"title\":\"altars and teams\",\"line\":\"Sacrifice half your {ball | cube} to the altar to gain control of this area for your team. Your reward? Stardust for winning it, and more as you roll things there, walking. At midnight the altars move, and every area starts over.\"},{\"title\":\"chat\",\"line\":\"Chat is with your team, in the area you're in. You need to be logged in. Nothing is kept: you see what's said while you're here. Tap a message to report it or to block whoever said it: then neither of you hears the other.\"}]},{\"heading\":\"Each day\",\"topics\":[{\"title\":\"stars and planets\",\"line\":\"At midnight your ball becomes a star, and a cube becomes a planet. Bigger *is* better.\"},{\"title\":\"the boards\",\"line\":\"The boards rank today's biggest, in your area and in the world, and the best ever. Your area is where your {ball | cube} last grew. Some names on them are NPCs, there so a board is never empty.\"}]},{\"heading\":\"Your account\",\"topics\":[{\"title\":\"playing as a guest\",\"line\":\"As a guest, your game is kept on this phone only: clear the browser or lose the phone and it's gone. Sign up to keep it, play on other devices, join a team and chat. Signing up keeps everything you have.\"},{\"title\":\"one device at a time\",\"line\":\"You play in one tab, on one device, at a time. Open the game somewhere else and it asks whether to play there; if you do, the other one stops.\"},{\"title\":\"deleting your account\",\"line\":\"Open your profile (top right), then *account*, then *delete account*. Everything of yours goes with it, for good.\"}]}]},\"tutorial\":{\"fits\":50,\"gift\":[\"w_mortarboard\",\"w_graduation_gown\"],\"into\":\"wardrobe\",\"record\":\"wardrobe\",\"text\":\"You graduated! A graduation cap and a graduation gown, yours to keep.\",\"rooms\":[{\"title\":\"A small, bare room\",\"text\":\"A small, bare room with one lamp. An acorn cap lies on the floor.\",\"tip\":\"Tap the acorn cap to roll it up. Then either tap the N button on the screen (or W if you have a keyboard) to go north.\",\"things\":[{\"id\":\"acorn_cap\",\"name\":\"acorn cap\",\"size\":15}]},{\"title\":\"A busier floor\",\"text\":\"The floor here is busier, and one thing on it is too big for you, for now.\",\"tip\":\"Roll up the small things. Bump into something too big and things come loose.\",\"things\":[{\"id\":\"hex_nut\",\"name\":\"hex nut\",\"size\":15},{\"id\":\"dime\",\"name\":\"dime\",\"size\":18},{\"id\":\"googly_eye\",\"name\":\"googly eye\",\"size\":15},{\"id\":\"cherry_pit\",\"name\":\"cherry pit\",\"size\":15},{\"id\":\"candy\",\"name\":\"candy\",\"size\":15},{\"id\":\"gravel\",\"name\":\"gravel\",\"size\":15}]},{\"title\":\"By the door\",\"text\":\"A blackberry sits by the door, bigger than the dime was. Roll up a few more things and it fits.\",\"things\":[{\"id\":\"blackberry\",\"name\":\"blackberry\",\"size\":20},{\"id\":\"marble\",\"name\":\"marble\",\"size\":16},{\"id\":\"die\",\"name\":\"die\",\"size\":16},{\"id\":\"subway_token\",\"name\":\"subway token\",\"size\":16}]},{\"title\":\"A window\",\"text\":\"A window, and the sky going dark outside. The sill is crowded.\",\"tip\":\"At midnight your ball becomes a star. Roll it as big as you can, every day.\",\"things\":[{\"id\":\"nickel\",\"name\":\"nickel\",\"size\":21},{\"id\":\"penny\",\"name\":\"penny\",\"size\":20},{\"id\":\"candy_corn\",\"name\":\"candy corn\",\"size\":20},{\"id\":\"cufflink\",\"name\":\"cufflink\",\"size\":20},{\"id\":\"bingo_chip\",\"name\":\"bingo chip\",\"size\":20},{\"id\":\"beetle\",\"name\":\"beetle\",\"size\":20},{\"id\":\"earplug\",\"name\":\"earplug\",\"size\":20},{\"id\":\"quarter\",\"name\":\"quarter\",\"size\":24},{\"id\":\"acorn\",\"name\":\"acorn\",\"size\":25},{\"id\":\"cherry\",\"name\":\"cherry\",\"size\":25},{\"id\":\"olive\",\"name\":\"olive\",\"size\":25},{\"id\":\"almond\",\"name\":\"almond\",\"size\":25},{\"id\":\"pom_pom\",\"name\":\"pom-pom\",\"size\":25}]},{\"title\":\"Graduation\",\"text\":\"Two presents on a table, with your name on them.\",\"tip\":\"Open them. They're yours to keep.\",\"things\":[],\"gift\":[{\"id\":\"w_mortarboard\",\"name\":\"graduation cap\"},{\"id\":\"w_graduation_gown\",\"name\":\"graduation gown\"}]},{\"title\":\"The door\",\"text\":\"A door, open onto the street. Out there is your neighborhood, and everything in it can be rolled up, eventually.\",\"tip\":\"Every day out there, your ball starts just this big.\",\"things\":[]}],\"start\":30,\"cheer\":{\"at\":50,\"text\":\"Great job, you're becoming\",\"rainbow\":\"GIGANTIC!!!\",\"after\":\"Keep rolling things up to make the biggest star in the universe.\"}}},\"look\":true}"