{ "cells": [ { "cell_type": "markdown", "id": "3e190e7a", "metadata": {}, "source": [ "# 17 · Skinning Eigenmodes: a Subspace that Can Rotate\n", "\n", "A high-resolution beam is *accurate* but *slow* (tutorial 10): every Backward-Euler step solves a sparse system as big as the mesh. **Reduced-order modeling** escapes this by restricting the motion to a small **subspace**\n", "\n", "$$\n", "x \\;=\\; B\\,z + q , \\qquad z\\in\\mathbb{R}^r,\\quad r \\ll n\\,\\text{dim},\n", "$$\n", "\n", "and solving for the $r$ subspace coordinates $z$ instead of all $n\\,\\text{dim}$ vertex DOFs. The basis $B$ is built **once**, offline. The question is *which* basis — and the answer hinges on one thing: **can the subspace rotate?**\n", "\n", "* **Linear Modal Analysis (LMA)** uses the lowest vibration modes as *displacement* columns: $x = X + B_{\\text{lma}}z$. Fast, but a sum of fixed displacement fields is **linear** in $z$ — and rotation is *not* a linear function of position. LMA literally cannot turn the rest shape.\n", "* **Skinning eigenmodes** use the same Laplacian eigenvectors as **skinning weights** and attach a small *affine transform* to each: $x = B_{\\text{skin}}z$, where $z$ stacks per-bone $2\\times3$ transforms. Affine transforms **contain rotation**, so this subspace turns the shape exactly — for the same solve cost.\n", "\n", "We will (1) feel the cost of the full solve, (2) show the subspace shrinks the **solve** (not the integration), (3) watch a cantilever sag and see LMA fail to rotate while skinning tracks the full reference, and (4) rotate the rest shape a full turn and measure each subspace's reconstruction error." ] }, { "cell_type": "code", "execution_count": 1, "id": "8567f98f", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:32.363730Z", "iopub.status.busy": "2026-06-09T05:42:32.363565Z", "iopub.status.idle": "2026-06-09T05:42:32.869410Z", "shell.execute_reply": "2026-06-09T05:42:32.869130Z" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import time\n", "import numpy as np\n", "import scipy as sp\n", "import scipy.sparse as sps\n", "import matplotlib.pyplot as plt\n", "from matplotlib.animation import FuncAnimation\n", "\n", "import simkit\n", "from simkit.solvers import newton_solver\n", "import utils\n", "\n", "import warnings\n", "from scipy.linalg import LinAlgWarning\n", "warnings.filterwarnings(\"ignore\", category=LinAlgWarning) # stiff pin -> benign ill-conditioning\n", "\n", "FULL_C = \"#d62728\" # full-space (reference / \"slow\")\n", "LMA_C = \"#1f77b4\" # linear modal analysis\n", "SKIN_C = \"#2ca02c\" # skinning eigenmodes" ] }, { "cell_type": "markdown", "id": "12698610", "metadata": {}, "source": [ "## A neo-Hookean beam, sagging under gravity, with inertia\n", "\n", "We reuse the cantilever of tutorial 10 but now make it **dynamic**: each step is one **Backward-Euler** solve of the incremental potential\n", "\n", "$$\n", "x_{n+1} \\;=\\; \\arg\\min_x \\;\\; \\tfrac{1}{2h^2}\\,\\lVert x-\\tilde x\\rVert^2_M\n", "\\;+\\; \\Psi_{\\text{neo}}(x) \\;-\\; f_g^{\\top}x \\;+\\; \\tfrac12\\lVert x_{\\text{pin}}-X_{\\text{pin}}\\rVert^2_K ,\n", "$$\n", "\n", "with momentum target $\\tilde x = 2x_n - x_{n-1}$ (i.e. $x_n + h v_n$), full-order **neo-Hookean** elasticity, gravity, and a stiff penalty clamping the left wall. `BeamSim` wraps the mesh, the precomputed operators, and a single Newton step — and takes an optional subspace $(B, q)$. With $B = I$ it solves the full per-vertex system; with a reduced $B$ it solves for $z$ via the **Galerkin projection** $B^{\\top} g$, $B^{\\top} H B$ (full integration — we evaluate the real energy and project, no cubature).\n", "\n", "The class follows the standardized recipe: `utils.precompute` for $J/\\text{vol}/\\mu/\\text{lam}/M/f_g$, a `utils.PenaltySpring` for the wall pin, and a `utils.Inertia` for backward-Euler. Each energy/gradient/Hessian term is built on its own line on the **full** $x = Bz+q$, then the gradient/Hessian are projected with $B^{\\top}$." ] }, { "cell_type": "code", "execution_count": 2, "id": "e5bac12c", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:32.870676Z", "iopub.status.busy": "2026-06-09T05:42:32.870595Z", "iopub.status.idle": "2026-06-09T05:42:32.874071Z", "shell.execute_reply": "2026-06-09T05:42:32.873868Z" } }, "outputs": [], "source": [ "class BeamSim:\n", " \"\"\"Backward-Euler neo-Hookean cantilever. Optional subspace x = B z + q.\"\"\"\n", "\n", " def __init__(self, nx, ny, ym=3000.0, pr=0.4, rho=1.0, h=2e-2,\n", " B=None, q=None, K_pin=1e7, width=4.0, height=0.5):\n", " self.X, self.T = utils.triangulated_grid(nx, ny, width=width, height=height)\n", " self.p = utils.precompute(self.X, self.T, ym=ym, pr=pr, rho=rho, gravity=-9.8)\n", " self.n, self.dim = self.p.n, self.p.dim\n", " self.h = h\n", "\n", " self.psi = utils.make_material(\"Neo-Hookean\") # full-order elastic term\n", " self.gravity = utils.Gravity(self.p.f_g)\n", " self.inertia = utils.Inertia(self.p.M, h)\n", " self.Mk = self.p.M # mass in the subspace projection\n", "\n", " pin_idx = np.where(self.X[:, 0] <= self.X[:, 0].min() + 1e-6)[0]\n", " self.pin_idx = pin_idx\n", " self.pin = utils.PenaltySpring(self.n, self.dim, K_pin).set(pin_idx, self.X[pin_idx])\n", "\n", " # subspace: x = B z + q (B = identity => full space)\n", " self.B = sps.identity(self.n * self.dim).tocsc() if B is None else B\n", " self.q = np.zeros((self.B.shape[0], 1)) if q is None else q.reshape(-1, 1)\n", " self.tip = int(np.argmax(self.X[:, 0]))\n", "\n", " def _x(self, z): return self.B @ z + self.q\n", "\n", " def energy(self, z):\n", " x = self._x(z)\n", " E_inertia = self.inertia.energy(x)\n", " E_elastic = self.psi.energy(x, self.p)\n", " E_gravity = self.gravity.energy(x)\n", " E_pin = self.pin.energy(x)\n", " return E_inertia + E_elastic + E_gravity + E_pin\n", "\n", " def gradient(self, z):\n", " x = self._x(z)\n", " g_elastic = self.B.T @ self.psi.gradient(x, self.p)\n", " g_gravity = self.B.T @ self.gravity.gradient(x)\n", " g_pin = self.B.T @ self.pin.gradient(x)\n", " g_inertia = self.B.T @ self.inertia.gradient(x)\n", " return g_elastic + g_gravity + g_pin + g_inertia\n", "\n", " def hessian(self, z):\n", " x = self._x(z)\n", " H_elastic = self.B.T @ (self.psi.hessian(x, self.p) @ self.B)\n", " H_pin = self.B.T @ (self.pin.hessian(x) @ self.B)\n", " H_inertia = self.B.T @ (self.inertia.hessian(x) @ self.B)\n", " return H_elastic + H_pin + H_inertia\n", "\n", " def rest_z(self):\n", " \"\"\"Subspace coordinates of the rest shape (mass-weighted projection).\"\"\"\n", " return simkit.project_into_subspace(self.X.reshape(-1, 1) - self.q, self.B, M=self.Mk)\n", "\n", " def step(self, z, z_prev, iters=30):\n", " \"\"\"One Backward-Euler step; Newton with line search (required for stability).\"\"\"\n", " x_n = self.B @ z + self.q\n", " v_n = (x_n - (self.B @ z_prev + self.q)) / self.h\n", " self.inertia.update(x_n, v_n) # x_tilde = x_n + h v_n\n", " return newton_solver(z.copy(), self.energy, self.gradient, self.hessian,\n", " max_iter=iters, do_line_search=True)\n", "\n", " def simulate(self, n_steps=80):\n", " \"\"\"Drop from rest under gravity; return per-step poses and tip height.\"\"\"\n", " z = self.rest_z(); z_prev = z.copy()\n", " states, tip_y = [self._x(z).reshape(self.n, self.dim)], [self.X[self.tip, 1]]\n", " for _ in range(n_steps):\n", " z, z_prev = self.step(z, z_prev), z\n", " U = self._x(z).reshape(self.n, self.dim)\n", " states.append(U); tip_y.append(U[self.tip, 1])\n", " return np.array(states), np.array(tip_y)" ] }, { "cell_type": "markdown", "id": "532fe4cd", "metadata": {}, "source": [ "## The full solve is slow\n", "\n", "A genuinely high-resolution beam (here ~3600 vertices, ~7200 DOFs). We assemble one Backward-Euler system at a deformed state and time the **linear solve** alone and the **gradient + Hessian evaluation** alone — the two halves of every Newton iteration. The solve is the part that grows with mesh size." ] }, { "cell_type": "code", "execution_count": 3, "id": "12ad6545", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:32.875085Z", "iopub.status.busy": "2026-06-09T05:42:32.875034Z", "iopub.status.idle": "2026-06-09T05:42:33.303204Z", "shell.execute_reply": "2026-06-09T05:42:33.302988Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "high-res mesh: 3600 vertices, 6902 triangles, 7200 DOFs\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "full-space eval (grad+Hess): 23.0 ms\n", "full-space linear solve : 12.7 ms\n" ] } ], "source": [ "hi = BeamSim(120, 30) # high-res \"slow\" beam\n", "print(f\"high-res mesh: {hi.n} vertices, {hi.T.shape[0]} triangles, {hi.n*hi.dim} DOFs\")\n", "\n", "# a representative deformed state + a momentum target, so the system is realistic\n", "rng = np.random.RandomState(0)\n", "x_def = (hi.X + 0.05 * rng.randn(hi.n, hi.dim)).reshape(-1, 1)\n", "hi.inertia.update(hi.X.reshape(-1, 1), np.zeros((hi.n * hi.dim, 1)))\n", "z_def = x_def # full space: z == x\n", "\n", "def time_call(fn, inner=1, rep=7):\n", " \"\"\"Min over `rep` batches of `inner` calls each -> robust for sub-ms timings.\"\"\"\n", " best = float(\"inf\")\n", " for _ in range(rep):\n", " t0 = time.perf_counter()\n", " for _ in range(inner):\n", " fn()\n", " best = min(best, (time.perf_counter() - t0) / inner)\n", " return best\n", "\n", "# eval = assemble gradient + Hessian; solve = the linear system, timed in isolation\n", "def assemble_full():\n", " return hi.hessian(z_def).tocsc(), hi.gradient(z_def)\n", "H_full, g_full = assemble_full()\n", "t_eval_full = time_call(assemble_full, inner=1, rep=5)\n", "t_solve_full = time_call(lambda: sps.linalg.spsolve(H_full, -g_full), inner=3, rep=7)\n", "print(f\"full-space eval (grad+Hess): {t_eval_full*1e3:7.1f} ms\")\n", "print(f\"full-space linear solve : {t_solve_full*1e3:7.1f} ms\")" ] }, { "cell_type": "markdown", "id": "60c28b40", "metadata": {}, "source": [ "## Two subspaces, built once\n", "\n", "`simkit.linear_modal_analysis` returns the lowest $k$ vibration modes as a displacement basis $B_{\\text{lma}}\\in\\mathbb{R}^{n\\,\\text{dim}\\times k}$. `simkit.skinning_eigenmodes` returns the Laplacian eigenvector **weights** $W$ and the corresponding **LBS Jacobian** $B_{\\text{skin}}\\in\\mathbb{R}^{n\\,\\text{dim}\\times 6k}$ (each of the $k$ modes carries a $2\\times3$ affine transform = 6 DOFs in 2D). Same $k$, but skinning spends its extra columns buying *rotation*." ] }, { "cell_type": "code", "execution_count": 4, "id": "ff1e7ab9", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:33.304216Z", "iopub.status.busy": "2026-06-09T05:42:33.304164Z", "iopub.status.idle": "2026-06-09T05:42:33.689390Z", "shell.execute_reply": "2026-06-09T05:42:33.689161Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "k = 12 modes\n", " LMA basis: 72 columns (k displacement modes)\n", " SKIN basis: 72 columns (k modes x 6 affine DOFs)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "k = 12\n", "E_lma, B_lma = simkit.linear_modal_analysis(hi.X, hi.T, k*6)\n", "W, E_s, B_skin = simkit.skinning_eigenmodes(hi.X, hi.T, k)\n", "B_lma = np.asarray(B_lma)\n", "B_skin = np.asarray(B_skin)\n", "print(f\"k = {k} modes\")\n", "print(f\" LMA basis: {B_lma.shape[1]:3d} columns (k displacement modes)\")\n", "print(f\" SKIN basis: {B_skin.shape[1]:3d} columns (k modes x 6 affine DOFs)\")\n", "\n", "# show three skinning weight fields W (the partition the affine bones blend over)\n", "fig, axes = plt.subplots(1, 3, figsize=(13, 2.2))\n", "for ax, j in zip(axes, [1, 4, 8]):\n", " tc = ax.tripcolor(hi.X[:, 0], hi.X[:, 1], hi.T, W[:, j], shading=\"gouraud\", cmap=\"RdBu\")\n", " ax.set_aspect(\"equal\"); ax.axis(\"off\"); ax.set_title(f\"skinning weight $W_{{{j}}}$\")\n", "fig.suptitle(\"skinning eigenmode weights = Laplacian eigenvectors\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "344bef1f", "metadata": {}, "source": [ "## The subspace shrinks the *solve*, not the *integration*\n", "\n", "Every Newton iteration is **evaluate** (assemble gradient + Hessian) then **solve** (one linear system). With full integration the reduced model still evaluates the *real* neo-Hookean energy on every element and projects it ($B^{\\top}g$, $B^{\\top}HB$), so its **eval cost is unchanged**. What collapses is the **solve**: from an $n\\,\\text{dim}\\times n\\,\\text{dim}$ sparse system to a tiny dense $r\\times r$ one.\n", "\n", "**Plot 1** — linear-solve time vs. number of skinning eigenmodes, with the full-space solve drawn as a red line towering above. **Plot 2** — the eval (grad+Hess+projection) time, full vs. subspace: essentially equal, because the integration is *not* reduced." ] }, { "cell_type": "code", "execution_count": 5, "id": "6d1d369e", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:33.690414Z", "iopub.status.busy": "2026-06-09T05:42:33.690361Z", "iopub.status.idle": "2026-06-09T05:42:35.115606Z", "shell.execute_reply": "2026-06-09T05:42:35.115391Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " skinning k= 2 (r= 12): solve 0.00234 ms eval 22.8 ms\n", " skinning k= 5 (r= 30): solve 0.00655 ms eval 22.6 ms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " skinning k=10 (r= 60): solve 0.01577 ms eval 23.2 ms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " skinning k=20 (r=120): solve 0.04886 ms eval 24.6 ms\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " skinning k=40 (r=240): solve 0.18301 ms eval 26.1 ms\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABQoAAAGZCAYAAADB4AymAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAvjpJREFUeJzs3Qd4U1UbB/C3e9JCKVDK3nsJyFRBEQREwYkMUdyCCOinoAIiKk6GCg5UUBDEhcpUQGTLBkEEZIOMslu6R77nf+DGJE3bJM26yf/nE0NGb25Obu49ee973hNgMBgMQkRERERERERERH4t0NMrQERERERERERERJ7HQCERERERERERERExUEhEREREREREREQMFBIREREREREREREDhURERERERERERMRAIRERERERERERESmczISIiIiIiIiIiIgYKCQiIiIiIiIiIiIGComIiIiIiIiIiIiBQrLF77//LgEBAera13To0EEaNmwoevLyyy+rz+Ps2bOeXhWfgLZEm/rL69r7/cBFb3JycuS5556TSpUqSWBgoPTs2VN80YwZM9R2dPjwYbe8XtWqVeWBBx5w6jLffvttqV69ugQFBUnTpk2dumwi8h6+3JfU477XVji+4HPD8cbd8J7x3klffQVX94k3btwooaGhcuTIEaf1J6y1ka19YE9+P72JO37XtG7dWvXvyT1Yo9CPaTtF7RIeHi61a9eWwYMHy+nTp53yGosWLbJrp4Gd/5NPPinNmzeXkJAQtV7FdeLECbUO27dvL/ayiMj7ff7556rDeNddd8kXX3whw4YNE38xdepUj/ygc8Svv/6qOnzt2rWT6dOny+uvv+7U5aelpal9PwMTRP7Tl8zLy1PrdNttt6mTRVFRUeqE8KuvvioZGRlOWR9fNHv2bJk0aZL4Km37fPfddwvchjdv3pzvsbVr10qvXr2kXLlyEhYWpoJCjz32mBw9ejRfMNWWizcH6/TixRdflPvuu0+qVKnitv6Eq+ipz+bI73pne/7552XKlCly6tQpj62DPwn29AqQ573yyitSrVo11YFas2aNfPjhh2pHsGvXLomMjCzWsrEcfKFt3ang+Z9++qk0btxYnRXat2+fOCNQOHbsWHVwZ8YKeYv09HQJDuYu2BV+++03qVChgkycOFF8Wf/+/aV3797qx4tppzM+Pl4XZ7fxOSHj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he8XvrtYBt7nAw88oL73WN7XX39dZBvZ8xuvsH2xtc+wOL9PrLUXtlv0TV966aUCPw9yngD8z9agIhH5FtSvQZYWCm4jm42I3AtngzFboLW6QkRERET0H9RCRGkebQQa5YcSBhhxsWbNGpXh6UvvCxnYqHOJDF9yLdYoJCIicgPLOkcIDmLoEuoPEREREVHhMIEhhsl706Qk3tS3xLBvDMnHEGKUgfIlKFeBcl4MEroHaxQSERG5AeoKodYMrtHBRV0a1ONDXSEiIiIiKhzqm5tOvufvnnrqKRUsRM1Q1P/DLOfr1q1TAdXCJnLSI9TlJPdhoJCIiMgNUGB8zpw5apbFsLAw1alDR65WrVpsfyIiIiKyCyY/wcSHmOE9IyNDTYqCjEJk3hEVB2sUEhEREREREREREWsUEhEREREREREREYceFyovL09OnDghJUqUkICAAG4vRERE5JMMBoOkpKSo2SQDA/1nrjv29YiIiMgfGOzo67FGYSEQJKxUqZKzPx8iIiIir3Ts2DGpWLGi+Av29YiIiMifHLOhr8dAYSGQSag1JKYYd+XZ7KSkJClbtqxXn8XXy3q6C9uDuI0Qka8ca5KTk9XJUa3v4y/Y1/sP+zX5sU2oKNxGiMgX+3oMFBZCG26MIKGrA4WY1hyv4c0BOL2sp7uwPYjbCBH52rHG30qtsK/3H/Zr8mObUFG4jRCRL/b1GO0hIiIiIiIiIiIiBgqJiIiIiIiIiIiIgUIiIiIiIiIiIiJioJCIiIiIiIiIiIgYKCQiIiIiIiIiIiKFk5kQERERERERERERA4VERERERERERETEQCERERERERERERExUEhEREREREREREQMFBIREREREREREZESfOWKCnJNRIRkbt8uaVFRLmukvLw8yblwQdKOH5fAQO+dX0Yv6+kubA/iNkJEvnKsyUxNddmyiYiIiEg/GCgswqzKVeTso4/JWTd8GJdFH/Synu7C9iBuI0TEYw0RERER+QKmhREREREREREREREDhURERERERERERMShx0Xqd/SILFmyRKJcXKPwwoULUqpUKa+u/aeX9XQXtgdxGyEiXznWpKJG4Q03uGz5RERERKQPflGjsFevXvL777/LTTfdJN99951df7s1PV3CmjaVyJgYl/4ISDl9WiLLlfPqAJxe1tNd2B7EbYSIfOVYk5Oc7LJlExEREZF++EW05+mnn5Yvv/zS06tBRERERERERETktfwiUNihQwcpUaKEp1eDiIiIiIiIiIjIa3l9oHDVqlXSo0cPSUxMlICAAPnxxx/zPWfKlClStWpVCQ8Pl1atWsnGjRs9sq5ERERERERERER65fU1ClFcu0mTJjJw4EC544478j0+d+5cGT58uHz00UcqSDhp0iTp0qWL7N27V8qWLWvXa2VmZqqLJvlqvR7UB8LFVbRlu/I1/Gk93YXtQdxGiMhXjjU8thMRERGRLgKFXbt2VZeCTJgwQR555BF58MEH1W0EDBcuXCiff/65jBgxwq7XGj9+vIwdOzbf/UlJSZKeni6udubMGdEDvaynu7A9iNsIEen9WJOSkiLe5sMPP1SXw4cPq9sNGjSQ0aNHG/uFGRkZ8swzz8jXX3+tTvTiRPHUqVOlXLlyHl5zIiIiIv3y+kBhYbKysmTLli0ycuRI432YEbBTp06yfv16u5eH5SA70TSjsFKlSiozMcbFsx7jB0CZMmW8ejZhvaynu7A9iNsIEfnKsSYiIkK8TcWKFeWNN96QWrVqicFgkC+++EJuv/122bZtmwoaDhs2TJ0c/vbbbyU2NlYGDx6sRp+sXbvW06tOREREpFu6DhSePXtWcnNz8505xu09e/YYbyNwuGPHDjWMGZ1OdCjbtGmTb3lhYWHqQkRERESehRrVpl577TWVYfjHH3+o/txnn30ms2fPlhtvvFE9Pn36dKlXr556vHXr1h5aayIiIiJ903Wg0FbLli2z6/mYHAUXBCGBQ4/Ncagt24Psw+8MERWXPw49NoU+GU704qQvTvZiREl2drY6GaypW7euVK5cWY0qKShQyHrUBWPtZbYJ2Y/fGyLyxXrUug4UxsfHS1BQkJw+fdrsftxOSEhweLmDBg1SFww9xlAWDj2+gkNtzbE9qCjcRoiouPx56DHs3LlTBQZRjzA6OlrmzZsn9evXl+3bt0toaKiULFky36iSU6dOFbg81qMuGk9usU3IfvzeEJEvnRTWdaAQHcTmzZvL8uXLpWfPnsYONW6jTo2zoGPujpp87nodf1lPd2F7ELcRItL7scZbj+t16tRRQcFLly7Jd999JwMGDJCVK1c6vDzWoy4YT26xTch+/N4QkS+eFPb6QOHly5dl//79xtuHDh1SHca4uDg1vASTj6DT2KJFC7n22mtl0qRJaliKNguysz44V6aB6iVlXS/r6S5sD+I2QkS+cqzx1mM7TgrXrFlT/Rsnhzdt2iSTJ0+We++9V01qd/HiRbOswqJGlRRUj5onhd3fFnrCNiFuI0TkTyeFvT5QuHnzZunYsaPxtjYrMYKDM2bMUB1FRF9Hjx6thpo0bdpUlixZkm+CE3uwRmHhmFrP9iD78DtDRL40HMWTENBEnUEEDUNCQtQokjvvvFM9tnfvXjl69KjVCeuIiIiIyEcChR06dBCDwVDoczDM2JlDjVmj0Dqm1rM9yD78zhCRLw5HcRcME+7atasaQYJAJmY4/v333+WXX35RNaQfeughdQIZo0xiYmLkqaeeUkFCznhMRERE5MOBQm/A4SieaQ+9YHsQtxEi0vuxxhuP60lJSXL//ffLyZMnVWCwcePGKkh48803q8cnTpyo1hsZhcgy7NKli0ydOtXTq01ERESkawwUEhEREZHX+eyzzwp9PDw83FguhoiIiIicg4FCG3Ayk//awfTa37E9iNsIEfnKsYbHdiIiIiICBgqt4GQmhePEDGwPsg+/M0RUXJzMhIiIiIjcgYFCKziZiXWcmIHtQfbhd4aIisufJzMhIiIiIvdjoNAGnMzEM+2hF2wP4jZCRHo/1vC4TkRERESqX8hmICIiIiIiIiIiImYU2oCTmfzXDqbX/o7tQdxGiMhXjjU8thMRERERMFBoBSczKRwnZmB7kH34nSGi4uJkJkRERETkDgwUWsHJTKzjxAxsD7IPvzNEVFyczISIiIiI3ImBQhtwMhPPtIdesD2I2wgR6f1Yw+M6EREREal+IZuBiIiIiIiIiIiIGCgkIiIiIiIiIiIiDj22BWc9/q8dTK/9HduDuI0Qka8ca3hsJyIiIiJgjUIrOOtx4TiDK9uD7MPvDBEVF2c9JiIiIiJ3YKDQCs56bB1ncGV7kH34nSGi4uKsx0RERETkTgwU2oCzHnumPfSC7UHcRohI78caHteJiIiISPUL2QxERERERERERETEQCERERERERERERExUEhEREREREREREQMFBIREREREREREREnM7F9xkFcXEVbtitfw5/W013YHsRthIh85VjDYzsRERERAWc9tmLKlCnqkpubq24nJSVJenq6y7eYM2fO6GKr1Mt6ugvbg7iNEJHejzUpKSkuXT4RERER6QMDhVYMGjRIXZKT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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mode_counts = [2, 5, 10, 20, 40]\n", "solve_red, eval_red = [], []\n", "for kk in mode_counts:\n", " _, _, Bk = simkit.skinning_eigenmodes(hi.X, hi.T, kk)\n", " Bk = np.asarray(Bk)\n", " def assemble_red(Bk=Bk):\n", " x = x_def\n", " g = hi.inertia.gradient(x)\n", " g = g + hi.psi.gradient(x, hi.p)\n", " g = g + hi.gravity.gradient(x) + hi.pin.gradient(x)\n", " H = hi.inertia.hessian(x) + hi.pin.hessian(x)\n", " H = H + hi.psi.hessian(x, hi.p)\n", " return Bk.T @ (H @ Bk), Bk.T @ g\n", " Hz, gz = assemble_red(Bk) # assemble once\n", " te = time_call(assemble_red, inner=1, rep=5) # eval (full integration + projection)\n", " ts = time_call(lambda Hz=Hz, gz=gz: np.linalg.solve(Hz, -gz), inner=200, rep=7) # solve, isolated\n", " eval_red.append(te * 1e3); solve_red.append(ts * 1e3)\n", " print(f\" skinning k={kk:2d} (r={Bk.shape[1]:3d}): solve {solve_red[-1]:8.5f} ms eval {eval_red[-1]:6.1f} ms\")\n", "\n", "mc = np.array(mode_counts)\n", "fig, (axL, axR) = plt.subplots(1, 2, figsize=(13, 4.2))\n", "\n", "axL.plot(mc, solve_red, \"-o\", color=SKIN_C, lw=2.5, ms=7, label=\"subspace solve\", zorder=3)\n", "axL.axhline(t_solve_full * 1e3, color=FULL_C, lw=2.5, ls=\"-\", zorder=4,\n", " label=f\"full solve ({t_solve_full*1e3:.0f} ms)\")\n", "axL.set_yscale(\"log\"); axL.set_xticks(mc)\n", "axL.set_xlabel(\"number of skinning eigenmodes $k$\"); axL.set_ylabel(\"linear-solve time (ms)\")\n", "axL.set_title(\"Plot 1: the subspace solve is orders of magnitude faster\")\n", "axL.legend(loc=\"center left\"); axL.grid(True, which=\"both\", color=\"0.9\")\n", "\n", "axR.plot(mc, eval_red, \"-o\", color=SKIN_C, lw=2.5, ms=7, label=\"subspace eval\", zorder=3)\n", "axR.axhline(t_eval_full * 1e3, color=FULL_C, lw=2.5, label=f\"full eval ({t_eval_full*1e3:.0f} ms)\")\n", "axR.set_xticks(mc); axR.set_ylim(0, max(t_eval_full * 1e3, max(eval_red)) * 1.25)\n", "axR.set_xlabel(\"number of skinning eigenmodes $k$\"); axR.set_ylabel(\"grad+Hess+project time (ms)\")\n", "axR.set_title(\"Plot 2: evaluation is NOT reduced (full integration)\")\n", "axR.legend(loc=\"lower right\"); axR.grid(True, color=\"0.9\")\n", "fig.tight_layout(); fig.savefig(\"media/17_timing.png\", dpi=130, bbox_inches=\"tight\"); plt.show()" ] }, { "cell_type": "markdown", "id": "3a7172d3", "metadata": {}, "source": [ "## Fast solve — but does it look right?\n", "\n", "Cost is only half the story. We now run the **same** dynamic sag in all three spaces on a softer beam (so the free end swings through a large angle) and play them side by side: the full-order reference, LMA, and skinning. Watch the tip.\n", "\n", "We build the three simulators **explicitly** — full ($B=I$), LMA ($x = X + B_{\\text{lma}}z$, so $q = X$), and skinning ($x = B_{\\text{skin}}z$, so $q = 0$) — and run each from rest." ] }, { "cell_type": "code", "execution_count": 6, "id": "39a022a5", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:35.116598Z", "iopub.status.busy": "2026-06-09T05:42:35.116547Z", "iopub.status.idle": "2026-06-09T05:42:43.564924Z", "shell.execute_reply": "2026-06-09T05:42:43.564643Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "final tip height: full -3.48 LMA -0.56 skin -3.01\n", "LMA under-rotates: tip only reaches 16% of the full droop\n", "area ratio [min,max]: full (np.float64(0.81), np.float64(1.23)) LMA (np.float64(0.98), np.float64(1.02)) skin (np.float64(0.82), np.float64(1.17))\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx, ny = 50, 11\n", "full = BeamSim(nx, ny)\n", "Xs, Ts = full.X, full.T\n", "El, Bl = simkit.linear_modal_analysis(Xs, Ts, k)\n", "Ws, Es2, Bs = simkit.skinning_eigenmodes(Xs, Ts, k)\n", "lma = BeamSim(nx, ny, B=np.asarray(Bl), q=Xs.reshape(-1, 1)) # x = X + B z\n", "skin = BeamSim(nx, ny, B=np.asarray(Bs)) # x = B z\n", "\n", "st_full, ty_full = full.simulate(80)\n", "st_lma, ty_lma = lma.simulate(80)\n", "st_skin, ty_skin = skin.simulate(80)\n", "\n", "def area_ratio(U):\n", " a = lambda V: 0.5 * ((V[Ts[:,1],0]-V[Ts[:,0],0])*(V[Ts[:,2],1]-V[Ts[:,0],1])\n", " - (V[Ts[:,1],1]-V[Ts[:,0],1])*(V[Ts[:,2],0]-V[Ts[:,0],0]))\n", " r = a(U) / a(Xs); return r.min(), r.max()\n", "print(f\"final tip height: full {ty_full[-1]:+.2f} LMA {ty_lma[-1]:+.2f} skin {ty_skin[-1]:+.2f}\")\n", "print(f\"LMA under-rotates: tip only reaches {abs(ty_lma[-1]/ty_full[-1])*100:.0f}% of the full droop\")\n", "print(f\"area ratio [min,max]: full {tuple(round(v,2) for v in area_ratio(st_full[-1]))}\"\n", " f\" LMA {tuple(round(v,2) for v in area_ratio(st_lma[-1]))}\"\n", " f\" skin {tuple(round(v,2) for v in area_ratio(st_skin[-1]))}\")\n", "\n", "panels = [\n", " {\"states\": st_full, \"T\": Ts, \"title\": f\"full ({full.n*full.dim} DOFs)\"},\n", " {\"states\": st_lma, \"T\": Ts, \"title\": f\"LMA ({Bl.shape[1]} DOFs) -- can't rotate\"},\n", " {\"states\": st_skin, \"T\": Ts, \"title\": f\"skinning ({Bs.shape[1]} DOFs) -- rotates\"},\n", "]\n", "fig, anim = utils.animate_meshes_grid(panels, lims=((-2.5, 2.5), (-4.2, 0.6)), fps=20,\n", " suptitle=\"same sag in three spaces: LMA stalls, skinning tracks the full beam\")\n", "utils.show_video(fig, anim, \"media/17_dynamics.mp4\", fps=20)" ] }, { "cell_type": "markdown", "id": "4dca312a", "metadata": {}, "source": [ "## The decisive test: rotate the rest shape a full turn\n", "\n", "The dynamics hinted at it; this proves it. Take the **rest** beam, rotate it by $\\theta$ through a full $360^\\circ$, and ask each subspace to **reproduce** that rigid rotation: project the rotated mesh into the subspace in the **mass norm** (`project_into_subspace` with $M$), reconstruct $x = Bz+q$, and measure the relative error $\\lVert Bz+q - x_\\theta\\rVert_M / \\lVert x_\\theta\\rVert_M$.\n", "\n", "A pure rotation is a *rigid* motion — no strain, the lowest-energy thing a body can do — yet **LMA cannot represent it**: its columns are fixed displacement fields, and the error grows with the angle, peaking when the shape is upside-down. **Skinning** carries a rotation in every bone's affine block, so it reproduces the turn to machine precision at *every* angle." ] }, { "cell_type": "code", "execution_count": 7, "id": "fdcf3a32", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:43.567029Z", "iopub.status.busy": "2026-06-09T05:42:43.566963Z", "iopub.status.idle": "2026-06-09T05:42:43.588925Z", "shell.execute_reply": "2026-06-09T05:42:43.588724Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LMA reconstruction error: 0 -> 0.342 (peak at 180 deg) -> 0\n", "skin reconstruction error: max 7.2e-10 (machine zero, all angles)\n" ] } ], "source": [ "Mk = sps.kron(simkit.massmatrix(Xs, Ts), sps.identity(2)).tocsc()\n", "q_lma = Xs.reshape(-1, 1)\n", "q_skin = np.zeros((Xs.size, 1))\n", "xr = Xs.reshape(-1, 1)\n", "\n", "def reconstruct(y, B, q):\n", " z = simkit.project_into_subspace(y - q, B, M=Mk)\n", " return B @ z + q\n", "\n", "def rel_err(rec, y):\n", " d = rec - y\n", " return float(np.sqrt((d.T @ Mk @ d)[0, 0]) / np.sqrt((y.T @ Mk @ y)[0, 0]))\n", "\n", "angles = np.linspace(0, 360, 73)\n", "targets, rec_lma, rec_skin, err_lma, err_skin = [], [], [], [], []\n", "for deg in angles:\n", " th = np.deg2rad(deg)\n", " R = np.array([[np.cos(th), -np.sin(th)], [np.sin(th), np.cos(th)]])\n", " y = (Xs @ R.T).reshape(-1, 1)\n", " rl = reconstruct(y, np.asarray(Bl), q_lma)\n", " rsk = reconstruct(y, np.asarray(Bs), q_skin)\n", " targets.append(y.reshape(-1, 2)); rec_lma.append(rl.reshape(-1, 2)); rec_skin.append(rsk.reshape(-1, 2))\n", " err_lma.append(rel_err(rl, y)); err_skin.append(rel_err(rsk, y))\n", "err_lma, err_skin = np.array(err_lma), np.array(err_skin)\n", "print(f\"LMA reconstruction error: 0 -> {err_lma.max():.3f} (peak at 180 deg) -> 0\")\n", "print(f\"skin reconstruction error: max {err_skin.max():.1e} (machine zero, all angles)\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "2cbf52cb", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:43.589798Z", "iopub.status.busy": "2026-06-09T05:42:43.589745Z", "iopub.status.idle": "2026-06-09T05:42:47.714663Z", "shell.execute_reply": "2026-06-09T05:42:47.714397Z" } }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fig, (axA, axB, axR) = plt.subplots(1, 3, figsize=(15, 4.4),\n", " gridspec_kw={\"width_ratios\": [1, 1, 1.15]})\n", "\n", "# --- panel A: LMA reconstruction (target ghosted underneath) ---\n", "utils.setup_axes(axA, (-3.0, 3.0), (-3.0, 3.0), title=\"LMA reconstruction\")\n", "mtA = utils.PolyMeshArtist(axA, targets[0], Ts, facecolor=\"0.9\", edgecolor=\"0.65\", lw=0.4)\n", "ml = utils.PolyMeshArtist(axA, rec_lma[0], Ts, facecolor=\"none\", edgecolor=LMA_C, lw=1.0)\n", "axA.plot([], [], color=\"0.65\", lw=2, label=\"target (rotated rest)\")\n", "axA.plot([], [], color=LMA_C, lw=2, label=\"LMA\")\n", "axA.legend(loc=\"upper right\", fontsize=8)\n", "\n", "# --- panel B: skinning reconstruction (target ghosted underneath) ---\n", "utils.setup_axes(axB, (-3.0, 3.0), (-3.0, 3.0), title=\"skinning reconstruction\")\n", "mtB = utils.PolyMeshArtist(axB, targets[0], Ts, facecolor=\"0.9\", edgecolor=\"0.65\", lw=0.4)\n", "msk = utils.PolyMeshArtist(axB, rec_skin[0], Ts, facecolor=\"none\", edgecolor=SKIN_C, lw=1.0)\n", "axB.plot([], [], color=\"0.65\", lw=2, label=\"target (rotated rest)\")\n", "axB.plot([], [], color=SKIN_C, lw=2, label=\"skinning\")\n", "axB.legend(loc=\"upper right\", fontsize=8)\n", "\n", "# --- panel R: reconstruction error vs rotation angle ---\n", "trace = utils.TracePlot(axR, angles, {\"LMA\": err_lma, \"skinning\": err_skin},\n", " colors={\"LMA\": LMA_C, \"skinning\": SKIN_C},\n", " xlabel=\"rest-shape rotation (deg)\", ylabel=\"reconstruction error (mass norm)\",\n", " title=\"LMA error peaks upside-down; skinning stays ~0\")\n", "\n", "def update(i):\n", " mtA.update(targets[i]); ml.update(rec_lma[i])\n", " mtB.update(targets[i]); msk.update(rec_skin[i])\n", " trace.update(i)\n", " return ()\n", "\n", "anim = FuncAnimation(fig, update, frames=len(angles), interval=1000/18, blit=False)\n", "fig.savefig(\"media/17_rotation_error.png\", dpi=130, bbox_inches=\"tight\")\n", "utils.show_video(fig, anim, \"media/17_rotation_error.mp4\", fps=18)" ] }, { "cell_type": "markdown", "id": "db33604d", "metadata": {}, "source": [ "## Does adding modes fix it? Integrate the error over a full turn\n", "\n", "The curve above is for *one* fixed basis. The real question is how the error behaves as we **grow the subspace**. For 20 different subspace sizes we integrate the reconstruction error over the entire $360^\\circ$ rotation — its average over all angles — and plot it against the number of subspace DOFs.\n", "\n", "Adding modes lets LMA chase the rotation a little better, so its turn-averaged error decreases — but a *linear* basis can never **contain** a rotation, so the error **plateaus far from zero** no matter how many modes we spend. Skinning carries a rotation inside every bone's affine block, so it is exact at **every** size — even a single bone (6 DOFs) reproduces the full turn to machine precision." ] }, { "cell_type": "code", "execution_count": 9, "id": "ae0dd98e", "metadata": { "execution": { "iopub.execute_input": "2026-06-09T05:42:47.716352Z", "iopub.status.busy": "2026-06-09T05:42:47.716288Z", "iopub.status.idle": "2026-06-09T05:42:48.652779Z", "shell.execute_reply": "2026-06-09T05:42:48.652574Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LMA : up to 120 DOFs -> turn-averaged error plateaus at 0.024 (never rotates)\n", "skin: up to 120 DOFs -> turn-averaged error max 5.4e-08 (exact at every size)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2UAAAHpCAYAAAACm5TZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAvCVJREFUeJzs3Qd8U9XbB/Cne1HKLKXsJXsvQZANIoKACigiSxyAIKAMfUFwAQ5c8AcXIk4EAQUVEGTL3nsWKLNsWkp33s/vwI1JmrRJmzTr98XY5ia5Obnn3vQ+95zzHB+dTqcTIiIiIiIicgpf57wtERERERERAYMyIiIiIiIiJ2JQRkRERERE5EQMyoiIiIiIiJyIQRkREREREZETMSgjIiIiIiJyIgZlRERERERETsSgjIiIiIiIyIkYlBERERERETkRgzIi8kj9+vWTsmXLOrsYbo/b0VhCQoI8++yzEhUVJT4+PvLyyy/nentiPRMnTrRDbVFOYfujHq5cucKNaMGpU6fUNpozZw63EZEDMCgjoizhDzD+EFu6bd682eO24J9//ulWJ8kHDx5U5cVJEznWu+++q46JF198Ub777jvp06dPnmzy8+fPqzrevXt3nrwfERHlLf88fj8iclNvvvmmlCtXLtPyihUriiv68ssvJSMjI8dB2YwZM9wmMENQNmnSJGnZsiVbBx3sn3/+kfvvv1/eeOMNyUsIylDHaGWrU6dOnr43EZQpU0bu3LkjAQEB3CBEDsCgjIis0rFjR2nQoIFNWystLU0FRoGBgZkeu337toSFheV46+t0OklKSpKQkBCzj7vziUNut423c+T2i4uLk2rVqomnwDGE49PXlx1nKGvoGREcHMzNROQg/BYmIruON/jggw/k448/lgoVKkhQUJC+ax0ew+9PPfWUFCxYUJo1a6YP3N566y3989ES8Nprr0lycrLR+rH8kUcekeXLl6vgEMHY559/bvXYHcPyffHFF/r3a9iwoWzbts3odWglA8NumhoEmfh81atXVycoxYoVk+eff16uX79u9P54Hj53dHS0hIaGSqtWrdTnR5nwHqbdQ9euXSuDBw+WyMhIKVmypHrs9OnTalnlypXV5y1cuLA88cQTRt0U8XosA7yHVt41a9bon/PXX39J8+bNVaASHh4unTp1kgMHDmTaZosXL5YaNWqoz4WfixYtElv873//U9sF2xWfe8iQIXLjxg3940OHDpV8+fJJYmJiptc++eSTapxWenq6TeXGtsQ6T5w4IQ8//LB6Xu/evS2W0Zptag62J7ZrTEyM/PHHH/rtjNdpdWi6Du01hnWRE3g99lPo37+//r21sT2m+5QGLae4mZbn559/lv/7v/+TEiVKqH3z1q1b+u147tw56dq1q/q9aNGi8sorrxjViTk4LsuXL2/2sSZNmhhdzPn777/VsV+gQAH1HqgHHO85cezYMXnsscfUfoN9FsdNr1695ObNm9mOgbI0jg9jynr06CH58+dX+8bw4cNV4Goou8+gbed58+ap5Sgf9uEuXbpIbGys0brWr1+v9r/SpUur46ZUqVIyYsQI1SJl6vDhw6psqBfsu3jf119/3eg5qL8BAwao7yWsD8fj7Nmzrdqe2X0u0+2pfU5zN9Nxk9Z+BxF5M7aUEZFVcKJjOggef3xx4mLom2++UScxzz33nDopKFSokP4xnHxUqlRJjctBSxcgacK3334rjz/+uIwaNUq2bNkikydPlkOHDmUKCo4cOaJO3hEEDRo0SJ002OrHH3+U+Ph4tQ6U/7333pPu3bvLyZMnVesalqOrGE5QMGbIFB7HSQlOjocNG6ZO0qdPny67du2SjRs36lvoxo0bp9bduXNn6dChg+zZs0f9ND3B0yBQwMnWhAkTVEsPIFj8999/1YkmTjhxUjRz5kx1oo0ADyfUDz74oCrHp59+qk6gqlatql6r/cRn6Nu3r3rvqVOnqoAI68DJF8qsnTytWLFCneCiFQjb/+rVq+ozagFidnCCi+51bdu2VeOtUFd4H3wGbbv07NlTBbwIarRAElCmJUuWqMDAz8/PpnJrgT2eh8cQdGO7WGLNNjUH2xNlwgkzXod9FVBnjob3Rvdh7Bs4rnByC02bNs3R+nARBK1jCLhw8UNryUbwhe3YuHFjtR1XrlwpH374obqAgTq1BPX6zDPPqG2rBY9aAIwxp++//766j5NwBHC1atVSnwffD8ePH1f7h61SUlJUWVH+l156SQU+CEiWLl2qLgRERETkaNsg6MG+hWMAZcdxhQsuc+fOtfkzvPPOO+o7ZsyYMaqFFRdzcHxgXKDWwj9//ny1b2P74rt069at8tlnn8nZs2fVY5q9e/eqesdxhH0AZcSFCBw3eB+4dOmS6lqL98QFEOybCIYGDhyoAu+sktLkpG60Y8IQtv3IkSPVxSWNLccykVfTERFl4ZtvvkH0ZPYWFBSkf15MTIxalj9/fl1cXJzROt544w312JNPPmm0fPfu3Wr5s88+a7T8lVdeUcv/+ecf/bIyZcqoZcuWLbOqvvr27ateY1q+woUL665du6Zf/ttvv6nlS5Ys0S8bMmSIWmZq/fr1avkPP/xgtBxlMlx+8eJFnb+/v65r165Gz5s4caJ6Hspmun2bNWumS0tLM3p+YmJipjJs2rRJPX/u3Ln6ZfPnz1fLVq9ebfTc+Ph4XYECBXSDBg0yWo7yRUREGC2vU6eOrnjx4robN27ol61YsUKt13A7moP6DgwM1LVv316Xnp6uXz59+nT1+tmzZ6v7GRkZuhIlSugee+wxo9f/8ssv6nnr1q2zudzYlnjt2LFjddawdptagm3RqVMno2VaHWIfM4T6MK0X0/0S8BwcI1nZtm2beh7ey1yZDPcpTYsWLdTNtDzly5fPtB207fjmm28aLa9bt66ufv36WZbt5s2b6rtg1KhRRsvfe+89nY+Pj+706dPq/kcffaTe4/Lly7rc2rVrl1oX9n1LtGPe3DYz3ebad1SXLl2Mnjd48GC1fM+ePVZ/Bm07Y1+/detWpv38k08+yXJ/nDx5stF2gwcffFAXHh5utEw7pjQDBw5Ux/CVK1eMntOrVy913Jh7L401nyur7amV5ZFHHtHly5dPd+DAAZuPZSJvx+6LRGQVtHCg9cjwhquwptDaYqn14IUXXsiUUANwZdWQ1gqBFhVDSDSCq625gav66D6p0Vod0FKWHVy5xhX4du3aqVZD7Va/fn3V3Wf16tXqeatWrVKtN2j9MoQr+pag5U9rJdIYjpdLTU1VrVdIrILuRTt37sy2vKgjXLlG66JhefE+aA3RynvhwgV19R5Xsw1bGPA5rRk/hRYVtFzgSrzh2CR8JnQD0+oRV/DRQoZ6R2p5Dbp5oSud1qXV2nIbyqolx57b1BOgni2NxTQ9RnF8ZHdsoI4x5vSXX37Rt4Br9YqWG3TNA2xj+O2333KchEej7afozmyuO2xOocutuWNW+66y5TOg9RBd9TToDVC8eHH9usCwHtBCjv0cLaDYjmhFgsuXL8u6detUt0RtW2q0rtV4/q+//qpa5vG74XGD70z0dMhq/7ZH3aAFFi2V6EmgfW/k5Fgm8lYMyojIKo0aNVJdbwxvGMNkylyGRkuPoXsTTuJNMziiKxJOEvC4teu2lulJjRagmY4JszSGBSc36JqDwNPwhiADXZS0zwWmnwtdOQ0Dwuw+G8aVoMsaxpmgO1GRIkXUe+EkRxs3k115oXXr1pnKi+6KpuVF11JT1nQR1V5v+lx0i8NYI8N6RFCMz/X777+r+9huOElFsKadYFpbbo2/v7/V3Sxzu009gaXjCOOyTC+oYH+15thAvWK81KZNm9R9dK3bsWOHWm74nAceeEB1WcaYJ3QhRSCXkyAAnwEXc7766itVhwg8cOEot3Voegyg6ya+o7TxgrZ8BtN1Yf/Gd4Lh2MMzZ86obrv4btDG8bVo0UI9pn0WLSjGOE9LELhhH8Z4WdNjBt2QwfS4MZTbulm2bJnqvoxu27gwp7H1WCbyZhxTRkR2ZekKfFaPGSbSyOm6rWXaGqUxvMJvCU5QEJD98MMPZh/Pzfgic58NV+kxRg8tUEiYgNYBbCucMFlzsqQ9B2M6EOiaQjCT19BygjEkOOFD0heMiUGgZHjybmu5EVxZmz0wt9vUlv03uwQZ9pLV+5vb3y0dR5aODWughQbj8VCvaOnBT9SJ4dhBvC9afNA6gtZTnMijNQ0n7DhBt/X9Md4NAQ1ad/B6jK3UxoIhSLdHvZiuw56fAeVAa/S1a9fUuLMqVaqoRBgYG4fPZcv+qD336aefVi2h5mC8mCW5+VwYV4vkOvgsb7/9tst/BxG5Kh4NROTUeW/wRxtXU7XEFNqAdVz1xePOYOlkDlfN0VUPV5SzChC1cmOgvGGrBLrKWdPqoFmwYIE6wcLJpwaJQgwzGmZXXkAgiZbN7MqrXdU2hIQd2dFej+caZuFDl0acsJm+N5IpfPLJJyr5AE78EKQhWLO13Dlh7Ta1hdb6aboO05be3MjqwgXe31z58f6WsiLaG4IJJIpAF99p06apekXXR2ThNIRArU2bNuqG5yHpDzIIIhjISV3XrFlT3ZBNEglccGzOmjVLBQc5qRccA4bHLI5hfEcZJqOw9jOYHk+48IP1acHRvn375OjRoyrREbo6atDlz5BWh/v377dYblwQQldJBHo5PWZyUje4oIJESejZ8NNPP2W6OOLIY5nI07D7IhE5DVKYA7KSGcIJASBtsjNoc1yZnswhmMBJD8ZOmMIYMu35OKnBFWBkGDOELI22wNVp0xY8ZGYzvdJvqbzo0oXxPji5wvgpc12eAONcMCExTg4Nu3/h5BAZCbODky10VUSmOsPyfv3112p9pvWIVjFkzcP74Yo8tmtOyp0T1m5TW2gnnmhp0GB96EpmL5bqWHt/tA4hCNZgbI9p+nVHQ70icym6FCLbqGHrJ6BFyJQ2EbbhFBhI/Y5ufVlBQI9jzhCCMwQF2rqwD6Fro2G9aFM3WKJNh2G4bwDGzNnyGQAZG5Hp1fCCAMZvauvSWp8M90f8jgsWpgEXsqwitb3pdtFei3Wh2yDGlZkL3rI7Zmz5XKZjEBFYIlOuua7ZjjyWiTwNW8qIyCpI6oGTJVPoqpTTq/G1a9dWrRY4ecXJJsZSICU0TtYxV5K5MWt5AYk7AN2hcFKBEx50b0P5kBIfXaSQGKN9+/YqRTWuiKOFACdTGMyPMRmY3witMZib6KGHHlInqdiGOEm0trsmWh7Q7Qdd7DBwHuN10FJnOg0BTp5QRqSbRhCE7nzodoSr0wgM+/TpI/Xq1VOfASd4OLFDFyW0KmiBIj4Tgick20BCAZyk4YQU8xwZJuUwB+vEWBKMKcFnxWdGqxlOfpEiHV2qDKEsGFuDq/A44TM9ecdJnLXltpW129QW2EZo6cM2wHbD+CDMBWYaNOQGAi+0RqAVCC0iCNKQKAGtOhgHhBN+bHsEuBjP9f333+uDxbyizROHVPtakGAIqdYRIGE/Q+sqxhNhH0FXQy3JC6DVHMdaVvO7/fPPPyrtO7pH3nfffWpbo15N3xfbZsqUKeon5kvD+yOIsAQtu9oxi30D2xHdbPFdZctnAOwHWIYxXWj9x8Un7PdIgAPorog6wvZCl0Xs9wiqzLWm44IH1oXjASnxUe8Ym4bjAd9FgM+JVi3sF3gP7N/YH5HgA/u4ucDL1roxhPdG4IntjZT9uGkwPg7f4Y48lok8jrPTPxKR+6bEN0yPrKVLfv/99zOtQ0s3bS7dcmpqqm7SpEm6cuXK6QICAnSlSpXSjRs3TpeUlJRtKvKcpMQ3Vz7T9NhITf/SSy/pihYtqlJTm35VfvHFFypNeEhIiEpTXbNmTd3o0aN158+fN1rH+PHjdVFRUep5rVu31h06dEil5H/hhRcybV+kPDd1/fp1Xf/+/XVFihRRaaY7dOigO3z4sNkU6F9++aVKde7n55cpDTt+x2uRgjo4OFhXoUIFXb9+/XTbt283Wsevv/6qq1q1qkpvXq1aNd3ChQvNpnC3BCnwq1SpouqxWLFiuhdffFF9BnNef/11Vc6KFStaXJ815Ub5wsLCdNayZZuaY2k/PHHihK5t27Zq2+Gzv/baa7q///7bbinxtekbUC+YbsE0NfmHH36oUrDj/R944AG1jSylxDeXRt7SdtSOXWv17t1bPR/bwtSqVat0jz76qC46OlpNoYCfmCbj6NGjRs/D6w3Lbc7Jkyd1AwYMUPsE9o1ChQrpWrVqpVu5cqXR85AGHqnisQ/hWO3Ro4eawsFSSvyDBw/qHn/8cfXcggUL6oYOHaq7c+eOTZ9B284//fST+i6LjIxU3wHYb0xT2uP9sK2wL2KfRIp4pN83l3p+//79um7duqkU8/jMlStXVt8xhi5duqSm9MD3KI5DfP+0adNGfWdlxZrPZZoSP6u/Dab7uLXfQUTezAf/c3ZgSETkDdAaiC4+GO+CViIi8jxo4UMrP1rP0XJORGQNjikjInIADIA3pY2da9myJbc5ERER6XFMGRGRAyD7HCZRxTgbjK/YsGGDyk6GcWgYR0FERESkYVBGROQASHuNDIzvvfeeyhSnJf8wnceHiIiIiGPKiIiIiIiInIhjyoiIiIiIiJyIQRkREREREZETMSgj8iATJ05UExNfuXIlV+vBOrCunL4Wk7o6KtU01o+Jct1B2bJlpV+/fs4uhkt4//331STjmNwXk107GiYSxuS8mNwbky5Tzr8vsA9jX3a03Hzv5AYmYcZ7IzEPeTdH/v0iyg6DMqJ78AcZX8jbt2/P9o83bpYSNvTu3Vs9jox7ljRq1Eg9Z+bMmdz+Tnb+/Hl1Irh7925xFa5YptxYsWKFjB49WmWd/Oabb+Tdd9916PsdPnxYBRIVKlSQL7/8Ur744gtxdefOnZMePXqoADJ//vzy6KOPysmTJ51dLPIg//77r/pewXyJROR6mH2RKAeCg4NVevP/+7//M1p++/Zt+e2339Tjlhw7dky2bdumrjz/8MMP8uKLL7rkHFvIHOgNEABNmjRJ1UdetOC4a5ly459//hFfX1/5+uuvJTAw0OHvhxbVjIwM+eSTT6RixYri6hISEtRkwzdv3pTXXntNte599NFH0qJFCxWYFy5c2KnlQ2CL7emp3ztlypRR743t7ulBGb5XcMGCrcdEroctZUQ5gLmnDh48KHv27DFajoAsJSVF2rVrZ/G133//vURGRsqHH36o/kii9c0V4KQrKSlJ/Y6g0luCMnK8uLg4CQkJsVtAptPpzE7Obfh+kN2JZ3brySv/+9//1MWapUuXqhbFESNGqNbFCxcuqO8JZ0OwEhQU5PD3cdb3Dnot4L3RtZZcEy54egr8nc2LixzkfhiUEeVAkyZNpFy5cvLjjz8aLUfL10MPPSSFChWy+Fq85vHHH5dHHnlEIiIiMq0jK5999plUr15dQkNDpWDBgtKgQQOzr0f3FO1qKN6jf//+kpiYaLbvPMqMdeKka9myZWbHdmhjT44fP57tes1BV0+0lKD8tn4Wc9LT01WLQlRUlISFhUmXLl0kNjbWqvFcLVu2VDetRaVhw4bqd3wWrWtqVmNLtG2BLnLoboauZmjJwBxkWlBrybVr1+SVV16RmjVrqu6teG3Hjh2NgntryrRlyxa1n6EOsP3QorJx40aj9zp9+rQMHjxYKleurAIilPGJJ57IdBFA+zyWuvMaPh9dezt06CBFihRR68QxMGDAgCw/M9aBLos4qTL9LFjeunVrdZEC+1+1atXMdulFXeJ4Wb58udpP8N6ff/652ffDc9944w31e9GiRY325azWg66C2D44drFN77//fvnjjz/Mjmn85ZdfVItDiRIlJDw8XB3PaOVKTk6Wl19+WX0e1C/qD8uygzGSqHOt3gHj4dq0aaPey9CZM2fUvmeNnBxj2G/QulijRg25dOmS2TFlWjfuDz74QHUNRTdR1B/Kj14AhvBabAt0z+zatav6HfWC4wDHsaHcfO8guB42bJjaN1En+E7Ae1ozTs3cmLKLFy+q9ylZsqT6bMWLF1ddSq25iIb6wT6BfQnBHrb777//bnTRANsA30O4MKDB58T3Wc+ePfXL1q9fr/bL0qVLq3KUKlVKBe3mLiZo30lYN/ZtHPuvv/66flu++uqr6ncct9qxmN3nye67Bvsu1rN27dpMr8Wxhcf2799v9bYx/O7BOvEdhuMJ9bB69Wq1fNGiRZneC/s1Htu0aZNaH37fu3ev/vFff/1VLevevbvR66pWrWq0vTWLFy9WxwC2OY4h7W+jIexf+P7DHJTa82bPnm32O+Pnn39WPWvwnYHtiLkrrdm+5F14KZwoh5588knV6jVlyhT9YHlc3UaCAXNf4NoXMP7w4mQUrQb4A4GgCAGGNV2IcNKBP2haAIA/OljnU089ZfRc/GHGH97JkyfLzp075auvvlJ/2KZOnZqpWxlO+hCc4WQmu8H81q7XEP4QYQwR/kAPGjTI5s9izjvvvKO2+ZgxY9QJzscffyxt27ZVXb1wMmIt/EF+8803ZcKECfLcc89J8+bN1fKmTZtm+1psC2wvbIvNmzfLp59+KtevX5e5c+dafA1O/PHHHidZ2I446cV2wR9itLxGR0dnWybUGQK5+vXrq+ADwa4W3OAEDuMVASfHaInt1auXOqHByRcCHpwI4r1wAmALbOf27durE76xY8eqE2Ssc+HChVm+DscDTty3bt2q9hfDz4Ly4EQGJ9BoIVmyZIk6CcNV5CFDhhit58iRI+qYe/7559V+hBNOc7AvoA5w4ob1IwjARN5ZrQf1gDLhRB/7JQLYb7/9VpULJ53dunUzeg/UOfYzbAcczwh+0JqEusA+gBNg7BM4uUQ9oy4twWfFvm8uuEVd4jslPj5eBRrwzDPPqJNVw5N5c3JyjJ04cULtRzhh/vvvv9V3QlZwIoyyYVvieMRE6fhOw35u2BUQwReC+caNG6tAbuXKlaoFEMGcNd23rfneQdCG77I+ffqogBrbqFOnTpJTjz32mBw4cEBeeukldZxj/8c2QVCc1fckXoOxkzj5xv6BIAvlQkCKwAD7EsqOfRPfA9h3UE/YD/AZUM9oOdXMnz9f7ZfYTtgvcRzhNWfPnlWPaVC3+K7Adsf3BsqI+sQxhe9L1MvRo0dVt3t0jdXqFsezJdZ812Ab4xjDZ8T3mKF58+ap4xvBjbXbxhC+C1A+HD+4qIPvLgSl+Jtp+lwsw/6EC6a4+IX9cd26dfpjH+VF+Tds2KB/zeXLl1WQaJrYA8/B9xreH/WB73bsD6h7rSsxvjOwn2kXN1HOv/76SwYOHKgCLlycMfTWW2+pv/m4GIELNfjd2u9y8iI6IlK++eYbnOXotm3bZnGLxMTEqOe8//77uv3796vf169frx6bMWOGLl++fLrbt2/r+vbtqwsLC8v0+qFDh+pKlSqly8jIUPdXrFih1rFr165sa+HRRx/VVa9ePcvnvPHGG2p9AwYMMFrerVs3XeHChY2W4Xm+vr66AwcOZFoPHsO6crreIUOGqN9HjRql3mPOnDk2fxZzVq9erdZfokQJ3a1bt/TLf/nlF7X8k08+0S8rU6aMqgdTLVq0UDcN6huvRf1bQ9sWXbp0MVo+ePBgtXzPnj0Wy5CUlKRLT0/PtE8FBQXp3nzzzWzLhP2mUqVKug4dOuj3IUhMTNSVK1dO165dO6NlpjZt2qTWO3fu3Eyfx9LxgPLBokWLsj0+LLF0PJgrIz5b+fLljZZhO+K9ly1bZtX7aZ/p8uXLVq3n5ZdfNjqWIT4+Xm3TsmXL6utM2/9q1KihS0lJ0T/3ySef1Pn4+Og6duxotN4mTZqo98wKyoh1Gta/Bt8peOzw4cP6Zdh3rfnTbcv3Bcpw6NAhXXR0tK5hw4a6a9euZao/w8+hfQ/i2Dd87m+//aaWL1myxOi15j5f3bp1dfXr17fL986OHTvU81CPhvr165dpneZon0c73q5fv67/nrdVmzZtdDVr1lTHugbHatOmTdWxawj7TWhoqO7o0aPqvfCeixcvzvYYmTx5strfTp8+rV/24IMP6sLDw42Wae+t0d5DO6azYst3DT5HZGSkLi0tTb/swoUL6rvfsN6t3Tbad0+zZs2M1gnjxo1T35c3btzQL4uLi9P5+/sb1TP2/R49eujv16tXT/fEE0+o9WJfh4ULF2b6zsb9wMBA3fHjx/XL8DiWf/bZZ/plAwcO1BUvXlx35coVo/L16tVLFxERoa837TsD32mGdWnL9iXvwe6LRDmEK4C4Cocrj9pVY3RvsdQCkZaWpq4coquE1l1M67qFq3zZQcsEro6adg8y54UXXjC6jyuoV69e1XeZ0ODKJrqMWcva9eJvG64eItECWhP79u2b489iDloLtJYDQGsAuhf9+eefkldMW3JwRR2yKgO6uOBqqNZ6gG2Hq8xorUELQHbQEoixR2jpwGvROosbriKjqxuuDGtjFQxbDFNTU9Xz0S0N296a9zKljc/CuCeszx4My4juf/gs2CfR0oL7htBSgtaW3DK3HtQZrko3a9ZMvwz1ghYHtAaiZdF0/zNsCUILEPZ509YuLEe3Whz7lmjd0MyN2dISBhl2VUN3qOxayWw9xtC9DNsdrStoxUJXR2vgu8zwuVqrrrmskea+O6zNLpnd947WMwEtG+aOSVtp4x+xrdHyaS200KD1Ay17aEHUjk+UFfscjl10edNMnz5ddVvD99f48eNVKx/+hpiWRYPjHOtDqy72gV27dulbfHDsY/9DN0dD5romW8OW7xrsB2hJxPbSoIUZj2tdA23dNoCWbNNxfjj20NJkOC0K/q7iGHv66aeN9hG0NgHeD13EcTyjhVBbjp84TrSWPA16XaDVTYO/8+hqru2v2PZo2evcubP6XfssuOGz4LvL9DsWfwMN69KW7Uveg0EZUS7gCxVdSNCFCV3Fsup6h25I+OOJkz88H7eYmBiVdQ2BXXZfwOiqhxNFvL5SpUoqKLDU99z0D7N24mR6goETVFtYu150H5sxY4bqZoOuYrn5LObgNaYnHgg48jJpimkZ8EccAVdWZUAdo+sQXouTcJwgoNsLuh6ZBiHm4I+49gcerzO8oUsXTla09eBEHt1+0N3H8L0w3tCa9zKFk3Z04cFYKqwLJ4/oamPNmClLUOc4AUI3JpwcoXxaV15zQZk9mFsPxlGZ6w6JrqTa41kdBzixBmxr0+Wo86y2t3aiZm47amMUbemSm5NjDCeXuMiBsXY4+bT39wGCS9NucniutQFPdu+D+sGxZ1q3Oc28ieMFXSPRHQ3jhR588EHVNRPjzLKC73ScpCPAMj0+tXGOWhIaQDdRdI3D8Y99Bb+bQpc5dGvEc7XxeFo3QW2/0oIF0+AiN2z5rtHGRCE40uB3ZI697777crRtLB2rGGuJsYuGFzLxO7oSGtY3gjIkytH+NuNvBLo2GgZr+InulNqFMkv7m+n+ir/j+B5Ft2zTz4JxiNZ8Flu2L3kPjikjygUEHOPGjVNX9NDXHGNuLNH+iOBKoTkYA4EAzRKcIGI8DFoqcGUYV+ow9gAn3jhRNmQpi5jpFXZbT/asXS/+0OFKIK4E4/OaJj6x5bPklKUrxGihckSWNWuuSGNsHU5KcEUbYwywXXBCgPEH1lwV1Z6DiZgtpcrX5sdDKwGCJqwbJyM4aUIZMcbM8L2y2k6mnw9XpzFWCuNUcAKPz4GxQViW1bx85mC8C64I4yRr2rRpKqBB6wRarRC4mm6PnAQm5thjPZb2H2uPD0PYBxAE4ATSlLYMYw1tZcsxhmAbY+jwHYXxYday9vPm9njLyXbNLRw3CFYxBhT7Oo5bjGlDa0/dunXNvkbbZzFuyFKrrmmgiHUDTvjRsmmYMRTHIDL5opUJQTaOFVzAQIsSAjVHtqTY8l2D/RfjwjCOE/sYxlvhAoDhfIQ52TaWjlW0lmGcJLYXghd8/+BvjSGt1RstTgha69Wrp7YdgjIEv5iGAi2NGG9n6/6mfRa0zJn2AtEYjmM191ls2b7kPRiUEeUCrqghAEG3DQzEtpTOWZu/DF050FXFFAZ644Qoq6AMtMxcuCH1PgZv448KAsOs5kbLa/jjiivLGJiNq6irVq0y6m6Y28+iXWU0/GOJK6KGfwhxZdPcJKm4ql6+fPlcd+9BGQyvfuL98Yc2qyQACGpQx5ivyxDKaZhUwVKZtC41aM1AC1NW8F44YTBMqY6WF9NtorU6YLnhCaFp65AGV6RxQ12hyy4mS0dmsWeffVZsgcAOJ1TIlGZ4ZRoZ1pwxTxUCGFNalkM87igIypGN09yk9UjKgX3V9NixlrXHGE4M8d2lJTawJtmOK0H94NhDzwPDFmwck7mB423UqFHqhuMdJ884ntAl2xztewVdW7M7PgHBMlpFMA0Cvv9xvKLOtb8j+/btU8k5EDAjENEg4Yi59zXMcmiOLd91tnzXAPYxlBPf9YcOHVLfyYZZDW3dNlnBhaWRI0eqHiba/HKmGRTxnYIbWsMQlGlda9HqideihwuCXty3FVqzcJzg9Tn9LLZuX/IO7L5IlEtI947uF1mNX8AVRARm6EKEoMz0hjTduJKdVVcw9Ds3hFYFjAfDHz97jfGxJwRIaPXAH2hccTYcF5Pbz4LukRgnYBiAoFUBmawM/+jhCipORjVoNTBNnY8TVzAXwGUF3TMNaen+Dctg7gqs6dV9nByYjqWwVCZk6cLnQgY7XOk1hW41Wb0XymjaAqadHOCKsgb7Kk6wDOFKvun6tCu8OenCqF2NNlwnuuugdc8Z8w4iqx3SaRtuA3RPQpBty7jLnMB3AMZ+GQZmCBLRKoMMfTlhyzGGk3V8VpQDgYFpinJXp7W8GGYtBMMpOGyBbIem01vgOMGJeFb7OsYH40IUMqqaa/k0PD5xbONCBrqXokUJwRnGIRm2Lpk7RvA7xuqaBgkILpCOHd0dDRm+1pbvOlu+awCBBVp90W0RN3wuw4tWtmyb7OACFr5nERxr09CYyxSKQAzHEI5tLSjDdxbqEVmT0XqFz2kr1Atal/E321wgbM1nsXX7kndgSxmRCfxhM5fSHt0lzEH/ftNUwKbwhwPdGy2lWkfqbaSwxrxIpvOoaNA1EvNyoWUO4xwQ7KDLBlIS5/RKuqOhRQUthDjpxQkfugLhqmZuPwv++KN7Cvrvo6sM0qCjdU5LuQ844UGwhj/Y6EKJ7nL4I244gBtwHy1Es2bNUu+NExckaMhuDBOuyqPesH6czGPdaGGoXbu2xdcg+Ea6e5Qb+wKuhGPfMGy5y65MOHnDCQkSzWA9SC+NoA4tTLjqihYo7b2Qjh7dFnEyjjIiiYOW0lmDusAVZaRyxjxGOOHAMYATPcMTPARpOOlFKmqUD0Ex9lm8J+rXVnhfBAoI2NFlDicmWB9O3sydtDkS0nPjqju2K1qtsX/h86KOceJlOubE3tBChc+O/R/du3CMoEsnjg200hjCia01KfFtPcbwGbEPoxsajhdcUEEiIneAE1ycJON7AMGolhIfrUw5aQ3H69C1FtsBxw5arnBhDd81aKXJ7mINvpvQ+onvIxzbeB2OP3S30+YkxN8TlBXHJI45fI/gOwsX+TBeE98j6K6IYw37BI5xHGvYH82NxUOXPLwvuukhoQW+KzC+FX9T0JVc206AucvwObCf4fjTgjXT/cHa7xrAuvC3C63muKCBYCOn28YaaDnUep2gK7g5CMTw/Yr617ozYlvjuxfdRnEs5XRCewR12A74XsZnwX6CbqYIrFGn+D0rtm5f8hLOTv9I5Cq0NLyWbrGxsUYp8a1NAX7p0iWVrrdPnz4Wn480uEiNjFTPlnz++ecq7TFSQSMlcIUKFXSvvvqq7ubNm9mmAjdNb26aut6UpdTUOV0vUmVjG/Ts2VOlF7fms5ijpRf+6aefVGpkpGEOCQnRderUKVMqaPjwww9V+ny8xwMPPKDbvn17ppT4WvmqVaumyphdenxtWxw8eFD3+OOPqzTUBQsWVNMd3Llzx+i55lLiY5oApFJGuVEmpKm3tUyYQqF79+767Yf3QfrnVatW6Z+DtN79+/fXFSlSRE3VgNTLSK1ubqoApBRv3LixSgVdunRp3bRp0zLV7c6dO1XqazyO98S2f+SRR9Q2zWlK/N9//11Xq1YtXXBwsEo9P3XqVN3s2bMz7VMoM+rYWlmlxLe0nhMnTqj6LFCggCpPo0aNdEuXLjW7/82fP9+q6TQslcMcfL/g/fPnz6/qC9v22LFjmZ6HNPJRUVHZri+n3xf4LsK+iDJs3rw5y5T45r4HTb87LNW9uakYcvO9g6lI8L1TqFAhVfauXbvqjhw5op43ZcoUm1LiI8051lWlShVVdqQ4x/GBqTesgX3pmWeeUfUUEBCgvoNQnwsWLDCaOgDfT4YwzQe2c+3atfVTLuB7pm3btuoz4VgeNGiQPkW76fcUpmnB3xBtH65cubJu/PjxRs956623VHmQrt6a9PjWfNdo/v77b7VOpOvH/pyTbWPt9DTJycnqexd1Y/q9q8F0L1hP1apVjZa//fbbarnptsnq76K57038bcdzMc0NPgs+E9L+f/HFF9l+Z+Rk+5Ln88H/nB0YEhG5C0wMjEQJ6F6S3eS6RPaE1km04qFFyHRKBsoMLURIyoEWQIx9JM+BFPhIgIOWPtMxukTuimPKiIiI3ADG/aGLk2E3XbrLcMyqBsEruonlJJkDuTZ0hceFMcMEKETujmPKiIiI3ADGg+FGmSHb644dO1R2U4wBwxxjuGF8len8ceS+kJ0S87phHBlaQbMbz03kThiUERERkVtD8gakisfJOpLGIHkNuhojqQV5jpkzZ6ruqMiiOGfOHGcXh8iuOKaMiIiIiIjIiTimjIiIiIiIyInYfTGHMjIy5Pz582q+F1vnQCEiIiIiIs+n0+lU9lxkDM1q3ksGZTmEgIyDh4mIiIiIKDuxsbFSsmRJi48zKMshtJBpGxgzr5Nnt4rGxcVJZGRkllc4yDOwvr0P69y7sL69D+vcu2S42HnbrVu3VEOOFjtYwqAsh7QuiwjIGJR5/sGNOXBQz65wcJNjsb69D+vcu7C+vQ/r3LtkuOh5W3bDnVynpERERERERF6IQRkREREREZETMSgjIiIiIiJyIgZlRERERERETsSgjIiIiIiIyIkYlBERERERETkRgzIiIiIiIiInYlBGRERERETkRAzKiIiIiIiInMjfliffuHFDFi1aJOvXr5fTp09LYmKiFC1aVOrWrSsdOnSQpk2bOq6kRERERERE3tpSdv78eXn22WelePHi8vbbb8udO3ekTp060qZNGylZsqSsXr1a2rVrJ9WqVZN58+Y5vtSkl56hk00nrspvu8+pn7hPREREREQe1lKGlrC+ffvKjh07VOBlDgK1xYsXy8cffyyxsbHyyiuv2LusZGLZ/gsyaclBuXAzSb+seESwvNG5mjxUo7hTtxeCw60x1yQuPkkiw4OlUblC4ufr49QyERERERG5bVB28OBBKVy4cJbPCQkJkSeffFLdrl69aq/yURYB2Yvf7xTTdrGLN5PU8plP13NaYOaqwaKrBoquWC6Wyb23FREREXlgUJZdQJbb55PtJ4EIesx1VNSWvfTTLmlc7rSEBflLWKC/hAb5qZ8hgX5G90NxP8jk573HA/18xcfHxyOCRVcNFF2xXCyTe28rIiIicj8+Op3O5kFIGGO2YcMGiYuLk4yMDKPHhg0bJt7g1q1bEhERITdv3pT8+fPn6Xtj7NiTX252+Pv4+/pkHcQZLg/yk2B/X/lk1XG5eSfV4jqL5AuUr/s2FH8/H8E/X19RPxH73W1c0H7HUtH/rh7RlvvcfY16vtFz7y5T9+6tD8tWHrwkI+btzhQoauHmp0/WlQ7VoyyWGft4XNwliYwsJr4osJ0sP3BRhv20K8tyPVTDuFzmQmRzgbPpEnOxtbnXWQqqtWc6I6jO6zKhvi9duiTFimVd3664rcixdU6egfXtfVjn3iXDxb7TrY0ZbA7K5syZI88//7wEBgaqFjHDEzv8fvLkSfEGzgzKkNRj+M+78/Q9iQzdDYzNs9S6avn5WWxbnUhqNslr/HxEShcKlaAAPwnw85UAPx/1M9Afv/uqFt8A9bvP3d+NHrv73LuP313u7ytyJyFeihQqKIH+fhLoj9dh3T7qeVgHLgT0nb1VLickW/ysURHBsmFMa3ZldAOu9gecHIv17X1Y594lw8W+062NGWxKiQ/jx4+XCRMmyLhx41zig3ojjFuxxvA2laREwRBJTE6T2ynpkpiSJreT7/5MVPfT5Xby3d9vY1ny3Z9YxiSOlBVcyrEYKtne+J4r6TqRmKuJDljz6Ry/ElsAXRox1qxJBXbnJiIioqzZHJRhbrJevXoxIHMiJBLAuBWM09JlcZV+WJtKObpKj8bT5LQMi0GbYXCHn3dS7z7v9NVE2XD8SrbrLxoeqFoetPdCAKjDP53cCwbv/o5fM3T3ftd+mnnN3eWZX0PkbLHXE6WJMCgjIiIiOwdlAwcOlPnz58vYsWNtfSnZCQItJBLAeBaEXIbxhxaC4fGcZoBD97PgAD91KxQWaFMCkmZT/8k2WMyrLl0I3jD+7qmvtmT73G8HNJTG5cyfPOvQDB4XJ8UiI8XHTq3DW2KuSt/Z22wql7lAE8FopmUmi8wmhDGzMrTqDPx2e7Zl+qpvA2lYppDZx8yVx1yZsiqbYRm3n7omz3+/M9syvdW1hlSJCpfUtAxJTs9QP1PTdZKaniEpuKn72k2n7qfon4ff7z0Xy9PSJSExSXz9A+4+997r/luHTuKTUuV6ouWxk5rxi/fLlpPX5LH6JeT+coXFl1kZiYiIyB5B2eTJk+WRRx6RZcuWSc2aNSUgIMDo8WnTptm6SsoBJBBAIgHTzG9RTsz85uhgMSfBZePyha1qVWxWsajFcmVk+EiQv68as2SvLrt4v9yWy95aVo60qkytKkfmWZnaVouyqkxPNSpttzJZ0xc9uwsQGrQ4/7rzrLqVKBAij9UrIY/VLyllCofZpaxERETkxUHZ8uXLpXLlyuq+aaIPyjsIvNpVi3KpOZJcLVh0tUDRlcvFMtlnW2kKhAbIDYPWtHM37sin/xxXt4ZlC8pj9UpKp1rFJTzY+MIWEREReR+bsy8WLFhQPvroI+nXr594M2dmX3QHrjahbm7mk3JkFh9XnOfK28tkS31nVS5cMEH3WbSS/bX/giSlGk8fAsEBvmo6hsfrl5SmFYowU6OTuFqmLnIs1rf3YZ17lwxvSYkfFRUl69evl0qVKok3Y1DmPYGiow9uVwtgvb1Mtta3NeXCGLS/9l2UBTvOytZT18yuB8Fct7p3uzdWKJrPbp+H3O8PODkW69v7sM69S4a3BGXovnjhwgX59NNPxZsxKPMernZwk3vX95mrifpxZmev3zH7nLqlC6jWs0dqRUtECLs3OhqPce/C+vY+rHPvkuEt85Rt3bpV/vnnH1m6dKlUr149U6KPhQsX5qzEREReoHThUBnR7j41j+CWmGsqOPtz3wU19YRm15kb6oauke2rFVOtZ80rFhF/P+f/cSEiIiL7szkoK1CggHTv3t0BRSEi8h5Ij4+JpXGb1KW6LNt/UQVo/564qn8O0vAv3XtB3YqGB0n3e90b7ysW7tSyExERkRODsrS0NGnVqpW0b99ejS0jIqLcCwvyV8EWbmevJ8qinedkwc6zakJ2zeX4ZPl83Ul1q1UyQnVv7FwrWgqamUvQFccEEhERkZ2CMn9/f3nhhRfk0KFDtryMiIisVLJgqLzUppIMbV1Rdpy+rpKD/LH3gsQnp+mfs/fsTXV7a+lBaVOlmArQWlQuKgF+vi6ZPZOIiIjs3H2xUaNGsmvXLilTpoytLyUiIith3scGZQup2xudq8uKg3ezN244fkW09Eyp6TpZduCiuhXJFyi1SxaQVYfjMq0Lk1xjTjXMIeiswIytd0RERHYMygYPHiyjRo2Ss2fPSv369SUsLMzo8Vq1atm6SiIiykJIoJ88WqeEul24eUcW7TqnArSTl2/rn3MlIcVsQAaI4dB5ES1omD8tr7sysvWOiIgoazanxDeXWhJXdLEa/ExP/y+DmCdjSnzv4WqpVcmx3KW+8Z27O/aGSg7y++7zcivpv+6NWSkSFiiF8gVKaKC/hAX53f0Z6CehQfd+Gi7XP+4voUF+d38G+qkxcPgZ5O+rvvezC8jQSmf6h0Z7lTNb77QWvC0nr8ixs3FSqWSkNC7PSbw9nbsc42Q/rHPvkuEtKfFjYmJyWzYiIsolBEN1SxdUt//rVE2m/HVI5vx7OtvXXbmdom72gBY3FaRZCNpCAvzkj30XMgVkoC2b8NsBaVS2sESEBrhAC94plxh/x66eRETex+agjGPJiIhcS3CAn3SoXtyqoMzewUN8Upq65VRcfLLUe/tv9Xu+IH/JH+wv+UMCJH9wgITrf/eX8OAAyR+Cx/Hz3mMmvwf6W39F1FILnrPH37lyV09XDBZZJvfeVkSUi6AMTpw4IR9//LE+C2O1atVk+PDhUqFChZysjoiIcgknWDh5R1BhqU96ZHiQfNW3gSSnZcjt5DQ1YbX+Z0qaJCab/LT0eEq6OsGzt4TkNHU7bxCQ2CI4wNckmDMN4O4Gd/kC/eTNpQcttuDhNHXi7welWcWi4u/nI74+uIn6id6a2XXZzClXDRRdNVhkmdx7W7lqoOiKZXLVcrlqmbacvCrHzl6TSrf93apLus1jypYvXy5dunSROnXqyAMPPKCWbdy4Ufbs2SNLliyRdu3aiTfgmDLv4Wp9k8mx3Lm+tZN60Dlw/Bb+bCCwsxS03bl3/9D5W/L9ljPiaRCTaYGaj0HApoI27XFfH8vPMXg9fuJFeB3mpUvLItjFGL42VSJViyBumAJB/e733/3/lvkYPcfcc+/+7iOBfn4SoH76SoD2HD9f9RlcdVxgbsrkqGPcFbeTq5crrwJFa+vcVYNXVywXy2T/mMHmoKxu3brSoUMHmTJlitHysWPHyooVK2TnzrsnBJ6OQZn3cOeTdPK++nalP5S4Ytls6j8WW+9wUhgVESzrXm0ld9LSVTfIW3dS1U39nnT3dyQxiVe/311m+hh+ZhXMUM74+/qoGwLwrLYunlO2cKgK4tS/e2f7CEa1E/+7LYyo83utjfcWakHs3Z+G9/8LVo1ehwU6kW2nr0tKWkaWAWyzioXvtWr+9574ibOelORkCQ4O0pf5biGNy6Evt8kyMf0cqkg6+WPvRbmTajnZGRLnPH1/GQnw9VVX7g1v2IYI0E2X+/n46FtrDZf5+d17DK8zeb7hOlFvvb/cIpcTki2Wq1j+IFkytJl6jdYKrG2ru78bbJ//ftXXsaXnGzYoGz6G35cfuCgv/bjLYqA44ykEilFi1+/1uEtSLNLy9/qy/RdlyI87syxTx5rGZXJUq7mrB9Usk4sEZcHBwbJv3z6pVKmS0fKjR4+qdPhJSTnrduJuGJR5D3c/SSfvq29X6lKSF613+DOWlJphHKjd+/2/AO6/gO7M1duy5+zNXL0nEVF2zMVspotMAzsfk++29GzO0vF8ZM5VrfPqIoNxV2vtvtZqr13c0Fr2DZ+rnnMvcDZs1TdcF0L9/edvqXkyLUFrfMMyBfXvZ/pZTS96aI/5ZNpuBhd5jF7zX+B/90KLTlYfuaz+DkgWFwA3jGntlL+FDsu+WLRoUdm9e3emoAzLIiMjc1ZaIiKyG/zRaVKhsEtsUQRcCLxMW++i7Nh6hz/mmMsNt2L5g+3Wgrf6lZb6lpUMnU4y7v3EfZ3BfW2Z/jkZhvfvLsvy+Tqd7Dt7U974/UC2ZR/UvJyULBgqqekZqgULP1Pu/cRJkuky/EwxeY72u/65WH7veVmdaBGRbcw1e2RaZFvbiNn1JaS41nRU+I7ZeOKquAqdiPr7g4uVrvK30S5B2aBBg+S5556TkydPStOmTfVjyqZOnSojR450RBmJiMiNIfDCpNWu0nqH90VAiBa8e73h9LQS4XFktcwrtUsWkFlrT2QbKI7tWNWh2w3BoxacIVDbdPKqDP4h+2EJk7pUk+rREarsWtCq/a7Wi3t3/7v7OP7p79997t3HtaDX+LG767n72JFL8fLxymPZlmlIqwpSoWg+o3UBgmBcsQ7Pn19/xd20XNoyMf0cBve1esKyU1dvy/ebsx8/2bl2tOpOnJZ+NzjHBQJ0vc3Qfur+u59uZllaRoZkZIikGy0zeEx396KDdsN4T7QQZwddHbUWCdPPZrh9iNxZXLxr9+azOSgbP368hIeHy4cffijjxo1Ty6Kjo2XixIkybNgwR5SRiIjcnCu13uVVC54jAkVHB7JodQzyx8TgGJgl0qF6VJZZPbVg8en7y+ZZkN2+epTM2xabbZlGtqtstkx3uygH2LWLMgKgVYfisi3Txz3r5OnFCGtbhXPSrUsfsGUTxN0LufX3t8Rclb6zt2W7/m/6NVQXb+wBdR4XF6d6dJmrc1ww6j8n+zLNvlcm05E/pts2UwBrcF/bHpaea3h3+6lr8tx3O7It16dP1pG6pQrqW+CxDsNWfe0+AnrDCx/Gz9Va8P9r2Td8rfb8QxduydRlR7It08ttK0mlyHD9Zza62GGwr2jbQGeyn1jar7SFhus8cTlBvlyf/TzKuCDoUUEZvrBHjBihbvHx8WoZgjQiIiJ3bMHbcvKKHDsbJ5VKRjo1fbKrBYquFCyyTK63rfTjg4xemv16MNWENYH+g/cVtdt+haBMm9jeXFCG97KmTC3sWCZrtKlazKpydaoZnWflal6pqMzddDrbMr3UulKelSk9QydL917Itkz2CvIdJVeXiBCMMSAjIiJ3hZOG+8sXlvaVC6mfzp7PBoEXWi1+GnS/fNKrjvqJ+85Mx60FizipMYT7zkqnzjK577bSAkWzSS+cHOi7UplctVwsk+PYnH0RWcleeeUVWbVqlWoKNn15erprDTa0JDY2Vvr06aM+g7+/v+qW+cQTT1j9emZf9B6ekI2PrMf69j6sc/fL6pmbMjm6vl1xO7liuThPmWtuK5bJjVLid+zYUc6cOSNDhw6V4sWLZ0rl+eijj4o7uHDhgvpSxiTYFy9elPr166u0/mFhYVa9nkGZ9+AJm3dhfXsf1rl3YX27jrwKFG2pc1cLXl25XK5api0u0iXd4SnxN2zYIOvXr1fBjDtDQIkbREVFSZEiReTatWtWB2VERERE5DkJgFy1TK5aLlct0/3lC0u5sDQpVqywmrvNXdjcbl+qVKlMXRYdYd26ddK5c2eV2RGtcYsXL870nBkzZkjZsmXVhNaNGzeWrVu35ui9duzYobpd4rMRERERERG5dFD28ccfy9ixY+XUqVPiSLdv35batWurwMucefPmqXnR3njjDdm5c6d6bocOHdQYMQ1a82rUqJHpdv78ef1z0Dr2zDPPyBdffOHQz0NERERERGSX7os9e/aUxMREqVChgoSGhkpAQIDR4why7AFj13CzZNq0aWoi6/79+6v7s2bNkj/++ENmz56tgkbYvXt3lu+RnJwsXbt2Vc/XJsLO6rm4GfYP1fop40aeS6tf1rN3YH17H9a5d2F9ex/WuXfJcLHzNmvL4Z+TljJnS0lJUV0OtcmrAQM327ZtK5s2bbJqHeiC2a9fP2ndurXKwpidyZMny6RJkzItR8vcnTt3bPwE5I4uX77s7CJQHmJ9ex/WuXdhfXsf1rl3uewi523avM52D8r69u0rznblyhU1BgxZdAzh/uHDh61ax8aNG1UXyFq1aunHq3333XdSs2ZNs89HAIjukoYtZRiDhtnhs8qkQu4PVzhwYBctWpQp8b0A69v7sM69C+vb+7DOvUuGi523hYSEOCYo8xTNmjWzqVkzKChI3Uyhsl2hwsnxWNfehfXtfVjn3oX17X1Y597F10XO0a0tg/NLmgNIX+/n56fmnDCE+0hvT0RERERE5C7cMigLDAxUkz2vWrVKvwytXrjfpEkTp5aNiIiIiIjIFi7bfTEhIUGOHz+uvx8TE6OyKRYqVEhKly6txndhfFuDBg2kUaNGKgEJ0uhr2RiJiIiIiIi8IihDwot//vlHKleuLFWrVrVPqURk+/bt0qpVK/19LckGArE5c+ao1PwYxDdhwgS5ePGimpNs2bJlmZJ/EBEREREReVRQ1qNHD3nwwQdl6NChKhU8WqowkTRSzP/888/y2GOP2aVgLVu2VOvMCsqAGxERERERkdeMKVu3bp00b95c/b5o0SIVON24cUM+/fRTefvttx1RRiIiIiIiIo9lc1B28+ZNNa4L0F0QLWOhoaHSqVMnOXbsmCPKSERERERE5LFsDsowYfKmTZtUUg0EZe3bt1fLr1+/LsHBwY4oIxERERERkceyeUzZyy+/LL1795Z8+fJJmTJl1NgvrVtjzZo1HVFGIiIiIiIij2VzUDZ48GCVgj42NlbatWunn6W6fPnyHFNGRERERESUFynxkXERN0hPT5d9+/ZJ06ZNpWDBgjlZHRERERERkdfyzUn3xa+//lofkLVo0ULq1aunxpqtWbPGEWUkIiIiIiLyWDYHZQsWLJDatWur35csWSIxMTFy+PBhGTFihLz++uuOKCMREREREZHHsjkou3LlikRFRanf//zzT3niiSfkvvvukwEDBqhujEREREREROTAoKxYsWJy8OBB1XURKfGR7AMSExPFz8/P1tURERERERF5NZsTffTv31969OghxYsXFx8fH2nbtq1avmXLFqlSpYojykhEREREROSxbA7KJk6cKDVq1FAp8dF1MSgoSC1HK9nYsWMdUUYiIiIiIiKPlaOU+I8//nimZX379rVHeYiIiIiIiLxKjoKy27dvy9q1a+XMmTOSkpJi9NiwYcPsVTYiIiIiIiKPZ3NQtmvXLnn44YdVYg8EZ4UKFVIZGUNDQyUyMpJBGRERERERkSOzL2I+ss6dO8v169clJCRENm/eLKdPn5b69evLBx98YOvqiIiIiIiIvJrNQdnu3btl1KhR4uvrq5J7JCcnS6lSpeS9996T1157zTGlJCIiIiIi8lA2B2UBAQEqIAN0V8S4MoiIiFAZGYmIiIiIiMiBY8rq1q0r27Ztk0qVKkmLFi1kwoQJakzZd999p1LlExERERERkQNbyt599101cTS88847UrBgQXnxxRfl8uXL8sUXX9i6OiIiIiIiIq9mc0tZgwYN9L+j++KyZcvsXSYiIiIiIiKvYXNLGRERERERETmxpezq1atqHNnq1aslLi5OMjIyjB6/du2aHYtHRERERETk2WwOyvr06SPHjx+XgQMHSrFixcTHx8cxJSMiIiIiIvICNgdl69evlw0bNkjt2rUdUyIiIiIiIiIvYvOYsipVqsidO3ccUxoiIiIiIiIvY3NQ9r///U9ef/11Wbt2rRpfduvWLaMbERERERERObD7YoECBVTw1bp1a6PlOp1OjS9LT0+3dZVERERERERey+agrHfv3hIQECA//vgjE30QERERERHldVC2f/9+2bVrl1SuXDm3701EREREROT1bB5T1qBBA4mNjfX6DUdEREREROSUlrKXXnpJhg8fLq+++qrUrFlTdWU0VKtWLbsUjIiIiIiIyBvYHJT17NlT/RwwYIB+GRJ8MNEHERERERFRHgRlMTExOXgbIiIiIiIisktQVqZMGVtfQkRERERERLlJ9LF582axVmJiohw4cMDq5xMREREREXkzq4KyPn36SIcOHWT+/Ply+/Zts885ePCgvPbaa1KhQgXZsWOHvctJRERERETkvd0XEXDNnDlT/u///k+eeuopue+++yQ6OlqCg4Pl+vXrcvjwYUlISJBu3brJihUrVFZGIiIiIiIislNLGdLeDxs2TI4cOSKbNm2SQYMGSY0aNaREiRLSsmVL+fzzz+X8+fPy008/uV1Ahu6WGCf3yiuvOLsoRERERETkhfxzMnk0bp7inXfekfvvv9/ZxSAiIiIiIi9l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rl2ToKAgZxeJiIiIiIi8jM1BWbVq1eTKlSvi7g4cOCABAQEqIINChQo5u0hEREREROSFbM6+OHXqVBk9erSsWbNGrl69Krdu3TK62cu6deukc+fOEh0drbpILl68ONNzZsyYIWXLlpXg4GBp3LixbN261aaxcfny5VPvUa9ePXn33XftVnYiIiIiIiKHtZS1bdtW/WzTpo1DE33cvn1bateurcZ8de/ePdPj8+bNk5EjR8qsWbNUQPbxxx9Lhw4d5MiRIxIZGameU6dOHUlLS8v02hUrVqjl69evV90x8fyHHnpIGjZsKO3atTNbnuTkZHXTaAEosk+aZqAkz6LVL+vZO7C+vQ/r3Luwvr0P69y7ZLjYeZu15fDRIZqywdq1a7N8vEWLFmJvCPYWLVokXbt21S9DIIYgavr06foPXKpUKXnppZdk7Nix2a5z06ZNMnHiRFm+fLm6//7776ufr776qtnn47mTJk3KtBxBYHh4eI4/GxEREREReab4+HipXLmy3Lx5U/Lnz2+/ljJHBF05mSMNyUbGjRunX+br66ta8RBsWQMBHeZZu379ukRERKjuks8//7zF5+O90DJn2FKGIBCtbFltYHJ/CPgvX74sRYsWVfsZeTbWt/dhnXsX1rf3YZ17lwwXO28LCQlx3OTRN27ckK+//loOHTqk7levXl11M0RwkxeQaATdJIsVK2a0HPcPHz5s1TqQ1h/jyB588EHV9bJ9+/byyCOPWHw+MjOay86IynaFCifHY117F9a392GdexfWt/dhnXsXXxc5R7e2DDYHZdu3b1djtxD1NWrUSC2bNm2avPPOO2qsFpJmuIuOHTuqGxERERERkbPYHJSNGDFCunTpIl9++aVqbQIkzXj22Wfl5ZdfVt0AHa1IkSJqsmdM+mwI96Oiohz+/kRERERERPbim5OWsjFjxugDMsDvSJOPx/JCYGCg1K9fX1atWmXUfxT3mzRpkidlICIiIiIickpLGZJanDlzRqpUqWK0PDY21q5ZCBMSEuT48eP6+zExMSp9PSZ5Ll26tEq60bdvX2nQoIHqRomU+Eij379/f7uVgYiIiIiIyOWCsp49e8rAgQPlgw8+kKZNm6plGzduVKnkn3zySbsVDK1urVq10t/XMh8iEJszZ44qBzKrTJgwQS5evKjmJFu2bFmm5B9EREREREQeFZQhGMO8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n8UQPdWwD1WpUkXOnDljcX9FN0S0umI7t2jRQnbu3Kl/HNv/119/lblz56rPjv3X3DLD7ouG+yhaUlu1aqX2STTQILA0tGHDBmnevLnaX9ACjM9n6djSYL0IAHH8VK1aVQYOHKgCMwyVGj16tP55OK7QMLRixQr1uXAcYV/++++/5fz586rF0RDKiPUa3jT/+9//VByD/Qb72uOPP270WtTVzz//LI5kc+iNKNVwguhbt26pCjp8+LC4ExwQ06dPlx07dqiWP/xERE1ERET2gYud6DJmze1O6h2ZvHWy2TmQdPf+oQUNz7N2ndZcbEWQ8eSTT6qT20OHDqmT7+7du5t9LU6kcYL7zjvvyJgxYyyuExes0dKAn99++63qkoWbIQQDCLDQE2nw4MHy4osvZgqyTOEkE6/bvn27usKPMmt++OEHVS4EizinwQnqzJkzs1wfgicETHXr1lXrRBcwdKlDIGDJM888o054sZ1w4o5gMi4uzug5TzzxhFqGgAllqVevnrRp00YlhdNg++D8cenSpeqGYGrKlClG68G2QzCxdetWFaBhG2HdCEgRWLRv314FkYmJier5x08dl44Pd5RKNSvJgjULZPz742Xhjwvl82mfqxTtFQtUlGmTpsn6devlt99+Uyfz+ByGQQoMHTpUBRc4Cd+7d696T7RgHTt2TB8MJCcny7p169Q5JLa5La2lCFQQICDg0GB7ocsigmp8PgQGCDTwXHPw/igXAvf169er+jYHgS4aVLAenOci8MCcw1oAjKANnw11jmPhk08+Mbssq30SPeVQDrRY4VjSgmDUMdbz2GOPqe04b948VQ5sX1tFRkZK7969VbdPBKPYl9AohGPHtGsngi0E+b/88otV3wHY9xEsohUNxyCOA3RXNNSoUSO1H2K7O4zORk888YTus88+U78nJibqKlWqpAsICND5+/vrFixYoHMXcXFxutKlS+uuX7+uu3Pnjq5hw4a648ePW/36mzdvopbVT/Js6enpuvPnz6uf5PlY396HdW4/+Ht68OBB9ROS05J1NebUcNoN728qIyNDl5ycrH7Cjh071N/zU6dOmf1Mffv21T366KO6hQsX6vLly6f7+eefjR5/4403dLVr1zZ6fpkyZXRpaWlG5049e/bU38fjTz/9tFGZIiMjdTNnzlT3Y2JiVJl27dql7q9evVrdX7ly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FPzLH5i7TJlpGWkqONOCNy1Y037Xlp+4cUL+if3HJVv6iIiIiIg8Jih77733pFOnTmruL20C5k2bNklsbKz8+eefjigjmYF090h7by7LIQIye6bDx1xhEUER6pZdVsgOv3bItgUPLX1ERERERJTDoKxFixZy9OhRmTFjhhw+fFgt6969uxpPFh0dbevqKBcQeLUq1SrL+cBcsQWPqe6JiIiIiHIYlKWmpspDDz0ks2bNsjmhBzkGApyGUQ29sgWPiIiIiMjrgrKAgADZu3ev40pDHsHVWvCIiIiIiFyZbTM9i8jTTz+t5ikjsqYF7+HyD6ufDMiIiIiIiOw0piwtLU1mz56tEn3Ur19fwsLCjB6fNm2araskIiIiIiLyWjYHZfv375d69e5mz0PCD0M+PneTORAREREREZGDgrLVq1fb+hIiIiIiIiKy15gyIiIiIiIish8GZURERERERE7EoIyIiIiIiMiJGJQRERERERE5EYMyIiIiIiIiJ2JQRkRERERE5EQMyoiIiIiIiNxpnjK6S6fTqZ+3bt3iJvFwGRkZEh8fLyEhIeLry+sYno717X1Y596F9e19WOfeJcPFztu0WEGLHSxhUJZDqGwoVapUTldBREREREReEjtERERYfNxHl13YRhaj8PPnz0t4eLj4+PhwK3kwXOFA8B0bGyv58+d3dnHIwVjf3od17l1Y396Hde5dbrnYeRtCLQRk0dHRWbbcsaUsh7BRS5YsmdOXkxvCge0KBzflDda392GdexfWt/dhnXuX/C503pZVC5nG+R0tiYiIiIiIvBiDMiIiIiIiIidiUEaUjaCgIHnjjTfUT/J8rG/vwzr3Lqxv78M69y5BbnrexkQfRERERERETsSWMiIiIiIiIidiUEZEREREROREDMqIiIiIiIiciEEZERERERGREzEoIxKRyZMnS8OGDSU8PFwiIyOla9eucuTIEaNtk5SUJEOGDJHChQtLvnz55LHHHpNLly5x+3mAKVOmiI+Pj7z88sv6Zaxvz3Pu3Dl5+umn1TEcEhIiNWvWlO3bt+sf1+l0MmHCBClevLh6vG3btnLs2DGnlplyLj09XcaPHy/lypVT9VmhQgV56623VD1rWOfua926ddK5c2eJjo5W39+LFy82etyaur127Zr07t1bTTBcoEABGThwoCQkJOTxJyF71HlqaqqMGTNG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# integrate the reconstruction error over a full 360-degree turn, for 20 subspace sizes\n", "mode_range = np.arange(1, 21)\n", "ang_int = np.linspace(0, 360, 49)\n", "Rg = [np.array([[np.cos(t), -np.sin(t)], [np.sin(t), np.cos(t)]]) for t in np.deg2rad(ang_int)]\n", "Yg = [(Xs @ R.T).reshape(-1, 1) for R in Rg]\n", "yn = np.array([float(np.sqrt((y.T @ Mk @ y)[0, 0])) for y in Yg])\n", "\n", "def turn_avg_error(B, q):\n", " \"\"\"Reconstruction error averaged over the whole 360-degree rotation sweep.\"\"\"\n", " B = np.asarray(B); BMB = B.T @ (Mk @ B)\n", " errs = []\n", " for y, ym in zip(Yg, yn):\n", " z = np.linalg.solve(BMB, B.T @ (Mk @ (y - q)))\n", " d = B @ z + q - y\n", " errs.append(float(np.sqrt((d.T @ Mk @ d)[0, 0])) / ym)\n", " return float(np.mean(errs))\n", "\n", "dof_lma, dof_skin, ei_lma, ei_skin = [], [], [], []\n", "for kk in mode_range:\n", " _, Bl = simkit.linear_modal_analysis(Xs, Ts, kk*6)\n", " _, _, Bs = simkit.skinning_eigenmodes(Xs, Ts, kk)\n", " dof_lma.append(Bl.shape[1]); ei_lma.append(turn_avg_error(Bl, Xs.reshape(-1, 1)))\n", " dof_skin.append(Bs.shape[1]); ei_skin.append(turn_avg_error(Bs, np.zeros((Xs.size, 1))))\n", "print(f\"LMA : up to {dof_lma[-1]:3d} DOFs -> turn-averaged error plateaus at {min(ei_lma):.3f} (never rotates)\")\n", "print(f\"skin: up to {dof_skin[-1]:3d} DOFs -> turn-averaged error max {max(ei_skin):.1e} (exact at every size)\")\n", "\n", "fig, ax = plt.subplots(figsize=(8.8, 5.0))\n", "ax.plot(dof_lma, ei_lma, \"-o\", color=LMA_C, lw=2.2, ms=6, label=\"LMA (k displacement modes)\")\n", "ax.plot(dof_skin, ei_skin, \"-o\", color=SKIN_C, lw=2.2, ms=6, label=\"skinning eigenmodes (6k affine DOFs)\")\n", "ax.set_yscale(\"log\")\n", "ax.set_xlabel(\"number of subspace DOFs\"); ax.set_ylabel(\"rotation-averaged reconstruction error (mass norm)\")\n", "ax.set_title(\"Error integrated over a full turn vs. subspace size\\nLMA shrinks but plateaus far from 0; skinning is exact everywhere\")\n", "ax.grid(True, which=\"both\", color=\"0.9\"); ax.legend(loc=\"center right\")\n", "fig.tight_layout(); fig.savefig(\"media/17_integrated_error.png\", dpi=130, bbox_inches=\"tight\"); plt.show()" ] }, { "cell_type": "markdown", "id": "d45830a4", "metadata": {}, "source": [ "### Takeaways\n", "\n", "* A subspace $x=Bz+q$ replaces an $n\\,\\text{dim}$-DOF solve with an $r$-DOF one. With **full integration** (no cubature) the gradient/Hessian still cost the full assembly — the subspace shrinks the **linear solve**, which is the part that explodes with resolution (Plots 1–2).\n", "* **Linear Modal Analysis** is a sum of fixed displacement fields: linear in $z$. Rotation is nonlinear in position, so it lives *outside* the LMA subspace — the reconstruction error of a rotated rest shape grows with the angle and peaks at $180^\\circ$. In dynamics this shows up as a free end that refuses to swing.\n", "* **Skinning eigenmodes** attach an affine transform (which *contains* rotation) to each Laplacian-eigenvector weight field, so the subspace reproduces rigid rotation to machine precision at every angle — and tracks the full-order sag where LMA stalls.\n", "* Rule of thumb: if the motion rotates — cantilevers, tails, tentacles, characters — use a **rotation-aware** subspace like skinning eigenmodes.\n", "\n", "---\n", "This extends the SimKit tutorials into **reduced-order modeling**: same neo-Hookean physics as tutorials 3–10, now solved in a handful of coordinates." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.9" } }, "nbformat": 4, "nbformat_minor": 5 }