# No. 453 (Brown 1868): "Double lantern-bellows pump. As one bellows is distended by lever, air is rarefied within it, and water
# passes up suction-pipe to fill space; at same time other bellows is compressed, and expels its contents through discharge-pipe; valves
# working the same as in the ordinary force pump."
# Model (cm, gravity on, Brown's view from in front, cut in section). The lever turns on a fulcrum on the upright behind and is worked by
# hand at its right end (the only drive). A rod hinged on each bellows' top is pinned to the lever, the left one further out than the
# right, as Brown draws them. Each bellows is a lantern: 3 hoops and its top, each on a slide over the one below, with the
# leather between folded inward in pleats: two leaves hinged on the hoops and on each other at the crease. The leather's spring on each
# slide shares the stroke among the pleats. The base box is split by the riser: under each bellows a poppet on a hole in the floor lets
# water up from the suction channel, and a flap hung on the riser's wall lets it out into the riser. The water is lumped vessels
# (src/fluid/vessels.c): each bellows with its half of the base is a closed chamber its top sweeps (95.0332 cm^2; every pleat's
# slide carries the top, so each slide is a piston of that area). The suction channel and pipe from the well, and the riser, are full.
# The riser delivers 60 cm up, out of the picture, through a pipe with inertia. Every valve is moved only by its weight and the
# pressures on its faces.
# Generator: opencode-runs/water/gen453.py.
number: 453
slug: double-lantern-bellows-pump
name: Double lantern-bellows pump
brown: "Double lantern-bellows pump. As one bellows is distended by lever, air is rarefied within it, and water passes up suction-pipe to fill space; at same time other bellows is compressed, and expels its contents through discharge-pipe; valves working the same as in the ordinary force pump."
units: cm
sim:
  timestep: 0.0001
  integrator: implicitfast
  iterations: 60
  duration_s: 12
  floor: false
