{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"clothes-rack","type":"registry:component","title":"Clothes Rack","description":"A shop rail of 3D garments that swivel to face you, with cloth that moves like fabric.","author":"DiMaac (HankTheTank) <https://dimaac.com>","dependencies":["three"],"files":[{"path":"registry/dimaac/clothes-rack/clothes-rack.tsx","type":"registry:component","target":"components/dimaac/clothes-rack.tsx","content":"\"use client\";\n\nimport { flushSync } from \"react-dom\";\nimport { useEffect, useMemo, useRef, useState, useSyncExternalStore, type FocusEvent, type KeyboardEvent } from \"react\";\nimport * as THREE from \"three\";\nimport { ClothMotion } from \"./clothes-rack/cloth-motion\";\nimport { createWardrobe, type Garment, type GarmentSpec, type GarmentTextures, type HangerFinish, type RailFinish, type Wardrobe } from \"./clothes-rack/garment\";\n\n// A shop rail of real 3D garments, built to move like the reference shop page.\n// At rest every garment hangs side-on on its swivel hook, perfectly still. Point at one and it swivels to\n// face you while only its neighbours slide apart along the rail: the facing garment's hook never moves,\n// the nearest neighbour moves the most, the next ones less and less, and far ones not at all.\n// Two signals drive it. \"open\" is the spacing: each garment's share eases out like a first-order lag\n// (time constant 0.18 s), and every position is a plain sum of the open amounts, so nothing overshoots.\n// \"t\" is the turn: a critically damped spring that settles in about the chosen duration.\n// The cloth itself moves too (cloth-motion.ts): its lower part lags a turn or a push, swings through once and\n// settles, with a faint ripple running down the fabric, then everything is still again.\n// A click on the facing garment fades a detail view in over the page. Its arrows swap garments the way you flip\n// through a rail: the one on show slides aside turning side-on and fades, the next swings in to face you.\n// three.js only renders while something moves, and stops when offscreen or the tab is hidden.\n\nexport type ClothesRackItem = GarmentSpec & {\n  /** The product name: the caption under the facing garment and the title in the detail view. */\n  name: string;\n};\n\nexport type ClothesRackProps = {\n  /** The garments on the rail, in order. Defaults to ten garments of our own design: eight tees, a crewneck and a shirt. */\n  items?: ClothesRackItem[];\n  /** How far each garment is turned away at rest, in degrees. 90 would be edge-on. Default 80. */\n  restAngle?: number;\n  /** The clear air between side-on garments, as a percentage of a garment's body width. Default 7. */\n  gap?: number;\n  /** How much the facing garment grows, from 1 (not at all) to 1.2. Default 1. */\n  activeScale?: number;\n  /** The peak tilt in degrees a pushed hanger leans against the push, as a rigid tilt. 0 keeps every hanger still. Default 0. */\n  swing?: number;\n  /** How long a garment takes to turn to face you, in seconds. Default 0.25. */\n  duration?: number;\n  /** How much the fabric moves: its hem lags a turn and trails a push, then swings back and settles. 0 keeps the cloth stiff, 2 is very loose. Default 1. */\n  flow?: number;\n  /**\n   * A soft draught along the rail, so the rack moves on its own: each garment turns a few degrees back and forth, a\n   * slow wave running down the rail, and its cloth sways. 0 keeps everything still until it is pointed at, 1 is a\n   * gentle breeze. A garment turned to face you is out of it. Off with reduced motion. Default 0.\n   */\n  breeze?: number;\n  /** The finish of the rail. Default \"chrome\". */\n  rail?: RailFinish;\n  /** The finish of the hangers. Default \"wood\". */\n  hanger?: HangerFinish;\n  /** Show the product name under the facing garment. Default true. */\n  showCaption?: boolean;\n  /** Open a detail view when the facing garment is clicked (or Enter is pressed). Default true. */\n  detail?: boolean;\n  /** How much of the box height a garment takes, from 0.25 to 0.42. Default 0.4. */\n  size?: number;\n  /** Called when \"See availability\" is pressed, with the garment it was pressed for. */\n  onSelect?: (item: ClothesRackItem, index: number) => void;\n  /**\n   * Photographic cloth and light: addresses of tiling fabric scans (normal and roughness maps of jersey for the tees\n   * and the shirt and of fleece for the crewneck), a greyscale heather grain, and an equirect .hdr studio. All\n   * optional; without them the knit is drawn in code and the light is a plain room. The demo uses Poly Haven's CC0\n   * scans, served from ui.dimaac.com/media/textures.\n   */\n  textures?: GarmentTextures;\n  /** Extra classes for the outer box. Give it a size: the rack fills it. */\n  className?: string;\n};\n\nexport const defaultItems: ClothesRackItem[] = [\n  { name: \"Field Shirt\", kind: \"shirt\", colour: \"#2f3631\", print: { kind: \"pattern\", colours: [\"#20251f\", \"#e6dcc4\", \"#c7a46c\", \"#9fae86\", \"#bf7350\"] } },\n  { name: \"Heavy Tee, Black\", kind: \"tee\", colour: \"#1b1b1d\" },\n  { name: \"Heavy Tee, White\", kind: \"tee\", colour: \"#f2f2f3\" },\n  { name: \"Made Slowly Tee\", kind: \"tee\", colour: \"#18181a\", print: { kind: \"script\", text: \"Made Slowly\", ink: \"#f4f1ea\" } },\n  { name: \"Field Notes Crewneck\", kind: \"crewneck\", colour: \"#2c4844\", print: { kind: \"serif\", lines: [\"Field\", \"Notes\", \"Club\"], ink: \"#f1ede2\" } },\n  { name: \"Night Shift Tee\", kind: \"tee\", colour: \"#1d1a1f\", print: { kind: \"chest\", text: \"Night Shift\", ink: \"#e9e4dc\" } },\n  { name: \"Bloom Tee\", kind: \"tee\", colour: \"#f4f4f5\", print: { kind: \"flowers\", text: \"Bloom\", ink: \"#1f1f24\" } },\n  { name: \"Studio Tee\", kind: \"tee\", colour: \"#f5f5f6\", print: { kind: \"chest\", text: \"DiMaac Studio\", ink: \"#22252b\" } },\n  { name: \"Pocket Tee\", kind: \"tee\", colour: \"#f3f3f4\", print: { kind: \"pocket\" } },\n  { name: \"Grey Marl Tee\", kind: \"tee\", colour: \"#7d7f84\" },\n];\n\n// ---------- page theme and motion preference, live, without any site context ----------\n\nfunction pageIsDark(): boolean {\n  const root = document.documentElement;\n  const picked = root.getAttribute(\"data-theme\");\n  if (picked === \"dark\") return true;\n  if (picked === \"light\") return false;\n  if (root.classList.contains(\"dark\")) return true;\n  if (root.classList.contains(\"light\")) return false;\n  return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n}\n\nfunction watchPageTheme(onChange: () => void): () => void {\n  const observer = new MutationObserver(onChange);\n  observer.observe(document.documentElement, { attributes: true, attributeFilter: [\"data-theme\", \"class\"] });\n  const query = window.matchMedia(\"(prefers-color-scheme: dark)\");\n  query.addEventListener(\"change\", onChange);\n  return () => {\n    observer.disconnect();\n    query.removeEventListener(\"change\", onChange);\n  };\n}\n\nfunction watchMotion(onChange: () => void): () => void {\n  const query = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n  query.addEventListener(\"change\", onChange);\n  return () => query.removeEventListener(\"change\", onChange);\n}\nconst prefersReducedMotion = () => window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n// ---------- numbers ----------\n\n// A long lens: garments at the ends of the rail are seen at almost the same angle as the middle ones\nconst FOV = 12;\n// Where the rail sits on screen, as a fraction of the height from the top\nconst RAIL_AT = 0.27;\n// Stepping at 240 a second keeps the springs stable even with a very short duration\nconst STEP = 1 / 240;\n// How tall the pointer zone is, in garment heights: from just above the rail to just below the hems\nconst ZONE_TOP = 0.2;\n// In the detail view the garment, hook included, takes this much of the box height\nconst DETAIL_TAKES = 0.57;\nconst DETAIL_TOP = 0.15;\n// How the spacing eases: first-order lags, in seconds (opening, and returning to rest)\nconst OPEN_TAU = 0.18;\nconst CLOSE_TAU = 0.2;\n// How far each step away from the facing garment is pushed, as a share of the first neighbour's push (measured)\nconst PUSH_PROFILE = [1, 0.577, 0.309, 0.144, 0.052];\n// Empty rail past the end hooks, in pitches, and room kept for the end cap\nconst RAIL_PAD = 1.1;\nconst CAP_ROOM = 0.1;\n\nconst clamp = (value: number, low: number, high: number) => Math.min(high, Math.max(low, value));\nconst lerp = (a: number, b: number, t: number) => a + (b - a) * t;\n\ntype Entry = {\n  garment: Garment;\n  /** Facing amount: 0 turned away at rest, 1 facing you (a critically damped spring) */\n  t: number;\n  tVelocity: number;\n  tGoal: number;\n  /** Spacing signal: 0 rest, 1 fully open (a first-order ease), the neighbours' positions are sums of these */\n  open: number;\n  x: number;\n  /** x speed of the last frame, for the optional rigid hanger tilt and the cloth */\n  xVelocity: number;\n  /** The fabric: rows of cloth that lag the hanger's turns and pushes, then settle (cloth-motion.ts) */\n  cloth: ClothMotion;\n  lastTVelocity: number;\n  lastXVelocity: number;\n};\n\ntype Engine = {\n  setActive(index: number): void;\n  openDetail(index: number): void;\n  closeDetail(): void;\n  stepDetail(direction: 1 | -1): void;\n  /** Called when the pointer leaves the pill without going back over the rack */\n  releaseHover(): void;\n  activeIndex(): number;\n  lastIndex(): number;\n};\n\n// Moves a spring one step toward its goal without ever overshooting (critically damped)\nfunction spring(value: number, velocity: number, goal: number, omega: number, dt: number): [number, number] {\n  let x = value;\n  let v = velocity;\n  let left = dt;\n  while (left > 1e-9) {\n    const h = Math.min(STEP, left);\n    v += (-2 * omega * v - omega * omega * (x - goal)) * h;\n    x += v * h;\n    left -= h;\n  }\n  return [x, v];\n}\n\nexport function ClothesRack({\n  items = defaultItems,\n  restAngle = 80,\n  gap = 7,\n  activeScale = 1,\n  swing = 0,\n  breeze = 0,\n  duration = 0.25,\n  flow = 1,\n  rail = \"chrome\",\n  hanger = \"wood\",\n  showCaption = true,\n  detail = true,\n  size = 0.4,\n  onSelect,\n  textures,\n  className = \"\",\n}: ClothesRackProps) {\n  const hostRef = useRef<HTMLDivElement>(null);\n  const canvasBoxRef = useRef<HTMLDivElement>(null);\n  const captionRef = useRef<HTMLParagraphElement>(null);\n  const dialogRef = useRef<HTMLDivElement>(null);\n  const stageRef = useRef<HTMLDivElement>(null);\n  const engineRef = useRef<Engine | null>(null);\n  const reducedMotion = useSyncExternalStore(watchMotion, prefersReducedMotion, () => false);\n  const dark = useSyncExternalStore(watchPageTheme, pageIsDark, () => false);\n\n  const [failed, setFailed] = useState(false);\n  // True while the GPU has taken the WebGL context away; a restore rebuilds the scene (generation bumps the effect)\n  const [lost, setLost] = useState(false);\n  const [generation, setGeneration] = useState(0);\n  const [ready, setReady] = useState(false);\n  const [open, setOpen] = useState(false);\n  // The detail layer is on screen from the start of its fade in to the end of its fade out\n  const [stageOn, setStageOn] = useState(false);\n  const [detailIndex, setDetailIndex] = useState(0);\n  // The garment a keyboard (or screen reader) focus is on: the live status follows this, never the mouse\n  const [focusIdx, setFocusIdx] = useState(-1);\n  const [, setActiveIdx] = useState(-1);\n  // Which arrow key looks pressed (the real arrow keys and the buttons move together)\n  const [pressed, setPressed] = useState<\"prev\" | \"next\" | null>(null);\n  const wasOpen = useRef(false);\n  const detailIndexRef = useRef(0);\n  const pillRef = useRef<HTMLDivElement>(null);\n  const garmentButtons = useRef<(HTMLButtonElement | null)[]>([]);\n  const pressTimer = useRef(0);\n  const pressedAt = useRef(0);\n\n  // The loop reads these every frame, so a slider never rebuilds the scene\n  const settings = useRef({ restAngle, gap, activeScale, swing, breeze, duration, flow, rail, hanger, showCaption, detail, size, reducedMotion, onSelect });\n  const refreshRef = useRef<(() => void) | null>(null);\n  useEffect(() => {\n    settings.current = { restAngle, gap, activeScale, swing, breeze, duration, flow, rail, hanger, showCaption, detail, size, reducedMotion, onSelect };\n    refreshRef.current?.();\n  }, [restAngle, gap, activeScale, swing, breeze, duration, flow, rail, hanger, showCaption, detail, size, reducedMotion, onSelect]);\n\n  // A new array every render must not rebuild the scene: only its content does (the same for the textures)\n  const itemsKey = useMemo(() => JSON.stringify(items), [items]);\n  const itemsRef = useRef(items);\n  itemsRef.current = items;\n  const texturesKey = useMemo(() => JSON.stringify(textures ?? {}), [textures]);\n  const texturesRef = useRef(textures);\n  texturesRef.current = textures;\n\n  useEffect(() => {\n    const box = canvasBoxRef.current;\n    const host = hostRef.current;\n    const stageBox = stageRef.current;\n    if (!box || !host || !stageBox) return;\n    const list = itemsRef.current;\n    if (list.length === 0) return;\n    setFailed(false);\n\n    const canvas = document.createElement(\"canvas\");\n    canvas.setAttribute(\"aria-hidden\", \"true\");\n    canvas.style.cssText = \"position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y\";\n    box.prepend(canvas);\n\n    let renderer: THREE.WebGLRenderer;\n    try {\n      renderer = new THREE.WebGLRenderer({ canvas, antialias: true, alpha: true, powerPreference: \"high-performance\" });\n    } catch {\n      canvas.remove();\n      setFailed(true);\n      return;\n    }\n    renderer.setClearColor(0x000000, 0);\n    renderer.outputColorSpace = THREE.SRGBColorSpace;\n    // a straight tone curve: the cloth is lit like a product shot, so white stays white and black keeps its folds\n    renderer.toneMapping = THREE.LinearToneMapping;\n    // Context loss (a GPU reset, too many contexts): keep the canvas, show the overlay, and rebuild everything when it returns\n    const onLost = (event: Event) => {\n      event.preventDefault();\n      setLost(true);\n    };\n    const onRestored = () => {\n      setLost(false);\n      setGeneration((g) => g + 1);\n    };\n    canvas.addEventListener(\"webglcontextlost\", onLost);\n    canvas.addEventListener(\"webglcontextrestored\", onRestored);\n\n    let alive = true;\n    let visible = true;\n    let raf = 0;\n    let buildRaf = 0;\n    let last = 0;\n    let clock = 0;\n    // how strong the breeze is right now: it eases toward the breeze prop, and to nothing while the detail view\n    // covers the rack (so the rack can stop drawing under it)\n    let airLevel = 0;\n    let needsSnap = true;\n    let built = false;\n\n    // ----- the rack scene -----\n    const fabricScans = texturesRef.current ?? {};\n    const wardrobe: Wardrobe = createWardrobe(renderer, fabricScans);\n    const scene = new THREE.Scene();\n    // the light goes in once the textures have settled (see buildSome)\n    const camera = new THREE.PerspectiveCamera(FOV, 1, 0.1, 80);\n    const railMesh = wardrobe.rail(4, settings.current.rail);\n    scene.add(railMesh.object);\n\n    const entries: Entry[] = [];\n\n    // ----- view and layout, derived from the props and the box size -----\n    const view = { width: 1, height: 1, aspect: 1, hw: 2.4, camY: 0, railAt: RAIL_AT, panX: 0, panMax: 0, panLimit: 0, railLength: 4, dist: 20 };\n    // The angle a garment at x is seen at, left or right of the camera's axis (0 in the middle)\n    const viewAngle = (x: number) => Math.atan2(x - view.panX, view.dist);\n    // Where a garment brought forward by z must stand so it shows on screen where it would without the lift\n    const liftedX = (x: number, z: number) => view.panX + (x - view.panX) * (1 - z / view.dist);\n    let appliedRail = settings.current.rail;\n    let appliedHanger = settings.current.hanger;\n    let appliedLength = 0;\n\n    // Where every garment sits at rest and how far a facing garment pushes its first neighbour (garment units).\n    // The first neighbour is pushed about 0.97 of a pitch (measured on the reference) for every garment, and more only when\n    // the facing garment is wide enough that its sleeves would otherwise touch it\n    type Layout = { rest: number[]; sideHalf: number[]; faceHalf: number[]; pitch: number; push: number[]; railLength: number };\n    function computeLayout(): Layout {\n      const s = settings.current;\n      const a = (s.restAngle * Math.PI) / 180;\n      const n = entries.length;\n      const sideHalf = entries.map((e) => 0.5 * (lerp(e.garment.bodyWidth, e.garment.width, 0.5) * Math.abs(Math.cos(a)) + e.garment.depth * Math.abs(Math.sin(a))));\n      const faceHalf = entries.map((e) => (e.garment.width * s.activeScale) / 2);\n      const air = entries.map((e) => (s.gap / 100) * e.garment.bodyWidth);\n      const rest: number[] = [0];\n      for (let i = 1; i < n; i++) rest.push(rest[i - 1]! + sideHalf[i - 1]! + sideHalf[i]! + (air[i - 1]! + air[i]!) / 2);\n      const centre = n > 0 ? (rest[0]! + rest[n - 1]!) / 2 : 0;\n      for (let i = 0; i < n; i++) rest[i] = rest[i]! - centre;\n      const pitch = n > 1 ? (rest[n - 1]! - rest[0]!) / (n - 1) : (sideHalf[0] ?? 0.2) * 2 + (air[0] ?? 0.1);\n      const meanSide = sideHalf.reduce((sum, v) => sum + v, 0) / Math.max(1, n);\n      const push = entries.map((e, i) => Math.max(faceHalf[i]! + meanSide + 0.06 * e.garment.bodyWidth - pitch, 0.97 * pitch));\n      const railLength = (n > 1 ? rest[n - 1]! - rest[0]! : 0) + 2 * RAIL_PAD * pitch + 2 * CAP_ROOM;\n      return { rest, sideHalf, faceHalf, pitch, push, railLength };\n    }\n\n    // Every hook position is the rest place plus the pushes of the garments that are open: no spring on x.\n    // The facing garment's own hook never moves. The ends are held on the rail, and the order never inverts.\n    function goalXs(layout: Layout): number[] {\n      const n = entries.length;\n      const xs = layout.rest.slice();\n      for (let i = 0; i < n; i++) {\n        const open = entries[i]!.open;\n        if (open < 1e-5) continue;\n        for (let d = 1; d <= PUSH_PROFILE.length; d++) {\n          const amount = open * layout.push[i]! * PUSH_PROFILE[d - 1]!;\n          if (i + d < n) xs[i + d] = xs[i + d]! + amount;\n          if (i - d >= 0) xs[i - d] = xs[i - d]! - amount;\n        }\n      }\n      let anchor = 0;\n      for (let i = 1; i < n; i++) if (entries[i]!.open > entries[anchor]!.open) anchor = i;\n      const lo = -layout.railLength / 2 + CAP_ROOM;\n      const hi = layout.railLength / 2 - CAP_ROOM;\n      const minGap = layout.sideHalf.reduce((sum, v) => sum + v, 0) / Math.max(1, n);\n      for (let i = 0; i < n; i++) if (i !== anchor || xs[i]! < lo || xs[i]! > hi) xs[i] = i === anchor ? xs[i]! : clamp(xs[i]!, lo, hi);\n      for (let j = anchor + 1; j < n; j++) xs[j] = Math.max(xs[j]!, xs[j - 1]! + minGap);\n      for (let j = anchor - 1; j >= 0; j--) xs[j] = Math.min(xs[j]!, xs[j + 1]! - minGap);\n      return xs;\n    }\n\n    let layout: Layout = computeLayout();\n    // The longest garment on the rail, rail to hem: framing and the pill leave room for it\n    const tallest = () => entries.reduce((most, e) => Math.max(most, e.garment.height), 0.3);\n\n    function frameView() {\n      const s = settings.current;\n      layout = computeLayout();\n      view.railLength = layout.railLength;\n      // A tall box (tablet, phone) puts the rack a little lower, so the rack and the pill sit in the middle\n      view.railAt = view.aspect < 1 ? 0.37 : RAIL_AT;\n      const faceMax = layout.faceHalf.reduce((m, v) => Math.max(m, v), 0.2);\n      // The lowest hem (facing garment, grown) must leave room for the pill under it, even on a short box\n      const roomBelow = Math.max(0.2, (view.height - 84) / view.height - view.railAt);\n      const natural = Math.max(tallest() / s.size, (s.activeScale * tallest()) / roomBelow);\n      // like the reference, the rail spans about 78% of a wide box, with clear page either side\n      const fit = view.railLength / (0.78 * view.aspect);\n      // Fit the whole rail when that is a reasonable zoom (wide boxes, tablets); a phone keeps the garments big and pans\n      // Tall boxes (tablets) zoom out at most 1.5x and pan a little; phones stay big and pan\n      view.hw = fit > natural && (view.aspect >= 1.2 || fit <= natural * 3) ? (view.aspect < 1.2 ? clamp(fit, natural, 1.5 * natural) : fit) : natural;\n      view.camY = -(0.5 - view.railAt) * view.hw;\n      const visibleWidth = view.hw * view.aspect;\n      // Panning reaches the rail's end caps; a facing end garment may go a little further\n      view.panMax = Math.max(0, view.railLength / 2 + 0.06 - visibleWidth / 2);\n      view.panLimit = view.panMax + faceMax + 0.1;\n      view.panX = clamp(view.panX, -view.panLimit, view.panLimit);\n      if (Math.abs(view.railLength - appliedLength) > 1e-4) {\n        railMesh.setLength(view.railLength);\n        appliedLength = view.railLength;\n      }\n      if (s.rail !== appliedRail) {\n        railMesh.setFinish(s.rail);\n        appliedRail = s.rail;\n      }\n      if (s.hanger !== appliedHanger) {\n        for (const e of entries) e.garment.setHanger(s.hanger);\n        appliedHanger = s.hanger;\n      }\n      camera.fov = FOV;\n      const distance = view.hw / 2 / Math.tan((FOV * Math.PI) / 360);\n      view.dist = distance;\n      camera.position.set(view.panX, view.camY, distance);\n      camera.rotation.set(0, 0, 0);\n      camera.aspect = view.aspect;\n      camera.near = distance * 0.2;\n      camera.far = distance * 4;\n      camera.updateProjectionMatrix();\n      camera.updateMatrixWorld(true);\n    }\n\n    function resize() {\n      const rect = host!.getBoundingClientRect();\n      view.width = Math.max(1, rect.width);\n      view.height = Math.max(1, rect.height);\n      view.aspect = view.width / view.height;\n      renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));\n      renderer.setSize(view.width, view.height, false);\n      if (!built) return;\n      frameView();\n      renderer.render(scene, camera);\n      if (needsSnap) {\n        needsSnap = false;\n        snapAll();\n        // One frame is drawn before the canvas fades in, so there is no flash\n        renderer.render(scene, camera);\n        updateCaption();\n        requestAnimationFrame(() => requestAnimationFrame(() => alive && setReady(true)));\n      }\n      if (detailState) sizeDetail();\n      updateCaption();\n      wake();\n    }\n\n    // ----- hover, touch, pan -----\n    let active = -1;\n    let lastActive = -1;\n    let panVelocity = 0;\n    let panGoal: number | null = null;\n    let dragging = false;\n    let dragMoved = false;\n    let dragStartX = 0;\n    let dragLastX = 0;\n    let dragLastTime = 0;\n    let touchId: number | null = null;\n    // The mouse position while it is over the canvas: the garment under it is re-checked every frame\n    let hovering = false;\n    let hoverX = 0;\n    let hoverY = 0;\n    // The keyboard (or focus) picked the garment last: a resting pointer does not take it back until it moves\n    let keyLead = false;\n\n    const canPan = () => view.panMax > 0.02;\n\n    // A garment that is cut off by the screen edge (tapped, hovered or focused with the keyboard) glides to the middle\n    function bringIntoView(index: number) {\n      if (!canPan()) return;\n      const e = entries[index]!;\n      const half = (view.hw * view.aspect) / 2;\n      const reach = layout.faceHalf[index]! + 0.08;\n      if (Math.abs(e.x - view.panX) + reach <= half) return;\n      panGoal = clamp(e.x, -view.panLimit, view.panLimit);\n      panVelocity = 0;\n      wake();\n    }\n\n    function setActive(index: number) {\n      if (!built || index === active) return;\n      active = index;\n      // a hand over a garment says it can be opened\n      canvas.style.cursor = index >= 0 && settings.current.detail ? \"pointer\" : \"\";\n      setActiveIdx(index);\n      if (index >= 0) lastActive = index;\n      if (index >= 0) bringIntoView(index);\n      for (let i = 0; i < entries.length; i++) entries[i]!.tGoal = i === index ? 1 : 0;\n      wake();\n    }\n\n    // The garment whose silhouette, as it is right now, contains the pointer. Over a gap nothing is picked.\n    function pick(clientX: number, clientY: number, slack = 1): number {\n      const rect = host!.getBoundingClientRect();\n      const nx = ((clientX - rect.left) / rect.width) * 2 - 1;\n      const ny = 1 - ((clientY - rect.top) / rect.height) * 2;\n      const halfH = view.hw / 2;\n      const wx = view.panX + nx * halfH * view.aspect;\n      const wy = view.camY + ny * halfH;\n      let best = -1;\n      let bestDistance = Infinity;\n      for (let i = 0; i < entries.length; i++) {\n        const e = entries[i]!;\n        const scale = lerp(1, settings.current.activeScale, e.t);\n        if (wy > ZONE_TOP || wy < -scale * e.garment.height - 0.05) continue;\n        const half = lerp(layout.sideHalf[i]!, layout.faceHalf[i]!, e.t) * (i === active ? 1.05 : 1) * slack;\n        const distance = Math.abs(wx - e.x);\n        if (distance <= half && distance < bestDistance) {\n          best = i;\n          bestDistance = distance;\n        }\n      }\n      return best;\n    }\n\n    // A mouse, or a pen that is hovering with no button down, points; touch and a pen on the glass drag\n    const isPointing = (event: PointerEvent) => event.pointerType === \"mouse\" || (event.pointerType === \"pen\" && event.buttons === 0);\n\n    function onPointerMove(event: PointerEvent) {\n      if (openRef.current || closing) return;\n      if (!isPointing(event)) {\n        if (touchId !== event.pointerId || !event.isPrimary) return;\n        const dx = event.clientX - dragLastX;\n        if (Math.abs(event.clientX - dragStartX) > 6) dragMoved = true;\n        if (dragMoved && canPan()) {\n          const perPixel = (view.hw * view.aspect) / view.width;\n          const now = performance.now();\n          panVelocity = (-dx * perPixel) / Math.max(0.008, (now - dragLastTime) / 1000);\n          view.panX = clamp(view.panX - dx * perPixel, -view.panMax, view.panMax);\n          panGoal = null;\n          dragLastTime = now;\n          frameView();\n          wake();\n        }\n        dragLastX = event.clientX;\n        return;\n      }\n      hovering = true;\n      keyLead = false;\n      hoverX = event.clientX;\n      hoverY = event.clientY;\n      setActive(pick(event.clientX, event.clientY));\n    }\n\n    function onPointerDown(event: PointerEvent) {\n      if (openRef.current) return;\n      if (isPointing(event) || event.pointerType === \"mouse\") return;\n      // A second finger must not take over from the first\n      if (touchId !== null || !event.isPrimary) return;\n      touchId = event.pointerId;\n      dragging = true;\n      dragMoved = false;\n      dragStartX = dragLastX = event.clientX;\n      dragLastTime = performance.now();\n      panVelocity = 0;\n      try {\n        canvas.setPointerCapture(event.pointerId);\n      } catch {\n        // some browsers refuse capture for synthetic pointers: dragging still works without it\n      }\n    }\n\n    // A cancelled touch (the browser took it for scrolling) never picks, faces or opens anything\n    function onPointerCancel(event: PointerEvent) {\n      if (touchId === event.pointerId) {\n        touchId = null;\n        dragging = false;\n        wake();\n      }\n    }\n\n    function onPointerUp(event: PointerEvent) {\n      if (event.pointerType === \"mouse\" && event.button !== 0) return;\n      const touchLike = event.pointerType === \"touch\" || (event.pointerType === \"pen\" && touchId === event.pointerId);\n      if (touchLike) {\n        if (touchId !== event.pointerId) return;\n        touchId = null;\n        dragging = false;\n        if (dragMoved) {\n          wake();\n          return;\n        }\n      }\n      if (openRef.current || closing) return;\n      // A finger is fatter than a pointer: a tap gets a wider silhouette\n      const index = pick(event.clientX, event.clientY, touchLike ? 1.5 : 1);\n      if (index < 0) {\n        if (touchLike) setActive(-1);\n        return;\n      }\n      // A tap turns a garment to face you, a second tap on it opens the detail view\n      if (index === active && (!touchLike || entries[index]!.t > 0.6)) {\n        if (settings.current.detail) openDetail(index);\n      } else {\n        setActive(index);\n        if (touchLike && canPan()) {\n          // A facing end garment may pass the normal pan end by half its width, so it ends up fully in view\n          panGoal = clamp(entries[index]!.x, -view.panLimit, view.panLimit);\n          wake();\n        }\n      }\n    }\n\n    function onPointerLeave(event: PointerEvent) {\n      if (event.pointerType === \"touch\") return;\n      hovering = false;\n      // Going onto the pill keeps the garment facing (the pill is for it); the detail layer covers the canvas, which fires a leave too\n      const next = event.relatedTarget as Node | null;\n      if (next && pillRef.current?.contains(next)) return;\n      if (!openRef.current && !closing) setActive(-1);\n    }\n\n    canvas.addEventListener(\"pointermove\", onPointerMove);\n    canvas.addEventListener(\"pointerdown\", onPointerDown);\n    canvas.addEventListener(\"pointerup\", onPointerUp);\n    canvas.addEventListener(\"pointercancel\", onPointerCancel);\n    canvas.addEventListener(\"pointerleave\", onPointerLeave);\n\n    // ----- caption under the hem of the facing garment -----\n    const captionEl = captionRef.current;\n    let captionIndex = -1;\n    const corner = new THREE.Vector3();\n    const pillEl = pillRef.current;\n    // depth: how far below the rail the hem is\n    const hemPx = (depth: number, z: number) => {\n      corner.set(0, -depth, z).project(camera);\n      return (-corner.y * 0.5 + 0.5) * view.height;\n    };\n    // Puts the pill below the hems and says whether the caption still fits between the two without touching either\n    function layoutDom(): boolean {\n      const s = settings.current;\n      const lowestHem = hemPx(s.activeScale * tallest(), 0.06);\n      // Like the reference, the pill sits low under the rack, about a fifth of the box height below the lowest hem\n      // (so the caption has its own band between them), kept above the bottom 62 px and never closer than 60 px\n      const centre = Math.min(view.height - 30, Math.max(Math.min(view.height - 62, lowestHem + Math.max(90, view.height * 0.2)), lowestHem + 60));\n      if (pillEl) pillEl.style.transform = `translate(-50%, ${(centre - 18).toFixed(1)}px)`;\n      return centre - 18 >= lowestHem + 18 + 16 + 4;\n    }\n    function updateCaption() {\n      const fits = layoutDom();\n      if (!captionEl) return;\n      const s = settings.current;\n      const idx = active >= 0 ? active : captionIndex;\n      const e = idx >= 0 ? entries[idx] : undefined;\n      if (!e || !s.showCaption || openRef.current || !fits) {\n        captionEl.style.opacity = \"0\";\n        return;\n      }\n      if (idx !== captionIndex) {\n        captionIndex = idx;\n        captionEl.textContent = list[idx]!.name;\n      }\n      const scale = lerp(1, s.activeScale, e.t);\n      const py = hemPx(scale * e.garment.height, e.garment.object.position.z);\n      corner.set(e.garment.object.position.x, 0, e.garment.object.position.z).project(camera);\n      const px = (corner.x * 0.5 + 0.5) * view.width;\n      captionEl.style.transform = `translate(${px.toFixed(1)}px, ${(py + 18).toFixed(1)}px) translateX(-50%)`;\n      captionEl.style.opacity = String(clamp(e.t * 1.4 - 0.15, 0, 1) * (active >= 0 ? 1 : e.t));\n      if (active < 0 && e.t < 0.02) captionIndex = -1;\n    }\n\n    // The first layout puts everything straight at its resting place: nothing slides or turns on load\n    function snapAll() {\n      const s = settings.current;\n      for (const e of entries) {\n        e.t = e.tGoal;\n        e.open = e.tGoal;\n      }\n      const goals = goalXs(layout);\n      const rest = (s.restAngle * Math.PI) / 180;\n      for (const [i, e] of entries.entries()) {\n        e.x = goals[i]!;\n        Object.assign(e, { tVelocity: 0, xVelocity: 0, lastTVelocity: 0, lastXVelocity: 0 });\n        e.cloth.reset();\n        e.garment.object.position.set(liftedX(e.x, 0.06 * e.t), 0, 0.06 * e.t);\n        e.garment.object.rotation.set(0, 0, 0);\n        e.garment.turn.rotation.y = rest * (1 - e.t) - viewAngle(e.x);\n        e.garment.turn.scale.setScalar(lerp(1, s.activeScale, e.t));\n        e.garment.setCloth({ twist: e.cloth.twist, sway: e.cloth.sway, ripple: 0, time: 0 });\n      }\n    }\n\n    // ----- one frame of the rack -----\n    function stepRack(dt: number): boolean {\n      const s = settings.current;\n      const reduced = s.reducedMotion;\n      const omega = 4.6 / (reduced ? 0.15 : Math.max(0.1, s.duration));\n      const tilt = reduced ? 0 : (s.swing * Math.PI) / 180;\n      let busy = false;\n      clock += dt;\n      // the breeze comes up over the first seconds, so nothing jumps when the rack appears, and dies down while the\n      // detail view is open\n      const airGoal = reduced || openRef.current ? 0 : Math.max(0, Math.min(1, s.breeze)) * Math.min(1, clock / 2.5) ** 2;\n      airLevel += (airGoal - airLevel) * (1 - Math.exp(-dt / 0.6));\n      if (airGoal === 0 && airLevel < 1e-3) airLevel = 0;\n      const air = airLevel;\n      if (air > 0 || airGoal > 0) busy = true;\n\n      for (const e of entries) {\n        [e.t, e.tVelocity] = spring(e.t, e.tVelocity, e.tGoal, omega, dt);\n        if (Math.abs(e.t - e.tGoal) > 5e-4 || Math.abs(e.tVelocity) > 5e-3) busy = true;\n        else {\n          e.t = e.tGoal;\n          e.tVelocity = 0;\n        }\n        // The spacing eases out like a first-order lag: it starts moving in the very first frame and never overshoots\n        const tau = reduced ? 0.04 : e.tGoal > e.open ? OPEN_TAU : CLOSE_TAU;\n        e.open += (e.tGoal - e.open) * (1 - Math.exp(-dt / tau));\n        if (Math.abs(e.open - e.tGoal) > 1e-3) busy = true;\n        else e.open = e.tGoal;\n      }\n\n      layout = computeLayout();\n      const goals = goalXs(layout);\n      const rest = (s.restAngle * Math.PI) / 180;\n      for (const [i, e] of entries.entries()) {\n        const x = goals[i]!;\n        // a jump of the layout (a control dragged) is not a push: the cloth only feels real motion along the rail\n        e.xVelocity = dt > 0 && Math.abs(x - e.x) < 0.15 ? (x - e.x) / dt : e.lastXVelocity;\n        e.x = x;\n        const g = e.garment;\n        // The facing garment comes forward a little and is drawn after its neighbours; its x is pulled in by the\n        // same amount the lift would push it out on screen, so its hook stays put\n        g.object.position.z = 0.06 * e.t;\n        g.object.position.x = liftedX(e.x, g.object.position.z);\n        g.object.renderOrder = e.t > 0.001 ? 10 : 0;\n        // An optional rigid tilt against the push (0 by default): the hanger leans, the cloth does not bend. A\n        // breeze rocks each hanger a fraction of a degree on its hook.\n        const rock = air * (1 - e.t) * 0.012 * Math.sin(clock * 1.1 - i * 0.5 + 0.7);\n        g.object.rotation.z = (tilt > 0 ? tilt * Math.tanh(-e.xVelocity / 2) : 0) + rock;\n        // turned by the angle it is seen at, so every garment looks the same wherever it hangs, and the facing one\n        // faces you square-on. In a breeze a side-on garment drifts a few degrees back and forth (two slow waves down\n        // the rail), and the air pushes its cloth round and along the rail.\n        const calm = 1 - e.t;\n        const drift = air * calm * 0.026 * (Math.sin(clock * 0.9 - i * 0.55) + 0.35 * Math.sin(clock * 1.53 - i * 0.8 + 1.1));\n        const airTurn = air * calm * 18 * Math.sin(clock * 1.46 - i * 0.6 + 0.4);\n        const airSlide = air * calm * 7 * Math.sin(clock * 1.23 - i * 0.45 + 2);\n        g.turn.rotation.y = rest * (1 - e.t) - viewAngle(e.x) + drift;\n        g.turn.scale.setScalar(lerp(1, s.activeScale, e.t));\n        // The cloth moves only when the garment does, then settles still: when the hanger swivels the lower cloth\n        // lags, swings through once and settles, and when the garment is pushed along the rail its hem trails and\n        // swings back, while a faint ripple runs down the fabric. The hanger's turn is rest * (1 - t), so its\n        // angular acceleration is -rest times the facing amount's.\n        if (reduced || dt <= 0) e.cloth.reset();\n        else if (e.cloth.step(dt, (-rest * (e.tVelocity - e.lastTVelocity)) / dt + airTurn, (e.xVelocity - e.lastXVelocity) / dt + airSlide, s.flow)) busy = true;\n        e.lastTVelocity = e.tVelocity;\n        e.lastXVelocity = e.xVelocity;\n        g.setCloth({ twist: e.cloth.twist, sway: e.cloth.sway, ripple: e.cloth.ripple, time: clock });\n      }\n\n      // Panning on a phone: inertia after a flick, or a glide to a tapped garment\n      if (!dragging) {\n        if (panGoal !== null) {\n          view.panX += (panGoal - view.panX) * (1 - Math.exp(-8 * dt));\n          if (Math.abs(panGoal - view.panX) < 0.002) panGoal = null;\n          busy = true;\n        } else if (Math.abs(panVelocity) > 0.01) {\n          view.panX = clamp(view.panX + panVelocity * dt, -view.panMax, view.panMax);\n          panVelocity *= Math.exp(-4 * dt);\n          if (view.panX <= -view.panMax || view.panX >= view.panMax) panVelocity = 0;\n          busy = true;\n        } else panVelocity = 0;\n      } else busy = true;\n      if (busy || canPan()) frameView();\n      return busy;\n    }\n\n    // ----- the detail view: a second renderer with its own copy of the wardrobe -----\n    // (a WebGL texture can't cross contexts, so the second canvas builds its own environment)\n    // A garment on the stage. A swap has two: the one leaving slides aside, turns side-on like on the rail and\n    // fades, while the next slides in turning to face you; each one's cloth lags its own turn and slide.\n    type Shown = {\n      garment: Garment;\n      /** Across the stage, garment units, 0 is the middle */\n      x: number;\n      xVelocity: number;\n      xGoal: number;\n      /** Facing amount: 1 faces you, 0 is side-on at the rest angle */\n      t: number;\n      tVelocity: number;\n      tGoal: number;\n      opacity: number;\n      /** How fast the opacity moves toward 1 (or 0 once leaving), per second */\n      fade: number;\n      leaving: boolean;\n      cloth: ClothMotion;\n      lastXVelocity: number;\n      lastTVelocity: number;\n    };\n    type DetailState = {\n      renderer: THREE.WebGLRenderer;\n      wardrobe: Wardrobe;\n      scene: THREE.Scene;\n      camera: THREE.PerspectiveCamera;\n      shown: Shown[];\n      /** Garments built ahead of time (the ones either side of the one on show), so an arrow press never waits for a\n       *  garment's fabric to be drawn and uploaded: the swap starts on the very next frame */\n      ready: Map<number, Garment>;\n      canvas: HTMLCanvasElement;\n    };\n    let detailState: DetailState | null = null;\n    let detailIdx = 0;\n    let closeTimer = 0;\n    let disposeTimer = 0;\n    const openRef = { current: false };\n    // True during the short fade out of the detail layer\n    let closing = false;\n\n    // The detail canvas has its own lost and restored handlers: a loss only drops the detail state, the next open rebuilds it\n    const onDetailLost = (event: Event) => {\n      event.preventDefault();\n      disposeDetail();\n      if (openRef.current) closeDetail();\n    };\n\n    function fadeStage(to: number, seconds: number, ease: string) {\n      // Set from the top each time, so a swap restarts its fade instead of snapping\n      // A fade in starts from 0; a fade out starts from wherever the opacity is now (it may still be fading in)\n      const from = to === 1 ? \"0\" : String(parseFloat(getComputedStyle(stageBox!).opacity) || 0);\n      stageBox!.style.transition = \"none\";\n      stageBox!.style.opacity = from;\n      void stageBox!.offsetWidth;\n      stageBox!.style.transition = `opacity ${seconds}s ${ease}`;\n      stageBox!.style.opacity = String(to);\n    }\n\n    function ensureDetail(): DetailState | null {\n      if (detailState) return detailState;\n      const c = document.createElement(\"canvas\");\n      c.setAttribute(\"aria-hidden\", \"true\");\n      c.style.cssText = \"position:absolute;inset:0;width:100%;height:100%;display:block\";\n      stageBox!.prepend(c);\n      let r: THREE.WebGLRenderer;\n      try {\n        r = new THREE.WebGLRenderer({ canvas: c, antialias: true, alpha: true, powerPreference: \"high-performance\" });\n      } catch {\n        c.remove();\n        return null;\n      }\n      r.setClearColor(0x000000, 0);\n      r.outputColorSpace = THREE.SRGBColorSpace;\n      r.toneMapping = THREE.LinearToneMapping;\n      // the stage is drawn in passes (solid garments, then each fading one), so it is cleared by hand\n      r.autoClear = false;\n      c.addEventListener(\"webglcontextlost\", onDetailLost);\n      const w = createWardrobe(r, fabricScans);\n      const sc = new THREE.Scene();\n      sc.environment = w.environment;\n      w.addLights(sc);\n      detailState = { renderer: r, wardrobe: w, scene: sc, camera: new THREE.PerspectiveCamera(FOV, 1, 0.1, 80), shown: [], ready: new Map(), canvas: c };\n      sizeDetail();\n      return detailState;\n    }\n\n    function dropShown(d: DetailState, s: Shown) {\n      d.scene.remove(s.garment.object);\n      s.garment.dispose();\n      d.shown.splice(d.shown.indexOf(s), 1);\n    }\n\n    function disposeDetail() {\n      const d = detailState;\n      if (!d) return;\n      detailState = null;\n      d.canvas.removeEventListener(\"webglcontextlost\", onDetailLost);\n      for (const s of d.shown.slice()) dropShown(d, s);\n      for (const g of d.ready.values()) g.dispose();\n      d.ready.clear();\n      window.clearTimeout(prepareTimer);\n      d.wardrobe.dispose();\n      d.renderer.dispose();\n      d.renderer.forceContextLoss();\n      d.canvas.remove();\n    }\n\n    function sizeDetail() {\n      const d = detailState;\n      if (!d) return;\n      d.renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));\n      d.renderer.setSize(view.width, view.height, false);\n      const widest = entries.reduce((m, e) => Math.max(m, e.garment.width), 0.5);\n      // On a short stage the garment shrinks so the title and pill always fit under it\n      const takes = clamp((view.height * 0.92 - 150) / view.height, 0.3, DETAIL_TAKES);\n      const top = takes >= DETAIL_TAKES ? DETAIL_TOP : 0.08;\n      // Narrow screens: the garment shrinks until the two keys fit beside it (at least 16 px clear; 72 px when there is room)\n      const hw = Math.max((0.1 + tallest()) / takes, (widest * 1.4) / view.aspect, (widest * view.height) / Math.max(40, view.width - 2 * (16 + 44 + 10)));\n      const camY = 0.1 + top * hw - hw / 2;\n      const distance = hw / 2 / Math.tan((FOV * Math.PI) / 360);\n      d.camera.aspect = view.aspect;\n      d.camera.position.set(0, camY, distance);\n      d.camera.near = distance * 0.2;\n      d.camera.far = distance * 4;\n      d.camera.updateProjectionMatrix();\n      // The keys sit beside the garment: half its widest width on screen, then the clear space\n      const halfPx = (widest / 2 / hw) * view.height;\n      dialogRef.current?.style.setProperty(\"--half\", `${Math.round(halfPx)}px`);\n      renderDetail();\n    }\n\n    // Solid garments are drawn together; a garment that is fading is drawn twice, first only its depth, then its\n    // colour at its opacity over that depth, so it fades as one piece and its own back never shows through it\n    function renderDetail() {\n      const d = detailState;\n      if (!d) return;\n      const r = d.renderer;\n      r.clear();\n      const solid = d.shown.filter((s) => s.opacity >= 0.999);\n      const fading = d.shown.filter((s) => s.opacity < 0.999 && s.opacity > 0.001);\n      for (const s of d.shown) s.garment.object.visible = false;\n      if (solid.length) {\n        for (const s of solid) {\n          s.garment.setPass(\"solid\");\n          s.garment.object.visible = true;\n        }\n        r.render(d.scene, d.camera);\n        for (const s of solid) s.garment.object.visible = false;\n      }\n      for (const s of fading) {\n        s.garment.object.visible = true;\n        s.garment.setPass(\"depth\");\n        r.render(d.scene, d.camera);\n        // eased, so a garment comes and goes softly instead of linearly\n        s.garment.setPass(\"fade\", s.opacity * s.opacity * (3 - 2 * s.opacity));\n        r.render(d.scene, d.camera);\n        s.garment.object.visible = false;\n      }\n      for (const s of d.shown) s.garment.object.visible = true;\n    }\n\n    function makeDetailGarment(d: DetailState, index: number): Garment {\n      const garment = d.wardrobe.garment(list[index]!, settings.current.hanger, { fadeable: true });\n      // no rail here: the hook is turned to show its curve\n      garment.hook.rotation.y = Math.PI / 2;\n      return garment;\n    }\n\n    // While the stage is open, the garments either side of the one on show are built one at a time in idle moments.\n    // Any other prepared garment is let go, so at most two wait at a time.\n    let prepareTimer = 0;\n    function prepareNeighbours() {\n      window.clearTimeout(prepareTimer);\n      const d = detailState;\n      if (!d || !openRef.current || list.length < 2) return;\n      const wanted = [(detailIdx + 1) % list.length, (detailIdx - 1 + list.length) % list.length];\n      for (const [index, g] of d.ready) {\n        if (!wanted.includes(index)) {\n          g.dispose();\n          d.ready.delete(index);\n        }\n      }\n      const missing = wanted.find((index) => !d.ready.has(index) && index !== detailIdx);\n      if (missing === undefined) return;\n      // after the swap has had its first frames, and then one garment per pause\n      prepareTimer = window.setTimeout(() => {\n        const idle = (window as Window & { requestIdleCallback?: (cb: () => void, o?: { timeout: number }) => number }).requestIdleCallback;\n        const build = () => {\n          const now = detailState;\n          if (!now || !openRef.current || now.ready.has(missing)) return;\n          const g = makeDetailGarment(now, missing);\n          // its shaders are the ones already on screen, so only its textures were new, and those were uploaded as\n          // it was built\n          now.ready.set(missing, g);\n          prepareNeighbours();\n        };\n        if (idle) idle(build, { timeout: 600 });\n        else build();\n      }, 180);\n    }\n\n    // Puts a garment on the stage: facing you at the middle, or (from a side) side-on, ready to swing in\n    function addShown(d: DetailState, index: number, from: number): Shown {\n      const garment = d.ready.get(index) ?? makeDetailGarment(d, index);\n      d.ready.delete(index);\n      garment.object.visible = true;\n      d.scene.add(garment.object);\n      const s: Shown = { garment, x: from, xVelocity: 0, xGoal: 0, t: from === 0 ? 1 : 0, tVelocity: 0, tGoal: 1, opacity: from === 0 ? 1 : 0, fade: 1 / 0.2, leaving: false, cloth: new ClothMotion(), lastXVelocity: 0, lastTVelocity: 0 };\n      d.shown.push(s);\n      poseShown(s, 0);\n      return s;\n    }\n\n    function poseShown(s: Shown, time: number) {\n      const rest = (settings.current.restAngle * Math.PI) / 180;\n      s.garment.object.position.x = s.x;\n      s.garment.turn.rotation.y = rest * (1 - s.t);\n      s.garment.setCloth({ twist: s.cloth.twist, sway: s.cloth.sway, ripple: s.cloth.ripple, time });\n    }\n\n    // One frame of the stage: each garment's slide and turn are critically damped springs, its opacity eases, and\n    // its cloth is driven by both. A garment that has faded out leaves the stage.\n    function stepStage(dt: number): boolean {\n      const d = detailState;\n      if (!d || d.shown.length === 0) return false;\n      const s0 = settings.current;\n      const reduced = s0.reducedMotion;\n      const rest = (s0.restAngle * Math.PI) / 180;\n      let busy = false;\n      for (const s of d.shown.slice()) {\n        const slide = 4.6 / (reduced ? 0.12 : s.leaving ? 0.42 : 0.58);\n        const turn = 4.6 / (reduced ? 0.12 : s.leaving ? 0.34 : 0.5);\n        [s.x, s.xVelocity] = spring(s.x, s.xVelocity, s.xGoal, slide, dt);\n        [s.t, s.tVelocity] = spring(s.t, s.tVelocity, s.tGoal, turn, dt);\n        s.opacity = clamp(s.opacity + (s.leaving ? -1 : 1) * s.fade * dt, 0, 1);\n        if (s.leaving && s.opacity <= 0) {\n          dropShown(d, s);\n          continue;\n        }\n        const settled = Math.abs(s.x - s.xGoal) < 1e-4 && Math.abs(s.xVelocity) < 1e-3 && Math.abs(s.t - s.tGoal) < 5e-4 && Math.abs(s.tVelocity) < 5e-3;\n        if (settled) {\n          s.x = s.xGoal;\n          s.xVelocity = 0;\n          s.t = s.tGoal;\n          s.tVelocity = 0;\n        } else busy = true;\n        if (s.opacity > 0 && s.opacity < 1) busy = true;\n        if (reduced) s.cloth.reset();\n        else if (s.cloth.step(dt, (-rest * (s.tVelocity - s.lastTVelocity)) / dt, (s.xVelocity - s.lastXVelocity) / dt, s0.flow)) busy = true;\n        s.lastXVelocity = s.xVelocity;\n        s.lastTVelocity = s.tVelocity;\n        poseShown(s, clock);\n      }\n      return busy;\n    }\n\n    // Opens the stage on one garment, facing you; its cloth gets a small push, as if it had just been hung there\n    function showDetailGarment(index: number): boolean {\n      const d = ensureDetail();\n      if (!d) return false;\n      for (const s of d.shown.slice()) dropShown(d, s);\n      const s = addShown(d, index, 0);\n      if (!settings.current.reducedMotion) s.cloth.kick(1.6 * settings.current.flow, 0.12 * settings.current.flow);\n      renderDetail();\n      return true;\n    }\n\n    // The rack copy of the garment shown big is hidden once the detail view is in, so no blurred double sits behind it\n    let hiddenIndex = -1;\n    // the rack under the open detail view needs one more frame after a garment is hidden or shown\n    let rackDirty = false;\n    let hideTimer = 0;\n    function hideRack(index: number) {\n      if (hiddenIndex >= 0 && entries[hiddenIndex]) entries[hiddenIndex]!.garment.object.visible = true;\n      hiddenIndex = index;\n      if (index >= 0 && entries[index]) entries[index]!.garment.object.visible = false;\n      rackDirty = true;\n      wake();\n    }\n\n    function openDetail(index: number) {\n      if (!settings.current.detail || openRef.current || !built) return;\n      window.clearTimeout(closeTimer);\n      window.clearTimeout(disposeTimer);\n      closing = false;\n      detailIdx = index;\n      if (!showDetailGarment(index)) return;\n      detailIndexRef.current = index;\n      openRef.current = true;\n      // The rack stays as it is under the veil, with this garment facing\n      setActive(index);\n      flushSync(() => {\n        setDetailIndex(index);\n        setStageOn(true);\n        setOpen(true);\n      });\n      fadeStage(1, 0.25, \"ease-out\");\n      window.clearTimeout(hideTimer);\n      hideTimer = window.setTimeout(() => {\n        if (openRef.current) hideRack(detailIdx);\n      }, 260);\n      wake();\n      prepareNeighbours();\n    }\n\n    function finishClose() {\n      if (!closing) return;\n      closing = false;\n      flushSync(() => setStageOn(false));\n      const d = detailState;\n      window.clearTimeout(prepareTimer);\n      if (d) {\n        for (const s of d.shown.slice()) dropShown(d, s);\n        for (const g of d.ready.values()) g.dispose();\n        d.ready.clear();\n        renderDetail();\n      }\n      // focus has gone back to the garment's button: it stays facing; otherwise the pointer decides\n      const focused = garmentButtons.current.indexOf(document.activeElement as HTMLButtonElement);\n      setActive(focused >= 0 ? focused : hovering && !keyLead ? pick(hoverX, hoverY) : -1);\n      // The second renderer is not kept for long: it is built again on the next open\n      window.clearTimeout(disposeTimer);\n      disposeTimer = window.setTimeout(() => {\n        if (!openRef.current) disposeDetail();\n      }, 1500);\n    }\n\n    function closeDetail() {\n      if (!openRef.current) return;\n      openRef.current = false;\n      closing = true;\n      setOpen(false);\n      window.clearTimeout(hideTimer);\n      hideRack(-1);\n      // Under the fade the rack shows the garment that was last shown, facing\n      setActive(detailIdx);\n      fadeStage(0, 0.15, \"linear\");\n      window.clearTimeout(closeTimer);\n      closeTimer = window.setTimeout(finishClose, 160);\n    }\n\n    // Next and previous: the title and counter swap at once. The garment on show slides aside, turning side-on as it\n    // fades; the next one swings in from the other side, turning to face you, and its cloth lags and settles.\n    function stepDetail(direction: 1 | -1) {\n      if (!openRef.current || list.length < 2) return;\n      const d = ensureDetail();\n      if (!d) return;\n      const next = (detailIdx + direction + list.length) % list.length;\n      const reduced = settings.current.reducedMotion;\n      for (const s of d.shown) {\n        if (s.leaving) continue;\n        s.leaving = true;\n        s.fade = 1 / (reduced ? 0.12 : 0.3);\n        if (!reduced) {\n          s.xGoal = -direction * 0.5 * s.garment.width;\n          s.tGoal = 0;\n        }\n      }\n      // a quick run of presses never piles up garments: older ones on their way out hurry their fade, and only a\n      // fourth one at once is let go\n      for (const s of d.shown.slice(0, -1)) s.fade = Math.max(s.fade, 1 / 0.08);\n      while (d.shown.length > 2) dropShown(d, d.shown[0]!);\n      const entering = addShown(d, next, reduced ? 0 : direction * 0.62 * entries[next]!.garment.width);\n      if (reduced) {\n        entering.opacity = 0;\n        entering.fade = 1 / 0.12;\n      }\n      detailIdx = next;\n      detailIndexRef.current = next;\n      setActive(next);\n      if (hiddenIndex >= 0) hideRack(next);\n      flushSync(() => setDetailIndex(next));\n      wake();\n      prepareNeighbours();\n    }\n\n    engineRef.current = {\n      setActive(index: number) {\n        keyLead = index >= 0;\n        setActive(index);\n      },\n      openDetail,\n      closeDetail,\n      stepDetail,\n      releaseHover() {\n        if (!openRef.current && !closing && !hovering) setActive(-1);\n      },\n      activeIndex: () => active,\n      lastIndex: () => lastActive,\n    };\n\n    // ----- the loop: only runs while something moves -----\n    function tick(now: number) {\n      raf = 0;\n      if (!alive) return;\n      const dt = Math.min(0.05, Math.max(0.001, (now - (last || now - 16)) / 1000));\n      last = now;\n      const busy = stepRack(dt);\n      const staging = stepStage(dt);\n      // Things moved, so the garment under a resting pointer may have changed\n      if (hovering && !keyLead && !openRef.current && !closing) setActive(pick(hoverX, hoverY));\n      updateCaption();\n      // under the open detail view the rack is only drawn again while it still moves\n      if (busy || !openRef.current || rackDirty) {\n        renderer.render(scene, camera);\n        rackDirty = false;\n      }\n      if (detailState) renderDetail();\n      if ((busy || staging) && visible && !document.hidden) raf = requestAnimationFrame(tick);\n      else last = 0;\n    }\n    function wake() {\n      if (!built || raf || !alive || !visible || document.hidden) return;\n      raf = requestAnimationFrame(tick);\n    }\n    refreshRef.current = () => {\n      if (!built) return;\n      frameView();\n      wake();\n    };\n\n    let resizeObserver: ResizeObserver | null = null;\n    let intersection: IntersectionObserver | null = null;\n    const onVisibility = () => {\n      if (!document.hidden) wake();\n    };\n    document.addEventListener(\"visibilitychange\", onVisibility);\n\n    // Moving the window to another monitor changes the pixel ratio without changing the size\n    let dprQuery: MediaQueryList | null = null;\n    const onDpr = () => {\n      resize();\n      armDpr();\n    };\n    function armDpr() {\n      dprQuery?.removeEventListener(\"change\", onDpr);\n      dprQuery = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`);\n      dprQuery.addEventListener(\"change\", onDpr);\n    }\n    armDpr();\n\n    // The garments are built a couple per animation frame while the canvas is still hidden, so the page never freezes;\n    // when the last one is in, the first layout snaps and the canvas fades in\n    let nextToBuild = 0;\n    function buildSome() {\n      buildRaf = 0;\n      if (!alive) return;\n      for (let k = 0; k < 2 && nextToBuild < list.length; k++, nextToBuild++) {\n        const garment = wardrobe.garment(list[nextToBuild]!, settings.current.hanger);\n        scene.add(garment.object);\n        entries.push({ garment, t: 0, tVelocity: 0, tGoal: 0, open: 0, x: 0, xVelocity: 0, cloth: new ClothMotion(), lastTVelocity: 0, lastXVelocity: 0 });\n      }\n      if (nextToBuild < list.length) {\n        buildRaf = requestAnimationFrame(buildSome);\n        return;\n      }\n      built = true;\n      resizeObserver = new ResizeObserver(resize);\n      resizeObserver.observe(host!);\n      intersection = new IntersectionObserver((records) => {\n        visible = records[records.length - 1]?.isIntersecting ?? true;\n        if (visible) wake();\n      });\n      intersection.observe(host!);\n      // The shaders are compiled before the first visible frame (the canvas stays hidden until then), so there is no stall\n      // when the page appears. If compiling fails the first render still works, just later.\n      const start = () => {\n        if (alive) resize();\n      };\n      renderer.compileAsync(scene, camera).then(start, start);\n    }\n    // The fabric scans and the studio arrive before the first garment is made (the canvas is still hidden), so\n    // nothing changes look once it shows; if they are slow, the drawn knit and the plain room go ahead after 2.5 s\n    let waitTimer = 0;\n    const begin = () => {\n      window.clearTimeout(waitTimer);\n      if (!alive || built || buildRaf || nextToBuild > 0) return;\n      scene.environment = wardrobe.environment;\n      wardrobe.addLights(scene);\n      buildSome();\n    };\n    waitTimer = window.setTimeout(begin, 2500);\n    wardrobe.ready.then(begin, begin);\n\n    return () => {\n      dprQuery?.removeEventListener(\"change\", onDpr);\n      window.clearTimeout(waitTimer);\n      alive = false;\n      window.clearTimeout(hideTimer);\n      window.clearTimeout(closeTimer);\n      window.clearTimeout(disposeTimer);\n      window.clearTimeout(prepareTimer);\n      cancelAnimationFrame(raf);\n      cancelAnimationFrame(buildRaf);\n      engineRef.current = null;\n      refreshRef.current = null;\n      resizeObserver?.disconnect();\n      intersection?.disconnect();\n      document.removeEventListener(\"visibilitychange\", onVisibility);\n      canvas.removeEventListener(\"webglcontextlost\", onLost);\n      canvas.removeEventListener(\"webglcontextrestored\", onRestored);\n      canvas.removeEventListener(\"pointermove\", onPointerMove);\n      canvas.removeEventListener(\"pointerdown\", onPointerDown);\n      canvas.removeEventListener(\"pointerup\", onPointerUp);\n      canvas.removeEventListener(\"pointercancel\", onPointerCancel);\n      canvas.removeEventListener(\"pointerleave\", onPointerLeave);\n      for (const e of entries) e.garment.dispose();\n      railMesh.dispose();\n      wardrobe.dispose();\n      scene.environment = null;\n      renderer.dispose();\n      renderer.forceContextLoss();\n      canvas.remove();\n      disposeDetail();\n      setReady(false);\n      setOpen(false);\n      setStageOn(false);\n    };\n    // The scene is rebuilt only when the garments themselves change\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [itemsKey, texturesKey, generation]);\n\n  // Focus moves into the dialog on open and back to the garment on close\n  useEffect(() => {\n    if (open) dialogRef.current?.focus();\n    else if (wasOpen.current) (garmentButtons.current[detailIndexRef.current] ?? hostRef.current)?.focus();\n    wasOpen.current = open;\n  }, [open]);\n\n  // A key looks pressed for at least 120 ms, whether the pointer or the real arrow key did it\n  const press = (which: \"prev\" | \"next\") => {\n    window.clearTimeout(pressTimer.current);\n    pressedAt.current = performance.now();\n    setPressed(which);\n  };\n  const release = () => {\n    window.clearTimeout(pressTimer.current);\n    const wait = Math.max(0, 120 - (performance.now() - pressedAt.current));\n    pressTimer.current = window.setTimeout(() => setPressed(null), wait);\n  };\n  useEffect(() => () => window.clearTimeout(pressTimer.current), []);\n  // Closing the detail view clears a key that was still showing as pressed, and its timer\n  useEffect(() => {\n    if (!open) {\n      window.clearTimeout(pressTimer.current);\n      setPressed(null);\n    }\n  }, [open]);\n\n  // While the detail view is open the page behind is out of reach: keys are handled here, wherever focus is,\n  // and Tab cycles through the dialog's own buttons\n  useEffect(() => {\n    if (!open) return;\n    const onKey = (event: globalThis.KeyboardEvent) => {\n      const engine = engineRef.current;\n      if (!engine || event.altKey || event.ctrlKey || event.metaKey) return;\n      if (event.key === \"Escape\") {\n        event.preventDefault();\n        engine.closeDetail();\n      } else if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n        event.preventDefault();\n        // holding a key flips once, not at the key repeat rate\n        if (event.repeat) return;\n        const dir = event.key === \"ArrowRight\" ? 1 : -1;\n        press(dir === 1 ? \"next\" : \"prev\");\n        engine.stepDetail(dir);\n      } else if (event.key === \"Tab\") {\n        const stops = Array.from(dialogRef.current?.querySelectorAll<HTMLButtonElement>(\"button\") ?? []);\n        if (stops.length === 0) return;\n        const at = stops.indexOf(document.activeElement as HTMLButtonElement);\n        const next = event.shiftKey ? (at <= 0 ? stops.length - 1 : at - 1) : at < 0 || at === stops.length - 1 ? 0 : at + 1;\n        event.preventDefault();\n        stops[next]!.focus();\n      }\n    };\n    const onKeyUp = (event: globalThis.KeyboardEvent) => {\n      if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") release();\n    };\n    // a key let go while the window was away would leave its keycap pressed\n    const onWindowBlur = () => release();\n    document.addEventListener(\"keydown\", onKey);\n    document.addEventListener(\"keyup\", onKeyUp);\n    window.addEventListener(\"blur\", onWindowBlur);\n    return () => {\n      document.removeEventListener(\"keydown\", onKey);\n      document.removeEventListener(\"keyup\", onKeyUp);\n      window.removeEventListener(\"blur\", onWindowBlur);\n    };\n  }, [open]);\n\n  const select = (index: number) => {\n    const item = itemsRef.current[index];\n    if (item) onSelect?.(item, index);\n  };\n\n  const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n    const engine = engineRef.current;\n    if (!engine || open) return;\n    const count = itemsRef.current.length;\n    const target = event.target as HTMLElement;\n    const buttonIndex = garmentButtons.current.indexOf(target as HTMLButtonElement);\n    const onButton = buttonIndex >= 0;\n    if (target !== hostRef.current && !onButton) return;\n    if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n      event.preventDefault();\n      // From a garment button the walk starts at that button, not at whatever the pointer last faced\n      const from = onButton ? buttonIndex : engine.activeIndex() >= 0 ? engine.activeIndex() : event.key === \"ArrowRight\" ? -1 : count;\n      const next = clamp(from + (event.key === \"ArrowRight\" ? 1 : -1), 0, count - 1);\n      engine.setActive(next);\n      setFocusIdx(next);\n      if (onButton) garmentButtons.current[next]?.focus();\n    } else if (event.key === \"Home\" || event.key === \"End\") {\n      event.preventDefault();\n      const next = event.key === \"Home\" ? 0 : count - 1;\n      engine.setActive(next);\n      setFocusIdx(next);\n      if (onButton) garmentButtons.current[next]?.focus();\n    } else if (!onButton && (event.key === \"Enter\" || event.key === \" \")) {\n      event.preventDefault();\n      const index = engine.activeIndex();\n      if (index >= 0) engine.openDetail(index);\n    } else if (event.key === \"Escape\") {\n      engine.setActive(-1);\n      setFocusIdx(-1);\n    }\n  };\n\n  // Focus leaving the rack lets the garment turn back, so the render loop can stop\n  const onBlur = (event: FocusEvent<HTMLDivElement>) => {\n    if (open) return;\n    const next = event.relatedTarget as Node | null;\n    if (next && hostRef.current?.contains(next)) return;\n    setFocusIdx(-1);\n    engineRef.current?.setActive(-1);\n  };\n\n  // The pill is for the facing garment, or the last one looked at\n  const onPill = () => {\n    const engine = engineRef.current;\n    if (!engine) return;\n    select(engine.activeIndex() >= 0 ? engine.activeIndex() : Math.max(0, engine.lastIndex()));\n  };\n\n  // The DiMaac look: near-monochrome, hairlines, Inter Tight, sentence case\n  const vars = dark\n    ? { ink: \"#F5F5F5\", paper: \"#0B0B0C\", line: \"#27272A\", grey: \"#8B8F98\" }\n    : { ink: \"#0A0A0A\", paper: \"#FAFAFA\", line: \"#E5E7EB\", grey: \"#6B7280\" };\n  const names = itemsRef.current;\n  const shown = names[Math.min(detailIndex, names.length - 1)];\n  const status = open && shown ? `${shown.name}, ${detailIndex + 1} of ${names.length}` : focusIdx >= 0 && names[focusIdx] ? `${names[focusIdx]!.name}, ${focusIdx + 1} of ${names.length}` : \"\";\n  const unavailable = failed || lost || !ready;\n\n  const ring = \"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-solid focus-visible:outline-(--cr-ink)\";\n  const pill = `inline-flex h-9 cursor-pointer items-center rounded-full border border-(--cr-line) bg-transparent px-4 text-[13px] font-medium text-(--cr-ink) transition-[background-color,color,border-color] duration-150 hover:border-(--cr-ink) hover:bg-(--cr-ink) hover:text-(--cr-paper) ${ring}`;\n  // DiMaac keycap: no outline, a soft ink-tinted face with a shadow lip under it; it presses down 1 px and loses the lip\n  const keycap = (isPressed: boolean) =>\n    `absolute top-[42%] z-[2] flex h-11 w-11 -translate-y-1/2 cursor-pointer items-center justify-center rounded-xl border-0 bg-[color-mix(in_srgb,var(--cr-ink)_7%,transparent)] p-0 text-(--cr-ink) transition-[background-color,box-shadow,transform] duration-100 hover:bg-[color-mix(in_srgb,var(--cr-ink)_13%,transparent)] ${ring} ${\n      isPressed ? \"translate-y-[calc(-50%+1px)] shadow-none\" : \"shadow-[0_1px_0_rgba(0,0,0,0.3)]\"\n    }`;\n  const arrowProps = { width: 16, height: 16, viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\" as const, strokeLinejoin: \"round\" as const, \"aria-hidden\": true };\n\n  return (\n    <div\n      ref={hostRef}\n      role=\"group\"\n      aria-roledescription=\"clothes rack\"\n      aria-label=\"Clothes rack. Use the left and right arrow keys to move along it and Enter to open a garment.\"\n      tabIndex={-1}\n      onKeyDown={onKeyDown}\n      onBlur={onBlur}\n      className={`relative h-full w-full overflow-hidden outline-none focus-visible:outline-2 focus-visible:-outline-offset-4 focus-visible:outline-solid focus-visible:outline-(--cr-ink) ${className}`}\n      style={{\n        color: vars.ink,\n        fontFamily: \"var(--font-sans, 'Inter Tight', ui-sans-serif, system-ui, sans-serif)\",\n        [\"--cr-ink\" as string]: vars.ink,\n        [\"--cr-paper\" as string]: vars.paper,\n        [\"--cr-line\" as string]: vars.line,\n        [\"--cr-grey\" as string]: vars.grey,\n      }}\n    >\n      <div ref={canvasBoxRef} className=\"absolute inset-0\" style={{ opacity: ready ? 1 : 0, transition: \"opacity 0.5s ease\" }} inert={open}>\n        <p\n          ref={captionRef}\n          aria-hidden=\"true\"\n          className=\"pointer-events-none absolute top-0 left-0 m-0 whitespace-nowrap text-[13px] opacity-0\"\n          style={{ color: \"color-mix(in srgb, var(--cr-ink) 70%, transparent)\", transition: \"opacity 0.35s ease\" }}\n        />\n      </div>\n\n      {failed || lost ? (\n        <div className=\"absolute inset-0 z-[3] flex flex-col items-center justify-center gap-3 text-[13px]\" role=\"alert\">\n          <span className=\"text-(--cr-grey)\">{lost ? \"The graphics context was lost.\" : \"This needs WebGL, which is not available here.\"}</span>\n          <button\n            type=\"button\"\n            onClick={() => {\n              setFailed(false);\n              setLost(false);\n              setGeneration((g) => g + 1);\n            }}\n            className={pill}\n          >\n            Try again\n          </button>\n        </div>\n      ) : null}\n\n      {/* Real buttons for screen readers: one per garment */}\n      <ul className=\"sr-only\" data-garments=\"\" inert={open || unavailable} aria-hidden={unavailable}>\n        {names.map((item, index) => (\n          <li key={`${item.name}-${index}`}>\n            <button\n              type=\"button\"\n              ref={(node) => {\n                garmentButtons.current[index] = node;\n              }}\n              onFocus={() => {\n                setFocusIdx(index);\n                engineRef.current?.setActive(index);\n              }}\n              onBlur={() => setFocusIdx(-1)}\n              onClick={() => (detail ? engineRef.current?.openDetail(index) : select(index))}\n            >\n              {item.name}\n            </button>\n          </li>\n        ))}\n      </ul>\n      <div className=\"sr-only\" role=\"status\" aria-live=\"polite\">\n        {status}\n      </div>\n\n      <div\n        ref={pillRef}\n        className=\"pointer-events-none absolute top-0 left-1/2 z-[1]\"\n        style={{ transform: \"translate(-50%, 70vh)\", opacity: ready && !stageOn ? 1 : 0, transition: \"opacity 0.3s ease\" }}\n        inert={open || unavailable}\n        aria-hidden={unavailable}\n        onPointerLeave={(event) => {\n          if (!canvasBoxRef.current?.contains(event.relatedTarget as Node | null)) engineRef.current?.releaseHover();\n        }}\n      >\n        <button type=\"button\" onClick={onPill} className={`${pill} pointer-events-auto`}>\n          See availability\n        </button>\n      </div>\n\n      <div\n        ref={dialogRef}\n        role=\"dialog\"\n        aria-modal=\"true\"\n        aria-label={shown ? `${shown.name}, garment ${detailIndex + 1} of ${names.length}` : \"Garment\"}\n        aria-hidden={!open}\n        inert={!open}\n        tabIndex={-1}\n        className=\"absolute inset-0 z-10 outline-none\"\n        style={{ visibility: stageOn ? \"visible\" : \"hidden\", pointerEvents: open ? \"auto\" : \"none\", [\"--half\" as string]: \"140px\" }}\n      >\n        {/* The veil and its blur fade in with the garment: one crossfade, no flight */}\n        <div\n          className=\"absolute inset-0\"\n          style={{\n            background: dark ? \"rgba(11,11,12,0.86)\" : \"rgba(250,250,250,0.86)\",\n            opacity: open ? 1 : 0,\n            backdropFilter: open ? \"blur(12px)\" : \"blur(0px)\",\n            WebkitBackdropFilter: open ? \"blur(12px)\" : \"blur(0px)\",\n            transition: open ? \"opacity 0.25s ease-out, backdrop-filter 0.25s ease-out, -webkit-backdrop-filter 0.25s ease-out\" : \"opacity 0.15s linear, backdrop-filter 0.15s linear, -webkit-backdrop-filter 0.15s linear\",\n          }}\n        />\n        <div ref={stageRef} className=\"absolute inset-0\" style={{ opacity: 0, filter: dark ? \"drop-shadow(0 28px 36px rgba(0,0,0,0.55))\" : \"drop-shadow(0 1px 1.5px rgba(15,23,42,0.16)) drop-shadow(0 28px 36px rgba(15,23,42,0.14))\" }} />\n        <div className=\"absolute inset-0\" style={{ opacity: open ? 1 : 0, transition: open ? \"opacity 0.25s ease-out\" : \"opacity 0.15s linear\" }}>\n          <button\n            type=\"button\"\n            onClick={() => engineRef.current?.closeDetail()}\n            className={`absolute top-4 right-5 flex cursor-pointer items-center gap-2 rounded-full border-0 bg-transparent px-2 py-1 text-[13px] text-(--cr-ink) transition-opacity duration-150 hover:opacity-60 ${ring}`}\n          >\n            Close\n            <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" aria-hidden=\"true\">\n              <path d=\"M2 2L10 10M10 2L2 10\" />\n            </svg>\n          </button>\n          {names.length > 1 ? (\n            <>\n              <button\n                type=\"button\"\n                aria-label=\"Previous garment\"\n                onClick={() => engineRef.current?.stepDetail(-1)}\n                onPointerDown={() => press(\"prev\")}\n                onPointerUp={release}\n                onPointerLeave={release}\n                onPointerCancel={release}\n                className={keycap(pressed === \"prev\")}\n                style={{ left: \"max(10px, calc(50% - var(--half) - 72px - 44px))\" }}\n              >\n                <svg {...arrowProps}>\n                  <path d=\"M19 12H5M11 6l-6 6 6 6\" />\n                </svg>\n              </button>\n              <button\n                type=\"button\"\n                aria-label=\"Next garment\"\n                onClick={() => engineRef.current?.stepDetail(1)}\n                onPointerDown={() => press(\"next\")}\n                onPointerUp={release}\n                onPointerLeave={release}\n                onPointerCancel={release}\n                className={keycap(pressed === \"next\")}\n                style={{ right: \"max(10px, calc(50% - var(--half) - 72px - 44px))\" }}\n              >\n                <svg {...arrowProps}>\n                  <path d=\"M5 12h14M13 6l6 6-6 6\" />\n                </svg>\n              </button>\n            </>\n          ) : null}\n          <div className=\"absolute inset-x-0 bottom-[5%] z-[2] flex flex-col items-center gap-2 px-4 text-center\">\n            <span className=\"text-[13px] text-(--cr-grey)\" style={{ fontVariantNumeric: \"tabular-nums\" }}>\n              {String(detailIndex + 1).padStart(2, \"0\")} / {String(names.length).padStart(2, \"0\")}\n            </span>\n            <h3 className=\"m-0 mb-1 text-[32px] leading-[1.1] font-normal tracking-[-0.02em] text-(--cr-ink)\">{shown?.name}</h3>\n            <button type=\"button\" onClick={() => select(detailIndex)} className={pill}>\n              See availability\n            </button>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n}\n"},{"path":"registry/dimaac/clothes-rack/cloth-motion.ts","type":"registry:component","target":"components/dimaac/clothes-rack/cloth-motion.ts","content":"// How the cloth of a garment on a hanger moves, for the Clothes Rack.\n//\n// A hanging garment is a column of rows, from the shoulders (held by the hanger) down to the hem. Each row can twist\n// about the hook's upright axis and trail sideways along the rail, and each is tied to the row above and the row below,\n// like a damped string fixed at the top and free at the bottom. When the hanger swivels or is pushed along the rail,\n// the rows feel its acceleration (the cloth is heavy, the hanger is not), so the lower cloth lags, swings through once\n// and settles: a wave that runs down the fabric instead of a stiff board turning. Nothing here knows about three.js;\n// the garment's vertex shader bends the cloth with these numbers.\n\n/** Rows below the shoulders. Row 0 is the shoulders and never moves. */\nexport const CLOTH_ROWS = 6;\n\n// Tuned offline against the rack's 0.25 s critically damped turn: the hem lags about 9 degrees while the garment\n// turns, swings back about 6 and is still again after about 0.8 s. A neighbour pushed by a pitch trails its hem by\n// about 3% of its length.\nconst K = 1100;\nconst DAMP = 6.5;\n// damping of rows moving against each other: it calms the fast, jittery shapes of the string and leaves the slow sway\nconst DAMP_BETWEEN = 2;\nconst TWIST_GAIN = 0.32;\nconst SWAY_GAIN = 0.4;\nconst MAX_TWIST = 0.5;\nconst MAX_SWAY = 0.09;\n// stepping at 240 a second keeps the string stable however long a frame is\nconst STEP = 1 / 240;\n\nexport class ClothMotion {\n  /** The twist of each row, radians, row 0 at the shoulders. */\n  readonly twist = new Float32Array(CLOTH_ROWS + 1);\n  /** How far each row trails sideways along the rail, garment units. */\n  readonly sway = new Float32Array(CLOTH_ROWS + 1);\n  /** 0 - 1: how lively the cloth is, for the faint ripple that runs down it while it moves. */\n  ripple = 0;\n  private readonly twistV = new Float32Array(CLOTH_ROWS + 1);\n  private readonly swayV = new Float32Array(CLOTH_ROWS + 1);\n\n  /**\n   * Moves the cloth on by dt seconds. turnAccel is the hanger's angular acceleration about its hook (rad/s²) and\n   * slideAccel its acceleration along the rail (units/s²); amount scales both (0 keeps the cloth still).\n   * Returns true while the cloth is still moving.\n   */\n  step(dt: number, turnAccel: number, slideAccel: number, amount = 1): boolean {\n    let left = Math.min(dt, 0.05);\n    while (left > 1e-9) {\n      const h = Math.min(STEP, left);\n      this.integrate(this.twist, this.twistV, -TWIST_GAIN * amount * turnAccel, MAX_TWIST, h);\n      this.integrate(this.sway, this.swayV, -SWAY_GAIN * amount * slideAccel, MAX_SWAY, h);\n      left -= h;\n    }\n    const n = CLOTH_ROWS;\n    const energy = Math.min(1, Math.abs(this.twistV[n]!) * 0.22 + Math.abs(this.swayV[n]!) * 5);\n    // the ripple rises quickly with the motion and dies away slowly after it\n    this.ripple += (energy - this.ripple) * (1 - Math.exp(-dt / (energy > this.ripple ? 0.06 : 0.5)));\n    let moving = this.ripple > 2e-3;\n    for (let k = 1; k <= n; k++) {\n      if (Math.abs(this.twist[k]!) > 3e-4 || Math.abs(this.twistV[k]!) > 3e-3 || Math.abs(this.sway[k]!) > 6e-5 || Math.abs(this.swayV[k]!) > 1e-3) moving = true;\n    }\n    if (!moving) this.reset();\n    return moving;\n  }\n\n  /** Gives the cloth a push, as when it is hung or lifted: twist in rad/s, sway in units/s at the hem. */\n  kick(twist: number, sway: number) {\n    for (let k = 1; k <= CLOTH_ROWS; k++) {\n      this.twistV[k] = this.twistV[k]! + (twist * k) / CLOTH_ROWS;\n      this.swayV[k] = this.swayV[k]! + (sway * k) / CLOTH_ROWS;\n    }\n  }\n\n  /** Still, hanging straight. */\n  reset() {\n    this.twist.fill(0);\n    this.twistV.fill(0);\n    this.sway.fill(0);\n    this.swayV.fill(0);\n    this.ripple = 0;\n  }\n\n  // One step of the string: each row is pulled toward its neighbours, damped, and pushed by the drive, which grows\n  // toward the hem (a row far down has more cloth hanging off it, so it lags more)\n  private integrate(x: Float32Array, v: Float32Array, drive: number, limit: number, h: number) {\n    const n = CLOTH_ROWS;\n    for (let k = 1; k <= n; k++) {\n      const below = k === n ? x[k]! : x[k + 1]!;\n      const belowV = k === n ? v[k]! : v[k + 1]!;\n      const accel = K * (x[k - 1]! - 2 * x[k]! + below) - DAMP * v[k]! + DAMP_BETWEEN * (v[k - 1]! - 2 * v[k]! + belowV) + (drive * k) / n;\n      v[k] = v[k]! + accel * h;\n    }\n    for (let k = 1; k <= n; k++) {\n      x[k] = Math.max(-limit, Math.min(limit, x[k]! + v[k]! * h));\n    }\n  }\n}\n"},{"path":"registry/dimaac/clothes-rack/garment-drapes.ts","type":"registry:component","target":"components/dimaac/clothes-rack/garment-drapes.ts","content":"// Generated by scripts/clothes-rack/bake.ts: each garment is a sewn pattern draped on the hanger by a cloth\n// simulation, then resampled. Do not edit by hand; change the patterns in drape.ts and run the bake again.\n// Numbers are 16-bit integers (divide by 16384); tri holds triangle corners; ao is 0 - 255 per point.\nexport type DrapePanel = { pat: string; pos: string; tri: string; ao: string };\n// a sleeve: rings x around grid points; uv is 0 - 65535 (round the sleeve, along it from the armhole). pos is the\n// sleeve open (the garment facing you), hang the same points hanging down its side (the garment side-on on the rail).\nexport type DrapeSleeve = { rings: number; around: number; pos: string; hang: string; uv: string; tri: string; ao: string };\nexport type DrapeData = {\n  pattern: { half: number; shoulderX: number; shoulderDrop: number; neckHalf: number; neckFront: number; neckBack: number; armpit: number; sleeve: { top: number; under: number; cuff: number }; length: number; vNeck?: boolean; open: { chest: number; hem: number; sleeveRoot: number; cuff: number } };\n  front: DrapePanel;\n  back: DrapePanel;\n  /** the right sleeve, then the left */\n  sleeves: DrapeSleeve[];\n  neck: number[];\n};\nexport const DRAPE_SCALE = 16384;\nexport const DRAPE_HANGER: [number, number][] = [[-0.215,-0.222],[-0.17,-0.202],[-0.12,-0.18],[-0.07,-0.152],[-0.03,-0.136],[0,-0.132],[0.03,-0.136],[0.07,-0.152],[0.12,-0.18],[0.17,-0.202],[0.215,-0.222]];\nexport const DRAPES: Record<\"tee\" | \"crewneck\" | \"shirt\", DrapeData> = {\n  tee: {\n    pattern: {\"half\":0.235,\"shoulderX\":0.265,\"shoulderDrop\":0.075,\"neckHalf\":0.085,\"neckFront\":0.075,\"neckBack\":0.02,\"armpit\":0.37,\"sleeve\":{\"top\":0.26,\"under\":0.14,\"cuff\":0.46},\"length\":0.8,\"open\":{\"chest\":0.024,\"hem\":0.045,\"sleeveRoot\":0.045,\"cuff\":0.05}},\n    front: {\"pat\":\"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\",\"pos\":\"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\",\"tri\":\"BgAFAAcAbgBtAG8ARABDAHQARQBEAHQARgBFAHQAQwBCAHUAdABDAHUAQgBBAHYAdQBCAHYAQQBAAHcAdgBBAHcAQAA/AHgAdwBAAHgAPwA+AHkAeAA/AHkAPgA9AHoAeQA+AHoAPQA8AHsAegA9AHsAPAA7AHwAewA8AHwAOwA6AH0AfAA7AH0AOgA5AH4AfQA6AH4AOQA4AH8AfgA5AH8AOAA3AIAAfwA4AIAANwA2AIEAgAA3AIEANgA1AIIAgQA2AIIANQA0AIMAggA1AIMANAAzAIQAgwA0AIQAMwAyAIUAhAAzAIUAMgAxAIYAhQAyAIYALwAuAIcAMAAvAIcAMQAwAIcAhgAxAIcARwBGAIgARgB0AIgAdAB1AIkAiAB0AIkAdQB2AIoAiQB1AIoAdgB3AIsAigB2AIsAdwB4AIwAiwB3AIwAeAB5AI0AjAB4AI0AeQB6AI4AjQB5AI4AegB7AI8AjgB6AI8AewB8AJAAjwB7AJAAfAB9AJEAkAB8AJEAfQB+AJIAkQB9AJIAfgB/AJMAkgB+AJMAfwCAAJQAkwB/AJQAgACBAJUAlACAAJUAgQCCAJYAlQCBAJYAggCDAJcAlgCCAJcAgwCEAJgAlwCDAJgAhACFAJkAmACEAJkAhQCGAJoAmQCFAJoAhgCHAJsAmgCGAJsALgAtAJwAhwAuAJwAmwCHAJwASABHAJ0ARwCIAJ0AiACJAJ0AiQCKAJ4AnQCJAJ4AigCLAJ8AngCKAJ8AiwCMAKAAnwCLAKAAjACNAKEAoACMAKEAjQCOAKIAoQCNAKIAjgCPAKMAogCOAKMAjwCQAKQAowCPAKQAkACRAKUApACQAKUAkQCSAKYApQCRAKYAkgCTAKcApgCSAKcAkwCUAKgApwCTAKgAlACVAKkAqACUAKkAlQCWAKoAqQCVAKoAlgCXAKsAqgCWAKsAlwCYAKwAqwCXAKwAmACZAK0ArACYAK0AmQCaAK4ArQCZAK4AmgCbAK8ArgCaAK8ALQAsALAAnAAtALAAmwCcALAArwCbALAASQBIALEASACdALEAnQCeALIAsQCdALIAngCfALMAsgCeALMAnwCgALQAswCfALQAoAChALUAtACgALUAoQCiALYAtQChALYAogCjALcAtgCiALcAowCkALgAtwCjALgApAClALkAuACkALkApQCmALoAuQClALoApgCnALsAugCmALsApwCoALwAuwCnALwAqACpAL0AvACoAL0AqQCqAL4AvQCpAL4AqgCrAL8AvgCqAL8AqwCsAMAAvwCrAMAArACtAMEAwACsAMEArQCuAMIAwQCtAMIArgCvAMMAwgCuAMMArwCwAMQAwwCvAMQALAArAMUAsAAsAMUAxACwAMUASQCxAMYAsQCyAMYAsgCzAMcAxgCyAMcAswC0AMgAxwCzAMgAtAC1AMkAyAC0AMkAtQC2AMoAyQC1AMoAtgC3AMsAygC2AMsAtwC4AMwAywC3AMwAuAC5AM0AzAC4AM0AuQC6AM4AzQC5AM4AugC7AM8AzgC6AM8AuwC8ANAAzwC7ANAAvAC9ANEA0AC8ANEAvQC+ANIA0QC9ANIAvgC/ANMA0gC+ANMAvwDAANQA0wC/ANQAwADBANUA1ADAANUAwQDCANYA1QDBANYAwgDDANcA1gDCANcAwwDEANgA1wDDANgAxQArANkAxADFANkA2ADEANkASgBJANoASQDGANoASwBKANoAxgDHANsA2gDGANsAxwDIANwA2wDHANwAyADJAN0A3ADIAN0AyQDKAN4A3QDJAN4AygDLAN8A3gDKAN8AywDMAOAA3wDLAOAAzADNAOEA4ADMAOEAzQDOAOIA4QDNAOIAzgDPAOMA4gDOAOMAzwDQAOQA4wDPAOQA0ADRAOUA5ADQAOUA0QDSAOYA5QDRAOYA0gDTAOcA5gDSAOcA0wDUAOgA5wDTAOgA1ADVAOkA6ADUAOkA1QDWAOoA6QDVAOoA1gDXAOsA6gDWAOsA1wDYAOwA6wDXAOwA2ADZAO0A7ADYAO0AKwAqAO4A2QArAO4AKgApAO4A7QDZAO4ASwDaAO8A2gDbAO8A2wDcAPAA7wDbAPAA3ADdAPEA8ADcAPEA3QDeAPIA8QDdAPIA3gDfAPMA8gDeAPMA3wDgAPQA8wDfAPQA4ADhAPUA9ADgAPUA4QDiAPYA9QDhAPYA4gDjAPcA9gDiAPcA4wDkAPgA9wDjAPgA5ADlAPkA+ADkAPkA5QDmAPoA+QDlAPoA5gDnAPsA+gDmAPsA5wDoAPwA+wDnAPwA6ADpAP0A/ADoAP0A6QDqAP4A/QDpAP4A6gDrAP8A/gDqAP8A6wDsAAAB/wDrAAAB7ADtAAEBAAHsAAEB7QDuAAIBAQHtAAIB7gApAAIBTABLAAMBSwDvAAMBTQBMAAMB7wDwAAQBAwHvAAQB8ADxAAUBBAHwAAUB8QDyAAYBBQHxAAYB8gDzAAcBBgHyAAcB8wD0AAgBBwHzAAgB9AD1AAkBCAH0AAkB9QD2AAoBCQH1AAoB9gD3AAsBCgH2AAsB9wD4AAwBCwH3AAwB+AD5AA0BDAH4AA0B+QD6AA4BDQH5AA4B+gD7AA8BDgH6AA8B+wD8ABABDwH7ABAB/AD9ABEBEAH8ABEB/QD+ABIBEQH9ABIB/gD/ABMBEgH+ABMB/wAAARQBEwH/ABQBAAEBARUBFAEAARUBAQECARYBFQEBARYBKQAoABcBAgEpABcBKAAnABcBFgECARcBTQADARgBAwEEARgBBAEFARkBGAEEARkBBQEGARoBGQEFARoBBgEHARsBGgEGARsBBwEIARwBGwEHARwBCAEJAR0BHAEIAR0BCQEKAR4BHQEJAR4BCgELAR8BHgEKAR8BCwEMASABHwELASABDAENASEBIAEMASEBDQEOASIBIQENASIBDgEPASMBIgEOASMBDwEQASQBIwEPASQBEAERASUBJAEQASUBEQESASYBJQERASYBEgETAScBJgESAScBEwEUASgBJwETASgBFAEVASkBKAEUASkBFQEWASoBKQEVASoBFgEXASsBKgEWASsBFwEnACsBTgBNACwBTQAYASwBGAEZAS0BLAEYAS0BGQEaAS4BLQEZAS4BGgEbAS8BLgEaAS8BGwEcATABLwEbATABHAEdATEBMAEcATEBHQEeATIBMQEdATIBHgEfATMBMgEeATMBHwEgATQBMwEfATQBIAEhATUBNAEgATUBIQEiATYBNQEhATYBIgEjATcBNgEiATcBIwEkATgBNwEjATgBJAElATkBOAEkATkBJQEmAToBOQElAToBJgEnATsBOgEmATsBJwEoATwBOwEnATwBKAEpAT0BPAEoAT0BKQEqAT4BPQEpAT4BKgErAT8BPgEqAT8BJwAmAEABKwEnAEABPwErAUABTwBOAEEBTgAsAUEBLAEtAUEBLQEuAUIBQQEtAUIBLgEvAUMBQgEuAUMBLwEwAUQBQwEvAUQBMAExAUUBRAEwAUUBMQEyAUYBRQExAUYBMgEzAUcBRgEyAUcBMwE0AUgBRwEzAUgBNAE1AUkBSAE0AUkBNQE2AUoBSQE1AUoBNgE3AUsBSgE2AUsBNwE4AUwBSwE3AUwBOAE5AU0BTAE4AU0BOQE6AU4BTQE5AU4BOgE7AU8BTgE6AU8BOwE8AVABTwE7AVABPAE9AVEBUAE8AVEBPQE+AVIBUQE9AVIBPgE/AVMBUgE+AVMBJgAlAFQBQAEmAFQBPwFAAVQBUwE/AVQBUABPAFUBTwBBAVUBQQFCAVYBVQFBAVYBQgFDAVcBVgFCAVcBQwFEAVgBVwFDAVgBRAFFAVkBWAFEAVkBRQFGAVoBWQFFAVoBRgFHAVsBWgFGAVsBRwFIAVwBWwFHAVwBSAFJAV0BXAFIAV0BSQFKAV4BXQFJAV4BSgFLAV8BXgFKAV8BSwFMAWABXwFLAWABTAFNAWEBYAFMAWEBTQFOAWIBYQFNAWIBTgFPAWMBYgFOAWMBTwFQAWQBYwFPAWQBUAFRAWUBZAFQAWUBUQFSAWYBZQFRAWYBUgFTAWcBZgFSAWcBUwFUAWgBZwFTAWgBJQAkAGkBVAElAGkBaAFUAWkBUABVAWoBVQFWAWoBVgFXAWsBagFWAWsBVwFYAWwBawFXAWwBWAFZAW0BbAFYAW0BWQFaAW4BbQFZAW4BWgFbAW8BbgFaAW8BWwFcAXABbwFbAXABXAFdAXEBcAFcAXEBXQFeAXIBcQFdAXIBXgFfAXMBcgFeAXMBXwFgAXQBcwFfAXQBYAFhAXUBdAFgAXUBYQFiAXYBdQFhAXYBYgFjAXcBdgFiAXcBYwFkAXgBdwFjAXgBZAFlAXkBeAFkAXkBZQFmAXoBeQFlAXoBZgFnAXsBegFmAXsBZwFoAXwBewFnAXwBaQEkAH0BaAFpAX0BfAFoAX0BUQBQAH4BUABqAX4BUgBRAH4BagFrAX8BfgFqAX8BawFsAYABfwFrAYABbAFtAYEBgAFsAYEBbQFuAYIBgQFtAYIBbgFvAYMBggFuAYMBbwFwAYQBgwFvAYQBcAFxAYUBhAFwAYUBcQFyAYYBhQFxAYYBcgFzAYcBhgFyAYcBcwF0AYgBhwFzAYgBdAF1AYkBiAF0AYkBdQF2AYoBiQF1AYoBdgF3AYsBigF2AYsBdwF4AYwBiwF3AYwBeAF5AY0BjAF4AY0BeQF6AY4BjQF5AY4BegF7AY8BjgF6AY8BewF8AZABjwF7AZABfAF9AZEBkAF8AZEBJAAjAJIBfQEkAJIBIwAiAJIBkQF9AZIBUgB+AZMBfgF/AZMBfwGAAZQBkwF/AZQBgAGBAZUBlAGAAZUBgQGCAZYBlQGBAZYBggGDAZcBlgGCAZcBgwGEAZgBlwGDAZgBhAGFAZkBmAGEAZkBhQGGAZoBmQGFAZoBhgGHAZsBmgGGAZsBhwGIAZwBmwGHAZwBiAGJAZ0BnAGIAZ0BiQGKAZ4BnQGJAZ4BigGLAZ8BngGKAZ8BiwGMAaABnwGLAaABjAGNAaEBoAGMAaEBjQGOAaIBoQGNAaIBjgGPAaMBogGOAaMBjwGQAaQBowGPAaQBkAGRAaUBpAGQAaUBkQGSAaYBpQGRAaYBkgEiAKYBUwBSAKcBUgCTAacBkwGUAagBpwGTAagBlAGVAakBqAGUAakBlQGWAaoBqQGVAaoBlgGXAasBqgGWAasBlwGYAawBqwGXAawBmAGZAa0BrAGYAa0BmQGaAa4BrQGZAa4BmgGbAa8BrgGaAa8BmwGcAbABrwGbAbABnAGdAbEBsAGcAbEBnQGeAbIBsQGdAbIBngGfAbMBsgGeAbMBnwGgAbQBswGfAbQBoAGhAbUBtAGgAbUBoQGiAbYBtQGhAbYBogGjAbcBtgGiAbcBowGkAbgBtwGjAbgBpAGlAbkBuAGkAbkBpQGmAboBuQGlAboBIgAhALsBpgEiALsBugGmAbsBVABTALwBUwCnAbwBpwGoAbwBqAGpAb0BvAGoAb0BqQGqAb4BvQGpAb4BqgGrAb8BvgGqAb8BqwGsAcABvwGrAcABrAGtAcEBwAGsAcEBrQGuAcIBwQGtAcIBrgGvAcMBwgGuAcMBrwGwAcQBwwGvAcQBsAGxAcUBxAGwAcUBsQGyAcYBxQGxAcYBsgGzAccBxgGyAccBswG0AcgBxwGzAcgBtAG1AckByAG0AckBtQG2AcoByQG1AcoBtgG3AcsBygG2AcsBtwG4AcwBywG3AcwBuAG5Ac0BzAG4Ac0BuQG6Ac4BzQG5Ac4BIQAgAM8BuwEhAM8BugG7Ac8BzgG6Ac8BVQBUANABVAC8AdABvAG9AdEB0AG8AdEBvQG+AdIB0QG9AdIBvgG/AdMB0gG+AdMBvwHAAdQB0wG/AdQBwAHBAdUB1AHAAdUBwQHCAdYB1QHBAdYBwgHDAdcB1gHCAdcBwwHEAdgB1wHDAdgBxAHFAdkB2AHEAdkBxQHGAdoB2QHFAdoBxgHHAdsB2gHGAdsBxwHIAdwB2wHHAdwByAHJAd0B3AHIAd0ByQHKAd4B3QHJAd4BygHLAd8B3gHKAd8BywHMAeAB3wHLAeABzAHNAeEB4AHMAeEBzQHOAeIB4QHNAeIBzgHPAeMB4gHOAeMBIAAfAOQBzwEgAOQB4wHPAeQBVgBVAOUBVQDQAeUB0AHRAeUB0QHSAeYB5QHRAeYB0gHTAecB5gHSAecB0wHUAegB5wHTAegB1AHVAekB6AHUAekB1QHWAeoB6QHVAeoB1gHXAesB6gHWAesB1wHYAewB6wHXAewB2AHZAe0B7AHYAe0B2QHaAe4B7QHZAe4B2gHbAe8B7gHaAe8B2wHcAfAB7wHbAfAB3AHdAfEB8AHcAfEB3QHeAfIB8QHdAfIB3gHfAfMB8gHeAfMB3wHgAfQB8wHfAfQB4AHhAfUB9AHgAfUB4QHiAfYB9QHhAfYB4gHjAfcB9gHiAfcBHwAeAPgB5AEfAPgB4wHkAfgB9wHjAfgBVwBWAPkBVgDlAfkB5QHmAfoB+QHlAfoB5gHnAfsB+gHmAfsB5wHoAfwB+wHnAfwB6AHpAf0B/AHoAf0B6QHqAf4B/QHpAf4B6gHrAf8B/gHqAf8B6wHsAQAC/wHrAQAC7AHtAQECAALsAQEC7QHuAQICAQLtAQIC7gHvAQMCAgLuAQMC7wHwAQQCAwLvAQQC8AHxAQUCBALwAQUC8QHyAQYCBQLxAQYC8gHzAQcCBgLyAQcC8wH0AQgCBwLzAQgC9AH1AQkCCAL0AQkC9QH2AQoCCQL1AQoC9gH3AQsCCgL2AQsC9wH4AQwCCwL3AQwCHgAdAA0C+AEeAA0CDAL4AQ0CVwD5AQ4C+QH6AQ4C+gH7AQ8CDgL6AQ8C+wH8ARACDwL7ARAC/AH9ARECEAL8AREC/QH+ARICEQL9ARIC/gH/ARMCEgL+ARMC/wEAAhQCEwL/ARQCAAIBAhUCFAIAAhUCAQICAhYCFQIBAhYCAgIDAhcCFgICAhcCAwIEAhgCFwIDAhgCBAIFAhkCGAIEAhkCBQIGAhoCGQIFAhoCBgIHAhsCGgIGAhsCBwIIAhwCGwIHAhwCCAIJAh0CHAIIAh0CCQIKAh4CHQIJAh4CCgILAh8CHgIKAh8CCwIMAiACHwILAiACDAINAiECIAIMAiECDQIdACECWABXACICVwAOAiICDgIPAiMCIgIOAiMCDwIQAiQCIwIPAiQCEAIRAiUCJAIQAiUCEQISAiYCJQIRAiYCEgITAicCJgISAicCEwIUAigCJwITAigCFAIVAikCKAIUAikCFQIWAioCKQIVAioCFgIXAisCKgIWAisCFwIYAiwCKwIXAiwCGAIZAi0CLAIYAi0CGQIaAi4CLQIZAi4CGgIbAi8CLgIaAi8CGwIcAjACLwIbAjACHAIdAjECMAIcAjECHQIeAjICMQIdAjICHgIfAjMCMgIeAjMCHwIgAjQCMwIfAjQCIAIhAjUCNAIgAjUCHQAcADYCIQIdADYCNQIhAjYCWQBYADcCWAAiAjcCIgIjAjcCIwIkAjgCNwIjAjgCJAIlAjkCOAIkAjkCJQImAjoCOQIlAjoCJgInAjsCOgImAjsCJwIoAjwCOwInAjwCKAIpAj0CPAIoAj0CKQIqAj4CPQIpAj4CKgIrAj8CPgIqAj8CKwIsAkACPwIrAkACLAItAkECQAIsAkECLQIuAkICQQItAkICLgIvAkMCQgIuAkMCLwIwAkQCQwIvAkQCMAIxAkUCRAIwAkUCMQIyAkYCRQIxAkYCMgIzAkcCRgIyAkcCMwI0AkgCRwIzAkgCNAI1AkkCSAI0AkkCHAAbAEoCNgIcAEoCNQI2AkoCSQI1AkoCWgBZAEsCWQA3AksCNwI4AkwCSwI3AkwCOAI5Ak0CTAI4Ak0COQI6Ak4CTQI5Ak4COgI7Ak8CTgI6Ak8COwI8AlACTwI7AlACPAI9AlECUAI8AlECPQI+AlICUQI9AlICPgI/AlMCUgI+AlMCPwJAAlQCUwI/AlQCQAJBAlUCVAJAAlUCQQJCAlYCVQJBAlYCQgJDAlcCVgJCAlcCQwJEAlgCVwJDAlgCRAJFAlkCWAJEAlkCRQJGAloCWQJFAloCRgJHAlsCWgJGAlsCRwJIAlwCWwJHAlwCSAJJAl0CXAJIAl0CSQJKAl4CXQJJAl4CGwAaAF8CSgIbAF8CXgJKAl8CWwBaAGACWgBLAmACSwJMAmECYAJLAmECTAJNAmICYQJMAmICTQJOAmMCYgJNAmMCTgJPAmQCYwJOAmQCTwJQAmUCZAJPAmUCUAJRAmYCZQJQAmYCUQJSAmcCZgJRAmcCUgJTAmgCZwJSAmgCUwJUAmkCaAJTAmkCVAJVAmoCaQJUAmoCVQJWAmsCagJVAmsCVgJXAmwCawJWAmwCVwJYAm0CbAJXAm0CWAJZAm4CbQJYAm4CWQJaAm8CbgJZAm8CWgJbAnACbwJaAnACWwJcAnECcAJbAnECXAJdAnICcQJcAnICXQJeAnMCcgJdAnMCXgJfAnQCcwJeAnQCGgAZAHUCXwIaAHUCdAJfAnUCWwBgAnYCYAJhAnYCYQJiAncCdgJhAncCYgJjAngCdwJiAngCYwJkAnkCeAJjAnkCZAJlAnoCeQJkAnoCZQJmAnsCegJlAnsCZgJnAnwCewJmAnwCZwJoAn0CfAJnAn0CaAJpAn4CfQJoAn4CaQJqAn8CfgJpAn8CagJrAoACfwJqAoACawJsAoECgAJrAoECbAJtAoICgQJsAoICbQJuAoMCggJtAoMCbgJvAoQCgwJuAoQCbwJwAoUChAJvAoUCcAJxAoYChQJwAoYCcQJyAocChgJxAocCcgJzAogChwJyAogCcwJ0AokCiAJzAokCdQIZAIoCdAJ1AooCiQJ0AooCXABbAIsCWwB2AosCdgJ3AowCiwJ2AowCdwJ4Ao0CjAJ3Ao0CeAJ5Ao4CjQJ4Ao4CeQJ6Ao8CjgJ5Ao8CegJ7ApACjwJ6ApACewJ8ApECkAJ7ApECfAJ9ApICkQJ8ApICfQJ+ApMCkgJ9ApMCfgJ/ApQCkwJ+ApQCfwKAApUClAJ/ApUCgAKBApYClQKAApYCgQKCApcClgKBApcCggKDApgClwKCApgCgwKEApkCmAKDApkChAKFApoCmQKEApoChQKGApsCmgKFApsChgKHApwCmwKGApwChwKIAp0CnAKHAp0CiAKJAp4CnQKIAp4CiQKKAp8CngKJAp8CGQAYAKACigIZAKACnwKKAqACXQBcAKECXACLAqECXgBdAKECiwKMAqICoQKLAqICjAKNAqMCogKMAqMCjQKOAqQCowKNAqQCjgKPAqUCpAKOAqUCjwKQAqYCpQKPAqYCkAKRAqcCpgKQAqcCkQKSAqgCpwKRAqgCkgKTAqkCqAKSAqkCkwKUAqoCqQKTAqoClAKVAqsCqgKUAqsClQKWAqwCqwKVAqwClgKXAq0CrAKWAq0ClwKYAq4CrQKXAq4CmAKZAq8CrgKYAq8CmQKaArACrwKZArACmgKbArECsAKaArECmwKcArICsQKbArICnAKdArMCsgKcArMCnQKeArQCswKdArQCngKfArUCtAKeArUCnwKgArYCtQKfArYCGAAXALcCoAIYALcCFwAWALcCtgKgArcCXgChArgCoQKiArgCogKjArkCuAKiArkCowKkAroCuQKjAroCpAKlArsCugKkArsCpQKmArwCuwKlArwCpgKnAr0CvAKmAr0CpwKoAr4CvQKnAr4CqAKpAr8CvgKoAr8CqQKqAsACvwKpAsACqgKrAsECwAKqAsECqwKsAsICwQKrAsICrAKtAsMCwgKsAsMCrQKuAsQCwwKtAsQCrgKvAsUCxAKuAsUCrwKwAsYCxQKvAsYCsAKxAscCxgKwAscCsQKyAsgCxwKxAsgCsgKzAskCyAKyAskCswK0AsoCyQKzAsoCtAK1AssCygK0AssCtQK2AswCywK1AswCtgK3As0CzAK2As0CtwIWAM0CXwBeAM4CXgC4As4CuAK5As8CzgK4As8CuQK6AtACzwK5AtACugK7AtEC0AK6AtECuwK8AtIC0QK7AtICvAK9AtMC0gK8AtMCvQK+AtQC0wK9AtQCvgK/AtUC1AK+AtUCvwLAAtYC1QK/AtYCwALBAtcC1gLAAtcCwQLCAtgC1wLBAtgCwgLDAtkC2ALCAtkCwwLEAtoC2QLDAtoCxALFAtsC2gLEAtsCxQLGAtwC2wLFAtwCxgLHAt0C3ALGAt0CxwLIAt4C3QLHAt4CyALJAt8C3gLIAt8CyQLKAuAC3wLJAuACygLLAuEC4ALKAuECywLMAuIC4QLLAuICzALNAuMC4gLMAuMCFgAVAOQCzQIWAOQC4wLNAuQCXwDOAuUCzgLPAuUCzwLQAuYC5QLPAuYC0ALRAucC5gLQAucC0QLSAugC5wLRAugC0gLTAukC6ALSAukC0wLUAuoC6QLTAuoC1ALVAusC6gLUAusC1QLWAuwC6wLVAuwC1gLXAu0C7ALWAu0C1wLYAu4C7QLXAu4C2ALZAu8C7gLYAu8C2QLaAvAC7wLZAvAC2gLbAvEC8ALaAvEC2wLcAvIC8QLbAvIC3ALdAvMC8gLcAvMC3QLeAvQC8wLdAvQC3gLfAvUC9ALeAvUC3wLgAvYC9QLfAvYC4ALhAvcC9gLgAvcC4QLiAvgC9wLhAvgC4gLjAvkC+ALiAvkC5AIVAPoC4wLkAvoC+QLjAvoCYABfAPsCXwDlAvsCYQBgAPsC5QLmAvwC+wLlAvwC5gLnAv0C/ALmAv0C5wLoAv4C/QLnAv4C6ALpAv8C/gLoAv8C6QLqAgAD/wLpAgAD6gLrAgEDAAPqAgED6wLsAgIDAQPrAgID7ALtAgMDAgPsAgMD7QLuAgQDAwPtAgQD7gLvAgUDBAPuAgUD7wLwAgYDBQPvAgYD8ALxAgcDBgPwAgcD8QLyAggDBwPxAggD8gLzAgkDCAPyAgkD8wL0AgoDCQPzAgoD9AL1AgsDCgP0AgsD9QL2AgwDCwP1AgwD9gL3Ag0DDAP2Ag0D9wL4Ag4DDQP3Ag4D+AL5Ag8DDgP4Ag8D+QL6AhADDwP5AhADFQAUABED+gIVABEDFAATABEDEAP6AhEDYQD7AhID+wL8AhID/AL9AhMDEgP8AhMD/QL+AhQDEwP9AhQD/gL/AhUDFAP+AhUD/wIAAxYDFQP/AhYDAAMBAxcDFgMAAxcDAQMCAxgDFwMBAxgDAgMDAxkDGAMCAxkDAwMEAxoDGQMDAxoDBAMFAxsDGgMEAxsDBQMGAxwDGwMFAxwDBgMHAx0DHAMGAx0DBwMIAx4DHQMHAx4DCAMJAx8DHgMIAx8DCQMKAyADHwMJAyADCgMLAyEDIAMKAyEDCwMMAyIDIQMLAyIDDAMNAyMDIgMMAyMDDQMOAyQDIwMNAyQDDgMPAyUDJAMOAyUDDwMQAyYDJQMPAyYDEQMTACcDEAMRAycDJgMQAycDYgBhACgDYQASAygDYwBiACgDEgMTAykDKAMSAykDEwMUAyoDKQMTAyoDFAMVAysDKgMUAysDFQMWAywDKwMVAywDFgMXAy0DLAMWAy0DFwMYAy4DLQMXAy4DGAMZAy8DLgMYAy8DGQMaAzADLwMZAzADGgMbAzEDMAMaAzEDGwMcAzIDMQMbAzIDHAMdAzMDMgMcAzMDHQMeAzQDMwMdAzQDHgMfAzUDNAMeAzUDHwMgAzYDNQMfAzYDIAMhAzcDNgMgAzcDIQMiAzgDNwMhAzgDIgMjAzkDOAMiAzkDIwMkAzoDOQMjAzoDJAMlAzsDOgMkAzsDJQMmAzwDOwMlAzwDJgMnAz0DPAMmAz0DEwASAD4DJwMTAD4DEgARAD4DPQMnAz4DYwAoAz8DKAMpAz8DKQMqA0ADPwMpA0ADKgMrA0EDQAMqA0EDKwMsA0IDQQMrA0IDLAMtA0MDQgMsA0MDLQMuA0QDQwMtA0QDLgMvA0UDRAMuA0UDLwMwA0YDRQMvA0YDMAMxA0cDRgMwA0cDMQMyA0gDRwMxA0gDMgMzA0kDSAMyA0kDMwM0A0oDSQMzA0oDNAM1A0sDSgM0A0sDNQM2A0wDSwM1A0wDNgM3A00DTAM2A00DNwM4A04DTQM3A04DOAM5A08DTgM4A08DOQM6A1ADTwM5A1ADOgM7A1EDUAM6A1EDOwM8A1IDUQM7A1IDPAM9A1MDUgM8A1MDPgMRAFQDPQM+A1QDUwM9A1QDZABjAFUDYwA/A1UDPwNAA1YDVQM/A1YDQANBA1cDVgNAA1cDQQNCA1gDVwNBA1gDQgNDA1kDWANCA1kDQwNEA1oDWQNDA1oDRANFA1sDWgNEA1sDRQNGA1wDWwNFA1wDRgNHA10DXANGA10DRwNIA14DXQNHA14DAABzAF8DSANJA18DXgNIA18DSQNKA2ADXwNJA2ADAABfA2ADAQAAAGEDAABgA2EDSgNLA2EDYANKA2EDSwNMA2IDYQNLA2IDTANNA2MDYgNMA2MDTQNOA2QDYwNNA2QDTgNPA2UDZANOA2UDTwNQA2YDZQNPA2YDUANRA2cDZgNQA2cDUQNSA2gDZwNRA2gDUgNTA2kDaANSA2kDUwNUA2oDaQNTA2oDEQAQAGsDVAMRAGsDagNUA2sDZQBkAGwDZABVA2wDZgBlAGwDZwBmAGwDVQNWA2wDVgNXA20DbANWA20DZwBsA20DVwNYA24DbQNXA24DWANZA28DbgNYA28DWQNaA3ADbwNZA3ADWgNbA3EDcANaA3EDWwNcA3IDcQNbA3IDXANdA3MDcgNcA3MDXQNeA3QDcwNdA3QDXgNfA3UDXwNzAHUDcwByAHUDcgB0A3UDdANeA3UDAgABAHYDAQBhA3YDYQNiA3YDYgNjA3cDdgNiA3cDAgB2A3cDYwNkA3gDdwNjA3gDZANlA3kDeANkA3kDZQNmA3oDeQNlA3oDZgNnA3sDegNmA3sDZwNoA3wDewNnA3wDaANpA30DfANoA30DaQNqA34DfQNpA34DDgANAH8DDQB+A38DagNrA38DfgNqA38DDwAOAIADDgB/A4ADEAAPAIADawMQAIADfwNrA4ADaABnAIEDZwBtA4EDaQBoAIEDbQNuA4EDbgNvA4IDgQNuA4IDaQCBA4IDbwNwA4MDggNvA4MDcANxA4QDgwNwA4QDcQNyA4UDhANxA4UDcgNzA4YDhQNyA4YDcgBxAIcDdANyAIcDcwN0A4cDcQBwAIcDcACGA4cDhgNzA4cDAwACAIgDAgB3A4gDdwN4A4gDBAADAIkDAwCIA4kDeAN5A4kDiAN4A4kDeQN6A4oDiQN5A4oDegN7A4sDigN6A4sDewN8A4wDiwN7A4wDfAN9A40DjAN8A40DDQAMAI4DfgMNAI4DfQN+A44DDAALAI4DCwCNA44DjQN9A44DagBpAI8DaQCCA48DggODA48DawBqAJADagCPA5ADgwOEA5ADjwODA5ADbABrAJEDawCQA5EDhAOFA5EDkAOEA5EDcABvAJIDhQOGA5IDkQOFA5IDhgNwAJIDBQAEAJMDBACJA5MDiQOKA5MDCQAIAJQDigOLA5QDkwOKA5QDCgAJAJUDiwOMA5UDlAOLA5UDCQCUA5UDCwAKAJYDjQMLAJYDjAONA5YDCgCVA5YDlQOMA5YDbQBsAJcDbACRA5cDkQOSA5cDbwBtAJcDkgNvAJcDBwAFAJgDBQCTA5gDCAAHAJgDkwOUA5gDlAMIAJgD\",\"ao\":\"//////////////////////////7+/Pr49vPv6uTg3t7c29/l7PT5/P7+/////////////////////////////////////////////v78+fXs5t/c3d/g4uXr7/P2+Pr8/v7//////////////////////////////////////////////////////////////////////////////////v7+/////v///v////7+/v7///7+/f7+/v7+/v7+/v7+/v79/f7//v38/P3+/v7+/v7+/v7+/fz8/f7+/fv7/P3+/f3+/v79/f79/Pv7/f79+vn6/P39/f39/f39/f39+vn6/f369/j7/f39/f39/f39/f37+Pf6/fr29fj8/f38/P39/fz9/fz59vb6+fXz9fr8/fz8/P38/Pz8/Pr18/X59fDx9vv8/Pz8/Pz8/Pz8+/bx8PTx7ezx+Pz8/Pz8/Pz8/Pz8+fHs7fDp5+v0+vz8/Pz8/Pz7/Pz69Ovn6eTh5O33/Pz8/Pz8/Pz8/Pz47uTi5N3d5vL6/Pz8/Pz8/Pz8/Prz5t7d29rf7Pj8/Pz8/P38/Pz8/Pjt4Nrb29zm9Pv8/Pz8/f38/Pz8+/Xn3Nrd3OLw+v38/Pz9/f38/Pz9+vHj3Nzf4u34/f39/f39/f39/f39+O7i3uHk7Pf8/f39/f3+/f39/f389+zj3+Xs9vz+/v39/v7+/v39/v789uzj5ev0+/7+/v7+/v7+/v7+/v779Orj6vL6/f7+/v7+/v7+/v7+/v768uru8ff9/v7+/v7+//7+/v7+/v348e7x8vb7/v////////////////789/Lx8/b6/f/////////////////++vbz9vb5/f7////////////////+/fn29vj4+fz+//////////////////78+fj4+fr7/v///////////////////vz6+fv7/P3////////////////////9/Pv7/Pz9/v///////////////////v38/P39/v7////////////////////+/v39/v7////////////////////////+/v//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\"},\n    back: {\"pat\":\"AAC4/mgBw/64AuT+2QMY/7YEXP9BBav/cQUAALgGd/8ACO/+SAlm/o8K3v3XC1X9Hw3N/GYORPyuD7z79hAz++sQt/nhEDr41hC+9sUQbvWzEB/0ohDP8n4QG/FaEGbvLBD17f4PhOzGD1brjg8o6goPUugKD+jmCg9+5QoPE+QKD6niCg8/4QoP1d8KD2veCg8B3QoPltsKDyzaCg/C2AoPWNcKD+7VCg+E1AoPGdMKD6/RCg9F0AoP284KD3HNZg7NzPYMzcyFC83MFArNzKQIzcwzB83MwwXNzFIEzczhAs3McQHNzAAAzcyP/s3MH/3NzK77zcw9+s3MzfjNzFz3zczs9c3Me/TNzArzzcya8c3M9vBxzfbw28728EXQ9vCv0fbwGdP28ITU9vDu1fbwWNf28MLY9vAs2vbwltv28AHd9vBr3vbw1d/28D/h9vCp4vbwE+T28H7l9vDo5vbwUuhy8CjqOvBW6wLwhOzU7/Xtpu9m74LvG/Fe78/yTe8f9DvvbvUq7772H+86+BXvt/kK7zP7UvC8+5rxRPzh8s38KfRV/XH13v249mb+APjv/kj5d/+P+gAAv/qr/0r7XP8n/Bj/SP3k/pj+w/6P8qHO+POhzmD1oc7J9qHOMfihzpr5oc4C+6HOavyhztP9oc47/6HOpAChzgwCoc51A6HO3QShzkYGoc6uB6HOFwmhzn8Koc7nC6HOUA2hztvx2c9E89nPrPTZzxT22c9999nP5fjZz0762c+2+9nPH/3Zz4f+2c/w/9nPWAHZz8EC2c8pBNnPkQXZz/oG2c9iCNnPywnZzzML2c+cDNnPBA7Zz4/yEdH48xHRYPUR0cn2EdEx+BHRmvkR0QL7EdFq/BHR0/0R0Tv/EdGkABHRDAIR0XUDEdHdBBHRRgYR0a4HEdEXCRHRfwoR0ecLEdFQDRHR2/FK0kTzStKs9ErSFPZK0n33StLl+ErSTvpK0rb7StIf/UrSh/5K0vD/StJYAUrSwQJK0ikEStKRBUrS+gZK0mIIStLLCUrSMwtK0pwMStIEDkrSj/KC0/jzgtNg9YLTyfaC0zH4gtOa+YLTAvuC02r8gtPT/YLTO/+C06QAgtMMAoLTdQOC090EgtNGBoLTrgeC0xcJgtN/CoLT5wuC01ANgtPb8brURPO61Kz0utQU9rrUffe61OX4utRO+rrUtvu61B/9utSH/rrU8P+61FgButTBArrUKQS61JEFutT6BrrUYgi61MsJutQzC7rUnAy61AQOutSP8vLV+PPy1WD18tXJ9vLVMfjy1Zr58tUC+/LVavzy1dP98tU7//LVpADy1QwC8tV1A/LV3QTy1UYG8tWuB/LVFwny1X8K8tXnC/LVUA3y1dvxKtdE8yrXrPQq1xT2Ktd99yrX5fgq1076Kte2+yrXH/0q14f+Ktfw/yrXWAEq18ECKtcpBCrXkQUq1/oGKtdiCCrXywkq1zMLKtecDCrXBA4q14/yYtj482LYYPVi2Mn2Ytgx+GLYmvli2AL7Ythq/GLY0/1i2Dv/YtikAGLYDAJi2HUDYtjdBGLYRgZi2K4HYtgXCWLYfwpi2OcLYthQDWLY2/Ga2UTzmtms9JrZFPaa2X33mtnl+JrZTvqa2bb7mtkf/ZrZh/6a2fD/mtlYAZrZwQKa2SkEmtmRBZrZ+gaa2WIImtnLCZrZMwua2ZwMmtkEDprZj/LT2vjz09pg9dPayfbT2jH409qa+dPaAvvT2mr809rT/dPaO//T2qQA09oMAtPadQPT2t0E09pGBtPargfT2hcJ09p/CtPa5wvT2lAN09rb8QvcRPML3Kz0C9wU9gvcffcL3OX4C9xO+gvctvsL3B/9C9yH/gvc8P8L3FgBC9zBAgvcKQQL3JEFC9z6BgvcYggL3MsJC9wzCwvcnAwL3AQOC9yP8kPd+PND3WD1Q93J9kPdMfhD3Zr5Q90C+0PdavxD3dP9Q907/0PdpABD3QwCQ911A0Pd3QRD3UYGQ92uB0PdFwlD3X8KQ93nC0PdUA1D3dvxe95E83verPR73hT2e95993ve5fh73k76e962+3veH/173of+e97w/3veWAF73sECe94pBHvekQV73voGe95iCHveywl73jMLe96cDHveBA573o/ys9/487PfYPWz38n2s98x+LPfmvmz3wL7s99q/LPf0/2z3zv/s9+kALPfDAKz33UDs9/dBLPfRgaz364Hs98XCbPffwqz3+cLs99QDbPf2/Hr4ETz6+Cs9OvgFPbr4H336+Dl+OvgTvrr4Lb76+Af/evgh/7r4PD/6+BYAevgwQLr4CkE6+CRBevg+gbr4GII6+DLCevgMwvr4JwM6+AEDuvgj/Ik4vjzJOJg9STiyfYk4jH4JOKa+STiAvsk4mr8JOLT/STiO/8k4qQAJOIMAiTidQMk4t0EJOJGBiTirgck4hcJJOJ/CiTi5wsk4lANJOLb8VzjRPNc46z0XOMU9lzjffdc4+X4XONO+lzjtvtc4x/9XOOH/lzj8P9c41gBXOPBAlzjKQRc45EFXOP6BlzjYghc48sJXOMzC1zjnAxc4wQOXOOP8pTk+POU5GD1lOTJ9pTkMfiU5Jr5lOQC+5TkavyU5NP9lOQ7/5TkpACU5AwClOR1A5Tk3QSU5EYGlOSuB5TkFwmU5H8KlOTnC5TkUA2U5NvxzOVE88zlrPTM5RT2zOV998zl5fjM5U76zOW2+8zlH/3M5Yf+zOXw/8zlWAHM5cECzOUpBMzlkQXM5foGzOViCMzlywnM5TMLzOWcDMzlBA7M5Y/yBOf48wTnYPUE58n2BOcx+ATnmvkE5wL7BOdq/ATn0/0E5zv/BOekAATnDAIE53UDBOfdBATnRgYE564HBOcXCQTnfwoE5+cLBOdQDQTn2/E86ETzPOis9DzoFPY86H33POjl+DzoTvo86Lb7POgf/Tzoh/486PD/POhYATzowQI86CkEPOiRBTzo+gY86GIIPOjLCTzoMws86JwMPOgEDjzoj/J06fjzdOlg9XTpyfZ06TH4dOma+XTpAvt06Wr8dOnT/XTpO/906aQAdOkMAnTpdQN06d0EdOlGBnTprgd06RcJdOl/CnTp5wt06VANdOnb8a3qRPOt6qz0reoU9q3qffet6uX4repO+q3qtvut6h/9reqH/q3q8P+t6lgBrerBAq3qKQSt6pEFrer6Bq3qYgit6ssJreozC63qnAyt6gQOreon8eXrj/Ll6/jz5etg9eXryfbl6zH45eua+eXrAvvl62r85evT/eXrO//l66QA5esMAuXrdQPl690E5etGBuXrrgfl6xcJ5et/CuXr5wvl61AN5eu4DuXr2/Ed7UTzHe2s9B3tFPYd7X33He3l+B3tTvod7bb7He0f/R3th/4d7fD/He1YAR3twQId7SkEHe2RBR3t+gYd7WIIHe3LCR3tMwsd7ZwMHe0EDh3tJ/FV7o/yVe7481XuYPVV7sn2Ve4x+FXumvlV7gL7Ve5q/FXu0/1V7jv/Ve6kAFXuDAJV7nUDVe7dBFXuRgZV7q4HVe4XCVXufwpV7ucLVe5QDVXuuA5V7nPwje/b8Y3vRPON76z0je8U9o3vffeN7+X4je9O+o3vtvuN7x/9je+H/o3v8P+N71gBje/BAo3vKQSN75EFje/6Bo3vYgiN78sJje8zC43vnAyN7wQOje9tD43vJ/HF8I/yxfD488XwYPXF8Mn2xfAx+MXwmvnF8AL7xfBq/MXw0/3F8Dv/xfCkAMXwDALF8HUDxfDdBMXwRgbF8K4HxfAXCcXwfwrF8OcLxfBQDcXwuA7F8HPw/vHb8f7xRPP+8az0/vEU9v7xfff+8eX4/vFO+v7xtvv+8R/9/vGH/v7x8P/+8VgB/vHBAv7xKQT+8ZEF/vH6Bv7xYgj+8csJ/vEzC/7xnAz+8QQO/vFtD/7xJ/E284/yNvP48zbzYPU288n2NvMx+Dbzmvk28wL7NvNq/Dbz0/028zv/NvOkADbzDAI283UDNvPdBDbzRgY2864HNvMXCTbzfwo28+cLNvNQDTbzuA4283PwbvTb8W70RPNu9Kz0bvQU9m70ffdu9OX4bvRO+m70tvtu9B/9bvSH/m708P9u9FgBbvTBAm70KQRu9JEFbvT6Bm70Yghu9MsJbvQzC270nAxu9AQObvRtD270J/Gm9Y/ypvX486b1YPWm9cn2pvUx+Kb1mvmm9QL7pvVq/Kb10/2m9Tv/pvWkAKb1DAKm9XUDpvXdBKb1Rgam9a4HpvUXCab1fwqm9ecLpvVQDab1uA6m9XPw3vbb8d72RPPe9qz03vYU9t72fffe9uX43vZO+t72tvve9h/93vaH/t728P/e9lgB3vbBAt72KQTe9pEF3vb6Bt72Ygje9ssJ3vYzC972nAze9gQO3vZtD972J/EW+I/yFvj48xb4YPUW+Mn2Fvgx+Bb4mvkW+AL7Fvhq/Bb40/0W+Dv/FvikABb4DAIW+HUDFvjdBBb4RgYW+K4HFvgXCRb4fwoW+OcLFvhQDRb4uA4W+HPwT/nb8U/5RPNP+az0T/kU9k/5ffdP+eX4T/lO+k/5tvtP+R/9T/mH/k/58P9P+VgBT/nBAk/5KQRP+ZEFT/n6Bk/5YghP+csJT/kzC0/5nAxP+QQOT/ltD0/5J/GH+o/yh/r484f6YPWH+sn2h/ox+If6mvmH+gL7h/pq/If60/2H+jv/h/qkAIf6DAKH+nUDh/rdBIf6RgaH+q4Hh/oXCYf6fwqH+ucLh/pQDYf6uA6H+iEQh/pE87/7rPS/+xT2v/t997/75fi/+076v/u2+7/7H/2/+4f+v/vw/7/7WAG/+8ECv/spBL/7kQW/+/oGv/tiCL/7ywm/+zMLv/ucDL/7YPX3/Mn29/wx+Pf8mvn3/AL79/xq/Pf80/33/Dv/9/ykAPf8DAL3/HUD9/zdBPf8Rgb3/K4H9/wXCff8fwr3/OX4L/5O+i/+tvsv/ikEL/6RBS/++gYv/g==\",\"pos\":\"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\",\"tri\":\"BgAFAAcAbgBtAG8ARABDAHQARQBEAHQARgBFAHQAQwBCAHUAdABDAHUAQgBBAHYAdQBCAHYAQQBAAHcAdgBBAHcAQAA/AHgAdwBAAHgAPwA+AHkAeAA/AHkAPgA9AHoAeQA+AHoAPQA8AHsAegA9AHsAPAA7AHwAewA8AHwAOwA6AH0AfAA7AH0AOgA5AH4AfQA6AH4AOQA4AH8AfgA5AH8AOAA3AIAAfwA4AIAANwA2AIEAgAA3AIEANgA1AIIAgQA2AIIANQA0AIMAggA1AIMANAAzAIQAgwA0AIQAMwAyAIUAhAAzAIUAMgAxAIYAhQAyAIYALwAuAIcAMAAvAIcAMQAwAIcAhgAxAIcARwBGAIgARgB0AIgAdAB1AIkAiAB0AIkAdQB2AIoAiQB1AIoAdgB3AIsAigB2AIsAdwB4AIwAiwB3AIwAeAB5AI0AjAB4AI0AeQB6AI4AjQB5AI4AegB7AI8AjgB6AI8AewB8AJAAjwB7AJAAfAB9AJEAkAB8AJEAfQB+AJIAkQB9AJIAfgB/AJMAkgB+AJMAfwCAAJQAkwB/AJQAgACBAJUAlACAAJUAgQCCAJYAlQCBAJYAggCDAJcAlgCCAJcAgwCEAJgAlwCDAJgAhACFAJkAmACEAJkAhQCGAJoAmQCFAJoAhgCHAJsAmgCGAJsALgAtAJwAhwAuAJwAmwCHAJwASABHAJ0ARwCIAJ0AiACJAJ0AiQCKAJ4AnQCJAJ4AigCLAJ8AngCKAJ8AiwCMAKAAnwCLAKAAjACNAKEAoACMAKEAjQCOAKIAoQCNAKIAjgCPAKMAogCOAKMAjwCQAKQAowCPAKQAkACRAKUApACQAKUAkQCSAKYApQCRAKYAkgCTAKcApgCSAKcAkwCUAKgApwCTAKgAlACVAKkAqACUAKkAlQCWAKoAqQCVAKoAlgCXAKsAqgCWAKsAlwCYAKwAqwCXAKwAmACZAK0ArACYAK0AmQCaAK4ArQCZAK4AmgCbAK8ArgCaAK8ALQAsALAAnAAtALAAmwCcALAArwCbALAASQBIALEASACdALEAnQCeALIAsQCdALIAngCfALMAsgCeALMAnwCgALQAswCfALQAoAChALUAtACgALUAoQCiALYAtQChALYAogCjALcAtgCiALcAowCkALgAtwCjALgApAClALkAuACkALkApQCmALoAuQClALoApgCnALsAugCmALsApwCoALwAuwCnALwAqACpAL0AvACoAL0AqQCqAL4AvQCpAL4AqgCrAL8AvgCqAL8AqwCsAMAAvwCrAMAArACtAMEAwACsAMEArQCuAMIAwQCtAMIArgCvAMMAwgCuAMMArwCwAMQAwwCvAMQALAArAMUAsAAsAMUAxACwAMUASQCxAMYAsQCyAMYAsgCzAMcAxgCyAMcAswC0AMgAxwCzAMgAtAC1AMkAyAC0AMkAtQC2AMoAyQC1AMoAtgC3AMsAygC2AMsAtwC4AMwAywC3AMwAuAC5AM0AzAC4AM0AuQC6AM4AzQC5AM4AugC7AM8AzgC6AM8AuwC8ANAAzwC7ANAAvAC9ANEA0AC8ANEAvQC+ANIA0QC9ANIAvgC/ANMA0gC+ANMAvwDAANQA0wC/ANQAwADBANUA1ADAANUAwQDCANYA1QDBANYAwgDDANcA1gDCANcAwwDEANgA1wDDANgAxQArANkAxADFANkA2ADEANkASgBJANoASQDGANoASwBKANoAxgDHANsA2gDGANsAxwDIANwA2wDHANwAyADJAN0A3ADIAN0AyQDKAN4A3QDJAN4AygDLAN8A3gDKAN8AywDMAOAA3wDLAOAAzADNAOEA4ADMAOEAzQDOAOIA4QDNAOIAzgDPAOMA4gDOAOMAzwDQAOQA4wDPAOQA0ADRAOUA5ADQAOUA0QDSAOYA5QDRAOYA0gDTAOcA5gDSAOcA0wDUAOgA5wDTAOgA1ADVAOkA6ADUAOkA1QDWAOoA6QDVAOoA1gDXAOsA6gDWAOsA1wDYAOwA6wDXAOwA2ADZAO0A7ADYAO0AKwAqAO4A2QArAO4AKgApAO4A7QDZAO4ASwDaAO8A2gDbAO8A2wDcAPAA7wDbAPAA3ADdAPEA8ADcAPEA3QDeAPIA8QDdAPIA3gDfAPMA8gDeAPMA3wDgAPQA8wDfAPQA4ADhAPUA9ADgAPUA4QDiAPYA9QDhAPYA4gDjAPcA9gDiAPcA4wDkAPgA9wDjAPgA5ADlAPkA+ADkAPkA5QDmAPoA+QDlAPoA5gDnAPsA+gDmAPsA5wDoAPwA+wDnAPwA6ADpAP0A/ADoAP0A6QDqAP4A/QDpAP4A6gDrAP8A/gDqAP8A6wDsAAAB/wDrAAAB7ADtAAEBAAHsAAEB7QDuAAIBAQHtAAIB7gApAAIBTABLAAMBSwDvAAMBTQBMAAMB7wDwAAQBAwHvAAQB8ADxAAUBBAHwAAUB8QDyAAYBBQHxAAYB8gDzAAcBBgHyAAcB8wD0AAgBBwHzAAgB9AD1AAkBCAH0AAkB9QD2AAoBCQH1AAoB9gD3AAsBCgH2AAsB9wD4AAwBCwH3AAwB+AD5AA0BDAH4AA0B+QD6AA4BDQH5AA4B+gD7AA8BDgH6AA8B+wD8ABABDwH7ABAB/AD9ABEBEAH8ABEB/QD+ABIBEQH9ABIB/gD/ABMBEgH+ABMB/wAAARQBEwH/ABQBAAEBARUBFAEAARUBAQECARYBFQEBARYBKQAoABcBAgEpABcBKAAnABcBFgECARcBTQADARgBAwEEARgBBAEFARkBGAEEARkBBQEGARoBGQEFARoBBgEHARsBGgEGARsBBwEIARwBGwEHARwBCAEJAR0BHAEIAR0BCQEKAR4BHQEJAR4BCgELAR8BHgEKAR8BCwEMASABHwELASABDAENASEBIAEMASEBDQEOASIBIQENASIBDgEPASMBIgEOASMBDwEQASQBIwEPASQBEAERASUBJAEQASUBEQESASYBJQERASYBEgETAScBJgESAScBEwEUASgBJwETASgBFAEVASkBKAEUASkBFQEWASoBKQEVASoBFgEXASsBKgEWASsBFwEnACsBTgBNACwBTQAYASwBGAEZAS0BLAEYAS0BGQEaAS4BLQEZAS4BGgEbAS8BLgEaAS8BGwEcATABLwEbATABHAEdATEBMAEcATEBHQEeATIBMQEdATIBHgEfATMBMgEeATMBHwEgATQBMwEfATQBIAEhATUBNAEgATUBIQEiATYBNQEhATYBIgEjATcBNgEiATcBIwEkATgBNwEjATgBJAElATkBOAEkATkBJQEmAToBOQElAToBJgEnATsBOgEmATsBJwEoATwBOwEnATwBKAEpAT0BPAEoAT0BKQEqAT4BPQEpAT4BKgErAT8BPgEqAT8BJwAmAEABKwEnAEABPwErAUABTwBOAEEBTgAsAUEBLAEtAUEBLQEuAUIBQQEtAUIBLgEvAUMBQgEuAUMBLwEwAUQBQwEvAUQBMAExAUUBRAEwAUUBMQEyAUYBRQExAUYBMgEzAUcBRgEyAUcBMwE0AUgBRwEzAUgBNAE1AUkBSAE0AUkBNQE2AUoBSQE1AUoBNgE3AUsBSgE2AUsBNwE4AUwBSwE3AUwBOAE5AU0BTAE4AU0BOQE6AU4BTQE5AU4BOgE7AU8BTgE6AU8BOwE8AVABTwE7AVABPAE9AVEBUAE8AVEBPQE+AVIBUQE9AVIBPgE/AVMBUgE+AVMBJgAlAFQBQAEmAFQBPwFAAVQBUwE/AVQBUABPAFUBTwBBAVUBQQFCAVYBVQFBAVYBQgFDAVcBVgFCAVcBQwFEAVgBVwFDAVgBRAFFAVkBWAFEAVkBRQFGAVoBWQFFAVoBRgFHAVsBWgFGAVsBRwFIAVwBWwFHAVwBSAFJAV0BXAFIAV0BSQFKAV4BXQFJAV4BSgFLAV8BXgFKAV8BSwFMAWABXwFLAWABTAFNAWEBYAFMAWEBTQFOAWIBYQFNAWIBTgFPAWMBYgFOAWMBTwFQAWQBYwFPAWQBUAFRAWUBZAFQAWUBUQFSAWYBZQFRAWYBUgFTAWcBZgFSAWcBUwFUAWgBZwFTAWgBJQAkAGkBVAElAGkBaAFUAWkBUABVAWoBVQFWAWoBVgFXAWsBagFWAWsBVwFYAWwBawFXAWwBWAFZAW0BbAFYAW0BWQFaAW4BbQFZAW4BWgFbAW8BbgFaAW8BWwFcAXABbwFbAXABXAFdAXEBcAFcAXEBXQFeAXIBcQFdAXIBXgFfAXMBcgFeAXMBXwFgAXQBcwFfAXQBYAFhAXUBdAFgAXUBYQFiAXYBdQFhAXYBYgFjAXcBdgFiAXcBYwFkAXgBdwFjAXgBZAFlAXkBeAFkAXkBZQFmAXoBeQFlAXoBZgFnAXsBegFmAXsBZwFoAXwBewFnAXwBaQEkAH0BaAFpAX0BfAFoAX0BUQBQAH4BUABqAX4BUgBRAH4BagFrAX8BfgFqAX8BawFsAYABfwFrAYABbAFtAYEBgAFsAYEBbQFuAYIBgQFtAYIBbgFvAYMBggFuAYMBbwFwAYQBgwFvAYQBcAFxAYUBhAFwAYUBcQFyAYYBhQFxAYYBcgFzAYcBhgFyAYcBcwF0AYgBhwFzAYgBdAF1AYkBiAF0AYkBdQF2AYoBiQF1AYoBdgF3AYsBigF2AYsBdwF4AYwBiwF3AYwBeAF5AY0BjAF4AY0BeQF6AY4BjQF5AY4BegF7AY8BjgF6AY8BewF8AZABjwF7AZABfAF9AZEBkAF8AZEBJAAjAJIBfQEkAJIBIwAiAJIBkQF9AZIBUgB+AZMBfgF/AZMBfwGAAZQBkwF/AZQBgAGBAZUBlAGAAZUBgQGCAZYBlQGBAZYBggGDAZcBlgGCAZcBgwGEAZgBlwGDAZgBhAGFAZkBmAGEAZkBhQGGAZoBmQGFAZoBhgGHAZsBmgGGAZsBhwGIAZwBmwGHAZwBiAGJAZ0BnAGIAZ0BiQGKAZ4BnQGJAZ4BigGLAZ8BngGKAZ8BiwGMAaABnwGLAaABjAGNAaEBoAGMAaEBjQGOAaIBoQGNAaIBjgGPAaMBogGOAaMBjwGQAaQBowGPAaQBkAGRAaUBpAGQAaUBkQGSAaYBpQGRAaYBkgEiAKYBUwBSAKcBUgCTAacBkwGUAagBpwGTAagBlAGVAakBqAGUAakBlQGWAaoBqQGVAaoBlgGXAasBqgGWAasBlwGYAawBqwGXAawBmAGZAa0BrAGYAa0BmQGaAa4BrQGZAa4BmgGbAa8BrgGaAa8BmwGcAbABrwGbAbABnAGdAbEBsAGcAbEBnQGeAbIBsQGdAbIBngGfAbMBsgGeAbMBnwGgAbQBswGfAbQBoAGhAbUBtAGgAbUBoQGiAbYBtQGhAbYBogGjAbcBtgGiAbcBowGkAbgBtwGjAbgBpAGlAbkBuAGkAbkBpQGmAboBuQGlAboBIgAhALsBpgEiALsBugGmAbsBVABTALwBUwCnAbwBpwGoAbwBqAGpAb0BvAGoAb0BqQGqAb4BvQGpAb4BqgGrAb8BvgGqAb8BqwGsAcABvwGrAcABrAGtAcEBwAGsAcEBrQGuAcIBwQGtAcIBrgGvAcMBwgGuAcMBrwGwAcQBwwGvAcQBsAGxAcUBxAGwAcUBsQGyAcYBxQGxAcYBsgGzAccBxgGyAccBswG0AcgBxwGzAcgBtAG1AckByAG0AckBtQG2AcoByQG1AcoBtgG3AcsBygG2AcsBtwG4AcwBywG3AcwBuAG5Ac0BzAG4Ac0BuQG6Ac4BzQG5Ac4BIQAgAM8BuwEhAM8BugG7Ac8BzgG6Ac8BVQBUANABVAC8AdABvAG9AdEB0AG8AdEBvQG+AdIB0QG9AdIBvgG/AdMB0gG+AdMBvwHAAdQB0wG/AdQBwAHBAdUB1AHAAdUBwQHCAdYB1QHBAdYBwgHDAdcB1gHCAdcBwwHEAdgB1wHDAdgBxAHFAdkB2AHEAdkBxQHGAdoB2QHFAdoBxgHHAdsB2gHGAdsBxwHIAdwB2wHHAdwByAHJAd0B3AHIAd0ByQHKAd4B3QHJAd4BygHLAd8B3gHKAd8BywHMAeAB3wHLAeABzAHNAeEB4AHMAeEBzQHOAeIB4QHNAeIBzgHPAeMB4gHOAeMBIAAfAOQBzwEgAOQB4wHPAeQBVgBVAOUBVQDQAeUB0AHRAeUB0QHSAeYB5QHRAeYB0gHTAecB5gHSAecB0wHUAegB5wHTAegB1AHVAekB6AHUAekB1QHWAeoB6QHVAeoB1gHXAesB6gHWAesB1wHYAewB6wHXAewB2AHZAe0B7AHYAe0B2QHaAe4B7QHZAe4B2gHbAe8B7gHaAe8B2wHcAfAB7wHbAfAB3AHdAfEB8AHcAfEB3QHeAfIB8QHdAfIB3gHfAfMB8gHeAfMB3wHgAfQB8wHfAfQB4AHhAfUB9AHgAfUB4QHiAfYB9QHhAfYB4gHjAfcB9gHiAfcBHwAeAPgB5AEfAPgB4wHkAfgB9wHjAfgBVwBWAPkBVgDlAfkB5QHmAfoB+QHlAfoB5gHnAfsB+gHmAfsB5wHoAfwB+wHnAfwB6AHpAf0B/AHoAf0B6QHqAf4B/QHpAf4B6gHrAf8B/gHqAf8B6wHsAQAC/wHrAQAC7AHtAQECAALsAQEC7QHuAQICAQLtAQIC7gHvAQMCAgLuAQMC7wHwAQQCAwLvAQQC8AHxAQUCBALwAQUC8QHyAQYCBQLxAQYC8gHzAQcCBgLyAQcC8wH0AQgCBwLzAQgC9AH1AQkCCAL0AQkC9QH2AQoCCQL1AQoC9gH3AQsCCgL2AQsC9wH4AQwCCwL3AQwCHgAdAA0C+AEeAA0CDAL4AQ0CVwD5AQ4C+QH6AQ4C+gH7AQ8CDgL6AQ8C+wH8ARACDwL7ARAC/AH9ARECEAL8AREC/QH+ARICEQL9ARIC/gH/ARMCEgL+ARMC/wEAAhQCEwL/ARQCAAIBAhUCFAIAAhUCAQICAhYCFQIBAhYCAgIDAhcCFgICAhcCAwIEAhgCFwIDAhgCBAIFAhkCGAIEAhkCBQIGAhoCGQIFAhoCBgIHAhsCGgIGAhsCBwIIAhwCGwIHAhwCCAIJAh0CHAIIAh0CCQIKAh4CHQIJAh4CCgILAh8CHgIKAh8CCwIMAiACHwILAiACDAINAiECIAIMAiECDQIdACECWABXACICVwAOAiICDgIPAiMCIgIOAiMCDwIQAiQCIwIPAiQCEAIRAiUCJAIQAiUCEQISAiYCJQIRAiYCEgITAicCJgISAicCEwIUAigCJwITAigCFAIVAikCKAIUAikCFQIWAioCKQIVAioCFgIXAisCKgIWAisCFwIYAiwCKwIXAiwCGAIZAi0CLAIYAi0CGQIaAi4CLQIZAi4CGgIbAi8CLgIaAi8CGwIcAjACLwIbAjACHAIdAjECMAIcAjECHQIeAjICMQIdAjICHgIfAjMCMgIeAjMCHwIgAjQCMwIfAjQCIAIhAjUCNAIgAjUCHQAcADYCIQIdADYCNQIhAjYCWQBYADcCWAAiAjcCIgIjAjcCIwIkAjgCNwIjAjgCJAIlAjkCOAIkAjkCJQImAjoCOQIlAjoCJgInAjsCOgImAjsCJwIoAjwCOwInAjwCKAIpAj0CPAIoAj0CKQIqAj4CPQIpAj4CKgIrAj8CPgIqAj8CKwIsAkACPwIrAkACLAItAkECQAIsAkECLQIuAkICQQItAkICLgIvAkMCQgIuAkMCLwIwAkQCQwIvAkQCMAIxAkUCRAIwAkUCMQIyAkYCRQIxAkYCMgIzAkcCRgIyAkcCMwI0AkgCRwIzAkgCNAI1AkkCSAI0AkkCHAAbAEoCNgIcAEoCNQI2AkoCSQI1AkoCWgBZAEsCWQA3AksCNwI4AkwCSwI3AkwCOAI5Ak0CTAI4Ak0COQI6Ak4CTQI5Ak4COgI7Ak8CTgI6Ak8COwI8AlACTwI7AlACPAI9AlECUAI8AlECPQI+AlICUQI9AlICPgI/AlMCUgI+AlMCPwJAAlQCUwI/AlQCQAJBAlUCVAJAAlUCQQJCAlYCVQJBAlYCQgJDAlcCVgJCAlcCQwJEAlgCVwJDAlgCRAJFAlkCWAJEAlkCRQJGAloCWQJFAloCRgJHAlsCWgJGAlsCRwJIAlwCWwJHAlwCSAJJAl0CXAJIAl0CSQJKAl4CXQJJAl4CGwAaAF8CSgIbAF8CXgJKAl8CWwBaAGACWgBLAmACSwJMAmECYAJLAmECTAJNAmICYQJMAmICTQJOAmMCYgJNAmMCTgJPAmQCYwJOAmQCTwJQAmUCZAJPAmUCUAJRAmYCZQJQAmYCUQJSAmcCZgJRAmcCUgJTAmgCZwJSAmgCUwJUAmkCaAJTAmkCVAJVAmoCaQJUAmoCVQJWAmsCagJVAmsCVgJXAmwCawJWAmwCVwJYAm0CbAJXAm0CWAJZAm4CbQJYAm4CWQJaAm8CbgJZAm8CWgJbAnACbwJaAnACWwJcAnECcAJbAnECXAJdAnICcQJcAnICXQJeAnMCcgJdAnMCXgJfAnQCcwJeAnQCGgAZAHUCXwIaAHUCdAJfAnUCWwBgAnYCYAJhAnYCYQJiAncCdgJhAncCYgJjAngCdwJiAngCYwJkAnkCeAJjAnkCZAJlAnoCeQJkAnoCZQJmAnsCegJlAnsCZgJnAnwCewJmAnwCZwJoAn0CfAJnAn0CaAJpAn4CfQJoAn4CaQJqAn8CfgJpAn8CagJrAoACfwJqAoACawJsAoECgAJrAoECbAJtAoICgQJsAoICbQJuAoMCggJtAoMCbgJvAoQCgwJuAoQCbwJwAoUChAJvAoUCcAJxAoYChQJwAoYCcQJyAocChgJxAocCcgJzAogChwJyAogCcwJ0AokCiAJzAokCdQIZAIoCdAJ1AooCiQJ0AooCXABbAIsCWwB2AosCdgJ3AowCiwJ2AowCdwJ4Ao0CjAJ3Ao0CeAJ5Ao4CjQJ4Ao4CeQJ6Ao8CjgJ5Ao8CegJ7ApACjwJ6ApACewJ8ApECkAJ7ApECfAJ9ApICkQJ8ApICfQJ+ApMCkgJ9ApMCfgJ/ApQCkwJ+ApQCfwKAApUClAJ/ApUCgAKBApYClQKAApYCgQKCApcClgKBApcCggKDApgClwKCApgCgwKEApkCmAKDApkChAKFApoCmQKEApoChQKGApsCmgKFApsChgKHApwCmwKGApwChwKIAp0CnAKHAp0CiAKJAp4CnQKIAp4CiQKKAp8CngKJAp8CGQAYAKACigIZAKACnwKKAqACXQBcAKECXACLAqECXgBdAKECiwKMAqICoQKLAqICjAKNAqMCogKMAqMCjQKOAqQCowKNAqQCjgKPAqUCpAKOAqUCjwKQAqYCpQKPAqYCkAKRAqcCpgKQAqcCkQKSAqgCpwKRAqgCkgKTAqkCqAKSAqkCkwKUAqoCqQKTAqoClAKVAqsCqgKUAqsClQKWAqwCqwKVAqwClgKXAq0CrAKWAq0ClwKYAq4CrQKXAq4CmAKZAq8CrgKYAq8CmQKaArACrwKZArACmgKbArECsAKaArECmwKcArICsQKbArICnAKdArMCsgKcArMCnQKeArQCswKdArQCngKfArUCtAKeArUCnwKgArYCtQKfArYCGAAXALcCoAIYALcCFwAWALcCtgKgArcCXgChArgCoQKiArgCogKjArkCuAKiArkCowKkAroCuQKjAroCpAKlArsCugKkArsCpQKmArwCuwKlArwCpgKnAr0CvAKmAr0CpwKoAr4CvQKnAr4CqAKpAr8CvgKoAr8CqQKqAsACvwKpAsACqgKrAsECwAKqAsECqwKsAsICwQKrAsICrAKtAsMCwgKsAsMCrQKuAsQCwwKtAsQCrgKvAsUCxAKuAsUCrwKwAsYCxQKvAsYCsAKxAscCxgKwAscCsQKyAsgCxwKxAsgCsgKzAskCyAKyAskCswK0AsoCyQKzAsoCtAK1AssCygK0AssCtQK2AswCywK1AswCtgK3As0CzAK2As0CtwIWAM0CXwBeAM4CXgC4As4CuAK5As8CzgK4As8CuQK6AtACzwK5AtACugK7AtEC0AK6AtECuwK8AtIC0QK7AtICvAK9AtMC0gK8AtMCvQK+AtQC0wK9AtQCvgK/AtUC1AK+AtUCvwLAAtYC1QK/AtYCwALBAtcC1gLAAtcCwQLCAtgC1wLBAtgCwgLDAtkC2ALCAtkCwwLEAtoC2QLDAtoCxALFAtsC2gLEAtsCxQLGAtwC2wLFAtwCxgLHAt0C3ALGAt0CxwLIAt4C3QLHAt4CyALJAt8C3gLIAt8CyQLKAuAC3wLJAuACygLLAuEC4ALKAuECywLMAuIC4QLLAuICzALNAuMC4gLMAuMCFgAVAOQCzQIWAOQC4wLNAuQCXwDOAuUCzgLPAuUCzwLQAuYC5QLPAuYC0ALRAucC5gLQAucC0QLSAugC5wLRAugC0gLTAukC6ALSAukC0wLUAuoC6QLTAuoC1ALVAusC6gLUAusC1QLWAuwC6wLVAuwC1gLXAu0C7ALWAu0C1wLYAu4C7QLXAu4C2ALZAu8C7gLYAu8C2QLaAvAC7wLZAvAC2gLbAvEC8ALaAvEC2wLcAvIC8QLbAvIC3ALdAvMC8gLcAvMC3QLeAvQC8wLdAvQC3gLfAvUC9ALeAvUC3wLgAvYC9QLfAvYC4ALhAvcC9gLgAvcC4QLiAvgC9wLhAvgC4gLjAvkC+ALiAvkC5AIVAPoC4wLkAvoC+QLjAvoCYABfAPsCXwDlAvsCYQBgAPsC5QLmAvwC+wLlAvwC5gLnAv0C/ALmAv0C5wLoAv4C/QLnAv4C6ALpAv8C/gLoAv8C6QLqAgAD/wLpAgAD6gLrAgEDAAPqAgED6wLsAgIDAQPrAgID7ALtAgMDAgPsAgMD7QLuAgQDAwPtAgQD7gLvAgUDBAPuAgUD7wLwAgYDBQPvAgYD8ALxAgcDBgPwAgcD8QLyAggDBwPxAggD8gLzAgkDCAPyAgkD8wL0AgoDCQPzAgoD9AL1AgsDCgP0AgsD9QL2AgwDCwP1AgwD9gL3Ag0DDAP2Ag0D9wL4Ag4DDQP3Ag4D+AL5Ag8DDgP4Ag8D+QL6AhADDwP5AhADFQAUABED+gIVABEDFAATABEDEAP6AhEDYQD7AhID+wL8AhID/AL9AhMDEgP8AhMD/QL+AhQDEwP9AhQD/gL/AhUDFAP+AhUD/wIAAxYDFQP/AhYDAAMBAxcDFgMAAxcDAQMCAxgDFwMBAxgDAgMDAxkDGAMCAxkDAwMEAxoDGQMDAxoDBAMFAxsDGgMEAxsDBQMGAxwDGwMFAxwDBgMHAx0DHAMGAx0DBwMIAx4DHQMHAx4DCAMJAx8DHgMIAx8DCQMKAyADHwMJAyADCgMLAyEDIAMKAyEDCwMMAyIDIQMLAyIDDAMNAyMDIgMMAyMDDQMOAyQDIwMNAyQDDgMPAyUDJAMOAyUDDwMQAyYDJQMPAyYDEQMTACcDEAMRAycDJgMQAycDYgBhACgDYQASAygDYwBiACgDEgMTAykDKAMSAykDEwMUAyoDKQMTAyoDFAMVAysDKgMUAysDFQMWAywDKwMVAywDFgMXAy0DLAMWAy0DFwMYAy4DLQMXAy4DGAMZAy8DLgMYAy8DGQMaAzADLwMZAzADGgMbAzEDMAMaAzEDGwMcAzIDMQMbAzIDHAMdAzMDMgMcAzMDHQMeAzQDMwMdAzQDHgMfAzUDNAMeAzUDHwMgAzYDNQMfAzYDIAMhAzcDNgMgAzcDIQMiAzgDNwMhAzgDIgMjAzkDOAMiAzkDIwMkAzoDOQMjAzoDJAMlAzsDOgMkAzsDJQMmAzwDOwMlAzwDJgMnAz0DPAMmAz0DEwASAD4DJwMTAD4DEgARAD4DPQMnAz4DYwAoAz8DKAMpAz8DKQMqA0ADPwMpA0ADKgMrA0EDQAMqA0EDKwMsA0IDQQMrA0IDLAMtA0MDQgMsA0MDLQMuA0QDQwMtA0QDLgMvA0UDRAMuA0UDLwMwA0YDRQMvA0YDMAMxA0cDRgMwA0cDMQMyA0gDRwMxA0gDMgMzA0kDSAMyA0kDMwM0A0oDSQMzA0oDNAM1A0sDSgM0A0sDNQM2A0wDSwM1A0wDNgM3A00DTAM2A00DNwM4A04DTQM3A04DOAM5A08DTgM4A08DOQM6A1ADTwM5A1ADOgM7A1EDUAM6A1EDOwM8A1IDUQM7A1IDPAM9A1MDUgM8A1MDPgMRAFQDPQM+A1QDUwM9A1QDZABjAFUDYwA/A1UDPwNAA1YDVQM/A1YDQANBA1cDVgNAA1cDQQNCA1gDVwNBA1gDQgNDA1kDWANCA1kDQwNEA1oDWQNDA1oDRANFA1sDWgNEA1sDRQNGA1wDWwNFA1wDRgNHA10DXANGA10DRwNIA14DXQNHA14DSANJA18DXgNIA18DSQNKA2ADXwNJA2ADSgNLA2EDYANKA2EDSwNMA2IDYQNLA2IDTANNA2MDYgNMA2MDTQNOA2QDYwNNA2QDTgNPA2UDZANOA2UDTwNQA2YDZQNPA2YDUANRA2cDZgNQA2cDUQNSA2gDZwNRA2gDUgNTA2kDaANSA2kDUwNUA2oDaQNTA2oDEQAQAGsDVAMRAGsDagNUA2sDZQBkAGwDZABVA2wDZgBlAGwDZwBmAGwDVQNWA2wDVgNXA20DbANWA20DZwBsA20DVwNYA24DbQNXA24DWANZA28DbgNYA28DWQNaA3ADbwNZA3ADWgNbA3EDcANaA3EDWwNcA3IDcQNbA3IDXANdA3MDcgNcA3MDXQNeA3QDcwNdA3QDXgNfA3UDdANeA3UDXwNgA3YDdQNfA3YDYANhA3cDdgNgA3cDYQNiA3gDdwNhA3gDYgNjA3kDeANiA3kDYwNkA3oDeQNjA3oDZANlA3sDegNkA3sDZQNmA3wDewNlA3wDZgNnA30DfANmA30DZwNoA34DfQNnA34DaANpA38DfgNoA38DaQNqA4ADfwNpA4ADDgANAIEDDQCAA4EDagNrA4EDgANqA4EDDwAOAIIDDgCBA4IDEAAPAIIDawMQAIIDgQNrA4IDaABnAIMDZwBtA4MDaQBoAIMDbQNuA4MDbgNvA4QDgwNuA4QDaQCDA4QDbwNwA4UDhANvA4UDcANxA4YDhQNwA4YDcQNyA4cDhgNxA4cDcgNzA4gDhwNyA4gDcwN0A4kDiANzA4kDdAN1A4oDiQN0A4oDdQN2A4sDigN1A4sDdgN3A4wDiwN2A4wDdwN4A40DjAN3A40DeAN5A44DjQN4A44DeQN6A48DjgN5A48DegN7A5ADjwN6A5ADewN8A5EDkAN7A5EDfAN9A5IDkQN8A5IDfQN+A5MDkgN9A5MDfgN/A5QDkwN+A5QDDQAMAJUDgAMNAJUDfwOAA5UDDAALAJUDCwCUA5UDlAN/A5UDagBpAJYDaQCEA5YDhAOFA5YDawBqAJcDagCWA5cDhQOGA5cDlgOFA5cDbABrAJgDawCXA5gDhgOHA5gDlwOGA5gDhwOIA5kDmAOHA5kDiAOJA5oDmQOIA5oDiQOKA5sDmgOJA5sDcwByAJwDcgCbA5wDigOLA5wDmwOKA5wDAABzAJ0DcwCcA50DiwOMA50DnAOLA50DAQAAAJ4DAACdA54DjAONA54DnQOMA54DAgABAJ8DAQCeA58DjQOOA58DngONA58DAgCfA6ADjgOPA6ADnwOOA6ADjwOQA6EDoAOPA6EDkAORA6IDoQOQA6IDCQAIAKMDkQOSA6MDogORA6MDCgAJAKQDkgOTA6QDowOSA6QDCQCjA6QDCwAKAKUDlAMLAKUDkwOUA6UDCgCkA6UDpAOTA6UDbQBsAKYDbACYA6YDmAOZA6YDbwBtAKcDbQCmA6cDcABvAKcDmQOaA6cDpgOZA6cDcgBxAKgDmwNyAKgDmgObA6gDcQBwAKgDcACnA6gDpwOaA6gDAwACAKkDAgCgA6kDBAADAKkDoAOhA6kDBQAEAKoDBwAFAKoDoQOiA6oDqQOhA6oDBACpA6oDCAAHAKsDogOjA6sDowMIAKsDBwCqA6sDqgOiA6sD\",\"ao\":\"///////////////+/fnv6vD6/v7//v7+/fv48ujZycPI1+v3/P7////////////////+/v7+/v7///////7+/v7+/v////////7+/////v789+vTwLrE2er0+fz+/v7+//7+/fn39/v9/v////////////////7+/v7+/////////v7+/v7//////v7+/v7+///////+/v7+/v7////+/v7+/v7+//////7+/v7+/v/////+/v7+/v7+//////7+/v7+/v////7+/v7+/v7//////v7+/v7+//////7+/v7+/v///////v7+/v7+//////7+/v7+/v///////v7+/v7//////v7+/v7+///////+/v7+/v7//////v7+/v7////////+/v7+/v/////+/v7+/v/////////+/v7+/////v7+/v7+///////////+/v7+///+/v7+/v7////////////+/v7+/v78/f7+/v7///////////7+/v79/Pf5/P3+/v////////////7+/fz59+/1+v3+/v///////////v79+/Xv3+by+f3+/////////////v368+nh0OPy+f3+///////////+/frz59bA0+fz+v3+//////////79+vTq2cnI3ez1+/7///////////779e3gzs/a5u/2/P7//////////vz27+fc0t7k6fD4/f///////////fjw6eTe5ufm6vL6/v/////////++/Pp5eXk7ejm7Pb8///////////99uzl5uv17Ofo8fr+//////////768ejm6/P58+vo7fb8///////////99+7o6vH4+PHs7fP6/v/////////++/Tt6/D3+/bw7vH4/f///////////fjy7vD1+/369fHx9vv+//////////789vHx9Pr9/fn08vT5/f///////////fr18vT4/P78+PX1+Pz+//////////78+PX09/v+/fv49vf7/v///////////vv39vf7/f79+/j4+v3////////////9+vj4+v3+/v37+vr8/v///////////v36+fv9/v7+/fz7/P7////////////+/Pv7/f7+/f39/f3+//////////////79/f39/Pv8/f7+/v///////////////v7+/fv2+fz+/v7////////////////+/v789u79/v////////////////////79/////////////////////////////w==\"},\n    sleeves: [{\"rings\":12,\"around\":28,\"pos\":\"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\",\"hang\":\"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\",\"uv\":\"AAAAAHsJAAD2EgAAchwAAO0lAABoLwAA4zgAAF9CAADaSwAAVVUAANBeAABLaAAAx3EAAEJ7AAC9hAAAOI4AALSXAAAvoQAAqqoAACW0AACgvQAAHMcAAJfQAAAS2gAAjeMAAAntAACE9gAA//8AAAAAVRV7CVUV9hJVFXIcVRXtJVUVaC9VFeM4VRVfQlUV2ktVFVVVVRXQXlUVS2hVFcdxVRVCe1UVvYRVFTiOVRW0l1UVL6FVFaqqVRUltFUVoL1VFRzHVRWX0FUVEtpVFY3jVRUJ7VUVhPZVFf//VRUAAKsqewmrKvYSqypyHKsq7SWrKmgvqyrjOKsqX0KrKtpLqypVVasq0F6rKktoqyrHcasqQnurKr2Eqyo4jqsqtJerKi+hqyqqqqsqJbSrKqC9qyocx6sql9CrKhLaqyqN46sqCe2rKoT2qyr//6sqAAAAQHsJAED2EgBAchwAQO0lAEBoLwBA4zgAQF9CAEDaSwBAVVUAQNBeAEBLaABAx3EAQEJ7AEC9hABAOI4AQLSXAEAvoQBAqqoAQCW0AECgvQBAHMcAQJfQAEAS2gBAjeMAQAntAECE9gBA//8AQAAAVVV7CVVV9hJVVXIcVVXtJVVVaC9VVeM4VVVfQlVV2ktVVVVVVVXQXlVVS2hVVcdxVVVCe1VVvYRVVTiOVVW0l1VVL6FVVaqqVVUltFVVoL1VVRzHVVWX0FVVEtpVVY3jVVUJ7VVVhPZVVf//VVUAAKpqewmqavYSqmpyHKpq7SWqamgvqmrjOKpqX0KqatpLqmpVVapq0F6qaktoqmrHcapqQnuqar2Eqmo4jqpqtJeqai+hqmqqqqpqJbSqaqC9qmocx6pql9CqahLaqmqN46pqCe2qaoT2qmr//6pqAAAAgHsJAID2EgCAchwAgO0lAIBoLwCA4zgAgF9CAIDaSwCAVVUAgNBeAIBLaACAx3EAgEJ7AIC9hACAOI4AgLSXAIAvoQCAqqoAgCW0AICgvQCAHMcAgJfQAIAS2gCAjeMAgAntAICE9gCA//8AgAAAVZV7CVWV9hJVlXIcVZXtJVWVaC9VleM4VZVfQlWV2ktVlVVVVZXQXlWVS2hVlcdxVZVCe1WVvYRVlTiOVZW0l1WVL6FVlaqqVZUltFWVoL1VlRzHVZWX0FWVEtpVlY3jVZUJ7VWVhPZVlf//VZUAAKqqewmqqvYSqqpyHKqq7SWqqmgvqqrjOKqqX0KqqtpLqqpVVaqq0F6qqktoqqrHcaqqQnuqqr2Eqqo4jqqqtJeqqi+hqqqqqqqqJbSqqqC9qqocx6qql9CqqhLaqqqN46qqCe2qqoT2qqr//6qqAAD/v3sJ/7/2Ev+/chz/v+0l/79oL/+/4zj/v19C/7/aS/+/VVX/v9Be/79LaP+/x3H/v0J7/7+9hP+/OI7/v7SX/78vof+/qqr/vyW0/7+gvf+/HMf/v5fQ/78S2v+/jeP/vwnt/7+E9v+/////vwAAVdV7CVXV9hJV1XIcVdXtJVXVaC9V1eM4VdVfQlXV2ktV1VVVVdXQXlXVS2hV1cdxVdVCe1XVvYRV1TiOVdW0l1XVL6FV1aqqVdUltFXVoL1V1RzHVdWX0FXVEtpV1Y3jVdUJ7VXVhPZV1f//VdUAAKrqewmq6vYSqupyHKrq7SWq6mgvqurjOKrqX0Kq6tpLqupVVarq0F6q6ktoqurHcarqQnuq6r2Equo4jqrqtJeq6i+hquqqqqrqJbSq6qC9quocx6rql9Cq6hLaquqN46rqCe2q6oT2qur//6rqAAD//3sJ///2Ev//chz//+0l//9oL///4zj//19C///aS///VVX//9Be//9LaP//x3H//0J7//+9hP//OI7//7SX//8vof//qqr//yW0//+gvf//HMf//5fQ//8S2v//jeP//wnt//+E9v///////w==\",\"tri\":\"AAABABwAAQAdABwAAQACAB0AAgAeAB0AAgADAB4AAwAfAB4AAwAEAB8ABAAgAB8ABAAFACAABQAhACAABQAGACEABgAiACEABgAHACIABwAjACIABwAIACMACAAkACMACAAJACQACQAlACQACQAKACUACgAmACUACgALACYACwAnACYACwAMACcADAAoACcADAANACgADQApACgADQAOACkADgAqACkADgAPACoADwArACoADwAQACsAEAAsACsAEAARACwAEQAtACwAEQASAC0AEgAuAC0AEgATAC4AEwAvAC4AEwAUAC8AFAAwAC8AFAAVADAAFQAxADAAFQAWADEAFgAyADEAFgAXADIAFwAzADIAFwAYADMAGAA0ADMAGAAZADQAGQA1ADQAGQAaADUAGgA2ADUAGgAbADYAGwA3ADYAGwAAADcAAAAcADcAHAAdADgAHQA5ADgAHQAeADkAHgA6ADkAHgAfADoAHwA7ADoAHwAgADsAIAA8ADsAIAAhADwAIQA9ADwAIQAiAD0AIgA+AD0AIgAjAD4AIwA/AD4AIwAkAD8AJABAAD8AJAAlAEAAJQBBAEAAJQAmAEEAJgBCAEEAJgAnAEIAJwBDAEIAJwAoAEMAKABEAEMAKAApAEQAKQBFAEQAKQAqAEUAKgBGAEUAKgArAEYAKwBHAEYAKwAsAEcALABIAEcALAAtAEgALQBJAEgALQAuAEkALgBKAEkALgAvAEoALwBLAEoALwAwAEsAMABMAEsAMAAxAEwAMQBNAEwAMQAyAE0AMgBOAE0AMgAzAE4AMwBPAE4AMwA0AE8ANABQAE8ANAA1AFAANQBRAFAANQA2AFEANgBSAFEANgA3AFIANwBTAFIANwAcAFMAHAA4AFMAOAA5AFQAOQBVAFQAOQA6AFUAOgBWAFUAOgA7AFYAOwBXAFYAOwA8AFcAPABYAFcAPAA9AFgAPQBZAFgAPQA+AFkAPgBaAFkAPgA/AFoAPwBbAFoAPwBAAFsAQABcAFsAQABBAFwAQQBdAFwAQQBCAF0AQgBeAF0AQgBDAF4AQwBfAF4AQwBEAF8ARABgAF8ARABFAGAARQBhAGAARQBGAGEARgBiAGEARgBHAGIARwBjAGIARwBIAGMASABkAGMASABJAGQASQBlAGQASQBKAGUASgBmAGUASgBLAGYASwBnAGYASwBMAGcATABoAGcATABNAGgATQBpAGgATQBOAGkATgBqAGkATgBPAGoATwBrAGoATwBQAGsAUABsAGsAUABRAGwAUQBtAGwAUQBSAG0AUgBuAG0AUgBTAG4AUwBvAG4AUwA4AG8AOABUAG8AVABVAHAAVQBxAHAAVQBWAHEAVgByAHEAVgBXAHIAVwBzAHIAVwBYAHMAWAB0AHMAWABZAHQAWQB1AHQAWQBaAHUAWgB2AHUAWgBbAHYAWwB3AHYAWwBcAHcAXAB4AHcAXABdAHgAXQB5AHgAXQBeAHkAXgB6AHkAXgBfAHoAXwB7AHoAXwBgAHsAYAB8AHsAYABhAHwAYQB9AHwAYQBiAH0AYgB+AH0AYgBjAH4AYwB/AH4AYwBkAH8AZACAAH8AZABlAIAAZQCBAIAAZQBmAIEAZgCCAIEAZgBnAIIAZwCDAIIAZwBoAIMAaACEAIMAaABpAIQAaQCFAIQAaQBqAIUAagCGAIUAagBrAIYAawCHAIYAawBsAIcAbACIAIcAbABtAIgAbQCJAIgAbQBuAIkAbgCKAIkAbgBvAIoAbwCLAIoAbwBUAIsAVABwAIsAcABxAIwAcQCNAIwAcQByAI0AcgCOAI0AcgBzAI4AcwCPAI4AcwB0AI8AdACQAI8AdAB1AJAAdQCRAJAAdQB2AJEAdgCSAJEAdgB3AJIAdwCTAJIAdwB4AJMAeACUAJMAeAB5AJQAeQCVAJQAeQB6AJUAegCWAJUAegB7AJYAewCXAJYAewB8AJcAfACYAJcAfAB9AJgAfQCZAJgAfQB+AJkAfgCaAJkAfgB/AJoAfwCbAJoAfwCAAJsAgACcAJsAgACBAJwAgQCdAJwAgQCCAJ0AggCeAJ0AggCDAJ4AgwCfAJ4AgwCEAJ8AhACgAJ8AhACFAKAAhQChAKAAhQCGAKEAhgCiAKEAhgCHAKIAhwCjAKIAhwCIAKMAiACkAKMAiACJAKQAiQClAKQAiQCKAKUAigCmAKUAigCLAKYAiwCnAKYAiwBwAKcAcACMAKcAjACNAKgAjQCpAKgAjQCOAKkAjgCqAKkAjgCPAKoAjwCrAKoAjwCQAKsAkACsAKsAkACRAKwAkQCtAKwAkQCSAK0AkgCuAK0AkgCTAK4AkwCvAK4AkwCUAK8AlACwAK8AlACVALAAlQCxALAAlQCWALEAlgCyALEAlgCXALIAlwCzALIAlwCYALMAmAC0ALMAmACZALQAmQC1ALQAmQCaALUAmgC2ALUAmgCbALYAmwC3ALYAmwCcALcAnAC4ALcAnACdALgAnQC5ALgAnQCeALkAngC6ALkAngCfALoAnwC7ALoAnwCgALsAoAC8ALsAoAChALwAoQC9ALwAoQCiAL0AogC+AL0AogCjAL4AowC/AL4AowCkAL8ApADAAL8ApAClAMAApQDBAMAApQCmAMEApgDCAMEApgCnAMIApwDDAMIApwCMAMMAjACoAMMAqACpAMQAqQDFAMQAqQCqAMUAqgDGAMUAqgCrAMYAqwDHAMYAqwCsAMcArADIAMcArACtAMgArQDJAMgArQCuAMkArgDKAMkArgCvAMoArwDLAMoArwCwAMsAsADMAMsAsACxAMwAsQDNAMwAsQCyAM0AsgDOAM0AsgCzAM4AswDPAM4AswC0AM8AtADQAM8AtAC1ANAAtQDRANAAtQC2ANEAtgDSANEAtgC3ANIAtwDTANIAtwC4ANMAuADUANMAuAC5ANQAuQDVANQAuQC6ANUAugDWANUAugC7ANYAuwDXANYAuwC8ANcAvADYANcAvAC9ANgAvQDZANgAvQC+ANkAvgDaANkAvgC/ANoAvwDbANoAvwDAANsAwADcANsAwADBANwAwQDdANwAwQDCAN0AwgDeAN0AwgDDAN4AwwDfAN4AwwCoAN8AqADEAN8AxADFAOAAxQDhAOAAxQDGAOEAxgDiAOEAxgDHAOIAxwDjAOIAxwDIAOMAyADkAOMAyADJAOQAyQDlAOQAyQDKAOUAygDmAOUAygDLAOYAywDnAOYAywDMAOcAzADoAOcAzADNAOgAzQDpAOgAzQDOAOkAzgDqAOkAzgDPAOoAzwDrAOoAzwDQAOsA0ADsAOsA0ADRAOwA0QDtAOwA0QDSAO0A0gDuAO0A0gDTAO4A0wDvAO4A0wDUAO8A1ADwAO8A1ADVAPAA1QDxAPAA1QDWAPEA1gDyAPEA1gDXAPIA1wDzAPIA1wDYAPMA2AD0APMA2ADZAPQA2QD1APQA2QDaAPUA2gD2APUA2gDbAPYA2wD3APYA2wDcAPcA3AD4APcA3ADdAPgA3QD5APgA3QDeAPkA3gD6APkA3gDfAPoA3wD7APoA3wDEAPsAxADgAPsA4ADhAPwA4QD9APwA4QDiAP0A4gD+AP0A4gDjAP4A4wD/AP4A4wDkAP8A5AAAAf8A5ADlAAAB5QABAQAB5QDmAAEB5gACAQEB5gDnAAIB5wADAQIB5wDoAAMB6AAEAQMB6ADpAAQB6QAFAQQB6QDqAAUB6gAGAQUB6gDrAAYB6wAHAQYB6wDsAAcB7AAIAQcB7ADtAAgB7QAJAQgB7QDuAAkB7gAKAQkB7gDvAAoB7wALAQoB7wDwAAsB8AAMAQsB8ADxAAwB8QANAQwB8QDyAA0B8gAOAQ0B8gDzAA4B8wAPAQ4B8wD0AA8B9AAQAQ8B9AD1ABAB9QARARAB9QD2ABEB9gASAREB9gD3ABIB9wATARIB9wD4ABMB+AAUARMB+AD5ABQB+QAVARQB+QD6ABUB+gAWARUB+gD7ABYB+wAXARYB+wDgABcB4AD8ABcB/AD9ABgB/QAZARgB/QD+ABkB/gAaARkB/gD/ABoB/wAbARoB/wAAARsBAAEcARsBAAEBARwBAQEdARwBAQECAR0BAgEeAR0BAgEDAR4BAwEfAR4BAwEEAR8BBAEgAR8BBAEFASABBQEhASABBQEGASEBBgEiASEBBgEHASIBBwEjASIBBwEIASMBCAEkASMBCAEJASQBCQElASQBCQEKASUBCgEmASUBCgELASYBCwEnASYBCwEMAScBDAEoAScBDAENASgBDQEpASgBDQEOASkBDgEqASkBDgEPASoBDwErASoBDwEQASsBEAEsASsBEAERASwBEQEtASwBEQESAS0BEgEuAS0BEgETAS4BEwEvAS4BEwEUAS8BFAEwAS8BFAEVATABFQExATABFQEWATEBFgEyATEBFgEXATIBFwEzATIBFwH8ADMB/AAYATMBGAEZATQBGQE1ATQBGQEaATUBGgE2ATUBGgEbATYBGwE3ATYBGwEcATcBHAE4ATcBHAEdATgBHQE5ATgBHQEeATkBHgE6ATkBHgEfAToBHwE7AToBHwEgATsBIAE8ATsBIAEhATwBIQE9ATwBIQEiAT0BIgE+AT0BIgEjAT4BIwE/AT4BIwEkAT8BJAFAAT8BJAElAUABJQFBAUABJQEmAUEBJgFCAUEBJgEnAUIBJwFDAUIBJwEoAUMBKAFEAUMBKAEpAUQBKQFFAUQBKQEqAUUBKgFGAUUBKgErAUYBKwFHAUYBKwEsAUcBLAFIAUcBLAEtAUgBLQFJAUgBLQEuAUkBLgFKAUkBLgEvAUoBLwFLAUoBLwEwAUsBMAFMAUsBMAExAUwBMQFNAUwBMQEyAU0BMgFOAU0BMgEzAU4BMwFPAU4BMwEYAU8BGAE0AU8BNAE1AVABNQFRAVABNQE2AVEBNgFSAVEBNgE3AVIBNwFTAVIBNwE4AVMBOAFUAVMBOAE5AVQBOQFVAVQBOQE6AVUBOgFWAVUBOgE7AVYBOwFXAVYBOwE8AVcBPAFYAVcBPAE9AVgBPQFZAVgBPQE+AVkBPgFaAVkBPgE/AVoBPwFbAVoBPwFAAVsBQAFcAVsBQAFBAVwBQQFdAVwBQQFCAV0BQgFeAV0BQgFDAV4BQwFfAV4BQwFEAV8BRAFgAV8BRAFFAWABRQFhAWABRQFGAWEBRgFiAWEBRgFHAWIBRwFjAWIBRwFIAWMBSAFkAWMBSAFJAWQBSQFlAWQBSQFKAWUBSgFmAWUBSgFLAWYBSwFnAWYBSwFMAWcBTAFoAWcBTAFNAWgBTQFpAWgBTQFOAWkBTgFqAWkBTgFPAWoBTwFrAWoBTwE0AWsBNAFQAWsB\",\"ao\":\"8/n9/v38+vj18u3k2tXc6fP4/P3+/v7+/fr28fT6/v79+/r39PDp39bV4Oz0+fz+/v7+/vz59PH1+/7+/fz69/Pu5drS1ODs8/j8/v7//v78+PPx9/z+/v38+vfz7OLWztPg6vH3+/7////+/Pn08/r9//7+/fv48+zg08zS3ujv9vv+/////v369vb9/v///v78+fTs4NLM0t3l7fX7/v/////+/Pr6/v/////+/fr17eHTzdLb4+v1+/7//////v39/f///////v379u7i1M3R2uHr9fz+///////+/v/////////+/Pfw49TN0dnh6/X8/v///////////////////vz48OPVzdHZ4ez2/P7///////////////////79+fHk1c3R2eLt9/3+///////////////////+/fnw4tPM0tvk7/n9/////////////////////vz37NzOzdXe6PP7/v///////////w==\"},{\"rings\":12,\"around\":28,\"pos\":\"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\",\"hang\":\"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\",\"uv\":\"AAAAAHsJAAD2EgAAchwAAO0lAABoLwAA4zgAAF9CAADaSwAAVVUAANBeAABLaAAAx3EAAEJ7AAC9hAAAOI4AALSXAAAvoQAAqqoAACW0AACgvQAAHMcAAJfQAAAS2gAAjeMAAAntAACE9gAA//8AAAAAVRV7CVUV9hJVFXIcVRXtJVUVaC9VFeM4VRVfQlUV2ktVFVVVVRXQXlUVS2hVFcdxVRVCe1UVvYRVFTiOVRW0l1UVL6FVFaqqVRUltFUVoL1VFRzHVRWX0FUVEtpVFY3jVRUJ7VUVhPZVFf//VRUAAKsqewmrKvYSqypyHKsq7SWrKmgvqyrjOKsqX0KrKtpLqypVVasq0F6rKktoqyrHcasqQnurKr2Eqyo4jqsqtJerKi+hqyqqqqsqJbSrKqC9qyocx6sql9CrKhLaqyqN46sqCe2rKoT2qyr//6sqAAAAQHsJAED2EgBAchwAQO0lAEBoLwBA4zgAQF9CAEDaSwBAVVUAQNBeAEBLaABAx3EAQEJ7AEC9hABAOI4AQLSXAEAvoQBAqqoAQCW0AECgvQBAHMcAQJfQAEAS2gBAjeMAQAntAECE9gBA//8AQAAAVVV7CVVV9hJVVXIcVVXtJVVVaC9VVeM4VVVfQlVV2ktVVVVVVVXQXlVVS2hVVcdxVVVCe1VVvYRVVTiOVVW0l1VVL6FVVaqqVVUltFVVoL1VVRzHVVWX0FVVEtpVVY3jVVUJ7VVVhPZVVf//VVUAAKpqewmqavYSqmpyHKpq7SWqamgvqmrjOKpqX0KqatpLqmpVVapq0F6qaktoqmrHcapqQnuqar2Eqmo4jqpqtJeqai+hqmqqqqpqJbSqaqC9qmocx6pql9CqahLaqmqN46pqCe2qaoT2qmr//6pqAAAAgHsJAID2EgCAchwAgO0lAIBoLwCA4zgAgF9CAIDaSwCAVVUAgNBeAIBLaACAx3EAgEJ7AIC9hACAOI4AgLSXAIAvoQCAqqoAgCW0AICgvQCAHMcAgJfQAIAS2gCAjeMAgAntAICE9gCA//8AgAAAVZV7CVWV9hJVlXIcVZXtJVWVaC9VleM4VZVfQlWV2ktVlVVVVZXQXlWVS2hVlcdxVZVCe1WVvYRVlTiOVZW0l1WVL6FVlaqqVZUltFWVoL1VlRzHVZWX0FWVEtpVlY3jVZUJ7VWVhPZVlf//VZUAAKqqewmqqvYSqqpyHKqq7SWqqmgvqqrjOKqqX0KqqtpLqqpVVaqq0F6qqktoqqrHcaqqQnuqqr2Eqqo4jqqqtJeqqi+hqqqqqqqqJbSqqqC9qqocx6qql9CqqhLaqqqN46qqCe2qqoT2qqr//6qqAAD/v3sJ/7/2Ev+/chz/v+0l/79oL/+/4zj/v19C/7/aS/+/VVX/v9Be/79LaP+/x3H/v0J7/7+9hP+/OI7/v7SX/78vof+/qqr/vyW0/7+gvf+/HMf/v5fQ/78S2v+/jeP/vwnt/7+E9v+/////vwAAVdV7CVXV9hJV1XIcVdXtJVXVaC9V1eM4VdVfQlXV2ktV1VVVVdXQXlXVS2hV1cdxVdVCe1XVvYRV1TiOVdW0l1XVL6FV1aqqVdUltFXVoL1V1RzHVdWX0FXVEtpV1Y3jVdUJ7VXVhPZV1f//VdUAAKrqewmq6vYSqupyHKrq7SWq6mgvqurjOKrqX0Kq6tpLqupVVarq0F6q6ktoqurHcarqQnuq6r2Equo4jqrqtJeq6i+hquqqqqrqJbSq6qC9quocx6rql9Cq6hLaquqN46rqCe2q6oT2qur//6rqAAD//3sJ///2Ev//chz//+0l//9oL///4zj//19C///aS///VVX//9Be//9LaP//x3H//0J7//+9hP//OI7//7SX//8vof//qqr//yW0//+gvf//HMf//5fQ//8S2v//jeP//wnt//+E9v///////w==\",\"tri\":\"AAAcAAEAAQAcAB0AAQAdAAIAAgAdAB4AAgAeAAMAAwAeAB8AAwAfAAQABAAfACAABAAgAAUABQAgACEABQAhAAYABgAhACIABgAiAAcABwAiACMABwAjAAgACAAjACQACAAkAAkACQAkACUACQAlAAoACgAlACYACgAmAAsACwAmACcACwAnAAwADAAnACgADAAoAA0ADQAoACkADQApAA4ADgApACoADgAqAA8ADwAqACsADwArABAAEAArACwAEAAsABEAEQAsAC0AEQAtABIAEgAtAC4AEgAuABMAEwAuAC8AEwAvABQAFAAvADAAFAAwABUAFQAwADEAFQAxABYAFgAxADIAFgAyABcAFwAyADMAFwAzABgAGAAzADQAGAA0ABkAGQA0ADUAGQA1ABoAGgA1ADYAGgA2ABsAGwA2ADcAGwA3AAAAAAA3ABwAHAA4AB0AHQA4ADkAHQA5AB4AHgA5ADoAHgA6AB8AHwA6ADsAHwA7ACAAIAA7ADwAIAA8ACEAIQA8AD0AIQA9ACIAIgA9AD4AIgA+ACMAIwA+AD8AIwA/ACQAJAA/AEAAJABAACUAJQBAAEEAJQBBACYAJgBBAEIAJgBCACcAJwBCAEMAJwBDACgAKABDAEQAKABEACkAKQBEAEUAKQBFACoAKgBFAEYAKgBGACsAKwBGAEcAKwBHACwALABHAEgALABIAC0ALQBIAEkALQBJAC4ALgBJAEoALgBKAC8ALwBKAEsALwBLADAAMABLAEwAMABMADEAMQBMAE0AMQBNADIAMgBNAE4AMgBOADMAMwBOAE8AMwBPADQANABPAFAANABQADUANQBQAFEANQBRADYANgBRAFIANgBSADcANwBSAFMANwBTABwAHABTADgAOABUADkAOQBUAFUAOQBVADoAOgBVAFYAOgBWADsAOwBWAFcAOwBXADwAPABXAFgAPABYAD0APQBYAFkAPQBZAD4APgBZAFoAPgBaAD8APwBaAFsAPwBbAEAAQABbAFwAQABcAEEAQQBcAF0AQQBdAEIAQgBdAF4AQgBeAEMAQwBeAF8AQwBfAEQARABfAGAARABgAEUARQBgAGEARQBhAEYARgBhAGIARgBiAEcARwBiAGMARwBjAEgASABjAGQASABkAEkASQBkAGUASQBlAEoASgBlAGYASgBmAEsASwBmAGcASwBnAEwATABnAGgATABoAE0ATQBoAGkATQBpAE4ATgBpAGoATgBqAE8ATwBqAGsATwBrAFAAUABrAGwAUABsAFEAUQBsAG0AUQBtAFIAUgBtAG4AUgBuAFMAUwBuAG8AUwBvADgAOABvAFQAVABwAFUAVQBwAHEAVQBxAFYAVgBxAHIAVgByAFcAVwByAHMAVwBzAFgAWABzAHQAWAB0AFkAWQB0AHUAWQB1AFoAWgB1AHYAWgB2AFsAWwB2AHcAWwB3AFwAXAB3AHgAXAB4AF0AXQB4AHkAXQB5AF4AXgB5AHoAXgB6AF8AXwB6AHsAXwB7AGAAYAB7AHwAYAB8AGEAYQB8AH0AYQB9AGIAYgB9AH4AYgB+AGMAYwB+AH8AYwB/AGQAZAB/AIAAZACAAGUAZQCAAIEAZQCBAGYAZgCBAIIAZgCCAGcAZwCCAIMAZwCDAGgAaACDAIQAaACEAGkAaQCEAIUAaQCFAGoAagCFAIYAagCGAGsAawCGAIcAawCHAGwAbACHAIgAbACIAG0AbQCIAIkAbQCJAG4AbgCJAIoAbgCKAG8AbwCKAIsAbwCLAFQAVACLAHAAcACMAHEAcQCMAI0AcQCNAHIAcgCNAI4AcgCOAHMAcwCOAI8AcwCPAHQAdACPAJAAdACQAHUAdQCQAJEAdQCRAHYAdgCRAJIAdgCSAHcAdwCSAJMAdwCTAHgAeACTAJQAeACUAHkAeQCUAJUAeQCVAHoAegCVAJYAegCWAHsAewCWAJcAewCXAHwAfACXAJgAfACYAH0AfQCYAJkAfQCZAH4AfgCZAJoAfgCaAH8AfwCaAJsAfwCbAIAAgACbAJwAgACcAIEAgQCcAJ0AgQCdAIIAggCdAJ4AggCeAIMAgwCeAJ8AgwCfAIQAhACfAKAAhACgAIUAhQCgAKEAhQChAIYAhgChAKIAhgCiAIcAhwCiAKMAhwCjAIgAiACjAKQAiACkAIkAiQCkAKUAiQClAIoAigClAKYAigCmAIsAiwCmAKcAiwCnAHAAcACnAIwAjACoAI0AjQCoAKkAjQCpAI4AjgCpAKoAjgCqAI8AjwCqAKsAjwCrAJAAkACrAKwAkACsAJEAkQCsAK0AkQCtAJIAkgCtAK4AkgCuAJMAkwCuAK8AkwCvAJQAlACvALAAlACwAJUAlQCwALEAlQCxAJYAlgCxALIAlgCyAJcAlwCyALMAlwCzAJgAmACzALQAmAC0AJkAmQC0ALUAmQC1AJoAmgC1ALYAmgC2AJsAmwC2ALcAmwC3AJwAnAC3ALgAnAC4AJ0AnQC4ALkAnQC5AJ4AngC5ALoAngC6AJ8AnwC6ALsAnwC7AKAAoAC7ALwAoAC8AKEAoQC8AL0AoQC9AKIAogC9AL4AogC+AKMAowC+AL8AowC/AKQApAC/AMAApADAAKUApQDAAMEApQDBAKYApgDBAMIApgDCAKcApwDCAMMApwDDAIwAjADDAKgAqADEAKkAqQDEAMUAqQDFAKoAqgDFAMYAqgDGAKsAqwDGAMcAqwDHAKwArADHAMgArADIAK0ArQDIAMkArQDJAK4ArgDJAMoArgDKAK8ArwDKAMsArwDLALAAsADLAMwAsADMALEAsQDMAM0AsQDNALIAsgDNAM4AsgDOALMAswDOAM8AswDPALQAtADPANAAtADQALUAtQDQANEAtQDRALYAtgDRANIAtgDSALcAtwDSANMAtwDTALgAuADTANQAuADUALkAuQDUANUAuQDVALoAugDVANYAugDWALsAuwDWANcAuwDXALwAvADXANgAvADYAL0AvQDYANkAvQDZAL4AvgDZANoAvgDaAL8AvwDaANsAvwDbAMAAwADbANwAwADcAMEAwQDcAN0AwQDdAMIAwgDdAN4AwgDeAMMAwwDeAN8AwwDfAKgAqADfAMQAxADgAMUAxQDgAOEAxQDhAMYAxgDhAOIAxgDiAMcAxwDiAOMAxwDjAMgAyADjAOQAyADkAMkAyQDkAOUAyQDlAMoAygDlAOYAygDmAMsAywDmAOcAywDnAMwAzADnAOgAzADoAM0AzQDoAOkAzQDpAM4AzgDpAOoAzgDqAM8AzwDqAOsAzwDrANAA0ADrAOwA0ADsANEA0QDsAO0A0QDtANIA0gDtAO4A0gDuANMA0wDuAO8A0wDvANQA1ADvAPAA1ADwANUA1QDwAPEA1QDxANYA1gDxAPIA1gDyANcA1wDyAPMA1wDzANgA2ADzAPQA2AD0ANkA2QD0APUA2QD1ANoA2gD1APYA2gD2ANsA2wD2APcA2wD3ANwA3AD3APgA3AD4AN0A3QD4APkA3QD5AN4A3gD5APoA3gD6AN8A3wD6APsA3wD7AMQAxAD7AOAA4AD8AOEA4QD8AP0A4QD9AOIA4gD9AP4A4gD+AOMA4wD+AP8A4wD/AOQA5AD/AAAB5AAAAeUA5QAAAQEB5QABAeYA5gABAQIB5gACAecA5wACAQMB5wADAegA6AADAQQB6AAEAekA6QAEAQUB6QAFAeoA6gAFAQYB6gAGAesA6wAGAQcB6wAHAewA7AAHAQgB7AAIAe0A7QAIAQkB7QAJAe4A7gAJAQoB7gAKAe8A7wAKAQsB7wALAfAA8AALAQwB8AAMAfEA8QAMAQ0B8QANAfIA8gANAQ4B8gAOAfMA8wAOAQ8B8wAPAfQA9AAPARAB9AAQAfUA9QAQAREB9QARAfYA9gARARIB9gASAfcA9wASARMB9wATAfgA+AATARQB+AAUAfkA+QAUARUB+QAVAfoA+gAVARYB+gAWAfsA+wAWARcB+wAXAeAA4AAXAfwA/AAYAf0A/QAYARkB/QAZAf4A/gAZARoB/gAaAf8A/wAaARsB/wAbAQABAAEbARwBAAEcAQEBAQEcAR0BAQEdAQIBAgEdAR4BAgEeAQMBAwEeAR8BAwEfAQQBBAEfASABBAEgAQUBBQEgASEBBQEhAQYBBgEhASIBBgEiAQcBBwEiASMBBwEjAQgBCAEjASQBCAEkAQkBCQEkASUBCQElAQoBCgElASYBCgEmAQsBCwEmAScBCwEnAQwBDAEnASgBDAEoAQ0BDQEoASkBDQEpAQ4BDgEpASoBDgEqAQ8BDwEqASsBDwErARABEAErASwBEAEsAREBEQEsAS0BEQEtARIBEgEtAS4BEgEuARMBEwEuAS8BEwEvARQBFAEvATABFAEwARUBFQEwATEBFQExARYBFgExATIBFgEyARcBFwEyATMBFwEzAfwA/AAzARgBGAE0ARkBGQE0ATUBGQE1ARoBGgE1ATYBGgE2ARsBGwE2ATcBGwE3ARwBHAE3ATgBHAE4AR0BHQE4ATkBHQE5AR4BHgE5AToBHgE6AR8BHwE6ATsBHwE7ASABIAE7ATwBIAE8ASEBIQE8AT0BIQE9ASIBIgE9AT4BIgE+ASMBIwE+AT8BIwE/ASQBJAE/AUABJAFAASUBJQFAAUEBJQFBASYBJgFBAUIBJgFCAScBJwFCAUMBJwFDASgBKAFDAUQBKAFEASkBKQFEAUUBKQFFASoBKgFFAUYBKgFGASsBKwFGAUcBKwFHASwBLAFHAUgBLAFIAS0BLQFIAUkBLQFJAS4BLgFJAUoBLgFKAS8BLwFKAUsBLwFLATABMAFLAUwBMAFMATEBMQFMAU0BMQFNATIBMgFNAU4BMgFOATMBMwFOAU8BMwFPARgBGAFPATQBNAFQATUBNQFQAVEBNQFRATYBNgFRAVIBNgFSATcBNwFSAVMBNwFTATgBOAFTAVQBOAFUATkBOQFUAVUBOQFVAToBOgFVAVYBOgFWATsBOwFWAVcBOwFXATwBPAFXAVgBPAFYAT0BPQFYAVkBPQFZAT4BPgFZAVoBPgFaAT8BPwFaAVsBPwFbAUABQAFbAVwBQAFcAUEBQQFcAV0BQQFdAUIBQgFdAV4BQgFeAUMBQwFeAV8BQwFfAUQBRAFfAWABRAFgAUUBRQFgAWEBRQFhAUYBRgFhAWIBRgFiAUcBRwFiAWMBRwFjAUgBSAFjAWQBSAFkAUkBSQFkAWUBSQFlAUoBSgFlAWYBSgFmAUsBSwFmAWcBSwFnAUwBTAFnAWgBTAFoAU0BTQFoAWkBTQFpAU4BTgFpAWoBTgFqAU8BTwFqAWsBTwFrATQBNAFrAVAB\",\"ao\":\"9fr9/v38+/n28+7m3Njh7vf7/f7////+/fv39Pb7/v79/Pr49fHr4dnZ5PD3+/3+/////v369vP2+/7+/fz6+PTv59zV2eTu9Pn8/v////78+fTy9/z+/v79+/jz7eTZ09ji6/L3+/7////+/Pn08/r9///+/fv49Ozi19LX4env9vv+/////v369vb9/v///v78+fTt4tfT1+Dn7vX7/v/////+/Pr6/v/////+/fr17uPY09fe5e31+/7//////v39/f///////v379u/k2NPW3OPs9vz+///////+/v/////////+/Pfw5NnT1dzj7fb8/v///////////////////vz48eXZ09Xb5O73/f7///////////////////79+fHl2NLV3OXv+P3////////////////////+/fnx5NfR1d3n8fn9/////////////////////vz37d7T0djh6/X8/v///////////w==\"}],\n    neck: [110,111,112,113,114,115,0,1,2,3,4,5,6,927,926,925,924,923,922,921,1036,1035,1034,1033,1032,1031],\n  },\n  crewneck: {\n    pattern: {\"half\":0.24,\"shoulderX\":0.252,\"shoulderDrop\":0.1,\"neckHalf\":0.085,\"neckFront\":0.07,\"neckBack\":0.025,\"armpit\":0.32,\"sleeve\":{\"top\":0.66,\"under\":0.44,\"cuff\":0.36},\"length\":0.81,\"open\":{\"chest\":0.03,\"hem\":0.045,\"sleeveRoot\":0.03,\"cuff\":0.03}},\n    front: {\"pat\":\"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\",\"pos\":\"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\",\"tri\":\"BgAFAAcAbgBtAG8ARABDAHQARQBEAHQARgBFAHQARwBGAHQAQwBCAHUAdABDAHUAQgBBAHYAdQBCAHYAQQBAAHcAdgBBAHcAQAA/AHgAdwBAAHgAPwA+AHkAeAA/AHkAPgA9AHoAeQA+AHoAPQA8AHsAegA9AHsAPAA7AHwAewA8AHwAOwA6AH0AfAA7AH0AOgA5AH4AfQA6AH4AfgA5AH8AOQA4AIAAfwA5AIAAOAA3AIEAgAA4AIEANwA2AIIAgQA3AIIANgA1AIMAggA2AIMANQA0AIQAgwA1AIQANAAzAIUAhAA0AIUAMwAyAIYAhQAzAIYAMgAxAIcAhgAyAIcALwAuAIgAMAAvAIgAMQAwAIgAhwAxAIgALgAtAIgARwB0AIkAdAB1AIkAdQB2AIoAiQB1AIoAdgB3AIsAigB2AIsAdwB4AIwAiwB3AIwAeAB5AI0AjAB4AI0AeQB6AI4AjQB5AI4AegB7AI8AjgB6AI8AewB8AJAAjwB7AJAAfAB9AJEAkAB8AJEAfQB+AJIAkQB9AJIAfgB/AJMAkgB+AJMAfwCAAJQAkwB/AJQAgACBAJUAlACAAJUAgQCCAJYAlQCBAJYAggCDAJcAlgCCAJcAgwCEAJgAlwCDAJgAhACFAJkAmACEAJkAhQCGAJoAmQCFAJoAhgCHAJsAmgCGAJsAhwCIAJwAmwCHAJwAiAAtAJwASABHAJ0ARwCJAJ0AiQCKAJ4AnQCJAJ4AigCLAJ8AngCKAJ8AiwCMAKAAnwCLAKAAjACNAKEAoACMAKEAjQCOAKIAoQCNAKIAjgCPAKMAogCOAKMAjwCQAKQAowCPAKQAkACRAKUApACQAKUAkQCSAKYApQCRAKYAkgCTAKcApgCSAKcAkwCUAKgApwCTAKgAlACVAKkAqACUAKkAlQCWAKoAqQCVAKoAlgCXAKsAqgCWAKsAlwCYAKwAqwCXAKwAmACZAK0ArACYAK0AmQCaAK4ArQCZAK4AmgCbAK8ArgCaAK8AmwCcALAArwCbALAALQAsALEAnAAtALEAsACcALEASQBIALIASACdALIAnQCeALIAngCfALMAsgCeALMAnwCgALQAswCfALQAoAChALUAtACgALUAoQCiALYAtQChALYAogCjALcAtgCiALcAowCkALgAtwCjALgApAClALkAuACkALkApQCmALoAuQClALoApgCnALsAugCmALsApwCoALwAuwCnALwAqACpAL0AvACoAL0AqQCqAL4AvQCpAL4AqgCrAL8AvgCqAL8AqwCsAMAAvwCrAMAArACtAMEAwACsAMEArQCuAMIAwQCtAMIArgCvAMMAwgCuAMMArwCwAMQAwwCvAMQALAArAMUAsQAsAMUAsACxAMUAxACwAMUASgBJAMYASQCyAMYAsgCzAMcAxgCyAMcAswC0AMgAxwCzAMgAtAC1AMkAyAC0AMkAtQC2AMoAyQC1AMoAtgC3AMsAygC2AMsAtwC4AMwAywC3AMwAuAC5AM0AzAC4AM0AuQC6AM4AzQC5AM4AugC7AM8AzgC6AM8AuwC8ANAAzwC7ANAAvAC9ANEA0AC8ANEAvQC+ANIA0QC9ANIAvgC/ANMA0gC+ANMAvwDAANQA0wC/ANQAwADBANUA1ADAANUAwQDCANYA1QDBANYAwgDDANcA1gDCANcAwwDEANgA1wDDANgAxADFANkA2ADEANkAKwAqANoAxQArANoA2QDFANoASgDGANsAxgDHANsAxwDIANwA2wDHANwAyADJAN0A3ADIAN0AyQDKAN4A3QDJAN4AygDLAN8A3gDKAN8AywDMAOAA3wDLAOAAzADNAOEA4ADMAOEAzQDOAOIA4QDNAOIAzgDPAOMA4gDOAOMAzwDQAOQA4wDPAOQA0ADRAOUA5ADQAOUA0QDSAOYA5QDRAOYA0gDTAOcA5gDSAOcA0wDUAOgA5wDTAOgA1ADVAOkA6ADUAOkA1QDWAOoA6QDVAOoA1gDXAOsA6gDWAOsA1wDYAOwA6wDXAOwA2ADZAO0A7ADYAO0A2gAqAO4A2QDaAO4A7QDZAO4ASwBKAO8ASgDbAO8ATABLAO8A2wDcAPAA7wDbAPAA3ADdAPEA8ADcAPEA3QDeAPIA8QDdAPIA3gDfAPMA8gDeAPMA3wDgAPQA8wDfAPQA4ADhAPUA9ADgAPUA4QDiAPYA9QDhAPYA4gDjAPcA9gDiAPcA4wDkAPgA9wDjAPgA5ADlAPkA+ADkAPkA5QDmAPoA+QDlAPoA5gDnAPsA+gDmAPsA5wDoAPwA+wDnAPwA6ADpAP0A/ADoAP0A6QDqAP4A/QDpAP4A6gDrAP8A/gDqAP8A6wDsAAAB/wDrAAAB7ADtAAEBAAHsAAEB7QDuAAIBAQHtAAIBKgApAAMB7gAqAAMBKQAoAAMBAgHuAAMBTADvAAQB7wDwAAQB8ADxAAUBBAHwAAUB8QDyAAYBBQHxAAYB8gDzAAcBBgHyAAcB8wD0AAgBBwHzAAgB9AD1AAkBCAH0AAkB9QD2AAoBCQH1AAoB9gD3AAsBCgH2AAsB9wD4AAwBCwH3AAwB+AD5AA0BDAH4AA0B+QD6AA4BDQH5AA4B+gD7AA8BDgH6AA8B+wD8ABABDwH7ABAB/AD9ABEBEAH8ABEB/QD+ABIBEQH9ABIB/gD/ABMBEgH+ABMB/wAAARQBEwH/ABQBAAEBARUBFAEAARUBAQECARYBFQEBARYBAgEDARcBFgECARcBAwEoABcBTQBMABgBTAAEARgBTgBNABgBBAEFARkBGAEEARkBBQEGARoBGQEFARoBBgEHARsBGgEGARsBBwEIARwBGwEHARwBCAEJAR0BHAEIAR0BCQEKAR4BHQEJAR4BCgELAR8BHgEKAR8BCwEMASABHwELASABDAENASEBIAEMASEBDQEOASIBIQENASIBDgEPASMBIgEOASMBDwEQASQBIwEPASQBEAERASUBJAEQASUBEQESASYBJQERASYBEgETAScBJgESAScBEwEUASgBJwETASgBFAEVASkBKAEUASkBFQEWASoBKQEVASoBFgEXASsBKgEWASsBKAAnACwBFwEoACwBJwAmACwBKwEXASwBTgAYAS0BGAEZAS0BGQEaAS4BLQEZAS4BGgEbAS8BLgEaAS8BGwEcATABLwEbATABHAEdATEBMAEcATEBHQEeATIBMQEdATIBHgEfATMBMgEeATMBHwEgATQBMwEfATQBIAEhATUBNAEgATUBIQEiATYBNQEhATYBIgEjATcBNgEiATcBIwEkATgBNwEjATgBJAElATkBOAEkATkBJQEmAToBOQElAToBJgEnATsBOgEmATsBJwEoATwBOwEnATwBKAEpAT0BPAEoAT0BKQEqAT4BPQEpAT4BKgErAT8BPgEqAT8BKwEsAUABPwErAUABLAEmAEABTwBOAEEBTgAtAUEBLQEuAUIBQQEtAUIBLgEvAUMBQgEuAUMBLwEwAUQBQwEvAUQBMAExAUUBRAEwAUUBMQEyAUYBRQExAUYBMgEzAUcBRgEyAUcBMwE0AUgBRwEzAUgBNAE1AUkBSAE0AUkBNQE2AUoBSQE1AUoBNgE3AUsBSgE2AUsBNwE4AUwBSwE3AUwBOAE5AU0BTAE4AU0BOQE6AU4BTQE5AU4BOgE7AU8BTgE6AU8BOwE8AVABTwE7AVABPAE9AVEBUAE8AVEBPQE+AVIBUQE9AVIBPgE/AVMBUgE+AVMBPwFAAVQBUwE/AVQBJgAlAFUBQAEmAFUBVAFAAVUBUABPAFYBTwBBAVYBQQFCAVYBQgFDAVcBVgFCAVcBQwFEAVgBVwFDAVgBRAFFAVkBWAFEAVkBRQFGAVoBWQFFAVoBRgFHAVsBWgFGAVsBRwFIAVwBWwFHAVwBSAFJAV0BXAFIAV0BSQFKAV4BXQFJAV4BSgFLAV8BXgFKAV8BSwFMAWABXwFLAWABTAFNAWEBYAFMAWEBTQFOAWIBYQFNAWIBTgFPAWMBYgFOAWMBTwFQAWQBYwFPAWQBUAFRAWUBZAFQAWUBUQFSAWYBZQFRAWYBUgFTAWcBZgFSAWcBUwFUAWgBZwFTAWgBJQAkAGkBVQElAGkBVAFVAWkBaAFUAWkBUQBQAGoBUABWAWoBVgFXAWsBagFWAWsBVwFYAWwBawFXAWwBWAFZAW0BbAFYAW0BWQFaAW4BbQFZAW4BWgFbAW8BbgFaAW8BWwFcAXABbwFbAXABXAFdAXEBcAFcAXEBXQFeAXIBcQFdAXIBXgFfAXMBcgFeAXMBXwFgAXQBcwFfAXQBYAFhAXUBdAFgAXUBYQFiAXYBdQFhAXYBYgFjAXcBdgFiAXcBYwFkAXgBdwFjAXgBZAFlAXkBeAFkAXkBZQFmAXoBeQFlAXoBZgFnAXsBegFmAXsBZwFoAXwBewFnAXwBaAFpAX0BfAFoAX0BJAAjAH4BaQEkAH4BfQFpAX4BUQBqAX8BagFrAX8BawFsAYABfwFrAYABbAFtAYEBgAFsAYEBbQFuAYIBgQFtAYIBbgFvAYMBggFuAYMBbwFwAYQBgwFvAYQBcAFxAYUBhAFwAYUBcQFyAYYBhQFxAYYBcgFzAYcBhgFyAYcBcwF0AYgBhwFzAYgBdAF1AYkBiAF0AYkBdQF2AYoBiQF1AYoBdgF3AYsBigF2AYsBdwF4AYwBiwF3AYwBeAF5AY0BjAF4AY0BeQF6AY4BjQF5AY4BegF7AY8BjgF6AY8BewF8AZABjwF7AZABfAF9AZEBkAF8AZEBfgEjAJIBfQF+AZIBkQF9AZIBUgBRAJMBUQB/AZMBUwBSAJMBfwGAAZQBkwF/AZQBgAGBAZUBlAGAAZUBgQGCAZYBlQGBAZYBggGDAZcBlgGCAZcBgwGEAZgBlwGDAZgBhAGFAZkBmAGEAZkBhQGGAZoBmQGFAZoBhgGHAZsBmgGGAZsBhwGIAZwBmwGHAZwBiAGJAZ0BnAGIAZ0BiQGKAZ4BnQGJAZ4BigGLAZ8BngGKAZ8BiwGMAaABnwGLAaABjAGNAaEBoAGMAaEBjQGOAaIBoQGNAaIBjgGPAaMBogGOAaMBjwGQAaQBowGPAaQBkAGRAaUBpAGQAaUBkQGSAaYBpQGRAaYBIwAiAKcBkgEjAKcBIgAhAKcBpgGSAacBUwCTAagBkwGUAagBlAGVAakBqAGUAakBlQGWAaoBqQGVAaoBlgGXAasBqgGWAasBlwGYAawBqwGXAawBmAGZAa0BrAGYAa0BmQGaAa4BrQGZAa4BmgGbAa8BrgGaAa8BmwGcAbABrwGbAbABnAGdAbEBsAGcAbEBnQGeAbIBsQGdAbIBngGfAbMBsgGeAbMBnwGgAbQBswGfAbQBoAGhAbUBtAGgAbUBoQGiAbYBtQGhAbYBogGjAbcBtgGiAbcBowGkAbgBtwGjAbgBpAGlAbkBuAGkAbkBpQGmAboBuQGlAboBpgGnAbsBugGmAbsBpwEhALsBVABTALwBUwCoAbwBVQBUALwBqAGpAb0BvAGoAb0BqQGqAb4BvQGpAb4BqgGrAb8BvgGqAb8BqwGsAcABvwGrAcABrAGtAcEBwAGsAcEBrQGuAcIBwQGtAcIBrgGvAcMBwgGuAcMBrwGwAcQBwwGvAcQBsAGxAcUBxAGwAcUBsQGyAcYBxQGxAcYBsgGzAccBxgGyAccBswG0AcgBxwGzAcgBtAG1AckByAG0AckBtQG2AcoByQG1AcoBtgG3AcsBygG2AcsBtwG4AcwBywG3AcwBuAG5Ac0BzAG4Ac0BuQG6Ac4BzQG5Ac4BugG7Ac8BzgG6Ac8BIQAgANABuwEhANABIAAfANABzwG7AdABVQC8AdEBvAG9AdEBvQG+AdIB0QG9AdIBvgG/AdMB0gG+AdMBvwHAAdQB0wG/AdQBwAHBAdUB1AHAAdUBwQHCAdYB1QHBAdYBwgHDAdcB1gHCAdcBwwHEAdgB1wHDAdgBxAHFAdkB2AHEAdkBxQHGAdoB2QHFAdoBxgHHAdsB2gHGAdsBxwHIAdwB2wHHAdwByAHJAd0B3AHIAd0ByQHKAd4B3QHJAd4BygHLAd8B3gHKAd8BywHMAeAB3wHLAeABzAHNAeEB4AHMAeEBzQHOAeIB4QHNAeIBzgHPAeMB4gHOAeMBzwHQAeQB4wHPAeQB0AEfAOQBVgBVAOUBVQDRAeUB0QHSAeYB5QHRAeYB0gHTAecB5gHSAecB0wHUAegB5wHTAegB1AHVAekB6AHUAekB1QHWAeoB6QHVAeoB1gHXAesB6gHWAesB1wHYAewB6wHXAewB2AHZAe0B7AHYAe0B2QHaAe4B7QHZAe4B2gHbAe8B7gHaAe8B2wHcAfAB7wHbAfAB3AHdAfEB8AHcAfEB3QHeAfIB8QHdAfIB3gHfAfMB8gHeAfMB3wHgAfQB8wHfAfQB4AHhAfUB9AHgAfUB4QHiAfYB9QHhAfYB4gHjAfcB9gHiAfcB4wHkAfgB9wHjAfgBHwAeAPkB5AEfAPkB+AHkAfkBVwBWAPoBVgDlAfoB5QHmAfoB5gHnAfsB+gHmAfsB5wHoAfwB+wHnAfwB6AHpAf0B/AHoAf0B6QHqAf4B/QHpAf4B6gHrAf8B/gHqAf8B6wHsAQAC/wHrAQAC7AHtAQECAALsAQEC7QHuAQICAQLtAQIC7gHvAQMCAgLuAQMC7wHwAQQCAwLvAQQC8AHxAQUCBALwAQUC8QHyAQYCBQLxAQYC8gHzAQcCBgLyAQcC8wH0AQgCBwLzAQgC9AH1AQkCCAL0AQkC9QH2AQoCCQL1AQoC9gH3AQsCCgL2AQsC9wH4AQwCCwL3AQwCHgAdAA0C+QEeAA0C+AH5AQ0CDAL4AQ0CWABXAA4CVwD6AQ4C+gH7AQ8CDgL6AQ8C+wH8ARACDwL7ARAC/AH9ARECEAL8AREC/QH+ARICEQL9ARIC/gH/ARMCEgL+ARMC/wEAAhQCEwL/ARQCAAIBAhUCFAIAAhUCAQICAhYCFQIBAhYCAgIDAhcCFgICAhcCAwIEAhgCFwIDAhgCBAIFAhkCGAIEAhkCBQIGAhoCGQIFAhoCBgIHAhsCGgIGAhsCBwIIAhwCGwIHAhwCCAIJAh0CHAIIAh0CCQIKAh4CHQIJAh4CCgILAh8CHgIKAh8CCwIMAiACHwILAiACDAINAiECIAIMAiECHQAcACICDQIdACICIQINAiICWAAOAiMCDgIPAiMCDwIQAiQCIwIPAiQCEAIRAiUCJAIQAiUCEQISAiYCJQIRAiYCEgITAicCJgISAicCEwIUAigCJwITAigCFAIVAikCKAIUAikCFQIWAioCKQIVAioCFgIXAisCKgIWAisCFwIYAiwCKwIXAiwCGAIZAi0CLAIYAi0CGQIaAi4CLQIZAi4CGgIbAi8CLgIaAi8CGwIcAjACLwIbAjACHAIdAjECMAIcAjECHQIeAjICMQIdAjICHgIfAjMCMgIeAjMCHwIgAjQCMwIfAjQCIAIhAjUCNAIgAjUCIgIcADYCIQIiAjYCNQIhAjYCWQBYADcCWAAjAjcCWgBZADcCIwIkAjgCNwIjAjgCJAIlAjkCOAIkAjkCJQImAjoCOQIlAjoCJgInAjsCOgImAjsCJwIoAjwCOwInAjwCKAIpAj0CPAIoAj0CKQIqAj4CPQIpAj4CKgIrAj8CPgIqAj8CKwIsAkACPwIrAkACLAItAkECQAIsAkECLQIuAkICQQItAkICLgIvAkMCQgIuAkMCLwIwAkQCQwIvAkQCMAIxAkUCRAIwAkUCMQIyAkYCRQIxAkYCMgIzAkcCRgIyAkcCMwI0AkgCRwIzAkgCNAI1AkkCSAI0AkkCNQI2AkoCSQI1AkoCHAAbAEsCNgIcAEsCGwAaAEsCSgI2AksCWgA3AkwCNwI4AkwCOAI5Ak0CTAI4Ak0COQI6Ak4CTQI5Ak4COgI7Ak8CTgI6Ak8COwI8AlACTwI7AlACPAI9AlECUAI8AlECPQI+AlICUQI9AlICPgI/AlMCUgI+AlMCPwJAAlQCUwI/AlQCQAJBAlUCVAJAAlUCQQJCAlYCVQJBAlYCQgJDAlcCVgJCAlcCQwJEAlgCVwJDAlgCRAJFAlkCWAJEAlkCRQJGAloCWQJFAloCRgJHAlsCWgJGAlsCRwJIAlwCWwJHAlwCSAJJAl0CXAJIAl0CSQJKAl4CXQJJAl4CSgJLAl8CXgJKAl8CSwIaAF8CWwBaAGACWgBMAmACXABbAGACTAJNAmECYAJMAmECTQJOAmICYQJNAmICTgJPAmMCYgJOAmMCTwJQAmQCYwJPAmQCUAJRAmUCZAJQAmUCUQJSAmYCZQJRAmYCUgJTAmcCZgJSAmcCUwJUAmgCZwJTAmgCVAJVAmkCaAJUAmkCVQJWAmoCaQJVAmoCVgJXAmsCagJWAmsCVwJYAmwCawJXAmwCWAJZAm0CbAJYAm0CWQJaAm4CbQJZAm4CWgJbAm8CbgJaAm8CWwJcAnACbwJbAnACXAJdAnECcAJcAnECXQJeAnICcQJdAnICXgJfAnMCcgJeAnMCGgAZAHQCXwIaAHQCcwJfAnQCXABgAnUCYAJhAnUCYQJiAnYCdQJhAnYCYgJjAncCdgJiAncCYwJkAngCdwJjAngCZAJlAnkCeAJkAnkCZQJmAnoCeQJlAnoCZgJnAnsCegJmAnsCZwJoAnwCewJnAnwCaAJpAn0CfAJoAn0CaQJqAn4CfQJpAn4CagJrAn8CfgJqAn8CawJsAoACfwJrAoACbAJtAoECgAJsAoECbQJuAoICgQJtAoICbgJvAoMCggJuAoMCbwJwAoQCgwJvAoQCcAJxAoUChAJwAoUCcQJyAoYChQJxAoYCcgJzAocChgJyAocCGQAYAIgCdAIZAIgCcwJ0AogChwJzAogCXQBcAIkCXAB1AokCdQJ2AooCiQJ1AooCdgJ3AosCigJ2AosCdwJ4AowCiwJ3AowCeAJ5Ao0CjAJ4Ao0CeQJ6Ao4CjQJ5Ao4CegJ7Ao8CjgJ6Ao8CewJ8ApACjwJ7ApACfAJ9ApECkAJ8ApECfQJ+ApICkQJ9ApICfgJ/ApMCkgJ+ApMCfwKAApQCkwJ/ApQCgAKBApUClAKAApUCgQKCApYClQKBApYCggKDApcClgKCApcCgwKEApgClwKDApgChAKFApkCmAKEApkChQKGApoCmQKFApoChgKHApsCmgKGApsChwKIApwCmwKHApwCGAAXAJ0CiAIYAJ0CnAKIAp0CXgBdAJ4CXQCJAp4CiQKKAp8CngKJAp8CigKLAqACnwKKAqACiwKMAqECoAKLAqECjAKNAqICoQKMAqICjQKOAqMCogKNAqMCjgKPAqQCowKOAqQCjwKQAqUCpAKPAqUCkAKRAqYCpQKQAqYCkQKSAqcCpgKRAqcCkgKTAqgCpwKSAqgCkwKUAqkCqAKTAqkClAKVAqoCqQKUAqoClQKWAqsCqgKVAqsClgKXAqwCqwKWAqwClwKYAq0CrAKXAq0CmAKZAq4CrQKYAq4CmQKaAq8CrgKZAq8CmgKbArACrwKaArACmwKcArECsAKbArECnAKdArICsQKcArICFwAWALMCnQIXALMCsgKdArMCXwBeALQCXgCeArQCngKfArQCnwKgArUCtAKfArUCoAKhArYCtQKgArYCoQKiArcCtgKhArcCogKjArgCtwKiArgCowKkArkCuAKjArkCpAKlAroCuQKkAroCpQKmArsCugKlArsCpgKnArwCuwKmArwCpwKoAr0CvAKnAr0CqAKpAr4CvQKoAr4CqQKqAr8CvgKpAr8CqgKrAsACvwKqAsACqwKsAsECwAKrAsECrAKtAsICwQKsAsICrQKuAsMCwgKtAsMCrgKvAsQCwwKuAsQCrwKwAsUCxAKvAsUCsAKxAsYCxQKwAsYCsQKyAscCxgKxAscCFgAVAMgCswIWAMgCsgKzAsgCxwKyAsgCYABfAMkCXwC0AskCtAK1AsoCyQK0AsoCtQK2AssCygK1AssCtgK3AswCywK2AswCtwK4As0CzAK3As0CuAK5As4CzQK4As4CuQK6As8CzgK5As8CugK7AtACzwK6AtACuwK8AtEC0AK7AtECvAK9AtIC0QK8AtICvQK+AtMC0gK9AtMCvgK/AtQC0wK+AtQCvwLAAtUC1AK/AtUCwALBAtYC1QLAAtYCwQLCAtcC1gLBAtcCwgLDAtgC1wLCAtgCwwLEAtkC2ALDAtkCxALFAtoC2QLEAtoCxQLGAtsC2gLFAtsCxgLHAtwC2wLGAtwCxwLIAt0C3ALHAt0CFQAUAN4CyAIVAN4C3QLIAt4CYQBgAN8CYADJAt8CyQLKAt8CygLLAuAC3wLKAuACywLMAuEC4ALLAuECzALNAuIC4QLMAuICzQLOAuMC4gLNAuMCzgLPAuQC4wLOAuQCzwLQAuUC5ALPAuUC0ALRAuYC5QLQAuYC0QLSAucC5gLRAucC0gLTAugC5wLSAugC0wLUAukC6ALTAukC1ALVAuoC6QLUAuoC1QLWAusC6gLVAusC1gLXAuwC6wLWAuwC1wLYAu0C7ALXAu0C2ALZAu4C7QLYAu4C2QLaAu8C7gLZAu8C2gLbAvAC7wLaAvAC2wLcAvEC8ALbAvEC3ALdAvIC8QLcAvICFAATAPMC3gIUAPMC3QLeAvMC8gLdAvMCYgBhAPQCYQDfAvQC3wLgAvUC9ALfAvUC4ALhAvYC9QLgAvYC4QLiAvcC9gLhAvcC4gLjAvgC9wLiAvgC4wLkAvkC+ALjAvkC5ALlAvoC+QLkAvoC5QLmAvsC+gLlAvsC5gLnAvwC+wLmAvwC5wLoAv0C/ALnAv0C6ALpAv4C/QLoAv4C6QLqAv8C/gLpAv8C6gLrAgAD/wLqAgAD6wLsAgEDAAPrAgED7ALtAgIDAQPsAgID7QLuAgMDAgPtAgMD7gLvAgQDAwPuAgQD7wLwAgUDBAPvAgUD8ALxAgYDBQPwAgYD8QLyAgcDBgPxAgcD8gLzAggDBwPyAggDEwASAAkD8wITAAkDCAPzAgkDYgD0AgoD9AL1AgoD9QL2AgsDCgP1AgsD9gL3AgwDCwP2AgwD9wL4Ag0DDAP3Ag0D+AL5Ag4DDQP4Ag4D+QL6Ag8DDgP5Ag8D+gL7AhADDwP6AhAD+wL8AhEDEAP7AhED/AL9AhIDEQP8AhID/QL+AhMDEgP9AhMD/gL/AhQDEwP+AhQD/wIAAxUDFAP/AhUDAAMBAxYDFQMAAxYDAQMCAxcDFgMBAxcDAgMDAxgDFwMCAxgDAwMEAxkDGAMDAxkDBAMFAxoDGQMEAxoDBQMGAxsDGgMFAxsDBgMHAxwDGwMGAxwDBwMIAx0DHAMHAx0DCQMSAB4DCAMJAx4DHQMIAx4DYwBiAB8DYgAKAx8DZABjAB8DCgMLAyADHwMKAyADCwMMAyEDIAMLAyEDDAMNAyIDIQMMAyIDDQMOAyMDIgMNAyMDDgMPAyQDIwMOAyQDDwMQAyUDJAMPAyUDEAMRAyYDJQMQAyYDEQMSAycDJgMRAycDEgMTAygDJwMSAygDEwMUAykDKAMTAykDFAMVAyoDKQMUAyoDFQMWAysDKgMVAysDFgMXAywDKwMWAywDFwMYAy0DLAMXAy0DGAMZAy4DLQMYAy4DGQMaAy8DLgMZAy8DGgMbAzADLwMaAzADGwMcAzEDMAMbAzEDHAMdAzIDMQMcAzIDHQMeAzMDMgMdAzMDEgARADQDHgMSADQDEQAQADQDMwMeAzQDZAAfAzUDHwMgAzUDIAMhAzYDNQMgAzYDIQMiAzcDNgMhAzcDIgMjAzgDNwMiAzgDIwMkAzkDOAMjAzkDJAMlAzoDOQMkAzoDJQMmAzsDOgMlAzsDJgMnAzwDOwMmAzwDJwMoAz0DPAMnAz0DKAMpAz4DPQMoAz4DKQMqAz8DPgMpAz8DKgMrA0ADPwMqA0ADKwMsA0EDQAMrA0EDLAMtA0IDQQMsA0IDLQMuA0MDQgMtA0MDLgMvA0QDQwMuA0QDLwMwA0UDRAMvA0UDMAMxA0YDRQMwA0YDMQMyA0cDRgMxA0cDMgMzA0gDRwMyA0gDMwM0A0kDSAMzA0kDNAMQAEkDZQBkAEoDZgBlAEoDZAA1A0oDNQM2A0sDSgM1A0sDNgM3A0wDSwM2A0wDNwM4A00DTAM3A00DOAM5A04DTQM4A04DOQM6A08DTgM5A08DOgM7A1ADTwM6A1ADOwM8A1EDUAM7A1EDPAM9A1IDUQM8A1IDPQM+A1MDUgM9A1MDPgM/A1QDUwM+A1QDPwNAA1UDVAM/A1UDQANBA1YDVQNAA1YDQQNCA1cDVgNBA1cDQgNDA1gDVwNCA1gDQwNEA1kDWANDA1kDRANFA1oDWQNEA1oDRQNGA1sDWgNFA1sDRgNHA1wDWwNGA1wDRwNIA10DXANHA10DSANJA14DXQNIA14DDwAOAF8DDgBeA18DEAAPAF8DSQMQAF8DXgNJA18DZwBmAGADZgBKA2ADSgNLA2ADaABnAGEDSwNMA2EDYANLA2EDZwBgA2EDTANNA2IDYQNMA2IDTQNOA2MDYgNNA2MDTgNPA2QDYwNOA2QDTwNQA2UDZANPA2UDUANRA2YDZQNQA2YDUQNSA2cDZgNRA2cDUgNTA2gDZwNSA2gDAABzAGkDUwNUA2kDaANTA2kDcwBoA2kDVANVA2oDaQNUA2oDAABpA2oDAQAAAGsDAABqA2sDVQNWA2sDagNVA2sDVgNXA2wDawNWA2wDVwNYA20DbANXA20DWANZA24DbQNYA24DWQNaA28DbgNZA28DWgNbA3ADbwNaA3ADWwNcA3EDcANbA3EDXANdA3IDcQNcA3IDDgANAHMDXgMOAHMDXQNeA3MDcgNdA3MDaQBoAHQDaABhA3QDYQNiA3QDYgNjA3UDdANiA3UDaQB0A3UDYwNkA3YDdQNjA3YDZANlA3cDdgNkA3cDZQNmA3gDdwNlA3gDZgNnA3kDeANmA3kDcwByAHoDaANzAHoDZwNoA3oDcgBxAHoDcQB5A3oDeQNnA3oDAgABAHsDAQBrA3sDawNsA3sDAwACAHwDbANtA3wDAgB7A3wDewNsA3wDbQNuA30DfANtA30DAwB8A30DbgNvA34DfQNuA34DbwNwA38DfgNvA38DcANxA4ADfwNwA4ADcQNyA4EDgANxA4EDDQAMAIIDcwMNAIIDcgNzA4IDDAALAIIDCwCBA4IDgQNyA4IDagBpAIMDaQB1A4MDawBqAIMDdQN2A4MDdgN3A4QDgwN2A4QDawCDA4QDdwN4A4UDhAN3A4UDcQBwAIYDeQNxAIYDeAN5A4YDhQN4A4YDBAADAIcDAwB9A4cDfQN+A4cDfgN/A4gDhwN+A4gDfwOAA4kDiAN/A4kDCwAKAIoDgQMLAIoDgAOBA4oDCgAJAIoDCQCJA4oDiQOAA4oDbABrAIsDawCEA4sDhAOFA4sDbQBsAIwDbACLA4wDbwBtAIwDcABvAIwDhgNwAIwDhQOGA4wDiwOFA4wDBQAEAI0DBACHA40DBwAFAI0DCAAHAI0DhwOIA40DCQAIAI4DiQMJAI4DiAOJA44DCACNA44DjQOIA44D\",\"ao\":\"//////////////7+/v7+/v7+/fz69vHp3c3AtrSwrauqrK2vsbKztLi8xtbj7/X29vf4+vz+/////////////v37+ff39/Xx5djKwLq2tLKxr62sqautsLW2wcna6vL3+vz9/v7+/v3+/v7////////////29/n7/f7////////////+/fv49vXy9Pf6/f7///////////78+vbz8evs8fb6/f7//////////vz59e/q6eHm7vX6/f7////////+/fr07eTe1Nrk7/b7/v/////////9+/Xt4tfQzdjl8fj8/v////////789+/j1MnCy9rp9Pr9//////////368+jXx76/zuDv+Pz+/////////vz37d7KvLjC1ej0+v7//////////frz5tO/trnJ3u/4/P7////////+/Pfu3Me3tL/T6PT7/v/////////++/Tm0b2ztsfe8Pn9/v////////79+O/dxrWyvNPp9vz+//////////779ujSu7G0yOHz+v3+/////////v368uDGs6+92O75/P7//////////vz47da7r7TN6Pf8/v///////////vz25suzrsLf8/v9/v/////////+/fvz3cCuuNXu+f3+///////////+/fnt0rexyOX2/P7+//////////7+/PbkxrG62vH6/f7///////////79+vDYubjO6Pf8/v////////////789+fMt8Te8vv9/v///////////v368dzCvtTr+P3+/////////////vz36dK9zuP0+/7//////////////vvy4cvP3u/5/f7////////////+/fnt28zg7Pf8/v/////////////+/Pbq2+ft9fv+///////////////++/Tr5u/x9fr9///////////////+/fr07+319/r9/v///////////////v359vT5+fr9/v////////////////78+vj4+/v9/v/////////////////+/fv7/Pz9/v///////////////////v38/f3+/v////////////////////7+/f7+/v/////////////////////+/v7+/v///////////////////////v7+/v7//////////////////////v7+/v7+/////////////////////v7+/v///////////////v7+/////////v////8=\"},\n    back: {\"pat\":\"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\",\"pos\":\"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\",\"tri\":\"BgAFAAcAbgBtAG8ARABDAHQARQBEAHQARgBFAHQARwBGAHQAQwBCAHUAdABDAHUAQgBBAHYAdQBCAHYAQQBAAHcAdgBBAHcAQAA/AHgAdwBAAHgAPwA+AHkAeAA/AHkAPgA9AHoAeQA+AHoAPQA8AHsAegA9AHsAPAA7AHwAewA8AHwAOwA6AH0AfAA7AH0AOgA5AH4AfQA6AH4AfgA5AH8AOQA4AIAAfwA5AIAAOAA3AIEAgAA4AIEANwA2AIIAgQA3AIIANgA1AIMAggA2AIMANQA0AIQAgwA1AIQANAAzAIUAhAA0AIUAMwAyAIYAhQAzAIYAMgAxAIcAhgAyAIcALwAuAIgAMAAvAIgAMQAwAIgAhwAxAIgALgAtAIgARwB0AIkAdAB1AIkAdQB2AIoAiQB1AIoAdgB3AIsAigB2AIsAdwB4AIwAiwB3AIwAeAB5AI0AjAB4AI0AeQB6AI4AjQB5AI4AegB7AI8AjgB6AI8AewB8AJAAjwB7AJAAfAB9AJEAkAB8AJEAfQB+AJIAkQB9AJIAfgB/AJMAkgB+AJMAfwCAAJQAkwB/AJQAgACBAJUAlACAAJUAgQCCAJYAlQCBAJYAggCDAJcAlgCCAJcAgwCEAJgAlwCDAJgAhACFAJkAmACEAJkAhQCGAJoAmQCFAJoAhgCHAJsAmgCGAJsAhwCIAJwAmwCHAJwAiAAtAJwASABHAJ0ARwCJAJ0AiQCKAJ4AnQCJAJ4AigCLAJ8AngCKAJ8AiwCMAKAAnwCLAKAAjACNAKEAoACMAKEAjQCOAKIAoQCNAKIAjgCPAKMAogCOAKMAjwCQAKQAowCPAKQAkACRAKUApACQAKUAkQCSAKYApQCRAKYAkgCTAKcApgCSAKcAkwCUAKgApwCTAKgAlACVAKkAqACUAKkAlQCWAKoAqQCVAKoAlgCXAKsAqgCWAKsAlwCYAKwAqwCXAKwAmACZAK0ArACYAK0AmQCaAK4ArQCZAK4AmgCbAK8ArgCaAK8AmwCcALAArwCbALAALQAsALEAnAAtALEAsACcALEASQBIALIASACdALIAnQCeALIAngCfALMAsgCeALMAnwCgALQAswCfALQAoAChALUAtACgALUAoQCiALYAtQChALYAogCjALcAtgCiALcAowCkALgAtwCjALgApAClALkAuACkALkApQCmALoAuQClALoApgCnALsAugCmALsApwCoALwAuwCnALwAqACpAL0AvACoAL0AqQCqAL4AvQCpAL4AqgCrAL8AvgCqAL8AqwCsAMAAvwCrAMAArACtAMEAwACsAMEArQCuAMIAwQCtAMIArgCvAMMAwgCuAMMArwCwAMQAwwCvAMQALAArAMUAsQAsAMUAsACxAMUAxACwAMUASgBJAMYASQCyAMYAsgCzAMcAxgCyAMcAswC0AMgAxwCzAMgAtAC1AMkAyAC0AMkAtQC2AMoAyQC1AMoAtgC3AMsAygC2AMsAtwC4AMwAywC3AMwAuAC5AM0AzAC4AM0AuQC6AM4AzQC5AM4AugC7AM8AzgC6AM8AuwC8ANAAzwC7ANAAvAC9ANEA0AC8ANEAvQC+ANIA0QC9ANIAvgC/ANMA0gC+ANMAvwDAANQA0wC/ANQAwADBANUA1ADAANUAwQDCANYA1QDBANYAwgDDANcA1gDCANcAwwDEANgA1wDDANgAxADFANkA2ADEANkAKwAqANoAxQArANoA2QDFANoASgDGANsAxgDHANsAxwDIANwA2wDHANwAyADJAN0A3ADIAN0AyQDKAN4A3QDJAN4AygDLAN8A3gDKAN8AywDMAOAA3wDLAOAAzADNAOEA4ADMAOEAzQDOAOIA4QDNAOIAzgDPAOMA4gDOAOMAzwDQAOQA4wDPAOQA0ADRAOUA5ADQAOUA0QDSAOYA5QDRAOYA0gDTAOcA5gDSAOcA0wDUAOgA5wDTAOgA1ADVAOkA6ADUAOkA1QDWAOoA6QDVAOoA1gDXAOsA6gDWAOsA1wDYAOwA6wDXAOwA2ADZAO0A7ADYAO0A2gAqAO4A2QDaAO4A7QDZAO4ASwBKAO8ASgDbAO8ATABLAO8A2wDcAPAA7wDbAPAA3ADdAPEA8ADcAPEA3QDeAPIA8QDdAPIA3gDfAPMA8gDeAPMA3wDgAPQA8wDfAPQA4ADhAPUA9ADgAPUA4QDiAPYA9QDhAPYA4gDjAPcA9gDiAPcA4wDkAPgA9wDjAPgA5ADlAPkA+ADkAPkA5QDmAPoA+QDlAPoA5gDnAPsA+gDmAPsA5wDoAPwA+wDnAPwA6ADpAP0A/ADoAP0A6QDqAP4A/QDpAP4A6gDrAP8A/gDqAP8A6wDsAAAB/wDrAAAB7ADtAAEBAAHsAAEB7QDuAAIBAQHtAAIBKgApAAMB7gAqAAMBKQAoAAMBAgHuAAMBTADvAAQB7wDwAAQB8ADxAAUBBAHwAAUB8QDyAAYBBQHxAAYB8gDzAAcBBgHyAAcB8wD0AAgBBwHzAAgB9AD1AAkBCAH0AAkB9QD2AAoBCQH1AAoB9gD3AAsBCgH2AAsB9wD4AAwBCwH3AAwB+AD5AA0BDAH4AA0B+QD6AA4BDQH5AA4B+gD7AA8BDgH6AA8B+wD8ABABDwH7ABAB/AD9ABEBEAH8ABEB/QD+ABIBEQH9ABIB/gD/ABMBEgH+ABMB/wAAARQBEwH/ABQBAAEBARUBFAEAARUBAQECARYBFQEBARYBAgEDARcBFgECARcBAwEoABcBTQBMABgBTAAEARgBTgBNABgBBAEFARkBGAEEARkBBQEGARoBGQEFARoBBgEHARsBGgEGARsBBwEIARwBGwEHARwBCAEJAR0BHAEIAR0BCQEKAR4BHQEJAR4BCgELAR8BHgEKAR8BCwEMASABHwELASABDAENASEBIAEMASEBDQEOASIBIQENASIBDgEPASMBIgEOASMBDwEQASQBIwEPASQBEAERASUBJAEQASUBEQESASYBJQERASYBEgETAScBJgESAScBEwEUASgBJwETASgBFAEVASkBKAEUASkBFQEWASoBKQEVASoBFgEXASsBKgEWASsBKAAnACwBFwEoACwBJwAmACwBKwEXASwBTgAYAS0BGAEZAS0BGQEaAS4BLQEZAS4BGgEbAS8BLgEaAS8BGwEcATABLwEbATABHAEdATEBMAEcATEBHQEeATIBMQEdATIBHgEfATMBMgEeATMBHwEgATQBMwEfATQBIAEhATUBNAEgATUBIQEiATYBNQEhATYBIgEjATcBNgEiATcBIwEkATgBNwEjATgBJAElATkBOAEkATkBJQEmAToBOQElAToBJgEnATsBOgEmATsBJwEoATwBOwEnATwBKAEpAT0BPAEoAT0BKQEqAT4BPQEpAT4BKgErAT8BPgEqAT8BKwEsAUABPwErAUABLAEmAEABTwBOAEEBTgAtAUEBLQEuAUIBQQEtAUIBLgEvAUMBQgEuAUMBLwEwAUQBQwEvAUQBMAExAUUBRAEwAUUBMQEyAUYBRQExAUYBMgEzAUcBRgEyAUcBMwE0AUgBRwEzAUgBNAE1AUkBSAE0AUkBNQE2AUoBSQE1AUoBNgE3AUsBSgE2AUsBNwE4AUwBSwE3AUwBOAE5AU0BTAE4AU0BOQE6AU4BTQE5AU4BOgE7AU8BTgE6AU8BOwE8AVABTwE7AVABPAE9AVEBUAE8AVEBPQE+AVIBUQE9AVIBPgE/AVMBUgE+AVMBPwFAAVQBUwE/AVQBJgAlAFUBQAEmAFUBVAFAAVUBUABPAFYBTwBBAVYBQQFCAVYBQgFDAVcBVgFCAVcBQwFEAVgBVwFDAVgBRAFFAVkBWAFEAVkBRQFGAVoBWQFFAVoBRgFHAVsBWgFGAVsBRwFIAVwBWwFHAVwBSAFJAV0BXAFIAV0BSQFKAV4BXQFJAV4BSgFLAV8BXgFKAV8BSwFMAWABXwFLAWABTAFNAWEBYAFMAWEBTQFOAWIBYQFNAWIBTgFPAWMBYgFOAWMBTwFQAWQBYwFPAWQBUAFRAWUBZAFQAWUBUQFSAWYBZQFRAWYBUgFTAWcBZgFSAWcBUwFUAWgBZwFTAWgBJQAkAGkBVQElAGkBVAFVAWkBaAFUAWkBUQBQAGoBUABWAWoBVgFXAWsBagFWAWsBVwFYAWwBawFXAWwBWAFZAW0BbAFYAW0BWQFaAW4BbQFZAW4BWgFbAW8BbgFaAW8BWwFcAXABbwFbAXABXAFdAXEBcAFcAXEBXQFeAXIBcQFdAXIBXgFfAXMBcgFeAXMBXwFgAXQBcwFfAXQBYAFhAXUBdAFgAXUBYQFiAXYBdQFhAXYBYgFjAXcBdgFiAXcBYwFkAXgBdwFjAXgBZAFlAXkBeAFkAXkBZQFmAXoBeQFlAXoBZgFnAXsBegFmAXsBZwFoAXwBewFnAXwBaAFpAX0BfAFoAX0BJAAjAH4BaQEkAH4BfQFpAX4BUQBqAX8BagFrAX8BawFsAYABfwFrAYABbAFtAYEBgAFsAYEBbQFuAYIBgQFtAYIBbgFvAYMBggFuAYMBbwFwAYQBgwFvAYQBcAFxAYUBhAFwAYUBcQFyAYYBhQFxAYYBcgFzAYcBhgFyAYcBcwF0AYgBhwFzAYgBdAF1AYkBiAF0AYkBdQF2AYoBiQF1AYoBdgF3AYsBigF2AYsBdwF4AYwBiwF3AYwBeAF5AY0BjAF4AY0BeQF6AY4BjQF5AY4BegF7AY8BjgF6AY8BewF8AZABjwF7AZABfAF9AZEBkAF8AZEBfgEjAJIBfQF+AZIBkQF9AZIBUgBRAJMBUQB/AZMBUwBSAJMBfwGAAZQBkwF/AZQBgAGBAZUBlAGAAZUBgQGCAZYBlQGBAZYBggGDAZcBlgGCAZcBgwGEAZgBlwGDAZgBhAGFAZkBmAGEAZkBhQGGAZoBmQGFAZoBhgGHAZsBmgGGAZsBhwGIAZwBmwGHAZwBiAGJAZ0BnAGIAZ0BiQGKAZ4BnQGJAZ4BigGLAZ8BngGKAZ8BiwGMAaABnwGLAaABjAGNAaEBoAGMAaEBjQGOAaIBoQGNAaIBjgGPAaMBogGOAaMBjwGQAaQBowGPAaQBkAGRAaUBpAGQAaUBkQGSAaYBpQGRAaYBIwAiAKcBkgEjAKcBIgAhAKcBpgGSAacBUwCTAagBkwGUAagBlAGVAakBqAGUAakBlQGWAaoBqQGVAaoBlgGXAasBqgGWAasBlwGYAawBqwGXAawBmAGZAa0BrAGYAa0BmQGaAa4BrQGZAa4BmgGbAa8BrgGaAa8BmwGcAbABrwGbAbABnAGdAbEBsAGcAbEBnQGeAbIBsQGdAbIBngGfAbMBsgGeAbMBnwGgAbQBswGfAbQBoAGhAbUBtAGgAbUBoQGiAbYBtQGhAbYBogGjAbcBtgGiAbcBowGkAbgBtwGjAbgBpAGlAbkBuAGkAbkBpQGmAboBuQGlAboBpgGnAbsBugGmAbsBpwEhALsBVABTALwBUwCoAbwBVQBUALwBqAGpAb0BvAGoAb0BqQGqAb4BvQGpAb4BqgGrAb8BvgGqAb8BqwGsAcABvwGrAcABrAGtAcEBwAGsAcEBrQGuAcIBwQGtAcIBrgGvAcMBwgGuAcMBrwGwAcQBwwGvAcQBsAGxAcUBxAGwAcUBsQGyAcYBxQGxAcYBsgGzAccBxgGyAccBswG0AcgBxwGzAcgBtAG1AckByAG0AckBtQG2AcoByQG1AcoBtgG3AcsBygG2AcsBtwG4AcwBywG3AcwBuAG5Ac0BzAG4Ac0BuQG6Ac4BzQG5Ac4BugG7Ac8BzgG6Ac8BIQAgANABuwEhANABIAAfANABzwG7AdABVQC8AdEBvAG9AdEBvQG+AdIB0QG9AdIBvgG/AdMB0gG+AdMBvwHAAdQB0wG/AdQBwAHBAdUB1AHAAdUBwQHCAdYB1QHBAdYBwgHDAdcB1gHCAdcBwwHEAdgB1wHDAdgBxAHFAdkB2AHEAdkBxQHGAdoB2QHFAdoBxgHHAdsB2gHGAdsBxwHIAdwB2wHHAdwByAHJAd0B3AHIAd0ByQHKAd4B3QHJAd4BygHLAd8B3gHKAd8BywHMAeAB3wHLAeABzAHNAeEB4AHMAeEBzQHOAeIB4QHNAeIBzgHPAeMB4gHOAeMBzwHQAeQB4wHPAeQB0AEfAOQBVgBVAOUBVQDRAeUB0QHSAeYB5QHRAeYB0gHTAecB5gHSAecB0wHUAegB5wHTAegB1AHVAekB6AHUAekB1QHWAeoB6QHVAeoB1gHXAesB6gHWAesB1wHYAewB6wHXAewB2AHZAe0B7AHYAe0B2QHaAe4B7QHZAe4B2gHbAe8B7gHaAe8B2wHcAfAB7wHbAfAB3AHdAfEB8AHcAfEB3QHeAfIB8QHdAfIB3gHfAfMB8gHeAfMB3wHgAfQB8wHfAfQB4AHhAfUB9AHgAfUB4QHiAfYB9QHhAfYB4gHjAfcB9gHiAfcB4wHkAfgB9wHjAfgBHwAeAPkB5AEfAPkB+AHkAfkBVwBWAPoBVgDlAfoB5QHmAfoB5gHnAfsB+gHmAfsB5wHoAfwB+wHnAfwB6AHpAf0B/AHoAf0B6QHqAf4B/QHpAf4B6gHrAf8B/gHqAf8B6wHsAQAC/wHrAQAC7AHtAQECAALsAQEC7QHuAQICAQLtAQIC7gHvAQMCAgLuAQMC7wHwAQQCAwLvAQQC8AHxAQUCBALwAQUC8QHyAQYCBQLxAQYC8gHzAQcCBgLyAQcC8wH0AQgCBwLzAQgC9AH1AQkCCAL0AQkC9QH2AQoCCQL1AQoC9gH3AQsCCgL2AQsC9wH4AQwCCwL3AQwCHgAdAA0C+QEeAA0C+AH5AQ0CDAL4AQ0CWABXAA4CVwD6AQ4C+gH7AQ8CDgL6AQ8C+wH8ARACDwL7ARAC/AH9ARECEAL8AREC/QH+ARICEQL9ARIC/gH/ARMCEgL+ARMC/wEAAhQCEwL/ARQCAAIBAhUCFAIAAhUCAQICAhYCFQIBAhYCAgIDAhcCFgICAhcCAwIEAhgCFwIDAhgCBAIFAhkCGAIEAhkCBQIGAhoCGQIFAhoCBgIHAhsCGgIGAhsCBwIIAhwCGwIHAhwCCAIJAh0CHAIIAh0CCQIKAh4CHQIJAh4CCgILAh8CHgIKAh8CCwIMAiACHwILAiACDAINAiECIAIMAiECHQAcACICDQIdACICIQINAiICWAAOAiMCDgIPAiMCDwIQAiQCIwIPAiQCEAIRAiUCJAIQAiUCEQISAiYCJQIRAiYCEgITAicCJgISAicCEwIUAigCJwITAigCFAIVAikCKAIUAikCFQIWAioCKQIVAioCFgIXAisCKgIWAisCFwIYAiwCKwIXAiwCGAIZAi0CLAIYAi0CGQIaAi4CLQIZAi4CGgIbAi8CLgIaAi8CGwIcAjACLwIbAjACHAIdAjECMAIcAjECHQIeAjICMQIdAjICHgIfAjMCMgIeAjMCHwIgAjQCMwIfAjQCIAIhAjUCNAIgAjUCIgIcADYCIQIiAjYCNQIhAjYCWQBYADcCWAAjAjcCWgBZADcCIwIkAjgCNwIjAjgCJAIlAjkCOAIkAjkCJQImAjoCOQIlAjoCJgInAjsCOgImAjsCJwIoAjwCOwInAjwCKAIpAj0CPAIoAj0CKQIqAj4CPQIpAj4CKgIrAj8CPgIqAj8CKwIsAkACPwIrAkACLAItAkECQAIsAkECLQIuAkICQQItAkICLgIvAkMCQgIuAkMCLwIwAkQCQwIvAkQCMAIxAkUCRAIwAkUCMQIyAkYCRQIxAkYCMgIzAkcCRgIyAkcCMwI0AkgCRwIzAkgCNAI1AkkCSAI0AkkCNQI2AkoCSQI1AkoCHAAbAEsCNgIcAEsCGwAaAEsCSgI2AksCWgA3AkwCNwI4AkwCOAI5Ak0CTAI4Ak0COQI6Ak4CTQI5Ak4COgI7Ak8CTgI6Ak8COwI8AlACTwI7AlACPAI9AlECUAI8AlECPQI+AlICUQI9AlICPgI/AlMCUgI+AlMCPwJAAlQCUwI/AlQCQAJBAlUCVAJAAlUCQQJCAlYCVQJBAlYCQgJDAlcCVgJCAlcCQwJEAlgCVwJDAlgCRAJFAlkCWAJEAlkCRQJGAloCWQJFAloCRgJHAlsCWgJGAlsCRwJIAlwCWwJHAlwCSAJJAl0CXAJIAl0CSQJKAl4CXQJJAl4CSgJLAl8CXgJKAl8CSwIaAF8CWwBaAGACWgBMAmACXABbAGACTAJNAmECYAJMAmECTQJOAmICYQJNAmICTgJPAmMCYgJOAmMCTwJQAmQCYwJPAmQCUAJRAmUCZAJQAmUCUQJSAmYCZQJRAmYCUgJTAmcCZgJSAmcCUwJUAmgCZwJTAmgCVAJVAmkCaAJUAmkCVQJWAmoCaQJVAmoCVgJXAmsCagJWAmsCVwJYAmwCawJXAmwCWAJZAm0CbAJYAm0CWQJaAm4CbQJZAm4CWgJbAm8CbgJaAm8CWwJcAnACbwJbAnACXAJdAnECcAJcAnECXQJeAnICcQJdAnICXgJfAnMCcgJeAnMCGgAZAHQCXwIaAHQCcwJfAnQCXABgAnUCYAJhAnUCYQJiAnYCdQJhAnYCYgJjAncCdgJiAncCYwJkAngCdwJjAngCZAJlAnkCeAJkAnkCZQJmAnoCeQJlAnoCZgJnAnsCegJmAnsCZwJoAnwCewJnAnwCaAJpAn0CfAJoAn0CaQJqAn4CfQJpAn4CagJrAn8CfgJqAn8CawJsAoACfwJrAoACbAJtAoECgAJsAoECbQJuAoICgQJtAoICbgJvAoMCggJuAoMCbwJwAoQCgwJvAoQCcAJxAoUChAJwAoUCcQJyAoYChQJxAoYCcgJzAocChgJyAocCGQAYAIgCdAIZAIgCcwJ0AogChwJzAogCXQBcAIkCXAB1AokCdQJ2AooCiQJ1AooCdgJ3AosCigJ2AosCdwJ4AowCiwJ3AowCeAJ5Ao0CjAJ4Ao0CeQJ6Ao4CjQJ5Ao4CegJ7Ao8CjgJ6Ao8CewJ8ApACjwJ7ApACfAJ9ApECkAJ8ApECfQJ+ApICkQJ9ApICfgJ/ApMCkgJ+ApMCfwKAApQCkwJ/ApQCgAKBApUClAKAApUCgQKCApYClQKBApYCggKDApcClgKCApcCgwKEApgClwKDApgChAKFApkCmAKEApkChQKGApoCmQKFApoChgKHApsCmgKGApsChwKIApwCmwKHApwCGAAXAJ0CiAIYAJ0CnAKIAp0CXgBdAJ4CXQCJAp4CiQKKAp8CngKJAp8CigKLAqACnwKKAqACiwKMAqECoAKLAqECjAKNAqICoQKMAqICjQKOAqMCogKNAqMCjgKPAqQCowKOAqQCjwKQAqUCpAKPAqUCkAKRAqYCpQKQAqYCkQKSAqcCpgKRAqcCkgKTAqgCpwKSAqgCkwKUAqkCqAKTAqkClAKVAqoCqQKUAqoClQKWAqsCqgKVAqsClgKXAqwCqwKWAqwClwKYAq0CrAKXAq0CmAKZAq4CrQKYAq4CmQKaAq8CrgKZAq8CmgKbArACrwKaArACmwKcArECsAKbArECnAKdArICsQKcArICFwAWALMCnQIXALMCsgKdArMCXwBeALQCXgCeArQCngKfArQCnwKgArUCtAKfArUCoAKhArYCtQKgArYCoQKiArcCtgKhArcCogKjArgCtwKiArgCowKkArkCuAKjArkCpAKlAroCuQKkAroCpQKmArsCugKlArsCpgKnArwCuwKmArwCpwKoAr0CvAKnAr0CqAKpAr4CvQKoAr4CqQKqAr8CvgKpAr8CqgKrAsACvwKqAsACqwKsAsECwAKrAsECrAKtAsICwQKsAsICrQKuAsMCwgKtAsMCrgKvAsQCwwKuAsQCrwKwAsUCxAKvAsUCsAKxAsYCxQKwAsYCsQKyAscCxgKxAscCFgAVAMgCswIWAMgCsgKzAsgCxwKyAsgCYABfAMkCXwC0AskCtAK1AsoCyQK0AsoCtQK2AssCygK1AssCtgK3AswCywK2AswCtwK4As0CzAK3As0CuAK5As4CzQK4As4CuQK6As8CzgK5As8CugK7AtACzwK6AtACuwK8AtEC0AK7AtECvAK9AtIC0QK8AtICvQK+AtMC0gK9AtMCvgK/AtQC0wK+AtQCvwLAAtUC1AK/AtUCwALBAtYC1QLAAtYCwQLCAtcC1gLBAtcCwgLDAtgC1wLCAtgCwwLEAtkC2ALDAtkCxALFAtoC2QLEAtoCxQLGAtsC2gLFAtsCxgLHAtwC2wLGAtwCxwLIAt0C3ALHAt0CFQAUAN4CyAIVAN4C3QLIAt4CYQBgAN8CYADJAt8CyQLKAt8CygLLAuAC3wLKAuACywLMAuEC4ALLAuECzALNAuIC4QLMAuICzQLOAuMC4gLNAuMCzgLPAuQC4wLOAuQCzwLQAuUC5ALPAuUC0ALRAuYC5QLQAuYC0QLSAucC5gLRAucC0gLTAugC5wLSAugC0wLUAukC6ALTAukC1ALVAuoC6QLUAuoC1QLWAusC6gLVAusC1gLXAuwC6wLWAuwC1wLYAu0C7ALXAu0C2ALZAu4C7QLYAu4C2QLaAu8C7gLZAu8C2gLbAvAC7wLaAvAC2wLcAvEC8ALbAvEC3ALdAvIC8QLcAvICFAATAPMC3gIUAPMC3QLeAvMC8gLdAvMCYgBhAPQCYQDfAvQC3wLgAvUC9ALfAvUC4ALhAvYC9QLgAvYC4QLiAvcC9gLhAvcC4gLjAvgC9wLiAvgC4wLkAvkC+ALjAvkC5ALlAvoC+QLkAvoC5QLmAvsC+gLlAvsC5gLnAvwC+wLmAvwC5wLoAv0C/ALnAv0C6ALpAv4C/QLoAv4C6QLqAv8C/gLpAv8C6gLrAgAD/wLqAgAD6wLsAgEDAAPrAgED7ALtAgIDAQPsAgID7QLuAgMDAgPtAgMD7gLvAgQDAwPuAgQD7wLwAgUDBAPvAgUD8ALxAgYDBQPwAgYD8QLyAgcDBgPxAgcD8gLzAggDBwPyAggDEwASAAkD8wITAAkDCAPzAgkDYgD0AgoD9AL1AgoD9QL2AgsDCgP1AgsD9gL3AgwDCwP2AgwD9wL4Ag0DDAP3Ag0D+AL5Ag4DDQP4Ag4D+QL6Ag8DDgP5Ag8D+gL7AhADDwP6AhAD+wL8AhEDEAP7AhED/AL9AhIDEQP8AhID/QL+AhMDEgP9AhMD/gL/AhQDEwP+AhQD/wIAAxUDFAP/AhUDAAMBAxYDFQMAAxYDAQMCAxcDFgMBAxcDAgMDAxgDFwMCAxgDAwMEAxkDGAMDAxkDBAMFAxoDGQMEAxoDBQMGAxsDGgMFAxsDBgMHAxwDGwMGAxwDBwMIAx0DHAMHAx0DCQMSAB4DCAMJAx4DHQMIAx4DYwBiAB8DYgAKAx8DZABjAB8DCgMLAyADHwMKAyADCwMMAyEDIAMLAyEDDAMNAyIDIQMMAyIDDQMOAyMDIgMNAyMDDgMPAyQDIwMOAyQDDwMQAyUDJAMPAyUDEAMRAyYDJQMQAyYDEQMSAycDJgMRAycDEgMTAygDJwMSAygDEwMUAykDKAMTAykDFAMVAyoDKQMUAyoDFQMWAysDKgMVAysDFgMXAywDKwMWAywDFwMYAy0DLAMXAy0DGAMZAy4DLQMYAy4DGQMaAy8DLgMZAy8DGgMbAzADLwMaAzADGwMcAzEDMAMbAzEDHAMdAzIDMQMcAzIDHQMeAzMDMgMdAzMDEgARADQDHgMSADQDEQAQADQDMwMeAzQDZAAfAzUDHwMgAzUDIAMhAzYDNQMgAzYDIQMiAzcDNgMhAzcDIgMjAzgDNwMiAzgDIwMkAzkDOAMjAzkDJAMlAzoDOQMkAzoDJQMmAzsDOgMlAzsDJgMnAzwDOwMmAzwDJwMoAz0DPAMnAz0DKAMpAz4DPQMoAz4DKQMqAz8DPgMpAz8DKgMrA0ADPwMqA0ADKwMsA0EDQAMrA0EDLAMtA0IDQQMsA0IDLQMuA0MDQgMtA0MDLgMvA0QDQwMuA0QDLwMwA0UDRAMvA0UDMAMxA0YDRQMwA0YDMQMyA0cDRgMxA0cDMgMzA0gDRwMyA0gDMwM0A0kDSAMzA0kDNAMQAEkDZQBkAEoDZgBlAEoDZAA1A0oDNQM2A0sDSgM1A0sDNgM3A0wDSwM2A0wDNwM4A00DTAM3A00DOAM5A04DTQM4A04DOQM6A08DTgM5A08DOgM7A1ADTwM6A1ADOwM8A1EDUAM7A1EDPAM9A1IDUQM8A1IDPQM+A1MDUgM9A1MDPgM/A1QDUwM+A1QDPwNAA1UDVAM/A1UDQANBA1YDVQNAA1YDQQNCA1cDVgNBA1cDQgNDA1gDVwNCA1gDQwNEA1kDWANDA1kDRANFA1oDWQNEA1oDRQNGA1sDWgNFA1sDRgNHA1wDWwNGA1wDRwNIA10DXANHA10DSANJA14DXQNIA14DDwAOAF8DDgBeA18DEAAPAF8DSQMQAF8DXgNJA18DZwBmAGADZgBKA2ADSgNLA2ADaABnAGEDSwNMA2EDYANLA2EDZwBgA2EDTANNA2IDYQNMA2IDTQNOA2MDYgNNA2MDTgNPA2QDYwNOA2QDTwNQA2UDZANPA2UDUANRA2YDZQNQA2YDUQNSA2cDZgNRA2cDUgNTA2gDZwNSA2gDUwNUA2kDaANTA2kDVANVA2oDaQNUA2oDVQNWA2sDagNVA2sDVgNXA2wDawNWA2wDVwNYA20DbANXA20DWANZA24DbQNYA24DWQNaA28DbgNZA28DWgNbA3ADbwNaA3ADWwNcA3EDcANbA3EDXANdA3IDcQNcA3IDDgANAHMDXgMOAHMDXQNeA3MDcgNdA3MDaQBoAHQDaABhA3QDYQNiA3QDYgNjA3UDdANiA3UDaQB0A3UDYwNkA3YDdQNjA3YDZANlA3cDdgNkA3cDZQNmA3gDdwNlA3gDZgNnA3kDeANmA3kDZwNoA3oDeQNnA3oDaANpA3sDegNoA3sDaQNqA3wDewNpA3wDagNrA30DfANqA30DawNsA34DfQNrA34DbANtA38DfgNsA38DbQNuA4ADfwNtA4ADbgNvA4EDgANuA4EDbwNwA4IDgQNvA4IDcANxA4MDggNwA4MDcQNyA4QDgwNxA4QDDQAMAIUDcwMNAIUDcgNzA4UDDAALAIUDCwCEA4UDhANyA4UDagBpAIYDaQB1A4YDawBqAIYDdQN2A4YDdgN3A4cDhgN2A4cDawCGA4cDdwN4A4gDhwN3A4gDeAN5A4kDiAN4A4kDeQN6A4oDiQN5A4oDegN7A4sDigN6A4sDewN8A4wDiwN7A4wDfAN9A40DjAN8A40DfQN+A44DjQN9A44DfgN/A48DjgN+A48DfwOAA5ADjwN/A5ADgAOBA5EDkAOAA5EDgQOCA5IDkQOBA5IDggODA5MDkgOCA5MDCwAKAJQDhAMLAJQDgwOEA5QDCgAJAJQDCQCTA5QDkwODA5QDbABrAJUDawCHA5UDhwOIA5UDbQBsAJYDbACVA5YDiAOJA5YDlQOIA5YDcQBwAJcDiQOKA5cDlgOJA5cDigOLA5gDcgBxAJgDcQCXA5gDlwOKA5gDiwOMA5kDcwByAJkDcgCYA5kDmAOLA5kDAABzAJoDjAONA5oDcwCZA5oDmQOMA5oDAQAAAJsDjQOOA5sDAACaA5sDmgONA5sDAgABAJwDjgOPA5wDAQCbA5wDmwOOA5wDAwACAJ0DjwOQA50DAgCcA50DnAOPA50DBAADAJ4DAwCdA54DkAORA54DnQOQA54DCAAHAJ8DkQOSA58DngORA58DCQAIAKADkwMJAKADkgOTA6ADCACfA6ADnwOSA6ADbwBtAKEDbQCWA6EDcABvAKEDlgOXA6EDlwNwAKEDBQAEAKIDBACeA6IDBwAFAKIDnwMHAKIDngOfA6ID\",\"ao\":\"//////////////7+/v7+/v7+//////789u3o5Ors7e7t8fP4/f7///////////7+/v7////////////////////////+/v7///////////789/Lx7e7s6+ji5ujz/P7///////7+/v3+/v7////////////+//////////////////////////7///////////////////////////////////////////////////////////7+/v///////////v7//////////v7+/v/////////+/v7+///////+/v39/v////////79/f7+//////7+/f39/v///////v39/f7+/////v79/Pz+///////+/fz8/f7+/////v38+/3+///////+/Pv8/f7////+/fv7+/3+//////79+/v7/f7///79+/r6/P7///////78+vr7/f7//v37+vn6/f7//////v36+fr8/f77/Pz6+fn7/v///////fv5+fr8/Pz5+/v5+fr9/v/////+/fr5+vv7+fT4+/r6+vz+///////+/Pr6+/v49fX6/Pv6/P3///////79+/r7/Pr18fj8/Pv8/f7///////79/Pv8/Pjx9Pv9/fz9/v////////79/P39+/Tw+P3+/f3+//////////79/f79+PHx+/7+/v7///////////7+/v778u73/f/+///////////////+//337/H7/v///////////////////vvy6fb9/////////////////////fbq8Pr+///////////////////++vDt+P7////////////////////99+34/f/////////////////////89fv9//////////////////////78+/7+/////////////////////////v7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7+/v7//////////////////////v7+/v7+/////////////////////v7+/v///////////////////v7///////////////////7//////////////////w==\"},\n    sleeves: [{\"rings\":30,\"around\":22,\"pos\":\"xA+98f//ww8x8JoAvQ977tIAqw/17PIAlg9v6/QAgw8b6vUAbQ/K6PYAVQ+v5/AAPw+Q5s8AAA+15IcApw5l4/P/pw5l4/P//A6z5F//Nw+O5hr/TA+t5/v+ZA/I6Pj+eg8Z6vz+jg9s6wD/pA/z7Af/uQ957ir/wA8v8Gb/xA+98f//AhBl8EAA+w/m7tkA6w8y7Q4Bzg+26ycBrg9A6iUBkQ/36CIBcw+t5xoBVg+a5g0BPA+C5eYA/A6445UAqA564gEAqA564gEAAA+942//Qg9+5Sr/Xw+S5g3/fw+o5w3/ng/06Bv/uw876if/2g+36zb/9Q8w7WH//w/c7qX/AhBl8EAAQRAO74AAMxCa7RgBGBDq60kB8A936lwBxg8T6VcBoA/S51ABeQ+Q5j4BVg+F5SkBOA905PwA+A674qMAqg6O4Q4Aqg6O4Q4AAw/G4n//TQ9t5Dr/cQ925R3/mQ+I5iL/wg/O5zr/6A8K6U//EBB76mX/MBDo65n/PxCJ7eP/QRAO74AAfxC27cAAbBBO7FgBRRCg6oMBEhA46ZAB3g/l54kBrg+t5n8Bfw9z5WMBVw9w5EYBNQ9m4xMB9A6/4bIArA6i4BwArA6i4BwABw/P4Y//WA9c40n/gw9b5C7/tA9o5Tf/5w+p5lr/FRDZ53f/RhA/6ZX/bBCh6tD/fhA37CEAfxC27cAAvhBe7AEBpRAA65cBchBX6b4BNRD658QB9g+45rsBuw+I5a4BhA9W5IcBVw9b42MBMQ9a4ikB8A7D4MAArg623yoArg623yoACw/W4KD/Yw9L4lf/lQ9A4z7/zg9J5Ez/ChCE5Xv/QBCn5p//fBAE6MT/qBBb6QcAvRDl6mAAvhBe7AEB/hAF60IB3hCy6dcBnhAO6PcBVxC85vgBDhCL5e4ByA9j5N0BiQ8446wBVw9H4n8BLQ9O4UAB7A7I384AsQ7K3jkAsQ7K3jkADw/d37D/bQ864Wb/pg8m4k3/6Q8r42L/LhBf5Jz/bBB15cj/sRDI5vP/5BAV6D4A/RCV6Z4A/hAF60IBPRGs6YMBFxFj6BcCyhDE5jECeRCA5SwCJhBf5CEC1Q8+4w0CjQ8b4tABVw8z4ZsBKg9D4FYB6Q7N3t0Asw7d3UcAsw7d3UcAFA/j3sH/dw8o4HT/uA8M4V3/AxAN4nj/UhA6477/lxBE5PH/5hCN5SIAHxHQ5nQAPRFE6NwAPRGs6YMBfRFS6MUBTxES51YC9hB75WkCmxBE5GACPxAz41UC4Q8Z4j0Ckg/+4PUBWA8g4LcBJw8532sB5Q7S3esAtg7v3FYAtg7v3FYAGA/n3dH/gA8X34H/yQ/z32z/HhDw4I7/dRAV4uD/wRAT4xoAHBFS5FEAWxGL5asAfRH05hsBfRFS6MUBvRH35gYCiBHB5ZYCIhEz5KICvRAJ45QCVxAH4okC7A/14GwClQ/i3xkCWA8N39MBIw8v3oEB4g7Y3PoAuQ4A3GUAuQ4A3GUAHA/r3OH/ig8H3o7/2g/c3nv/OBDU36T/mBDw4AIA6xDi4UMAUREY438AmBFI5OIAvRGk5VkBvRH35gYC/RGb5UgCwRFv5NUCTRHr4toC3xDP4cgCbhDb4L4C9w/Q35wCmQ/G3j0CWA/73e8BIQ8m3ZcB3w7d2wgBvA4R23QAvA4R23QAIA/u2/H/kw/33Jv/6w/F3Yv/UxC43rv/uxDL3yUAFRGx4GsAhhHe4a4A1BEF4xgB/RFU5JgB/RGb5UgCPRI/5IoC+REc4xQDeBGj4RMDARGW4P0ChhCv3/MCAhCs3ssCnQ+q3WACWQ/p3AsCHg8d3K0B3Q7j2hcBvw4g2oMAvw4g2oMAIw/v2gEAnA/o26j//A+v3Jv/bhCc3dP/3hCm3kcAPxGB35MAvBGl4NwAERLC4U8BPhIF49YBPRI/5IkCfRLh4ssCMRLJ4VIDoxFd4EsDJBFe3zIDnhCD3ikDDRCI3foCoQ+P3IQCWw/X2yYCHQ8V28MB2g7o2SYBwg4v2ZIAwg4v2ZIAJw/x2REApA/a2rX/DRCa26v/iBCB3Oz/ARGB3WoAaRFS3rsA8hFs3wsBTxKA4IUBfhK14RUCfRLh4ssCvBKC4Q0DaRJ14JADzxEY34MDRxEm3mgDthBX3V8DGBBj3CgDpQ9126cCXA/G2kICGw8N2tkB2A7t2DUBxA482KEAxA482KEAKg/x2CAArQ/N2cL/HxCH2rz/oxBm2wUAIxFb3IwAkxEi3eMAKBIz3jkBjRI+37wBvxJl4FQCvBKC4Q0D/BIi4E4DoBIh384D+hHT3bwDaRHw3J4DzRAr3JQDIxA/21UDqg9b2skCXg+12V0CGg8F2e8B1Q7x10QBxg5J168Axg5J168ALA/x1y8Atg/A2ND/MBB02c7/vhBM2h4ARhE2268AvRH02wkBXxL73GcByxL83fMBABMU35MC/BIi4E4DOxPC3o8D1xLM3QwEJhKQ3PUDjRG629YD5RD+2soDLxAc2oIDrw9B2ewCYQ+k2HkCGg/91wUC0w711lMByA5U1r4AyA5U1r4ALw/x1j0AwA+1193/QhBi2OH/2RAy2TgAaRER2tAA6BHF2jABlhLD25UBChO63CoCQRPE3dICOxPC3o8DehNg3dADDhN43EkEUhJN2y8EsBGE2g4E/BDR2f8DOxD42K4DtQ8o2A4DZA+T15QCGQ/01hwC0A741WIByQ5f1cwAyQ5f1cwAMQ/w1UsAyQ+r1uz/VRBR1/T/9BAX2FMAjBHr2PIAExKY2VUBzRKL2sMBSRN322ECghNy3BEDehNg3dADuBP+2xEERRMk24cEfhIM2mkE0xFP2UcEFBGk2DQERxDU19kDuw8O1y8DZw+B1rACGQ/r1TICzQ771HEByg5p1NoAyg5p1NoAMg/w1FkA0w+h1fv/ZxBA1gkADxH91m4ArxHG1xIBPxJq2HoBBRNT2fEBiBM02pkCwxMh21ADuBP+2xAE9ROc2lEEexPQ2cQEqxLL2KUE9xEa2IEEKxF312kEVBCw1gMEwg/11VEDaw9w1cwCGQ/i1EkCyg7+04AByg5z0+cAyg5z0+cANA/v02cA3g+Y1AsAehAv1R4AKhHi1YkA0hGg1jIBaxI9158BPRMb2B8CxxPx2NACAxTO2Y8D9ROc2lAEMhQ52ZAEsRN82AAF2BKL1+EEGxLl1rsEQhFJ1p0EYRCN1S0EyQ/c1HIDbg9e1OgCGQ/Y02ACxg4A048ByQ590vQAyQ590vQANQ/v0nQA6Q+Q0xwAjhAf1DUARRHI1KQA9RF61VEBmRIQ1sIBdhPi1k0CBhSt1wcDQxR82M4DMxQ52ZAEbxTW19AE5xMo1z0FBhNM1h4FPxKx1fYEWhEb1dAEcBBp1FUE0Q/D05QDcg9M0wQDGA/N0ncCwg4B0p0ByA6G0QEByA6G0QEBNg/v0YEA9A+I0i4AoRAP00wAYBGt078AGRJU1G8BxxLi1OYBrxOq1XsCRRRp1j8DgxQp1w0EbxTW19AErBR01hAFHxTW1XsFNRMN1VwFZBJ81DIFchHt0wQFfhBG034E2Q+p0rYDdA850iADFg/C0Y0CvA4C0asBxg6O0AwBxg6O0AwBNg/v0I4AABCA0UAAtRD/0WMAexGR0toAPhIu04sB9hK20wgC6BNy1KkChRQl1XcDxBTX1UwErBR01g8F7RQW1VIFWRSH1L0FZxPQ058FihJJ03IFiRHA0jkFjBAi0qgE3g+P0dgDcw8k0T0DEA+00KMCsw4A0LcBvw6UzxUBvw6UzxUBMw/tz5cAChB20E8AyBDs0HcAlhF10fEAYxII0qUBKBOJ0ikCJBQ609cCxxTi068DCBWH1I0E7RQW1VEFNhW+05oFmxQ+0wUGnhOX0uoFshIX0rgFnxGT0XIFlxD+0NUE3w9z0P0Daw8N0FkDAg+jz7cCnw75zr4Brw6VzhcBrw6VzhcBKQ/mzpkAEBBoz1cA2BDXz4UAsBFW0AIBixLh0LkBXhNd0UcCZxQF0gQDERWj0ukDVRU809EENhW+05kFhhVp0ucF4xT30VQG2RNg0TsG2xLn0AMGtRFn0K8FoBDazwQF2g9WzyIEXA/1znUD7A6QzskChQ7wzcIBmQ6TzRUBmQ6TzRUBGA/dzZYAEhBYzloA5hDAzo0AyRE2zw4BtBK5z8oBmRMx0GMCrhTQ0DEDYhVl0SQEqBXz0RkFhhVp0uYFzRUM0S4GJBWp0JwGEBQj0IYGAhOyz0gGzBE5z+UFrRC2zi8F2w87zkYEVA/fzZED3Q6Bzd0Ccg7vzMkBig6azBcBig6azBcBEA/czJoAGRBOzWYA9xCtzZ0A4xEZzh8B3RKSzt0B0BMEz4IC7xSYz18DqRUh0F4E8xWj0F0FzRUM0S0G/xWiz2UGVBVRz9MGPRTezsAGJRN4zn0G5hEJzgwGwxCTzU8F6g8jzWYEWw/PzK0D4A56zPQCdQ74y9oBkQ6vyykBkQ6vyykBGg/my7AALhBLzIUADxGgzL8A/hH/zD4BARNtzfoB/hPVzacCHxVazo8D2xXVzpMEJxZIz5cF/xWiz2UG7BUZzmwGTBXezdEGRRSFzcMGNxMwzX8GBxLRzAkG9xBvzFUFJBASzHsEmA/Ly8sDIw+EyxsDwA4byxAC3g7hymwB3g7hymwBXw8Ly/8AaRBdy98APhGhyxgBHxLvy4sBGRNKzDcCDBSjzOACGRURzcIDyhV2zbgEExbUza0F7BUZzmwG8xRDzM4FhhQlzBEG0RPzywoGFBPAy9gFQRKHy38FhxFMywIF8xAUy24EjxDoyvQDPRC+ynoD+w+AysICEhBgylMCEhBgylMCaxB2yg0CJRGlyvwBtxHNyiQCUhL6ym8CARMxy+MCqxNoy1sDYRSqy/oD2xTmy6QEDxUdzE0F8xRDzM0FIBX3ygEGshTiykUG+hO6yj8GNROOygkGXBJayqcFoBEnyicFBBH1yZIEmxDOyRQERxCpyZcDBhB2ydsCHxBdyWwCHxBdyWwCexBsySgCPBGTyRwC0RG0yUQCbhLbyY4CJBMLygED1BM8yoADixR2yiYEBhWqytQEPRXZyoEFIBX3ygEGURWsyTcG4BSgyXsGJBSCyXcGVhNcyTsGdxIvydAFtxECyUwFFBHWyLYEpBC0yDQEThCUyLMDDhBqyPICKhBYyIICKhBYyIICiRBgyEACURF+yDoC6RGayGMCihK7yKsCSBPlyB4D/xMRyaQDtRRDyVIEMxVwyQQFbhWWybYFURWsyTcGghVhyG0GDxVeyLIGThRKyK8GeBMryG4GkRIDyPkFzxHdx3MFIhG3x9oErBCZx1QEVBB+x84DFhBexwkDNRBTx5kCNRBTx5kClhBUx1kCZRFqx1YCABKAx4ACpRKax8YCbBO+xzoDKRTlx8gD4BQQyH4EYhU1yDQFoBVUyOsFghVhyG0G\",\"hang\":\"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\",\"uv\":\"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27b//wvD//88z///bdv//57n///O8////////w==\",\"tri\":\"AAABABYAAQAXABYAAQACABcAAgAYABcAAgADABgAAwAZABgAAwAEABkABAAaABkABAAFABoABQAbABoABQAGABsABgAcABsABgAHABwABwAdABwABwAIAB0ACAAeAB0ACAAJAB4ACQAfAB4ACQAKAB8ACgAgAB8ACgALACAACwAhACAACwAMACEADAAiACEADAANACIADQAjACIADQAOACMADgAkACMADgAPACQADwAlACQADwAQACUAEAAmACUAEAARACYAEQAnACYAEQASACcAEgAoACcAEgATACgAEwApACgAEwAUACkAFAAqACkAFAAVACoAFQArACoAFQAAACsAAAAWACsAFgAXACwAFwAtACwAFwAYAC0AGAAuAC0AGAAZAC4AGQAvAC4AGQAaAC8AGgAwAC8AGgAbADAAGwAxADAAGwAcADEAHAAyADEAHAAdADIAHQAzADIAHQAeADMAHgA0ADMAHgAfADQAHwA1ADQAHwAgADUAIAA2ADUAIAAhADYAIQA3ADYAIQAiADcAIgA4ADcAIgAjADgAIwA5ADgAIwAkADkAJAA6ADkAJAAlADoAJQA7ADoAJQAmADsAJgA8ADsAJgAnADwAJwA9ADwAJwAoAD0AKAA+AD0AKAApAD4AKQA/AD4AKQAqAD8AKgBAAD8AKgArAEAAKwBBAEAAKwAWAEEAFgAsAEEALAAtAEIALQBDAEIALQAuAEMALgBEAEMALgAvAEQALwBFAEQALwAwAEUAMABGAEUAMAAxAEYAMQBHAEYAMQAyAEcAMgBIAEcAMgAzAEgAMwBJAEgAMwA0AEkANABKAEkANAA1AEoANQBLAEoANQA2AEsANgBMAEsANgA3AEwANwBNAEwANwA4AE0AOABOAE0AOAA5AE4AOQBPAE4AOQA6AE8AOgBQAE8AOgA7AFAAOwBRAFAAOwA8AFEAPABSAFEAPAA9AFIAPQBTAFIAPQA+AFMAPgBUAFMAPgA/AFQAPwBVAFQAPwBAAFUAQABWAFUAQABBAFYAQQBXAFYAQQAsAFcALABCAFcAQgBDAFgAQwBZAFgAQwBEAFkARABaAFkARABFAFoARQBbAFoARQBGAFsARgBcAFsARgBHAFwARwBdAFwARwBIAF0ASABeAF0ASABJAF4ASQBfAF4ASQBKAF8ASgBgAF8ASgBLAGAASwBhAGAASwBMAGEATABiAGEATABNAGIATQBjAGIATQBOAGMATgBkAGMATgBPAGQATwBlAGQATwBQAGUAUABmAGUAUABRAGYAUQBnAGYAUQBSAGcAUgBoAGcAUgBTAGgAUwBpAGgAUwBUAGkAVABqAGkAVABVAGoAVQBrAGoAVQBWAGsAVgBsAGsAVgBXAGwAVwBtAGwAVwBCAG0AQgBYAG0AWABZAG4AWQBvAG4AWQBaAG8AWgBwAG8AWgBbAHAAWwBxAHAAWwBcAHEAXAByAHEAXABdAHIAXQBzAHIAXQBeAHMAXgB0AHMAXgBfAHQAXwB1AHQAXwBgAHUAYAB2AHUAYABhAHYAYQB3AHYAYQBiAHcAYgB4AHcAYgBjAHgAYwB5AHgAYwBkAHkAZAB6AHkAZABlAHoAZQB7AHoAZQBmAHsAZgB8AHsAZgBnAHwAZwB9AHwAZwBoAH0AaAB+AH0AaABpAH4AaQB/AH4AaQBqAH8AagCAAH8AagBrAIAAawCBAIAAawBsAIEAbACCAIEAbABtAIIAbQCDAIIAbQBYAIMAWABuAIMAbgBvAIQAbwCFAIQAbwBwAIUAcACGAIUAcABxAIYAcQCHAIYAcQByAIcAcgCIAIcAcgBzAIgAcwCJAIgAcwB0AIkAdACKAIkAdAB1AIoAdQCLAIoAdQB2AIsAdgCMAIsAdgB3AIwAdwCNAIwAdwB4AI0AeACOAI0AeAB5AI4AeQCPAI4AeQB6AI8AegCQAI8AegB7AJAAewCRAJAAewB8AJEAfACSAJEAfAB9AJIAfQCTAJIAfQB+AJMAfgCUAJMAfgB/AJQAfwCVAJQAfwCAAJUAgACWAJUAgACBAJYAgQCXAJYAgQCCAJcAggCYAJcAggCDAJgAgwCZAJgAgwBuAJkAbgCEAJkAhACFAJoAhQCbAJoAhQCGAJsAhgCcAJsAhgCHAJwAhwCdAJwAhwCIAJ0AiACeAJ0AiACJAJ4AiQCfAJ4AiQCKAJ8AigCgAJ8AigCLAKAAiwChAKAAiwCMAKEAjACiAKEAjACNAKIAjQCjAKIAjQCOAKMAjgCkAKMAjgCPAKQAjwClAKQAjwCQAKUAkACmAKUAkACRAKYAkQCnAKYAkQCSAKcAkgCoAKcAkgCTAKgAkwCpAKgAkwCUAKkAlACqAKkAlACVAKoAlQCrAKoAlQCWAKsAlgCsAKsAlgCXAKwAlwCtAKwAlwCYAK0AmACuAK0AmACZAK4AmQCvAK4AmQCEAK8AhACaAK8AmgCbALAAmwCxALAAmwCcALEAnACyALEAnACdALIAnQCzALIAnQCeALMAngC0ALMAngCfALQAnwC1ALQAnwCgALUAoAC2ALUAoAChALYAoQC3ALYAoQCiALcAogC4ALcAogCjALgAowC5ALgAowCkALkApAC6ALkApAClALoApQC7ALoApQCmALsApgC8ALsApgCnALwApwC9ALwApwCoAL0AqAC+AL0AqACpAL4AqQC/AL4AqQCqAL8AqgDAAL8AqgCrAMAAqwDBAMAAqwCsAMEArADCAMEArACtAMIArQDDAMIArQCuAMMArgDEAMMArgCvAMQArwDFAMQArwCaAMUAmgCwAMUAsACxAMYAsQDHAMYAsQCyAMcAsgDIAMcAsgCzAMgAswDJAMgAswC0AMkAtADKAMkAtAC1AMoAtQDLAMoAtQC2AMsAtgDMAMsAtgC3AMwAtwDNAMwAtwC4AM0AuADOAM0AuAC5AM4AuQDPAM4AuQC6AM8AugDQAM8AugC7ANAAuwDRANAAuwC8ANEAvADSANEAvAC9ANIAvQDTANIAvQC+ANMAvgDUANMAvgC/ANQAvwDVANQAvwDAANUAwADWANUAwADBANYAwQDXANYAwQDCANcAwgDYANcAwgDDANgAwwDZANgAwwDEANkAxADaANkAxADFANoAxQDbANoAxQCwANsAsADGANsAxgDHANwAxwDdANwAxwDIAN0AyADeAN0AyADJAN4AyQDfAN4AyQDKAN8AygDgAN8AygDLAOAAywDhAOAAywDMAOEAzADiAOEAzADNAOIAzQDjAOIAzQDOAOMAzgDkAOMAzgDPAOQAzwDlAOQAzwDQAOUA0ADmAOUA0ADRAOYA0QDnAOYA0QDSAOcA0gDoAOcA0gDTAOgA0wDpAOgA0wDUAOkA1ADqAOkA1ADVAOoA1QDrAOoA1QDWAOsA1gDsAOsA1gDXAOwA1wDtAOwA1wDYAO0A2ADuAO0A2ADZAO4A2QDvAO4A2QDaAO8A2gDwAO8A2gDbAPAA2wDxAPAA2wDGAPEAxgDcAPEA3ADdAPIA3QDzAPIA3QDeAPMA3gD0APMA3gDfAPQA3wD1APQA3wDgAPUA4AD2APUA4ADhAPYA4QD3APYA4QDiAPcA4gD4APcA4gDjAPgA4wD5APgA4wDkAPkA5AD6APkA5ADlAPoA5QD7APoA5QDmAPsA5gD8APsA5gDnAPwA5wD9APwA5wDoAP0A6AD+AP0A6ADpAP4A6QD/AP4A6QDqAP8A6gAAAf8A6gDrAAAB6wABAQAB6wDsAAEB7AACAQEB7ADtAAIB7QADAQIB7QDuAAMB7gAEAQMB7gDvAAQB7wAFAQQB7wDwAAUB8AAGAQUB8ADxAAYB8QAHAQYB8QDcAAcB3ADyAAcB8gDzAAgB8wAJAQgB8wD0AAkB9AAKAQkB9AD1AAoB9QALAQoB9QD2AAsB9gAMAQsB9gD3AAwB9wANAQwB9wD4AA0B+AAOAQ0B+AD5AA4B+QAPAQ4B+QD6AA8B+gAQAQ8B+gD7ABAB+wARARAB+wD8ABEB/AASAREB/AD9ABIB/QATARIB/QD+ABMB/gAUARMB/gD/ABQB/wAVARQB/wAAARUBAAEWARUBAAEBARYBAQEXARYBAQECARcBAgEYARcBAgEDARgBAwEZARgBAwEEARkBBAEaARkBBAEFARoBBQEbARoBBQEGARsBBgEcARsBBgEHARwBBwEdARwBBwHyAB0B8gAIAR0BCAEJAR4BCQEfAR4BCQEKAR8BCgEgAR8BCgELASABCwEhASABCwEMASEBDAEiASEBDAENASIBDQEjASIBDQEOASMBDgEkASMBDgEPASQBDwElASQBDwEQASUBEAEmASUBEAERASYBEQEnASYBEQESAScBEgEoAScBEgETASgBEwEpASgBEwEUASkBFAEqASkBFAEVASoBFQErASoBFQEWASsBFgEsASsBFgEXASwBFwEtASwBFwEYAS0BGAEuAS0BGAEZAS4BGQEvAS4BGQEaAS8BGgEwAS8BGgEbATABGwExATABGwEcATEBHAEyATEBHAEdATIBHQEzATIBHQEIATMBCAEeATMBHgEfATQBHwE1ATQBHwEgATUBIAE2ATUBIAEhATYBIQE3ATYBIQEiATcBIgE4ATcBIgEjATgBIwE5ATgBIwEkATkBJAE6ATkBJAElAToBJQE7AToBJQEmATsBJgE8ATsBJgEnATwBJwE9ATwBJwEoAT0BKAE+AT0BKAEpAT4BKQE/AT4BKQEqAT8BKgFAAT8BKgErAUABKwFBAUABKwEsAUEBLAFCAUEBLAEtAUIBLQFDAUIBLQEuAUMBLgFEAUMBLgEvAUQBLwFFAUQBLwEwAUUBMAFGAUUBMAExAUYBMQFHAUYBMQEyAUcBMgFIAUcBMgEzAUgBMwFJAUgBMwEeAUkBHgE0AUkBNAE1AUoBNQFLAUoBNQE2AUsBNgFMAUsBNgE3AUwBNwFNAUwBNwE4AU0BOAFOAU0BOAE5AU4BOQFPAU4BOQE6AU8BOgFQAU8BOgE7AVABOwFRAVABOwE8AVEBPAFSAVEBPAE9AVIBPQFTAVIBPQE+AVMBPgFUAVMBPgE/AVQBPwFVAVQBPwFAAVUBQAFWAVUBQAFBAVYBQQFXAVYBQQFCAVcBQgFYAVcBQgFDAVgBQwFZAVgBQwFEAVkBRAFaAVkBRAFFAVoBRQFbAVoBRQFGAVsBRgFcAVsBRgFHAVwBRwFdAVwBRwFIAV0BSAFeAV0BSAFJAV4BSQFfAV4BSQE0AV8BNAFKAV8BSgFLAWABSwFhAWABSwFMAWEBTAFiAWEBTAFNAWIBTQFjAWIBTQFOAWMBTgFkAWMBTgFPAWQBTwFlAWQBTwFQAWUBUAFmAWUBUAFRAWYBUQFnAWYBUQFSAWcBUgFoAWcBUgFTAWgBUwFpAWgBUwFUAWkBVAFqAWkBVAFVAWoBVQFrAWoBVQFWAWsBVgFsAWsBVgFXAWwBVwFtAWwBVwFYAW0BWAFuAW0BWAFZAW4BWQFvAW4BWQFaAW8BWgFwAW8BWgFbAXABWwFxAXABWwFcAXEBXAFyAXEBXAFdAXIBXQFzAXIBXQFeAXMBXgF0AXMBXgFfAXQBXwF1AXQBXwFKAXUBSgFgAXUBYAFhAXYBYQF3AXYBYQFiAXcBYgF4AXcBYgFjAXgBYwF5AXgBYwFkAXkBZAF6AXkBZAFlAXoBZQF7AXoBZQFmAXsBZgF8AXsBZgFnAXwBZwF9AXwBZwFoAX0BaAF+AX0BaAFpAX4BaQF/AX4BaQFqAX8BagGAAX8BagFrAYABawGBAYABawFsAYEBbAGCAYEBbAFtAYIBbQGDAYIBbQFuAYMBbgGEAYMBbgFvAYQBbwGFAYQBbwFwAYUBcAGGAYUBcAFxAYYBcQGHAYYBcQFyAYcBcgGIAYcBcgFzAYgBcwGJAYgBcwF0AYkBdAGKAYkBdAF1AYoBdQGLAYoBdQFgAYsBYAF2AYsBdgF3AYwBdwGNAYwBdwF4AY0BeAGOAY0BeAF5AY4BeQGPAY4BeQF6AY8BegGQAY8BegF7AZABewGRAZABewF8AZEBfAGSAZEBfAF9AZIBfQGTAZIBfQF+AZMBfgGUAZMBfgF/AZQBfwGVAZQBfwGAAZUBgAGWAZUBgAGBAZYBgQGXAZYBgQGCAZcBggGYAZcBggGDAZgBgwGZAZgBgwGEAZkBhAGaAZkBhAGFAZoBhQGbAZoBhQGGAZsBhgGcAZsBhgGHAZwBhwGdAZwBhwGIAZ0BiAGeAZ0BiAGJAZ4BiQGfAZ4BiQGKAZ8BigGgAZ8BigGLAaABiwGhAaABiwF2AaEBdgGMAaEBjAGNAaIBjQGjAaIBjQGOAaMBjgGkAaMBjgGPAaQBjwGlAaQBjwGQAaUBkAGmAaUBkAGRAaYBkQGnAaYBkQGSAacBkgGoAacBkgGTAagBkwGpAagBkwGUAakBlAGqAakBlAGVAaoBlQGrAaoBlQGWAasBlgGsAasBlgGXAawBlwGtAawBlwGYAa0BmAGuAa0BmAGZAa4BmQGvAa4BmQGaAa8BmgGwAa8BmgGbAbABmwGxAbABmwGcAbEBnAGyAbEBnAGdAbIBnQGzAbIBnQGeAbMBngG0AbMBngGfAbQBnwG1AbQBnwGgAbUBoAG2AbUBoAGhAbYBoQG3AbYBoQGMAbcBjAGiAbcBogGjAbgBowG5AbgBowGkAbkBpAG6AbkBpAGlAboBpQG7AboBpQGmAbsBpgG8AbsBpgGnAbwBpwG9AbwBpwGoAb0BqAG+Ab0BqAGpAb4BqQG/Ab4BqQGqAb8BqgHAAb8BqgGrAcABqwHBAcABqwGsAcEBrAHCAcEBrAGtAcIBrQHDAcIBrQGuAcMBrgHEAcMBrgGvAcQBrwHFAcQBrwGwAcUBsAHGAcUBsAGxAcYBsQHHAcYBsQGyAccBsgHIAccBsgGzAcgBswHJAcgBswG0AckBtAHKAckBtAG1AcoBtQHLAcoBtQG2AcsBtgHMAcsBtgG3AcwBtwHNAcwBtwGiAc0BogG4Ac0BuAG5Ac4BuQHPAc4BuQG6Ac8BugHQAc8BugG7AdABuwHRAdABuwG8AdEBvAHSAdEBvAG9AdIBvQHTAdIBvQG+AdMBvgHUAdMBvgG/AdQBvwHVAdQBvwHAAdUBwAHWAdUBwAHBAdYBwQHXAdYBwQHCAdcBwgHYAdcBwgHDAdgBwwHZAdgBwwHEAdkBxAHaAdkBxAHFAdoBxQHbAdoBxQHGAdsBxgHcAdsBxgHHAdwBxwHdAdwBxwHIAd0ByAHeAd0ByAHJAd4ByQHfAd4ByQHKAd8BygHgAd8BygHLAeABywHhAeABywHMAeEBzAHiAeEBzAHNAeIBzQHjAeIBzQG4AeMBuAHOAeMBzgHPAeQBzwHlAeQBzwHQAeUB0AHmAeUB0AHRAeYB0QHnAeYB0QHSAecB0gHoAecB0gHTAegB0wHpAegB0wHUAekB1AHqAekB1AHVAeoB1QHrAeoB1QHWAesB1gHsAesB1gHXAewB1wHtAewB1wHYAe0B2AHuAe0B2AHZAe4B2QHvAe4B2QHaAe8B2gHwAe8B2gHbAfAB2wHxAfAB2wHcAfEB3AHyAfEB3AHdAfIB3QHzAfIB3QHeAfMB3gH0AfMB3gHfAfQB3wH1AfQB3wHgAfUB4AH2AfUB4AHhAfYB4QH3AfYB4QHiAfcB4gH4AfcB4gHjAfgB4wH5AfgB4wHOAfkBzgHkAfkB5AHlAfoB5QH7AfoB5QHmAfsB5gH8AfsB5gHnAfwB5wH9AfwB5wHoAf0B6AH+Af0B6AHpAf4B6QH/Af4B6QHqAf8B6gEAAv8B6gHrAQAC6wEBAgAC6wHsAQEC7AECAgEC7AHtAQIC7QEDAgIC7QHuAQMC7gEEAgMC7gHvAQQC7wEFAgQC7wHwAQUC8AEGAgUC8AHxAQYC8QEHAgYC8QHyAQcC8gEIAgcC8gHzAQgC8wEJAggC8wH0AQkC9AEKAgkC9AH1AQoC9QELAgoC9QH2AQsC9gEMAgsC9gH3AQwC9wENAgwC9wH4AQ0C+AEOAg0C+AH5AQ4C+QEPAg4C+QHkAQ8C5AH6AQ8C+gH7ARAC+wERAhAC+wH8AREC/AESAhEC/AH9ARIC/QETAhIC/QH+ARMC/gEUAhMC/gH/ARQC/wEVAhQC/wEAAhUCAAIWAhUCAAIBAhYCAQIXAhYCAQICAhcCAgIYAhcCAgIDAhgCAwIZAhgCAwIEAhkCBAIaAhkCBAIFAhoCBQIbAhoCBQIGAhsCBgIcAhsCBgIHAhwCBwIdAhwCBwIIAh0CCAIeAh0CCAIJAh4CCQIfAh4CCQIKAh8CCgIgAh8CCgILAiACCwIhAiACCwIMAiECDAIiAiECDAINAiICDQIjAiICDQIOAiMCDgIkAiMCDgIPAiQCDwIlAiQCDwL6ASUC+gEQAiUCEAIRAiYCEQInAiYCEQISAicCEgIoAicCEgITAigCEwIpAigCEwIUAikCFAIqAikCFAIVAioCFQIrAioCFQIWAisCFgIsAisCFgIXAiwCFwItAiwCFwIYAi0CGAIuAi0CGAIZAi4CGQIvAi4CGQIaAi8CGgIwAi8CGgIbAjACGwIxAjACGwIcAjECHAIyAjECHAIdAjICHQIzAjICHQIeAjMCHgI0AjMCHgIfAjQCHwI1AjQCHwIgAjUCIAI2AjUCIAIhAjYCIQI3AjYCIQIiAjcCIgI4AjcCIgIjAjgCIwI5AjgCIwIkAjkCJAI6AjkCJAIlAjoCJQI7AjoCJQIQAjsCEAImAjsCJgInAjwCJwI9AjwCJwIoAj0CKAI+Aj0CKAIpAj4CKQI/Aj4CKQIqAj8CKgJAAj8CKgIrAkACKwJBAkACKwIsAkECLAJCAkECLAItAkICLQJDAkICLQIuAkMCLgJEAkMCLgIvAkQCLwJFAkQCLwIwAkUCMAJGAkUCMAIxAkYCMQJHAkYCMQIyAkcCMgJIAkcCMgIzAkgCMwJJAkgCMwI0AkkCNAJKAkkCNAI1AkoCNQJLAkoCNQI2AksCNgJMAksCNgI3AkwCNwJNAkwCNwI4Ak0COAJOAk0COAI5Ak4COQJPAk4COQI6Ak8COgJQAk8COgI7AlACOwJRAlACOwImAlECJgI8AlECPAI9AlICPQJTAlICPQI+AlMCPgJUAlMCPgI/AlQCPwJVAlQCPwJAAlUCQAJWAlUCQAJBAlYCQQJXAlYCQQJCAlcCQgJYAlcCQgJDAlgCQwJZAlgCQwJEAlkCRAJaAlkCRAJFAloCRQJbAloCRQJGAlsCRgJcAlsCRgJHAlwCRwJdAlwCRwJIAl0CSAJeAl0CSAJJAl4CSQJfAl4CSQJKAl8CSgJgAl8CSgJLAmACSwJhAmACSwJMAmECTAJiAmECTAJNAmICTQJjAmICTQJOAmMCTgJkAmMCTgJPAmQCTwJlAmQCTwJQAmUCUAJmAmUCUAJRAmYCUQJnAmYCUQI8AmcCPAJSAmcCUgJTAmgCUwJpAmgCUwJUAmkCVAJqAmkCVAJVAmoCVQJrAmoCVQJWAmsCVgJsAmsCVgJXAmwCVwJtAmwCVwJYAm0CWAJuAm0CWAJZAm4CWQJvAm4CWQJaAm8CWgJwAm8CWgJbAnACWwJxAnACWwJcAnECXAJyAnECXAJdAnICXQJzAnICXQJeAnMCXgJ0AnMCXgJfAnQCXwJ1AnQCXwJgAnUCYAJ2AnUCYAJhAnYCYQJ3AnYCYQJiAncCYgJ4AncCYgJjAngCYwJ5AngCYwJkAnkCZAJ6AnkCZAJlAnoCZQJ7AnoCZQJmAnsCZgJ8AnsCZgJnAnwCZwJ9AnwCZwJSAn0CUgJoAn0CaAJpAn4CaQJ/An4CaQJqAn8CagKAAn8CagJrAoACawKBAoACawJsAoECbAKCAoECbAJtAoICbQKDAoICbQJuAoMCbgKEAoMCbgJvAoQCbwKFAoQCbwJwAoUCcAKGAoUCcAJxAoYCcQKHAoYCcQJyAocCcgKIAocCcgJzAogCcwKJAogCcwJ0AokCdAKKAokCdAJ1AooCdQKLAooCdQJ2AosCdgKMAosCdgJ3AowCdwKNAowCdwJ4Ao0CeAKOAo0CeAJ5Ao4CeQKPAo4CeQJ6Ao8CegKQAo8CegJ7ApACewKRApACewJ8ApECfAKSApECfAJ9ApICfQKTApICfQJoApMCaAJ+ApMCfgJ/ApQCfwKVApQCfwKAApUCgAKWApUCgAKBApYCgQKXApYCgQKCApcCggKYApcCggKDApgCgwKZApgCgwKEApkChAKaApkChAKFApoChQKbApoChQKGApsChgKcApsChgKHApwChwKdApwChwKIAp0CiAKeAp0CiAKJAp4CiQKfAp4CiQKKAp8CigKgAp8CigKLAqACiwKhAqACiwKMAqECjAKiAqECjAKNAqICjQKjAqICjQKOAqMCjgKkAqMCjgKPAqQCjwKlAqQCjwKQAqUCkAKmAqUCkAKRAqYCkQKnAqYCkQKSAqcCkgKoAqcCkgKTAqgCkwKpAqgCkwJ+AqkCfgKUAqkC\",\"ao\":\"//779e7o4tzW0tLW4Oz3/f/////////9+fLr5N3W0c/R2eTw+f3////////+/Pfv597VzMfJ0Nrl8Pn9/////////vv17uTZzcK+xM/Z5O/4/f////////779u7k18i8usLO2ePu9/3////////++/fw5tfGubjBzdji7ff9/////////vz48ujZx7m3wMzX4u33/f////////79+fTq28i6t8DL1uHt9/3+///////+/fv27d3Jure/y9Xg7Pf8/v////////38+O/fy7u3v8rU4Oz2/P7////////+/Pnw4My8uL7J1N/r9vz+/v///////v368uLOvbi+ydPe6/b8/v7///////7++/Pjz764vsjS3ur2/P7+/////////vv05NC/uL3H0t3q9fz+/v////////789ObRwLi8xtHc6fX8/v7////////+/PXn08C3u8XQ2+n1/P7+//////////z26NTBt7rEz9rp9fz+/v/////////99unWw7i5w87a6PX8/v7//////////ffq18S5ucLN2ej1/P7+//////////3369nGubjBzNjo9fz+///////////9+OzbyLq4v8vY5/X8/v///////////fju3cm6t77J1+f0/P7///////////3579/Lu7a9ydfn9Pz+///////////++vDhzr22vcnX5/X8/v///////////vry5NLAusDM2un1/P7///////7+/v779OjXx8HH0t/r9fv9/v///v79/f39+/Xr3M7Jztji6/P5/P7+/v79/Pz9/Pv27eDTztHY4Ojx9/v9/f38/Pz8/fz79u7h08zP1t3m7/f7/f39/Pz9/f39+/bt3tDLz9be5/H4+/39/f38/f39/fr06NnMy9LZ4ev0+fz9/f39/Q==\"},{\"rings\":30,\"around\":22,\"pos\":\"IvC98f//E/Ax8JoAB/B77tIAC/D17PIAEfBv6/QAGPAb6vUAIvDK6PYAMfCv5/AAP/CQ5s8AcvC15IcAwvBl4/P/qvBl4/P/YPCz5F//NfCO5hr/K/Ct5/v+HvDI6Pj+FvAZ6vz+D/Bs6wD/CvDz7Af/BvB57ir/EfAv8Gb/HvC98f//Z+9l8EAAbu/m7tkAfu8y7Q4Bm++26ycBu+9A6iUB2O/36CIB9u+t5xoBE/Ca5g0BLfCC5eYAbfC445UAwfB64gEAwfB64gEAavC942//J/B+5Sr/C/CS5g3/6u+o5w3/y+/06Bv/ru876if/j++36zb/dO8w7WH/au/c7qX/Z+9l8EAAKO8O74AANu+a7RgBUe/q60kBee936lwBo+8T6VcBye/S51AB8O+Q5j4BE/CF5SkBMfB05PwAcfC74qMAv/CO4Q4Av/CO4Q4AZvDG4n//HPBt5Dr/+O925R3/0O+I5iL/p+/O5zr/ge8K6U//We976mX/Oe/o65n/Ku+J7eP/KO8O74AA6u627cAA/e5O7FgBJO+g6oMBV+846ZABi+/l54kBu++t5n8B6u9z5WMBEvBw5EYBNPBm4xMBdfC/4bIAvfCi4BwAvfCi4BwAYvDP4Y//EfBc40n/5u9b5C7/te9o5Tf/g++p5lr/Ve/Z53f/I+8/6ZX//e6h6tD/6+437CEA6u627cAAq+5e7AEBxO4A65cB9+5X6b4BNO/658QBc++45rsBru+I5a4B5e9W5IcBEvBb42MBOPBa4ikBefDD4MAAu/C23yoAu/C23yoAXvDW4KD/BvBL4lf/1O9A4z7/m+9J5Ez/X++E5Xv/Ke+n5p//7e4E6MT/we5b6QcArO7l6mAAq+5e7AEBa+4F60IBi+6y6dcBy+4O6PcBEu+85vgBW++L5e4Boe9j5N0B4O8446wBEvBH4n8BPPBO4UABffDI384AuPDK3jkAuPDK3jkAWvDd37D//O864Wb/w+8m4k3/gO8r42L/O+9f5Jz//e515cj/uO7I5vP/he4V6D4AbO6V6Z4Aa+4F60IBLO6s6YMBU+5j6BcCn+7E5jEC8O6A5SwCQ+9f5CEClO8+4w0C3O8b4tABEvAz4ZsBP/BD4FYBgPDN3t0AtvDd3UcAtvDd3UcAVvDj3sH/8u8o4HT/su8M4V3/Zu8N4nj/F+86477/0u5E5PH/g+6N5SIASu7Q5nQALO5E6NwALO6s6YMB7O1S6MUBGu4S51YCc+575WkCzu5E5GACK+8z41UCiO8Z4j0C2O/+4PUBEvAg4LcBQ/A532sBhPDS3esAs/Dv3FYAs/Dv3FYAUfDn3dH/6e8X34H/oO/z32z/S+/w4I7/9O4V4uD/qO4T4xoATe5S5FEADu6L5asA7O305hsB7O1S6MUBrO335gYC4e3B5ZYCR+4z5KICrO4J45QCE+8H4okCfe/14GwC1O/i3xkCEfAN39MBRvAv3oEBh/DY3PoAsPAA3GUAsPAA3GUATfDr3OH/3+8H3o7/j+/c3nv/Me/U36T/0e7w4AIAfu7i4UMAGO4Y438A0e1I5OIArO2k5VkBrO335gYCbO2b5UgCqe1v5NUCHO7r4toCiu7P4cgC++7b4L4Ccu/Q35wC0O/G3j0CEfD73e8BSPAm3ZcBivDd2wgBrfAR23QArfAR23QASfDu2/H/1u/33Jv/fu/F3Yv/Fu+43rv/ru7L3yUAVO6x4GsA4+3e4a4Ale0F4xgBbO1U5JgBbO2b5UgCLO0/5IoCcO0c4xQD8e2j4RMDaO6W4P0C4+6v3/MCZ++s3ssCzO+q3WACEPDp3AsCS/Ad3K0BjPDj2hcBqvAg2oMAqvAg2oMARvDv2gEAze/o26j/be+v3Jv/++6c3dP/i+6m3kcAKu6B35MAre2l4NwAWO3C4U8BK+0F49YBLO0/5IkC7Ozh4ssCOO3J4VIDxu1d4EsDRe5e3zIDy+6D3ikDXO+I3foCyO+P3IQCD/DX2yYCTfAV28MBj/Do2SYBqPAv2ZIAqPAv2ZIAQvDx2REAxe/a2rX/XO+a26v/4e6B3Oz/aO6B3WoAAO5S3rsAd+1s3wsBGu2A4IUB6+y14RUC7Ozh4ssCreyC4Q0DAe114JADmu0Y34MDIu4m3mgDs+5X3V8DUe9j3CgDxO9126cCDfDG2kICTvAN2tkBkfDt2DUBpfA82KEApfA82KEAP/Dx2CAAvO/N2cL/Su+H2rz/xu5m2wUARu5b3IwA1u0i3eMAQe0z3jkB3Ow+37wBquxl4FQCreyC4Q0Dbewi4E4Dyewh384Db+3T3bwDAO7w3J4DnO4r3JQDRu8/21UDv+9b2skCC/C12V0CT/AF2e8BlPDx10QBo/BJ168Ao/BJ168APfDx1y8As+/A2ND/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\",\"hang\":\"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\",\"uv\":\"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27b//wvD//88z///bdv//57n///O8////////w==\",\"tri\":\"AAAWAAEAAQAWABcAAQAXAAIAAgAXABgAAgAYAAMAAwAYABkAAwAZAAQABAAZABoABAAaAAUABQAaABsABQAbAAYABgAbABwABgAcAAcABwAcAB0ABwAdAAgACAAdAB4ACAAeAAkACQAeAB8ACQAfAAoACgAfACAACgAgAAsACwAgACEACwAhAAwADAAhACIADAAiAA0ADQAiACMADQAjAA4ADgAjACQADgAkAA8ADwAkACUADwAlABAAEAAlACYAEAAmABEAEQAmACcAEQAnABIAEgAnACgAEgAoABMAEwAoACkAEwApABQAFAApACoAFAAqABUAFQAqACsAFQArAAAAAAArABYAFgAsABcAFwAsAC0AFwAtABgAGAAtAC4AGAAuABkAGQAuAC8AGQAvABoAGgAvADAAGgAwABsAGwAwADEAGwAxABwAHAAxADIAHAAyAB0AHQAyADMAHQAzAB4AHgAzADQAHgA0AB8AHwA0ADUAHwA1ACAAIAA1ADYAIAA2ACEAIQA2ADcAIQA3ACIAIgA3ADgAIgA4ACMAIwA4ADkAIwA5ACQAJAA5ADoAJAA6ACUAJQA6ADsAJQA7ACYAJgA7ADwAJgA8ACcAJwA8AD0AJwA9ACgAKAA9AD4AKAA+ACkAKQA+AD8AKQA/ACoAKgA/AEAAKgBAACsAKwBAAEEAKwBBABYAFgBBACwALABCAC0ALQBCAEMALQBDAC4ALgBDAEQALgBEAC8ALwBEAEUALwBFADAAMABFAEYAMABGADEAMQBGAEcAMQBHADIAMgBHAEgAMgBIADMAMwBIAEkAMwBJADQANABJAEoANABKADUANQBKAEsANQBLADYANgBLAEwANgBMADcANwBMAE0ANwBNADgAOABNAE4AOABOADkAOQBOAE8AOQBPADoAOgBPAFAAOgBQADsAOwBQAFEAOwBRADwAPABRAFIAPABSAD0APQBSAFMAPQBTAD4APgBTAFQAPgBUAD8APwBUAFUAPwBVAEAAQABVAFYAQABWAEEAQQBWAFcAQQBXACwALABXAEIAQgBYAEMAQwBYAFkAQwBZAEQARABZAFoARABaAEUARQBaAFsARQBbAEYARgBbAFwARgBcAEcARwBcAF0ARwBdAEgASABdAF4ASABeAEkASQBeAF8ASQBfAEoASgBfAGAASgBgAEsASwBgAGEASwBhAEwATABhAGIATABiAE0ATQBiAGMATQBjAE4ATgBjAGQATgBkAE8ATwBkAGUATwBlAFAAUABlAGYAUABmAFEAUQBmAGcAUQBnAFIAUgBnAGgAUgBoAFMAUwBoAGkAUwBpAFQAVABpAGoAVABqAFUAVQBqAGsAVQBrAFYAVgBrAGwAVgBsAFcAVwBsAG0AVwBtAEIAQgBtAFgAWABuAFkAWQBuAG8AWQBvAFoAWgBvAHAAWgBwAFsAWwBwAHEAWwBxAFwAXABxAHIAXAByAF0AXQByAHMAXQBzAF4AXgBzAHQAXgB0AF8AXwB0AHUAXwB1AGAAYAB1AHYAYAB2AGEAYQB2AHcAYQB3AGIAYgB3AHgAYgB4AGMAYwB4AHkAYwB5AGQAZAB5AHoAZAB6AGUAZQB6AHsAZQB7AGYAZgB7AHwAZgB8AGcAZwB8AH0AZwB9AGgAaAB9AH4AaAB+AGkAaQB+AH8AaQB/AGoAagB/AIAAagCAAGsAawCAAIEAawCBAGwAbACBAIIAbACCAG0AbQCCAIMAbQCDAFgAWACDAG4AbgCEAG8AbwCEAIUAbwCFAHAAcACFAIYAcACGAHEAcQCGAIcAcQCHAHIAcgCHAIgAcgCIAHMAcwCIAIkAcwCJAHQAdACJAIoAdACKAHUAdQCKAIsAdQCLAHYAdgCLAIwAdgCMAHcAdwCMAI0AdwCNAHgAeACNAI4AeACOAHkAeQCOAI8AeQCPAHoAegCPAJAAegCQAHsAewCQAJEAewCRAHwAfACRAJIAfACSAH0AfQCSAJMAfQCTAH4AfgCTAJQAfgCUAH8AfwCUAJUAfwCVAIAAgACVAJYAgACWAIEAgQCWAJcAgQCXAIIAggCXAJgAggCYAIMAgwCYAJkAgwCZAG4AbgCZAIQAhACaAIUAhQCaAJsAhQCbAIYAhgCbAJwAhgCcAIcAhwCcAJ0AhwCdAIgAiACdAJ4AiACeAIkAiQCeAJ8AiQCfAIoAigCfAKAAigCgAIsAiwCgAKEAiwChAIwAjAChAKIAjACiAI0AjQCiAKMAjQCjAI4AjgCjAKQAjgCkAI8AjwCkAKUAjwClAJAAkAClAKYAkACmAJEAkQCmAKcAkQCnAJIAkgCnAKgAkgCoAJMAkwCoAKkAkwCpAJQAlACpAKoAlACqAJUAlQCqAKsAlQCrAJYAlgCrAKwAlgCsAJcAlwCsAK0AlwCtAJgAmACtAK4AmACuAJkAmQCuAK8AmQCvAIQAhACvAJoAmgCwAJsAmwCwALEAmwCxAJwAnACxALIAnACyAJ0AnQCyALMAnQCzAJ4AngCzALQAngC0AJ8AnwC0ALUAnwC1AKAAoAC1ALYAoAC2AKEAoQC2ALcAoQC3AKIAogC3ALgAogC4AKMAowC4ALkAowC5AKQApAC5ALoApAC6AKUApQC6ALsApQC7AKYApgC7ALwApgC8AKcApwC8AL0ApwC9AKgAqAC9AL4AqAC+AKkAqQC+AL8AqQC/AKoAqgC/AMAAqgDAAKsAqwDAAMEAqwDBAKwArADBAMIArADCAK0ArQDCAMMArQDDAK4ArgDDAMQArgDEAK8ArwDEAMUArwDFAJoAmgDFALAAsADGALEAsQDGAMcAsQDHALIAsgDHAMgAsgDIALMAswDIAMkAswDJALQAtADJAMoAtADKALUAtQDKAMsAtQDLALYAtgDLAMwAtgDMALcAtwDMAM0AtwDNALgAuADNAM4AuADOALkAuQDOAM8AuQDPALoAugDPANAAugDQALsAuwDQANEAuwDRALwAvADRANIAvADSAL0AvQDSANMAvQDTAL4AvgDTANQAvgDUAL8AvwDUANUAvwDVAMAAwADVANYAwADWAMEAwQDWANcAwQDXAMIAwgDXANgAwgDYAMMAwwDYANkAwwDZAMQAxADZANoAxADaAMUAxQDaANsAxQDbALAAsADbAMYAxgDcAMcAxwDcAN0AxwDdAMgAyADdAN4AyADeAMkAyQDeAN8AyQDfAMoAygDfAOAAygDgAMsAywDgAOEAywDhAMwAzADhAOIAzADiAM0AzQDiAOMAzQDjAM4AzgDjAOQAzgDkAM8AzwDkAOUAzwDlANAA0ADlAOYA0ADmANEA0QDmAOcA0QDnANIA0gDnAOgA0gDoANMA0wDoAOkA0wDpANQA1ADpAOoA1ADqANUA1QDqAOsA1QDrANYA1gDrAOwA1gDsANcA1wDsAO0A1wDtANgA2ADtAO4A2ADuANkA2QDuAO8A2QDvANoA2gDvAPAA2gDwANsA2wDwAPEA2wDxAMYAxgDxANwA3ADyAN0A3QDyAPMA3QDzAN4A3gDzAPQA3gD0AN8A3wD0APUA3wD1AOAA4AD1APYA4AD2AOEA4QD2APcA4QD3AOIA4gD3APgA4gD4AOMA4wD4APkA4wD5AOQA5AD5APoA5AD6AOUA5QD6APsA5QD7AOYA5gD7APwA5gD8AOcA5wD8AP0A5wD9AOgA6AD9AP4A6AD+AOkA6QD+AP8A6QD/AOoA6gD/AAAB6gAAAesA6wAAAQEB6wABAewA7AABAQIB7AACAe0A7QACAQMB7QADAe4A7gADAQQB7gAEAe8A7wAEAQUB7wAFAfAA8AAFAQYB8AAGAfEA8QAGAQcB8QAHAdwA3AAHAfIA8gAIAfMA8wAIAQkB8wAJAfQA9AAJAQoB9AAKAfUA9QAKAQsB9QALAfYA9gALAQwB9gAMAfcA9wAMAQ0B9wANAfgA+AANAQ4B+AAOAfkA+QAOAQ8B+QAPAfoA+gAPARAB+gAQAfsA+wAQAREB+wARAfwA/AARARIB/AASAf0A/QASARMB/QATAf4A/gATARQB/gAUAf8A/wAUARUB/wAVAQABAAEVARYBAAEWAQEBAQEWARcBAQEXAQIBAgEXARgBAgEYAQMBAwEYARkBAwEZAQQBBAEZARoBBAEaAQUBBQEaARsBBQEbAQYBBgEbARwBBgEcAQcBBwEcAR0BBwEdAfIA8gAdAQgBCAEeAQkBCQEeAR8BCQEfAQoBCgEfASABCgEgAQsBCwEgASEBCwEhAQwBDAEhASIBDAEiAQ0BDQEiASMBDQEjAQ4BDgEjASQBDgEkAQ8BDwEkASUBDwElARABEAElASYBEAEmAREBEQEmAScBEQEnARIBEgEnASgBEgEoARMBEwEoASkBEwEpARQBFAEpASoBFAEqARUBFQEqASsBFQErARYBFgErASwBFgEsARcBFwEsAS0BFwEtARgBGAEtAS4BGAEuARkBGQEuAS8BGQEvARoBGgEvATABGgEwARsBGwEwATEBGwExARwBHAExATIBHAEyAR0BHQEyATMBHQEzAQgBCAEzAR4BHgE0AR8BHwE0ATUBHwE1ASABIAE1ATYBIAE2ASEBIQE2ATcBIQE3ASIBIgE3ATgBIgE4ASMBIwE4ATkBIwE5ASQBJAE5AToBJAE6ASUBJQE6ATsBJQE7ASYBJgE7ATwBJgE8AScBJwE8AT0BJwE9ASgBKAE9AT4BKAE+ASkBKQE+AT8BKQE/ASoBKgE/AUABKgFAASsBKwFAAUEBKwFBASwBLAFBAUIBLAFCAS0BLQFCAUMBLQFDAS4BLgFDAUQBLgFEAS8BLwFEAUUBLwFFATABMAFFAUYBMAFGATEBMQFGAUcBMQFHATIBMgFHAUgBMgFIATMBMwFIAUkBMwFJAR4BHgFJATQBNAFKATUBNQFKAUsBNQFLATYBNgFLAUwBNgFMATcBNwFMAU0BNwFNATgBOAFNAU4BOAFOATkBOQFOAU8BOQFPAToBOgFPAVABOgFQATsBOwFQAVEBOwFRATwBPAFRAVIBPAFSAT0BPQFSAVMBPQFTAT4BPgFTAVQBPgFUAT8BPwFUAVUBPwFVAUABQAFVAVYBQAFWAUEBQQFWAVcBQQFXAUIBQgFXAVgBQgFYAUMBQwFYAVkBQwFZAUQBRAFZAVoBRAFaAUUBRQFaAVsBRQFbAUYBRgFbAVwBRgFcAUcBRwFcAV0BRwFdAUgBSAFdAV4BSAFeAUkBSQFeAV8BSQFfATQBNAFfAUoBSgFgAUsBSwFgAWEBSwFhAUwBTAFhAWIBTAFiAU0BTQFiAWMBTQFjAU4BTgFjAWQBTgFkAU8BTwFkAWUBTwFlAVABUAFlAWYBUAFmAVEBUQFmAWcBUQFnAVIBUgFnAWgBUgFoAVMBUwFoAWkBUwFpAVQBVAFpAWoBVAFqAVUBVQFqAWsBVQFrAVYBVgFrAWwBVgFsAVcBVwFsAW0BVwFtAVgBWAFtAW4BWAFuAVkBWQFuAW8BWQFvAVoBWgFvAXABWgFwAVsBWwFwAXEBWwFxAVwBXAFxAXIBXAFyAV0BXQFyAXMBXQFzAV4BXgFzAXQBXgF0AV8BXwF0AXUBXwF1AUoBSgF1AWABYAF2AWEBYQF2AXcBYQF3AWIBYgF3AXgBYgF4AWMBYwF4AXkBYwF5AWQBZAF5AXoBZAF6AWUBZQF6AXsBZQF7AWYBZgF7AXwBZgF8AWcBZwF8AX0BZwF9AWgBaAF9AX4BaAF+AWkBaQF+AX8BaQF/AWoBagF/AYABagGAAWsBawGAAYEBawGBAWwBbAGBAYIBbAGCAW0BbQGCAYMBbQGDAW4BbgGDAYQBbgGEAW8BbwGEAYUBbwGFAXABcAGFAYYBcAGGAXEBcQGGAYcBcQGHAXIBcgGHAYgBcgGIAXMBcwGIAYkBcwGJAXQBdAGJAYoBdAGKAXUBdQGKAYsBdQGLAWABYAGLAXYBdgGMAXcBdwGMAY0BdwGNAXgBeAGNAY4BeAGOAXkBeQGOAY8BeQGPAXoBegGPAZABegGQAXsBewGQAZEBewGRAXwBfAGRAZIBfAGSAX0BfQGSAZMBfQGTAX4BfgGTAZQBfgGUAX8BfwGUAZUBfwGVAYABgAGVAZYBgAGWAYEBgQGWAZcBgQGXAYIBggGXAZgBggGYAYMBgwGYAZkBgwGZAYQBhAGZAZoBhAGaAYUBhQGaAZsBhQGbAYYBhgGbAZwBhgGcAYcBhwGcAZ0BhwGdAYgBiAGdAZ4BiAGeAYkBiQGeAZ8BiQGfAYoBigGfAaABigGgAYsBiwGgAaEBiwGhAXYBdgGhAYwBjAGiAY0BjQGiAaMBjQGjAY4BjgGjAaQBjgGkAY8BjwGkAaUBjwGlAZABkAGlAaYBkAGmAZEBkQGmAacBkQGnAZIBkgGnAagBkgGoAZMBkwGoAakBkwGpAZQBlAGpAaoBlAGqAZUBlQGqAasBlQGrAZYBlgGrAawBlgGsAZcBlwGsAa0BlwGtAZgBmAGtAa4BmAGuAZkBmQGuAa8BmQGvAZoBmgGvAbABmgGwAZsBmwGwAbEBmwGxAZwBnAGxAbIBnAGyAZ0BnQGyAbMBnQGzAZ4BngGzAbQBngG0AZ8BnwG0AbUBnwG1AaABoAG1AbYBoAG2AaEBoQG2AbcBoQG3AYwBjAG3AaIBogG4AaMBowG4AbkBowG5AaQBpAG5AboBpAG6AaUBpQG6AbsBpQG7AaYBpgG7AbwBpgG8AacBpwG8Ab0BpwG9AagBqAG9Ab4BqAG+AakBqQG+Ab8BqQG/AaoBqgG/AcABqgHAAasBqwHAAcEBqwHBAawBrAHBAcIBrAHCAa0BrQHCAcMBrQHDAa4BrgHDAcQBrgHEAa8BrwHEAcUBrwHFAbABsAHFAcYBsAHGAbEBsQHGAccBsQHHAbIBsgHHAcgBsgHIAbMBswHIAckBswHJAbQBtAHJAcoBtAHKAbUBtQHKAcsBtQHLAbYBtgHLAcwBtgHMAbcBtwHMAc0BtwHNAaIBogHNAbgBuAHOAbkBuQHOAc8BuQHPAboBugHPAdABugHQAbsBuwHQAdEBuwHRAbwBvAHRAdIBvAHSAb0BvQHSAdMBvQHTAb4BvgHTAdQBvgHUAb8BvwHUAdUBvwHVAcABwAHVAdYBwAHWAcEBwQHWAdcBwQHXAcIBwgHXAdgBwgHYAcMBwwHYAdkBwwHZAcQBxAHZAdoBxAHaAcUBxQHaAdsBxQHbAcYBxgHbAdwBxgHcAccBxwHcAd0BxwHdAcgByAHdAd4ByAHeAckByQHeAd8ByQHfAcoBygHfAeABygHgAcsBywHgAeEBywHhAcwBzAHhAeIBzAHiAc0BzQHiAeMBzQHjAbgBuAHjAc4BzgHkAc8BzwHkAeUBzwHlAdAB0AHlAeYB0AHmAdEB0QHmAecB0QHnAdIB0gHnAegB0gHoAdMB0wHoAekB0wHpAdQB1AHpAeoB1AHqAdUB1QHqAesB1QHrAdYB1gHrAewB1gHsAdcB1wHsAe0B1wHtAdgB2AHtAe4B2AHuAdkB2QHuAe8B2QHvAdoB2gHvAfAB2gHwAdsB2wHwAfEB2wHxAdwB3AHxAfIB3AHyAd0B3QHyAfMB3QHzAd4B3gHzAfQB3gH0Ad8B3wH0AfUB3wH1AeAB4AH1AfYB4AH2AeEB4QH2AfcB4QH3AeIB4gH3AfgB4gH4AeMB4wH4AfkB4wH5Ac4BzgH5AeQB5AH6AeUB5QH6AfsB5QH7AeYB5gH7AfwB5gH8AecB5wH8Af0B5wH9AegB6AH9Af4B6AH+AekB6QH+Af8B6QH/AeoB6gH/AQAC6gEAAusB6wEAAgEC6wEBAuwB7AEBAgIC7AECAu0B7QECAgMC7QEDAu4B7gEDAgQC7gEEAu8B7wEEAgUC7wEFAvAB8AEFAgYC8AEGAvEB8QEGAgcC8QEHAvIB8gEHAggC8gEIAvMB8wEIAgkC8wEJAvQB9AEJAgoC9AEKAvUB9QEKAgsC9QELAvYB9gELAgwC9gEMAvcB9wEMAg0C9wENAvgB+AENAg4C+AEOAvkB+QEOAg8C+QEPAuQB5AEPAvoB+gEQAvsB+wEQAhEC+wERAvwB/AERAhIC/AESAv0B/QESAhMC/QETAv4B/gETAhQC/gEUAv8B/wEUAhUC/wEVAgACAAIVAhYCAAIWAgECAQIWAhcCAQIXAgICAgIXAhgCAgIYAgMCAwIYAhkCAwIZAgQCBAIZAhoCBAIaAgUCBQIaAhsCBQIbAgYCBgIbAhwCBgIcAgcCBwIcAh0CBwIdAggCCAIdAh4CCAIeAgkCCQIeAh8CCQIfAgoCCgIfAiACCgIgAgsCCwIgAiECCwIhAgwCDAIhAiICDAIiAg0CDQIiAiMCDQIjAg4CDgIjAiQCDgIkAg8CDwIkAiUCDwIlAvoB+gElAhACEAImAhECEQImAicCEQInAhICEgInAigCEgIoAhMCEwIoAikCEwIpAhQCFAIpAioCFAIqAhUCFQIqAisCFQIrAhYCFgIrAiwCFgIsAhcCFwIsAi0CFwItAhgCGAItAi4CGAIuAhkCGQIuAi8CGQIvAhoCGgIvAjACGgIwAhsCGwIwAjECGwIxAhwCHAIxAjICHAIyAh0CHQIyAjMCHQIzAh4CHgIzAjQCHgI0Ah8CHwI0AjUCHwI1AiACIAI1AjYCIAI2AiECIQI2AjcCIQI3AiICIgI3AjgCIgI4AiMCIwI4AjkCIwI5AiQCJAI5AjoCJAI6AiUCJQI6AjsCJQI7AhACEAI7AiYCJgI8AicCJwI8Aj0CJwI9AigCKAI9Aj4CKAI+AikCKQI+Aj8CKQI/AioCKgI/AkACKgJAAisCKwJAAkECKwJBAiwCLAJBAkICLAJCAi0CLQJCAkMCLQJDAi4CLgJDAkQCLgJEAi8CLwJEAkUCLwJFAjACMAJFAkYCMAJGAjECMQJGAkcCMQJHAjICMgJHAkgCMgJIAjMCMwJIAkkCMwJJAjQCNAJJAkoCNAJKAjUCNQJKAksCNQJLAjYCNgJLAkwCNgJMAjcCNwJMAk0CNwJNAjgCOAJNAk4COAJOAjkCOQJOAk8COQJPAjoCOgJPAlACOgJQAjsCOwJQAlECOwJRAiYCJgJRAjwCPAJSAj0CPQJSAlMCPQJTAj4CPgJTAlQCPgJUAj8CPwJUAlUCPwJVAkACQAJVAlYCQAJWAkECQQJWAlcCQQJXAkICQgJXAlgCQgJYAkMCQwJYAlkCQwJZAkQCRAJZAloCRAJaAkUCRQJaAlsCRQJbAkYCRgJbAlwCRgJcAkcCRwJcAl0CRwJdAkgCSAJdAl4CSAJeAkkCSQJeAl8CSQJfAkoCSgJfAmACSgJgAksCSwJgAmECSwJhAkwCTAJhAmICTAJiAk0CTQJiAmMCTQJjAk4CTgJjAmQCTgJkAk8CTwJkAmUCTwJlAlACUAJlAmYCUAJmAlECUQJmAmcCUQJnAjwCPAJnAlICUgJoAlMCUwJoAmkCUwJpAlQCVAJpAmoCVAJqAlUCVQJqAmsCVQJrAlYCVgJrAmwCVgJsAlcCVwJsAm0CVwJtAlgCWAJtAm4CWAJuAlkCWQJuAm8CWQJvAloCWgJvAnACWgJwAlsCWwJwAnECWwJxAlwCXAJxAnICXAJyAl0CXQJyAnMCXQJzAl4CXgJzAnQCXgJ0Al8CXwJ0AnUCXwJ1AmACYAJ1AnYCYAJ2AmECYQJ2AncCYQJ3AmICYgJ3AngCYgJ4AmMCYwJ4AnkCYwJ5AmQCZAJ5AnoCZAJ6AmUCZQJ6AnsCZQJ7AmYCZgJ7AnwCZgJ8AmcCZwJ8An0CZwJ9AlICUgJ9AmgCaAJ+AmkCaQJ+An8CaQJ/AmoCagJ/AoACagKAAmsCawKAAoECawKBAmwCbAKBAoICbAKCAm0CbQKCAoMCbQKDAm4CbgKDAoQCbgKEAm8CbwKEAoUCbwKFAnACcAKFAoYCcAKGAnECcQKGAocCcQKHAnICcgKHAogCcgKIAnMCcwKIAokCcwKJAnQCdAKJAooCdAKKAnUCdQKKAosCdQKLAnYCdgKLAowCdgKMAncCdwKMAo0CdwKNAngCeAKNAo4CeAKOAnkCeQKOAo8CeQKPAnoCegKPApACegKQAnsCewKQApECewKRAnwCfAKRApICfAKSAn0CfQKSApMCfQKTAmgCaAKTAn4CfgKUAn8CfwKUApUCfwKVAoACgAKVApYCgAKWAoECgQKWApcCgQKXAoICggKXApgCggKYAoMCgwKYApkCgwKZAoQChAKZApoChAKaAoUChQKaApsChQKbAoYChgKbApwChgKcAocChwKcAp0ChwKdAogCiAKdAp4CiAKeAokCiQKeAp8CiQKfAooCigKfAqACigKgAosCiwKgAqECiwKhAowCjAKhAqICjAKiAo0CjQKiAqMCjQKjAo4CjgKjAqQCjgKkAo8CjwKkAqUCjwKlApACkAKlAqYCkAKmApECkQKmAqcCkQKnApICkgKnAqgCkgKoApMCkwKoAqkCkwKpAn4CfgKpApQC\",\"ao\":\"///9+vbw6uPa09DT3Or2/f/////////+/Pfy6+Pa0s7P1uHv+f3//////////fnz6+LYzsfIztfk8Pj9/////////vz37+bbzsO+w83Y4+/4/f////////779u/l2Mm9usHN1+Lt9/3////////++/fw5tjHurjAzNfh7ff9/////////vz48ujZx7m3wMvW4Oz3/P////////79+fTr28i5t7/K1N/s9vz+///////+/fv27d3Jure+ydPf6/b8/v////////38+O/eyru3vsjS3uv2/P7////////+/Pnw4My8t73H0t3q9fz+/v///////v368uLNvbe9x9Hc6fX8/v7///////7++/Pjz723vMbQ2+n1/P7+/////////vv05NC+t7vFz9ro9fz+/v////////789OXRv7e6xM7a5/T8/v7////////+/PXm0sC2ucPN2ef0/P7+//////////z259TBt7nCzNjm9Pv+/v/////////99unVwre4wcvX5vT7/v7//////////ffq18S4uMDK1uX0+/7+//////////3369nGubi/ydXl8/v+///////////9+OzbyLq3vsjU5PP7/v///////////fju3cm6tr3H1OTz+/7///////////3579/Lu7a8xtPk8/v+///////////++vDhzr22vMbU5fP7/v///////////vry5NLBur/K1+f0+/7///////7+/v379OjXx8HG0Nzq9Pr9/v///v79/f39+/Xr3M/Kztfg6vP5/P7+/v79/Pz9/Pv27eDUztHY4Ojw9/v9/f38/Pz8/fz79u7h1M3Q1t3m7/b6/P39/Pz9/f39+/bt39HMz9bd5/D3+/39/f38/f39/fr06dnNzNLZ4evz+fz9/f39/Q==\"}],\n    neck: [110,111,112,113,114,115,0,1,2,3,4,5,6,917,916,915,914,913,912,911,1026,1025,1024,1023,1022,1021],\n  },\n  shirt: {\n    pattern: {\"half\":0.245,\"shoulderX\":0.275,\"shoulderDrop\":0.072,\"neckHalf\":0.095,\"neckFront\":0.2,\"neckBack\":0.03,\"armpit\":0.37,\"sleeve\":{\"top\":0.27,\"under\":0.14,\"cuff\":0.48},\"length\":0.84,\"vNeck\":true,\"open\":{\"chest\":0.024,\"hem\":0.05,\"sleeveRoot\":0.045,\"cuff\":0.052}},\n    front: {\"pat\":\"AAAz88MAn/SFAQv2LgJT99YCm/hlA7759APh+mgE4PvdBN/8kwWU/hQGAABcB33/pAj6/uwJd/4zC/T9ewxx/cMN7vwKD2r8UhDn+5oRZPuPEeT5hBFk+HoR5PZoEZD1VxE99EYR6vIiETLx/hB579AQBO6iEI/sahBe6zIQLequD1Lorg/r5q4PhOWuDx3krg+24q4PT+GuD+nfrg+C3q4PG92uD7Tbrg9N2q4P5tiuD3/Xrg8Y1q4PsdSuD0vTrg/k0a4PfdCuDxbPrg+vza4PSMyuD+HKCg89yqwNPcpODD3K8Ao9ypIJPco0CD3K1gY9yngFPcoaBD3KvAI9yl4BPcoAAD3Kov49ykT9Pcrm+z3KiPo9yir5PcrM9z3KbvY9yhD1Pcqy8z3KVPI9yvbwPcpS8OHKUvBIzFLwr81S8BbPUvB90FLw5NFS8EvTUvCx1FLwGNZS8H/XUvDm2FLwTdpS8LTbUvAb3VLwgt5S8OnfUvBP4VLwtuJS8B3kUvCE5VLw6+ZS8FLozu8t6pbvXute74/sMO8E7gLvee/e7jLxuu7q8qnuPfSY7pD1hu7k9nzuZPhx7uT5Zu5k+67v5/v28Gr8PfLu/IXzcf3N9PT9FPZ3/lz3+v6k+H3/7PkAAG36lP4j+9/8mPvg+wz84fqb/L75Kv2b+NL9U/d7/gv2Pf+f9OzxEsxU8xLMvPQSzCX2EsyN9xLM9vgSzF76EszH+xLML/0SzJj+EswAABLMaAESzNECEsw5BBLMogUSzAoHEsxzCBLM2wkSzEQLEsysDBLMFA4SzDfxSs2g8krNCPRKzXH1Ss3Z9krNQvhKzar5Ss0S+0rNe/xKzeP9Ss1M/0rNtABKzR0CSs2FA0rN7gRKzVYGSs2+B0rNJwlKzY8KSs34C0rNYA1KzckOSs3s8YLOVPOCzrz0gs4l9oLOjfeCzvb4gs5e+oLOx/uCzi/9gs6Y/oLOAACCzmgBgs7RAoLOOQSCzqIFgs4KB4LOcwiCztsJgs5EC4LOrAyCzhQOgs438brPoPK6zwj0us9x9brP2fa6z0L4us+q+brPEvu6z3v8us/j/brPTP+6z7QAus8dArrPhQO6z+4Eus9WBrrPvge6zycJus+PCrrP+Au6z2ANus/JDrrP7PHy0FTz8tC89PLQJfby0I338tD2+PLQXvry0Mf78tAv/fLQmP7y0AAA8tBoAfLQ0QLy0DkE8tCiBfLQCgfy0HMI8tDbCfLQRAvy0KwM8tAUDvLQN/Eq0qDyKtII9CrScfUq0tn2KtJC+CrSqvkq0hL7KtJ7/CrS4/0q0kz/KtK0ACrSHQIq0oUDKtLuBCrSVgYq0r4HKtInCSrSjwoq0vgLKtJgDSrSyQ4q0uzxY9NU82PTvPRj0yX2Y9ON92PT9vhj0176Y9PH+2PTL/1j05j+Y9MAAGPTaAFj09ECY9M5BGPTogVj0woHY9NzCGPT2wlj00QLY9OsDGPTFA5j0zfxm9Sg8pvUCPSb1HH1m9TZ9pvUQvib1Kr5m9QS+5vUe/yb1OP9m9RM/5vUtACb1B0Cm9SFA5vU7gSb1FYGm9S+B5vUJwmb1I8Km9T4C5vUYA2b1MkOm9Ts8dPVVPPT1bz009Ul9tPVjffT1fb409Ve+tPVx/vT1S/909WY/tPVAADT1WgB09XRAtPVOQTT1aIF09UKB9PVcwjT1dsJ09VEC9PVrAzT1RQO09U38QvXoPIL1wj0C9dx9QvX2fYL10L4C9eq+QvXEvsL13v8C9fj/QvXTP8L17QAC9cdAgvXhQML1+4EC9dWBgvXvgcL1ycJC9ePCgvX+AsL12ANC9fJDgvX7PFD2FTzQ9i89EPYJfZD2I33Q9j2+EPYXvpD2Mf7Q9gv/UPYmP5D2AAAQ9hoAUPY0QJD2DkEQ9iiBUPYCgdD2HMIQ9jbCUPYRAtD2KwMQ9gUDkPYN/F72aDye9kI9HvZcfV72dn2e9lC+HvZqvl72RL7e9l7/HvZ4/172Uz/e9m0AHvZHQJ72YUDe9nuBHvZVgZ72b4He9knCXvZjwp72fgLe9lgDXvZyQ572ezxtNpU87TavPS02iX2tNqN97Ta9vi02l76tNrH+7TaL/202pj+tNoAALTaaAG02tECtNo5BLTaogW02goHtNpzCLTa2wm02kQLtNqsDLTaFA602jfx7Nug8uzbCPTs23H17NvZ9uzbQvjs26r57NsS++zbe/zs2+P97NtM/+zbtADs2x0C7NuFA+zb7gTs21YG7Nu+B+zbJwns248K7Nv4C+zbYA3s28kO7Nvs8STdVPMk3bz0JN0l9iTdjfck3fb4JN1e+iTdx/sk3S/9JN2Y/iTdAAAk3WgBJN3RAiTdOQQk3aIFJN0KByTdcwgk3dsJJN1ECyTdrAwk3RQOJN038VzeoPJc3gj0XN5x9Vze2fZc3kL4XN6q+VzeEvtc3nv8XN7j/VzeTP9c3rQAXN4dAlzehQNc3u4EXN5WBlzevgdc3icJXN6PClze+Atc3mANXN7JDlze7PGU31TzlN+89JTfJfaU3433lN/2+JTfXvqU38f7lN8v/ZTfmP6U3wAAlN9oAZTf0QKU3zkElN+iBZTfCgeU33MIlN/bCZTfRAuU36wMlN8UDpTfN/HM4KDyzOAI9MzgcfXM4Nn2zOBC+MzgqvnM4BL7zOB7/Mzg4/3M4Ez/zOC0AMzgHQLM4IUDzODuBMzgVgbM4L4HzOAnCczgjwrM4PgLzOBgDczgyQ7M4OzxBeJU8wXivPQF4iX2BeKN9wXi9vgF4l76BeLH+wXiL/0F4pj+BeIAAAXiaAEF4tECBeI5BAXiogUF4goHBeJzCAXi2wkF4kQLBeKsDAXiFA4F4jfxPeOg8j3jCPQ943H1PePZ9j3jQvg946r5PeMS+z3je/w94+P9PeNM/z3jtAA94x0CPeOFAz3j7gQ941YGPeO+Bz3jJwk9448KPeP4Cz3jYA0948kOPePs8XXkVPN15Lz0deQl9nXkjfd15Pb4deRe+nXkx/t15C/9deSY/nXkAAB15GgBdeTRAnXkOQR15KIFdeQKB3Xkcwh15NsJdeREC3XkrAx15BQOdeQ38a3loPKt5Qj0reVx9a3l2fat5UL4reWq+a3lEvut5Xv8reXj/a3lTP+t5bQAreUdAq3lhQOt5e4EreVWBq3lvget5ScJreWPCq3l+Aut5WANreXJDq3l7PHl5lTz5ea89OXmJfbl5o335eb2+OXmXvrl5sf75eYv/eXmmP7l5gAA5eZoAeXm0QLl5jkE5eaiBeXmCgfl5nMI5ebbCeXmRAvl5qwM5eYUDuXmN/Ed6KDyHegI9B3ocfUd6Nn2HehC+B3oqvkd6BL7Heh7/B3o4/0d6Ez/Hei0AB3oHQId6IUDHejuBB3oVgYd6L4HHegnCR3ojwod6PgLHehgDR3oyQ4d6OzxVelU81XpvPRV6SX2VemN91Xp9vhV6V76VenH+1XpL/1V6Zj+VekAAFXpaAFV6dECVek5BFXpogVV6QoHVelzCFXp2wlV6UQLVemsDFXpFA5V6Tfxjuqg8o7qCPSO6nH1jurZ9o7qQviO6qr5juoS+47qe/yO6uP9jupM/47qtACO6h0CjuqFA47q7gSO6lYGjuq+B47qJwmO6o8Kjur4C47qYA2O6skOjuqD8Mbr7PHG61Tzxuu89MbrJfbG6433xuv2+MbrXvrG68f7xusv/cbrmP7G6wAAxutoAcbr0QLG6zkExuuiBcbrCgfG63MIxuvbCcbrRAvG66wMxusUDsbrfQ/G6zfx/uyg8v7sCPT+7HH1/uzZ9v7sQvj+7Kr5/uwS+/7se/z+7OP9/uxM//7stAD+7B0C/uyFA/7s7gT+7FYG/uy+B/7sJwn+7I8K/uz4C/7sYA3+7MkO/uyD8Dbu7PE27lTzNu689DbuJfY27o33Nu72+DbuXvo27sf7Nu4v/TbumP427gAANu5oATbu0QI27jkENu6iBTbuCgc27nMINu7bCTbuRAs27qwMNu4UDjbufQ827s/vbu838W7voPJu7wj0bu9x9W7v2fZu70L4bu+q+W7vEvtu73v8bu/j/W7vTP9u77QAbu8dAm7vhQNu7+4Ebu9WBm7vvgdu7ycJbu+PCm7v+Atu72ANbu/JDm7vMRBu74PwpvDs8abwVPOm8Lz0pvAl9qbwjfem8Pb4pvBe+qbwx/um8C/9pvCY/qbwAACm8GgBpvDRAqbwOQSm8KIFpvAKB6bwcwim8NsJpvBEC6bwrAym8BQOpvB9D6bwz+/f8Tfx3/Gg8t/xCPTf8XH13/HZ9t/xQvjf8ar53/ES+9/xe/zf8eP93/FM/9/xtADf8R0C3/GFA9/x7gTf8VYG3/G+B9/xJwnf8Y8K3/H4C9/xYA3f8ckO3/ExEN/xg/AX8+zxF/NU8xfzvPQX8yX2F/ON9xfz9vgX8176F/PH+xfzL/0X85j+F/NoARfz0QIX8zkEF/OiBRfzCgcX83MIF/PbCRfzRAsX86wMF/MUDhfzfQ8X88/vT/Q38U/0oPJP9Aj0T/Rx9U/02fZP9EL4T/Sq+U/0EvtP9Hv8T/Tj/U/0HQJP9IUDT/TuBE/0VgZP9L4HT/QnCU/0jwpP9PgLT/RgDU/0yQ5P9DEQT/SD8If17PGH9VTzh/W89If1JfaH9Y33h/X2+If1XvqH9cf7h/Uv/Yf10QKH9TkEh/WiBYf1CgeH9XMIh/XbCYf1RAuH9awMh/UUDof1fQ+H9c/vv/Y38b/2oPK/9gj0v/Zx9b/22fa/9kL4v/aq+b/2Evu/9nv8v/aFA7/27gS/9lYGv/a+B7/2Jwm/9o8Kv/b4C7/2YA2/9skOv/YxEL/2g/D39+zx9/dU8/f3vPT39yX29/eN9/f39vj391769/fH+/f3OQT396IF9/cKB/f3cwj399sJ9/dEC/f3rAz39xQO9/d9D/f3z+8v+TfxL/mg8i/5CPQv+XH1L/nZ9i/5Qvgv+ar5L/kS+y/57gQv+VYGL/m+By/5Jwkv+Y8KL/n4Cy/5YA0v+ckOL/kxEC/5g/Bo+uzxaPpU82j6vPRo+iX2aPqN92j69vho+l76aPqiBWj6Cgdo+nMIaPrbCWj6RAto+qwMaPoUDmj6fQ9o+jfxoPug8qD7CPSg+3H1oPvZ9qD7Qvig+6r5oPtWBqD7vgeg+ycJoPuPCqD7+Aug+2ANoPvJDqD7vPTY/CX22PyN99j89vjY/AoH2PxzCNj82wnY/EQL2PxC+BD+qvkQ/lYGEP6+BxD+\",\"pos\":\"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\",\"tri\":\"CgAJAAsAeAB3AHkATABLAIIATQBMAIIATgBNAIIASwBKAIMAggBLAIMASgBJAIQAgwBKAIQASQBIAIUAhABJAIUASABHAIYAhQBIAIYARwBGAIcAhgBHAIcARgBFAIgAhwBGAIgARQBEAIkAiABFAIkARABDAIoAiQBEAIoAQwBCAIsAigBDAIsAQQBAAIwAQgBBAIwAiwBCAIwAQAA/AI0AjABAAI0APwA+AI4AjQA/AI4APgA9AI8AjgA+AI8APQA8AJAAjwA9AJAAPAA7AJEAkAA8AJEAOwA6AJIAkQA7AJIAOgA5AJMAkgA6AJMAOQA4AJQAkwA5AJQAOAA3AJUAlAA4AJUANQA0AJYANgA1AJYANwA2AJYAlQA3AJYATwBOAJcATgCCAJcAggCDAJgAlwCCAJgAgwCEAJkAmACDAJkAhACFAJoAmQCEAJoAhQCGAJsAmgCFAJsAhgCHAJwAmwCGAJwAhwCIAJ0AnACHAJ0AiACJAJ4AnQCIAJ4AiQCKAJ8AngCJAJ8AigCLAKAAnwCKAKAAiwCMAKEAoACLAKEAjACNAKIAoQCMAKIAjQCOAKMAogCNAKMAjgCPAKQAowCOAKQAjwCQAKUApACPAKUAkACRAKYApQCQAKYAkQCSAKcApgCRAKcAkgCTAKgApwCSAKgAkwCUAKkAqACTAKkAlACVAKoAqQCUAKoAlQCWAKsAqgCVAKsANAAzAKwAlgA0AKwAqwCWAKwAUABPAK0ATwCXAK0AlwCYAK0AmACZAK4ArQCYAK4AmQCaAK8ArgCZAK8AmgCbALAArwCaALAAmwCcALEAsACbALEAnACdALIAsQCcALIAnQCeALMAsgCdALMAngCfALQAswCeALQAnwCgALUAtACfALUAoAChALYAtQCgALYAoQCiALcAtgChALcAogCjALgAtwCiALgAowCkALkAuACjALkApAClALoAuQCkALoApQCmALsAugClALsApgCnALwAuwCmALwApwCoAL0AvACnAL0AqACpAL4AvQCoAL4AqQCqAL8AvgCpAL8AqgCrAMAAvwCqAMAAMwAyAMEArAAzAMEAqwCsAMEAwACrAMEAUQBQAMIAUACtAMIArQCuAMMAwgCtAMMArgCvAMQAwwCuAMQArwCwAMUAxACvAMUAsACxAMYAxQCwAMYAsQCyAMcAxgCxAMcAsgCzAMgAxwCyAMgAswC0AMkAyACzAMkAtAC1AMoAyQC0AMoAtQC2AMsAygC1AMsAtgC3AMwAywC2AMwAtwC4AM0AzAC3AM0AuAC5AM4AzQC4AM4AuQC6AM8AzgC5AM8AugC7ANAAzwC6ANAAuwC8ANEA0AC7ANEAvAC9ANIA0QC8ANIAvQC+ANMA0gC9ANMAvgC/ANQA0wC+ANQAvwDAANUA1AC/ANUAwADBANYA1QDAANYAMgAxANcAwQAyANcA1gDBANcAUgBRANgAUQDCANgAwgDDANgAwwDEANkA2ADDANkAxADFANoA2QDEANoAxQDGANsA2gDFANsAxgDHANwA2wDGANwAxwDIAN0A3ADHAN0AyADJAN4A3QDIAN4AyQDKAN8A3gDJAN8AygDLAOAA3wDKAOAAywDMAOEA4ADLAOEAzADNAOIA4QDMAOIAzQDOAOMA4gDNAOMAzgDPAOQA4wDOAOQAzwDQAOUA5ADPAOUA0ADRAOYA5QDQAOYA0QDSAOcA5gDRAOcA0gDTAOgA5wDSAOgA0wDUAOkA6ADTAOkA1ADVAOoA6QDUAOoA1QDWAOsA6gDVAOsAMQAwAOwA1wAxAOwA1gDXAOwA6wDWAOwAUwBSAO0AUgDYAO0A2ADZAO4A7QDYAO4A2QDaAO8A7gDZAO8A2gDbAPAA7wDaAPAA2wDcAPEA8ADbAPEA3ADdAPIA8QDcAPIA3QDeAPMA8gDdAPMA3gDfAPQA8wDeAPQA3wDgAPUA9ADfAPUA4ADhAPYA9QDgAPYA4QDiAPcA9gDhAPcA4gDjAPgA9wDiAPgA4wDkAPkA+ADjAPkA5ADlAPoA+QDkAPoA5QDmAPsA+gDlAPsA5gDnAPwA+wDmAPwA5wDoAP0A/ADnAP0A6ADpAP4A/QDoAP4A6QDqAP8A/gDpAP8A6gDrAAAB/wDqAAAB6wDsAAEBAAHrAAEBMAAvAAIB7AAwAAIBAQHsAAIBUwDtAAMB7QDuAAMB7gDvAAQBAwHuAAQB7wDwAAUBBAHvAAUB8ADxAAYBBQHwAAYB8QDyAAcBBgHxAAcB8gDzAAgBBwHyAAgB8wD0AAkBCAHzAAkB9AD1AAoBCQH0AAoB9QD2AAsBCgH1AAsB9gD3AAwBCwH2AAwB9wD4AA0BDAH3AA0B+AD5AA4BDQH4AA4B+QD6AA8BDgH5AA8B+gD7ABABDwH6ABAB+wD8ABEBEAH7ABEB/AD9ABIBEQH8ABIB/QD+ABMBEgH9ABMB/gD/ABQBEwH+ABQB/wAAARUBFAH/ABUBAAEBARYBFQEAARYBAQECARcBFgEBARcBAgEvABcBVABTABgBUwADARgBVQBUABgBAwEEARkBGAEDARkBBAEFARoBGQEEARoBBQEGARsBGgEFARsBBgEHARwBGwEGARwBBwEIAR0BHAEHAR0BCAEJAR4BHQEIAR4BCQEKAR8BHgEJAR8BCgELASABHwEKASABCwEMASEBIAELASEBDAENASIBIQEMASIBDQEOASMBIgENASMBDgEPASQBIwEOASQBDwEQASUBJAEPASUBEAERASYBJQEQASYBEQESAScBJgERAScBEgETASgBJwESASgBEwEUASkBKAETASkBFAEVASoBKQEUASoBFQEWASsBKgEVASsBFgEXASwBKwEWASwBLwAuAC0BFwEvAC0BLgAtAC0BLAEXAS0BVQAYAS4BGAEZAS4BGQEaAS8BLgEZAS8BGgEbATABLwEaATABGwEcATEBMAEbATEBHAEdATIBMQEcATIBHQEeATMBMgEdATMBHgEfATQBMwEeATQBHwEgATUBNAEfATUBIAEhATYBNQEgATYBIQEiATcBNgEhATcBIgEjATgBNwEiATgBIwEkATkBOAEjATkBJAElAToBOQEkAToBJQEmATsBOgElATsBJgEnATwBOwEmATwBJwEoAT0BPAEnAT0BKAEpAT4BPQEoAT4BKQEqAT8BPgEpAT8BKgErAUABPwEqAUABKwEsAUEBQAErAUEBLAEtAUIBQQEsAUIBLQEtAEIBVgBVAEMBVQAuAUMBLgEvAUQBQwEuAUQBLwEwAUUBRAEvAUUBMAExAUYBRQEwAUYBMQEyAUcBRgExAUcBMgEzAUgBRwEyAUgBMwE0AUkBSAEzAUkBNAE1AUoBSQE0AUoBNQE2AUsBSgE1AUsBNgE3AUwBSwE2AUwBNwE4AU0BTAE3AU0BOAE5AU4BTQE4AU4BOQE6AU8BTgE5AU8BOgE7AVABTwE6AVABOwE8AVEBUAE7AVEBPAE9AVIBUQE8AVIBPQE+AVMBUgE9AVMBPgE/AVQBUwE+AVQBPwFAAVUBVAE/AVUBQAFBAVYBVQFAAVYBQQFCAVcBVgFBAVcBLQAsAFgBQgEtAFgBVwFCAVgBVwBWAFkBVgBDAVkBQwFEAVkBRAFFAVoBWQFEAVoBRQFGAVsBWgFFAVsBRgFHAVwBWwFGAVwBRwFIAV0BXAFHAV0BSAFJAV4BXQFIAV4BSQFKAV8BXgFJAV8BSgFLAWABXwFKAWABSwFMAWEBYAFLAWEBTAFNAWIBYQFMAWIBTQFOAWMBYgFNAWMBTgFPAWQBYwFOAWQBTwFQAWUBZAFPAWUBUAFRAWYBZQFQAWYBUQFSAWcBZgFRAWcBUgFTAWgBZwFSAWgBUwFUAWkBaAFTAWkBVAFVAWoBaQFUAWoBVQFWAWsBagFVAWsBVgFXAWwBawFWAWwBLAArAG0BWAEsAG0BVwFYAW0BbAFXAW0BWABXAG4BVwBZAW4BWQFaAW8BbgFZAW8BWgFbAXABbwFaAXABWwFcAXEBcAFbAXEBXAFdAXIBcQFcAXIBXQFeAXMBcgFdAXMBXgFfAXQBcwFeAXQBXwFgAXUBdAFfAXUBYAFhAXYBdQFgAXYBYQFiAXcBdgFhAXcBYgFjAXgBdwFiAXgBYwFkAXkBeAFjAXkBZAFlAXoBeQFkAXoBZQFmAXsBegFlAXsBZgFnAXwBewFmAXwBZwFoAX0BfAFnAX0BaAFpAX4BfQFoAX4BaQFqAX8BfgFpAX8BagFrAYABfwFqAYABawFsAYEBgAFrAYEBbAFtAYIBgQFsAYIBKwAqAIMBbQErAIMBggFtAYMBWABuAYQBbgFvAYQBbwFwAYUBhAFvAYUBcAFxAYYBhQFwAYYBcQFyAYcBhgFxAYcBcgFzAYgBhwFyAYgBcwF0AYkBiAFzAYkBdAF1AYoBiQF0AYoBdQF2AYsBigF1AYsBdgF3AYwBiwF2AYwBdwF4AY0BjAF3AY0BeAF5AY4BjQF4AY4BeQF6AY8BjgF5AY8BegF7AZABjwF6AZABewF8AZEBkAF7AZEBfAF9AZIBkQF8AZIBfQF+AZMBkgF9AZMBfgF/AZQBkwF+AZQBfwGAAZUBlAF/AZUBgAGBAZYBlQGAAZYBgQGCAZcBlgGBAZcBgwEqAJgBggGDAZgBlwGCAZgBWQBYAJkBWACEAZkBWgBZAJkBhAGFAZoBmQGEAZoBhQGGAZsBmgGFAZsBhgGHAZwBmwGGAZwBhwGIAZ0BnAGHAZ0BiAGJAZ4BnQGIAZ4BiQGKAZ8BngGJAZ8BigGLAaABnwGKAaABiwGMAaEBoAGLAaEBjAGNAaIBoQGMAaIBjQGOAaMBogGNAaMBjgGPAaQBowGOAaQBjwGQAaUBpAGPAaUBkAGRAaYBpQGQAaYBkQGSAacBpgGRAacBkgGTAagBpwGSAagBkwGUAakBqAGTAakBlAGVAaoBqQGUAaoBlQGWAasBqgGVAasBlgGXAawBqwGWAawBlwGYAa0BrAGXAa0BKgApAK4BmAEqAK4BKQAoAK4BrQGYAa4BWgCZAa8BmQGaAa8BmgGbAbABrwGaAbABmwGcAbEBsAGbAbEBnAGdAbIBsQGcAbIBnQGeAbMBsgGdAbMBngGfAbQBswGeAbQBnwGgAbUBtAGfAbUBoAGhAbYBtQGgAbYBoQGiAbcBtgGhAbcBogGjAbgBtwGiAbgBowGkAbkBuAGjAbkBpAGlAboBuQGkAboBpQGmAbsBugGlAbsBpgGnAbwBuwGmAbwBpwGoAb0BvAGnAb0BqAGpAb4BvQGoAb4BqQGqAb8BvgGpAb8BqgGrAcABvwGqAcABqwGsAcEBwAGrAcEBrAGtAcIBwQGsAcIBrQGuAcMBwgGtAcMBrgEoAMMBWwBaAMQBWgCvAcQBXABbAMQBrwGwAcUBxAGvAcUBsAGxAcYBxQGwAcYBsQGyAccBxgGxAccBsgGzAcgBxwGyAcgBswG0AckByAGzAckBtAG1AcoByQG0AcoBtQG2AcsBygG1AcsBtgG3AcwBywG2AcwBtwG4Ac0BzAG3Ac0BuAG5Ac4BzQG4Ac4BuQG6Ac8BzgG5Ac8BugG7AdABzwG6AdABuwG8AdEB0AG7AdEBvAG9AdIB0QG8AdIBvQG+AdMB0gG9AdMBvgG/AdQB0wG+AdQBvwHAAdUB1AG/AdUBwAHBAdYB1QHAAdYBwQHCAdcB1gHBAdcBwgHDAdgB1wHCAdgBKAAnANkBwwEoANkBJwAmANkB2AHDAdkBXADEAdoBxAHFAdoBxQHGAdsB2gHFAdsBxgHHAdwB2wHGAdwBxwHIAd0B3AHHAd0ByAHJAd4B3QHIAd4ByQHKAd8B3gHJAd8BygHLAeAB3wHKAeABywHMAeEB4AHLAeEBzAHNAeIB4QHMAeIBzQHOAeMB4gHNAeMBzgHPAeQB4wHOAeQBzwHQAeUB5AHPAeUB0AHRAeYB5QHQAeYB0QHSAecB5gHRAecB0gHTAegB5wHSAegB0wHUAekB6AHTAekB1AHVAeoB6QHUAeoB1QHWAesB6gHVAesB1gHXAewB6wHWAewB1wHYAe0B7AHXAe0B2AHZAe4B7QHYAe4B2QEmAO4BXQBcAO8BXADaAe8B2gHbAfAB7wHaAfAB2wHcAfEB8AHbAfEB3AHdAfIB8QHcAfIB3QHeAfMB8gHdAfMB3gHfAfQB8wHeAfQB3wHgAfUB9AHfAfUB4AHhAfYB9QHgAfYB4QHiAfcB9gHhAfcB4gHjAfgB9wHiAfgB4wHkAfkB+AHjAfkB5AHlAfoB+QHkAfoB5QHmAfsB+gHlAfsB5gHnAfwB+wHmAfwB5wHoAf0B/AHnAf0B6AHpAf4B/QHoAf4B6QHqAf8B/gHpAf8B6gHrAQAC/wHqAQAC6wHsAQECAALrAQEC7AHtAQICAQLsAQIC7QHuAQMCAgLtAQMCJgAlAAQC7gEmAAQCAwLuAQQCXgBdAAUCXQDvAQUC7wHwAQUC8AHxAQYCBQLwAQYC8QHyAQcCBgLxAQcC8gHzAQgCBwLyAQgC8wH0AQkCCALzAQkC9AH1AQoCCQL0AQoC9QH2AQsCCgL1AQsC9gH3AQwCCwL2AQwC9wH4AQ0CDAL3AQ0C+AH5AQ4CDQL4AQ4C+QH6AQ8CDgL5AQ8C+gH7ARACDwL6ARAC+wH8ARECEAL7AREC/AH9ARICEQL8ARIC/QH+ARMCEgL9ARMC/gH/ARQCEwL+ARQC/wEAAhUCFAL/ARUCAAIBAhYCFQIAAhYCAQICAhcCFgIBAhcCAgIDAhgCFwICAhgCJQAkABkCBAIlABkCAwIEAhkCGAIDAhkCXwBeABoCXgAFAhoCBQIGAhsCGgIFAhsCBgIHAhwCGwIGAhwCBwIIAh0CHAIHAh0CCAIJAh4CHQIIAh4CCQIKAh8CHgIJAh8CCgILAiACHwIKAiACCwIMAiECIAILAiECDAINAiICIQIMAiICDQIOAiMCIgINAiMCDgIPAiQCIwIOAiQCDwIQAiUCJAIPAiUCEAIRAiYCJQIQAiYCEQISAicCJgIRAicCEgITAigCJwISAigCEwIUAikCKAITAikCFAIVAioCKQIUAioCFQIWAisCKgIVAisCFgIXAiwCKwIWAiwCFwIYAi0CLAIXAi0CGAIZAi4CLQIYAi4CJAAjAC8CGQIkAC8CLgIZAi8CXwAaAjACGgIbAjACGwIcAjECMAIbAjECHAIdAjICMQIcAjICHQIeAjMCMgIdAjMCHgIfAjQCMwIeAjQCHwIgAjUCNAIfAjUCIAIhAjYCNQIgAjYCIQIiAjcCNgIhAjcCIgIjAjgCNwIiAjgCIwIkAjkCOAIjAjkCJAIlAjoCOQIkAjoCJQImAjsCOgIlAjsCJgInAjwCOwImAjwCJwIoAj0CPAInAj0CKAIpAj4CPQIoAj4CKQIqAj8CPgIpAj8CKgIrAkACPwIqAkACKwIsAkECQAIrAkECLAItAkICQQIsAkICLQIuAkMCQgItAkMCLwIjAEQCLgIvAkQCQwIuAkQCYABfAEUCXwAwAkUCYQBgAEUCMAIxAkYCRQIwAkYCMQIyAkcCRgIxAkcCMgIzAkgCRwIyAkgCMwI0AkkCSAIzAkkCNAI1AkoCSQI0AkoCNQI2AksCSgI1AksCNgI3AkwCSwI2AkwCNwI4Ak0CTAI3Ak0COAI5Ak4CTQI4Ak4COQI6Ak8CTgI5Ak8COgI7AlACTwI6AlACOwI8AlECUAI7AlECPAI9AlICUQI8AlICPQI+AlMCUgI9AlMCPgI/AlQCUwI+AlQCPwJAAlUCVAI/AlUCQAJBAlYCVQJAAlYCQQJCAlcCVgJBAlcCQgJDAlgCVwJCAlgCQwJEAlkCWAJDAlkCIwAiAFoCRAIjAFoCIgAhAFoCWQJEAloCYQBFAlsCRQJGAlsCRgJHAlwCWwJGAlwCRwJIAl0CXAJHAl0CSAJJAl4CXQJIAl4CSQJKAl8CXgJJAl8CSgJLAmACXwJKAmACSwJMAmECYAJLAmECTAJNAmICYQJMAmICTQJOAmMCYgJNAmMCTgJPAmQCYwJOAmQCTwJQAmUCZAJPAmUCUAJRAmYCZQJQAmYCUQJSAmcCZgJRAmcCUgJTAmgCZwJSAmgCUwJUAmkCaAJTAmkCVAJVAmoCaQJUAmoCVQJWAmsCagJVAmsCVgJXAmwCawJWAmwCVwJYAm0CbAJXAm0CWAJZAm4CbQJYAm4CWQJaAm8CbgJZAm8CWgIhAG8CYgBhAHACYQBbAnACWwJcAnECcAJbAnECXAJdAnICcQJcAnICXQJeAnMCcgJdAnMCXgJfAnQCcwJeAnQCXwJgAnUCdAJfAnUCYAJhAnYCdQJgAnYCYQJiAncCdgJhAncCYgJjAngCdwJiAngCYwJkAnkCeAJjAnkCZAJlAnoCeQJkAnoCZQJmAnsCegJlAnsCZgJnAnwCewJmAnwCZwJoAn0CfAJnAn0CaAJpAn4CfQJoAn4CaQJqAn8CfgJpAn8CagJrAoACfwJqAoACawJsAoECgAJrAoECbAJtAoICgQJsAoICbQJuAoMCggJtAoMCbgJvAoQCgwJuAoQCIQAgAIUCbwIhAIUChAJvAoUCYwBiAIYCYgBwAoYCcAJxAoYCcQJyAocChgJxAocCcgJzAogChwJyAogCcwJ0AokCiAJzAokCdAJ1AooCiQJ0AooCdQJ2AosCigJ1AosCdgJ3AowCiwJ2AowCdwJ4Ao0CjAJ3Ao0CeAJ5Ao4CjQJ4Ao4CeQJ6Ao8CjgJ5Ao8CegJ7ApACjwJ6ApACewJ8ApECkAJ7ApECfAJ9ApICkQJ8ApICfQJ+ApMCkgJ9ApMCfgJ/ApQCkwJ+ApQCfwKAApUClAJ/ApUCgAKBApYClQKAApYCgQKCApcClgKBApcCggKDApgClwKCApgCgwKEApkCmAKDApkCIAAfAJoChQIgAJoChAKFApoCmQKEApoCYwCGApsChgKHApwCmwKGApwChwKIAp0CnAKHAp0CiAKJAp4CnQKIAp4CiQKKAp8CngKJAp8CigKLAqACnwKKAqACiwKMAqECoAKLAqECjAKNAqICoQKMAqICjQKOAqMCogKNAqMCjgKPAqQCowKOAqQCjwKQAqUCpAKPAqUCkAKRAqYCpQKQAqYCkQKSAqcCpgKRAqcCkgKTAqgCpwKSAqgCkwKUAqkCqAKTAqkClAKVAqoCqQKUAqoClQKWAqsCqgKVAqsClgKXAqwCqwKWAqwClwKYAq0CrAKXAq0CmAKZAq4CrQKYAq4CmQKaAq8CrgKZAq8CmgIfALACrwKaArACZABjALECYwCbArECZQBkALECmwKcArICsQKbArICnAKdArMCsgKcArMCnQKeArQCswKdArQCngKfArUCtAKeArUCnwKgArYCtQKfArYCoAKhArcCtgKgArcCoQKiArgCtwKhArgCogKjArkCuAKiArkCowKkAroCuQKjAroCpAKlArsCugKkArsCpQKmArwCuwKlArwCpgKnAr0CvAKmAr0CpwKoAr4CvQKnAr4CqAKpAr8CvgKoAr8CqQKqAsACvwKpAsACqgKrAsECwAKqAsECqwKsAsICwQKrAsICrAKtAsMCwgKsAsMCrQKuAsQCwwKtAsQCrgKvAsUCxAKuAsUCrwKwAsYCxQKvAsYCHwAeAMcCsAIfAMcCHgAdAMcCxgKwAscCZQCxAsgCsQKyAsgCsgKzAskCyAKyAskCswK0AsoCyQKzAsoCtAK1AssCygK0AssCtQK2AswCywK1AswCtgK3As0CzAK2As0CtwK4As4CzQK3As4CuAK5As8CzgK4As8CuQK6AtACzwK5AtACugK7AtEC0AK6AtECuwK8AtIC0QK7AtICvAK9AtMC0gK8AtMCvQK+AtQC0wK9AtQCvgK/AtUC1AK+AtUCvwLAAtYC1QK/AtYCwALBAtcC1gLAAtcCwQLCAtgC1wLBAtgCwgLDAtkC2ALCAtkCwwLEAtoC2QLDAtoCxALFAtsC2gLEAtsCxQLGAtwC2wLFAtwCxwIdAN0CxgLHAt0C3ALGAt0CZgBlAN4CZQDIAt4CyALJAt8C3gLIAt8CyQLKAuAC3wLJAuACygLLAuEC4ALKAuECywLMAuIC4QLLAuICzALNAuMC4gLMAuMCzQLOAuQC4wLNAuQCzgLPAuUC5ALOAuUCzwLQAuYC5QLPAuYC0ALRAucC5gLQAucC0QLSAugC5wLRAugC0gLTAukC6ALSAukC0wLUAuoC6QLTAuoC1ALVAusC6gLUAusC1QLWAuwC6wLVAuwC1gLXAu0C7ALWAu0C1wLYAu4C7QLXAu4C2ALZAu8C7gLYAu8C2QLaAvAC7wLZAvAC2gLbAvEC8ALaAvEC2wLcAvIC8QLbAvIC3ALdAvMC8gLcAvMCHQAcAPQC3QIdAPQC8wLdAvQCZwBmAPUCZgDeAvUCaABnAPUC3gLfAvYC9QLeAvYC3wLgAvcC9gLfAvcC4ALhAvgC9wLgAvgC4QLiAvkC+ALhAvkC4gLjAvoC+QLiAvoC4wLkAvsC+gLjAvsC5ALlAvwC+wLkAvwC5QLmAv0C/ALlAv0C5gLnAv4C/QLmAv4C5wLoAv8C/gLnAv8C6ALpAgAD/wLoAgAD6QLqAgEDAAPpAgED6gLrAgIDAQPqAgID6wLsAgMDAgPrAgMD7ALtAgQDAwPsAgQD7QLuAgUDBAPtAgUD7gLvAgYDBQPuAgYD7wLwAgcDBgPvAgcD8ALxAggDBwPwAggD8QLyAgkDCAPxAgkD8gLzAgoDCQPyAgoD8wL0AgsDCgPzAgsDHAAbAAwD9AIcAAwDGwAaAAwDCwP0AgwDaAD1Ag0D9QL2Ag0D9gL3Ag4DDQP2Ag4D9wL4Ag8DDgP3Ag8D+AL5AhADDwP4AhAD+QL6AhEDEAP5AhED+gL7AhIDEQP6AhID+wL8AhMDEgP7AhMD/AL9AhQDEwP8AhQD/QL+AhUDFAP9AhUD/gL/AhYDFQP+AhYD/wIAAxcDFgP/AhcDAAMBAxgDFwMAAxgDAQMCAxkDGAMBAxkDAgMDAxoDGQMCAxoDAwMEAxsDGgMDAxsDBAMFAxwDGwMEAxwDBQMGAx0DHAMFAx0DBgMHAx4DHQMGAx4DBwMIAx8DHgMHAx8DCAMJAyADHwMIAyADCQMKAyEDIAMJAyEDCgMLAyIDIQMKAyIDCwMMAyMDIgMLAyMDDAMaACMDaQBoACQDaAANAyQDDQMOAyUDJAMNAyUDDgMPAyYDJQMOAyYDDwMQAycDJgMPAycDEAMRAygDJwMQAygDEQMSAykDKAMRAykDEgMTAyoDKQMSAyoDEwMUAysDKgMTAysDFAMVAywDKwMUAywDFQMWAy0DLAMVAy0DFgMXAy4DLQMWAy4DFwMYAy8DLgMXAy8DGAMZAzADLwMYAzADAAAvAzADGQMaAzEDMAMZAzEDGgMbAzIDMQMaAzIDGwMcAzMDMgMbAzMDHAMdAzQDMwMcAzQDHQMeAzUDNAMdAzUDHgMfAzYDNQMeAzYDHwMgAzcDNgMfAzcDIAMhAzgDNwMgAzgDIQMiAzkDOAMhAzkDIgMjAzoDOQMiAzoDGgAZADsDIwMaADsDOgMjAzsDaQAkAzwDJAMlAzwDJQMmAz0DPAMlAz0DJgMnAz4DPQMmAz4DJwMoAz8DPgMnAz8DKAMpA0ADPwMoA0ADKQMqA0EDQAMpA0EDKgMrA0IDQQMqA0IDKwMsA0MDQgMrA0MDLAMtA0QDQwMsA0QDLQMuA0UDRAMtA0UDAACBAEYDLgMvA0YDRQMuA0YDLwMAAEYDAQAAAEcDAAAwA0cDMAMxA0cDMQMyA0gDRwMxA0gDMgMzA0kDSAMyA0kDMwM0A0oDSQMzA0oDNAM1A0sDSgM0A0sDNQM2A0wDSwM1A0wDNgM3A00DTAM2A00DNwM4A04DTQM3A04DOAM5A08DTgM4A08DOQM6A1ADTwM5A1ADOwMZAFEDOgM7A1EDUAM6A1EDagBpAFIDaQA8A1IDawBqAFIDPAM9A1MDUgM8A1MDPQM+A1QDUwM9A1QDPgM/A1UDVAM+A1UDPwNAA1YDVQM/A1YDQANBA1cDVgNAA1cDQQNCA1gDVwNBA1gDQgNDA1kDWANCA1kDQwNEA1oDWQNDA1oDRANFA1sDWgNEA1sDRQNGA1wDRgOBAFwDgQCAAFwDWwNFA1wDAgABAF0DAQBHA10DRwNIA10DSANJA14DXQNIA14DSQNKA18DXgNJA18DSgNLA2ADXwNKA2ADSwNMA2EDYANLA2EDTANNA2IDYQNMA2IDTQNOA2MDYgNNA2MDTgNPA2QDYwNOA2QDTwNQA2UDZANPA2UDUANRA2YDZQNQA2YDGQAYAGcDUQMZAGcDGAAXAGcDZgNRA2cDawBSA2gDUgNTA2gDUwNUA2kDaANTA2kDVANVA2oDaQNUA2oDVQNWA2sDagNVA2sDVgNXA2wDawNWA2wDVwNYA20DbANXA20DWANZA24DbQNYA24DWQNaA28DbgNZA28DWgNbA3ADbwNaA3ADWwNcA3EDXAOAAHEDgAB/AHEDcANbA3EDAwACAHIDAgBdA3IDXQNeA3IDXgNfA3MDcgNeA3MDXwNgA3QDcwNfA3QDYANhA3UDdANgA3UDYQNiA3YDdQNhA3YDYgNjA3cDdgNiA3cDYwNkA3gDdwNjA3gDZANlA3kDeANkA3kDZQNmA3oDeQNlA3oDZgNnA3sDegNmA3sDZwMXAHsDbQBsAHwDbABrAHwDawBoA3wDaANpA30DfANoA30DaQNqA34DfQNpA34DagNrA38DfgNqA38DawNsA4ADfwNrA4ADbANtA4EDgANsA4EDbQNuA4IDgQNtA4IDbgNvA4MDggNuA4MDbwNwA4QDgwNvA4QDfwB+AIUDcANxA4UDhANwA4UDcQN/AIUDBAADAIYDAwByA4YDcgNzA4YDcwN0A4cDhgNzA4cDdAN1A4gDhwN0A4gDdQN2A4kDiAN1A4kDdgN3A4oDiQN2A4oDdwN4A4sDigN3A4sDeAN5A4wDiwN4A4wDeQN6A40DjAN5A40DegN7A44DjQN6A44DFwAWAI8DewMXAI8DFgAVAI8DjgN7A48DbQB8A5ADfAN9A5ADfQN+A5EDkAN9A5EDfgN/A5IDkQN+A5IDfwOAA5MDkgN/A5MDgAOBA5QDkwOAA5QDgQOCA5UDlAOBA5UDggODA5YDlQOCA5YDgwOEA5cDlgODA5cDfgB9AJgDhAOFA5gDlwOEA5gDhQN+AJgDBQAEAJkDBACGA5kDhgOHA5kDhwOIA5oDmQOHA5oDiAOJA5sDmgOIA5sDiQOKA5wDmwOJA5wDigOLA50DnAOKA50DiwOMA54DnQOLA54DjAONA58DngOMA58DjQOOA6ADnwONA6ADjgOPA6EDoAOOA6EDjwMVAKEDbgBtAKIDbQCQA6IDkAORA6MDogOQA6MDkQOSA6QDowORA6QDkgOTA6UDpAOSA6UDkwOUA6YDpQOTA6YDlAOVA6cDpgOUA6cDlQOWA6gDpwOVA6gDlgOXA6kDqAOWA6kDfQB8AKoDlwOYA6oDqQOXA6oDmAN9AKoDBgAFAKsDBQCZA6sDmQOaA6sDmgObA6wDqwOaA6wDmwOcA60DrAObA60DnAOdA64DrQOcA64DnQOeA68DrgOdA68DngOfA7ADrwOeA7ADnwOgA7EDsAOfA7EDoAOhA7IDsQOgA7IDFQAUALMDoQMVALMDsgOhA7MDbwBuALQDcABvALQDbgCiA7QDogOjA7QDowOkA7UDtAOjA7UDpAOlA7YDtQOkA7YDpQOmA7cDtgOlA7cDpgOnA7gDtwOmA7gDpwOoA7kDuAOnA7kDqAOpA7oDuQOoA7oDfAB7ALsDqgN8ALsDqQOqA7sDugOpA7sDBwAGALwDBgCrA7wDqwOsA7wDrAOtA70DvAOsA70DrQOuA74DvQOtA74DrgOvA78DvgOuA78DrwOwA8ADvwOvA8ADsAOxA8EDwAOwA8EDsQOyA8IDwQOxA8IDEwASAMMDFAATAMMDswMUAMMDsgOzA8MDwgOyA8MDcQBwAMQDcAC0A8QDcgBxAMQDtAO1A8QDcwByAMUDtQO2A8UDcgDEA8UDxAO1A8UDtgO3A8YDxQO2A8YDcwDFA8YDtwO4A8cDxgO3A8cDuAO5A8gDxwO4A8gDuQO6A8kDyAO5A8kDewB6AMoDuwN7AMoDugO7A8oDyQO6A8oDCAAHAMsDBwC8A8sDvAO9A8sDvQO+A8wDywO9A8wDvgO/A80DzAO+A80DvwPAA84DzQO/A84DwAPBA88DzgPAA88DwQPCA9ADEAAPANADDwDPA9ADzwPBA9ADEgARANEDwwMSANEDwgPDA9EDEQAQANEDEADQA9ED0APCA9EDdABzANIDcwDGA9IDxgPHA9IDdQB0ANMDdADSA9MDxwPIA9MD0gPHA9MDdgB1ANQDdQDTA9QDyAPJA9QD0wPIA9QDygN6ANUDyQPKA9UD1APJA9UDCADLA9YDywPMA9YDDQAMANcDzAPNA9cD1gPMA9cDDgANANgDzQPOA9gD1wPNA9gDDQDXA9gDDwAOANkDzwMPANkDzgPPA9kDDgDYA9kD2APOA9kDdwB2ANoDdgDUA9oD1APVA9oDegB5ANsD1QN6ANsDeQB3ANsDdwDaA9sD2gPVA9sDCQAIANwDCADWA9wDCwAJANwD1gPXA90D1wMMAN0DDAALAN0DCwDcA90D3APWA90D\",\"ao\":\"/v37+vv8/f7//////////vv5+/z9/f37+vr5+fn49vPu7Ozx9/v9/v///////////////////////////////////////////////////////////////////v79+vfx7Ovu8/b4+fn5+vr7/P39/Pv5+/7//////////v38+vr7/f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/v////////////////////////7+/v7///////////////////////7+/P3+//////////////////////79/Pr8/v////////////////////78+vX5/P7///////////////////78+fb0+f3////////////////////9+fTu9Pr+///////////////////++vXu8Pf8/v/////////////////+/Pfw7vT6/v///////////////////vr07vP5/f////////////////////358/b4/P7///////////////////78+Pb3+fz+/////////////////////vz59/n7/f7///////////////////79+/n5+/3+/v7///////////////7+/v37+fn6/P7+/v7//////////////v7+/fz6+fr7/f7+/v7////////////+/v7+/fv5+fr8/f39/v7///////////7+/f39/Pr5+vv9/f3+/v7+/v7+/v7+/v79/f37+vr7/f39/f7+/v39/f3+/v79/f39+/r8/f7+/v7+/v37+/3+/v7+/v79/P39/v7+/v7+/fv7/f7+/v7+/v39/f7+/v7+/v38/P3+/v7+/v7+/v7+/////v79/f7+/////v7+/f3+/////v7+/v////79/fv9/v////7+/////v37////////////////\"},\n    back: {\"pat\":\"AAAU/pMBJf4KA1b+TQSk/kQFCv/fBYH/FAYAAFwHff+kCPr+7Al3/jML9P17DHH9ww3u/AoPavxSEOf7mhFk+48R5PmEEWT4ehHk9mgRkPVXET30RhHq8iIRMvH+EHnv0BAE7qIQj+xqEF7rMhAt6q4PUuiuD+vmrg+E5a4PHeSuD7birg9P4a4P6d+uD4Lerg8b3a4PtNuuD03arg/m2K4Pf9euDxjWrg+x1K4PS9OuD+TRrg990K4PFs+uD6/Nrg9IzK4P4coKDz3KrA09yk4MPcrwCj3Kkgk9yjQIPcrWBj3KeAU9yhoEPcq8Aj3KXgE9ygAAPcqi/j3KRP09yub7PcqI+j3KKvk9ysz3Pcpu9j3KEPU9yrLzPcpU8j3K9vA9ylLw4cpS8EjMUvCvzVLwFs9S8H3QUvDk0VLwS9NS8LHUUvAY1lLwf9dS8ObYUvBN2lLwtNtS8BvdUvCC3lLw6d9S8E/hUvC24lLwHeRS8ITlUvDr5lLwUujO7y3qlu9e617vj+ww7wTuAu95797uMvG67uryqe499JjukPWG7uT2fO5k+HHu5Plm7mT7ru/n+/bwavw98u78hfNx/c309P0U9nf+XPf6/qT4ff/s+QAAIfqB/7z6Cv+z+6T+9vxW/m3+Jf7s8RLMVPMSzLz0Eswl9hLMjfcSzPb4Esxe+hLMx/sSzC/9EsyY/hLMAAASzGgBEszRAhLMOQQSzKIFEswKBxLMcwgSzNsJEsxECxLMrAwSzBQOEsw38UrNoPJKzQj0Ss1x9UrN2fZKzUL4Ss2q+UrNEvtKzXv8Ss3j/UrNTP9KzbQASs0dAkrNhQNKze4ESs1WBkrNvgdKzScJSs2PCkrN+AtKzWANSs3JDkrN7PGCzlTzgs689ILOJfaCzo33gs72+ILOXvqCzsf7gs4v/YLOmP6CzgAAgs5oAYLO0QKCzjkEgs6iBYLOCgeCznMIgs7bCYLORAuCzqwMgs4UDoLON/G6z6Dyus8I9LrPcfW6z9n2us9C+LrPqvm6zxL7us97/LrP4/26z0z/us+0ALrPHQK6z4UDus/uBLrPVga6z74Hus8nCbrPjwq6z/gLus9gDbrPyQ66z+zx8tBU8/LQvPTy0CX28tCN9/LQ9vjy0F768tDH+/LQL/3y0Jj+8tAAAPLQaAHy0NEC8tA5BPLQogXy0AoH8tBzCPLQ2wny0EQL8tCsDPLQFA7y0DfxKtKg8irSCPQq0nH1KtLZ9irSQvgq0qr5KtIS+yrSe/wq0uP9KtJM/yrStAAq0h0CKtKFAyrS7gQq0lYGKtK+ByrSJwkq0o8KKtL4CyrSYA0q0skOKtLs8WPTVPNj07z0Y9Ml9mPTjfdj0/b4Y9Ne+mPTx/tj0y/9Y9OY/mPTAABj02gBY9PRAmPTOQRj06IFY9MKB2PTcwhj09sJY9NEC2PTrAxj0xQOY9M38ZvUoPKb1Aj0m9Rx9ZvU2fab1EL4m9Sq+ZvUEvub1Hv8m9Tj/ZvUTP+b1LQAm9QdApvUhQOb1O4Em9RWBpvUvgeb1CcJm9SPCpvU+Aub1GANm9TJDpvU7PHT1VTz09W89NPVJfbT1Y3309X2+NPVXvrT1cf709Uv/dPVmP7T1QAA09VoAdPV0QLT1TkE09WiBdPVCgfT1XMI09XbCdPVRAvT1awM09UUDtPVN/EL16DyC9cI9AvXcfUL19n2C9dC+AvXqvkL1xL7C9d7/AvX4/0L10z/C9e0AAvXHQIL14UDC9fuBAvXVgYL174HC9cnCQvXjwoL1/gLC9dgDQvXyQ4L1+zxQ9hU80PYvPRD2CX2Q9iN90PY9vhD2F76Q9jH+0PYL/1D2Jj+Q9gAAEPYaAFD2NECQ9g5BEPYogVD2AoHQ9hzCEPY2wlD2EQLQ9isDEPYFA5D2Dfxe9mg8nvZCPR72XH1e9nZ9nvZQvh72ar5e9kS+3vZe/x72eP9e9lM/3vZtAB72R0Ce9mFA3vZ7gR72VYGe9m+B3vZJwl72Y8Ke9n4C3vZYA172ckOe9ns8bTaVPO02rz0tNol9rTajfe02vb4tNpe+rTax/u02i/9tNqY/rTaAAC02mgBtNrRArTaOQS02qIFtNoKB7Tacwi02tsJtNpEC7TarAy02hQOtNo38ezboPLs2wj07Ntx9ezb2fbs20L47Nuq+ezbEvvs23v87Nvj/ezbTP/s27QA7NsdAuzbhQPs2+4E7NtWBuzbvgfs2ycJ7NuPCuzb+Avs22AN7NvJDuzb7PEk3VTzJN289CTdJfYk3Y33JN32+CTdXvok3cf7JN0v/STdmP4k3QAAJN1oASTd0QIk3TkEJN2iBSTdCgck3XMIJN3bCSTdRAsk3awMJN0UDiTdN/Fc3qDyXN4I9FzecfVc3tn2XN5C+Fzeqvlc3hL7XN57/Fze4/1c3kz/XN60AFzeHQJc3oUDXN7uBFzeVgZc3r4HXN4nCVzejwpc3vgLXN5gDVzeyQ5c3uzxlN9U85TfvPSU3yX2lN+N95Tf9viU3176lN/H+5TfL/2U35j+lN8AAJTfaAGU39EClN85BJTfogWU3woHlN9zCJTf2wmU30QLlN+sDJTfFA6U3zfxzOCg8szgCPTM4HH1zODZ9szgQvjM4Kr5zOAS+8zge/zM4OP9zOBM/8zgtADM4B0CzOCFA8zg7gTM4FYGzOC+B8zgJwnM4I8KzOD4C8zgYA3M4MkOzODs8QXiVPMF4rz0BeIl9gXijfcF4vb4BeJe+gXix/sF4i/9BeKY/gXiAAAF4mgBBeLRAgXiOQQF4qIFBeIKBwXicwgF4tsJBeJECwXirAwF4hQOBeI38T3joPI94wj0PeNx9T3j2fY940L4PeOq+T3jEvs943v8PePj/T3jTP8947QAPeMdAj3jhQM94+4EPeNWBj3jvgc94ycJPeOPCj3j+As942ANPePJDj3j7PF15FTzdeS89HXkJfZ15I33deT2+HXkXvp15Mf7deQv/XXkmP515AAAdeRoAXXk0QJ15DkEdeSiBXXkCgd15HMIdeTbCXXkRAt15KwMdeQUDnXkN/Gt5aDyreUI9K3lcfWt5dn2reVC+K3lqvmt5RL7reV7/K3l4/2t5Uz/reW0AK3lHQKt5YUDreXuBK3lVgat5b4HreUnCa3ljwqt5fgLreVgDa3lyQ6t5ezx5eZU8+XmvPTl5iX25eaN9+Xm9vjl5l765ebH++XmL/3l5pj+5eYAAOXmaAHl5tEC5eY5BOXmogXl5goH5eZzCOXm2wnl5kQL5easDOXmFA7l5jfxHeig8h3oCPQd6HH1HejZ9h3oQvgd6Kr5HegS+x3oe/wd6OP9HehM/x3otAAd6B0CHeiFAx3o7gQd6FYGHei+Bx3oJwkd6I8KHej4Cx3oYA0d6MkOHejs8VXpVPNV6bz0Vekl9lXpjfdV6fb4Vele+lXpx/tV6S/9VemY/lXpAABV6WgBVenRAlXpOQRV6aIFVekKB1XpcwhV6dsJVelEC1XprAxV6RQOVek38Y7qoPKO6gj0jupx9Y7q2faO6kL4juqq+Y7qEvuO6nv8jurj/Y7qTP+O6rQAjuodAo7qhQOO6u4EjupWBo7qvgeO6icJjuqPCo7q+AuO6mANjurJDo7qg/DG6+zxxutU88brvPTG6yX2xuuN98br9vjG6176xuvH+8brL/3G65j+xusAAMbraAHG69ECxus5BMbrogXG6woHxutzCMbr2wnG60QLxuusDMbrFA7G630Pxus38f7soPL+7Aj0/uxx9f7s2fb+7EL4/uyq+f7sEvv+7Hv8/uzj/f7sTP/+7LQA/uwdAv7shQP+7O4E/uxWBv7svgf+7CcJ/uyPCv7s+Av+7GAN/uzJDv7sg/A27uzxNu5U8zbuvPQ27iX2Nu6N9zbu9vg27l76Nu7H+zbuL/027pj+Nu4AADbuaAE27tECNu45BDbuogU27goHNu5zCDbu2wk27kQLNu6sDDbuFA427n0PNu7P727vN/Fu76Dybu8I9G7vcfVu79n2bu9C+G7vqvlu7xL7bu97/G7v4/1u70z/bu+0AG7vHQJu74UDbu/uBG7vVgZu774Hbu8nCW7vjwpu7/gLbu9gDW7vyQ5u7zEQbu+D8Kbw7PGm8FTzpvC89KbwJfam8I33pvD2+KbwXvqm8Mf7pvAv/abwmP6m8AAApvBoAabw0QKm8DkEpvCiBabwCgem8HMIpvDbCabwRAum8KwMpvAUDqbwfQ+m8M/v3/E38d/xoPLf8Qj03/Fx9d/x2fbf8UL43/Gq+d/xEvvf8Xv83/Hj/d/xTP/f8bQA3/EdAt/xhQPf8e4E3/FWBt/xvgff8ScJ3/GPCt/x+Avf8WAN3/HJDt/xMRDf8YPwF/Ps8RfzVPMX87z0F/Ml9hfzjfcX8/b4F/Ne+hfzx/sX8y/9F/OY/hfzAAAX82gBF/PRAhfzOQQX86IFF/MKBxfzcwgX89sJF/NECxfzrAwX8xQOF/N9Dxfzz+9P9DfxT/Sg8k/0CPRP9HH1T/TZ9k/0QvhP9Kr5T/QS+0/0e/xP9OP9T/RM/0/0tABP9B0CT/SFA0/07gRP9FYGT/S+B0/0JwlP9I8KT/T4C0/0YA1P9MkOT/QxEE/0g/CH9ezxh/VU84f1vPSH9SX2h/WN94f19viH9V76h/XH+4f1L/2H9Zj+h/UAAIf1aAGH9dECh/U5BIf1ogWH9QoHh/VzCIf12wmH9UQLh/WsDIf1FA6H9X0Ph/XP77/2N/G/9qDyv/YI9L/2cfW/9tn2v/ZC+L/2qvm/9hL7v/Z7/L/24/2/9kz/v/a0AL/2HQK/9oUDv/buBL/2Vga/9r4Hv/YnCb/2jwq/9vgLv/ZgDb/2yQ6/9jEQv/aD8Pf37PH391Tz9/e89Pf3Jfb394339/f2+Pf3Xvr398f79/cv/ff3mP739wAA9/doAff30QL39zkE9/eiBff3Cgf393MI9/fbCff3RAv396wM9/cUDvf3fQ/398/vL/k38S/5oPIv+Qj0L/lx9S/52fYv+UL4L/mq+S/5Evsv+Xv8L/nj/S/5TP8v+bQAL/kdAi/5hQMv+e4EL/lWBi/5vgcv+ScJL/mPCi/5+Asv+WANL/nJDi/5MRAv+YPwaPrs8Wj6VPNo+rz0aPol9mj6jfdo+vb4aPpe+mj6x/to+i/9aPqY/mj6AABo+mgBaPrRAmj6OQRo+qIFaPoKB2j6cwho+tsJaPpEC2j6rAxo+hQOaPp9D2j6N/Gg+6DyoPsI9KD7cfWg+9n2oPtC+KD7qvmg+xL7oPt7/KD74/2g+0z/oPu0AKD7HQKg+4UDoPvuBKD7Vgag+74HoPsnCaD7jwqg+/gLoPtgDaD7yQ6g+7z02Pwl9tj8jffY/Pb42Pxe+tj8x/vY/C/92PyY/tj8AADY/GgB2PzRAtj8OQTY/KIF2PwKB9j8cwjY/NsJ2PxEC9j8QvgQ/qr5EP4S+xD+7gQQ/lYGEP6+BxD+\",\"pos\":\"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\",\"tri\":\"BgAFAAcAdABzAHUASABHAHoASQBIAHoASgBJAHoARwBGAHsAegBHAHsARgBFAHwAewBGAHwARQBEAH0AfABFAH0ARABDAH4AfQBEAH4AQwBCAH8AfgBDAH8AQgBBAIAAfwBCAIAAQQBAAIEAgABBAIEAQAA/AIIAgQBAAIIAPwA+AIMAggA/AIMAPQA8AIQAPgA9AIQAgwA+AIQAPAA7AIUAhAA8AIUAOwA6AIYAhQA7AIYAOgA5AIcAhgA6AIcAOQA4AIgAhwA5AIgAOAA3AIkAiAA4AIkANwA2AIoAiQA3AIoANgA1AIsAigA2AIsANQA0AIwAiwA1AIwANAAzAI0AjAA0AI0AMQAwAI4AMgAxAI4AMwAyAI4AjQAzAI4ASwBKAI8ASgB6AI8AegB7AJAAjwB6AJAAewB8AJEAkAB7AJEAfAB9AJIAkQB8AJIAfQB+AJMAkgB9AJMAfgB/AJQAkwB+AJQAfwCAAJUAlAB/AJUAgACBAJYAlQCAAJYAgQCCAJcAlgCBAJcAggCDAJgAlwCCAJgAgwCEAJkAmACDAJkAhACFAJoAmQCEAJoAhQCGAJsAmgCFAJsAhgCHAJwAmwCGAJwAhwCIAJ0AnACHAJ0AiACJAJ4AnQCIAJ4AiQCKAJ8AngCJAJ8AigCLAKAAnwCKAKAAiwCMAKEAoACLAKEAjACNAKIAoQCMAKIAjQCOAKMAogCNAKMAMAAvAKQAjgAwAKQAowCOAKQATABLAKUASwCPAKUAjwCQAKUAkACRAKYApQCQAKYAkQCSAKcApgCRAKcAkgCTAKgApwCSAKgAkwCUAKkAqACTAKkAlACVAKoAqQCUAKoAlQCWAKsAqgCVAKsAlgCXAKwAqwCWAKwAlwCYAK0ArACXAK0AmACZAK4ArQCYAK4AmQCaAK8ArgCZAK8AmgCbALAArwCaALAAmwCcALEAsACbALEAnACdALIAsQCcALIAnQCeALMAsgCdALMAngCfALQAswCeALQAnwCgALUAtACfALUAoAChALYAtQCgALYAoQCiALcAtgChALcAogCjALgAtwCiALgALwAuALkApAAvALkAowCkALkAuACjALkATQBMALoATAClALoApQCmALsAugClALsApgCnALwAuwCmALwApwCoAL0AvACnAL0AqACpAL4AvQCoAL4AqQCqAL8AvgCpAL8AqgCrAMAAvwCqAMAAqwCsAMEAwACrAMEArACtAMIAwQCsAMIArQCuAMMAwgCtAMMArgCvAMQAwwCuAMQArwCwAMUAxACvAMUAsACxAMYAxQCwAMYAsQCyAMcAxgCxAMcAsgCzAMgAxwCyAMgAswC0AMkAyACzAMkAtAC1AMoAyQC0AMoAtQC2AMsAygC1AMsAtgC3AMwAywC2AMwAtwC4AM0AzAC3AM0AuAC5AM4AzQC4AM4ALgAtAM8AuQAuAM8AzgC5AM8ATgBNANAATQC6ANAAugC7ANAAuwC8ANEA0AC7ANEAvAC9ANIA0QC8ANIAvQC+ANMA0gC9ANMAvgC/ANQA0wC+ANQAvwDAANUA1AC/ANUAwADBANYA1QDAANYAwQDCANcA1gDBANcAwgDDANgA1wDCANgAwwDEANkA2ADDANkAxADFANoA2QDEANoAxQDGANsA2gDFANsAxgDHANwA2wDGANwAxwDIAN0A3ADHAN0AyADJAN4A3QDIAN4AyQDKAN8A3gDJAN8AygDLAOAA3wDKAOAAywDMAOEA4ADLAOEAzADNAOIA4QDMAOIAzQDOAOMA4gDNAOMALQAsAOQAzwAtAOQAzgDPAOQA4wDOAOQATwBOAOUATgDQAOUA0ADRAOYA5QDQAOYA0QDSAOcA5gDRAOcA0gDTAOgA5wDSAOgA0wDUAOkA6ADTAOkA1ADVAOoA6QDUAOoA1QDWAOsA6gDVAOsA1gDXAOwA6wDWAOwA1wDYAO0A7ADXAO0A2ADZAO4A7QDYAO4A2QDaAO8A7gDZAO8A2gDbAPAA7wDaAPAA2wDcAPEA8ADbAPEA3ADdAPIA8QDcAPIA3QDeAPMA8gDdAPMA3gDfAPQA8wDeAPQA3wDgAPUA9ADfAPUA4ADhAPYA9QDgAPYA4QDiAPcA9gDhAPcA4gDjAPgA9wDiAPgA4wDkAPkA+ADjAPkALAArAPoA5AAsAPoA+QDkAPoATwDlAPsA5QDmAPsA5gDnAPwA+wDmAPwA5wDoAP0A/ADnAP0A6ADpAP4A/QDoAP4A6QDqAP8A/gDpAP8A6gDrAAAB/wDqAAAB6wDsAAEBAAHrAAEB7ADtAAIBAQHsAAIB7QDuAAMBAgHtAAMB7gDvAAQBAwHuAAQB7wDwAAUBBAHvAAUB8ADxAAYBBQHwAAYB8QDyAAcBBgHxAAcB8gDzAAgBBwHyAAgB8wD0AAkBCAHzAAkB9AD1AAoBCQH0AAoB9QD2AAsBCgH1AAsB9gD3AAwBCwH2AAwB9wD4AA0BDAH3AA0B+AD5AA4BDQH4AA4B+QD6AA8BDgH5AA8B+gArAA8BUABPABABTwD7ABABUQBQABAB+wD8ABEBEAH7ABEB/AD9ABIBEQH8ABIB/QD+ABMBEgH9ABMB/gD/ABQBEwH+ABQB/wAAARUBFAH/ABUBAAEBARYBFQEAARYBAQECARcBFgEBARcBAgEDARgBFwECARgBAwEEARkBGAEDARkBBAEFARoBGQEEARoBBQEGARsBGgEFARsBBgEHARwBGwEGARwBBwEIAR0BHAEHAR0BCAEJAR4BHQEIAR4BCQEKAR8BHgEJAR8BCgELASABHwEKASABCwEMASEBIAELASEBDAENASIBIQEMASIBDQEOASMBIgENASMBDgEPASQBIwEOASQBKwAqACUBDwErACUBKgApACUBJAEPASUBUQAQASYBEAERASYBEQESAScBJgERAScBEgETASgBJwESASgBEwEUASkBKAETASkBFAEVASoBKQEUASoBFQEWASsBKgEVASsBFgEXASwBKwEWASwBFwEYAS0BLAEXAS0BGAEZAS4BLQEYAS4BGQEaAS8BLgEZAS8BGgEbATABLwEaATABGwEcATEBMAEbATEBHAEdATIBMQEcATIBHQEeATMBMgEdATMBHgEfATQBMwEeATQBHwEgATUBNAEfATUBIAEhATYBNQEgATYBIQEiATcBNgEhATcBIgEjATgBNwEiATgBIwEkATkBOAEjATkBJAElAToBOQEkAToBJQEpADoBUgBRADsBUQAmATsBJgEnATwBOwEmATwBJwEoAT0BPAEnAT0BKAEpAT4BPQEoAT4BKQEqAT8BPgEpAT8BKgErAUABPwEqAUABKwEsAUEBQAErAUEBLAEtAUIBQQEsAUIBLQEuAUMBQgEtAUMBLgEvAUQBQwEuAUQBLwEwAUUBRAEvAUUBMAExAUYBRQEwAUYBMQEyAUcBRgExAUcBMgEzAUgBRwEyAUgBMwE0AUkBSAEzAUkBNAE1AUoBSQE0AUoBNQE2AUsBSgE1AUsBNgE3AUwBSwE2AUwBNwE4AU0BTAE3AU0BOAE5AU4BTQE4AU4BOQE6AU8BTgE5AU8BKQAoAFABOgEpAFABTwE6AVABUwBSAFEBUgA7AVEBOwE8AVEBPAE9AVIBUQE8AVIBPQE+AVMBUgE9AVMBPgE/AVQBUwE+AVQBPwFAAVUBVAE/AVUBQAFBAVYBVQFAAVYBQQFCAVcBVgFBAVcBQgFDAVgBVwFCAVgBQwFEAVkBWAFDAVkBRAFFAVoBWQFEAVoBRQFGAVsBWgFFAVsBRgFHAVwBWwFGAVwBRwFIAV0BXAFHAV0BSAFJAV4BXQFIAV4BSQFKAV8BXgFJAV8BSgFLAWABXwFKAWABSwFMAWEBYAFLAWEBTAFNAWIBYQFMAWIBTQFOAWMBYgFNAWMBTgFPAWQBYwFOAWQBKAAnAGUBUAEoAGUBTwFQAWUBZAFPAWUBVABTAGYBUwBRAWYBUQFSAWcBZgFRAWcBUgFTAWgBZwFSAWgBUwFUAWkBaAFTAWkBVAFVAWoBaQFUAWoBVQFWAWsBagFVAWsBVgFXAWwBawFWAWwBVwFYAW0BbAFXAW0BWAFZAW4BbQFYAW4BWQFaAW8BbgFZAW8BWgFbAXABbwFaAXABWwFcAXEBcAFbAXEBXAFdAXIBcQFcAXIBXQFeAXMBcgFdAXMBXgFfAXQBcwFeAXQBXwFgAXUBdAFfAXUBYAFhAXYBdQFgAXYBYQFiAXcBdgFhAXcBYgFjAXgBdwFiAXgBYwFkAXkBeAFjAXkBZAFlAXoBeQFkAXoBJwAmAHsBZQEnAHsBegFlAXsBVABmAXwBZgFnAXwBZwFoAX0BfAFnAX0BaAFpAX4BfQFoAX4BaQFqAX8BfgFpAX8BagFrAYABfwFqAYABawFsAYEBgAFrAYEBbAFtAYIBgQFsAYIBbQFuAYMBggFtAYMBbgFvAYQBgwFuAYQBbwFwAYUBhAFvAYUBcAFxAYYBhQFwAYYBcQFyAYcBhgFxAYcBcgFzAYgBhwFyAYgBcwF0AYkBiAFzAYkBdAF1AYoBiQF0AYoBdQF2AYsBigF1AYsBdgF3AYwBiwF2AYwBdwF4AY0BjAF3AY0BeAF5AY4BjQF4AY4BeQF6AY8BjgF5AY8BewEmAJABegF7AZABjwF6AZABVQBUAJEBVAB8AZEBVgBVAJEBfAF9AZIBkQF8AZIBfQF+AZMBkgF9AZMBfgF/AZQBkwF+AZQBfwGAAZUBlAF/AZUBgAGBAZYBlQGAAZYBgQGCAZcBlgGBAZcBggGDAZgBlwGCAZgBgwGEAZkBmAGDAZkBhAGFAZoBmQGEAZoBhQGGAZsBmgGFAZsBhgGHAZwBmwGGAZwBhwGIAZ0BnAGHAZ0BiAGJAZ4BnQGIAZ4BiQGKAZ8BngGJAZ8BigGLAaABnwGKAaABiwGMAaEBoAGLAaEBjAGNAaIBoQGMAaIBjQGOAaMBogGNAaMBjgGPAaQBowGOAaQBjwGQAaUBpAGPAaUBJgAlAKYBkAEmAKYBJQAkAKYBpQGQAaYBVgCRAacBkQGSAacBkgGTAagBpwGSAagBkwGUAakBqAGTAakBlAGVAaoBqQGUAaoBlQGWAasBqgGVAasBlgGXAawBqwGWAawBlwGYAa0BrAGXAa0BmAGZAa4BrQGYAa4BmQGaAa8BrgGZAa8BmgGbAbABrwGaAbABmwGcAbEBsAGbAbEBnAGdAbIBsQGcAbIBnQGeAbMBsgGdAbMBngGfAbQBswGeAbQBnwGgAbUBtAGfAbUBoAGhAbYBtQGgAbYBoQGiAbcBtgGhAbcBogGjAbgBtwGiAbgBowGkAbkBuAGjAbkBpAGlAboBuQGkAboBpQGmAbsBugGlAbsBpgEkALsBVwBWALwBVgCnAbwBWABXALwBpwGoAb0BvAGnAb0BqAGpAb4BvQGoAb4BqQGqAb8BvgGpAb8BqgGrAcABvwGqAcABqwGsAcEBwAGrAcEBrAGtAcIBwQGsAcIBrQGuAcMBwgGtAcMBrgGvAcQBwwGuAcQBrwGwAcUBxAGvAcUBsAGxAcYBxQGwAcYBsQGyAccBxgGxAccBsgGzAcgBxwGyAcgBswG0AckByAGzAckBtAG1AcoByQG0AcoBtQG2AcsBygG1AcsBtgG3AcwBywG2AcwBtwG4Ac0BzAG3Ac0BuAG5Ac4BzQG4Ac4BuQG6Ac8BzgG5Ac8BugG7AdABzwG6AdABJAAjANEBuwEkANEBIwAiANEB0AG7AdEBWAC8AdIBvAG9AdIBvQG+AdMB0gG9AdMBvgG/AdQB0wG+AdQBvwHAAdUB1AG/AdUBwAHBAdYB1QHAAdYBwQHCAdcB1gHBAdcBwgHDAdgB1wHCAdgBwwHEAdkB2AHDAdkBxAHFAdoB2QHEAdoBxQHGAdsB2gHFAdsBxgHHAdwB2wHGAdwBxwHIAd0B3AHHAd0ByAHJAd4B3QHIAd4ByQHKAd8B3gHJAd8BygHLAeAB3wHKAeABywHMAeEB4AHLAeEBzAHNAeIB4QHMAeIBzQHOAeMB4gHNAeMBzgHPAeQB4wHOAeQBzwHQAeUB5AHPAeUB0AHRAeYB5QHQAeYB0QEiAOYBWQBYAOcBWADSAecB0gHTAegB5wHSAegB0wHUAekB6AHTAekB1AHVAeoB6QHUAeoB1QHWAesB6gHVAesB1gHXAewB6wHWAewB1wHYAe0B7AHXAe0B2AHZAe4B7QHYAe4B2QHaAe8B7gHZAe8B2gHbAfAB7wHaAfAB2wHcAfEB8AHbAfEB3AHdAfIB8QHcAfIB3QHeAfMB8gHdAfMB3gHfAfQB8wHeAfQB3wHgAfUB9AHfAfUB4AHhAfYB9QHgAfYB4QHiAfcB9gHhAfcB4gHjAfgB9wHiAfgB4wHkAfkB+AHjAfkB5AHlAfoB+QHkAfoB5QHmAfsB+gHlAfsBIgAhAPwB5gEiAPwB+wHmAfwBWgBZAP0BWQDnAf0B5wHoAf0B6AHpAf4B/QHoAf4B6QHqAf8B/gHpAf8B6gHrAQAC/wHqAQAC6wHsAQECAALrAQEC7AHtAQICAQLsAQIC7QHuAQMCAgLtAQMC7gHvAQQCAwLuAQQC7wHwAQUCBALvAQUC8AHxAQYCBQLwAQYC8QHyAQcCBgLxAQcC8gHzAQgCBwLyAQgC8wH0AQkCCALzAQkC9AH1AQoCCQL0AQoC9QH2AQsCCgL1AQsC9gH3AQwCCwL2AQwC9wH4AQ0CDAL3AQ0C+AH5AQ4CDQL4AQ4C+QH6AQ8CDgL5AQ8C+gH7ARACDwL6ARACIQAgABEC/AEhABEC+wH8ARECEAL7ARECWwBaABICWgD9ARIC/QH+ARMCEgL9ARMC/gH/ARQCEwL+ARQC/wEAAhUCFAL/ARUCAAIBAhYCFQIAAhYCAQICAhcCFgIBAhcCAgIDAhgCFwICAhgCAwIEAhkCGAIDAhkCBAIFAhoCGQIEAhoCBQIGAhsCGgIFAhsCBgIHAhwCGwIGAhwCBwIIAh0CHAIHAh0CCAIJAh4CHQIIAh4CCQIKAh8CHgIJAh8CCgILAiACHwIKAiACCwIMAiECIAILAiECDAINAiICIQIMAiICDQIOAiMCIgINAiMCDgIPAiQCIwIOAiQCDwIQAiUCJAIPAiUCEAIRAiYCJQIQAiYCIAAfACcCEQIgACcCJgIRAicCWwASAigCEgITAigCEwIUAikCKAITAikCFAIVAioCKQIUAioCFQIWAisCKgIVAisCFgIXAiwCKwIWAiwCFwIYAi0CLAIXAi0CGAIZAi4CLQIYAi4CGQIaAi8CLgIZAi8CGgIbAjACLwIaAjACGwIcAjECMAIbAjECHAIdAjICMQIcAjICHQIeAjMCMgIdAjMCHgIfAjQCMwIeAjQCHwIgAjUCNAIfAjUCIAIhAjYCNQIgAjYCIQIiAjcCNgIhAjcCIgIjAjgCNwIiAjgCIwIkAjkCOAIjAjkCJAIlAjoCOQIkAjoCJQImAjsCOgIlAjsCJwIfADwCJgInAjwCOwImAjwCXABbAD0CWwAoAj0CXQBcAD0CKAIpAj4CPQIoAj4CKQIqAj8CPgIpAj8CKgIrAkACPwIqAkACKwIsAkECQAIrAkECLAItAkICQQIsAkICLQIuAkMCQgItAkMCLgIvAkQCQwIuAkQCLwIwAkUCRAIvAkUCMAIxAkYCRQIwAkYCMQIyAkcCRgIxAkcCMgIzAkgCRwIyAkgCMwI0AkkCSAIzAkkCNAI1AkoCSQI0AkoCNQI2AksCSgI1AksCNgI3AkwCSwI2AkwCNwI4Ak0CTAI3Ak0COAI5Ak4CTQI4Ak4COQI6Ak8CTgI5Ak8COgI7AlACTwI6AlACOwI8AlECUAI7AlECHwAeAFICPAIfAFICHgAdAFICUQI8AlICXQA9AlMCPQI+AlMCPgI/AlQCUwI+AlQCPwJAAlUCVAI/AlUCQAJBAlYCVQJAAlYCQQJCAlcCVgJBAlcCQgJDAlgCVwJCAlgCQwJEAlkCWAJDAlkCRAJFAloCWQJEAloCRQJGAlsCWgJFAlsCRgJHAlwCWwJGAlwCRwJIAl0CXAJHAl0CSAJJAl4CXQJIAl4CSQJKAl8CXgJJAl8CSgJLAmACXwJKAmACSwJMAmECYAJLAmECTAJNAmICYQJMAmICTQJOAmMCYgJNAmMCTgJPAmQCYwJOAmQCTwJQAmUCZAJPAmUCUAJRAmYCZQJQAmYCUQJSAmcCZgJRAmcCUgIdAGcCXgBdAGgCXQBTAmgCUwJUAmkCaAJTAmkCVAJVAmoCaQJUAmoCVQJWAmsCagJVAmsCVgJXAmwCawJWAmwCVwJYAm0CbAJXAm0CWAJZAm4CbQJYAm4CWQJaAm8CbgJZAm8CWgJbAnACbwJaAnACWwJcAnECcAJbAnECXAJdAnICcQJcAnICXQJeAnMCcgJdAnMCXgJfAnQCcwJeAnQCXwJgAnUCdAJfAnUCYAJhAnYCdQJgAnYCYQJiAncCdgJhAncCYgJjAngCdwJiAngCYwJkAnkCeAJjAnkCZAJlAnoCeQJkAnoCZQJmAnsCegJlAnsCZgJnAnwCewJmAnwCHQAcAH0CZwIdAH0CfAJnAn0CXwBeAH4CXgBoAn4CaAJpAn4CaQJqAn8CfgJpAn8CagJrAoACfwJqAoACawJsAoECgAJrAoECbAJtAoICgQJsAoICbQJuAoMCggJtAoMCbgJvAoQCgwJuAoQCbwJwAoUChAJvAoUCcAJxAoYChQJwAoYCcQJyAocChgJxAocCcgJzAogChwJyAogCcwJ0AokCiAJzAokCdAJ1AooCiQJ0AooCdQJ2AosCigJ1AosCdgJ3AowCiwJ2AowCdwJ4Ao0CjAJ3Ao0CeAJ5Ao4CjQJ4Ao4CeQJ6Ao8CjgJ5Ao8CegJ7ApACjwJ6ApACewJ8ApECkAJ7ApECHAAbAJICfQIcAJICfAJ9ApICkQJ8ApICXwB+ApMCfgJ/ApQCkwJ+ApQCfwKAApUClAJ/ApUCgAKBApYClQKAApYCgQKCApcClgKBApcCggKDApgClwKCApgCgwKEApkCmAKDApkChAKFApoCmQKEApoChQKGApsCmgKFApsChgKHApwCmwKGApwChwKIAp0CnAKHAp0CiAKJAp4CnQKIAp4CiQKKAp8CngKJAp8CigKLAqACnwKKAqACiwKMAqECoAKLAqECjAKNAqICoQKMAqICjQKOAqMCogKNAqMCjgKPAqQCowKOAqQCjwKQAqUCpAKPAqUCkAKRAqYCpQKQAqYCkQKSAqcCpgKRAqcCkgIbAKgCpwKSAqgCYABfAKkCXwCTAqkCYQBgAKkCkwKUAqoCqQKTAqoClAKVAqsCqgKUAqsClQKWAqwCqwKVAqwClgKXAq0CrAKWAq0ClwKYAq4CrQKXAq4CmAKZAq8CrgKYAq8CmQKaArACrwKZArACmgKbArECsAKaArECmwKcArICsQKbArICnAKdArMCsgKcArMCnQKeArQCswKdArQCngKfArUCtAKeArUCnwKgArYCtQKfArYCoAKhArcCtgKgArcCoQKiArgCtwKhArgCogKjArkCuAKiArkCowKkAroCuQKjAroCpAKlArsCugKkArsCpQKmArwCuwKlArwCpgKnAr0CvAKmAr0CpwKoAr4CvQKnAr4CGwAaAL8CqAIbAL8CGgAZAL8CvgKoAr8CYQCpAsACqQKqAsACqgKrAsECwAKqAsECqwKsAsICwQKrAsICrAKtAsMCwgKsAsMCrQKuAsQCwwKtAsQCrgKvAsUCxAKuAsUCrwKwAsYCxQKvAsYCsAKxAscCxgKwAscCsQKyAsgCxwKxAsgCsgKzAskCyAKyAskCswK0AsoCyQKzAsoCtAK1AssCygK0AssCtQK2AswCywK1AswCtgK3As0CzAK2As0CtwK4As4CzQK3As4CuAK5As8CzgK4As8CuQK6AtACzwK5AtACugK7AtEC0AK6AtECuwK8AtIC0QK7AtICvAK9AtMC0gK8AtMCvQK+AtQC0wK9AtQCvwIZANUCvgK/AtUC1AK+AtUCYgBhANYCYQDAAtYCwALBAtcC1gLAAtcCwQLCAtgC1wLBAtgCwgLDAtkC2ALCAtkCwwLEAtoC2QLDAtoCxALFAtsC2gLEAtsCxQLGAtwC2wLFAtwCxgLHAt0C3ALGAt0CxwLIAt4C3QLHAt4CyALJAt8C3gLIAt8CyQLKAuAC3wLJAuACygLLAuEC4ALKAuECywLMAuIC4QLLAuICzALNAuMC4gLMAuMCzQLOAuQC4wLNAuQCzgLPAuUC5ALOAuUCzwLQAuYC5QLPAuYC0ALRAucC5gLQAucC0QLSAugC5wLRAugC0gLTAukC6ALSAukC0wLUAuoC6QLTAuoC1ALVAusC6gLUAusCGQAYAOwC1QIZAOwC6wLVAuwCYwBiAO0CYgDWAu0CZABjAO0C1gLXAu4C7QLWAu4C1wLYAu8C7gLXAu8C2ALZAvAC7wLYAvAC2QLaAvEC8ALZAvEC2gLbAvIC8QLaAvIC2wLcAvMC8gLbAvMC3ALdAvQC8wLcAvQC3QLeAvUC9ALdAvUC3gLfAvYC9QLeAvYC3wLgAvcC9gLfAvcC4ALhAvgC9wLgAvgC4QLiAvkC+ALhAvkC4gLjAvoC+QLiAvoC4wLkAvsC+gLjAvsC5ALlAvwC+wLkAvwC5QLmAv0C/ALlAv0C5gLnAv4C/QLmAv4C5wLoAv8C/gLnAv8C6ALpAgAD/wLoAgAD6QLqAgEDAAPpAgED6gLrAgIDAQPqAgID6wLsAgMDAgPrAgMDGAAXAAQD7AIYAAQDFwAWAAQDAwPsAgQDZADtAgUD7QLuAgUD7gLvAgYDBQPuAgYD7wLwAgcDBgPvAgcD8ALxAggDBwPwAggD8QLyAgkDCAPxAgkD8gLzAgoDCQPyAgoD8wL0AgsDCgPzAgsD9AL1AgwDCwP0AgwD9QL2Ag0DDAP1Ag0D9gL3Ag4DDQP2Ag4D9wL4Ag8DDgP3Ag8D+AL5AhADDwP4AhAD+QL6AhEDEAP5AhED+gL7AhIDEQP6AhID+wL8AhMDEgP7AhMD/AL9AhQDEwP8AhQD/QL+AhUDFAP9AhUD/gL/AhYDFQP+AhYD/wIAAxcDFgP/AhcDAAMBAxgDFwMAAxgDAQMCAxkDGAMBAxkDAgMDAxoDGQMCAxoDAwMEAxsDGgMDAxsDBAMWABsDZQBkABwDZAAFAxwDBQMGAx0DHAMFAx0DBgMHAx4DHQMGAx4DBwMIAx8DHgMHAx8DCAMJAyADHwMIAyADCQMKAyEDIAMJAyEDCgMLAyIDIQMKAyIDCwMMAyMDIgMLAyMDDAMNAyQDIwMMAyQDDQMOAyUDJAMNAyUDDgMPAyYDJQMOAyYDDwMQAycDJgMPAycDEAMRAygDJwMQAygDEQMSAykDKAMRAykDEgMTAyoDKQMSAyoDEwMUAysDKgMTAysDFAMVAywDKwMUAywDFQMWAy0DLAMVAy0DFgMXAy4DLQMWAy4DFwMYAy8DLgMXAy8DGAMZAzADLwMYAzADGQMaAzEDMAMZAzEDGgMbAzIDMQMaAzIDFgAVADMDGwMWADMDMgMbAzMDZQAcAzQDHAMdAzQDHQMeAzUDNAMdAzUDHgMfAzYDNQMeAzYDHwMgAzcDNgMfAzcDIAMhAzgDNwMgAzgDIQMiAzkDOAMhAzkDIgMjAzoDOQMiAzoDIwMkAzsDOgMjAzsDJAMlAzwDOwMkAzwDJQMmAz0DPAMlAz0DJgMnAz4DPQMmAz4DJwMoAz8DPgMnAz8DKAMpA0ADPwMoA0ADKQMqA0EDQAMpA0EDKgMrA0IDQQMqA0IDKwMsA0MDQgMrA0MDLAMtA0QDQwMsA0QDLQMuA0UDRAMtA0UDLgMvA0YDRQMuA0YDLwMwA0cDRgMvA0cDMAMxA0gDRwMwA0gDMQMyA0kDSAMxA0kDMwMVAEoDMgMzA0oDSQMyA0oDZgBlAEsDZQA0A0sDZwBmAEsDNAM1A0wDSwM0A0wDNQM2A00DTAM1A00DNgM3A04DTQM2A04DNwM4A08DTgM3A08DOAM5A1ADTwM4A1ADOQM6A1EDUAM5A1EDOgM7A1IDUQM6A1IDOwM8A1MDUgM7A1MDPAM9A1QDUwM8A1QDPQM+A1UDVAM9A1UDPgM/A1YDVQM+A1YDPwNAA1cDVgM/A1cDQANBA1gDVwNAA1gDQQNCA1kDWANBA1kDQgNDA1oDWQNCA1oDQwNEA1sDWgNDA1sDRANFA1wDWwNEA1wDRQNGA10DXANFA10DRgNHA14DXQNGA14DRwNIA18DXgNHA18DSANJA2ADXwNIA2ADSQNKA2EDYANJA2EDFQAUAGIDSgMVAGIDFAATAGIDYQNKA2IDZwBLA2MDSwNMA2MDTANNA2QDYwNMA2QDTQNOA2UDZANNA2UDTgNPA2YDZQNOA2YDTwNQA2cDZgNPA2cDUANRA2gDZwNQA2gDUQNSA2kDaANRA2kDUgNTA2oDaQNSA2oDUwNUA2sDagNTA2sDVANVA2wDawNUA2wDVQNWA20DbANVA20DVgNXA24DbQNWA24DVwNYA28DbgNXA28DWANZA3ADbwNYA3ADWQNaA3EDcANZA3EDWgNbA3IDcQNaA3IDWwNcA3MDcgNbA3MDXANdA3QDcwNcA3QDXQNeA3UDdANdA3UDXgNfA3YDdQNeA3YDXwNgA3cDdgNfA3cDYANhA3gDdwNgA3gDYQNiA3kDeANhA3kDYgMTAHkDaQBoAHoDaABnAHoDZwBjA3oDYwNkA3sDegNjA3sDZANlA3wDewNkA3wDZQNmA30DfANlA30DZgNnA34DfQNmA34DZwNoA38DfgNnA38DaANpA4ADfwNoA4ADaQNqA4EDgANpA4EDagNrA4IDgQNqA4IDawNsA4MDggNrA4MDbANtA4QDgwNsA4QDbQNuA4UDhANtA4UDbgNvA4YDhQNuA4YDbwNwA4cDhgNvA4cDcANxA4gDhwNwA4gDcQNyA4kDiANxA4kDcgNzA4oDiQNyA4oDcwN0A4sDigNzA4sDdAN1A4wDiwN0A4wDdQN2A40DjAN1A40DdgN3A44DjQN2A44DdwN4A48DjgN3A48DeAN5A5ADjwN4A5ADEwASAJEDeQMTAJEDEgARAJEDkAN5A5EDaQB6A5IDegN7A5IDewN8A5MDkgN7A5MDfAN9A5QDkwN8A5QDfQN+A5UDlAN9A5UDfgN/A5YDlQN+A5YDfwOAA5cDlgN/A5cDgAOBA5gDlwOAA5gDgQOCA5kDmAOBA5kDggODA5oDmQOCA5oDgwOEA5sDmgODA5sDhAOFA5wDmwOEA5wDhQOGA50DnAOFA50DhgOHA54DnQOGA54DhwOIA58DngOHA58DiAOJA6ADnwOIA6ADiQOKA6EDoAOJA6EDigOLA6IDoQOKA6IDiwOMA6MDogOLA6MDjAONA6QDowOMA6QDjQOOA6UDpAONA6UDjgOPA6YDpQOOA6YDjwOQA6cDpgOPA6cDkAORA6gDpwOQA6gDkQMRAKgDagBpAKkDaQCSA6kDkgOTA6oDqQOSA6oDkwOUA6sDqgOTA6sDlAOVA6wDqwOUA6wDlQOWA60DrAOVA60DlgOXA64DrQOWA64DlwOYA68DrgOXA68DmAOZA7ADrwOYA7ADmQOaA7EDsAOZA7EDmgObA7IDsQOaA7IDmwOcA7MDsgObA7MDnAOdA7QDswOcA7QDnQOeA7UDtAOdA7UDngOfA7YDtQOeA7YDnwOgA7cDtgOfA7cDoAOhA7gDtwOgA7gDoQOiA7kDuAOhA7kDogOjA7oDuQOiA7oDowOkA7sDugOjA7sDpAOlA7wDuwOkA7wDpQOmA70DvAOlA70DpgOnA74DvQOmA74DpwOoA78DvgOnA78DEQAQAMADqAMRAMADvwOoA8ADawBqAMEDbABrAMEDagCpA8EDqQOqA8EDqgOrA8IDwQOqA8IDqwOsA8MDwgOrA8MDrAOtA8QDwwOsA8QDrQOuA8UDxAOtA8UDrgOvA8YDxQOuA8YDrwOwA8cDxgOvA8cDsAOxA8gDxwOwA8gDsQOyA8kDyAOxA8kDsgOzA8oDyQOyA8oDswO0A8sDygOzA8sDtAO1A8wDywO0A8wDtQO2A80DzAO1A80DtgO3A84DzQO2A84DtwO4A88DzgO3A88DuAO5A9ADzwO4A9ADuQO6A9ED0AO5A9EDugO7A9ID0QO6A9IDuwO8A9MD0gO7A9MDvAO9A9QD0wO8A9QDvQO+A9UD1AO9A9UDvgO/A9YD1QO+A9YDDwAOANcDEAAPANcDwAMQANcDvwPAA9cD1gO/A9cDbQBsANgDbADBA9gDbgBtANgDwQPCA9gDbwBuANkDwgPDA9kDbgDYA9kD2APCA9kDwwPEA9oD2QPDA9oDbwDZA9oDxAPFA9sD2gPEA9sDxQPGA9wD2wPFA9wDxgPHA90D3APGA90DxwPIA94D3QPHA94DyAPJA98D3gPIA98DyQPKA+AD3wPJA+ADygPLA+ED4APKA+EDywPMA+ID4QPLA+IDzAPNA+MD4gPMA+MDzQPOA+QD4wPNA+QDzgPPA+UD5APOA+UDzwPQA+YD5QPPA+YD0APRA+cD5gPQA+cD0QPSA+gD5wPRA+gD0gPTA+kD6APSA+kD0wPUA+oD6QPTA+oD1APVA+sD6gPUA+sD1QPWA+wDDAALAOwDCwDrA+wD6wPVA+wDDgANAO0D1wMOAO0D1gPXA+0DDQAMAO0DDADsA+0D7APWA+0DcABvAO4DbwDaA+4D2gPbA+4DcQBwAO8DcADuA+8D2wPcA+8D7gPbA+8DcgBxAPADcQDvA/AD3APdA/AD7wPcA/AD3QPeA/ED8APdA/ED3gPfA/ID8QPeA/IDeAB3APMD3wPgA/MD8gPfA/MDeQB4APQD4APhA/QD8wPgA/QDeADzA/QDAAB5APUD4QPiA/UDeQD0A/UD9APhA/UD4gPjA/YDAAD1A/YD9QPiA/YD4wPkA/cDAQAAAPcDAAD2A/cD9gPjA/cDAgABAPgDAQD3A/gD5APlA/gD9wPkA/gDAwACAPkDAgD4A/kD5QPmA/kD+APlA/kD5gPnA/oD+QPmA/oD5wPoA/sD+gPnA/sDCQAIAPwD6APpA/wD+wPoA/wDCgAJAP0D6QPqA/0D/APpA/0DCQD8A/0DCwAKAP4D6wMLAP4D6gPrA/4DCgD9A/4D/QPqA/4DcwByAP8DcgDwA/8D8APxA/8DdQBzAAAEcwD/AwAEdgB1AAAE8QPyAwAE/wPxAwAEdwB2AAEE8gPzAwEE8wN3AAEEdgAABAEEAATyAwEEBAADAAIEAwD5AwIE+QP6AwIEBQAEAAMEBwAFAAME+gP7AwMEAgT6AwMEBAACBAME+wP8AwQE/AMIAAQECAAHAAQEBwADBAQEAwT7AwQE\",\"ao\":\"//////////////78+PX09fj8/f39/Pv6+vj39fDu7/T5/P7+/////////////////////////////////////////////////////////////////////v789/Do5+ry9fj5+vv8/P39/Pj08/T4/P7//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v///////////////////////////v7+///////////////////////+/v39/v/////////////////////+/v37/f7////////////////////+/fz2+v3+/////////////////////fv49Pr9/////////////////////vv37PT7/v///////////////////vz38e73/P7//////////////////v348urz+v7///////////////////779fDw9/z+//////////////////79+fT09/v9///////////////////++/j29vf6/P7//////////////////v36+Pf4+fv9///////////////////9+/n5+fn6/P7//////////////////vz6+fn6+fr7/f///////////////////fv6+vr6+vr8/v/////////////////+/Pr6+vv6+vv9///////////////////9+/r6+/v6+/z+//////////////////78+/v7/Pv7/P7///////////////////78+/v8/Pz8/f7//////////////////v38/Pz9/fz9/v///////////////////v38/f38/P3+/////////////////////v38/Pr6/P7//////////////////////vz7+vb5/P7////////////////////+/Pn39vr9/v///////////////////v369v7////////////////////+////////\"},\n    sleeves: [{\"rings\":12,\"around\":28,\"pos\":\"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\",\"hang\":\"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\",\"uv\":\"AAAAAHsJAAD2EgAAchwAAO0lAABoLwAA4zgAAF9CAADaSwAAVVUAANBeAABLaAAAx3EAAEJ7AAC9hAAAOI4AALSXAAAvoQAAqqoAACW0AACgvQAAHMcAAJfQAAAS2gAAjeMAAAntAACE9gAA//8AAAAAVRV7CVUV9hJVFXIcVRXtJVUVaC9VFeM4VRVfQlUV2ktVFVVVVRXQXlUVS2hVFcdxVRVCe1UVvYRVFTiOVRW0l1UVL6FVFaqqVRUltFUVoL1VFRzHVRWX0FUVEtpVFY3jVRUJ7VUVhPZVFf//VRUAAKsqewmrKvYSqypyHKsq7SWrKmgvqyrjOKsqX0KrKtpLqypVVasq0F6rKktoqyrHcasqQnurKr2Eqyo4jqsqtJerKi+hqyqqqqsqJbSrKqC9qyocx6sql9CrKhLaqyqN46sqCe2rKoT2qyr//6sqAAAAQHsJAED2EgBAchwAQO0lAEBoLwBA4zgAQF9CAEDaSwBAVVUAQNBeAEBLaABAx3EAQEJ7AEC9hABAOI4AQLSXAEAvoQBAqqoAQCW0AECgvQBAHMcAQJfQAEAS2gBAjeMAQAntAECE9gBA//8AQAAAVVV7CVVV9hJVVXIcVVXtJVVVaC9VVeM4VVVfQlVV2ktVVVVVVVXQXlVVS2hVVcdxVVVCe1VVvYRVVTiOVVW0l1VVL6FVVaqqVVUltFVVoL1VVRzHVVWX0FVVEtpVVY3jVVUJ7VVVhPZVVf//VVUAAKpqewmqavYSqmpyHKpq7SWqamgvqmrjOKpqX0KqatpLqmpVVapq0F6qaktoqmrHcapqQnuqar2Eqmo4jqpqtJeqai+hqmqqqqpqJbSqaqC9qmocx6pql9CqahLaqmqN46pqCe2qaoT2qmr//6pqAAAAgHsJAID2EgCAchwAgO0lAIBoLwCA4zgAgF9CAIDaSwCAVVUAgNBeAIBLaACAx3EAgEJ7AIC9hACAOI4AgLSXAIAvoQCAqqoAgCW0AICgvQCAHMcAgJfQAIAS2gCAjeMAgAntAICE9gCA//8AgAAAVZV7CVWV9hJVlXIcVZXtJVWVaC9VleM4VZVfQlWV2ktVlVVVVZXQXlWVS2hVlcdxVZVCe1WVvYRVlTiOVZW0l1WVL6FVlaqqVZUltFWVoL1VlRzHVZWX0FWVEtpVlY3jVZUJ7VWVhPZVlf//VZUAAKqqewmqqvYSqqpyHKqq7SWqqmgvqqrjOKqqX0KqqtpLqqpVVaqq0F6qqktoqqrHcaqqQnuqqr2Eqqo4jqqqtJeqqi+hqqqqqqqqJbSqqqC9qqocx6qql9CqqhLaqqqN46qqCe2qqoT2qqr//6qqAAD/v3sJ/7/2Ev+/chz/v+0l/79oL/+/4zj/v19C/7/aS/+/VVX/v9Be/79LaP+/x3H/v0J7/7+9hP+/OI7/v7SX/78vof+/qqr/vyW0/7+gvf+/HMf/v5fQ/78S2v+/jeP/vwnt/7+E9v+/////vwAAVdV7CVXV9hJV1XIcVdXtJVXVaC9V1eM4VdVfQlXV2ktV1VVVVdXQXlXVS2hV1cdxVdVCe1XVvYRV1TiOVdW0l1XVL6FV1aqqVdUltFXVoL1V1RzHVdWX0FXVEtpV1Y3jVdUJ7VXVhPZV1f//VdUAAKrqewmq6vYSqupyHKrq7SWq6mgvqurjOKrqX0Kq6tpLqupVVarq0F6q6ktoqurHcarqQnuq6r2Equo4jqrqtJeq6i+hquqqqqrqJbSq6qC9quocx6rql9Cq6hLaquqN46rqCe2q6oT2qur//6rqAAD//3sJ///2Ev//chz//+0l//9oL///4zj//19C///aS///VVX//9Be//9LaP//x3H//0J7//+9hP//OI7//7SX//8vof//qqr//yW0//+gvf//HMf//5fQ//8S2v//jeP//wnt//+E9v///////w==\",\"tri\":\"AAABABwAAQAdABwAAQACAB0AAgAeAB0AAgADAB4AAwAfAB4AAwAEAB8ABAAgAB8ABAAFACAABQAhACAABQAGACEABgAiACEABgAHACIABwAjACIABwAIACMACAAkACMACAAJACQACQAlACQACQAKACUACgAmACUACgALACYACwAnACYACwAMACcADAAoACcADAANACgADQApACgADQAOACkADgAqACkADgAPACoADwArACoADwAQACsAEAAsACsAEAARACwAEQAtACwAEQASAC0AEgAuAC0AEgATAC4AEwAvAC4AEwAUAC8AFAAwAC8AFAAVADAAFQAxADAAFQAWADEAFgAyADEAFgAXADIAFwAzADIAFwAYADMAGAA0ADMAGAAZADQAGQA1ADQAGQAaADUAGgA2ADUAGgAbADYAGwA3ADYAGwAAADcAAAAcADcAHAAdADgAHQA5ADgAHQAeADkAHgA6ADkAHgAfADoAHwA7ADoAHwAgADsAIAA8ADsAIAAhADwAIQA9ADwAIQAiAD0AIgA+AD0AIgAjAD4AIwA/AD4AIwAkAD8AJABAAD8AJAAlAEAAJQBBAEAAJQAmAEEAJgBCAEEAJgAnAEIAJwBDAEIAJwAoAEMAKABEAEMAKAApAEQAKQBFAEQAKQAqAEUAKgBGAEUAKgArAEYAKwBHAEYAKwAsAEcALABIAEcALAAtAEgALQBJAEgALQAuAEkALgBKAEkALgAvAEoALwBLAEoALwAwAEsAMABMAEsAMAAxAEwAMQBNAEwAMQAyAE0AMgBOAE0AMgAzAE4AMwBPAE4AMwA0AE8ANABQAE8ANAA1AFAANQBRAFAANQA2AFEANgBSAFEANgA3AFIANwBTAFIANwAcAFMAHAA4AFMAOAA5AFQAOQBVAFQAOQA6AFUAOgBWAFUAOgA7AFYAOwBXAFYAOwA8AFcAPABYAFcAPAA9AFgAPQBZAFgAPQA+AFkAPgBaAFkAPgA/AFoAPwBbAFoAPwBAAFsAQABcAFsAQABBAFwAQQBdAFwAQQBCAF0AQgBeAF0AQgBDAF4AQwBfAF4AQwBEAF8ARABgAF8ARABFAGAARQBhAGAARQBGAGEARgBiAGEARgBHAGIARwBjAGIARwBIAGMASABkAGMASABJAGQASQBlAGQASQBKAGUASgBmAGUASgBLAGYASwBnAGYASwBMAGcATABoAGcATABNAGgATQBpAGgATQBOAGkATgBqAGkATgBPAGoATwBrAGoATwBQAGsAUABsAGsAUABRAGwAUQBtAGwAUQBSAG0AUgBuAG0AUgBTAG4AUwBvAG4AUwA4AG8AOABUAG8AVABVAHAAVQBxAHAAVQBWAHEAVgByAHEAVgBXAHIAVwBzAHIAVwBYAHMAWAB0AHMAWABZAHQAWQB1AHQAWQBaAHUAWgB2AHUAWgBbAHYAWwB3AHYAWwBcAHcAXAB4AHcAXABdAHgAXQB5AHgAXQBeAHkAXgB6AHkAXgBfAHoAXwB7AHoAXwBgAHsAYAB8AHsAYABhAHwAYQB9AHwAYQBiAH0AYgB+AH0AYgBjAH4AYwB/AH4AYwBkAH8AZACAAH8AZABlAIAAZQCBAIAAZQBmAIEAZgCCAIEAZgBnAIIAZwCDAIIAZwBoAIMAaACEAIMAaABpAIQAaQCFAIQAaQBqAIUAagCGAIUAagBrAIYAawCHAIYAawBsAIcAbACIAIcAbABtAIgAbQCJAIgAbQBuAIkAbgCKAIkAbgBvAIoAbwCLAIoAbwBUAIsAVABwAIsAcABxAIwAcQCNAIwAcQByAI0AcgCOAI0AcgBzAI4AcwCPAI4AcwB0AI8AdACQAI8AdAB1AJAAdQCRAJAAdQB2AJEAdgCSAJEAdgB3AJIAdwCTAJIAdwB4AJMAeACUAJMAeAB5AJQAeQCVAJQAeQB6AJUAegCWAJUAegB7AJYAewCXAJYAewB8AJcAfACYAJcAfAB9AJgAfQCZAJgAfQB+AJkAfgCaAJkAfgB/AJoAfwCbAJoAfwCAAJsAgACcAJsAgACBAJwAgQCdAJwAgQCCAJ0AggCeAJ0AggCDAJ4AgwCfAJ4AgwCEAJ8AhACgAJ8AhACFAKAAhQChAKAAhQCGAKEAhgCiAKEAhgCHAKIAhwCjAKIAhwCIAKMAiACkAKMAiACJAKQAiQClAKQAiQCKAKUAigCmAKUAigCLAKYAiwCnAKYAiwBwAKcAcACMAKcAjACNAKgAjQCpAKgAjQCOAKkAjgCqAKkAjgCPAKoAjwCrAKoAjwCQAKsAkACsAKsAkACRAKwAkQCtAKwAkQCSAK0AkgCuAK0AkgCTAK4AkwCvAK4AkwCUAK8AlACwAK8AlACVALAAlQCxALAAlQCWALEAlgCyALEAlgCXALIAlwCzALIAlwCYALMAmAC0ALMAmACZALQAmQC1ALQAmQCaALUAmgC2ALUAmgCbALYAmwC3ALYAmwCcALcAnAC4ALcAnACdALgAnQC5ALgAnQCeALkAngC6ALkAngCfALoAnwC7ALoAnwCgALsAoAC8ALsAoAChALwAoQC9ALwAoQCiAL0AogC+AL0AogCjAL4AowC/AL4AowCkAL8ApADAAL8ApAClAMAApQDBAMAApQCmAMEApgDCAMEApgCnAMIApwDDAMIApwCMAMMAjACoAMMAqACpAMQAqQDFAMQAqQCqAMUAqgDGAMUAqgCrAMYAqwDHAMYAqwCsAMcArADIAMcArACtAMgArQDJAMgArQCuAMkArgDKAMkArgCvAMoArwDLAMoArwCwAMsAsADMAMsAsACxAMwAsQDNAMwAsQCyAM0AsgDOAM0AsgCzAM4AswDPAM4AswC0AM8AtADQAM8AtAC1ANAAtQDRANAAtQC2ANEAtgDSANEAtgC3ANIAtwDTANIAtwC4ANMAuADUANMAuAC5ANQAuQDVANQAuQC6ANUAugDWANUAugC7ANYAuwDXANYAuwC8ANcAvADYANcAvAC9ANgAvQDZANgAvQC+ANkAvgDaANkAvgC/ANoAvwDbANoAvwDAANsAwADcANsAwADBANwAwQDdANwAwQDCAN0AwgDeAN0AwgDDAN4AwwDfAN4AwwCoAN8AqADEAN8AxADFAOAAxQDhAOAAxQDGAOEAxgDiAOEAxgDHAOIAxwDjAOIAxwDIAOMAyADkAOMAyADJAOQAyQDlAOQAyQDKAOUAygDmAOUAygDLAOYAywDnAOYAywDMAOcAzADoAOcAzADNAOgAzQDpAOgAzQDOAOkAzgDqAOkAzgDPAOoAzwDrAOoAzwDQAOsA0ADsAOsA0ADRAOwA0QDtAOwA0QDSAO0A0gDuAO0A0gDTAO4A0wDvAO4A0wDUAO8A1ADwAO8A1ADVAPAA1QDxAPAA1QDWAPEA1gDyAPEA1gDXAPIA1wDzAPIA1wDYAPMA2AD0APMA2ADZAPQA2QD1APQA2QDaAPUA2gD2APUA2gDbAPYA2wD3APYA2wDcAPcA3AD4APcA3ADdAPgA3QD5APgA3QDeAPkA3gD6APkA3gDfAPoA3wD7APoA3wDEAPsAxADgAPsA4ADhAPwA4QD9APwA4QDiAP0A4gD+AP0A4gDjAP4A4wD/AP4A4wDkAP8A5AAAAf8A5ADlAAAB5QABAQAB5QDmAAEB5gACAQEB5gDnAAIB5wADAQIB5wDoAAMB6AAEAQMB6ADpAAQB6QAFAQQB6QDqAAUB6gAGAQUB6gDrAAYB6wAHAQYB6wDsAAcB7AAIAQcB7ADtAAgB7QAJAQgB7QDuAAkB7gAKAQkB7gDvAAoB7wALAQoB7wDwAAsB8AAMAQsB8ADxAAwB8QANAQwB8QDyAA0B8gAOAQ0B8gDzAA4B8wAPAQ4B8wD0AA8B9AAQAQ8B9AD1ABAB9QARARAB9QD2ABEB9gASAREB9gD3ABIB9wATARIB9wD4ABMB+AAUARMB+AD5ABQB+QAVARQB+QD6ABUB+gAWARUB+gD7ABYB+wAXARYB+wDgABcB4AD8ABcB/AD9ABgB/QAZARgB/QD+ABkB/gAaARkB/gD/ABoB/wAbARoB/wAAARsBAAEcARsBAAEBARwBAQEdARwBAQECAR0BAgEeAR0BAgEDAR4BAwEfAR4BAwEEAR8BBAEgAR8BBAEFASABBQEhASABBQEGASEBBgEiASEBBgEHASIBBwEjASIBBwEIASMBCAEkASMBCAEJASQBCQElASQBCQEKASUBCgEmASUBCgELASYBCwEnASYBCwEMAScBDAEoAScBDAENASgBDQEpASgBDQEOASkBDgEqASkBDgEPASoBDwErASoBDwEQASsBEAEsASsBEAERASwBEQEtASwBEQESAS0BEgEuAS0BEgETAS4BEwEvAS4BEwEUAS8BFAEwAS8BFAEVATABFQExATABFQEWATEBFgEyATEBFgEXATIBFwEzATIBFwH8ADMB/AAYATMBGAEZATQBGQE1ATQBGQEaATUBGgE2ATUBGgEbATYBGwE3ATYBGwEcATcBHAE4ATcBHAEdATgBHQE5ATgBHQEeATkBHgE6ATkBHgEfAToBHwE7AToBHwEgATsBIAE8ATsBIAEhATwBIQE9ATwBIQEiAT0BIgE+AT0BIgEjAT4BIwE/AT4BIwEkAT8BJAFAAT8BJAElAUABJQFBAUABJQEmAUEBJgFCAUEBJgEnAUIBJwFDAUIBJwEoAUMBKAFEAUMBKAEpAUQBKQFFAUQBKQEqAUUBKgFGAUUBKgErAUYBKwFHAUYBKwEsAUcBLAFIAUcBLAEtAUgBLQFJAUgBLQEuAUkBLgFKAUkBLgEvAUoBLwFLAUoBLwEwAUsBMAFMAUsBMAExAUwBMQFNAUwBMQEyAU0BMgFOAU0BMgEzAU4BMwFPAU4BMwEYAU8BGAE0AU8BNAE1AVABNQFRAVABNQE2AVEBNgFSAVEBNgE3AVIBNwFTAVIBNwE4AVMBOAFUAVMBOAE5AVQBOQFVAVQBOQE6AVUBOgFWAVUBOgE7AVYBOwFXAVYBOwE8AVcBPAFYAVcBPAE9AVgBPQFZAVgBPQE+AVkBPgFaAVkBPgE/AVoBPwFbAVoBPwFAAVsBQAFcAVsBQAFBAVwBQQFdAVwBQQFCAV0BQgFeAV0BQgFDAV4BQwFfAV4BQwFEAV8BRAFgAV8BRAFFAWABRQFhAWABRQFGAWEBRgFiAWEBRgFHAWIBRwFjAWIBRwFIAWMBSAFkAWMBSAFJAWQBSQFlAWQBSQFKAWUBSgFmAWUBSgFLAWYBSwFnAWYBSwFMAWcBTAFoAWcBTAFNAWgBTQFpAWgBTQFOAWkBTgFqAWkBTgFPAWoBTwFrAWoBTwE0AWsBNAFQAWsB\",\"ao\":\"/P39+vf19PT19fTw6eLg5Oz0+f3+/////v38+/z9/Pn39vX19fXy7ebg4efu9fr9/v////78+/v8/fz6+Pf39vX08evk3+Hm7PP5/f////7+/fv7/f39+/r5+Pf29PDp4t7f4+ny+f3//////v38/P7+/fz8+/r59/Tv5+Dd3uHn8fn9//////7+/f3+/v7+/fz7+vj17+fg3d3g5/H5/f///////v7+/////v79/fv59fDo4d3d4Ofy+v7////////+/v/////+/v38+vfw6OHd3eDp8/r+///////////////////+/fv48enh3d7i6vT7/v///////////////////v38+PLp4d7e5Oz1+/7////////////////////+/Pny6eHe3+Xu9vz+/////////////////////vz58ujg3uHn8Pj8/v////////////////////789+7k3t7j6/P6/f7//////////w==\"},{\"rings\":12,\"around\":28,\"pos\":\"OO8K85b+Qe+r8SX/EO9m8LT/F+/k7sX/J++G7cX/M+8m7M3/Pe/E6tf/Tu/66O3/V+8w5wQAce+o5R4AkO8g5DcAwu/j4i8A/O+r4R8AofDU36X/SPDU36X/z++u4eD+nu/i4qP+c+8e5HH+Se+i5V/+IO8l51L+A+/q6En+5+6u6kH+1+4L7ED+x+5m7UP+te7C7kv+su5I8I3+y+7M8eP+eO8K85b+B+6w8aD+Eu5v8C3/8e0w77r/De6u7dD/NO5U7NX/Wu4C6+L/gO6z6fL/uO7t5xEA8+4p5iMAMe+q5DgAbu8s40kAse/94T0A9e/c4CcAlPA336r/lPA336r/EvDv4Or+0+8E4qr+lO8j43P+Se+U5Fn+9u4Y5kb+pO7j50D+U+6Y6Tn+Ge7v6jf+4e1C7Dv+re2P7Uf+he0G74n+fe1/8N/+Bu6x8aD+9OxV8Kn+A+0u7zX/8+z27b//J+137Nv/Z+0k6+X/pe3i6fb/5O2m6A8ARe7g5jgAqe4j5UIABO+x41EAWO9A4lsAqO8e4UoA8e8U4C4Ah/Cd3rD/h/Cd3rD/CfAu4PT+x+8l4bH+f+8p4nX+Hu+L41L+re4R5Tz+NO7g5jv+wu2D6DX+au3T6S7+GO0g6zL+z+xh7EL+lezJ7YX+fOwz79v+9OxW8Kv+4ev27rP+8uvn7T3/9+u47MP/ROw/6+X/nOz46fT/8ezJ6AsARu2e5y8A0u3V5WEAX+4j5GIA1u6/4mkAQu9d4W0Anu9L4FYA7e9V3zUAePAF3rX/ePAF3rX/APBt3/7+vO9I4Lf+bO824Xb+9e6K4kz+ZO4S5DP+xO3i5Tj+Mu1y5zH+vOy76CX+T+wC6in+8es56zz+o+uQ7ID+euvo7df+4Ov37rX+zOqS7b3+4eqZ7EX//Op368j/Y+sL6u//0+vT6AQAPOy45yIAp+yb5lEAYO3Q5IoAFu4q44IAqO7Y4YEAK++H4H0Ak++E32IA5++g3jwAafBz3bv/afBz3bv/+e+x3gf/s+9z377+W+9N4Hj+ze6V4Ub+Gu4d4yv+Uu3q5Db+o+xm5i7+Deyo5xv+hOvp6B/+EOsV6jX+r+pa63r+eOqb7NP+zOqT7cD+uekn7Mj+0+lG603/Auo06sz/g+rd6Pr/COu45xUAheuu5jsABuyd5XUA7+zU47MAze094qAAeO794JcAEu+934wAh+/J3m0A4e/13UMAXPDm3MH/XPDm3MH/8+/73RH/q++o3sT+Su9y33r+pO6x4EL+z+004iT+4Oz34zT+Euxg5Sj+Xeub5hD+t+rU5xT+Ler16C7+uukl6nX+dulL68/+uOko7Mv+p+i46tP+x+jv6VX/C+n06ND/oem25wUAOuqm5igAyuqr5VYAZOui5JkAfuzh4tkAg+1b4b0ARu4t4K0A9+4A35wAee8Z3nkA2+9V3UoAUfBg3Mf/UfBg3Mf/7+9P3Rr/pO/r3cr+N++p3n3+eO7d3z/+ge1W4R/+bewJ4zH+gOth5B/+q+qT5QP+6OnD5gj+SenW5yb+xejw6G/+dOj46cv+p+i46tf+medE6d7+vueW6F3/E+i159X/vOiX5hEAZumb5T0ADequ5HIAw+qs47sADOz64fsAN+2G4NkAFO5o38MA2+5M3qsAbO903YQA1+++3FIASfDk287/SfDk287/7e+w3CP/nO8+3dD+Iu/z3YH+Se4Z3z3+M+2B4Bv+++se4iv+6+pp4xH+9+mR5PT9GOm05fz9ZOi45h7+0Oe652r+deei6Mj+mOdF6eP+jebP5+n+t+Y952X/Gud75tn/0ud95R8AjuiW5FMATum0448AJOq54toAmese4RcB6ey73/MA4e2r3tgAwO6h3bsAX+/Z3JAA1O8y3FoAQ/Bz29T/Q/Bz29T/7O8e3Cz/ku+i3Nf+Ce9M3YX+F+5i3j3+5Oyz3xf+ies14SD+U+p24gD+QumT4+X9Seim5PH9geeY5Rf+3eaC5mX+eeZK58X+jebP5+/+hOVa5vX+seXn5W3/HuZE5d7/4uZo5C0AseeV42sAjui84qsAienK4fUAJetK4C0Bmuz43gwBr+313e8Ap+793MwAVe9F3J0A0u+w22IAQPAO29v/QPAO29v/6u+b2zb/he8T3N/+6u603Iv+4O213T7+lezr3hH+GOtQ4A/+uOmJ4ev9jOiX4tb9e+eY4+b9oOZ25BH+6+VI5WH+f+Xx5cL+heVa5vv+fOTn5AD/quST5HX/H+UR5OT/7eVU4zwA0eaU4oIAz+fF4ccA8ejc4AwBr+p83z8BSuw73iQBgO1D3QcBku5d3N4ATe+526oA0+8222oAPfC12uL/PfC12uL/5u8j2z//dO+R2+b+x+4l3JH+qO0P3T/+Sewl3gr+qupu3/j9G+mg4NT91+ed4cj9seaJ4t39wuVT4wz+/OQN5F3+huSa5L/+feTn5Af/c+N44wv/oeND433/HeTe4un/9uRB4ksA8eWT4ZoAFOfN4OEAXeju3x8BOOqv3kwB+uuA3T4BVO2U3CEBgO7B2/EAR+8x27gA1O/E2nMAOfBl2uj/OfBl2uj/4O+12kn/X+8V2+7+oO6a25f+b+1r3ED+/+ti3QH+PeqQ3tz9fui63739JOej4Lv97OV54db96eQv4gj+D+TS4ln+jONE47z+c+N44xP/Z+IL4hb/leL14YX/GOOs4e///uMs4VoAEuWP4LAAW+bU3/kAy+cB3zABwOnh3VgBrevF3FkBLu3l2zwBc+4o2wUBQ++u2sYA1O9X2nsAM/Ac2u//M/Ac2u//1+9L2lL/SO+b2vb+ee4P257+N+3G20D+uuuf3PX90um33bz94ufV3qf9dOao37H9K+Vn4NH9E+QL4QX+IuOZ4Vb+kOLw4bn+Z+IL4h7/\",\"hang\":\"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\",\"uv\":\"AAAAAHsJAAD2EgAAchwAAO0lAABoLwAA4zgAAF9CAADaSwAAVVUAANBeAABLaAAAx3EAAEJ7AAC9hAAAOI4AALSXAAAvoQAAqqoAACW0AACgvQAAHMcAAJfQAAAS2gAAjeMAAAntAACE9gAA//8AAAAAVRV7CVUV9hJVFXIcVRXtJVUVaC9VFeM4VRVfQlUV2ktVFVVVVRXQXlUVS2hVFcdxVRVCe1UVvYRVFTiOVRW0l1UVL6FVFaqqVRUltFUVoL1VFRzHVRWX0FUVEtpVFY3jVRUJ7VUVhPZVFf//VRUAAKsqewmrKvYSqypyHKsq7SWrKmgvqyrjOKsqX0KrKtpLqypVVasq0F6rKktoqyrHcasqQnurKr2Eqyo4jqsqtJerKi+hqyqqqqsqJbSrKqC9qyocx6sql9CrKhLaqyqN46sqCe2rKoT2qyr//6sqAAAAQHsJAED2EgBAchwAQO0lAEBoLwBA4zgAQF9CAEDaSwBAVVUAQNBeAEBLaABAx3EAQEJ7AEC9hABAOI4AQLSXAEAvoQBAqqoAQCW0AECgvQBAHMcAQJfQAEAS2gBAjeMAQAntAECE9gBA//8AQAAAVVV7CVVV9hJVVXIcVVXtJVVVaC9VVeM4VVVfQlVV2ktVVVVVVVXQXlVVS2hVVcdxVVVCe1VVvYRVVTiOVVW0l1VVL6FVVaqqVVUltFVVoL1VVRzHVVWX0FVVEtpVVY3jVVUJ7VVVhPZVVf//VVUAAKpqewmqavYSqmpyHKpq7SWqamgvqmrjOKpqX0KqatpLqmpVVapq0F6qaktoqmrHcapqQnuqar2Eqmo4jqpqtJeqai+hqmqqqqpqJbSqaqC9qmocx6pql9CqahLaqmqN46pqCe2qaoT2qmr//6pqAAAAgHsJAID2EgCAchwAgO0lAIBoLwCA4zgAgF9CAIDaSwCAVVUAgNBeAIBLaACAx3EAgEJ7AIC9hACAOI4AgLSXAIAvoQCAqqoAgCW0AICgvQCAHMcAgJfQAIAS2gCAjeMAgAntAICE9gCA//8AgAAAVZV7CVWV9hJVlXIcVZXtJVWVaC9VleM4VZVfQlWV2ktVlVVVVZXQXlWVS2hVlcdxVZVCe1WVvYRVlTiOVZW0l1WVL6FVlaqqVZUltFWVoL1VlRzHVZWX0FWVEtpVlY3jVZUJ7VWVhPZVlf//VZUAAKqqewmqqvYSqqpyHKqq7SWqqmgvqqrjOKqqX0KqqtpLqqpVVaqq0F6qqktoqqrHcaqqQnuqqr2Eqqo4jqqqtJeqqi+hqqqqqqqqJbSqqqC9qqocx6qql9CqqhLaqqqN46qqCe2qqoT2qqr//6qqAAD/v3sJ/7/2Ev+/chz/v+0l/79oL/+/4zj/v19C/7/aS/+/VVX/v9Be/79LaP+/x3H/v0J7/7+9hP+/OI7/v7SX/78vof+/qqr/vyW0/7+gvf+/HMf/v5fQ/78S2v+/jeP/vwnt/7+E9v+/////vwAAVdV7CVXV9hJV1XIcVdXtJVXVaC9V1eM4VdVfQlXV2ktV1VVVVdXQXlXVS2hV1cdxVdVCe1XVvYRV1TiOVdW0l1XVL6FV1aqqVdUltFXVoL1V1RzHVdWX0FXVEtpV1Y3jVdUJ7VXVhPZV1f//VdUAAKrqewmq6vYSqupyHKrq7SWq6mgvqurjOKrqX0Kq6tpLqupVVarq0F6q6ktoqurHcarqQnuq6r2Equo4jqrqtJeq6i+hquqqqqrqJbSq6qC9quocx6rql9Cq6hLaquqN46rqCe2q6oT2qur//6rqAAD//3sJ///2Ev//chz//+0l//9oL///4zj//19C///aS///VVX//9Be//9LaP//x3H//0J7//+9hP//OI7//7SX//8vof//qqr//yW0//+gvf//HMf//5fQ//8S2v//jeP//wnt//+E9v///////w==\",\"tri\":\"AAAcAAEAAQAcAB0AAQAdAAIAAgAdAB4AAgAeAAMAAwAeAB8AAwAfAAQABAAfACAABAAgAAUABQAgACEABQAhAAYABgAhACIABgAiAAcABwAiACMABwAjAAgACAAjACQACAAkAAkACQAkACUACQAlAAoACgAlACYACgAmAAsACwAmACcACwAnAAwADAAnACgADAAoAA0ADQAoACkADQApAA4ADgApACoADgAqAA8ADwAqACsADwArABAAEAArACwAEAAsABEAEQAsAC0AEQAtABIAEgAtAC4AEgAuABMAEwAuAC8AEwAvABQAFAAvADAAFAAwABUAFQAwADEAFQAxABYAFgAxADIAFgAyABcAFwAyADMAFwAzABgAGAAzADQAGAA0ABkAGQA0ADUAGQA1ABoAGgA1ADYAGgA2ABsAGwA2ADcAGwA3AAAAAAA3ABwAHAA4AB0AHQA4ADkAHQA5AB4AHgA5ADoAHgA6AB8AHwA6ADsAHwA7ACAAIAA7ADwAIAA8ACEAIQA8AD0AIQA9ACIAIgA9AD4AIgA+ACMAIwA+AD8AIwA/ACQAJAA/AEAAJABAACUAJQBAAEEAJQBBACYAJgBBAEIAJgBCACcAJwBCAEMAJwBDACgAKABDAEQAKABEACkAKQBEAEUAKQBFACoAKgBFAEYAKgBGACsAKwBGAEcAKwBHACwALABHAEgALABIAC0ALQBIAEkALQBJAC4ALgBJAEoALgBKAC8ALwBKAEsALwBLADAAMABLAEwAMABMADEAMQBMAE0AMQBNADIAMgBNAE4AMgBOADMAMwBOAE8AMwBPADQANABPAFAANABQADUANQBQAFEANQBRADYANgBRAFIANgBSADcANwBSAFMANwBTABwAHABTADgAOABUADkAOQBUAFUAOQBVADoAOgBVAFYAOgBWADsAOwBWAFcAOwBXADwAPABXAFgAPABYAD0APQBYAFkAPQBZAD4APgBZAFoAPgBaAD8APwBaAFsAPwBbAEAAQABbAFwAQABcAEEAQQBcAF0AQQBdAEIAQgBdAF4AQgBeAEMAQwBeAF8AQwBfAEQARABfAGAARABgAEUARQBgAGEARQBhAEYARgBhAGIARgBiAEcARwBiAGMARwBjAEgASABjAGQASABkAEkASQBkAGUASQBlAEoASgBlAGYASgBmAEsASwBmAGcASwBnAEwATABnAGgATABoAE0ATQBoAGkATQBpAE4ATgBpAGoATgBqAE8ATwBqAGsATwBrAFAAUABrAGwAUABsAFEAUQBsAG0AUQBtAFIAUgBtAG4AUgBuAFMAUwBuAG8AUwBvADgAOABvAFQAVABwAFUAVQBwAHEAVQBxAFYAVgBxAHIAVgByAFcAVwByAHMAVwBzAFgAWABzAHQAWAB0AFkAWQB0AHUAWQB1AFoAWgB1AHYAWgB2AFsAWwB2AHcAWwB3AFwAXAB3AHgAXAB4AF0AXQB4AHkAXQB5AF4AXgB5AHoAXgB6AF8AXwB6AHsAXwB7AGAAYAB7AHwAYAB8AGEAYQB8AH0AYQB9AGIAYgB9AH4AYgB+AGMAYwB+AH8AYwB/AGQAZAB/AIAAZACAAGUAZQCAAIEAZQCBAGYAZgCBAIIAZgCCAGcAZwCCAIMAZwCDAGgAaACDAIQAaACEAGkAaQCEAIUAaQCFAGoAagCFAIYAagCGAGsAawCGAIcAawCHAGwAbACHAIgAbACIAG0AbQCIAIkAbQCJAG4AbgCJAIoAbgCKAG8AbwCKAIsAbwCLAFQAVACLAHAAcACMAHEAcQCMAI0AcQCNAHIAcgCNAI4AcgCOAHMAcwCOAI8AcwCPAHQAdACPAJAAdACQAHUAdQCQAJEAdQCRAHYAdgCRAJIAdgCSAHcAdwCSAJMAdwCTAHgAeACTAJQAeACUAHkAeQCUAJUAeQCVAHoAegCVAJYAegCWAHsAewCWAJcAewCXAHwAfACXAJgAfACYAH0AfQCYAJkAfQCZAH4AfgCZAJoAfgCaAH8AfwCaAJsAfwCbAIAAgACbAJwAgACcAIEAgQCcAJ0AgQCdAIIAggCdAJ4AggCeAIMAgwCeAJ8AgwCfAIQAhACfAKAAhACgAIUAhQCgAKEAhQChAIYAhgChAKIAhgCiAIcAhwCiAKMAhwCjAIgAiACjAKQAiACkAIkAiQCkAKUAiQClAIoAigClAKYAigCmAIsAiwCmAKcAiwCnAHAAcACnAIwAjACoAI0AjQCoAKkAjQCpAI4AjgCpAKoAjgCqAI8AjwCqAKsAjwCrAJAAkACrAKwAkACsAJEAkQCsAK0AkQCtAJIAkgCtAK4AkgCuAJMAkwCuAK8AkwCvAJQAlACvALAAlACwAJUAlQCwALEAlQCxAJYAlgCxALIAlgCyAJcAlwCyALMAlwCzAJgAmACzALQAmAC0AJkAmQC0ALUAmQC1AJoAmgC1ALYAmgC2AJsAmwC2ALcAmwC3AJwAnAC3ALgAnAC4AJ0AnQC4ALkAnQC5AJ4AngC5ALoAngC6AJ8AnwC6ALsAnwC7AKAAoAC7ALwAoAC8AKEAoQC8AL0AoQC9AKIAogC9AL4AogC+AKMAowC+AL8AowC/AKQApAC/AMAApADAAKUApQDAAMEApQDBAKYApgDBAMIApgDCAKcApwDCAMMApwDDAIwAjADDAKgAqADEAKkAqQDEAMUAqQDFAKoAqgDFAMYAqgDGAKsAqwDGAMcAqwDHAKwArADHAMgArADIAK0ArQDIAMkArQDJAK4ArgDJAMoArgDKAK8ArwDKAMsArwDLALAAsADLAMwAsADMALEAsQDMAM0AsQDNALIAsgDNAM4AsgDOALMAswDOAM8AswDPALQAtADPANAAtADQALUAtQDQANEAtQDRALYAtgDRANIAtgDSALcAtwDSANMAtwDTALgAuADTANQAuADUALkAuQDUANUAuQDVALoAugDVANYAugDWALsAuwDWANcAuwDXALwAvADXANgAvADYAL0AvQDYANkAvQDZAL4AvgDZANoAvgDaAL8AvwDaANsAvwDbAMAAwADbANwAwADcAMEAwQDcAN0AwQDdAMIAwgDdAN4AwgDeAMMAwwDeAN8AwwDfAKgAqADfAMQAxADgAMUAxQDgAOEAxQDhAMYAxgDhAOIAxgDiAMcAxwDiAOMAxwDjAMgAyADjAOQAyADkAMkAyQDkAOUAyQDlAMoAygDlAOYAygDmAMsAywDmAOcAywDnAMwAzADnAOgAzADoAM0AzQDoAOkAzQDpAM4AzgDpAOoAzgDqAM8AzwDqAOsAzwDrANAA0ADrAOwA0ADsANEA0QDsAO0A0QDtANIA0gDtAO4A0gDuANMA0wDuAO8A0wDvANQA1ADvAPAA1ADwANUA1QDwAPEA1QDxANYA1gDxAPIA1gDyANcA1wDyAPMA1wDzANgA2ADzAPQA2AD0ANkA2QD0APUA2QD1ANoA2gD1APYA2gD2ANsA2wD2APcA2wD3ANwA3AD3APgA3AD4AN0A3QD4APkA3QD5AN4A3gD5APoA3gD6AN8A3wD6APsA3wD7AMQAxAD7AOAA4AD8AOEA4QD8AP0A4QD9AOIA4gD9AP4A4gD+AOMA4wD+AP8A4wD/AOQA5AD/AAAB5AAAAeUA5QAAAQEB5QABAeYA5gABAQIB5gACAecA5wACAQMB5wADAegA6AADAQQB6AAEAekA6QAEAQUB6QAFAeoA6gAFAQYB6gAGAesA6wAGAQcB6wAHAewA7AAHAQgB7AAIAe0A7QAIAQkB7QAJAe4A7gAJAQoB7gAKAe8A7wAKAQsB7wALAfAA8AALAQwB8AAMAfEA8QAMAQ0B8QANAfIA8gANAQ4B8gAOAfMA8wAOAQ8B8wAPAfQA9AAPARAB9AAQAfUA9QAQAREB9QARAfYA9gARARIB9gASAfcA9wASARMB9wATAfgA+AATARQB+AAUAfkA+QAUARUB+QAVAfoA+gAVARYB+gAWAfsA+wAWARcB+wAXAeAA4AAXAfwA/AAYAf0A/QAYARkB/QAZAf4A/gAZARoB/gAaAf8A/wAaARsB/wAbAQABAAEbARwBAAEcAQEBAQEcAR0BAQEdAQIBAgEdAR4BAgEeAQMBAwEeAR8BAwEfAQQBBAEfASABBAEgAQUBBQEgASEBBQEhAQYBBgEhASIBBgEiAQcBBwEiASMBBwEjAQgBCAEjASQBCAEkAQkBCQEkASUBCQElAQoBCgElASYBCgEmAQsBCwEmAScBCwEnAQwBDAEnASgBDAEoAQ0BDQEoASkBDQEpAQ4BDgEpASoBDgEqAQ8BDwEqASsBDwErARABEAErASwBEAEsAREBEQEsAS0BEQEtARIBEgEtAS4BEgEuARMBEwEuAS8BEwEvARQBFAEvATABFAEwARUBFQEwATEBFQExARYBFgExATIBFgEyARcBFwEyATMBFwEzAfwA/AAzARgBGAE0ARkBGQE0ATUBGQE1ARoBGgE1ATYBGgE2ARsBGwE2ATcBGwE3ARwBHAE3ATgBHAE4AR0BHQE4ATkBHQE5AR4BHgE5AToBHgE6AR8BHwE6ATsBHwE7ASABIAE7ATwBIAE8ASEBIQE8AT0BIQE9ASIBIgE9AT4BIgE+ASMBIwE+AT8BIwE/ASQBJAE/AUABJAFAASUBJQFAAUEBJQFBASYBJgFBAUIBJgFCAScBJwFCAUMBJwFDASgBKAFDAUQBKAFEASkBKQFEAUUBKQFFASoBKgFFAUYBKgFGASsBKwFGAUcBKwFHASwBLAFHAUgBLAFIAS0BLQFIAUkBLQFJAS4BLgFJAUoBLgFKAS8BLwFKAUsBLwFLATABMAFLAUwBMAFMATEBMQFMAU0BMQFNATIBMgFNAU4BMgFOATMBMwFOAU8BMwFPARgBGAFPATQBNAFQATUBNQFQAVEBNQFRATYBNgFRAVIBNgFSATcBNwFSAVMBNwFTATgBOAFTAVQBOAFUATkBOQFUAVUBOQFVAToBOgFVAVYBOgFWATsBOwFWAVcBOwFXATwBPAFXAVgBPAFYAT0BPQFYAVkBPQFZAT4BPgFZAVoBPgFaAT8BPwFaAVsBPwFbAUABQAFbAVwBQAFcAUEBQQFcAV0BQQFdAUIBQgFdAV4BQgFeAUMBQwFeAV8BQwFfAUQBRAFfAWABRAFgAUUBRQFgAWEBRQFhAUYBRgFhAWIBRgFiAUcBRwFiAWMBRwFjAUgBSAFjAWQBSAFkAUkBSQFkAWUBSQFlAUoBSgFlAWYBSgFmAUsBSwFmAWcBSwFnAUwBTAFnAWgBTAFoAU0BTQFoAWkBTQFpAU4BTgFpAWoBTgFqAU8BTwFqAWsBTwFrATQBNAFrAVAB\",\"ao\":\"/f39+vf29fX19fTw6N3U0dbh7/n9/////v38/P39/Pn39vb19fXz7eTZ09Td6fX8/v////79/Pz9/fz6+Pj39/b18evh2dfb5O/4/f/////+/fz8/f79+/r5+fj29PDo4Nra3ubw+P3//////v38/P7+/v38+/r59/Tv59/b297l7/j9//////7+/f3+//7+/f38+vj17+bf29rd5fD5/f///////v7+/////v7+/fv59u/n39vZ3eXw+f3////////+/v///////v38+vfw6N/a2t3m8vr+///////////////////+/fv48ejf2trf6PP7/v///////////////////v78+PLo39vb4Or0+/7////////////////////+/Pny6N/b3OLs9fv+/////////////////////vz58ufe2t3l7vf8/v////////////////////789+7j3Nvg6PL5/f7//////////w==\"}],\n    neck: [120,121,122,123,124,125,126,127,128,129,0,1,2,3,4,5,6,7,8,9,10,996,995,994,993,992,991,990,1111,1110,1109,1108,1107,1106],\n  },\n};\n"},{"path":"registry/dimaac/clothes-rack/garment.ts","type":"registry:component","target":"components/dimaac/clothes-rack/garment.ts","content":"// Garments, hangers and the rail for the Clothes Rack, built in three.js.\n//\n// How a garment is made: each kind (a tee, a crewneck, a camp shirt) is a real sewing pattern, a front and a back\n// panel with the sleeves cut on, sewn along the shoulders, the sleeves and the sides. A cloth simulation drops the\n// sewn garment onto the hanger and lets it settle under gravity, so the shoulders rest on the hanger, the sleeves\n// droop and the folds come from the cloth itself (scripts/clothes-rack/drape.ts). That draped shape is baked into\n// garment-drapes.ts, so nothing is simulated in the browser: the page only decodes it. On top of the shape: a\n// physical cloth material with sheen, a fine knit normal map, fold shading from the shape's curvature, a rib collar\n// round the neck, and a colour texture drawn on a canvas in the pattern's own coordinates (the fabric, the\n// stitching and the print), so a print sits on the chest the way it was placed on the flat pattern. The vertex shader\n// bends the cloth with the rows of cloth-motion.ts while the garment moves.\n//\n// Units: the rail's centre line is the x axis at y = 0, z = 0. A garment hangs about 0.85 units below the rail and\n// its front faces +z when its turn group has rotation.y = 0. The hook is a swivel: it stays across the rail while\n// the hanger and garment turn under it.\nimport * as THREE from \"three\";\nimport { RoomEnvironment } from \"three/examples/jsm/environments/RoomEnvironment.js\";\nimport { HDRLoader } from \"three/examples/jsm/loaders/HDRLoader.js\";\nimport { CLOTH_ROWS } from \"./cloth-motion\";\nimport { DRAPES, DRAPE_HANGER, DRAPE_SCALE, type DrapeData, type DrapePanel, type DrapeSleeve } from \"./garment-drapes\";\n\nexport type GarmentKind = \"tee\" | \"crewneck\" | \"shirt\";\n\nexport type GarmentPrint =\n  /** A big flowing script word or two across the chest. */\n  | { kind: \"script\"; text: string; ink: string }\n  /** Stacked bold serif lines across the chest, like a college crewneck. */\n  | { kind: \"serif\"; lines: string[]; ink: string }\n  /** A cluster of simple flowers, with an optional script word over it. */\n  | { kind: \"flowers\"; text?: string; ink: string }\n  /** A small wordmark on the left chest. */\n  | { kind: \"chest\"; text: string; ink: string }\n  /** A sewn-on chest pocket in the same fabric. */\n  | { kind: \"pocket\" }\n  /** An all-over leaf pattern in a few colours (the shirt). */\n  | { kind: \"pattern\"; colours: string[] };\n\nexport type GarmentSpec = {\n  kind: GarmentKind;\n  /** The fabric colour, as a hex string. */\n  colour: string;\n  print?: GarmentPrint;\n  /** A transparent PNG or WebP drawn over the front panel instead of the print. */\n  image?: string;\n};\n\nexport type HangerFinish = \"wood\" | \"black\" | \"chrome\";\n\n/**\n * Photographic cloth and light, each optional: tiling scans of knitted cloth (normal and roughness maps; jersey for the\n * tees and the shirt, fleece for the crewneck), a greyscale heather grain (strong on a grey marl, faint on any other\n * colour), and an equirect .hdr studio that lights the cloth and shows in its sheen. Without them the knit is drawn in\n * code and the light is a plain room.\n */\nexport type GarmentTextures = {\n  jerseyNormal?: string;\n  jerseyRoughness?: string;\n  fleeceNormal?: string;\n  fleeceRoughness?: string;\n  heatherGrain?: string;\n  studio?: string;\n};\nexport type RailFinish = \"chrome\" | \"black\" | \"brass\";\n\nexport type Garment = {\n  /** Put this on the rail at (x, 0, 0). Its rotation.x swings the hanger on the rail (a pendulum toward or away from you). */\n  object: THREE.Group;\n  /** The hanger and garment on their swivel hook. rotation.y turns the garment (0 faces the camera). The hook itself does not turn. */\n  turn: THREE.Group;\n  /** The chrome hook. On the rail it stays across the rail; turn it (rotation.y = PI / 2) to show its curve, e.g. off the rail. */\n  hook: THREE.Object3D;\n  /** Width of the garment seen from the front, sleeves included. */\n  width: number;\n  /** Width of the body alone (no sleeves). */\n  bodyWidth: number;\n  /** Thickness of the garment seen from the side, at the hem where it hangs open widest. */\n  depth: number;\n  /** Height from the rail to the hem. */\n  height: number;\n  setHanger(finish: HangerFinish): void;\n  /**\n   * Bends the cloth like fabric (see cloth-motion.ts). Call it every frame while anything moves, after setting\n   * turn.rotation.y. twist: radians each row of cloth has turned past the hanger, from the shoulders (row 0) to the\n   * hem; sway: how far each row trails along the rail (garment units, in the rail's frame whatever way the garment is\n   * turned); ripple: 0 - 1, a faint wave that runs down the cloth while it moves; time: seconds, for the ripple.\n   */\n  setCloth(cloth: { twist: ArrayLike<number>; sway: ArrayLike<number>; ripple: number; time: number }): void;\n  /**\n   * Only for a garment made with { fadeable: true }: \"solid\" is the normal look; \"depth\" draws only its depth; \"fade\"\n   * then draws its colour at this opacity on top of that depth, so the whole garment fades as one piece and its own\n   * hidden parts (the back, the inside) never show through.\n   */\n  setPass(pass: \"solid\" | \"depth\" | \"fade\", opacity?: number): void;\n  dispose(): void;\n};\n\nexport type Rail = {\n  object: THREE.Object3D;\n  setLength(length: number): void;\n  setFinish(finish: RailFinish): void;\n  dispose(): void;\n};\n\nexport type Wardrobe = {\n  /** fadeable: the garment's materials are made so it can fade in and out with setPass (the detail view's swaps). */\n  garment(spec: GarmentSpec, hanger: HangerFinish, options?: { fadeable?: boolean }): Garment;\n  rail(length: number, finish: RailFinish): Rail;\n  /** The light the cloth is seen in: the studio when one was given and has loaded, else a plain room. Set it as\n   * scene.environment once `ready` has settled. */\n  readonly environment: THREE.Texture;\n  /** Settles when every texture asked for has loaded (or failed). Garments made before then use the drawn knit. */\n  ready: Promise<void>;\n  /** Adds the house lights (soft key, fill and sky) to a scene. */\n  addLights(scene: THREE.Scene): void;\n  dispose(): void;\n};\n\ntype Pt = [number, number];\ntype Pattern = DrapeData[\"pattern\"];\n\n// ---------------------------------------------------------------- photographic cloth and light\n\n// Each address is loaded once per page and shared: a texture's picture can be uploaded by several renderers (the rack\n// and the detail view have one each), so the detail view opens with everything already here. They are small (about\n// 460 KB in all) and kept for the life of the page.\nconst LOADING = new Map<string, Promise<THREE.Texture | null>>();\nconst LOADED = new Map<string, THREE.Texture>();\nfunction loadOnce(url: string, hdr: boolean): Promise<THREE.Texture | null> {\n  let pending = LOADING.get(url);\n  if (!pending) {\n    pending = new Promise((resolve) => {\n      const done = (t: THREE.Texture) => {\n        LOADED.set(url, t);\n        resolve(t);\n      };\n      // a file that fails to load leaves the drawn knit or the plain room in its place, and is tried again by the\n      // next wardrobe (a rebuild, the detail view) instead of failing for the rest of the page\n      const failed = () => {\n        LOADING.delete(url);\n        resolve(null);\n      };\n      if (hdr) {\n        new HDRLoader().load(\n          url,\n          (t) => {\n            t.mapping = THREE.EquirectangularReflectionMapping;\n            done(t);\n          },\n          undefined,\n          failed,\n        );\n      } else {\n        new THREE.TextureLoader().load(\n          url,\n          (t) => {\n            t.wrapS = t.wrapT = THREE.RepeatWrapping;\n            t.colorSpace = THREE.NoColorSpace;\n            done(t);\n          },\n          undefined,\n          failed,\n        );\n      }\n    });\n    LOADING.set(url, pending);\n  }\n  return pending;\n}\n\n// One scan covers about 27 cm of real cloth, a little under a third of a garment unit\nconst SCAN_TILE = 0.3;\n// The scanned studio (a white cyclorama wall on one side, two softboxes and a dark room on the other) is turned so\n// the wall is behind the viewer and off to one side: it lights the fronts in the detail view and the sides the rail\n// shows, as a big soft source does in a product shot\nconst STUDIO_TURN = new THREE.Euler(0, 4.2, 0);\n// how far a side-on garment's sleeves are blended from open toward hanging down its side (see setCloth)\nconst HANG_AT_REST = 0.55;\n// without the scan, the plain room is turned a quarter so its brightest panel is not straight in front of the cloth\nconst ROOM_TURN = new THREE.Euler(0, Math.PI / 2, 0);\n\n// ---------------------------------------------------------------- the draped shapes\n\n// One panel: where each point sits on the flat pattern (x, y pairs), where it ended up on the hanger (x, y, z), and\n// the triangles\ntype Panel = { pat: Float32Array; pos: Float32Array; tri: Uint16Array; ao: Uint8Array };\n\nfunction bytes(b64: string): ArrayBuffer {\n  const bin = atob(b64);\n  const out = new Uint8Array(bin.length);\n  for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n  return out.buffer;\n}\n\n// outward: 1 for the front (its pattern is seen from the front), -1 for the back (seen from behind)\nfunction decodePanel(p: DrapePanel, outward: 1 | -1): Panel {\n  const pat = Float32Array.from(new Int16Array(bytes(p.pat)), (v) => v / DRAPE_SCALE);\n  const pos = Float32Array.from(new Int16Array(bytes(p.pos)), (v) => v / DRAPE_SCALE);\n  const tri = new Uint16Array(bytes(p.tri));\n  const ao = new Uint8Array(bytes(p.ao));\n  // wind every triangle so its face points out of the garment: then the normals agree across the panel, and the\n  // inside of the cloth is always the back face\n  for (let i = 0; i < tri.length; i += 3) {\n    const a = tri[i]!;\n    const b = tri[i + 1]!;\n    const c = tri[i + 2]!;\n    const area = (pat[b * 2]! - pat[a * 2]!) * (pat[c * 2 + 1]! - pat[a * 2 + 1]!) - (pat[c * 2]! - pat[a * 2]!) * (pat[b * 2 + 1]! - pat[a * 2 + 1]!);\n    if (area * outward < 0) {\n      tri[i + 1] = c;\n      tri[i + 2] = b;\n    }\n  }\n  return { pat, pos, tri, ao };\n}\n\n// One sleeve: its draped grid, its texture coordinates (round the sleeve, along it from the armhole), its triangles\n// and its baked occlusion\nfunction decodeSleeve(sl: DrapeSleeve) {\n  const pos = Float32Array.from(new Int16Array(bytes(sl.pos)), (v) => v / DRAPE_SCALE);\n  const hang = Float32Array.from(new Int16Array(bytes(sl.hang)), (v) => v / DRAPE_SCALE);\n  const uv = Float32Array.from(new Uint16Array(bytes(sl.uv)), (v) => v / 65535);\n  return { pos, hang, uv, tri: new Uint16Array(bytes(sl.tri)), ao: new Uint8Array(bytes(sl.ao)), rings: sl.rings, around: sl.around };\n}\n\n// The part of the flat pattern a kind's texture covers, in pattern units (the neck corners are at y = 0), and the\n// texture's size: about 1180 texels per unit, so a print reads sharp in the detail view\ntype Box = { x0: number; y0: number; y1: number; w: number; h: number; texW: number; texH: number };\nfunction boxFor(p: Pattern): Box {\n  const x1 = Math.max(p.half, p.shoulderX) + 0.02;\n  const y1 = 0.03;\n  const y0 = -p.length - 0.02;\n  const w = 2 * x1;\n  const h = y1 - y0;\n  const texW = Math.min(1536, Math.round(1180 * w));\n  return { x0: -x1, y0, y1, w, h, texW, texH: Math.round((texW * h) / w) };\n}\n\n// One panel as geometry: the draped positions, UVs from the flat pattern, and shading baked in as a vertex colour:\n// the occlusion baked with the drape, a little more in the hollows between folds, a touch more along the seams\nfunction panelGeometry(panel: Panel, box: Box) {\n  const n = panel.pos.length / 3;\n  const uv = new Float32Array(n * 2);\n  for (let i = 0; i < n; i++) {\n    uv[i * 2] = (panel.pat[i * 2]! - box.x0) / box.w;\n    uv[i * 2 + 1] = (panel.pat[i * 2 + 1]! - box.y0) / box.h;\n  }\n  return shadedGeometry(panel.pos, uv, panel.tri, panel.ao);\n}\n\n// A piece of cloth as geometry: the draped positions, its texture coordinates, and shading baked in as a vertex colour\nfunction shadedGeometry(P: Float32Array, uv: Float32Array, tri: Uint16Array, ao: Uint8Array) {\n  const n = P.length / 3;\n  const panel = { tri, ao };\n  const geo = new THREE.BufferGeometry();\n  geo.setAttribute(\"position\", new THREE.BufferAttribute(P, 3));\n  geo.setAttribute(\"uv\", new THREE.BufferAttribute(uv, 2));\n  geo.setIndex(new THREE.BufferAttribute(tri, 1));\n  geo.computeVertexNormals();\n  const normal = geo.attributes.normal as THREE.BufferAttribute;\n  // each point's neighbours (for the curvature), and the edges only one triangle uses (the panel's outline)\n  const neighbours: number[][] = Array.from({ length: n }, () => []);\n  const edgeUse = new Map<number, number>();\n  for (let t = 0; t < panel.tri.length; t += 3) {\n    for (let k = 0; k < 3; k++) {\n      const a = panel.tri[t + k]!;\n      const b = panel.tri[t + ((k + 1) % 3)]!;\n      const key = a < b ? a * 65536 + b : b * 65536 + a;\n      const uses = (edgeUse.get(key) ?? 0) + 1;\n      edgeUse.set(key, uses);\n      if (uses === 1) {\n        neighbours[a]!.push(b);\n        neighbours[b]!.push(a);\n      }\n    }\n  }\n  const rim = new Uint8Array(n);\n  for (const [key, uses] of edgeUse) {\n    if (uses !== 1) continue;\n    rim[Math.floor(key / 65536)] = 1;\n    rim[key % 65536] = 1;\n  }\n  // how deep each point sits in a hollow: its neighbours' average, measured along its outward normal\n  const hollow = new Float32Array(n);\n  for (let i = 0; i < n; i++) {\n    const ns = neighbours[i]!;\n    if (!ns.length) continue;\n    let lx = 0;\n    let ly = 0;\n    let lz = 0;\n    for (const j of ns) {\n      lx += P[j * 3]!;\n      ly += P[j * 3 + 1]!;\n      lz += P[j * 3 + 2]!;\n    }\n    lx = lx / ns.length - P[i * 3]!;\n    ly = ly / ns.length - P[i * 3 + 1]!;\n    lz = lz / ns.length - P[i * 3 + 2]!;\n    hollow[i] = Math.max(0, lx * normal.getX(i) + ly * normal.getY(i) + lz * normal.getZ(i));\n  }\n  // three passes of blur so the shading follows the folds, never the points of the mesh (one pass left the lattice\n  // showing as a faint grid of dots on white cloth)\n  let depthOf = hollow;\n  for (let pass = 0; pass < 3; pass++) {\n    const next = new Float32Array(n);\n    for (let i = 0; i < n; i++) {\n      const ns = neighbours[i]!;\n      let sum = depthOf[i]! * 2;\n      for (const j of ns) sum += depthOf[j]!;\n      next[i] = sum / (ns.length + 2);\n    }\n    depthOf = next;\n  }\n  // The simulation leaves tiny bumps at the scale of its mesh. They do not change the shape, but a light grazing\n  // across white cloth shows them as a grid of dots, so the normals are smoothed over their neighbours.\n  const N = normal.array as Float32Array;\n  for (let pass = 0; pass < 2; pass++) {\n    const next = new Float32Array(N.length);\n    for (let i = 0; i < n; i++) {\n      let x = N[i * 3]! * 2;\n      let y = N[i * 3 + 1]! * 2;\n      let z = N[i * 3 + 2]! * 2;\n      for (const j of neighbours[i]!) {\n        x += N[j * 3]!;\n        y += N[j * 3 + 1]!;\n        z += N[j * 3 + 2]!;\n      }\n      const l = Math.hypot(x, y, z) || 1;\n      next[i * 3] = x / l;\n      next[i * 3 + 1] = y / l;\n      next[i * 3 + 2] = z / l;\n    }\n    N.set(next);\n  }\n  normal.needsUpdate = true;\n  const colors = new Float32Array(n * 3);\n  for (let i = 0; i < n; i++) {\n    const depth = depthOf[i]!;\n    // the baked occlusion (under the sleeves, deep in the folds), softened so it never goes black\n    let s = (1 - 0.55 * (1 - Math.max(0.2, panel.ao[i]! / 255))) * (1 - Math.min(0.16, depth * 55));\n    if (rim[i]) s *= 0.93;\n    // shade on cloth in a daylight studio is a touch cool, never warm (warm shade made white cotton read cream)\n    colors[i * 3] = s * (0.99 + 0.01 * s);\n    colors[i * 3 + 1] = s * (0.995 + 0.005 * s);\n    colors[i * 3 + 2] = s;\n  }\n  geo.setAttribute(\"color\", new THREE.BufferAttribute(colors, 3));\n  return geo;\n}\n\n// Where a point of the flat front pattern ended up on the draped cloth, and which way the cloth faces there\nfunction surfaceAt(panel: Panel, normals: THREE.BufferAttribute, q: Pt): { p: THREE.Vector3; n: THREE.Vector3 } {\n  const { pat, pos, tri } = panel;\n  const p = new THREE.Vector3();\n  const nv = new THREE.Vector3(0, 0, 1);\n  let best = Infinity;\n  for (let t = 0; t < tri.length; t += 3) {\n    const a = tri[t]!;\n    const b = tri[t + 1]!;\n    const c = tri[t + 2]!;\n    const ax = pat[a * 2]!;\n    const ay = pat[a * 2 + 1]!;\n    const bx = pat[b * 2]!;\n    const by = pat[b * 2 + 1]!;\n    const cx = pat[c * 2]!;\n    const cy = pat[c * 2 + 1]!;\n    const d = (by - cy) * (ax - cx) + (cx - bx) * (ay - cy);\n    if (Math.abs(d) < 1e-14) continue;\n    let u = ((by - cy) * (q[0] - cx) + (cx - bx) * (q[1] - cy)) / d;\n    let v = ((cy - ay) * (q[0] - cx) + (ax - cx) * (q[1] - cy)) / d;\n    let w = 1 - u - v;\n    const outside = Math.max(0, -u) + Math.max(0, -v) + Math.max(0, -w);\n    if (outside >= best) continue;\n    best = outside;\n    u = Math.max(0, u);\n    v = Math.max(0, v);\n    w = Math.max(0, w);\n    const s = u + v + w;\n    u /= s;\n    v /= s;\n    w /= s;\n    p.set(u * pos[a * 3]! + v * pos[b * 3]! + w * pos[c * 3]!, u * pos[a * 3 + 1]! + v * pos[b * 3 + 1]! + w * pos[c * 3 + 1]!, u * pos[a * 3 + 2]! + v * pos[b * 3 + 2]! + w * pos[c * 3 + 2]!);\n    nv.set(\n      u * normals.getX(a) + v * normals.getX(b) + w * normals.getX(c),\n      u * normals.getY(a) + v * normals.getY(b) + w * normals.getY(c),\n      u * normals.getZ(a) + v * normals.getZ(b) + w * normals.getZ(c),\n    ).normalize();\n    if (outside === 0) break;\n  }\n  return { p, n: nv };\n}\n\n// The collar: a rib band round the draped neckline (the front's neck edge, then the back's, meeting at the shoulders)\nfunction collarGeometry(front: Panel, back: Panel, neck: number[], kind: GarmentKind) {\n  const nF = front.pos.length / 3;\n  const pts: THREE.Vector3[] = [];\n  for (const i of neck) {\n    const src = i < nF ? front.pos : back.pos;\n    const j = i < nF ? i : i - nF;\n    const v = new THREE.Vector3(src[j * 3]!, src[j * 3 + 1]!, src[j * 3 + 2]!);\n    // the two panels meet at the shoulders, so a corner can come twice\n    if (!pts.length || v.distanceTo(pts[pts.length - 1]!) > 1e-3) pts.push(v);\n  }\n  if (pts.length > 2 && pts[0]!.distanceTo(pts[pts.length - 1]!) < 1e-3) pts.pop();\n  // The loop turns sharply at the two neck corners, where the front's neckline meets the back's: a curve drawn\n  // through them overshot and stood up as two little ears beside the hanger. A few passes of easing round the loop\n  // take the corners off.\n  for (let pass = 0; pass < 4; pass++) {\n    const prev = pts.map((v) => v.clone());\n    const n = prev.length;\n    for (let i = 0; i < n; i++) pts[i]!.copy(prev[(i + n - 1) % n]!).multiplyScalar(0.25).addScaledVector(prev[i]!, 0.5).addScaledVector(prev[(i + 1) % n]!, 0.25);\n  }\n  const curve = new THREE.CatmullRomCurve3(pts, true, \"centripetal\");\n  // only the rolled edge of the rib: thin, so seen side-on it never stands up off the shoulders like a hood\n  return new THREE.TubeGeometry(curve, 160, kind === \"crewneck\" ? 0.0058 : kind === \"shirt\" ? 0.0062 : 0.0046, 10, true);\n}\n\n// The right armhole, from the shoulder point down to the armpit, cut as drape.ts cuts it\nfunction armholeLine(p: Pattern): Pt[] {\n  const c: Pt = [p.shoulderX - 0.004, -(0.25 * p.shoulderDrop + 0.75 * p.armpit)];\n  const pts: Pt[] = [];\n  for (let i = 0; i <= 12; i++) {\n    const t = i / 12;\n    pts.push([(1 - t) * (1 - t) * p.shoulderX + 2 * (1 - t) * t * c[0] + t * t * p.half, -(1 - t) * (1 - t) * p.shoulderDrop + 2 * (1 - t) * t * c[1] - t * t * p.armpit]);\n  }\n  return pts;\n}\n\n// A point on the front neckline, t from the middle (0) to the neck corner (1), cut as drape.ts cuts it\nfunction neckPoint(p: Pattern, t: number): Pt {\n  if (p.vNeck) {\n    const cx = 0.8 * p.neckHalf;\n    const cy = -0.3 * p.neckFront;\n    return [2 * (1 - t) * t * cx + t * t * p.neckHalf, -(1 - t) * (1 - t) * p.neckFront + 2 * (1 - t) * t * cy];\n  }\n  const a = t * (Math.PI / 2);\n  return [Math.sin(a) * p.neckHalf, -Math.cos(a) * p.neckFront];\n}\n\n// One side of the shirt's open camp collar on the flat front, as two edges from the neck corner down: the inner\n// edge along the V, the outer edge out over the chest to the collar point. dir 1 is the side on your right.\nconst FLAP_STEPS = 14;\nfunction flapEdges(p: Pattern, dir: number): { inner: Pt[]; outer: Pt[] } {\n  const inner: Pt[] = [];\n  const outer: Pt[] = [];\n  const o0: Pt = [p.neckHalf + 0.035, -0.015];\n  const o1: Pt = [p.neckHalf + 0.065, -0.1];\n  const o2: Pt = [p.neckHalf - 0.005, -p.neckFront + 0.035];\n  for (let i = 0; i <= FLAP_STEPS; i++) {\n    const s = i / FLAP_STEPS;\n    const [ix, iy] = neckPoint(p, 1 - s);\n    inner.push([dir * ix, iy]);\n    const a = (1 - s) * (1 - s);\n    const b = 2 * (1 - s) * s;\n    const c = s * s;\n    outer.push([dir * (a * o0[0] + b * o1[0] + c * o2[0]), a * o0[1] + b * o1[1] + c * o2[1]]);\n  }\n  return { inner, outer };\n}\n\n// The shirt's camp collar, two soft flaps lying open on the chest either side of the V, and a row of buttons. Both\n// are placed on the draped front, so they follow its folds, and both sit at their real place in the geometry (not\n// moved by a mesh position), so the cloth shader, which bends by height, carries them along with the fabric.\nfunction shirtParts(p: Pattern, box: Box, front: Panel, normals: THREE.BufferAttribute) {\n  const flaps: THREE.BufferGeometry[] = [];\n  for (const dir of [1, -1]) {\n    const { inner, outer } = flapEdges(p, dir);\n    const verts: number[] = [];\n    const uvs: number[] = [];\n    const idx: number[] = [];\n    for (let i = 0; i <= FLAP_STEPS; i++) {\n      for (const q of [inner[i]!, outer[i]!]) {\n        const s = surfaceAt(front, normals, q);\n        s.p.addScaledVector(s.n, 0.0035);\n        verts.push(s.p.x, s.p.y, s.p.z);\n        uvs.push((q[0] - box.x0) / box.w, (q[1] - box.y0) / box.h);\n      }\n      if (i < FLAP_STEPS) {\n        const k = i * 2;\n        idx.push(k, k + 1, k + 2, k + 1, k + 3, k + 2);\n      }\n    }\n    const g = new THREE.BufferGeometry();\n    g.setAttribute(\"position\", new THREE.Float32BufferAttribute(verts, 3));\n    g.setAttribute(\"uv\", new THREE.Float32BufferAttribute(uvs, 2));\n    g.setIndex(idx);\n    g.computeVertexNormals();\n    // face the flap out of the chest, whichever way its strip happened to wind\n    if ((g.attributes.normal as THREE.BufferAttribute).getZ(FLAP_STEPS) < 0) {\n      for (let i = 0; i < idx.length; i += 3) [idx[i + 1], idx[i + 2]] = [idx[i + 2]!, idx[i + 1]!];\n      g.setIndex(idx);\n      g.computeVertexNormals();\n    }\n    // the same cloth as the body, a shade darker, so the collar reads as a layer lying on the chest\n    g.setAttribute(\"color\", new THREE.BufferAttribute(new Float32Array(verts.length).fill(0.9), 3));\n    flaps.push(g);\n  }\n  const buttons: THREE.BufferGeometry[] = [];\n  for (let i = 0; i < 5; i++) {\n    const s = surfaceAt(front, normals, [0.007, -p.neckFront - 0.025 - i * 0.115]);\n    const b = new THREE.CylinderGeometry(0.0062, 0.0062, 0.003, 16);\n    // the button's axis along the cloth's normal, standing a hair off the surface\n    b.applyQuaternion(new THREE.Quaternion().setFromUnitVectors(new THREE.Vector3(0, 1, 0), s.n));\n    b.translate(s.p.x + s.n.x * 0.003, s.p.y + s.n.y * 0.003, s.p.z + s.n.z * 0.003);\n    buttons.push(b);\n  }\n  return { flaps, buttons };\n}\n\n// ---------------------------------------------------------------- textures\n\nfunction canvas(w: number, h: number) {\n  const c = document.createElement(\"canvas\");\n  c.width = w;\n  c.height = h;\n  return c;\n}\n\nfunction parse(hex: string) {\n  return new THREE.Color(hex);\n}\nfunction shade(hex: string, amount: number) {\n  const c = parse(hex);\n  const t = amount < 0 ? new THREE.Color(0, 0, 0) : new THREE.Color(1, 1, 1);\n  return \"#\" + c.lerp(t, Math.abs(amount)).getHexString();\n}\n// a grey marl: hardly any colour, neither dark nor light\nfunction isMarl(hex: string) {\n  const hsl = { h: 0, s: 0, l: 0 };\n  parse(hex).getHSL(hsl);\n  return hsl.s < 0.08 && hsl.l > 0.3 && hsl.l < 0.7;\n}\nfunction lum(hex: string) {\n  const c = parse(hex);\n  return 0.2126 * c.r + 0.7152 * c.g + 0.0722 * c.b;\n}\n\nconst SCRIPT = \"'Snell Roundhand', 'Segoe Script', 'Brush Script MT', 'Apple Chancery', cursive\";\nconst SERIF = \"'Didot', 'Bodoni 72', 'Bodoni MT', 'Playfair Display', Georgia, serif\";\n\nfunction rand(seed: number) {\n  let s = seed >>> 0 || 1;\n  return () => {\n    s ^= s << 13;\n    s ^= s >>> 17;\n    s ^= s << 5;\n    return (s >>> 0) / 4294967296;\n  };\n}\n\nfunction hash(x: number, y: number, seed: number) {\n  const h = Math.sin(x * 127.1 + y * 311.7 + seed * 74.7) * 43758.5453;\n  return h - Math.floor(h);\n}\n\n// A screen print is never perfectly solid: knock tiny specks out of it so the cloth shows through.\nfunction grain(ctx: CanvasRenderingContext2D, x: number, y: number, w: number, h: number, seed: number) {\n  const r = rand(seed);\n  ctx.save();\n  ctx.globalCompositeOperation = \"destination-out\";\n  for (let i = 0; i < (w * h) / 170; i++) {\n    ctx.fillStyle = `rgba(0,0,0,${0.12 + r() * 0.28})`;\n    ctx.fillRect(x + r() * w, y + r() * h, 1 + r() * 1.5, 1 + r() * 1.5);\n  }\n  ctx.restore();\n}\n\n// Pattern units to texture pixels for one kind's texture, and how many pixels make a unit\nfunction painter(box: Box) {\n  const unit = box.texW / box.w;\n  const toPx = (x: number, y: number): Pt => [(x - box.x0) * unit, (box.y1 - y) * unit];\n  return { toPx, unit };\n}\n\nfunction drawPrint(ctx: CanvasRenderingContext2D, print: GarmentPrint, kind: GarmentKind, p: Pattern, box: Box, colour: string) {\n  const { toPx, unit } = painter(box);\n  // a chest print sits about a fifth of the body below the front of the neck\n  const [cx, chestY] = toPx(0, -p.neckFront - (kind === \"crewneck\" ? 0.2 : 0.17));\n  // prints are sized to the chest they sit on\n  const bodyW = 2 * p.half * 0.8 * unit;\n  const fit = bodyW / (0.5 * unit);\n  const layer = canvas(box.texW, box.texH);\n  const g = layer.getContext(\"2d\")!;\n  g.textAlign = \"center\";\n  g.textBaseline = \"middle\";\n  if (print.kind === \"script\") {\n    const words = print.text.split(\" \");\n    const lines = words.length > 1 ? [words.slice(0, Math.ceil(words.length / 2)).join(\" \"), words.slice(Math.ceil(words.length / 2)).join(\" \")] : words;\n    g.save();\n    g.translate(cx, chestY);\n    g.rotate(-0.12);\n    g.fillStyle = print.ink;\n    lines.forEach((line, i) => {\n      let size = 150;\n      g.font = `700 ${size}px ${SCRIPT}`;\n      const w = g.measureText(line).width;\n      size = Math.min(170 * fit, (size * bodyW * 0.74) / Math.max(1, w));\n      g.font = `700 ${size}px ${SCRIPT}`;\n      g.fillText(line, (i ? 0.08 : -0.06) * bodyW, (i - (lines.length - 1) / 2) * size * 0.78);\n    });\n    g.restore();\n    grain(g, cx - bodyW / 2, chestY - 160 * fit, bodyW, 320 * fit, 7);\n  } else if (print.kind === \"serif\") {\n    g.fillStyle = print.ink;\n    const size = (bodyW * 0.235) | 0;\n    print.lines.forEach((line, i) => {\n      g.font = `700 ${size}px ${SERIF}`;\n      g.fillText(line, cx, chestY - size * 0.95 + i * size * 0.92);\n    });\n    g.font = `600 ${Math.round(size * 0.16)}px ${SERIF}`;\n    g.fillText(\"DIMAAC GOODS  ·  MMXXVI\", cx, chestY - size * 0.95 + print.lines.length * size * 0.92 - size * 0.12);\n    grain(g, cx - bodyW / 2, chestY - size * 1.6, bodyW, size * 3.6, 9);\n  } else if (print.kind === \"flowers\") {\n    const r = rand(23);\n    const palette = [\"#e8364f\", \"#f58a1f\", \"#6a4cf0\", \"#11a58a\", \"#ec3f8c\", \"#f7c21b\", \"#2f7ff0\"];\n    const cy = chestY + 30 * fit;\n    for (let i = 0; i < 34; i++) {\n      const a = r() * Math.PI * 2;\n      const rr = Math.sqrt(r()) * bodyW * 0.3;\n      const fx = cx + Math.cos(a) * rr * 1.05;\n      const fy = cy + Math.sin(a) * rr * 0.92;\n      const petals = 5 + ((r() * 4) | 0);\n      const size = (20 + r() * 30) * fit;\n      const col = palette[(r() * palette.length) | 0] ?? \"#e85d75\";\n      // leaf\n      g.save();\n      g.translate(fx, fy);\n      g.rotate(r() * Math.PI * 2);\n      g.fillStyle = r() > 0.5 ? \"#2f7a46\" : \"#4b9a5a\";\n      g.beginPath();\n      g.ellipse(size * 1.1, 0, size * 0.7, size * 0.26, 0.3, 0, Math.PI * 2);\n      g.fill();\n      for (let k = 0; k < petals; k++) {\n        g.rotate((Math.PI * 2) / petals);\n        g.fillStyle = col;\n        g.beginPath();\n        g.ellipse(size * 0.55, 0, size * 0.55, size * 0.3, 0, 0, Math.PI * 2);\n        g.fill();\n      }\n      g.fillStyle = r() > 0.5 ? \"#2b2b33\" : \"#ffd84d\";\n      g.beginPath();\n      g.arc(0, 0, size * 0.24, 0, Math.PI * 2);\n      g.fill();\n      g.restore();\n    }\n    if (print.text) {\n      g.save();\n      g.translate(cx, cy - bodyW * 0.12);\n      g.rotate(-0.1);\n      g.fillStyle = print.ink;\n      g.font = `700 ${Math.round(150 * fit)}px ${SCRIPT}`;\n      g.strokeStyle = colour;\n      g.lineWidth = 14 * fit;\n      g.strokeText(print.text, 0, 0);\n      g.fillText(print.text, 0, 0);\n      g.restore();\n    }\n    // flowers are printed solid: no knock-out grain, so the colours stay bright\n  } else if (print.kind === \"chest\") {\n    // the wearer's left chest, which is on your right when it faces you\n    const [x, y] = toPx(p.neckHalf + 0.015, -p.neckFront - 0.045);\n    g.fillStyle = print.ink;\n    g.font = `italic 600 30px ${SERIF}`;\n    const w = g.measureText(print.text).width;\n    const size = Math.min(34, (30 * 0.09 * unit) / Math.max(1, w));\n    g.font = `italic 600 ${size}px ${SERIF}`;\n    g.fillText(print.text, x, y);\n  } else if (print.kind === \"pocket\") {\n    // a sewn-on patch pocket on the wearer's left chest: a slightly darker patch with a soft shadow under it, a\n    // shadow just inside its open top, a folded top hem and a row of stitches round it\n    const [x, y] = toPx(0.05, -p.neckFront - 0.06);\n    const w = 0.1 * unit;\n    const h = 0.115 * unit;\n    g.fillStyle = \"rgba(0,0,0,0.16)\";\n    g.beginPath();\n    g.roundRect(x + 3, y + 5, w, h, [2, 2, 8, 8]);\n    g.fill();\n    g.fillStyle = shade(colour, -0.09);\n    g.beginPath();\n    g.roundRect(x, y, w, h, [2, 2, 8, 8]);\n    g.fill();\n    const lip = g.createLinearGradient(0, y, 0, y + 24);\n    lip.addColorStop(0, \"rgba(0,0,0,0.22)\");\n    lip.addColorStop(1, \"rgba(0,0,0,0)\");\n    g.fillStyle = lip;\n    g.fillRect(x, y, w, 24);\n    g.strokeStyle = shade(colour, -0.3);\n    g.lineWidth = 1.6;\n    g.setLineDash([5, 4]);\n    g.beginPath();\n    g.moveTo(x + 5, y + 15);\n    g.lineTo(x + w - 5, y + 15);\n    g.stroke();\n    g.beginPath();\n    g.roundRect(x + 5, y + 5, w - 10, h - 10, [1, 1, 5, 5]);\n    g.stroke();\n    g.setLineDash([]);\n    g.strokeStyle = shade(colour, -0.24);\n    g.lineWidth = 1.4;\n    g.beginPath();\n    g.roundRect(x, y, w, h, [2, 2, 8, 8]);\n    g.stroke();\n  }\n  if (print.kind !== \"pattern\") ctx.drawImage(layer, 0, 0);\n}\n\n// An all-over print of small sprigs, like a vintage resort shirt: five-petal flowers, pairs of leaves on a stem and\n// the odd dot, set on a jittered grid so the print is even (pure random clumps), the same size on every kind. The\n// first colour is the flowers' centres and the stems.\nfunction drawPattern(ctx: CanvasRenderingContext2D, colours: string[], seed: number, box: Box) {\n  const r = rand(seed);\n  const unit = box.texW / box.w;\n  const cell = 0.052 * unit;\n  const pick = () => colours[1 + ((r() * (colours.length - 1)) | 0)] ?? colours[0] ?? \"#ddd\";\n  for (let j = 0; j * cell < box.texH + cell; j++) {\n    for (let i = 0; i * cell < box.texW + cell; i++) {\n      const x = (i + (j % 2) * 0.5 + (r() - 0.5) * 0.55) * cell;\n      const y = (j + (r() - 0.5) * 0.55) * cell;\n      const what = r();\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.rotate(r() * Math.PI * 2);\n      if (what < 0.46) {\n        const s = (0.0075 + r() * 0.004) * unit;\n        ctx.fillStyle = pick();\n        for (let k = 0; k < 5; k++) {\n          ctx.rotate((Math.PI * 2) / 5);\n          ctx.beginPath();\n          ctx.ellipse(s * 0.95, 0, s * 0.78, s * 0.5, 0, 0, Math.PI * 2);\n          ctx.fill();\n        }\n        ctx.fillStyle = colours[0] ?? \"#333\";\n        ctx.beginPath();\n        ctx.arc(0, 0, s * 0.36, 0, Math.PI * 2);\n        ctx.fill();\n      } else if (what < 0.88) {\n        const s = (0.008 + r() * 0.004) * unit;\n        ctx.strokeStyle = colours[0] ?? \"#333\";\n        ctx.lineWidth = Math.max(1, s * 0.12);\n        ctx.beginPath();\n        ctx.moveTo(-s * 1.4, 0);\n        ctx.quadraticCurveTo(0, -s * 0.25, s * 1.4, 0);\n        ctx.stroke();\n        ctx.fillStyle = pick();\n        for (const [lx, side] of [[-0.55, 1], [0.15, -1], [0.85, 1]] as const) {\n          ctx.save();\n          ctx.translate(lx * s, 0);\n          ctx.rotate(side * 0.75);\n          ctx.beginPath();\n          ctx.moveTo(0, 0);\n          ctx.quadraticCurveTo(s * 0.45, -s * 0.38 * side, s * 0.95, 0);\n          ctx.quadraticCurveTo(s * 0.45, s * 0.38 * side, 0, 0);\n          ctx.fill();\n          ctx.restore();\n        }\n      } else {\n        ctx.fillStyle = pick();\n        ctx.beginPath();\n        ctx.arc(0, 0, (0.0022 + r() * 0.0016) * unit, 0, Math.PI * 2);\n        ctx.fill();\n      }\n      ctx.restore();\n    }\n  }\n}\n\nconst SPECKS: { fine?: HTMLCanvasElement; marl?: HTMLCanvasElement } = {};\nfunction speckTile(marl: boolean) {\n  const key = marl ? \"marl\" : \"fine\";\n  let tile = SPECKS[key];\n  if (!tile) {\n    tile = canvas(256, 256);\n    const ctx = tile.getContext(\"2d\")!;\n    const r = rand(marl ? 41 : 42);\n    for (let i = 0; i < (marl ? 3300 : 1450); i++) {\n      ctx.fillStyle = r() > 0.5 ? `rgba(255,255,255,${marl ? 0.16 : 0.035})` : `rgba(0,0,0,${marl ? 0.16 : 0.045})`;\n      ctx.fillRect(r() * 256, r() * 256, marl ? 2.4 : 1.6, marl ? 1.2 : 1.6);\n    }\n    SPECKS[key] = tile;\n  }\n  return tile;\n}\n\n// The fabric colour, its knit, the stitching, seams and rib bands, and the print, all drawn on the flat pattern.\nfunction fabricTexture(spec: GarmentSpec, p: Pattern, box: Box, front: boolean, speck: boolean) {\n  // the back is mostly hidden, so it is drawn at half size (a quarter of the work); everything below is drawn in\n  // full-size coordinates and the context scale shrinks it\n  const k = front ? 1 : 0.5;\n  const c = canvas(Math.round(box.texW * k), Math.round(box.texH * k));\n  const ctx = c.getContext(\"2d\")!;\n  ctx.scale(k, k);\n  const { toPx } = painter(box);\n  const { kind } = spec;\n  // white cotton is never paper white (about 85% reflectance), or it melts into a light page\n  const colour = lum(spec.colour) > 0.8 ? shade(spec.colour, -0.07) : spec.colour;\n  ctx.fillStyle = colour;\n  ctx.fillRect(0, 0, box.texW, box.texH);\n  if (spec.print?.kind === \"pattern\") drawPattern(ctx, spec.print.colours, front ? 5 : 6, box);\n  // knit: fine speckle, much stronger for a grey marl\n  const col = parse(colour);\n  const hsl = { h: 0, s: 0, l: 0 };\n  col.getHSL(hsl);\n  const marl = hsl.s < 0.08 && hsl.l > 0.3 && hsl.l < 0.7;\n  // the knit speckle is one small tile drawn once and repeated: tens of thousands of single dots per texture\n  // were most of the time it took to build a rack. Scanned cloth has its own knit: only a marl keeps its flecks.\n  const pattern = speck || marl ? ctx.createPattern(speckTile(marl), \"repeat\") : null;\n  if (pattern) {\n    ctx.fillStyle = pattern;\n    ctx.fillRect(0, 0, box.texW, box.texH);\n  }\n  const dark = lum(colour) < 0.25;\n  const line = (pts: Pt[]) => {\n    ctx.beginPath();\n    pts.forEach(([x, y], i) => {\n      const [px, py] = toPx(x, y);\n      if (i === 0) ctx.moveTo(px, py);\n      else ctx.lineTo(px, py);\n    });\n    ctx.stroke();\n  };\n  const hemY = -p.length;\n  if (kind === \"crewneck\") {\n    // the rib waistband: a shade darker with fine ribs running down it, and a seam where it joins the body\n    const rib = 0.065;\n    const [x0, y0] = toPx(-p.half - 0.02, hemY + rib);\n    const [x1, y1] = toPx(p.half + 0.02, hemY - 0.02);\n    ctx.fillStyle = shade(colour, -0.09);\n    ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    ctx.fillStyle = \"rgba(0,0,0,0.16)\";\n    for (let x = x0; x < x1; x += 3) ctx.fillRect(x, y0, 1.2, y1 - y0);\n    ctx.strokeStyle = shade(colour, -0.22);\n    ctx.lineWidth = 1.4;\n    line([[-p.half - 0.02, hemY + rib], [p.half + 0.02, hemY + rib]]);\n  } else {\n    // a turned-up hem: the doubled cloth reads a touch darker, closed by a quiet twin-needle stitch in the cloth's\n    // own colour\n    const [x0, y0] = toPx(-p.half - 0.02, hemY + 0.022);\n    const [x1, y1] = toPx(p.half + 0.02, hemY - 0.02);\n    ctx.fillStyle = dark ? \"rgba(255,255,255,0.025)\" : \"rgba(0,0,0,0.035)\";\n    ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    ctx.strokeStyle = dark ? \"rgba(255,255,255,0.09)\" : \"rgba(0,0,0,0.1)\";\n    ctx.lineWidth = 1.1;\n    for (const off of [0.019, 0.024]) line([[-p.half - 0.02, hemY + off], [p.half + 0.02, hemY + off]]);\n  }\n  // the armhole seams, where the sleeves are sewn in: a soft shadow just inside the body's edge and the stitch line\n  for (const s of [1, -1]) {\n    const edge = armholeLine(p).map(([x, y]) => [s * (x - 0.006), y] as Pt);\n    ctx.strokeStyle = dark ? \"rgba(0,0,0,0.12)\" : \"rgba(0,0,0,0.05)\";\n    ctx.lineWidth = 7;\n    line(edge);\n    ctx.strokeStyle = dark ? \"rgba(255,255,255,0.06)\" : \"rgba(0,0,0,0.09)\";\n    ctx.lineWidth = 1.1;\n    line(edge.map(([x, y]) => [x - s * 0.004, y] as Pt));\n  }\n  // shoulder seams, just inside the pattern's edge\n  ctx.strokeStyle = dark ? \"rgba(255,255,255,0.06)\" : `rgba(0,0,0,${spec.print?.kind === \"pattern\" ? 0.04 : 0.08})`;\n  ctx.lineWidth = 1.2;\n  for (const s of [1, -1]) line([[s * p.neckHalf, -0.004], [s * p.shoulderX, -p.shoulderDrop - 0.004]]);\n  // the neck rib: a band round the neckline a shade darker than the body, ribbed across, with its seam under it\n  if (kind !== \"shirt\") {\n    const ribW = kind === \"crewneck\" ? 0.024 : 0.017;\n    // the neckline grown outward by inset: the same quarter ellipses the pattern is cut with\n    const neck = (inset: number): Pt[] => {\n      const pts: Pt[] = [];\n      const drop = front ? p.neckFront : p.neckBack;\n      for (let i = 0; i <= 32; i++) {\n        const a = (-1 + (2 * i) / 32) * (Math.PI / 2);\n        pts.push([Math.sin(a) * (p.neckHalf + inset), -Math.cos(a) * (drop + inset)]);\n      }\n      return pts;\n    };\n    ctx.strokeStyle = shade(colour, dark ? 0.012 : -0.05);\n    ctx.lineWidth = ribW * painter(box).unit;\n    line(neck(ribW / 2));\n    ctx.strokeStyle = dark ? \"rgba(255,255,255,0.035)\" : \"rgba(0,0,0,0.12)\";\n    ctx.lineWidth = 1.2;\n    line(neck(ribW));\n  }\n  // the shirt's placket: a slightly darker band down the button column, stitched on both edges; and the soft\n  // shadow the open collar casts on the chest round its edges\n  if (kind === \"shirt\" && front) {\n    for (const dir of [1, -1]) {\n      const { inner, outer } = flapEdges(p, dir);\n      const edge = [...outer, inner[inner.length - 1]!];\n      for (const [width, alpha] of [\n        [16, 0.05],\n        [10, 0.07],\n        [5, 0.09],\n      ] as const) {\n        ctx.strokeStyle = `rgba(0,0,0,${alpha})`;\n        ctx.lineWidth = width;\n        ctx.lineJoin = \"round\";\n        ctx.lineCap = \"round\";\n        ctx.beginPath();\n        edge.forEach(([x, y], i) => {\n          const [px, py] = toPx(x, y);\n          if (i === 0) ctx.moveTo(px + 2, py + 4);\n          else ctx.lineTo(px + 2, py + 4);\n        });\n        ctx.stroke();\n      }\n    }\n  }\n  if (kind === \"shirt\") {\n    // the placket: the button band, a doubled strip a touch darker with a fine stitch down each edge\n    const [px0, py0] = toPx(-0.012, -p.neckFront);\n    const [px1, py1] = toPx(0.026, hemY - 0.02);\n    ctx.fillStyle = \"rgba(0,0,0,0.1)\";\n    ctx.fillRect(px0, py0, px1 - px0, py1 - py0);\n    ctx.strokeStyle = dark ? \"rgba(255,255,255,0.1)\" : \"rgba(0,0,0,0.14)\";\n    ctx.lineWidth = 1.1;\n    for (const x of [px0 + 3, px1 - 3]) {\n      ctx.beginPath();\n      ctx.moveTo(x, py0);\n      ctx.lineTo(x, py1);\n      ctx.stroke();\n    }\n  }\n  if (front && spec.print) drawPrint(ctx, spec.print, kind, p, box, colour);\n  const tex = new THREE.CanvasTexture(c);\n  tex.colorSpace = THREE.SRGBColorSpace;\n  tex.anisotropy = 8;\n  return tex;\n}\n\n// A sleeve's fabric: the same cloth, knit and print as the body at the same scale, with the cuff finished like the\n// body's hem (a turned-up hem on a tee or a shirt, a rib cuff on the crewneck) and a stitch line along the armhole.\n// u runs round the sleeve from the fold over the top, v from the armhole (the canvas's bottom) to the cuff (its top).\nfunction sleeveTexture(spec: GarmentSpec, size: { around: number; along: number }, speck: boolean) {\n  const W = Math.min(1024, Math.round(1180 * size.around));\n  const H = Math.min(1024, Math.round(1180 * size.along));\n  const c = canvas(W, H);\n  const ctx = c.getContext(\"2d\")!;\n  const colour = lum(spec.colour) > 0.8 ? shade(spec.colour, -0.07) : spec.colour;\n  ctx.fillStyle = colour;\n  ctx.fillRect(0, 0, W, H);\n  if (spec.print?.kind === \"pattern\") drawPattern(ctx, spec.print.colours, 7, { x0: 0, y0: 0, y1: 0, w: size.around, h: size.along, texW: W, texH: H });\n  const col = parse(colour);\n  const hsl = { h: 0, s: 0, l: 0 };\n  col.getHSL(hsl);\n  const marl = hsl.s < 0.08 && hsl.l > 0.3 && hsl.l < 0.7;\n  const knit = speck || marl ? ctx.createPattern(speckTile(marl), \"repeat\") : null;\n  if (knit) {\n    ctx.fillStyle = knit;\n    ctx.fillRect(0, 0, W, H);\n  }\n  const dark = lum(colour) < 0.25;\n  const unit = H / size.along;\n  if (spec.kind === \"crewneck\") {\n    const rib = 0.065 * unit;\n    ctx.fillStyle = shade(colour, -0.09);\n    ctx.fillRect(0, 0, W, rib);\n    ctx.fillStyle = \"rgba(0,0,0,0.16)\";\n    for (let x = 0; x < W; x += 3) ctx.fillRect(x, 0, 1.2, rib);\n    ctx.fillStyle = shade(colour, -0.22);\n    ctx.fillRect(0, rib, W, 1.4);\n  } else {\n    ctx.fillStyle = dark ? \"rgba(255,255,255,0.025)\" : \"rgba(0,0,0,0.035)\";\n    ctx.fillRect(0, 0, W, 0.022 * unit);\n    ctx.fillStyle = dark ? \"rgba(255,255,255,0.09)\" : \"rgba(0,0,0,0.1)\";\n    for (const off of [0.019, 0.024]) ctx.fillRect(0, off * unit, W, 1.1);\n  }\n  ctx.fillStyle = dark ? \"rgba(255,255,255,0.06)\" : \"rgba(0,0,0,0.09)\";\n  ctx.fillRect(0, H - 0.007 * unit, W, 1.1);\n  const tex = new THREE.CanvasTexture(c);\n  tex.colorSpace = THREE.SRGBColorSpace;\n  tex.anisotropy = 8;\n  return tex;\n}\n\n// A tiny jersey knit as a normal map, tiled across the cloth.\nfunction knitNormal() {\n  const N = 64;\n  const hgt = new Float32Array(N * N);\n  for (let y = 0; y < N; y++)\n    for (let x = 0; x < N; x++) {\n      const u = x / N;\n      const v = y / N;\n      const row = Math.floor(v * 8);\n      const k = Math.abs(Math.sin(Math.PI * (u * 8 + (row % 2) * 0.5 + (v * 8 - row) * 0.6)));\n      hgt[y * N + x] = 0.6 * k + 0.4 * (hash(x, y, 9) - 0.5) * 0.4;\n    }\n  const c = canvas(N, N);\n  const ctx = c.getContext(\"2d\")!;\n  const img = ctx.createImageData(N, N);\n  for (let y = 0; y < N; y++)\n    for (let x = 0; x < N; x++) {\n      const H = (k: number) => hgt[k] ?? 0;\n      const hx = H(y * N + ((x + 1) % N)) - H(y * N + ((x + N - 1) % N));\n      const hy = H(((y + 1) % N) * N + x) - H(((y + N - 1) % N) * N + x);\n      const n = new THREE.Vector3(-hx * 2, -hy * 2, 1).normalize();\n      const i = (y * N + x) * 4;\n      img.data[i] = (n.x * 0.5 + 0.5) * 255;\n      img.data[i + 1] = (n.y * 0.5 + 0.5) * 255;\n      img.data[i + 2] = (n.z * 0.5 + 0.5) * 255;\n      img.data[i + 3] = 255;\n    }\n  ctx.putImageData(img, 0, 0);\n  const tex = new THREE.CanvasTexture(c);\n  tex.colorSpace = THREE.NoColorSpace;\n  tex.wrapS = tex.wrapT = THREE.RepeatWrapping;\n  return tex;\n}\n\n// ---------------------------------------------------------------- hanger, hook, rail\n\n// A tiny studio for the chrome to reflect: a ring of light and dark bands round it (a bright strip just above eye\n// level, a dark horizon, a pale floor bounce) and a softbox overhead. Built as a scene and prefiltered like the room.\nfunction studioScene() {\n  const scene = new THREE.Scene();\n  scene.background = new THREE.Color(0.3, 0.3, 0.31);\n  const R = 10;\n  const band = (from: number, to: number, value: number) => {\n    // a band between two elevations (degrees) on a cylinder round the middle, seen from inside\n    const y0 = R * Math.tan((from * Math.PI) / 180);\n    const y1 = R * Math.tan((to * Math.PI) / 180);\n    const geo = new THREE.CylinderGeometry(R, R, y1 - y0, 48, 1, true);\n    const mesh = new THREE.Mesh(geo, new THREE.MeshBasicMaterial({ color: new THREE.Color(value, value * 1.01, value * 1.03), side: THREE.BackSide }));\n    mesh.position.y = (y0 + y1) / 2;\n    scene.add(mesh);\n  };\n  band(-62, -30, 0.24);\n  band(-30, -6, 0.5);\n  band(-6, 6, 0.08);\n  band(6, 10, 0.5);\n  band(10, 17, 2.6);\n  band(17, 24, 0.7);\n  band(24, 55, 0.45);\n  const box = new THREE.Mesh(new THREE.CircleGeometry(R * 0.9, 48), new THREE.MeshBasicMaterial({ color: new THREE.Color(1.9, 1.9, 1.95), side: THREE.DoubleSide }));\n  box.rotation.x = Math.PI / 2;\n  box.position.y = R * 1.35;\n  scene.add(box);\n  return scene;\n}\n\nfunction disposeScene(scene: THREE.Scene) {\n  scene.traverse((o) => {\n    const mesh = o as THREE.Mesh;\n    if (!mesh.isMesh) return;\n    mesh.geometry.dispose();\n    (mesh.material as THREE.Material).dispose();\n  });\n}\n\n// The wooden bar follows the hanger the garments were draped on (its tips end inside the shoulders), a little\n// thinner than the room the cloth left round it, so it never shows through\nfunction hangerGeometry(): [THREE.BufferGeometry, THREE.BufferGeometry] {\n  // drawn a touch shorter than the hanger the cloth was draped on, so its tips never poke out at the shoulders\n  const pts = DRAPE_HANGER.map(([x, y]) => new THREE.Vector3(x * 0.9, y, 0));\n  // a flat bar: round tube squashed front to back (the curve lies at z 0, so only the section flattens)\n  const bar = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts), 64, 0.0165, 14, false);\n  bar.scale(1, 1, 0.46);\n  const block = new THREE.CylinderGeometry(0.0105, 0.012, 0.02, 16);\n  block.translate(0, -0.104, 0);\n  return [bar, block];\n}\n\n// the rail's radius (a 25 mm tube on a garment about 80 cm long); the hook wraps round it\nconst RAIL_R = 0.023;\n\nfunction hookGeometry() {\n  const R = RAIL_R + 0.0045 + 0.0012;\n  const pts: THREE.Vector3[] = [new THREE.Vector3(0, -0.104, 0), new THREE.Vector3(0, -0.075, 0.004), new THREE.Vector3(0, -0.04, 0.015), new THREE.Vector3(0, -0.012, R * 0.98)];\n  for (let i = 0; i <= 14; i++) {\n    const a = (i / 14) * (Math.PI * 1.16);\n    pts.push(new THREE.Vector3(0, Math.sin(a) * R, Math.cos(a) * R));\n  }\n  return new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts), 96, 0.0045, 10, false);\n}\n\nconst HANGER_LOOK: Record<HangerFinish, { color: number; metalness: number; roughness: number }> = {\n  wood: { color: 0x5b2a18, metalness: 0, roughness: 0.34 },\n  black: { color: 0x141416, metalness: 0, roughness: 0.38 },\n  chrome: { color: 0xe3e6ea, metalness: 1, roughness: 0.16 },\n};\nconst RAIL_LOOK: Record<RailFinish, { color: number; metalness: number; roughness: number }> = {\n  chrome: { color: 0xe8ebef, metalness: 1, roughness: 0.12 },\n  black: { color: 0x18181a, metalness: 0.6, roughness: 0.32 },\n  brass: { color: 0xc9a15a, metalness: 1, roughness: 0.22 },\n};\n\n// ---------------------------------------------------------------- cloth motion\n\ntype FlowUniforms = {\n  uTwist: { value: Float32Array };\n  uSway: { value: Float32Array };\n  uSwayAxis: { value: THREE.Vector2 };\n  uRows: { value: THREE.Vector2 };\n  uRipple: { value: number };\n  uTime: { value: number };\n  uAO: { value: number };\n  uInside: { value: number };\n  uHang: { value: number };\n  uGrain: { value: THREE.Texture };\n  uGrainAmt: { value: number };\n};\n\n// Bends the cloth in the vertex shader with the rows of cloth-motion.ts: each row of cloth, from the shoulders down\n// to the hem, twists about the hook and trails along the rail by its own amount, blended smoothly between rows, so a\n// turn or a push runs down the fabric as a wave. While it moves, a faint ripple travels from the shoulders to the hem\n// (a small bend in the cloth and in its light). Above the first row, where the hanger holds the cloth, nothing moves.\n// Soft drape folds on a garment's body, drawn into its shading as a height over the flat pattern (the baked drape is\n// too coarse to hold them): two from where the hanger holds each shoulder, running in toward the chest; one from\n// under each arm, down and in; a few slow waves across the lower body, more toward the hem. Mirrored left to right.\nconst FOLDS_GLSL = /* glsl */ `\nuniform vec4 uBox;\nuniform vec4 uShape;\nuniform float uDrop;\nuniform float uFolds;\nfloat clothRidge(vec2 p, vec2 a, vec2 b, float w) {\n  vec2 ab = b - a;\n  float t = clamp(dot(p - a, ab) / dot(ab, ab), 0.0, 1.0);\n  vec2 d = p - a - ab * t;\n  return exp(-dot(d, d) / (w * w)) * sin(3.14159 * t);\n}\nfloat clothHeight(vec2 q) {\n  vec2 p = vec2(abs(q.x), q.y);\n  float hw = uShape.x;\n  float pit = uShape.y;\n  float len = uShape.z;\n  float sx = uShape.w;\n  float h = 0.9 * clothRidge(p, vec2(sx - 0.05, -uDrop - 0.02), vec2(0.07, -pit + 0.03), 0.024);\n  h += 0.5 * clothRidge(p, vec2(sx - 0.02, -uDrop - 0.07), vec2(0.15, -pit - 0.07), 0.02);\n  h += 0.7 * clothRidge(p, vec2(hw - 0.01, -pit - 0.01), vec2(hw - 0.12, -pit - 0.17), 0.018);\n  h += 0.45 * smoothstep(-len * 0.5, -len * 0.95, q.y) * cos(6.2832 * q.x / 0.17);\n  return h;\n}\nvec2 clothFolds(vec2 uv) {\n  vec2 q = uBox.xy + uv * uBox.zw;\n  float e = 0.004;\n  float hx = clothHeight(q + vec2(e, 0.0)) - clothHeight(q - vec2(e, 0.0));\n  float hy = clothHeight(q + vec2(0.0, e)) - clothHeight(q - vec2(0.0, e));\n  return -uFolds * vec2(hx, hy) / (2.0 * e);\n}\n`;\n\ntype Folds = { box: { x0: number; y0: number; w: number; h: number }; pattern: Pattern; strength: number };\n\nfunction addFlow(material: THREE.Material, flow: FlowUniforms, hang = false, folds?: Folds) {\n  if (hang) material.defines = { ...material.defines, CLOTH_HANG: \"\" };\n  if (folds) material.defines = { ...material.defines, CLOTH_FOLDS: \"\" };\n  const foldUniforms = folds && {\n    uBox: { value: new THREE.Vector4(folds.box.x0, folds.box.y0, folds.box.w, folds.box.h) },\n    uShape: { value: new THREE.Vector4(folds.pattern.half, folds.pattern.armpit, folds.pattern.length, folds.pattern.shoulderX) },\n    uDrop: { value: folds.pattern.shoulderDrop },\n    uFolds: { value: folds.strength },\n  };\n  material.onBeforeCompile = (shader) => {\n    Object.assign(shader.uniforms, flow, foldUniforms);\n    if (folds) {\n      shader.fragmentShader = shader.fragmentShader\n        .replace(\"#include <common>\", `#include <common>\\n${FOLDS_GLSL}`)\n        .replace(\"#include <normal_fragment_maps>\", THREE.ShaderChunk.normal_fragment_maps.replace(\"mapN.xy *= normalScale;\", \"mapN.xy *= normalScale;\\n\\tmapN.xy += clothFolds(vMapUv);\"));\n    }\n    // the baked fold shading (vertex colour) counts for more on light cloth: white needs it to read as cloth. The\n    // inside of the cloth (the back face of a two-sided panel) is in the garment's own shadow, seen through the\n    // neck and the sleeves.\n    shader.fragmentShader = shader.fragmentShader\n      .replace(\"#include <common>\", \"#include <common>\\nuniform float uAO;\\nuniform float uInside;\\nuniform sampler2D uGrain;\\nuniform float uGrainAmt;\")\n      .replace(\n        \"#include <color_fragment>\",\n        `#if defined( USE_COLOR ) || defined( USE_COLOR_ALPHA )\n  // stronger on light cloth, but never darker than about half: a fold or the shade under a sleeve is a soft grey\n  diffuseColor *= max(mix(vec4(1.0), vColor, uAO), vec4(0.5));\n#endif\n#ifdef USE_NORMALMAP\n  // the heather grain, tiled with the knit (0.513 is the grain's own average, so it shades without darkening)\n  diffuseColor.rgb *= mix(1.0, texture2D(uGrain, vNormalMapUv).r / 0.513, uGrainAmt);\n#endif\n#ifdef DOUBLE_SIDED\n  if (!gl_FrontFacing) diffuseColor.rgb *= uInside;\n#endif`,\n      );\n    shader.vertexShader = shader.vertexShader\n      .replace(\n        \"#include <common>\",\n        `#include <common>\nuniform float uTwist[${CLOTH_ROWS + 1}];\nuniform float uSway[${CLOTH_ROWS + 1}];\nuniform vec2 uSwayAxis;\nuniform vec2 uRows;\nuniform float uRipple;\nuniform float uTime;\nuniform float uHang;\n#ifdef CLOTH_HANG\nattribute vec3 hangPosition;\nattribute vec3 hangNormal;\n#endif`,\n      )\n      .replace(\n        \"#include <beginnormal_vertex>\",\n        `#include <beginnormal_vertex>\n// a sleeve hangs down the garment's side on the rail and opens out as the garment turns to face you\n#ifdef CLOTH_HANG\nvec3 clothPos = mix(position, hangPosition, uHang);\nobjectNormal = normalize(mix(objectNormal, hangNormal, uHang));\n#else\nvec3 clothPos = position;\n#endif\nfloat clothRow = clamp((uRows.x - clothPos.y) / uRows.y, 0.0, 1.0) * ${CLOTH_ROWS}.0;\nfloat clothTwist = 0.0;\nfloat clothSway = 0.0;\nfor (int k = 0; k <= ${CLOTH_ROWS}; k++) {\n  float w = max(0.0, 1.0 - abs(clothRow - float(k)));\n  clothTwist += uTwist[k] * w;\n  clothSway += uSway[k] * w;\n}\nfloat clothC = cos(clothTwist);\nfloat clothS = sin(clothTwist);\nobjectNormal = vec3(objectNormal.x * clothC + objectNormal.z * clothS, objectNormal.y, -objectNormal.x * clothS + objectNormal.z * clothC);\nfloat clothPhase = uTime * 11.0 - (uRows.x - clothPos.y) * 34.0 + clothPos.x * 5.0;\nfloat clothAmp = uRipple * 0.0032 * smoothstep(0.0, 1.5, clothRow);\nobjectNormal = normalize(objectNormal - vec3(0.0, clothAmp * 34.0 * cos(clothPhase), 0.0));`,\n      )\n      .replace(\n        \"#include <begin_vertex>\",\n        `#include <begin_vertex>\ntransformed = clothPos;\n{\n  float x2 = transformed.x * clothC + transformed.z * clothS;\n  float z2 = -transformed.x * clothS + transformed.z * clothC;\n  transformed.x = x2 + uSwayAxis.x * clothSway;\n  transformed.z = z2 + uSwayAxis.y * clothSway;\n  transformed += objectNormal * clothAmp * sin(clothPhase);\n}`,\n      );\n  };\n  material.customProgramCacheKey = () => (hang ? \"clothes-rack-flow-hang\" : folds ? \"clothes-rack-flow-folds\" : \"clothes-rack-flow\");\n}\n\n// ---------------------------------------------------------------- shared cloth geometry\n\n// The cloth geometry is plain data (no WebGL context), so every wardrobe on the page shares it: the detail view's\n// own renderer reuses what the rack already built instead of decoding it again on the first click.\ntype Size = { width: number; bodyWidth: number; depth: number; height: number };\ntype KindParts = {\n  pattern: Pattern;\n  box: Box;\n  front: THREE.BufferGeometry;\n  back: THREE.BufferGeometry;\n  collar: THREE.BufferGeometry;\n  /** the right sleeve and the left */\n  sleeves: THREE.BufferGeometry[];\n  /** round the sleeve at its armhole, and its length over the top, for drawing its fabric at the body's scale */\n  sleeveSize: { around: number; along: number };\n  extras?: { flaps: THREE.BufferGeometry[]; buttons: THREE.BufferGeometry[] };\n  size: Size;\n};\nconst SHARED = new Map<GarmentKind, { parts: KindParts; refs: number }>();\n\n// The draped garment's own measurements: sleeve to sleeve, the body alone (across the waist), front to back at the\n// hem, and rail to hem\nfunction measure(front: Panel, back: Panel, sleeves: Float32Array[], p: Pattern): Size {\n  let width = 0;\n  let body = 0;\n  let low = 0;\n  let zMin = Infinity;\n  let zMax = -Infinity;\n  for (const P of sleeves) {\n    for (let i = 0; i < P.length; i += 3) {\n      width = Math.max(width, Math.abs(P[i]!));\n      low = Math.min(low, P[i + 1]!);\n    }\n  }\n  for (const panel of [front, back]) {\n    for (let i = 0; i < panel.pos.length / 3; i++) {\n      const x = Math.abs(panel.pos[i * 3]!);\n      const y = panel.pos[i * 3 + 1]!;\n      const z = panel.pos[i * 3 + 2]!;\n      const px = Math.abs(panel.pat[i * 2]!);\n      const py = panel.pat[i * 2 + 1]!;\n      width = Math.max(width, x);\n      low = Math.min(low, y);\n      if (px > p.half) continue;\n      if (py < -0.4 && py > -0.5) body = Math.max(body, x);\n      if (py < -p.length * 0.75) {\n        zMin = Math.min(zMin, z);\n        zMax = Math.max(zMax, z);\n      }\n    }\n  }\n  return { width: width * 2, bodyWidth: body * 2, depth: zMax - zMin, height: -low };\n}\n\nfunction acquireKind(kind: GarmentKind): KindParts {\n  let entry = SHARED.get(kind);\n  if (!entry) {\n    const data = DRAPES[kind];\n    const pattern = data.pattern;\n    const box = boxFor(pattern);\n    const front = decodePanel(data.front, 1);\n    const back = decodePanel(data.back, -1);\n    const frontGeo = panelGeometry(front, box);\n    const sleeves = data.sleeves.map(decodeSleeve);\n    const parts: KindParts = {\n      pattern,\n      box,\n      front: frontGeo,\n      back: panelGeometry(back, box),\n      collar: collarGeometry(front, back, data.neck, kind),\n      sleeves: sleeves.map((sl) => sleeveGeometry(sl)),\n      sleeveSize: { around: 2 * (pattern.armpit - pattern.shoulderDrop) + 0.04, along: pattern.sleeve.top },\n      size: measure(front, back, sleeves.map((sl) => sl.pos), pattern),\n    };\n    blendSeams(parts.sleeves, [parts.front, parts.back]);\n    // the hanging shape's armhole ring is the same points as the open one's, so it takes the same (blended) normals\n    for (const g of parts.sleeves) {\n      const uv = g.attributes.uv as THREE.BufferAttribute;\n      const n = g.attributes.normal as THREE.BufferAttribute;\n      const hn = g.attributes.hangNormal as THREE.BufferAttribute;\n      for (let i = 0; i < uv.count; i++) if (uv.getY(i) <= 1e-3) hn.setXYZ(i, n.getX(i), n.getY(i), n.getZ(i));\n    }\n    if (kind === \"shirt\") parts.extras = shirtParts(pattern, box, front, frontGeo.attributes.normal as THREE.BufferAttribute);\n    entry = { parts, refs: 0 };\n    SHARED.set(kind, entry);\n  }\n  entry.refs++;\n  return entry.parts;\n}\n\n// A sleeve's geometry carries both of its shapes: open (position, normal) and hanging down its side (hangPosition,\n// hangNormal); the cloth shader blends between them as the garment turns (see addFlow)\nfunction sleeveGeometry(sl: ReturnType<typeof decodeSleeve>) {\n  const geo = shadedGeometry(sl.pos, sl.uv, sl.tri, sl.ao);\n  const hung = shadedGeometry(sl.hang, sl.uv, sl.tri, sl.ao);\n  geo.setAttribute(\"hangPosition\", new THREE.BufferAttribute(sl.hang, 3));\n  geo.setAttribute(\"hangNormal\", (hung.attributes.normal as THREE.BufferAttribute).clone());\n  hung.dispose();\n  // culling has to allow for either shape\n  const box = new THREE.Box3().setFromArray(sl.pos).union(new THREE.Box3().setFromArray(sl.hang));\n  geo.boundingBox = box;\n  geo.boundingSphere = box.getBoundingSphere(new THREE.Sphere());\n  return geo;\n}\n\n// Each sleeve starts on the body's armhole, point for point, but every piece works out its own normals, so the seam\n// showed as a bright ridge where the two met at an angle. Points that share a place share one normal.\nfunction blendSeams(sleeves: THREE.BufferGeometry[], body: THREE.BufferGeometry[]) {\n  const at = (g: THREE.BufferGeometry) => (g.attributes.position as THREE.BufferAttribute).array as Float32Array;\n  const nm = (g: THREE.BufferGeometry) => g.attributes.normal as THREE.BufferAttribute;\n  for (const sleeve of sleeves) {\n    const P = at(sleeve);\n    const SN = nm(sleeve);\n    const uv = sleeve.attributes.uv as THREE.BufferAttribute;\n    for (let i = 0; i < P.length / 3; i++) {\n      // only the armhole ring (v = 0) is sewn to the body\n      if (uv.getY(i) > 1e-3) continue;\n      for (const piece of body) {\n        const Q = at(piece);\n        const BN = nm(piece);\n        for (let j = 0; j < Q.length / 3; j++) {\n          if (Math.abs(Q[j * 3]! - P[i * 3]!) + Math.abs(Q[j * 3 + 1]! - P[i * 3 + 1]!) + Math.abs(Q[j * 3 + 2]! - P[i * 3 + 2]!) > 1e-4) continue;\n          const n = new THREE.Vector3(SN.getX(i) + BN.getX(j), SN.getY(i) + BN.getY(j), SN.getZ(i) + BN.getZ(j)).normalize();\n          SN.setXYZ(i, n.x, n.y, n.z);\n          BN.setXYZ(j, n.x, n.y, n.z);\n        }\n      }\n    }\n  }\n}\n\nfunction releaseKind(kind: GarmentKind) {\n  const entry = SHARED.get(kind);\n  if (!entry || --entry.refs > 0) return;\n  const k = entry.parts;\n  k.front.dispose();\n  k.back.dispose();\n  k.collar.dispose();\n  k.sleeves.forEach((g) => g.dispose());\n  k.extras?.flaps.forEach((g) => g.dispose());\n  k.extras?.buttons.forEach((g) => g.dispose());\n  SHARED.delete(kind);\n}\n\n// ---------------------------------------------------------------- the wardrobe\n\nexport function createWardrobe(renderer: THREE.WebGLRenderer, textures: GarmentTextures = {}): Wardrobe {\n  const pmrem = new THREE.PMREMGenerator(renderer);\n  const room = new RoomEnvironment();\n  const roomLight = pmrem.fromScene(room, 0.04).texture;\n  room.dispose();\n  // The photographic cloth and light: whatever is already loaded on the page is used at once, the rest loads now.\n  // The studio is prefiltered for this renderer when it arrives.\n  let disposed = false;\n  // once the first garment is made the look is fixed: a scan that arrives later (after the rack gave up waiting)\n  // stays in the page cache for the next wardrobe instead of giving the rest of this rack a different cloth\n  let fixed = false;\n  const scans: Partial<Record<Exclude<keyof GarmentTextures, \"studio\">, THREE.Texture>> = {};\n  let studioLight: THREE.Texture | null = null;\n  const take = (key: keyof GarmentTextures, t: THREE.Texture | null | undefined) => {\n    if (!t || disposed || fixed) return;\n    if (key === \"studio\") studioLight = pmrem.fromEquirectangular(t).texture;\n    else scans[key] = t;\n  };\n  const waiting: Promise<void>[] = [];\n  for (const key of Object.keys(textures) as (keyof GarmentTextures)[]) {\n    const url = textures[key];\n    if (!url) continue;\n    if (LOADED.has(url)) take(key, LOADED.get(url));\n    else waiting.push(loadOnce(url, key === \"studio\").then((t) => take(key, t)));\n  }\n  const ready = Promise.all(waiting).then(() => undefined);\n  // the heather grain is sampled in the cloth's shader; until there is one, a flat grey that changes nothing\n  const flatGrain = new THREE.DataTexture(new Uint8Array([131, 131, 131, 255]), 1, 1);\n  flatGrain.needsUpdate = true;\n  // Chrome needs contrast to read as chrome: the rail, the hooks and the brackets reflect a studio of light and dark\n  // bands (a softbox above, a bright strip, a dark horizon, a floor), so a rod gets its bright top, its dark line\n  // and its bright lower edge\n  const studio = studioScene();\n  const strips = pmrem.fromScene(studio, 0).texture;\n  disposeScene(studio);\n\n  // shared by every garment of a kind\n  const kinds = new Set<GarmentKind>();\n  const knit = knitNormal();\n  // The knit on each kind, body and sleeves: the scanned cloth tiled at its real size when there is one (jersey for\n  // the tees and the shirt, fleece for the crewneck), else the drawn knit at the same stitch size on every kind (each\n  // kind's texture covers a different part of the pattern)\n  type Fabric = { normal: THREE.Texture; normalScale: number; roughness: THREE.Texture | null; scanned: boolean };\n  const fabrics = new Map<GarmentKind, { body: Fabric; sleeve: Fabric }>();\n  const tiled: THREE.Texture[] = [];\n  const tile = (t: THREE.Texture, w: number, h: number) => {\n    const c = t.clone();\n    c.repeat.set(w, h);\n    tiled.push(c);\n    return c;\n  };\n  function fabricFor(kind: GarmentKind, w: number, h: number): Fabric {\n    const fleece = kind === \"crewneck\";\n    const scan = fleece ? scans.fleeceNormal : scans.jerseyNormal;\n    const rough = fleece ? scans.fleeceRoughness : scans.jerseyRoughness;\n    if (scan) return { normal: tile(scan, w / SCAN_TILE, h / SCAN_TILE), normalScale: fleece ? 0.8 : 0.6, roughness: rough ? tile(rough, w / SCAN_TILE, h / SCAN_TILE) : null, scanned: true };\n    return { normal: tile(knit, 88 * w, 87 * h), normalScale: 0.3, roughness: null, scanned: false };\n  }\n  const [barGeo, blockGeo] = hangerGeometry();\n  const hookGeo = hookGeometry();\n  const chrome = new THREE.MeshStandardMaterial({ ...RAIL_LOOK.chrome, envMap: strips, envMapIntensity: 1 });\n  const buttonMat = new THREE.MeshStandardMaterial({ color: 0xe9e2d4, roughness: 0.35 });\n\n  function parts(kind: GarmentKind): KindParts {\n    fixed = true;\n    if (!kinds.has(kind)) {\n      kinds.add(kind);\n      const k = acquireKind(kind);\n      fabrics.set(kind, { body: fabricFor(kind, k.box.w, k.box.h), sleeve: fabricFor(kind, k.sleeveSize.around, k.sleeveSize.along) });\n      return k;\n    }\n    return SHARED.get(kind)!.parts;\n  }\n\n  function cloth(map: THREE.Texture, fabric: Fabric, colour: string, fleece: boolean) {\n    const c = parse(colour);\n    // dark cloth gets a much fainter sheen, or a black tee reads grey; light cloth too, or its edges glow and the\n    // shirt loses its form\n    const L = lum(colour);\n    // black cotton barely shines: its reflections lifted a black tee to charcoal grey (fleece keeps its soft sheen)\n    const black = L < 0.12 && !fleece;\n    const sheen = c.clone().lerp(new THREE.Color(1, 1, 1), L < 0.12 ? 0.1 : 0.3);\n    return new THREE.MeshPhysicalMaterial({\n      map,\n      vertexColors: true,\n      // a scanned roughness map carries the knit's own sheen (it is multiplied by this)\n      roughness: fabric.roughness ? 1 : fleece ? 0.97 : 0.93,\n      roughnessMap: fabric.roughness,\n      sheen: fleece ? 0.45 : L > 0.6 ? 0.16 : black ? 0.22 : 0.32,\n      sheenRoughness: 0.82,\n      sheenColor: sheen,\n      normalMap: fabric.normal,\n      normalScale: new THREE.Vector2(fabric.normalScale, fabric.normalScale),\n      specularIntensity: black ? 0.12 : 0.25,\n      // the cloth carries its own light (three ignores envMapIntensity for light taken from scene.environment)\n      envMap: studioLight ?? roomLight,\n      envMapRotation: studioLight ? STUDIO_TURN : ROOM_TURN,\n      envMapIntensity: studioLight ? 1.2 : 0.55,\n      // one layer of cloth: its inside shows through the neck and the sleeves\n      side: THREE.DoubleSide,\n    });\n  }\n\n  function garment(spec: GarmentSpec, hangerFinish: HangerFinish, options: { fadeable?: boolean } = {}): Garment {\n    const k = parts(spec.kind);\n    const fabric = fabrics.get(spec.kind)!;\n    const object = new THREE.Group();\n    const turn = new THREE.Group();\n    object.add(turn);\n    const own: { dispose(): void }[] = [];\n\n    const frontMap = fabricTexture(spec, k.pattern, k.box, true, !fabric.body.scanned);\n    const backMap = fabricTexture(spec, k.pattern, k.box, false, !fabric.body.scanned);\n    own.push(frontMap, backMap);\n    // upload now, while this garment is being built, instead of all twenty textures in the first frame\n    renderer.initTexture(frontMap);\n    renderer.initTexture(backMap);\n    let gone = false;\n    if (spec.image) {\n      new THREE.TextureLoader().load(\n        spec.image,\n        (t) => {\n          if (gone) {\n            t.dispose();\n            return;\n          }\n          t.colorSpace = THREE.SRGBColorSpace;\n          frontMat.map = t;\n          frontMat.needsUpdate = true;\n          own.push(t);\n        },\n        undefined,\n        // a photo that fails to load leaves the drawn fabric in place\n        () => {},\n      );\n    }\n    const fleece = spec.kind === \"crewneck\";\n    const light = lum(spec.colour);\n    // the inside of the cloth is in the garment's own shadow: on white it has to read clearly darker, or a sleeve\n    // opening or the open hem looks like more of the outside\n    const flow: FlowUniforms = {\n      uTwist: { value: new Float32Array(CLOTH_ROWS + 1) },\n      uSway: { value: new Float32Array(CLOTH_ROWS + 1) },\n      uSwayAxis: { value: new THREE.Vector2(1, 0) },\n      // the rows run from just under the hanger's arms to the hem\n      uRows: { value: new THREE.Vector2(-0.2, Math.max(0.2, k.size.height - 0.2)) },\n      uRipple: { value: 0 },\n      uTime: { value: 0 },\n      // garments are made side-on on the rail, sleeves down\n      uHang: { value: HANG_AT_REST },\n      uAO: { value: light > 0.6 ? 2.1 : light > 0.25 ? 1.3 : 1 },\n      uInside: { value: light > 0.6 ? 0.74 : light > 0.25 ? 0.6 : 0.62 },\n      // heather: strong on a grey marl, the faintest unevenness on any other colour, as dyed cotton has\n      uGrain: { value: scans.heatherGrain ?? flatGrain },\n      uGrainAmt: { value: scans.heatherGrain ? (isMarl(spec.colour) ? 0.42 : 0.06) : 0 },\n    };\n    const frontMat = cloth(frontMap, fabric.body, spec.colour, fleece);\n    const backMat = cloth(backMap, fabric.body, spec.colour, fleece);\n    own.push(frontMat, backMat);\n    const folds: Folds = { box: k.box, pattern: k.pattern, strength: fleece ? 0.005 : 0.004 };\n    addFlow(frontMat, flow, false, folds);\n    addFlow(backMat, flow, false, folds);\n    turn.add(new THREE.Mesh(k.front, frontMat), new THREE.Mesh(k.back, backMat));\n    const sleeveMap = sleeveTexture(spec, k.sleeveSize, !fabric.sleeve.scanned);\n    own.push(sleeveMap);\n    renderer.initTexture(sleeveMap);\n    const sleeveMat = cloth(sleeveMap, fabric.sleeve, spec.colour, fleece);\n    own.push(sleeveMat);\n    addFlow(sleeveMat, flow, true);\n    k.sleeves.forEach((g) => turn.add(new THREE.Mesh(g, sleeveMat)));\n\n    const dark = lum(spec.colour) < 0.12;\n    const collarMat = new THREE.MeshPhysicalMaterial({ color: dark ? spec.colour : shade(spec.colour, light > 0.8 ? -0.2 : -0.04), roughness: 0.92, sheen: dark ? 0.2 : 0.6, sheenRoughness: 0.75, sheenColor: parse(spec.colour).lerp(new THREE.Color(1, 1, 1), dark ? 0.1 : 0.4), normalMap: fabric.body.normal, normalScale: new THREE.Vector2(0.4, 0.4), specularIntensity: 0.25, envMap: studioLight ?? roomLight, envMapRotation: studioLight ? STUDIO_TURN : ROOM_TURN, envMapIntensity: studioLight ? 1.2 : 0.55 });\n    own.push(collarMat);\n    addFlow(collarMat, flow);\n    turn.add(new THREE.Mesh(k.collar, collarMat));\n    if (k.extras) {\n      // the collar is the body's own cloth (same print, same knit, same faint sheen), only a shade darker\n      const flapMat = cloth(frontMap, fabric.body, spec.colour, false);\n      own.push(flapMat);\n      addFlow(flapMat, flow);\n      const shirtButtons = buttonMat.clone();\n      own.push(shirtButtons);\n      addFlow(shirtButtons, flow);\n      k.extras.flaps.forEach((g) => turn.add(new THREE.Mesh(g, flapMat)));\n      k.extras.buttons.forEach((b) => turn.add(new THREE.Mesh(b, shirtButtons)));\n    }\n\n    // a lacquered finish: a clear coat over the wood, so the hanger catches a crisp highlight like the real thing\n    const hangerMat = new THREE.MeshPhysicalMaterial({ ...HANGER_LOOK[hangerFinish], clearcoat: hangerFinish === \"chrome\" ? 0 : 0.7, clearcoatRoughness: 0.18 });\n    own.push(hangerMat);\n    turn.add(new THREE.Mesh(barGeo, hangerMat), new THREE.Mesh(blockGeo, hangerMat));\n    // a garment that fades needs its own hook material (the shared one would fade every hook on the page)\n    const hookMat = options.fadeable ? chrome.clone() : chrome;\n    if (options.fadeable) own.push(hookMat);\n    const hook = new THREE.Mesh(hookGeo, hookMat);\n    object.add(hook);\n    // every material of this garment, for the fade passes; a fadeable garment is always drawn as transparent (at\n    // opacity 1 when solid), so switching passes never needs a new shader\n    const materials: THREE.Material[] = [];\n    object.traverse((o) => {\n      const m = (o as THREE.Mesh).material as THREE.Material | undefined;\n      if (m && !materials.includes(m)) materials.push(m);\n    });\n    if (options.fadeable) for (const m of materials) m.transparent = true;\n\n    return {\n      object,\n      turn,\n      hook,\n      ...k.size,\n      setCloth(c) {\n        flow.uTwist.value.set(c.twist);\n        flow.uSway.value.set(c.sway);\n        flow.uRipple.value = c.ripple;\n        flow.uTime.value = c.time;\n        // the sway is along the rail, but the cloth bends in the garment's own frame, which is turned by\n        // turn.rotation.y: the rail's direction seen from inside the garment\n        const th = turn.rotation.y;\n        flow.uSwayAxis.value.set(Math.cos(th), Math.sin(th));\n        // side-on on the rail the sleeves hang half way down (all the way down they read as flat slabs, fully open as\n        // pouches sticking out); they open fully within about 20 degrees of facing you\n        const a = Math.min(1, Math.max(0, (Math.abs(th) - 0.35) / 0.9));\n        flow.uHang.value = HANG_AT_REST * a * a * (3 - 2 * a);\n      },\n      setPass(pass, opacity = 1) {\n        if (!options.fadeable) return;\n        for (const m of materials) {\n          m.colorWrite = pass !== \"depth\";\n          m.depthWrite = pass !== \"fade\";\n          m.opacity = pass === \"fade\" ? opacity : 1;\n        }\n      },\n      setHanger(f) {\n        const look = HANGER_LOOK[f];\n        hangerMat.color.setHex(look.color);\n        hangerMat.metalness = look.metalness;\n        hangerMat.roughness = look.roughness;\n      },\n      dispose() {\n        gone = true;\n        own.forEach((d) => d.dispose());\n      },\n    };\n  }\n\n  function rail(length: number, finish: RailFinish): Rail {\n    const object = new THREE.Group();\n    const mat = new THREE.MeshStandardMaterial({ ...RAIL_LOOK[finish], envMap: strips, envMapIntensity: 1 });\n    const tubeGeo = new THREE.CylinderGeometry(RAIL_R, RAIL_R, 1, 48, 1, true).rotateZ(Math.PI / 2);\n    const tube = new THREE.Mesh(tubeGeo, mat);\n    // Each end is held by a wall bracket, like a shop rail: a plate on the wall with two screws, a post out to the\n    // rail, a collar round the tube and a domed end cap\n    const collarGeo = new THREE.CylinderGeometry(RAIL_R * 1.32, RAIL_R * 1.32, 0.024, 40).rotateZ(Math.PI / 2);\n    const domeGeo = new THREE.SphereGeometry(RAIL_R * 1.32, 40, 16, 0, Math.PI * 2, 0, Math.PI / 2).rotateZ(-Math.PI / 2);\n    domeGeo.scale(0.4, 1, 1);\n    const plateGeo = new THREE.BoxGeometry(0.05, 0.13, 0.008);\n    const postGeo = new THREE.CylinderGeometry(0.0105, 0.0105, 0.05, 24).rotateX(Math.PI / 2);\n    const screwGeo = new THREE.CylinderGeometry(0.0055, 0.0055, 0.003, 16).rotateX(Math.PI / 2);\n    const screwMat = new THREE.MeshStandardMaterial({ color: 0x55585e, metalness: 0.8, roughness: 0.4, envMap: strips, envMapIntensity: 1 });\n    // the wall plate is brushed, not mirror-polished: flat and facing you, a mirror would only show the dark horizon\n    const plateMat = new THREE.MeshStandardMaterial({ color: 0xdfe2e6, metalness: 1, roughness: 0.42, envMap: strips, envMapIntensity: 1 });\n    const end = (side: 1 | -1) => {\n      const g = new THREE.Group();\n      const collar = new THREE.Mesh(collarGeo, mat);\n      const dome = new THREE.Mesh(domeGeo, mat);\n      dome.scale.x = side;\n      dome.position.x = side * 0.012;\n      const plate = new THREE.Mesh(plateGeo, plateMat);\n      plate.position.set(side * 0.004, 0, -0.054);\n      const post = new THREE.Mesh(postGeo, mat);\n      post.position.set(side * 0.004, 0, -0.027);\n      g.add(collar, dome, plate, post);\n      for (const y of [0.042, -0.042]) {\n        const screw = new THREE.Mesh(screwGeo, screwMat);\n        screw.position.set(side * 0.004, y, -0.0485);\n        g.add(screw);\n      }\n      return g;\n    };\n    const left = end(-1);\n    const right = end(1);\n    object.add(tube, left, right);\n    const api: Rail = {\n      object,\n      setLength(l) {\n        tube.scale.x = l;\n        left.position.x = -l / 2 - 0.006;\n        right.position.x = l / 2 + 0.006;\n      },\n      setFinish(f) {\n        const look = RAIL_LOOK[f];\n        mat.color.setHex(look.color);\n        mat.metalness = look.metalness;\n        mat.roughness = look.roughness;\n        plateMat.color.setHex(look.color);\n        plateMat.metalness = look.metalness;\n        plateMat.roughness = Math.max(0.42, look.roughness);\n      },\n      dispose() {\n        tubeGeo.dispose();\n        collarGeo.dispose();\n        domeGeo.dispose();\n        plateGeo.dispose();\n        postGeo.dispose();\n        screwGeo.dispose();\n        screwMat.dispose();\n        plateMat.dispose();\n        mat.dispose();\n      },\n    };\n    api.setLength(length);\n    return api;\n  }\n\n  function addLights(scene: THREE.Scene) {\n    // Most of the light is the studio around the cloth. On top of it, a key high on the left, so the cloth turns from\n    // light to shade across its folds, and a low side light on the right as strong as the key: the rail shows each\n    // garment side-on, and that light is what keeps a white tee white there, as a strip box beside a rail does.\n    scene.add(new THREE.HemisphereLight(0xffffff, 0xcfd0d3, 0.05));\n    const key = new THREE.DirectionalLight(0xffffff, 1.1);\n    key.position.set(-3.3, 2.5, 1.6);\n    const side = new THREE.DirectionalLight(0xf4f6ff, 1);\n    side.position.set(2.6, 0.6, 2.2);\n    scene.add(key, side);\n  }\n\n  return {\n    garment,\n    rail,\n    get environment() {\n      return studioLight ?? roomLight;\n    },\n    ready,\n    addLights,\n    dispose() {\n      disposed = true;\n      kinds.forEach(releaseKind);\n      kinds.clear();\n      // only this wardrobe's tiled copies: the scans themselves are shared by the page\n      tiled.forEach((t) => t.dispose());\n      tiled.length = 0;\n      fabrics.clear();\n      flatGrain.dispose();\n      studioLight?.dispose();\n      knit.dispose();\n      barGeo.dispose();\n      blockGeo.dispose();\n      hookGeo.dispose();\n      chrome.dispose();\n      buttonMat.dispose();\n      roomLight.dispose();\n      strips.dispose();\n      pmrem.dispose();\n    },\n  };\n}\n"}],"categories":["cards","three","webgl","3d","shop","fashion","hover"],"docs":"import { ClothesRack } from \"@/components/dimaac/clothes-rack\". Give its parent a size: it fills it. Docs, playground and props: https://ui.dimaac.com/components/clothes-rack","meta":{"tier":"free","preview":"https://ui.dimaac.com/components/clothes-rack","credits":[{"by":"Rico Cilliers, colormass","url":"https://polyhaven.com/a/jersey_melange","what":"Jersey scan","source":"Poly Haven","licence":"CC0"},{"by":"Rico Cilliers, colormass","url":"https://polyhaven.com/a/cotton_jersey","what":"Cotton jersey roughness","source":"Poly Haven","licence":"CC0"},{"by":"Rico Cilliers, colormass","url":"https://polyhaven.com/a/knitted_fleece","what":"Fleece scan","source":"Poly Haven","licence":"CC0"},{"by":"Sergej Majboroda","url":"https://polyhaven.com/a/studio_small_09","what":"Studio light","source":"Poly Haven","licence":"CC0"}]}}