bodies:
  - id: lever
    shape: part
    pos: [0, 0, 28]
    mass: 0.3
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[-13.5, -0.9, 28.8], [21, -0.9, 28.8], [21, -0.3, 28.8], [-13.5, -0.3, 28.8]], b: [[-13.5, -0.9, 27.2], [21, -0.9, 27.2], [21, -0.3, 27.2], [-13.5, -0.3, 27.2]], collide: 0, color: "#8b6a44"}
      - {kind: rod, from: [-11, -1, 28], to: [-11, -0.2, 28], radius: 0.45, collide: 0, color: "#b9ae98"}
      - {kind: rod, from: [8.5, -1, 28], to: [8.5, -0.2, 28], radius: 0.45, collide: 0, color: "#b9ae98"}
      - {kind: rod, from: [0, -1, 28], to: [0, -0.2, 28], radius: 0.45, collide: 0, color: "#b9ae98"}
  - id: hoopL1
    shape: part
    pos: [-11, 0, 7.2]
    mass: 0.005
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[-16.85, -0.6, 7.35], [-16.25, -0.6, 7.35], [-16.25, 4, 7.35], [-16.85, 4, 7.35]], b: [[-16.85, -0.6, 7.05], [-16.25, -0.6, 7.05], [-16.25, 4, 7.05], [-16.85, 4, 7.05]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[-5.75, -0.6, 7.35], [-5.15, -0.6, 7.35], [-5.15, 4, 7.35], [-5.75, 4, 7.35]], b: [[-5.75, -0.6, 7.05], [-5.15, -0.6, 7.05], [-5.15, 4, 7.05], [-5.75, 4, 7.05]], collide: 0, color: "#8b6a44"}
  - id: hoopL2
    shape: part
    mount: hoopL1
    pos: [-11, 0, 9.2]
    mass: 0.005
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[-16.85, -0.6, 9.35], [-16.25, -0.6, 9.35], [-16.25, 4, 9.35], [-16.85, 4, 9.35]], b: [[-16.85, -0.6, 9.05], [-16.25, -0.6, 9.05], [-16.25, 4, 9.05], [-16.85, 4, 9.05]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[-5.75, -0.6, 9.35], [-5.15, -0.6, 9.35], [-5.15, 4, 9.35], [-5.75, 4, 9.35]], b: [[-5.75, -0.6, 9.05], [-5.15, -0.6, 9.05], [-5.15, 4, 9.05], [-5.75, 4, 9.05]], collide: 0, color: "#8b6a44"}
  - id: hoopL3
    shape: part
    mount: hoopL2
    pos: [-11, 0, 11.2]
    mass: 0.005
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[-16.85, -0.6, 11.35], [-16.25, -0.6, 11.35], [-16.25, 4, 11.35], [-16.85, 4, 11.35]], b: [[-16.85, -0.6, 11.05], [-16.25, -0.6, 11.05], [-16.25, 4, 11.05], [-16.85, 4, 11.05]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[-5.75, -0.6, 11.35], [-5.15, -0.6, 11.35], [-5.15, 4, 11.35], [-5.75, 4, 11.35]], b: [[-5.75, -0.6, 11.05], [-5.15, -0.6, 11.05], [-5.15, 4, 11.05], [-5.75, 4, 11.05]], collide: 0, color: "#8b6a44"}
  - id: plateL
    shape: part
    mount: hoopL3
    pos: [-11, 0, 13.2]
    mass: 0.04
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[-17, -0.6, 14], [-5, -0.6, 14], [-5, 4, 14], [-17, 4, 14]], b: [[-17, -0.6, 13.2], [-5, -0.6, 13.2], [-5, 4, 13.2], [-17, 4, 13.2]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[-11.8, -0.6, 14.8], [-10.2, -0.6, 14.8], [-10.2, 1, 14.8], [-11.8, 1, 14.8]], b: [[-11.8, -0.6, 14], [-10.2, -0.6, 14], [-10.2, 1, 14], [-11.8, 1, 14]], collide: 0, color: "#b9ae98"}
  - id: lfL0a
    shape: part
    pos: [-16.5, 0, 5.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.5688, 3.4, 5.2859], [-15.3198, 3.4, 6.2859], [-15.1823, 3.4, 6.1141], [-16.4312, 3.4, 5.1141]], b: [[-16.5688, -0.4, 5.2859], [-15.3198, -0.4, 6.2859], [-15.1823, -0.4, 6.1141], [-16.4312, -0.4, 5.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL0b
    shape: part
    mount: hoopL1
    pos: [-16.5, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.4312, 3.4, 7.2859], [-15.1823, 3.4, 6.2859], [-15.3198, 3.4, 6.1141], [-16.5688, 3.4, 7.1141]], b: [[-16.4312, -0.4, 7.2859], [-15.1823, -0.4, 6.2859], [-15.3198, -0.4, 6.1141], [-16.5688, -0.4, 7.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL0c
    shape: part
    pos: [-5.5, 0, 5.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.5687, 3.4, 5.1141], [-6.8177, 3.4, 6.1141], [-6.6802, 3.4, 6.2859], [-5.4313, 3.4, 5.2859]], b: [[-5.5687, -0.4, 5.1141], [-6.8177, -0.4, 6.1141], [-6.6802, -0.4, 6.2859], [-5.4313, -0.4, 5.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL0d
    shape: part
    mount: hoopL1
    pos: [-5.5, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.4313, 3.4, 7.1141], [-6.6802, 3.4, 6.1141], [-6.8177, 3.4, 6.2859], [-5.5687, 3.4, 7.2859]], b: [[-5.4313, -0.4, 7.1141], [-6.6802, -0.4, 6.1141], [-6.8177, -0.4, 6.2859], [-5.5687, -0.4, 7.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL1a
    shape: part
    mount: hoopL1
    pos: [-16.5, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.5688, 3.4, 7.2859], [-15.3198, 3.4, 8.2859], [-15.1823, 3.4, 8.1141], [-16.4312, 3.4, 7.1141]], b: [[-16.5688, -0.4, 7.2859], [-15.3198, -0.4, 8.2859], [-15.1823, -0.4, 8.1141], [-16.4312, -0.4, 7.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL1b
    shape: part
    mount: hoopL2
    pos: [-16.5, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.4312, 3.4, 9.2859], [-15.1823, 3.4, 8.2859], [-15.3198, 3.4, 8.1141], [-16.5688, 3.4, 9.1141]], b: [[-16.4312, -0.4, 9.2859], [-15.1823, -0.4, 8.2859], [-15.3198, -0.4, 8.1141], [-16.5688, -0.4, 9.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL1c
    shape: part
    mount: hoopL1
    pos: [-5.5, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.5687, 3.4, 7.1141], [-6.8177, 3.4, 8.1141], [-6.6802, 3.4, 8.2859], [-5.4313, 3.4, 7.2859]], b: [[-5.5687, -0.4, 7.1141], [-6.8177, -0.4, 8.1141], [-6.6802, -0.4, 8.2859], [-5.4313, -0.4, 7.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL1d
    shape: part
    mount: hoopL2
    pos: [-5.5, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.4313, 3.4, 9.1141], [-6.6802, 3.4, 8.1141], [-6.8177, 3.4, 8.2859], [-5.5687, 3.4, 9.2859]], b: [[-5.4313, -0.4, 9.1141], [-6.6802, -0.4, 8.1141], [-6.8177, -0.4, 8.2859], [-5.5687, -0.4, 9.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL2a
    shape: part
    mount: hoopL2
    pos: [-16.5, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.5688, 3.4, 9.2859], [-15.3198, 3.4, 10.2859], [-15.1823, 3.4, 10.1141], [-16.4312, 3.4, 9.1141]], b: [[-16.5688, -0.4, 9.2859], [-15.3198, -0.4, 10.2859], [-15.1823, -0.4, 10.1141], [-16.4312, -0.4, 9.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL2b
    shape: part
    mount: hoopL3
    pos: [-16.5, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.4312, 3.4, 11.2859], [-15.1823, 3.4, 10.2859], [-15.3198, 3.4, 10.1141], [-16.5688, 3.4, 11.1141]], b: [[-16.4312, -0.4, 11.2859], [-15.1823, -0.4, 10.2859], [-15.3198, -0.4, 10.1141], [-16.5688, -0.4, 11.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL2c
    shape: part
    mount: hoopL2
    pos: [-5.5, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.5687, 3.4, 9.1141], [-6.8177, 3.4, 10.1141], [-6.6802, 3.4, 10.2859], [-5.4313, 3.4, 9.2859]], b: [[-5.5687, -0.4, 9.1141], [-6.8177, -0.4, 10.1141], [-6.6802, -0.4, 10.2859], [-5.4313, -0.4, 9.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL2d
    shape: part
    mount: hoopL3
    pos: [-5.5, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.4313, 3.4, 11.1141], [-6.6802, 3.4, 10.1141], [-6.8177, 3.4, 10.2859], [-5.5687, 3.4, 11.2859]], b: [[-5.4313, -0.4, 11.1141], [-6.6802, -0.4, 10.1141], [-6.8177, -0.4, 10.2859], [-5.5687, -0.4, 11.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL3a
    shape: part
    mount: hoopL3
    pos: [-16.5, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.5688, 3.4, 11.2859], [-15.3198, 3.4, 12.2859], [-15.1823, 3.4, 12.1141], [-16.4312, 3.4, 11.1141]], b: [[-16.5688, -0.4, 11.2859], [-15.3198, -0.4, 12.2859], [-15.1823, -0.4, 12.1141], [-16.4312, -0.4, 11.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL3b
    shape: part
    mount: plateL
    pos: [-16.5, 0, 13.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-16.4312, 3.4, 13.2859], [-15.1823, 3.4, 12.2859], [-15.3198, 3.4, 12.1141], [-16.5688, 3.4, 13.1141]], b: [[-16.4312, -0.4, 13.2859], [-15.1823, -0.4, 12.2859], [-15.3198, -0.4, 12.1141], [-16.5688, -0.4, 13.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfL3c
    shape: part
    mount: hoopL3
    pos: [-5.5, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.5687, 3.4, 11.1141], [-6.8177, 3.4, 12.1141], [-6.6802, 3.4, 12.2859], [-5.4313, 3.4, 11.2859]], b: [[-5.5687, -0.4, 11.1141], [-6.8177, -0.4, 12.1141], [-6.6802, -0.4, 12.2859], [-5.4313, -0.4, 11.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfL3d
    shape: part
    mount: plateL
    pos: [-5.5, 0, 13.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[-5.4313, 3.4, 13.1141], [-6.6802, 3.4, 12.1141], [-6.8177, 3.4, 12.2859], [-5.5687, 3.4, 13.2859]], b: [[-5.4313, -0.4, 13.1141], [-6.6802, -0.4, 12.1141], [-6.8177, -0.4, 12.2859], [-5.5687, -0.4, 13.2859]], collide: 0, color: "#6b4a2e"}
  - id: rodL
    shape: part
    mount: plateL
    pos: [-11, 0, 14.8]
    mass: 0.02
    color: "#6d675c"
    pieces:
      - {kind: rod, from: [-11, -0.6, 14.8], to: [-11, -0.6, 28], radius: 0.3, collide: 0, color: "#6d675c"}
  - id: hoopR1
    shape: part
    pos: [8.5, 0, 7.2]
    mass: 0.005
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[2.65, -0.6, 7.35], [3.25, -0.6, 7.35], [3.25, 4, 7.35], [2.65, 4, 7.35]], b: [[2.65, -0.6, 7.05], [3.25, -0.6, 7.05], [3.25, 4, 7.05], [2.65, 4, 7.05]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[13.75, -0.6, 7.35], [14.35, -0.6, 7.35], [14.35, 4, 7.35], [13.75, 4, 7.35]], b: [[13.75, -0.6, 7.05], [14.35, -0.6, 7.05], [14.35, 4, 7.05], [13.75, 4, 7.05]], collide: 0, color: "#8b6a44"}
  - id: hoopR2
    shape: part
    mount: hoopR1
    pos: [8.5, 0, 9.2]
    mass: 0.005
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[2.65, -0.6, 9.35], [3.25, -0.6, 9.35], [3.25, 4, 9.35], [2.65, 4, 9.35]], b: [[2.65, -0.6, 9.05], [3.25, -0.6, 9.05], [3.25, 4, 9.05], [2.65, 4, 9.05]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[13.75, -0.6, 9.35], [14.35, -0.6, 9.35], [14.35, 4, 9.35], [13.75, 4, 9.35]], b: [[13.75, -0.6, 9.05], [14.35, -0.6, 9.05], [14.35, 4, 9.05], [13.75, 4, 9.05]], collide: 0, color: "#8b6a44"}
  - id: hoopR3
    shape: part
    mount: hoopR2
    pos: [8.5, 0, 11.2]
    mass: 0.005
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[2.65, -0.6, 11.35], [3.25, -0.6, 11.35], [3.25, 4, 11.35], [2.65, 4, 11.35]], b: [[2.65, -0.6, 11.05], [3.25, -0.6, 11.05], [3.25, 4, 11.05], [2.65, 4, 11.05]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[13.75, -0.6, 11.35], [14.35, -0.6, 11.35], [14.35, 4, 11.35], [13.75, 4, 11.35]], b: [[13.75, -0.6, 11.05], [14.35, -0.6, 11.05], [14.35, 4, 11.05], [13.75, 4, 11.05]], collide: 0, color: "#8b6a44"}
  - id: plateR
    shape: part
    mount: hoopR3
    pos: [8.5, 0, 13.2]
    mass: 0.04
    color: "#8b6a44"
    pieces:
      - {kind: loft, a: [[2.5, -0.6, 14], [14.5, -0.6, 14], [14.5, 4, 14], [2.5, 4, 14]], b: [[2.5, -0.6, 13.2], [14.5, -0.6, 13.2], [14.5, 4, 13.2], [2.5, 4, 13.2]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[7.7, -0.6, 14.8], [9.3, -0.6, 14.8], [9.3, 1, 14.8], [7.7, 1, 14.8]], b: [[7.7, -0.6, 14], [9.3, -0.6, 14], [9.3, 1, 14], [7.7, 1, 14]], collide: 0, color: "#b9ae98"}
  - id: lfR0a
    shape: part
    pos: [3, 0, 5.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[2.9312, 3.4, 5.2859], [4.1802, 3.4, 6.2859], [4.3177, 3.4, 6.1141], [3.0688, 3.4, 5.1141]], b: [[2.9312, -0.4, 5.2859], [4.1802, -0.4, 6.2859], [4.3177, -0.4, 6.1141], [3.0688, -0.4, 5.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR0b
    shape: part
    mount: hoopR1
    pos: [3, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[3.0688, 3.4, 7.2859], [4.3177, 3.4, 6.2859], [4.1802, 3.4, 6.1141], [2.9312, 3.4, 7.1141]], b: [[3.0688, -0.4, 7.2859], [4.3177, -0.4, 6.2859], [4.1802, -0.4, 6.1141], [2.9312, -0.4, 7.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR0c
    shape: part
    pos: [14, 0, 5.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[13.9313, 3.4, 5.1141], [12.6823, 3.4, 6.1141], [12.8198, 3.4, 6.2859], [14.0687, 3.4, 5.2859]], b: [[13.9313, -0.4, 5.1141], [12.6823, -0.4, 6.1141], [12.8198, -0.4, 6.2859], [14.0687, -0.4, 5.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR0d
    shape: part
    mount: hoopR1
    pos: [14, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[14.0687, 3.4, 7.1141], [12.8198, 3.4, 6.1141], [12.6823, 3.4, 6.2859], [13.9313, 3.4, 7.2859]], b: [[14.0687, -0.4, 7.1141], [12.8198, -0.4, 6.1141], [12.6823, -0.4, 6.2859], [13.9313, -0.4, 7.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR1a
    shape: part
    mount: hoopR1
    pos: [3, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[2.9312, 3.4, 7.2859], [4.1802, 3.4, 8.2859], [4.3177, 3.4, 8.1141], [3.0688, 3.4, 7.1141]], b: [[2.9312, -0.4, 7.2859], [4.1802, -0.4, 8.2859], [4.3177, -0.4, 8.1141], [3.0688, -0.4, 7.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR1b
    shape: part
    mount: hoopR2
    pos: [3, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[3.0688, 3.4, 9.2859], [4.3177, 3.4, 8.2859], [4.1802, 3.4, 8.1141], [2.9312, 3.4, 9.1141]], b: [[3.0688, -0.4, 9.2859], [4.3177, -0.4, 8.2859], [4.1802, -0.4, 8.1141], [2.9312, -0.4, 9.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR1c
    shape: part
    mount: hoopR1
    pos: [14, 0, 7.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[13.9313, 3.4, 7.1141], [12.6823, 3.4, 8.1141], [12.8198, 3.4, 8.2859], [14.0687, 3.4, 7.2859]], b: [[13.9313, -0.4, 7.1141], [12.6823, -0.4, 8.1141], [12.8198, -0.4, 8.2859], [14.0687, -0.4, 7.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR1d
    shape: part
    mount: hoopR2
    pos: [14, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[14.0687, 3.4, 9.1141], [12.8198, 3.4, 8.1141], [12.6823, 3.4, 8.2859], [13.9313, 3.4, 9.2859]], b: [[14.0687, -0.4, 9.1141], [12.8198, -0.4, 8.1141], [12.6823, -0.4, 8.2859], [13.9313, -0.4, 9.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR2a
    shape: part
    mount: hoopR2
    pos: [3, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[2.9312, 3.4, 9.2859], [4.1802, 3.4, 10.2859], [4.3177, 3.4, 10.1141], [3.0688, 3.4, 9.1141]], b: [[2.9312, -0.4, 9.2859], [4.1802, -0.4, 10.2859], [4.3177, -0.4, 10.1141], [3.0688, -0.4, 9.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR2b
    shape: part
    mount: hoopR3
    pos: [3, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[3.0688, 3.4, 11.2859], [4.3177, 3.4, 10.2859], [4.1802, 3.4, 10.1141], [2.9312, 3.4, 11.1141]], b: [[3.0688, -0.4, 11.2859], [4.3177, -0.4, 10.2859], [4.1802, -0.4, 10.1141], [2.9312, -0.4, 11.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR2c
    shape: part
    mount: hoopR2
    pos: [14, 0, 9.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[13.9313, 3.4, 9.1141], [12.6823, 3.4, 10.1141], [12.8198, 3.4, 10.2859], [14.0687, 3.4, 9.2859]], b: [[13.9313, -0.4, 9.1141], [12.6823, -0.4, 10.1141], [12.8198, -0.4, 10.2859], [14.0687, -0.4, 9.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR2d
    shape: part
    mount: hoopR3
    pos: [14, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[14.0687, 3.4, 11.1141], [12.8198, 3.4, 10.1141], [12.6823, 3.4, 10.2859], [13.9313, 3.4, 11.2859]], b: [[14.0687, -0.4, 11.1141], [12.8198, -0.4, 10.1141], [12.6823, -0.4, 10.2859], [13.9313, -0.4, 11.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR3a
    shape: part
    mount: hoopR3
    pos: [3, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[2.9312, 3.4, 11.2859], [4.1802, 3.4, 12.2859], [4.3177, 3.4, 12.1141], [3.0688, 3.4, 11.1141]], b: [[2.9312, -0.4, 11.2859], [4.1802, -0.4, 12.2859], [4.3177, -0.4, 12.1141], [3.0688, -0.4, 11.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR3b
    shape: part
    mount: plateR
    pos: [3, 0, 13.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[3.0688, 3.4, 13.2859], [4.3177, 3.4, 12.2859], [4.1802, 3.4, 12.1141], [2.9312, 3.4, 13.1141]], b: [[3.0688, -0.4, 13.2859], [4.3177, -0.4, 12.2859], [4.1802, -0.4, 12.1141], [2.9312, -0.4, 13.1141]], collide: 0, color: "#6b4a2e"}
  - id: lfR3c
    shape: part
    mount: hoopR3
    pos: [14, 0, 11.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[13.9313, 3.4, 11.1141], [12.6823, 3.4, 12.1141], [12.8198, 3.4, 12.2859], [14.0687, 3.4, 11.2859]], b: [[13.9313, -0.4, 11.1141], [12.6823, -0.4, 12.1141], [12.8198, -0.4, 12.2859], [14.0687, -0.4, 11.2859]], collide: 0, color: "#6b4a2e"}
  - id: lfR3d
    shape: part
    mount: plateR
    pos: [14, 0, 13.2]
    mass: 0.001
    color: "#6b4a2e"
    pieces:
      - {kind: loft, a: [[14.0687, 3.4, 13.1141], [12.8198, 3.4, 12.1141], [12.6823, 3.4, 12.2859], [13.9313, 3.4, 13.2859]], b: [[14.0687, -0.4, 13.1141], [12.8198, -0.4, 12.1141], [12.6823, -0.4, 12.2859], [13.9313, -0.4, 13.2859]], collide: 0, color: "#6b4a2e"}
  - id: rodR
    shape: part
    mount: plateR
    pos: [8.5, 0, 14.8]
    mass: 0.02
    color: "#6d675c"
    pieces:
      - {kind: rod, from: [8.5, -0.6, 14.8], to: [8.5, -0.6, 28], radius: 0.3, collide: 0, color: "#6d675c"}
  - id: svL
    shape: part
    pos: [-9.5, 0, 0]
    mass: 0.006
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[-7.8, 0, 0.3], [-7.8832, 0.5253, 0.3], [-8.1247, 0.9992, 0.3], [-8.5008, 1.3753, 0.3], [-8.9747, 1.6168, 0.3], [-9.5, 1.7, 0.3], [-10.0253, 1.6168, 0.3], [-10.4992, 1.3753, 0.3], [-10.8753, 0.9992, 0.3], [-11.1168, 0.5253, 0.3], [-11.2, 0, 0.3], [-11.1168, -0.5253, 0.3], [-10.8753, -0.9992, 0.3], [-10.4992, -1.3753, 0.3], [-10.0253, -1.6168, 0.3], [-9.5, -1.7, 0.3], [-8.9747, -1.6168, 0.3], [-8.5008, -1.3753, 0.3], [-8.1247, -0.9992, 0.3], [-7.8832, -0.5253, 0.3]], b: [[-7.8, 0, 0], [-7.8832, 0.5253, 0], [-8.1247, 0.9992, 0], [-8.5008, 1.3753, 0], [-8.9747, 1.6168, 0], [-9.5, 1.7, 0], [-10.0253, 1.6168, 0], [-10.4992, 1.3753, 0], [-10.8753, 0.9992, 0], [-11.1168, 0.5253, 0], [-11.2, 0, 0], [-11.1168, -0.5253, 0], [-10.8753, -0.9992, 0], [-10.4992, -1.3753, 0], [-10.0253, -1.6168, 0], [-9.5, -1.7, 0], [-8.9747, -1.6168, 0], [-8.5008, -1.3753, 0], [-8.1247, -0.9992, 0], [-7.8832, -0.5253, 0]], collide: 0, color: "#e0a030"}
      - {kind: loft, a: [[-9.2, 0, 1], [-9.2402, 0.15, 1], [-9.35, 0.2598, 1], [-9.5, 0.3, 1], [-9.65, 0.2598, 1], [-9.7598, 0.15, 1], [-9.8, 0, 1], [-9.7598, -0.15, 1], [-9.65, -0.2598, 1], [-9.5, -0.3, 1], [-9.35, -0.2598, 1], [-9.2402, -0.15, 1]], b: [[-8, 0, 0.3], [-8.201, 0.75, 0.3], [-8.75, 1.299, 0.3], [-9.5, 1.5, 0.3], [-10.25, 1.299, 0.3], [-10.799, 0.75, 0.3], [-11, 0, 0.3], [-10.799, -0.75, 0.3], [-10.25, -1.299, 0.3], [-9.5, -1.5, 0.3], [-8.75, -1.299, 0.3], [-8.201, -0.75, 0.3]], collide: 0, color: "#e0a030"}
  - id: svR
    shape: part
    pos: [8, 0, 0]
    mass: 0.006
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[9.7, 0, 0.3], [9.6168, 0.5253, 0.3], [9.3753, 0.9992, 0.3], [8.9992, 1.3753, 0.3], [8.5253, 1.6168, 0.3], [8, 1.7, 0.3], [7.4747, 1.6168, 0.3], [7.0008, 1.3753, 0.3], [6.6247, 0.9992, 0.3], [6.3832, 0.5253, 0.3], [6.3, 0, 0.3], [6.3832, -0.5253, 0.3], [6.6247, -0.9992, 0.3], [7.0008, -1.3753, 0.3], [7.4747, -1.6168, 0.3], [8, -1.7, 0.3], [8.5253, -1.6168, 0.3], [8.9992, -1.3753, 0.3], [9.3753, -0.9992, 0.3], [9.6168, -0.5253, 0.3]], b: [[9.7, 0, 0], [9.6168, 0.5253, 0], [9.3753, 0.9992, 0], [8.9992, 1.3753, 0], [8.5253, 1.6168, 0], [8, 1.7, 0], [7.4747, 1.6168, 0], [7.0008, 1.3753, 0], [6.6247, 0.9992, 0], [6.3832, 0.5253, 0], [6.3, 0, 0], [6.3832, -0.5253, 0], [6.6247, -0.9992, 0], [7.0008, -1.3753, 0], [7.4747, -1.6168, 0], [8, -1.7, 0], [8.5253, -1.6168, 0], [8.9992, -1.3753, 0], [9.3753, -0.9992, 0], [9.6168, -0.5253, 0]], collide: 0, color: "#e0a030"}
      - {kind: loft, a: [[8.3, 0, 1], [8.2598, 0.15, 1], [8.15, 0.2598, 1], [8, 0.3, 1], [7.85, 0.2598, 1], [7.7402, 0.15, 1], [7.7, 0, 1], [7.7402, -0.15, 1], [7.85, -0.2598, 1], [8, -0.3, 1], [8.15, -0.2598, 1], [8.2598, -0.15, 1]], b: [[9.5, 0, 0.3], [9.299, 0.75, 0.3], [8.75, 1.299, 0.3], [8, 1.5, 0.3], [7.25, 1.299, 0.3], [6.701, 0.75, 0.3], [6.5, 0, 0.3], [6.701, -0.75, 0.3], [7.25, -1.299, 0.3], [8, -1.5, 0.3], [8.75, -1.299, 0.3], [9.299, -0.75, 0.3]], collide: 0, color: "#e0a030"}
  - id: dvL
    shape: part
    pos: [-1.85, 0, 4.2]
    mass: 0.004
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[-2, -0.3, 4.2], [-1.4, -0.3, 4.2], [-1.4, 2.6, 4.2], [-2, 2.6, 4.2]], b: [[-2, -0.3, 1.2], [-1.4, -0.3, 1.2], [-1.4, 2.6, 1.2], [-2, 2.6, 1.2]], collide: 0, color: "#c8781e"}
      - {kind: rod, from: [-1.85, -0.3, 4.2], to: [-1.85, 2.8, 4.2], radius: 0.18, collide: 0}
  - id: dvR
    shape: part
    pos: [1.85, 0, 4.2]
    mass: 0.004
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[1.4, -0.3, 4.2], [2, -0.3, 4.2], [2, 2.6, 4.2], [1.4, 2.6, 4.2]], b: [[1.4, -0.3, 1.2], [2, -0.3, 1.2], [2, 2.6, 1.2], [1.4, 2.6, 1.2]], collide: 0, color: "#c8781e"}
      - {kind: rod, from: [1.85, -0.3, 4.2], to: [1.85, 2.8, 4.2], radius: 0.18, collide: 0}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#d6cdb8"
    pieces:
      - {kind: loft, a: [[-18.6, 0, 0], [16.6, 0, 0], [16.6, 4, 0], [-18.6, 4, 0]], b: [[-18.6, 0, -0.6], [16.6, 0, -0.6], [16.6, 4, -0.6], [-18.6, 4, -0.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-18.6, 0, 5.2], [16.6, 0, 5.2], [16.6, 4, 5.2], [-18.6, 4, 5.2]], b: [[-18.6, 0, 4.6], [16.6, 0, 4.6], [16.6, 4, 4.6], [-18.6, 4, 4.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-18.6, 0, 4.6], [-18, 0, 4.6], [-18, 4, 4.6], [-18.6, 4, 4.6]], b: [[-18.6, 0, 0], [-18, 0, 0], [-18, 4, 0], [-18.6, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[16, 0, 4.6], [16.6, 0, 4.6], [16.6, 4, 4.6], [16, 4, 4.6]], b: [[16, 0, 0], [16.6, 0, 0], [16.6, 4, 0], [16, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-18, 3.6, 4.6], [16, 3.6, 4.6], [16, 4, 4.6], [-18, 4, 4.6]], b: [[-18, 3.6, 0], [16, 3.6, 0], [16, 4, 0], [-18, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-2.6, 0, 25], [-2, 0, 25], [-2, 4, 25], [-2.6, 4, 25]], b: [[-2.6, 0, 4.1], [-2, 0, 4.1], [-2, 4, 4.1], [-2.6, 4, 4.1]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-2.6, 0, 1.7], [-2, 0, 1.7], [-2, 4, 1.7], [-2.6, 4, 1.7]], b: [[-2.6, 0, 0], [-2, 0, 0], [-2, 4, 0], [-2.6, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-2.6, 2.4, 4.2], [-2, 2.4, 4.2], [-2, 4, 4.2], [-2.6, 4, 4.2]], b: [[-2.6, 2.4, 0], [-2, 2.4, 0], [-2, 4, 0], [-2.6, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[2, 0, 25], [2.6, 0, 25], [2.6, 4, 25], [2, 4, 25]], b: [[2, 0, 4.1], [2.6, 0, 4.1], [2.6, 4, 4.1], [2, 4, 4.1]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[2, 0, 1.7], [2.6, 0, 1.7], [2.6, 4, 1.7], [2, 4, 1.7]], b: [[2, 0, 0], [2.6, 0, 0], [2.6, 4, 0], [2, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[2, 2.4, 4.2], [2.6, 2.4, 4.2], [2.6, 4, 4.2], [2, 4, 4.2]], b: [[2, 2.4, 0], [2.6, 2.4, 0], [2.6, 4, 0], [2, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-2, 3.6, 25], [2, 3.6, 25], [2, 4, 25], [-2, 4, 25]], b: [[-2, 3.6, 0], [2, 3.6, 0], [2, 4, 0], [-2, 4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-12.1, 0, -4], [10.6, 0, -4], [10.6, 4, -4], [-12.1, 4, -4]], b: [[-12.1, 0, -4.6], [10.6, 0, -4.6], [10.6, 4, -4.6], [-12.1, 4, -4.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-12.1, 0, -0.6], [-11.5, 0, -0.6], [-11.5, 4, -0.6], [-12.1, 4, -0.6]], b: [[-12.1, 0, -4], [-11.5, 0, -4], [-11.5, 4, -4], [-12.1, 4, -4]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[10, 0, -0.6], [10.6, 0, -0.6], [10.6, 4, -0.6], [10, 4, -0.6]], b: [[10, 0, -4], [10.6, 0, -4], [10.6, 4, -4], [10, 4, -4]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-11.5, 3.6, -0.6], [10, 3.6, -0.6], [10, 4, -0.6], [-11.5, 4, -0.6]], b: [[-11.5, 3.6, -4], [10, 3.6, -4], [10, 4, -4], [-11.5, 4, -4]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-1.9, 0, -4.6], [-1.3, 0, -4.6], [-1.3, 4, -4.6], [-1.9, 4, -4.6]], b: [[-1.9, 0, -9], [-1.3, 0, -9], [-1.3, 4, -9], [-1.9, 4, -9]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[1.3, 0, -4.6], [1.9, 0, -4.6], [1.9, 4, -4.6], [1.3, 4, -4.6]], b: [[1.3, 0, -9], [1.9, 0, -9], [1.9, 4, -9], [1.3, 4, -9]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-1.3, 3.6, -4], [1.3, 3.6, -4], [1.3, 4, -4], [-1.3, 4, -4]], b: [[-1.3, 3.6, -9], [1.3, 3.6, -9], [1.3, 4, -9], [-1.3, 4, -9]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-3, 4.4, 36], [3, 4.4, 36], [3, 5.4, 36], [-3, 5.4, 36]], b: [[-3, 4.4, 21], [3, 4.4, 21], [3, 5.4, 21], [-3, 5.4, 21]], collide: 0, color: "#8b6a44"}
      - {kind: rod, from: [0, -1.2, 28], to: [0, 4.4, 28], radius: 0.35, collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-6.6, 0, -11], [6.6, 0, -11], [6.6, 6.6, -11], [-6.6, 6.6, -11]], b: [[-6.6, 0, -11.6], [6.6, 0, -11.6], [6.6, 6.6, -11.6], [-6.6, 6.6, -11.6]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[-6.6, 6, -6], [6.6, 6, -6], [6.6, 6.6, -6], [-6.6, 6.6, -6]], b: [[-6.6, 6, -11], [6.6, 6, -11], [6.6, 6.6, -11], [-6.6, 6.6, -11]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[-6.6, 0, -6], [-6, 0, -6], [-6, 6, -6], [-6.6, 6, -6]], b: [[-6.6, 0, -11], [-6, 0, -11], [-6, 6, -11], [-6.6, 6, -11]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[6, 0, -6], [6.6, 0, -6], [6.6, 6, -6], [6, 6, -6]], b: [[6, 0, -11], [6.6, 0, -11], [6.6, 6, -11], [6, 6, -11]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[-22, 0, -6], [-6.6, 0, -6], [-6.6, 8, -6], [-22, 8, -6]], b: [[-22, 0, -7.2], [-6.6, 0, -7.2], [-6.6, 8, -7.2], [-22, 8, -7.2]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[6.6, 0, -6], [20, 0, -6], [20, 8, -6], [6.6, 8, -6]], b: [[6.6, 0, -7.2], [20, 0, -7.2], [20, 8, -7.2], [6.6, 8, -7.2]], collide: 0, color: "#8b7d66"}
joints:
  - {id: j_lv, type: hinge, body: lever, axis: [0, 1, 0], range: [-0.5, 0.5], damping: 0.01}   # the lever on its fulcrum (the hand's); + lowers the right end
  - {id: j_hoopL1, type: slide, body: hoopL1, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 1 of the L bellows (its leather's spring)
  - {id: j_hoopL2, type: slide, body: hoopL2, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 2 of the L bellows (its leather's spring)
  - {id: j_hoopL3, type: slide, body: hoopL3, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 3 of the L bellows (its leather's spring)
  - {id: j_plateL, type: slide, body: plateL, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 4 of the L bellows (its leather's spring)
  - {id: j_lfL0a, type: hinge, body: lfL0a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL0b, type: hinge, body: lfL0b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL0c, type: hinge, body: lfL0c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL0d, type: hinge, body: lfL0d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL1a, type: hinge, body: lfL1a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL1b, type: hinge, body: lfL1b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL1c, type: hinge, body: lfL1c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL1d, type: hinge, body: lfL1d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL2a, type: hinge, body: lfL2a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL2b, type: hinge, body: lfL2b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL2c, type: hinge, body: lfL2c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL2d, type: hinge, body: lfL2d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL3a, type: hinge, body: lfL3a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL3b, type: hinge, body: lfL3b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL3c, type: hinge, body: lfL3c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfL3d, type: hinge, body: lfL3d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_rodL, type: hinge, body: rodL, axis: [0, 1, 0], damping: 0.0005}
  - {id: j_hoopR1, type: slide, body: hoopR1, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 1 of the R bellows (its leather's spring)
  - {id: j_hoopR2, type: slide, body: hoopR2, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 2 of the R bellows (its leather's spring)
  - {id: j_hoopR3, type: slide, body: hoopR3, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 3 of the R bellows (its leather's spring)
  - {id: j_plateR, type: slide, body: plateR, axis: [0, 0, 1], range: [-1.55, 2], damping: 0.5, stiffness: 500}   # pleat 4 of the R bellows (its leather's spring)
  - {id: j_lfR0a, type: hinge, body: lfR0a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR0b, type: hinge, body: lfR0b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR0c, type: hinge, body: lfR0c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR0d, type: hinge, body: lfR0d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR1a, type: hinge, body: lfR1a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR1b, type: hinge, body: lfR1b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR1c, type: hinge, body: lfR1c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR1d, type: hinge, body: lfR1d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR2a, type: hinge, body: lfR2a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR2b, type: hinge, body: lfR2b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR2c, type: hinge, body: lfR2c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR2d, type: hinge, body: lfR2d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR3a, type: hinge, body: lfR3a, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR3b, type: hinge, body: lfR3b, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR3c, type: hinge, body: lfR3c, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_lfR3d, type: hinge, body: lfR3d, axis: [0, 1, 0], damping: 0.00005}
  - {id: j_rodR, type: hinge, body: rodR, axis: [0, 1, 0], damping: 0.0005}
  - {id: j_svL, type: slide, body: svL, axis: [0, 0, 1], range: [0, 0.9], damping: 0.0005}   # 0: on its seat in the floor
  - {id: j_svR, type: slide, body: svR, axis: [0, 0, 1], range: [0, 0.9], damping: 0.0005}   # 0: on its seat in the floor
  - {id: j_dvL, type: hinge, body: dvL, axis: [0, -1, 0], range: [0, 0.9], damping: 0.00002}   # 0: hanging shut on its port, + swings into the riser
  - {id: j_dvR, type: hinge, body: dvR, axis: [0, 1, 0], range: [0, 0.9], damping: 0.00002}   # 0: hanging shut on its port, + swings into the riser
pins:
  - {id: p_lfL0a, a: lfL0a, b: lfL0b, at: [-15.251, 0, 6.2]}
  - {id: p_lfL0c, a: lfL0c, b: lfL0d, at: [-6.749, 0, 6.2]}
  - {id: p_lfL1a, a: lfL1a, b: lfL1b, at: [-15.251, 0, 8.2]}
  - {id: p_lfL1c, a: lfL1c, b: lfL1d, at: [-6.749, 0, 8.2]}
  - {id: p_lfL2a, a: lfL2a, b: lfL2b, at: [-15.251, 0, 10.2]}
  - {id: p_lfL2c, a: lfL2c, b: lfL2d, at: [-6.749, 0, 10.2]}
  - {id: p_lfL3a, a: lfL3a, b: lfL3b, at: [-15.251, 0, 12.2]}
  - {id: p_lfL3c, a: lfL3c, b: lfL3d, at: [-6.749, 0, 12.2]}
  - {id: p_rodL, a: lever, b: rodL, at: [-11, 0, 28]}
  - {id: p_lfR0a, a: lfR0a, b: lfR0b, at: [4.249, 0, 6.2]}
  - {id: p_lfR0c, a: lfR0c, b: lfR0d, at: [12.751, 0, 6.2]}
  - {id: p_lfR1a, a: lfR1a, b: lfR1b, at: [4.249, 0, 8.2]}
  - {id: p_lfR1c, a: lfR1c, b: lfR1d, at: [12.751, 0, 8.2]}
  - {id: p_lfR2a, a: lfR2a, b: lfR2b, at: [4.249, 0, 10.2]}
  - {id: p_lfR2c, a: lfR2c, b: lfR2d, at: [12.751, 0, 10.2]}
  - {id: p_lfR3a, a: lfR3a, b: lfR3b, at: [4.249, 0, 12.2]}
  - {id: p_lfR3c, a: lfR3c, b: lfR3d, at: [12.751, 0, 12.2]}
  - {id: p_rodR, a: lever, b: rodR, at: [8.5, 0, 28]}
vessels:
  substeps: 4
  nodes:
    - {id: ground, kind: source, p: 343.35}
    - {id: well, kind: tank, area: 72, z: -11, level: 3.5,
       draw: {section: [[-6, -11], [6, -11], [6, -6], [-6, -6]], y: [0.05, 6]}}
    - {id: spipe, kind: chamber, fixed: -9, sections: [[-9, 10.4], [-4, 86]], volume: 344.4, water: 344.4, K: 2e+06,
       draw: {sections: [[[-1.3, -9], [1.3, -9], [1.3, -4], [-1.3, -4]], [[-11.5, -4], [10, -4], [10, -0.6], [-11.5, -0.6]]], y: [0, 2.4]}}   # the suction pipe and channel, primed
    - {id: bL, kind: chamber, fixed: 0, sections: [[0, 61.6], [5.2, 95.0332]], volume: 1043.63, water: 1043.63, K: 2e+06,
       draw: {sections: [[[-18, 0], [-2.6, 0], [-2.6, 4.6], [-18, 4.6]], [[-15.9, 4.6], [-6.1, 4.6], [-6.1, 99], [-15.9, 99]]], y: [0, 2.4]}}   # the left half of the base and its bellows
    - {id: bR, kind: chamber, fixed: 0, sections: [[0, 53.6], [5.2, 95.0332]], volume: 1006.83, water: 1006.83, K: 2e+06,
       draw: {sections: [[[2.6, 0], [16, 0], [16, 4.6], [2.6, 4.6]], [[3.6, 4.6], [13.4, 4.6], [13.4, 99], [3.6, 99]]], y: [0, 2.4]}}   # the right half and its bellows
    - {id: riser, kind: chamber, fixed: 0, sections: [[0, 16]], volume: 400, water: 400, K: 2e+06,
       draw: {sections: [[[-2, 0], [2, 0], [2, 25], [-2, 25]]], y: [0, 2.4]}}   # the riser, full
    - {id: air, kind: source, p: 0}
  links:
    - {id: spring, from: ground, to: well, area: 30, cd: 0.62, z: -11}
    - {id: suck, from: well, to: spipe, area: 10.4, cd: 0.8, z: -8.8, length: 15.75,
       draw: {from: [0, 0.6, -8.7], to: [0, 0.6, -3.7], width: 2.3, flow: 0.2}}   # up the suction pipe
    - {id: sL, from: spipe, to: bL, area: 4.5239, cd: 0.62, z: 99, zTo: -99, open: {joint: j_svL, q: [0, 0.6], frac: [0, 1]}}
    - {id: sR, from: spipe, to: bR, area: 4.5239, cd: 0.62, z: 99, zTo: -99, open: {joint: j_svR, q: [0, 0.6], frac: [0, 1]}}
    - {id: dL, from: bL, to: riser, area: 5.76, cd: 0.62, z: 2.7, zTo: 2.7, open: {joint: j_dvL, q: [0, 0.5], frac: [0, 1]}}
    - {id: dR, from: bR, to: riser, area: 5.76, cd: 0.62, z: 2.7, zTo: 2.7, open: {joint: j_dvR, q: [0, 0.5], frac: [0, 1]}}
    - {id: deliver, from: riser, to: air, area: 2, cd: 0.9, z: 0.5, zTo: 60, check: true, length: 60,
       draw: {from: [0, 0.6, 0.6], to: [0, 0.6, 25], width: 3.7, flow: 0.2}}   # up the riser and on out of the picture
  pistons:
    - {node: bL, joint: j_hoopL1, area: 95.0332, sign: 1}
    - {node: bL, joint: j_hoopL2, area: 95.0332, sign: 1}
    - {node: bL, joint: j_hoopL3, area: 95.0332, sign: 1}
    - {node: bL, joint: j_plateL, area: 95.0332, sign: 1}
    - {node: bR, joint: j_hoopR1, area: 95.0332, sign: 1}
    - {node: bR, joint: j_hoopR2, area: 95.0332, sign: 1}
    - {node: bR, joint: j_hoopR3, area: 95.0332, sign: 1}
    - {node: bR, joint: j_plateR, area: 95.0332, sign: 1}
    - {node: spipe, joint: j_svL, area: 4.5239, sign: 1}
    - {node: bL, joint: j_svL, area: 4.5239, sign: -1, z: 0}
    - {node: spipe, joint: j_svR, area: 4.5239, sign: 1}
    - {node: bR, joint: j_svR, area: 4.5239, sign: -1, z: 0}
    - {node: bL, joint: j_dvL, area: 5.76, arm: 1.5, sign: 1, z: 2.7}
    - {node: riser, joint: j_dvL, area: 5.76, arm: 1.5, sign: -1, z: 2.7}
    - {node: bR, joint: j_dvR, area: 5.76, arm: 1.5, sign: 1, z: 2.7}
    - {node: riser, joint: j_dvR, area: 5.76, arm: 1.5, sign: -1, z: 2.7}
driver: {joint: j_lv, kind: velocity, rpm: 0, swing: {amplitude: 0.25, hz: 0.27}, kv: 3000, max_torque: 80}
checks:
  - {type: amplitude, joint: j_lv, min: 0.2125, max: 0.2875, settle_s: 1.0, window_s: 10.5}
  - {type: amplitude, joint: j_plateL, min: 0.003, max: 0.009, settle_s: 1.0, window_s: 10.5}
  - {type: amplitude, joint: j_svL, min: 0.002, max: 0.009, settle_s: 1.0, window_s: 10.5}
  - {type: amplitude, joint: j_svR, min: 0.002, max: 0.009, settle_s: 1.0, window_s: 10.5}
  - {type: amplitude, joint: j_dvL, min: 0.05, max: 0.5, settle_s: 1.0, window_s: 10.5}
  - {type: amplitude, joint: j_dvR, min: 0.05, max: 0.5, settle_s: 1.0, window_s: 10.5}
  - {type: penetration, max: 0.003}
camera: {target: [1, 0, 10], position: [1, -200, 13], fov: 23}
display:
  output: j_plateR
  labels: {j_lv: "Lever (driver)", j_plateL: "Left bellows' top pleat", j_plateR: "Right bellows' top pleat", j_svL: "Left suction valve", j_svR: "Right suction valve", j_dvL: "Left discharge valve", j_dvR: "Right discharge valve"}
