From bda1bfe2224cba0e98223d6cea0c1e6f54d7d500 Mon Sep 17 00:00:00 2001 From: whyboris Date: Sat, 6 Jun 2020 23:46:17 -0400 Subject: [PATCH 01/17] first draft of conversion --- bin/convert.js | 65 +++++++++++++++++++++++++++++++++++++++++++ bin/extract.js | 5 ++++ convert.ts | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++ extract.ts | 5 ++++ package.json | 2 +- tsconfig.json | 8 ++++-- 6 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 bin/convert.js create mode 100644 convert.ts diff --git a/bin/convert.js b/bin/convert.js new file mode 100644 index 0000000..7ba32f0 --- /dev/null +++ b/bin/convert.js @@ -0,0 +1,65 @@ +"use strict"; +var __spreadArrays = (this && this.__spreadArrays) || function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; +exports.__esModule = true; +exports.convertForD3 = void 0; +var final = []; +var myMap; +/** + * Take a parent function and return all children in proper format + * @param parent + */ +function generateFromOneParent(parent) { + var newElements = []; + if (myMap.has(parent)) { + var children = myMap.get(parent); + children.forEach(function (element) { + newElements.push({ id: element, parents: [parent] }); + }); + } + return newElements; +} +/** + * Recursive function to generate each subsequent level + * @param parents + */ +function generateNextLevel(parents) { + // Generate the NodeForGraphing[] for this 'level' + var thisLevel = []; + parents.forEach(function (parent) { + thisLevel.push.apply(thisLevel, generateFromOneParent(parent)); + }); + if (thisLevel.length) { + final.push(__spreadArrays(thisLevel)); + } + // start building the next `level` + var nextLevel = []; + parents.forEach(function (parent) { + if (myMap.has(parent)) { + nextLevel.push.apply(nextLevel, myMap.get(parent)); + } + }); + if (nextLevel.length) { + generateNextLevel(nextLevel); + } +} +/** + * Convert the call map to format D3 wants + * @param calledFunctions + */ +function convertForD3(calledFunctions) { + myMap = calledFunctions; + // 1st case -- handle manually + final.push([{ id: 'openThisDamnFile' }]); + // all next cases generate automatically + generateNextLevel(['openThisDamnFile']); + console.log('===================='); + console.log(final); + console.log(JSON.stringify(final)); +} +exports.convertForD3 = convertForD3; diff --git a/bin/extract.js b/bin/extract.js index 72bb09c..03df9ec 100644 --- a/bin/extract.js +++ b/bin/extract.js @@ -2,6 +2,7 @@ exports.__esModule = true; exports.processFiles = void 0; var ts = require("typescript"); +var convert_1 = require("./convert"); var fs = require('fs'); var functionsToIgnore = []; // optionally ['require', 'parseInt', 'exec', 'reject', 'resolve']; var allFunctions = []; @@ -108,7 +109,11 @@ function processFiles(filenames) { calledFunctions.set(key, value.filter(function (calledFunc) { return allFunctions.includes(calledFunc); })); + if (!calledFunctions.get(key).length) { + calledFunctions["delete"](key); + } }); console.log(calledFunctions); + convert_1.convertForD3(calledFunctions); } exports.processFiles = processFiles; diff --git a/convert.ts b/convert.ts new file mode 100644 index 0000000..1c7ad4b --- /dev/null +++ b/convert.ts @@ -0,0 +1,75 @@ +interface NodeForGraphing { + id: string, + parents: string[], +} + +const final = []; + +let myMap: Map; + +/** + * Take a parent function and return all children in proper format + * @param parent + */ +function generateFromOneParent(parent: string): NodeForGraphing[] { + const newElements = []; + + if (myMap.has(parent)) { + const children = myMap.get(parent); + + children.forEach((element) => { + newElements.push({ id: element, parents: [parent] }); + }); + } + + return newElements; +} + +/** + * Recursive function to generate each subsequent level + * @param parents + */ +function generateNextLevel(parents: string[]): void { + + // Generate the NodeForGraphing[] for this 'level' + let thisLevel = []; + + parents.forEach(parent => { + thisLevel.push(...generateFromOneParent(parent)); + }); + + if (thisLevel.length) { + final.push([...thisLevel]); + } + + // start building the next `level` + let nextLevel = []; + + parents.forEach(parent => { + if (myMap.has(parent)) { + nextLevel.push(...myMap.get(parent)) + } + }); + + if (nextLevel.length) { + generateNextLevel(nextLevel); + } +} + +/** + * Convert the call map to format D3 wants + * @param calledFunctions + */ +export function convertForD3(calledFunctions: Map) { + myMap = calledFunctions; + + // 1st case -- handle manually + final.push([{ id: 'openThisDamnFile' }]); + // all next cases generate automatically + generateNextLevel(['openThisDamnFile']); + + console.log('===================='); + console.log(final); + console.log(JSON.stringify(final)); + +} diff --git a/extract.ts b/extract.ts index 9a4a05e..61d0307 100644 --- a/extract.ts +++ b/extract.ts @@ -1,4 +1,5 @@ import * as ts from "typescript"; +import { convertForD3 } from "./convert"; const fs = require('fs'); const functionsToIgnore: string[] = []; // optionally ['require', 'parseInt', 'exec', 'reject', 'resolve']; @@ -128,8 +129,12 @@ export function processFiles(filenames: string[]) { calledFunctions.set(key, value.filter((calledFunc: string) => { return allFunctions.includes(calledFunc); })); + if (!calledFunctions.get(key).length) { + calledFunctions.delete(key); + } }); console.log(calledFunctions); + convertForD3(calledFunctions); } diff --git a/package.json b/package.json index 086e80a..868d913 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "tcg": "./bin/index.js" }, "scripts": { - "start": "tsc && mv index.js bin/index.js && mv extract.js bin/extract.js && node bin/index.js *.ts", + "start": "tsc && node bin/index.js *.ts", "test": "node bin/index.js *.ts", "global": "npm install -g ." }, diff --git a/tsconfig.json b/tsconfig.json index ee87752..50d58d1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,13 @@ { "files": [ "index.ts", - "extract.ts" + "extract.ts", + "convert.ts" ], "exclude": [ "node_modules" - ] + ], + "compilerOptions": { + "outDir": "./bin" + } } From 0ee95592d93a0d27ba3f0b3e9041f5fb9a2acff1 Mon Sep 17 00:00:00 2001 From: whyboris Date: Tue, 9 Jun 2020 22:08:02 -0400 Subject: [PATCH 02/17] first draft of graphing --- README.md | 1 + bin/convert.js | 25 +- bin/index.js | 20 +- convert.ts | 31 ++- graphing/graph.js | 234 ++++++++++++++++ graphing/index.html | 30 +++ graphing/index.js | 1 + graphing/runtime.js | 2 + graphing/temp | 1 + index.ts | 28 +- package-lock.json | 631 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 6 +- 12 files changed, 994 insertions(+), 16 deletions(-) create mode 100644 graphing/graph.js create mode 100644 graphing/index.html create mode 100644 graphing/index.js create mode 100644 graphing/runtime.js create mode 100644 graphing/temp diff --git a/README.md b/README.md index 07fda58..6758af2 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Suggestions or PRs for how to improve this CLI are very welcome ๐Ÿ™‡ ### Thank you +- [Matteo Abrate](https://observablehq.com/@nitaku/tangled-tree-visualization-ii) for graphing code I could use - [Tutorial](https://convincedcoder.com/2019/01/19/Processing-TypeScript-using-TypeScript/) and code for processing TypeScript (AST) - [Tutorial](https://developer.okta.com/blog/2019/06/18/command-line-app-with-nodejs) for creating a *CLI* - [TS-Call-Graph](https://github.com/Deskbot/TS-Call-Graph) for inspiration diff --git a/bin/convert.js b/bin/convert.js index 7ba32f0..20a5711 100644 --- a/bin/convert.js +++ b/bin/convert.js @@ -8,7 +8,9 @@ var __spreadArrays = (this && this.__spreadArrays) || function () { }; exports.__esModule = true; exports.convertForD3 = void 0; +var fs = require('fs'); var final = []; +var calledAlready = []; // to keep track of what has been called; prevent reculsion! var myMap; /** * Take a parent function and return all children in proper format @@ -19,7 +21,9 @@ function generateFromOneParent(parent) { if (myMap.has(parent)) { var children = myMap.get(parent); children.forEach(function (element) { - newElements.push({ id: element, parents: [parent] }); + if (!calledAlready.includes(element)) { // PREVENT RECURSION ! + newElements.push({ id: element, parents: [parent] }); + } }); } return newElements; @@ -27,8 +31,13 @@ function generateFromOneParent(parent) { /** * Recursive function to generate each subsequent level * @param parents + * @param stackDepth - maximum depth of calls to trace */ -function generateNextLevel(parents) { +function generateNextLevel(parents, stackDepth) { + calledAlready.push.apply(calledAlready, parents); + if (stackDepth === 0) { + return; + } // Generate the NodeForGraphing[] for this 'level' var thisLevel = []; parents.forEach(function (parent) { @@ -45,7 +54,7 @@ function generateNextLevel(parents) { } }); if (nextLevel.length) { - generateNextLevel(nextLevel); + generateNextLevel(nextLevel, stackDepth - 1); } } /** @@ -55,11 +64,17 @@ function generateNextLevel(parents) { function convertForD3(calledFunctions) { myMap = calledFunctions; // 1st case -- handle manually - final.push([{ id: 'openThisDamnFile' }]); + final.push([{ id: 'proceed' }]); // all next cases generate automatically - generateNextLevel(['openThisDamnFile']); + generateNextLevel(['proceed'], 10); console.log('===================='); console.log(final); console.log(JSON.stringify(final)); + try { + fs.writeFileSync('./graphing/temp', JSON.stringify(final)); + } + catch (err) { + console.error(err); + } } exports.convertForD3 = convertForD3; diff --git a/bin/index.js b/bin/index.js index 83b988a..56e66fe 100755 --- a/bin/index.js +++ b/bin/index.js @@ -1,8 +1,9 @@ #!/usr/bin/env node "use strict"; exports.__esModule = true; -var extract_1 = require("./extract"); +var open = require("open"); var _a = require('kleur'), green = _a.green, bold = _a.bold; +var extract_1 = require("./extract"); var myArgs = process.argv.slice(2); var onlyTypescript = myArgs.filter(function (file) { return file.endsWith('ts'); }); var withoutNodeModules = onlyTypescript.filter(function (file) { return !file.includes('node_modules'); }); @@ -44,4 +45,21 @@ function showHelpMessage() { */ function proceed() { extract_1.processFiles(withoutNodeModules); + serveStuff(); +} +function serveStuff() { + var handler = require('serve-handler'); + var http = require('http'); + var server = http.createServer(function (request, response) { + return handler(request, response, { public: './graphing' }); + }); + server.listen(3000, function () { + console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); + console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); + console.log(green('โ”‚ ') + ' http://localhost:3000' + green(' โ”‚')); + console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); + console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); + var filePath = 'http://localhost:3000'; + open(filePath); + }); } diff --git a/convert.ts b/convert.ts index 1c7ad4b..c738eb8 100644 --- a/convert.ts +++ b/convert.ts @@ -1,3 +1,5 @@ +const fs = require('fs') + interface NodeForGraphing { id: string, parents: string[], @@ -5,6 +7,8 @@ interface NodeForGraphing { const final = []; +const calledAlready = []; // to keep track of what has been called; prevent reculsion! + let myMap: Map; /** @@ -18,7 +22,9 @@ function generateFromOneParent(parent: string): NodeForGraphing[] { const children = myMap.get(parent); children.forEach((element) => { - newElements.push({ id: element, parents: [parent] }); + if (!calledAlready.includes(element)) { // PREVENT RECURSION ! + newElements.push({ id: element, parents: [parent] }); + } }); } @@ -28,8 +34,15 @@ function generateFromOneParent(parent: string): NodeForGraphing[] { /** * Recursive function to generate each subsequent level * @param parents + * @param stackDepth - maximum depth of calls to trace */ -function generateNextLevel(parents: string[]): void { +function generateNextLevel(parents: string[], stackDepth: number): void { + + calledAlready.push(...parents); + + if (stackDepth === 0) { + return; + } // Generate the NodeForGraphing[] for this 'level' let thisLevel = []; @@ -47,12 +60,12 @@ function generateNextLevel(parents: string[]): void { parents.forEach(parent => { if (myMap.has(parent)) { - nextLevel.push(...myMap.get(parent)) + nextLevel.push(...myMap.get(parent)); } }); if (nextLevel.length) { - generateNextLevel(nextLevel); + generateNextLevel(nextLevel, stackDepth - 1); } } @@ -64,12 +77,18 @@ export function convertForD3(calledFunctions: Map) { myMap = calledFunctions; // 1st case -- handle manually - final.push([{ id: 'openThisDamnFile' }]); + final.push([{ id: 'proceed' }]); // all next cases generate automatically - generateNextLevel(['openThisDamnFile']); + generateNextLevel(['proceed'], 10); console.log('===================='); console.log(final); console.log(JSON.stringify(final)); + try { + fs.writeFileSync('./graphing/temp', JSON.stringify(final)) + } catch (err) { + console.error(err) + } + } diff --git a/graphing/graph.js b/graphing/graph.js new file mode 100644 index 0000000..a2660be --- /dev/null +++ b/graphing/graph.js @@ -0,0 +1,234 @@ +// https://observablehq.com/@nitaku/tangled-tree-visualization-ii@420 +export default function define(runtime, observer) { + const main = runtime.module(); + + main.builtin("FileAttachment", runtime.fileAttachments(() => new URL("./temp", import.meta.url))); + + main + .variable(observer()) + .define(["svg", "width", "data", "color"], function ( + svg, + width, + data, + color + ) { + return svg` + + ${data.bundles.map((b) => { + let d = b.links + .map((l) => ` + M${l.xt} ${l.yt} + L${l.xb - l.c1} ${l.yt} + A${l.c1} ${l.c1} 90 0 1 ${l.xb} ${l.yt + l.c1} + L${l.xb} ${l.ys - l.c2} + A${l.c2} ${l.c2} 90 0 0 ${l.xb + l.c2} ${l.ys} + L${l.xs} ${l.ys}` + ) + .join(""); + return ` + + + `; + })} + + ${data.nodes.map( + (n) => ` + + + + ${n.id} + ${n.id} + ` + )} + + `; + }); + main.variable(observer("data")).define("data", ["d3"], function (d3) { + + // console.log(main); + // console.log(main._scope.get('temporaryHackName')._value); + + const levels = main._scope.get('temporaryHackName')._value; + + // precompute level depth + levels.forEach((l, i) => l.forEach((n) => (n.level = i))); + + var nodes = levels.reduce((a, x) => a.concat(x), []); + var nodes_index = {}; + nodes.forEach((d) => (nodes_index[d.id] = d)); + + // objectification + nodes.forEach((d) => { + d.parents = (d.parents === undefined ? [] : d.parents).map( + (p) => nodes_index[p] + ); + }); + + // precompute bundles + levels.forEach((l, i) => { + var index = {}; + l.forEach((n) => { + if (n.parents.length == 0) { + return; + } + + var id = n.parents + .map((d) => d.id) + .sort() + .join("--"); + if (id in index) { + index[id].parents = index[id].parents.concat(n.parents); + } else { + index[id] = { id: id, parents: n.parents.slice(), level: i }; + } + n.bundle = index[id]; + }); + l.bundles = Object.keys(index).map((k) => index[k]); + l.bundles.forEach((b, i) => (b.i = i)); + }); + + var links = []; + nodes.forEach((d) => { + d.parents.forEach((p) => + links.push({ source: d, bundle: d.bundle, target: p }) + ); + }); + + var bundles = levels.reduce((a, x) => a.concat(x.bundles), []); + + // reverse pointer from parent to bundles + bundles.forEach((b) => + b.parents.forEach((p) => { + if (p.bundles_index === undefined) { + p.bundles_index = {}; + } + if (!(b.id in p.bundles_index)) { + p.bundles_index[b.id] = []; + } + p.bundles_index[b.id].push(b); + }) + ); + + nodes.forEach((n) => { + if (n.bundles_index !== undefined) { + n.bundles = Object.keys(n.bundles_index).map((k) => n.bundles_index[k]); + } else { + n.bundles_index = {}; + n.bundles = []; + } + n.bundles.forEach((b, i) => (b.i = i)); + }); + + links.forEach((l) => { + if (l.bundle.links === undefined) { + l.bundle.links = []; + } + l.bundle.links.push(l); + }); + + // layout + const padding = 8; + const node_height = 22; + const node_width = 120; + const bundle_width = 14; + const level_y_padding = 16; + const metro_d = 4; + const c = 16; + const min_family_height = 16; + + nodes.forEach( + (n) => (n.height = (Math.max(1, n.bundles.length) - 1) * metro_d) + ); + + var x_offset = padding; + var y_offset = padding; + levels.forEach((l) => { + x_offset += l.bundles.length * bundle_width; + y_offset += level_y_padding; + l.forEach((n, i) => { + n.x = n.level * node_width + x_offset; + n.y = node_height + y_offset + n.height / 2; + + y_offset += node_height + n.height; + }); + }); + + var i = 0; + levels.forEach((l) => { + l.bundles.forEach((b) => { + b.x = + b.parents[0].x + + node_width + + (l.bundles.length - 1 - b.i) * bundle_width; + b.y = i * node_height; + }); + i += l.length; + }); + + links.forEach((l) => { + l.xt = l.target.x; + l.yt = + l.target.y + + l.target.bundles_index[l.bundle.id].i * metro_d - + (l.target.bundles.length * metro_d) / 2 + + metro_d / 2; + l.xb = l.bundle.x; + l.xs = l.source.x; + l.ys = l.source.y; + }); + + // compress vertical space + var y_negative_offset = 0; + levels.forEach((l) => { + y_negative_offset += + -min_family_height + + d3.min(l.bundles, (b) => + d3.min(b.links, (link) => link.ys - c - (link.yt + c)) + ) || 0; + l.forEach((n) => (n.y -= y_negative_offset)); + }); + + // very ugly, I know + links.forEach((l) => { + l.yt = + l.target.y + + l.target.bundles_index[l.bundle.id].i * metro_d - + (l.target.bundles.length * metro_d) / 2 + + metro_d / 2; + l.ys = l.source.y; + l.c1 = l.source.level - l.target.level > 1 ? node_width + c : c; + l.c2 = c; + }); + + var layout = { + height: d3.max(nodes, (n) => n.y) + node_height / 2 + 2 * padding, + node_height, + node_width, + bundle_width, + level_y_padding, + metro_d, + }; + + return { levels, nodes, nodes_index, links, bundles, layout }; + }); + + main.variable(observer("color")).define("color", ["d3"], function (d3) { + return d3.scaleOrdinal(d3.schemeDark2); + }); + + main.variable(observer("d3")).define("d3", ["require"], function (require) { + return require("d3-scale", "d3-scale-chromatic", "d3-array"); + }); + + main.variable(observer()).define("temporaryHackName", ["FileAttachment"], function (lol) { + return lol().json() + }); + + return main; +} diff --git a/graphing/index.html b/graphing/index.html new file mode 100644 index 0000000..ce8eae3 --- /dev/null +++ b/graphing/index.html @@ -0,0 +1,30 @@ + + + TypeScript Call Graph + + + + + + + diff --git a/graphing/index.js b/graphing/index.js new file mode 100644 index 0000000..d5662a9 --- /dev/null +++ b/graphing/index.js @@ -0,0 +1 @@ +export {default} from "./graph.js"; diff --git a/graphing/runtime.js b/graphing/runtime.js new file mode 100644 index 0000000..96e3db0 --- /dev/null +++ b/graphing/runtime.js @@ -0,0 +1,2 @@ +// @observablehq/runtime v4.7.0 Copyright 2020 Observable, Inc. +function e(e,t,n){n=n||{};var r=e.ownerDocument,i=r.defaultView.CustomEvent;"function"==typeof i?i=new i(t,{detail:n}):((i=r.createEvent("Event")).initEvent(t,!1,!1),i.detail=n),e.dispatchEvent(i)}function t(e){return Array.isArray(e)||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function n(e){return e===(0|e)+""}function r(e){const t=document.createElement("span");return t.className="observablehq--cellname",t.textContent=`${e} = `,t}const i=Symbol.prototype.toString;function o(e){return i.call(e)}const{getOwnPropertySymbols:a,prototype:{hasOwnProperty:s}}=Object,{toStringTag:l}=Symbol,u={},c=a;function d(e,t){return s.call(e,t)}function f(e){return e[l]||e.constructor&&e.constructor.name||"Object"}function h(e,t){try{const n=e[t];return n&&n.constructor,n}catch(e){return u}}const p=[{symbol:"@@__IMMUTABLE_INDEXED__@@",name:"Indexed",modifier:!0},{symbol:"@@__IMMUTABLE_KEYED__@@",name:"Keyed",modifier:!0},{symbol:"@@__IMMUTABLE_LIST__@@",name:"List",arrayish:!0},{symbol:"@@__IMMUTABLE_MAP__@@",name:"Map"},{symbol:"@@__IMMUTABLE_ORDERED__@@",name:"Ordered",modifier:!0,prefix:!0},{symbol:"@@__IMMUTABLE_RECORD__@@",name:"Record"},{symbol:"@@__IMMUTABLE_SET__@@",name:"Set",arrayish:!0,setish:!0},{symbol:"@@__IMMUTABLE_STACK__@@",name:"Stack",arrayish:!0}];function m(e){try{let t=p.filter(({symbol:t})=>!0===e[t]);if(!t.length)return;const n=t.find(e=>!e.modifier),r="Map"===n.name&&t.find(e=>e.modifier&&e.prefix),i=t.some(e=>e.arrayish),o=t.some(e=>e.setish);return{name:`${r?r.name:""}${n.name}`,symbols:t,arrayish:i&&!o,setish:o}}catch(e){return null}}const{getPrototypeOf:v,getOwnPropertyDescriptors:b}=Object,_=v({});function w(n,i,o,a){let s,l,u,c,d=t(n);n instanceof Map?(s=`Map(${n.size})`,l=g):n instanceof Set?(s=`Set(${n.size})`,l=y):d?(s=`${n.constructor.name}(${n.length})`,l=E):(c=m(n))?(s=`Immutable.${c.name}${"Record"===c.name?"":`(${n.size})`}`,d=c.arrayish,l=c.arrayish?C:c.setish?x:P):a?(s=f(n),l=N):(s=f(n),l=S);const h=document.createElement("span");h.className="observablehq--expanded",o&&h.appendChild(r(o));const p=h.appendChild(document.createElement("a"));p.innerHTML="\n \n ",p.appendChild(document.createTextNode(`${s}${d?" [":" {"}`)),p.addEventListener("mouseup",function(e){e.stopPropagation(),se(h,k(n,null,o,a))}),l=l(n);for(let e=0;!(u=l.next()).done&&e<20;++e)h.appendChild(u.value);if(!u.done){const t=h.appendChild(document.createElement("a"));t.className="observablehq--field",t.style.display="block",t.appendChild(document.createTextNode(" โ€ฆ more")),t.addEventListener("mouseup",function(t){t.stopPropagation(),h.insertBefore(u.value,h.lastChild.previousSibling);for(let e=0;!(u=l.next()).done&&e<19;++e)h.insertBefore(u.value,h.lastChild.previousSibling);u.done&&h.removeChild(h.lastChild.previousSibling),e(h,"load")})}return h.appendChild(document.createTextNode(d?"]":"}")),h}function*g(e){for(const[t,n]of e)yield $(t,n);yield*S(e)}function*y(e){for(const t of e)yield L(t);yield*S(e)}function*x(e){for(const t of e)yield L(t)}function*E(e){for(let t=0,n=e.length;t ")),n.appendChild(ae(t)),n}function L(e){const t=document.createElement("div");return t.className="observablehq--field",t.appendChild(document.createTextNode(" ")),t.appendChild(ae(e)),t}function j(e){const t=window.getSelection();return"Range"===t.type&&(t.containsNode(e,!0)||t.anchorNode.isSelfOrDescendant(e)||t.focusNode.isSelfOrDescendant(e))}function k(e,n,i,o){let a,s,l,u,c=t(e);if(e instanceof Map?(a=`Map(${e.size})`,s=T):e instanceof Set?(a=`Set(${e.size})`,s=A):c?(a=`${e.constructor.name}(${e.length})`,s=R):(u=m(e))?(a=`Immutable.${u.name}${"Record"===u.name?"":`(${e.size})`}`,c=u.arrayish,s=u.arrayish?U:u.setish?O:F):(a=f(e),s=D),n){const t=document.createElement("span");return t.className="observablehq--shallow",i&&t.appendChild(r(i)),t.appendChild(document.createTextNode(a)),t.addEventListener("mouseup",function(n){j(t)||(n.stopPropagation(),se(t,k(e)))}),t}const d=document.createElement("span");d.className="observablehq--collapsed",i&&d.appendChild(r(i));const h=d.appendChild(document.createElement("a"));h.innerHTML="\n \n ",h.appendChild(document.createTextNode(`${a}${c?" [":" {"}`)),d.addEventListener("mouseup",function(t){j(d)||(t.stopPropagation(),se(d,w(e,0,i,o)))},!0),s=s(e);for(let e=0;!(l=s.next()).done&&e<20;++e)e>0&&d.appendChild(document.createTextNode(", ")),d.appendChild(l.value);return l.done||d.appendChild(document.createTextNode(", โ€ฆ")),d.appendChild(document.createTextNode(c?"]":"}")),d}function*T(e){for(const[t,n]of e)yield B(t,n);yield*D(e)}function*A(e){for(const t of e)yield ae(t,!0);yield*D(e)}function*O(e){for(const t of e)yield ae(t,!0)}function*U(e){let t=-1,n=0;for(const r=e.size;nt+1&&(yield I(n-t-1)),yield ae(e.get(n),!0),t=n;n>t+1&&(yield I(n-t-1))}function*R(e){let t=-1,r=0;for(const n=e.length;rt+1&&(yield I(r-t-1)),yield ae(h(e,r),!0),t=r);r>t+1&&(yield I(r-t-1));for(const t in e)!n(t)&&d(e,t)&&(yield z(t,h(e,t),"observablehq--key"));for(const t of c(e))yield z(o(t),h(e,t),"observablehq--symbol")}function*D(e){for(const t in e)d(e,t)&&(yield z(t,h(e,t),"observablehq--key"));for(const t of c(e))yield z(o(t),h(e,t),"observablehq--symbol")}function*F(e){for(const[t,n]of e)yield z(t,n,"observablehq--key")}function I(e){const t=document.createElement("span");return t.className="observablehq--empty",t.textContent=1===e?"empty":`empty ร— ${e}`,t}function z(e,t,n){const r=document.createDocumentFragment(),i=r.appendChild(document.createElement("span"));return i.className=n,i.textContent=e,r.appendChild(document.createTextNode(": ")),r.appendChild(ae(t,!0)),r}function B(e,t){const n=document.createDocumentFragment();return n.appendChild(ae(e,!0)),n.appendChild(document.createTextNode(" => ")),n.appendChild(ae(t,!0)),n}function H(e,t){var n=e+"",r=n.length;return r9999?"+"+H(e,6):H(e,4)}var V=Error.prototype.toString;var G=RegExp.prototype.toString;const K=20;function Y(e){return e.replace(/[\\`\x00-\x09\x0b-\x19]|\${/g,J)}function J(e){var t=e.charCodeAt(0);switch(t){case 8:return"\\b";case 9:return"\\t";case 11:return"\\v";case 12:return"\\f";case 13:return"\\r"}return t<16?"\\x0"+t.toString(16):t<32?"\\x"+t.toString(16):"\\"+e}function X(e,t){for(var n=0;t.exec(e);)++n;return n}var Q=Function.prototype.toString,Z={prefix:"async ฦ’"},ee={prefix:"async ฦ’*"},te={prefix:"class"},ne={prefix:"ฦ’"},re={prefix:"ฦ’*"};function ie(e,t,n){var i=document.createElement("span");i.className="observablehq--function",n&&i.appendChild(r(n));var o=i.appendChild(document.createElement("span"));return o.className="observablehq--keyword",o.textContent=e.prefix,i.appendChild(document.createTextNode(t)),i}const{prototype:{toString:oe}}=Object;function ae(e,t,n,i,a){let s=typeof e;switch(s){case"boolean":case"undefined":e+="";break;case"number":e=0===e&&1/e<0?"-0":e+"";break;case"bigint":e+="n";break;case"symbol":e=o(e);break;case"function":return function(e,t){var n,r,i=Q.call(e);switch(e.constructor&&e.constructor.name){case"AsyncFunction":n=Z;break;case"AsyncGeneratorFunction":n=ee;break;case"GeneratorFunction":n=re;break;default:n=/^class\b/.test(i)?te:ne}return n===te?ie(n,"",t):(r=/^(?:async\s*)?(\w+)\s*=>/.exec(i))?ie(n,"("+r[1]+")",t):(r=/^(?:async\s*)?\(\s*(\w+(?:\s*,\s*\w+)*)?\s*\)/.exec(i))?ie(n,r[1]?"("+r[1].replace(/\s*,\s*/g,", ")+")":"()",t):(r=/^(?:async\s*)?function(?:\s*\*)?(?:\s*\w+)?\s*\(\s*(\w+(?:\s*,\s*\w+)*)?\s*\)/.exec(i))?ie(n,r[1]?"("+r[1].replace(/\s*,\s*/g,", ")+")":"()",t):ie(n,"(โ€ฆ)",t)}(e,i);case"string":return function(e,t,n,i){if(!1===t){if(X(e,/["\n]/g)<=X(e,/`|\${/g)){const t=document.createElement("span");i&&t.appendChild(r(i));const n=t.appendChild(document.createElement("span"));return n.className="observablehq--string",n.textContent=JSON.stringify(e),t}const o=e.split("\n");if(o.length>K&&!n){const n=document.createElement("div");i&&n.appendChild(r(i));const a=n.appendChild(document.createElement("span"));a.className="observablehq--string",a.textContent="`"+Y(o.slice(0,K).join("\n"));const s=n.appendChild(document.createElement("span")),l=o.length-K;return s.textContent=`Show ${l} truncated line${l>1?"s":""}`,s.className="observablehq--string-expand",s.addEventListener("mouseup",function(r){r.stopPropagation(),se(n,ae(e,t,!0,i))}),n}const a=document.createElement("span");i&&a.appendChild(r(i));const s=a.appendChild(document.createElement("span"));return s.className=`observablehq--string${n?" observablehq--expanded":""}`,s.textContent="`"+Y(e)+"`",a}const o=document.createElement("span");i&&o.appendChild(r(i));const a=o.appendChild(document.createElement("span"));return a.className="observablehq--string",a.textContent=JSON.stringify(e.length>100?`${e.slice(0,50)}โ€ฆ${e.slice(-49)}`:e),o}(e,t,n,i);default:if(null===e){s=null,e="null";break}if(e instanceof Date){s="date",l=e,e=isNaN(l)?"Invalid Date":function(e){return 0===e.getUTCMilliseconds()&&0===e.getUTCSeconds()&&0===e.getUTCMinutes()&&0===e.getUTCHours()}(l)?W(l.getUTCFullYear())+"-"+H(l.getUTCMonth()+1,2)+"-"+H(l.getUTCDate(),2):W(l.getFullYear())+"-"+H(l.getMonth()+1,2)+"-"+H(l.getDate(),2)+"T"+H(l.getHours(),2)+":"+H(l.getMinutes(),2)+(l.getMilliseconds()?":"+H(l.getSeconds(),2)+"."+H(l.getMilliseconds(),3):l.getSeconds()?":"+H(l.getSeconds(),2):"");break}if(e===u){s="forbidden",e="[forbidden]";break}switch(oe.call(e)){case"[object RegExp]":s="regexp",e=function(e){return G.call(e)}(e);break;case"[object Error]":case"[object DOMException]":s="error",e=function(e){return e.stack||V.call(e)}(e);break;default:return(n?w:k)(e,t,i,a)}}var l;const c=document.createElement("span");i&&c.appendChild(r(i));const d=c.appendChild(document.createElement("span"));return d.className=`observablehq--${s}`,d.textContent=e,c}function se(t,n){t.classList.contains("observablehq--inspect")&&n.classList.add("observablehq--inspect"),t.parentNode.replaceChild(n,t),e(n,"load")}const le=/\s+\(\d+:\d+\)$/m;class ue{constructor(e){if(!e)throw new Error("invalid node");this._node=e,e.classList.add("observablehq")}pending(){const{_node:e}=this;e.classList.remove("observablehq--error"),e.classList.add("observablehq--running")}fulfilled(t,n){const{_node:r}=this;if((!(t instanceof Element||t instanceof Text)||t.parentNode&&t.parentNode!==r)&&(t=ae(t,!1,r.firstChild&&r.firstChild.classList&&r.firstChild.classList.contains("observablehq--expanded"),n)).classList.add("observablehq--inspect"),r.classList.remove("observablehq--running","observablehq--error"),r.firstChild!==t)if(r.firstChild){for(;r.lastChild!==r.firstChild;)r.removeChild(r.lastChild);r.replaceChild(t,r.firstChild)}else r.appendChild(t);e(r,"update")}rejected(t,n){const{_node:i}=this;for(i.classList.remove("observablehq--running"),i.classList.add("observablehq--error");i.lastChild;)i.removeChild(i.lastChild);var o=document.createElement("div");o.className="observablehq--inspect",n&&o.appendChild(r(n)),o.appendChild(document.createTextNode((t+"").replace(le,""))),i.appendChild(o),e(i,"error",{error:t})}}async function ce(e){const t=await fetch(await e.url());if(!t.ok)throw new Error(`Unable to load file: ${e.name}`);return t}ue.into=function(e){if("string"==typeof e&&null==(e=document.querySelector(e)))throw new Error("container not found");return function(){return new ue(e.appendChild(document.createElement("div")))}};class FileAttachment{constructor(e,t){Object.defineProperties(this,{_url:{value:e},name:{value:t,enumerable:!0}})}async url(){return this._url}async blob(){return(await ce(this)).blob()}async arrayBuffer(){return(await ce(this)).arrayBuffer()}async text(){return(await ce(this)).text()}async json(){return(await ce(this)).json()}async stream(){return(await ce(this)).body}async image(){const e=await this.url();return new Promise((t,n)=>{const r=new Image;new URL(e,document.baseURI).origin!==new URL(location).origin&&(r.crossOrigin="anonymous"),r.onload=()=>t(r),r.onerror=()=>n(new Error(`Unable to load file: ${this.name}`)),r.src=e})}}function de(e){throw new Error(`File not found: ${e}`)}const fe=new Map,he=[],pe=he.map,me=he.some,ve=he.hasOwnProperty,be="https://cdn.jsdelivr.net/npm/",_e=/^((?:@[^\/@]+\/)?[^\/@]+)(?:@([^\/]+))?(?:\/(.*))?$/,we=/^\d+\.\d+\.\d+(-[\w-.+]+)?$/,ge=/\.[^\/]*$/,ye=["unpkg","jsdelivr","browser","main"];class RequireError extends Error{constructor(e){super(e)}}function xe(e){const t=_e.exec(e);return t&&{name:t[1],version:t[2],path:t[3]}}function Ee(e){const t=`${be}${e.name}${e.version?`@${e.version}`:""}/package.json`;let n=fe.get(t);return n||fe.set(t,n=fetch(t).then(e=>{if(!e.ok)throw new RequireError("unable to load package.json");return e.redirected&&!fe.has(e.url)&&fe.set(e.url,n),e.json()})),n}RequireError.prototype.name=RequireError.name;var Ce=Ne(async function(e,t){if(e.startsWith(be)&&(e=e.substring(be.length)),/^(\w+:)|\/\//i.test(e))return e;if(/^[.]{0,2}\//i.test(e))return new URL(e,null==t?location:t).href;if(!e.length||/^[\s._]/.test(e)||/\s$/.test(e))throw new RequireError("illegal name");const n=xe(e);if(!n)return`${be}${e}`;if(!n.version&&null!=t&&t.startsWith(be)){const e=await Ee(xe(t.substring(be.length)));n.version=e.dependencies&&e.dependencies[n.name]||e.peerDependencies&&e.peerDependencies[n.name]}if(n.path&&!ge.test(n.path)&&(n.path+=".js"),n.path&&n.version&&we.test(n.version))return`${be}${n.name}@${n.version}/${n.path}`;const r=await Ee(n);return`${be}${r.name}@${r.version}/${n.path||function(e){for(const t of ye){const n=e[t];if("string"==typeof n)return ge.test(n)?n:`${n}.js`}}(r)||"index.js"}`});function Ne(e){const t=new Map,n=i(null);function r(e){if("string"!=typeof e)return e;let n=t.get(e);return n||t.set(e,n=new Promise((t,n)=>{const r=document.createElement("script");r.onload=()=>{try{t(he.pop()(i(e)))}catch(e){n(new RequireError("invalid module"))}r.remove()},r.onerror=()=>{n(new RequireError("unable to load module")),r.remove()},r.async=!0,r.src=e,window.define=Me,document.head.appendChild(r)})),n}function i(t){return n=>Promise.resolve(e(n,t)).then(r)}function o(e){return arguments.length>1?Promise.all(pe.call(arguments,n)).then(Se):n(e)}return o.alias=function(t){return Ne((n,r)=>n in t&&(r=null,"string"!=typeof(n=t[n]))?n:e(n,r))},o.resolve=e,o}function Se(e){const t={};for(const n of e)for(const e in n)ve.call(n,e)&&(null==n[e]?Object.defineProperty(t,e,{get:Pe(n,e)}):t[e]=n[e]);return t}function Pe(e,t){return()=>e[t]}function qe(e){return"exports"===(e+="")||"module"===e}function Me(e,t,n){const r=arguments.length;r<2?(n=e,t=[]):r<3&&(n=t,t="string"==typeof e?[]:e),he.push(me.call(t,qe)?e=>{const r={},i={exports:r};return Promise.all(pe.call(t,t=>"exports"===(t+="")?r:"module"===t?i:e(t))).then(e=>(n.apply(null,e),i.exports))}:e=>Promise.all(pe.call(t,e)).then(e=>"function"==typeof n?n.apply(null,e):n))}function $e(e){return function(){return e}}Me.amd={};var Le={math:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};var je=0;function ke(e){this.id=e,this.href=new URL(`#${e}`,location)+""}ke.prototype.toString=function(){return"url("+this.href+")"};var Te={canvas:function(e,t){var n=document.createElement("canvas");return n.width=e,n.height=t,n},context2d:function(e,t,n){null==n&&(n=devicePixelRatio);var r=document.createElement("canvas");r.width=e*n,r.height=t*n,r.style.width=e+"px";var i=r.getContext("2d");return i.scale(n,n),i},download:function(e,t="untitled",n="Save"){const r=document.createElement("a"),i=r.appendChild(document.createElement("button"));async function o(){await new Promise(requestAnimationFrame),URL.revokeObjectURL(r.href),r.removeAttribute("href"),i.textContent=n,i.disabled=!1}return i.textContent=n,r.download=t,r.onclick=async t=>{if(i.disabled=!0,r.href)return o();i.textContent="Savingโ€ฆ";try{const t=await("function"==typeof e?e():e);i.textContent="Download",r.href=URL.createObjectURL(t)}catch(e){i.textContent=n}if(t.eventPhase)return o();i.disabled=!1},r},element:function(e,t){var n,r=e+="",i=r.indexOf(":");i>=0&&"xmlns"!==(r=e.slice(0,i))&&(e=e.slice(i+1));var o=Le.hasOwnProperty(r)?document.createElementNS(Le[r],e):document.createElement(e);if(t)for(var a in t)i=(r=a).indexOf(":"),n=t[a],i>=0&&"xmlns"!==(r=a.slice(0,i))&&(a=a.slice(i+1)),Le.hasOwnProperty(r)?o.setAttributeNS(Le[r],a,n):o.setAttribute(a,n);return o},input:function(e){var t=document.createElement("input");return null!=e&&(t.type=e),t},range:function(e,t,n){1===arguments.length&&(t=e,e=null);var r=document.createElement("input");return r.min=e=null==e?0:+e,r.max=t=null==t?1:+t,r.step=null==n?"any":n=+n,r.type="range",r},select:function(e){var t=document.createElement("select");return Array.prototype.forEach.call(e,function(e){var n=document.createElement("option");n.value=n.textContent=e,t.appendChild(n)}),t},svg:function(e,t){var n=document.createElementNS("http://www.w3.org/2000/svg","svg");return n.setAttribute("viewBox",[0,0,e,t]),n.setAttribute("width",e),n.setAttribute("height",t),n},text:function(e){return document.createTextNode(e)},uid:function(e){return new ke("O-"+(null==e?"":e+"-")+ ++je)}};var Ae={buffer:function(e){return new Promise(function(t,n){var r=new FileReader;r.onload=function(){t(r.result)},r.onerror=n,r.readAsArrayBuffer(e)})},text:function(e){return new Promise(function(t,n){var r=new FileReader;r.onload=function(){t(r.result)},r.onerror=n,r.readAsText(e)})},url:function(e){return new Promise(function(t,n){var r=new FileReader;r.onload=function(){t(r.result)},r.onerror=n,r.readAsDataURL(e)})}};function Oe(){return this}function Ue(e,t){let n=!1;return{[Symbol.iterator]:Oe,next:()=>n?{done:!0}:(n=!0,{done:!1,value:e}),return:()=>(n=!0,t(e),{done:!0}),throw:()=>({done:n=!0})}}function Re(e){let t,n,r=!1;const i=e(function(e){n?(n(e),n=null):r=!0;return t=e});return{[Symbol.iterator]:Oe,throw:()=>({done:!0}),return:()=>(null!=i&&i(),{done:!0}),next:function(){return{done:!1,value:r?(r=!1,Promise.resolve(t)):new Promise(e=>n=e)}}}}function De(e){switch(e.type){case"range":case"number":return e.valueAsNumber;case"date":return e.valueAsDate;case"checkbox":return e.checked;case"file":return e.multiple?e.files:e.files[0];default:return e.value}}var Fe={disposable:Ue,filter:function*(e,t){for(var n,r=-1;!(n=e.next()).done;)t(n.value,++r)&&(yield n.value)},input:function(e){return Re(function(t){var n=function(e){switch(e.type){case"button":case"submit":case"checkbox":return"click";case"file":return"change";default:return"input"}}(e),r=De(e);function i(){t(De(e))}return e.addEventListener(n,i),void 0!==r&&t(r),function(){e.removeEventListener(n,i)}})},map:function*(e,t){for(var n,r=-1;!(n=e.next()).done;)yield t(n.value,++r)},observe:Re,queue:function(e){let t;const n=[],r=e(function(e){n.push(e),t&&(t(n.shift()),t=null);return e});return{[Symbol.iterator]:Oe,throw:()=>({done:!0}),return:()=>(null!=r&&r(),{done:!0}),next:function(){return{done:!1,value:n.length?Promise.resolve(n.shift()):new Promise(e=>t=e)}}}},range:function*(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((t-e)/n));++r{n.terminate(),URL.revokeObjectURL(t)})}};function Ie(e,t){return function(n){var r,i,o,a,s,l,u,c,d=n[0],f=[],h=null,p=-1;for(s=1,l=arguments.length;s0){for(o=new Array(p),a=document.createTreeWalker(h,NodeFilter.SHOW_COMMENT,null,!1);a.nextNode();)i=a.currentNode,/^o:/.test(i.nodeValue)&&(o[+i.nodeValue.slice(2)]=i);for(s=0;s0&&e(Be+"highlight.min.js").then(function(t){i.forEach(function(n){function r(){t.highlightBlock(n),n.parentNode.classList.add("observablehq--md-pre")}t.getLanguage(n.className)?r():e(Be+"async-languages/index.js").then(r=>{if(r.has(n.className))return e(Be+"async-languages/"+r.get(n.className)).then(e=>{t.registerLanguage(n.className,e)})}).then(r,r)})}),r},function(){return document.createElement("div")})})}}function We(e){let t;Object.defineProperties(this,{generator:{value:Re(e=>void(t=e))},value:{get:()=>e,set:n=>t(e=n)}}),void 0!==e&&t(e)}function*Ve(){for(;;)yield Date.now()}var Ge=new Map;function Ke(e,t){var n;return(n=Ge.get(e=+e))?n.then($e(t)):(n=Date.now())>=e?Promise.resolve(t):function(e,t){var n=new Promise(function(n){Ge.delete(t);var r=t-e;if(!(r>0))throw new Error("invalid time");if(r>2147483647)throw new Error("too long to wait");setTimeout(n,r)});return Ge.set(t,n),n}(n,e).then($e(t))}var Ye={delay:function(e,t){return new Promise(function(n){setTimeout(function(){n(t)},e)})},tick:function(e,t){return Ke(Math.ceil((Date.now()+1)/e)*e,t)},when:Ke};function Je(e,t){if(/^(\w+:)|\/\//i.test(e))return e;if(/^[.]{0,2}\//i.test(e))return new URL(e,null==t?location:t).href;if(!e.length||/^[\s._]/.test(e)||/\s$/.test(e))throw new Error("illegal name");return"https://unpkg.com/"+e}function Xe(e){return null==e?Ce:Ne(e)}var Qe=Ie(function(e){var t=document.createElementNS("http://www.w3.org/2000/svg","g");return t.innerHTML=e.trim(),t},function(){return document.createElementNS("http://www.w3.org/2000/svg","g")}),Ze=String.raw;function et(e){return new Promise(function(t,n){var r=document.createElement("link");r.rel="stylesheet",r.href=e,r.onerror=n,r.onload=t,document.head.appendChild(r)})}function tt(e){return function(){return Promise.all([e("@observablehq/katex@0.11.1/dist/katex.min.js"),e.resolve("@observablehq/katex@0.11.1/dist/katex.min.css").then(et)]).then(function(e){var t=e[0],n=r();function r(e){return function(){var n=document.createElement("div");return t.render(Ze.apply(String,arguments),n,e),n.removeChild(n.firstChild)}}return n.options=r,n.block=r({displayMode:!0}),n})}}function nt(){return Re(function(e){var t=e(document.body.clientWidth);function n(){var n=document.body.clientWidth;n!==t&&e(t=n)}return window.addEventListener("resize",n),function(){window.removeEventListener("resize",n)}})}var rt=Object.assign(function(e){const t=Xe(e);Object.defineProperties(this,{DOM:{value:Te,writable:!0,enumerable:!0},FileAttachment:{value:$e(de),writable:!0,enumerable:!0},Files:{value:Ae,writable:!0,enumerable:!0},Generators:{value:Fe,writable:!0,enumerable:!0},html:{value:$e(ze),writable:!0,enumerable:!0},md:{value:He(t),writable:!0,enumerable:!0},Mutable:{value:$e(We),writable:!0,enumerable:!0},now:{value:Ve,writable:!0,enumerable:!0},Promises:{value:Ye,writable:!0,enumerable:!0},require:{value:$e(t),writable:!0,enumerable:!0},resolve:{value:$e(Je),writable:!0,enumerable:!0},svg:{value:$e(Qe),writable:!0,enumerable:!0},tex:{value:tt(t),writable:!0,enumerable:!0},width:{value:nt,writable:!0,enumerable:!0}})},{resolve:Ce.resolve});function it(e,t){this.message=e+"",this.input=t}it.prototype=Object.create(Error.prototype),it.prototype.name="RuntimeError",it.prototype.constructor=it;var ot=Array.prototype,at=ot.map,st=ot.forEach;function lt(e){return function(){return e}}function ut(e){return e}function ct(){}var dt=1,ft=2,ht=3,pt={};function mt(e,t,n){var r;null==n&&(n=pt),Object.defineProperties(this,{_observer:{value:n,writable:!0},_definition:{value:_t,writable:!0},_duplicate:{value:void 0,writable:!0},_duplicates:{value:void 0,writable:!0},_indegree:{value:NaN,writable:!0},_inputs:{value:[],writable:!0},_invalidate:{value:ct,writable:!0},_module:{value:t},_name:{value:null,writable:!0},_outputs:{value:new Set,writable:!0},_promise:{value:Promise.resolve(void 0),writable:!0},_reachable:{value:n!==pt,writable:!0},_rejector:{value:(r=this,function(e){if(e===_t)throw new it(r._name+" is not defined",r._name);throw new it(r._name+" could not be resolved",r._name)})},_type:{value:e},_value:{value:void 0,writable:!0},_version:{value:0,writable:!0}})}function vt(e){e._module._runtime._dirty.add(e),e._outputs.add(this)}function bt(e){e._module._runtime._dirty.add(e),e._outputs.delete(this)}function _t(){throw _t}function wt(e){return function(){throw new it(e+" is defined more than once")}}function gt(e,t,n){var r=this._module._scope,i=this._module._runtime;if(this._inputs.forEach(bt,this),t.forEach(vt,this),this._inputs=t,this._definition=n,this._value=void 0,n===ct?i._variables.delete(this):i._variables.add(this),e==this._name&&r.get(e)===this)this._outputs.forEach(i._updates.add,i._updates);else{var o,a;if(this._name)if(this._outputs.size)r.delete(this._name),(a=this._module._resolve(this._name))._outputs=this._outputs,this._outputs=new Set,a._outputs.forEach(function(e){e._inputs[e._inputs.indexOf(this)]=a},this),a._outputs.forEach(i._updates.add,i._updates),i._dirty.add(a).add(this),r.set(this._name,a);else if((a=r.get(this._name))===this)r.delete(this._name);else{if(a._type!==ht)throw new Error;a._duplicates.delete(this),this._duplicate=void 0,1===a._duplicates.size&&(a=a._duplicates.keys().next().value,o=r.get(this._name),a._outputs=o._outputs,o._outputs=new Set,a._outputs.forEach(function(e){e._inputs[e._inputs.indexOf(o)]=a}),a._definition=a._duplicate,a._duplicate=void 0,i._dirty.add(o).add(a),i._updates.add(a),r.set(this._name,a))}if(this._outputs.size)throw new Error;e&&((a=r.get(e))?a._type===ht?(this._definition=wt(e),this._duplicate=n,a._duplicates.add(this)):a._type===ft?(this._outputs=a._outputs,a._outputs=new Set,this._outputs.forEach(function(e){e._inputs[e._inputs.indexOf(a)]=this},this),i._dirty.add(a).add(this),r.set(e,this)):(a._duplicate=a._definition,this._duplicate=n,(o=new mt(ht,this._module))._name=e,o._definition=this._definition=a._definition=wt(e),o._outputs=a._outputs,a._outputs=new Set,o._outputs.forEach(function(e){e._inputs[e._inputs.indexOf(a)]=o}),o._duplicates=new Set([this,a]),i._dirty.add(a).add(o),i._updates.add(a).add(o),r.set(e,o)):r.set(e,this)),this._name=e}return i._updates.add(this),i._compute(),this}function yt(e,t=[]){Object.defineProperties(this,{_runtime:{value:e},_scope:{value:new Map},_builtins:{value:new Map([["invalidation",Ct],["visibility",Nt],...t])},_source:{value:null,writable:!0}})}function xt(e){return e._name}Object.defineProperties(mt.prototype,{_pending:{value:function(){this._observer.pending&&this._observer.pending()},writable:!0,configurable:!0},_fulfilled:{value:function(e){this._observer.fulfilled&&this._observer.fulfilled(e,this._name)},writable:!0,configurable:!0},_rejected:{value:function(e){this._observer.rejected&&this._observer.rejected(e,this._name)},writable:!0,configurable:!0},define:{value:function(e,t,n){switch(arguments.length){case 1:n=e,e=t=null;break;case 2:n=t,"string"==typeof e?t=null:(t=e,e=null)}return gt.call(this,null==e?null:e+"",null==t?[]:at.call(t,this._module._resolve,this._module),"function"==typeof n?n:lt(n))},writable:!0,configurable:!0},delete:{value:function(){return gt.call(this,null,[],ct)},writable:!0,configurable:!0},import:{value:function(e,t,n){arguments.length<3&&(n=t,t=e);return gt.call(this,t+"",[n._resolve(e+"")],ut)},writable:!0,configurable:!0}}),Object.defineProperties(yt.prototype,{_copy:{value:function(e,t){e._source=this,t.set(this,e);for(const[o,a]of this._scope){var n=e._scope.get(o);if(!n||n._type!==dt)if(a._definition===ut){var r=a._inputs[0],i=r._module;e.import(r._name,o,t.get(i)||(i._source?i._copy(new yt(e._runtime,e._builtins),t):i))}else e.define(o,a._inputs.map(xt),a._definition)}return e},writable:!0,configurable:!0},_resolve:{value:function(e){var t,n=this._scope.get(e);if(!n)if(n=new mt(ft,this),this._builtins.has(e))n.define(e,lt(this._builtins.get(e)));else if(this._runtime._builtin._scope.has(e))n.import(e,this._runtime._builtin);else{try{t=this._runtime._global(e)}catch(t){return n.define(e,(r=t,function(){throw r}))}void 0===t?this._scope.set(n._name=e,n):n.define(e,lt(t))}var r;return n},writable:!0,configurable:!0},redefine:{value:function(e){var t=this._scope.get(e);if(!t)throw new it(e+" is not defined");if(t._type===ht)throw new it(e+" is defined more than once");return t.define.apply(t,arguments)},writable:!0,configurable:!0},define:{value:function(){var e=new mt(dt,this);return e.define.apply(e,arguments)},writable:!0,configurable:!0},derive:{value:function(e,t){var n=new yt(this._runtime,this._builtins);return n._source=this,st.call(e,function(e){"object"!=typeof e&&(e={name:e+""}),null==e.alias&&(e.alias=e.name),n.import(e.name,e.alias,t)}),Promise.resolve().then(()=>{const e=new Set([this]);for(const t of e)for(const n of t._scope.values())if(n._definition===ut){const t=n._inputs[0]._module,r=t._source||t;if(r===this)return void console.warn("circular module definition; ignoring");e.add(r)}this._copy(n,new Map)}),n},writable:!0,configurable:!0},import:{value:function(){var e=new mt(dt,this);return e.import.apply(e,arguments)},writable:!0,configurable:!0},value:{value:async function(e){var t=this._scope.get(e);if(!t)throw new it(e+" is not defined");t._observer===pt&&(t._observer=!0,this._runtime._dirty.add(t));return await this._runtime._compute(),t._promise},writable:!0,configurable:!0},variable:{value:function(e){return new mt(dt,this,e)},writable:!0,configurable:!0},builtin:{value:function(e,t){this._builtins.set(e,t)},writable:!0,configurable:!0}});const Et="function"==typeof requestAnimationFrame?requestAnimationFrame:setImmediate;var Ct={},Nt={};function St(e=new rt,t=function(e){return window[e]}){var n=this.module();if(Object.defineProperties(this,{_dirty:{value:new Set},_updates:{value:new Set},_computing:{value:null,writable:!0},_init:{value:null,writable:!0},_modules:{value:new Map},_variables:{value:new Set},_disposed:{value:!1,writable:!0},_builtin:{value:n},_global:{value:t}}),e)for(var r in e)new mt(ft,n).define(r,[],e[r])}function Pt(e){const t=new Set(e._inputs);for(const n of t){if(n===e)return!0;n._inputs.forEach(t.add,t)}return!1}function qt(e){++e._indegree}function Mt(e){--e._indegree}function $t(e){return e._promise.catch(e._rejector)}function Lt(e){return new Promise(function(t){e._invalidate=t})}function jt(e,t){let n,r,i="function"==typeof IntersectionObserver&&t._observer&&t._observer._node,o=!i,a=ct,s=ct;return i&&((r=new IntersectionObserver(([e])=>(o=e.isIntersecting)&&(n=null,a()))).observe(i),e.then(()=>(r.disconnect(),r=null,s()))),function(e){return o?Promise.resolve(e):r?(n||(n=new Promise((e,t)=>(a=e,s=t))),n.then(()=>e)):Promise.reject()}}function kt(e){e._invalidate(),e._invalidate=ct,e._pending();var t=e._value,n=++e._version,r=null,i=e._promise=Promise.all(e._inputs.map($t)).then(function(i){if(e._version===n){for(var o=0,a=i.length;ot._reachable?this._updates.add(t):n{e._invalidate(),e._version=NaN})},writable:!0,configurable:!0},module:{value:function(e,t=ct){let n;if(void 0===e)return(n=this._init)?(this._init=null,n):new yt(this);if(n=this._modules.get(e))return n;this._init=n=new yt(this),this._modules.set(e,n);try{e(this,t)}finally{this._init=null}return n},writable:!0,configurable:!0},fileAttachments:{value:function(e){return t=>{const n=e(t+="");if(null==n)throw new Error(`File not found: ${t}`);return new FileAttachment(n,t)}},writable:!0,configurable:!0}});export{ue as Inspector,rt as Library,St as Runtime,it as RuntimeError}; diff --git a/graphing/temp b/graphing/temp new file mode 100644 index 0000000..f36b333 --- /dev/null +++ b/graphing/temp @@ -0,0 +1 @@ +[[{"id":"proceed"}],[{"id":"serveStuff","parents":["proceed"]}]] \ No newline at end of file diff --git a/index.ts b/index.ts index 6f0cf6f..7e368de 100644 --- a/index.ts +++ b/index.ts @@ -1,9 +1,10 @@ #!/usr/bin/env node -import { processFiles } from './extract'; - +import open = require('open'); const { green, bold } = require('kleur'); +import { processFiles } from './extract'; + const myArgs = process.argv.slice(2); const onlyTypescript: string[] = myArgs.filter(file => file.endsWith('ts')); @@ -54,4 +55,27 @@ function showHelpMessage(): void { */ function proceed(): void { processFiles(withoutNodeModules); + + serveStuff(); +} + + + +function serveStuff(): void { + const handler = require('serve-handler'); + const http = require('http'); + + const server = http.createServer((request, response) => { + return handler(request, response, { public: './graphing' }); + }) + + server.listen(3000, () => { + console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); + console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); + console.log(green('โ”‚ ') + ' http://localhost:3000' + green(' โ”‚')); + console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); + console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); + const filePath: string = 'http://localhost:3000'; + open(filePath); + }); } diff --git a/package-lock.json b/package-lock.json index 0955c47..1625554 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,68 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.11.tgz", "integrity": "sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg==" }, + "@zeit/schemas": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "ansi-escapes": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", @@ -36,11 +98,139 @@ "color-convert": "^2.0.1" } }, + "arch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", + "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==" + }, + "arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -54,6 +244,31 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" }, + "clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "requires": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "dependencies": { + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -67,6 +282,61 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -77,6 +347,20 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -87,6 +371,31 @@ "tmp": "^0.0.33" } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "requires": { + "punycode": "^1.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -95,6 +404,11 @@ "escape-string-regexp": "^1.0.5" } }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -108,6 +422,11 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, "inquirer": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", @@ -139,11 +458,39 @@ } } }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -154,16 +501,74 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, "onetime": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", @@ -172,11 +577,83 @@ "mimic-fn": "^2.1.0" } }, + "open": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "^1.0.1" + } + }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -199,11 +676,75 @@ "tslib": "^1.9.0" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "serve": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz", + "integrity": "sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==", + "requires": { + "@zeit/schemas": "2.6.0", + "ajv": "6.5.3", + "arg": "2.0.0", + "boxen": "1.3.0", + "chalk": "2.4.1", + "clipboardy": "1.2.3", + "compression": "1.7.3", + "serve-handler": "6.1.3", + "update-check": "1.5.2" + } + }, + "serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "requires": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + }, + "dependencies": { + "mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + }, + "mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "requires": { + "mime-db": "~1.33.0" + } + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -227,6 +768,16 @@ "ansi-regex": "^5.0.0" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -235,6 +786,14 @@ "has-flag": "^4.0.0" } }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -262,6 +821,78 @@ "version": "3.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==" + }, + "update-check": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", + "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", + "requires": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } } diff --git a/package.json b/package.json index 868d913..450420b 100644 --- a/package.json +++ b/package.json @@ -18,14 +18,16 @@ "tcg": "./bin/index.js" }, "scripts": { - "start": "tsc && node bin/index.js *.ts", - "test": "node bin/index.js *.ts", + "start": "tsc && node bin/index.js index.ts", + "test": "node bin/index.js index.ts", "global": "npm install -g ." }, "dependencies": { "@types/node": "14.0.11", "inquirer": "7.1.0", "kleur": "3.0.3", + "open": "7.0.4", + "serve": "11.3.2", "typescript": "3.9.5" }, "devDependencies": {} From 07ce88e475f5f5d28051a50cedc76499df43719d Mon Sep 17 00:00:00 2001 From: whyboris Date: Tue, 9 Jun 2020 23:10:44 -0400 Subject: [PATCH 03/17] cleaner --- .gitignore | 1 + bin/convert.js | 4 +++- bin/extract.js | 4 ++-- bin/index.js | 4 +++- convert.ts | 4 +++- extract.ts | 3 ++- graphing/graph.js | 2 ++ graphing/temp | 1 - index.ts | 5 ++++- package.json | 2 +- 10 files changed, 21 insertions(+), 9 deletions(-) delete mode 100644 graphing/temp diff --git a/.gitignore b/.gitignore index 3c3629e..94eb1ae 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +graphing/temp diff --git a/bin/convert.js b/bin/convert.js index 20a5711..7082b35 100644 --- a/bin/convert.js +++ b/bin/convert.js @@ -67,9 +67,11 @@ function convertForD3(calledFunctions) { final.push([{ id: 'proceed' }]); // all next cases generate automatically generateNextLevel(['proceed'], 10); - console.log('===================='); + console.log('======================================'); console.log(final); + console.log('--------------------------------------'); console.log(JSON.stringify(final)); + console.log(''); try { fs.writeFileSync('./graphing/temp', JSON.stringify(final)); } diff --git a/bin/extract.js b/bin/extract.js index 03df9ec..e68fad8 100644 --- a/bin/extract.js +++ b/bin/extract.js @@ -2,7 +2,6 @@ exports.__esModule = true; exports.processFiles = void 0; var ts = require("typescript"); -var convert_1 = require("./convert"); var fs = require('fs'); var functionsToIgnore = []; // optionally ['require', 'parseInt', 'exec', 'reject', 'resolve']; var allFunctions = []; @@ -96,6 +95,7 @@ function processFiles(filenames) { }); calledFunctions["delete"](undefined); // Output + console.log(''); console.log('======================================'); console.log(allFunctions); console.log('--------------------------------------'); @@ -114,6 +114,6 @@ function processFiles(filenames) { } }); console.log(calledFunctions); - convert_1.convertForD3(calledFunctions); + return calledFunctions; } exports.processFiles = processFiles; diff --git a/bin/index.js b/bin/index.js index 56e66fe..1d1b310 100755 --- a/bin/index.js +++ b/bin/index.js @@ -4,6 +4,7 @@ exports.__esModule = true; var open = require("open"); var _a = require('kleur'), green = _a.green, bold = _a.bold; var extract_1 = require("./extract"); +var convert_1 = require("./convert"); var myArgs = process.argv.slice(2); var onlyTypescript = myArgs.filter(function (file) { return file.endsWith('ts'); }); var withoutNodeModules = onlyTypescript.filter(function (file) { return !file.includes('node_modules'); }); @@ -44,7 +45,8 @@ function showHelpMessage() { * If user confirms the files they want to analyze, proceed */ function proceed() { - extract_1.processFiles(withoutNodeModules); + var functionMap = extract_1.processFiles(withoutNodeModules); + convert_1.convertForD3(functionMap); serveStuff(); } function serveStuff() { diff --git a/convert.ts b/convert.ts index c738eb8..98ad3b6 100644 --- a/convert.ts +++ b/convert.ts @@ -81,9 +81,11 @@ export function convertForD3(calledFunctions: Map) { // all next cases generate automatically generateNextLevel(['proceed'], 10); - console.log('===================='); + console.log('======================================'); console.log(final); + console.log('--------------------------------------'); console.log(JSON.stringify(final)); + console.log(''); try { fs.writeFileSync('./graphing/temp', JSON.stringify(final)) diff --git a/extract.ts b/extract.ts index 61d0307..a160ccf 100644 --- a/extract.ts +++ b/extract.ts @@ -115,6 +115,7 @@ export function processFiles(filenames: string[]) { calledFunctions.delete(undefined); // Output + console.log(''); console.log('======================================'); console.log(allFunctions); console.log('--------------------------------------'); @@ -136,5 +137,5 @@ export function processFiles(filenames: string[]) { console.log(calledFunctions); - convertForD3(calledFunctions); + return calledFunctions; } diff --git a/graphing/graph.js b/graphing/graph.js index a2660be..3a2c5ff 100644 --- a/graphing/graph.js +++ b/graphing/graph.js @@ -56,6 +56,8 @@ export default function define(runtime, observer) { const levels = main._scope.get('temporaryHackName')._value; + // const levels = JSON.parse('[[{"id":"abc"}],[{"id":"abc2","parents":["abc"]},{"id":"abc3"}],[{"id": "lol", "parents": ["abc3", "abc2"]}]]'); + // precompute level depth levels.forEach((l, i) => l.forEach((n) => (n.level = i))); diff --git a/graphing/temp b/graphing/temp deleted file mode 100644 index f36b333..0000000 --- a/graphing/temp +++ /dev/null @@ -1 +0,0 @@ -[[{"id":"proceed"}],[{"id":"serveStuff","parents":["proceed"]}]] \ No newline at end of file diff --git a/index.ts b/index.ts index 7e368de..b41c3df 100644 --- a/index.ts +++ b/index.ts @@ -4,6 +4,7 @@ import open = require('open'); const { green, bold } = require('kleur'); import { processFiles } from './extract'; +import { convertForD3 } from './convert'; const myArgs = process.argv.slice(2); @@ -54,7 +55,9 @@ function showHelpMessage(): void { * If user confirms the files they want to analyze, proceed */ function proceed(): void { - processFiles(withoutNodeModules); + const functionMap: Map = processFiles(withoutNodeModules); + + convertForD3(functionMap); serveStuff(); } diff --git a/package.json b/package.json index 450420b..f0f2167 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ }, "scripts": { "start": "tsc && node bin/index.js index.ts", - "test": "node bin/index.js index.ts", + "test": "node bin/index.js index.ts extract.ts convert.ts", "global": "npm install -g ." }, "dependencies": { From 4c9b98fa4a69d986bc6f1d78c1abdf523068a9eb Mon Sep 17 00:00:00 2001 From: whyboris Date: Tue, 9 Jun 2020 23:11:37 -0400 Subject: [PATCH 04/17] remove unused --- extract.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/extract.ts b/extract.ts index a160ccf..5f4abdd 100644 --- a/extract.ts +++ b/extract.ts @@ -1,5 +1,4 @@ import * as ts from "typescript"; -import { convertForD3 } from "./convert"; const fs = require('fs'); const functionsToIgnore: string[] = []; // optionally ['require', 'parseInt', 'exec', 'reject', 'resolve']; From a9f43edc7af0f0b67a956ed43da618dca5db560a Mon Sep 17 00:00:00 2001 From: whyboris Date: Wed, 10 Jun 2020 00:31:21 -0400 Subject: [PATCH 05/17] save as PNG or SVG --- graphing/graph.js | 26 +++++++++++++++++++++ graphing/index.html | 56 ++++++++++++++++++++++++++++++++++++++------- 2 files changed, 74 insertions(+), 8 deletions(-) diff --git a/graphing/graph.js b/graphing/graph.js index 3a2c5ff..c16f3ae 100644 --- a/graphing/graph.js +++ b/graphing/graph.js @@ -4,6 +4,19 @@ export default function define(runtime, observer) { main.builtin("FileAttachment", runtime.fileAttachments(() => new URL("./temp", import.meta.url))); + main.variable(observer()).define(["html"], function(html) { + + // setTimeout(() => { + // const levels = main._scope.get('temporaryHackName')._value; + // console.log(levels); + // }, 1000); + + return ( + html`
Call Graph
` + ) + + }); + main .variable(observer()) .define(["svg", "width", "data", "color"], function ( @@ -14,6 +27,19 @@ export default function define(runtime, observer) { ) { return svg` + + ${data.bundles.map((b) => { let d = b.links .map((l) => ` diff --git a/graphing/index.html b/graphing/index.html index ce8eae3..1308a5b 100644 --- a/graphing/index.html +++ b/graphing/index.html @@ -6,15 +6,15 @@ .observablehq--inspect { display: none; } - text { + .heading { font-family: sans-serif; - font-size: 10px; + margin: 20px 5px 0; } - .node { - stroke-linecap: round; - } - .link { - fill: none; + a { + display: block; + margin: 10px; + font-family: sans-serif; + font-size: 12px; } @@ -26,5 +26,45 @@ const runtime = new Runtime(); const main = runtime.module(define, Inspector.into(document.body)); - + + // Save to SVG & PNG + setTimeout(() => { + // Thank you @gustavohenke for the Gist: https://gist.github.com/gustavohenke/9073132 + var svg = document.querySelector( "svg" ); + var svgData = new XMLSerializer().serializeToString( svg ); + + var canvas = document.createElement( "canvas" ); + var ctx = canvas.getContext( "2d" ); + + var svgSize = svg.getBoundingClientRect(); + canvas.width = svgSize.width; + canvas.height = svgSize.height; + + var img = document.createElement( "img" ); + img.setAttribute( "src", "data:image/svg+xml;base64," + btoa( svgData ) ); + + img.onload = function() { + ctx.drawImage( img, 0, 0 ); + + const pngBase64 = canvas.toDataURL("image/png"); + + var a = document.createElement("a"); + a.download = "callgraph.png"; + a.href = pngBase64; + a.innerHTML = "download as PNG"; + document.body.appendChild(a); + + const svgBase64 = "data:image/svg+xml;base64," + btoa( svgData ); + + var b = document.createElement("a"); + b.download = "callgraph.svg"; + b.href = svgBase64; + b.innerHTML = "download as SVG"; + document.body.appendChild(b); + + }; + + }, 350); + + From fb23e2f1c331b80b6522d9299bdfdf851c2f89b9 Mon Sep 17 00:00:00 2001 From: Boris Yakubchik Date: Wed, 10 Jun 2020 23:02:33 -0400 Subject: [PATCH 06/17] GraphViz working --- .gitignore | 1 + README.md | 1 + bin/graphviz.js | 23 +++++++++++++++++++++++ bin/index.js | 2 ++ graphing/index.html | 8 ++++++-- graphviz.ts | 26 ++++++++++++++++++++++++++ index.ts | 3 +++ package-lock.json | 13 +++++++++++++ package.json | 1 + tsconfig.json | 3 ++- 10 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 bin/graphviz.js create mode 100644 graphviz.ts diff --git a/.gitignore b/.gitignore index 94eb1ae..53ab5eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules graphing/temp +graphing/temp.png diff --git a/README.md b/README.md index 6758af2..39f3b09 100644 --- a/README.md +++ b/README.md @@ -33,4 +33,5 @@ Suggestions or PRs for how to improve this CLI are very welcome ๐Ÿ™‡ - [Matteo Abrate](https://observablehq.com/@nitaku/tangled-tree-visualization-ii) for graphing code I could use - [Tutorial](https://convincedcoder.com/2019/01/19/Processing-TypeScript-using-TypeScript/) and code for processing TypeScript (AST) - [Tutorial](https://developer.okta.com/blog/2019/06/18/command-line-app-with-nodejs) for creating a *CLI* +- [GraphViz](https://graphviz.org/) and [node-graphviz](https://github.com/glejeune/node-graphviz) - [TS-Call-Graph](https://github.com/Deskbot/TS-Call-Graph) for inspiration diff --git a/bin/graphviz.js b/bin/graphviz.js new file mode 100644 index 0000000..80d607f --- /dev/null +++ b/bin/graphviz.js @@ -0,0 +1,23 @@ +"use strict"; +exports.__esModule = true; +exports.generateGraphViz = void 0; +var graphviz = require('graphviz'); +function generateGraphViz(functionMap) { + var g = graphviz.digraph("G"); + functionMap.forEach(function (value, key) { + g.addNode(key); + }); + functionMap.forEach(function (childArr, key) { + childArr.forEach(function (child) { + g.addEdge(key, child); + }); + }); + console.log(g.to_dot()); + try { + g.output("png", "graphing/temp.png"); + } + catch (err) { + console.log('GraphViz not installed'); + } +} +exports.generateGraphViz = generateGraphViz; diff --git a/bin/index.js b/bin/index.js index 1d1b310..ff45d06 100755 --- a/bin/index.js +++ b/bin/index.js @@ -5,6 +5,7 @@ var open = require("open"); var _a = require('kleur'), green = _a.green, bold = _a.bold; var extract_1 = require("./extract"); var convert_1 = require("./convert"); +var graphviz_1 = require("./graphviz"); var myArgs = process.argv.slice(2); var onlyTypescript = myArgs.filter(function (file) { return file.endsWith('ts'); }); var withoutNodeModules = onlyTypescript.filter(function (file) { return !file.includes('node_modules'); }); @@ -47,6 +48,7 @@ function showHelpMessage() { function proceed() { var functionMap = extract_1.processFiles(withoutNodeModules); convert_1.convertForD3(functionMap); + graphviz_1.generateGraphViz(functionMap); serveStuff(); } function serveStuff() { diff --git a/graphing/index.html b/graphing/index.html index 1308a5b..954e0ff 100644 --- a/graphing/index.html +++ b/graphing/index.html @@ -48,7 +48,7 @@ const pngBase64 = canvas.toDataURL("image/png"); - var a = document.createElement("a"); + const a = document.createElement("a"); a.download = "callgraph.png"; a.href = pngBase64; a.innerHTML = "download as PNG"; @@ -56,7 +56,7 @@ const svgBase64 = "data:image/svg+xml;base64," + btoa( svgData ); - var b = document.createElement("a"); + const b = document.createElement("a"); b.download = "callgraph.svg"; b.href = svgBase64; b.innerHTML = "download as SVG"; @@ -64,6 +64,10 @@ }; + const c = document.createElement("img"); + c.src = "temp.png"; + document.body.appendChild(c); + }, 350); diff --git a/graphviz.ts b/graphviz.ts new file mode 100644 index 0000000..18f7479 --- /dev/null +++ b/graphviz.ts @@ -0,0 +1,26 @@ +const graphviz = require('graphviz'); + +export function generateGraphViz(functionMap: Map) { + + const g = graphviz.digraph("G"); + + functionMap.forEach((value, key) => { + g.addNode(key); + }); + + functionMap.forEach((childArr, key) => { + childArr.forEach((child) => { + g.addEdge(key, child); + }); + }); + + console.log(g.to_dot()); + + try { + g.output("png", "graphing/temp.png"); + } catch (err) { + console.log('GraphViz not installed'); + } +} + + diff --git a/index.ts b/index.ts index b41c3df..89aed58 100644 --- a/index.ts +++ b/index.ts @@ -5,6 +5,7 @@ const { green, bold } = require('kleur'); import { processFiles } from './extract'; import { convertForD3 } from './convert'; +import { generateGraphViz } from './graphviz'; const myArgs = process.argv.slice(2); @@ -59,6 +60,8 @@ function proceed(): void { convertForD3(functionMap); + generateGraphViz(functionMap); + serveStuff(); } diff --git a/package-lock.json b/package-lock.json index 1625554..1ac6c16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -409,6 +409,14 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, + "graphviz": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/graphviz/-/graphviz-0.0.9.tgz", + "integrity": "sha512-SmoY2pOtcikmMCqCSy2NO1YsRfu9OO0wpTlOYW++giGjfX1a6gax/m1Fo8IdUd0/3H15cTOfR1SMKwohj4LKsg==", + "requires": { + "temp": "~0.4.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -786,6 +794,11 @@ "has-flag": "^4.0.0" } }, + "temp": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz", + "integrity": "sha1-ZxrWPVe+D+nXKUZks/xABjZnimA=" + }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", diff --git a/package.json b/package.json index f0f2167..fdb99fa 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ }, "dependencies": { "@types/node": "14.0.11", + "graphviz": "0.0.9", "inquirer": "7.1.0", "kleur": "3.0.3", "open": "7.0.4", diff --git a/tsconfig.json b/tsconfig.json index 50d58d1..13d7207 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,8 @@ "files": [ "index.ts", "extract.ts", - "convert.ts" + "convert.ts", + "graphviz.ts" ], "exclude": [ "node_modules" From fcdc731d1830eb9f466d0016fd172d16f65514c9 Mon Sep 17 00:00:00 2001 From: Boris Yakubchik Date: Wed, 10 Jun 2020 23:28:38 -0400 Subject: [PATCH 07/17] GraphViz horizontal --- bin/graphviz.js | 1 + graphviz.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/bin/graphviz.js b/bin/graphviz.js index 80d607f..6ca79be 100644 --- a/bin/graphviz.js +++ b/bin/graphviz.js @@ -4,6 +4,7 @@ exports.generateGraphViz = void 0; var graphviz = require('graphviz'); function generateGraphViz(functionMap) { var g = graphviz.digraph("G"); + g.set("rankdir", "LR"); functionMap.forEach(function (value, key) { g.addNode(key); }); diff --git a/graphviz.ts b/graphviz.ts index 18f7479..1601dfa 100644 --- a/graphviz.ts +++ b/graphviz.ts @@ -4,6 +4,8 @@ export function generateGraphViz(functionMap: Map) { const g = graphviz.digraph("G"); + g.set("rankdir", "LR"); + functionMap.forEach((value, key) => { g.addNode(key); }); From 5fb84b753bbfe4de466fd914244e72662c0b4948 Mon Sep 17 00:00:00 2001 From: Boris Yakubchik Date: Thu, 11 Jun 2020 22:56:49 -0400 Subject: [PATCH 08/17] use Express to serve data --- .gitignore | 1 - bin/convert.js | 13 +- bin/index.js | 40 ++- convert.ts | 18 +- graphing/graph.js | 122 ++++--- index.ts | 45 ++- package-lock.json | 798 ++++++++++++++++------------------------------ package.json | 2 +- 8 files changed, 398 insertions(+), 641 deletions(-) diff --git a/.gitignore b/.gitignore index 53ab5eb..b0b3e8b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ node_modules -graphing/temp graphing/temp.png diff --git a/bin/convert.js b/bin/convert.js index 7082b35..1acd7bd 100644 --- a/bin/convert.js +++ b/bin/convert.js @@ -8,10 +8,10 @@ var __spreadArrays = (this && this.__spreadArrays) || function () { }; exports.__esModule = true; exports.convertForD3 = void 0; -var fs = require('fs'); +// Some globals +var myMap; var final = []; var calledAlready = []; // to keep track of what has been called; prevent reculsion! -var myMap; /** * Take a parent function and return all children in proper format * @param parent @@ -63,6 +63,8 @@ function generateNextLevel(parents, stackDepth) { */ function convertForD3(calledFunctions) { myMap = calledFunctions; + final = []; + calledAlready = []; // 1st case -- handle manually final.push([{ id: 'proceed' }]); // all next cases generate automatically @@ -72,11 +74,6 @@ function convertForD3(calledFunctions) { console.log('--------------------------------------'); console.log(JSON.stringify(final)); console.log(''); - try { - fs.writeFileSync('./graphing/temp', JSON.stringify(final)); - } - catch (err) { - console.error(err); - } + return final; } exports.convertForD3 = convertForD3; diff --git a/bin/index.js b/bin/index.js index ff45d06..03fc079 100755 --- a/bin/index.js +++ b/bin/index.js @@ -28,6 +28,9 @@ if (withoutNodeModules.length) { else { showHelpMessage(); } +/** + * Shown when user runs `tcg` without arguments + */ function showHelpMessage() { console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); console.log(green('โ”‚ โ”‚')); @@ -47,23 +50,28 @@ function showHelpMessage() { */ function proceed() { var functionMap = extract_1.processFiles(withoutNodeModules); - convert_1.convertForD3(functionMap); graphviz_1.generateGraphViz(functionMap); - serveStuff(); + startServer(functionMap); } -function serveStuff() { - var handler = require('serve-handler'); - var http = require('http'); - var server = http.createServer(function (request, response) { - return handler(request, response, { public: './graphing' }); - }); - server.listen(3000, function () { - console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); - console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); - console.log(green('โ”‚ ') + ' http://localhost:3000' + green(' โ”‚')); - console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); - console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); - var filePath = 'http://localhost:3000'; - open(filePath); +/** + * Start Express server with static files and API endpoints + * @param functionMap + */ +function startServer(functionMap) { + var express = require('express'); + var app = express(); + var path = require('path'); + app.use(express.static(path.join(__dirname, '..', 'graphing'))); + app.get('/hi', function (req, res) { + res.json(convert_1.convertForD3(functionMap)); }); + app.listen(3000); + var filePath = 'http://localhost:3000'; + // Helpful message + console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); + console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); + console.log(green('โ”‚ ') + filePath + green(' โ”‚')); + console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); + console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); + open(filePath); } diff --git a/convert.ts b/convert.ts index 98ad3b6..e960a91 100644 --- a/convert.ts +++ b/convert.ts @@ -1,15 +1,12 @@ -const fs = require('fs') - interface NodeForGraphing { id: string, parents: string[], } -const final = []; - -const calledAlready = []; // to keep track of what has been called; prevent reculsion! - +// Some globals let myMap: Map; +let final = []; +let calledAlready = []; // to keep track of what has been called; prevent reculsion! /** * Take a parent function and return all children in proper format @@ -75,6 +72,8 @@ function generateNextLevel(parents: string[], stackDepth: number): void { */ export function convertForD3(calledFunctions: Map) { myMap = calledFunctions; + final = []; + calledAlready = []; // 1st case -- handle manually final.push([{ id: 'proceed' }]); @@ -87,10 +86,5 @@ export function convertForD3(calledFunctions: Map) { console.log(JSON.stringify(final)); console.log(''); - try { - fs.writeFileSync('./graphing/temp', JSON.stringify(final)) - } catch (err) { - console.error(err) - } - + return final; } diff --git a/graphing/graph.js b/graphing/graph.js index c16f3ae..f164b7b 100644 --- a/graphing/graph.js +++ b/graphing/graph.js @@ -2,87 +2,75 @@ export default function define(runtime, observer) { const main = runtime.module(); - main.builtin("FileAttachment", runtime.fileAttachments(() => new URL("./temp", import.meta.url))); + main.builtin("FileAttachment", runtime.fileAttachments(() => new URL("http://localhost:3000/hi", import.meta.url))); main.variable(observer()).define(["html"], function(html) { - - // setTimeout(() => { - // const levels = main._scope.get('temporaryHackName')._value; - // console.log(levels); - // }, 1000); - return ( html`
Call Graph
` ) + }); + + main.variable(observer()).define(["svg", "width", "data", "color"], function (svg, width, data, color) { + return svg` + + + ${data.bundles.map((b) => { + let d = b.links + .map((l) => ` + M${l.xt} ${l.yt} + L${l.xb - l.c1} ${l.yt} + A${l.c1} ${l.c1} 90 0 1 ${l.xb} ${l.yt + l.c1} + L${l.xb} ${l.ys - l.c2} + A${l.c2} ${l.c2} 90 0 0 ${l.xb + l.c2} ${l.ys} + L${l.xs} ${l.ys}` + ) + .join(""); + return ` + + + `; + })} + + ${data.nodes.map( + (n) => ` + + + + ${n.id} + ${n.id} + ` + )} + + `; }); - main - .variable(observer()) - .define(["svg", "width", "data", "color"], function ( - svg, - width, - data, - color - ) { - return svg` - - - - ${data.bundles.map((b) => { - let d = b.links - .map((l) => ` - M${l.xt} ${l.yt} - L${l.xb - l.c1} ${l.yt} - A${l.c1} ${l.c1} 90 0 1 ${l.xb} ${l.yt + l.c1} - L${l.xb} ${l.ys - l.c2} - A${l.c2} ${l.c2} 90 0 0 ${l.xb + l.c2} ${l.ys} - L${l.xs} ${l.ys}` - ) - .join(""); - return ` - - - `; - })} - - ${data.nodes.map( - (n) => ` - - - - ${n.id} - ${n.id} - ` - )} - - `; - }); main.variable(observer("data")).define("data", ["d3"], function (d3) { // console.log(main); // console.log(main._scope.get('temporaryHackName')._value); + // levels = JSON.parse('[[{"id":"abc"}],[{"id":"abc2","parents":["abc"]},{"id":"abc3"}],[{"id": "lol", "parents": ["abc3", "abc2"]}]]'); - const levels = main._scope.get('temporaryHackName')._value; + let levels = main._scope.get('temporaryHackName')._value; - // const levels = JSON.parse('[[{"id":"abc"}],[{"id":"abc2","parents":["abc"]},{"id":"abc3"}],[{"id": "lol", "parents": ["abc3", "abc2"]}]]'); + // console.log(levels); // precompute level depth levels.forEach((l, i) => l.forEach((n) => (n.level = i))); diff --git a/index.ts b/index.ts index 89aed58..addd993 100644 --- a/index.ts +++ b/index.ts @@ -36,6 +36,9 @@ if (withoutNodeModules.length) { showHelpMessage(); } +/** + * Shown when user runs `tcg` without arguments + */ function showHelpMessage(): void { console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); console.log(green('โ”‚ โ”‚')); @@ -58,30 +61,38 @@ function showHelpMessage(): void { function proceed(): void { const functionMap: Map = processFiles(withoutNodeModules); - convertForD3(functionMap); - generateGraphViz(functionMap); - serveStuff(); + startServer(functionMap); } +/** + * Start Express server with static files and API endpoints + * @param functionMap + */ +function startServer(functionMap): void { + const express = require('express'); + const app = express(); -function serveStuff(): void { - const handler = require('serve-handler'); - const http = require('http'); + const path = require('path'); - const server = http.createServer((request, response) => { - return handler(request, response, { public: './graphing' }); - }) + app.use(express.static(path.join(__dirname, '..', 'graphing'))); - server.listen(3000, () => { - console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); - console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); - console.log(green('โ”‚ ') + ' http://localhost:3000' + green(' โ”‚')); - console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); - console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); - const filePath: string = 'http://localhost:3000'; - open(filePath); + app.get('/hi', function (req, res) { + res.json(convertForD3(functionMap)); }); + + app.listen(3000) + + const filePath: string = 'http://localhost:3000'; + + // Helpful message + console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); + console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); + console.log(green('โ”‚ ') + filePath + green(' โ”‚')); + console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); + console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); + + open(filePath); } diff --git a/package-lock.json b/package-lock.json index 1ac6c16..31f6849 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.11.tgz", "integrity": "sha512-lCvvI24L21ZVeIiyIUHZ5Oflv1hhHQ5E1S25IRlKIXaRkVgmXpJMI3wUJkmym2bTbCe+WoIibQnMVAU3FguaOg==" }, - "@zeit/schemas": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", - "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==" - }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -28,54 +23,6 @@ "negotiator": "0.6.2" } }, - "ajv": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", - "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "requires": { - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "ansi-escapes": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", @@ -98,126 +45,32 @@ "color-convert": "^2.0.1" } }, - "arch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", - "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==" - }, - "arg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", - "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" } } }, @@ -226,11 +79,6 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" - }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -244,31 +92,6 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" }, - "clipboardy": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", - "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", - "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" - }, - "dependencies": { - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -282,47 +105,20 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, - "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.14", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "debug": { "version": "2.6.9", @@ -332,33 +128,101 @@ "ms": "2.0.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + } } }, "external-editor": { @@ -371,31 +235,6 @@ "tmp": "^0.0.33" } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", - "requires": { - "punycode": "^1.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } - } - }, "figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -404,10 +243,29 @@ "escape-string-regexp": "^1.0.5" } }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "graphviz": { "version": "0.0.9", @@ -422,6 +280,18 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -430,10 +300,10 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { "version": "7.1.0", @@ -466,6 +336,11 @@ } } }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, "is-docker": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", @@ -476,11 +351,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -489,16 +359,6 @@ "is-docker": "^2.0.0" } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -509,14 +369,25 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { "version": "1.44.0", @@ -536,19 +407,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -564,19 +422,14 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { - "path-key": "^2.0.0" + "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, "onetime": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", @@ -599,67 +452,41 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" } }, - "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "rc": "^1.0.1" + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } } }, "restore-cursor": { @@ -694,70 +521,64 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "serve": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz", - "integrity": "sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==", + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { - "@zeit/schemas": "2.6.0", - "ajv": "6.5.3", - "arg": "2.0.0", - "boxen": "1.3.0", - "chalk": "2.4.1", - "clipboardy": "1.2.3", - "compression": "1.7.3", - "serve-handler": "6.1.3", - "update-check": "1.5.2" - } - }, - "serve-handler": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", - "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", - "requires": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.0.4", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { - "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, - "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "requires": { - "mime-db": "~1.33.0" - } + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" } } }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "shebang-regex": "^1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" } }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -776,16 +597,6 @@ "ansi-regex": "^5.0.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -799,14 +610,6 @@ "resolved": "https://registry.npmjs.org/temp/-/temp-0.4.0.tgz", "integrity": "sha1-ZxrWPVe+D+nXKUZks/xABjZnimA=" }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "requires": { - "execa": "^0.7.0" - } - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -820,6 +623,11 @@ "os-tmpdir": "~1.0.2" } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, "tslib": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", @@ -830,82 +638,34 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, "typescript": { "version": "3.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==" }, - "update-check": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", - "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", - "requires": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } } diff --git a/package.json b/package.json index fdb99fa..7f179ca 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,11 @@ }, "dependencies": { "@types/node": "14.0.11", + "express": "4.17.1", "graphviz": "0.0.9", "inquirer": "7.1.0", "kleur": "3.0.3", "open": "7.0.4", - "serve": "11.3.2", "typescript": "3.9.5" }, "devDependencies": {} From 4c868324933b66f333e8865223d7020f81069ed7 Mon Sep 17 00:00:00 2001 From: Boris Yakubchik Date: Mon, 15 Jun 2020 19:38:22 -0400 Subject: [PATCH 09/17] graphviz svg --- bin/graphviz.js | 9 +- bin/index.js | 5 +- graphing/d3-graphviz.js | 2213 +++++++++++++++++++++++++++++++++++ graphing/d3-graphviz.js.map | 1 + graphing/d3.v5.min.js | 2 + graphing/graphvizlib.wasm | Bin 0 -> 1095009 bytes graphing/index.html | 23 +- graphing/index.min.js | 1 + graphing/index.min.js.map | 1 + graphviz.ts | 8 +- index.ts | 6 +- package-lock.json | 105 ++ package.json | 1 + 13 files changed, 2357 insertions(+), 18 deletions(-) create mode 100644 graphing/d3-graphviz.js create mode 100644 graphing/d3-graphviz.js.map create mode 100644 graphing/d3.v5.min.js create mode 100644 graphing/graphvizlib.wasm create mode 100644 graphing/index.min.js create mode 100644 graphing/index.min.js.map diff --git a/bin/graphviz.js b/bin/graphviz.js index 6ca79be..02b20cf 100644 --- a/bin/graphviz.js +++ b/bin/graphviz.js @@ -13,12 +13,7 @@ function generateGraphViz(functionMap) { g.addEdge(key, child); }); }); - console.log(g.to_dot()); - try { - g.output("png", "graphing/temp.png"); - } - catch (err) { - console.log('GraphViz not installed'); - } + // console.log(g.to_dot()); + return g.to_dot(); } exports.generateGraphViz = generateGraphViz; diff --git a/bin/index.js b/bin/index.js index 03fc079..aa858be 100755 --- a/bin/index.js +++ b/bin/index.js @@ -50,7 +50,7 @@ function showHelpMessage() { */ function proceed() { var functionMap = extract_1.processFiles(withoutNodeModules); - graphviz_1.generateGraphViz(functionMap); + // generateGraphViz(functionMap); startServer(functionMap); } /** @@ -65,6 +65,9 @@ function startServer(functionMap) { app.get('/hi', function (req, res) { res.json(convert_1.convertForD3(functionMap)); }); + app.get('/dot', function (req, res) { + res.json(graphviz_1.generateGraphViz(functionMap)); + }); app.listen(3000); var filePath = 'http://localhost:3000'; // Helpful message diff --git a/graphing/d3-graphviz.js b/graphing/d3-graphviz.js new file mode 100644 index 0000000..ae03d8c --- /dev/null +++ b/graphing/d3-graphviz.js @@ -0,0 +1,2213 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-transition'), require('d3-timer'), require('d3-interpolate'), require('d3-zoom'), require('@hpcc-js/wasm'), require('d3-format'), require('d3-path')) : + typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-transition', 'd3-timer', 'd3-interpolate', 'd3-zoom', '@hpcc-js/wasm', 'd3-format', 'd3-path'], factory) : + (global = global || self, factory(global['d3-graphviz'] = {}, global.d3, global.d3, global.d3, global.d3, global.d3, global.d3, global['@hpcc-js/wasm'], global.d3, global.d3)); +}(this, (function (exports, d3, d3Dispatch, d3Transition, d3Timer, d3Interpolate, d3Zoom, wasm, d3Format, d3Path) { 'use strict'; + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } + } + + function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); + } + + function extractElementData(element) { + var datum = {}; + var tag = element.node().nodeName; + datum.tag = tag; + + if (tag == '#text') { + datum.text = element.text(); + } else if (tag == '#comment') { + datum.comment = element.text(); + } + + datum.attributes = {}; + var attributes = element.node().attributes; + + if (attributes) { + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + var name = attribute.name; + var value = attribute.value; + datum.attributes[name] = value; + } + } + + var transform = element.node().transform; + + if (transform && transform.baseVal.numberOfItems != 0) { + var matrix = transform.baseVal.consolidate().matrix; + datum.translation = { + x: matrix.e, + y: matrix.f + }; + datum.scale = matrix.a; + } + + if (tag == 'ellipse') { + datum.center = { + x: datum.attributes.cx, + y: datum.attributes.cy + }; + } + + if (tag == 'polygon') { + var points = element.attr('points').split(' '); + var x = points.map(function (p) { + return p.split(',')[0]; + }); + var y = points.map(function (p) { + return p.split(',')[1]; + }); + var xmin = Math.min.apply(null, x); + var xmax = Math.max.apply(null, x); + var ymin = Math.min.apply(null, y); + var ymax = Math.max.apply(null, y); + var bbox = { + x: xmin, + y: ymin, + width: xmax - xmin, + height: ymax - ymin + }; + datum.bbox = bbox; + datum.center = { + x: (xmin + xmax) / 2, + y: (ymin + ymax) / 2 + }; + } + + if (tag == 'path') { + var d = element.attr('d'); + var points = d.split(/[A-Z ]/); + points.shift(); + var x = points.map(function (p) { + return +p.split(',')[0]; + }); + var y = points.map(function (p) { + return +p.split(',')[1]; + }); + var xmin = Math.min.apply(null, x); + var xmax = Math.max.apply(null, x); + var ymin = Math.min.apply(null, y); + var ymax = Math.max.apply(null, y); + var bbox = { + x: xmin, + y: ymin, + width: xmax - xmin, + height: ymax - ymin + }; + datum.bbox = bbox; + datum.center = { + x: (xmin + xmax) / 2, + y: (ymin + ymax) / 2 + }; + datum.totalLength = element.node().getTotalLength(); + } + + if (tag == 'text') { + datum.center = { + x: element.attr('x'), + y: element.attr('y') + }; + } + + if (tag == '#text') { + datum.text = element.text(); + } else if (tag == '#comment') { + datum.comment = element.text(); + } + + return datum; + } + function extractAllElementsData(element) { + var datum = extractElementData(element); + datum.children = []; + var children = d3.selectAll(element.node().childNodes); + children.each(function () { + var childData = extractAllElementsData(d3.select(this)); + childData.parent = datum; + datum.children.push(childData); + }); + return datum; + } + function createElement(data) { + if (data.tag == '#text') { + return document.createTextNode(""); + } else if (data.tag == '#comment') { + return document.createComment(data.comment); + } else { + return document.createElementNS('http://www.w3.org/2000/svg', data.tag); + } + } + function createElementWithAttributes(data) { + var elementNode = createElement(data); + var element = d3.select(elementNode); + var attributes = data.attributes; + + for (var _i = 0, _Object$keys = Object.keys(attributes); _i < _Object$keys.length; _i++) { + var attributeName = _Object$keys[_i]; + var attributeValue = attributes[attributeName]; + element.attr(attributeName, attributeValue); + } + + return elementNode; + } + function replaceElement(element, data) { + var parent = d3.select(element.node().parentNode); + var newElementNode = createElementWithAttributes(data); + var newElement = parent.insert(function () { + return newElementNode; + }, function () { + return element.node(); + }); + element.remove(); + return newElement; + } + function insertElementData(element, datum) { + element.datum(datum); + element.data([datum], function (d) { + return d.key; + }); + } + function insertAllElementsData(element, datum) { + insertElementData(element, datum); + var children = d3.selectAll(element.node().childNodes); + children.each(function (d, i) { + insertAllElementsData(d3.select(this), datum.children[i]); + }); + } + + function insertChildren(element, index) { + var children = element.selectAll(function () { + return element.node().childNodes; + }); + children = children.data(function (d) { + return d.children; + }, function (d) { + return d.tag + '-' + index; + }); + var childrenEnter = children.enter().append(function (d) { + return createElement(d); + }); + var childrenExit = children.exit(); + childrenExit = childrenExit.remove(); + children = childrenEnter.merge(children); + var childTagIndexes = {}; + children.each(function (childData) { + var childTag = childData.tag; + + if (childTagIndexes[childTag] == null) { + childTagIndexes[childTag] = 0; + } + + var childIndex = childTagIndexes[childTag]++; + attributeElement.call(this, childData, childIndex); + }); + } + + function attributeElement(data) { + var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var element = d3.select(this); + var tag = data.tag; + var attributes = data.attributes; + var currentAttributes = element.node().attributes; + + if (currentAttributes) { + for (var i = 0; i < currentAttributes.length; i++) { + var currentAttribute = currentAttributes[i]; + var name = currentAttribute.name; + + if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) { + var namespaceURIParts = currentAttribute.namespaceURI.split('/'); + var namespace = namespaceURIParts[namespaceURIParts.length - 1]; + name = namespace + ':' + name; + } + + if (!(name in attributes)) { + attributes[name] = null; + } + } + } + + for (var _i2 = 0, _Object$keys2 = Object.keys(attributes); _i2 < _Object$keys2.length; _i2++) { + var attributeName = _Object$keys2[_i2]; + element.attr(attributeName, attributes[attributeName]); + } + + if (data.text) { + element.text(data.text); + } + + insertChildren(element, index); + } + + function shallowCopyObject(obj) { + return Object.assign({}, obj); + } + function roundTo2Decimals(x) { + return Math.round(x * 100.0) / 100.0; + } + + function zoom (enable) { + this._options.zoom = enable; + + if (this._options.zoom && !this._zoomBehavior) { + createZoomBehavior.call(this); + } + + return this; + } + function createZoomBehavior() { + function zoomed() { + var g = d3.select(svg.node().querySelector("g")); + g.attr('transform', d3.event.transform); + } + + var root = this._selection; + var svg = d3.select(root.node().querySelector("svg")); + + if (svg.size() == 0) { + return this; + } + + this._zoomSelection = svg; + var zoomBehavior = d3Zoom.zoom().scaleExtent(this._options.zoomScaleExtent).translateExtent(this._options.zoomTranslateExtent).interpolate(d3Interpolate.interpolate).on("zoom", zoomed); + this._zoomBehavior = zoomBehavior; + var g = d3.select(svg.node().querySelector("g")); + svg.call(zoomBehavior); + + if (!this._active) { + translateZoomBehaviorTransform.call(this, g); + } + + this._originalTransform = d3Zoom.zoomTransform(svg.node()); + return this; + } + function getTranslatedZoomTransform(selection) { + // Get the current zoom transform for the top level svg and + // translate it uniformly with the given selection, using the + // difference between the translation specified in the selection's + // data and it's saved previous translation. The selection is + // normally the top level g element of the graph. + var oldTranslation = this._translation; + var oldScale = this._scale; + var newTranslation = selection.datum().translation; + var newScale = selection.datum().scale; + var t = d3Zoom.zoomTransform(this._zoomSelection.node()); + + if (oldTranslation) { + t = t.scale(1 / oldScale); + t = t.translate(-oldTranslation.x, -oldTranslation.y); + } + + t = t.translate(newTranslation.x, newTranslation.y); + t = t.scale(newScale); + return t; + } + function translateZoomBehaviorTransform(selection) { + // Translate the current zoom transform for the top level svg + // uniformly with the given selection, using the difference + // between the translation specified in the selection's data and + // it's saved previous translation. The selection is normally the + // top level g element of the graph. + this._zoomBehavior.transform(this._zoomSelection, getTranslatedZoomTransform.call(this, selection)); // Save the selections's new translation and scale. + + + this._translation = selection.datum().translation; + this._scale = selection.datum().scale; // Set the original zoom transform to the translation and scale specified in + // the selection's data. + + this._originalTransform = d3Zoom.zoomIdentity.translate(selection.datum().translation.x, selection.datum().translation.y).scale(selection.datum().scale); + } + function resetZoom(transition) { + // Reset the zoom transform to the original zoom transform. + var selection = this._zoomSelection; + + if (transition) { + selection = selection.transition(transition); + } + + selection.call(this._zoomBehavior.transform, this._originalTransform); + return this; + } + function zoomScaleExtent(extent) { + this._options.zoomScaleExtent = extent; + return this; + } + function zoomTranslateExtent(extent) { + this._options.zoomTranslateExtent = extent; + return this; + } + function zoomBehavior() { + return this._zoomBehavior || null; + } + function zoomSelection() { + return this._zoomSelection || null; + } + + function pathTween(points, d1) { + return function () { + var pointInterpolators = points.map(function (p) { + return d3Interpolate.interpolate([p[0][0], p[0][1]], [p[1][0], p[1][1]]); + }); + return function (t) { + return t < 1 ? "M" + pointInterpolators.map(function (p) { + return p(t); + }).join("L") : d1; + }; + }; + } + function pathTweenPoints(node, d1, precision, precisionIsRelative) { + var path0 = node; + var path1 = path0.cloneNode(); + var n0 = path0.getTotalLength(); + var n1 = (path1.setAttribute("d", d1), path1).getTotalLength(); // Uniform sampling of distance based on specified precision. + + var distances = [0]; + var i = 0; + var dt = precisionIsRelative ? precision : precision / Math.max(n0, n1); + + while ((i += dt) < 1) { + distances.push(i); + } + + distances.push(1); // Compute point-interpolators at each distance. + + var points = distances.map(function (t) { + var p0 = path0.getPointAtLength(t * n0); + var p1 = path1.getPointAtLength(t * n1); + return [[p0.x, p0.y], [p1.x, p1.y]]; + }); + return points; + } + + function data () { + return this._data || null; + } + function isEdgeElementParent(datum) { + return datum.attributes["class"] == 'edge' || datum.tag == 'a' && datum.parent.tag == 'g' && datum.parent.parent.attributes["class"] == 'edge'; + } + function isEdgeElement(datum) { + return datum.parent && isEdgeElementParent(datum.parent); + } + function getEdgeGroup(datum) { + if (datum.parent.attributes["class"] == 'edge') { + return datum.parent; + } else { + // datum.parent.tag == 'g' && datum.parent.parent.tag == 'g' && datum.parent.parent.parent.attributes.class == 'edge' + return datum.parent.parent.parent; + } + } + function getEdgeTitle(datum) { + return getEdgeGroup(datum).children.find(function (e) { + return e.tag == 'title'; + }); + } + + function render (callback) { + if (this._busy) { + this._queue.push(this.render.bind(this, callback)); + + return this; + } + + this._dispatch.call('renderStart', this); + + if (this._transitionFactory) { + d3Timer.timeout(function () { + // Decouple from time spent. See https://github.com/d3/d3-timer/issues/27 + this._transition = d3Transition.transition(this._transitionFactory()); + + _render.call(this, callback); + }.bind(this), 0); + } else { + _render.call(this, callback); + } + + return this; + } + + function _render(callback) { + var transitionInstance = this._transition; + var fade = this._options.fade && transitionInstance != null; + var tweenPaths = this._options.tweenPaths; + var tweenShapes = this._options.tweenShapes; + var convertEqualSidedPolygons = this._options.convertEqualSidedPolygons; + var growEnteringEdges = this._options.growEnteringEdges && transitionInstance != null; + var attributer = this._attributer; + var graphvizInstance = this; + + function insertChildren(element) { + var children = element.selectAll(function () { + return element.node().childNodes; + }); + children = children.data(function (d) { + return d.children; + }, function (d) { + return d.key; + }); + var childrenEnter = children.enter().append(function (d) { + var element = createElement(d); + + if (d.tag == '#text' && fade) { + element.nodeValue = d.text; + } + + return element; + }); + + if (fade || growEnteringEdges && isEdgeElementParent(element.datum())) { + var childElementsEnter = childrenEnter.filter(function (d) { + return d.tag[0] == '#' ? null : this; + }).each(function (d) { + var childEnter = d3.select(this); + + for (var _i = 0, _Object$keys = Object.keys(d.attributes); _i < _Object$keys.length; _i++) { + var attributeName = _Object$keys[_i]; + var attributeValue = d.attributes[attributeName]; + childEnter.attr(attributeName, attributeValue); + } + }); + childElementsEnter.filter(function (d) { + return d.tag == 'svg' || d.tag == 'g' ? null : this; + }).style("opacity", 0.0); + } + + var childrenExit = children.exit(); + + if (attributer) { + childrenExit.each(attributer); + } + + if (transitionInstance) { + childrenExit = childrenExit.transition(transitionInstance); + + if (fade) { + childrenExit.filter(function (d) { + return d.tag[0] == '#' ? null : this; + }).style("opacity", 0.0); + } + } + + childrenExit = childrenExit.remove(); + children = childrenEnter.merge(children); + children.each(attributeElement); + } + + function attributeElement(data) { + var element = d3.select(this); + + if (data.tag == "svg") { + var options = graphvizInstance._options; + + if (options.width != null || options.height != null) { + var width = options.width; + var height = options.height; + + if (width == null) { + width = data.attributes.width.replace('pt', '') * 4 / 3; + } else { + element.attr("width", width); + data.attributes.width = width; + } + + if (height == null) { + height = data.attributes.height.replace('pt', '') * 4 / 3; + } else { + element.attr("height", height); + data.attributes.height = height; + } + + if (!options.fit) { + element.attr("viewBox", "0 0 ".concat(width * 3 / 4 / options.scale, " ").concat(height * 3 / 4 / options.scale)); + data.attributes.viewBox = "0 0 ".concat(width * 3 / 4 / options.scale, " ").concat(height * 3 / 4 / options.scale); + } + } + + if (options.scale != 1 && (options.fit || options.width == null && options.height == null)) { + width = data.attributes.viewBox.split(' ')[2]; + height = data.attributes.viewBox.split(' ')[3]; + element.attr("viewBox", "0 0 ".concat(width / options.scale, " ").concat(height / options.scale)); + data.attributes.viewBox = "0 0 ".concat(width / options.scale, " ").concat(height / options.scale); + } + } + + if (attributer) { + element.each(attributer); + } + + var tag = data.tag; + var attributes = data.attributes; + var currentAttributes = element.node().attributes; + + if (currentAttributes) { + for (var i = 0; i < currentAttributes.length; i++) { + var currentAttribute = currentAttributes[i]; + var name = currentAttribute.name; + + if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) { + var namespaceURIParts = currentAttribute.namespaceURI.split('/'); + var namespace = namespaceURIParts[namespaceURIParts.length - 1]; + name = namespace + ':' + name; + } + + if (!(name in attributes)) { + attributes[name] = null; + } + } + } + + var convertShape = false; + var convertPrevShape = false; + + if (tweenShapes && transitionInstance) { + if ((this.nodeName == 'polygon' || this.nodeName == 'ellipse') && data.alternativeOld) { + convertPrevShape = true; + } + + if ((tag == 'polygon' || tag == 'ellipse') && data.alternativeNew) { + convertShape = true; + } + + if (this.nodeName == 'polygon' && tag == 'polygon' && data.alternativeOld) { + var prevData = extractElementData(element); + var prevPoints = prevData.attributes.points; + + if (!convertEqualSidedPolygons) { + var nPrevPoints = prevPoints.split(' ').length; + var points = data.attributes.points; + var nPoints = points.split(' ').length; + + if (nPoints == nPrevPoints) { + convertShape = false; + convertPrevShape = false; + } + } + } + + if (convertPrevShape) { + var prevPathData = data.alternativeOld; + var pathElement = replaceElement(element, prevPathData); + pathElement.data([data], function () { + return data.key; + }); + element = pathElement; + } + + if (convertShape) { + var newPathData = data.alternativeNew; + tag = 'path'; + attributes = newPathData.attributes; + } + } + + var elementTransition = element; + + if (transitionInstance) { + elementTransition = elementTransition.transition(transitionInstance); + + if (fade) { + elementTransition.filter(function (d) { + return d.tag[0] == '#' ? null : this; + }).style("opacity", 1.0); + } + + elementTransition.filter(function (d) { + return d.tag[0] == '#' ? null : this; + }).on("end", function () { + d3.select(this).attr('style', null); + }); + } + + var growThisPath = growEnteringEdges && tag == 'path' && data.offset; + + if (growThisPath) { + var totalLength = data.totalLength; + element.attr("stroke-dasharray", totalLength + " " + totalLength).attr("stroke-dashoffset", totalLength).attr('transform', 'translate(' + data.offset.x + ',' + data.offset.y + ')'); + attributes["stroke-dashoffset"] = 0; + attributes['transform'] = 'translate(0,0)'; + elementTransition.attr("stroke-dashoffset", attributes["stroke-dashoffset"]).attr('transform', attributes['transform']).on("start", function () { + d3.select(this).style('opacity', null); + }).on("end", function () { + d3.select(this).attr('stroke-dashoffset', null).attr('stroke-dasharray', null).attr('transform', null); + }); + } + + var moveThisPolygon = growEnteringEdges && tag == 'polygon' && isEdgeElement(data) && data.offset && data.parent.children[3].tag == 'path'; + + if (moveThisPolygon) { + var edgePath = d3.select(element.node().parentNode.querySelector("path")); + var p0 = edgePath.node().getPointAtLength(0); + var p1 = edgePath.node().getPointAtLength(data.totalLength); + var p2 = edgePath.node().getPointAtLength(data.totalLength - 1); + var angle1 = Math.atan2(p1.y - p2.y, p1.x - p2.x) * 180 / Math.PI; + var x = p0.x - p1.x + data.offset.x; + var y = p0.y - p1.y + data.offset.y; + element.attr('transform', 'translate(' + x + ',' + y + ')'); + elementTransition.attrTween("transform", function () { + return function (t) { + var p = edgePath.node().getPointAtLength(data.totalLength * t); + var p2 = edgePath.node().getPointAtLength(data.totalLength * t + 1); + var angle = Math.atan2(p2.y - p.y, p2.x - p.x) * 180 / Math.PI - angle1; + x = p.x - p1.x + data.offset.x * (1 - t); + y = p.y - p1.y + data.offset.y * (1 - t); + return 'translate(' + x + ',' + y + ') rotate(' + angle + ' ' + p1.x + ' ' + p1.y + ')'; + }; + }).on("start", function () { + d3.select(this).style('opacity', null); + }).on("end", function () { + d3.select(this).attr('transform', null); + }); + } + + var tweenThisPath = tweenPaths && transitionInstance && tag == 'path' && element.attr('d') != null; + + for (var _i2 = 0, _Object$keys2 = Object.keys(attributes); _i2 < _Object$keys2.length; _i2++) { + var attributeName = _Object$keys2[_i2]; + var attributeValue = attributes[attributeName]; + + if (tweenThisPath && attributeName == 'd') { + var points = (data.alternativeOld || data).points; + + if (points) { + elementTransition.attrTween("d", pathTween(points, attributeValue)); + } + } else { + if (attributeName == 'transform' && data.translation) { + if (transitionInstance) { + var onEnd = elementTransition.on("end"); + elementTransition.on("start", function () { + if (graphvizInstance._zoomBehavior) { + // Update the transform to transition to, just before the transition starts + // in order to catch changes between the transition scheduling to its start. + elementTransition.tween("attr.transform", function () { + var node = this; + return function (t) { + node.setAttribute("transform", d3Interpolate.interpolateTransformSvg(d3Zoom.zoomTransform(graphvizInstance._zoomSelection.node()).toString(), getTranslatedZoomTransform.call(graphvizInstance, element).toString())(t)); + }; + }); + } + }).on("end", function () { + onEnd.call(this); // Update the zoom transform to the new translated transform + + if (graphvizInstance._zoomBehavior) { + translateZoomBehaviorTransform.call(graphvizInstance, element); + } + }); + } else { + if (graphvizInstance._zoomBehavior) { + // Update the transform attribute to set with the current pan translation + attributeValue = getTranslatedZoomTransform.call(graphvizInstance, element).toString(); + } + } + } + + elementTransition.attr(attributeName, attributeValue); + } + } + + if (convertShape) { + elementTransition.on("end", function (d, i, nodes) { + pathElement = d3.select(this); + var newElement = replaceElement(pathElement, d); + newElement.data([d], function () { + return d.key; + }); + }); + } + + if (data.text) { + elementTransition.text(data.text); + } + + insertChildren(element); + } + + var root = this._selection; + + if (transitionInstance != null) { + // Ensure original SVG shape elements are restored after transition before rendering new graph + var jobs = this._jobs; + + if (graphvizInstance._active) { + jobs.push(null); + return this; + } else { + root.transition(transitionInstance).transition().duration(0).on("end", function () { + graphvizInstance._active = false; + + if (jobs.length != 0) { + jobs.shift(); + graphvizInstance.render(); + } + }); + this._active = true; + } + } + + if (transitionInstance != null) { + root.transition(transitionInstance).on("start", function () { + graphvizInstance._dispatch.call('transitionStart', graphvizInstance); + }).on("end", function () { + graphvizInstance._dispatch.call('transitionEnd', graphvizInstance); + }).transition().duration(0).on("start", function () { + graphvizInstance._dispatch.call('restoreEnd', graphvizInstance); + + graphvizInstance._dispatch.call('end', graphvizInstance); + + if (callback) { + callback.call(graphvizInstance); + } + }); + } + + var data = this._data; + var svg = root.selectAll("svg").data([data], function (d) { + return d.key; + }); + svg = svg.enter().append("svg").merge(svg); + attributeElement.call(svg.node(), data); + + if (this._options.zoom && !this._zoomBehavior) { + createZoomBehavior.call(this); + } + + graphvizInstance._dispatch.call('renderEnd', graphvizInstance); + + if (transitionInstance == null) { + this._dispatch.call('end', this); + + if (callback) { + callback.call(this); + } + } + + return this; + } + + function convertToPathData(originalData, guideData) { + if (originalData.tag == 'polygon') { + var newData = shallowCopyObject(originalData); + newData.tag = 'path'; + var originalAttributes = originalData.attributes; + var newAttributes = shallowCopyObject(originalAttributes); + var newPointsString = originalAttributes.points; + + if (guideData.tag == 'polygon') { + var bbox = originalData.bbox; + bbox.cx = bbox.x + bbox.width / 2; + bbox.cy = bbox.y + bbox.height / 2; + var pointsString = originalAttributes.points; + var pointStrings = pointsString.split(' '); + var normPoints = pointStrings.map(function (p) { + var xy = p.split(','); + return [xy[0] - bbox.cx, xy[1] - bbox.cy]; + }); + var x0 = normPoints[normPoints.length - 1][0]; + var y0 = normPoints[normPoints.length - 1][1]; + + for (var i = 0; i < normPoints.length; i++, x0 = x1, y0 = y1) { + var x1 = normPoints[i][0]; + var y1 = normPoints[i][1]; + var dx = x1 - x0; + var dy = y1 - y0; + + if (dy == 0) { + continue; + } else { + var x2 = x0 - y0 * dx / dy; + } + + if (0 <= x2 && x2 < Infinity && (x0 <= x2 && x2 <= x1 || x1 <= x2 && x2 <= x0)) { + break; + } + } + + var newPointStrings = [[bbox.cx + x2, bbox.cy + 0].join(',')]; + newPointStrings = newPointStrings.concat(pointStrings.slice(i)); + newPointStrings = newPointStrings.concat(pointStrings.slice(0, i)); + newPointsString = newPointStrings.join(' '); + } + + newAttributes['d'] = 'M' + newPointsString + 'z'; + delete newAttributes.points; + newData.attributes = newAttributes; + } else + /* if (originalData.tag == 'ellipse') */ + { + var newData = shallowCopyObject(originalData); + newData.tag = 'path'; + var originalAttributes = originalData.attributes; + var newAttributes = shallowCopyObject(originalAttributes); + var cx = originalAttributes.cx; + var cy = originalAttributes.cy; + var rx = originalAttributes.rx; + var ry = originalAttributes.ry; + + if (guideData.tag == 'polygon') { + var bbox = guideData.bbox; + bbox.cx = bbox.x + bbox.width / 2; + bbox.cy = bbox.y + bbox.height / 2; + var p = guideData.attributes.points.split(' ')[0].split(','); + var sx = p[0]; + var sy = p[1]; + var dx = sx - bbox.cx; + var dy = sy - bbox.cy; + var l = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2)); + var cosA = dx / l; + var sinA = -dy / l; + } else { + // if (guideData.tag == 'path') { + // FIXME: add support for getting start position from path + var cosA = 1; + var sinA = 0; + } + + var x1 = rx * cosA; + var y1 = -ry * sinA; + var x2 = rx * -cosA; + var y2 = -ry * -sinA; + var dx = x2 - x1; + var dy = y2 - y1; + newAttributes['d'] = 'M ' + cx + ' ' + cy + ' m ' + x1 + ',' + y1 + ' a ' + rx + ',' + ry + ' 0 1,0 ' + dx + ',' + dy + ' a ' + rx + ',' + ry + ' 0 1,0 ' + -dx + ',' + -dy + 'z'; + delete newAttributes.cx; + delete newAttributes.cy; + delete newAttributes.rx; + delete newAttributes.ry; + newData.attributes = newAttributes; + } + + return newData; + } + function translatePointsAttribute(pointsString, x, y) { + var pointStrings = pointsString.split(' '); + var points = pointStrings.map(function (p) { + return p.split(','); + }); + var points = pointStrings.map(function (p) { + return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]; + }); + var pointStrings = points.map(function (p) { + return p.join(','); + }); + var pointsString = pointStrings.join(' '); + return pointsString; + } + function translateDAttribute(d, x, y) { + var pointStrings = d.split(/[A-Z ]/); + pointStrings.shift(); + var commands = d.split(/[^[A-Z ]+/); + var points = pointStrings.map(function (p) { + return p.split(','); + }); + var points = pointStrings.map(function (p) { + return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]; + }); + var pointStrings = points.map(function (p) { + return p.join(','); + }); + d = commands.reduce(function (arr, v, i) { + return arr.concat(v, pointStrings[i]); + }, []).join(''); + return d; + } + + function initViz() { + var _this = this; + + // force JIT compilation of Viz.js + try { + wasm.graphviz.layout("", "svg", "dot").then(function () { + wasm.graphvizSync().then(function (graphviz1) { + _this.layoutSync = graphviz1.layout.bind(graphviz1); + + if (_this._worker == null) { + _this._dispatch.call("initEnd", _this); + } + + if (_this._afterInit) { + _this._afterInit(); + } + }); + }); + } catch (error) {} + + if (this._worker != null) { + var vizURL = this._vizURL; + var graphvizInstance = this; + + this._worker.onmessage = function (event) { + var callback = graphvizInstance._workerCallbacks.shift(); + + switch (event.data.type) { + case "init": + graphvizInstance._dispatch.call("initEnd", this); + + break; + + case "done": + return layoutDone.call(graphvizInstance, event.data.svg, callback); + + case "error": + if (graphvizInstance._onerror) { + graphvizInstance._onerror(event.data.error); + } else { + throw event.data.error; + } + + break; + } + }; + + if (!vizURL.match(/^https?:\/\/|^\/\//i)) { + // Local URL. Prepend with local domain to be usable in web worker + vizURL = new window.URL(vizURL, document.location.href).href; + } + + postMessage.call(this, { + dot: "", + engine: 'dot', + vizURL: vizURL + }); + } + } + + function postMessage(message, callback) { + this._workerCallbacks.push(callback); + + this._worker.postMessage(message); + } + + function dot (src, callback) { + var graphvizInstance = this; + var worker = this._worker; + var engine = this._options.engine; + var images = this._images; + + this._dispatch.call("start", this); + + this._busy = true; + + this._dispatch.call("layoutStart", this); + + var vizOptions = { + images: images + }; + + if (this._worker) { + postMessage.call(this, { + dot: src, + engine: engine, + options: vizOptions + }, callback); + } else { + if (this.layoutSync == null) { + this._afterInit = this.dot.bind(this, src, callback); + return this; + } + + try { + var svgDoc = this.layoutSync(src, "svg", engine, vizOptions); + } catch (error) { + if (graphvizInstance._onerror) { + graphvizInstance._onerror(error.message); + + return this; + } else { + throw error.message; + } + } + + layoutDone.call(this, svgDoc, callback); + } + + return this; + } + + function layoutDone(svgDoc, callback) { + var keyMode = this._options.keyMode; + var tweenPaths = this._options.tweenPaths; + var tweenShapes = this._options.tweenShapes; + + if (typeof this._options.tweenPrecision == 'string' && this._options.tweenPrecision.includes('%')) { + var tweenPrecision = +this._options.tweenPrecision.split('%')[0] / 100; + + var tweenPrecisionIsRelative = this._options.tweenPrecision.includes('%'); + } else { + var tweenPrecision = this._options.tweenPrecision; + var tweenPrecisionIsRelative = false; + } + + var growEnteringEdges = this._options.growEnteringEdges; + var dictionary = {}; + var prevDictionary = this._dictionary || {}; + var nodeDictionary = {}; + var prevNodeDictionary = this._nodeDictionary || {}; + + function setKey(datum, index) { + var tag = datum.tag; + + if (keyMode == 'index') { + datum.key = index; + } else if (tag[0] != '#') { + if (keyMode == 'id') { + datum.key = datum.attributes.id; + } else if (keyMode == 'title') { + var title = datum.children.find(function (childData) { + return childData.tag == 'title'; + }); + + if (title) { + if (title.children.length > 0) { + datum.key = title.children[0].text; + } else { + datum.key = ''; + } + } + } + } + + if (datum.key == null) { + if (tweenShapes) { + if (tag == 'ellipse' || tag == 'polygon') { + tag = 'path'; + } + } + + datum.key = tag + '-' + index; + } + } + + function setId(datum, parentData) { + var id = (parentData ? parentData.id + '.' : '') + datum.key; + datum.id = id; + } + + function addToDictionary(datum) { + dictionary[datum.id] = datum; + } + + function calculateAlternativeShapeData(datum, prevDatum) { + if (tweenShapes && datum.id in prevDictionary) { + if ((prevDatum.tag == 'polygon' || prevDatum.tag == 'ellipse' || prevDatum.tag == 'path') && (prevDatum.tag != datum.tag || datum.tag == 'polygon')) { + if (prevDatum.tag != 'path') { + datum.alternativeOld = convertToPathData(prevDatum, datum); + } + + if (datum.tag != 'path') { + datum.alternativeNew = convertToPathData(datum, prevDatum); + } + } + } + } + + function calculatePathTweenPoints(datum, prevDatum) { + if (tweenPaths && prevDatum && (prevDatum.tag == 'path' || datum.alternativeOld && datum.alternativeOld.tag == 'path')) { + var attribute_d = (datum.alternativeNew || datum).attributes.d; + + if (datum.alternativeOld) { + var oldNode = createElementWithAttributes(datum.alternativeOld); + } else { + var oldNode = createElementWithAttributes(prevDatum); + } + + (datum.alternativeOld || (datum.alternativeOld = {})).points = pathTweenPoints(oldNode, attribute_d, tweenPrecision, tweenPrecisionIsRelative); + } + } + + function postProcessDataPass1Local(datum) { + var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var parentData = arguments.length > 2 ? arguments[2] : undefined; + setKey(datum, index); + setId(datum, parentData); + var id = datum.id; + var prevDatum = prevDictionary[id]; + addToDictionary(datum); + calculateAlternativeShapeData(datum, prevDatum); + calculatePathTweenPoints(datum, prevDatum); + var childTagIndexes = {}; + datum.children.forEach(function (childData) { + var childTag = childData.tag; + + if (childTag == 'ellipse' || childTag == 'polygon') { + childTag = 'path'; + } + + if (childTagIndexes[childTag] == null) { + childTagIndexes[childTag] = 0; + } + + var childIndex = childTagIndexes[childTag]++; + postProcessDataPass1Local(childData, childIndex, datum); + }); + } + + function addToNodeDictionary(datum) { + var tag = datum.tag; + + if (growEnteringEdges && datum.parent) { + if (datum.parent.attributes["class"] == 'node') { + if (tag == 'title') { + if (datum.children.length > 0) { + var child = datum.children[0]; + var nodeId = child.text; + } else { + var nodeId = ''; + } + + nodeDictionary[nodeId] = datum.parent; + } + } + } + } + + function extractGrowingEdgesData(datum) { + var id = datum.id; + var tag = datum.tag; + var prevDatum = prevDictionary[id]; + + if (growEnteringEdges && !prevDatum && datum.parent) { + if (isEdgeElement(datum)) { + if (tag == 'path' || tag == 'polygon') { + if (tag == 'polygon') { + var path = datum.parent.children.find(function (e) { + return e.tag == 'path'; + }); + + if (path) { + datum.totalLength = path.totalLength; + } + } + + var title = getEdgeTitle(datum); + var child = title.children[0]; + var nodeIds = child.text.split('->'); + + if (nodeIds.length != 2) { + nodeIds = child.text.split('--'); + } + + var startNodeId = nodeIds[0]; + var startNode = nodeDictionary[startNodeId]; + var prevStartNode = prevNodeDictionary[startNodeId]; + + if (prevStartNode) { + var i = startNode.children.findIndex(function (element, index) { + return element.tag == 'g'; + }); + + if (i >= 0) { + var j = startNode.children[i].children.findIndex(function (element, index) { + return element.tag == 'a'; + }); + startNode = startNode.children[i].children[j]; + } + + var i = prevStartNode.children.findIndex(function (element, index) { + return element.tag == 'g'; + }); + + if (i >= 0) { + var j = prevStartNode.children[i].children.findIndex(function (element, index) { + return element.tag == 'a'; + }); + prevStartNode = prevStartNode.children[i].children[j]; + } + + var startShapes = startNode.children; + + for (var i = 0; i < startShapes.length; i++) { + if (startShapes[i].tag == 'polygon' || startShapes[i].tag == 'ellipse' || startShapes[i].tag == 'path' || startShapes[i].tag == 'text') { + var startShape = startShapes[i]; + break; + } + } + + var prevStartShapes = prevStartNode.children; + + for (var i = 0; i < prevStartShapes.length; i++) { + if (prevStartShapes[i].tag == 'polygon' || prevStartShapes[i].tag == 'ellipse' || prevStartShapes[i].tag == 'path' || prevStartShapes[i].tag == 'text') { + var prevStartShape = prevStartShapes[i]; + break; + } + } + + if (prevStartShape && startShape) { + datum.offset = { + x: prevStartShape.center.x - startShape.center.x, + y: prevStartShape.center.y - startShape.center.y + }; + } else { + datum.offset = { + x: 0, + y: 0 + }; + } + } + } + } + } + } + + function postProcessDataPass2Global(datum) { + addToNodeDictionary(datum); + extractGrowingEdgesData(datum); + datum.children.forEach(function (childData) { + postProcessDataPass2Global(childData); + }); + } + + this._dispatch.call("layoutEnd", this); + + var newDoc = d3.select(document.createDocumentFragment()).append('div'); + var parser = new window.DOMParser(); + var doc = parser.parseFromString(svgDoc, "image/svg+xml"); + newDoc.append(function () { + return doc.documentElement; + }); + var newSvg = newDoc.select('svg'); + var data = extractAllElementsData(newSvg); + + this._dispatch.call('dataExtractEnd', this); + + postProcessDataPass1Local(data); + + this._dispatch.call('dataProcessPass1End', this); + + postProcessDataPass2Global(data); + + this._dispatch.call('dataProcessPass2End', this); + + this._data = data; + this._dictionary = dictionary; + this._nodeDictionary = nodeDictionary; + + this._extractData = function (element, childIndex, parentData) { + var data = extractAllElementsData(element); + postProcessDataPass1Local(data, childIndex, parentData); + postProcessDataPass2Global(data); + return data; + }; + + this._busy = false; + + this._dispatch.call('dataProcessEnd', this); + + if (callback) { + callback.call(this); + } + + if (this._queue.length > 0) { + var job = this._queue.shift(); + + job.call(this); + } + } + + function renderDot (src, callback) { + var graphvizInstance = this; + this.dot(src, render); + + function render() { + graphvizInstance.render(callback); + } + + return this; + } + + function transition (name) { + if (name instanceof Function) { + this._transitionFactory = name; + } else { + this._transition = d3Transition.transition(name); + } + + return this; + } + function active(name) { + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + + if (svg.size() != 0) { + return d3Transition.active(svg.node(), name); + } else { + return null; + } + } + + function options (options) { + if (typeof options == 'undefined') { + return Object.assign({}, this._options); + } else { + for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) { + var option = _Object$keys[_i]; + this._options[option] = options[option]; + } + + return this; + } + } + + function width (width) { + this._options.width = width; + return this; + } + + function height (height) { + this._options.height = height; + return this; + } + + function scale (scale) { + this._options.scale = scale; + return this; + } + + function fit (fit) { + this._options.fit = fit; + return this; + } + + function attributer (callback) { + this._attributer = callback; + return this; + } + + function engine (engine) { + this._options.engine = engine; + return this; + } + + function images (path, width, height) { + this._images.push({ + path: path, + width: width, + height: height + }); + + return this; + } + + function keyMode (keyMode) { + if (!this._keyModes.has(keyMode)) { + throw Error('Illegal keyMode: ' + keyMode); + } + + if (keyMode != this._options.keyMode && this._data != null) { + throw Error('Too late to change keyMode'); + } + + this._options.keyMode = keyMode; + return this; + } + + function fade (enable) { + this._options.fade = enable; + return this; + } + + function tweenPaths (enable) { + this._options.tweenPaths = enable; + return this; + } + + function tweenShapes (enable) { + this._options.tweenShapes = enable; + + if (enable) { + this._options.tweenPaths = true; + } + + return this; + } + + function convertEqualSidedPolygons (enable) { + this._options.convertEqualSidedPolygons = enable; + return this; + } + + function tweenPrecision (precision) { + this._options.tweenPrecision = precision; + return this; + } + + function growEnteringEdges (enable) { + this._options.growEnteringEdges = enable; + return this; + } + + function on (typenames, callback) { + this._dispatch.on(typenames, callback); + + return this; + } + + function onerror (callback) { + this._onerror = callback; + return this; + } + + function logEvents (enable) { + var _this = this; + + var t0 = Date.now(); + var times = {}; + var eventTypes = this._eventTypes; + var maxEventTypeLength = Math.max.apply(Math, _toConsumableArray(eventTypes.map(function (eventType) { + return eventType.length; + }))); + + var _loop = function _loop(i) { + var eventType = eventTypes[i]; + times[eventType] = []; + graphvizInstance = _this; + + _this.on(eventType + '.log', enable ? function () { + var t = Date.now(); + var seqNo = times[eventType].length; + times[eventType].push(t); + var string = ''; + string += 'Event '; + string += d3Format.format(' >2')(i) + ' '; + string += eventType + ' '.repeat(maxEventTypeLength - eventType.length); + string += d3Format.format(' >5')(t - t0) + ' '; + + if (eventType != 'initEnd') { + string += d3Format.format(' >5')(t - times['start'][seqNo]); + } + + if (eventType == 'dataProcessEnd') { + string += ' prepare ' + d3Format.format(' >5')(t - times['layoutEnd'][seqNo]); + } + + if (eventType == 'renderEnd' && graphvizInstance._transition) { + string += ' transition start margin ' + d3Format.format(' >5')(graphvizInstance._transition.delay() - (t - times['renderStart'][seqNo])); + expectedDelay = graphvizInstance._transition.delay(); + expectedDuration = graphvizInstance._transition.duration(); + } + + if (eventType == 'transitionStart') { + var actualDelay = t - times['renderStart'][seqNo]; + string += ' transition delay ' + d3Format.format(' >5')(t - times['renderStart'][seqNo]); + string += ' expected ' + d3Format.format(' >5')(expectedDelay); + string += ' diff ' + d3Format.format(' >5')(actualDelay - expectedDelay); + } + + if (eventType == 'transitionEnd') { + var actualDuration = t - times['transitionStart'][seqNo]; + string += ' transition duration ' + d3Format.format(' >5')(actualDuration); + string += ' expected ' + d3Format.format(' >5')(expectedDuration); + string += ' diff ' + d3Format.format(' >5')(actualDuration - expectedDuration); + } + + console.log(string); + t0 = t; + } : null); + }; + + for (var i in eventTypes) { + var graphvizInstance; + var expectedDelay; + var expectedDuration; + + _loop(i); + } + + return this; + } + + function rotate(x, y, cosA, sinA) { + // (x + j * y) * (cosA + j * sinA) = x * cosA - y * sinA + j * (x * sinA + y * cosA) + y = -y; + sinA = -sinA; + var _ref = [x * cosA - y * sinA, x * sinA + y * cosA]; + x = _ref[0]; + y = _ref[1]; + y = -y; + return [x, y]; + } + + function drawEdge(x1, y1, x2, y2, attributes) { + var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + attributes = Object.assign({}, attributes); + + if (attributes.style && attributes.style.includes('invis')) { + var newEdge = d3.select(null); + } else { + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + var graph0 = svg.selectWithoutDataPropagation("g"); + var newEdge0 = createEdge.call(this, attributes); + var edgeData = extractAllElementsData(newEdge0); + var newEdge = graph0.append('g').data([edgeData]); + attributeElement.call(newEdge.node(), edgeData); + + _updateEdge.call(this, newEdge, x1, y1, x2, y2, attributes, options); + } + + this._drawnEdge = { + g: newEdge, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + attributes: attributes + }; + return this; + } + function updateDrawnEdge(x1, y1, x2, y2) { + var attributes = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + + if (!this._drawnEdge) { + throw Error('No edge has been drawn'); + } + + var edge = this._drawnEdge.g; + attributes = Object.assign(this._drawnEdge.attributes, attributes); + this._drawnEdge.x1 = x1; + this._drawnEdge.y1 = y1; + this._drawnEdge.x2 = x2; + this._drawnEdge.y2 = y2; + + if (edge.empty() && !(attributes.style && attributes.style.includes('invis'))) { + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + var graph0 = svg.selectWithoutDataPropagation("g"); + var edge = graph0.append('g'); + this._drawnEdge.g = edge; + } + + if (!edge.empty()) { + _updateEdge.call(this, edge, x1, y1, x2, y2, attributes, options); + } + + return this; + } + + function _updateEdge(edge, x1, y1, x2, y2, attributes, options) { + var newEdge = createEdge.call(this, attributes); + var edgeData = extractAllElementsData(newEdge); + edge.data([edgeData]); + attributeElement.call(edge.node(), edgeData); + + _moveEdge(edge, x1, y1, x2, y2, attributes, options); + } + + function _moveEdge(edge, x1, y1, x2, y2, attributes, options) { + var shortening = options.shortening || 0; + var arrowHeadLength = 10; + var arrowHeadWidth = 7; + var margin = 0.1; + var arrowHeadPoints = [[0, -arrowHeadWidth / 2], [arrowHeadLength, 0], [0, arrowHeadWidth / 2], [0, -arrowHeadWidth / 2]]; + var dx = x2 - x1; + var dy = y2 - y1; + var length = Math.sqrt(dx * dx + dy * dy); + + if (length == 0) { + var cosA = 1; + var sinA = 0; + } else { + var cosA = dx / length; + var sinA = dy / length; + } + + x2 = x1 + (length - shortening - arrowHeadLength - margin) * cosA; + y2 = y1 + (length - shortening - arrowHeadLength - margin) * sinA; + + if (attributes.URL || attributes.tooltip) { + var a = edge.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a"); + var line = a.selectWithoutDataPropagation("path"); + var arrowHead = a.selectWithoutDataPropagation("polygon"); + } else { + var line = edge.selectWithoutDataPropagation("path"); + var arrowHead = edge.selectWithoutDataPropagation("polygon"); + } + + var path1 = d3Path.path(); + path1.moveTo(x1, y1); + path1.lineTo(x2, y2); + line.attr("d", path1); + x2 = x1 + (length - shortening - arrowHeadLength) * cosA; + y2 = y1 + (length - shortening - arrowHeadLength) * sinA; + + for (var i = 0; i < arrowHeadPoints.length; i++) { + var point = arrowHeadPoints[i]; + arrowHeadPoints[i] = rotate(point[0], point[1], cosA, sinA); + } + + for (var i = 0; i < arrowHeadPoints.length; i++) { + var point = arrowHeadPoints[i]; + arrowHeadPoints[i] = [x2 + point[0], y2 + point[1]]; + } + + var allPoints = []; + + for (var i = 0; i < arrowHeadPoints.length; i++) { + var point = arrowHeadPoints[i]; + allPoints.push(point.join(',')); + } + + var pointsAttr = allPoints.join(' '); + arrowHead.attr("points", pointsAttr); + return this; + } + + function moveDrawnEdgeEndPoint(x2, y2) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (!this._drawnEdge) { + throw Error('No edge has been drawn'); + } + + var edge = this._drawnEdge.g; + var x1 = this._drawnEdge.x1; + var y1 = this._drawnEdge.y1; + var attributes = this._drawnEdge.attributes; + this._drawnEdge.x2 = x2; + this._drawnEdge.y2 = y2; + + _moveEdge(edge, x1, y1, x2, y2, attributes, options); + + return this; + } + function removeDrawnEdge() { + if (!this._drawnEdge) { + return this; + } + + var edge = this._drawnEdge.g; + edge.remove(); + this._drawnEdge = null; + return this; + } + function insertDrawnEdge(name) { + if (!this._drawnEdge) { + throw Error('No edge has been drawn'); + } + + var edge = this._drawnEdge.g; + + if (edge.empty()) { + return this; + } + + var attributes = this._drawnEdge.attributes; + var title = edge.selectWithoutDataPropagation("title"); + title.text(name); + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + var graph0 = svg.selectWithoutDataPropagation("g"); + var graph0Datum = graph0.datum(); + + var edgeData = this._extractData(edge, graph0Datum.children.length, graph0.datum()); + + graph0Datum.children.push(edgeData); + insertAllElementsData(edge, edgeData); + this._drawnEdge = null; + return this; + } + function drawnEdgeSelection() { + if (this._drawnEdge) { + return this._drawnEdge.g; + } else { + return d3.select(null); + } + } + + function createEdge(attributes) { + var attributesString = ''; + + for (var _i = 0, _Object$keys = Object.keys(attributes); _i < _Object$keys.length; _i++) { + var name = _Object$keys[_i]; + + if (attributes[name] != null) { + attributesString += ' "' + name + '"="' + attributes[name] + '"'; + } + } + + var dotSrc = 'digraph {a -> b [' + attributesString + ']}'; + var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot'); + var parser = new window.DOMParser(); + var doc = parser.parseFromString(svgDoc, "image/svg+xml"); + var newDoc = d3.select(document.createDocumentFragment()).append(function () { + return doc.documentElement; + }); + var edge = newDoc.select('.edge'); + return edge; + } + + function drawNode(x, y, nodeId) { + var attributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + attributes = Object.assign({}, attributes); + + if (attributes.style && attributes.style.includes('invis')) { + var newNode = d3.select(null); + } else { + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + var graph0 = svg.selectWithoutDataPropagation("g"); + var newNode0 = createNode.call(this, nodeId, attributes); + var nodeData = extractAllElementsData(newNode0); + var newNode = graph0.append('g').data([nodeData]); + attributeElement.call(newNode.node(), nodeData); + + _updateNode.call(this, newNode, x, y, nodeId, attributes, options); + } + + this._drawnNode = { + g: newNode, + nodeId: nodeId, + x: x, + y: y, + attributes: attributes + }; + return this; + } + function updateDrawnNode(x, y, nodeId) { + var attributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + + if (!this._drawnNode) { + throw Error('No node has been drawn'); + } + + var node = this._drawnNode.g; + + if (nodeId == null) { + nodeId = this._drawnNode.nodeId; + } + + attributes = Object.assign(this._drawnNode.attributes, attributes); + this._drawnNode.nodeId = nodeId; + this._drawnNode.x = x; + this._drawnNode.y = y; + + if (node.empty() && !(attributes.style && attributes.style.includes('invis'))) { + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + var graph0 = svg.selectWithoutDataPropagation("g"); + var node = graph0.append('g'); + this._drawnNode.g = node; + } + + if (!node.empty()) { + _updateNode.call(this, node, x, y, nodeId, attributes, options); + } + + return this; + } + + function _updateNode(node, x, y, nodeId, attributes, options) { + var newNode = createNode.call(this, nodeId, attributes); + var nodeData = extractAllElementsData(newNode); + node.data([nodeData]); + attributeElement.call(node.node(), nodeData); + + _moveNode(node, x, y, attributes); + + return this; + } + + function _moveNode(node, x, y, attributes, options) { + if (attributes.URL || attributes.tooltip) { + var subParent = node.selectWithoutDataPropagation("g").selectWithoutDataPropagation("a"); + } else { + var subParent = node; + } + + var svgElements = subParent.selectAll('ellipse,polygon,path,polyline'); + var text = node.selectWithoutDataPropagation("text"); + + if (svgElements.size() != 0) { + var bbox = svgElements.node().getBBox(); + bbox.cx = bbox.x + bbox.width / 2; + bbox.cy = bbox.y + bbox.height / 2; + } else if (text.size() != 0) { + bbox = { + x: +text.attr('x'), + y: +text.attr('y'), + width: 0, + height: 0, + cx: +text.attr('x'), + cy: +text.attr('y') + }; + } + + svgElements.each(function (data, index) { + var svgElement = d3.select(this); + + if (svgElement.attr("cx")) { + svgElement.attr("cx", roundTo2Decimals(x)).attr("cy", roundTo2Decimals(y)); + } else if (svgElement.attr("points")) { + var pointsString = svgElement.attr('points').trim(); + svgElement.attr("points", translatePointsAttribute(pointsString, x - bbox.cx, y - bbox.cy)); + } else { + var d = svgElement.attr('d'); + svgElement.attr("d", translateDAttribute(d, x - bbox.cx, y - bbox.cy)); + } + }); + + if (text.size() != 0) { + text.attr("x", roundTo2Decimals(+text.attr("x") + x - bbox.cx)).attr("y", roundTo2Decimals(+text.attr("y") + y - bbox.cy)); + } + + return this; + } + + function moveDrawnNode(x, y) { + + if (!this._drawnNode) { + throw Error('No node has been drawn'); + } + + var node = this._drawnNode.g; + var attributes = this._drawnNode.attributes; + this._drawnNode.x = x; + this._drawnNode.y = y; + + if (!node.empty()) { + _moveNode(node, x, y, attributes); + } + + return this; + } + function removeDrawnNode() { + if (!this._drawnNode) { + return this; + } + + var node = this._drawnNode.g; + + if (!node.empty()) { + node.remove(); + } + + this._drawnNode = null; + return this; + } + function insertDrawnNode(nodeId) { + if (!this._drawnNode) { + throw Error('No node has been drawn'); + } + + if (nodeId == null) { + nodeId = this._drawnNode.nodeId; + } + + var node = this._drawnNode.g; + + if (node.empty()) { + return this; + } + + var attributes = this._drawnNode.attributes; + var title = node.selectWithoutDataPropagation("title"); + title.text(nodeId); + + if (attributes.URL || attributes.tooltip) { + var ga = node.selectWithoutDataPropagation("g"); + var a = ga.selectWithoutDataPropagation("a"); + var svgElement = a.selectWithoutDataPropagation('ellipse,polygon,path,polyline'); + var text = a.selectWithoutDataPropagation('text'); + } else { + var svgElement = node.selectWithoutDataPropagation('ellipse,polygon,path,polyline'); + var text = node.selectWithoutDataPropagation('text'); + } + + text.text(attributes.label || nodeId); + var root = this._selection; + var svg = root.selectWithoutDataPropagation("svg"); + var graph0 = svg.selectWithoutDataPropagation("g"); + var graph0Datum = graph0.datum(); + + var nodeData = this._extractData(node, graph0Datum.children.length, graph0.datum()); + + graph0Datum.children.push(nodeData); + insertAllElementsData(node, nodeData); + this._drawnNode = null; + return this; + } + function drawnNodeSelection() { + if (this._drawnNode) { + return this._drawnNode.g; + } else { + return d3.select(null); + } + } + + function createNode(nodeId, attributes) { + var attributesString = ''; + + for (var _i = 0, _Object$keys = Object.keys(attributes); _i < _Object$keys.length; _i++) { + var name = _Object$keys[_i]; + + if (attributes[name] != null) { + attributesString += ' "' + name + '"="' + attributes[name] + '"'; + } + } + + var dotSrc = 'graph {"' + nodeId + '" [' + attributesString + ']}'; + var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot'); + var parser = new window.DOMParser(); + var doc = parser.parseFromString(svgDoc, "image/svg+xml"); + var newDoc = d3.select(document.createDocumentFragment()).append(function () { + return doc.documentElement; + }); + var node = newDoc.select('.node'); + return node; + } + + /* This file is excluded from coverage because the intrumented code + * translates "self" which gives a reference error. + */ + + /* istanbul ignore next */ + function workerCode() { + self.document = {}; // Workaround for "ReferenceError: document is not defined" in hpccWasm + + var hpccWasm; + + self.onmessage = function (event) { + if (event.data.vizURL) { + importScripts(event.data.vizURL); + hpccWasm = self["@hpcc-js/wasm"]; + hpccWasm.wasmFolder(event.data.vizURL.match(/.*\//)); // This is an alternative workaround where wasmFolder() is not needed + // document = {currentScript: {src: event.data.vizURL}}; + } + + hpccWasm.graphviz.layout(event.data.dot, "svg", event.data.engine, event.data.options).then(function (svg) { + if (svg) { + self.postMessage({ + type: "done", + svg: svg + }); + } else if (event.data.vizURL) { + self.postMessage({ + type: "init" + }); + } else { + self.postMessage({ + type: "skip" + }); + } + })["catch"](function (error) { + self.postMessage({ + type: "error", + error: error.message + }); + }); + }; + } + + var _graphviz$prototype; + function Graphviz(selection, options) { + this._options = { + useWorker: true, + engine: 'dot', + keyMode: 'title', + fade: true, + tweenPaths: true, + tweenShapes: true, + convertEqualSidedPolygons: true, + tweenPrecision: 1, + growEnteringEdges: true, + zoom: true, + zoomScaleExtent: [0.1, 10], + zoomTranslateExtent: [[-Infinity, -Infinity], [+Infinity, +Infinity]], + width: null, + height: null, + scale: 1, + fit: false + }; + + if (options instanceof Object) { + for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) { + var option = _Object$keys[_i]; + this._options[option] = options[option]; + } + } else if (typeof options == 'boolean') { + this._options.useWorker = options; + } + + var useWorker = this._options.useWorker; + + if (typeof Worker == 'undefined') { + useWorker = false; + } + + if (useWorker) { + var scripts = d3.selectAll('script'); + var vizScript = scripts.filter(function () { + return d3.select(this).attr('type') == 'javascript/worker' || d3.select(this).attr('src') && d3.select(this).attr('src').match(/.*\/@hpcc-js\/wasm/); + }); + + if (vizScript.size() == 0) { + console.warn('No script tag of type "javascript/worker" was found and "useWorker" is true. Not using web worker.'); + useWorker = false; + } else { + this._vizURL = vizScript.attr('src'); + + if (!this._vizURL) { + console.warn('No "src" attribute of was found on the "javascript/worker" script tag and "useWorker" is true. Not using web worker.'); + useWorker = false; + } + } + } + + if (useWorker) { + var blob = new Blob(['(' + workerCode.toString() + ')()']); + var blobURL = window.URL.createObjectURL(blob); + this._worker = new Worker(blobURL); + this._workerCallbacks = []; + } + + this._selection = selection; + this._active = false; + this._busy = false; + this._jobs = []; + this._queue = []; + this._keyModes = new Set(['title', 'id', 'tag-index', 'index']); + this._images = []; + this._translation = undefined; + this._scale = undefined; + this._eventTypes = ['initEnd', 'start', 'layoutStart', 'layoutEnd', 'dataExtractEnd', 'dataProcessPass1End', 'dataProcessPass2End', 'dataProcessEnd', 'renderStart', 'renderEnd', 'transitionStart', 'transitionEnd', 'restoreEnd', 'end']; + this._dispatch = d3Dispatch.dispatch.apply(void 0, _toConsumableArray(this._eventTypes)); + initViz.call(this); + selection.node().__graphviz__ = this; + } + function graphviz(selector, options) { + var g = d3.select(selector).graphviz(options); + return g; + } + Graphviz.prototype = graphviz.prototype = (_graphviz$prototype = { + constructor: Graphviz, + engine: engine, + addImage: images, + keyMode: keyMode, + fade: fade, + tweenPaths: tweenPaths, + tweenShapes: tweenShapes, + convertEqualSidedPolygons: convertEqualSidedPolygons, + tweenPrecision: tweenPrecision, + growEnteringEdges: growEnteringEdges, + zoom: zoom, + resetZoom: resetZoom, + zoomBehavior: zoomBehavior, + zoomSelection: zoomSelection, + zoomScaleExtent: zoomScaleExtent, + zoomTranslateExtent: zoomTranslateExtent, + render: render, + dot: dot, + data: data, + renderDot: renderDot, + transition: transition, + active: active, + options: options, + width: width, + height: height, + scale: scale, + fit: fit, + attributer: attributer, + on: on, + onerror: onerror, + logEvents: logEvents, + drawEdge: drawEdge, + updateDrawnEdge: updateDrawnEdge, + moveDrawnEdgeEndPoint: moveDrawnEdgeEndPoint, + insertDrawnEdge: insertDrawnEdge, + removeDrawnEdge: removeDrawnEdge + }, _defineProperty(_graphviz$prototype, "removeDrawnEdge", removeDrawnEdge), _defineProperty(_graphviz$prototype, "drawnEdgeSelection", drawnEdgeSelection), _defineProperty(_graphviz$prototype, "drawnEdgeSelection", drawnEdgeSelection), _defineProperty(_graphviz$prototype, "drawNode", drawNode), _defineProperty(_graphviz$prototype, "updateDrawnNode", updateDrawnNode), _defineProperty(_graphviz$prototype, "moveDrawnNode", moveDrawnNode), _defineProperty(_graphviz$prototype, "insertDrawnNode", insertDrawnNode), _defineProperty(_graphviz$prototype, "removeDrawnNode", removeDrawnNode), _defineProperty(_graphviz$prototype, "removeDrawnNode", removeDrawnNode), _defineProperty(_graphviz$prototype, "drawnNodeSelection", drawnNodeSelection), _defineProperty(_graphviz$prototype, "drawnNodeSelection", drawnNodeSelection), _graphviz$prototype); + + function selection_graphviz (options) { + var g = this.node().__graphviz__; + + if (g) { + g.options(options); // Ensure a possible new initEnd event handler is attached before calling it + + d3Timer.timeout(function () { + g._dispatch.call("initEnd", this); + }.bind(this), 0); + } else { + g = new Graphviz(this, options); + } + + return g; + } + + function selection_selectWithoutDataPropagation (name) { + return d3.select(this.size() > 0 ? this.node().querySelector(name) : null); + } + + d3.selection.prototype.graphviz = selection_graphviz; + d3.selection.prototype.selectWithoutDataPropagation = selection_selectWithoutDataPropagation; + + function cov_1xw4w53hps() { + var path = "/tmp/d3-graphviz-npm/d3-graphviz/index.js"; + var hash = "8918f1e98fa5848854500c53da95bee86581bfda"; + var global = new Function("return this")(); + var gcv = "__coverage__"; + var coverageData = { + path: "/tmp/d3-graphviz-npm/d3-graphviz/index.js", + statementMap: {}, + fnMap: {}, + branchMap: {}, + s: {}, + f: {}, + b: {}, + _coverageSchema: "1a1c01bbd47fc00a2c39e90264f33305004495a9", + hash: "8918f1e98fa5848854500c53da95bee86581bfda" + }; + var coverage = global[gcv] || (global[gcv] = {}); + + if (!coverage[path] || coverage[path].hash !== hash) { + coverage[path] = coverageData; + } + + var actualCoverage = coverage[path]; + + cov_1xw4w53hps = function () { + return actualCoverage; + }; + + return actualCoverage; + } + + cov_1xw4w53hps(); + + exports.graphviz = graphviz; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); +//# sourceMappingURL=d3-graphviz.js.map diff --git a/graphing/d3-graphviz.js.map b/graphing/d3-graphviz.js.map new file mode 100644 index 0000000..b9cb72c --- /dev/null +++ b/graphing/d3-graphviz.js.map @@ -0,0 +1 @@ +{"version":3,"file":"d3-graphviz.js","sources":["../src/element.js","../src/utils.js","../src/zoom.js","../src/tweening.js","../src/data.js","../src/render.js","../src/svg.js","../src/dot.js","../src/renderDot.js","../src/transition.js","../src/options.js","../src/width.js","../src/height.js","../src/scale.js","../src/fit.js","../src/attributer.js","../src/engine.js","../src/images.js","../src/keyMode.js","../src/fade.js","../src/tweenPaths.js","../src/tweenShapes.js","../src/convertEqualSidedPolygons.js","../src/tweenPrecision.js","../src/growEnteringEdges.js","../src/on.js","../src/onerror.js","../src/logEvents.js","../src/geometry.js","../src/drawEdge.js","../src/drawNode.js","../src/workerCode.js","../src/graphviz.js","../src/selection/graphviz.js","../src/selection/selectWithoutDataPropagation.js","../src/selection/index.js"],"sourcesContent":["import * as d3 from \"d3-selection\";\n\nexport function extractElementData(element) {\n\n var datum = {};\n var tag = element.node().nodeName;\n datum.tag = tag;\n if (tag == '#text') {\n datum.text = element.text();\n } else if (tag == '#comment') {\n datum.comment = element.text();\n }\n datum.attributes = {};\n var attributes = element.node().attributes;\n if (attributes) {\n for (var i = 0; i < attributes.length; i++) {\n var attribute = attributes[i];\n var name = attribute.name;\n var value = attribute.value;\n datum.attributes[name] = value;\n }\n }\n var transform = element.node().transform;\n if (transform && transform.baseVal.numberOfItems != 0) {\n var matrix = transform.baseVal.consolidate().matrix;\n datum.translation = {x: matrix.e, y: matrix.f};\n datum.scale = matrix.a;\n }\n if (tag == 'ellipse') {\n datum.center = {\n x: datum.attributes.cx,\n y: datum.attributes.cy,\n };\n }\n if (tag == 'polygon') {\n var points = element.attr('points').split(' ');\n var x = points.map(function(p) {return p.split(',')[0]});\n var y = points.map(function(p) {return p.split(',')[1]});\n var xmin = Math.min.apply(null, x);\n var xmax = Math.max.apply(null, x);\n var ymin = Math.min.apply(null, y);\n var ymax = Math.max.apply(null, y);\n var bbox = {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin,\n };\n datum.bbox = bbox;\n datum.center = {\n x: (xmin + xmax) / 2,\n y: (ymin + ymax) / 2,\n };\n }\n if (tag == 'path') {\n var d = element.attr('d');\n var points = d.split(/[A-Z ]/);\n points.shift();\n var x = points.map(function(p) {return +p.split(',')[0]});\n var y = points.map(function(p) {return +p.split(',')[1]});\n var xmin = Math.min.apply(null, x);\n var xmax = Math.max.apply(null, x);\n var ymin = Math.min.apply(null, y);\n var ymax = Math.max.apply(null, y);\n var bbox = {\n x: xmin,\n y: ymin,\n width: xmax - xmin,\n height: ymax - ymin,\n };\n datum.bbox = bbox;\n datum.center = {\n x: (xmin + xmax) / 2,\n y: (ymin + ymax) / 2,\n };\n datum.totalLength = element.node().getTotalLength();\n }\n if (tag == 'text') {\n datum.center = {\n x: element.attr('x'),\n y: element.attr('y'),\n };\n }\n if (tag == '#text') {\n datum.text = element.text();\n } else if (tag == '#comment') {\n datum.comment = element.text();\n }\n return datum\n}\n\nexport function extractAllElementsData(element) {\n\n var datum = extractElementData(element);\n datum.children = [];\n var children = d3.selectAll(element.node().childNodes);\n children.each(function () {\n var childData = extractAllElementsData(d3.select(this));\n childData.parent = datum;\n datum.children.push(childData);\n });\n return datum;\n}\n\nexport function createElement(data) {\n\n if (data.tag == '#text') {\n return document.createTextNode(\"\");\n } else if (data.tag == '#comment') {\n return document.createComment(data.comment);\n } else {\n return document.createElementNS('http://www.w3.org/2000/svg', data.tag);\n }\n}\n\nexport function createElementWithAttributes(data) {\n\n var elementNode = createElement(data);\n var element = d3.select(elementNode);\n var attributes = data.attributes;\n for (var attributeName of Object.keys(attributes)) {\n var attributeValue = attributes[attributeName];\n element.attr(attributeName, attributeValue);\n }\n return elementNode;\n}\n\nexport function replaceElement(element, data) {\n var parent = d3.select(element.node().parentNode);\n var newElementNode = createElementWithAttributes(data);\n var newElement = parent.insert(function () {\n return newElementNode;\n }, function () {\n return element.node();\n });\n element.remove();\n return newElement;\n}\n\nexport function insertElementData(element, datum) {\n element.datum(datum);\n element.data([datum], function (d) {\n return d.key;\n });\n}\n\nexport function insertAllElementsData(element, datum) {\n insertElementData(element, datum);\n var children = d3.selectAll(element.node().childNodes);\n children.each(function (d, i) {\n insertAllElementsData(d3.select(this), datum.children[i]);\n });\n}\n\nfunction insertChildren(element, index) {\n var children = element.selectAll(function () {\n return element.node().childNodes;\n });\n\n children = children\n .data(function (d) {\n return d.children;\n }, function (d) {\n return d.tag + '-' + index;\n });\n var childrenEnter = children\n .enter()\n .append(function(d) {\n return createElement(d);\n });\n\n var childrenExit = children\n .exit();\n childrenExit = childrenExit\n .remove()\n children = childrenEnter\n .merge(children);\n var childTagIndexes = {};\n children.each(function(childData) {\n var childTag = childData.tag;\n if (childTagIndexes[childTag] == null) {\n childTagIndexes[childTag] = 0;\n }\n var childIndex = childTagIndexes[childTag]++;\n attributeElement.call(this, childData, childIndex);\n });\n}\n\nexport function attributeElement(data, index=0) {\n var element = d3.select(this);\n var tag = data.tag;\n var attributes = data.attributes;\n var currentAttributes = element.node().attributes;\n if (currentAttributes) {\n for (var i = 0; i < currentAttributes.length; i++) {\n var currentAttribute = currentAttributes[i];\n var name = currentAttribute.name;\n if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {\n var namespaceURIParts = currentAttribute.namespaceURI.split('/');\n var namespace = namespaceURIParts[namespaceURIParts.length - 1];\n name = namespace + ':' + name;\n }\n if (!(name in attributes)) {\n attributes[name] = null;\n }\n }\n }\n for (var attributeName of Object.keys(attributes)) {\n element\n .attr(attributeName, attributes[attributeName]);\n }\n if (data.text) {\n element\n .text(data.text);\n }\n insertChildren(element, index);\n}\n","export function shallowCopyObject(obj) {\n return Object.assign({}, obj);\n}\n\nexport function roundTo2Decimals(x) {\n return Math.round(x * 100.0) / 100.0\n}\n","import * as d3 from \"d3-selection\";\nimport {zoom, zoomTransform, zoomIdentity} from \"d3-zoom\";\nimport {interpolate} from \"d3-interpolate\";\n\nexport default function(enable) {\n\n this._options.zoom = enable;\n\n if (this._options.zoom && !this._zoomBehavior) {\n createZoomBehavior.call(this);\n }\n\n return this;\n}\n\nexport function createZoomBehavior() {\n\n function zoomed() {\n var g = d3.select(svg.node().querySelector(\"g\"));\n g.attr('transform', d3.event.transform);\n }\n\n var root = this._selection;\n var svg = d3.select(root.node().querySelector(\"svg\"));\n if (svg.size() == 0) {\n return this;\n }\n this._zoomSelection = svg;\n var zoomBehavior = zoom()\n .scaleExtent(this._options.zoomScaleExtent)\n .translateExtent(this._options.zoomTranslateExtent)\n .interpolate(interpolate)\n .on(\"zoom\", zoomed);\n this._zoomBehavior = zoomBehavior;\n var g = d3.select(svg.node().querySelector(\"g\"));\n svg.call(zoomBehavior);\n if (!this._active) {\n translateZoomBehaviorTransform.call(this, g);\n }\n this._originalTransform = zoomTransform(svg.node());\n\n return this;\n};\n\nexport function getTranslatedZoomTransform(selection) {\n\n // Get the current zoom transform for the top level svg and\n // translate it uniformly with the given selection, using the\n // difference between the translation specified in the selection's\n // data and it's saved previous translation. The selection is\n // normally the top level g element of the graph.\n var oldTranslation = this._translation;\n var oldScale = this._scale;\n var newTranslation = selection.datum().translation;\n var newScale = selection.datum().scale;\n var t = zoomTransform(this._zoomSelection.node());\n if (oldTranslation) {\n t = t.scale(1 / oldScale);\n t = t.translate(-oldTranslation.x, -oldTranslation.y);\n }\n t = t.translate(newTranslation.x, newTranslation.y);\n t = t.scale(newScale);\n return t;\n}\n\nexport function translateZoomBehaviorTransform(selection) {\n\n // Translate the current zoom transform for the top level svg\n // uniformly with the given selection, using the difference\n // between the translation specified in the selection's data and\n // it's saved previous translation. The selection is normally the\n // top level g element of the graph.\n this._zoomBehavior.transform(this._zoomSelection, getTranslatedZoomTransform.call(this, selection));\n\n // Save the selections's new translation and scale.\n this._translation = selection.datum().translation;\n this._scale = selection.datum().scale;\n\n // Set the original zoom transform to the translation and scale specified in\n // the selection's data.\n this._originalTransform = zoomIdentity.translate(selection.datum().translation.x, selection.datum().translation.y).scale(selection.datum().scale);\n}\n\nexport function resetZoom(transition) {\n\n // Reset the zoom transform to the original zoom transform.\n var selection = this._zoomSelection;\n if (transition) {\n selection = selection\n .transition(transition);\n }\n selection\n .call(this._zoomBehavior.transform, this._originalTransform);\n\n return this;\n}\n\nexport function zoomScaleExtent(extent) {\n\n this._options.zoomScaleExtent = extent;\n\n return this;\n}\n\nexport function zoomTranslateExtent(extent) {\n\n this._options.zoomTranslateExtent = extent;\n\n return this;\n}\n\nexport function zoomBehavior() {\n return this._zoomBehavior || null;\n}\n\nexport function zoomSelection() {\n return this._zoomSelection || null;\n}\n","import {interpolate} from \"d3-interpolate\";\n\nexport function pathTween(points, d1) {\n return function() {\n const pointInterpolators = points.map(function(p) {\n return interpolate([p[0][0], p[0][1]], [p[1][0], p[1][1]]);\n });\n return function(t) {\n return t < 1 ? \"M\" + pointInterpolators.map(function(p) { return p(t); }).join(\"L\") : d1;\n };\n };\n}\n\nexport function pathTweenPoints(node, d1, precision, precisionIsRelative) {\n const path0 = node;\n const path1 = path0.cloneNode();\n const n0 = path0.getTotalLength();\n const n1 = (path1.setAttribute(\"d\", d1), path1).getTotalLength();\n\n // Uniform sampling of distance based on specified precision.\n const distances = [0];\n let i = 0;\n const dt = precisionIsRelative ? precision : precision / Math.max(n0, n1);\n while ((i += dt) < 1) {\n distances.push(i);\n }\n distances.push(1);\n\n // Compute point-interpolators at each distance.\n const points = distances.map(function(t) {\n const p0 = path0.getPointAtLength(t * n0);\n const p1 = path1.getPointAtLength(t * n1);\n return ([[p0.x, p0.y], [p1.x, p1.y]]);\n });\n return points;\n}\n","export default function() {\n return this._data || null;\n}\n\nexport function isEdgeElementParent(datum) {\n return (datum.attributes.class == 'edge' || (\n datum.tag == 'a' &&\n datum.parent.tag == 'g' &&\n datum.parent.parent.attributes.class == 'edge'\n ));\n}\n\nexport function isEdgeElement(datum) {\n return datum.parent && isEdgeElementParent(datum.parent);\n}\n\nexport function getEdgeGroup(datum) {\n if (datum.parent.attributes.class == 'edge') {\n return datum.parent;\n } else { // datum.parent.tag == 'g' && datum.parent.parent.tag == 'g' && datum.parent.parent.parent.attributes.class == 'edge'\n return datum.parent.parent.parent;\n }\n}\n\nexport function getEdgeTitle(datum) {\n return getEdgeGroup(datum).children.find(function (e) {\n return e.tag == 'title';\n });\n}\n","import * as d3 from \"d3-selection\";\nimport {transition} from \"d3-transition\";\nimport {timeout} from \"d3-timer\";\nimport {interpolateTransformSvg} from \"d3-interpolate\";\nimport {zoomTransform} from \"d3-zoom\";\nimport {createElement, extractElementData, replaceElement} from \"./element\";\nimport {shallowCopyObject} from \"./utils\";\nimport {createZoomBehavior, getTranslatedZoomTransform, translateZoomBehaviorTransform} from \"./zoom\";\nimport {pathTween} from \"./tweening\";\nimport {isEdgeElement} from \"./data\";\nimport {isEdgeElementParent} from \"./data\";\n\nexport default function(callback) {\n\n if (this._busy) {\n this._queue.push(this.render.bind(this, callback));\n return this;\n }\n this._dispatch.call('renderStart', this);\n\n if (this._transitionFactory) {\n timeout(function () { // Decouple from time spent. See https://github.com/d3/d3-timer/issues/27\n this._transition = transition(this._transitionFactory());\n _render.call(this, callback);\n }.bind(this), 0);\n } else {\n _render.call(this, callback);\n }\n return this;\n}\n\nfunction _render(callback) {\n\n var transitionInstance = this._transition;\n var fade = this._options.fade && transitionInstance != null;\n var tweenPaths = this._options.tweenPaths;\n var tweenShapes = this._options.tweenShapes;\n var convertEqualSidedPolygons = this._options.convertEqualSidedPolygons;\n var growEnteringEdges = this._options.growEnteringEdges && transitionInstance != null;\n var attributer = this._attributer;\n var graphvizInstance = this;\n\n function insertChildren(element) {\n var children = element.selectAll(function () {\n return element.node().childNodes;\n });\n\n children = children\n .data(function (d) {\n return d.children;\n }, function (d) {\n return d.key;\n });\n var childrenEnter = children\n .enter()\n .append(function(d) {\n var element = createElement(d);\n if (d.tag == '#text' && fade) {\n element.nodeValue = d.text;\n }\n return element;\n });\n\n if (fade || (growEnteringEdges && isEdgeElementParent(element.datum()))) {\n var childElementsEnter = childrenEnter\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .each(function (d) {\n var childEnter = d3.select(this);\n for (var attributeName of Object.keys(d.attributes)) {\n var attributeValue = d.attributes[attributeName];\n childEnter\n .attr(attributeName, attributeValue);\n }\n });\n childElementsEnter\n .filter(function(d) {\n return d.tag == 'svg' || d.tag == 'g' ? null : this;\n })\n .style(\"opacity\", 0.0);\n }\n var childrenExit = children\n .exit();\n if (attributer) {\n childrenExit.each(attributer);\n }\n if (transitionInstance) {\n childrenExit = childrenExit\n .transition(transitionInstance);\n if (fade) {\n childrenExit\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .style(\"opacity\", 0.0);\n }\n }\n childrenExit = childrenExit\n .remove()\n children = childrenEnter\n .merge(children);\n children.each(attributeElement);\n }\n\n function attributeElement(data) {\n var element = d3.select(this);\n if (data.tag == \"svg\") {\n var options = graphvizInstance._options;\n if (options.width != null || options.height != null) {\n var width = options.width;\n var height = options.height;\n if (width == null) {\n width = data.attributes.width.replace('pt', '') * 4 / 3;\n } else {\n element\n .attr(\"width\", width);\n data.attributes.width = width;\n }\n if (height == null) {\n height = data.attributes.height.replace('pt', '') * 4 / 3;\n } else {\n element\n .attr(\"height\", height);\n data.attributes.height = height;\n }\n if (!options.fit) {\n element\n .attr(\"viewBox\", `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`);\n data.attributes.viewBox = `0 0 ${width * 3 / 4 / options.scale} ${height * 3 / 4 / options.scale}`;\n }\n }\n if (options.scale != 1 && (options.fit || (options.width == null && options.height == null))) {\n width = data.attributes.viewBox.split(' ')[2];\n height = data.attributes.viewBox.split(' ')[3];\n element\n .attr(\"viewBox\", `0 0 ${width / options.scale} ${height / options.scale}`);\n data.attributes.viewBox = `0 0 ${width / options.scale} ${height / options.scale}`;\n }\n }\n if (attributer) {\n element.each(attributer);\n }\n var tag = data.tag;\n var attributes = data.attributes;\n var currentAttributes = element.node().attributes;\n if (currentAttributes) {\n for (var i = 0; i < currentAttributes.length; i++) {\n var currentAttribute = currentAttributes[i];\n var name = currentAttribute.name;\n if (name.split(':')[0] != 'xmlns' && currentAttribute.namespaceURI) {\n var namespaceURIParts = currentAttribute.namespaceURI.split('/');\n var namespace = namespaceURIParts[namespaceURIParts.length - 1];\n name = namespace + ':' + name;\n }\n if (!(name in attributes)) {\n attributes[name] = null;\n }\n }\n }\n var convertShape = false;\n var convertPrevShape = false;\n if (tweenShapes && transitionInstance) {\n if ((this.nodeName == 'polygon' || this.nodeName == 'ellipse') && data.alternativeOld) {\n convertPrevShape = true;\n }\n if ((tag == 'polygon' || tag == 'ellipse') && data.alternativeNew) {\n convertShape = true;\n }\n if (this.nodeName == 'polygon' && tag == 'polygon' && data.alternativeOld) {\n var prevData = extractElementData(element);\n var prevPoints = prevData.attributes.points;\n if (!convertEqualSidedPolygons) {\n var nPrevPoints = prevPoints.split(' ').length;\n var points = data.attributes.points;\n var nPoints = points.split(' ').length;\n if (nPoints == nPrevPoints) {\n convertShape = false;\n convertPrevShape = false;\n }\n }\n }\n if (convertPrevShape) {\n var prevPathData = data.alternativeOld;\n var pathElement = replaceElement(element, prevPathData);\n pathElement.data([data], function () {\n return data.key;\n });\n element = pathElement;\n }\n if (convertShape) {\n var newPathData = data.alternativeNew;\n tag = 'path';\n attributes = newPathData.attributes;\n }\n }\n var elementTransition = element;\n if (transitionInstance) {\n elementTransition = elementTransition\n .transition(transitionInstance);\n if (fade) {\n elementTransition\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .style(\"opacity\", 1.0);\n }\n elementTransition\n .filter(function(d) {\n return d.tag[0] == '#' ? null : this;\n })\n .on(\"end\", function() {\n d3.select(this)\n .attr('style', null);\n });\n }\n var growThisPath = growEnteringEdges && tag == 'path' && data.offset;\n if (growThisPath) {\n var totalLength = data.totalLength;\n element\n .attr(\"stroke-dasharray\", totalLength + \" \" + totalLength)\n .attr(\"stroke-dashoffset\", totalLength)\n .attr('transform', 'translate(' + data.offset.x + ',' + data.offset.y + ')');\n attributes[\"stroke-dashoffset\"] = 0;\n attributes['transform'] = 'translate(0,0)';\n elementTransition\n .attr(\"stroke-dashoffset\", attributes[\"stroke-dashoffset\"])\n .attr('transform', attributes['transform'])\n .on(\"start\", function() {\n d3.select(this)\n .style('opacity', null);\n })\n .on(\"end\", function() {\n d3.select(this)\n .attr('stroke-dashoffset', null)\n .attr('stroke-dasharray', null)\n .attr('transform', null);\n });\n }\n var moveThisPolygon = growEnteringEdges && tag == 'polygon' && isEdgeElement(data) && data.offset && data.parent.children[3].tag == 'path';\n if (moveThisPolygon) {\n var edgePath = d3.select(element.node().parentNode.querySelector(\"path\"));\n var p0 = edgePath.node().getPointAtLength(0);\n var p1 = edgePath.node().getPointAtLength(data.totalLength);\n var p2 = edgePath.node().getPointAtLength(data.totalLength - 1);\n var angle1 = Math.atan2(p1.y - p2.y, p1.x - p2.x) * 180 / Math.PI;\n var x = p0.x - p1.x + data.offset.x;\n var y = p0.y - p1.y + data.offset.y;\n element\n .attr('transform', 'translate(' + x + ',' + y + ')');\n elementTransition\n .attrTween(\"transform\", function () {\n return function (t) {\n var p = edgePath.node().getPointAtLength(data.totalLength * t);\n var p2 = edgePath.node().getPointAtLength(data.totalLength * t + 1);\n var angle = Math.atan2(p2.y - p.y, p2.x - p.x) * 180 / Math.PI - angle1;\n x = p.x - p1.x + data.offset.x * (1 - t);\n y = p.y - p1.y + data.offset.y * (1 - t);\n return 'translate(' + x + ',' + y + ') rotate(' + angle + ' ' + p1.x + ' ' + p1.y + ')';\n }\n })\n .on(\"start\", function() {\n d3.select(this)\n .style('opacity', null);\n })\n .on(\"end\", function() {\n d3.select(this).attr('transform', null);\n });\n }\n var tweenThisPath = tweenPaths && transitionInstance && tag == 'path' && element.attr('d') != null;\n for (var attributeName of Object.keys(attributes)) {\n var attributeValue = attributes[attributeName];\n if (tweenThisPath && attributeName == 'd') {\n var points = (data.alternativeOld || data).points;\n if (points) {\n elementTransition\n .attrTween(\"d\", pathTween(points, attributeValue));\n }\n } else {\n if (attributeName == 'transform' && data.translation) {\n if (transitionInstance) {\n var onEnd = elementTransition.on(\"end\");\n elementTransition\n .on(\"start\", function () {\n if (graphvizInstance._zoomBehavior) {\n // Update the transform to transition to, just before the transition starts\n // in order to catch changes between the transition scheduling to its start.\n elementTransition\n .tween(\"attr.transform\", function() {\n var node = this;\n return function(t) {\n node.setAttribute(\"transform\", interpolateTransformSvg(zoomTransform(graphvizInstance._zoomSelection.node()).toString(), getTranslatedZoomTransform.call(graphvizInstance, element).toString())(t));\n };\n });\n }\n })\n .on(\"end\", function () {\n onEnd.call(this);\n // Update the zoom transform to the new translated transform\n if (graphvizInstance._zoomBehavior) {\n translateZoomBehaviorTransform.call(graphvizInstance, element);\n }\n })\n } else {\n if (graphvizInstance._zoomBehavior) {\n // Update the transform attribute to set with the current pan translation\n attributeValue = getTranslatedZoomTransform.call(graphvizInstance, element).toString();\n }\n }\n }\n elementTransition\n .attr(attributeName, attributeValue);\n }\n }\n if (convertShape) {\n elementTransition\n .on(\"end\", function (d, i, nodes) {\n pathElement = d3.select(this);\n var newElement = replaceElement(pathElement, d);\n newElement.data([d], function () {\n return d.key;\n });\n })\n }\n if (data.text) {\n elementTransition\n .text(data.text);\n }\n insertChildren(element);\n }\n\n var root = this._selection;\n\n if (transitionInstance != null) {\n // Ensure original SVG shape elements are restored after transition before rendering new graph\n var jobs = this._jobs;\n if (graphvizInstance._active) {\n jobs.push(null);\n return this;\n } else {\n root\n .transition(transitionInstance)\n .transition()\n .duration(0)\n .on(\"end\" , function () {\n graphvizInstance._active = false;\n if (jobs.length != 0) {\n jobs.shift();\n graphvizInstance.render();\n }\n });\n this._active = true;\n }\n }\n\n if (transitionInstance != null) {\n root\n .transition(transitionInstance)\n .on(\"start\" , function () {\n graphvizInstance._dispatch.call('transitionStart', graphvizInstance);\n })\n .on(\"end\" , function () {\n graphvizInstance._dispatch.call('transitionEnd', graphvizInstance);\n })\n .transition()\n .duration(0)\n .on(\"start\" , function () {\n graphvizInstance._dispatch.call('restoreEnd', graphvizInstance);\n graphvizInstance._dispatch.call('end', graphvizInstance);\n if (callback) {\n callback.call(graphvizInstance);\n }\n });\n }\n\n var data = this._data;\n\n var svg = root\n .selectAll(\"svg\")\n .data([data], function (d) {return d.key});\n svg = svg\n .enter()\n .append(\"svg\")\n .merge(svg);\n\n attributeElement.call(svg.node(), data);\n\n\n if (this._options.zoom && !this._zoomBehavior) {\n createZoomBehavior.call(this);\n }\n\n graphvizInstance._dispatch.call('renderEnd', graphvizInstance);\n\n if (transitionInstance == null) {\n this._dispatch.call('end', this);\n if (callback) {\n callback.call(this);\n }\n }\n\n return this;\n};\n","import {shallowCopyObject} from \"./utils\";\nimport {roundTo2Decimals} from \"./utils\";\n\nexport function convertToPathData(originalData, guideData) {\n if (originalData.tag == 'polygon') {\n var newData = shallowCopyObject(originalData);\n newData.tag = 'path';\n var originalAttributes = originalData.attributes;\n var newAttributes = shallowCopyObject(originalAttributes);\n var newPointsString = originalAttributes.points;\n if (guideData.tag == 'polygon') {\n var bbox = originalData.bbox;\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n var pointsString = originalAttributes.points;\n var pointStrings = pointsString.split(' ');\n var normPoints = pointStrings.map(function(p) {var xy = p.split(','); return [xy[0] - bbox.cx, xy[1] - bbox.cy]});\n var x0 = normPoints[normPoints.length - 1][0];\n var y0 = normPoints[normPoints.length - 1][1];\n for (var i = 0; i < normPoints.length; i++, x0 = x1, y0 = y1) {\n var x1 = normPoints[i][0];\n var y1 = normPoints[i][1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dy == 0) {\n continue;\n } else {\n var x2 = x0 - y0 * dx / dy;\n }\n if (0 <= x2 && x2 < Infinity && ((x0 <= x2 && x2 <= x1) || (x1 <= x2 && x2 <= x0))) {\n break;\n }\n }\n var newPointStrings = [[bbox.cx + x2, bbox.cy + 0].join(',')];\n newPointStrings = newPointStrings.concat(pointStrings.slice(i));\n newPointStrings = newPointStrings.concat(pointStrings.slice(0, i));\n newPointsString = newPointStrings.join(' ');\n }\n newAttributes['d'] = 'M' + newPointsString + 'z';\n delete newAttributes.points;\n newData.attributes = newAttributes;\n } else /* if (originalData.tag == 'ellipse') */ {\n var newData = shallowCopyObject(originalData);\n newData.tag = 'path';\n var originalAttributes = originalData.attributes;\n var newAttributes = shallowCopyObject(originalAttributes);\n var cx = originalAttributes.cx;\n var cy = originalAttributes.cy;\n var rx = originalAttributes.rx;\n var ry = originalAttributes.ry;\n if (guideData.tag == 'polygon') {\n var bbox = guideData.bbox;\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n var p = guideData.attributes.points.split(' ')[0].split(',');\n var sx = p[0];\n var sy = p[1];\n var dx = sx - bbox.cx;\n var dy = sy - bbox.cy;\n var l = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n var cosA = dx / l;\n var sinA = -dy / l;\n } else { // if (guideData.tag == 'path') {\n // FIXME: add support for getting start position from path\n var cosA = 1;\n var sinA = 0;\n }\n var x1 = rx * cosA;\n var y1 = -ry * sinA;\n var x2 = rx * (-cosA);\n var y2 = -ry * (-sinA);\n var dx = x2 - x1;\n var dy = y2 - y1;\n newAttributes['d'] = 'M ' + cx + ' ' + cy + ' m ' + x1 + ',' + y1 + ' a ' + rx + ',' + ry + ' 0 1,0 ' + dx + ',' + dy + ' a ' + rx + ',' + ry + ' 0 1,0 ' + -dx + ',' + -dy + 'z';\n delete newAttributes.cx;\n delete newAttributes.cy;\n delete newAttributes.rx;\n delete newAttributes.ry;\n newData.attributes = newAttributes;\n }\n return newData;\n}\n\nexport function translatePointsAttribute(pointsString, x, y) {\n var pointStrings = pointsString.split(' ');\n var points = pointStrings.map(function(p) {return p.split(',')});\n var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});\n var pointStrings = points.map(function(p) {return p.join(',')});\n var pointsString = pointStrings.join(' ');\n return pointsString;\n}\n\nexport function translateDAttribute(d, x, y) {\n var pointStrings = d.split(/[A-Z ]/);\n pointStrings.shift();\n var commands = d.split(/[^[A-Z ]+/);\n var points = pointStrings.map(function(p) {return p.split(',')});\n var points = pointStrings.map(function(p) {return [roundTo2Decimals(+x + +p.split(',')[0]), roundTo2Decimals(+y + +p.split(',')[1])]});\n var pointStrings = points.map(function(p) {return p.join(',')});\n d = commands.reduce(function(arr, v, i) {\n return arr.concat(v, pointStrings[i]);\n }, []).join('');\n return d;\n}\n","import { graphviz } from \"@hpcc-js/wasm\";\nimport { graphvizSync } from \"@hpcc-js/wasm\";\nimport * as d3 from \"d3-selection\";\nimport {extractAllElementsData, extractElementData, createElementWithAttributes} from \"./element\";\nimport {convertToPathData} from \"./svg\";\nimport {pathTweenPoints} from \"./tweening\";\nimport {isEdgeElement} from \"./data\";\nimport {getEdgeTitle} from \"./data\";\n\n\nexport function initViz() {\n\n // force JIT compilation of Viz.js\n try {\n graphviz.layout(\"\", \"svg\", \"dot\").then(() => {\n graphvizSync().then((graphviz1) => {\n this.layoutSync = graphviz1.layout.bind(graphviz1);\n if (this._worker == null) {\n this._dispatch.call(\"initEnd\", this);\n }\n if (this._afterInit) {\n this._afterInit();\n }\n });\n });\n } catch(error) {\n }\n if (this._worker != null) {\n var vizURL = this._vizURL;\n var graphvizInstance = this;\n this._worker.onmessage = function(event) {\n var callback = graphvizInstance._workerCallbacks.shift();\n switch (event.data.type) {\n case \"init\":\n graphvizInstance._dispatch.call(\"initEnd\", this);\n break;\n case \"done\":\n return layoutDone.call(graphvizInstance, event.data.svg, callback);\n case \"error\":\n if (graphvizInstance._onerror) {\n graphvizInstance._onerror(event.data.error);\n } else {\n throw event.data.error\n }\n break;\n }\n };\n if (!vizURL.match(/^https?:\\/\\/|^\\/\\//i)) {\n // Local URL. Prepend with local domain to be usable in web worker\n vizURL = (new window.URL(vizURL, document.location.href)).href;\n }\n postMessage.call(this, {dot: \"\", engine: 'dot', vizURL: vizURL});\n }\n}\n\nfunction postMessage(message, callback) {\n this._workerCallbacks.push(callback);\n this._worker.postMessage(message);\n}\n\nexport default function(src, callback) {\n\n var graphvizInstance = this;\n var worker = this._worker;\n var engine = this._options.engine;\n var images = this._images;\n\n this._dispatch.call(\"start\", this);\n this._busy = true;\n this._dispatch.call(\"layoutStart\", this);\n var vizOptions = {\n images: images,\n };\n if (this._worker) {\n postMessage.call(this, {\n dot: src,\n engine: engine,\n options: vizOptions,\n }, callback);\n } else {\n if (this.layoutSync == null) {\n this._afterInit = this.dot.bind(this, src, callback);\n return this;\n }\n try {\n var svgDoc = this.layoutSync(src, \"svg\", engine, vizOptions);\n }\n catch(error) {\n if (graphvizInstance._onerror) {\n graphvizInstance._onerror(error.message);\n return this;\n } else {\n throw error.message\n }\n }\n layoutDone.call(this, svgDoc, callback);\n }\n\n return this;\n};\n\nfunction layoutDone(svgDoc, callback) {\n var keyMode = this._options.keyMode;\n var tweenPaths = this._options.tweenPaths;\n var tweenShapes = this._options.tweenShapes;\n if (typeof this._options.tweenPrecision == 'string' && this._options.tweenPrecision.includes('%')) {\n var tweenPrecision = +this._options.tweenPrecision.split('%')[0] / 100;\n var tweenPrecisionIsRelative = this._options.tweenPrecision.includes('%');\n } else {\n var tweenPrecision = this._options.tweenPrecision;\n var tweenPrecisionIsRelative = false;\n }\n var growEnteringEdges = this._options.growEnteringEdges;\n var dictionary = {};\n var prevDictionary = this._dictionary || {};\n var nodeDictionary = {};\n var prevNodeDictionary = this._nodeDictionary || {};\n\n function setKey(datum, index) {\n var tag = datum.tag;\n if (keyMode == 'index') {\n datum.key = index;\n } else if (tag[0] != '#') {\n if (keyMode == 'id') {\n datum.key = datum.attributes.id;\n } else if (keyMode == 'title') {\n var title = datum.children.find(function (childData) {\n return childData.tag == 'title';\n });\n if (title) {\n if (title.children.length > 0) {\n datum.key = title.children[0].text;\n } else {\n datum.key = '';\n }\n }\n }\n }\n if (datum.key == null) {\n if (tweenShapes) {\n if (tag == 'ellipse' || tag == 'polygon') {\n tag = 'path';\n }\n }\n datum.key = tag + '-' + index;\n }\n }\n\n function setId(datum, parentData) {\n var id = (parentData ? parentData.id + '.' : '') + datum.key;\n datum.id = id;\n }\n\n function addToDictionary(datum) {\n dictionary[datum.id] = datum;\n }\n\n function calculateAlternativeShapeData(datum, prevDatum) {\n if (tweenShapes && datum.id in prevDictionary) {\n if ((prevDatum.tag == 'polygon' || prevDatum.tag == 'ellipse' || prevDatum.tag == 'path') && (prevDatum.tag != datum.tag || datum.tag == 'polygon')) {\n if (prevDatum.tag != 'path') {\n datum.alternativeOld = convertToPathData(prevDatum, datum);\n }\n if (datum.tag != 'path') {\n datum.alternativeNew = convertToPathData(datum, prevDatum);\n }\n }\n }\n }\n\n function calculatePathTweenPoints(datum, prevDatum) {\n if (tweenPaths && prevDatum && (prevDatum.tag == 'path' || (datum.alternativeOld && datum.alternativeOld.tag == 'path'))) {\n var attribute_d = (datum.alternativeNew || datum).attributes.d;\n if (datum.alternativeOld) {\n var oldNode = createElementWithAttributes(datum.alternativeOld);\n } else {\n var oldNode = createElementWithAttributes(prevDatum);\n }\n (datum.alternativeOld || (datum.alternativeOld = {})).points = pathTweenPoints(oldNode, attribute_d, tweenPrecision, tweenPrecisionIsRelative);\n }\n }\n\n function postProcessDataPass1Local(datum, index=0, parentData) {\n setKey(datum, index);\n setId(datum, parentData);\n var id = datum.id;\n var prevDatum = prevDictionary[id];\n addToDictionary(datum);\n calculateAlternativeShapeData(datum, prevDatum);\n calculatePathTweenPoints(datum, prevDatum);\n var childTagIndexes = {};\n datum.children.forEach(function (childData) {\n var childTag = childData.tag;\n if (childTag == 'ellipse' || childTag == 'polygon') {\n childTag = 'path';\n }\n if (childTagIndexes[childTag] == null) {\n childTagIndexes[childTag] = 0;\n }\n var childIndex = childTagIndexes[childTag]++;\n postProcessDataPass1Local(childData, childIndex, datum);\n });\n }\n\n function addToNodeDictionary(datum) {\n var tag = datum.tag;\n if (growEnteringEdges && datum.parent) {\n if (datum.parent.attributes.class == 'node') {\n if (tag == 'title') {\n if (datum.children.length > 0) {\n var child = datum.children[0];\n var nodeId = child.text;\n } else {\n var nodeId = '';\n }\n nodeDictionary[nodeId] = datum.parent;\n }\n }\n }\n }\n\n function extractGrowingEdgesData(datum) {\n var id = datum.id;\n var tag = datum.tag;\n var prevDatum = prevDictionary[id];\n if (growEnteringEdges && !prevDatum && datum.parent) {\n if (isEdgeElement(datum)) {\n if (tag == 'path' || tag == 'polygon') {\n if (tag == 'polygon') {\n var path = datum.parent.children.find(function (e) {\n return e.tag == 'path';\n });\n if (path) {\n datum.totalLength = path.totalLength;\n }\n }\n var title = getEdgeTitle(datum);\n var child = title.children[0];\n var nodeIds = child.text.split('->');\n if (nodeIds.length != 2) {\n nodeIds = child.text.split('--');\n }\n var startNodeId = nodeIds[0];\n var startNode = nodeDictionary[startNodeId];\n var prevStartNode = prevNodeDictionary[startNodeId];\n if (prevStartNode) {\n var i = startNode.children.findIndex(function (element, index) {\n return element.tag == 'g';\n });\n if (i >= 0) {\n var j = startNode.children[i].children.findIndex(function (element, index) {\n return element.tag == 'a';\n });\n startNode = startNode.children[i].children[j];\n }\n var i = prevStartNode.children.findIndex(function (element, index) {\n return element.tag == 'g';\n });\n if (i >= 0) {\n var j = prevStartNode.children[i].children.findIndex(function (element, index) {\n return element.tag == 'a';\n });\n prevStartNode = prevStartNode.children[i].children[j];\n }\n var startShapes = startNode.children;\n for (var i = 0; i < startShapes.length; i++) {\n if (startShapes[i].tag == 'polygon' || startShapes[i].tag == 'ellipse' || startShapes[i].tag == 'path' || startShapes[i].tag == 'text') {\n var startShape = startShapes[i];\n break;\n }\n }\n var prevStartShapes = prevStartNode.children;\n for (var i = 0; i < prevStartShapes.length; i++) {\n if (prevStartShapes[i].tag == 'polygon' || prevStartShapes[i].tag == 'ellipse' || prevStartShapes[i].tag == 'path' || prevStartShapes[i].tag == 'text') {\n var prevStartShape = prevStartShapes[i];\n break;\n }\n }\n if (prevStartShape && startShape) {\n datum.offset = {\n x: prevStartShape.center.x - startShape.center.x,\n y: prevStartShape.center.y - startShape.center.y,\n }\n } else {\n datum.offset = {x: 0, y: 0};\n }\n }\n }\n }\n }\n }\n\n function postProcessDataPass2Global(datum) {\n addToNodeDictionary(datum);\n extractGrowingEdgesData(datum);\n datum.children.forEach(function (childData) {\n postProcessDataPass2Global(childData);\n });\n }\n\n this._dispatch.call(\"layoutEnd\", this);\n\n var newDoc = d3.select(document.createDocumentFragment())\n .append('div');\n\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n\n newDoc\n .append(function() {\n return doc.documentElement;\n });\n\n var newSvg = newDoc\n .select('svg');\n\n var data = extractAllElementsData(newSvg);\n this._dispatch.call('dataExtractEnd', this);\n postProcessDataPass1Local(data);\n this._dispatch.call('dataProcessPass1End', this);\n postProcessDataPass2Global(data);\n this._dispatch.call('dataProcessPass2End', this);\n this._data = data;\n this._dictionary = dictionary;\n this._nodeDictionary = nodeDictionary;\n\n this._extractData = function (element, childIndex, parentData) {\n var data = extractAllElementsData(element);\n postProcessDataPass1Local(data, childIndex, parentData);\n postProcessDataPass2Global(data);\n return data;\n }\n this._busy = false;\n this._dispatch.call('dataProcessEnd', this);\n if (callback) {\n callback.call(this);\n }\n if (this._queue.length > 0) {\n var job = this._queue.shift();\n job.call(this);\n }\n}\n","export default function(src, callback) {\n\n var graphvizInstance = this;\n\n this\n .dot(src, render);\n\n function render() {\n graphvizInstance\n .render(callback);\n }\n\n return this;\n};\n","import {transition} from \"d3-transition\";\nimport {active as d3_active} from \"d3-transition\";\n\nexport default function(name) {\n\n if (name instanceof Function) {\n this._transitionFactory = name;\n } else {\n this._transition = transition(name);\n }\n\n return this;\n};\n\nexport function active(name) {\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n if (svg.size() != 0) {\n return d3_active(svg.node(), name);\n } else {\n return null;\n }\n};\n","export default function(options) {\n\n if (typeof options == 'undefined') {\n return Object.assign({}, this._options);\n } else {\n for (var option of Object.keys(options)) {\n this._options[option] = options[option];\n }\n return this;\n }\n};\n","export default function(width) {\n\n this._options.width = width;\n\n return this;\n};\n","export default function(height) {\n\n this._options.height = height;\n\n return this;\n};\n","export default function(scale) {\n\n this._options.scale = scale;\n\n return this;\n};\n","export default function(fit) {\n\n this._options.fit = fit;\n\n return this;\n};\n","export default function(callback) {\n\n this._attributer = callback;\n\n return this;\n};\n","export default function(engine) {\n\n this._options.engine = engine;\n\n return this;\n};\n","export default function(path, width, height) {\n\n this._images.push({path:path, width: width, height:height})\n\n return this;\n};\n","export default function(keyMode) {\n\n if (!this._keyModes.has(keyMode)) {\n throw Error('Illegal keyMode: ' + keyMode);\n }\n if (keyMode != this._options.keyMode && this._data != null) {\n throw Error('Too late to change keyMode');\n }\n this._options.keyMode = keyMode;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.fade = enable\n\n return this;\n};\n","export default function(enable) {\n\n this._options.tweenPaths = enable;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.tweenShapes = enable;\n if (enable) {\n this._options.tweenPaths = true;\n }\n\n return this;\n};\n","export default function(enable) {\n\n this._options.convertEqualSidedPolygons = enable;\n\n return this;\n};\n","export default function(precision) {\n\n this._options.tweenPrecision = precision;\n\n return this;\n};\n","export default function(enable) {\n\n this._options.growEnteringEdges = enable;\n\n return this;\n};\n","export default function(typenames, callback) {\n\n this._dispatch.on(typenames, callback);\n\n return this;\n};\n","export default function(callback) {\n\n this._onerror = callback\n\n return this;\n};\n","import {format} from \"d3-format\";\n\nexport default function(enable) {\n\n var t0 = Date.now();\n var times = {};\n var eventTypes = this._eventTypes;\n var maxEventTypeLength = Math.max(...(eventTypes.map(eventType => eventType.length)));\n for (let i in eventTypes) {\n let eventType = eventTypes[i];\n times[eventType] = [];\n var graphvizInstance = this;\n var expectedDelay;\n var expectedDuration;\n this\n .on(eventType + '.log', enable ? function () {\n var t = Date.now();\n var seqNo = times[eventType].length;\n times[eventType].push(t);\n var string = '';\n string += 'Event ';\n string += format(' >2')(i) + ' ';\n string += eventType + ' '.repeat(maxEventTypeLength - eventType.length);\n string += format(' >5')(t - t0) + ' ';\n if (eventType != 'initEnd') {\n string += format(' >5')(t - times['start'][seqNo]);\n }\n if (eventType == 'dataProcessEnd') {\n string += ' prepare ' + format(' >5')((t - times['layoutEnd'][seqNo]));\n }\n if (eventType == 'renderEnd' && graphvizInstance._transition) {\n string += ' transition start margin ' + format(' >5')(graphvizInstance._transition.delay() - (t - times['renderStart'][seqNo]));\n expectedDelay = graphvizInstance._transition.delay();\n expectedDuration = graphvizInstance._transition.duration();\n }\n if (eventType == 'transitionStart') {\n var actualDelay = (t - times['renderStart'][seqNo])\n string += ' transition delay ' + format(' >5')(t - times['renderStart'][seqNo]);\n string += ' expected ' + format(' >5')(expectedDelay);\n string += ' diff ' + format(' >5')(actualDelay - expectedDelay);\n }\n if (eventType == 'transitionEnd') {\n var actualDuration = t - times['transitionStart'][seqNo]\n string += ' transition duration ' + format(' >5')(actualDuration);\n string += ' expected ' + format(' >5')(expectedDuration);\n string += ' diff ' + format(' >5')(actualDuration - expectedDuration);\n }\n console.log(string);\n t0 = t;\n } : null);\n }\n return this;\n}\n","export function rotate(x, y, cosA, sinA) {\n // (x + j * y) * (cosA + j * sinA) = x * cosA - y * sinA + j * (x * sinA + y * cosA)\n y = -y;\n sinA = -sinA;\n [x, y] = [x * cosA - y * sinA, x * sinA + y * cosA];\n y = -y;\n return [x, y];\n}\n","import * as d3 from \"d3-selection\";\nimport {path as d3_path} from \"d3-path\";\nimport {rotate} from \"./geometry\";\nimport {extractAllElementsData} from \"./element\";\nimport {attributeElement} from \"./element\";\nimport {insertAllElementsData} from \"./element\";\n\nexport function drawEdge(x1, y1, x2, y2, attributes, options={}) {\n attributes = Object.assign({}, attributes);\n if (attributes.style && attributes.style.includes('invis')) {\n var newEdge = d3.select(null);\n } else {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var newEdge0 = createEdge.call(this, attributes);\n var edgeData = extractAllElementsData(newEdge0);\n var newEdge = graph0.append('g')\n .data([edgeData]);\n attributeElement.call(newEdge.node(), edgeData);\n _updateEdge.call(this, newEdge, x1, y1, x2, y2, attributes, options);\n }\n this._drawnEdge = {\n g: newEdge,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n attributes: attributes,\n };\n\n return this;\n}\n\nexport function updateDrawnEdge(x1, y1, x2, y2, attributes={}, options={}) {\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n var edge = this._drawnEdge.g\n attributes = Object.assign(this._drawnEdge.attributes, attributes);\n this._drawnEdge.x1 = x1;\n this._drawnEdge.y1 = y1;\n this._drawnEdge.x2 = x2;\n this._drawnEdge.y2 = y2;\n if (edge.empty() && !(attributes.style && attributes.style.includes('invis'))) {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var edge = graph0.append('g');\n this._drawnEdge.g = edge;\n }\n if (!edge.empty()) {\n _updateEdge.call(this, edge, x1, y1, x2, y2, attributes, options);\n }\n\n return this;\n}\n\nfunction _updateEdge(edge, x1, y1, x2, y2, attributes, options) {\n\n var newEdge = createEdge.call(this, attributes);\n var edgeData = extractAllElementsData(newEdge);\n edge.data([edgeData]);\n attributeElement.call(edge.node(), edgeData);\n _moveEdge(edge, x1, y1, x2, y2, attributes, options);\n}\n\nfunction _moveEdge(edge, x1, y1, x2, y2, attributes, options) {\n\n var shortening = options.shortening || 0;\n var arrowHeadLength = 10;\n var arrowHeadWidth = 7;\n var margin = 0.1;\n\n var arrowHeadPoints = [\n [0, -arrowHeadWidth / 2],\n [arrowHeadLength, 0],\n [0, arrowHeadWidth / 2],\n [0, -arrowHeadWidth / 2],\n ];\n\n var dx = x2 - x1;\n var dy = y2 - y1;\n var length = Math.sqrt(dx * dx + dy * dy);\n if (length == 0) {\n var cosA = 1;\n var sinA = 0;\n } else {\n var cosA = dx / length;\n var sinA = dy / length;\n }\n x2 = x1 + (length - shortening - arrowHeadLength - margin) * cosA;\n y2 = y1 + (length - shortening - arrowHeadLength - margin) * sinA;\n\n if (attributes.URL || attributes.tooltip) {\n var a = edge.selectWithoutDataPropagation(\"g\").selectWithoutDataPropagation(\"a\");\n var line = a.selectWithoutDataPropagation(\"path\");\n var arrowHead = a.selectWithoutDataPropagation(\"polygon\");\n } else {\n var line = edge.selectWithoutDataPropagation(\"path\");\n var arrowHead = edge.selectWithoutDataPropagation(\"polygon\");\n }\n\n var path1 = d3_path();\n path1.moveTo(x1, y1);\n path1.lineTo(x2, y2);\n\n line\n .attr(\"d\", path1);\n\n x2 = x1 + (length - shortening - arrowHeadLength) * cosA;\n y2 = y1 + (length - shortening - arrowHeadLength) * sinA;\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n arrowHeadPoints[i] = rotate(point[0], point[1], cosA, sinA);\n }\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n arrowHeadPoints[i] = [x2 + point[0], y2 + point[1]];\n }\n var allPoints = [];\n for (var i = 0; i < arrowHeadPoints.length; i++) {\n var point = arrowHeadPoints[i];\n allPoints.push(point.join(','));\n }\n var pointsAttr = allPoints.join(' ');\n\n arrowHead\n .attr(\"points\", pointsAttr);\n\n return this;\n}\n\nexport function moveDrawnEdgeEndPoint(x2, y2, options={}) {\n\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n var edge = this._drawnEdge.g;\n var x1 = this._drawnEdge.x1;\n var y1 = this._drawnEdge.y1;\n var attributes = this._drawnEdge.attributes;\n\n this._drawnEdge.x2 = x2;\n this._drawnEdge.y2 = y2;\n _moveEdge(edge, x1, y1, x2, y2, attributes, options);\n\n return this\n}\n\nexport function removeDrawnEdge() {\n\n if (!this._drawnEdge) {\n return this;\n }\n\n var edge = this._drawnEdge.g;\n\n edge.remove();\n\n this._drawnEdge = null;\n\n return this\n}\n\nexport function insertDrawnEdge(name) {\n\n if (!this._drawnEdge) {\n throw Error('No edge has been drawn');\n }\n\n var edge = this._drawnEdge.g;\n if (edge.empty()) {\n return this;\n }\n var attributes = this._drawnEdge.attributes;\n\n var title = edge.selectWithoutDataPropagation(\"title\");\n title\n .text(name);\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var graph0Datum = graph0.datum();\n var edgeData = this._extractData(edge, graph0Datum.children.length, graph0.datum());\n graph0Datum.children.push(edgeData);\n\n insertAllElementsData(edge, edgeData);\n\n this._drawnEdge = null;\n\n return this\n\n}\n\nexport function drawnEdgeSelection() {\n\n if (this._drawnEdge) {\n return this._drawnEdge.g;\n } else {\n return d3.select(null);\n }\n\n}\n\n\nfunction createEdge(attributes) {\n var attributesString = ''\n for (var name of Object.keys(attributes)) {\n if (attributes[name] != null) {\n attributesString += ' \"' + name + '\"=\"' + attributes[name] + '\"';\n }\n }\n var dotSrc = 'digraph {a -> b [' + attributesString + ']}';\n var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n var newDoc = d3.select(document.createDocumentFragment())\n .append(function() {\n return doc.documentElement;\n });\n var edge = newDoc.select('.edge');\n\n return edge;\n}\n","import * as d3 from \"d3-selection\";\nimport {rotate} from \"./geometry\";\nimport {extractAllElementsData} from \"./element\";\nimport {translatePointsAttribute} from \"./svg\";\nimport {translateDAttribute} from \"./svg\";\nimport {insertAllElementsData} from \"./element\";\nimport {attributeElement} from \"./element\";\nimport {roundTo2Decimals} from \"./utils\";\n\nexport function drawNode(x, y, nodeId, attributes={}, options={}) {\n attributes = Object.assign({}, attributes);\n if (attributes.style && attributes.style.includes('invis')) {\n var newNode = d3.select(null);\n } else {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var newNode0 = createNode.call(this, nodeId, attributes);\n var nodeData = extractAllElementsData(newNode0);\n var newNode = graph0.append('g')\n .data([nodeData]);\n attributeElement.call(newNode.node(), nodeData);\n _updateNode.call(this, newNode, x, y, nodeId, attributes, options);\n }\n this._drawnNode = {\n g: newNode,\n nodeId: nodeId,\n x: x,\n y: y,\n attributes: attributes,\n };\n\n return this;\n}\n\nexport function updateDrawnNode(x, y, nodeId, attributes={}, options={}) {\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n\n var node = this._drawnNode.g\n if (nodeId == null) {\n nodeId = this._drawnNode.nodeId;\n }\n attributes = Object.assign(this._drawnNode.attributes, attributes);\n this._drawnNode.nodeId = nodeId;\n this._drawnNode.x = x;\n this._drawnNode.y = y;\n if (node.empty() && !(attributes.style && attributes.style.includes('invis'))) {\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var node = graph0.append('g');\n this._drawnNode.g = node;\n }\n if (!node.empty()) {\n _updateNode.call(this, node, x, y, nodeId, attributes, options);\n }\n\n return this;\n}\n\nfunction _updateNode(node, x, y, nodeId, attributes, options) {\n\n var newNode = createNode.call(this, nodeId, attributes);\n var nodeData = extractAllElementsData(newNode);\n node.data([nodeData]);\n attributeElement.call(node.node(), nodeData);\n _moveNode(node, x, y, attributes, options);\n\n return this;\n}\n\nfunction _moveNode(node, x, y, attributes, options) {\n if (attributes.URL || attributes.tooltip) {\n var subParent = node.selectWithoutDataPropagation(\"g\").selectWithoutDataPropagation(\"a\");\n } else {\n var subParent = node;\n }\n var svgElements = subParent.selectAll('ellipse,polygon,path,polyline');\n var text = node.selectWithoutDataPropagation(\"text\");\n\n if (svgElements.size() != 0) {\n var bbox = svgElements.node().getBBox();\n bbox.cx = bbox.x + bbox.width / 2;\n bbox.cy = bbox.y + bbox.height / 2;\n } else if (text.size() != 0) {\n bbox = {\n x: +text.attr('x'),\n y: +text.attr('y'),\n width: 0,\n height: 0,\n cx: +text.attr('x'),\n cy: +text.attr('y'),\n }\n }\n svgElements.each(function(data, index) {\n var svgElement = d3.select(this);\n if (svgElement.attr(\"cx\")) {\n svgElement\n .attr(\"cx\", roundTo2Decimals(x))\n .attr(\"cy\", roundTo2Decimals(y));\n } else if (svgElement.attr(\"points\")) {\n var pointsString = svgElement.attr('points').trim();\n svgElement\n .attr(\"points\", translatePointsAttribute(pointsString, x - bbox.cx, y - bbox.cy));\n } else {\n var d = svgElement.attr('d');\n svgElement\n .attr(\"d\", translateDAttribute(d, x - bbox.cx, y - bbox.cy));\n }\n });\n\n if (text.size() != 0) {\n text\n .attr(\"x\", roundTo2Decimals(+text.attr(\"x\") + x - bbox.cx))\n .attr(\"y\", roundTo2Decimals(+text.attr(\"y\") + y - bbox.cy));\n }\n return this;\n}\n\nexport function moveDrawnNode(x, y, options={}) {\n\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n var node = this._drawnNode.g;\n var attributes = this._drawnNode.attributes;\n\n this._drawnNode.x = x;\n this._drawnNode.y = y;\n\n if (!node.empty()) {\n _moveNode(node, x, y, attributes, options);\n }\n\n return this\n}\n\nexport function removeDrawnNode() {\n\n if (!this._drawnNode) {\n return this;\n }\n\n var node = this._drawnNode.g;\n\n if (!node.empty()) {\n node.remove();\n }\n\n this._drawnNode = null;\n\n return this\n}\n\nexport function insertDrawnNode(nodeId) {\n\n if (!this._drawnNode) {\n throw Error('No node has been drawn');\n }\n\n if (nodeId == null) {\n nodeId = this._drawnNode.nodeId;\n }\n var node = this._drawnNode.g;\n if (node.empty()) {\n return this;\n }\n var attributes = this._drawnNode.attributes;\n\n var title = node.selectWithoutDataPropagation(\"title\");\n title\n .text(nodeId);\n if (attributes.URL || attributes.tooltip) {\n var ga = node.selectWithoutDataPropagation(\"g\");\n var a = ga.selectWithoutDataPropagation(\"a\");\n var svgElement = a.selectWithoutDataPropagation('ellipse,polygon,path,polyline');\n var text = a.selectWithoutDataPropagation('text');\n } else {\n var svgElement = node.selectWithoutDataPropagation('ellipse,polygon,path,polyline');\n var text = node.selectWithoutDataPropagation('text');\n }\n text\n .text(attributes.label || nodeId);\n\n var root = this._selection;\n var svg = root.selectWithoutDataPropagation(\"svg\");\n var graph0 = svg.selectWithoutDataPropagation(\"g\");\n var graph0Datum = graph0.datum();\n var nodeData = this._extractData(node, graph0Datum.children.length, graph0.datum());\n graph0Datum.children.push(nodeData);\n\n insertAllElementsData(node, nodeData);\n\n this._drawnNode = null;\n\n return this\n\n}\n\nexport function drawnNodeSelection() {\n\n if (this._drawnNode) {\n return this._drawnNode.g;\n } else {\n return d3.select(null);\n }\n\n}\n\nfunction createNode(nodeId, attributes) {\n var attributesString = ''\n for (var name of Object.keys(attributes)) {\n if (attributes[name] != null) {\n attributesString += ' \"' + name + '\"=\"' + attributes[name] + '\"';\n }\n }\n var dotSrc = 'graph {\"' + nodeId + '\" [' + attributesString + ']}';\n var svgDoc = this.layoutSync(dotSrc, 'svg', 'dot');\n var parser = new window.DOMParser();\n var doc = parser.parseFromString(svgDoc, \"image/svg+xml\");\n var newDoc = d3.select(document.createDocumentFragment())\n .append(function() {\n return doc.documentElement;\n });\n var node = newDoc.select('.node');\n\n return node;\n}\n","/* This file is excluded from coverage because the intrumented code\n * translates \"self\" which gives a reference error.\n */\n\n/* istanbul ignore next */\n\nexport function workerCode() {\n self.document = {}; // Workaround for \"ReferenceError: document is not defined\" in hpccWasm\n var hpccWasm;\n\n self.onmessage = function(event) {\n if (event.data.vizURL) {\n importScripts(event.data.vizURL);\n hpccWasm = self[\"@hpcc-js/wasm\"];\n hpccWasm.wasmFolder(event.data.vizURL.match(/.*\\//));\n // This is an alternative workaround where wasmFolder() is not needed\n // document = {currentScript: {src: event.data.vizURL}};\n }\n hpccWasm.graphviz.layout(event.data.dot, \"svg\", event.data.engine, event.data.options).then((svg) => {\n if (svg) {\n self.postMessage({\n type: \"done\",\n svg: svg,\n });\n } else if (event.data.vizURL) {\n self.postMessage({\n type: \"init\",\n });\n } else {\n self.postMessage({\n type: \"skip\",\n });\n }\n }).catch(error => {\n self.postMessage({\n type: \"error\",\n error: error.message,\n });\n });\n }\n}\n","import * as d3 from \"d3-selection\";\nimport {dispatch} from \"d3-dispatch\";\nimport render from \"./render\";\nimport dot from \"./dot\";\nimport data from \"./data\";\nimport {initViz} from \"./dot\";\nimport renderDot from \"./renderDot\";\nimport transition from \"./transition\";\nimport {active} from \"./transition\";\nimport options from \"./options\";\nimport width from \"./width\";\nimport height from \"./height\";\nimport scale from \"./scale\";\nimport fit from \"./fit\";\nimport attributer from \"./attributer\";\nimport engine from \"./engine\";\nimport images from \"./images\";\nimport keyMode from \"./keyMode\";\nimport fade from \"./fade\";\nimport tweenPaths from \"./tweenPaths\";\nimport tweenShapes from \"./tweenShapes\";\nimport convertEqualSidedPolygons from \"./convertEqualSidedPolygons\";\nimport tweenPrecision from \"./tweenPrecision\";\nimport growEnteringEdges from \"./growEnteringEdges\";\nimport zoom from \"./zoom\";\nimport {resetZoom} from \"./zoom\";\nimport {zoomBehavior} from \"./zoom\";\nimport {zoomSelection} from \"./zoom\";\nimport {zoomScaleExtent} from \"./zoom\";\nimport {zoomTranslateExtent} from \"./zoom\";\nimport on from \"./on\";\nimport onerror from \"./onerror\";\nimport logEvents from \"./logEvents\";\nimport {drawEdge} from \"./drawEdge\";\nimport {updateDrawnEdge} from \"./drawEdge\";\nimport {moveDrawnEdgeEndPoint} from \"./drawEdge\";\nimport {insertDrawnEdge} from \"./drawEdge\";\nimport {removeDrawnEdge} from \"./drawEdge\";\nimport {drawnEdgeSelection} from \"./drawEdge\";\nimport {drawNode} from \"./drawNode\";\nimport {updateDrawnNode} from \"./drawNode\";\nimport {moveDrawnNode} from \"./drawNode\";\nimport {insertDrawnNode} from \"./drawNode\";\nimport {removeDrawnNode} from \"./drawNode\";\nimport {drawnNodeSelection} from \"./drawNode\";\nimport {workerCode} from \"./workerCode\";\n\nexport function Graphviz(selection, options) {\n this._options = {\n useWorker: true,\n engine: 'dot',\n keyMode: 'title',\n fade: true,\n tweenPaths: true,\n tweenShapes: true,\n convertEqualSidedPolygons: true,\n tweenPrecision: 1,\n growEnteringEdges: true,\n zoom: true,\n zoomScaleExtent: [0.1, 10],\n zoomTranslateExtent: [[-Infinity, -Infinity], [+Infinity, +Infinity]],\n width: null,\n height: null,\n scale: 1,\n fit: false,\n };\n if (options instanceof Object) {\n for (var option of Object.keys(options)) {\n this._options[option] = options[option];\n }\n } else if (typeof options == 'boolean') {\n this._options.useWorker = options;\n }\n var useWorker = this._options.useWorker;\n if (typeof Worker == 'undefined') {\n useWorker = false;\n }\n if (useWorker) {\n var scripts = d3.selectAll('script');\n var vizScript = scripts.filter(function() {\n return d3.select(this).attr('type') == 'javascript/worker' || (d3.select(this).attr('src') && d3.select(this).attr('src').match(/.*\\/@hpcc-js\\/wasm/));\n });\n if (vizScript.size() == 0) {\n console.warn('No script tag of type \"javascript/worker\" was found and \"useWorker\" is true. Not using web worker.');\n useWorker = false;\n } else {\n this._vizURL = vizScript.attr('src');\n if (!this._vizURL) {\n console.warn('No \"src\" attribute of was found on the \"javascript/worker\" script tag and \"useWorker\" is true. Not using web worker.');\n useWorker = false;\n }\n }\n }\n if (useWorker) {\n var blob = new Blob(['(' + workerCode.toString() + ')()']);\n var blobURL = window.URL.createObjectURL(blob);\n this._worker = new Worker(blobURL);\n this._workerCallbacks = [];\n }\n this._selection = selection;\n this._active = false;\n this._busy = false;\n this._jobs = [];\n this._queue = [];\n this._keyModes = new Set([\n 'title',\n 'id',\n 'tag-index',\n 'index'\n ]);\n this._images = [];\n this._translation = undefined;\n this._scale = undefined;\n this._eventTypes = [\n 'initEnd',\n 'start',\n 'layoutStart',\n 'layoutEnd',\n 'dataExtractEnd',\n 'dataProcessPass1End',\n 'dataProcessPass2End',\n 'dataProcessEnd',\n 'renderStart',\n 'renderEnd',\n 'transitionStart',\n 'transitionEnd',\n 'restoreEnd',\n 'end'\n ];\n this._dispatch = dispatch(...this._eventTypes);\n initViz.call(this);\n selection.node().__graphviz__ = this;\n}\n\nexport default function graphviz(selector, options) {\n var g = d3.select(selector).graphviz(options);\n return g;\n}\n\nGraphviz.prototype = graphviz.prototype = {\n constructor: Graphviz,\n engine: engine,\n addImage: images,\n keyMode: keyMode,\n fade: fade,\n tweenPaths: tweenPaths,\n tweenShapes: tweenShapes,\n convertEqualSidedPolygons: convertEqualSidedPolygons,\n tweenPrecision: tweenPrecision,\n growEnteringEdges: growEnteringEdges,\n zoom: zoom,\n resetZoom: resetZoom,\n zoomBehavior: zoomBehavior,\n zoomSelection: zoomSelection,\n zoomScaleExtent: zoomScaleExtent,\n zoomTranslateExtent: zoomTranslateExtent,\n render: render,\n dot: dot,\n data: data,\n renderDot: renderDot,\n transition: transition,\n active: active,\n options: options,\n width: width,\n height: height,\n scale: scale,\n fit: fit,\n attributer: attributer,\n on: on,\n onerror: onerror,\n logEvents: logEvents,\n drawEdge: drawEdge,\n updateDrawnEdge: updateDrawnEdge,\n moveDrawnEdgeEndPoint,\n insertDrawnEdge,\n removeDrawnEdge, removeDrawnEdge,\n drawnEdgeSelection, drawnEdgeSelection,\n drawNode: drawNode,\n updateDrawnNode: updateDrawnNode,\n moveDrawnNode: moveDrawnNode,\n insertDrawnNode,\n removeDrawnNode, removeDrawnNode,\n drawnNodeSelection, drawnNodeSelection,\n};\n","import {Graphviz} from \"../graphviz\";\nimport {timeout} from \"d3-timer\";\n\nexport default function(options) {\n\n var g = this.node().__graphviz__;\n if (g) {\n g.options(options);\n // Ensure a possible new initEnd event handler is attached before calling it\n timeout(function () {\n g._dispatch.call(\"initEnd\", this);\n }.bind(this), 0);\n } else {\n g = new Graphviz(this, options);\n }\n return g;\n}\n","import * as d3 from \"d3-selection\";\n\nexport default function(name) {\n\n return d3.select(this.size() > 0 ? this.node().querySelector(name) : null);\n}\n","import {selection} from \"d3-selection\";\nimport selection_graphviz from \"./graphviz\";\nimport selection_selectWithoutDataPropagation from \"./selectWithoutDataPropagation\";\n\nselection.prototype.graphviz = selection_graphviz;\nselection.prototype.selectWithoutDataPropagation = selection_selectWithoutDataPropagation;\n"],"names":["extractElementData","element","datum","tag","node","nodeName","text","comment","attributes","i","length","attribute","name","value","transform","baseVal","numberOfItems","matrix","consolidate","translation","x","e","y","f","scale","a","center","cx","cy","points","attr","split","map","p","xmin","Math","min","apply","xmax","max","ymin","ymax","bbox","width","height","d","shift","totalLength","getTotalLength","extractAllElementsData","children","d3","childNodes","each","childData","parent","push","createElement","data","document","createTextNode","createComment","createElementNS","createElementWithAttributes","elementNode","Object","keys","attributeName","attributeValue","replaceElement","parentNode","newElementNode","newElement","insert","remove","insertElementData","key","insertAllElementsData","insertChildren","index","selectAll","childrenEnter","enter","append","childrenExit","exit","merge","childTagIndexes","childTag","childIndex","attributeElement","call","currentAttributes","currentAttribute","namespaceURI","namespaceURIParts","namespace","shallowCopyObject","obj","assign","roundTo2Decimals","round","enable","_options","zoom","_zoomBehavior","createZoomBehavior","zoomed","g","svg","querySelector","root","_selection","size","_zoomSelection","zoomBehavior","scaleExtent","zoomScaleExtent","translateExtent","zoomTranslateExtent","interpolate","on","_active","translateZoomBehaviorTransform","_originalTransform","zoomTransform","getTranslatedZoomTransform","selection","oldTranslation","_translation","oldScale","_scale","newTranslation","newScale","t","translate","zoomIdentity","resetZoom","transition","extent","zoomSelection","pathTween","d1","pointInterpolators","join","pathTweenPoints","precision","precisionIsRelative","path0","path1","cloneNode","n0","n1","setAttribute","distances","dt","p0","getPointAtLength","p1","_data","isEdgeElementParent","isEdgeElement","getEdgeGroup","getEdgeTitle","find","callback","_busy","_queue","render","bind","_dispatch","_transitionFactory","timeout","_transition","_render","transitionInstance","fade","tweenPaths","tweenShapes","convertEqualSidedPolygons","growEnteringEdges","attributer","_attributer","graphvizInstance","nodeValue","childElementsEnter","filter","childEnter","style","options","replace","fit","viewBox","convertShape","convertPrevShape","alternativeOld","alternativeNew","prevData","prevPoints","nPrevPoints","nPoints","prevPathData","pathElement","newPathData","elementTransition","growThisPath","offset","moveThisPolygon","edgePath","p2","angle1","atan2","PI","attrTween","angle","tweenThisPath","onEnd","tween","interpolateTransformSvg","toString","nodes","jobs","_jobs","duration","convertToPathData","originalData","guideData","newData","originalAttributes","newAttributes","newPointsString","pointsString","pointStrings","normPoints","xy","x0","y0","x1","y1","dx","dy","x2","Infinity","newPointStrings","concat","slice","rx","ry","sx","sy","l","sqrt","pow","cosA","sinA","y2","translatePointsAttribute","translateDAttribute","commands","reduce","arr","v","initViz","graphviz","layout","then","graphvizSync","graphviz1","layoutSync","_worker","_afterInit","error","vizURL","_vizURL","onmessage","event","_workerCallbacks","type","layoutDone","_onerror","match","window","URL","location","href","postMessage","dot","engine","message","src","worker","images","_images","vizOptions","svgDoc","keyMode","tweenPrecision","includes","tweenPrecisionIsRelative","dictionary","prevDictionary","_dictionary","nodeDictionary","prevNodeDictionary","_nodeDictionary","setKey","id","title","setId","parentData","addToDictionary","calculateAlternativeShapeData","prevDatum","calculatePathTweenPoints","attribute_d","oldNode","postProcessDataPass1Local","forEach","addToNodeDictionary","child","nodeId","extractGrowingEdgesData","path","nodeIds","startNodeId","startNode","prevStartNode","findIndex","j","startShapes","startShape","prevStartShapes","prevStartShape","postProcessDataPass2Global","newDoc","createDocumentFragment","parser","DOMParser","doc","parseFromString","documentElement","newSvg","select","_extractData","job","Function","active","selectWithoutDataPropagation","d3_active","option","_keyModes","has","Error","typenames","t0","Date","now","times","eventTypes","_eventTypes","maxEventTypeLength","eventType","seqNo","string","format","repeat","delay","expectedDelay","expectedDuration","actualDelay","actualDuration","console","log","rotate","drawEdge","newEdge","graph0","newEdge0","createEdge","edgeData","_updateEdge","_drawnEdge","updateDrawnEdge","edge","empty","_moveEdge","shortening","arrowHeadLength","arrowHeadWidth","margin","arrowHeadPoints","tooltip","line","arrowHead","d3_path","moveTo","lineTo","point","allPoints","pointsAttr","moveDrawnEdgeEndPoint","removeDrawnEdge","insertDrawnEdge","graph0Datum","drawnEdgeSelection","attributesString","dotSrc","drawNode","newNode","newNode0","createNode","nodeData","_updateNode","_drawnNode","updateDrawnNode","_moveNode","subParent","svgElements","getBBox","svgElement","trim","moveDrawnNode","removeDrawnNode","insertDrawnNode","ga","label","drawnNodeSelection","workerCode","self","hpccWasm","importScripts","wasmFolder","Graphviz","useWorker","Worker","scripts","vizScript","warn","blob","Blob","blobURL","createObjectURL","Set","undefined","dispatch","__graphviz__","selector","prototype","constructor","addImage","renderDot","onerror","logEvents","selection_graphviz","selection_selectWithoutDataPropagation"],"mappings":"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"} \ No newline at end of file diff --git a/graphing/d3.v5.min.js b/graphing/d3.v5.min.js new file mode 100644 index 0000000..344d26c --- /dev/null +++ b/graphing/d3.v5.min.js @@ -0,0 +1,2 @@ +// https://d3js.org v5.16.0 Copyright 2020 Mike Bostock +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t=t||self).d3=t.d3||{})}(this,function(t){"use strict";function n(t,n){return tn?1:t>=n?0:NaN}function e(t){var e;return 1===t.length&&(e=t,t=function(t,r){return n(e(t),r)}),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r>>1;t(n[o],e)>0?i=o:r=o+1}return r}}}var r=e(n),i=r.right,o=r.left;function a(t,n){return[t,n]}function u(t){return null===t?NaN:+t}function c(t,n){var e,r,i=t.length,o=0,a=-1,c=0,f=0;if(null==n)for(;++a1)return f/(o-1)}function f(t,n){var e=c(t,n);return e?Math.sqrt(e):e}function s(t,n){var e,r,i,o=t.length,a=-1;if(null==n){for(;++a=e)for(r=i=e;++ae&&(r=e),i=e)for(r=i=e;++ae&&(r=e),i0)return[t];if((r=n0)for(t=Math.ceil(t/a),n=Math.floor(n/a),o=new Array(i=Math.ceil(n-t+1));++u=0?(o>=y?10:o>=_?5:o>=b?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=y?10:o>=_?5:o>=b?2:1)}function w(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=y?i*=10:o>=_?i*=5:o>=b&&(i*=2),n=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),a=+e(t[o],o,t);return a+(+e(t[o+1],o+1,t)-a)*(i-o)}}function T(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++or&&(r=e)}else for(;++o=e)for(r=e;++or&&(r=e);return r}function A(t){for(var n,e,r,i=t.length,o=-1,a=0;++o=0;)for(n=(r=t[i]).length;--n>=0;)e[--a]=r[n];return e}function S(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o=e)for(r=e;++oe&&(r=e)}else for(;++o=e)for(r=e;++oe&&(r=e);return r}function k(t){if(!(i=t.length))return[];for(var n=-1,e=S(t,E),r=new Array(e);++n=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function X(t,n){for(var e,r=0,i=t.length;r0)for(var e,r,i=new Array(e),o=0;o=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),$.hasOwnProperty(n)?{space:$[n],local:t}:t}function Z(t){var n=W(t);return(n.local?function(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}:function(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===G&&n.documentElement.namespaceURI===G?n.createElement(t):n.createElementNS(e,t)}})(n)}function Q(){}function K(t){return null==t?Q:function(){return this.querySelector(t)}}function J(){return[]}function tt(t){return null==t?J:function(){return this.querySelectorAll(t)}}function nt(t){return function(){return this.matches(t)}}function et(t){return new Array(t.length)}function rt(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}rt.prototype={constructor:rt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var it="$";function ot(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;un?1:t>=n?0:NaN}function ct(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function ft(t,n){return t.style.getPropertyValue(n)||ct(t).getComputedStyle(t,null).getPropertyValue(n)}function st(t){return t.trim().split(/^|\s+/)}function lt(t){return t.classList||new ht(t)}function ht(t){this._node=t,this._names=st(t.getAttribute("class")||"")}function dt(t,n){for(var e=lt(t),r=-1,i=n.length;++r=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt={};(t.event=null,"undefined"!=typeof document)&&("onmouseenter"in document.documentElement||(Mt={mouseenter:"mouseover",mouseleave:"mouseout"}));function Nt(t,n,e){return t=Tt(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function Tt(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function At(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r=m&&(m=b+1);!(_=g[m])&&++m=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=ut);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o1?this.each((null==n?function(t){return function(){this.style.removeProperty(t)}}:"function"==typeof n?function(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}:function(t,n,e){return function(){this.style.setProperty(t,n,e)}})(t,n,null==e?"":e)):ft(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?function(t){return function(){delete this[t]}}:"function"==typeof n?function(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}:function(t,n){return function(){this[t]=n}})(t,n)):this.node()[t]},classed:function(t,n){var e=st(t+"");if(arguments.length<2){for(var r=lt(this.node()),i=-1,o=e.length;++i=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?St:At,null==e&&(e=!1),r=0;r>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?gn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?gn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=on.exec(t))?new bn(n[1],n[2],n[3],1):(n=an.exec(t))?new bn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=un.exec(t))?gn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?gn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=fn.exec(t))?Mn(n[1],n[2]/100,n[3]/100,1):(n=sn.exec(t))?Mn(n[1],n[2]/100,n[3]/100,n[4]):ln.hasOwnProperty(t)?vn(ln[t]):"transparent"===t?new bn(NaN,NaN,NaN,0):null}function vn(t){return new bn(t>>16&255,t>>8&255,255&t,1)}function gn(t,n,e,r){return r<=0&&(t=n=e=NaN),new bn(t,n,e,r)}function yn(t){return t instanceof Jt||(t=pn(t)),t?new bn((t=t.rgb()).r,t.g,t.b,t.opacity):new bn}function _n(t,n,e,r){return 1===arguments.length?yn(t):new bn(t,n,e,null==r?1:r)}function bn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function mn(){return"#"+wn(this.r)+wn(this.g)+wn(this.b)}function xn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function wn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Mn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new An(t,n,e,r)}function Nn(t){if(t instanceof An)return new An(t.h,t.s,t.l,t.opacity);if(t instanceof Jt||(t=pn(t)),!t)return new An;if(t instanceof An)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e0&&c<1?0:a,new An(a,u,c,t.opacity)}function Tn(t,n,e,r){return 1===arguments.length?Nn(t):new An(t,n,e,null==r?1:r)}function An(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}Qt(Jt,pn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:hn,formatHex:hn,formatHsl:function(){return Nn(this).formatHsl()},formatRgb:dn,toString:dn}),Qt(bn,_n,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:mn,formatHex:mn,formatRgb:xn,toString:xn})),Qt(An,Tn,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new An(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new An(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new bn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var kn=Math.PI/180,En=180/Math.PI,Cn=.96422,Pn=1,zn=.82521,Rn=4/29,Dn=6/29,qn=3*Dn*Dn,Ln=Dn*Dn*Dn;function Un(t){if(t instanceof Bn)return new Bn(t.l,t.a,t.b,t.opacity);if(t instanceof Vn)return Gn(t);t instanceof bn||(t=yn(t));var n,e,r=Hn(t.r),i=Hn(t.g),o=Hn(t.b),a=Fn((.2225045*r+.7168786*i+.0606169*o)/Pn);return r===i&&i===o?n=e=a:(n=Fn((.4360747*r+.3850649*i+.1430804*o)/Cn),e=Fn((.0139322*r+.0971045*i+.7141733*o)/zn)),new Bn(116*a-16,500*(n-a),200*(a-e),t.opacity)}function On(t,n,e,r){return 1===arguments.length?Un(t):new Bn(t,n,e,null==r?1:r)}function Bn(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function Fn(t){return t>Ln?Math.pow(t,1/3):t/qn+Rn}function Yn(t){return t>Dn?t*t*t:qn*(t-Rn)}function In(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Hn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function jn(t){if(t instanceof Vn)return new Vn(t.h,t.c,t.l,t.opacity);if(t instanceof Bn||(t=Un(t)),0===t.a&&0===t.b)return new Vn(NaN,0=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r180||e<-180?e-360*Math.round(e/360):e):ue(isNaN(t)?n:t)}function se(t){return 1==(t=+t)?le:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):ue(isNaN(n)?e:n)}}function le(t,n){var e=n-t;return e?ce(t,e):ue(isNaN(t)?n:t)}Qt(re,ee,Kt(Jt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new re(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new re(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*kn,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new bn(255*(n+e*($n*r+Wn*i)),255*(n+e*(Zn*r+Qn*i)),255*(n+e*(Kn*r)),this.opacity)}}));var he=function t(n){var e=se(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=le(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function de(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;eo&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:me(e,r)})),o=Me.lastIndex;return o180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:me(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:me(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:me(t,e)},{i:u-2,x:me(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e=0&&n._call.call(null,t),n=n._next;--tr}function pr(){or=(ir=ur.now())+ar,tr=nr=0;try{dr()}finally{tr=0,function(){var t,n,e=Ke,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ke=n);Je=t,gr(r)}(),or=0}}function vr(){var t=ur.now(),n=t-ir;n>rr&&(ar-=n,ir=t)}function gr(t){tr||(nr&&(nr=clearTimeout(nr)),t-or>24?(t<1/0&&(nr=setTimeout(pr,t-ur.now()-ar)),er&&(er=clearInterval(er))):(er||(ir=ur.now(),er=setInterval(vr,rr)),tr=1,cr(pr)))}function yr(t,n,e){var r=new lr;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r}lr.prototype=hr.prototype={constructor:lr,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?fr():+e)+(null==n?0:+n),this._next||Je===this||(Je?Je._next=this:Ke=this,Je=this),this._call=t,this._time=e,gr()},stop:function(){this._call&&(this._call=null,this._time=1/0,gr())}};var _r=I("start","end","cancel","interrupt"),br=[],mr=0,xr=1,wr=2,Mr=3,Nr=4,Tr=5,Ar=6;function Sr(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(c){var f,s,l,h;if(e.state!==xr)return u();for(f in i)if((h=i[f]).name===e.name){if(h.state===Mr)return yr(o);h.state===Nr?(h.state=Ar,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+fmr)throw new Error("too late; already scheduled");return e}function Er(t,n){var e=Cr(t,n);if(e.state>Mr)throw new Error("too late; already running");return e}function Cr(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Pr(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>wr&&e.state=0&&(t=t.slice(0,n)),!t||"start"===t})}(n)?kr:Er;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=W(t),r="transform"===e?Le:Rr;return this.attrTween(t,"function"==typeof n?(e.local?function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}:function(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}})(e,r,zr(this,"attr."+t,n)):null==n?(e.local?function(t){return function(){this.removeAttributeNS(t.space,t.local)}}:function(t){return function(){this.removeAttribute(t)}})(e):(e.local?function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}:function(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}})(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=W(t);return this.tween(e,(r.local?function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}:function(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i})(r,n))},style:function(t,n,e){var r="transform"==(t+="")?qe:Rr;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=ft(this,t),a=(this.style.removeProperty(t),ft(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,qr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=ft(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=ft(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,zr(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Er(this,t),f=c.on,s=null==c.value[a]?o||(o=qr(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=ft(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(zr(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Cr(this.node(),e).tween,o=0,a=i.length;o0&&(r=o-P),M<0?d=p-z:M>0&&(u=c-z),x=Mi,B.attr("cursor",Pi.selection),I());break;default:return}xi()},!0).on("keyup.brush",function(){switch(t.event.keyCode){case 16:R&&(g=y=R=!1,I());break;case 18:x===Ti&&(w<0?f=h:w>0&&(r=o),M<0?d=p:M>0&&(u=c),x=Ni,I());break;case 32:x===Mi&&(t.event.altKey?(w&&(f=h-P*w,r=o+P*w),M&&(d=p-z*M,u=c+z*M),x=Ti):(w<0?f=h:w>0&&(r=o),M<0?d=p:M>0&&(u=c),x=Ni),B.attr("cursor",Pi[m]),I());break;default:return}xi()},!0),Ht(t.event.view)}mi(),Pr(b),s.call(b),U.start()}function Y(){var t=D(b);!R||g||y||(Math.abs(t[0]-L[0])>Math.abs(t[1]-L[1])?y=!0:g=!0),L=t,v=!0,xi(),I()}function I(){var t;switch(P=L[0]-q[0],z=L[1]-q[1],x){case Mi:case wi:w&&(P=Math.max(S-r,Math.min(E-f,P)),o=r+P,h=f+P),M&&(z=Math.max(k-u,Math.min(C-d,z)),c=u+z,p=d+z);break;case Ni:w<0?(P=Math.max(S-r,Math.min(E-r,P)),o=r+P,h=f):w>0&&(P=Math.max(S-f,Math.min(E-f,P)),o=r,h=f+P),M<0?(z=Math.max(k-u,Math.min(C-u,z)),c=u+z,p=d):M>0&&(z=Math.max(k-d,Math.min(C-d,z)),c=u,p=d+z);break;case Ti:w&&(o=Math.max(S,Math.min(E,r-P*w)),h=Math.max(S,Math.min(E,f+P*w))),M&&(c=Math.max(k,Math.min(C,u-z*M)),p=Math.max(k,Math.min(C,d+z*M)))}h1e-6)if(Math.abs(s*u-c*f)>1e-6&&i){var h=e-o,d=r-a,p=u*u+c*c,v=h*h+d*d,g=Math.sqrt(p),y=Math.sqrt(l),_=i*Math.tan((Qi-Math.acos((p+l-v)/(2*g*y)))/2),b=_/y,m=_/g;Math.abs(b-1)>1e-6&&(this._+="L"+(t+b*f)+","+(n+b*s)),this._+="A"+i+","+i+",0,0,"+ +(s*h>f*d)+","+(this._x1=t+m*u)+","+(this._y1=n+m*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,o=!!o;var a=(e=+e)*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+f:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-f)>1e-6)&&(this._+="L"+c+","+f),e&&(l<0&&(l=l%Ki+Ki),l>Ji?this._+="A"+e+","+e+",0,1,"+s+","+(t-a)+","+(n-u)+"A"+e+","+e+",0,1,"+s+","+(this._x1=c)+","+(this._y1=f):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Qi)+","+s+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};function uo(){}function co(t,n){var e=new uo;if(t instanceof uo)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++ir!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function wo(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function Mo(){}var No=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function To(){var t=1,n=1,e=M,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(_o);else{var r=s(t),i=r[0],a=r[1];n=w(i,a,n),n=g(Math.floor(i/n)*n,Math.floor(a/n)*n,n)}return n.map(function(n){return o(t,n)})}function o(e,i){var o=[],u=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=e[0]>=r,No[f<<1].forEach(p);for(;++o=r,No[c|f<<1].forEach(p);No[f<<0].forEach(p);for(;++u=r,s=e[u*t]>=r,No[f<<1|s<<2].forEach(p);++o=r,l=s,s=e[u*t+o+1]>=r,No[c|f<<1|s<<2|l<<3].forEach(p);No[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,No[s<<2].forEach(p);for(;++o=r,No[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}No[s<<3].forEach(p)}(e,i,function(t){r(t,e,i),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n0?o.push([t]):u.push(t)}),u.forEach(function(t){for(var n,e=0,r=o.length;e0&&a0&&u0&&o>0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?bo(yo.call(t)):bo(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:Mo,i):r===u},i}function Ao(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[u-o+a*r]),n.data[u-e+a*r]=c/Math.min(u+1,r-1+o-u,o))}function So(t,n,e){for(var r=t.width,i=t.height,o=1+(e<<1),a=0;a=e&&(u>=o&&(c-=t.data[a+(u-o)*r]),n.data[a+(u-e)*r]=c/Math.min(u+1,i-1+o-u,o))}function ko(t){return t[0]}function Eo(t){return t[1]}function Co(){return 1}var Po={},zo={},Ro=34,Do=10,qo=13;function Lo(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'}).join(",")+"}")}function Uo(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function Oo(t,n){var e=t+"",r=e.length;return r9999?"+"+Oo(t,6):Oo(t,4)}(t.getUTCFullYear())+"-"+Oo(t.getUTCMonth()+1,2)+"-"+Oo(t.getUTCDate(),2)+(i?"T"+Oo(n,2)+":"+Oo(e,2)+":"+Oo(r,2)+"."+Oo(i,3)+"Z":r?"T"+Oo(n,2)+":"+Oo(e,2)+":"+Oo(r,2)+"Z":e||n?"T"+Oo(n,2)+":"+Oo(e,2)+"Z":"")}function Fo(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return zo;if(f)return f=!1,Po;var n,r,i=a;if(t.charCodeAt(i)===Ro){for(;a++=o?c=!0:(r=t.charCodeAt(a++))===Do?f=!0:r===qo&&(f=!0,t.charCodeAt(a)===Do&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(v+y)/2))?v=o:y=o,(s=e>=(a=(g+_)/2))?g=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function ba(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function ma(t){return t[0]}function xa(t){return t[1]}function wa(t,n,e){var r=new Ma(null==n?ma:n,null==e?xa:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Ma(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Na(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Ta=wa.prototype=Ma.prototype;function Aa(t){return t.x+t.vx}function Sa(t){return t.y+t.vy}function ka(t){return t.index}function Ea(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function Ca(t){return t.x}function Pa(t){return t.y}Ta.copy=function(){var t,n,e=new Ma(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Na(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Na(n));return e},Ta.add=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return _a(this.cover(n,e),n,e,t)},Ta.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;es&&(s=r),il&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;et||t>=i||r>n||n>=o;)switch(u=(nh||(o=c.y0)>d||(a=c.x1)=y)<<1|t>=g)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,v.data),b=n-+this._y.call(null,v.data),m=_*_+b*b;if(m=(u=(p+g)/2))?p=u:g=u,(s=a>=(c=(v+y)/2))?v=c:y=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Ta.removeAll=function(t){for(var n=0,e=t.length;n1?r[0]+r.slice(2):r,+t.slice(e+1)]}function qa(t){return(t=Da(Math.abs(t)))?t[1]:NaN}var La,Ua=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Oa(t){if(!(n=Ua.exec(t)))throw new Error("invalid format: "+t);var n;return new Ba({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Ba(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Fa(t,n){var e=Da(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Oa.prototype=Ba.prototype,Ba.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Ya={"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Fa(100*t,n)},r:Fa,s:function(t,n){var e=Da(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(La=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Da(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function Ia(t){return t}var Ha,ja=Array.prototype.map,Xa=["y","z","a","f","p","n","ยต","m","","k","M","G","T","P","E","Z","Y"];function Va(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?Ia:(n=ja.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?Ia:function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}}(ja.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"-":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Oa(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,v=t.comma,g=t.precision,y=t.trim,_=t.type;"n"===_?(v=!0,_="g"):Ya[_]||(void 0===g&&(g=12),y=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=Ya[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var N=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),g),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),N&&0==+t&&"+"!==l&&(N=!1),h=(N?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?Xa[8+La/3]:"")+M+(N&&"("===l?")":""),w)for(i=-1,o=t.length;++i(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}v&&!d&&(t=r(t,1/0));var T=h.length+t.length+M.length,A=T>1)+h+t+M+A.slice(T);break;default:t=A+h+t+M}return u(t)}return g=void 0===g?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,g)):Math.max(0,Math.min(20,g)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Oa(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(qa(n)/3))),i=Math.pow(10,-r),o=Xa[8+r/3];return function(t){return e(i*t)+o}}}}function Ga(n){return Ha=Va(n),t.format=Ha.format,t.formatPrefix=Ha.formatPrefix,Ha}function $a(t){return Math.max(0,-qa(Math.abs(t)))}function Wa(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(qa(n)/3)))-qa(Math.abs(t)))}function Za(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,qa(n)-qa(t))+1}function Qa(){return new Ka}function Ka(){this.reset()}Ga({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Ka.prototype={constructor:Ka,reset:function(){this.s=this.t=0},add:function(t){tu(Ja,t,this.t),tu(this,Ja.s,this.s),this.s?this.t+=Ja.t:this.s=Ja.t},valueOf:function(){return this.s}};var Ja=new Ka;function tu(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}var nu=1e-6,eu=1e-12,ru=Math.PI,iu=ru/2,ou=ru/4,au=2*ru,uu=180/ru,cu=ru/180,fu=Math.abs,su=Math.atan,lu=Math.atan2,hu=Math.cos,du=Math.ceil,pu=Math.exp,vu=Math.log,gu=Math.pow,yu=Math.sin,_u=Math.sign||function(t){return t>0?1:t<0?-1:0},bu=Math.sqrt,mu=Math.tan;function xu(t){return t>1?0:t<-1?ru:Math.acos(t)}function wu(t){return t>1?iu:t<-1?-iu:Math.asin(t)}function Mu(t){return(t=yu(t/2))*t}function Nu(){}function Tu(t,n){t&&Su.hasOwnProperty(t.type)&&Su[t.type](t,n)}var Au={Feature:function(t,n){Tu(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r=0?1:-1,i=r*e,o=hu(n=(n*=cu)/2+ou),a=yu(n),u=qu*a,c=Du*o+u*hu(i),f=u*r*yu(i);Lu.add(lu(f,c)),Ru=t,Du=o,qu=a}function Hu(t){return[lu(t[1],t[0]),wu(t[2])]}function ju(t){var n=t[0],e=t[1],r=hu(e);return[r*hu(n),r*yu(n),yu(e)]}function Xu(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Vu(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Gu(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function $u(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Wu(t){var n=bu(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var Zu,Qu,Ku,Ju,tc,nc,ec,rc,ic,oc,ac,uc,cc,fc,sc,lc,hc,dc,pc,vc,gc,yc,_c,bc,mc,xc,wc=Qa(),Mc={point:Nc,lineStart:Ac,lineEnd:Sc,polygonStart:function(){Mc.point=kc,Mc.lineStart=Ec,Mc.lineEnd=Cc,wc.reset(),Ou.polygonStart()},polygonEnd:function(){Ou.polygonEnd(),Mc.point=Nc,Mc.lineStart=Ac,Mc.lineEnd=Sc,Lu<0?(Zu=-(Ku=180),Qu=-(Ju=90)):wc>nu?Ju=90:wc<-nu&&(Qu=-90),oc[0]=Zu,oc[1]=Ku},sphere:function(){Zu=-(Ku=180),Qu=-(Ju=90)}};function Nc(t,n){ic.push(oc=[Zu=t,Ku=t]),nJu&&(Ju=n)}function Tc(t,n){var e=ju([t*cu,n*cu]);if(rc){var r=Vu(rc,e),i=Vu([r[1],-r[0],0],r);Wu(i),i=Hu(i);var o,a=t-tc,u=a>0?1:-1,c=i[0]*uu*u,f=fu(a)>180;f^(u*tcJu&&(Ju=o):f^(u*tc<(c=(c+360)%360-180)&&cJu&&(Ju=n)),f?tPc(Zu,Ku)&&(Ku=t):Pc(t,Ku)>Pc(Zu,Ku)&&(Zu=t):Ku>=Zu?(tKu&&(Ku=t)):t>tc?Pc(Zu,t)>Pc(Zu,Ku)&&(Ku=t):Pc(t,Ku)>Pc(Zu,Ku)&&(Zu=t)}else ic.push(oc=[Zu=t,Ku=t]);nJu&&(Ju=n),rc=e,tc=t}function Ac(){Mc.point=Tc}function Sc(){oc[0]=Zu,oc[1]=Ku,Mc.point=Nc,rc=null}function kc(t,n){if(rc){var e=t-tc;wc.add(fu(e)>180?e+(e>0?360:-360):e)}else nc=t,ec=n;Ou.point(t,n),Tc(t,n)}function Ec(){Ou.lineStart()}function Cc(){kc(nc,ec),Ou.lineEnd(),fu(wc)>nu&&(Zu=-(Ku=180)),oc[0]=Zu,oc[1]=Ku,rc=null}function Pc(t,n){return(n-=t)<0?n+360:n}function zc(t,n){return t[0]-n[0]}function Rc(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nru?t+Math.round(-t/au)*au:t,n]}function $c(t,n,e){return(t%=au)?n||e?Vc(Zc(t),Qc(n,e)):Zc(t):n||e?Qc(n,e):Gc}function Wc(t){return function(n,e){return[(n+=t)>ru?n-au:n<-ru?n+au:n,e]}}function Zc(t){var n=Wc(t);return n.invert=Wc(-t),n}function Qc(t,n){var e=hu(t),r=yu(t),i=hu(n),o=yu(n);function a(t,n){var a=hu(n),u=hu(t)*a,c=yu(t)*a,f=yu(n),s=f*e+u*r;return[lu(c*i-s*o,u*e-f*r),wu(s*i+c*o)]}return a.invert=function(t,n){var a=hu(n),u=hu(t)*a,c=yu(t)*a,f=yu(n),s=f*i-c*o;return[lu(c*i+f*o,u*e+s*r),wu(s*e-u*r)]},a}function Kc(t){function n(n){return(n=t(n[0]*cu,n[1]*cu))[0]*=uu,n[1]*=uu,n}return t=$c(t[0]*cu,t[1]*cu,t.length>2?t[2]*cu:0),n.invert=function(n){return(n=t.invert(n[0]*cu,n[1]*cu))[0]*=uu,n[1]*=uu,n},n}function Jc(t,n,e,r,i,o){if(e){var a=hu(n),u=yu(n),c=r*e;null==i?(i=n+r*au,o=n-c/2):(i=tf(a,i),o=tf(a,o),(r>0?io)&&(i+=r*au));for(var f,s=i;r>0?s>o:s1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function ef(t,n){return fu(t[0]-n[0])=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function af(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r=0?1:-1,T=N*M,A=T>ru,S=v*x;if(uf.add(lu(S*N*yu(T),g*w+S*hu(T))),a+=A?M+N*au:M,A^d>=e^b>=e){var k=Vu(ju(h),ju(_));Wu(k);var E=Vu(o,k);Wu(E);var C=(A^M>=0?-1:1)*wu(E[2]);(r>C||r===C&&(k[0]||k[1]))&&(u+=A^M>=0?1:-1)}}return(a<-nu||a0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(lf))}return h}}function lf(t){return t.length>1}function hf(t,n){return((t=t.x)[0]<0?t[1]-iu-nu:iu-t[1])-((n=n.x)[0]<0?n[1]-iu-nu:iu-n[1])}var df=sf(function(){return!0},function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?ru:-ru,c=fu(o-e);fu(c-ru)0?iu:-iu),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=ru&&(fu(e-i)nu?su((yu(n)*(o=hu(r))*yu(e)-yu(r)*(i=hu(n))*yu(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var i;if(null==t)i=e*iu,r.point(-ru,i),r.point(0,i),r.point(ru,i),r.point(ru,0),r.point(ru,-i),r.point(0,-i),r.point(-ru,-i),r.point(-ru,0),r.point(-ru,i);else if(fu(t[0]-n[0])>nu){var o=t[0]0,i=fu(n)>nu;function o(t,e){return hu(t)*hu(e)>n}function a(t,e,r){var i=[1,0,0],o=Vu(ju(t),ju(e)),a=Xu(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=Vu(i,o),h=$u(i,f);Gu(h,$u(o,s));var d=l,p=Xu(h,d),v=Xu(d,d),g=p*p-v*(Xu(h,h)-1);if(!(g<0)){var y=bu(g),_=$u(d,(-p-y)/v);if(Gu(_,h),_=Hu(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x0^_[1]<(fu(_[0]-m)ru^(m<=_[0]&&_[0]<=x)){var A=$u(d,(-p+y)/v);return Gu(A,h),[_,Hu(A)]}}}function u(n,e){var i=r?t:ru-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return sf(o,function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],v=o(l,h),g=r?v?0:u(l,h):v?u(l+(l<0?ru:-ru),h):0;if(!n&&(f=c=v)&&t.lineStart(),v!==c&&(!(d=a(n,p))||ef(n,d)||ef(p,d))&&(p[0]+=nu,p[1]+=nu,v=o(p[0],p[1])),v!==c)s=0,v?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1]),t.lineEnd()),n=d;else if(i&&n&&r^v){var y;g&e||!(y=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&ef(n,p)||t.point(p[0],p[1]),n=p,c=v,e=g},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}},function(n,r,i,o){Jc(o,t,e,i,n,r)},r?[0,-t]:[-ru,t-ru])}var vf=1e9,gf=-vf;function yf(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return fu(r[0]-t)0?0:3:fu(r[0]-e)0?2:1:fu(r[1]-n)0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,v,g,y,_,b=a,m=nf(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);y=!0,g=!1,p=v=NaN},lineEnd:function(){c&&(M(l,h),d&&g&&m.rejoin(),c.push(m.result()));x.point=w,g&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;er&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=A(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&of(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),y)l=o,h=a,d=u,y=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&g)b.point(o,a);else{var c=[p=Math.max(gf,Math.min(vf,p)),v=Math.max(gf,Math.min(vf,v))],m=[o=Math.max(gf,Math.min(vf,o)),a=Math.max(gf,Math.min(vf,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a0)){if(a/=h,h<0){if(a0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(g||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,v=a,g=u}return x}}var _f,bf,mf,xf=Qa(),wf={sphere:Nu,point:Nu,lineStart:function(){wf.point=Nf,wf.lineEnd=Mf},lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu};function Mf(){wf.point=wf.lineEnd=Nu}function Nf(t,n){_f=t*=cu,bf=yu(n*=cu),mf=hu(n),wf.point=Tf}function Tf(t,n){t*=cu;var e=yu(n*=cu),r=hu(n),i=fu(t-_f),o=hu(i),a=r*yu(i),u=mf*e-bf*r*o,c=bf*e+mf*r*o;xf.add(lu(bu(a*a+u*u),c)),_f=t,bf=e,mf=r}function Af(t){return xf.reset(),Cu(t,wf),+xf}var Sf=[null,null],kf={type:"LineString",coordinates:Sf};function Ef(t,n){return Sf[0]=t,Sf[1]=n,Af(kf)}var Cf={Feature:function(t,n){return zf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r0&&(i=Ef(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))nu}).map(c)).concat(g(du(o/d)*d,i,d).filter(function(t){return fu(t%v)>nu}).map(f))}return _.lines=function(){return b().map(function(t){return{type:"LineString",coordinates:t}})},_.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},_.extent=function(t){return arguments.length?_.extentMajor(t).extentMinor(t):_.extentMinor()},_.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),_.precision(y)):[[r,u],[e,a]]},_.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),_.precision(y)):[[n,o],[t,i]]},_.step=function(t){return arguments.length?_.stepMajor(t).stepMinor(t):_.stepMinor()},_.stepMajor=function(t){return arguments.length?(p=+t[0],v=+t[1],_):[p,v]},_.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],_):[h,d]},_.precision=function(h){return arguments.length?(y=+h,c=Of(o,i,90),f=Bf(n,t,y),s=Of(u,a,90),l=Bf(r,e,y),_):y},_.extentMajor([[-180,-90+nu],[180,90-nu]]).extentMinor([[-180,-80-nu],[180,80+nu]])}function Yf(t){return t}var If,Hf,jf,Xf,Vf=Qa(),Gf=Qa(),$f={point:Nu,lineStart:Nu,lineEnd:Nu,polygonStart:function(){$f.lineStart=Wf,$f.lineEnd=Kf},polygonEnd:function(){$f.lineStart=$f.lineEnd=$f.point=Nu,Vf.add(fu(Gf)),Gf.reset()},result:function(){var t=Vf/2;return Vf.reset(),t}};function Wf(){$f.point=Zf}function Zf(t,n){$f.point=Qf,If=jf=t,Hf=Xf=n}function Qf(t,n){Gf.add(Xf*t-jf*n),jf=t,Xf=n}function Kf(){Qf(If,Hf)}var Jf=1/0,ts=Jf,ns=-Jf,es=ns,rs={point:function(t,n){tns&&(ns=t);nes&&(es=n)},lineStart:Nu,lineEnd:Nu,polygonStart:Nu,polygonEnd:Nu,result:function(){var t=[[Jf,ts],[ns,es]];return ns=es=-(ts=Jf=1/0),t}};var is,os,as,us,cs=0,fs=0,ss=0,ls=0,hs=0,ds=0,ps=0,vs=0,gs=0,ys={point:_s,lineStart:bs,lineEnd:ws,polygonStart:function(){ys.lineStart=Ms,ys.lineEnd=Ns},polygonEnd:function(){ys.point=_s,ys.lineStart=bs,ys.lineEnd=ws},result:function(){var t=gs?[ps/gs,vs/gs]:ds?[ls/ds,hs/ds]:ss?[cs/ss,fs/ss]:[NaN,NaN];return cs=fs=ss=ls=hs=ds=ps=vs=gs=0,t}};function _s(t,n){cs+=t,fs+=n,++ss}function bs(){ys.point=ms}function ms(t,n){ys.point=xs,_s(as=t,us=n)}function xs(t,n){var e=t-as,r=n-us,i=bu(e*e+r*r);ls+=i*(as+t)/2,hs+=i*(us+n)/2,ds+=i,_s(as=t,us=n)}function ws(){ys.point=_s}function Ms(){ys.point=Ts}function Ns(){As(is,os)}function Ts(t,n){ys.point=As,_s(is=as=t,os=us=n)}function As(t,n){var e=t-as,r=n-us,i=bu(e*e+r*r);ls+=i*(as+t)/2,hs+=i*(us+n)/2,ds+=i,ps+=(i=us*t-as*n)*(as+t),vs+=i*(us+n),gs+=3*i,_s(as=t,us=n)}function Ss(t){this._context=t}Ss.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,au)}},result:Nu};var ks,Es,Cs,Ps,zs,Rs=Qa(),Ds={point:Nu,lineStart:function(){Ds.point=qs},lineEnd:function(){ks&&Ls(Es,Cs),Ds.point=Nu},polygonStart:function(){ks=!0},polygonEnd:function(){ks=null},result:function(){var t=+Rs;return Rs.reset(),t}};function qs(t,n){Ds.point=Ls,Es=Ps=t,Cs=zs=n}function Ls(t,n){Ps-=t,zs-=n,Rs.add(bu(Ps*Ps+zs*zs)),Ps=t,zs=n}function Us(){this._string=[]}function Os(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Bs(t){return function(n){var e=new Fs;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Fs(){}function Ys(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Cu(e,t.stream(rs)),n(rs.result()),null!=r&&t.clipExtent(r),t}function Is(t,n,e){return Ys(t,function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])},e)}function Hs(t,n,e){return Is(t,[[0,0],n],e)}function js(t,n,e){return Ys(t,function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])},e)}function Xs(t,n,e){return Ys(t,function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])},e)}Us.prototype={_radius:4.5,_circle:Os(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=Os(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},Fs.prototype={constructor:Fs,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Vs=16,Gs=hu(30*cu);function $s(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,v,g){var y=f-r,_=s-i,b=y*y+_*_;if(b>4*n&&v--){var m=a+h,x=u+d,w=c+p,M=bu(m*m+x*x+w*w),N=wu(w/=M),T=fu(fu(w)-1)n||fu((y*E+_*C)/b-.5)>.3||a*h+u*d+c*p2?t[2]%360*cu:0,E()):[g*uu,y*uu,_*uu]},S.angle=function(t){return arguments.length?(b=t%360*cu,E()):b*uu},S.reflectX=function(t){return arguments.length?(m=t?-1:1,E()):m<0},S.reflectY=function(t){return arguments.length?(x=t?-1:1,E()):x<0},S.precision=function(t){return arguments.length?(a=$s(u,A=t*t),C()):bu(A)},S.fitExtent=function(t,n){return Is(S,t,n)},S.fitSize=function(t,n){return Hs(S,t,n)},S.fitWidth=function(t,n){return js(S,t,n)},S.fitHeight=function(t,n){return Xs(S,t,n)},function(){return n=t.apply(this,arguments),S.invert=n.invert&&k,E()}}function Js(t){var n=0,e=ru/3,r=Ks(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*cu,e=t[1]*cu):[n*uu,e*uu]},i}function tl(t,n){var e=yu(t),r=(e+yu(n))/2;if(fu(r)0?n<-iu+nu&&(n=-iu+nu):n>iu-nu&&(n=iu-nu);var e=i/gu(fl(n),r);return[e*yu(r*t),i-e*hu(r*t)]}return o.invert=function(t,n){var e=i-n,o=_u(r)*bu(t*t+e*e),a=lu(t,fu(e))*_u(e);return e*r<0&&(a-=ru*_u(t)*_u(e)),[a/r,2*su(gu(i/o,1/r))-iu]},o}function ll(t,n){return[t,n]}function hl(t,n){var e=hu(t),r=t===n?yu(t):(e-hu(n))/(n-t),i=e/r+t;if(fu(r)=0;)n+=e[r].value;else n=1;t.value=n}function kl(t,n){var e,r,i,o,a,u=new zl(t),c=+t.value&&(u.value=t.value),f=[u];for(null==n&&(n=El);e=f.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(a=i.length))for(e.children=new Array(a),o=a-1;o>=0;--o)f.push(r=e.children[o]=new zl(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Pl)}function El(t){return t.children}function Cl(t){t.data=t.data.data}function Pl(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function zl(t){this.data=t,this.depth=this.height=0,this.parent=null}_l.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(dl+pl*i+o*(vl+gl*i))-n)/(dl+3*pl*i+o*(7*vl+9*gl*i)))*r)*i*i,!(fu(e)nu&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},xl.invert=il(wu),wl.invert=il(function(t){return 2*su(t)}),Ml.invert=function(t,n){return[-n,2*su(pu(t))-iu]},zl.prototype=kl.prototype={constructor:zl,count:function(){return this.eachAfter(Sl)},each:function(t){var n,e,r,i,o=this,a=[o];do{for(n=a.reverse(),a=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r=0;--e)i.push(n[e]);return this},sum:function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},sort:function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){var t=[];return this.each(function(n){t.push(n)}),t},leaves:function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},links:function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n},copy:function(){return kl(this).eachBefore(Cl)}};var Rl=Array.prototype.slice;function Dl(t){for(var n,e,r=0,i=(t=function(t){for(var n,e,r=t.length;r;)e=Math.random()*r--|0,n=t[r],t[r]=t[e],t[e]=n;return t}(Rl.call(t))).length,o=[];r0&&e*e>r*r+i*i}function Ol(t,n){for(var e=0;e(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function Hl(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function jl(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function Xl(t){this._=t,this.next=null,this.previous=null}function Vl(t){if(!(i=t.length))return 0;var n,e,r,i,o,a,u,c,f,s,l;if((n=t[0]).x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Il(e,n,r=t[2]),n=new Xl(n),e=new Xl(e),r=new Xl(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(u=3;uh&&(h=u),g=s*s*v,(d=Math.max(h/g,g/l))>p){s-=u;break}p=d}y.push(a={value:s,dice:c1?n:1)},e}(vh);var _h=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l1?n:1)},e}(vh);function bh(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function mh(t,n){return t[0]-n[0]||t[1]-n[1]}function xh(t){for(var n=t.length,e=[0,1],r=2,i=2;i1&&bh(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function wh(){return Math.random()}var Mh=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(wh),Nh=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(wh),Th=function t(n){function e(){var t=Nh.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(wh),Ah=function t(n){function e(t){return function(){for(var e=0,r=0;rr&&(n=e,e=r,r=n),function(t){return Math.max(e,Math.min(r,t))}}function Ih(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i2?Hh:Ih,i=o=null,l}function l(n){return isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),me)))(e)))},l.domain=function(t){return arguments.length?(a=zh.call(t,Uh),f===Bh||(f=Yh(a)),s()):a.slice()},l.range=function(t){return arguments.length?(u=Rh.call(t),s()):u.slice()},l.rangeRound=function(t){return u=Rh.call(t),c=Ae,s()},l.clamp=function(t){return arguments.length?(f=t?Yh(a):Bh,l):f!==Bh},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Vh(t,n){return Xh()(t,n)}function Gh(n,e,r,i){var o,a=w(n,e,r);switch((i=Oa(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=Wa(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=Za(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=$a(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function $h(t){var n=t.domain;return t.ticks=function(t){var e=n();return m(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Gh(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i=n(),o=0,a=i.length-1,u=i[o],c=i[a];return c0?r=x(u=Math.floor(u/r)*r,c=Math.ceil(c/r)*r,e):r<0&&(r=x(u=Math.ceil(u*r)/r,c=Math.floor(c*r)/r,e)),r>0?(i[o]=Math.floor(u/r)*r,i[a]=Math.ceil(c/r)*r,n(i)):r<0&&(i[o]=Math.ceil(u*r)/r,i[a]=Math.floor(c*r)/r,n(i)),t},t}function Wh(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a0){for(;hc)break;v.push(l)}}else for(;h=1;--s)if(!((l=f*s)c)break;v.push(l)}}else v=m(h,d,Math.min(d-h,p)).map(r);return n?v.reverse():v},i.tickFormat=function(n,o){if(null==o&&(o=10===a?".0e":","),"function"!=typeof o&&(o=t.format(o)),n===1/0)return o;null==n&&(n=10);var u=Math.max(1,a*n/i.ticks().length);return function(t){var n=t/r(Math.round(e(t)));return n*a0))return u;do{u.push(a=new Date(+e)),n(e,o),t(e)}while(a=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return ld.setTime(+n),hd.setTime(+r),t(ld),t(hd),Math.floor(e(ld,hd))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}var pd=dd(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});pd.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?dd(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):pd:null};var vd=pd.range,gd=6e4,yd=6048e5,_d=dd(function(t){t.setTime(t-t.getMilliseconds())},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),bd=_d.range,md=dd(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())},function(t,n){t.setTime(+t+n*gd)},function(t,n){return(n-t)/gd},function(t){return t.getMinutes()}),xd=md.range,wd=dd(function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*gd)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),Md=wd.range,Nd=dd(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*gd)/864e5},function(t){return t.getDate()-1}),Td=Nd.range;function Ad(t){return dd(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*gd)/yd})}var Sd=Ad(0),kd=Ad(1),Ed=Ad(2),Cd=Ad(3),Pd=Ad(4),zd=Ad(5),Rd=Ad(6),Dd=Sd.range,qd=kd.range,Ld=Ed.range,Ud=Cd.range,Od=Pd.range,Bd=zd.range,Fd=Rd.range,Yd=dd(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),Id=Yd.range,Hd=dd(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});Hd.every=function(t){return isFinite(t=Math.floor(t))&&t>0?dd(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var jd=Hd.range,Xd=dd(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*gd)},function(t,n){return(n-t)/gd},function(t){return t.getUTCMinutes()}),Vd=Xd.range,Gd=dd(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),$d=Gd.range,Wd=dd(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Zd=Wd.range;function Qd(t){return dd(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/yd})}var Kd=Qd(0),Jd=Qd(1),tp=Qd(2),np=Qd(3),ep=Qd(4),rp=Qd(5),ip=Qd(6),op=Kd.range,ap=Jd.range,up=tp.range,cp=np.range,fp=ep.range,sp=rp.range,lp=ip.range,hp=dd(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),dp=hp.range,pp=dd(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});pp.every=function(t){return isFinite(t=Math.floor(t))&&t>0?dd(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var vp=pp.range;function gp(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function yp(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function _p(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function bp(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=Sp(i),s=kp(i),l=Sp(o),h=kp(o),d=Sp(a),p=kp(a),v=Sp(u),g=kp(u),y=Sp(c),_=kp(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Wp,e:Wp,f:tv,H:Zp,I:Qp,j:Kp,L:Jp,m:nv,M:ev,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Cv,s:Pv,S:rv,u:iv,U:ov,V:av,w:uv,W:cv,x:null,X:null,y:fv,Y:sv,Z:lv,"%":Ev},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:hv,e:hv,f:yv,H:dv,I:pv,j:vv,L:gv,m:_v,M:bv,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Cv,s:Pv,S:mv,u:xv,U:wv,V:Mv,w:Nv,W:Tv,x:null,X:null,y:Av,Y:Sv,Z:kv,"%":Ev},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p[r[0].toLowerCase()],e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h[r[0].toLowerCase()],e+r[0].length):-1},b:function(t,n,e){var r=y.exec(n.slice(e));return r?(t.m=_[r[0].toLowerCase()],e+r[0].length):-1},B:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=g[r[0].toLowerCase()],e+r[0].length):-1},c:function(t,e,r){return N(t,n,e,r)},d:Bp,e:Bp,f:Xp,H:Yp,I:Yp,j:Fp,L:jp,m:Op,M:Ip,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s[r[0].toLowerCase()],e+r[0].length):-1},q:Up,Q:Gp,s:$p,S:Hp,u:Cp,U:Pp,V:zp,w:Ep,W:Rp,x:function(t,n,r){return N(t,e,n,r)},X:function(t,n,e){return N(t,r,n,e)},y:qp,Y:Dp,Z:Lp,"%":Vp};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=yp(_p(o.y,0,1))).getUTCDay(),r=i>4||0===i?Jd.ceil(r):Jd(r),r=Wd.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=gp(_p(o.y,0,1))).getDay(),r=i>4||0===i?kd.ceil(r):kd(r),r=Nd.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?yp(_p(o.y,0,1)).getUTCDay():gp(_p(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,yp(o)):gp(o)}}function N(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in xp?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var mp,xp={"-":"",_:" ",0:"0"},wp=/^\s*\d+/,Mp=/^%/,Np=/[\\^$*+?|[\]().{}]/g;function Tp(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o68?1900:2e3),e+r[0].length):-1}function Lp(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Up(t,n,e){var r=wp.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Op(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function Bp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function Fp(t,n,e){var r=wp.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Yp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Ip(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Hp(t,n,e){var r=wp.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function jp(t,n,e){var r=wp.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Xp(t,n,e){var r=wp.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Vp(t,n,e){var r=Mp.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Gp(t,n,e){var r=wp.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function $p(t,n,e){var r=wp.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Wp(t,n){return Tp(t.getDate(),n,2)}function Zp(t,n){return Tp(t.getHours(),n,2)}function Qp(t,n){return Tp(t.getHours()%12||12,n,2)}function Kp(t,n){return Tp(1+Nd.count(Hd(t),t),n,3)}function Jp(t,n){return Tp(t.getMilliseconds(),n,3)}function tv(t,n){return Jp(t,n)+"000"}function nv(t,n){return Tp(t.getMonth()+1,n,2)}function ev(t,n){return Tp(t.getMinutes(),n,2)}function rv(t,n){return Tp(t.getSeconds(),n,2)}function iv(t){var n=t.getDay();return 0===n?7:n}function ov(t,n){return Tp(Sd.count(Hd(t)-1,t),n,2)}function av(t,n){var e=t.getDay();return t=e>=4||0===e?Pd(t):Pd.ceil(t),Tp(Pd.count(Hd(t),t)+(4===Hd(t).getDay()),n,2)}function uv(t){return t.getDay()}function cv(t,n){return Tp(kd.count(Hd(t)-1,t),n,2)}function fv(t,n){return Tp(t.getFullYear()%100,n,2)}function sv(t,n){return Tp(t.getFullYear()%1e4,n,4)}function lv(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+Tp(n/60|0,"0",2)+Tp(n%60,"0",2)}function hv(t,n){return Tp(t.getUTCDate(),n,2)}function dv(t,n){return Tp(t.getUTCHours(),n,2)}function pv(t,n){return Tp(t.getUTCHours()%12||12,n,2)}function vv(t,n){return Tp(1+Wd.count(pp(t),t),n,3)}function gv(t,n){return Tp(t.getUTCMilliseconds(),n,3)}function yv(t,n){return gv(t,n)+"000"}function _v(t,n){return Tp(t.getUTCMonth()+1,n,2)}function bv(t,n){return Tp(t.getUTCMinutes(),n,2)}function mv(t,n){return Tp(t.getUTCSeconds(),n,2)}function xv(t){var n=t.getUTCDay();return 0===n?7:n}function wv(t,n){return Tp(Kd.count(pp(t)-1,t),n,2)}function Mv(t,n){var e=t.getUTCDay();return t=e>=4||0===e?ep(t):ep.ceil(t),Tp(ep.count(pp(t),t)+(4===pp(t).getUTCDay()),n,2)}function Nv(t){return t.getUTCDay()}function Tv(t,n){return Tp(Jd.count(pp(t)-1,t),n,2)}function Av(t,n){return Tp(t.getUTCFullYear()%100,n,2)}function Sv(t,n){return Tp(t.getUTCFullYear()%1e4,n,4)}function kv(){return"+0000"}function Ev(){return"%"}function Cv(t){return+t}function Pv(t){return Math.floor(+t/1e3)}function zv(n){return mp=bp(n),t.timeFormat=mp.format,t.timeParse=mp.parse,t.utcFormat=mp.utcFormat,t.utcParse=mp.utcParse,mp}zv({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Rv=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ");var Dv=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),qv=1e3,Lv=60*qv,Uv=60*Lv,Ov=24*Uv,Bv=7*Ov,Fv=30*Ov,Yv=365*Ov;function Iv(t){return new Date(t)}function Hv(t){return t instanceof Date?+t:+new Date(+t)}function jv(t,n,r,i,o,a,u,c,f){var s=Vh(Bh,Bh),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),v=f("%I:%M"),g=f("%I %p"),y=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y"),x=[[u,1,qv],[u,5,5*qv],[u,15,15*qv],[u,30,30*qv],[a,1,Lv],[a,5,5*Lv],[a,15,15*Lv],[a,30,30*Lv],[o,1,Uv],[o,3,3*Uv],[o,6,6*Uv],[o,12,12*Uv],[i,1,Ov],[i,2,2*Ov],[r,1,Bv],[n,1,Fv],[n,3,3*Fv],[t,1,Yv]];function M(e){return(u(e)=1?Cy:t<=-1?-Cy:Math.asin(t)}function Ry(t){return t.innerRadius}function Dy(t){return t.outerRadius}function qy(t){return t.startAngle}function Ly(t){return t.endAngle}function Uy(t){return t&&t.padAngle}function Oy(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/Sy(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,v=r+l,g=(h+p)/2,y=(d+v)/2,_=p-h,b=v-d,m=_*_+b*b,x=i-o,w=h*v-p*d,M=(b<0?-1:1)*Sy(Ny(0,x*x*m-w*w)),N=(w*b-_*M)/m,T=(-w*_-b*M)/m,A=(w*b+_*M)/m,S=(-w*_+b*M)/m,k=N-g,E=T-y,C=A-g,P=S-y;return k*k+E*E>C*C+P*P&&(N=A,T=S),{cx:N,cy:T,x01:-s,y01:-l,x11:N*(i/x-1),y11:T*(i/x-1)}}function By(t){this._context=t}function Fy(t){return new By(t)}function Yy(t){return t[0]}function Iy(t){return t[1]}function Hy(){var t=Yy,n=Iy,e=my(!0),r=null,i=Fy,o=null;function a(a){var u,c,f,s=a.length,l=!1;for(null==r&&(o=i(f=no())),u=0;u<=s;++u)!(u=s;--l)u.point(g[l],y[l]);u.lineEnd(),u.areaEnd()}v&&(g[f]=+t(h,f,c),y[f]=+e(h,f,c),u.point(n?+n(h,f,c):g[f],r?+r(h,f,c):y[f]))}if(d)return u=null,d+""||null}function f(){return Hy().defined(i).curve(a).context(o)}return c.x=function(e){return arguments.length?(t="function"==typeof e?e:my(+e),n=null,c):t},c.x0=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),c):t},c.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:my(+t),c):n},c.y=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),r=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:my(+t),c):e},c.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:my(+t),c):r},c.lineX0=c.lineY0=function(){return f().x(t).y(e)},c.lineY1=function(){return f().x(t).y(r)},c.lineX1=function(){return f().x(n).y(e)},c.defined=function(t){return arguments.length?(i="function"==typeof t?t:my(!!t),c):i},c.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),c):a},c.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),c):o},c}function Xy(t,n){return nt?1:n>=t?0:NaN}function Vy(t){return t}By.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Gy=Wy(Fy);function $y(t){this._curve=t}function Wy(t){function n(n){return new $y(t(n))}return n._curve=t,n}function Zy(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Wy(t)):n()._curve},t}function Qy(){return Zy(Hy().curve(Gy))}function Ky(){var t=jy().curve(Gy),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Zy(e())},delete t.lineX0,t.lineEndAngle=function(){return Zy(r())},delete t.lineX1,t.lineInnerRadius=function(){return Zy(i())},delete t.lineY0,t.lineOuterRadius=function(){return Zy(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Wy(t)):n()._curve},t}function Jy(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}$y.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var t_=Array.prototype.slice;function n_(t){return t.source}function e_(t){return t.target}function r_(t){var n=n_,e=e_,r=Yy,i=Iy,o=null;function a(){var a,u=t_.call(arguments),c=n.apply(this,u),f=e.apply(this,u);if(o||(o=a=no()),t(o,+r.apply(this,(u[0]=c,u)),+i.apply(this,u),+r.apply(this,(u[0]=f,u)),+i.apply(this,u)),a)return o=null,a+""||null}return a.source=function(t){return arguments.length?(n=t,a):n},a.target=function(t){return arguments.length?(e=t,a):e},a.x=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),a):r},a.y=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),a):i},a.context=function(t){return arguments.length?(o=null==t?null:t,a):o},a}function i_(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function o_(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function a_(t,n,e,r,i){var o=Jy(n,e),a=Jy(n,e=(e+i)/2),u=Jy(r,e),c=Jy(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(a[0],a[1],u[0],u[1],c[0],c[1])}var u_={draw:function(t,n){var e=Math.sqrt(n/Ey);t.moveTo(e,0),t.arc(0,0,e,0,Py)}},c_={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},f_=Math.sqrt(1/3),s_=2*f_,l_={draw:function(t,n){var e=Math.sqrt(n/s_),r=e*f_;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},h_=Math.sin(Ey/10)/Math.sin(7*Ey/10),d_=Math.sin(Py/10)*h_,p_=-Math.cos(Py/10)*h_,v_={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=d_*e,i=p_*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var a=Py*o/5,u=Math.cos(a),c=Math.sin(a);t.lineTo(c*e,-u*e),t.lineTo(u*r-c*i,c*r+u*i)}t.closePath()}},g_={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},y_=Math.sqrt(3),__={draw:function(t,n){var e=-Math.sqrt(n/(3*y_));t.moveTo(0,2*e),t.lineTo(-y_*e,-e),t.lineTo(y_*e,-e),t.closePath()}},b_=Math.sqrt(3)/2,m_=1/Math.sqrt(12),x_=3*(m_/2+1),w_={draw:function(t,n){var e=Math.sqrt(n/x_),r=e/2,i=e*m_,o=r,a=e*m_+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(-.5*r-b_*i,b_*r+-.5*i),t.lineTo(-.5*o-b_*a,b_*o+-.5*a),t.lineTo(-.5*u-b_*c,b_*u+-.5*c),t.lineTo(-.5*r+b_*i,-.5*i-b_*r),t.lineTo(-.5*o+b_*a,-.5*a-b_*o),t.lineTo(-.5*u+b_*c,-.5*c-b_*u),t.closePath()}},M_=[u_,c_,l_,g_,v_,__,w_];function N_(){}function T_(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function A_(t){this._context=t}function S_(t){this._context=t}function k_(t){this._context=t}function E_(t,n){this._basis=new A_(t),this._beta=n}A_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:T_(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},S_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},k_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:T_(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},E_.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var C_=function t(n){function e(t){return 1===n?new A_(t):new E_(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function P_(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function z_(t,n){this._context=t,this._k=(1-n)/6}z_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:P_(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var R_=function t(n){function e(t){return new z_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function D_(t,n){this._context=t,this._k=(1-n)/6}D_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var q_=function t(n){function e(t){return new D_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function L_(t,n){this._context=t,this._k=(1-n)/6}L_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:P_(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var U_=function t(n){function e(t){return new L_(t,n)}return e.tension=function(n){return t(+n)},e}(0);function O_(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>ky){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>ky){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function B_(t,n){this._context=t,this._alpha=n}B_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var F_=function t(n){function e(t){return n?new B_(t,n):new z_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Y_(t,n){this._context=t,this._alpha=n}Y_.prototype={areaStart:N_,areaEnd:N_,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var I_=function t(n){function e(t){return n?new Y_(t,n):new D_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function H_(t,n){this._context=t,this._alpha=n}H_.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:O_(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var j_=function t(n){function e(t){return n?new H_(t,n):new L_(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function X_(t){this._context=t}function V_(t){return t<0?-1:1}function G_(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(V_(o)+V_(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function $_(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function W_(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function Z_(t){this._context=t}function Q_(t){this._context=new K_(t)}function K_(t){this._context=t}function J_(t){this._context=t}function tb(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o=0;)e[n]=n;return e}function ib(t,n){return t[n]}function ob(t){var n=t.map(ab);return rb(t).sort(function(t,e){return n[t]-n[e]})}function ab(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++eo&&(o=n,r=e);return r}function ub(t){var n=t.map(cb);return rb(t).sort(function(t,e){return n[t]-n[e]})}function cb(t){for(var n,e=0,r=-1,i=t.length;++r0)){if(o/=h,h<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=r-c,h||!(o<0)){if(o/=h,h<0){if(o>l)return;o>s&&(s=o)}else if(h>0){if(o0)){if(o/=d,d<0){if(o0){if(o>l)return;o>s&&(s=o)}if(o=i-f,d||!(o<0)){if(o/=d,d<0){if(o>l)return;o>s&&(s=o)}else if(d>0){if(o0||l<1)||(s>0&&(t[0]=[c+s*h,f+s*d]),l<1&&(t[1]=[c+l*h,f+l*d]),!0)}}}}}function xb(t,n,e,r,i){var o=t[1];if(o)return!0;var a,u,c=t[0],f=t.left,s=t.right,l=f[0],h=f[1],d=s[0],p=s[1],v=(l+d)/2,g=(h+p)/2;if(p===h){if(v=r)return;if(l>d){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]1)if(l>d){if(c){if(c[1]>=i)return}else c=[(e-u)/a,e];o=[(i-u)/a,i]}else{if(c){if(c[1]=r)return}else c=[n,a*n+u];o=[r,a*r+u]}else{if(c){if(c[0]=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}},hb.prototype={constructor:hb,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=gb(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(r=e.U).L?(i=r.R)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(pb(this,e),e=(t=e).U),e.C=!1,r.C=!0,vb(this,r)):(i=r.L)&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(vb(this,e),e=(t=e).U),e.C=!1,r.C=!0,pb(this,r)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,a=t.R;if(e=o?a?gb(a):o:a,i?i.L===t?i.L=e:i.R=e:this._=e,o&&a?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==a?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=a,a.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((n=i.R).C&&(n.C=!1,i.C=!0,pb(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,vb(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,pb(this,i),t=this._;break}}else if((n=i.L).C&&(n.C=!1,i.C=!0,vb(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,pb(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,vb(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var Tb,Ab=[];function Sb(){db(this),this.x=this.y=this.arc=this.site=this.cy=null}function kb(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var a=i[0],u=i[1],c=r[0]-a,f=r[1]-u,s=o[0]-a,l=o[1]-u,h=2*(c*l-f*s);if(!(h>=-Hb)){var d=c*c+f*f,p=s*s+l*l,v=(l*d-f*p)/h,g=(c*p-s*d)/h,y=Ab.pop()||new Sb;y.arc=t,y.site=i,y.x=v+a,y.y=(y.cy=g+u)+Math.sqrt(v*v+g*g),t.circle=y;for(var _=null,b=Fb._;b;)if(y.yIb)u=u.L;else{if(!((i=o-Ub(u,a))>Ib)){r>-Ib?(n=u.P,e=u):i>-Ib?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){Bb[t.index]={site:t,halfedges:[]}}(t);var c=zb(t);if(Ob.insert(n,c),n||e){if(n===e)return Eb(n),e=zb(n.site),Ob.insert(c,e),c.edge=e.edge=yb(n.site,c.site),kb(n),void kb(e);if(e){Eb(n),Eb(e);var f=n.site,s=f[0],l=f[1],h=t[0]-s,d=t[1]-l,p=e.site,v=p[0]-s,g=p[1]-l,y=2*(h*g-d*v),_=h*h+d*d,b=v*v+g*g,m=[(g*_-d*b)/y+s,(h*b-v*_)/y+l];bb(e.edge,f,p,m),c.edge=yb(f,t,null,m),e.edge=yb(t,p,null,m),kb(n),kb(e)}else c.edge=yb(n.site,c.site)}}function Lb(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var a=t.P;if(!a)return-1/0;var u=(e=a.site)[0],c=e[1],f=c-n;if(!f)return u;var s=u-r,l=1/o-1/f,h=s/f;return l?(-h+Math.sqrt(h*h-2*l*(s*s/(-2*f)-c+f/2+i-o/2)))/l+r:(r+u)/2}function Ub(t,n){var e=t.N;if(e)return Lb(e,n);var r=t.site;return r[1]===n?r[0]:1/0}var Ob,Bb,Fb,Yb,Ib=1e-6,Hb=1e-12;function jb(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function Xb(t,n){return n[1]-t[1]||n[0]-t[0]}function Vb(t,n){var e,r,i,o=t.sort(Xb).pop();for(Yb=[],Bb=new Array(t.length),Ob=new hb,Fb=new hb;;)if(i=Tb,o&&(!i||o[1]Ib||Math.abs(i[0][1]-i[1][1])>Ib)||delete Yb[o]}(a,u,c,f),function(t,n,e,r){var i,o,a,u,c,f,s,l,h,d,p,v,g=Bb.length,y=!0;for(i=0;iIb||Math.abs(v-h)>Ib)&&(c.splice(u,0,Yb.push(_b(a,d,Math.abs(p-t)Ib?[t,Math.abs(l-t)Ib?[Math.abs(h-r)Ib?[e,Math.abs(l-e)Ib?[Math.abs(h-n)=u)return null;var c=t-i.site[0],f=n-i.site[1],s=c*c+f*f;do{i=o.cells[r=a],a=null,i.halfedges.forEach(function(e){var r=o.edges[e],u=r.left;if(u!==i.site&&u||(u=r.right)){var c=t-u[0],f=n-u[1],l=c*c+f*f;lr?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Qb.prototype=Wb.prototype,t.FormatSpecifier=Ba,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>xr&&e.name===n)return new Ur([[t]],yi,n,+r);return null},t.arc=function(){var t=Ry,n=Dy,e=my(0),r=null,i=qy,o=Ly,a=Uy,u=null;function c(){var c,f,s=+t.apply(this,arguments),l=+n.apply(this,arguments),h=i.apply(this,arguments)-Cy,d=o.apply(this,arguments)-Cy,p=xy(d-h),v=d>h;if(u||(u=c=no()),lky)if(p>Py-ky)u.moveTo(l*My(h),l*Ay(h)),u.arc(0,0,l,h,d,!v),s>ky&&(u.moveTo(s*My(d),s*Ay(d)),u.arc(0,0,s,d,h,v));else{var g,y,_=h,b=d,m=h,x=d,w=p,M=p,N=a.apply(this,arguments)/2,T=N>ky&&(r?+r.apply(this,arguments):Sy(s*s+l*l)),A=Ty(xy(l-s)/2,+e.apply(this,arguments)),S=A,k=A;if(T>ky){var E=zy(T/s*Ay(N)),C=zy(T/l*Ay(N));(w-=2*E)>ky?(m+=E*=v?1:-1,x-=E):(w=0,m=x=(h+d)/2),(M-=2*C)>ky?(_+=C*=v?1:-1,b-=C):(M=0,_=b=(h+d)/2)}var P=l*My(_),z=l*Ay(_),R=s*My(x),D=s*Ay(x);if(A>ky){var q,L=l*My(b),U=l*Ay(b),O=s*My(m),B=s*Ay(m);if(p1?0:t<-1?Ey:Math.acos(t)}((F*I+Y*H)/(Sy(F*F+Y*Y)*Sy(I*I+H*H)))/2),X=Sy(q[0]*q[0]+q[1]*q[1]);S=Ty(A,(s-X)/(j-1)),k=Ty(A,(l-X)/(j+1))}}M>ky?k>ky?(g=Oy(O,B,P,z,l,k,v),y=Oy(L,U,R,D,l,k,v),u.moveTo(g.cx+g.x01,g.cy+g.y01),kky&&w>ky?S>ky?(g=Oy(R,D,L,U,s,-S,v),y=Oy(P,z,O,B,s,-S,v),u.lineTo(g.cx+g.x01,g.cy+g.y01),S>a,f=i+2*u>>a,s=bo(20);function l(r){var i=new Float32Array(c*f),l=new Float32Array(c*f);r.forEach(function(r,o,s){var l=+t(r,o,s)+u>>a,h=+n(r,o,s)+u>>a,d=+e(r,o,s);l>=0&&l=0&&h>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a),Ao({width:c,height:f,data:i},{width:c,height:f,data:l},o>>a),So({width:c,height:f,data:l},{width:c,height:f,data:i},o>>a);var d=s(i);if(!Array.isArray(d)){var p=T(i);d=w(0,p,d),(d=g(0,Math.floor(p/d)*d,d)).shift()}return To().thresholds(d).size([c,f])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*a),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function y(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,l}return l.x=function(n){return arguments.length?(t="function"==typeof n?n:bo(+n),l):t},l.y=function(t){return arguments.length?(n="function"==typeof t?t:bo(+t),l):n},l.weight=function(t){return arguments.length?(e="function"==typeof t?t:bo(+t),l):e},l.size=function(t){if(!arguments.length)return[r,i];var n=Math.ceil(t[0]),e=Math.ceil(t[1]);if(!(n>=0||n>=0))throw new Error("invalid size");return r=n,i=e,y()},l.cellSize=function(t){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?bo(yo.call(t)):bo(t),l):s},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},t.contours=To,t.create=function(t){return Rt(Z(t).call(document.documentElement))},t.creator=Z,t.cross=function(t,n,e){var r,i,o,u,c=t.length,f=n.length,s=new Array(c*f);for(null==e&&(e=a),r=o=0;rt?1:n>=t?0:NaN},t.deviation=f,t.dispatch=I,t.drag=function(){var n,e,r,i,o=Gt,a=$t,u=Wt,c=Zt,f={},s=I("start","drag","end"),l=0,h=0;function d(t){t.on("mousedown.drag",p).filter(c).on("touchstart.drag",y).on("touchmove.drag",_).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(){if(!i&&o.apply(this,arguments)){var u=m("mouse",a.apply(this,arguments),Bt,this,arguments);u&&(Rt(t.event.view).on("mousemove.drag",v,!0).on("mouseup.drag",g,!0),Ht(t.event.view),Yt(),r=!1,n=t.event.clientX,e=t.event.clientY,u("start"))}}function v(){if(It(),!r){var i=t.event.clientX-n,o=t.event.clientY-e;r=i*i+o*o>h}f.mouse("drag")}function g(){Rt(t.event.view).on("mousemove.drag mouseup.drag",null),jt(t.event.view,r),It(),f.mouse("end")}function y(){if(o.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=a.apply(this,arguments),u=r.length;for(n=0;nc+d||if+d||ou.index){var p=c-a.x-a.vx,v=f-a.y-a.vy,g=p*p+v*v;gt.r&&(t.r=t[n].r)}function u(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r=a)){(t.data!==n||t.next)&&(0===s&&(d+=(s=ya())*s),0===l&&(d+=(l=ya())*l),d1?(null==e?u.remove(t):u.set(t,d(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=ga(.1);function o(t){for(var i,o=0,a=n.length;o=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++ePc(r[0],r[1])&&(r[1]=i[1]),Pc(i[0],r[1])>Pc(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=Pc(r[1],i[0]))>a&&(a=u,Zu=i[0],Ku=r[1])}return ic=oc=null,Zu===1/0||Qu===1/0?[[NaN,NaN],[NaN,NaN]]:[[Zu,Qu],[Ku,Ju]]},t.geoCentroid=function(t){ac=uc=cc=fc=sc=lc=hc=dc=pc=vc=gc=0,Cu(t,Dc);var n=pc,e=vc,r=gc,i=n*n+e*e+r*r;return i2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Ml,t.gray=function(t,n){return new Bn(t,0,0,null==n?1:n)},t.hcl=Xn,t.hierarchy=kl,t.histogram=function(){var t=v,n=s,e=M;function r(r){var o,a,u=r.length,c=new Array(u);for(o=0;ol;)h.pop(),--d;var p,v=new Array(d+1);for(o=0;o<=d;++o)(p=v[o]=[]).x0=o>0?h[o-1]:s,p.x1=o1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return ly.h=360*t-100,ly.s=1.5-1.5*n,ly.l=.8-.9*n,ly+""},t.interpolateRdBu=yg,t.interpolateRdGy=bg,t.interpolateRdPu=Yg,t.interpolateRdYlBu=xg,t.interpolateRdYlGn=Mg,t.interpolateReds=oy,t.interpolateRgb=he,t.interpolateRgbBasis=pe,t.interpolateRgbBasisClosed=ve,t.interpolateRound=Ae,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,hy.r=255*(n=Math.sin(t))*n,hy.g=255*(n=Math.sin(t+dy))*n,hy.b=255*(n=Math.sin(t+py))*n,hy+""},t.interpolateSpectral=Tg,t.interpolateString=Ne,t.interpolateTransformCss=qe,t.interpolateTransformSvg=Le,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=gy,t.interpolateWarm=fy,t.interpolateYlGn=Xg,t.interpolateYlGnBu=Hg,t.interpolateYlOrBr=Gg,t.interpolateYlOrRd=Wg,t.interpolateZoom=Ie,t.interrupt=Pr,t.interval=function(t,n,e){var r=new lr,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?fr():+e,r.restart(function o(a){a+=i,r.restart(o,i+=n,e),t(a)},n,e),r)},t.isoFormat=Rv,t.isoParse=Dv,t.json=function(t,n){return fetch(t,n).then(la)},t.keys=function(t){var n=[];for(var e in t)n.push(e);return n},t.lab=On,t.lch=function(t,n,e,r){return 1===arguments.length?jn(t):new Vn(e,n,t,null==r?1:r)},t.line=Hy,t.lineRadial=Qy,t.linkHorizontal=function(){return r_(i_)},t.linkRadial=function(){var t=r_(a_);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return r_(o_)},t.local=qt,t.map=co,t.matcher=nt,t.max=T,t.mean=function(t,n){var e,r=t.length,i=r,o=-1,a=0;if(null==n)for(;++o=r.length)return null!=t&&e.sort(t),null!=n?n(e):e;for(var c,f,s,l=-1,h=e.length,d=r[i++],p=co(),v=a();++lr.length)return e;var a,u=i[o-1];return null!=n&&o>=r.length?a=e.entries():(a=[],e.each(function(n,e){a.push({key:e,values:t(n,o)})})),null!=u?a.sort(function(t,n){return u(t.key,n.key)}):a}(o(t,0,lo,ho),0)},key:function(t){return r.push(t),e},sortKeys:function(t){return i[r.length-1]=t,e},sortValues:function(n){return t=n,e},rollup:function(t){return n=t,e}}},t.now=fr,t.pack=function(){var t=null,n=1,e=1,r=Wl;function i(i){return i.x=n/2,i.y=e/2,t?i.eachBefore(Kl(t)).eachAfter(Jl(r,.5)).eachBefore(th(1)):i.eachBefore(Kl(Ql)).eachAfter(Jl(Wl,1)).eachAfter(Jl(r,i.r/Math.min(n,e))).eachBefore(th(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Gl(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Zl(+t),i):r},i},t.packEnclose=Dl,t.packSiblings=function(t){return Vl(t),t},t.pairs=function(t,n){null==n&&(n=a);for(var e=0,r=t.length-1,i=t[0],o=new Array(r<0?0:r);e0&&(d+=l);for(null!=n?p.sort(function(t,e){return n(v[t],v[e])}):null!=e&&p.sort(function(t,n){return e(a[t],a[n])}),u=0,f=d?(y-h*b)/d:0;u0?l*f:0)+b,v[c]={data:a[c],index:u,value:l,startAngle:g,endAngle:s,padAngle:_};return v}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:my(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:my(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:my(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:my(+t),a):o},a},t.piecewise=function(t,n){for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);eu!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n0?a[n-1]:r[0],n=o?[a[o-1],r]:[a[n-1],a[n]]},c.unknown=function(t){return arguments.length?(n=t,c):c},c.thresholds=function(){return a.slice()},c.copy=function(){return t().domain([e,r]).range(u).unknown(n)},Eh.apply($h(c),arguments)},t.scaleSequential=function t(){var n=$h(Xv()(Bh));return n.copy=function(){return Vv(n,t())},Ch.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=ed(Xv()).domain([1,10]);return n.copy=function(){return Vv(n,t()).base(n.base())},Ch.apply(n,arguments)},t.scaleSequentialPow=Gv,t.scaleSequentialQuantile=function t(){var e=[],r=Bh;function o(t){if(!isNaN(t=+t))return r((i(e,t)-1)/(e.length-1))}return o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var r,i=0,a=t.length;i0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o0){for(var e,r=0,i=t[n[0]],o=i.length;r0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a0)throw new Error("cycle");return o}return e.id=function(n){return arguments.length?(t=$l(n),e):t},e.parentId=function(t){return arguments.length?(n=$l(t),e):n},e},t.style=ft,t.sum=function(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i=0;--i)u.push(e=n.children[i]=new dh(r[i],i)),e.parent=n;return(a.parent=new dh(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore(function(t){t.xs.x&&(s=t),t.depth>l.depth&&(l=t)});var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),v=e/(l.depth||1);i.eachBefore(function(t){t.x=(t.x+d)*p,t.y=t.depth*v})}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=sh(u),o=fh(o),u&&o;)c=fh(c),(a=sh(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(lh(hh(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!sh(a)&&(a.t=u,a.m+=l-s),o&&!fh(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=yh,n=!1,e=1,r=1,i=[0],o=Wl,a=Wl,u=Wl,c=Wl,f=Wl;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(nh),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}for(var l=f[n],h=r/2+l,d=n+1,p=e-1;d>>1;f[v]c-o){var _=(i*y+a*g)/r;t(n,d,g,i,o,_,c),t(d,e,y,_,o,a,c)}else{var b=(o*y+c*g)/r;t(n,d,g,i,o,a,b),t(d,e,y,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=eh,t.treemapResquarify=_h,t.treemapSlice=ph,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?ph:eh)(t,n,e,r,i)},t.treemapSquarify=yh,t.tsv=sa,t.tsvFormat=Ko,t.tsvFormatBody=Jo,t.tsvFormatRow=na,t.tsvFormatRows=ta,t.tsvFormatValue=ea,t.tsvParse=Zo,t.tsvParseRows=Qo,t.utcDay=Wd,t.utcDays=Zd,t.utcFriday=rp,t.utcFridays=sp,t.utcHour=Gd,t.utcHours=$d,t.utcMillisecond=pd,t.utcMilliseconds=vd,t.utcMinute=Xd,t.utcMinutes=Vd,t.utcMonday=Jd,t.utcMondays=ap,t.utcMonth=hp,t.utcMonths=dp,t.utcSaturday=ip,t.utcSaturdays=lp,t.utcSecond=_d,t.utcSeconds=bd,t.utcSunday=Kd,t.utcSundays=op,t.utcThursday=ep,t.utcThursdays=fp,t.utcTuesday=tp,t.utcTuesdays=up,t.utcWednesday=np,t.utcWednesdays=cp,t.utcWeek=Kd,t.utcWeeks=op,t.utcYear=pp,t.utcYears=vp,t.values=function(t){var n=[];for(var e in t)n.push(t[e]);return n},t.variance=c,t.version="5.16.0",t.voronoi=function(){var t=sb,n=lb,e=null;function r(r){return new Vb(r.map(function(e,i){var o=[Math.round(t(e,i,r)/Ib)*Ib,Math.round(n(e,i,r)/Ib)*Ib];return o.index=i,o.data=e,o}),e)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(n){return arguments.length?(t="function"==typeof n?n:fb(+n),r):t},r.y=function(t){return arguments.length?(n="function"==typeof t?t:fb(+t),r):n},r.extent=function(t){return arguments.length?(e=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):e&&[[e[0][0],e[0][1]],[e[1][0],e[1][1]]]},r.size=function(t){return arguments.length?(e=null==t?null:[[0,0],[+t[0],+t[1]]],r):e&&[e[1][0]-e[0][0],e[1][1]-e[0][1]]},r},t.window=ct,t.xml=da,t.zip=function(){return k(arguments)},t.zoom=function(){var n,e,r=tm,i=nm,o=om,a=rm,u=im,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=Ie,h=I("start","zoom","end"),d=500,p=150,v=0;function g(t){t.property("__zoom",em).on("wheel.zoom",M).on("mousedown.zoom",N).on("dblclick.zoom",T).filter(u).on("touchstart.zoom",A).on("touchmove.zoom",S).on("touchend.zoom touchcancel.zoom",k).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new Wb(n,t.x,t.y)}function _(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Wb(t.k,r,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function m(t,n,e){t.on("start.zoom",function(){x(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).end()}).tween("zoom",function(){var t=this,r=arguments,o=x(t,r),a=i.apply(t,r),u=null==e?b(a):"function"==typeof e?e.apply(t,r):e,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,s="function"==typeof n?n.apply(t,r):n,h=l(f.invert(u).concat(c/f.k),s.invert(u).concat(c/s.k));return function(t){if(1===t)t=s;else{var n=h(t),e=c/n[2];t=new Wb(e,u[0]-n[0]*e,u[1]-n[1]*e)}o.zoom(null,t)}})}function x(t,n,e){return!e&&t.__zooming||new w(t,n)}function w(t,n){this.that=t,this.args=n,this.active=0,this.extent=i.apply(t,n),this.taps=0}function M(){if(r.apply(this,arguments)){var t=x(this,arguments),n=this.__zoom,e=Math.max(c[0],Math.min(c[1],n.k*Math.pow(2,a.apply(this,arguments)))),i=Bt(this);if(t.wheel)t.mouse[0][0]===i[0]&&t.mouse[0][1]===i[1]||(t.mouse[1]=n.invert(t.mouse[0]=i)),clearTimeout(t.wheel);else{if(n.k===e)return;t.mouse=[i,n.invert(i)],Pr(this),t.start()}Jb(),t.wheel=setTimeout(function(){t.wheel=null,t.end()},p),t.zoom("mouse",o(_(y(n,e),t.mouse[0],t.mouse[1]),t.extent,f))}}function N(){if(!e&&r.apply(this,arguments)){var n=x(this,arguments,!0),i=Rt(t.event.view).on("mousemove.zoom",function(){if(Jb(),!n.moved){var e=t.event.clientX-u,r=t.event.clientY-c;n.moved=e*e+r*r>v}n.zoom("mouse",o(_(n.that.__zoom,n.mouse[0]=Bt(n.that),n.mouse[1]),n.extent,f))},!0).on("mouseup.zoom",function(){i.on("mousemove.zoom mouseup.zoom",null),jt(t.event.view,n.moved),Jb(),n.end()},!0),a=Bt(this),u=t.event.clientX,c=t.event.clientY;Ht(t.event.view),Kb(),n.mouse=[a,this.__zoom.invert(a)],Pr(this),n.start()}}function T(){if(r.apply(this,arguments)){var n=this.__zoom,e=Bt(this),a=n.invert(e),u=n.k*(t.event.shiftKey?.5:2),c=o(_(y(n,u),e,a),i.apply(this,arguments),f);Jb(),s>0?Rt(this).transition().duration(s).call(m,c,e):Rt(this).call(g.transform,c)}}function A(){if(r.apply(this,arguments)){var e,i,o,a,u=t.event.touches,c=u.length,f=x(this,arguments,t.event.changedTouches.length===c);for(Kb(),i=0;ipM)i&p#DucSUoXRw+O z5!;X%NI-n!0|m621QkSrSU^yD38=_JBBG+AQniW-f*^_@$`ogKRR4bTM$?; zY}WJXX4cbyPeX5muGgzh4{~sHt=ma~HC0P98~E!EV*SzeUKQUJk8B)*tpOI_C!WZ? zdbh6)GvS7#qxIIE)wbSe^y!JSf#I$fpbZ7VG?19C?Q6XXOAJE8n8T6Q^RV%-)*B1> zTz~Z79Hw>^bVn-Kp3Zaij%v^SfoI>`-8_D75IGDlyMh=rwj%3_D+e9*>3OGX1Z0B=$Oa?i2JVc$8h_bi z!xfZQL6_0s=ZAk{!MpBvj~v3;YJ2ppwua@)y40E}#G+_k5O3y0?p4tSZ#|q?FjY^0 zC8Ail@e>9VHK8&P-3+y2NKKuxzI9WvPL8l->MpZ7o&@Em1FFgzjew--bp9xPiZk>2^cp{et zB4ULxNy?`SV~**{dU4UTL@LW;8?RNf&M^k`x!&F4o*k|ZR|oxk{(TVg`N|;X^Ho8_ z=d11dHQ1-s;XedrK98~Tf3)kVphU@Z;P^b&+P>C4|0$?a@;ZC^dV9LY%GU-7<;U6e zx}e7O8-fa-$6K8@26e7aFvxGR9{<@sb9=hXKA&g!EI0Uv*!2o4Uuh+WTK&W9^Kkn- z!ak3*&*$6c3k?1X?Ru4czQ{gbY@dH+pGVo}OYHNd!5~=ubuh%|%dF((!9cjW{MuK) z_H}FD4Hie(Mx|wX%zqEo^Bs{uEq6MDRMy+RVz=89Tnmd$UMtsVH5?mfPQLw0yU`fZ!lB8 zaVb(oSLFt5OD>N4T@*&;I7t34{Q)&%D9;JPp-Kd>(pae;2LBL7BQY?;(A5ADRsxqq z)oR&|#RIY1vv0r!pkIxGI0&AdrhS#5w5S{m1i=73M5!Bz;=wT&2Bi`m24#jKDnzd0 zD!YR?G;`t8rUaTvJ{m%ZdIui1+XfJ zUJwQ$9fP+9-#~Was7B|oL~JcZjWBKmLscX>a3_av508PW)M-S)i^6JkC@n*)_yuuk zbia{GH5hTxQwD>Okw9!Q;3?5xxxZql(2YLA-JW(d-Bd~y#LfkaD^IJ`9B9X-GJg>x zi{eskFwz*yU=+CBT0t;et5t%^QbrKP)vy#!@VtaHx$uynza9X)6jWhnsS=Hs1sx&- zKtMtWNlnB90|X7BW(n-VxD2d=!?02*C8bJ9(pOdQm3U>1|DQ1`X+V=)xqqk{*D5@g zwjc=nNrVnB=a3KfJ%>_YQ7&ZFWbsrK_3L=z` za{dN_QWTcTL(#D?1o8xKu&+84mCAvrBYIS$IB39+$o2mne1?T6O;ABX%Ta$V02o~& zg^Z*w-Hrlryo7w98n27{`k)d|>ZMv3qkfR4UdJ%FxJmah3=g6|0|_VseWMc?L8mE! zg<&Ct3_?tCEQ8X}*kEX7l+i|24cR1yPqeud)(~W<&+uQn8xNqrMUiLv8O)_2f~p!7=iO~T&V=*-6Sn>C4uyP zh$I>t9v7BsmC|6PQma+VSx_lgpq7g^R1s9>k2*AoN6>tU*p@h`~jRP`z@wI`@ImV8VML`1c`4wLX!%uMf>CBR~j3 zsa#5!0&O}f$EPx*^hw2dhK7axL0HGAB8|`)sl_J511?!Ob11=4~v~Z+^xc+0UjF!bv8I~fyLqYVs z-MFhj;!1zi?@ImkexwJA)a!Lu;{PV(0>_|K{xj4BVV8ZXNx#db@Xz2nvpSP8RxkY9 za;e#AR?CSim)BKf*QkU|LmE*N3|8+C1E$%C5_nKcBXk}@c=a9H z7abaxhT22S>iVoEL$MnI=LAg%`L0#cKK*f3QknjWB1ls`>`(Tnx;?7Z>S1NB_9$1Y zLD*O2zfd1leMHs1K3}H0z{+Y|^p)aD6;-a5AY0rI!4VvAmKTD(*h`EG`{PCYh0*h2 zANHGvasQt>_gp!3=-?6ma%AOCnQ$8k?5>n%VIp>xO67W7b^ZNiW@&tlU|nF>cQN*XaXy_vV@jwwfX)P?0Eo(? zxTZ2|vYFTq^umDRlL)AU5Hx6lYv57lsy#(GR0gq? zQbi`cFiQ3hqQCr;YWULHUn3Z=bm7yURxed{19O~Kkd^%cRft_`fUM>}X%D6oHv&no zM{BBs2QuFz2|giaBlvp}2wy@%jEpliRqKBa0)z3OY!Q|ys*S+FAgUvM{mfiwZt%uP zLyn_(=_FJ{kzkxgBb)XoxHlM6N<|_(S2&lH!l81Nsn|(VRSz#vP8r@dq~{M0KwAIS z@F{N&PeIK!Z?OK*Z02x8v4c!Ej4i~@7~nWgC#up8B)1HyH3@TzO8Y;^VNYUo$UpIq zBuVX)VfUXz5D9IDD<0Q!V~Q`6`) zr%@SbxYVU+UJ`7D-#^p7+l#IwaQ6`6~?{&v5I*u83Xkh@o}4)%7hSsfhh{$X`+`XYDC z>foy*?jKhNUmkH&tAkAqH@!O8G31V29XvkdUb{MYY{>o7>frZ7?scn!M~B?&R|k&_ zxizbU-wnC7tAmG!+;OXe-wwHTtApPRxi_p19vX7TuMU1aFmlewM;kvK`j4SohHe`AUHa|x_Vn@cZT!21f7hi~rk_baonDZB zJl&d}m7bBlGkt4%O8U$4j=^7+ALHM{gZB>pbnu6R4^I4Y;>Q!;pZMm)EfZHye175+ z6I&+UH}STKQzm{l{;TnO$L}8h_wnzH-#&iZ_|4;A9=~q<3*%Rhe{TH3@$<&d8UN7u z2gcts{`T=x$4?&rUF(6?J*}Tq9~$ug{=Icq>(16UTH9M+X?>yfnbs#;n_FkM-q-ql zd=md2ZT>#~E&qPSzh5-}qxpm8cbYdeuWw%2ysWvU`S#|<=3`?Ik9~9O=CSL>K0o&9 zv8`kOI`)CFcaNPmHaqt4==VmyGkVMDmq$Oi_=|mKSHHH~S4Y1;`jbW9Uv&H8uP=UZ z^nuaKM=u<`ck#~`|90_1i|=0ilf}Oo{?+iO-LpR#AAI1JkxvXCaL8GM_qxaHEBD`b zbNER8MG;xE;CvKj&Y2r(@OX3?RzCv*4a}%2;Hcp&8ani(n?$_h@xd+G38$9Aa!mp2i zZT#(}?c?VTK3=_bd|UYC_^aa|AAGF(neYWSjDLxGpCAA1_~qm0j=z8WjPdu4ZyP^t z{LSN=22UB^G`?~0r18gFkF|c^dbIUO>yzUTw|?6?d2n`oN9#AOhg$Ef{kZj`)(=~E z*1p!d&)v$uTUs}_Zle79)^)9GTi3L%Ze7*7vUNr4^R3UdKHIvyby@4u)+McrTmRPj zbnBwlr&<@bwzV#3o!|OI>%7*vt&g`p*7|7coYvOXhgxR=?abC0t=k4(bnC!nkG&2tAn*Zj%&XPcKd zKhwOlc}er)=D#&R-Mpyzspf^vZOuXEx7hzQ6f_=KGrOX}-I8dh=b)cQ)VJd~@^E<|)lh&6Ara zHD{YU#vUE}?bt(OzaD#V?18agjom+X-`Fq5?j74YaL?E;#(qBbY z!Pxi5zBhK~*muXS8M|`qb7P+!yL{}jvCoWMI(Es}#bf_AcG1|U#x5M&HujydZ;jnP z_Vuyb#=bVTeeBk;ua4a^cGK96V_zA&VeHFe=Z>8dzh~gO>Xxz1V?PQ%GWL#vYpPdQ zKRmWIzN&g<^_QdfxqC-{&gaiY9~`)O^rq1>syB|_TE1=cs?keFFCP8m=mooN+wIKJ zGe+M&`nJ)xjGi`nVRc(|jF1mM- zT3$VJ&!Q_vezEBDBR^mCokd?>^rc1DFS>5gg^PYWa_`9ZM(!B-`N&U3{$u2>k?rAk zN4`CBRpt7TFN|C>a^=WZlCLCJS1um8t@Oo_OX4$z-!uI6#`eZ7jT;+ZZd~8^LgVVj zm5t9gKHIpgacSe?#zXZphu=GVU;UKfO~WS-pENu>e1CmM)(v!av3lf!oppFaGq z;dc(dWB6^uZykOMuudC(^YE#|Cx^eR|FV8z<*xEw<=;2%Ds$hsr*UCLH5;6PXC>iY!4rCj}V7@ zqO$8s*HQ1<(zT`c_v$@S*`>o51NBqG+xR?x_&h$(9sW3}?>dlR}HcsdJw8q;S@8bI%jrt?E?SI3> z`Tb#K#!Y6yA^kxX{@nq)m9pUr&ra`q6a~mDs;bUEX-WmNz?u~2qbwOX0P$k^g^<`le@5`dmC2BF+E`yfgL1T4ffT|s*&Kw|{ zN#?o@of?LTTI3^B9Ug-)m@zvu(~Q=OPj7?j5z()EY=CdS9VoyS+s(|jZ=138OUw5EhK^$+Q1q+wRx z*NtkxX~zL9%os}Q2R3Si80k21#2$XiXli><{wO&gjpCZ&red8=x%Y zg45wzT|tN`dpbzFEP6haDVm3{J79ES?$#Va|E2s)!(ZIuDvJP_znx+6k6~rORL6Rm zgWZ#b{zym|(Ig&rq5cY45k!hTL{;S96GNPjtz?u=+a5zrxd|h(D?)XJ5h>kO(B@18YSEQVlfFM7oe6L}i-QGB zh5Ivw-9Z1)g>@a|*4q=|f{Y`XQi=eXNRSOg2#WwG`RWsX{!3;8B%)=(e$qvt(k`ze zKWITSf2#W5v7>SXH^2?^*~br_%G2ZX>Y5IHI*i-wT~D==cumKxL;B);c6QK8+?r0j zE+0JJ5X$1U(+Fj_4ot#)(bVyn*R}chRMG*3ao`k2q#e3R{a09xPR!_lTd~n$NiZ%I z8yzNDgN$T5Ms1{dkdFZ2WWB8H?gfj`kH1Altl~bK0D_&Jv@0o3;mft3G&mcOliA|kWzIt zNi#$~TNT&RZ#x(;b0lUk%C|q*CzwAi$pD7=ckh4$>48m=LQUEwvA+5O+5bG8N}o-E zhbaRLtUHr-46@wCjG-yBOS2WSyy@P8ae8%X_aNDaF@ptTP2b{73?;+6L+LQD>M|IL zp_k3xsAXGLD|s4?ifTx~Y&cg>bfFq3B*_wLG2(RofYlMmeY4hv1mFWDg5+ZbZK&yX z58R|zi*&hM1rT70$$~wiYWl^R*AvZ=qlv^u+??!ii*%%&Nb?sL3tDB-P*WlnCYpY` zk8&qUz+>R<7on*6(?sX(H}$ncedg!P4Gf`@*{alGc%!( zUlMsj9w#3rp5(^m;i0P8c3xwwym#Anh$9pJUO{kRAbN*WAV?cLhAes^b1rTSP7(W4 z5{UKacYaN9nBg7glT)1%cEW>zO43gA9#9765fP&5O%PXoQV{Q36tg>~w6LJiQd(qB z$IUpXZMLt=eA({%y50TNl6~D0f3@enZcl%;bYHjBU+uH6+s9w+zpvZhUmdisJBWcz zPTRmH;cr%A@=rAN#f)$P_80|EfLH{;-3t;g?eSrAM1&4_K3OoY2=XoYhf>4Y$5R6(h1(=rWZ<4BZxI`DXKU^_x z^r<*kN#9f+r1yp9wHiRlx&`+iK;qAm%HPc=Q`n9u}Jsf@p!ol@5A1GG4g0`fDnPJ5vij0=**9SVCaE#;joTtNn13~Ry!>0xs89c zU87Xm*NNxW0Y;flpmigvt92u4Euvt@AW9#aHMbPB{(&G&`em-PDoi49V$H~+vggrz zb7N~poBg=&t{MC4Nj`%^5ad_SFh`i`A$}*UX_vaRt}vrRX~ypyW9Pq~FRIC2zG!LA z7Zr$kz9>q;DChg4c&B)5^LAtaiz58%@IitFzG!tmOV~M>WQsO7x`bOX zhA7Ipta|4%)H7ofbAFd2<;=a1@kK~ox#Kh<+{*|UEb1v17t2{0wuLyL@;S{-SkdBP znVc+m73IOobucmV_8q@jXt=Dp4wM--dS5}m#R`A_g zv-7f;($&lzCM=~+Eyjod=>h@Lh(g@15aKf4MAHxg70Y9D-8F7$T4X{@M%z+MF8VB{ z(OpYYfOEY-K#Pco31|&?k~{A^OF_KEi7J|(+K~h_YLhC09qd)4OA}wnZ}KbwE!(oZ z4@*#3TMQK5RM*M`ZW0no*YZ@wvJ#k)!0ZO%3Jx+<(4iMu2&b$DBq=PNjAD2FF96mf zk6ELeA>?YI^@rkSETuL+%z${8j-Y$)JUWV)C>~KnCpw0T5EDassB}&39Jrt@w4Q~_ zf_~j`rdB0@y~{3y=a0|qUpBKJup>oIev!Y#$DQibvg-4*S{5C#wx6*A1%Cjw=#OOq zx?@wLYgjD>@Dz~>I;^xL8nzsWnJSLxmwK7VNY?OfJ{`gLnHBw|%(crJi<;T`3*Kvf zhf32>GQt(o>^apgBMSI}$iw5d;$7Qc>LM))6-Y-}S#wtOe3pj+NUN1PgM};m!@i1u z0GM%i;q+q(3>`yVA2Ev_u#jSv@}*N*d0wX`uQMx5=RH#Z4TR|ePsZTU>qoQ!o6jf^ zi1A4-vh zi4B0E1V9VB!0_oi3trfgQN*{h$e{*^(@QUMK_n_x+*?TJA4N~Rtn2yBg{(#pPOhCZ z2ZzC*hll6Y+2xmT?R^mWob;Q?;Wqs%=Py&i2@oN#tPw&eD_1Rx4yy;n2_Yd46nC1T zdkPs&EdTU#)CP{Cvq$l@O^XLNqmi+;2gQi1Q_}6p$192}-ODpfgGWl3AiWbbI01tiRvY5h*tS%OY zWKoemj1=vQ{eijpu~f{Dep=-Yy&_TDPo*rBv1#3@R8?6+DQ2Z8eusOR4@q2-RS)S8 zx~R+#$!fM1C1@kbEI-Nq0NPNs{edcwvrr*fU*Fu{az+$k)KB2rAF!cle}FoK=@@Yl zlC=j4$rcZ?x)$^J@~lE6)zplOeSsd=d0a3MIryIlysAUQM$t6B`ZR0!FLajFJN)B0 zH}}68a(zNK7whBQ+$RjV()oB+@iAZaIsEpG{O+zZj=@q)*{`b09M+JXmr#nSpfM=}K zXiK%l!Z0I~kl#h7gs z%xw%HbKS+5>n_Gbl=&M2Xv#Q6UGWTEPdxFp6$dHzHU&^}zwGx@w&8D^0?)=43jDOdODVP2!IQ3(ntd}VW!>g?1SF(8?+BpFFb#*r%dRO()o+-1Zxu6ioCZBU@jv-X!^hO6)aEj*^MjM?R@AQanGeM@%mX`@==Z!W4+mHosT+@-_$$yz=vEyAf(ad7| z6&jG>oyZ6*BO~P&+TdOfM!FBc$>oFc7Zg2aSU79Na*22>GA9G$gJqbbxaSOTr9FLQ z#A-v;Vm;QKcWuJ$?T`M?stlO;O*BlxoUYLGe??c=%bXv$D9!0gsjDlvP`m0%p{zab z`Moq)1!329ND0(Ah5_~E1sR1CR`x|q|Eac-){E*hnX}B?9<%wYJ-Q${jvXh)&T56l8e~B_LS4s- z!MJwhZ3)b<-K_Llj3|%!*1cL;75cTUB?>~tj*6&0GaypK#I|N$!|CLifnRWlsM>qW z!)Z<&27y*hOWYDXU+q1}0cJ!&vciS{!nS?La>lm9masnrle6@9jEEbibtWy`Bw(_k z2o}CPy&uwLnM)33gCeiUDFVMGSd_fNT9)e>`Q_F?nC6c$bK{{*3`$C)Jf0qi1O8b0 zRQ=xM%K?DvnwADwjp$Ys7ykL4Z57EPs8k*|EK=V|rJw>VlGxtjR~$ zc47q;Grf`eXc73Lug*fxlh zrD&VqQ)j0fDpOn2HD3}2hkKj;N<9-k^?U1o0LAYwK+%LI1cO!SBjw~>+LF&u0ypU< z;kUB#Knsfk##kL0A_Z!g*DYU9W(T4$dFTl=@>{v6lBDoBD6!+QN8dQLCZ9!2P7tud z^ms$oO^fsUkj@}uBYaRkMAnizy-S0y4U+@7ER7_ElzPU679DtuBi|IMtb?-Lw!n4Y#f?4QUFrdJ% zgZ_{h-ZL^^3~TD(WrV+zhOT~CY$lsEOn$rA)o0@Mkdtk`Lv609wEO6yOrnlkXD$aP zne>z~QjJw)enW8VRHy!oDD8}7d}Wlo)mHLT%|^&b+JiQrcAfBf zpFE&aR?i00uY~O+583rAc0MY9}L7SM-(0>eV`m%mc8%q38-L6CJAxc_|(FK}%Lhf97uuDir zHAhH4lK)TA%wv$&Q*{lh-$vR_{m7MCm1@u-_d`8O>;s`ZRg9nu=rF+DP)}kSNRL~Q z2T)~bMe7hQkgk>7r7PDepbpyxvc^J**qP5gQJUkc(Tgn>Q zfV!wZDZS=5E~E+3>CwlE>T@#fSy4x(W4U09cn(HAO&{HI*78F?b;a2aeCwZ|`)Y3r zunVK6Bk0R^83B^n9aJ#_&%QneVsyg5cvf_U z@Q+}{F1?r{_PFEad%mKSy`l_s$A~0&K`47JmGeKkcLUYyst|`r&I z%zf6yyy6`6y%p*8>BC>fFLXPd8y{PTKSNd=18TQ z_tMhUKr1^-E@y@O3R_09+yYantj=ECn<2@-H19W^Y{ zQTaZsm7dbD(@%~7oto{u%Icn2i`Z1oiIXzIXiZCLS&Gqw08o@B-J3wxj*x6D7_pR; z4W-9w*avl#ZkLf5{HpF!Q@e3~v8nh3^H-U!{n*L#5I80H?@tB+*LjHSMESq0A<;?@ zcUhhq=%I>&lTW-zjTbCZEi5^2ksA9&s*3$0m6*a#i`1yw1=C=63^2;jHXK=!v7q2Y zfnTWy={2}jHh%FgeNWg47$vB)h9m;+gNJ>ASjV}P^np5u6}<>^3?PJZ>$Bj>W!Y)x zDww}RnN9hl*L`${G8&c#_ILlmEcHJ8g|i?cEF4AAzE*8M)hOc-~;-T1saLeK>>CC5xvZpx&5L; zDdD()3RfxcW{(fuFWO&}AXZXBCDI37r>u>U^vgA1TNNrV?NwevWyM*QFy$-5N(=V{ z>5ExzbX#P-7EEyk_)*_N$O}H37JScdl=d1`Y2>@97L6p?#4FO@XziYHh?BszmfZUC z14u7UO?&3iDip1-4x(Q%NGOtCly=JLSz4MvX^B%gxqYF6fZ>xUh?jcPi+O4RSFVe^ z$aS?sqeM%(a`;E9hlx6^=Bo($K*@X!@k--?_q0T6V;Lb`C21j=dA%(<6OdAvbUTNj zrtApOQnTkd&&bw|CLQQvnnMWt`}fHM^Rt5+s>|}Bn~4Dn4cLv{tl0E6PSURQ(}iO0 znqsGO_lE!8M9XC}r>rN69I8&tuEPZ{w@wKV zoy!)%G2SE+yE{g6h)#=G#V+p!q1zVngi{x+-!D3W4(+4^W;=5}_mT57%o5HBMB5~O-04x4$lwFWR-|Jw>CZH;fj-WNHmtB7{1?5F-4V3M z%ZE$$4jk#hr&_A2&WP(e{fOeU`RQC;#5pEk_F)u_61bauG7igZoOLae=-~sqpo`3y z*ei-j=km1_L=WfEgsZlvkBgw77UZ1g>uA?SGA=fd11AT7N_cVxN8XJd0Z^csPvMM$ z^L%J}$3U8+AV)~buBybx>5n?LMXw?v$5GC(gshFJZ24S^N%ZF7*B0X(5pJ7 zbJ)b}yVz;J2_NfFpWI2LgYN%rpu>4`tTM(67$blmvJFL5Dso-4S1iN@at^c70<;R8 zx?Lfv>IXNmjce$=MMH(jwTlGKo4Uu>qcT|1p&<|qc|}%<^=uCc8nQiTbmBmTs*~$3 zDRiPHu3{EW7Xav55io5RVs#qnC7HO2k7bTl@8Q15rtdq zHFECrudq$?W!ei7m7iFizh7cl^W_=+&!R&Y%JT(&YsDXLB-}4guutNXD$0&Tq!-Jn zbZiB|u>}vcvmCfd!x1+|DuYqqj-Sjc0|cU)ey!FiK_FBKsDh*&F2O>eBrP}|RuQtO zOVL!jJL#5E4n4VH>yw=(mH>?M^R?v0!KgapHdNR5oUV3%p;qCQow^(}a;3U1T2?=| zQ(kMc*_E9{56J^f&h69`{j8WP#!f7FSGr9i@1GsPNX$`N!9p@vxrUtF;=x)qEg#ao zFG8naw^id$Z>}IbyIWSkQWmWh@x@k6j}cjL4ikb7fOBX-b%HF| z+AY};t%S(Ip=N+TqKV@y7U>Zq5E?XCYuHp)wuIe$pStfHLew!$TLi?7tR_UN&R8s7 z*`M`q>Cl_{?>{>uJAzP(+*MWA%@IDViDT{2>elY!es#M)!NGU=Nwc%>ibWA!Uh@&V zWUp|?)e9W`nK|khVsk`T_(X(ce2*8+v;O5DdP8v9K|kJa!`8VgN?-oq!`D9bpFS3D zoxAcQw&ozR!?^TcY;L{x^@g~)V=I!QS1$VP!CN~6IAY6x@V5^q7asN8t;VUM;#~*p zuDIEL_15JtvA=H|ym{-Et;-)j`5CVUz|~tfcltJ8xlEjU{l=@I{lFG!bGNt2=WV4- z{Dn(_9Z+NXFz*mmb~ZdKrAJT)?%c2HN+e8o8Oq9L@sxWaQyd!DKEbW%ptl|WA_0U7pET}e!KPILR6sUvw0y49_8U1=zVsUBwLp^)^T2b zHk(o(S9j8_Tc|NWy}>P8pcs8J^37ZM>=R7_BeqBkk?(uKA%`#7aO1&Sm%sYEUwQB0 zr``gQmvc1i6GyN6nl7LJ^mo1JB`*=_m+$!G>%RM$*M3)*(cb#|5to}ggY%iNwUg2_ zJ@hf2E(@#IY|e&3WhaJdPF$%O4I1nvU|ZKiR!#Wr(8x%o7CSj+Hy_RQ-x>1?)2?!MwtW&2r6tN&`- z@u9w?DeFhYrOdW`kEQFm4|PnbHMIoalrgMrS2wKB2xaL3@9PHCFg z`Ao|-Fq7mU6DJR6S@$8jQ*X%PH6{pK80VD)=#w5bJVT!M%%4E=ej{!Oaqm0ek;j** z4ALKP?0J2wUy)s9yppW={~#G;wf~lH|L9d~|8c+9Ja_BzUrpck#r(?8Uxh&I`TeJT zYU-s!l8yIXdDY@$zwnx?xqPna?H4Hpm#uRq{+i9_09VZD-+~>aGYtpZo>eYABt7I$YGwYY}oil55S62Q6CNBAK;z~1v8*pffwR;vX zd)BF0v~1|KO>77|<-~-bvPoOt)+eZJ>JB%)j#h;&}kFhzu-%gbO-4Wz#CnQdy+$ zqV`>&)2=VWmz9QiJ(PXj5rBsk3m3*>w6X^t44^l)ooZxmXK+sds=&s2R%bx%B2wJ; zb!q=HkSyif19`_90=b5(I_1`z@N>%RwynoI%hyb$UuQ-q#vl)kEGR-Poi5uw=LnCM zr~MJV9#>x~56WUQ5k^n{23B>dK&}>$t8CUUfED z$hZ>Zx|iXG4!mzn=6J5;ZoErV?chx{Eh;2C0Wd%m(;w(8-X2sBAQDRyTD7 zX9x)EJG-rKlMBP4C(ch{<%r6c-6W(R*w7&xB@-Z*jT&}vo;y}}M{QdV?BQ$?#c4Lo ztt$1YI8+PqZbJtc)|?xUt?>!RNqS1p$d7L^lr;bpWsCW2WRbvWaNwuG;qt3m#1?Ey zh263dRiHmrg!hGf1{*C3fh${Niu5l#_%vqxa9MaNQhYE5fDUyN+YJ_;8;k`Z1}-+~ z_*xnBrR|C*R0pEd8>kUr-f|L&IIx=Uuv5o+GZk(mR7@X}hmmQmtW={N9QrDoyegYh zHT<1D_LcXDi2Usl?Z0VR@ZxQ{BCNMZlx~t0<6?)}QD@F)a#CFlHqN!c8P7sR zH`yLnl3@|yOMEmuJ(ab`amjnMkD%olOFO+;CStB;DS}`T5@7#`JZvW6aIb(h3?K6U zAy_(TY1WDw!1Y*%WH};8BL&|5MuR&<{L;ZvUMuweAF-$@UMpmAkyudzHCI-SKJ0RQmtJ9rn;o1 zZ>kW}$gjUphdQ|U&?a3ZyZ2%a5!K;9Hx%U3U$A9PM+~>^#|7v<#pkrTH(8+yf9=B&fdS0Y>fCO5! zy~Y5MDQSTM#Nk@#LXZ;T(Wa`S3%vE_aEY$P84R@01Ufq~R8e4eL8*zSZA(}u>E5>7 zU?iblPb0t!t7~5{BWV*O!g4rg3Zw>Bg)v0xg?TS|UEn6&q{$-Dja-L2g;2UuZ-P>j zNdAZqf+Axd_K`Fy-0FC-l)ZR^%)v}~^hHvuTHosQ3^wR2J!?2o88B~_zA%(|cYf8mAV?2U*Dr`(9E5PX^751g$*Z+f+f6NnbTSy084IPb zIc8}(C88a4hQwh-N*3MKaN0oJD+rk?0^K3C-tJ_PrUadxs-SHkm+p<=MCbqq6aWGEaX|q+6ka{-ir%si zgfhcxT(LK*j<|_Gk`0U#$1Adcr{`QHo>swvh*UAdud` zc6Zd#mLALxvJz7WpS=grA=J>=^*IAkU?d_Jb^Q)T52WpPNp~%Cnid|mL?``FDZQrF ziPEc;P#dLJ@dYlC?Su6&S2Deu6vk4-QHdmD?4n19;ALIIq5XZDH(f9y2V$Kdy%MMj z^z?SBztG(q3eqno`RKZQ^bJX3Ktbt~gUJZsMaU&?68q&N=6*Xgp27h58HRxe>2t8C zGg)l2jM$MrCrR#hVaX zXwssz%2t2|X24u0@}355HGxot41DVf>m{j^067J`+344M07|Ui6D>4&C4WG_)(`BU zL|DON+q2XzI-Qs^p_zhi1UsVw&^3Eu76d!Qt%~f_n!UN!?6>;&ypP%?ni*iA=n@FB zdV=6_HV72)E()Q{6rq8DGXiV_p@Wborj6AOvf+0qU`YTu?J#PTEEg-7=JNmm>_M=F zP9jO(MkEs?5gG_tYuxAWw95eo+7b}|w6i5gLdvX)243eH1KaJwf)SgRb9R&Vmr$PV zyqF`#-p433dqC=T6urncfH@dB*jFv#?7$$(1Ra$k8bo zQ6kT6y+c7qX2b=uho>@jHOiSh<~&3kLSuXPGSZBu?1tO|#`Gxmn8K%D;dR4OXP16Y zq;XT8vxb7wh&q7eXG_827Z>~nvXEY$2-dPf7cLFRSvOGHLAWXkYBvI9@X+^gX zA2cMkIJRp$<~;#K=l04PTo>fdoka}DO)_*kSSh0TWLa5irWa;C%58hp8tNmxCt$pI4vhJu?M8HbCXVjhZ$p7MKyEDCl`7kbL7g znBAc<@k4lP!b-|uLOHhYp@RBh!xb@;Vj@2B<^IAf2t>x#jvhRmTZuSxK?dUw~`T{k!9UUti==CwCSZY*+^{QT=> zR_`Wd&Yr~0lBXn?ryHL+4$ZqRp;>;q$&sF%>4-364BHO%wv9U85GfzorrUxV)LSZx zy$?Sl$ci5;0OF=-D88WVDHg!FtTL_JRUC@Z{8H3{nC$7;Dw-lR+8^kw!UD_+{7juD+BcO<0uM3)1|XVRQ7H zI8boBp%SzLd($t96J`(`v=u zElNF7@1Rjva%OAEE4v2<{ibI6Z(1>i=?6$VP!HH$cEHWw%N&#IvKay{TCG~DLVnsU zeKLn^$ZOaA7VN1w2}g2}6e+chnA|DB67m2uyX>#~I@ooyGSX8!Kvl)jBSi>fmu zgn>{5-jy)bk@)jfMkpi$WDD7PQOo^kg|d(eD-W^f?diEK?Ih<-YB|OoaQFp^1v3#~ zr3u@T=UioZ+V0Ev3fjC5%;pk3*F)=Euj(Nrv6U{>hcuJ8GP%D2K{B`1mb$9Zw>48j zaEEA=3aM?opV;Fvoq-{puap%PqG477PaQ}sy2LLvxV&kFE5ociK*n7RnxU>#Q$JKc zgJahU5I7>D6)2Kjm;-Ry4}t=}wnhTv*cttv2o!) ze_W(MU?u^8Y@14=*JsKs@<7h$*<4eh!w2H$>tSI0+2iz-P%gSSoNko+6sDJv!-#+2 zC&cuC;&H%}{k^$LFGgN{h5Uw_3XM}2%89$KX1(Rt2macS=`R2EXi0jD6VAHcectub zdDnZ+yWXd`-YXbo(Jv=4NH0mvmrw7*OPCubBta}-6%}~59A9@7=Q)L(Jkh1LvO)!+ zLi#Sf^41(pRxB`rl|N(=VwfOxYW$hBNCF`h2tX^NA_>4UyBa~Cl7SH;j9r*~UyE-< zC*8MW^ZQae{l64b0&r4yS^t}d$Yx|n9qfVpvRDyCt6(luOBQU2m9LsB=jGp;B#8u= zAl$X%zR6cHR+pYqSKG8*>Xj>LiB;Ra?n4MXQ>JghuHV5{g^R0uWkK+o*5-~otNSE> zrGTCfVc6Q5ojoD>%kX?A&-Btdzh7ZHGf z*f=11JvAt-W_GsY0J8P4URsT6(q}qRVEY7}V7IH+>kzvImibKCnLun%UWq7C#$$^| zHS3e<0XO(=<(Pq#%sJQ|>lrer5kPShkE&nVFwnWN4fui8H88|qujl6dGsk3A|NAL< zi4&xXUc+3Cuxx{iG&q8-=@vgO?wKxi07c^};KP&dpfoozJO%|h(R3y{q8gs;WnNyu z>JGq4bnBtYxl^W5hNL0$PBP1XH2pkA4=6P_iq0EOxYI@fYA+asL>LY!#ZUavRH`U( z8|O$faKj?=4SUw(orc$GY#}FNXe+xr8eJ##x0{#0jD*5OGIsZn#qBC0rc=dc0sVh{G&kNWfW-H zmG?Fbc^DdW`{ic>Ue@blm5$P-(yJ0t{q%c!$#CUJsH}yJ2+Y2#oHp>sixin=ZK-!c zFG@^o-;9TMzH>N=*ewXS390nb8W9mB!Utw~uc)c09F<;+x%_dNWNWpNJtK>mMc$v` zr$U2tagbcbPrQ=M2TRG_tJr>~cI??=@9thbyd%&SG6^Hq1&>eCv@}Z!NN|+70GZP7 zvdXzQ@)h>eO@*U&n4~1##~j4US3F6Jy+RcAVrvq zgBUI#k~6y3@}nMY*RBDI9Cab7BOsQk=AZrU;4JvK;%7Xj>m3!DcAwu=VcQE}yx8Zi z?^<#aP`Xc`o9dH4#19ZCd7$X33vPYJVxpLq1I0ajUFS0sAo@9HF*vQ|!Pdh0ZO_Qa zPLTwm;u2?*pjM0kQZKK(Vr1{9e|*aoo40_-yxVS_YeY-Kch;u`&1-J6b218RnPu`! zFO@=6v|_!X!UD^08QSy`B(w5^G#@hu5sv4@^kOB3&A)_)ym67sCRBEzNSE|?#Od-r zRn?r8zPCnzLK3IYAd5<7gg{S-UNRL#0%#$ATsIn;sE2Z$cw0%3tS+1pg=W(iYw<`+ zO~7+{z<4HBw$S}-;cB=G za%%K$Rgei47f6=PyeR8tikLmIC8&}P{A1~_k~((;FD)`N{GH!Wj|vzsW(tDGPtfY9 zom$BTktI|s%$852dlFf+Dx06FbJT*nU9y2<+mKn%k)`ky9V-I}GGh!* z;cG!=6xB$)X~)aNIWDvzf=JBon<{buvYO=<@k}WU+Fs0}jm#wg+=#{Z%}6N_vsG-f z0HCOrg)fC>wU^@m)?d`>ROAdRs8MOb6QenK4R}Hdt5D{8`B%)@N$-Xe0jOfv9|9EM zYEPOrbPVwD#g68c65TW*VM5>FHrHv$D_k~Yp_D@DNCmoZ4J_Y;`{2`&Dn4llNEP`J zz+D9xzFw9riWt z1zA`^WQiwA=J$E%LCGX^1M)Qzd7>_I)s3qpC1jh>-NC2o>a;4IuZA>qdrTL zsm)UO;=Il_dSs+sa-&k=snX`5KIhv)J_Z-Vae5z0r(V&yXNs3%RC+mux-J4cC88Xsy! z^%ZRJbkmy@-^Bm1cxz^n$`Y1KfuKvGaImo29Lddpd~;p@WcKhfS-W+X0&#N8) zSn2`7Eqqm#6+OZiI8Y0#KC|q8<$9j@p`R$ zhNRL#`ty}EG%E2nXT?TkKY+>r_3Kb9#d|mToqqTs6PR|sEdC#619oFQ={48PH3Nwq zW?eOv*AFYa92_8R&>`RoIY4>x66xg9pfh%xf^FcDkAZ9_KxBr!m{ z31ipd!yMPW`I6nNVpqb+qxPXY>E-0qHf$CeZNs&s2Mo!!PK+8-EsLhNVN^By#HSXU z2ws;IU$wLLdA5SFym2Zo9kw<(o&$eQZwn(lO!&fRn?=WZ9pb=q9@u7(q#`E7zD|b( z7y?~(@3ycmC~wV5n~5<)V9THK(WcTzI;G`{U;5Jze=54|plt5)RjuS;=;t{HvD3Zj zAIJE`o{onq^a7m;W}IxXAZUoE^vv+c^n9^FyJPYnxmxahG`zl(LR!U>dJa2J)61XC z)%L&DX7NXU_uEUziy8hYa;1XwXUdA=QdnFps}U0QOr8P^kISTw`y%JmDB_jLp2pUl z9@+UjZCT)meqzoMP5!JWDF=1z$UWZVq5g_qL`W(APz_h@Z{UUaZ6~1=iz3p!jn^D* z=tQi{G%%g^QPzGl$5Y0(vH)u#?rg01+%Q~E)C-SUUIwCtT4=u`=*Av3P6cX-x(-sI z7*)#2J=;jkFX1HSHyzq&?(r-qBh6vVXRnEQjcpbk=??^Xy!CeNS;T^m!#ZJ$o`6X7 z!>3MAd%7J)lPaS|dJO`Z&$1`0Jfb5Mys*=G2@f=@&pMg-rv&Lc7A=cU?M{RbAH3=6 zVikA))tfzzS9ly{SN2r!_|W7BL*M>Jh%Lm10sk zWYURx3q;Zv=WYl+oZehPH8Xn=8+6*2 zNLx)afQr6{Ym(wHu}eQvAtu~qiWjXt6%hUlNx-~*jp^vYjqFBi9+nYIZ!e*py^j9x z|EdBP+o()8#npjG%G11f_!m6DMv@DHT{k?JJW;Lfi+8Q~v2Z~OlS{Yp%Ltl-Z$NZR zU`@A}YWIcsxLK638=$F*8G;+-P1^fK^Xl3IgW}!E2l0@V6Eht(pl#bs|D>PTB2+_B z0ZSaXz;AmfGfF0skoQ+=9Vt&h@P$gnYEO%I%tP@LecsTZUneFQ>B23U6BQG?^vAgD z48$^AgZ#cbWYY8_o-k6*i9&u0>UgFm{|G?aQ(>b+OYTfD5mwcVo*G(?%e3*}C4|Ou zcSIJkK=v;o4KTo<=JKU0QPP0(@&4$b;t1K={Ncb_jJ6<$vofBN4}DE;K}ICyxwfTs49bp;Sfho>B~qjcaTKZm&ca( zqp4gs2tk;B1N|WgD3KBAd^HTDJR6Gq?mDrqUTa8Lcqj_`XTgf(>3lLy#4r8nVnV9F z=`$@PNuHmAL=GP6BLqmxHMMju`EvI2ys~Mw zJq1=GF_oo()?7Z264+2*fcN4XuOJ1o_LHdI9wnR2vC>hFm zbzSij9;lebq2<}+Avpu{Q(e{NK?Qx4KEAKp96APaNEZ3zT2VtYv_=Q!ZJzSnv^dH? zOyX9_zb8A&-@%P^T1Nz|l60GBYG_n@>^mU|FvbUVC{MTasUZLOcPZuApX9l%J_K0k z2td)FZi1)hsKikm#Icjk zi#y*;EoJkbp<3YL}JF(MBIAy`Nn8v+9N@d(L8WzvlP}kI8J#{$s}N1 zUO(2LOtWz*KYY(1gay`Dh=kp!j%@H4!7OSe&-3XB-LNdI>#&m6SIO+Ykffo<)hBHi zY1#OV{O%<>k({O}G<(vt?;_P3-SBXcM25V36Z zTJnR~5kzH%k!kTdF0?vOM5?H|M@p~K3n_UW^p@D8Lsq||xu0c;mefuFET7iwkzWtf zg}s7}arqc{3C#%2kp*7#5(W2CT+rIa}$a%j)l3Y7iPp>hbMCuN`#=s2DLA?`K7 zD}I10hm7!ns0uaG>zZK5S@h8MG3t^kz3b=rtVXDQt<=M!8LH4JPZPug*Q|UPd0BIv zNDF{UFv}KuOeO{fO9&tYG*@s9M)w<(K7Py|{G=IkL|{2Z5Rm!`WvY+#Z~`G3v}Ik^ zGzQL*tHPiSq|J6jyUsZ3f;D7>upyTivgT5`o6v~uuv$S7{X&N#45chxlkwv_12)1& zK@S@yC-saLc0B)yM{H0`@5|OH@fpC1hr(8xRM%LE`f5h>9MU5tA}FhdVVW>x{U!{G z|0op=2F>vensxbQV}=_Lz|ci-jeQRs^RFU@WxU z-sBTuv5_B@4LfvW6nL^1$|KjLB@89F3~us?UMp|!4ePyDo;~^nua(!vI)Nb- zn`t0cyz3kL)CHlpW9TJGUci{$q_8Speb3c$Xd^V02|=bjuUy3Ly`p<$0fYsqGj*>hCQ<)yRl9dNJj_Tx_K8?ocEDiUz29W;f=ftp)e_DhpaF(2(TY~fx z8n^i~``cupH7!_SU2VOoph=38J!DfGIczfr3~{T@iT^xpyx@uoNf( z4OYtO`{QPEV-%H%j9Fv^ZLiq0%jijDvX`og5^=j4VZ?Qz9}M)%HhNgXO_=p@r5Dzd zUAknyD5LvIPR7So<1AjPFpzlz$4-&+n%oMdo}r2|So$RcS z6j9Kmf_9`I)MkLuLwikxc0E1v^KP?5aS|vHv^^X-%Ya0;*mjd`U>hRq-w#dW{JgO7 zZe70dVQtGDK?qW5e8^}$xm?-SPBAW)$gy-8=L(B~YSB=_p!0s(a8l|U8;<#sW0fzhgPvK9gtT5{Pp>|an?&L0T%ljw*3!qDX5zt)vD&d+ zKyisp#{-p{ZYzrPJLXpKj!n}TUv~R|*-BOe(WJvc06$q+#70P9gVV3+#W}3?+jz1|cb&kgTKMn#-zt1-t88@WJZI;8Wwj z0A6lSr^JAf7o)8daqo;3k`W}f?>N)_BhA;D;4DhJsKSZhI}zKYE7La>wOdxsaAvx z`(}Y3i%VMIN5ZUdR{AS>9*&nQ5AC=$B}6cTelyJulIzZBj1NqiHh!2|VH$%-4zw7(CRa!)!G*edm6h#KX}1bFEw-g1 zkqkG(Ogk??cm)VyfQn!yWRG`A%c6--glAbxvTpO&;G^?S{LHW>7%H&!&{mIH z#pQOeikoDLmks`%U(eHm$xo&Sj3GUMZT-ikr4|cgTaE&To=oE8|DtiUU`Di{3eAw4 z!Zd0XT1_Us8uFrnTjTWLj^YMcH~1M8@jFO*Tg!I;WRgJOS>b8euC;&3S8|fP-37iB zRhBsa8?&5wV1m^9PPocsg6+y8lXhj1Nr%+&Km_1t=e{Kmj_~FF`$bFq)l$u|R%XEL z$^$c3#a@W+84#i?p%3X4bHarl8wc|{!jprtxFI;*KzsLm>a|uwFShpP44Sy=46NRCP7K34ZlO73!l~M;rcC@1i zNahRx5OI1DW9FboFB%zez{9p+iAk)~bnD2g5YO>M3xIynAMxf2<%o*wy+=^Uzsf)} z4LGKD9)-8S?+Jsz-~dHXX+iIJt!y2zc${j38;gYfyGeV=;i^mpNswal%D+>iCkbid zfJjf)`NOteF_e>!`;+_=dr6imhMV0pV$2K*MkAV7q)yq}BpLEfMf~PUuY<>Zkl2t$ zqPILlEAM65kFeR@QqV@9Kz%jea#(po!`xcN5@?xwjx;h+H0wopj{Qu_mD}}V_*N72^)QJHCqM+^d^7?*!9UHFlD%}1AOmq3P zXi7y)+YY&iEzqb{1zu61jU)60O>jg-j01{8H&IknP}6E_w9&lpZ|!~lLk$^Fy6^kE z%TWJ)&e_A-Yp=ET+H0@9Huce#uerCbEcPc)ZqiY0*Ay zsBUfi;AnSNlQ^ns??I*OKK&D=Yd-x`rK>*uFG^Q@dcV@CPyegZiBJDlX^?fT^#+sA zv?VwwXwAg#^zezbi&8eDiF% zx3I|uPK2Aj*Jtw@hTN%xz$dlfc-3d~%#A`npKj^>qzUK)p0D4ERvl!v4$FXvllY+n zQ#z}Tb~;*c*YD~m8qRl7*}g<6AC=myxaZb*V2X-CTVG9FOhw6-S# z5QrF(wK0kG!|8xkw?NqrD*U$$qz&4cB(2c`h8aXHNWm}uUZ%Hbiiq61mk9_oC#|_i zu@rkEbbyajmVGTu?C3Re+pvQujYLCJWl87W9WzXU`0W;4#F=*@DyC2}+~39+kFK;+ z*CChPUf;<@Bfm&nu|yH%eYVX+?s{F>;OqYa`(2m_ZNoY3R9RD%tg>Ywwt0fM`fvif zBvc?CFN?q1rhw40o%EAmi1e#GK2+CkJVe*ttggN3pk4dryso{y+qEyw?;2IsRAqnH zez{=RZai4mp59SLwHn4eAY~L$r~%gTM(>L*QUQq!ynBx>gN)^g-tkS)WxtXDmEtqe zgDzc|>j-*;jJM$&2v%&8bd2>G|cw?pf ze#xc5pYy;^{3(;l`lnouIH;_zY%lXnJ>^m{Nv8}4PX1I<#^%oIn<^B}QlS2Ew<3)HNzvD%yof&i9ADLT$JYr~9J~5%)-FO$gc0Y5zc^BaDD_tIi z1jYfCbrvHsVTq)&&m`I$M=qaf=B*+|XcAk&F5{_yO!kkEpgA0pOc=#u-;ShcnOa|< zJunnBET#zQ9jAQxe+#!1Pe7YLDD7D9!o|v zQ{JEqiBO1ij!-2tmvZxDK^lN^b#w;%X}W|M_nI^O9(%|Hb;;KW62q4+&hC&_;}v@( zkomER^pBw*woZ|xU}dFiApBNj>f`jFBw%Em0DM~r@pPKWU2U?a#q~F7R`;5bvJ?k) zrE*FrZ10#yERi3Ca>;tX7`%X~7FR^9(3 ztb=Zsr3f`u-Fmn}5d|m<7AaX~*II~by)C-p{-K#itpQp3OlA+*PAV#bCShjc(dn!~ zXEci0Q%F$w8n63aZO3`s-|2D(k)fG{sk$a2!F*<=R@q_jRe6-1Xp1AS;P@qDD^4eh zFMgf*&fO%L%~2Wok7&Yy8f3!CUV@Mjlz@kE4(Bhfinhv@oLXyoF zSi_qEKg&K8rf{s>n!-g8CrmmnB&bQBk$!UmQXQdSz}O5A>lI(V7omVJ1RUXq_zcSg zGwB>Lc}MsGH1pD8b6)RR47hhBn4)^f|f%4g5Xe$8HG$5vj}&WcIoiv2^-t6if-v zYq}Jeg|rrCObdQRHuZ9l?VgB;1u7)@2BDYXBa)o#DcVF#=4>Jsv4+UKRwAG3Z4A3R ziF76VM3{P&u9{m|)P!?To3n^rMv zWK0R%egvSwYY*Ul0W*4;t_^W`&9~bI5TDYx6N5_woEB#ntf#e=#_6)s>jlG>LR~Hf zn)~YnV^PUq5RxXAuC0`jDwxn{i=CeqC>B+o;PycjE1}HeVIW$(ZGRn1zZ}ttt)Yzm z=l(%9s`68o-4LszxGXeG{%nZspS{~=H44RnVNqMGu-_76H z!XMb{-I(%tG2mS$evuacK_keHFI$)t7)mHV$Z(mDXoOM>FMJ|8Rq!#NtvS^;%4*0d z&(i{iQVbJIG^?~h85toZZ&)}0FgzvGi>4D`hJY3y^5WN6Z-T$BEBJt0b{^hm}PXI^<3gu$q((Kq#uD}XI9u0Gqmab=~`Kdx`K zg%j^=oLCbz`^J^eci}CQTeEkW$C@?{%W+ly!yQ*!#2tKGZ|aI^_!YXHr}VIaRw_L> z4E-f1@K8~7lDyP>^l~BP2c~BVy*@j9<;QATNCOi4BTWV@2qD$VcI=sP%~FN%^!rCB z=*%8&dx#w?b%{~S5l~DbPhr>QS81yAAgOLpY$sX-l?UkMp0<0s!lEFtsBXOf$!~R~ zqIM$qHucl=tZ>~8_r;jVJMdY%ibc}pz?*$C%A@HZdO2Ltk*(3h^mQ$STd!#D{mx|v z`fgH5wY_etq674$)qbw%i0q$GNJhQ#%`PsUp&lc3K$&eb^s~%~;ol99zhLr& z4Ih}@HM`-O-~7{aR{zsYx}D*_UbFQ*Ki&C$B`-YcF~9xfg|{jB@dvKD`s%AcO;TP; zWeptZSo-z$eJ9_v127&Kx_H$yUh>X$hOs2`a7cME|pr*X;J8QsyW%d6igfOmJ)Ukqrg8#jo-iN6E-E1HHPhS4B7G(}kAM zRyhRj=&39lSRFEqb{p$cH4SdF_KInR#z6MIKc*nSfuIZrTIurwc%gsEhrv3FleAK; z)f)qYnlK`Fp-{zjfBNC@1Ahiiy~y7E%?kVZjQo%=nm2ur(8wLYvT>RPb#r^H7;h}g zc3)tsX-}W`RoZDpRee$MHjr537@Twq_gWBwwmM^eGc2U-Egk2up_@G_dlY$4S=}d4 zjnHOijHh{;u`O5g|FlPsW@Hzm6JSR5z} zRHUJG_uv}oF7Qru(g)nVoFO67FgVDb(6JuLj$=w2<4JK-8yOzp*I^Ut(nDgR$s~|I zz$(%fP+;75kIH^kjWcsD(@K)AI*nq*FNt{^#Td!Yh$1?%EbkvsD2Jh}C-t;muSd33 z0yZ^86IMLcmI12($ktw!Ck=U6X^x2;nNye4yuvM-KgelELNd8n+qiuVi4is%e1`_V~T>)@k!LG-~R26Kt}wqHXa_3?ASP!=tf2i(dv;=)q108G@6b zw&c;x*O>=MEO~(O#-H&~<{0rrW^=>Mu8os8Y=Sn#gSMi!g&wraz7j&o7KdO!%2tG? zjBBPA+-7;fLlWT3{zgM8K{0>RoZ(DmV#*jMR5#1hy!rw-jivsdhXo@{Cy~`~pBgH* zDWr=wPOCiWG@$Lz(sc^YpadtgCLpbZf1c)yX6bTaaw^EfNaE=bw@5_AD{$y^uMtX! zz)In8i+-c72@0P^VTT<=`GP3G~M>$T~L-Tvh1I3by zTFsO%egAGlmW|L98Mx}tP#9WS%OOHH$d5gF zh7K3$@Mfi0jYeAReJjMG9oKJ=U^UcAi?8TaJ|tP1#0ehKmEsTB{b6#ty)l#)d#nU2 z{=s6~i}{wHb`cI3bl5iXcqC7aYQ9(Is}yZW!`}U<`|kfx>i|;xoOg1=1`O@hd1EXJ z59)Fu;|)SoQ$6%d91iV5=W(7~2z9dQDA_7gONn6Yta;VS=in3+0>QvwOMsP?Ay z2jW+*Cm6u`+U2~z6sPJaZl0u!KwD} z`oWjI^c}?-4AGe83htYgmgd67$s3FiEZxw$*Y7qM@zkX|6{2_k9 z-6JlsJX-#KmWTI`D~PTM)? ze-FJ-dW!TO4PmD`Z$73vpXjO1Uff=Oxm{ltt`1nAqyrWj8Me+bp1a$bQ>7o`M1DN+ z)%dfiPqCRsC>&2r7!(=Rc?)3eCzY2MADZ@aLjYQlVA=AvoI6SH3u%Rg-Ah{C=kGoy zBY22gI9?YDs#@*Ds|i(dM@XxZJt3`1c9X`BBoR2rgCl%d%Ss95O?o$#zS;^LpYBeG z7cxYQjG=RJ{@ZO$9iQHj*kyEFNT;`VgtvQ=cBs;S)ipSK!nb?Ex9y>%zTJ~B@KFJ2^J<^PzO?erF5k0i!Ze6JX%Tl6kZu{b^u5;wxE&Ix~cyKLpWFY7ydP42h6D>3~7W@u{@fr?e z>NMg^8nTOSI^+ml1(t+y%k`aI&kgfbkD=4oPM~@KO|giG?j4SG^3>8+Sr9lLdG-v#OB`}EDhwLS#50> zs5M=n#=Ah}9iYq)@^|2}Dt8%GZ6*=NanFfQ2Y%xc0p=zdw1E2-=IX#>PQUP&kvu$R zjIkSDD^MTcGa?-2OtE&JPgUWC=HQEx7l;aUd^*kxSO-QC>+mA);TW6O>gFdEE7 z!127g(KK0`BJFyQIEOuqZD1dhC9sdl5!k20HqCw#pdWHHwUL%o8||W+PL<;?V_cxi zs6_SeF!)lF;T7icP^rx1Bn7~@Pl{)ApA-R(YR24aF-a!bQ}I)@31;l3-sLkY?)z-T zJzXY}sQ5uh3jaJl*!}X)Wl~?*xS1>lINZ$~dVm);Gq(`8cCaQpy`v!8|eDHN$Oc07CvEe%Y|mstA{TEp?@TWLGAsY=`BE8C3_x*bbb$CMxQXbt);| zAIpP~*+>C(xu2CkxF0JAfWH)`{#h>Bl-hU(bW zW-ZIqe^PRzweLQ?)Q-^=C$hsDo0DblvAR_{RwtiyDwKV0Jjv%Br#nG!6w$SK#pP4^ zNl`e5_x~J|J-)-=sQru_wpPM~^8eFBKl8(`ydf6oDZX?@jK%RWBm4!famY7N9vqcksBwGv_B_OL>dwq&X*+jw$Ymh!3M`r#Kue=b)D`W4_#KQ>GGKy*lUdSoI2UX=- zON%|U$C=vxzYZR2rl`1&Y2fT9nitR&I-=Q1#~*EK+p8SQ0Uf1jX`IW`HMAyL_ii`Y znF38tD7oSuC#TRhu(O0~=sKTN*ZD-Y>s`TsC+V!c23z-oA;?RhJKRa&X@61$68&vR zMM}v7Myuo=M4F@*B?#oiz3wRWlxKH8M^d~n9}yLRA_HC60BW;2Ym9lVqgpx}^H=f^ zjvys`j%!pCUw}!JwDmzsgiNI@V4;MKc3Kicj|k74t_sXVx#AB%K`984Q8f|9!+|(E zBLLMA9FPjlSc}YJE|7&Udz>HZ3P!S9XLAKk4_9$ALXS%-{++*$bEUE>M;?bf3ap+d zy1Rs%W|I0gqHhACX+1E!jJ+J}$FbPXGeXpY*<0lZQ?Ru?sE2m*%BM&Ca|H$m0Vn%( z2Xw2-pV!4~WdYC4Gn)NcRnSlc=r|mx#{w@32MZAzU$x`@I0Gn?qRFM{vRD0sm6Xse9-}k1{Qb^9c z@q8k6dWdoEzLl~=V-1O~=)CTMqHeGHvX?@u^6yt555z{X%3Kh^ zv_!}%LHwcNM+x1 z@S)#;T%fmdL!=9WztdH`(O9oQFziI~4e3t5a{4)L{Y2GRyq}eBKi?M{7oko-nHZCk z399(n2dkWgOBo%iM-WV{Gil(it7+#yE`Dj>W640if9}pR^?hn0d`HBe9KraSE-t%_ zy>%iNG0%rX&lHMaI%pkLrNIy+dam5+ozqPGBjtE(l*gVQ`XB@3o~6)|o)WK)lNA3r z5j7t^G|HNYxF_=Pfi##o&;gt}taKq8m10yLH_pLC(f3?x~f)u|=umOnE{ zt;Xzhd!X3=fMSK68%`KAOR`&rSaUxbGMy9dGEqfKcsiO)(jCTDw_@HF`<97H4ayG= zm4OxQ#x%91B}6-&$+fRxLZrP|V8zu>U-`hdPda9o1y&3X>je#C zxNNf=%f9FZCbjtcU|mT`^mr0&;2RwIO(v+1XSu=QJ1Qx{j|f54;Qgnrna8$CC$+N; z&OjmZRr$(QgJh>#Fe5gD?L{QA_m2zAX`SN}N%k?x2C*FV>!%^NIq(-wk65a~;nLyE zv~*2G$_o{fSL-^-dFedWjdnJgc|$~t?AMQdID-#5u)qg7(ek0Ew6NHm9wg{ zDv+`h=9aQ0sij0!3Akny`4O}Xr$Or{Wz9Dgnbn}uZWw`c{aJSiA7e^qR()YO0Wa57 zXJr7xR~LCYp-Bb>Ie;8w3x%^8q8{F=Dwj5J+*=cPs9I4j}up@uIa7jFzC#^a_`p#vhX%xTQ!3{V-amJ#TVfu>vw|ca!IJ zljmEqxSk`-UyZZ>EE9{VxOP7gGA{ufJRGb#+m{rbC7JwpZLkc z&5EWyv6(-3ZdEOE<5#p-%Eyg5^=he!C#Gv)XyN@F|D(7ks!8W%&nL~#CH~bKz1rk+ zZS+54HC}GXO&0-wxHd8qV4$OA1juKZxl7n+R2)a$GzuRvEIfL^2q|e_#$`;kRQ|+t zf)VXxx0J5})JQyTEQgcnh^fhY;#>0(l=>+hXY-eP6n9u!i=?Rdw53x^e>(?)gUxA1w>sh)*(MF5d}~3Ck=6Z2 zaa+QrHxlY>b)FnON6qjCBp49U}_hj-H zY4OG%vY5gEAuCrs&-B{y`ki_Wh3N}2oS9v2=#T+r%IHb%$*|#o`(6wfn&2A>pHyb? zp6IHM*f+)3e#q%xs*I7gtH_KT$!X;y){43Ht7CLR^9a{u%NJjb2}5>9Fq$1bub))NR~~`@fu$mSKlH?C^x_S|!;? z@rDBG1G&m1>*r4X*`9Rc+sVGO}Tz+m^EENi~P4IaSwqqTp*@pY4A%}fSze* z8%lkrOzg@_r$>tu6sC_=2wdq=Ql@6w&Ad6AbECuT^xMi}_*u3y(~{T-@4PG%yE>bv zRw*S>p$brx8U?d{|4UgK+JlTB3m7x+jrtU#iHkZqCO=E@E@J4AAo@YR>ELMKv z`mPU~gwm!Ig2W~!dHAvP)%h`0Od-b)eYP_;6A!X$b<}r#kxh}}pWaU~BljyQ>5!3O z+$_+ognob={NyF@SB7v0V4fsZ*xON4jF>ee#I24gAhrAmL6A1qUPQgdoPYq@&NA54 zYs3THdBf?ra{Rni@f0qX3Vm5?G++3cIlF@wT=S@u#*lHjgTKnoL) zPSC9q%cJg(_X^3FEm9ZouI4*jAZU-&h-r4AC`jGU~l1&6u*s8FFXL?NK<4g z31@&%bJ~?~NpUUMLQ+0sC<&4rs7m=KLxV2;j*5{1zROmCtb(C#)AJ07YRm;J`<1?<&} zihwq|-1<)*+f1n;Y|MyOn>rL=1+hC!PN373?aAavdCX?%J#zsV3GWoetcZBQq8 z6U=73s<~SS+YP`&>^t^EC43q;PYX}XdW84V?8Tpb@idb{Z8Z@gL^@a}`8uBLw=}jQ zZm}Ame5)bD@xh25y&?v7A8Bb3U<(PkE8MWR6hqv=5~x~mVPGaZbc_wSEU zm;%OUT??;o6h;ToHet^>m_%6;Ic}Pscm^-D;QtR*BI#OF~+#go&=QSU4aNR919 zEl3qplT3WqiCPS=Y^QLtb>CH7>BG#0IN)BEOD~jxL;JDjq`yYoy-i;Dd9)7EvGtjZ zY2+Tw^rXYbwRfqBi(ICJxcJ$eBbM&VMlYA zci+~^l5*|=bJ{2IU>u@&x$iFbuJc^RBKDV`{Wk`)5d?=V^pKqHj*%+T_n7P(F(M>+ zSz-1Q&G%eQ*n57W6TbjAHg2b@h6S&lo~`rViAtn>C2Bo+o|pGNSqaKqh6Yr-OxL=Z z$VNWAa((oF@w83Gz?{H#y!sRUp#;d!lUM2CRk|gM4a<=0d3yIBLoOkCCG#)KY#%-|!VpU8?gY>*h9_TC>Y8#vgB? z;+@*N^|6=hPmlOx?-;c0tVYfvi&-es{!sDqO=qEyi9C6-_?Fv52R?p(XNQjLX<0qC2Xqc?`vusRU6SpYtzE>6Ash!a5Iz=M-i;8=r3n?1e0g+=) zAIn~o#!M?}Zml*cS&8VH90$wh~5p{vUhXX$)5v|(bFQ5_ z>t$DbWO|nT^ka5rdOG_;%05Nq(sUxY523+Wlv2q`ttYr&psTGhPe?E>@ z3`AeV&HJcQf^yCWwPcVsY+AKT3@qM-+l5)(0&?gvvPbi5|M0DG@fajXkB>H3uQGdy z5vnXRbdfcBa-_q|SBuO%b=fJ!+1WhZaOvHj|I?Gd_T8t>Zg}9@<6rZ=@BS%dKqKjf zm;Uy>|LMMCKLugk{es&evB!z9{>Of|bm`KUubZAm_XU($+1drS1Xgu+!|6tNpCD@< zO^X0{9d{{NJUa_>#4|{jkQYUB#%648D?!71sE*{qlV4`##>K_dZ&Q1|_#y=piN~`4 z+N;thT$tm}IK;&r(1NC9d5l2Z98>wJ&RK{=TGXP~5R8A#k9Xo4$wy}MkxoSj zE=SO#@_E+_#>_OlVm7ZaNQJ*RKzBQG_LDg4+>I!nFg+k#idWY!gHye(T??)a?A1n| z*=lyUCxrPY6pIBE%m+@%2W=m)Y<3-B(0_s0T9UG`fc&&(8@3en)1TDR?(-GA%rQ*4 zf2`xeDXg|RU_u#@tja94l*$}M8NF4RLCj26W|;;hk56S;GPLnR{XJE~WB6@!;E`Jf zL*2j=bkN<6`jsysQ-uNH&&XViRq_@2QHHUj0>+%jSaY(yJYO!19fh~)uwkspH3%MK zmFwC^8^)UXvPs#(l=0|!7{fj$NrQb^?iNZ81U#xA&_<(pG+v4YL%g*$001%4cY=W* zcor~&lU2|!&Ldy~G~j6tT9~jfWY*m$As1*{au2^JuxJ#ziYk49xtSRu%k1~zttjot zpIp2#AUsH1S`>%5U^S@Tpy^Z&@ASh`R$o>)2;Np4v_c4=2U^sggI72pUi!TNrb-~3 zF4on(BY>t1>g%pPiu(xg*l4)HHqlWq#O;2Mf^su350(i6@^aVQvOF!W-D%&F;C6+yjCN-AOns0(CL2Tr%iQAY5Sq0lyY%2DejGW_@vsN~! zI<5gvJ$EtU{R2GNvsmlI+OqN<4h$t=T2#tW_v)0E&`Hn_D9r|Lo4azwq5Pm;LhOm4 z{U$a=Gl>A>cn2-9j5spUsO9T!n{f#BNk;`RDUW# zOgv|TgNz;7sVDP!p`dv%n0*{H8$$h(t0$Xew<;V58-c0$x)o zX5KHt2G)vc3_-dtCczZE75Yjls+xD+54TN$qt~Zz%U%^j(cWNJHG>_HnlREp!J+0= zaR1SM;JjObRaJ9$(*rV9)ESh6@|jb%?zSN@ufFQ(ZrSyelT5b_NzjD{eF&b7+q+;e zuE~V>Gq=uiS#vNagSO2}Duf1%5Ma~+Wx5l+^YZG*N3t&d$6Mm=yGTIt*vX;2T^>?dbJIio|9r?7}ZkE;fiY zmMxrofY6@nlT_tR&z>Ml*wnnJ0+>*|1e26P>9T1TVrgUsV(dXg#$Dh+q+ZPoVCplw>9 zBcem`S1jZn47XLNL@}-amBf{^p1TK@s5Mp2jQWSvU0l5gKnv``FACEFc^3m~ExyP- zVBNC-SkKdDR+7Hd!!ciPWI-v3BQ9Z$~d@VFfU zW}f?`zk6yyfHqiZwY)sWqPX*z(q(a@3PefY@KG(i-IV{I4g zud{_*RPsS?NG=*&8dlfaJ>D?@21eYwt5(`_kg%2#O(%u;`ibqmg9eVGNEc6oa37zr zqoDFQNbRI&!!~v}Jc-D*S$PM8g{T;igPhN%`Mf9Z_HN!O+sP!CRbn6f)IO!^alK#DciYfbinYNnT+Uxejf$(>b*JOP&29shvm`Q;rlmXf+cCwOPdjHOJOu@vqdx&Mmq z*tlljga1qCiC}eqBsWn@KE9JW+NUlx?tSLaGQNvv6vfa|+-1F7VK3mW1d9p-NrYC^ zg0RzTDckAA0&0FIa$6wn-CY&F_;sR|rbVZ_wVF;(sWn>vZaJ~S$ zgWRa-5`Km^NIsCn(QrB>>F6yX$*}BCCvZXWmaz^iL9+qK3 z86hX_Z?rm>&E&&;JBJ5KZ1OOkUBZZTwfEZ0}T(e(+m^YlT?X)8Rs@rzN~F81BEjh2csLyJ|R?a zB3oH4*T#IAUff}2ADfsiKrb-1rxOA0X{R4{VXU7r z4AJ0CgkxhDXmLgaU@ta8ekum`Z7d{}hr#etG4rTB%&XPtjX@coGj29SA_KmyRdqH} z?H&zox}%ts12v&0M2x+%>fdOf7?OLsqqCRML6T|Stur)Op&*y`60gG^G3Iv%o@5y; zp7h8E*Qt7|=mbk4VuYNV&X?@60hWH$9Th9E)(QZ^noyw2Sz=FWTI(wu2Yo0!ChAjW z|Ih(g*0{)E@Ux!s8S$I@^ynN;nm5!V9iFug0bl5lQB4lj7|`lapc=_3b%md~1ZI6# zS43VtU2%(b1r`4hWm!>@)KDob~0y?B}81mob zlA%9vF(VMTxL=&j8-zomUif5oTnc-cy7c?Pe?KW5YJ%%_P{Q^1PG65yCx2HWE7sb6 zW0#)iPYq^CINYhnFWQf2>Jc5A_5zts5mF_P>2{Jqo!^1)rGy(hrVm?bLEJ2)v;;0U ztz&Jebx4JACgXbWvXBWT zEbipi1hkCY9UipYCR$;{zTAj3X)MF@aw8VcQHP}jnJP1)A6FtnTFY|W4LVxNUQG@x zRyO&`p+}vfic2iFmMH;s*4dFKrCWUN6(-WzeYc6zRw9%_-%V(O{oKA{^kav<@QaSz zI~7T>;w^MW|4r*r&qn6pftt~mEaz_hqO23Z$rcwj&F|Aoda_r)WZt7+zJEVt=7wvF z%4aXpzwMVbLho!(oqJ>Dqb1Nb$^dDGLL08BDj=)@nN}w~w4}-J2LEM2c{xu#v!zI< zor7qA!cri{j_Oh>tiHwWxG;T(MUe-zS06kgrhl0FW;uDiCrnO(V$&sGbi$TH%Tk9;u`Ad6q z+qfC$i^;nK+Z{pULmTcjelhNsHITFv+2P*xOIKwzKI&PZ&^d7}B&l@=(23(|Rzg8M z)nR;NWwLGZxp6lnQLfM>G8UX;MeFbee9|BQDa;U-=+K-Iq_|~~#S9Dfe=nNc)uqXu z5F(LNMToZqLe$Bma`g;4ZSec)0YvN z@R2L!b+Gv)L1tKboGb@}N>hxmzF7IShbTW`AguK$Tf+ZQ7 zEpC=MKYlkX!V}GJk!efL%*Y}53l?ljE1oLBsaT(wAw*seekf#R)*6|LV4^LUrP;}A zl(`xbQW#Fy*qmdH9yGc&apkih&`k3l4c2I1y-oIPqv`kfpb$hILnE&cX#AxfkytP| zO2X|V5{9fWwi9v(20mrfuE=iE)Yc;fxwawf4ka%6^qjHo?i!qZgu4dKCEAmud`C1hDu^3~HHaX|2G5xldxtNW4a6N4=4F9CA11M`J8ytk={7HLvw~tsUj1zKxXRN4qwr zL~ZgvA_w1v-VR8cGJWwJefDaaH(^>;CG(X1J70C_OHeL=z}8W7RmUlCrb`-cr)L121-!z|r9{z-enI8oNT{J%Ehm%f}Gxj5+B=yeEi%zO0 z0~XhCBmxi-aMwgX+c)vZo+FQpvqVCN+-T`CiUv!JvXJ%Spj$5RXam@ce){oRRw*_! zZuc_2pV)iIE>N&1o18)m(3J7BEmqV$&rO;<7}>tH30Z{DdAv1utrGaMM>1GVJ?j?w zcaC5wxv1YRs}mBPl}jHs&C)0Kq=Mcd`?px~4vHk^EMpH#;?5rpLpUNt>{H6&hq1L{ zqt)5GGNgzs!tO_})bC6IyJf!u?M4Y+`Yu3Z1|KLkzM8wQClcse8I#+_Wx|ik8g)t% z-PROycDaO$c?4~xH+pjO>oMCD3Pd7F+)+)eE#TiIAWEy)ygEyWOa}WUve*5#^sxC6 z(G11?OfHKMy^{`lIObQ%ZFyvO{&0-x-#Uu?)=|01D{D!)$qS--w%t-0x$vcxhR|>0 zvgy04LYU4VADhKUg^{o+ps#Xhq zx*%hi#g`ebBWbl80)~QMn&TYQ*$eS=;^7Fax))fbrvu8jAe z9VOr;t4qU3uip?EfWmW(tX+Y_>0x&X11dVWfIH1gE zZEc|R0Fp2B6OiqR9VsY1XzA&G=w+XZZ#eX3HhHKS?HK|@dGipU8IUXAGy{5qI{f($ z+B(SMi~;UZd~Mnn@y+v&>)rGzYm};F1hAL}+)p|bYh#lG>-dX z`&mXv7(``W`@X(O+ms5p$8??2motbMGRh>kH%2k66*$QkRkN;&&_h=Mz8?z*?+Ua^ zHz@zGMA~7g`3N2J*fMl2I`jb*d?)(;u6FOD2IfA*fOy(JY~4^%>EYPY(fEF-`k1>S6Gwk+*ssWSImJ=_+%T50xK&dfMs zyz>9)T~|Me95%s;unaZ-+w(}&DiiC!ljqU*ndFRLFcI~52bF$D2bo0BhRUhY zZ#+KojAREudpGQvaTm}a_L{n`S%dEfQRi*9&D43zxwtxS=J~wqIbpW?abJI4E&}>? zg`^Bwsd4RETJ?)%6dMT5^A%G1f#BNci!a(w*`W_sUKZ|y;c1h~qh462WU8dH#e6X? z(PzuJ#i!UD+%Eb(SOZfclya9yyEq)M<)l~7E{?BKnbh`zh(PbqOinwC;n5wU_~^ll z=lX0rwi;MZ%Ql9PkPUHI$Msmkfa!3?_V?y@5p34;^&IbX;jy@B4zgoA>n|sVzBm;0 zQRku(i`v97+Zb`oT!`ZXx6tbhEre@wfh3e~lQGGSVKX@8q^QxsoRwfKUkV5!gkmb< z7Nf>_)eCgs^9ikbGGR^XRAWm)7ik&y@>UukU|G%K%bKpA(p|M-QSNW8l@CTZ1Wc~M z!d*1kZnU$m+X9zLhaxfSFs{_%41+JKMT`HY1-T06{e`u-@flcz)3r`bWepocxiu-A`UAbK^JJ%i>4-d1JT4Ufk0{@vL!>Cz?GOP;?W7>)e5G7)Akk^n z2AAp)1Il6d&)2for{&!qQ=C92v~ix6 z!KQOA8X~qzwHv5}h>=|aQJ4}sbnoXQH=!UDTx$M#VrmF`33u{v+@iSe^Hir%eZE2< zb56gT_qWO`YliZ!?c^nlgyl_c)s?HoWqZoX6)6M+7k|Bnauc2WoJF?$oYB=j9gEqM z5-VU4I%oZS9owcFFme+2>5*AC3WWGi4(=H5A+eMX@hEWQC8!Rh1g$9YWnPkwmV zK~xRmty{n!9G z$d)-(ujy8uo;pU9wRu%+J%?^Y z7AGZ7+&&*p;Sb|8P2z#7$otcu58WSXb?V zPc9+#a?*MT$rBv1jhL&P5Ut^=kDnUUjp9Lr8v4o+qh>+s+jSFbN@^b*7E6^H|P24})x%nD{L!Af> z;)(c+EKLv^37c?iWG{~iQydfE6QWM-zJ=in>GsrAqRR_3L{Ma2QCvDa+R+xKTQx(n zh5s4VtxyodxLu%-nq!}?Q;3k40Sl`pW*Ph|EnY}?)rkljMedT>><<)K1b%Vv8)(J+ zya(ohP+~V_=uztZ16igUQ2U~Z1)&}>;KVr-i&r9KKw|xc{ZFPqF?DB?fHPbd7ZuZY z5*^J%y`l^fCgih3T__8-6}VWmjW=RuMFoP1A>+rb#e?69E#_W~BxzTX(h5gSCJHb# ziURayB7|gDrEx=W?(i4&ASX1PDB43(taFzU?XNi5y`-(Hn{>OLZoMK$BGlF9eX;kM zP2)f#rZ1jimlh&HsDOeouV0EQ;^||pMlz93K(LUD#1;cr@huMedPUU!mMyi0L`f7M zaKKFvZL3yZe+jSx$O&ysMPH8*2Pe~iy;5VeLGXvbcM7IJ5E|dCzmSW_PZiz?1;xIv*+6JW z!?bYS*Me)Cr(la7ly(V-Rg`12WX^&E&x&YAQC8aM-DPAlkj_OHNfN^xKqzY< zWTOR@lyG+&5v9xbyfB-v1HZQs==ljmJ57PS&8!%%|Ft{tgriHK+=h2Cgx7-jg1Zq}UI2oV@BndmoakLyo z+k=163?#-$>BHLTQo>8cfr{jX%(|AF=RyH5&?5;-K2p^p#Y(MSB`qT>AdiE-CK^6M z{j0=tG2-wGb$9Ku?DGVn3sLzhnwWhYMgkXY6J79vKg`+wddt)42t>bCfbH%tx#1@aTi{w(PP6dnYZgBD9u z)4ompC{uvWw5E8ioAT(?b|y~Z;XDOsWRwBc*TnDf#p*m8L#}K1Ywl^M&{XxbiwNl& z0j(~$f$T7|WTf3`e7PsuNaNB7)o^lZ&L76)49Rd^3WPpitl_Tmo)#sU zLVs{`F82MVrd;Y0Tu?`lNuHzqJ4caJ18{OQ?9orJx&vT0Pq&FpyE+;@wcWH~SRFko&lVhp<|8!>$7mFWC*939 z3f1Ch2BE}0W6{BWwK(eci+sgc|NSBVJ0AIG$MMUA+gm0Yy=s*w$ieJInt2rawG6?Uyv**kT5mi7+1<1r z{R?6CqTY$J}Cu%`R^n-?b`? zRsRbuc5B27C3fJhRzw%->rdSN4y-x{hKaNdR0P5wYgczEMq^$-TjJ3&F#TEv2x)V1 zJA|MCjHbCUH_5nKC@p@QouzRI8pWECSuk8GN_r~OJ2x{>A(yUyC~i~CTZTKl+qt>7 zq@K!>YesZ;WWqKse^?mA?$u3F%-ay0(tMOQ${)6)`P;C+qtkDrM$KWdq;^s+tA6d0 zC7l~=O;&4?T8TX5XVm{FUOG>TFUXJPZ+_?dMxi5?s+DrWck94IyqCrpezR_Av zmf>_F=lWE3<%St^R$jxBuUy6061(bb2` z5dk!DmeUxrK!Fw7C$4zZm{mn8)6Ln zbA}kVVjE%rD2KRKVw7=i*f{I21VZ09Gw!y2rzO|Ys57Ky{booR9*ZpqGKy_<#%LnR zkD9dMm2e`E#IS~JnMSgGwB9dAxn$T!IA&4~co_F$+lz}wUz`sRlC>PkZ8oo5`dtQdm_zW!s$3RhCIM1iO02(z~r#f$=$d~BO z)DCqfUI1a+A)p6e^eYr%oLO7|L1keA@#7Pbdj#`E2|XZ3=Nbg?%XS%hJ+Qp&PZfR zG)Xi=Mnq?skz$per_zXBa18>sjN87~i!IzxZ@QrUWJD4! z1~XgoV^=Ho{8SgSOlL=vN7lEv86IRV)Mp}*_kJGzFIo&H*$Exwq+o!c+lm*>62X1! zC;-&6yT8e=5R_dTgNt0Z*A|$93?BV4+dPdxKl;NaDAzr>pEqR%#iAJgh%;n-BGfzY zu?2=dmZKxAG8l0VR4C-$YFcFVQFHVX&+J7?9`>z1myrf>Kr}cV0fBFy8oLz;Jf_Dw17S0?5k}seVv}1L$x2`%9%4%vx zduOLS2qM+Q?!1}(Q?I!V;&xV&HlJB{h}M8s2KJEADoNUp7iY{g`><*%@RaGS)!cSh?i0Z1PIP1yG)PhQ`3IKK~%O<95Q8r?pvX%a_;p2>M zdAcTF9=JVQTMd-sJx=esnk!zEGLw}3_uI25Y&R8kc;OII)WlAbO_-k(EgGU zVHtCS-!AbgD4Q9muS13m7QF!(HIPd6_S$Z!QAc{w3oi2NM#e8-7=%b+;PMfJ6aKV8 zjOUQU|Jp;!0(;RR1;te%$p)3E@g-urL?LQkc+_AM;|lKE@XT=tu3!^(F|L3_X|c-{ zEQo%uT;T~}9#?omI1H|+E`mZ`nSlq5xMJx-Tp_O&`+RV|sG^RlqM~t8s7vL-)1itk zI5;*HtU?0ery;q^%mGPjspOZrXv%ufC$wV;1hfr2K%ASzB4>u7n;MD3=#@uODqTk-2F0^|AA%zto)<0Pe@W%5OSs^Rtha5{mg@S#>#Gs zA8~IhMh?W1Y;d`FTCCm{X|!W6549xiu)hq9GW}~#5*B(yV<_WAV_pm5#YzT*&xt;dBBx?75Df$fE$lv@Ne#$Ki=%tj$kJGLZv z^7xU@mzG{jwU!T3F0^CFVkO=c$qT^LI~W~^7HMk zdvGBP#d#+2)?&k3nzhHVtw|yRBbDeGG?2|b>LBPTht#&U<_>8ZhBP%whIZ!+X_(u4 zhg5W@hQp7)mX3+g2vQ%~wo!z=YHNFVlGQej8(Z7Xd%|jhAC|P>z0+^Ud#~(PZ%^2k z*PIrRZ;K$W%ZNiYT>3>%D&Y}Vu~0e#VWL%`*JWU0y&pj596)3gQFbDG-0@3M$;Hj0 zXFxQ#^Yn3vG?L1dx|=OPB9)vw@c!7e*Rn{85ae>rsubR;2||CA2lGSfauT8ycc5p|rn7T)>&}+@DJAc7W5x2C{ zr!}Y*;S&Id;fEB3Hr>`~SGY5#ws?kS-N%P)>E4n>!Dvbvn^#Z*Y&;?0j|33QtHu%9 z0z@P@9|jf~d_-Gk z6^WI=Q9>9hzAB(_1=8v(rDH~h?yaM2j@>s@eCI*AZn{5K!U)@ce#vlfA%QGny?}6u{Jgq>dco^3-2zSnT|k+Q8@S7N6iQPM=7He72w%F;+j2JRoYO zg|aCCe`YGe3&|MZNB|G}E< zSdA|AGd3W%^a*?AFOb&e6PAi{@Fdm`>Yo~RUu_(tS;@7a*3wGT6!OpjpW^OZlAR;x zBB_Ij!SNzzbuU>i2@Or;#dvrTmWa=pz!B(dzLgdtUUY3mZ9I$5(Z?sHo9wRDA{K*L zTR4*#Yd^V|y|Yr(-OJT!n&8Q;gR34)aBHzmT3T9-HRv zs!q%6$fl^#-i?;;@=3Y)w`;n0$iConN+skDXA5M9x1GT1t}gJnm@1RD1@l_}dsf21 zUv<={@K<#{W$yO&)m-pZL&aU81-Ch)Iy^#uG*CSFkTfax#yC5pGsN*KL>dSfK@jnS zioNH1sTfWjf_yZ@d+%-**WZs2bk93R4;jOVvx_&j?XTbyfB@Zt116Ofd-e!JGA@02 zPqUbci+y{V?k%z2>zY9*Os8@9z^|O#x$4uJIWw6^CxQr!i#zeVQ9gIwu^3;@k*JL2 z<-u^lwK^^!U!Gzeb{}6H0atwB%YyObV~RUzOOS^uOlC@~Qh}9iC6ENn%w6}sbk2^` zFTO-+@TCg&+%>;~vZTyR2~fmB&Ke3{rDk=Dbv!Nz-r-x6i z#4;h;%JqnRf9Re@<1YNKd=2W5)EZ4Bu!PCKl;Bw?-D9wXQSAE!1@gsN03!;V5B9I~dtE2P3TId>52e-#{SU z7wznkd#TWp{d4eP@}Ba^ggT3Hpg3|6_jsbb`26vCV0%Xc-+MOIZ5KQI@Rr1tk~xuAR5quPy%K?>bxPRT4bjG97cp(~}B50=K7>f9A* z9H|#1Obub~L^5N|KQGLaUFl@EOTq+`~ViCuXbY|Y6SDUNz$tB0j|t)Ut?K# z`nq<53xm6Yw>?PRIftjFF=Vo;=;SODyE->lTQfPuE7NTWO<{?$_K0n~puX-4MHjoOAq(ozy zvvH{M2dRuwjH$GWV|s3I3aM}s0mxhTD>$4PC6|rA5KT!avR%Kl#@CHQ30h`<8;ROT ztPNEre%KeurXRU$W5`)A+om|cmXhGWZmU^@=Yc=F5DAbl1#mz>fT2$`d2f#8q#H~T zS|M$FF~}*Gk(k8Ht2|GhF*ZpWKUiD5Ns~_}0yBB#Rt@{*0(EKfqwUQmXroDt;NYl2 z3zkEE2U<^6e92MUKVof6?^E`gR2VvNzdSbc_+=K(8+^b4-(UBg*R$+QTgG~qwTWV6 zvRb_MbIr`}jmFYF8I9rt57mpyeq*!t_QVWK#rDtnd9;`c31H0L5Zm^a(2X|gzK?&L zkop|d9gP*NemO$P*4S_!kFV4GN7DTZ`wr&X#aQ9v8C()$_c^vYRqiTQqwXhoEEfnD z)qRcDAIP(*gc&z-KS<}cbPqE{mPT>*M<^M|gtpIsr6XZtX$QPPtZwm=hT5PR2sC>~ z?7dPu65WbvurySgI0oXYLdx&3Y9Y8F8(hivY!*s|vM;Q|kvV-|B;@G_VW~9} zG+DNCPD*a1Z~AnL{}kpCT01HEK%7hzH-5$|2Mm+Fyn*}_7HeK_*VGyx@D^0q+ubaH zDP(II&m`9~GT9}80Ms!3z;(_80lJ@y-Gp&K(5@9e*1kY($$>KRzV8gCodbA*9lgl8 z>X;D@2PGVti&!&hI3qDiE+dr_PC;!!)3`7!Hte9pgQix6S?Ix7ON3}Z#@y-gf$A4S-2iknHUK&*+TxW<%L>AEfmvkZEcQ{(I7bd z!}!PE@JpXlwaPSUZRrZ^Kceq6a-!YdjG#!}`DE_9$qp3yQ-2x^TD#MDPkc9??1`n-u^+q96zrZCPsjj- zX6Dx+IPP5JTbsJ26RD4Tl=dp5wF>2RFuP#IZNOE<0g6denzQ2~f#K&JrgbxqiKSpd z9ol=mY#=-ZO1lKRSV%rTBg;-Q{w}9*j_8GFW6lQ8)<7^n@+~Z< zKOAI1=Xe5R()Cb}+_%}KK*a6Q$`x2D470h$Cit*o4JigOF${`uSL@_zF&NxoKoA3w zxOX!tt0eUpL3?Ep?70Vx?Wi)cchb1s1JH%73ZcffNC98;&m!%mX0w$=7Sc0*0(?jRy~k#CuTKtVE@lZ&Wuq5;Nx5ZUT%g~YZMFC+KSIyw(Mpo1)NRHC;6>H`J70*L{$Z&(G^ zH7oC>q2@f+l~fZKx%)uOS>=nEPEw|m_1ik8W(^G!018iLF51Gdc5!U4OHH-nbON|& z>tY?nLGfV63TcJw!9RP?zKljW%_i<8t)u{jTKR$u zlsQv0zyYfbn^1YDlWL$Rc5hzcKa`nEXMOj#;e%-zl#p+|m3WhVpy-t=G)__W4h)#y zdD*kE5d7iw`Sy2s8!m47#lL>+`U9zq50&CAw_o#9OEMx76G@*JsWu_`uptWnpnQA` zDMhxPm+p4G(x~WA?d}70d3%!~k7n9dCpCl&u$22@6|IwFzNA@(6fre|oz4qt^B2<_ zX|U07Ax4BHX`ILg=xd_#sw!k@#xxSZxkhh1xJoLIy#g#Ug;#<@3Wag&=PPWSrk8qd zlCcRY&^D;(x5fUOq>(%!2Bn|dkKYhQ20Q^T7oB)@Pml+$GL4fYqxNLXK0aJfpF5+4 zjh_Kv=>gGb#|y2Q-W&C7HX#mlw%rAB$T8LCTzzhK3q*W_3}N2RK$u5y4Z2GCUz-=4 z*=BZUS*gALiurM2Q+f6=zfwfcAR<&UBPF(xS7Q~OS^Y-NgOv@D^k1%D%A#9o@(jA-X{l`^M>Eb z8Do>!M~%D3QJ2s`Ml=W#b1#(UsKqj(waE`e zY7Tgjdku|K+l)VzPqEQcR2Y5wBBmaf9VMw9xr@|ScaN2IA8Tf#$Wr8Kf}zJx<`;7O zaE$5uKle_2AeojZ15sf8l(26jX^v$uWSc)Oy47_R7M^#U*CoRktej^{IwhcY4i5Y`-4IhTI zXEq+nt8J76zJlb=6khc%L9#X4(Aj#7*+$|`C{R_ro6U!&+e4ZV!)W5!D6JB6q9z~P zW)7eNplO5)fr{#3imwS8eQQv)+#xm06&!GsV@9U*c7kXmvvFoS~%Cl?J&P-bA& z$d7`=BZIEttrXbl^inPyy;w~FH2{Ri1(-9@3{g(1*-my&wCFV=fH=yxG3(zFpJGf+@RJU(xp#yd7>4=ku4 zv^3Y~LfqW}JzPxrGa#)v&|ka&l?9JGyg7`pyq~CHh|AhUa>PFqwcR}3gBw|Jdq@nu zc~RU15D=byEKpqpKm9Ba@B;{-#FKl6+Iw--rFK9$T;wnuM)5!vGYFoPe68j91Q)In zIVIP%1yIRMbs=W$H7Dh`z*3px6o3t()7++5`3hqu&Xd>EO(*1v!i8jIqt_ z<(_vz&1g`aG4i&KwP=YwFOGvt<6Adec;nxEt#t}mI|C{Xd&{2 z6vq%PgQctRE=nyaTaMtTbZdKME@@#`Ac|tgX1h(yNtPis`sO>VwC0)K(&0ihCE9&5rjnuktVhl%O^Q7I6`Ywz z{|T~P3Txf3OWQSJw4AgXbhySsk|l$>YG`O^oZILKlkFju9QO4NSjk#GWFs?3EjDwp zieYeCD*z{9He&T7`__R2KiSqAE0YIW$99v)mC0=_1t%+?4zzkdz%I4&OMgWG%wCp& zT{5XtiD;%?#D?Pvc4CzdNM{-(qlR(`gF0-fVYyx$t&Q9zIq60lgFlCBm3Hk%Y1`M* zqwQm~5wJ2pdRP0={5<;HvDV6bEFab5m_3d$P><5%arvXq8*3exADbVe$7AjB*mA6b zR~cZAf?@$v%a0Q|)NbYc^-fK~2qt_#$AT=`;`$swKG zU~#bgUSJL zA)zx~;aNigKrnELc-LkN+7A1eViUSydys%g%$$-oONAWtDT;!W(~{@v+9~2sG$YdJ zc{{4NjhQlt!roo8?J+maz4lasW+S1(a8&X!_ZI)seYk0m(V?=pibo-mXw{ohltr9g zq_2{7VJso3cIxi7)gK-^n8?&MeGg}?I8{y7Hk&%Q(Gzk>@`lEj8bx41g?OMC9UL(X z2J&E?A+-7;B`{_W!U9c@(jDlxWlKaYG3 zqQat3rBouL@VNfu?$1ykCpHIHJl4%h!L4krYTxkLsE_Oga?bKpvnmy@_-M7*iQsT& zV!3g<7)iGQ*dHIWSH?o*q*g3|ZEyE7lHv0>@{gFfH&n9wlC*|9xPbuhpA+_yCnx-M5bB4NfZVeL6SCAtm?Sq}2o`a04U9 zn3`|8;^(#o^~4C1&)s|UhKJty&tH7zpP#+%JWPr(ra~85i=knHk@<#^Zoc7$|E}ln zChegh8Ka0jWJ<@fz+U$ul#!bI4#(y4K~aui%3ezeUUlFb%A4K7vNA$^aq-KK$iQ{- zFQ|UQxP{q0J+I>y^FFC21jF@mXk+|*`vyqC!&fd0=ppU;Uh&-3nQU)ElG?X}lhd+oJNCRAyr zGQLLUxnI2F1xfVWFSwoTU z9o9w^2!>^M_OgPtwI7xx?gE_)T{;gTN0{m~L@l2HMgto6DX{=Xr?nSY!Mn9jJ_t?B zA0Yb_NiTQ5I50wF8!R@kYNx9|w)+;q4FozLv@-B(0p%zH_W3YYOdr6ce>PsSn^s*D zi!2q?28}5YQye^j={}DQCoryy(#n?`|2-AbsAbfv2r18Lfo1>L&qXO`^9wdzi$5z; zVN<-!Fpnkf{h(1Tr7=h7AGAVejOS?~uw|Lb#b9Op)Q7Y1liD#Fl zOwW;3S}*S34*ZKUJsT;*yu~n}+VZNJSeba#m~09fjgisTro^nE7HiheK0M?eU?o>l zsp)e_I5oi z1ldT)Bucb)b9A5$;UkNATW0A3?8av3hwSn-W7H}14xW;d&R7(0N~LhWpjKbb;>HY zypIY}Maw%j-=!T1!rx{HdVb3O62jhHo?G0X=1P?!u*?4&d_N23j!) zb-_S|Lc#~fDpt3v=m2mWX`%fU!huzX99Dxm!7?n~s-eR1@J9P(sD?E54^%a2Ix-Pp zXZGriG|D0b@`pKDqp~vLo`|yV>~#b_(rJepM50NP6gO*ECU6=#z1Rj#SPsN%$cWe! zE&mBC)Py(~3jk|P?Z2B*iAy*PMASiRnmMl=UEicnhi~G46{z-Rpk@L!Gxhmo}4DM%Vsf*dXfz`u~yAN zev#U5izZqaiaBEruQhXAHB^z&5-}|_fC5H~t-&zLY65)lOLV|5Fzh*shLR^Pil%2` z8^DAHg#KXft9n36Zx5;jjf_=qES9BFsHhb$u=TMmpuPt2xb2d%Yvrr?8Ta4CwpzJt z&(XofMoma8&e9krG7&+OWik_MzIvHD8FhF)PD?>gl0-ILo z`a-^3GF!GK)8KB!h3g+wPPhk&*)=N#k?i5|E-hd4UfMD;)VkgXjV z%rcI%=Si04btn({)G=^_%OH%M*Oe)cAsX>8rJ*r7I7#r;xXL+QEU(`Wo{$95mG=goNI3M@#Y>fEjdYcS zKByj+2}v$&*dFAEVRC%G7IdF7ykv-DEqk_Sf*0nU(cat#%>nBm%ChMCIw11i3$rTL zN90X4();m1of|wZ;ViI!CLRpUc< zhZbQvuG+9u>$IV7Wxm#ZG;MM6YCj4Q;S{y}tr?5YkgPgq9FzTt2CL*?;DvI-;Q40l zbVEAoP7(T=FULm9QOeM{T)0+veG3UMAgMHr#uGqDJtegcQ4cu5%VsIR7T7Of;J0}W zEKjCw_N$2oFc}`?l0z#EjrrmV59(4J^9m0Ef^(=h)%qs0Pl<~4`6W*L89v`* z7JS-1CcB3@tf&b(I43GIier`r3mO}=N*KkvNJ-2kwRmmD%FBTU*;#>+OF7iKy)O%_ zzTYpCHah88%HEiWk-XoCN^f)pB6SNIh-}tiW?BP!h|2bEGq|b&&?+Sw#T7+ zY}e$bac8icG_1>wtk*mU=hPY&Ln4e8jdsBhn;+hH+o5F)Y}PW1itS(1E6F%Cf?+G1 zz-*IF4j;n=ockju-A6`R1H%?8^yn_~j;72U~Sj>v67CUMo1 zhheZPaZhG;e4|3+x%WlF1oii2*+kV9VFv;*G*r|mbAIDwy2TT58ROp+?sPDru!8x1 z=AtIO+JRu@Qg^MY41k(jdfL9=;q$q|b_<1IyA zA5v@v+V^6#21PH_OtHo7>V9O^F&xX2FTkq1i&7_TLflVSsV1$;3TBB?JQ0BfV$K1p zdDk&UPrMxyDWs%9RXYG_=zT4{!F$dS#t8ENa*&EFui{>6E<^5-ODLGG#C7QEeyC5m z`NMaZcMFEjB%z9Hvtf(=bw@6}0|c?U4~Y&$Z4%juG}&M*V1$wE8O>#y#B@$t!$|l@ zRjhOs>(&wme)MpJA}|&{V(l@7pv0=K*j;O|s$iaF-^$NNoVnJ)p~!ewciL}=fr3S# z>Xj2zK%Jv65_@DP>2ueM0~kviS0ny|plnlSf(i3}PwBzM27{QAEl(!Ix%<@`5{qS5%DCWMT$IgKOv{^IH9Uo|udTUJWi-(PtFswNEVZ&@vVWM5iIir9tjF z863w%oe!)q8zF_H_JB2vm9n;BWullYC?PGt#n&S-+XEg1xzwiCX}+#VbvoNHI6+esTxglKAJWYO(=D!|qo z`9}@194sW>DROrO2Mkw78_NamL&(&Ebr}p*pP2_HW%tYjBNcV1GY@E*NwRi0g-$+X zbRs%aeUkW;SB(A02!?8I*N97E;h!Evl(oa!O;L7mW|Su73t*`R(_NK_HPfh)`J~k6^yD#l9GjISsFT@5Rq9c$f`WWhtd;mt zcW-J323WjQEsr7P4SS6BW&+*7Lioa@{z)q3*p{?Lt54yIQQJG8h?b#h;WPG04q=X( z2;PG<2-|I;6~mBZEoJ=ZE~`sW--UpXqJ1G9F_I2yN+w3q-=tjFR=30G~EKSsth%2+Lw9f}Im7!}UFdrT@VoI&l9^~MFDgwxdv zDt-3mkZ|(?R9a9alOMV>8ybf7>Oy169_|nB1 zbI!~itJ%f;RH@sQ=#I@MsQTN~u(BPKA^3Rv`{qRJ!MY3RdyOdqBXX~ zashIAt+5Tv>S9tJQ>ICLjr*j`+t!z6X~X|4b8lwJ78)QmOgcITplnDk>%~`$71$yL z%s%m7`>qyb!h56~DXAKaRAhFTFI86bhV8wuS+E&patg~*4DDiAyb1|X!jX}XltKNE z-s!Mi;tzuoDR>pr{QePG-kjNzp)5LR2!!|jrnHciq686M2okiux zkWrKdwCax)U}3Qem;s4@e1QyF%;hIlO~-)qTfoq^(-~VgBOcORQ zQpiqQ$n>FAYqE<3_+^bm`)Z6|6ZU%-ihML-OL9@!Udu(||Djrl{KRRw*$TB`xDQkP zK~<;8AKd|@Ix*le7(9Z%%k0&kgO}y;`hwHEXFm2 z9aGnqu?HH>qNM3V%}yQZO^c}UZPu*H);q(@$+qctF!+Yw(^u<`M%=lSO)*wlwHcg| zm1~<4nMV9+_0O>Lsj9Zkz%uIFSZHh8X2=^Y&qPCkYcN2R0?#31_t)2B05AS-C~ItN z$P<`7T3l0cXOStW50qP()*?Mzt2>T^RodELkI~kC)3H5#e{sRVpWLE2jE6V;Z%Usw zk)5>=FVCf<1fl%O>04?=9UTNZh0c_n^ylAhws{7 zabV**h$~wQOVSr%30t6-{c#^gY8`93Ha?0b*A+B79xK5d8tL^&xM06jNXL0U{yS?d zmU9!^nj>ah--z@zgL}xZ?<3|_X8$AUog{H=Nnx=1{llz<;Go>k*6t${w0r*_1UG}p z_#g3P*^|Imp;*y^7rSYB$?SnQi9Beg&4GBH@jqAEiPG9SjP+_`~iO0WNkq05`Nw0y5X1FzUP+t>8#$gfT3_VAm(_%OMR& z2zk_;v4o(s7X}ctPyB=)K@|u`**Y%ar6nTWG61n{Nd^Ha&SYl^)TLTko-5==EXe0*&N16#fQ(6nDS?i>>`j;mMBUh&S4GpgV zun%sk`A=*@=_1kGltGnxAU%v9sr%~%)qA4%H;@}D=YmP8#r9BbwYZ~hZ+Im%;2Yf` zF4+dRnFMIzo^)~C>IY=3WHMkd$t3G7Q;OV|43A~;XZY8EPB4de4qJx2Ai$gih#5Cp z11g3DJI572X-^2v)AoCjf0S21V`WM$XPGwXT^T*)68zHgjsBr~K_ zr1prKWk+}AcScfEN+Bu)sRdPY_`H*>9%wTe%MA5MVk^eY+s(barLxNt1R2?n6E~$> z9O*{tzTYU^dk*HLxXRg|X{!QvrPSTFp!jhf3?Wf-WT>kMg!URD5ZY^qKxnTPfe^$= zTfEL<5K@~QpG=MEa(r?p26^!V?MwtAf))WqOfNWW5us27zDHS-C-IALo{#gCxgs;) zuRV&L=zfgb2HT%F>tIpRz+8A=86~zS|BO3%ik`>B8G&& zJD661+5Igq?%IRVmxEA0owfCHb0srd76dNi6V|ft_X%Z?v~IHr|C1sT^>=UarqLA8 z#}(=(Rp}5w#NHH=%NAj;6U=B0kA5pR$7iW%@tV!&NWX#rRi&zNS7fFm*{>n6MYZZb z*~EVjhR2xlJpu0=1p*(lQ=RNUxUwrP2&->%^ z!T5YAK6l0EBk}oYd_ESRQ*pj;iO;LzbE}?=EBKN1hTO$RQu&YEfL+S`Zhh+i=FTph z3*fl(WCkDcnCQ^Sg;?WuI}*`rnF@ru4L@an+CpZ0?U--l*=4+6X76wWF7w45&(b%O zzL|Hw69>0Ue`5t=gWU)2RbUmj^QuDK=Uf?FEqY9#8-~qkz7o@zvCAg>CYvVOoHJ5! zr?vW+w5E^v+1;qx{+UK)C+K zuZgF4=e}c+=gjb?5w#};uN9_c!{fu554Ii-L zcyzSg1xNkJ!X2xpDq^P6LBT6tsnO&6TzF>QOdt@3~*a}zsDlQ~}sM2)`%(B5MqzRpSmx0}6gH`DTEsL9* z6^B~2;Dz|0G?01z^2_31^6GYJ;_R8rSj^m9?~%DvM63&^t(v&Jy`I5_fMnQap-bG? zQ{(LUggPYt@}I9QO8#TkwWJKnFnl=)vAqCG}4wd^V@6m&`%q`3{GKN_Z zi(ltShG!~`rv9=YRHnBR6Z=Q__f`_$cdndnJ4o)_-g%d1)=Ih*Gk}$@n))l|sV-J_ zI=W4#;;M!1?FNFnH*c+1?!DI0-?CQg{M|dvvI*SpQwtD71=h;yr5C<3nV!GjS9c)1 z;7?9{)kjZ%-fxda20ZoK0zk;5Cm!{t{!jeZ5BL3c6-xAp>ay6`hpI@jP|fq=mI>=n zc%xl*-pM73V$$GV<$g3!{F62yBg61WknX2Bvtc~@6KMz#ApD%YJLwo0Y+puka7_7Z=zJls#N6iq8R9Q?l`W+{XArg|yfa zU&gcBI7TC8fgq!NcXarJ!fM7oEo&7-}AuX7^i!&qK$V=)f8=tvZ;w}8GZOYvoIUBq<(}GuX z*DR1Q$xjQEdJJ1~LcWu7elu8St!9Tbs)_DfeFcGZQ8cl4lW9DgGOaOjZ*(_hrnq^S z4*FP3(a?mHj1jOBLnaQnH&&NJyqwfv0XDWJYmG8$uXhDIj6BweiI;Vvbl18#3Mj92 zn|fH6ZkBb$3PTj~@es<60mhe6PPbZ_@oa^BuT zTUBo@roEQf-=(*Uk}?rGC5Z%0r&wcih=dlTC}gQcGbixGAR@)igg4U36O=Pea=n{N zO6o5#t<9Y6l45t<3ZAansb=QO7D8m@eoBAcmlyiGZbKB%Usma0!;)^!j_WC7whDvF zR;CI5pazTQeVQc48|%P^gxf$qk=g&`Hy{i}EiJ_14u`HTVT5%aEIKWOxXPJ^-+h`t zIu&Vjxg6U{ghl67L|K8?_=4{FvpQufhj@Xf-m#2oj~wqI>MaZqYh2m&(Oqt-{ zdX8af^_UHuO&zgT0kgxU<}WPZl-Z!LGl^zzqC0lTtpcTeAWz--LRWWgo7Ld#gX@@eX4)t) z*xSV2_$hQ;2f@o{&R)YprZ1#kYiBLukJ+^NNS^D8o=n?{JCn67JIbI%6(Ry)xRSde zN0=tC#_2j7WN&L^0=2i*+ApxT3GEl4@Y=DT)!~gT#WmrL034@>H&#V9r##F5ifken zzO)*Vl(^gb%mmW@{S{ops1jFM?9m({Z*h`qMGGsd>f*g@ag=Cv5InTQ$>xc$Rbi1S z)u)hb@+ZPmL*V1>b$D*z6ShOJTS9;x-H=^D#g;0j-9tFnDerNiG2T{$&hS>M3-)!K z=II4dI_%GyGsWgX!x2EmpVQ-Sw)EugD;7dHbnum!eVvSkRS8MF0Tv>TaL*4A%M{le zz#S)NGRzpv*d?U;n%plEO~gyStN`$EJ=6^ay9O8;(QPC6RbmqK-Zp>jhoVeCBBd-6 zAZnR@EIV0_A6fB?L}lX*S50V5nh4{cVEKR)vQyTtwN@4r(UW9SP9F1Q)3ad7?qh{7 z@sO%#6RODAGx{zqNxzgHNg6Vt@~Bv@74x#o6^@pDPrt?9OpDnqcUI+YNK)|md2opQ zTz}o=!;_~hfer8lySBLf)aAqaPdsZwnZHrDTSy;4r49T05LrW3KT3?+3Hl@!)=sNc zgtMC(lNgJX0f!3(kslT1QXTP&F&YbUF>nkOonJn&b9W4Vj^w~<)RQ$ME5ao+5TRHL zc)v|&_5s0#Di$b9=^CSW!xcEwYq8W~X3&E*4svXwfBZMMf9%S6_UAQ;lat5L2#sTM zBO>D{-z5ZiwQA-PiNZQ(KpxJ!kiIx5^_ZVR2yT7Qtb;<;1=+kI55M_xqTZ=q>^Xh| zm<3&MRo!JP*Cu_E)u}3$t@zeFFZ8$B}AgWX?{_wKyT0#D$Wvr zh}!4wO#Fh;hJkeI@s*R_o#z{bygwKAhV;1e5KF18YjLeA+8ByBf#JxL5v`q=T;~}; zsImBIDLxd?`u!(m9bE61P8QOemr_q;3^EmE*qx2w@djmCCWMXkjWlSn-};7Hr0ELc z2!W-^i_8niaKmiY(}~x|sCH zf=2^jL_{xEQsGTl1YuNXa=EYwuMlckI>;JIL=1B?)u~a6*Ihu3H?XM#Q%YJOnaR%8 zXu<21)83@wi3!C?BA0xS5xC!&HU&l(5|nvXHZ|lHOmewAIc*4qEd38*>4#>h*!%q! zDfe5X^qSom-ER>BjDtW>%*eXCam8q+R*yt*@J3h2w(t8bkbxz&(ji&%iL=ZzV#9O` zL}yDgt73m*OG+`u(hVq~F*Dch&@p)UY*8Ff9xdVQf1^`QpP1Occt?+YSwWL_{Y=lt zhMiSrp6U+38Ai`P+P-(tXQELuAK{q2PLr}5MTGT`#XgA8Jy z`(E0#AZU*3Ir_MigP|OB?~*Y_L z1e1fPWYW-QYs-Bpv{@I5IE?j2fT%voshwZA$qC#&;KIPBp5pQDejg$`mGe|;PNy*X zC?i-2o)daA5_>aJa@LR05n>2{tj7S%w6Ht8*xfRAYNJsyc}~V_gJVu^)sk{BjQ4Ck zBLbI{jOl^O$(e0F`8fM&W>oMRK$(`4Y711b1Zz#6{vweK)!3)BJb#XCyCUT_H_*%;G59lhFrK84@E3P$eqo zBGt^lU%{+`YhvdAjgb@McyNE+S*XLP#?oL{coA|T2(y&0|H9X>t&N+y<<#<~?&j{L z5=*JsBx-FFh^Iiw=9GA917qE(@be%29DZOrq zPMEWuS^xm7D8vKo&vtKeKNaLlPb{|7e<|@lhA)oE;{U}2H&VT$x_vJ3KhQe^xhXqY zvdfnf|A12L7(%VMcP{7sLB)Bw&}e?nySu}A3FgEkry*Dc0!xxTNw)i`9=0nIGq&6A z@Ka#BRMo|HLshU{RTbIpK5{%|woCjbmI|?GJ)b1ct$@N&Z=XCDK)ZNuCd@C0wOeNgZX!fAj{3j$0h1VW9-)TS8x#JNjTFh3<<#xh@^zNbh}8UlI< zKtgv9X#0l8eU`Q6)!O{t00Q81!M=+u7h-a00RC~YoFhuJX|dp$MIhFy2b+l&Hw+zmNg=;{Qgvy|b5Yuip#ZUeQChU#~v}y8YY# zg>)-n(8zW~yBFQW`*p$zk@SBu`MxuamQk6w0@>lS0-5pOsBK*C@xk3z%>O}3^VDo& z*XKf}d)DW^T=x#hb>d#_;t1SU+&pV_&v!pH2P{Q>7I1`l=P1KY;xF zuE!HXiJ*>v;h1gZMOAN;O_&@m+>Hfet^18EHAu?hOf|pz!i|&eo2+08f|kVo%cDst zm``!tR%bp;1#2)30UJn3R4+&g&k8AUX^Z{~-?Q%l3y57679_drASx_AwR`-iW$OHO z>pxq3Cug5Li{qByzMI22{O}xoUhwK!1OBlr3s`R3=rrcVtpUfauz*K|{@KFZK#x)D$s=b5Vo5Q$jEm{RYTALWRfFgdd zSyl~g55_i;slri2Sz7hI0y?4wYN}A9Szsf}8rjY@weg}&+l#O247?3(G*+dbfm(&+ z^VhLuvOzS+zkZB}O1;1$6aPoQ?9|zZR~>Y5Ro(2$3p4U3KM85rdT371m9E? zo&~0LTeWD)Z%L^_rRX*}UmWfVPu%CYT9m3j*WXNamcehiVG!;O1mVTqgRe&6zDQ&S zM%VOfD@_1R|42$CfdZbT=o^@i-_1O6PDQLbmq(-7eHm91(t+Vc>K zYsGi7;Mu(k^+yBRul+uZe&)8ptDL}~c$MapuFeM40}{mbKQGLrCqn>6$Q(kDPDKUi zQfduB)h-<%U%IwQ_fKjL=9DWNR6BT*vahz_l`4l_+n=w(I+XQ&OlXhDh$3d_3%!CRfd`#2=MzEUe#XL8reK#?&h9HRSQ0W(>>%7D*fVNo zD+jSQYC;3b_C=!h^=88t(h`58%URUc*}$$(o2r zqedV>J+#qcV~FKk4v9Qy)VL}$(kH7iN)iTi6}qPSka?DS_aoa0VxFbKAdu?M`Gf(& zbiG!#30b8GOBg*fm<8}q@YE~! z5@pSKCqp@45k9oP-c0q~y#pU-YA3{rF2$=zQMLf?yUTKPGFc(mLLn0;kQ55#MJU7i zPG{^B>gMX<8ntQTii)weg*vhJh9LO(L}>2^>l<`M723A2RvV&5o65l+u1`pC!mC{i zHw>DDA_!kN5>vucT=yhsVp;PVK<&l1p_F5q&cVP<+)L1~yS@<~NUXDN>7u+&DMOQ_ zIn`s|VP|?5a(ISFVxcH}j-EomY4PU1bjZ#NfZ#gTeWs0e40Mr+CSU9xAN$~leAJ0S z-Hp@vD1_N}rjEWNV)lH`=!r*-g^!Xh>oT5(gcM|G1zKN)V+;~}*F6Z_>jF+N%~Oi& z?&yPPc2MCR;Y5l*!y93D!5qdF{a7qRw7qeI$7p!tGVrCeo$LEhtAD+gVY89Ibpf;A z2(vDFP?tM*vQ#4qCBOkN^RQXzFhUD#>?q7>#zuA8so^?ZUqFw^Gz_O9)*qb`^uk69 zT^W_u3Q#BZbErsYSinx9_`{%Pt%VXof|zUxT`Ei$A`u1@ z+8`*Mi0wpJE(|ea6Gm*E4ZsQa;w{XefJ*2Q;Scas2iuFm@f5bMf;ns)Hr45!Oj(W|WdbD?#r5^*Z99bRjfKFyWJw0&WS8Y7 z+977i&DMdA97U%Iz*+@083zw5GX$g|F%yQcD*D zq#%>I%>uP{w-kX#HcWo^zC$Rk zu~Di7;T*MCAFQgb1OcUN`cu;%b|#l6n10u}ul36n0>o&25IB)IR7I2iSYx<>6R4J7 zVMSt&s7R)}a?_3Z1Oy@RQ6e#755hk~C$Xfxq}rZZmL-fj8M#AQut41s4(fPrvG{1O zt{v#lGN4CTZtO=f?=K7T22r)UwB#Nu-BmrSYqSsHRHmBv(^E~zo0#T6zlsrNpf;SZ z-Z<%(oEm-xCBa>~fAQKxeS|<6KGYwr_0pD@O>aRpLlaoet}p|TnRH|ywc4icTgbf8 zAxl!cvS>&Re+-k1*QzO$!>qJ9(@8RZqOP>jmz@M``1fgs$TMf1okmxiGGMFwOgv!I z0ED78Y*xsaRt<^)TothLSiLg=YvFh-#b5a5O^vfz&6v&X7SbAmZtgEw2lzs64xh16 ztG`~0#_J)`-M{(u8z<37D0%)mgF=H4D!|tZjsjja6`Q<>j6|3MK2==?%O1cB+JM?( zc7Ut9(+#y4iw8+G;G;}#Vg8g@EO0Ul>U{2hb=NIZ=CG+WLPP!fR&Ekwe)z{e_Kxs@ zDfh=>e|9En;?DmXTEC5D{tI!%XEu43t*>2J(=mG62`!%aZ+_kuIwuL z{CP`0U)KwY*-32Mqv?U!P6a#XZJJb7kcA35Ko3lGm7KTfouTOsltlW={iiSaML+-= z_OI`*ULX6|SEp*ieh+Lbh#<4bV7vXYcYokrBR`n~TRT;-RlLT~VkHf>m}d@b?NpV7 zt1W7+6Eh12Ldg=3Z+w#Cbo6-$krA-bg2WQNG1jT2vgPX4U7 zA9T%gxAA#krc7pL+U@l=^?R~o4_FKu>QYg95sIoVRsOkC%R{fc=&z37#^?T?y0oak zv1ZCa-TtaoI>%HtyW6Z_sn8Sq$h(k;q@hfGmHn~*qG;`!y5V!lrtKJ7$iZ~i@p`F7 zI*lvyLoXhZEA8ZT8qnC?CKv+04;qC zK}lEr`nsEMx$M68e}1Jd9m(T{vD(Ao{ zfC|DRv2X|M2!mp}NJ-posdVUR_J+hsE|iqkKt=D5Zr>zM;4e3=B)xj&Sl$6fSWpBT8s&lI07N?7JW#g?OVLcr17>7eg!&<%GG6Bz zp(5-8$`>G$X*r-XoQ`2lPbwEPvg_5|)h6mlR9s|sKU4S>D2ka!)th95Si<`v{W==g z!6mS=gu6YsUrrI`2YA(+S_yAUeOfdRDox!J5pf5z#=GBNC52E-O!WNathtEkU|ac% znwhr`$b3r+Muq2M;^^@hZ7wPM+T(jB2T~;b?O)ne$QnCoEF&Zw=&swpb)=XFmnGlS zT2_wS)HoLtFHX`kMDTz$A5f3%%UvH#n(5V-UgQQFeIX}L_J`Uvq0RC!$WKFw_`+msKSoUp zCwMwr*RE$1pk~lM=_1$`lSBS2b!EWs^IK_iS*iQ*4kS}pT$+d3II%*s4y{0%cqLgD zAmA)351VNoTB<7U>}pn5jDj1e0eaYWP4k)br2*u+mV_D!-?)&eR36Izo=Lk6S#?57 z_G`HMHM4CSVM-3Bna2eytXpIxp1Cv)L3bwHue4joDou4ra}1y0WZ{1@wTn=lDM+PG2)zuJM*I?qK#C?CSFjubB^t4xjRljAK=lI>UIuhIz<}o# zlmYCq{8_3$EH3@-dz{vTzATEU_<>jJr`Q%S`Eo( ztz{=3@P`k){~z)@pI3HXStgg2d&3gT``OLXh^5(_Gde8>ra2F4_9Huv%U#1$w#YU; zcLufbQ&b}sxP$s6@_`>4{qQt~LBzlgj~EO*V&7wI(95b41{gtS4tWtcb)F80+Is2B zNMP?B7>OPDoxq#}+<#)S0L$i7#V`}5w8)~v2aPN={D)5St((DF!Sc|np_(NA zJ1eY8ozf8ZAT_`Y_8eRzKO503c8vv7R(lA8az|9W#RfpN%+rzaa@ll~Wv5&$3>PKK z@?>+gJV2AkeI4EZVCorXnP2X{RzqYO{c!p8|BH{~%_I5ntg~P}s959KIie+rGj(?d zrML>JTxwA%P(2u{A;g;Nn$555(ZDEv%zYDmcug&g}bdBnnrZ6b}1gv4N|V2 zZn9Y=XxMxTfiF=Ts?Uv^t|@*skR7tIPf{$t26d!Z`c%WInFsf`P*xiN;h{YQej!L{ zXJNna3)#)Rx7Hkv<|nk11oBAFZXHAyS~XNI_I47sU1ZrK1-apD1RY5($SXl3LkCkH zQ+Ez7IaRq-!m%Dt(_^%Gh#p9nYDBG%24kw3?qxj{e#w9`gQiHmI@{p>aer;oC9M&R zYp{e7cWGaqEmG zz#=mk$W>=3!yO3jmo{Tu+*8&btlbOEywYVH=<{6qs)~G4E-~3Q!W?TV88y&@YNwKm zm{PGMW{R_!FZ&siam5x6`MQWXZ3{|kh=J6pdN@tFROrM;G#_4M=CF>17Q@`AD982z z+N3Mu3_YVYX_#8vuLfqyrT{Pk-eX+k8A1DP+%Y*;pfPh4 ze;hp}AWUNy=Zj1hhn3^*Q+A!%9y!B|GuL(Uxi9X|Y&y(+o(H1{vgOP0boSK$+J*(s z{wjs>;{4%u?j57aAv)S=&)vL#b6I&1IWu=%phkg(F7mu3m>KdvAUE;Xbs6O{RY`cGn!c@Fn^t+(fZb`>Cly5-U3z>EX~rR>}WjJw06`I;vrf$(}z zE>wUjV|KC4eP)+gPJ3yoW-2Uvwe4G4L~EpH^dZ&PX_qZnHZ&P~7{6>wK@n(K3Zd=G z1!s=gat_Thp*3&G*!g;veeDJp$`bH^5M~;Qi_Tka#x_zz|BW*aU>{j99a&90 z18O1o6Du*J@cQKf?y*6M#+GLo(>fARfPVnu12sd<4cg>wkGhm-f=PE>y#TZ7oVfN6 zK6UUL{^?u4Phjh7&w2jf-PZsN?@9dk$}vc5>kyblld%y=H6kg9)L}tJ%yiUgQ$q9XnWPn9N`2*jI2&N zKx^pDd;*P1Az zk-MK_x2}%7UV1=rAdM(S;GAvt;?-$t)4{zHF3O)*hiD=k`xR7|)XogQ^;#-%#snhe z*AZ@3{Y0EM84+#5 z831*&Z~})|H0XVtj;f40x<@6}(VPJRqfezJ!)bR*BAzGFQt0WSfws)83iwM2YV6z+ zlxBId)F-E`v#>OsT-=Yg*IciquFMGYNcW{oiU=3rxi>3jn&RB?t2D|A6~L_Q``yeR z<)Z{-xc3rgMNA^vb!T+~pvKFg^5UWTQF97=`I!lg-FRtwSEy{}M+rV753j7p@vo7FC0i9Uk^+JS5u{LKL-HtSV zC`J{c!M2&{7NP#-*o5~II=1aK0k`!P>}a49br+vI#o*O;T&UfgF} z(~13i4YN+=l)3#~0%TwGvuzYFV3r0>uIT~a7gflg0{Rn~nQMjExejac2X^&ynfIE| z1U0M7lg8Pn_Kh<(7M}=b1nT^sfV0g{fV0i0)7?0GE|aAvJ~0b^lhs_K+7R)BYzd~R z|H!8_LEp}wfUC3^Z{wRoM`UEFv?Unqf>kY-A*&)zr(xA1-Ms^fFm7pY?n;g`+VXyD z9a!w1svC%_Xfs#pK0cayAm|D-0McU+0?|Q~WAp3eQ_L$nZqxCVpmAH{E0N^3)UpW( zpAtuqqg7PWkZxOK#LGT5#|TX^gRa)Vu#H3Q%r&k4-d*GVu3h7sjA>|7kqWP?Y1atS zv|n3mug3aSHMXVJ>OV`i2Furs7gv~1PFJfqFSJ{&_qJN^ZIx>wbsweG)~d&L?RUFf zMD}*~?7kB0GjvaVf}8cxka~JeYu^n~Qp~T2O~3|Yx9k$kt$2^06(!1WDau|N>Fe!H zUvF>h9u-vd*a#|y8euGn&&RN?4sVPq_)~1VnxD=m-P`(@tSm{E=eY1jo)vsvAy#}t zW_cuS;k;pubK(8lrK+8 zvwbp4zI=eKJ_^N#CgAQg)9Jp~&+gT+I3>z4NEKIVt0<8bFp(~vxWC~{s@Yhg7a)c= z;1}>(Y?gV2!dj+`_h-cwLn#g&lxIGpu4?r{ebG;(D4W~*N%AN*K^}|c?yO&Ct5}Sd ziMXf_!DLAri2UYz(ORUgEmGbEdMw63nqy%FYtLcU=fPSuh|?X+2!+ch3?uuYj7NaS z$;z195hcz0>VGP^cBDV+%lrEJ5;{!D7Y^rg+Ol1pT#YRiv(W>QKo4w#sKxTTz!6_v zWy_YI=xdgSuLJ^<_E^cM&DTVxU=s-S61)+xq1q4XHI~SxIqIOCa1mbtgO)tgG4W7tssaV@1c2mC@^}P zSM?Ue07I3OR_UcNBTU!)AY`?I2m+kaea#1*<&^oMnHlz#Dy(J!tNR74;?7{m?O?Sr zKUPsHo+4KF1FJRjlo!0brB&DVqbH5^lk|gmvc5{~#kaL*UC|D$&lZ8 z8gCjaEtWlF)xWo~!lg3oYtAz$>6{)Oi2I$a=D0uE1U`&j%MJT{J2@Nk) zo%-E79#*G~M?6AOjYmb&{TdCdYhBde3h;G}N2H=i|JHiD>3&=fdYTrhH4-*~MXp-X zEsy+~+Z5k{Om^K~qR(UmCKw5IL}0`&`ZQH6ZQ*ajE_xBuVGJF_41>jZ{7QsssL5?O zy4ZqsOr44htIZTx&rFFo$;y~er>}uxhNwSul+{{BDo|BmUbh8tkQN7JxW%(b#xHIS z>5DSBWWtmhwJ(;v4y3qanw*{uFQ!$xt6A+UGg)4WDoA(J$a7}Gm&sOql&uCm0smv% zc4U@56uE%dVE%;e&4?Clp}OiQbML3JAgcDaEmC-6F`kQy77HN_!jBefy#NcWQs%JFx-E1qWb4X1N#@V|)6?3!!`UoWuEdN)z@(A|gt;SC<34(*xlJzN~Q*dTq3eXIa;7>U5>7eHvyVyJFg%3SeUQ zha0k3p^r*8r+$Q}Q$d_}mp5eb6xKlZ72r%VfWKV^p>4xUileMtHNY&`T2f-8Nh0t> z-Ix;1xrc~_c22U&j}FMF!%Tp?KKV=ro~w+D|$+zvd|J1SM|8!_>n^P z+7tz1Q(~WLs^YJ`P3;Nfyd}+dskh|I3`i)Ri`eZn2#2yV?R`OoHTEJ?8)oTV$d{4e zt4H!e1qJS1cJpFCjbkNPq$ZRWXVFSVon8`z-|?_aE~Pd#{2lRKby^7gxTlU3<~L|# zwENVCfEv=&2$l>R*x83|W|V31wk)fos;M1Hw`33!9N2^PhBx7|U}9R^*uDjWOD zc;IlSG4!sV5RQH}w&4qY;-_!9`#ayi;NDx#La#Wt z8zS1>ox^^dk(T(})75JY6C0;q?dKT`pn_%VQ0D6t z&_VmWCg5^8SvBjFf?A1Ff{dy_=N>!IlnAr~ZvLpdpD-YW7A2G^ot78x!Mf%iNZm&l zG8o3_WAkjSs|UqxnWE3Uscnjf<>@ddaxv&WGC{O;ccp=i)%_7Cw}^Eo)0`~wa&OSv zkk)F(R?=I2%-?p4oE83DjvW>i01W_(78&h`T|Iep{-P2D8L`4>K#oSayOzMakRlDdlLl;D zuQzB?ZnvmggA+hjKbhQhyNOga>5TVXsV(JY-}2-e+c8RQM)-=HYQ!bqAFC`-p|-Bb z@9iv{^TkUl`xpv+uyS#YDE5g_I>4L!yoFgyld+69(!jRV{>(k7_?cNSP3Ko59*M@I z_j#(pqA#ZR{q&=$J6iTi4CpHB?dn2CN><8$!;QiMoYvy%xohRCj7Do=jeqQ;AWv7` z!+E!)K>-%Y`*(gURqfPx^~WGxCcqf2h|k^dvDlstb`(e0(xh>O1X|eYn0%m_lStHy zEY%gBpm@9N>wVlI4?hZ4xkhD`L#I_Dau?hf>4jg7unW%sX6|3uJC$7krlLbT?D5XD zYU1g2?T2E!nrYRyRfgc;k8Qc(`*;U!n-(d`g4MTe`qfRH1S^gKL4iTiVq$Bq{WdFM zgWo37#33PX7^dQ(94QsAAFUts5Em-1SiRXq*Z-Io5H~&rM%}z~Mb6~%IOk`soG z$l!BUWoW$A2Lq3P|W8HLd^vrvtk7uSxAX0>|zUmtI2J>_3LvE9$m^SYmX@18xc#h!CiSr9{dZJ1Mq72))_ zbqoBdTf`($mpQadgbG=Zq&sTe*5;x`V)nX)kzb_CG^A)FPkyx1uF+=cnP;>~{ogX$ zpa1`Bw6kioaeDkebF}Zs37_IqNm%wjgyCwI!|!`$d6*J#BF%IWJ+sybT<5)^{`NE; zLg6(^XIkbG8|pSK2M23|HOZ7vA9}8)<&QN`66QAqDy`dUE4F%1wve@QSiX#&IcFJg z?yR*l+!Zp&=;IkC%fQ6t@;vHS4Ld>xg|;UFmj`29>JqcL(+PE*-VwgS z0J>qt;)49#+uzZV1sSR>1nLUietdCp@Zz!S#9+4 zOC06BIqM|gXgf8pR&O%-k6fzNH1b4Nxfg}SM0BB`6A4r!h>pq5A@e6M)l$5Ry@g}# zJhRfLQa*gnJ`jSH4<_W_#_njXeUCA6wkO41YZC0~cJDx0Tb?`@yFD%KPLZc1pQa!G zbPyAE{&!g|=(WGYYMxk2#fGcz8@$5W{q{!9aVNWyJCtB8N$%*8Iuie{p$vG_N4JS8 z5gmizL60SPTu&Ha=0lnJ8@8|_g9f4~36E3!%#m-9Rx%bF{Hj7sH~O((S3l_M+RNJZLlutpY>S(UZLBW-`Qg{Qq`D=H!bil8$Zb%7kCyyE`}G#29h zfuqDf{_iyzmPGDp*sUR8Qc!jvk4yg@dzt(55WEW|ZU}uxLBSB3McS}6#ejIkHfS>G z2|~Z=30rGfKdx#l{}R+%gK?O5cHL%LrG?v82YYw)2D^6jY+aG`_d8YtN+d!K>VaFW zW-)U6&v9fZtJ8Pg@KtF6zM>aCT`yJLW{QA`C?rxmgg|=mhu7PcCG6oL{D3c<74%Ls zRhPS)snVVh4J;eo2)W{VAqWyS0J- zYd)bU!-SKTjxyN9!!|@hqg7`)P{I&{BW#L=J$4h2%QGZ@ z;n+Td>c{u8PKGMTE;=q{c9n|H{q=?`@Qlu*pYB5Dqj;L(tLl3}4a z)e^O709DwC$O3ahG~u}C>N*nla@a;sSq0ds%F-loh5}?VZ#1U1<+vL0PsVXFh9>>Lf3@b$L;!r((k9fz*oy=u=fw`4reuF#cdbWGv<06~tKVs#{clv4 z#0!6aNO;>FN`Q#C6=Bwmv`gI~*f_^Eq&b##|Bmw*i6 z5M~lHh8NQnVtzthsDOZAWYJU%VLaP?x9Anj^^+`qlt0RhqFDt>Qh`!}V2N(#sH!2te!w(kj=kIC+V1qf01=^_hg z>eDImB3W6B=gmrykToT%{9dqSQck%c0j&dE7Q&wwwiql$dqZ{@Ygq&OtREl*-5A5I z{<8YqqlPhPODGk0rVN4rcIaS{g-y%XUo)3-;6wmJ!=~Kn&Db-1`jylWI*H(6S=h7C zlT&BbIlqHIl2Y)L=BIv@y4AW{9*&@T(bsHk)`o&44%>N!sG>#Dc10;_|4XmAs!Z7+ zs)is*&eR?jh<**b0b^su_By*|byKQOKgL>c6`gGm*U&et~-rc zXZuhwS%g!i2X&X?{{F;2NGoGn(8L|xcZkZTd4=ksK8iLGCbUf#qE6FO8qgLK7F%tk zVWZVzEdpvFH;Rr-C2gmHW{Kl$L`UPPIY0-yw@1Z8ppx9eFiD5j=CtZ7wUkDyDQEV%D)#i>QWx87NAi;4u#98hZWFuKFaA zse9mu0(-vGBsu7<%+x$WZ!$jtFrgz7z6?f=I$M_nn)OR!npI{ZY>lvSv`4|d*g5>g z_tCkp-JyRERh>gh4`|lbWPyq!*H65+24>uLU2X(<*l@>Ld;Dy8nR?AEtIr^x@96%# ztJ2bvgwNUnl28F_e;JR7wQX%_84dziK`XUp>NOKxt^?*afCXOL{46Xw{q$;1NAi=a zgU$a@!cFletT5SxjWrR&XD>C0wA5B9Sh7L25G)D~XDfl_m6+Skn<#G(v3!-+Rt?6n z%+@RFt@JQ%Yc{dh?+k4~)J5@$6k#iy2>)XmnEVU{h|TmbPmYvm%=0vx7`!|i^H*aX z?eYG{n5*r*&)4nl4YqWN5vSQryJA5IWV^;NIbkKQ%7nM>9RC_})O0N|hBOmpyDE5i zOg60U0zV%s-nKADyWY@W&3j#-Bpj^Kaa0ji*lLTrYD_-$2T@t!xf&dmkx7s2?8{aA zaSZHn(4PAmTOgLjj5UQFkYEeTw$ae4kQtWPxg3&;rp*Qid%!V-I}79mYj1c)k80}$ zT8XoOA9imwfi%@Tc7FX~`{}JIeQVfF)+@r>_^~;n6?h(3K(cVXnE8_ea=UYJ!_fU| zr0uIB!eWlY9j&(*Ctks*Nm0Q0cC{|7_9?fFoy5QZEH`J5hd0_Q-dNJIckY*469 zkz;q{e6RXXeOIO0GUtcJo*SnaWAQl-U25h#V}^rVQX2SR11D2>yH4^YV7euL0S>R` zr2|mDu)rP7uaV>P)jUx7z~36unO_Sy@XCL7Y*TD&Fp!0nS;6@~&O_pQOxtJ1En#*G zSK!P_58>5O90GK%N=HpG=*DOj3=AN2|b>Tdj|D^>2-aNxz{3210EC zN>^LeIF$=3tXf+Yj(2Sj_EbQMwPS5-4~J@3-HJin)tlJDFjU#01WwWRwonZ(Gk;Wnu0h*xYyS{yv?V3e>J#~X?D zkbj%pIxsW&=8~02ZP84uE16{oAX#!U7jUizI49tkF1^5w2sl1*(A+*Xoj{_^?zz%U zYc>#o^uJ`jh@snz2gTf&M}O>AuCT_khMJ=^kK7+USr+UL1%=ym#TDvVoAaBMPo3&8 zf4#AIMl|!I5&S*mM#{1T8DtW1STjKx=!xq~AjN7#R*FNYC5o_w8ELT$Ya)l`sKew4 zTd}>nm;o5MSBHk$`3-zg_8RS3a)O1;k;h%mExH|1q(6!xa0U$RQ50c|FF5#^F%}=Y z<;hW+?UDs#Yn9}JxDezOs&*`w5=A&3M3yd5L~~x2LY(_d6bUv4L=h9*rE_4Rj-rUY znJ7XCSW8owecnjZ8AORel0*92a!9|)1*mByZ>$Hs!biJ1u`>uC$LC?A&$y>VgykKP zqr`njB1f>)%Wx^IxEkXjh<=PAP*BR#%%F@)V#<98C`y2OxY>w1SMh8Ukt z6n6(Vk06BDa3e23Er{T~@`5%%v=rMy9BDwSC}BHf?y2MjF^_imJ>-R9=Bo{Y#1E~e zZF%7-RM=BNkG$Z@Dq4=@1wzv=2rKqN6Ki1cd08CGI&b^{9;{_X@;i8He{?P$Pz8imIdhqx{lI`lHvxaDIb+k5|{(qOz?zU zg2}T&z-!+Aup^s1n{7%2bHor~iHDO^CAAkuXvi`Nypm1yAr6yp2PFu1dvu8*(lCV( zDT#J$3{&$;Cq}m>mJC(HW3mQP0MZGrSmI9hor_8;=>)^<5&0QR8y=3O+e(O#+tUh4 z2Rc!6*Fdh^Hq&Al&S=97oNXeG(k^Rq>AJ*in+t&;V5WPBC19gkDyv$#u$D#@oCOJ~(()lfzYd zro~DSY5Y$VL>iig;zldLPMfI3bJlcAA#kw{6Sc7vTP)i0N1G{%-zjICSPZXX=t2JA z4f&%#${*L(Fonc>4`$gi)7frpZU{;sPZ#7F_tbG-+ojA=(%5#E{=8}`{CiXpdodfZ z6N&LZAH!T`uO#sUKX44={6SpcC)P^6SsFj9&HG&|As<%570uy%LNCW@ZDHSZ{npOF+SKEqkWWno*~VTzDr2z@uLMMhQ4XBq8sn$kVmfQ_&s!0{E3Syu>`+klM`B3u-SKzs+@p)4W( z>>fo~jh?6^8?AO88!7crEs3eWG3;5r^_^^~wYZ~RQHYi&3Ht`_Pca8BCyyX>mo9B$ z`xgl=Q+RCKb{-{xZ_AS==H!d(ONyfjjig$&2JwkMts1A`Yc|hgdT zRR*YB2Pz1F&ddW<*@lWPrM7JuAVW*5{PQHsn+7(Lrx{Cv-=V=X3%!+=o3^e^7-V_NOjy3Ce_vi zu8MvF1)0urx(MTN2tjhGNK4TSKC!g$v$m6I7^&!juM=z42ThPbTEK})NtiNqB= z_;p+W*I&O2n=A~RkRTeutSUfGUR3`%FEA%VO`ip)^b<`EH z;a<^9BBbW~q2yf+DYN%zJ0Q#-){tYetK>Yx%C?m!UWnTC(#26QBWAs}Y2_@3>dIv6 zvaXSuxgC9CAxvRAqN&0txG-S^vls-{Bw?!ETvZFF3|>U-sTN2NgZ`0jk2_QCNxS-1YVq!c^Stj4uSkZHATXm60N6n)Y#2bAHB`8dwK z$MlWc;ev!8)Gz7quuUz)7zRX=P*`=ERlKU-WW2~cF&~&HY0OfMAj_6z|4eJp+)MOx zTt5ldGF~=rVSyjGg%$>Hq5l3`3YKd)k3;~JcAWu28k8ai%htY1Qrwyc522mWLkQp` zcO&iYfL6&SIsATJ5hwKe2(J<`c)g2P1Qkz}hOTto+7l8P)5dV?lMyKZafziR+wLMc{IMgKI+>7Q@S^g?$pG z83oy!E!_;3`<{l*s?p#3aUvA<_4lsS{j*_pr(BB5w7AYLRu8AUfA+l`CtQO8(ha^b zU|T~1UCZmHA+HgjR z4(tTk9USo4_*v6Fb{oWo2cLyiL499!NCvV0MoC zcAwc%VvUle0t+lH8(K}~KEFUv)q##N5JrgLMGtM22lKHgi8*Y574kW0x`AZaARb|X zNAXaFL5LUHcmr&~!kc(%@o#C{Wp>b9R4Q73nMi~2-I_L0>F9pHTjPsK{6YuVxO?}# zxqln~U34$Yp6@@I0IoQ-;O(zFYPm28cV_=Sz74`S09*5gjgcW#v3{+6Lj)hGt%EnS z70>nIC&j~>srw?k9K$_V7edHg`i&yq|O^I3dR4tZlM^8@i*hslksKx;<^YW&MM zpOpn&iMo&vY6TF*IH|+l3eQUBL{2T6rcmH2Nm6GM|11$`hzJKM}h$D zftwCQZrVg2tNZ)!geABi^f7`(7!i2CAVD7)C*&G}Ra8-?<0}-jHNLV`Z=p*NBPTNg zx3y*z4IXaGU$`xQ1Gn`GJi^R5Cc6X)iMLCL;Ptfyw#+g9?lEc|=bQ8xPHaa%5Q7E- zjeG%R1g`tXOsMs{fc#8pOnxe;k&jw}xqJ~$q9^avH|ONtYzZ;1ZRpkgC83%v?Yvt; z!q)D*X34MnP2tmYJMZR@a9umExoWVUlAr?}cGMoOQG@S}afs9a|D=8FqgPlAw9F+~ zJG7U>P6z$kKF??PLak7sgu4Gq_>9E$@8nKdY8P|g zX9i%za3x7n2CJK8f`La)x-HW17-~_Ud%d2YktL(&m2){WR=S_cSz_WE@L5Qn4j!qzPWfT4?tJe0FAeIK6vSv?Xt12wWv>dX; z6{p8Z%1vj|myDcn3yOobH9(pQQbKO`tryBVReA{k;st$e4^8U~?7`i*p$msqeK*hB+ym*!D)4cxxjL@KKt1sParf@=dR67U@4URX zwdT84MnV!o5@o*Api50Or&VNwmo<=taOvK7w!0tpr|wf)(BoO5Eg&MN6|$_M4c(~G zq9O%ZS!hMH8W8~nAxEjE6g4U!-NhO#RjO3ut~7uIR=Y)?*ociTkM0z{19jM7khm zL7k^Jb;_A5&q!El;fgwq4CP?%#40-`wS?sTD>|mBNY2nuk>qZus5Ib^yQ+w88EOBz zbc871!Db)>i@ZH(JVGm>x8<|CV7Imh4r%K zJ|wZ&avLh-o;~Wix1d@hmrty^X0ht^F(Ll~b>Q=oU0@hN&0Q0&;4KRKrlq&F%W;W# zst96&bp}$D;1nH-pSUN&Z_gw)E0s3Yof3%|3wDot$Gcs3zh|oUY~gSwtz0ooQ$3sT^)nJ(;MV zln0cVI-tz@1Iir3I=HnsPEFBCnz}D9vcYy1TlAvz`v9P>5<`UvV~#-3-g)Ct;)zcG?hR z0kmR`=tGgu?R^O<0sbBS655X6n$a+S&sSya*u$@C-*DV4`5w7YXxfxIe3!GcTQiG} zH1!PD3oFvo9zIRK_yUwUgfs3H?=JA!YuF-W&V=om`3E2axHajmj#gYYE)>9u+Ob_F za%9>S(=;Z_VCphU{46{!sQY~7GxxEKPBQM9`wGdV_O!KXa8aGgnV<#VN9n{^$C}Ln zKV`>TI)Jf8HArF<-_5bIgxc)$WrE6-9e^sK4&^?Pn;I_5)-^F(@&KRBK1v`bH)8ET zWto6sF>1~IU*DIzA93J3P=-{=$G=`EyAmi!GIr}67)i9GVFyD=_O+S)1o^0N(;uY^!V@DzLY<(TAwyR( zmnB56O;TD0vt1jVq6I8Pk@(v_4@1za56W!SStig-J(rW@l{A*YWilu%v!(8AOM~NP zo570d`R01xOE{4A2~Hp;Qn$@<(6JJZzDPl2=jI)i5@}`ggRzk}_JBD!=#D%bUXra? zC90m>2lYP%MU$r_!HeEf3X=f53|n$=SU-C7gZZf2vDhsTuT2L@(@VP?8-OuJ%M9{x z$Zy-uBQAV)AE%`~lD#7%BfK7dB)i+yH{v`~7t0IVr1K za2CScziW5qgn?vKjoTffE`IbJhHiiZcKm7}BHOWw3GRzC7-&>Q;7ZTZ8p{g z2+%-y@Xd~oRiZqnw)vHfMeD;VW#W#5qp}$=_`KvCVN(VMChg?zd&JJ;(KAO@bOotL zY)rlXA;IyRE1SZ4>fVKe0%xH_9&<7?=Teyz?^lME(ES|zUzcN^3X{SmqG6V%7*w_f zo1U46H|U-Hs!fLpjx*mihV61t-4)}vls@ud*jIQO`jz=?Vo^R>4j9z0Y)rriLjV)s zr#l-bq~Hkn0Ic2l&pwpa_x|$F_4R-1X5v8N65+81e^*m(v_=@1ss!Smp==|bLLT_f zHKpxd1^P_^vImeKSe%Q^Cqo1<)L8Dy(V|92fsvC4NkR4tkfQ3p&{WR|Hr>mC)+bir zi*VZ8L1~3NzObmoClHuH*%kWP8 zX}Fq6S$eKQNu?OX?^K$yrShROk-v}{YxG+m>-x3y?bJB+GEU*vcDIalC~tJ2BJEH(nA^F_B$#Kq;QsYi#(-mCtd4V{^SJ%7Slw6B)K+cEX>l7auV`HPG zv)hS{*E6qiwxPs}3%%cY$2gcOb&jU4;SFRz&{6Y#7h}r*^>&Ozt?mpVlJ`0=3mO}X zFT;UqR)jOraDK5~Y=)MtOV`@tC24_04+ZmkRwSVy|saPm7ZwG zNhjb8LJ(V`LwzHdh_Kt?A3{j%!WjS!8qNwmIZa(SI(s=k9My0-KbSVJ0FwIziGm(1 z=~3n{W@imUq>-?6pt?BUZ(k#>rL2hAw4@Ot$-qgd;fAO29E$I{$9s0=Z_yK#tfMXf zTqQpdOOp9{|B}J&($x8>ShC|n2F7Gqr*`g{d<=Eo9ZR^_ zwvr4%H^k@&H5gGP%6WZGK-T%fpb^1^)cwt;fwp~yHYCfihDe>wn3w?#>MVJc4Z+qp zKHK!mAY7JG-9A+(C!vi(O*BR>b9(=n-p}bhKG;QtuPwUvbf2n?15 zt2Wks=^F4NQcL{XDvcQ5u!xQ4>ZQirV2qb$woq={%5xU2;dpD&>!JSLV@SFJVpArO z_?YvrcC)c@2FX_xcguZ((nX3U{90uS`iU>ml#RQ$5I&=iDmoUnR=}uvqlgg+6=hR3 z*|opBgb{^tnj-uI6Q{PoYh7EHtnk4zoVw2uBuMk_3ZQb|MfJgVF4v2@GN>^ATQGPy z^*`sLQLPbM6%=Ndy%aiI0{g6VgwPunPSv!?Z@(U}cCwK;O+g&?g3t#JwdEPE#VI=| z1EzJ5MNy^s%-s(%rn%Y(sJBF+&~FGlaj(8+_G**yFz6`u{<_ejy}WHvSX8FbejMm z8%p$7+n0(q*HmVT`|qlm6cuRzg-8?0$-pVyO68`753{Hg1&EF$7dh#8c*@(};ttcr z3?~^X?sMq?OzQ(xMDdwmW3JS2p^ur8WSM9Me(L7hf3RIPzA~HqaI!Sje zye9IFWIB?SYIs69StRROKl0&;pS4c)+#RB>x|~^tX8jc;lRLNgyR<$&4C}&3Bbzpx z1--yj_~iI4ERizJn0O&S2(vfl$-s#ITPfYd2I$J9mw)swv&RGPbeE+o^~78z(p*7= z67tBaTkj4%9bGd@XLE6|4qsA|pDB9y1;-HB3Ja?s^0l)DgV!D2BVyu}HVxfB1{y3n zBq$lSLVgrjq%&B$i$&~UX=x1YaI+})0%<8W8d+vO8r4rWpyt0l5!vjyQ&NeQDJ&(^@J-)doftM>6tq>K4u^^wdsW5 z-l~;-(9a0z%P>Ogr2~L>X2t3C);r!DV`HZ>>*X^R8bI*kwke0xo3-u`$4$!_Av^)z z5p5Vsrs(4bE3)?I7nxdEKUwGc2Ya$Yf+~4e2$x5@fOhC9nELzgf^k598hfravgW8Bc`i#-jtcvHK#XQArte4+rIIR9 zC!sO+6R7%mv`K&6xAK*Ee`IcT)rzT2J#%Vq^>K-dkHFaY?yz^w(1mUe(x;^zoB z;d>Nn8JUd^{-IE97DU4(9sH~0B5;t==BE_Js39$O)y~vWBcpy6%#|lN za!%^HYU)H@I9f^lEL8FYXRb-bS0yz=9j&B(7Akpy)8UTJrmT|IK_IE0g-Tirt*_Ps z>#Kx0te^2e5`v|2{bo?s8Vr^JgHksBy)Xz{`qeSWDW<a z!w`ceALMd;!&ih*FuV0Dsk?hjYAhT_r{YOwF(Cv0l%&-WO|zQAM((rXDk)3KA#z$z z4;C~{fHn?$q|S-Wu@k9#H#`!iz}yX=Nxfx;N6!iBAu}s}_63TX5*5xdW%`K8U4=|U zMd63r=cd=EJT`bvUUeLIc6g7!=ibzjNyj~sDS@hS33pkBtmK?(X-{HZS4iW>BaVuc zx=YgFBg&?^d7LOs`C;I~%9-i!4Bf4L!<^5`}x+{biss(V;^ucOlx{%Wj^po`Cqp_Jw}N0AU@^2uJu^7A*OsWR4!4 z?J@-DkOTZF?m@CZXX0?CJH(H%mC#XsFZjjY%p2f2O-zvbh5d@!%*e1e?Db}(rLr?3 z?n5}9#Ixw_kFwy^X+Fc4tUp5l#4qUBH;MmwK_h?}J8g3g*?Vd6mf_{j;pMA01fg)~ z??wubR8fC-kDT~H&Bon&PYU*oc+niVX-h2m2X^7c1nou=YO~*DT{3*bP4h-BNzWWA+c-%nXhQ`x-$`vcHpO=|J{TU7sYA^i!IX#S z)hY+SsIlxy;9I0W6xBRBduC>B!l3Y?IV+=V6m0>XBDZTij=d=zL5ztvWKAynV6;~Vv6;pPrkkz%_Q2dJ_NJb z>NPN7*;A0UJe+6FyyuuGumumzk-cxgS^|j8R*}_f04dup3hlGdNi(k(%~wKJG?k#< zGBqOPDW5CvZR9ES^W5Dut}%vBCGHxcCqRK`2i7?db?$CZ+~`6)1jh59ha6Ch$CMd{ z=pb92-8)Dh#GJCX3+;Q&pm&TD;XQz7WZIF^mIaM%(1OomX|vg{o`hY%`#i37xvLp+ z0rzst(G)yAqFPi4Njl)XIBSthnE3?f2s``Lc0CChr1G``zyZ4OTeG%1*>d&-#v~biQ}59c1XlIUiaz;p275 zdg@KYN8AnMtg&Oj0NkvI*m`@viiNRFni~34lzli}E)ZZ;|cxP5L7UN`j6 zT|dtB7fB`V{akjv;&of3sMOYH7G1}gwx3{0z067V9vY&>FvmlRarZvHleGy^Y3Z&9 z{<^lDN9)&pNivh_QLx2HVBLzvhi7VCf$&^S5j=gG6=VLgFEEeXDab?2cFBW>O;%~1 zBrH7KOu{e?d^7R8b(jw@+g6V5GW=J+zx3rp|on*c2T%je5PHBF1;fk9fahE3)iTt2Zz zI$%d@)hYb!as84r{aE6GTiZCpk&tulDtg9q>7OmsY{KC{0~11O_90rY6}APH*Dcoy zoD@#mf3~1?NU}cR=)l&|)X zfuwbRo3@g>Z!nX=g;$P1~kS+CM8Kso51vVKx=*aNyA=t7huy=Wb zUd>F2Zva;fPBFBw_H)c98mnG(u8C@YPFPE}r|bQKr^*^2aa3XIT$dil|9Qamm0VwG z*HTQ(9J1%v^ZfcWLn^>~FdSKTKp8@~)Zhe_UeXlyWL=F-Hc9H0alfx zJ!>l>K(rHRA0{NqQ89`33(Fj%q~+f*%h(7(J|ag`7CSL7HbIau;O%VBmp>K?xK$Bj zNYWYqlV!}KKckdxQuhHVOgqeO)q~lOj=PU38^(6qPK-@#Ck3FqrBdG3C7HC2b%|^Z zeiC!;agkRr`c$2!XJQ;QAT9}Xa7k6`=U709z6?-{KR6U!5sGrctcp4-`XPz}4W*^# znX+|tnqysFtXxnc4`$X*lYdgW1}SWZCrCoQ%lxC9Xs8 z8fj4arOoV`Mk*nU1f8HmaJSYaYgymwEw94xFxfMJDWMI1o6j6U;%FW(-(++Lq<_Eiug&wNvL?@M9_ek(^%HIZaS;$Ref14l-XV@bYMo8!wg|{q<(@WsUsIsZe3dOo0F9iFieDi+9_6>y<&9X`$De9#vlhxiWF zP=6OLsGl#_7>TbbivI>j37}}*Vh9R7s6kmI%7D|>jhZq|H7X)1wEFpppN!W2Osm~L z@?rCo@TTRlYV1JGAC7z5$jjlD)KT0rG)mg2^M8P>PdAsDC6#xlYoHi7M(6@Ei8B)b z)%4W!B?Y*G(VgM1WCY zaD6cJh%UWI{kUv`t^vrLdml3f9h{S5!r?573OCP!=HZ6Wp8LPefRN#Tv(&}n*dQK> zPzcfy^z<23B1nm;=U^|BaR{qVKHjU@kA^%NhGNXv`Mhr-e7p$s40PM zc!BeB4O2IG0u&{%w6Z*LTp^0oOJt5C!3S+M>kmodW^rpG+Ks)kOs$iPC3tv(|q<1ZJh`gAE3Bv zV;J#-!5U=4S6c?Sv6Q2+{wD@Ps(mXM{TF-!L9|>5A`t`0T?!z?6w9#(WX#23m8i(1 z*F2vFClB5r-;6e5ejH@DphVZrNbbFW(LWHrfvCMMAo% z{zF3a?5@;d$JLFrhOY^86#_;urjD7V6fvfQC;K##)tx~E3R`Ge{;JR6R%4*3!h%tA zc&d5J;IJ?yI~z%bn2+&vQa1ejxoHO-o0ri+(Dwg`O~ULVD}zR-<(HgiQbuDc?zDNb zqpjO%VlT5;sHH+e?s?hYHI`&2OZX* zgYKO|cLK5ryF3`FKA9#Cq#RST*l7bQ>7Z?l9(L>_X>?YwY5!NC*Zn$Xk>m{(-9WdP z4&8sxPC-FPO{ovVz7P_OKs_X_j)A@>qSZ0cDq-CXtrF`=UJV7-=TMU08P<_Z4hCJj zhn~cXW?t4zgoc8NS=(2L&!9Ck&3)?vbgW=#LY=ieY|qDZo??SH-0|djBb`BqY>)>d z2vbN%EfKgC+oQ4GhK!^jUVQP$WVY&v7=GgF@{#Irkc?JG6cf&zdL|?2P9%o`acQHE zHcoWQ{=~@4V1wc!c7C?p(z*)^7|4?v6p~Gj4hrgu&MECp&5d;Mw?;3 z0hzRonG=(224K@3BH(A^93vP<57x)&$4%F67Fp-N8d>8W zT-Y2GC`LDI1^<4SJWp<#8pj@?4!Kmt=xfm!q!!B0!d5=s2uDL1)U{9=Crq7DF1mj+ zT8pzBDmCs<9#9t-2(3?~HflY8Yw8ZGM`(m1*(CGJw1Qw87rZ72gJN-;{0`)>I5^7o zZ^Z(RM^L7|pzU;>_WO1Z=n#aEoIF522Tv$%OIM#FK!(2@?p-^X7sCn@F(?b>thv0? z9^c{Uek3I|?V&h)cRzGko`n%WyFxk?)XZ~S%dD-!`s#lm92N5XN>(ocMzA%Ebk%^} zMEZrA_u-y6hxMB1W8(Z_bEKNpd`>04+5k*85;hM)P5(N6&=I5(xZMb=TEO|bFo=mE zZBrTB3EYPdK1_IwHn7h%GSNQQqg<~io?7;8j7Iw})`zI=*TaU78ir!lof3WyB^sVo6QjJ_#x#Qxbky>&pbc*?OD6Qw0 zti5Fa9O0_N;komFStBckjr=uCn?Xv4vi0ACoBBEQf7Y6?ta|L^Mi5|9F>8rq!Y@;E zmhg*#AYRF-2H&0AS$h8@`5Xx;(6lWwtI9zgC-Kq{eOac9VVVWZ5g233Cp zs%!)&4>5tCR1@0pSaZA3FU{Qra!YPQ=5+Atptq z=NDNV>Gm=6@1p7Nxjgzfo-A;C2z&Qa)fEWvB_ghm4_FBR}U zH*lVvUw9L_I7lUZ#$cQ^i>|%=EdgdtR^-EEGZs&0UwpYT#hGPYKd8oTMSbqxTJ_!U z&#RJGR}(BhoL)|RlC=xT&{xiv<8wN`jCE)w`XQa1&ax*vg|fL@mwyp#Oa*5;9Xwr; z=mz6y+Obw6V|_q|kXnx2>UOcfu6}H?G~~LPenDO~rSZKBbym8k(!gos@uOwRh{;ly zTzz_yT~xN8#a5^)AV>)##J9qys4Q-d1z!~~{OAiqq`eUGULtJ|N>Dlb$lZ(OBqCsa zDvtap+2l`#Hohv_2t)g%%0H9h^iXs*L^?67)@7|<*el{)m{t+diZ0b2GiZ_EbuElt z9ucN=o_xA}OdAw_4aRKjP3*l)bU3NGgn4WpXk3kUww^iQLm18*T8(qFkH@mFmA1ZQ z0-v`vcN8(g3IsEp`bGdsaQ+6jV(OnGFuU%>5(Ffp<5k()?5`mhDGMq+kNH@+jHtx? zq4<%k4V{r5KIP3wQwOa^8IFe4m=9851uqvhvMoG;-Z`coy6ej~dtc2*6QdSFD z!c5330e@@(RzybG0U5%Un0LmONp6ie*5Z7V3zCo3=Zuk@P04av_q#!_A(E~Nkwk<9 zL`K^v1p`_?5hD43A2klaP&7h78xaEfdyn;d+(se12Nv}Ou2B1^U(rwi{(8Pa8BN_; zcH#aZ6~6rTpJ@;Jy)gCg_bA?Tt**PT3J}5L9uSgo+W#&;wvS9CDQss8NRlV} zlcbh;0!jWjZvcuUd2GVz71{r{Ns?VWeZOeN-5e?M$Uu+_sgXlp|Nlyf%hcaro)8}# zCB(-YLVPR`qGnMbL|q+}5Sem3FSFyfxUaQ~8`7{(lRyP_oo3U_RCc)~?u%_LtJ_wt z3?R(F8ED^0a&UXmWa}1ZE{LjwGE3|OGOh9 zL|}QmFLP#K0BQ|=kbjkD>yky%_u`seR{S5ZAJu=VPe`|*tGaWsYsN^a8bVR$-B;Qy ztj5LYfQ17KN(886VJRU9wqZ3=$=0 z&K99E^QjKL?ot4HIyyTQo%RJYgJt}nCoMtpq}jAF+eN@1utP{?w_LROWW?B>AM`yr zb(BHH&e6acn;FmxV(m_?*rzQ%%RkoL4*XXZ^jOJcRK5NY%_z)U&>I`g)yJM?L@C3z zb1;;KdqBmHSK)s>)lwOt!}2m4^vPP4!WfTY+^}0XdSWy8iIEWNwr&?yrW1Bz>#1v# z)ZLZh6W%gd>}kMY7Q{-Y3KdYFU!xICDM^f#l{(Dl99n2oZ;bV7+6P1OiBl-4oIhiR zG`~k`wTqh70W|w*^9)01`|Hzv`+$rEJo}wto3AY82_Iz zj0GbcwJhpc_C*+3fM+kKkU!zKz=)a06Px*L%+Kyh=#4tw^>@SKzFt%;>Ta4~?FWh= zY6xtP3tbGoe~w{SgQ`viBxa1sXovD<3^LZR_wNwPG@~7o6H@RRY+718Oeu)8NyQY| z1%0tR0{TFJiI~(M1Kb8jovXW`^Igz7SWy}?rYF=>PD??C1I52s8ltw)uNUZ>g{ zEHG_??v+dZv1Ffn%YCLO;$G#0o>GK~&<=~F-}8rQU>6hnfWPDLf-BILGNBh+#H%ee zbWxZV%SgAlp=sI4Q1^z3rGlGZ2wO2>ct|m)9}Huq(?6M4kN?rRRi6oALv$|ZF!AlA zzwy2fC#o$Gq(CJSPW^AQy#o|1vfMgcE?vb#^jfI1{0&8VhuKUKdJb9J+HUH<%$n}9 zl5H8dyr!~gMSGJCar0!pG+k=$8zA*11cNH-zGjK8pf`m+Fa%g|FD71tE9BqNnbc!& z&NT;9s*_?tipEVU4hy9L#<(opLq!D&HqkF~j}jGfie)V!dobCa^q?#lRbr!{1kv3j zD^Sb8lc3ud6g9xd^JQ7GL=N3`{(m)NAf@0OK;#a`RVz3gPjsK^KMGGpRgT&&TGDz%$ zKxD`dJTsuN&k?tD|Ji&o0h-}mWqa`{LLv)tLLd#?eji~vt28|Lh5xyYG$&m-hJelk zBMmE`6q_|foB$?YSRjEHCNBV>@p9P!+JTGEO;JX*{P-<8c)fdkQZB!!T24Y?!7bv| z3KkUYm>$|dgMrPQrcBR9a3#>*u#=Y$i%!sv{v zCS04p35_>%KXx2saRwpN4x8-gAK(maND?6ghwRkoj+7&38|k zApTgNg#q z3Nq!|oSKC1fKAft@~^*XRpqpaV1j==Zo~&|#w9FlO(KZ-hSMVS)X&bgY?kN=2biKU zGG%0W_d~g|E*EB#<_UO(3ga1ef9&3eF_( z>27%aZkP(xDFbsi~!}Tn3J+&ZLxVNtqn=9XwGziT;UdrUmD`cKCvwo zSmM8}bH&)L1$nS_#1y!&Kj_eH2&GcM6aX(<85pF;b7{J*eoSFrtHyMwhEi_;34|_-yG+XKORVZ$>qfS;#bcN&dm`C&s4pz#* zkmrj7ZcrQ3;$}snWf(ouv6ZhU$IJ*CwjSZPkapeP9O6)=I8#S}%|Zw>6m3a6o@@IJ zSzU1)3xXV>#GbQtNg|F#o2GQv-zqBOB+6k0nU;rUGl1EtKicI5`OAh%m2Ac2KfMFH ziu7iJ${Z^GHkxhw8ma*$i6>Dly~(|0JfeopFanaJ0vXsS$&`j`mDd-OSS&JJ6zDQr z449TpG?4_>9l8<3LVTTy4H7El=)wgBE&Ng43`!GU0sz8*iA+qRvRc!G^Z=+fp?71A zN1R6p`EP3+_F49%cc&ToYNgQ6(H%1eQ2Zf;?WqXAr4ui-OA*?CVYrjunLF$n3Lei< zc(_IFn$D5<4h*rz2QK*$wQEx{!G8SX!8ZPaY5iHT`Gc>oy6>AQyQh(jno+_y4LL$M zeF;=)`r%ESP0a`d2@n>BoqqaNTH8c6&uqS8e?1;$EUcM8&c2FDx+x!>Hgu;n0pKmG z$>w93fvphuFFg^d2flpjm%1DAiW*c|@h5`7b2OV^05Ltiv^5IR|3%cX#q9{ijmBXF zDpsl(gh6xCOlcZubgMvQ8I!U-iHTLlogS~vk7W|o z-R@S^2EWj}dSR8&o_eVk+2YXmKTFRAnHu`Tj1@3b&G+iowN?6_%+$1qmTHh!XXZ&Ey&-v>KJ5GqRF2`1EnhYZ%hU zfBKWx&7A9J-|)v%~kJgizUaI@|uH}16T%GgDXri9HAbO$ZP7##03j61tnu- z^M|H~<}7Ul*if>NuC|5WomM6@!c=irbWns1$x;T)Sg_Bf3x-hs+}+cSTLz5+nZUfH zC0WbNQVgF9{OWVHMkg1LXDk`4^KIvpY5{VoH3Oat$}$m)5111PM}4ubg&OR84JW-| z^+LweNIg~F)YS6Y5TmKFxi}%^#At0DXYYz;G}~KxRer*z58rm>_rLOoFP=LKS>&m@ zY@Xddcc#fFZ9AlN@~Wcvn|3;8+l9#fg6I}L02Eiy-tV>D<9U?|B0Vu#NmBTI-)qn8 z_rl-u{r$`OPkz6R(q@(eSdb85t~314-Dukp7qO8>!^QY7k~WNuP-fbZsqb=)OZaDP zQ|LKz1;O-Gk*>^V_i62P#n%JI;YxD)@UZ3aapRTYa1unxq( z-~9ti4ipAfen8ya({Tx$Fn*1m-}M7|Z4O?Ns`a`rgA3VLf5H$4`29X>0DS&!z>&EJ zMX_RL@@!#Z{fv%nw$y%^KNixf5NDe$*;MD|uW7^=uM6C7Q8w~g^Afc0km=g)Lw>f2jxKEae@1 zZ7E8XI3xmxDtSQkzBz=HB*LIb^c4LCk;>@lhHc1_tL|%E-I3v@t|PFQP(G|#@gBsR zTo?Y8Qcq2oacToX1j+L&Q$3QPCd+djHz1-b#z3;Auwx-IMe`GDWXInT*X;VD1%vear&k;fd zRmsf*1o+K^z8WqqtVV4rKL%|=o)}Z&mHm0D@6B*IR~FZ5H)VuC8FOlx$Kf$z?j8pT z--1y(1<9|Wy(8gXaGbhskR1maH5}D0R@MvM(b9sDi=NBMa32-`<+Md1kWnX+1NdVz z;|YoV#}S?~AKg3pGE}IOebQmJ>4qNaV|oCk8q2A2_ds`$Hbuigup2gTdkVWRC>t4H zPjN%HC5lyVgv@}@E2)xQ0V(pVQngd{0J9gtQufZaaRRz*iw|$LO37F8G zAT%PgQZErljlgsivdVA_*UmsT~T381&2rz10kQD-H}N2L(cdX2zO9 z?;LW_4bVVz0hP*FnnHi#X{N49eS{Q?=Sty3H~{JjHmVaGfPuy>08;d9S_OQL0uCh# zDav8Z!a<#5T49l-FwTHDP|w=Ir>v|Ano)#>V7s2}p3gh;I@nWY4)3WwK9>VerP-LZ z;CVwCuo}^x&Ws*+SN7RRtkZ<~Lc<&=fQ>DNaqYJUrujUclSIf850Ib6C#2ts+*Son zP&~(!--OWalII; z3@$d5vhJs;=kNYR>hJkDCk=>vx&LBw56N-Jg204nZ88;%`2fGsmfEm<$41hxd_t0r zbv$;GGFiALp5-EQRBHNI@keaF=uIdd$}*-_Ry3G%N<$um1JKF*(nhS31J0PYHlW2S z!F$z1f&BI1@k(QPdsnN0*6klItF#3@E)bSR68@nF>-oYemb&7;xIAps8?y%7d;2;p zUa$BIlHIqMEV^phmAf)kHm+YUia*yuAs~+grm1iTG@Ok3@f7#ZiM#OPYOYXB1B`JJy7Lp!Je7^FP$OsBVXG5&8d> z{Abj0Nvcr=k7QkAEu~4XmQ7RZy+RupJr&K7MF0bZMOEb*inL%W!R!JzRg{E6X(7CX zCE@z<{S@BsF|||6ozWOykbvk^xRvxE%k8Bjwo^lIW!Z_)F#y#*r3e!FQ02l*2w8M= z(DfrJ_A{AuImktSwDOYs=^0Da%G}Y$Q%lJ#acVQJ??{Je7;s-!cvbA zJz5Dq=iJ(Yfs_&Y`Lr+HIg+Aqsy6#uJL2m6L79>=z@HWFCfV|~KQs7#q>-Z>DQgE% z@Qz9EcJ>FL-Z)Ca`VgIt--wH0IzXbpJo>457Dv8@E6XM?J{2MF;D|?5k3dec9L8Y* zoOLLI7MMnn&xd%1`Ilyv73qj&1C%TW)1=SwFj~^}oKPn;i zeE@&I&si|DK1?QlSK`j0ev(fu*QQvmK*4*L7ynx=xZq+YGejTm$6`UcM=Z!2#E59- zrXmZmEt6>@`*Mw!yR%pFF<-Ts@7a5bphR=6zlLd;zv4&$&{Pk6?%yKE>p8BB*ZmjC zpIj!&YQG+mXu;%W?F?i~P{D^GWr+BD%l(ui!zsjwtB|RdHfyDo@Lqos3Kc)dvv$bg ziZdas;B!tLyH4C+gLcMg2Ptb;p#8xXv^<&nDO{HBFHP96UBhv-0HZ3KuIm&X%3y9B z;L^yZ!6$16NG7x?6z<1ucO+8&JoG#IL~pXN9yhMJgUD73lJ9mxnC8FM3gE(WW1j1N zBB3rCs`^(d7ge`psSO%J8%FJrAxdjKR{nKml|io(f*%Hs{Q%;@oO=X+!y=x?UW+Axm{*&>A$9T;2o$;FAw?=Q*EtjSlAP$ zXhnSsM}X8W+{EGnC8s5_gUa2-Ci^5fDa1e0ScJj6S7vijAMKS4(z+$%GiXs2oJmVN zj89ak@+39=fl8Rx_-$w0|L6z)M%YqW+?zu=b`HBDe&BJix15Y5NE@*+*|Sgq!e^M3 zq&_r2GKr$%>?b7QziC8YQr{#pv!BFGETTj1Bv3@G`m@4q>r|cQ`&Th)O+MvhTC`;= z`>f)KS4nIoI!LplWs+`F=X=niH0n=SYuWw9sx$ZuQs@5UKp=n7>TrX^j{j2CDF9gB z*SganCp!ND5qj8I>|ByPm2BGCv{8mVWYkP9nSG}lXolSndZsg&q$I>EkWW)SdG%BR8^ zDMt-fe4LAlMQA_?>fx$#HEYTvB?^_uOMU=0lvxh2m|LTzw6TXkZI-W15$^#IY)>C) z5hr#h`hN&?QDBI*8KjdQAh@ih+Npw@8O|siA%rAXPTFq3X+STxVMrk!MT@26a!3vKEBf!7 zVch(3b!p)eF2fJml~mfI&M1vP3NjGxO#`l^a9I6^>x;?qNPblQaI@nHS+F50Rm@Zu z?rAi5OO%G5eJRw$BVC7_V+>nvEeAuXTTbeIG%}2#AFyqK@->bg@H$Y2Q#B= z+e2Y$z)O?^s5O+-z#f4oT<~S3jk#?+)rg?a>IYY$eh9PE&tVJ-h#ncHtQjU@F(zH@ zGEC9N;n|V&KqxZoaN5tz;P5z13ns$~l^HMjVRIY<};z4FLNvIOvoO=-8uFTz>UhGc(9&Jw8Hi01&_(keOFJBd`9YD!ErbQ+|CIIUPY zlzG_xT!q30$mYTB3*=L)#HwUj_jaE!WqUwo1Xbf}% z_E%;q7F;&U-%0r@yW3>s&*k%kMjGmDej1;j0Kt-`3-~;Y3N>H+Dlm{Z2n(1DVo$6> z($Dx2WriHxJiWrrVM3(@L1071A8UTDLShI3qgIn>wDxBhH46kYphV4BQT9+>I2Z#a z)NqsmL(97F$r0Em=_Ob~yA)5*FafkO#vd(=#)Z8UY#|RsK5F=r_Ff-E zK||>U--Y>V?jByP4Uoo77thljK;JN#jW>RQaguBugMx;>C)Y(g$QjJHwL&O})C1OQ z^rQTfFoyHB6ehP6iY6`s}Z_6V@`tB+cnoqzLolxVLICEWpjeoENEVSiM*cSYVl0*c1UPKu`WQY$pw1pckvLE2DuDB2YXfrg{={8(S3Ku^ZHn zK(8a?j^n5%fkhgB%}2_wt|mvv-{eloinA&(B~%tlpkB2nUTKZ$v8J2|Gj!J)huG>? z*u8x)IIQu8_+;tW0Ezg_stUw6(s)1%BxeY&jN}9yj^B}%4cls3>j!AcfY;dn>Ml_l zp}U%qO^ab5EWmDLARwYh*EFF0{Sb*5oT40Tbj*#lrm52q4x5{S=4|=Kn35qk4wWhD zqAd}X#*YMPjOUQH)+h{Sf7&v1*1T@#@%iK6ai!{ zOWV~N*6Famm_`UPq}=5KTr6cmLTPP%vA(`|USvvgOQ8G0uQZxLp!mNRS2C6~ZcbG~ zC~rNYb@-On#py*IokTWAEZUf@hrkZ$R>R@kKZ&~dw?$kVZ*lX+-}+^;9xfDG_+8w8 zw{2iuF*?Sa-6%$EAb?%rc}f>l=*_*VFYDajLnS)*+2{U}d%`73%dnA8@Nn6Ijl8K> zPysYob7H@Tf-Cnc2(5uXwRc%>&=;ZVdOInJh9BZ=zbX9>`SvX03ZTDzPaAu0J9)GI z<4XTy>OI1zkoK!q3K@_dsdkqMBg{JV7_h}N&h9q1J`Knx%+P8_VYbozbU6qGZR{6h zCJ^gCNcexpwn{)EVx?Mk(LSe|IapLo?OojWlEKq?FCSnq^WRk+RX)As|D0d&bcuo{ zFiK2?s@25s3sgtB@5`rK5Y1@uP|od52S?eLGU$zUcFUvU?AUw9Tq7RltsXPrMr)zJ z9rq1(SmxKzGrKE`?uaJY|k3D@g;1KBB&FS_WxpE ztsYfL93jHMH9}Y2Ya`Dbi6f*Xx@yuLJ-{`pOQ1TtTEzVkLbxOoO>8o*gv(qd*a>k2 z@Q$BtV}K}zmD%!lj1yx;slln3h}_^|G;TVEvZMGInxCcxiul97a+zwRW$mVtvRkG! z_j?%J1Tv;K@Mz1-4VOz@ddcO3HHJW*3^JO=%_V{DQum$v@S#Yp0tpW2r{FVDFLg4|g9c7zVz!M@idY*$RW5^igMqa|z%0d(xC(7czt?Cz z5&y(W&MSC|Ps)|8W-# zmFTmbRO$B6 zpP~~7Sd^-at#zR?s2r~$v|UMfX9$bHkk~7y@lco(vP~liffxz%##)n4N`;K%Mew4U zDhU&q-Iz=lb}sQ(?j^L*qiswV?LRB$nps)%&ABiuZ)R5FgKhYxCIPyaX|f`9oat+B zt)AJ4;km)HA_pFWX^9Sa77B98AdBcRHMcqRlrtTkG(q^R*fojvWs3iCw0zR;6*CnqDCtsVDk>N*Y z^8~fqOpHJof+Ypv)dy){#OEAX!86LEc2ra4)RpB_!{A=Es(i+^gJ)!{0{ZqjjfyRO zeXKl6XNj-!pEVgrXySidsZulk*Hm!4T;)F7!k+*?CD}yzjPmJcN&!4mhZ-C;cm~Ug zA&}XyR%^r{OD1%R+wZaE;5X>GECXq~EmK@=HU`4y)G)2eYh~8Guodh!ah=@wS8!R& zzAv3H)R_H>)j%DJm=(vd^KV9x*Dy6BH&7{sxG0anEun2(3Ur&KAxR}&nkSMACCPgV z|6ig9W0)yg3|>_Hbt{|Ll3rx4Ma6)K)wWqy%~)S!{BpUbsEL6@{N|$bJV?w^W@v#h zQ$z-nBIlCaBVyPLj6xp4p*Sm*pwzUjh33Ex^T5geC&mFXXuJ2|cB37|o=f#nrh^;M z^Vut7be5|LPElAyamq#K3=WC_o=U%sS2%Cn)mWJ4-|*++&=KBVAf?dIwL-d@qDGyu znW<0sOjSm7DIcr0UM6PWU_lukB8XHmbRIUKUJS2}kg82VYCsBcWH|^R!ebJV5%95@ zUL8;wnZJ@`i)^U?QG<)-{LME=jES9 z&WOJsjfF`HC7a2xNnYvU=;LK1Mo(mpT^_JzL9z`cC}Qi+(-4sxPo{v3qEZevAPn&g zyC4D$yj~-kiHs-{rm=0ldw7|dFHPQ3@oh#)zqBcxipiwq!{|M*(ONKcIMe7-?%u7C zUfU_tExwcH#g^=%RAzYqEQ6-$HT|=p1{BQM1;FT#HXsVaY(Y)YM+}cWyKHMeFHhx% z3qC{H0StKG#u|<$;+1B@u0(*Zx(qIYoWL}Vb>GH%Qe(J?^`^-`|L?cXY3{~eMMv@| zMb_4}cw1gB8sRhV{W3P8@tN4)R`J0W{Y~kwu)6^NipESE{^>5w>E!-T(6tOXbO0F| zVlA0$M(+|YP_p$-gAm3A>B$QVGZac-QZ`#z2ne&l+*5L0*eLQDoGk*e?+&okGyZmM zHK~N3t}H*wY#Xupbh&t5)j5~tdz;Q9XH{=GG-trCnOw!J8)tMVPiJU zNtV%e+YmtdGgjP|Wn(P$$XXHJ%;N#_G?FCX@cE{=MlbayfMJenguKE|=q>DEYubc- z!F^EOggqUuKnERQVJY?Kzm^(96}5On)iXpBX$J7}6@q|(OX!4$^5^rzv3Q0YQJ{V>xA_ z}vPxB|ZfWXlcQi~g-ZJBA-U`;?zFHAf`>|r^4qLYV zHn8RR3P`FfL=x%;Co$iO{enr!0DD(b-3VBf{C3*95O$~p!NHO9sR@yk!sz%~4945X zGQvoLc+TCX9$KIbCow`%ek4u&!`k0p<3h7YvRXOu?POY(U$DrvX)jg*Lkn%}S4V&i zPJdzu+Af)2^$wRBVK5k`fX0$41~r}_zMbKToK_hSFn|3DAdn#Be>xGAWqzC_cq(HB z0XJGfmWNq**FI4NDr!3)3q6qm{_oTC;LL|}bk8s%Emqcz0`sxoS5i_!Awm_`L{LmNg#hjKNJkJg|CC+WC^C#uCZQ@PbM-P{($25&oQ~cc0n~05r;vt18ESf35fLuk4!tOC~ z9_7Wa6aA1)`z!7x+y~Al9fj_44thv-u`cWrPuQ%4>6H#7xh){teH*2Z0LFK8iq{eP ztTU70lBu8H-F7d*`arn2$5XgH>2-u8TyBa}ewlwLIlBM_*|f&Qy={VYx|V1q9J(w6 zmG=2uV}>XL&ykc#%5yk+mY%Z1;qaok7|_uQb0hS(wF+R4)Xq8CNSB*M(m$^7iN?D!r^w>o#*uIPvfT0@z;2T60W|`k*G}k zS3dKsI)4RP@;C0|Grxt5Cm-wB ztjVUszta5r?G0dg%gI`0prp4oL3jx{gA_5NS0ir(Rd~r8MoU2QKpQT7KI0x+Y1wnc z%uJVKerZxE)-OyU!rtFU$T}EhAZ1e!r+x)eDO~N~6_brke;LzB^UJ-{R?srH2gESx z%w&-eHjzcCbX}t32Go#XBmSVGnDPz?2nlC6`_b9+XaF&|mLEC^v1@NE8#{o+5cTOv zB7l`=0O@U*=fx<1Dh8+mP;ey?uEgNtB9mXhm^=k6^!+xC(>+iW7E z_T1emN(-_NP>t=Hji0#PhyNTHtg(Xt!uCZ-r!Y#9Ca1xg-pt04tyxHs1+nIuEfBejvN~ z9t}u_#>4*HTqxjkyoRWExJWtLtWbW0wpXgsKbKA zWZ|SzwdmG~ag(l^uGtHR%1;!(A<+xlsg*#{3Dc*_m_?dwv6ABtsN?{UUZH`cx>-PZ z`$6E?nP)kBmyEp4im$EYP>ewj3LZJS6Sq=wFP|z<`(Or;P{TRILi`v;cbYRG+7Q)F~QF!G}|AgUPe`h9&egp=xoti z+Oj}2LtO`VLQDo0Pum=JJA9y);_$J+EJ#8N!K!RL6V|$>pb;rVLQpj=n`ee0V6Ft* zWkSClZrUkMjl3iJhjPtti&ek(jVXMKD&(vViFs!1`$wmubUU=k@fBy4NKxo=2@6 zP&ilBnl`bmF}1ZS&O#9k0h+l<3Xl90%C+jAG0OUC7;*YL2qe{uBE17;oH~2aHrrtd zhAB>XW@L>?@~S3SHA&8_;M1$97;c3lufE)tyJFpqgIUn=8B5HtczBZk~EOdaivchbq-KB}$-zSP6EDjWiLA?rpGe zQR>nnQYMk3T44~?gw2had#e<{v`jZgQlg`YyU(`3lvaTvzpSDg|E2HV-6@JUrc4-P z++>P&e^krsN+cWzN^%rvAuS9SzaDE0I#H%BRc`s9Oovi=sX?50-p||d4L^z>pg@uo z;Vs>@G;J!J`0_Yj6hCgYx?8e~vy0mDKL^!`VlRVD>{h-LW_<3a;1%v|XfV&p)(-mm znHr#StV`BcJwWNdG)cA}|90LK@hUo6q`mcTWd*CamDrrNc_(0>M94lnF9(zCsnq9_ zk${wA$Iamo<88f+re}-h)XT}z%?}I4QsttNX9X)3sJrIxQ=CXOF6W(sMIdunCTW-X z!Lm4pAAD@<^;3@DQ7y)WQF61moWOdQO*y9JZOWEocT_qWNP0A$aNe?;8^qZ7z&nqr zT2gg1h*VCP1F2GdGBCZ`{ppHoB0`)bzeDs}SgA7&TrZR5`QKX1pWllwVF$2K{Yk>h#9rP-!f1AY>bWK7*h*Rr z8kav{l6N4(t(I<1SG#05BQ~t*INqgjz(9Bdh`b>jH6GM6)Ha2HX4BwQkxzGf&cfq_E zHfD~h1@FrCT*1tR8N)5F6t^DfH#F9odu4ERJOviy_kLUJ?ta&|%|k*vn{S?%kBjs~ zQKFM23zYh=-vCxJd?Kf=^ks0_f^l&`a#e8k+;nG9bDu12gz?N zMG(W{UaoQro?@Ir#uv#8qUT({Xk}6Swy|@g25AaX#4?)!kWH22fHfKk*0Ho0GT2fE zfo;!e6b*D!aHat!{sN|qJ%!|8@|HR%=zfXqEib+=BMN?4XCM%58Ckd+S-RAI1Ir}S zm{RUI|M!*jSw?b)lt z70=F~QU&C+yn=XIo)9GWb}i>wO?-ZOxS}Y>sm0GXHJ?v&rGU6_SeoMF!eMFb4W}}K zm|A%2RUy_ugl8&TQIP2wE41{#_Ay3xtdQZ;73C6YDODdk?pvx%4+uYkI}y-(p8hB~ zY;y7{!pr=T7m%1DB*U5oLESY<5CjeK-pp*Yo+$VcHYisSNp?kJ=kTmXl3nra42?0L zDXvjbSi%ZRvIg8~_HNAH5m?2$O+4X>@226*LTguO<*%^P1uO1fS_Fy3RjNA5lWw%w zH>Z%}p@+)U$^haqRLd3BisS-_Q{jqdC07y-0pqgY=gE6U zVvm%>T_ijwO{bU&ZmSW+U7!cON(L){1G_kcr|?bS`yoR~j*c4Bm>VVtFnCclu-t z0obKaTCZs}*=Wy15Fy}Va@yNvFk_SbwD4Mv^ro*Z+dJTA{EJn%>G}EjxvIX!3;_T!O}N{Y z*OaX*-5qITu<*TmCHjAR$2IYDG`$o4i~V=+OWeh3kGkfomXIih*=f$PoEy1H>_4l` zl#h{eyP9%bjg~{;o59frC@hO%`#?8@00L=V-7yLp6oM*&U~P?-9tX(YmC!n%u?5=iGF2uX4lGnI(aj84~asLP*$JE1Wl1D+0R4r)AWeYj4&%)Lb z3nI|B2d^o@pR#NRq-14I{G8P(!`?p+p93N`(IO07h8}@fD92W1^xB;COgV9U*cme` ztl^Z|X8*k3V~X5?E#gyh%7$8{Bn0)<=VDh_jskY*gyHH!z0z#`B7=r7*y3S|(qL!u2#Qz@`3c>A7|a59z@D z5$v#`b|T%>6y=hE?qve*S8}BeYmuf&AqLKu=W)zOs1T>L>KY4mvD$aAx?-X6rW#g1 znu65Vyr)afY58S#LM4T{~WCvrHp=*lQ zh~b3$xoe8gP2^g7nvhYtt4(@lR-YdFno-bLHl0oThwY}6@&~#U%%S%TJy8a}vUF`@ z=JBw{3I*fE8Sw?#rwi3!d#DLKQ7i!{3`}1e`GgKMECka~@;xl2D~P_mcInTlh2s6g zS9=Ir;WHc!7)Twz7kcaXJuDl2sy7!xh%l=ZARUM*_gdsJ=(Gp!bk_=l^6xEz_HYDrTstH!gZ|6Zb27v9_`}N?^NnqzYEAF-CHN!I}`wq zm3#|_8Azscxzo-yXsT(O!#35y^)@>3sFuIDzK-jM z7WdlUJ^Te&_ueC* z`KIyRu>w`Ri)+7=l?M=?%?yPC$Zr6@C6>R12Cs|P0&r)2&GR|cv)%f=)0&=RAJy#y zA*z?^*%h&{px(~)v-2z3gC+Xi-X?Dj$TT3>>~W?SZ1K!JRe;yjQmvrR!9d>+M|6sqh{vJV&u>MKIA+ z2)i0WZ?4cMp*P!g8LX0Rx(x8ls-D?ELDndGJ0s6~8rnuf7lzAOF3+LpE-Q+$5}KsY z{k(Z~D72f))5GN+F3$*;ySO}!Pxsj@lZ6B1RL~H4E?dYN+{Y!P=J#4F7(mvqz+a9r zjwd&vKzo=Q$j|2^@cid%F2hplzIbDZc#kcfIN)??3 z9UNkgXwnr2oA;V(0btV7J5B{qoN(Qi;ocUG|D7Sh@Ooz0nq*g-1jz$mW9KcHX+ZK< zX)&<-?}-9ygoeNsim-e&3~*3OqE)Q9WE7LdSv7XCbY=B`li2@_V`!8~}OLJs2#>DLE* zh#3G%&F;`AD$1(Fi=@FCs8~SM$sPV43Ld0p)?u%ZZ;Wodh;zraIFg2@3F^quNqG~j zAD+v4U@7hZ@T`)?XdeZY2G)KvwCij=GPhNAdaC|iS4yfe+x zE$xe`R0^Y9J`Q&rKPwniIe>6+@-dRFFR5A_fyL$GOE1Bp zogeQmE!&q=`SHsxrF7@`@={7(LRDQZsaW#?-9E$v0I($ntxwH@ouclSNK{u8Urbp; zO)tiTDQ%-Ni%opba1&tzr^6P_L{u#fF7^tNpyyN6+~!^$IH6EB5HGCJ5c8BYqm28<(j;FE}&FGW(G?O!26;rK{BTSTZSLnGUAO5ZOF)^|&2^qmG`7>JJI*m=hM8u;g3fG6GWiTYz#5j40NKs;@djAk`zPIJ zwUV`B#$7il0*Pr!^Y;~hAVz0S$rEIBrV(cRHjFc4mx!-5_qN6LW-vD!)(*WS3qHYPFM_GwcPcfz0eU1xp@SpvT18D3?OKttW~~W zi#B=WI(#8}v1}3o6}KxECrl9@sA)?OZCJhnn!Jh$PgMe+f~!>!FhdQS1EdVf5K6d; z;GACEh8PUaaPHeXTI{dVn>`sZ^k{8^o+wr%{R;7usqA#ghMxOFL9eGuc&4>BNzYgC zYo{sU05wDcCz=UO!CF~@Hl8v@V&OkkXqEDe$Vi53OClhurm{1r#O8Krk)E9)+I&cB zAS%5sNf-s3AX0H~iuix2FLVD$ecAHgsW0392fE}_N_U{QW7Sj}FFUNzZxzsXV2`G1 z%fC<{b~*YO02Lj=R3u1KXGJr$+Q#c~x`gBXQh%&4A&ivyMtE;qq%cS+)u}NA=M{zs z3Qh4106WSTtT*Bcq7;);5qZ>wTCGwAo)>qhH&q#Stg5C0T0>j}gg5Y0%^3#2f~J_) zL=>p%Ghm~PYGNQ;lVDb1ye2(g!B$cmLXOZ8lwz+))-J9z+F%+Mug32T5=RJwE@`TS z5rz&y-%_D(g$6ecml5Nk2G@oblKki-lmLcANNqbof{90kk?GJ#;7%Ldk2%jnti|0p zISll^RSSIrO{8IQq9#ggAX4znnw3BgR2)v7fPyZ-*XVO`Uc73-!KrZ};Z2eN48z3G zh!E8?W!10)Ix&H1#h2mUmz1F_16B-R&iuk?h_pl)NJuf?q-L9QlplkTZ&!uj4b79{ zU-O*w_!n8m>wQ=jDVD|M?6=|n3>Gsm=%l}f2;Jg;O*paj@@;J8Sh4Pem;YoiHa#B< z>)BULUwc#4d1=Cbzl94m+Y+897~Gv(Ie+N)cf6 z*wM(YRzrHfOMTzyp^_w$(XWuC%^3^#=C5TPb5jmA-!Fk&S=)RB^G4jVLtZT}QSRjbtO z*3nX?!6YY&x$zDS&|X$u=9JW7>fd;7ISwE9Pxn*h_$pu;<7P^D@J~@w$U@k`ojH+Z zY=)#wu=`MEs|7TNAk~f|esPv64h*%BYh4A432bx!PMhsTO<~Yqte+3CjP`k_m7T{*j$5t>vt~x;=Qta(>8N0<iMI zU1l?m&fvaG-By+O`;li?#Ajb0c{UfH{qxAP>*BM0_6$mDJ&Q1pn5U)*Z!f#Ip77ZF zzxSoz_}$a)z%_Xejs3{Lk>4ybqrmy(@Be>kdmC`Qs_Nc%eZ24fT06-~M9m?n>wRn6 zc!ZiBDMrwTy)1!9sZy_=hjX9abJC0Lme9bY(9CJ*9&loJn zy3bFJQhp#RDZkzc*(r>usJ5hfuk>L*|QNoJ?!l-FJ>AS^XylP6J<$@S&AwR9NiC>KZbNX+!!G2%K>5%cSyoP!6QX|7i;xhjyoCDuY07309C zOsDx#mPENY2KHFmJ9mA$#65Q)U2e8m;nHLREXiV~gJlY2_kM66l2JX}mTVA+XU)-DeTk#u$A)Q!JH zL;-<+-Glp2UFNLF7{{~wKfc_@OIBS|rFzD(m+7;4ahkL_c8oIS<|Ol#k_BBK&IYz;JNBPxTwn400ly=9FMoEXh?wBv*+3cD7n9UW*A2O`hZ2T2mfoGv9886C&bK5MQK77l4F@ySE&H^14dIopR< zcO6^(bD!8U;;?3*?tcCqRxSRqbnDu4yQ?@0z_0U#R%vbn(UM;xh6y!DiGVah>)%wVD-AJ;Qx! zNZvK9rt7LE>T+5Vl~mjB8ZJziT$m`?%;HxrmuMy1MGyo2O9mv4)M9yPs#%s0#BsA} z>jle4!~SqKf+)fKbYWclQ-w9lmuHk(-5TXr^i*FEPQ*&=nYQ@Rfl>D=C4C}|3b-U2 zFgtCzN}aDclkro)(7F~@m`q@jkAhp&ad73%&(m?mfKGK=%f^OlUacWi^FulwpgCG_ zl3d-)rNa?ZAL40Wur(|vtyuJq?#GOx`-KO&)b(|+jL8gtP9z}E5Ylr z zfPf^*)zdX^GfPvPQS&;v-RomrQ{z^y%bD}{2W$VsYX<232K{pXW&ZZIvVD75A2j-8 zxc$d<;zPM9)L*p|<)fenYK_oSCQ8UgB*5+ZM)7?kWWmySbnBiMs*mcyV`zuf_aKAY zDaH%loGcHI_iGN!_(A)yvhJoY(P)?dS_|;vL$;4-0ba|VMX^+lSWvke#$7bk>IX+_ z>(fLMpA{2)hG)=x=9Tq6iyklc zTkJ-Uf>da!Ub9xd4k*T2&*lPoVg9f%SezgnVF9QN(UY1k0?TVUERRD6;1bRJJBa2b z!(MDo5N%t7y6F~~gMQ5##y`{;u8;|J@eVSEwZHqX-RSfv|}t$Msp4_Ey=Iee?#|F6B+?y=?v?!hB8afN!IL#cw<{sY^DV~2XF_g+H1&f&QG=j0C6KPn|@FLh6Iih5FvTihP{Ai*6_qKdA z%Y{^TGL|qn7S{e2~@x6@gLB0r*Joa~w7r|^2@-s&OiUOSSw;Uj#ez8iFL z8&cu!2DF;^{a{XNrN-L?HW$rMdjy8Xw9!{g7=5bQg|!o*oGw>RmBTxT6^W-BlX&@& ztF&WM>oyqCk5Y88dJ-m=<|YS}EA=G(T)aSVRaSqI71e5yQ1?3(%TnKZY;{n{8D_Ox z8;>T=<_LXi3$1DiEO~OZCt_~zaDEx<9cJ1)STq>%idfdY!-Zw-3?Tc#z&o)7q#{FQ z>C4rlH0MplXY=u%AKhZU$!^h9TXTaU(vC?zPfC9*MYW9!0s*ghpv~6Q-^{T?ksQm8 z{8{802QFP?88rpM!(tZEHsln3=^JFx{ z`+ZaiuGEwHy_!wZqrF$~+^BO2u9(ybgw)t#vsRl-wBwfL3@JQqaj1T?U;!(Cjn}yp zK_^F^Ica0^{m|`a6Ex^&&E&Il^b7}p{2Mr&wklR*DhM^6Y(X7$P1NlaZ+&ucx$VD-L%j3sTZ_+F4`RpplBXj1&gl)1Fpa@u6ZGYN?>sHe2D(ns+w{UIv_yBMQceT z$kC;U!WR=%lW<7U$VSWB&wiTwY2ukPCJ0DfhV8tRvbNz7i?h@}qAh0uI7kKLQiu3--;qFY))V_0%ZCOD)-=FzSi z@0A0RJg}#4A|y-;dEk@RB!9$n&3F-yS;K>q1e1MZ>wC;dU7c#Ba;*}uHaDse$(gDU zC&Q?TRqH}ZaXUQ)iKpZqyXZ1naXx?u1jOr9{a;zJ)byk}>US&ZrXVZWB8taC}n9>0_>I3Vvr zG_^~7!zJ49-qNejRk|8|^*}s(BMtLxk-bx1dc6O(bWBg-J-aYEf>418r1fT>3IQH~F| zP<}4(;}V})M|uF9qg8#l4&mt4|F8*++H>GCBsY!ImLzUEx2#VCUQs-TpJ1!@$Zzvf z`tN6)-NDc4QoHAOgjbyz2SL2nqONkq0u1UZNMG@+{ml0>wzF0@VVF7YOs+{eYlnm+ zosY44Y`LU9UZ}hW@i3e=oB}zZMlBr`^Z>7gQmo30E9PV^9g!0H6+mmz)w+?wAGTXP zXrU?Ye~S69zf)EISfEl7yH>3yV0sK2s;3$N*6I_S;P@d2t?~>h$$;QYmZ_^7^P(To zcw`$P7+%g(GJ-s<+%b^nOtu+E&CJSOh11OTQl`xywQK>*9obL1-^e|4NofzhfLDY| ztZ3$~OtQ7yUDmhQHCqqhdk3~MLaTBq9H`$XJd~l=R-ZTP@=%py%x&cUsLII-vIE`d zWOJs?TYjTge|K$lmKV4;7hAeyW*}!PNQs<6_182q(_}8BZE=DlT|EbjoSzfxzwnE# zy2Wz;1w!Zwk}7`5apj(l+z{7vReQxWP&=HA4kD`2$k3uR!z)>{gz_e#Dbz5%R;%Cu z0ne-NEaV$5VjUTZvEjgV!@_{VI^%ix%oyy;rO+J({7#)H!#f>_HG|7SVnMC=2YE## zVf!0w_bagsnpvt*Nd-~F_uTT9sBO*#%cu+oDnU|thB(KG7Mi{gh1x!pouR`GH1Ock z!R?~xvIX5O=$Eum-m*&zsdec$T>5mMZZN@Yuq>ANVY0Io`N4nrIDYv47&0IX9#55^ zYsmTySF`0(>i019jvi<~_uz(0^G^ZAk(@N7RFq}hfl~edob%$uri81IvEcoo>Xqe7 zh2MoLxe+Icr7t=G1ZTyTX3^1%YbW1{rxY-43JCv&Ln7f7&PIa>GbPNbOT`rBP@Hc2 zduPY%xAVK<$v^`_HF~2;OlyfleF5H9P%_&b^Rvjl*AVh%L!gA^fDR=@TH}TnUO@)l zX}YF=DEN*6+W+SQz@=`oSY7}hx`}{i#3bzofm9;e9>T0v;5H+0I>1@d_Uz>9!;nY<|<{DC!0|N99A>R9$9B5DJaQHemxLntwk| znd=yd7c?XVGNeUPWiZki-W!3HC9MbCf>}5Uw5U#SB&@{BO+rbW7fX25235Wxp&mpH z?JAi$9%)3>Su0^YQYRco)p2Z(*U(ryN9u7rd)_PP?j?OK(MU%m{Yvtjt>$F2ymne#2NDfI$WZ2`Z@c z+Hq$Xr%`*OSIgNY$&M1Qg~QX1E@7e7mpt7gR$eaHyyU1XLiPx>dV}7xb8CMwT=Y&| z!Z)ak*@u4b(Jyb8{q{(DdVl)86w9Ck3rV;603a9gO~7$JS96Tip7x)o8z$>9d!O1zn?ay;sNn z(xnGjV?HM?@8|Mt!C~AS2AX9~YzEQreIi90gor{d;n?*J32~Pf+6n0@FXmF){;2&@ zE-jTTW^>8ffBhw~7M>Xrn;a>IY%?R|rW~%{t1}w*>F%ClxIw>{m%}yjbhvK$wC$O$C~|hwBFtelBH;kFmn@%elU|OjCo574XreGloW0F0*Nqan0UVnm z8**3;YrSXvU8&=^ayqmwrx_})ojF7KUy7whss|gz2`B(W@eWv@lFD(!gUKlbtJmgI zu7wSF(U@_sC$Uj5K$OxTGC37p3g?kJJ&~KEm|<1#4rGtJ`81;_N`>;WW&>9VooW!; zmhu92K(JNY%-8`SVD_X&!9cl-c4gzLX)&1KpnW%b2ZMS_Cv-UcBwe#;_h!M0y+s>d zYhF_v$VtU=zOq9+jt)tt9<@UOIZCPA3`A_`=(qdP1OJ4I;=h&n)*Nd;tt&;bnLgCx zY6XSZBpD17LXSkFiA#xwc2){~T;g5Rr9^`k5e@FwiudnV<{p?w>nz+ppj&gA-|i{7 zHJADA#kz$hHLRdKlSdW`mzuI4DYa$C+Xfiva(SsVc++Ihdz2-L3DNfYp1jZIMp#zb0Wy)|^fc zz{ZmhY)Vnz^{4Y;UjIWWCjvgIKgh{Iv|UMHvi6_;(G%`04G%9OC)ANLp11qIsGNk2 z=HtU+FDQ7x$9-&?DodWo_7FU>U>@`30dob>_{Ua%EPs%+c&*Gpmm1N9CU^i|h#lqW zIvd~ol%A*K-?T0wn=j+IJ`7vWE0^PL^5){MN@&oVu2#zjsoHQO9#t*c+a~0SYIESq z>l=@&syFqN=4eU(MJFKnwWwe%Fy-xX5^||%-E_j-Ug;OyLX=2gjNHhzX>-%YUFUZc zS~w2z-QI_IIe6rsI+*lAd)Z`Fo&BjAZQGmW{WU7~w0r64lw7H#z zSu$MNJ*v#SwLmx-z@QYpzD#~isjADoZ@>f@^)8B=OfIT^JJLr4pdx+FGu89qd}pK; zmr%miD@OQLTE2wP3b)MmT`GWPmh8Z*>j!$C@|PX4(=B(;^zyoK%LO_tZ~ySV(h8jk z3wM9j-J$sM_Iv5BY7hS<+P-E5?B+2mdqdtma4`7b2ZRS3Iu|AQ3P*P5b?%TF>Q_Xo z|1EL1JShf#T8OP>^d=XydMHZBq5#i zHgTCEMg0I7LZvEuz{u2+`Ko|aWJIb5cAN$*A$`TUQM**0q^R%BcdhK%$_mtRdUjL= z;xSi14o9?+=YFG(u7+Mw?mAc%$L?rwNIZcd*x?~W?FYq!mO{F!RzZd4#?gRLd=I_< zUxf!7hpR9dW6XDpe6G{}a&0LaE3Pm}3mOhRcpDFfHPvhA=raVEn*D+rO! zXL)o&j6srp*YUS_ZdF1U;~n}YDEGqF~dM}V)Rn{|Bh{(kL-uP~!7GW$^Bx6TwA~@1Cv%*K9A3c;X z$lb?`3)H6F{GZPmwA)|P9`8ZfUV>fcYrbi}&;Mpw484?xzUHBf*7iQjnq}uu&Z;$y zXNnJ2D-6{-Q%F-+Dg!8nt$RrKz*TW3^A1%^g>V#xS5s`?2OS?pnIU0?R1bVrBm~TpJvzv=6S$btU##?G%)=hyr)I=<+AB=c1#Joyss`{%! zSik%)ZI$~7uq&|$4{0u}r(C6jb<7Ax@Ch0AJ6GkBXn-*Ag_xmeFWh-130}Dsm$3%g zRT9;s(twm_z|6=*pQ*_+am4}U?SE$iK~hg3&9#_?P9S$ED?~+m_t(lnPE(8nEP50f zaT#CJBTQR?z#H1zwYFcDWszavYG=S}?^OXx&T#WkDh&?)bdCwF3jD2~$sE?aQS%ML zjvzGL3tXD+mDuHg8MAU4XRW9&wqRQ2f%SweALP)DQdwgyz$f-9M2D+C(+JgG8t8Gv z(Pbm#@-&dE8Ok(rHRl$`#ZG$nZ>Hr-AvsG(=2k6pJg$(e%Ay&1xIK9?aF?M5*ccCz z8I6SGOo+vp5R$X@1kF$#7zN&uIbj5bVj-{(nzoV6iZvs>_$R&4jlxYu3@7%36j{y$ zc6J+;q;-;6TJs7HXfNAu`a6nn;C!?-#K-AZqKK;G)sM5_<7PxMFK|ij{N#;(0`MYt zY;AAh7&W-&jNQYG&9Bhqx9)|PHfgLX2SOZ9i9|suYH(2K2O^7tl2$R2XokJ*19n-B z0!<&vuVvOcNOqR)1~(xH?{0@LC~A}_hS+B>a9OoH?V0}Hzn=PtIW`UsIZm}Z zAO&|6i!*tXKO;Yj?wyjKr5lCgrYO>v66MMHtOQ*0w83rJuwvze|Nj*ajrkW*_gX6> zg_r5o-w@^;a?qQs{@QU`TGORZ&LLKT14)EPzx{}E7>Ql+?^W;2saFe3>~JPJk*;yd z={nwOC}qEhuB0Uu;YkQ3VVRIkSMr5Reic_K@2s!3=rw#_zu`%0u5kEEasnMWm3x+O z_)9?JM?f{d=}}(4cAoz`1_n^@NHtmY!o0-ql)lb@LoOylFtfe*Fv@+pr&<2&9Wu?{ zw|v?OKYiT2e|OTcr!HT8jhNyJ=NK2E`&?z!#kpNH)=8+uFFW`mZ*RM!RQQF)==!Zs zQhzxplxhD(Vsp%SB~`Su5XoSZ1z9@0Dp4+hc%>V)k3p#JAt{cgLIL~KPLIu4D~yo1l*$o zlhvDg-;?~a{3M!x5Anm?f$U|z^r}X|0yPNt6lJUZoK(PatbzjhT?}S}O^<2iY8Nvq zhX#cd5Gb-K8C}sH_!>bX_X%yhAlj^5zLyymW$#C$M2}_UdP$4(Fu8d^^?4I-CoQ9WB{2Y!zR0#bLRmb z0D`eY98>}ylqY1D=WU~q0(C^#J~2frmG$rS83<^dfJpruf>|E;To_eQMAwoFxi(;I zC@C#L1y4Pxc&aH@-%-Y{ui(NQ}F@D|^KUeT$(Dsmr zM!-?xHl&s|Jr2O~_1_X*Qv z(&3tl=_DZ*j7Rd#DSVLZMC5^Ps*exX4r-m*wQjJ!gz<|dDeaBJ#b*7vD$0yz9V@2o{&q$oDlE~lyoVN(V4-kQB&n|)N$M*`Q^CVqMpK4h`Xwn=lj^76Bwa6h zh#G#jar7NA91Pc#AK-iCbA4KAww4A7Uv(d%9<SZ(yQ^d2hWWmWsQUdtHh?1DwJJ4!X{-29DG*&0H!ld;t zHw&_h(BwRTSiJw(K7+uX6!keZZFq##9^=F>2uh5(p#d^n43w%wrZ?$dptt3JHDK9D zB`C}Kx0TaSxhIh5nd;L;B%l#BCF4+&|L@PeRN`n=k{}x7FRTlGZa;DxN+3;`k!YKq zD4!RKScvfHjPd<#u_lW-`9i5tVsZ78_6ekI5WNA=Bd>6%qjAY9tA)^psApuIXz{Go zWJ4x^^F66~1d8$sA(V|EM7OxF#(2LirjWY`W`8+8EQ3uJFjVotEIRiyjc5! zF#EV-=TM@XSU`c=+a(;nT9R=1Dw(akwb@F^`jbzhn|yny=Q&pWKW&yUI-x1*8@bU! z*E^YN712c>Jx^0casAWPTXT>&0Wh$@t>Xu|A53(q@B>B*NgGA=0|ZTeE^Y{YjH_q# ztl=1%cnXDh+GJ6`KlAh?s`n?O`v`az$&(4D!MLo?9>V)}W`K;;g&tM_wKnBWO%b3r zdPm9fz+x;kWz{_e6dmpD(j+cTlS{1fTKGC zR&d{vel?C^QP=hkeVQnJC%)b$zBjtX38Wg#2JkhOP^urKkz~v2Oe8KYg=SSU zd7d?5HeaDDx5gE^atl}J5uR<2E1oTJHG>6q5*a^rHHS?8Jim94MexlEv1P}9rhs+& zZ|=hRrYpEh2;>Ux!t&IWLGhIV@Rfn`l>uN}HvjdD|mgAQ(rK)n{_mz>IKF{8c}JH{Ms5(U)<0Uxv%o}&jkq6!uSg7Ulj8J zT7uM$qF=J3$i8+c#&=lmaB;+&cUM%XSI3K{p1-+_*AUu!f^##b9$9-|Fa*mK@SKKw z{0a5loQM4LG}9jbSFxfTCH31764kXCr6*&etHx8G71ba>jd!SI&m-u$;YPr0RCO_V zdyXpaSVuE*u8}UqN~`KCKeNaud!&@X*0S!nQZ2HW&a$d&w@_Mcu0%>4f9!)`+wr&|*~>`M`(0_e_@msl6-!-z9KZ*P$Tlt=7~`TH67O|{7gjM82n%AS`!OTE(%LyCSNsea~E z%-F7I=O4b8VDBzYL8w3gyXs9uT5n|->r7V@x4+`WpWU0+&&9T>UtLufOne2L4u7g& zZZp1UKXoqy2x!A{km)A#L5ne6Ac3Est@wyoiX8UNpo-qs{7wwt@Vsf6Y;%G-aJg+UVWvrc7NEN)CY6KtyOJzU*7?B z&mZgNee@FbY*VuzPdA!wf@$+_NH4*(1glI zkQ&$>@kr&XN>PCA-g`xelaH;QN4H0G*eH%Im%4txNujFhk>dYk^?+IT@72~ji$kxJ zaE-J?ciX4dU(A{6sb>_XJ55tmPga4B2^!`H2{)N=larM}HVqBcZ|e^_x-(x!EWR>R z-R5;S;Hs}8|4mm*g4Ez3pn9k41QL9fwXZEs=kM#_fnl%y>P-4n9_ba`d^1V6ffh;+ z63ICy_=N27=G_1_f`%|?G@}e0JeS#Ryd1$SqtLdj{jjBs^(Rb%1)Vt~-~&bV1hj|6 zu|BdcRZ?G5+fwepOq_^(@tg3g0tPnCWa) z{XwWLmvQr$f(SMSLA0$zI7|7B4o5!c!Pa_wT9JAIcaDb(Dfo*3=Wld#^}Z7ZtotUmu1Hll$O0EGN|0mqjFkO$m@SG zp>a)cqq^r3>9s1Ax1S!B_We=Nj0$^kj#{L?@uzl}fIsD(02yAt)51ar$OI=%0(_B& z+6EOQMxE03i$c76>WoZ?6;c%P+<~>g6g{7F+BS2vKj_R;@v; z)&I6ms~3s4ej%2&ej{h-TM`QZz(3AN!%*_N`8WnlH!#}=4NBR8{DJA)_orL2-D{~X zJj_*Pn?(yG6LdD(+=K{v1~4jByIT2fN5W0GcL{DNw2|0&GdvxVfaY+4tY@PI6wls; z@7^olU%yYu(D5gVNif&MDDo56?;XLYi5s8P+cb2$-?WEl5`V^w&2;Osgbp1%$?iJ| zKv#e07-ml^3a{Q`UtXh?MV$r`nmx#}BET{@b-*qf*zc@UZ~L*kzCI%brVD76dOGah z69_7ni;m*+M2mqNWcN-zF1CGIIUEhAJ;}6t7>Sk1MJO-qJg3M4|l_6s7pN&4H*$HO! z@DgR9#zV%s1aV5HtLimKaQE<6FOVIP)rgJRN9w;mfCVSchY;FT9XlMvpb^PJZ!iS1 zHhl{_C*Bj^O};25Xq`jrFlK%`m$4$SWs6aL)*k%(91m+O>K_mC&)(T`7H(!>{-%#* zsLSVU-vmkScnC9&?=+>zfmGikZ5)PUiJ&jQ69OIAAmB{PrnhiUAyCC%X@myqA>-v}tfK#_v>l$3iR08M?dmUd>=^MVvHJ(iEIgk~Il=>| zCeu^qY*urFbqy1for6VyD~9uqU|DDtLc)?r>~)qh)$$0H1Bw=?7N{HSdc@^t7fgtL zZTgZES?^qw3JcQ1s(Z*q*|6})5s0!Jdc0i_#TK4FEGW|;SQy%|e^%EE^&gj;sB8g$ z_ZhmFkL~!x_fo1Q2ov_NP*(G@J7Pe?Pvg!nB8tO0$_s(O%>gsutXa1W(?>COskY%9 z&9GRspbb(D32(RW=G7Q=Yj#r@Pz&Bn;*@RlwE(0hawQxC?)fc2d@Ffp0gHcg>SwX7 zVL591WRq*uBsA0fV^)!oWdiZA5+-l8MESxF)0uh90@C15k4QeC~FcAxl zJEu|b@ZU>S-N)aeTtX1D`lmH(onfz1gde&lpKfI%8VgxsaN;n7(I^fxDP>Oe62{}S z*d=eii-3pv|09#;w`b)vXP?`*XSqjfq3Pw_OZ60((k&xdR5ehiyJdpo7@WaER(}XP zvVKS3t0`zE?5nE!5lTv<)F~E4N<<4NJU)FBP2Z0*!g=NL`YWYp{3~FNL%`^@rK^Gc zWKaDe6MktU=B;Jxsb#l)r-aqhii-8s+)fi%g^#fV)K6Jb<4Ft&G-#-rQio^|-l0&P zu=V}QvzGdg#w{{4mRqfB5pn8TjG@;p`mzp}s~SHpTC^RjYI)Bjpy{ojrOo55wNYG} zIh_a{Mh$PFVchxLw|9fH`k!a2mj!^+2)SVl-XkMqgpI{9Ha0#yHeQk-+g$%y&QV2x zahztBFKTp(14QD4HJVOhV( z!6TEclM+a|x^A9tGOUZE@4k!H0 z9x-{XwQ1al|AnQ@z=GXK;@Sx5s4vkGS1ujn2p*`26VlONPz1mr6EW2wsi^rk^k7?6rPI>Gh4vE|PjVK&}~m>ad7P&BzC_cS3;#VTtEKb4Lf zj%n3tNf7{r6$t>06bM5qx9)0Qm04cR(dYUfa!xEVmCZi&w`mc+8>mO93Yi9&+bl~e zMIpd|K*;pE?~17P#k_v1AKoziP(ID9z5RjN_JId9%@pr$n*8c`7r64FcPe>cEtF` z;=4GxNA*8cjn)9|oegFK-j!#0xF0fMi6FKzY^xt0?tY_KLc`5MB~b)FJltXs!CgN~ zrsv-`+8Nw4dshFigeta;bVClZH7qyD6}DNEJ80saEIdL^HrH=-82e`2^CeXvf>$w# zBO4XBI{(tQG(|BF&Br6m=+t~vtYDz>ZFN$}0+aFJs`3Ie+H=XE!*r2aCton*O77nf zA-pQxcv^o3J(`qX{g>=6{yFc~#o;1F`B|k~0&)djFqX-mkPR|)4}!~Q;Ubarr!w#{ z)^m3bu5=74VE_v2(rzKHD8jPIHr@YRbZ z-buygf>p0_bzIt{?VY&^2pJI+F<6GrC@C(hAG+bfbdTN9bQG#B3P}5YoE}@F1^$)M zSDF~1Sv8MBs`r-xWWC%UJYSjjfd*HyE<1 zXcN@`jMjbN68SEmDyAepzUtWOP(eaopUcXcXO98y2HfQQ6SV{_bUqz`W7t4xwb%2W zf4oP8nJqNs&ydMalLhqbVzE@fAMJH6paqfrzDgY|>OZNmGhibQhx!X`kdYsQQHuAy z_QPM!+duj;jS`^jD*NpRx$QYcAHofaztlgL?~A4OKtO;aL6`NHj)~kny2pfr}112^VQRp7}ivUUTh$NiU&%0Fazd z(q#B zA})@5R0D=6sL}d8h|;pYEd`F78uk@NLS&2rGy0X(jnolphJ;`*JJ|HD8TO`ALHFLv zx2%8agh9YD?F05 z@=i2`V_#j2&))dgxso6dLQA}_bV4jV)?eul#LDoKSMeA=`25X(&F30F6g{i1Jan^} zuxS5FtS_@Hz_cvAq4sc$SOeu@Q7F_BtK@j|gqwTkn2YAh(f^7#LeM~me6F82sjwP2vx`(b+YwzZ4{)iu z`4Ixa6R_Fku0D4G+J0Nm^n4n*$GxcVhwa+dE zcm3>ghf-~?-8P}=deg5zUn@=lYgHbh4b7TssG0Vz89c5)#`K>W z+O@VUbGd~cNAPG0SbSWwX5V0q!nA8&@w0Z{VD0#UltaAIcX}sH`nh_*Nn7+MRWn<> zDz!2P2ray)ErOrQE`Z`#^s$ODE132g&&xx)xPuzjEvtce(^+5aB?)Q}*|q}=uH7qY zq(_y$JYVS8FlwBmKG}~W5a^}=NU)T<*3J|~k>|OP+uoy6rfRchZ!{akUmhCMYxP)k z7Yg@IK$A+D8t?=!otR1Vp<)~jI3F8FU=#lJwDLR!R{3g&vsr11-@u-Vop_xxWl`pw z(V=K(`ye#l-k*ttDVAt+6gyuLOmQlhDj?W{3W(r!1#?k`3Sbs)Af8nnMgcF$Z~4$yjfl{>C7WHGeboG5}d?CCnl=IEx|GMOW<0q^2LCJ!U-Q8 z^Ab7UG9Doz(?F4-1o={(=X`KF->0wm15@XX3YbEEHW>mx5YXf9J78>p z6(Lvy48hu46|Wbqz$>N`AP50qSMOAb=E8KadcKH@)~df&n)d8R33m||uCT(!x$ASd zoXbU$cBe}m7zffNSwuffGJAAcXWztxmhENKOhKIFidM<0SIL6Z$+2NU^7gOg!F!f8 zw5O+G;I>!!DZqixk}$=Y|6D{+I))&8SAP`PJ?Z?IY#aD#lO|r>Y*A-8Ys*vnfv7y} zuj-S9a~#O{LBE~&W8d7h_=$66O8ndGplBZ_YL8z0^hRXiUzLgtaZeW;^{l4bm_BC?j|AZKm zS0vljv}a!VTxa2^xpsqwPQFnJ0)SDL2SzSxE!q?Gkzi_yT{Z@b>P4oq6~FV!0wI!l zRwyBugn<9#Xhp4g>h}6se0cTWa~?%|^Bste%EN*+8V%tmL6>Gi!4(CDGIqtu**ZF1 zwCi?K;2We|D{MnoyQSJP3vB(5HI}aUQ{vELLc1i4>9T-$StuvV3pJvi+hf=#$J|Z3 z<%{~xus;U5rgIz9nj-?hAOr%%>yfg&x@Do5zsNZ_(+&^%>sAqUADImyR2Yq{-KV>a%Q|mTJK7kOCEtt9;&QWYIZ4@^&VJvlw>;y`|^V4d%siz7zddst>ntII48#VHcO-MU&_$V#lRD|?KFgp_T?&9N<$5|rr zk8~=d_A@H7-#z|eE1RJ*fI0_i&m0`C>3VSf(moKtiyh0?jKICWJ$DjJ`N^yIL6$aS ziP~H&y-WN6#}gwl^RT1X6D|vv%}_*$9ZZ*zl+_YOwk3**XAALSTo6rwP$iy)mz{w` z9LqD3$27AiXXiAfC(yNWsFsWe%yh~IT1mlSeJKw(W5v(w=j80ab+r)=)8!h|`p>vN zoMByko1?xa>f0Fg5yqqX*s-YkezJmV^)YGqV~tFEMH0jbUXxpSE>Z#Q8XaAxtUe64 z+G;jN0kWEEVTV`O?*u35sMPO%2Pe5>qu>4LH_0p2Zxo68ZPQ`YZ)H6W+-?zWS#(S| z{a=NHsQ+jj92nyurD6&kP*RzKhIraQ2^;>DTU3fs%B5L=7c@zhmHFFvW@4$Yy18V^ zY`-)Xz}!=_&iIU6`8^C(rF(}|89ioSGqntrb)jL4EJGCHxx{aJIqVIIvj~-M+spAU zu&!eEd@cf`0SeUjKUFDn00UoCjJ-;tXwsE(tfxVjqXTc57(b3dV0ukPcioFTnP!Da zecHZglyq8(v|-&w=jZfL%gV|^koFrmBVZ2igXURXd$VrQRWV1Ht4|uT)0GA%U|5h* zqlB~5Ff5EjSMMmFsT+# zh21p2Ft&%F)&n0kssS*<`Q4SAcSU`7iL5fgnG0`LUfo`jvWroBPvO+m?fx(DMO(Dr z`~pLK1lwGf9(^w!*^^bEV^o&LciT=-WD^(V5*mn}In5b%ZvFb)hJ@K6=Nq~p<)l%u zNS$CT(;Fm2i)Tqf(iE7uI(R0vEMFMBjtIRw^YtW-_8hVH_pSGaR*nC-zR2%r{a^Sd4^y=(|x(y;?PCaZa`oqBE{Z z(j*HR7*mLqdQoWJ`bjzO+8n4n{J}KX_Q^QshM54!cgQ0|zL!X#iE_$xP>36`x70uZ zsWlPjyPGs=(gNc5zyE4>;KL!{L@`6yYIFm*(I)q3QP$1&ej@*R4!(reQ@9j&^X$G{ z$rAkRJ^&HdXHa5m7cxdIT2j3j=iIO7o&_g;=A@ax_G`r{%2Nq>MnOqbz)rX`Y}TwQ zDc<@iEp(NZ>4dX?wr$6gcSByD^y>RWGvgGt!UuUWg-Pa><3tR*7JqrMr2o`5fMj6r z<-@)|mmh8NKHlegZ=@lA>PF@)cA)3VyneGeFYRFm1J*w%x6nUt{DOSp#FoQ#-V*Zb z1%b8nxl6(z=G^K7^;Gi-+0`PGh%Wfl7K-u1gjKdW*+E=3MR-2`gi%3Bm5Z~9M0hPx zPJFJB0K7CkC*tC>8%0P8NPpdKAFv?NQ*z)2`o=KUzskEVbPSw;weet^6hHtXgyr>T z3Obzg)i|!q{fwHc=W6`~=vd}xwaXjE~!n<1f7*MAHf-vam>J?t@Qr~iE zj*G>x&&Xj|ia!IsB$W#sDJZ%9x^BOY*r>8e0peytfa?24;^R`=nRq1eF)~t|bua`C=?d!w`Nws)n>CRzP0m3UAG0p|4s?6LSaNq3r! z3pD58JYvEZFel_kU)+TlN^D6Xt*k;)g8Z#Nmb$|?a=0IX$5L5Kw%&WDEUy?axy-(ejqEvxq^c>V1JRcylnYKoAO2M4Du9CVk(J+}M6LqO) zqvs-H^(BcS-6QHa;%Dkh93w6j6f;MO@l{@m=+&2mKDvys(nf3(D-`YBU&!l&Osc_# z)ILLf{c?CtUv3k^Bz2=t`OH`(l0QDffKaU5#76{Bn8(U(w4lf_@lP2=_*C{h0_XVGXy&!1O+P{w)-CRHglBfVK3q%%ap2EkrDsgas|DZA<->%Jz5Pu?N3s z`=nkEE;J`13gjWnGfYOfP$ZQx`OgBUey?Z#(D-m(zXkV=UyCabn`OJg|1w?p_7#Ou zL9)=OEfT%6R|BTSi1{5#o+?g-p`}u@_8)JTE|E$dagaJkLx(|uux%J_mu=`8sYw_d zLR9Ix#=nPwrwo<6t5YZ^WEaGNI$}jACA|cCJH;nXWK=Ar{0TcfMR|8=Y_-tYu0h&; zNF?TPhLgCes(U5%j6+Rq!O!Y%&KHR*>hCWC?%SE#^YfdmJk@(y*a1YY{zdAE#Uy5I z8$k*|e)2}SR}l41n!sTsC149d>>KN;ykOgrOrytEsc?G9`e=)7!%Vz^03-I-*K53W zyD}w+{@_hnU-d*+UH_J3gZp1w&-Z)y-b;7YMWZnnUlN~X?H4`|HTCfbl^3%-xcij+ zVw0tQle3Qq>EB|5Q>2LLif1xJ29isz?xSC5ui%MTm2Us~^St!Bv#^E%b-A*{xUJ6C z0la5Zg_`#WD`}t$5IXb}qe#CgI*W&SX;?gd78Z}6-3LOYVr9&sX*3(6Mp;eU36vEs z2%;Xf)07xvvOYBcqmHqOPRvxM7598_0iaMTIH?6j`{gG%lRfpawPK!k2zF-0d714f zqb^U$$0?ueDBvGuyDgVMHvDq*AT23D40J< zCxOYh>MW~^MjEe=!;nE=`DcLrWBJgYPxa&G^>ke=d!EGTY>$T#risWs%m$3V8*@4| zqh{pm(A*0>qRD2d(7j+sv^@;@kS1p)@~c^hCn-K(CfC+0kl}hi7*~S~<5YG~ncR?E zd&ICb4lWOSN}!^A9%z=Qmphh6pFe;L?NOKEkwpN)jedTNWo`?ibPfyd_s}rPS~Qi# zKxZ%X6a>PHG+Rc_iZt87ev-agoo>9`78|p6fbK%{1=j>^noJ^+lzXNHA+^Y3(H;^` zPBYoHGtab%4o}fj%!LfJ*c2K~-%%8^BfkK)GF4ssc})>pLbdBx!Sz{vT|d|ZNx2U) zhs4-by}5WD`6h+*Jq3(_H*3z^h#doAp+9eK)D(&erKUx4GJAQ?SIQvk@hk;D}l)E1L(17vr4t=aW{dfYG<9m$; zn!Lj%uE|Outmb67zrHLM#Az$=(F1Y0=plBaS!v)f)w#jMv{4H*LRvmiYFKU`AO_Ls zEHn@ReAx8l0mPDrj;;ZXBv}~FOZtQ#QEwLHLP)H6ipeLHgi|wLF{21$J5Cp84(B*J zL+~v~wNV5Ih2z^05R-6DGhV?rCn^>489}9>4c~2MnyA{qZ880HJ39$n;C1L?;WzH~ zu#Ld= zr}Bf^Az?Y3rU!}eIyRkbKA5aAvocEOM+udeKo-egD25Qj97>x%!7bj|Ek|Wx1Q+6a|dW7W|7j> zY?^e!=mp$k^>;Zp5l++#Z51Pa)!%~@(!cCzW=Fyj&r`i9Ef-_%g)&&tXhy;_!?fbL zfayk*6>t=SL$nj8uU4Uks~Azdq0Nm$7DIW?1e6aa(qag~Y-`CPG|e0JuRjVk-zPJ! zSW;gdJI}@U8LQO~tA5Gg>x%jVWh}q?xt=jT;Bq>NUwUv<`O`B0@BULMB%LNTK=<|a zBLVx`M*(&|gSJxs)iXwmd%4DHtRl=2C0$W|BfO>G{~XEzRm&@nt#48{0V0Vb%s<8$ zH)uDH(XDC*ab1lJ|EGZ08w@p<2(?GYHa5Gg>lBtZNuqDJh!Qi5{d_`dOb-E+_t z?>EPL);b@fGmIX*VF6w+-Vz{)j{r%|Fr(uw>#I9vyP;g&C)Z=DQI}dUWd&DZdkf2~&at{gK&J93%4OLU`l~WbkOV*!nsp)O z)}F=4b_&}aSi@Td!*aNuP)#<*3z78kc$D!Pj?8KGN_bxB*9nPjfD$8C<+#Z!Hs(5xT*#r*%bdcF)_T(zW znWYqh%w&+z%8^~SqP7f8#0=_d_*_X|mIonjjL!9oKTj4k1Fay<$4cYW6=N8rmL$?v<9f}eq;MGqSf*k`O z7o!+qbFm}b;`oK0UN+;FhKmg+VMAW*Rjq7d&=wtF;SxgLH#gO}DF~L(8Tl&wvl(Pk z*@~CS+(?-wb>a5#d5Sq$M~-MK4@gt$ZICOBsXLetFPAk6$d&wyAsK`$eganx5T*WI zBZ}`~aHFu0uFksLh3?fma>_K0OmAk=PtPBTOhLCU*M`c(G5-lOO z$jRf*-m%#wHxQoT_Y= z2)U-CYoQNOb)t1=YjrRzK}B&q_@tYY;<4dte9%8)``!dDs(qKhYF zmucXi>p+i&vXIzQbxxQo}9SZG7@9_w7rM$~~?TO~SnCR_#@;3dsj6dQXB(WQ> zSrTE)(^Rg|?7YCQpl{wv$yPe(%?tIH?Z~d*HTB2~3s>-nq3fOe)R(VkgGotJm{>n1 z(JF{FReNKP9|*I3&M#(^l*vHFxIN%*kxC9VBc~3gA9b(dpfmKi0bru-MA1^HI8%p# zNSE;mLj)>hUQ*^*7@DwSn72LzWg9hfq1`QE{bN`~*vl$yN!@wp{wjXL8O5$B_hvWx4m-S*}_dnw71v{ns`dY=Mx4k4sCsDex7*jCho}xh%YR1^?H^Q zUL`s3D%*`jB!#@rTC{|0k&6^T*27XniVyWZ50$hbG?F^KW*FJHEcQ`IXNBq`at|K9 zYCSDR|8@*DIw0=SYea;qadtJ0OcRA9od;s1%2B@L1l*(zCTH^q-A;;~q>C6273;Y} z&!4T3Q4G3A2%+Td+Q~1cNAbl8({I?@X~#PNAB8?}_7!W2ARLy;6>D}8i4Dh;{2-myWD4%O^G=pT)=2Tp)Jrt<~bN3O~0YHIad}wjMp!g z^dGcGaU(~=nN1RZxR~1+HZ9{@)4Z8)060D#>D)L%ow~ygqLdbXuEg;=nYc|~o#zt) zQ_UK?WkApf;a6H36T1x=8cxo3>-xGptw%jCt>e4>IOmme*7`IlZOrxvI6g4SEQfdZ zG4fD3R7WJM>a%h%MFT`7oZq?PE>tyGCp@ybU`}BuivrZgQi=-bQ5t+H`%Z=w4S4=d zn57;GEk@U9rYisw_rO#W6w%3tC><@$P`f|lkL^5nkZsZ9U64uw1DhgxM0*!oKuZS5(##w1yh+hkeJ$$^$qTr@|wC2fG3m z*_M{6V?J7@5fBRLL&F*qRqC^>*v1(J9uAp=!#eJlCmq&rQy6)Hlr%Gnng%CbK@)}S zj2dWrgVcD=a=3?f!+gQLx>h5ss^n-_JGcKNi&F&1bhgdc_4*P z$ce>Q!`!}dv2+8;v|^Y0Y#GRDpU)t7k8F}7KW^wzSN&uvmQs))cr}OKCvu-_&wgRX z8VMsyz7Cw9elS&95@oy4J+d-)XCp%Xn52gadA>d(tryF7eAq`#n zDQ!5@-bI6hhH1Zkm@lW^wKMJy`oSSg z#~ghu5yj*Q)ibSOVx2GAS1e#xnZA3tPfT`(2L!U8uBYQOhoP7tViHFnQWGIr2tI7@ zxGB2XzW*?e==zUQGz@(aJ9Qa+-X7%n0kjn_gUl5@vX81OriR67F*y& zV71WQAPk`#9J22EP4iUR!>y4~U87j>u?8`)@L^{*5Q_>vyWm_jtJGukNRX!hD>V>) zY&R}Z+MZVW=VHW=E@L32X7?qAQH3#J*FU_b<87?#X{k(#QPU3%ht!62;53W+Bm>>R zJe*ZHOPr4vC26@8*C+MZYk`HIC13eU`aiEiaf@ z@rj^7^+k_X)I6>ZA6eJifX$=vh;l{!PUfFuOs*hT;?NXT^CO-WkMxKTme-fz*8{W^ zVqN_tWkj3FQmD|Z{sxW+%8!dO@nmEusvqTxwirMFx~tGlhpT8C-|^Wpt*YKq z7IR)-7m=lnh$@j^N!~k=dA=0a#?oHsBFZ?~ix+L->#%DjAVIA$tvon{Ur0Ojbe2&$ zU|bpGl0iY`ZF38I>FFx7R#Ov0a%R`TeWzvVf9EFG+1yX$S1|VL@5=~NP?zO2k-eN$ znq}K`4KCDtZv^9np@(TchH>kvFm7!Uj1O1C4+SG?0$9DqUHw+kMbAe<9lQ9jWV{}Q z(@2=(1`TO*QuNY#-xf`cu_vUNTjUm$o>(_!fN=w(HTV+kTxo&E} zjg}?36=y~JTJY)69P5n}?T=;kQQD7!tG9o>8YF)B{k<@;?@z}V2~z1VcoBoKZ#I(Q zf}teFoPk-nAb3eG44FSt{W5~k3QBT?ij?C5iIH;y-c|Hb(SB?JiwAkS^%hA|gdb54 zgTJ~N3RO+3l9=0|^wln_6MZ>C(KdV^%UkV{n-oH2NHMAUn4xn+J28(koQf4?)hiX} zU_qezEKoH8>P{x_s`T>SFE6*fml+9ME01J_#K^D;o%;hS=C_1PAn&lMO|X#X+{B zTSfuE1@(|P(Sv^Mh@Y48gYBZa?Zs%n1YB}mP~^q@fOI?+*v*!0_Ur-j8$Ye?ljQK#Xkc@bF|hjch895McwRIiSWj`S7WkdZtx< ztZd1}t*wV$oTOr!WlI$GH)B2`j9eF?Zi;NY&goq>_DC5s`pCmhkqh-B4!h9X-POy0 zdORCdO}8={!_uBQVuektobz(@faO{Z2CLK|5TNp^?}lKZJ)FCr3ad_x>{da*SOQk7 zIDk`648=}QaTz`cE-+F@D1~RPp7k&}EL-qwZqO`CBk?A=d;DmJ*dhasAL>{Cr<@L^ zr_kmJS!@giMHr4=q~KEeN!a9)T`@V76AHVgl&FPnhxee(UAHH57`9|E)!<8Utgb7i zdkb_5kbZ)(^$c<{I|ozj%%_JA_>rs87M@4ROg6TLQ%)@_fRk8-=z?^$Ri zc!mWw9M6cjnVe(&?jz5!lx{P^p%OkWVIP;IY0C4V2z8(c-m!|9SXfx;1HrKsG_#vT zL(pUUE{2HL7X`uRO2p%?dAk~en76VGXU-hX0t!Rkjk#9%%^j?fO3!-87~*5sj9S{B zwSLl_m6{4IggSy6>ZSaG!^MYpehwJJ8`3l|G=yE=%o{c+GqWN%umK!8D{Nq@OpO$X z4jZNe)&?xVMNDp_40`Qf_Ha#w=6a)}c2{F5@%3pV*;xXiT|{W3GASaehJ!1zS9 z0Q^meY;5(!e(Osqphvp&G>aqx&chw@ajnFx%~Q74@`+ z9F%|n962vqIb2@@8bqoXx#9lA4-y82p*w_+NFYH_Ia3-ZmJo5H9VudSvsX6LXQ!eBT=ckl9 zQO&|k3Z#HHSlBTui0~crh4)kB9b$P+VlVh=O29#&MVxK=A&-(_wDL}79jYi6m1lH3 z{JV>8;+}%Gp^YTi9%axXF)G9cZW1*?bd@wpNJJ7Muo02K9k^n8lprCggg~^J_T*9r z4lecW5X1v$P}8qJxE^b5f{HW%QaMPwWwtb$Cq(rKt@>)wRVQVC0el3F;UvY2o@L%|vjFJ~0IBau(=kaE^6CAzs&Gp}g(wy$%KFShtD7iXcxy)(?zevf_T;m6W8~HFZ@qqyrd;bFX z81K2mANIxAL|Fd`c}hnnO6<7|moAJW=KNy?k*Fi@LM^!?a2UL%uB&)xuB^UcyEmJn&EBBN4}iQL8X^SPouWZ7d^tdh5S(tWHXW03&wa5Rt&jR9D?Kshr; zv^D>tbdc7*3DzII!Zo0CJ@^8~Lo19IJbK7dgv!n;)4ptSG!-7QB>nJy{qrcEzZq}3 zL>52n;2$pDt_@nTA=8FXR{uO*(xiK)!65^++q<5CAUsQuqj5Tj?5@EEY9HXOmerJr zT>O>(mh}hLQ~mEpJGe3Ged{Uxx+iMuXMiZ(iYH26(JC)r|HSr|!D`ZX#?hTtrqNCX#e+d;3jFc?q_YvymtczLggR6_Zul z;7f@DKhMbbBfz>Ll6HT->lEGlIbK~JU7<%@`im=F^vZmfw$eQMF-af7eyd-b#`$82 zR49@ejSpNPzpm{EJ|^jdn*ByUfS<*868=+ZftqHcHg=pk1x2ny6Vf>Q$M;KZmgv{| zCg{%VN-hsMECQGbN7Z-?8aq1-Zg@C+8QVc7T61lvMvNMnHinJXFt+VpUZ>~YVrY-JQ1!GAk%e-4ZMc8%DW+T zd#?bxkG%pK2-4uyIh*CHRZmv^Sip_I3d1dRhn1x97o#y=6Gjs+bq8}cW_~Vv^svS$*MmU3l~cTqM#{%8dYS};m_0v!y6{1 z%=$6$oCJsYmldhk|NYSSBCz%!6)^JA+m6`v({RA3)F4evELM6OO(92CtX*i>m|zr* z^K^c-k5Ifl0>`uJzI>I4E6_SN;UKP;vz)cu=`hXOU}1X7I74?b{?P}zooqf08`?ZI zRTP)W%&sPXSq#DyarB>8K%;0OzYvuHzQ>ZdtS1<<|vK*?v3vRqr7xFThF9ar0>DE(|ndXl&R zr|{n%SI(2^XXHd-f3e<@jslgaD3&e7k{z7PlbG}nrc&QLBYSXs|0(<U!VY<3C8sln<;%xk^@v#Pa%U0Cw^nw+6|2g~IkSOlK0I|90-cwl4q4Pj|BKXSa z55!DZJsV^PR=4v8+;anB#V}j}+*aU+Ix<~#M2V z$MuXyH$GtUKpaF)`M*+m#!!{dqdWmU63Y-|RPK5376(L@JL{kFpeW{yr?MJKQlCqB z{;M{I-To=Kq`qHN>xRT1VHJqB_sqr6s_E=kHE6j`>$~9|cuTTAl3n&^f4;MMq@GjQ+i>yIGQG7tqF5Te9t*@sL_-Bj#0&rCoY-Q9$Mw5tMx(eVktc>H z0RD#LdOEB0->8zXuA(Ki0|xH+%)(Ary45Wl?ryjE_NMMuah64UsJm_4E^z?kcKggN zHfYEM<4DZv7p;d(^Q@gcu@ zXMGp~&m>9zT+EKd%G#qW^vS@iqhB?Z_1r^M%M}`y9YVT7(cwx^u4WDRzaYwVO0kqH zR?;OiQ6O;6ovxUItDTH(2ZoaJvIE%jbq;%$s7-H`4M@$(TuX23z1nmKMVw(vJM6e} z`@TZg1CgEyx~jTlrX)h@H9l|Ve$Jb*^Mt-76OBQth93cji{XO568*TUbrJ_BLiw4f z#ud*Ru%**E6syV~DE9`I34wY*jIMHkuh+;Il?smHY}5T zJbge)@PUqdAshLI$!CwFLl@gMGb1M^tUlA;!>>7nUtCKAO$X+7w+m-@GoQ3tpIqUrtv%`Q=2r^u+C=kab17*=k^24k^?7OSu%>(}3aU=n5>aS^!6BSKz>^ z1#TJ_IHb$9&noZG?}lfWhx2BU&f;Bb7c>j!R2c~e2jmJ|ve;uI2n2h`uuV^>^ z3N5wsGUxL4du*GO7KSmI5|{E&N<}(+S4y$xI=mhyQ%VzkY=yfyqBBMJ_(QGYWUi(D zehwQIK*7Kaq@*^vpgJv`EjbF2lm^kn_10WKJgvMR1HH+0wc}abaLHLuJ1}!;ri-)u zz{YYD(q7uM>^s4-rR5p<#j^WlbnhwgOn_-!ACQCVKv77t)?P4-Ly);!OGu04tp22} zyXOE&d5-i+k>4DXADrc-H z*#phG0t!KfK7*F@?Hc+e%iVXl83B6k;P5F{)Q*sl^+DQ{CpS-Sp7PR7!>3G}4o`Wn zEsfaq&8jN3S+*B7@-H%!oR7Moc|AuRXsz^BUd?p0^rBj#b)WS>CT>|S(bBoAwWNK7 zsU;kiQ%#_OIIzHzcyTK##(Y9g&yR!{#^Vmff?3-tKR!|%qZNZ*yq25&=lrE(ZZvzT zAlQVV2c^6BH0iC<;kxtk6TQ@sB;Oqi@u=mWZ5ef#_vlcu5NV!6H)lB*s^+LJE7$lO%<}6bl7on4|-yV46J& z2>}y_yG~+3?FyI1>)4UPR&G5*c*I8L?4}OhmL)FMrbHTuip9+9tsJhllL6W54V;yp zR>$OK?Kg2M4`C@M6=?PKSUZv}$0Cbry_Sp!%Q>fJ6!l38WW<$58C_qWLyxts!e)}( z9>PZmro@p!$xUmO8^tY2omIfL;!UL1L2{i-As{*-yEf-cGKypGvw$Qkrah3?&ynJ6mkXuE-%>w^6(9w6QXn2; zi)}8Jac9ZVf=`P9c21)dpWFL_Hn4|7IhW##CyHTH!7V!x=J156fYSE~M_IddXS-RA z^|*>Bb@xORyHFgWphH(_eI#YzXhU-|ajz`-F|N+;8f<78I*KJ@3|R$Z#|mQwsA?XE zmDDKS_XP6l^MOXWftLL&kofwAzxAAVhuSW{9Z$fWORWiNLO~u*;Eou~kmtZ2Zj1Ji zT*)2wIQU89j~_x|hi-tqO~&4I$m;O8DeS45$2Wvdfjt!jd&f;+uNL;!Ok%GV_WY#7 z9x>Fyo|6Kfj~M76Jd@ge3Y^1iJglg#yH_DUt-oI467DPCS23bdpRz$OD$$!LC9KNu z2Q}+-euA*Ox!BRH=Q+P;tU(S$2>8tS<3w`#xKN*3k_`>u(+H|&0}p1Ts{hlrHR8r= zDdLh)PsD9{%&C2Wa8Pj+5zS=j*C%OHc29@5RE>lM!pla(N=t=ww@0+RrNE~@&alH0wIT%gT+LsA>_beCRdTi zaTPmzCxcvw$#9`rBTOlgOW8a{3=K0{=S4!uz+b{X-N;9nXG(qV9d#0qrjTp=) z26656c=CIdnw)oMuXvT~74$$)DE?eRp&A5z*FwzO0DhI4GkwmnCC&*$=jD2!7(@I- z1?u!^BMA2nn+f3PaWmafoM%6>w=R)oZT)vC`SHri*FEs{vrzC5J63_ysuBC0Mq162}B0?OhjWWVYbX#IILtH@gS8$GYCiD4P8C-g+Wnm;*|)EJNDnIel;)9ytB*53PEAUO%(`-QzeK@ixLLB=1Mkh1A}WzMO&;mC(OT zF?&AUK4uQFTZPsL_0)SMc)-1-B@Fx){LE<)VRO;cAL*lfyrTM4u4BIgx<$JmI5~Jb zd?n*kvpC49Q;YC4>zu8uecPW(ayj4g1~KtQAC>5o%mN zm5aB-kNYz`Zu0u0eTQU#y!u!tDgrDEUjuBiq7XOsJJ7z&CoE3|6X{xkwm?~T6 z2gfP~=XA2Zl*Pt=X!;{y(=#-?FfaH75uT#4S?+ojF>|o>i-1QdNnF*Uj}5>1ElsVN z_`SUW={(%Qx{8;t+gh)-Bth(;nJRV&sDx!usl}QmvcGGP2e*OqS^wlCn<9`?ts?HR+Nz(`#{(1J8CA~^Y2-NQ4?kD8^| z!k&Iw+6AM|b}hT9uHb%k)DQ=g3!So=At)ZvX?wDldLcM{?O545%7nsvd&Vf+GbwIQ znH|#(JJb1gYYC??U3wSPpg>dwRy)?x*3lM|l7B2*HkpSEO>|e|Ld%+te3P)N4T zk|Hi)5O_onh$71Fa5_PcrB)VrgmzUf?xHM|fJvzE3@^c}!e4=H_^^IuwkS1N{VG&9 zqTa+i0>;${t9j@7mQwTIAb=25W{zmh0XiD`C3>3(3|uwny!nSjHM&XRd)?6N-yWf2 z{20~3hp>>eyZ=LJs>AA=fl?E`|Esbw8*zGj(U>g`+&~oS(W9Hsmao1st3+}3U$k#~ zVTt}(m!=NLI|4~Cafr01&R@X_|!q*`tgUG|MTfQ?*qNCu;60n`j%2_?!ne8%CCz0Yi6dAkU2q}P|aok*R`mU}#UDYis<-i?=*9e4x(I(L_LCAPG|G@VKI z=(tF<*v@`93Sf#QU7hx>GJ8qdWwV*JfBl~BgXG?a_hu)7Z4S!J5>Ozz z`Wpq4piKIjSYj~*aD|k>55#bZlGNuUTta51GiKQ9F1A5|_BiYoJ+=Dd4~-ybt08$w z6wk?O)lk`5Y{#?)Y?AzQ*aLiAo$$dc99O-SX6DaeqrhTO)zMLo zGKASP%q^BDQ;3@td>Mt%bNNf$m6SbA+aZ_f2TClxqS^fOc%)T6GQ1Cb`b?is%)TJJ z^=<9^l~U{+R+i%ki(>zl{FYpjJB~k09)Ifg2+F&ju&<0K!gPJ!u{vi;0WAt+6|)j` z%C9r@n+Og%r%el%kAwnJIQbYyVTC?bB|C{`;StE1Xh+#huXi>s)}lr!^o}uNSfc!2 zz`4E(ee7fEu`1A4Q~4KGO1WOXg2P%MMVu1D*IXY}UqZH}N*}kQNH~_Awx8S8*_wFt zF2*5V#Al0^nLpx-6i6!-IAJUa*H_v;I~?Wx=+;qwyDx6RE6mFpf6!Y?ME^qy4MpzmmdPRe~|P#z&WC! z18APMHLuqPWda`_>;pPQ=mS@w5B*~^2m3Hw_hERj4+tfLvK7D=@GyJm7Yj8^2?PQy z>YNf(qnrOWnUM@JTQbXXmQH`v-%a=v1W?*MO&l-I~U9nxOL+x2(=7b_t+S`@Y} zW0KF$S`$us^8prqeqCDm65JHgzXvSeEp36VD1R1~6ql;AiHhN9~ry6nhSdxD+F2bxH8P0y+ zJaoxix(h5(a=7NQ44}urdpOc+u6dl%vVjbUHW=&sr203y9hkbl->tyTtit zY~_LRu|R!oi;4X_AI*4-Anc<*jr<-`wj@?>HVlOMWek4yTfMsJ7T+cwT9DF2HSdB+ zTN@fo{nZrl^h}U-G(q*p-x%0mq3jb(9~DTTMZUqXW)VW+@UTYjVdz;VF~AngwkAq=NxY)UXrL|>TJfA@ zR-0<2m6`Fxx}781I*S&nScStHk)!kuapqu=+jnQ>= z3y$I_8~4_WctaHBha1`E9tbWA8RH?B5E@E}MDYADqoSdcTZjpW+KBOVsru`R&_GS5 zSu6pg6qc>(e5jIzO4x1hw^LQ+3mPUPd47;NK0PFjnV2#D`29keF4msYerowuAV33} zKX;AEi8i{?T65Vl$VqM4A2vD9vv|7>3&G}Uoa<0%SC3ua8s!5$g#i}`Q zTaKGMI+>~e72|SDlf*D-Xz+Sp;VJ9gKyF3;xtQ1wZ@0|Ds1tAGEdbN264q=+QK~

oWUbReM^=o{Nv%?YQZBX;TQX5J&Na8$ggo;4ijcC<7h+e8X;u`hbw+%F4LEM~ zVJ2IYFCI`UZ927U$XqCqoe6SL3B*SOAdjLG5~KB6XJ8P zZZUq!2`_5c)QS{dwoDjBEaE@Qf1Z)cSQ-Yc{C_17P#GLVt%S>omBy{rx=;P_8KGi6 z0YvHQED7hQO8Fn}t`L&5VrBmGG7^vKIAPqA{in3pU6Fy-8ezS`p9%<@vccEtY>hA* zGYpz16chRTkgKcoN)djdCD9@)n$Di@NP7G|0y8L{SYkQJe?RL+^h&z!2$R9LY+~6{O0d-q=CcwNzn&6od3QQblvnAIkKH{Gs5-Ayv>qCIsJrRB`x_DvBgr zUaGtusj>oQ?nzburYBZbEd8_?=84Reo+Nn`^szFryd1&vF(^lvG&EjC?sCLLz!He^ zVuXhIY{fBhM8fV^InsYBIYL(R3F!xhq5(PL-9?V5p9H>0j?h1P7%vhRIMdmoELs1T z_!fdxv4Y2yBUk*#8MhV?E=L5S%Mo2kXdGXT)L-`H$SePM0cTK-K;NbqMO#@g%AV4b z$lCFVdLpT7ng^JdPX+ze?z!tyzzq$TM%7)HjpiRGDV_AKyZ!pPgEkBVhGuCV3~`|B z6e`yi@mSW#?Tk0m+!uU(Pp`17c!gONUVRZN3!0^@DO1GrBRmsTe6q79`=?Q|*kJJ7 zgl{IJ156SpC)X2Zr>(P`+M89c#Ey9Z_nE@R`AhH`e{sC$SHvaD@wg~YPWH$8qPjwX zxAR=v`~RD;yvz~+em5q_J;ULfbJgLBHF2&+xgxlpD+z#TC8_YXB344uny; zb#wV!RSmA{&;PFikL&=j{X%}`R5e<**4W%_100??|)E})}c zlfzP+M_XDnAA|&d^Jas2b(hlZ4sU2TUkutJN$|k*)U7>)x-z6g$uHz<_8|rCL=?(pvX#7gtA7I2C z*yOi5G5Rg^{}7_74<1(L13GG@e?b$IBVIC*{{lV*j_09p`Lj##cgEa_S zx*0&wpP6g29)pV%@Nq0sQ{!+SmrzH1OdUNGgWzRr!E_X21;(*BcRqy6*&t#=vl#J4 zR_jm}PEOVZU0}pSrIjXBLm|COqgOAg~O$DiW_@cZ}*!M}NljXF`9* z^H=hvwt6swDU$$OYw%4Ak~m<4=Xe=@FU{YCCZ1ob`LE0D$(3h5Iq5N`aS)3nS#AzL zGBAhV@i^yjca{?~Yo2nj(x1bh7L5tiYOMEaU=IIDlmpC702d9gc`~?z(A|TdOz*f6 zA%L+sdtcl;D61jlgsyY?rfG&&5$g}`d~qL9e33A|H{&T@{IyIlhOL&B#e3aEB{;)v ze1U-rUa-?yYX}0 zS=4%0%m!t~$F-LCWWISxu3LNJZ6r)<*;QkYN1J&O@@26$^SQ^+X7t{*nY-;u%FG>h zC1qxlUP?!q*2Q8~<{?vMzOhJ^SwENG{O?v}KJxugWnRMp4X(;?=ri-6sWKa)DO`va zf3Z|lFvTCM$_SFaDq~f;Dsya|CJm&mFmFDFD)XA2DkBFD#v#;9tct4@uYWX!MozT; z2d>uWgXQ&*D1Qy%L-9_cvi-B=TQKD&l&l-*mt4N;LE&YZ;Pc(o0mF4N+~6C;2xQt2lfDn`x?1s+vI^$17BIj1@W#?u}gT4XI!GO^bA#A#0UC zri%qN2i?YwWTfgTKuc$m8Q5)%DkMQwuYa&e({ZBi4T->FKb=8-*buQ=qk3Y-8^SUL*6Rt1j|qtHRq?rsZi_4i6`w@|V2aOr zoA1_t9~GY^7?AQK(Q-U21RRJO9*^!bwN&@vw0YNk6x}i?J~R`@UFO*TfbOF;Di%FY z%&*VZWG8AKMfH(f(%4lVipd3j3R?s8T6nh9b*EiXuU4YuR&v@h+gBqXVh8vQ%fix z`CC^SpV?xYb>uc27eBpJVPkltR-qHv6~A!dI7VS_PclB>7xuntp$)Y>Y=Q7VX zZAlj`3Mi_^PVaDB-8HVYvoDVEm*0PkI9@ca-pfyQ^-fdVvKeHrYM0_f6WD$YGLw`V z$pykYz!|gFofz&r%BXr>I1Q9V^mSyj=l>9QNuzt_Pw~GjU|~t^hLXD?WlCHZ=qVNjhfB4 zimPH5ZZ6%icWhC0ieOSbq%Y9VNYUO9#gA5^&BAp_G$)Kq!jWgPkl50k|J(VknF85i zR^l>UD%M3<#Gy!+mE<*Si~1W>IGzlY1N325&>#nzr&igF`Nv>gyE0APJ(>~_DuHhq zmF_+{_}bw}j+U0nl;|khp|W1b`YM)`e{q6;j8}AofZQ%a!PH%rXY5%n<&$$3?M-R-L8II<_aC{kFAAx zYi#?2VeuycN1BF5Sss%aWc?~Lz%B9Z2-3wR?Y)wdLp;#K&;S}48$*q<0HZ{R0L6Ze zE@aFZc0%s3Y};WpCIlCOB_8fXIgYMcQAF8aET!uQYPx>--$B=`hz!uR%QJ>oN{&qk z-y>ZQR;R(RLGkJWT|Y{R|F`J+=pwonjE{?`14aL3>J;4>plJET{C6WQ-PvwS*l0T{*|xl)fBC|y4t>&xg$?uoKTl6_f}2Q3Mg1aqx}JB3jn8O zrdXSk#o&EJh%!k8xtJ_9PaR8>^0V|<2grLYv21fLhKN_8Dou?z04|&4_>?-_%Hvhg zE;_t5TS1u~J>&}3s9yDmWi=nlKgF65N&!(@^pz-6&?Uq1A*ptx$%8AqB2$FGD-2OP5-2L4jFE6-dXpdJocCz{nA)J;>DM zdAq%kwuUK~M6YM5i2uuKEZQE2-clTT!$XU%5}>g%mtc0$V*sTu1AsPqfJ#84{s;q~ z=hUb^bdiLsg=Y)8C_sn5bO1VChe8gWzupps|8%5iz+N+Zr2%#6_XyP2C%;cXohFzT z0d!Z)PP$mb36?aRdy*Ob3%K%25qq;bQEVppR0@xy;@^7A$(d7+x$HD)Ys`$dwFgI9 zxMUCs60C8ly=m-J(-7Mv>~FPUP8whsV~AiDHTU_lX2P?*v^>k0U&^!xSZA!&PIUKR z747U3OM6tWQ~BusukKMLvM$=Tn`QjD{a#h-RYk9ED5D)oy9!7l>=g=sh`G0#QrNThAv;`N*G|;t> zlwgr``p@bb^w;ayB|i(~3K?$y+%9;#bpt>LCUYmXb&LovwiC_IU!uvNM~x$}leDPL zuVyEkoolueesayES_rhbv#4GuCqyv{BJr*n64GHd)ycDb^9Qvh`RCgt|FK;lECV8h zF!DWIzTx5W7IX>_Z19jA(!P!|9oUnCBba}>X~&L+faY$jXfWMWSA4BQX@V$9SWXjSuykY?b50$n+Mv zc4CA<*`Yfmno&>buu_^36G)CbR;Xzo;EW*!kh~q*k11efFc`cvl-kkXZdNSDn$F4P z80ok(0@m8qyY?uX)K8sF;*@|^ROpMU2VY~yK#@}#?aX>jtALPROz8{fn5tUUn%|t; zRcW8DdW|wk@-PMlVCVPB_tCm&7a#0p-{2azUU>{YwLO@ow9|y5OA00WmTIh!rbFJ7 z8vvBgXlPZ$6Y`OXOF+~#Ze_&Q zPsA(e4)@HVu`Dn6BFS_qCs(3GU-ntVXTmR^aXi|RFS6|31U)9bw20mbx=fAG_5}pO zKQ^$DO~NT_z|n7{u$ZPry}L6d>|u>`km#jdRetp7ryo`UyFC0YyQEWBVyny_zOsm9 zv&>xihioS@%|-Y1^ZCv8JcQ&OJ^H2jhN%k_ITAiSviWL#-~|;iZJ!sB>PxdOWK~30 z3ny1=KgDTVSA6QPu0HLWzd7e!S6(eK3f9uoe)!G1pMLdeqhFsm^~$SH`_nhQi62uY z%;V1Y%xUSBS6?N*g=#>-k$YNmKbG{~@c1r&a#aysbyXR?jBgUsz^~P6gAws*pBn$b z<|4X=qTuM^_StK*H>atz#DpCpe^oYJ6A_Z5eX}p7%!B*?=_{Mhvz>NZrcT^)-gmm6 zr-Ew*&203uWxDp@miGTO`Q#sY!;4QT;%f^gxU~ltKzNgVli0%Ii zWow~}%tWqLBI5X>9k-OYM1eRiVoDY5h3gJ3l=N}oU};E7m0Bce><)M!%SL=1pS1f~ zE7bY8e+#7?JSddJhw5)OD}O|Lft^%Yb|(8hlbPz84=LQAQ{xH0`P`j$%_2qv;0RYn z!ubX(I8-IMXYRHLOMQ_4{Uj8Wy<&px^Bq|SM?A>{oBcKJq~F*_aC1Ka1i_umOqUJl zsQU;4?dN}x@vVP+(n|@U4YSpEkD6934XAqLXiSbZ+TGr(nU zKSMjTTkI$J9Bxjx_u%vjl2G7?RWNwx6*LAaC{omNDp5WIXq*4^)n%5n0T0#EXP9Sk zcy>SK006aaVxSZ-sf@w3{O6&y{o9${nUAfd$P)|*uPm?eo}f(Oy&%KrqExW9Eiyzp^Nz#39%oMnD~35j~Q9}>XJ+S zkM1Kr?ihtL zVeap72#3N)kv^K;yBjhV=Zx=Df5>lBj_qNu)rhV}!f@~|+p`;t6_=NzNPOL}@NnLZ zcwEQ!KpgpbN_S(Q@87+=8%Ssu9T*scn=F$a!ssDx|bv53t3vKiI?1h{0tz9#wV3 zJm)qNd~Bt@1j@i%zQ63y%(!|ZEOP_$JA2p>=7Ta?tn_}4T0hwi!Ud=p6?%7DC^fiR zN$mj?5;j|fd`4juRDhj**vVlfZ%FOUhrK3=U@cbeVeC6a&f5;nj`0iO)Hpl9WrNB( z8Z%yZ^f@r>S7`&HLq5?l)k2;Ht3{;7C0}{DMzP91O$53g)4o^4cnNO)i^%u_us?Zu zkf;nB(|6sgkv$~4fmkkOlslI)EXvzN`#c{-D5bg+4Uf@62~d~z2A?7nSP?1$y^iFu zntu2K`k`NwTIEB2_fyDvowg)}s*mt1PL?rir!7x7I(B0kzIz+=gf z8s_7J53M-J3^c)5eEmb@vl*>F95>X9uKGg~ zAO4OG_Gg5k7sl;UX@s&_&3U!le1H_ksys?wV;S@>o|g{D6x&9iv)Uo)lRgI&^Xphb;5K<$}cmbCVV=z*^9R7I-kF!&gUPu&cd@k?JiW4 znMb}fGT|wDjwnTs%qFEjM<41==?^M}|)((`-eggXiWdtu>%!)q7mh6kzHa}He zOqKQdJ5p2RgPZzX%GY{OTwQGn5q2BFBoDj;%T@W&bnKG!A2&d-T!OB|1Fd13Mil3N zk53}|eByg_Hu@TlInAnvKGkyb>UX8_Y3X4dmB_Dg&2V0o3i-xZ(1crIR4Nk*HJ^~H zG>=$qwz!q*E0KHb7{6G)jt3&S3>9=@PQoIs@GPx|4*;mB?t@UZgNFQE9D!r;CAJPV z=><68gGT0u*pf2kWeKvLA~e_csa5mwE^Xe41k_RXg`CarJZsq-DM0=#YW)@|HF5e_wqI{7NWMG|JuS6sE&Ri}$C5GR5 z!4iOIEaX}EQP=~2zrBIl?OU?A$PJlgdJdkfo>Q`S#c2Lo|2wCOo`K07V>M=WlIe-j zS#sy0%h)|B{z%C(DEbQDr9js&t%J|Qgt)f6e7)w7!L6w z_a+5)kVY(|(Mt2XGYu)!!H1MClzc@?&J}xepnnxF;$PDclFEng@lnwx_P!{Fky@Mm zK+Syllf{$fw$bRi|7N!(tWfsSvmkr=600wULH$_Iy71&v}Bp#$inO0&EeWFBRX*F-GWVh$>lyS^IGYK|R zso=&t&xjJbCqEb>Ovw_Pc%G9P|Hm`(7c^P*X|V1A7LrpUcU>hvnv|yk(~2E&se zoS)wk@`neIzjzRa<77B(G+V=@KMRss#0iTT7NAwGj{DV5)~}$VBAtL(dLWU8s=7oTxS_f`Pts9+QMN@AiV=_GX8apG!Rd_M zmI)7#x>SY85DGMfjo|Ft&N5lS+nC}eEaGf$661}MFDjiqNf{=`cb3d#<69f3=^DMZ5>+uDqT4tf^Q#T=nv;0U&(ua!r3GhIT0@+Sj&wK`1tJ$NB*`UcaooeX0J%rE zDyTv+>2-(DfLJGi8ki$WrscY7ahWPMJgPFUig*kW(k$E8lDe<(t*}KKtcO*0UPs z$AOP9+*D|IXc`{iC|Va%MrdGIb|LcY#@VCsK4nS0>^bxY!*4fdAbl^m@3nO<-;;@i zusU2yoV7ND;bJ-d!a#SkZK0w%$0k=}q_&N8{=p{yUTCB-)b2jd!~7&O{{C1)ow z*l#Y=%ak8ii}C~fszq(H-O}v4sYQb!Mg!wK7M{vfvNEacz$UnMhxvw6n?NL4Q)H$h zAJ{nlxT{RW=ZFWw1zgrht#Zi~giS%1f=kyC1bPrCsfm>DMW6`GzCf`?#q+Gom{fVQ zg6?4E5pp>}Na>BNo!~s1-M*U_k5{nNZAdgVXW#P5%Rce`zy88?F~)_d;DZ10iz(m* zE%xbh1Tu?#aH%w|wU+a+ofzl z=3CX^^X;QnZ8`B!E-vnJTuS6YHVjsyx(V+~Gk3BE=_YPY?|BzEnJatjl_8?3aurkB)h*ax{|y9F367>n~1= zqWQg7=N}_hMp3h5Nk^0GjsOIlX9jdpHBOy1)tiX2LYhRqRVR998{*e1)i{VC1yx#9nqqz zFrZZZy^y>!Ehsw7a@(3ScX9RUhy%GJKO#)HDg0QaIwSKs!xaY023GaX4|?_%3!mHB1s<2D@8S z@zuipY*fn+T!*9$C$xJS8=aq`D_4r8U1Br)=TF1 z$QeXMQ(hlRuumq`M06C@u*Nh9!I9AZHZMP8?eCl4LlSsueMIis5Q)Z8)G;5X)#dY- zQjWi8t*stD$~ai-%Et~68?|&NKNUTul$^iHnof^_BxJX>D;ZnB#_AXd{Ap&aB6h^~ zJ-#@`wH7;1c6O?(mt{Q*J5E=2+G%Fdyj~!YBW3e8b4^Msor*}|4NyG4xC{Bf7g9&E z*JGi}M?0U?gN3}tXC|1<6GwQohTR+#B*ukUAZaWyYMNJd^9fF;CQc`$ir#AYPqXu{L9OuVJ@$M_>(%nW+8Z6bLSTz|$8^Maps|_-h!b^Fx3f`dXRt<16ydlQpG*UF>(WD!VIdbsg8lTGViL?Kv!N*{* zpCVjBEPs?@LL>h?pT)jzMxP+i}I0(MMu{n5t4BJYf` zXlzq~A0o_Q!n!akACm0rP^C=M*0nl)NoZq+^uu?vx5l2(7NZ}p9k4+{ozm=k`YVyc z1D3@^!G;7wk(HtzIm4McrEql6@=d`dnDH4P%|0_tiTGtSLtZw|(&2<0dG~^{DZE1A z$^iiSRjD(Pg1xxb?vXFc^J~hq`6g<#)14?nda2##%O~A4yCZqlUUQK>(A8*pQ+=03|{tossAhP(rgq zNSA9cDdo*45}F36rNwq!Sq;?4*eIl2ouO3I`mEW=yIKrOA8}0T*eIb+tDZI^Yxtsv#8)Ck90o%k%`r9*ngTf><&k zZpFM#!EV#H$#pG&Sx==5$k9&@Xf-8~X_Cnv65*-M)|B+~`alrVVRqecFHI3Po{&=@ z`;J2{GTnhmT7gWwyvkubC`OohWtQ4FI8dv)=`c^)?CFpYCNj6<3j76%DV)R zK!E|nOYLy5qH-Y`ts z?G$R#y}lVs(^kxmvQf3jv&N_$VrGy55%{p<)dFzLwBWlB9L9!WV~U=N48SS904t<# z^7X3*qlRxqUooxe^%T>Rm4zVF)4kgnD&o7L5)EcUdD(2GkoP=#Nl-(zx8T>6$bONyYfF1XfaMC9pl$O>$6AqGVf;RHu zF$g=xTCH@b)rwKZlZx}2d?X>b>ND)Tw8>8ccLV}9)Kffes510-UwBvN_d@+MHk>%8!WI7 zBsmaeo&3YTO-Gk^aqhV03d63y-H&+GD}F`CfB~@%yx$kz^IN}f4G=R6$$^+P>{gX2 zOrfmPtZqVw5ffkuiqO=>`PrHT=%VXRh^!&T0GbSkJ0#hkrzDL={xvVK^=z9&@{_wG z)kp8tM(Bne98Mxv?l|1~0_6oe85vpKYY%iraY-ONVpdVG6mfyirNSWZh%SIC@-I)q zADj_l6H?LIhP&GIjJ9Tb8(U;LbE;aABp6lWx)`fs)2PNMFU3_v&;*K-<8sJtv{9m; z-wjkqmn6E`XCy(~Dn{YBVmKHMc4dlqD2+ZLV*_T9HA3*GE1S)&0W^gv1%5onA)q{?3fMnh-$^Gtov&}~#PI;u?LOUots^D>&{ zJe<&bE*u|RfNk)h^I@|?E8~^sZs~B`dUQI{a97#Ul#oi7!n9J(BAGT2IlPQ^s8m)} zxzY#%qi?0XWrXZ?t^14zdMQ?RO;IFEwYnKf)s;-vrN+IKs;~qZli)JFXwE(oT7~@~ zoc6}H`MJ^_qWs)$LWQs`{7|eq$C8k&w2fRG(Phg>GrW)Umohn<4>95X*nc2b@-=C; z(nh3Ni4VGoC@@9qMajV2Foj6R(m)HCG$7A49TSQ1MOCcmh+3^Qs0Y8-&>|nCh>tUe z_P^FaGkbz)vJq*9j);bmh5YRF0vMpUfFc48mpUUQ3 z9}ISWUr-_{nQF1+#RaCvz$6-J3(ptpGkvIt4%r;oumPl_*fj%Np=_dn!@OXfsHwBc;k7^w>;)G?B5D`+#VAv-$l4-^M2KQ1y+iL~ zdt{e&F0pVZtsj(wWNlZf5hn9m#x_)jJ~fOa+I!Yo{0CNEBE`gK_!`rlcq_5Ev%8wo ztiZ2YV>uv)K)5s!+@Z)Qf<4E4ht!$>A6!2$XG2-zapam%41 zxn-ejFFtds{U)GfjYBCTaIRY-hR}{7TmC#cni>i~jybA4xK~C&venIb!H~+kWSIm7 zG)0x+00`hOQ3#dfpVBm8A?32l<6zK4JjaC)=Wf6FEwyXr!J-jIL|!{1CBrM*fmd0Y zLFh5VWln~R%Jv-X3N0usx{`;I6%Jhs251T-1!P1|!QFle31LMQ*Ak||_= zm|7Gym>yDQglL5>c81zUU9$KPEOQ+ga z?79?8s7FxJvQUijtC&oYmJ~j-OB&^{7dFjBg|Xh*>1mE9@?2Ng2>jTpq^TGvtEOqF zK{yBeok z3f{1oW}%gx=mK6qfaw5>6DrcpdrTw2X&5k0+=lou@_-3lm|huxaL?SL!O8w4_H{H? z7HrKknZe=Hs9yF#bB_|qu!-?vq3m=?vuPQoHgMut^jl~Z%T@t}vcjg5Q|N>|H~4+D zHgLI4nHqd>*(z4OoPywv>0}cxDJvcJJK}0#FBS9la<1GF6UnJ{zOXSA?anO8X^4$0 zR&H2j(G@E%oBRsvvH)Y+WLL#pa4g7!HjIA#uS%T+_keI83ciXUOEVx_l(q$+DW0~T zly1^WmR)VM4I+9rtrbp49eU_hF4bKPS>=f+2HVR0#I^;IrND0`_#gwf&EIq>hljo; zJ`>KHzn%s0BM-(blSlbS+BhVtc|`vFu$3J z^{9G(7sWkRsZDcQNn~P@YlYRJYW@w>{ljMy!fumGwXoGo@LFnwx{W=PR!832n)`{E zb#IBOwEAmqp;+`-+uxjQj}rkHlEXVufyGjPk8$at!byv;tB{|=OjTUE1i8riB1 zZ5UK^(+dJ+YFwo^s-gD=Z5ENi=e`5~?uW>m@}r9E(386`@vG+|#V9bI%|86VLx<<* zuQ`fUcH;qsl35>_JYczar&7Bh8!jlKx$Jxv_7i}r9`W2dw9VOSJFDVs9JFv++!gxf zk6=-LYqQ4WjYlF4NA+<9Fns(=$(b&!9-&7pt*2XgwSS({`{yaB?IN+AeF*>_tegM- zD&(1E!-aO?EkC>m6Gk%CycqX@qWs6$NTf4W6^oYLA0#9L$V3J3vC*U!C3VWXQ>gAn z@{i-(f>V%|vei`-nP3ELGBY+Zvwady=)KA$U`R8Jq@>_Uc+{kxEPd5A}Lj%{aAtlO-JE012vUtsLR2i%IfB~j!>b%=gN*EVuk9(s1R(y%g6?) z%o3n0IaD^Z$POq)vL%Y5B#IWQLsHy|^x#67u*sufYX)x@!tbG?ad5$sc=iv5o_~U$U2YW06 zMc-#HPLQD08{_<^%SeQBA!~0hM%le-{3+>+xDKJ?_ilbl`T}l0q%iW=zU>>_K9^p7 zjXJjT_~E~Q-)rvsz%_5=@iuNlxcQg4ouSmo$*2Qf?Ojbx>ygD;9ih2tu0s?5Na-TH z0)THG-YZ%*%(0YQM`wMLQbXK+=AOU0;ni1oDR3qS-2w2c-vxfH4@~Uyx~83L^eZKv z{|?MNCA}g%zl7Zw(_s!VT7@`6dZ9Un4Y_9NFW^QFz5Y@&8Qm*F%U{bD43-1B$O8<= zu7Vx7;ABpXK3D53cd%Vyt1u7B^^G(pR)Mhv*SPc7*~c=S@}FiYAnHb53wGl8b&%0l5ZexO|hR!E(UMxto_sy=y^1R8D>uM`Heq1M`KN4Sy3hDx6uEJWj*cCyE%MqX z5USRv(l9&hJVp71F2}YO5fN^Dmy2)t@4>?h1?df_$G)MR09?^x>k2gCC>fT@qV;*w zlL2WC`>P)gqQApK&DW)@MB_!x3ywF?-VV)0QMYcH%L(2{kxD^2Gr%BLM^sl2V>M7E zGnp_pf&7rBKAitcybwG&a=ZW_NqWTBk$S62gv-zg!=)le4A7PU1pwJ>A_gjL-cn9n zM=cZAUDxGo3}8x`+*Y7`NEgkghceoG*KRL><9j00YXHAqs*w`x-!pS*8#Z>CEk~7x$nVez!_Xv;t|~= zq3bpdLiLp3MU%lBH$)AIwfR4}y+}^} zRXSkjH30?NIc&0dd1s+Jh62FA@u9HH3Mpn|F?0ck)aib7F2uS46MMNmK7+N+g77i(>~x`=BLT_J6pCWh%Jt7qBAf^mt`VM>nV?i4+PM3{Uf z3ir;1C^WSSu)OJT#jyklx)XmU^~WP^E+7)%V)ZSFV;LO)aa6&-1H>j0Wt zf_~)~Qd7W&L^Gzr4}+UROR&t|a)+7^M%d$%$q?rTU{c2T*ux;>{FR&t0USENovGm2 zHq}eZkZWTDf;v^tcqI;?GTp5&Ql=D#Mu8P}rzkhW zJEtzZP#mzP=skJY!ug}@7drt{nLpE}IG{>$=o>M=G}X5_#6>l6w`nPaLr zM|P?dLkf;2RYV@!W6Cnh=(F!l%Q4r`5!=$V#kLK9qUGQG6wOni9|$f1SWt*Z)9RWu zbdY`$Z^-<=(F){5<0sJ(`w6$TprIP+?IIJw=4l%31jt!WWKAV&WB@d8gDR z@3A{6aAvLN0ZN0qO|L}OZU0WalS_lu^>vy8RSR*t_7cIVr!3N`47)P)a$LSKxn~^b zs&$hB4%u>|O)K?~@j#&($BeG#B`+lkklDgIkm#8q-(J&z64cnZhEW_C*YRV=bw-1@ zcw9Fv8CN=a?6`7Z!_sk8!^e!P#((L!jw8~Ci+9Gp^+=B zu(pMKv&mOJwhbtLYrCt#N9b6iJIUiIj_B4G#hC5dft+E9I~1kCStpt-Cd`e276cx; z#EB)$q6kEzNpV4m6kZSZF$@ZRjG$pmC*2V*roOG?B_fCT+M2F&d&%6Wvdk=!9dvuD zKkOW9EfIpZ=w}?0{7r?sRIrR@;tZ<*W-;o(>E%@tm5iV$r-Z}yY;4z^D4@JWsO!o z{hdD12h%0if+Q5z8}Oai*Qe+?I)s;+aZ6)J7@P(w?92_`S|-I^4r$!Uba_r8fXcD7f z^{Xd1w3tmK?pK{&9FK71H+&SzStr7i@;bj2HK<}NYo zcL+PgtL{!>x-;Q!v%pE(jJrh2dPTX;KXWM=n8B;Gby^t{R%NKf=0I0BQJ8c@q4Stz ztWP&5`46+Bv>b7wgJ?RBLOoavR^cUlXHpt4tZzN|nV2`)x(CXJRw}GUbaB}OrbYMy z+ZftfOpR&&68t?VFP%!B4!ezm(a9`4cw*@j%AS83?UGBJJBbR>AKJi*SF~2z zRRkd7B$Wpq1PL~In-Z*k_pAYotywaMq6p&Gh}0-ZRJf279fN5~VJ)w{ggY!K3%}TI zNs5Bg2iyy4h!YP^Lk>Wox8H+3*W>weg8=~N9pFHy;I9~trzg`Iic`)t z@{f6CTJzz^rXsnP;HRh?Tg7Ze@K_AAV^p%8YbDbot)g(7{3_6EMM#+PcG7GLph3T{ zqIxSV-rU>Hb`z?C6NIigLK!^wmU|zyBuJXC8kgFnMxThbRn$u86XvBH(xEM@M_L?4 z0tUQlo%U6*!hdYd^{Ff_G_rTd!zq`(c5C9gmS#)G1JUGPQE&&$b3$6Xh9BHaC#8=O zx}%qa01YJ@iO56doZRvRU>FEN4A-cBh~>Eo0=meCL*oq8>ly0c3~m7!O1xlaACuutgEKS;0G=EH zFd}2EgCrSo05t0^1As!jI64px2*l$l46~OvlD6EP_=xzh=e<=8AgJbK#rp`adC-6OV2FMR=~V@_loQS{I1A&_sn;wVFJjB%$Co83=zj~ zpawZ=%TAFwNv z2757*R1Jeor%HWEmxgd&K^^}>x%Fw!kKRS*p`Gy`9SEGg~-x3`G zW#}Xkw>>P`LWT<>xD}vM66m) z6>`EB9L{=U&xru6?hF@_7`#W3$j=h@GxoHHv7CQ$l?lbLOr-!MZMZi%v);wcH2rHT z>QEdk>1-1StrJ3^Z}U&ADu-)PhX09aA^#M|MDbZ$7fqX&*fv`x!eUX&ZeQVz@mrHUebJnUfMQ75P(k34XsGEDW?+_}6ZG4eG|s-Q5E+k}Nb!)T z8qSmahwV1H+fd#65rwX;!GM6y4!~eCd{uVCT>d%Zfru&PbEBLU#NJdWZ93U)v3l%` znPyqoWg*a*>suasu5f)bZBhxQLt34rKO0HtVAa({i(XL{q$x1P+)qpYLQCphlz)1a zcDkOD%s6CB_5GBYpp4C(4GzGFqb&46)PgO-NP%h;SN%~p+4yy!gRi1rOhdubKel)~ z&d{*$JlO;jjcuTa^H;RUKheh!)uz=c>Iq-|_f?4B{HcoIN@qg7z$Z09b&;x9`VsiK zgxqZmnW%!h{jtSo#;KMXHQTet9AQ0N3t5n<={@Y2hKKV_A;Jrqu!{L1^|80d)int#4dk(<0uH>9=*!F0!U$0W3$6(6lh=o`EVP1KoP8Ekj5lIxiYbP|wd zb=CPxAvM*7494GZ_UBM@&#OY@$J4Zl08`c+542~Uy%E^UBD$k~GlJW0k zVxtGKXa+p0?KjC{*vAuzE)tG#_dj*K(mJlHJ0HMg(#7Ol{y+k~MEM&4aA=Ft)^q+2iN+FSVZCIT{{q6i|E>i$F+}Jo;EGMo|BxU* zTj!sy7^)vE8y0U2g$NpmiDGJlOaZ9$_##zn{^xkek=z3Y2rIf4x$$As%OX= z`M+ss>YJOaG7`Ccx`^6 zRxzkda#;c+#%qDdU_+zy*Zido>b!Vj91Z0re0UaCu63 z)yefM@PNqFjg4F}<5Z4(b#qRny3N1XhB#>vb$FdL8sWzX9c2hwl}f$1HhuK!hQ6R) z4ZhTYP^ml}R_k(AD)}^3=2E^{7*q~zemo5d7mfTQ8Z}gLyBgJiNkjmU0jFOKpM_vI z-M{%z{sBUU&5)NgvUV?L&_h=&iUIgFm-eeSlBJ=#dUabhtKW~S`WhG(vXoVUWe^diega|C3*gf?X4-?Sor6A?Oy2TH& zAEj~y0y3) zS+`@XYdfy^RQt2wJwgFp)$Xw_uK$r9>ncs2SXX1?tjn=)CM)(T*s(K+j?Gh$s!f~a}|>*|q4gK>r?UbC7X-RFO}I=^zYR^?z(FYV0DZD4Mzso7(0 z-3I2ynoyO#2~abT*hOxlV`~e{%@@?`%q{1ONenT!)e3VTQ>Bc1suXi4GX-Z9sO!*~ z0jB^wvr}QUsZi~5;My!1>XsO|C-J?5b~R=K!8>6c5(99k&{BawyOK$Q6|fNq%%Y0) za5l9LT!SMMctS1fj)8IAGBA>1s_s1vKNgTexZu+a{&;~@1kPe0qbTE_{s@;O1JO@j zO0aMd@S_Pqn5yxkN#QZ^BR$4Y0e*-XF!HDcrs*dA`su==`X5)<2J3fP0dSL;fqIdc z)~YK)L1GTkF`@)}60^sPq!E{6*<5uJSSgx8jKoYNG5z>S6oaIem`TloEeMYpTN2YO zNTzv{nDYHd5V3EaH zqy>aA!s~p$*JYuH2gk*7D#`0!aa?Q+Lch2!<+jZaYIk6g{UA*h#QvLwE{`}6xSW^6 zTqlFrJXC1oTy@+1&HN6Y+Juu|m_5^`5$T<2{x{f4j2m-EuIc6$a$HePQ4!Vx{bG)i z)RCUxb4Y#_o-C9@URWtJg)qvnJlrH(!Kc_^e1N8y|MwMOMTU!QB*-SYQiE!e|8*wt z6WCd~dYE6g8Uo3l0DzSg2%E7Opfvx3)!2Tw##%NB{|siC@^6kU;ZlMLu5M`G3QsXx z6Gdn*dHl}hAHQe$$9LLe&F@|}dNk`^FUmg-717jmazX!+g(T}2Z9||9^$UdD_Vzgc z1St``zXB}UA#?OOO9<06F;Sw7GLe%};gL?4medy5vyo8VN!^RMzTVEi4Mh3B5|@}5 z{besnz);`xk+SdhZiKTZ)NQca{SJ6K0Y%i!bR&xoj+4++d)g&M$1&R$f6yyl+X||R z8Vuko#hdxi<@kJ_6@icCLla8VMYU^Bb7x zaXK;n;ExLO)7=3Dcz=SZ;b&`b7sdHu40=jzDr3iA{^fS|!;wik;2knIfia`?VuI{`6v|UP*a4)4=495gBTrZ({lSUuwt!pE~GFD6DeQ$>W9 zVln>%eCr}RI@+hSM-d|L|Mv)yXY^o*k)y#>HXLXe`5!LGN2ET5TYEw|?A(WOdcas6 z#IXB)5ICn(opBq}u2mK#Gxn*}Hl{7QZeA#p;kwT6Ho-?dNIL!q?IA+CH?&wxQt1Xq zFSr`5hSLKD#QBY0Y->HpR399M*)Qm1B!cGQjxyCkiukR>!k;>5mi$s55 zHzW)!^Q<}}Nq{nd-$h=8{1-Gb%#QreOba93DQip2-jJ9{l=0vIXOv(xquc;iscswE=^RQ)I6?hqzE+OlosbVua?`+{71h||IA@IxW^dPL|#z_ ziz-bT(FffXI=%h!`)%+Oj_l)p?pS`7d-_iBAE>?TiX@&T16M$yxv zMz%eG1`rZKyl^+M#+3iT2$c3~J_K_ho?8=(`C$#j1*MlTVH9P*>l)6+Ad4v8#krYZ zC>sH2%!_;bYIQOdA1i$V`s0024An|hB>C+z19~lsIsix!Bkm&-+19Cljq|_7HD%Wy z1g$xLv@`+-Yb1QUA}RY$yE_MHH}GaK>LFjVMSE;1@3M$SxN~FTEvv#oDZktO?DVqN_eC~A2+ z|B!u9cU}EdtNDJL_B+;BlXGEouZ(+R-eWT`B-&XI!NtrtY^-sTthwj(9o#BW`JK|=3^g%7Rf*QDiEX91U$jF3AnVK}Wz z(E0pZVmx{R2yHiS~~NK~|)`W+k>T#g0!;j2hxu7jgA6s>EY{UVcb( zRH8lAeQl=Fq{cEW7(_bJGYfc9jm#R!jgO+A>NHB(V{sl%|LlfsO2PzG4c1xV52y@iJUazPOZ=}}l7j*%L zWb?M`g6H-7)Rh`xQRH1=>Y&-%SY4W41o#(^1^iDmE;{SM2ZQ(mfDQ;($XJWhpKT+0 zzI(R#y#TgLQ*(i91c=QV7y-Rx1aPJgi~!36gn{|mfDMICJ$OD(K(C}cXa$}BYVe5% zK`i7CV##J;S$F!Jl0Pd1QshrHnD@t?34ltNp3>mcxu3~Effq)w`KMQ#Pa(_iLs(aD z{745*qjPcoGt4l#P1`YNgb|scSyl{dc}EZzC=3vpG-Fd~k}m5a0M4WUBlx-%ODsdZ?VHAfJRws3H*V}g#;s&73%e!DmoX~v#jmyR( z+$zTa!!yO^Fn%VLGFNv{jP6L}C_Ptc4$2iKjwSbzzrNdl1tS6Q3WG)l2pmvqC4?$T zo6%xa=K0>jQVk@jjUK^!+I2>8OSEUpq-APBEv9f*dpN#@JzMM-XKYp#tHnSza{94c zbu?rv7-1{F_ID{U$3Q7XbPJ{AofC9gNYR#Vpi`J{05)vhH&`s|4QWpdbVz1Y<8IwS z;%OfP1eQM(>o^EHMihCEHrYKn1-SeWYwILh|5ZaG)ppV*Lp=3Sh=jnZc3s!vo7dTX zJo)oY)dXGJMnSOAE_k9#B!3WnM?zbTw34*DPta38*@zIW?o_~4v=j^26(EDv9tEgP zpo2i^-PndgSTpJ@Wnmh2M^tO4kfo~fBR+F67r<)*&X2 z5t9ZcAS@HaL7~0D)&Uy#Z}iTCk_-DtI2J7`R$j1o$0fNN#S`nAt=OXWI&01?u6D03=9aiOxc^RWDKjyc4UiVB7+$So`QT10WfclPK4xLSdhEiGu{2I12&xzF zM;B|uZjiI0~dRF@;HPUK!Z3a=@BNWJwvy^od{HwNmVuk3@VXSJb#!8@0(w2m?3JNp3 z8N>z~OA<{!upDjEH{n9jF1(SmQVrSQ`y1?6^B&7)pjYgnkvdODE>LmO9C0HX+ExPh zT2>8aLv6}HC6wQ?DL06A##0P<%|uIPL>_A0WU!^n=M4zP98$en>=*3o`2a<;@LE`N z&i*JihqABv5P2n9L@{8HXn{WYG-F1H#sF(uqC#UVqeWq4`ZINC%fo;A<&T{EOWQYl zvJIUUMZ~yJ>PactKcXuVRVpS)hKU?Yc4eLx;egWl=h09V5+#>Z_Qu#9$LQbYI7SYc zPMzjAV=dcKqrx5CHnWuH4A{?9ci+>j+WD(Qc}-xf?&rRac%{YsZS20z@^3O3C^XV+ zC@=`6IcZ?1;l;CGLMS)uxyI@kE%Cha2NdL{eQZx|zP4wXAa1llM zC1uhpa;ON`eDRBGv!4lEGE+kQ(#xQljop}0fKS=L1}l8KL-;y$;+zmN%xE{*S5e9_ zqRhRESF7htJ;kgKg%Ag?QT`n>3`lpV5tM(k&;-s9%0?vnfOOSZ51?9Eqjj<;qOA^= zLvn=TjV}gl)PrSHo>PmhVTQs(A_J4F!pxLj1Ji0iXF3`$vUa7GAf-SLjJx8A>?vwQ zz}T~AFbbx@W!<1XC};zLK?T!Lcf2!yqmc7&tAkx-Dl>)^W}MnkUk3VkLb@Ft5IJ&! z60)6;zCfUI-}cDJmO8^?h&g)A%~%^`ufInI*)z=fVV=AXx6%<3)imV~yNk84czpy3 zfkZ}7Fhn>B6sHB%zy@$ItX|rwEJNMIn9Jn3`4QZAmQ*K6R|v8;jITcASV;>R6fbHM zMxkopzXsJ1?q*scTpgro*w(YC8hKcxO7Lf>9REegD;DmF@jd`Dby-;QH@hUt`x1W$ zuU-gG%8&eDG?zcr=?y9~mK+QiGB$=K2OZwzA9qpUWrGxB3;J`AJvO66|nIZVD;JloN zI&5X=o7X@%r8Hb3LiVbO%E$RifIl^T5myA4y?~#wr$P&HG5*wadp+7;`jpH<4)e4T zca9A2uxMg}Lo5ZIk7I8dV{c!P=#ab;gd)?FqlGK*Iqg^Av+yfq-&7w`&Au*X$$$oY z+RJ6|8rV?{_Ebr>wr$u403JEun;h_s{EQZg=M@Kz7o&q1hQwhl5L<7`6W((pe0vJI z#laI^DIfDdo5SZJ`8bfgO}>86Cn1A`)Oap05w)fL5++O~fdO3XbqjO#{V+0P(pSR;n4$e$`sPplyyo)_>S{dUZSwyj1`V1K}9smy>~-W+dpp=sZ1$f(o2V3d4vIOndvl1)7toV#N>(Ob{XzM7KK zttFXwKfwZ;vJEOJ2r!P61sKO2U{&%=$)WrXS^>vDqg+{@>81J@?58bfbMk;O@*$Lp zrE(-|&4(%iAGXpNO5nt0*D_;c+6hB5VlnR!xs(kyb^?I-pw~8u!M$zN1xDMx$A-!o zb>u6hg2|uL1V%dTfNWV+UQaNHLqTi51s6x9GV7utr}ANR=zuJ5v@XjOv?aD zARJq8XnTRi4N21r(BX*CRft0E+0+6-%g11@3G~8WrfG~xSFD~&K4^Ix;I*V+ntHps zS-`{2)}94{seqk2MwY@suJ%Tlu`wl==8Md1#U`=4cvYqztk+_wLo{3Z}wg zn+hAA;!bjaEm6k+483Wn?@H^jzUz}x(C$iYti3gY4+HHwBJmaZT(<~+s1MEj#iR7; zS(tjHObW2t*COQrtCMh)KPzOosM&=0t_kwIjF9V_cwfi?mf@JAB9+e+^yx?0>gN5w z*SdRk@x8Phc-EYLOw$to57Lu2Adi&h7O8%6GH>V2LM_u=>Kt1w3!fOhj53_phEt8D zm3uyka-KiEGz-0V*V&~ykXuqANZ8u&lp}_~BPpLfV7NO%i>%6^(famTNjlTLm1)eh zk1;r;-))ngQXc>w%+j)9m%+BV3z=hhZlZ|>p@C%2bx<(#7ZOM3w4*uLF|MXKXrAL4 z^V|>(aagH!_JE}(M2G_D|3lu}fLnHzb)Ng{n0DsLjM!GF!0=Q>O=5(MhNRGdCC2Fjq82fbTQ^Yx1PmCdNCGL_Xr~c0 zhA3goBZUTy8lYNH<0td`|JU04>~rhpL#4-_XHsy_{#bjhcfITVTJL(-yOQ!6$Q=yq zQ|bkIwG`8#)QjN`u?gZuTP=wp6V$5Zn0--HZGST&1t~-ZwgidHV7tua63BdV8WJGW z$lc9Y==V;3wX$-t{>a)p><2H%FB)%pN&Wy{t=R3n;$F&-G`;R z59*=(2cctp(&?BYVJ00z^C08RG?MlMB*wtJLmt6MEPuR(E!D1JtQ8Mu{m<(Cz1`^W z!vtY|zHTqd@8+8$dHd#W9#H-h}}92-eJ~G!^?RT>tyt+aCx_;C9M$S%*UWJHh6xKDb3DNI#vPtE#wr0nz&o|jPTqUuLaQU@mln_!nMYpzjylY3T#hnJPyMiX;-6Oc0i75 zP9WpVb=Rfll%)=iK+Ww}BPX1Z@6#`Axi<%5X}YZ5OB0&%fNGsibdr!=%`8JQpt~9_ zLo*;;N$->{5gV@;(g;w|@)>~+H=iLI%qkjUH(6GlM1x)wHFu->$W|iWWpEoBg!YzX z@(8@~3DF?py`G11ev9Z4U5PtgGh`yl*ZqFAM3+{2Fi7~1PfsYuz#u*vN8td+nX6o$38;hn_PH(Sad}Tck7p0?$j@h+^%2fZ3Xghy1Ynq zD<(P{zw#&_0&_9gdkfhGUo?n{X`m&68nU@L}PZOE~@RcnSZ*o6S?KL#-nAzMCH87HDFjTyLfNSQd9v-xl zNcc`3U5(}sf-zUU?!TtILbYXBWSFz*!GhuKq;|>Np z(gB7J{a!~ps25(0LoiNDhob@|*Kw@SXfbxG!qK#+2k*Hh(kl>*z9ncc3TLy(83hdQ+F4$y(y))V9*?d$`12pHw-1 zP81hLhCYHlgQcNQWj6Ch@JDU1!lkqU-%T_@J980dV(n;54=|=>xLn~9QKhH1b6IhT zWfIHn=gDx2NsYw?rqql4-(GVN(UWEU!StWx{=5fsvg`i*7494NXIB0;J|pHX!3X-o zm?2*`AL#F=isrb6X+QtKd{X`xaYWymBzw=2c&wqJ@(4D7Jnu&(W_T24s4@e`HZC@4 z!G<&jXmKW`I0H$l`q9(5h-4PF)FQO1wqmNDs#w+HmdH{3sunK5{XbPL{a>$I>y-xF zwY8#<%6-G)H-_2#b^SMqX7JJDD3;C2?~9nS@pCFB2|pbFtM0MlAW-N<-DIKJTK;vP zb^uQ1H5!vb1`Z>V7T1 zKQsH8e0#>fY6f7ak1(4k_;G-!9+?!CSG{eDlVgcJkVtPqG~Q5cc*l5y1_5WA8nX9G zP$(C>;aF5bP?sFOk&1kGDT}t4b|9<)qub6FoHT=mFpsq07NbrJpx}3Qcz`hfmu3=7+~e?A43!RK7MJ^ z^ju0y8KOv0f+>;i&8vIwT-&iVR1|937=E;b-yJpvtMGs@c;!1l_p=_nx$xn7gQuYj zq|hC_rbi+w44pWJ0j^gskHcX8M-S@Wv%c#Jvj9ZQC=G0ay8nW8v{90v9cn7Wunhwp zQSy%QMvziK0?Ml;yctnHzLv~Lh9!bns2`tEe*X>koU`p)Px{l}KW)odmoj*~Eq-*(FogXT;Qek$U>1AJqQx)cw1b!&jKo4RA z_~qZbWeIWtpcSE>qPof_H$&SgpfH`|%_hQ@9y#hL4st$}x~_1jX^CF1DRWA~nrQic zNBHoky-mvBVtqm&r@Deyp*_qShja}u9Vg4UnemcU$+G)Q+fASGB!Hn%YrlMl6sD1o z(663q1Ze)vOpq|EZWBJMK6hTx-J*W@%K~4W%<4ycO_Y?_74Xa70p(M#>>eO7h4la7 z9G`ejfSx4>vQXhw;G2j7`GUCGu>e8PCg*G`n2vVHknaUVu0d#xq^E#FsVo{*0F^*6 z8E-n%qeawp)WuS@(eV>ci4o1r z6?yZOs%YyQI^Uk_NJAY`AyqDKFsv%#GB>tBjB~;%+3*q4eqnO?N@hR+Y|QXA&qCC% z*7PBDm|uaMy;$B?c!^jF8tI@xO&Uz#t6lVXxj;*m<_G;WyBQ@V6g~rMfjCmq(MV`U z>uu#uZPfCE9v)5Y5TYOMHP~bo(JlKby7H(50%R-%DsZYS$=3qTb(_9{5#rgv&pLR^ z8oYVb5(UQ~t*}zZimz-@h4(pj9m#>sGzJQ_Exbi|j3vEkvFfXUB@2NVS@206lcS`Y z6|umuOXxj65<=p8B1PqA%p@8VOKE|ih2+M4+bk~5X_N!cl3~x`o#WZ&r9z_cPa{R} z83q*EEsN@_=DZ}x3{hKp1-KTWaUds&k`v@UVi{1B$y7*1M*gVWgUJOWt$p(x&)`mj_X zoiJiD^s&Lgvw+YS#wrCwFb}-~oQ_sW<>4dXz5yR@3h#Lx?4S~W+?z=%>GUb4Ei z_z#Q|-)zkeuxMG|`H%)&#!`5=l9u}{D=BbW=b8ik+UIwqbBy_6h$xY@^;Rj+N?Nhg6OmDJjO=dvzTS6SOsUWd* zqBiSG;iNtX2so=#dVxwg zuckd6HAg%EQRG|?&tG6kz%oPq)%jx#or;9)U3||%JF39OCu1G9T}V6hix2flmfPsf zKBA)CH6gs=iUNPHl9YnCB{-tf^H(2)PQt2j{XXxr&{~behU{X?CRS}xyk4>croJ{t zy?ue42sfZj4r|8cz-GP3i?}IYi;Iv|`C+^kwRBZdXZ7zt z$V{*NmXZ7%-r4lvLwtIuod7s+J1GxusElAwWW4IF6zfY=B$OhSv(%>3Q@qLv6Q>h~ z3Q5#YGEi?xo6coECgeXb*6Dg7GmG`?VM@CW<L51mgSrv@ z_}pecTFv~V=KWcavEkM5qcRlJ%Rb^)J#w+spJJA}R6gF*#7qJ+DZbO8jAFTFmSbHI zPJfkVL#W?@)Bv;;(4rnf=rCe6TYfKBFKrhETmVB8Xi@xej+W_NQ$G-9ggpr`uIqb! zA8aAnf`R6Os`NCNPHO6Fga~25KE&;Xg~<4UdQEa>v2$djg;}DFo~i!F3Z)pmZmyb; zA?yJ7zEKinJqVKxr5eV=NK|2CoWz1&X|6u?!cA);-_UrH?7}ctH2$RE>rk}k)<~#W zi^9alvu!=EUDnG<@z-kpI(eJ5D)~f~&!f3;Tw~pu9iZ0>Eoypy$R_~p9 zUqdUCYG32Los%fhm3XdXtc~pNBc0FFAt9Y-GV`wZ{z$zGa+rC)%t}g2A`_L*J zCYToIdAG472Y_PdX!z7CNoiRCiTWhrE=2hCu={%WI&C`2ilpc-2ygThyn%8RRg_ExeR{Gs8>$DztmZONMA2FrYW&9@MPp9d&@1RViqR zlj3S143>xjO(JgG$E9)a5`d(+t@?Aid_nxW$f@y$n0O4UOSD5bzA2e(`l0?%EFz4r zO^8%>iRO-3aZ4t%LOc3UP6Y2Ubrbvui<$E0H}jK~zrUHWOzXIhO~~D(^Hg9rdCm}}rotg%3>3$6py`hh+^?}E_hEm2$GYPJ6{8?g zNSj1P*vlQg4`}Nbvz!HWFdT^e^7l3eJ*$&T0|g0XPWF38Xo9hW3(I<-W@tVsd9*`;hEnfOhffqA7M5NG;QvwZne#4I9F8xpFt9s@E|s2s(|nE6J3g7&QyyGO<`D$6I$e^ zLyH>FcF26?A>(Pe(o(3u-?4^5tL$kg(HJF64TRAgLr4-V*pJ->SDg~Z6^U} z4!uOuo5Z`-_kUone&X-spDy3Y`3~z>Aqy(b+0m(>v*D0o6m#E{-i{#N{W5+uNtmIr zk22M+a?eLWm?U4PkSh=a-N8)Y4xtc*AiMo3z(ii(kZ!5*Nl?NmN*Of{!j_qN zRv}8Tz8qWBh4xMgU0uKLjdq&k=Q7ag4rMe4fW98*!Z{b(^(D7?5PC1juu7;I|Kol( zOzc!63dZo0eLT6CqVIbn(*JQHE->4PxcD;Xb<(H7(^a;YPj`gME((=ht$>SI7jYZb zJg$mWA(XQ$Yp)B)x)ZqeG0R|~(2Pg#LM?9LI$1D?vK+m zOG6zg#hBjAUyf|x4^ck+Jxp!)Gtc#LFBKvif7&z`zHFq*5LC(#(Y%XHNKi8EXvT=7 zs&Dx;Rzyg)(8kg!=tJMGS1(@Gr>^%!yksVRYU8B%O;t`c&hJ2t>%pTA9(FhHPwU4& zFjwA-^uU;C2XC+gwKy zs?DM6$BwDEqW)9W5~|-kqfXQ8>F%ha&y7d^RJ+Tj)z@qLlH1?O_9dnp_Hu~;p+ZRw z3C-Bo*2hK59C?yy+)-}H#t)NNahU^*>(yY44(ZuSH4Kt8!#mcc?ToySIlS3sb7P2?A(`zMREj&X7Tx5`TtjmoSJVWeN4?(X`iJAx?L zPvmC#b+hfe`&P%C80E&(E z#lZC`*kS26WW9U%hTr6#QM3OkNhFfkh6k$gFpY-gk@TD&+9U_u^=GYe&@)O8eudPK zxh$`oHfBA9fjvajYSztCq|NMpu8lXZcAiS@fAW@OEwl4Dv0$&JF6j!0VzukowKy< zobUMC(TUqvs}pWr86RJMF9052zIJpx9gm10LI$!3!$5PJbTqVL@%giJC5+0-s>e>n z*qx{GS`7s~W~-g@tIe`1VYf83X+mqGJX+IX6R=J6q&s$73U64k|2P!H^rBV~T|~lSF-3`_t@Lg}wP$oBfc8CRQ#H zS@1~gzxu%5Fm;Q?a?$=N1-Z@qG2I^kn2~xA9?xd-kt-ej&EFe5>-4{>lz9`mR0{05Y4s|Ph zvs*X5hNkZ78S36KseAiW-3?B*@0qIl^hwpHieg*jo<6DQ)D{89afRL{3-&W$wXJ6B zq?)R&Mlobntj0at$B3+lz_uDKVli?WYR!QqoE3Q{KU09Ft!6!3wbkHaXsY3ZSPh+8 zQ^yoiB;z2}X~OkFc_dr{T^qvXa*A*ve2Mi)zua8}Q>-Q9C+!;#og+>-fVJT!Q*wDz zL&{iXkOaz5YA0yTX;O|8aS4V=liaP>CUrq53rq;=5@Yj8q>R#EEuMXi%qIaJMsHHR%e62RaQNZW;_tMcn2#b-VHb z??}_4kF1Zw7ssuoB5drIjIguY0b{V(kB1R${&-eHrG9wCplUTOv4+XsR=?6zPu(JS zndsBp_jJP&YZrRj+7EPU-{02m$}z9jRQ_~BpfUGIbSlSAZ9(7LRK5XiFC-mPdl%hE zp880Jc~|v|UzfY6$&kq$+7_I2#5Xcw#WYEYu&E!2%aZ8yzSiUwW5r>U=%p$>gmYkE zbN>NUxi!j3`YBvSfy%DSEM9NH@stT2f z&fq56jY>lS`=);gqtckzMsI+Fn#IQDd)Z7*X#Qj|0Ee#w*7JxXS^dH!~t4@-D?&+yE*R z?^xBB+eqfIo{mlgUB^T9he^go>o{3B=Dd22hFV^AG7E8|;pNy_Nae(3rM_7Nn53HH zdY)^t15`^~E34QB8E2fswVN?Gad{+X2G;liTMhHwZd%o!y$)zgG|GwTOosx0Tzyll*BzPxAicvf+ALIMf+ zSfo~uLNx@;AX`e!MOGB2kD1LfAJaDqD&c|)@^-xZ;}B=^?cYTm%eM%Kses4q)0tJZ+g*ZE&)Apj-_xdXmQK% zKp=V#f$&F)0*kPXc%3wA3h0lh}a=vfdWdOl=^)Svs@ix%?{@8>NSTISIhk07Qnj%>okYd>G%v)et|Qk|e5 z@&_gKb*ONXkXm7};+z(e`H9V+qpRnr9FrIdoj%5IOMQ`4p?d_vrt)K(={nUCScPW? z2GbzxU}O5xvO`ktpzVzyhc`?uxMjIh$mD+B_ll5~08L;GEe4X3!c+~#h++|>u;W#T zUe&@>Mbyk<9(WBEB}!gF+z2s*N*KYMT-|N*xJhs;vPM=N;P$DbUv1(>#IQ-i^!W1Q zClO`-wUqTaXgdv4mUR|Q8X;T0PbiRpZ&rd(2trp{Wo}JejMss_$Xl(r?clHGqtmz) z@-uwG&X@sAA}SxTq9hJ{gqE9ff{#&6<||d!-sk#|;a` z%|}{H0EhclL}Ri&y?Odzc#8heQ#w`p zaLx2(DHaoGIn$V_@^9jv2)Q}BGxzf4vEM8F!yZJ&39RY=JCxgiYcXXL&Rq1AUfoB@OZ<}dw@^+q<+i&lWk!haNL2>!|y952TD4|Gv)?W zxWb36m7=8l03#y6%MXU5gnjC07~+HidUJirN`*C_^0Fy^Dt5zb8B}&DeULEV ziaszs3STJs_N&C;UT*Y>smfLWdCH9o^n$%7*n^W8P;;`VI3cuo@k zyMz*ieWCmoZ^c@eFW)VaNm0pZ`7=OTEzlHC<}efH!pj+MTIdWE7R01NAWMNIt^ev1 zf%m-Gf+i?+E4^_8bc;(GSR4^Cfsy3sgdmZ%>_5x@=lFlY|2Ys6ToDRT9L&>UJOO~s zKJZ6#>JKsuiMuViC9P+qtkd$pITbJ_UycDJ(JInJprt_!t2`gYl~e$pk#zNHs%%|b zvpuR0i*ula?L3NnbfHoWnGh6A$y`H8S+I^BF^JIl%r7E;5jyZg8p9wBAgab3gaesC zj7M2^5*S`1WTK2hctr8dT!zy1%u8tpxCgbg*&<{(}Yn5B5UNKKxY zArnH$5bzUM)?!T3m$YUZrP}?%-vDFN(~$uP&cm)#xPlyZ=k@-fG|t%$ z=sM@7ORxRa#pPFh5{m8U7pAyQ0sSt<)gCqi$N)(LO+!Hv<;9g<>I9p@Qy6aRqmFu# z06{0|t>!2os-e);YKBNYZmAlsQ`KtGn#pmjQEf%4T+xmd_JIeE$hT)|HB6f|GjZPd z-u4ND%xUy_)1wW32pvNYbT+5W0T^r#VB^^aG{moHr{$Zu71UJ(!^vv}q2aIQq&mB> z7sY2o=KHFr#WRBh!D-el>bOi(;GH9d?1_5HodU0UUh~{f>!R6p1IB}a-!lS@-oP@* zZef#8B4p-h4N?4n_ehIbzMIt?OJk!suQ&lQzz@4R^@Dq%!v;)KS>!ifnF+wm6I43M zG@PksRf)7}XNWh@5)}%Q-lKgF6B4o&O<{5ai%AW-h~d`^Lt8GXu-f3MVf0GG43*uU zX@idrPj80aJ#8E?T`)c38k7j827EB-MHp}iMFyN@Cx+6$tCfd&eet-?Fn@Bu=2|UB z)z7;OAFJXM#{(NS`YYqRHPgpL0|t|1py76iFTqV39^r5R;v}XcydYnQtrmh%_mVLu z`>`+YvE=&>9Yb#}i^)VK*jFaZP!WtumcR1<%5OqQd{Khl92P?rWs5zWk2joi&&NOe zxzAtoyWg@)jK|Z6siSAf9+@dWlhZ&(<;)DZeF!Omwt@;UKt9H%OrFm1^r@l1#EVcA z$3g+MGUEnQi?38wYaqH(K7n;0s#uWi$5F0o3&et!>fjjG~#ED?J{L2DCUMf-%9Dv zNXi;;MXDr?nvPK8T9N*rmD&>J@B^GNK_Q!iHMI0h8$Fq2sQY6rsmdEIS>v8cEd`;D z%ZMf0s@yeRSf+^Lx44k(v3L(IK{!Z$2_~W7NREWv-n?cCkTBC@^Vr(QA_wVF55kNm zeK;SK0~G>mx97@ymFbFvct!EusG{_mI(R{mhTgDB3lfGM`5}#6tA~9PVE}i!$heQ9 zqNl0@qskJdS9}L)sLiUjqBQHVGUG=iFwt5lpe)J+?bu8XGL$oM6UCGos@O#FMn&Dq zwZW_@m0uH0$zNN+7)PG+NoCRnK&CU7=~B8p;@KKa+(j+1Jal8kHXSejP^0Ei3HlF% z{m)bU7J!ZXz;@JLU)f{!_pnb?#LajyLcrc=V>OK0Rvh8k>biAVG{FYhCVLh)z+ zG>p>BF&O0;D;fZ(8t9Vco)v-SU882)8p z_!}{9HDq|9JdQ$2-~%}&HI|UMh(NN?JmYHE)O}uv5bHm)D>91fqkDz;wgzoKw`{oN2zA$#yOKipq8^i^Id;OZ4iJE0>G^ z+Cx6gv28Y*31OGS5XHz^B8xSl3-}y#Hv{A*W#+~aa4!$Eyd(HZ^{J=7M>csY5Ezh!pyAi8S4Q~elYf`_!m$_(P! zM?1+SRFXA<&1XQNM{XHJnUfD9g)NtN%d31B}WQz73V#qS&A~<$D9gO^9`Wp`pj%FuBhilmE!f%J@^j*bw zI6)wpicf|U(u2SKiTHeq!$e{xYPwj12DpWp$tq~mAW!BNmoB&49THA77@O%PUobf{ zf(MK~-%VzBd^fq_JEV*7!9a3i%dq%fn;jNEiqYaR0Gjg;j`N6Z_SeZ}2V|2cmoBr5 zEEyrQ)NA2wx;(2PYs!P}qWHs{wEpR}PGP+rU+c+9wp}FJm(vuP-Kbx#{QUSzV_2ueY3IhS3GxdRXL})aXD`B zl%FndKUt(h4m=*5DyP4E@ciMh;xFSXPZe_oW5woJm=&yx5f~sVf!~dldREO}so*wU zsFsR9nM>mQ)3(gW&AE+zoAqU%Fx zmEaHw4`WyM$#=#>L6c41 zUN_2Xj@$Bp$){OA?jo!x($owT-L;lSNDm6Zq*D-P#bXPg#{H_L(}UwTsxn(7n9d zXFnoU0%$-!2j@plcggV;m;;#tZCxhQ`y7%U^WRs#Hrmi!UPtV1e0tqzV{`en(Q%+q zD>f_#GWAgugG>=rbl3^#K?pfbBs!pP2?O*&Yz&7ci=xeRQhmEU8okgR&XEFWXMvZMI=B23w_0bGN?GZLHQ2|Yp(cV zqQ!P2ow-o*qn=m8-Sz9~zM>eY0XzkY#jwyrc8rQ5_kM*1Z`0Kug;5L=WT16@X8$5!G?krdW+PLD~}kBwVJS(gRGwMF!&;bi7zl zvV=7x`Pr>mhtjM;M~-I>TK@2e;q^+%%)#-*Q6=dozuiQE?NZK*RxMq6%=`GHzRv9q zZp8#(W^wDdzYB9kEpUG+m#8NQqqj?1OxImKOK&F)x6m6c5XCXm5R81Z1LNU%Ols2+J>r{r|-au%@%?l(kOEnpH>0h{KZ| zFI%5X@Y%McT-JeN#mRA^ff`p)mUF_yILs!K`daDzYg6Lmud5S{$x^-l%Sse+u)f{D zx7PPMjoLUlG|pDXX^U@sOE}&!k)gxPgJT$`_nW7k{pRDOzS~tX+0m7v450F)(0THX zg*K9k47r>X(3Ij#j0aW>9*NcAr>KvF z>Uy2(5Qif2SY40mG}m(FZE=u>?TgATJL^dWHsc1G7M55N8ioea>XoJggU) z7%=0@UVMqEp2ZJ4AK@4u4duS|hw?-W$;;IsHhh~;Fw;O|sOdCeMiX2pjY5tbLWhOH z8|NKdNT=|Dg=8~i6CB46K)kTg4A(R^kZ8?Vlp2#pVWSTqdq z1(;&N)>>~pgrF(|Li}Ywhy!C?d-z`Hp>C={X}o!r3d3pPQc^ZE*xqTJ4EW**yv6RZJ0_ruf=n2||$xYQ;?aca2-;(C5D=T9iF-D*H zh}hy*aA^`$^=|5lgylwgWM}UU|0zWjQlrXmML}gGn-h&sy#=Qz6W;oW2DG&%p(rFi z2|J$;f60ak{n}b{T_N*>w^ONH=zV>vQn~QP1~ADpbmrl7i~>d#OZMcZ!81o*1f&eW zAlErh#q8>^6Y$jrDwK!Vb^NwL8~1>AX#ya~%cZX#l;7*VqXWX|@Hvx_T^>bN6mG{N< zk@<1q3xKL@V?uIJx!8MF2HY~Oc9+;6s5H@xMEO0)xwjE=0@&`BAQ@v0o~FI7*gr2z z-wzL|9-Kcq(vmMX@nuqej~=Rc{TO|_S+ELD`PK~?9;XS&3={SuhOR_x(#GnAID#=F z%1|nM0a{JrB-qx_TDiksfzE>$-1i?Vj)YD#0XaCj)ZX=gQzJ;%n}xj)nW18nRFq>02S~;v4$6lmKWxy zcp(ulFfR3*5eHX$MN%^gAjOtFUu#Y?&?mP^v;STnh@yuqrr>fPEyhpbjgS>epR$2a zmczWrr)95vioK{)?8PMMa(HBc(wq{EFm8ARnc};{DT0|KuaWmaA2S)P9K(Yo=T<3p zQi3og6K0g0VGlCVgsi`ZatzS|4liwU)$2%BI-@O*3^F^#AOb@}W(MikW)M-6ADfO9 zjO!KjX*y=G+Xtp&e?mdiF&VP-empm!<2h4;_kp@7f1qRjx|)`bjVYeC6wCEA#daUi zGCeb}Vi8U0r^t|qQ?1d72HoL=qAxs+U zNI&?62P#QtCUiKge;QXg+sCLKnJk?jX%D$!h+9ILnI;qo(vy6whAO?hLyZuQE0Oq$ zWSHmMG4=Q-D3$Ft7aFpehKV)a7!_nK0;WkF}awZBZ&g76UDfr zxWzuq2<<|MV895y`r|qdw7vr^9bi*~{|-y)`AJReFFs39{i?7UEmZ-oB*4G8P#)}Q zI+vq@D3cZcJLJ*2xm05G~--YjJ1#bOA1O1n`yV23W@hb0uTrb z<_&_GV+suBJp$?gceL!CFJ7(mtVRm~E4;zLR|+D{N73p1`*c%$WHz0RN;K1eJ`OhY zdl-;OBSR0k5VxZgCJAsD2uTqJKlG}6RQa+dIN)12^Sk(nykxmb)1@z*uF-t|xl)2npdtsA+N1_EIqTH7M(#N{`Q5$n>px z`?e)bs5sRZ!+-s%#t2?eL?e^)&9gyT>?U^{zCY`d7Y6uiqh8&gmQsLe>;0hJ5;@=kQYYI)PB%NiimTR`w& zQ4w?}XQxneeiQi(pEQTYCgmHe1g#0PNMb1dI?TeD_sC%92O}d5Oh+XlHe0ucxkgam zm=ht_zXl222xo*^m?ZXJj?|56Y?#x8c+a{C3hsY9=%E_CA`-$2x<;JqnsX+gQ^chf zd4}V{zE#Ef*V!m_4ID1R*i!?wQX}kv=+hcM`#AYz#I8A2#Om*Bs`;vTjh2j53Tf@4 zRiC5yz>oqH3%7;|$#Qdgh)kB%g4U`jofBtUr=tWrLQ_qE4)XpGOVIWzxt#W@0Zoqs zVX4ow9swfNpX8*bX)s@jnqw7@nLnBK$Q5yr$6~Lwk5}THo)uu%pQ(PF)8CHJ?Lodk zf|Hc$5P#2>CSuMRX%_BK!Ub79?gl&^GAyaJ=5v3Fz=G~^(hGT^Vk z0gz0o|5(^IK>4A~GJXOD;T3pWN^K!#9iolv*6lnyg*;cfDDvQuvw3(fg5789jV= z(|Fg76O&)L;aKomx70l7BD~|5~L%ipFj}xk-GuIhHMY_Tw0%1K9P-+`YcIJ zCZ;+UC8=-vCACf7zL#!MMZk|F&18Ti^_PChay65=nbd#tOZ@_;d(m!W!tTlB+`v(R zmrW~G*wLb&m{$A0s_J;yn_bsgu^fit&@XCFXHwtyi}(VT!SNRtwiIvA2?F*KI*Y3T zyC`?rpsP!u3u4D0I>V!LeJYkxwn+KZ>}Z29CtyA`*fI8$Z)b z>r8u1X9eapoU-9Mr7uLaAR3d&1}&G`9vCDE9ter7NKOsqHDuPns*oF(fjS#%ZQiLL zTz$z!-M60DeFaE`fI_vMAEE0V}yz#XAX(3$(e&OCNnR<80eOcD}dI^07If_ z2(&@@%DE0E#s$7aRjc^nxoV(rjAHemB~BM9A&+I17jNyQ8z%FE3`Dd8@hZ7-yoEd< z%I2grpXQ`jGj7S@e=mX6x@2JMtiJsh`xsx}!a}Q4LG$G2 z;}Zf|%hPzNz04YErsp+FxC{(4ZkY9I7E%)y`q(98Fyt?zt$DJhh<^yR0qb-&@%)IMuU7FmG z`-->)_${k8OjU+66R5Iln>tmY_)?n>pQ%E@+G6+o=qFPDPan@&A1NkNi;+4;nK@(m z2bqj8YL|V}ydrYlufPz#m#_rvZD(PtwH&f}GvzxqRd7DIW~v6kUMw*V-k(ITeh-Uj z5D?Q)z1dmmW@qtZnG?Up%;pT*t1bh*4D|r)Y6urX%K%5~nz3S?lgTuAG?a!c`CmjCKU zp3oXwz4rr(lwm}ZJ%?6h1r=XSwK~{~6(`9hLPSkoPF-9PjXbmTG^$iQK+$J=(9AzNK3zqC+%SmfSgl%edt2{>IHX*&wA5{9}hd83YP$KWOs zlwQevBWGbXL^dk`N}=d0oM$k%D=yU`z=95gL9~SmqY)rhH2#{T%-(YA7`eW-43Aul zwKUr#p6sZV`hW*QVVN_l^-8!|xrNxj?J`n@dFnFebK079=p`N!*34uR%tquNJxfcc zl6vgic%A?IvKTHDpL!A!JWx&^4$9*_k>`X!kkf6O6vYo`m`}=3~F(2Dgor779ELzszHZ_K?j9(W(~{f zeGxJDjGG_b$^ywMOLu|dL~3A|CrYsl#l>0^gsy1Mgb50CW14hGXIx(@cX`a^S*I+Y&Z)%3?sR>j4g0K&T)6FicmzM5dzL zp2dIElB^&bXHHv$WqlP-Kr>Elw6ebB5fhlOB-GrznA1=&*4kxQ{ySoiaDr@W~0;pyq$1b$$~*7U_aQ(gNB0qpyELzU;KdNG@~?j zrt5Q~GhL6{U$iMNcyU*{*5g+ELr7)aj#oG&84o)U`UrreO3xEFSZv@ZN)Q+@mysxT zls!Pz*V9+%ijE~#ZCaUCFS#*KwOP9XJAX>Bh49^sJt*tTj)mdT;KF05JLtz)cSYS5 zL*`b4{ETl*#TX!%(0?h@C=7Y%zt&q&h)7=XS@EtxKE#>ZyXN^!JQJsfo=hF!0&N~I zo4La6AI2_`VRfPQ(;`NLB}ezY@^BmD(J>{#T={E~oBjGzq;u`p50FCeHrK1M2Np3F6r@Y*|BkQtSWIg>SIZvdpP~yuITeTkD-FW^#5G_#&NS$yY11!2 zv$ex~KcO=oLd!$wSaP-+FH8`|iI19>@J<^Xc)JyM4k4A*B9y4ui4E0!w=}VqioBe+ z+on<%sayz+9zHi}#tDsvKr2YdP7gwX)svQSCM-&nWCJgjxFfPKB^Ymwyst@E4WLZl!=w9QFOP0NNzGa<}Utr;B&_FB}D)`nq z0}h@KY0EHSBEi$XCY~WPmcp-<0S**vJN`&LhvMa!0mVLETT%dOBlrcx@Gs{+m z#FdaSS_HC*?(Ms zZZUse@6C3XpChtQlal0>aX%YYjQU|WC3UF*#bmKnJA|q;KVtf-6O9xasie^dRIxpl z>>b#TNaZ~UO{}ftIwROY*Ud-Dd#P^`6l_m=NzUp=UTt_u{-k~vUy>iyFI64UuV!sc zV`Q|}BQ-_hYF%pK&dK(ho*ix`WJxkAO(I7L^2qBW{`;W+9wu?;M}4+HQvp_iRw5xH zW(3Nf9kW_06SkV+*?yj_aP6Rxyk4Ouh)m*?dHbQM+729B+dkDoZTma5?Nx2cVaY%M z(R&A@QcEBqy#n4i7(!%26nCH#n$zAqHgPfBV7JCD<*G{dIEMwWct4}vDqsIWdOaOr zjIQQ~A!3PNBeavB=>fW!Ct-Xp;wlW!j&Q}8ZI3D-X$J@8&*1p463ORm)L1h%rynyk zQhMO>RDR;XRD6hQF2`7S%29!>)(r75)PsO(>Jd|v)blih5qFfpXy6_m2wTGaLw)s% zbArwmA5Ib4*iCFE>a*w$Qp6GivxIPlq9#2_!xUkA%jrB1+gna`iI!m?@vS@wc&+@7 z`9b7Bsk7#t0yHIzC+{@-3ExQyf+HCp{Gpe95IxdU?~O^wa>9|*%mGmE5FIKU@AYfY z4VV+QUB~$@&2Aw(I{vgN5<`a%=*{(VbJJmdMV)dsHe92IS~qv`oe5yRD!3T2uA7gi z$d3r{r2Jdvtrq^*e-IaaxthutDgVYkNltb-k>#fP$uG!%RQ?EJxct$@;*uDIUU~LR zytA!4jV7*-)fGWhWh=O2R&PBg@qb6p`dOwO6xe!cba;T2GxDuk_K@w@JY_KTR1r0T zX=`?}BH3~vQl$bwA`WGU&542!Bcguu@;{xZFq=x4CESPDF`ZotANl3imijRf{p@yJ zWZ8C&s{FaMffXh1Z$Pk2O5GWfQ>!d?fTQ+;Cxqv1MtdyPQ;XtHGD24CyWT(7NutVp z8Ur~*U&y*{{M3vbgLsV>TMSp@%vGUwu~r}r#7H*Tn9b@zUs*_#fQ(QJPeUrHoK>B@ z&?yg~u+S_$WWtAa+?I_UyoOTjQq&N2+~YDf!s@m&MaV?U#Qn3)Qd?h43)o;g}`B^8)8*0JRsl7w=BvC*FXcdDY2M`h`8T>V)^5X#fzfF zfAScP0s{~lQB}PD(Zwojmgt2E9606sa2O$nirah2(`5sX2yw6=`5}3s#xa#Qb#LV2 zbf2M>e0xR{*cSs0st9JP&!mcDipg z(&b}jqO3V;B!N#rqMgbcPpp-qMAmFpgQap`NKFUuW2SlvBgWPYz0nPp2^n0-%!?PT zecJSp24X(x@|`D+aqQI>)u+aCqG3eac(_cy-q6>YWwvU#9EO;tgfT=c5JC(F6p}CB zx;P>(P@#e4$Dn3RAelq_0uc1P^>p=#lG_&%7=f@52#74T z>L1x<+{sF#4=0C*Rk-t>Dbc-4%JLGmIJPwVbbW$~o z#?TyESBe+alAcVSl=+JI5+r(#nB?0t|AU-^F@@aHTS#@Fpi^!cPS&4==y(HdQimRs z$~)3j+C0*njfe1uB!_3T80`=*mSBJvP`Jq>@PA!pi{bplqd3rpal^4YPt?HYwW|}* z%i(C29i4M@jtGE7xGp!`?C-3v#jk{=1z|A1t(z^E^?Sg1Iiq{Q-+6JJSLj67olU@u z48@o_%(1a^023)vtQYolIwTN+));#f>l@<5F^%4$fljabI=3tE@21JSOjj&OjzKQF z`53}`Av>kMFh#4Qjo{1mw}C7D@ZRi`TDlWor11L98jOi zQjpXRlaf2yk`0OCI^!dbiWqNv4Pt`sy)fUdD}E`>qAllSPqz0m3)Hk}=<~ORnl}AG zI`ZphBna>HT|*FHU}~ptqzYW0!LEWO5#P1O>VU_IeaJV43n5l=EAEN6NEIU0S!Ft* z`#IhBz3fi)$pIDI3>_s#2)e66scTM!LneH#VV|$GVAK0Py^*9r)@nkaJlcsqFcwWA1-1rq~q$Z;lRmO-x+Y;nvB!QO}#rR);mJVfU;fX_F8 z6G98%(gmg$0X}2UCxDZ2&w$HNGT>lVgl)htK+g`aa{Ds1CR~1y?CAzSwo@*CT{%9{ zBCh^5Y5} z`9=;glIO7{(_Xki3z9gI!9>M!A<)EE7lZ`LFHR+huFc~xt?r*;czW|jy=btf=LZVYZv=j@ zwCXzp+_`K9+G(6dDvoTmg)w=ohZ7_cMJ(-y{@k!G158uxf;I$nMp9G@ds_0N@OF=} z$Z*N42{L_IE7kes(tg4AM9O;s!G>GE9c2|I#0((JwbKw{3>k>LA*T)JD)$40qD|Kq zOnk0jjfG~c%{Wp+I{t*|Rjx#my3dz2x!EvPj%5wrm7Q{U(3aUb-(|aSjWC|(0@j(I ziaKYWmgAAB^Ck1J$>;?tiK7?NT&@{XKkT5b{KQjk^K z;~3n#qE-S@5rZ+oeGh(O63|jV^7;IQzPPR(2}}{fe&;#br~Bx<1*@rGbTeHqKi=l_ znGh#KkCIkTT7w<{k|_YBArK}{S@+Y8&zic|)jnMTV(lX%44wuDuUyD<<(N5$svVbF zZT@rmvj%+_29vsltEZ5LYb}qp{gLG{PujM2w4%{56Z`WDj9m3cRvMAp?V6)D2Csx%+$5Vw%cIJ3TeT8$FDd}rYHhsXkCAtX+w<*eKUZ*|pI%$Hm35rLka(w@|P%Qt^FZz95 z49{~!iG1~nw&w?%xlTtJqa@cJZX?ZJdCcsk7jjrQz-bJfg!sLcTUHn<%>icQcM(0} zhLH)3)+?TuoRj!JvQj4ptLAPa;#tu{9x{@PDVGFV(h~md*a^!Ylor`xm#4WAgp$BdB#@F5}f8T{$>chW> zzeT7~ouW9^v@_O(Rxi}D?HMhIYqP9!>ePRx+6Wn`-$nI!Y(w>J;FGJD`P^;cfEPTn zTI>H{8#Y(B_teVpt&~W~0)|e_JU7O7`BZZAqrWrzH8fSAR*{ zy_nK|Iuy{FJ=GAWr2_qNQa|AW3E@<#0mvm?s+0m*?YS~gKqJMcGu(dC;~*g2Q_CMJ z-~dUJAAZw%TM#_5LK8=ZP_pLK1RWvn55V00>{uQ^L+KbWQbl90XOU@CBh7m=n zC}Kt!>eWBAn_L8$(A2AUV_VkQw=J-;R6iH{0^ys#p+4yfNuQtY3(V+QpHdi`^psttfzgsaHk4bm0P+(!YvH^`6D0 ztT)^5&+^|ue`fpXY|4ML33`(;b5G~$!|yt_r%CMTxeKfS;E@%Lf-6DJNTn$I&^hq6 zV_~TDhw3={|6Up9K?+b&9-8u7Ssw|h73-kOMK9xOK%^wk35m_7)PaNE+A4w zT!H`;m;8IU9u1(c;9AkQSXS#`bVz+M)oPYD)n61M-7{|~6Nh+Dyv2Z1Ijkk#lxyD1 z;GoBOC-4#uMJLRg)Ex91ptKc2Ij?@RcjAw89YELN3X@Zd6r*MxuFxnS%N6~WD`xBC z16S}yeZQ{RnJ3bY z9D(nV!h$gfIxbl84T7!(wo!2tK{w9o=K*ZZvO=9!#7FME`S6>2S1icz4^$O6$f)u- z7{$%4%&S51Ool{?go%cPhV>~7i9FZ|8O*Z2A<+*7Bntl7hJ-OA4gRbR39aF!G9;3g zJXqI(TD(?O!PE^&3?i>YY)c?Ktsy}rIYK=^v%Vn_7LyTr|FVX}El+7k1e0q zhJkX$JnI<}JQare9YdloLxLJ*Nc8_%hJ*y}#E?K~b_@x`(J}Jz7(=458MmuzP(UBH zvLV4m{x5Av^qBI<6bN$iS(_4wb(skTp>ZTwrsIn73qH@J_ceD43t1ajj?lkgW6FP!q}rfk^IkEzJ%tQBnr%!HW@)M{ zxD#x1;$H~wkNCafJ}^N&qqYf(yCJ-P%7-pUNTuYq=Z*ed}`2dbhl7aybB} zqhoAA7Pk%3nHZ<6*dk5N?b~q&gx-j{&?P@L617RLLEJ#r0m@kus=>s~p!p_h&u#;Z zYr73{mS=0_lfO1t)H6EnG8H}^QGd=|7-$KAsg4U^gAdvQ4~GIuM?yZJP(ahow!nj- zfF~#@BCAc>pK_sKB!pS7Mm!ibOP&Xg`hZLKL3rzm(iqzBv6N;Dz1{-<4fJQBhegPL z3p2Q#ZIlS2c4Y4N$Yh!++hZ_Cf7+K1_@!n@ykvGX3pU!9pX&4g=V|N#L#I`3&Aa6x z#yEI4#zAW10tyY2Fc6UgFA&o|c^d*vKa~doiY&r}HJ1-o%67gPi9neOCDZg@a~)GA zjs_rLqyl9!{-R9#7fhLR&HF%^a!A7FZD z$JtsoH*SCAbK2$jo0^1NB)a8oEHg?AawqZw4mn$OMXz3@i4XfnLZKv5LAhzqS z6$7>058F&SB(`A|bs?b%9bcXzNpQj;>DvDWT;)S?%5caS1ocp(6i78 z+3tekGL363Jd74DE?QJatzgxx2tXCkaW|S;cF&zhXaP!B5$euR7_Pv|q%wUMv|zI_ z0D_>C>Qd--ahKxj>ubCj6h~!DPIpcdiD*PAUPs{*R3--i%Oy1%PT#b<&R;HfFT{cN zd;7K8pIKg5vn%r|^3)ElAW<1{H>?UVvMpXHjdMPHG^~eLUC9Xi!{2*bZol3u=Zj|5 z_k13cst1QelGHRLH}aYJ#dC4!9u8CjjLiI13W zBz~?&=y+D&ryvHAYA{r2;NF{CFoN@L0&>m96R4vF6^Oe)a61h|H6w&SGt8)Zm}%x* z6!4kn@rh!xG^Xm=%FV9S>3N~I&}WH+u!Ai0xL^FAUI7y)m7JSP4PD= z$0VfJY9HaL`fe)~RJ&QN{oplcpZ->Df(c$Z*7ODTw`tk7`%fKWDX!0YN18y$$u}qe z=Im47T4mRd7)tK`_1RlHcPF1+b?%;j_EP6=e0JHn8=XCD?hvfsoK&Gg0ZL@rTNIzh zB2M{hGTXHY($BcmO?md$Qc4iZM*O`>=o>xPAKxZ#dCOahZ}7Gs$V0KOEpZ?Q=ypRR zUI|Z&D^lUeadT(?#V0@gBcHwFcMtt}LK|w4Xu9FqU;4eb|M^dS>d`}w>8XHHjNRE^ zcLaGD*i1sg#D)} zIhVIriS|f7kdG5ZRB-ul{z0-_42%8!cA7AdMWn3`xZBxkp*4v>3KlgL&p5f0_+*Sn zOu~9UdJjTi&=0V-hs-ZVoF}PbfD;0joA3~$&kk< zQ$&I7tcAcr2K;Qj6{VQb19DSn&zCMR0XL@BAKYAYt|ov@BQxdgKt<;4)IB)VPM1Dn@X9+qnO?!Q)&WA!U^prsq$GgqkL7(yn*PFsMhP-!n zCUwFCq^e(%okZ8uFMUogjh{K5r32{K?F%V*K|F2EP7%T+-biG}J}o^uRXBRl#$m$F zxPT*-;RP(r2V(@A7IKR{)$GQ;7Icy7Js^$nxbJLSNs@xW<_j>y$aOI!LFxMR3H8l1 zmBk?qfDY=pmnKYH)$pL6*@3$q7IYVetmE|v3I=XK5m(5dW3N6ye67)Ffb-u zsx7Mh0xD8L@+I>A$V@6l6a74^+k{#?yK0P44@C#R{v=i{$tqj`GDbXNu?fnXjz zz;gJN5NMc|XoEyl<)?<~rTLsm;6{A_p=#HlM7T^MYGF^3s+N+_bj(-;6!P16JGKOc zOyVqLr3pzi*i=p>qGRS0>|_EaLl?dp&u&W;w++-NKl%HIQse0k<%9*3n|!ce1}Mi- z?L527bZ!{&p0HDa51CyFOoRAXjmnmed+`(cS4b->DGwfLsG{0fespm>i|c2;T9o=1 z95+iZ3Ny{KjeOXCQhqpXLxC_{+}{IyadR$Msn|pc(Bf{;h|50KBOrU_L&GtN7wtHR zn5|nuBVMHN^C$eli5P`37*qT`Z zy?dPuYe`AZYEuSPn1lqtR?Fyv$b?ajyO4*)!x9lT|tC#?Z#v}TY& z3swIIB-kX075OM*Fu!nlOmFsLK$1%n6ot>m93Q{~bF@O%`Q$XcW?-)h3HiX9K0}A_ zFy*1j|6Mlj%j$AnBb?U)BurhXSB$AK@Sfh7ya0^p`Nq@uHVk`G)7YNTW~p#k`#5CV z*4-l=i$u8->+B7qExD+NqYQ+O@v;Y0FH=Ud&Vm)NK{j%&Z?mHmsB?|BJShLV;=luO(>n_VV_{(ev27M+Hx2;}fbA ztLMFUJa+~CXYjzb`Z-r^zGB2dC8OtfFirrsl6K;sYR(aY5>^((IKA|goY6e(S(z}T>PYy7urEc4T+@mv8A0rJ_ z2NMG6E!hpffH-6yTScUbWqky}6X;DtIi3??)uvp@z)f4TeYhW*tsk5|o^97ZRsBWJ z+_dXN6-ocoC>k<6U^}`W=x8&M4c=*{x^4q;XP2(~O}Z?hi?1+$G3Bwf*s3ifM0ZGL za`^=)Sqw7WL$Kmzz6K5u%WN4!Rt-x^R>p7X&4i5Yl3oDb{6>@r#0YekOLYLJ_kp@6Ni47Y$dWS&HaQ@>TS#SbzkG~-fF*sY({3yQx>Mk&wn zfz=BFm883(V#F$(p_VAmv-6fUm=I`qi7RhJ<3cAjxJG)#1BqKXKlSM-35NdlT0Wy2 z0E|ToPGp|dCk5ewBTG~cr$AO7$J)s;=r#S*7)pGE9rLt9tK{Y7jbyX^O0+MSEIb1@ zG8!7&Dr1_N&C3y_I!G1a95<#~ZG;bQJH~jEk8-a18mI|y%z8#LNEGKoSKXvjh=ecr zyjR}IS>l~9mV^z9Z}^{~59c&w(%+;FnVC9OFsW}t*I99blsQ}T{qtoJH~%zR;a{bd zz7Vw_K;~toV}fhqvKUst{w;=?=Z)S$00^So>@jyERZo=$)yn^RJX-2G8@PSKz1A_B_0VVzj#A zM!Zc3E7N9F^It0e8?J9$yPa=_BEY`%DRT#EQt-EmhnVaU)(kaj)HP#Y(5TB|XSQOS z+P-c>tUi@L&*@!0XO+|3)Q2`=L`Mq@+#7-Ev|m@W zA9x~EPo69zvl{GCb6b@KXCRF=g_cPd*R8eUL>$-JqW;WIy|VV{mF6|fsBFu4B@f2B z3#0$eyczurC7|J$+m`$=CXVLt$@#%xJCGrYHBIB)n=O9_gcKtxVv*((6`4Guq^vxN zalPOd6*$<&VJd_UqLegE-Ue%KuSqK?Mi+sxRm?9q-;5U<)_WmE!n^X=cQTzTI!axS zrXn%^!D|phzx?nb?oWVI2_k@Eh_4bUA_{?ql{T_bqbU)BIu^IaN74X=$dlFvT{qB? z_MF3IJ2{~>&7eA8`53KJW%tjeidb}B2iH69al0G53d{3$mfVXC^ z9;2s{kh=i@r^g#qW$-j>uL9;H%gpYPA9}414^iDh!wVami6lKE} zr)94eB_hDI@&-F<&yFM<9&Njbi{D6b)9HKEp2(@@OlSHB2l#ASXV20d>5WmPtQ~7Y z$Gwg==N31Fe6#r;ouPypQ%#7dd4luO`_GUw)U!SZWLUQGS zME1*UP>b*iKlo-;jIm))*_k%9EZdjD%Q9ohMTx_1=sP_(c$^lV(zYfilQKE9sen z0qjcM;4a1#rzH$q*$yZVy%3enSBaJmEP%a`ByA9gDptcwz6?qrm>Vpd7jL(Tp^;(l zFT)4#=I2&DviG5z!cwBmL*}L_78Wi|&uauozJ=SMMS>lz9eP5^P%z>-(VdJ+yJdwz z)D2h`(t^**vGGYQOB0+QaUVT+n4p^~tXQ7XH_T8OMtlZLOP3iF(yQ{H#kCQCV34me zHQNt2&oZ25TA($Uv~n72Bwm_8#C$A#yfi@s({jKJbXg|PVFuxsgMIJ^hK12%|Ad?+^!)Yy~z8iLZ=p)AAj(ys_*qDP<-D%4uiC%24* z7rT3t;>9lda7b2P-n*qdJoEka*Z6PdvhtoSr?F50#yvlZ1e%l&Z7Kfq0An`*#Ii*O zF3*K$k{wr`3rzygxmPZ0$iP+#S-b$mi|w=R`X|snrHym>g~89mBUo?GVxFf7_)O}N z%d6q~WMAs3mQRG$@?(qosX>7&tyu~Sx1VB=+^RIngBZS&I}}v{G)mtn^mB8Pe2H6i zElBwkPYRE(&t!1ARu8(K0VeC}1Y{U)7Asjb93)b$Mm>FF;!G8^Kt0#zUR*h46exUL@W15uO`(zCXD6Tn`YUq{0}emXnD@s zoxTJFv~{^&(S^Gi5CD}it5VVpcNNVv>9~?2Kr+-n)o~5ldeCJaJQZ(nLVvts8L*N% zTTb91_fx}SCz_NspFyb&x-f7c-YIke4G$d`V=cl5LoYT#%6QaKeC+-P1c)rXN|PeR zO(4eg){0aH($nKdtD92wFfQLIp09GFBZgBo^*zV*xOw5qcm$u${TEO!^lA-Gr7@v& zPAu2pRPG9pUH--va>fTh#Mbg|FvC?u5c;D0^cEXHf%AIB>pWLg59WiX%~o>~R6!J? z^HzV`64^LZ5;X#qX4=6j85BCWb}yLlpo5Adnb%1*urgmpX}&$%-ctCZ zvS-YskkzA-X2=j#3f<`g&)vB>1;+a=h1WFCsE97Q#RF?Ay}4WI&7o3BzjeQ6#mH4t z@sZ|I9@6p`&Th(y`TF@{Ryn5L4BO&{pj)M&Yz@t8am>*{&G58UY=WC z9xN{}XUog8Gsu^I{T`RkzfI|0>iygh@pa(>X^{0%Z_Ab~bJi^GG6bR7`EN^`Q$Jiq zkLH()c^Qe$bR%V{B7aQ`WT(iMVjdSP+d_kBvR;uBi}~YK1W7CF<^Q4X-Q)GDs(bHs zd7fuq*1oJzUX!X-tXfjV3xYPSh$%Nyr7fq$`hI_7%=KK7O#tDaBW6Eq z%{8xMjydMI%`sQXGFK=j34D(3*C?;eYukHcFPTgtVP66XQXCu(PCs<7jxD6*NP_99V#n_w-0INq8M{7k zo_^&Ib6d;ru3M=Dk)2j9v0&pL2Jtb4r1T_A4)ye~vc{lWH-O!6*|min1`<2j-@yK` zENkqxa)`xH_29wqC|CO^kL=p&!pMA>9V+{sbt64kWwt;=)O>8lMgp1Cr0}B|;71Y% zKLR#C#5>UsV`dFWkMIz9!Iy`_3*+2Dgoqh-Km7nR#IyuLS%EF1nBgr8aCAVMWRMqo z1HZ#ofWDJW>O>3wrblA$$cd}^#@TOdZUyIH`H^mAk+pL>< zH{C*u_g29@c~IF3YR6W3(~L)%Lkzbx$+_t1r^+7~b1U*$d?w{a(dK$MxItY%mF}rK z#F93(D8aC+Y)?JLJEFP1!w~RN`3sggUgokz5qjiFZPO++8 z$S#W3VdWr%5|Jr2xL2GPZZpUwuWF=>r2L%XTQ&777P{-+DA|UV7R4t!**KR0!)X(O zW9)bigH*%`nX6Zwp4k5moYp+-t(vqXdHH;=o_R;}C7c71oB1Gs4@>;-Qf_+mYR2o; zO`f4@nzV?4 zGb_~8q&;j+T`j8dZQUs_1;_bm>=Ze*Q>_##$RUZCNigU_3zlX;R_K$1Frl z@wJ@Zk7@NN#BUDwLUzpz1n81IUCgIuF*C1mLUf?E6OFLz@mR#1#Nm#RCB0IN=6d&hQG?VSLtZ5QS$>@=~-mC7B99scMVT_|<<3o8ji zyhygc7)>cF-Z`1Aa*~KPWXk50JDg7H67$(e4_(CezMcRpT7r=e$F{E1Fi7&2U^uMG28p$lHNmIA05+@aY5}Z@m!6ZfI)f1|@ za)0>bchOjB=)K%jWMP?KpV)oLc4TbogHvJE^mz7Vt%ms5;-Ac!Sl2`|P`)cdaJ{za z0h>x~DaTZ6t7Fcc*O*x9mUp(A^}LEBTn{qPwP^`Rk|$&<=S=t+^_YS-LWj`2Yjb6H zaVX#;WgpQG>m$rkK0Hvm2g=(P(WeOAwbtR>Iw1nYgtV%)>Kc9QF=rGx1NDz;61-tR ziejj^_8b`(ItFWufl@o$n7lHj0F2Qpi9DkbP@i!dK*3sUh@`2?LbaV>nOP{e6N@_w z&vP&^fyitoz&(_wvw^( zlYoP(`K~F%kAYeM#1od6m8+RpWmDeqUbS|aj}aW)5m+2;VGHxT1FL8t&b+D;T3Z9U zR9dhj5Dc}e$p$}$nml%y?2ov~)+h$)L_Qb<)o$}-$N2^rq>o?_AH~*U*f|`7h*|uL zcAfMjzlt?C!Rjn zOJqaQV%1VS;m*&G5R94 z_mtQ;XpI`6Gf2M7vI!df9zZ1+MqYkFS24!cjg6;-E+*odZs`t8EuIxGF{N4g`m|2O zjnSa!bM5e|l`uo+WITD}!-E_|M@5D>O}pFR(f%VU_xbxpTeZ~;suECXg~~RXSGN`h z3$XlaM#qgoj6tJ=&XZd4RU!jQ^Ty-rl7EMr790QXk zot8#s>ftOb{n7m?SzOIy1|J$$BG|_!MlS@s_JtMi_o^{oL!8YOc zsf?P$q4y~kOo_Ts{sh$u7?f<97bU8Jq}{i~K-=ZtaSPvyJpfv9_smgKV*5#g|gu9A$0xyv^QhwkUYR{~=wn9C?F*5RBS7(XD+{ zs0a>kpw=Gb4-Db%NXyB9-W@59^=xR%~Y(q@} zgE?(?r`wz(9&1WGw=BnLrI`&)^}?t_WUu_$*%eY!IV}L_0oRbh;p3L zxrG@AeSrV1*k?Hd3#K!CEpH=Hi=r$}G%e$EmiXUAU?8M-v@G;p&Qm@E#eX*7*+`gO z$Q~C-wi@ML$S&4OWe`&b#J9gqIM;!!TnaZD3 z8;xRG)3a04DgEHKQ=Vk}K#6OQ%=a`R)U2V6*t{(lWUkFn1*{i0RX;8 z#>sGpy;H@%bz)|AS)wglayV!|gKyexaf27^$8qbTd|E!Q-w5AiG`Hzt4bd_4zUzOF zNTDx2;UN!Ke1{kHKlA>7Cqp%7cPK9rEJ0i_qE#s(7{Pz3KS7}{;z=iOPtMQxC(^bs z5q@tlLALdbC2cqJ&5TpU3HgEa<-W@|)t%k1P8u(-Zd1RyMXKQHVgBO4$X~QyyWxLN z&`rh?`C?@}&JA^OW4}(Ry}Ztaew`Kd=qln|Oj(XXk}89io^|m0!#gNl3+Tq!q;B!b zKsP;+CgkKMV*Zx=iJjAB#>l5Hj~)kFM@x3cZL4@^?#GI;8km0$aIuvt4^C{x^05%8 zbVdbgaj}9^vVd^t$QQ%&Oj4ttTaCDcz43f~2UTwP02)f>yE#yAX`3x+v!BABc!6RI z&@;#+9pXe{HxIIk$E`>Ea6Bxiiejlr+*`B^MP0MNC4K-YOkO|+T#L7oOI&)tNBu%^ z-I2!)OYZd;PBq_DvTLzgPy)DyFbl4VMVUokLtEyWcdQE<%^-wiL7b>6p8zDKt-a3V%FdeH~^mKx>~b6 zB>qADPDym%wkR^gp4nP1!TSqju+ju~k;a-=^;yf3br+W@lYs8h|zBiOH+9rCY@aWUOI6 zpBhdn|6d<%BAJv5MSAIxUc#T>+zQ0nHwjgBh`_x{U4csf4M^u?mrBdCGyqI%=50tL zdHHH%7x<)%HpNMCw?t+}_W3U}Lx{D=%ka&>fx~Wu3j{(*_#ofX@>3YC!^e2MCN|$P z?E>povL|9TaHOlqp6nS8Q${F7gj}Mep)}qf1+AS4RTs}}x>pn{~R3*JKj5VCoilgWs~Ag8DKk?X^?Ut64s*a z<%g{WEDWThftkyHESLI?pnW`fB)b&1rD58WmQn{G~^dsOaTqa4vY}oQt`+77I1jCa$by`k^m+ z0HQvCaP zGKXPqm4J7unmwmZ=c!yU=V7MT@8QmRI(Cw5Yx+G~JLuUO zmC(0YJ&bh7csHh{1t$jHenDFjs0B9zrx-p0o6JAqY*ucr(yg50jvMFeeNi$44Cw-Ye#_5wisu12b*&GDmw{WuK+qlm zxc9=$^z*!2Y}DY|d*3#C8Cp{F0+JUdOF$H;d}ewT2qYdr0Vfz%BWK(_PqPRw8)_3Z zs=BibZ0Hwh+f-I|DaCZSc@YJZ(hk6*8t_ zMknPb&(t6wW9Huv*s8H!?EHb#cFKc*J*(=Bq=DGpM|ulseQLhRBxyY@x@dz?!>95- z>1IeZ>ybSnbK52dP>vYpUGtK7?Bs9p{w!-7t3fWgYJCWpiVE0iq;8TgvI78Zfk-$Y z6N78V$uHF_e1I{pV&0vRGo=RpVjNb^nro60CSGiq#o3TNfUY9Z6j%$=geFq5H!ZlT zy=g(m;(XINtOfkBMD6F`Nq~;c;*nj%`c9s*W~-{kcP)c7bU0IM8t1@dVy(@|X9J#Q zS5+wI&}0;cTG?2P!$T0t98{wGFBt<3MjPlar5ii}dP&|qEx6>(Q{|HP4wFO&lJ@~% zN5gEdHoezCS zqs$`WDS#yL3eA6Hkx$m`vYtGdUi8Nxe!C)RUn zQ`e9q>(USoBK^uC66(4X46$N*7%MKNSD;o@(NE1)tA-IP1+U4+d=atjKZ~g}2uH9n zzVhE^OfbfD05~^9CMxVt#dQ9z=}5E1Y*7p2*|uyIO&3THh5$;XWJ!~wWQbxGY-Do_%-nd;rHL%D$lWK9Y)&1 zM~0I%4l(KT(oYv}Y9V2&li`8kOwyQ$i*J`7Zs}A%G)1rdW3e(Nqe2MR;ctPWtZE)(1nf)0;Y++q#%O=u$WgqxYn_!YZ0!@&H?ICOYZl z1}SNC-0%*bwsWxc)h#*5@pTJhVLol=)Fr&_(=U73fBLNrPy7C9JLN>T!9TLW;;<$j z!!|p6(q;#yRM2#(`7$j>t7)OmMN#b;vLXy1VUrS0;0?!!-m+ZzRC;ln7O8*Q#JXwq z*!-VmrTN)3l1FM&R_K3s?ivfM_5%ou&eHq`0WHC0sw^MW$*XYVEv91Du1B5>Dc2sQ zLQ)cmF-wHWp~k0J>|fbK{snKQx}qde)AWlhRk(WE6?{=C@ex1_>5W;ySF`ko^u}*( z<*d@znC4hcos`VzCCe!6zHQ35U84oY*J+*;v=OJtgR0{6B|AojigUtzoni$PqGSLwzfUT7s+n=d_JH3%iMX} zjT;4ybdz3Hrf~hFJ)7<_eB`#Nh?gkC#I)}t0gx#^VIZR|I}>vBg!WN28IK%pGtgO>4oIXj(JmB~diBs@BuTyq^zb&S*lt~NW#>X&B6Q6H^n@ae-xHeJb{JMi+zaJk#NL(- zVgKvf&lO3{bdCuT!Q6Zm8_jKHkgBY?VYB!V5hPi!d32N)Qm_dKDS8npur~YtvNArX zD-GxGiw|%P;er(Zu!zz(jb)dq*8Ut`f16~ZSUZFgKaHsELTtE1ffrMzgn!64txH0A z@m9gLr8<1}sGw>Y!?U-LR-qbuN7X*J>gX@w_tr@%QoaE(<2=cdf{<2A@u{hNoH4st zfDL76B`~q!mTw=n8sMDh^U!KwVMQ5-W2DXSmv~fYQT}2}fG7_EK?~xV?Bx6=W#@SZ z&-)-nwkTNFaZ&8c>LM-#);u7KFFXR~6DZDi6gj+WSqOA23;Np!=?(*FcP3or4^v^u zAGFVhZ+&~PP$ct*2S^ai^?Zjv>sS;XhUtmPQ*l|eJz0ZF%e(L#IU&EE{-3~Dmf@#) z=-KNIUeU5N)B*=$bQ@@CrloYUz(7)pi$B!%QA6q%BB^`v;?BBp#yoIZuj)VV9X#up zLR~aUmjgkEGKwKz5YDX=cJqY1dOYid+1=BHjo5?wNE;XG7JkmwpDn$5Mw=qKZ-OPq zq0XSIN%0hz3QR#YJ+!;cpbiYzkk}uaq`gEl)KB7?S#(aZP?EfCepfxEJWO7{F7lv& z8p%^A50lFDi>{?Y1z#Blz+om-cp-)HVZ;q2wAtI20sUtQ6EoU31ly^GZ^}gBs^T5h z%(;+|sduRVQe#Z>8tX+}p6S40QO)e4@boSgTI?KpF~dz(0tlw1(++e<4`bnW?^Wv+ zHB7Oze{jlB!fVtA9+Q(<96aLxEAq=adIg6gTuoTZZN{?P2xSy4m?S65=_Z!b198XS z$MYdQOZebxIP`6&yqrtT!om1*Am-MhM3rN;Xi@IhGg1aUx=D{}#UvK$p);A8PNC-Z zj4)I}YJt$8m8)W9>Jrk0Rjfvkvh4Xrp0A0|>MBx4zwust-c9-rp8LIB(hEWae|z?K zhy6vaq5XQ?7HKog$n2>7O9xG!Kj_IOe^lca`J>v~;*WyC;!w+**#~WS7MgsZ=2HFAX4uSB zMY7aH#PA(pi?&Zk7HyL43d%qH8DbeftM5l_j`UBgNYq@ni0=e(l$tydcACOc)UtUN z2()GHHw$r6{1~0;Wy6|{EGQnsx@^(^BP;BBo~0J-SITHO32k(2y!?(|+q}crDcxVk zucgi5_X2@in{ggj)$oC}Ce2T9J&d26DruJHa3xKeSJE0Ku&p5iD}HEyhW5j_dRHX_ za;&$3iH6_SDC$WY9NU77O3UT{Lk^}09$m&Cp5W0DpOt;ml;S=7um_nI`k5+i5*u*- zG80Be*wq$Z1zKdSp;-rSxtk3$gOBK%iU6Cb%sQGT zvnB#J&1{rAkrW(pJC~T>Ff&Sp7HluyFq?re)+l(Wv0713j>5d@Xot<60bu0YIKqX_ zpRyXz9$M^s$#3FAiXUYdVw(es5+B?OXARILVG8t(bz>yRKAWws-&LYiFJpP*;M;O{ zoGxbK_N0KpaqV z&(3;m6gkF*ki$+Hl1oGE96c*{_6nz^HfnT*T`}L~Rv3;pt8$XbG5EIj^x|q@w)XT$ zmhuO5G4+edefDH>A5}==n-#OnxVWRy#)2@}K|V+lg%Zyl<~Owv%v+Jy1?GZURO0by zs>J5(8Jha%f^wu)b)&8)4Vh&gIH%!;*UP;g!?gN@&x32Zb9N|}3*SHadRU0^ci1Kk zk2y9WwrxBvX7N3Z=dAdi{xf_}^K5)iXB6_CA;{|_Uft<|0<<9?05Mo%4Ik$=dN_hW zx}=+SmyiY=)glR11F#LejcL}7@>v=%BzYMWumd~mkE@siQ&F4PwdLoSg%&yY6*GfIv7V{Tg-!j1+LRRl4hFp33OivOQJ0vu_maRmnM9l~VlL zkOjsx0-!Iufi@zBF0@Xf>drhow8Ef)&x?W_2e?C0Ty8iFd;TUJy`hX8cv`H7Yf)VJ z(>vCe_l}zndCG%2-1p$%8C2a2h-rDC3fK0DYs(+VA$Z`!0bFpQp%s7uRR-a49etsc zhD^{4)!P?dj2)~cC5|1SBV`-y@^zDX_I!%~$(tvlf?!|ZtxnaQoXv(5}-J?D;W^5(%OK$1RREf}ry_2ck_@tFD#1%4D^gU%+B_ z|4?Rz282%FrX6>#3ur#z#t8vnQk@lRS#f#N$dLjFbC}m4O!EkMu%b8-7^paAf`-6O zl#of^HgBzQVL)j^`0@o7y!AL9K{MhtAy!B`a~=U;I)0FxB)L?K0b|tg+5}*axErqD zTQH7O2;qEnSgt(mhgG4&ZODfGOq|r*V1;Szt8Gv|$<*j)*A zdr&TtND4%itRs@*$lwyz_;ZXw$rZ?g`lOpmb(D^uZPQR15Kk-kXRfmobW0Fc8@US- zQP0oEr{QmZDlQ*a1&#{=HU$Y;u`OdGtp7&h5AVNyCL|wm4cKd)#Kdu72u8oAu*~_; zbPH{SYL2HAf|vJcVuGNM%(#Jnc#cf-$)ANdLDYZ)dIGqH=BVX!Xb5-iJl=a%dw7x% z#oW5gu67tiG4R)17cX9+Rzp|hU&~zN9|z+I-^L={XpN+L&^H5h z`xQ0^o=2Jr*DT>xRke-7jGTHRZ@wh{j~xa0oR}PkqYxrtS+BuWW>vMOJdbM+(AI6? z^Qvd%=MNVkJ1To+-&n6IfA?B;vQ_1I*LGKFmR3ItO^}tjh#xds0^uf2TO1mg&Cv#f zr!+hc)z6KG%em#11$CgA27~}uZk>8%7Y%>3ghbmcGOb7Xj+B2mYg_hV2%U`LmAyVR zUYQe0oCWprN}m9j_l4~G)ZDq@904sShH6j)+lYJ_3`L>vku)`PV1N#jcvNzPfKeye zqG9|*te4S`m2aNqOU|Mc<&H;3d21FVs?h{^?_(+aU3eMn0tscDfCGQ21UX4)&SAen zR}>JH_Dmu!a;b_!f>sk3K7U?%B$oRb?jIheIolNA^W+buXsg>H2(Z?;SlCcMlzI?l z6YOyqY#4{gHki?mC_C_}k)sICJ7|JVXQprhV||A=T){j^UB?lU{`7AoX``n4TO9xR zp>E)s5OmMhpO=J5;32-XXF$3wJ0NM`Qh9ws*Y%ay*^6(3p^nI4Hv%}kp_fC8{>1BJBca4pGld&l@|W=gR}NSSSs6cH0RNfUKi4@FB7 zEj8$ULrd&wKuf%^NJ&FF@SJun0H2a>M%U7Ok;zDnn1D?@iC8zh5~vfA*uQ~Th;mL$ zJdb%&Tb?=QiR*X8#kVCxFZd7JmEPFD^rH>U2df;mZ&6aZzM51Z8vWF)-nyc~;I z`8fI3tUM*xnGb^J%_fK?)@{NKpiBeD(Er3mh}kXnANrxbi}9v|NPCgOLT8xDr1&~o zQshT;Faik^lb&ckAy1OTn@uZ787XOa5?r*t%9xpl&peoiyu89><~)3!w|4*S%Ol_R z^ESpe9rSsUD2L<_D$2sER8ekDCkV>!zhP?IEM=9d-xd9yM}x%fV||!ZpY$Q7iSe_7 z`iiqi{A3CzYe>vEP0n-4XX`xP42vc@b2Yn@ul;5$)B}A3Hq*U)0Eu<%>#4`W>Y#fNpe-|9E;gvAGmTyA8<_p6>@zr z<(p0i*!L2@Yy?CIU5~OnE8dGXF)E$2+R&tkdFSl7d-$WhXXQ!5z>`s9dx|Px(!^R7 zz03n`G=Zg<{8Da#gEJc9Ur2zHkfzpDv^vyO$?RY*{P?4>PkCDT$9RMDl@$L-pZhg# zLPrFo#ea2#flNnQzPR%6;^Z=$v#2gpXp!kypcR=x)HoJ1}^jMcR6$4xe~+ejY|=QXFC9nUuWvxD?VkOb0Ea z!BNX80Amj2M*vV21A-^~R({h#_Q%3)Lq)W}QrlSMs8obh%}Jo-&)LmJxp${)brFO8 zGqekirTKi?&YlD;bb83MRYrw4amfNrCdgTnt*HgXWOn<>r|qmdJt53?tr}=6g?ddH z;@Zf^D3hm(D+h%l8j?;|{iZ<3`W*%#FMu#>K=?KxnLwgKiZ;k(3$NfkgjdC91v`5D z*kK1AJ8&xIXK|Y|9tr9EevgT;hEJ(T0z~P5_m{;{rZ68W?x*STSX8K1DcuK$FXIlPuTdztmSQB`>m- zYeGpT{lNpNaRp`o#op2sI6u0Q*`jCJ#p>a;ta_FK)%UvtIfyn+$iW73W54C^230RE zmUg30sy#=aR6{zWIC5u|11kCC=DXmJV&*G_Pt1O@)r|F*KRExrnsS;#>_x(#Cdij1LcdRct$a^7XfxZ^fh( zwF}Fb{_JVa;%O;~6n^FktbzPi-6?iHLIiGtb%UJAPlN=*6N(Ln%)u9n0Ehd2$i^=0 zdK1H_a7s1)_SGyI?}spidwSqC=>}YvJvzmqMT8`_yj6`f2FJEnqs0r(`>eCn^rFrqm;uWIMGDuet>IQ?As1A{3NabKVI2h^uH$I|3hVp8 ziiU~kf3j{FHN2cg60cm}hO~TN&f;B$uL$_Mg(WGM z@DeNE1*#z+{^@;rc-?(@`A)^%;Qjv_yoV2c4bhIY8~SMyFt3lPpBPRhUp8Eql&7XZ zRaZE83{PEZ7gKeg=@+C)|E$wVjBmTN*sAIC50$0rXL-n4vVN8?K2$9&vOwNw=x>kA zf)=rGcRFa&P)}IQO1QOO0{yEJ4h#~Io0M{JkiuCX&P0zfEMojUuREJB#$^f4u$Ubk zyQ^90vuK6j1hB0)i&)s!N4uiC24uqea-~qYzuIt5JD^=*&9meil}mwyUlcPuxi#E< zpUmC+QM-X`Hv9ge{EdKh&Ok3D3A)n=qyu;9kQ!hrh@v=PXRv_ddDc|>Z&oeJgd?hL zP_#imLMcd+)a4rzLbx3!`wigkh^RyT_Q~LF=Yi?&LbgO+yEbG@_=IWmkZtJs(O~l| zxs=)94>i3Mts|VO_tL8}s8F4RTMc#K<8DL__b!Lqo2;nxo4{>M_%3?nrC%M(ij15s zLb0XcysVDiXdSRHUI!~_s19b^=YAo(ARdU0GL5zg@zkqn21^h`9p|#VL5S7M)#?FN zzou!+hYCaGZLu(7X90%VVR6wSsAETY{_uyn9ms&HlEk(wvLO264_`++_A^fy#G{$8 zu-iQ8*{RGONd3^+3fU_ynjdX*yfHgNm%>JPXbZ9f7z*N`%`W^2eN|jU)&$o^N~493 zN%_+hYyw3$nR%?e$AWZG*5*Y%GhvrwC%f;P47&{- zC{z&_w6&*Nvnw8soWS>Fb+x)zuP)E4*2bQ21aYTgr4DsPeQ5l25k9!c_;+^(?_SfN z1p<_kTpcr13mrq-pDQ5hQiDz2HTYe+2B-u*?=%}#+=A@Bx;VjITi7gcMEr+b;JPqU z2mYG{j`IFWh1-NHAPz>h7!DYNW!903iO1jg))#0rI&KA%nE(A)PmPb_s(4+K_ssCpL++5x_6w0dpv z3)%Tb{h6vk^{gr21YuaYdgE2$WUTkzbr`mO-9^Q^C2mdI_zcmFjrCZ3mXkkc8cM_m zTXE&C6yEF$Kg==oFSvY?jHz6ZcYrn&j)H`P_aXzF zkRQm(1N26N>R&bi+cHRO&O$Va<^2fY@UMuzl1dy3?8embPpZ0>;lEIU7z zJv6ZufbB@e`SG~a31k5aPE1}b@P~VhCn65Ro#uDWv6ChTtO1afSmk|HL54Eurzb27 z658rS%-o!8{nvZ*@|>Y`Yn}CvCS#B{9+mycVR@UAwUUg^vHR{>7wtB^js>pN2hBK> zdp|BEAQ#A&81e~X;|8%5{nK-$+sVzX+cjVjawoQF^qZ z-m?cQZjN?R^D1;dCzeuA8bE!-<*@naMoWTm+sAgfZ@oS>J=4A+{{}~uq?)wQGS){V zc5znLNBKV~4+>%WB`#|sTE_@YW4bSC;>{Q6$Ky@U?N(@OOfFHx%;9o+Q7!<|r|7(H zG29e>uQ)7FO#LOFqnIE7u6h!)u(&Pi-puP^qwD`WV6U`ER%^J*VgiN3kgFALGIlo% z5XsgK-0GQJmM1YtxUjJv*K>F;vz?WHCqC3d7CjGALx$`E0=)3>TzOxHTkj=G8sf6Y z%ht^niY^QTA=^{}h;m|ms#v~FC7(~QfTZ|l8pF0~P6ci}Me(#~f+TnI06(5BMl!+G zv*^{zS0FoMf?Go@8yu%IRiu(Z5<0rF<&R!NN;g@GY+SpN)_aj zVQ-U~<+;+n#O}pN;?_24jHs>tqLXR*tEX!+nFAnEHVi3WOj|<(DOy0B{YQahFhVH4abbKA`Y5sQ3*YAZ-pw}mg8heU)>G%h#r8vX)cQN*m{s1*@GAyFDWhreKSU4BirX!&KYM- z+weam%Md`+6_{?{Zsm*zjfWIzL`c7c6|H* zt{7v4lUgVP=X5MiQcGLP;J^O$Ea8qTam5xVA=&$OSwzegl@-4fX!fSC4LFw0fuQ!W9;p4ho3O z_giDBuRIhD1g_KZf`NdQLj%Eu1N}dX5Tf<-{JY$a@rV82oC<6P;10LDgD~bmG29*e zwdB~R@B|qi!mPFiVZ#ksdCUN=gC2sWf~$g=G~Ka7pe!}u3L}%jPyts(z+VZj@vaIy zZiMdn0MO<8XS+!=_>pCi)86p1m>et%YtQ1J^EVHUYbxJXSL!u5x5599EIQ`X%B{Fv^^ANtYBQ6_=WxUMb%6vdnR#! z7`mLs`Pnu+qn{WeM}v-N$ekfzo3^$Ab^=hR2TQwrUw`)*tpFVA&z9*Phbx#Gs^BMm zdOKRd=yZ=D5}`f~268n66!PR6g-F(i`w$HrRKEh*S#f4LDXDsWd$g&AaqglFiE9R^ zvqoeW?5~l>0iR;4wkKPo!<6)XW7&`|5BWn8KAn~S3BfY%S&x2@I?2(HIUggqiz!^! zWZBL?Sc!bV&0Bu?lX4ZXr92h(Y6ah=75qridPN$qgEFK25Uhu{kw-e0D^?%35M-l# z09grs9Reed$sGlgbPj>ye1TCClw$Uar6>N{`+qf$GS(7|tjWyo3aL<8au)NLpA`K? z87)X~ZMdGM+?E8RWp{UTmw|=Y5;4a2LdzFPgmT5_i}aYw!+Y=M=9jROztiE}{2dF| z@pn~t2Y*+GxAAw4*>I)0NXvI&mJ1o8XZRDo%&-G<>%rX;2O=SG4@x-GZ8KRaN{Lpi zo+&qDub1GZ?s3@JMJafG=xxgy;i#9m+;X#s8tSz{DV|nS-UKM;9Ehcqxu&Q8W;$6QF!9hG%dOoO^1zjdD|LNklA55tX5>cC_;tC zhdTq8K5UteMBQB+}!KG`Ct%nnjpohZJv|2p^(A5sm%!YT=*)W8j z87a(drJBn0VGG+_c&LOQXWV~LrG9w8ek!9)HH{|*ajq@JhEft5#%?Gxq{|kCDsdml z6e5&0B;7l0!l|&QB zUh_nh#pn##(jmmCuj{tFJncEDJF#E3%BZG`28{{WyPiULx zc%p1lQ7evH|H~ahF-3iQJf9>Annj*(eDQNlI~GR$VCBE@(0fY8}7 zf{$24RR;(VU?rTM#Q${%0~!0sbC@!GjD;*K#27b9 z)omS&(BL+d*P#5`NO#pLQI_0Jt?xwkro60;=+F$xo*(iO$^gwaHF8br9$uq(sAOL2Z3FEi5=4+{qW~_;0dwHyWj6G-BmGgYKQ!I6psaBAiW{ZyC-GOCWRAT2|pXRmfvU1 z$n9d4e#YTdBG{V2!p^FRja??z#vzcp&KY3flX9%N#Y(CGIy&;fp$?s};t9`gyf;<+ z*^)WzX;ET_J)JI>eL_pK zDkV0p=8|Ck(dJsqglFI}asej5_c5TPh-O^--hL|o9-Td#B|C_J1}?#n3XdyU+&YmJ z1QmCJ)`6fgGiTxTyr>5*xs>_}7;#~>o=BV151Yzw*}7!^k+&=?v(6{2T4sD$nm5(u zXfT{|C>YKjf^F0@qu*zSz7rk6YUMbs(a?IvYIV1Pdi7|*)k6jMEFbNwof%D@nI6wJ z)Sp7BlgrdWhrI{-?)duzF9`R zG%=Lysn-xriZdS+T;myKC4-RyJD3$U0EAm%PM)#j@>$10R=hLV)q}Jdd$Fn-+ruRm z!kbx7wkB|hwkCig-!!o*L@r?svrL*A8{=BbNCbvMiLoX%i|5z*g*B_|f^BpF4Xk1} z)vHEfyJ`rw2q!Sgm14ZC5|7=zQAoBYL*V`@}{m-#>PiaiA!8@d{_~b`CN@}?6C124e40*&1eAj za>aEbv!mdc9R`P#6pY5&dI|Cslgnsyv{<7NHMSkqj56fiW@Fh_O>UFj#yYr3teKBy z+<0E>t#G`?PZtXC44HgpdX@$4%0wJ^`)v*Bndys(;-}xu9H&-15lwvSxeC6blcKGQ zV^)GGh3sO{GtbIb%{*b)R0l!PaEKD9&bU~i*35@v3ug7^xX2!n2`&(#O1C{Z2DG;E zVS{IX2~{>8`=shv1EOYg4$zJ;8;4_0#^GS?gEEs>ULqVlT@Wi|Pn9?yOyY24L~^@* zedX{l(6D))k~|Tz1FtowlRWl>hY3{5_%EH;u_t4SAcZ5FRPi1Di5W@De^_6oS_l*smWjK# zKnehsgwBwgwgXQmlB?tbvB*4%Ga&aC!;{4DBxzu3Y_vomYK+!Gjy4GCsX7*X3CfwI ztAgNLQ;?}QtE>u|a#l2(ZXEB_O)t+(pKJ~zdRlPp5SnZ^iM70Jjj z&41}&ZYRbAQ6lvX+#>bfp;Vv%e3>S%p9iA;GNTE=gzHsP3?(LRGWZL74fY=e_MPIF zIg>;Gi1>U^?k}mp14j-+M%rH;o<=YDkQR4l=G$P(qC-0;F}uXp@%LZ~}3Q zTn`2IgGL|0hfa*&jfh6fqs7&b=9YEfH$XG>iLB{ljt7>6mSKGCprY>bpk=F< zE)KO!k$wU#8?VGoX|kezD5U^B+f89>c{eQ}4)t5M+8HSs`D@j9%g_shSVf3!>w}y& z+*76a>x}6Ea;nJyX%M!ml8O!VgDLY14Xg6!&kKG`X_HxC=K91TFhgJ1Ck9|{%-otZ zbG{q}GrjC5Fj!=A!H0|nW^>*E%vxOrX3ez*YgTK^%Ab|M43HWyLt*LtFjQ@VhZ79U zR)mZOX5(Z5b3OpGQF?FLvNBS@%->-!pBXV-Y;>I8^4Ada0h!pW42-34Vphmtw}*@J z%iNTfKUi;zS6bWReW~3HNY^RHdH{2hM(CgpiF$o%Ve434FoB(-phEq zsxz!E76yaXsxWeoFz7-$rL(AGdhCXlC4EYD-p*9ZXIiX1L6`NU-fDpm!;Az6fF-OY zK|)I27g7`zEv{E~ouYWlSaWmgfp~)p5D^#J3V(Gcvp!$GG^5>TrcWbfDc8}W91%D> zpHvd;#B3h!`~i4#zU_`i*u~0*do58oiv_c1piG4`E*9fxXeh~~$>_gh6jLYUPM}>jX*RXE$A6GHE9}QbhSb9LG zqXfiQx6xMH<|wX8sUC;nSUnQIo~Rz7pFzpzUVOzQ$%^psG#B}!&beONjM&Nu zaj7k*HfdX9ZF)s}%EB^m-6UvwM38-~9x|y7WkO4O^fr_UqmJ5W@n{D-9;#A}Lzz&b zjlk~i1lHl0^0Jx2wl~r%ZZ`) zH}<)C?%1dlF9N2Y^`z|z;Y$*LwgVPc)i&wFUXXElL6kSV0ck6L0;^0^w^@KhN34Q9 zXAZc4F+u-Cp>RM^V~WeQu3wFi$UPREkJXkb{z1oRcWB3C!)N)FudLcn%cc}wTJPL| zX`k3gFmn8XLN{xFXZ`wn5ul+ok!|l8@A36v;FL-3B+fv?bZ+6<7 zp#7F-16Mp5GjJA?m*yIdU$czh1Y>4n6}@E4IH#PclPf$rpDUL0rpV_KKT(Q`8>NP{ zHjx`npk`jFo@1$c-K|&agJr&6uh)z4*#?2IcMU6ySPkR{gB2FNr}ZLi=2_>^^n5+f zJK}SX=c}}M7y=V~m653jP(t6*(N$yg+bMUYTIu*&J0h9D-tvM|F=Z4k?8aF;lyVsT zMFeX4u{6|=O9$PEBuTwEpH7JB6P<+GW0P|tjE2yOaKElCgCU8U#}RGzM^)wYT$H@! zYeONfwDU>nClYS#XA95X`_?OsJNH0fNoZAc0oIn^u9ApL+&{`33>9uNpUBOFwxk3; zHa*Kz-m|`G$t@%h2iw23U&LvNGo)G3juD5jVK9URprHv_*jnxZVewKo@Mvbf+R?m> z%($}$vF^%iQQe{&v2GC#9t9pz4xesG?!jkURcHcY3x=dxgodCJ26C2$2+SKYi^{=L zIe^DvjvmU?*O9A%Vn~^8swQwms;2Q?1S7}cz*o(a)`vb;#$AklKU-28_gSe2vb!hV`> zN2bj+OUQN0gHDrH0Vu5hcQdmPS_>%id&YY|JyEEB(SGczu}A`YC_9b*gLIg3D#gw& zzJ;6^`vH&`4ed2C5jj$c7T>W+Lr_v$wUuat^pQWyIG}_>_e_L)9>fDPDgQVvUSao{ zIk5#|+hF^g3H~eD&e%Gn68M3de;ce_K3Mf(jPB5Qm z)6sVN06fNRNA!v zI8_R4PE39wbkA^GhXV>cayamnCqYTO=(`0EfFYfuC_PGm!-4U*58Fd_L)gTe^t&ny z*I5Tnf;|rucTOUOlhCx?xxd}aaSCdBT=pc~|6SHn?0wk()v0D-vDX=2Q2ZAQouyR| z8siAFtc9N#PS^Qz-QH=WqG~N8xflV-mv=7X43qCf^!UW5zIp54U3S~AoJ07n4mvUk z@jKaiT048Yiejr(9j>v1snXA8d-@la?h03Zl|ag0ohrXXuw(j#jH88Utsx@vg>KX> zYaR~)WmiH+gi2(R4PmEh+jKA+UZ%cV_Fykkr7`-N<5&^{w| zl9~8yFLUSFDes0lsGiA+Dli8q&!h@8RXF+dDkO>G;^8iCO;z<6mwg2VUq*Ae-Go)Z z+Z|`FhwevLUlqJrc zhqlWAA{Z@mQ*vO)oSa3)z&9S2JF0+>6;nPoBqQ;9Q7|kr(gIxOje?I99f$ zJ=E3mY(%y(8=q-evFC+MibdAUQSO(|bEcUMJ+~uT!Wm8S+|aJdi0r=knoU)t1x0bC z+vas78%5JRB z1L1tZOlc>ylw<)(R=lzPAJhJsi)*C0Sz5X>^SGVbxX_XX@tI3Y1qlP45?jK2bTCa??;Mg+-k>9~4YfYE6;W}Ab#JuErVPHNG0NlQOL1^vqS zj;4e;rlKjTA~b_VB+)vZemN_Lo9?BN8pln+oH)pEK`pb1qK7a#6{oK@K4spU?`??SxlA?5*-3F}?uEL+rH+7ImVht4z8D>E}C zki-g)owFyjPoNl_>rW+`V|oIdiMnYyd8QCw{is3KQ4ydg66rk2PLeIZ2?KjF}b3V|%-W zr{xuHqG~_C?#x$mnb8Y|{mQ&cn0XpHyt7uRTvO0RX}CI>-U4i5j@rdbb8=z7TIkbm+>-3HKdhnoxaH`e&*U z1|L50jh_J(#NMAQ4n%rtxu>!Ikx4Xw$KG+!yXiQ`NI<*C-fvCMkc3 z5I8IZ#NH>Hxc6Mr&z88?`gKI2wBkn1HQVQ%YazsPTD(3*~Q5<+Hx%r)182dU`hD~e5R?-p8D$~T<3?FW4RXD<;DkWRYL}@V8#QJv+~W< zY5;CoH?GcXM^#6{H@;;j*G<5;3K%E1N3RR}|7Hrb=P&d};vg|bNoj#%U}?CWVv9mp z2&`H519uqvVfe0w^u72UOs7KaVq&gokKBCMrVj@Yi)7)hN0MFFK3fx6_|YTD&yCLB zBkLlo)J8(n>~F{(Zq#cdeXx0a*~e*-v3U+R-902m+c{K~p!>$9;o=05%i8^7)XXX+ zL-|{QS>pRTrn~t26k@6cuTp&?U<(znL=wOrD{iozKkvf;;pXqzmGdBc3hPdNXq7KpAx zNtbe?N>a?))b~i#vGErcdvjP_i#E#6rOk!(YXlvhP;TaZsg}SMHIYwuNWaUM-FZD0 z>6nG*x=QJ7eL2AS)SZJ*_4u=LVjJq?*l;r3CALhD*Z}~Ss_hrs4$~m&R=Mnk z{dWJt+l{5a3Arx+2%g57gPT)%%}Nn|0PSAN4AKGPDA3F4365g3KW&sw&eBkUFZvT2 zHaKnN!)mbs=n>V(m~8%VsP8XleGOTK3!ae*D}SQGIe(%;xnxld3O&RbJ)yFrGZ16` zl(M5y8T&u|)P9^r6e$t%kPFbCE7h4Cq&Y4jGb2$g&zu^0?d#-13Tu zxs1&KK61G`8FMGj-KI~=TECX?zn2&?XXPuoB6IG<)6e?%?#}^nI4=kX;mpbQiGDf? zi=M@NmcAFLMa?f$Bl*&tHtl8tH0=LyoG=FHiLC~yakzLBQcJm$BV5r^F{K#;UAthg zq0E3g=ns)|QW{&k{2#K~HQJ+3YAXbhcDP+w_-Ua6SS=71xu#*Qkg#MsAm8}^M@(k& z2-_BJlU+sQ9G7Jc?h1aBw^o{eufP!FmIivTU`)3jHR`PVsAV^mhJ9s`0|j9H%~^;b+-}u* z5hcYNiUnrW9!Fj#QH5`l{zZL`CW0isvoMiR_!Hl?CG!d;VND`zYA&?MjAg5`;yboG z|HJ+qN|A*9$ebA%;nC{h-f!8@A+7y%Q0K8E!<080R*`Tjj~r-X69{02Z~msIHxnVV>2zXR^;)t+}{-YT>JDaq=saJkSE*s{U@e!#=}w z8nUD5?;>3(}%Q;)BE@g>E(T*!TG8Z42Ma|riVj*pNyP<2a&%0mZk4Z_lFVFwCIj0G3Cg*0 zG-V7Kn0$SJfT8m&_NsdbHxp-+RiC^m+oQ!xX0w1*b0MFG^ve z)wo6e5Jo!nP=?~)({%juaOf*07N+6;ujrU5n5pvNpe2WU{0FI~mLXDH1Q+myY^&Dn z)wV*=1+$WInuRP1EupXW+JW+1?gEnTp@tzh3#zs!p+D4QP$9}5`b24+iKSYLnFAF; z;un8NQC0_Q6I`Te&=90$-7zrLEbf9T!x9B;&rfNi3t9aNYg(&=q3Hl8=Gt)GPt)?l z2sGyzMa>rDKx;uP9U89smIAHv9gtcBLV3+Zw}A^F7(m9_Py_`d4_eevnm?H+zuzhD zN--q$qyDr+k0d>!RE965;=Pl!gJuy%aU<*pKPBv{m~;jEX<2~wceC~BAdpU_x$36s zxB`!{N}acs&|NvY@``7YHgNMCes{m*KhLIA1_@FSACxB?nUSM+>p8E5VSxK)9-tNz zql%-6A;pm>59KTj5Nu`mfZ-kR2c=-szN;wc#+er{Hcdph(vgDg)R;exa4-|hj0Q@H zZVE-y>@h{*8L~Mg@NKqjbJHKhMl1rmyI_gQPhQF4tzIRY3g{HBiFJvXA-VTcm_D2) zwvg;k0iR$MbrhgfGzw~V-kzZq`N~wR3lu4S)V2UwT0Q!&Sr)jc`1*a7-|AUfF=OZy3i=Pyy{0> z2}(5xwIp;qQ6{9P(x(URl}Yu)A%0sOK+%OqbOdFHpcv|iwg(253pC+d20-ft z=L{Iw(mqe5%SiUrWCp`-NLsoeDo*2qOCFd%^K6t z<#iUW{SW_!)|E+!>-g_yAF^st)rlG_ot<7)D9QlHd=el}jFHbYTNoaIDA2cHXacb9 zo&vQ&G5tNr5`d(_6^G&Cm_Zq`7wIbSX5yKH*RWitVo#XfHkjaKQ4Eph31(BcB9nx$ zk!G!BFk!2Ia$4xgDnpoyuqOf|+!rDC-qb`N9g;}H(tYXHXQl~YdO*}tGyNbd#J30D zq*g!(|53X28L43<5V|Dn`=PyKj@Pobl>4ooTGLQo63XAJEqSGaG-t}@8yg4w;`f-9r(q z-9P=W} zYbr|h!wU5#%~kZ1qm*`Xh|)Ul>$qvLLN!g=!&d{2oX!wfBAfZ)?JPUPIl#s%Hb8KvUb^e%d3b8?ScY!>jG}`IW$(kOTETfm<;FA$LPG)G355yJ`IkK@rG}!mbJJ_@Z4YWnQ<4~Z41I8+A zOW{f9_z9R~bEYJog1~|>-cRExJos%Lwzm&o?tkDZ+}{6?_1RJAFij44OiCWXj5b@# zP&T96g*eY_FMc#!=aR zVFRvmsD8WIBXo3kutQ+GwLL=BgnjH0>>^C!cXV78u=gPSYDe3QNz&fn3U#q*&=)yz zx}h<1M#y663L!<1R?u8DX&{!{aVuHa;;~OijWQOe>qk=-zm=aI77YQI>JHbkX}WqeJ;1Z%XYN7ykF!(1FkF7q^v^$~W8# z>~W)I*FT!F;L+<~w}%G4Y5LJLPH7?W;Z;1EK2Z8Gt%KL9@!O4@Owa2fyjHY@&Z>RARr`8X`}>Cv_~#x4&?!w7Z#cY)xkppQ8y?%>uFArR5oY1_L~wgdkQ%P+ zwO(0NK5!wk>k%OI(j%-)kPwTVO=~FIZszc&FKK^375o+BcmCipjki3ADLD3}n~acY zda9rBptZ#?v4Zp*WeCS~a}F9~zJ= z?-LDe3_~5=;Y_T<)?a*BS3f2=hlBq+EkBSGf%Xwi{L1~k%j=kVEOi{QHxf+sG2tYL z$he58`bZFZ<#AnwV#aV;6N2n(GmFyZvDHYe;s7GvR#GPTK-FJrKg#T1sas#d5wri8 z;1o2<*e7W~wSwu$#Nz?}BRQV&$D>+~&puY%c)IDi9~0mZdmxg*#T4$jQ25GNA-1Oh zUzx2yMNJtcr-!FA`%#%@iZrS9N#>}i%|w)r^o)omSpa-|dJz>)X8p&IASU_{DC(^v zTwMN2v|nx+Ebr)`W4m*<+wi2)w<>5f1tkA@t_ne#bHe5KXKTi!b0cW;UNGGjPp(lC zQD`hhSUXB9@Xc}bEkQy#SK2(#{lx+I`!`%NZx6L0WM?(_Y6;ne;dsfR8Mn{tf8k!p zj;s_qS+HVT^xV5Nx?5q|zEdWCK5IX4xg*?SW(G9Z$@2l{%V}AF$eZ~id=_D;b!P?;0vCV$0RAw}jq(B=lfqgJ zqoMSrHx`yqSsNw{C0l_@@I6o$s_axc!846lX?&(tMXQkH;X)?uDPqZ0se3o?;BHwN zPGyahsy5n}(PQK4bA|bnw8|h~Tcmkuwb9!O>GJT|yHo67*o;476M-t{D`~gYym8t( zZJvqzM^+lBav@MI|LrX7&|R;bo_by87F?7YbOfvd%d0vM?H5eP8K5!ntexh0o>*9y zJbdiQUC5CTUk0(}#uOeca!f_N#LFXxxi;E4cL5gj7c%OT6}*n(xcEp0mVqxrZBj|S zp+BkqWaZtn=qvyU3g-3nT3=Zq`rc&~TOO&4%*w`s5$B<^5G+rbj0{Lgc+Zo85pJ@v zBW7GNRs(qyWoboDQ;fXIXJaYe^qXrfHdA3*9!&*m)H0x`Maahl12x{4ce4h_*~5U} zVb9qQ`F$)!*l(1_=O=CcjPS7FKF9LppD!(~Gd|Pa@`N!{Kvq~#ETsddr4*Iapp+C! zQHAvTPmy*aWm__6$R91-2G*p)8h-RHwO64wnr>i*r){BY`Kh$*;W)t^RgPi8DOG2V zNB_+%kWDFQAg*F8&o=@WDt%iU$TS0!Jx}f(qLg-oABO$#T&_BypFkI*80~|uS@{Fb zqMR!rrR6_%nhL?Y@fyF^oNUxszI#HyQ+8Wc%wq~al#YMa^g=HDgBKKwgBNS`=1lkL zWTUOj(aK`D{XxaKl~O6Q29xjy7R1y>BlI_?aSUQ)G_2>txK?bxQ{bO=4tv+ph{PP# z2KBum}z z{!vTUD;n)&!Y*S@blz7{L7&AV0XhQ15$GB~|40CJ#}Ew1;mc0MO>wn>8T$b&;czay6?oJe!m0w4@j}^#201)m^x2vV?>dYm$>|T6v7{6E* zYLN?UjD@TKM`kwGW~G#=t>H#XEPt5l$PzP$+~@MxV0qJZU($3(t6A=a=!L&GkrtY) z-4lMf&xdH~HG=c?vB`kLB0g621o+YGK*>F3x9`w~$Pj96bL^_xlo3N;!*(N!@_6{e zzaji@%9tQT{`Ywt!3&)W@VnRC%WjC;7V|}GTS(2~roAG)qK3HK>6zY*NM9fJ&<7$(6b|Icj0ts%ln!MwU)l0ZiUYTw|if|^F7}CmA8iYAlE3_j{nPETmF>{4(cTK~oq;j?jYvT_r znN5zD-a%`#n>}Z#x8sdVOI4MA_^RimuiG4}7P#s5?l`eHKO%?(_z9h7OzgA*`zQ$* z=I!iU77kD)%^Cn%JOL<%-T&xm?QMbp!|G-XSvJ{vGCZ4}HDGuoznt=7<9~K~?6KL} zHSINP+Q-KK<;Nb|YPHuKdu(5o%d`J)wmf##>a}b1zIN@}W0InL??m~YiK%0Xi0{vx zUh7Hmz1));597cEXYFB%kWSDbf#fm`gWpT_TmJLx)EW)eQd^7VkM&;uXm)CKQU24c z#QPLCJo%=RJMdq5S4Y>l#PTs&iHb;s=igA}_EDb{oygm3S}J!Xzd4rUp{FKYl-#b>0L>6r9G4Kjpl?lSD_qh}vEeeW7V zPqp3-H+g>R0yTF+9#O{*wapM*K|+V91OMo&^Bm!IcceI@~&ATG)M=`OXMQ2_%^q5glF%K0-}w;ED+`P*8gD;ziiuEz)V0I(^4K#R&xd zB|M8hj6v2!QtEU_ir>$%_S?yl{Txilk58h%`~N;Inw%3*c_BNP%@fX(!W^oVGqIf@*@?!z z?^C6=`M+Y1J(N9(?Ru=VRy zE|&kwP5|T;7d*=onnYX%wB~Ri06-IsX}sz1fxZ2-M_}2;cJIyv4{vKf%6UK0Li1*b zz6}_()qCx8P<9AiJNyU_3x4k5#}~n;p9DiAYc^*&nC&yn`ASm-_PpxDRd$xRBe;eC znbk0=KE(?|Uztz7-pp5Fih<=M5NDED4+2gae)2td3DA`u++*W}ru&zB{0l4P z@Gt-5Uy$AUU$laXBGD?aU7+|ydeiTs4fftngrQhs*jihVL!G1oFK^=Zi;z<2-m}Hq zK|cB%CTZ|}EwG>kr5vz+P*Vw*2;%wCG_LRio_ zJrnO;a&Gw7bo(g@u?jd#MNgskIyqzCpG|XLoG6Mnq^jO{ZpHecOXXkS|4MUjZ_}J= zCIr#=bJEKws?7%1b_69@2IkI2pl<7f9B%8(JWa?R{(tt~Kg_P9yz@Li?(N&%w_7?b z%SKovoO{RYHjiZBnHF)8DSja zV3M>X69kw<0SAfj!yTg}0vtyH2MmZgLDY ziQa%PXZGN8?pS0NNcaS^%X?Xp<|+h?-%UG)Or_n5D5ZMGIf_iCQCo-kGc)@i)HlLe z*~?LOv?VO5e)k-xiCyRysAXOj&kJEJpHe=vB;`}fKL5QVB|e8nst0+?E21PqGu0#U z_q*};wZa$geX$ zQAKK!X_eG*kHK2X=y<>X;~`pb#voVsKEkqrx^UaKwSGWLfVLngH--2edbO$lG`$dt zh6?Pl_f^NI36uT)GgvC{OWH@p4BrlUbcBQcqMG>oP5-?=Wzb|( zE9*&r04=|DC>hZI&mIbTcAUW{KzDC<94`irKh|Mjqf>o>;4s;XT03WtLk zH`tX~e?rB7T(0Rrr5HFA1acY05r-K)pkiTiO`hgvh3cV!SQs1~VL(N%ioNm9`05}0 z$_PA?7Vk>~uYX6m!N3fk&_#cuF0KB_KaVOx@~l=<$R4PQ@70AvbFbHM7#Wr{w}jF8 zH^N|EY#X5dN}U%+35D$HX-B*kd`2j#$V-dMxQf`@yTr4?hKQV>&P&205&@Swy@*@( zk(<)S9agAICi$5BW%iN~wI)}L<}jf=r$;NYE!4?k3VbPxtVc%iKsRU+P6$Z*X9-{^ zr?^|2Mob1MGPD_-hZQ9#+2||Q(+?~s#(UYu{trVY;k5)NowVHiiH*X@i#GPpfmTop zac2`G83gz31E}c&M%tc}*QN3s%F`m>fcm`<`$=<}JK$v4tT|>NHhc-yB9t2mO$3;; zjzQ?J)H3sls5xPH%4`5@)iWgi0M4B#4(X`dV4{lH#L2m|W&eFzP+*9o?9R2jk#PW4 ztxVfYfN>-$Xa_TuMT?AxI6&KsuBa`KM|;)H|ExHuVrMo;-5o`}Q^RIIU`F!A#X$?B zyT-~}uxqkNx1~HTW(cefVt3(SKZ55Vmac}Oz%VNhxCk?P3HC-1hM5=8MJZ5xU@CAX z-3ls)&3g?h?fpbddP_G08%{%!bHD8N?@#MfN{)qDnVPC&u(>tz{nLOXEhl-%dJu%E z9W0(pDEQiQ5#~oSN=E_K@@p%=noOowdU|&F;m#TNpC1CQy=5hTfwruKC|yKxZ#*`) zw<0#zfxO&Y?JX;%=QXBrG{7h12|MN~&KgGdoltisH`2!bnR-McgbN2KkAtt@?k;STqdhjz>jo;eFFwk?o)=^oh|KrX{tuaD ze0Yy7gI{L#<8`Ep} zZ#zp|&_1Mdl%1&))e&+yj_lRt`f)t1Z{caMhWFkW@oMJHw)fP8qUfiq^<;JX+_J;; zNqt#&LB6bwSUPoRc*X_!VIH#8ZZlbT_i%lj0c*Bfu3s9S28Q#qYagecGrrGyZotoZ zw503AVizwPAQ%Vil&(6CFD*HCbE?W&-6JA1XAC*Ku7im1H5bd+{T!3)^kLHMR>u`W zsR^yrz;N0m%j6HLX1zxbb3Pscz9>m)^D`en`;sP9_xN7!S$CA`~OPKe_#=K~DL zmy?MB%m9|SUe4i%Xz8PfP2EbehR6UU^OrTeo+q%kFia6{8Ia{Ef{rw0ty#m}!|}^P zp!FqRBjSFRgQbG<`87U3`Gm15-6KArz!IpQYTtL*AHA`w zU*>U=zhq0i*@T))C?f+N8&rbJo&g|9^*Iyd>JFrUwvbq{v-Vc)qQ1n3Y^Qq38)fwe z3Ce|l@@MN)iLbPOtt~Eu4@zKOx?VqW-s3vKqyQAz&QNDeWj`^SL61~aX55{LOV0(R zLP9}7uM`DE=`P6ff?TJXfAmo*7~F#-HrW{6^ESHW1(NosedgmTBOROjKm?guF=;tr zg8@VR^4O5RYc;el4KpSnhz2UytW$_+CK_5sW>N9&UC*G<$-1nMADv?baa_R<=w?G> z*?lLh8PKq)nz`94kWCbM=mifGN`>I8AkR9>-EJOr7f9lhWB0hq&k_ z5_(wdk#m{fe}I6VXdh=(fB#+W<1FbLvu9BWC`T!FqEbBXRI3dn+d8Y3C#xeIep)Y@=q3H2{q=+N3$3D*|B?O3@{nmHvY#WiM~ij< zbSc*#LE7*-#z(@@$GC7u7NQ-{v;pkJeVUtywB-!R$YTKUs|CN7oDh0BS^Q}xQ(Ebn zR=Q}VRRIj(>B<-4WbeZ#d+hy!A|R`zx{asCv@>g-nkn`_rKG1toCyTTnZXmw0hMIK zWU(*z1jp)qrhf7#g`S9BJmlz8EJk{eg?%fb9?2mjgsWl?XHjs*L22 zn^lFiPT+b&!ESL+dTK#U{hDiBq_*U&$mFcRV5yD+0gU+7T&HkgXK*|i&Wc*=kfM^R`Vc~VwfMig zJUcs0{NM6{mGOVe?>{B}Z}~&tcl;j>%O-O)RV)6lm93>xq8%nGfl$Z)sqs4gPpz&R z|Mwpvbs(G5>MO|ZfOv+iK9milqs5WP8JNZ4>T$?JR$g2hkLJ&+9-zsC>0R!Gi^wc3{i$2M82=I*4on1#w(d z?eM^lWWiH`F9=TsWQ$zo;Mk0Ve}Z<)S%@N8-D*ROpcZ+9zbSi$4)#r|;Y3e8b8dbLh%c}uHZdGA>K4mGzx z*I5y^vR1@`-5D6#>r(sQU&n%xi#@w~EEuIgU=s_*V_-ZaCE+`K7^;M#xBY(_3-;&_ zBe$MRELeaKT5e*&Zqp%$UfvDon}X+C?l z+;A9Y&ks&G2zM?;amX`%Rp5>o%bXFISs|CG5ZLj_VkPtRjxS-Sv-(IiTH9lKxYI$3 z)f57jqIk#8&u->dfKcsnAuGC$Q%?GKDYC*RBtCIuMeTJ0d3FiOsfV>W7Hl!(^5mt9 z6aQ~=VXxjN!(OrV;GUStS&9SBXkqaNt-EUU1(@f+umLu!&S6mWMX$Jrxngo=Y?>N z(^g10hfb4F7zSNnDl{I3!TGle!^m1;7$5uLXaa zd8H{NASb$(^m=fp=n0{35vRVnn3p7F_BG& zLzouXyFmY{o2@J8NpbU;bSJI;=@^1=Yn4{Jj|q=p-cj9@t9E`8cb5DjLU}+2C}#zq z2u+-z$~KE8`2vH>A#i9E9|p&55_Lg}%c1sIUjjg1;?2n5C>)Y}Wk)1)Rcr(fpJ1Ix zt2=(+V7<}9wQ{^s;;O+k_4@tQ@;CnRu{50DEXeQ6kOd4B$&*Ur(BM3IMV$1id)+sr z*#B8MT$&N&FkF9A{B~FNX!99tzz3h!2fFQrco-(BDqek-)_xnuFrv0U6y)wJ5=z(X zb*j&w0*pLa5tvN?!*NqBU^YD&U`ixg1V-M!)#1Sf+aFGVMUR2^nE=k01P&t%qU-)W zAhf*LKpj(Zi<8Hdyx7STO8OI8{pvA6zp#T=<<||w_khLL@oaY#4JR&I8rJ8toT#pB z&Tm0H$h*{k4{fuCFwj-=VDXqgKk25|%;e%3+k{rcg_Z zh2!BWEe@tfDKu7n>p`npxokB41r#CIPD-Fo@cifoFNZ&nrvppG^EZoDL@17&bUjkw zq55#>e*pVw@+y=e?WiOqpt{3y4u?!c35~mq2TQRfZFcFuSMy=)oiP~=z{ZVW!NKYkPA7Q+*D{4`AvA&8?;@+0ZLI}5Yg6ZP@WktV~kGfN~WN*D*$_)NcAj}S!* zq*j)^5ngYAPLF*t)m#-CdMKodMW0^@5>=p69S_;!9NjL|sU8j)I-x7A{n>qCvN2PwGWgiqf38%-IAp>#)Chv&tQ3%^zrGFx%AJQEfdg66YZ(=e$bnbgxO zMuK&@5Ua~%kr=VgKv-hAA?)<3K5;bV?r*iBz^Lj^>qiBea*TBS=&-5k)Ab`~>GAe6 zeng}u)#vIrUB5Y6KRUvzda!=%;mhabT|W3LWo=Yfa2Ewu@__#@)F$8>hz{1@1`s}4 zKL!x~sD9)w5U61fL~&`~p`!bLnB~kmO!R$4{{_r11ESav6sMuwzOEGiz?n~E=kF46 zRv~Nza@Cu+LmqQINc(?oa6PJGrmiCOOg1SVD*Df%DSi0-0V8W0At}C6nCl^{*mg4h zVRo7z(s%!mL#&W?8ruAEgGlfCAxO!K!_cb;ItGz`R{3bK)q_YM;;oj!s&9m5s_(?# zUls<*e?$CzOZ>e({_c&x?~K29`ZorVK06>)BD?t8oW3%kUt#z`w$!F}$0NI69vLn+7Bm(wXNw#|trg;sV)_wJa(BunxjW^P+?~==odBfXyzGbssC2)V z$A3La{6!$`0clTb{8@ETadU@VX%`m%WjFym6P~+Rh^Zb?RrP$10TvLV15|+LGoA3^ zls|;wLAoYA_|GXhz+~mVtc9?!&s@gTs*`zup!zu05g$dUFI@=;6)_nI zW&{vGB4y4oqa~8VAR)hHg;Eo0s(8*Yh$WeJK(8NAp`Zht@4*_xLrIl#x@gA?<~By! zrIFF9w|@?9#7KFuA&i5Ll#)paYr!w-38WxpajPT&0J&`O(Y1Z;DX;GZ%O&bu-))&H z^l~8!gxq-tZx%20$!bbaUC71fk}c>T-@WT|x~w%s7OJT`Q#D_FX$q=AWihsTJm%xw zG2tZhakqX>@r%fO-~!4!0b9%Vuhu+<=^u8ZvhM<9N?%ue2Ng`?bb#R+0Ww*<{%OEq zw~z;luheh*kwQiUnf_yv{dTTN5-r;+foS}<5t;MZ9Y7%OQ!PK94dh@RpBgI5Y;`_m z_~bQWA{qs}CBA|2Ag7a^a7Q2|Xk8b&RQG>^T@!RxJt8dv$i=0teAx>+V%?t)vZj~^ z++VqbEE0$nVJRAcoM6KKVcc zGbQ5@hYC!l%e&}(nX1e9M%7W`eHcUimVE;7Yn}e$X1L?P^HtO{ukD@P_q8J$X#Rh- z)^`LG1CX8yj;j5uC`j#Bybx$lESQp{^9|Lv%y-N za%|ELSn?6Z^z`|P4pCi1^vYB2S>=3*jcZSh^t3D*>&|nEpF!n+4|CF=KxM^TE}_6N zAAiu2p_qah06BOT$e^LKod0fR9|vn5mTlnOYq*(dwi1;P+dUNjGxe*j9?5 z?6z*#n`i5u1qAPQE>)@S@(14es*h=7#vR~r0&LIlmJ!(&_w7mm=#=dE!nH2v^)tdz zmpD{EVr8V3{J--`u1nj;*aTqV$skx`at71aHvk(Wd7;18vB%CmJQ4GA@OWa z4l<FyXdcm381vQTiStF>**K1gwUeJ|i@+-^3n9pPfxr24&$AkwxD@C81V zD1g6Rc*7V+{|SXp;pkEveNN5Mo=E>k7_!=#7w6N!yf>5!!@-BfWT~UE0i~%ZNtn7sjJSPUy6m?R3d1L=v0Y8J4kV$N5_)}fVvy3B>%3Gsr(@&e=^bQ#_ho!EI& zkkAH9p|4?8BpWI9@?G8j4MsAS{5aSwG+FmHV5ehXQ%4Op19B?ZRF)UVz&9|wZi!4TiIAS6MpgSp24ZFHX^w*KD z{!;f;K~bWwvqRROg)D`w)LD0hEK}jx{o_5t$a7s3w<~jyUl@EQ5>ZKE56c9p{_-r% znA`vcLI72z);^v$f=$3X)~vx`%Q(`u+nb!8usPX4EMRI_g|x;;sQ<@puQuVswgiKLn$2|TiMj?L9|r` z_2F;c*^|p7ukK;qu1`ApWTF0qrGdC@ar_f`N2*_WDg?3WYdKA-x2<^Xj>vu^f&I2q z^n(?)C=&ebr;5+fqpj-l>aW?z;F-+@o>P~wS4hmeW76Z_7@RH+jxJk-XA;V zJ#-95egI*yl|o-sAuWepVBc8vF+!z;Zlh@FVw0eV98d`Ws8R`PV zus9z4SJiJmUV*;~j;-qVRuu4{p^cBJxsPDGRL904HwJ2;j;Pe1s?-q!B_CP!g;T2> z;p~LI_=>(b;V+~Usz+A+f?xodkiR5jV3F%Q2+Fa%)?6Z-fkk)Cvaf%NSe9YPGeQTF@1ls*iEk1^9UTk6 z<>+`w_hW7HpLBOELF~DZ!vkyg=wC3+RzwJ7?VREOK?ih4;^-9vAP0;rJ^`P^A*ivV z3axJ63K#Mo?_I;H49+XdOX`wv)sY_lWujZ=FWUG#30&RTb`Ii*`09Y@iT>8T6nGmF224-k6Z{^hd=_FgA zid)zedQtRZV#j#)RDJi;VR5$#4!~cc%!1~m!2$UC`q2)+>P_`y@I(HSzQtg`n^{ft z|1TfIAPg~n%fRhHHU7Zcarvmg3L@vcq52%o$`J`Yf#2)^21 z1;e;%DH(S78D>on)Ut-#@to(;cr2Bxlp)TvOV`nwpjZE(A@og_rm}8?2fjZ>+rb24 z{&&oGi>sx3CI!PTr-bTeJIHK&@CTV|K^66`Th)?Y_u-zP6;8SQmGDT$fu~rK{eTzPg^ASES-ipJo zx;Y3P_4sillCZt96VOZbMLHpA)(Nf#?MJVA8mZ!4z6&q%P<8AP+;QLT6%S3uVJsn! zTO?!qf1ag1yQe+;N12(jVF=-7%xa#icK_ZE#-h4wl!nBZHT(ue z8*VYBgorSfhP>`{R995UUn$adosx+$-dBSw+M)(LZ3^#_cp_&$yHPGWebkK~DM;8r ziJsXF5T-$eysCWLyM&JPE>&nS-d8#MXcB(9G;%Q#75?ZN6g7YV(i~f@4=74k8V6w= zb}TqI2hr_*X?0A~az4>+4&q>cE3;%No*Uu<3j6#uFJblhd%tjg_HZiv79Y}H9yK~- zT5~)NrF47|0ID!sgc3=eE}ch0(RmK%(xm3NILQqTJ3o?sJ>@JrsetE^)C=++*40-b z?_u)TD*apX{Qve$deGmQ;y!oY~ihw`c2c~vp9fh;vjTvZluZfj1P25WNiy?cpj?+oeMm-oU z(%`gMkp?ci5owTT(tu9bZaAMUf;a3Wt!^+0U`uD%C&mw-mH8HIP^pQgyP9jmgLDJI z1V6&1DIglpHm-mK%2maYPzc^2Z$xt-33=6P9ZneGkbm*vAz7e2N>!roR zQ|*`i`_fp2(o(D^43Mo_O{ZILS$&}foiN-@2SFyUw%%#97 z>KyjF)e4DyL@h(1c+?x!M$$1RklhJeu7I(>u@#j4y1H z7LNuCeT6NKSt(yb;Ff5M_aE&L7T$Rk$ohE&Z831+vM#|bQs59!v~*9uUr&dVn4K3V z$ucN^@DB&tAmC&*n3c%~6o=A*Vu0)1I!W2GH^_3a6i8#I+XU8zxG~IeNp*(an_~k| z^fR2&6nxO-3vht&t+1BS7sQr>VY)djq3pA1TctH1(sG;{B;`V3oB1(COCJGXQ{f~c|ioK^}mwM8Vw`?*s^}LpjR{H8UqY2x2U%P)L?Z66?Q1aozn}~xM`di zn}7s4n%9&m64O__o$_ui(q}gKoJpRW-?&?TXrnIyJ>)E=OInIg${Cj8`>zj&oSOEu z;UplM@6a?XC1UG4;z;o^5QFdr zV%Yhz0H$^i-3V#dkjk~*e{i&z92_md^VWFa*nqVLbDu_#nWzoq<3~3jWrVDOZY)tboXHrT;h!&xPR#FD_L?!e+gR9byWD<>v<1qU8UxNbvw=n*YR!qet~ zMEryR35q=2aalKRwG$dV8X7D<%6vEO9X!lt(y)MowM3{vAT}^m3QfiCA(OIm6(s`B zb`K}^4m#DoPw5+tSk$ALX%XYa5xuD?1h z{Y8AOX{@X(`|3q|e!8x#dNr?OABf?oZvS*z4HeZCHj#3jjj_&PZr}uFcNMt`>Ho|I&s7GlEP%wn|qA~ z7+f2C(~h_)sot^yA8oEBkfi!`(uCQE$blt4fY9o9lv40u^-kwOT-67ZlDh=IFb?JS zaI*+!Pd1k%r-~W#Kx@5(Sij8|D6-&hfPV=8NMf>nHZMwsrsyV; zNh^cH-rnJKR0t<7`WaD6l|Vp=|3}V7$sFM;k^bU8_Q>kLD>p*3q13U9nh%a$bQSq~ z%E`UA??X$cpdL5BE+QQ^}i=!;meh8wkVOILr*?vG4sojN2ry+{j`` zagcLX`bV>Dijb1n?lLM?3IIS9Xds(pG4tFIG1U_@V0s0EBPkAKde2$j7h(+1CPSln z#e|EE7K1e1R$a)F%~86X?#Am51HgZm4JS7a+1<4LfCM?q-#{DNV2b1UWozP&0OqS5 zCEv)XJKz>apV2(fHGrYPTI)5(Qx3Qy1WbSnckKxf?;IY63BX%&_|bJ-S=xrOBrm#HNyJy0q(ryI(P}jozG6DvTY|zPFe#T zI&&S3VqaV9VdP2Q69F_^`KCT9%*hKKQHR7qnENnMk}E4^jJ*Scb$m@LMDWqVrltk0Um2&PwsBE~oV2)k+PYJ-F#F0tL`2B8a^2EtJAXjr z7Z^>JS$pZ0He(CipuroUX`oP>poYHwOPUlfHLXHm1a_07<$&ctcn~KKA5P_%2wc{K z>%gfd#^AIKn%=ZQvtbkmA|ibYNVg{(#DHOJ8DUsZ1X`okLPLN#E4iwHfnc$Qir>K> zK@aCZ<8U3_&8`tOK0Yn6#TN4hs$AF9bYN*PM->wXs6YudHbk!POowxgGN}`Hmvvs) zQGS}H1c(4bDV?SiJhr&#qYtwK#cQT@T{gWG3|auNw-j#nS~wFSp=L{14JTJa6uhPU zTGn5NSbDn`IzulA=7S1A6x|cW)r3S`(RNhuXjFsEI%^5F1@r{*Rho+j^6+5P2qt(w ziaRZ*Ai%bBw}a-KePpA(27jhCl!#mu7ZLzs5vQZ92|c`%V;f2#d;rIz>ToJQUQg|4rexB>SAl^+7F3`>IZ&SIW)ha)-> z)AVPBGeDaY9)_KmoK0yRj3qF_(HN2kQu;zaIkZ2D;V?%htCVvC8dbevK|sRXOE>n+ z*AMoB2Ua;G(&)+GfQO6<1sxN1&&9wj_cXTTyznCtDRc*aeO-z8&6hIL5!ELE7)Ai} zsW?#zoccXOcp27Rs~XX_^>AHJ@Fw;U$ny2Es-xC5HV}+x4nBw|-@>Q%Ti{v{&Gq+d zB?FFDIcWe0POGw5a-dw&Khjhflo2hmTB5blc7cd$wJj8R?1gFT$WT<_<)*%2)+d|A z7}wzJvhz&H_yRA0s99L`nGpH~T0l@Ujq|Gws~kz9AaKgKpzBp?kkTQ?c2t=HQ!?*} zCr@Ha0zm_FM-%9vr)5y&!zvIsIvhR z=JEi-DG=DX_IiNlH!&* zh(3S>9KQI*=8AC4U6mzQL~%D4NfNl-@RSHEm?R6ssm6HvY2S-Ad0=mocjBTeHHDzu z7EX9=&n~WHcCnG&98=}AlG4-DObG^~`3K?;Zsh%5%|?Y8kv!3bFPhDOfHCnrvD4`! zdM{AwkCQ~8!1o}e-Kb{Myf8Stn{NXe-vNXGL3vCA0Aja$pj40WG=bRRR1K`)8VA-Q zdTK8RKSYF_xM(mfv5lvg5d!7IeB;19DoFsH`NsZr2G8~`^h+yy8vGr*XsNjw=h)q& zw3Og*YFyn;wM;iTo^S}s-=-sujfo9Ec(qixL0}`JEeD`xI#|4xZpz|B&KJAp`u+cw zHX$U5C3jl#i;Fl{%r;bZh(%&}PwQav^^()bM$# z$|UFvSPzkNje;{H(`!~hAs8@%r-MLYGHe-UQCL!+Ofv+5O*3?sAEQdAj? zw3SmZzw-f9I^2CsG+GuhFH-y$P_a6{qDk3&O_Sp@yQWFNS`{4Dn84eLCh4)Qmc9^N z&eATH<#JNN|K-${jZ#Uphx`z#lmhLiPKO&Q5ho#7RHtNt8k-6ZUZ6lkRj{$*d{aVd z;0wAuz*tyeBt81N^Hzt=6~D$xjlW(-4SNnB=iLy|F^1XHnio4UqEsKe%ZrD2Aq9iL zYP|u;(3&QCFGLi>SeIiaV|-z91`weG@!xfkD&&ai{bxw)tkxaH=CYa)rVNdvPN zjN&roM`jk@UZ#Hf(kPN?MPaHkjkG@qT#Y{S7c~SWS3xH3si@G_30PDe!Bi1oeNMuh z5Vkq_qxRnhh7Rmi^F!WD7EK$+jU5FL(il<)i9!M&H3uDVyfcuBYq-GJgUVk=g;SgBPfnebJCjhG$WJ7JLm10{1Ln<8qe1mr(k9 zv(W;hxQH{$2l6!Y?IA=wU@$>|f|4v?HCu;i<7i{|xk<)%G!4}wfM}r~Az_TR4JQOk2UzHqDhoCl4@@L+-(P^^ zLH3@XHu#A?W6(^ykr1GVIcWFGDm|cSw5MH!3CnSYjz@;k^D3c@xrvoM>ENr0t}6*1 z#i}rjVPJ<-ju;u>X9ZAO3vwAKLAWdQA*B@~T7^Ch4frl6=-qJY!sL1t*k+8BQ}mE& zTvb+Kxiz}NSs+a?YQvofvQqn3ZPbPu+1f-V3f=%i&(a;;=-m8+IiYQ0m{+mbxyHFI|&=4Tn16 z#$kCk9V4*o_5jhVhW-AXX*gjj9uMhp5Qi|LQ7+X_NyaD@Zzd2Yq0Lo7!Rs++=vv-T zM>8`3Z;|KHW5LJ{BnsxYn`*h~M|(^O76Gb|9wvTSd_BL!8?m(;36bCF|7Djemnk-J z!(b-z50u15Df;GaZ%iU=1wOb@le4Lh43DV2X0h3z;3xu8<0j zQi4Uj%cicV1YAOT(cfYclV2Q##w|Zld<*AC@hi+X4VFhNQUR(rWXtT2-GMxWd@@4G zNWrJ}k0^|>{=vl4k%`CpM}FPEXf&Lre-c9Wl-E_Q(!T&`*VY)b@)iAyZ%yT6{fpg+ zD+Q3^;lE#+aB1d;lt zCQ$%(0!Ay?*9m)Agql=9gmNpj>`m-OP7QFq0eF>`C)H*IWEv{AQSdn2=)O1H7@h(* z-qLU*+7cDeCbx0f97*(vxsm-?4L64L<8tF;(@a7sT@8B%zsd#~LPDx&*p=~A^7rA? zHeJF&Of%lr(Deg!=#&@E_RiMaH7z}*64j-ROhhvqxS-q6*l`dVm^d#eVVO+H5i>SFf`5S;hw)acU*CmO1x2>Sq%go1}d$|kc5$JfhL%1rznVl zm6uO!p$>U3Atn_Q7^CnG2^D2w`k>>~h!U4=)aQ}Qn@OG6Sn#;mxr7-sK{U8`<*7y| zHNiBTp!-~kM3ZnCs5SEkYRx+VVJN7vGH9}8POc6$#cHVId}CFpw|w7FUnQtzYS+;~ zC+;@Xn&E0P)&Emjq+lPonSZf*8g?xy$&4osi$?;-oTQyi0Vzy*j-jkl3lTyBCIUeb z)T^QBN;XHl);0Gp(HYWHERQCa>XNo7VtZn9X)kJu74rGiPk4R9jvMOis)Y!F+L=&0 z%BL-4E(USkTFEwl`Cz3_aDZYkKyR9qs!NxkU=y#ipnzz%T_u*SL7(MY93xXB=%1zd zp*~yhN|<~*mOGVSMs&;+;(m?l2Th(U)1K}>WmQH2J9M!HvF1g+21?)=)hbx2DjHr> z0-3t;sDj?&gCmCwv%@e1A}NNzY(ly-NQ91v3dDT`eFZ8kPARCulL6#^0Scm(_#{!F zV6@s$9Hc-vntZQ@0t_Yj+c?D(6m$pt!Lho-ob>end&uRS$t&^qPmJd%)HYzM-~US5 zggY|L4VH(_#L7Lj1r*1vir%4KGG*5bnK=!IId1Mb?%kT>nyOcSf6Q}WKIh}H>8}VA zM~F-;DDLNw{xs%e+OTp|A$p@V1MU>Bo5PxCCRFcn4FH`o?+p#nfjIBIJ9k_hl|ulC zw8pb+uMeZ6p{3u~4?Jn=3`Mp0cMM#|6UG_%BmZA*{W+oGF*2s9(b8`eg>|LWnAbMg z92vet1>|(jvO5I&gHnATX8NuvI7{y5Fe-Ht=SK0C9&0Sh9umrbB5f8Nen!{riSOsL z`-wYZTEn`cTjIt)&TEBl@%GJ*FR;zF7TAVe-mBsO`DqGHy;$wMu*{G{*C~KfaKUDQ zvNhGqxsFgvog)xna_}gH&s)^#tG1W@jc8DqP+s)XF0f;V71lOB95CC3$&WE^9+0HE z4ktN>hxPj(>t=ld8yP_H$8a>I!y`y7p*$%?O`LSaG>r5ii4t<$2HL|Pn* znJ`jx4k-venD0CIP8`7XE_g-iH_Vj78yJKtX^TPmk@Rg*|HgFzg=AdeKBJ@zS#wl| zdx~3jQpZI@Z4zVn>n2yY2y9-Y*vF@9Vw0Odd)H00*2$h+6Nt+y?-!w~JxO8AL?10Et6zUf~Mz0|X-NA(W5h>^)1;VA~I{Qq5)% z4<~K3`k}CoH8M6tZ!CtI=S3!Pec$bSsa1mu?xmSYb}Vh6tpRqNv;(+c8dsBz1e6?> z-k8m=w^w(Icg~fa>!CD}vBFU_s7%H}TR!jFY6R9GPQ1Sn8>c3DtSi|tktlZbpIX0T z>P&38Un#kx|Mj$4iR+#NTUV6SnHvd4q*fs;qeTyV(;T=WWAf!1P7s+^jeO=vnkb4@ zTB4Y~2Fb*QW1gQ!M8q8n`aUUTVE@w;&HggY2HnubTx*{rK_Q*q(B;gXSPVXYa$d>G z$KvU1m~-fw?-b|Ywez(=6AoVUqFE+5t|`v<5p0~4iF-CIPkO zB&=yDDkf~k;&rF`Y9fD8r}}%H4*;Ql@IIZQlB#}Y$G7%G+J9iEe*=B~5Qc1`cWa58ehV%JE=h7ExWxG;e}Gi?>f#GuQa7Y}@F7 zQ!Y$Y?YhsDbd5sv`d`n|nHUOyIKt$Y1KN%gv@)_1$-u~l-T8E9yEZi;h(*{)!c3!y zO{tkRT5!AYkPDV*SZ!-1WgmL*Q4xnkI{Yt(H=jH_YgxqTV{+e&a9LVq~{+`=K(=i zu6jt5lM&vAZN~?&jDd^Il=(Fwbdj=Q8p6gy6;N2X(brmQMD)1^c|B>A=~!#hXn-G1 zheiW4G{iL&7n`=-N)sjjF|CDKM1!pmfJ_F8a3gY^(yOU*Lb%h6gWno|8hNP-0Rm%> zkTuNCOWw@#ofZn8i33AhUwSOABU^rhl~in^y613!#f3%(S>OrEWGV8Yznzr>N+J3% zM3%+c^AHuw461tdDOC$p8)25Jo&KAn776?5kvi5q79xms@a&aYDH_AaFoN*z^jh)?&~gs9hv1`|<~q3@33 zK8RvVp{$;-3b$C05x4S*gH~Zdi{y7mAPXae8Yo0j<9r9B?j;2lD|r<%jEHQI#DR|U zr7#Pt!^nnosqb0ExhT(je6S|Om zvXdg7lY%6k4y=_)1|yO*#>n8&iZLwYd2y4I*D^S(Wiaz4+bIkdG8pFrN=GtSTavtg zgy9q&A+{+JrLIenp4!fTkTE7W5Xirk7yCk-Q3#W)yJ6>DBLibk<-?0xhppuLACw9P zXPuu7Ys(%O1cX(_br=&A|GKB@VY^E@l8D0Gi-~=(POTnRAvx>n7z`?H^ne8SOLp{W z9JFkab54jyo1-UD;~*c(lFZ{T9okX6XRdfR+eXUHrGdcZvg?`z=rjJE;rt%KLlit{_KOD{6u9Axhf8=50KK_=;>7d0#E5A&~r*Ua(z6YfJ{=u9xD1y<1B^l>QAxx(DaXp4*sp=sE)x6*_zDUJ_ zVmZWyJhOrNdC+MskxR9P-Y#{@M(nWb9<~;`9lr=)*pG%FEGHwNs3pH zzflor4HN~;ZF>)=pc~bV6VYobSSeNpe$uCuJTJL6L78G-R9zVv2!AF)G?82^i;W$(T-b*UX)MqfmDYzBZOs8 zqK`yOabN0p{|uUCw=G_sU`f77;-_uy{(j)wVL&E?ACVbr@J?#R1&p#4nppujB@PW1 zQIvMi;#ldK;WVv-f8mkY5=sNC$q5xv?QP6)v#{b4r8UCndO9_saq^C~5Y|VZgL&+@ zxXJ2XI-(7>4b>b$KTB`0mmtSx9oV-G$KeGBR=8rC-v#Sp4A<8qWl z4Y1@nU7;qa>hb7ZMeymXL&5%#Lth?Ra+m~(*M%0Bh^tQO3h-}XxCGiDjp4YrrWp3k zfEHiIdO}`>5j-kp!DS&P0$)F0{GJ#?&Y4tm7jqr*L`h!%K^VsKlAT0LYT}#}AC!ly zI5rDFY4Ll|Me&|#{=BUxyNPz&B`24yMVYl;uKY248vKV);Ct!5B$gji^GiOQ-*t3_+8r zH@+V`fu<0?ikYE{tgYq?yo5YGrAC=6g(q%C_OSvyXasp81iZp-Mcx%s?=!XP%HvB- zyXr%&N_Mv3IfJ6Ky27dQ_c3V2M=Z07pQMXAr3{c_601R>J?dO$4UV-iY0XHV`0$%r zE8$Tk-tNWstoTW$6MRcvw^*L5Js_}<-CJACKp0cB7uGW!a>5sw1xOfZEX@3I zph?6D@!ZToFKmR?w4W7s+tJw^|3qUP!1arHIwdinTV#>off}NAZEYq6YEXIzt{6_4 z#MP7xOrQhMOu#ZE?_jN`PS z7s>zi*gfJ={<~~AVPlm2R6Ht8s5=#C;U*JuF?i@d(^KiKexzXcAmt@19GeRz$M9sk^~YzVutHoc?8>{Smz&_d zDtJ!iLT55dYhfv(>3{+myE>s!lT!NIrN8oRze;Wen+}+yRU)@GCWK6hteo^iK#G$c z2Ql|If!4q|DJN?Z1s zh>8l6HBK%aqznY0N*|P&dYdvtU&~#AO#P;gz7DllB^*Iz1qWVr6rY7rEg6ClBq-Rc zk0U4IF}58-wL;sRpz1lXq{|bvPc5z1{iR0r&Q)9QA4tUq<}n}etgb+&-rwrWUO;6y zz!IYU(G-^A-M*9vXp+u)o3q}gERy`wu2xkO&xBS6-hU?U03RCq0c$c#E{G*vozd@5 z>pK|SI{?_zQ>#QeqY-DH9fa8u2?&6tlp5eT4jf1u2h`*stKR4f-{rKu_5HXH;m&Fo ziCHChSMBaABeok#c-> zklXbaCir_O0P3_=;CEGr-JHKJ2-QbE%fMYcL4^!<)WaIasF*ZpnlgFeEDA&iBaQlVFjcK#Kj;5wmEfR{38irua*qG~cw}K8L41JOU)S>eH z?BGYtRD4ygS&E&RzYyZ(A%r3pAC09l~s*IgG5!b@GTX@O!+I=wIKtR%D-2m|;qk4Ua*LYJZ&fao2 zMOCBH3xu}-7^bUH(|;*G4rvYU+bB88fDOI7wF#BZs)Ek$J$l99IhU#P?mfFtck_Fd zT-M*0d#kljC%QzvvUOhD04x<1T?GEg<=2!Z?arfB+8|*_Qiddfi7^PNp=A(4A7&#D<^m>ei^F zhLyJg0syP?z@N%SaAZ=4WCr{UL4coYOj(5c#3UKjZGR!ZlBH?2FQzfCt2<*F!l;(L zz-F<;$&jHuf~h(g(;V_ueKV#JQ`L!>ej4cqVm&44gE4&$>BnN3dD3^p{AZCq9MhXf zAByQ`lU|N#c1~6I$Mo|_e>kQWNH50p#iaLrI>5Pw^qnz{53<@H(_2ZOjOoisAC2iN zNFR&omy>=drnixPIHs>6eIll>CjD4UUqd=9M(Rvu;E8>_f%MHWeIw~zF)e}o#+Y72 z)m68~hnw|qTYT85hi}Fv-l&It@y#wh9J6E4cOFqeEOx60)>=`c3Oi-h(#KO~bpKBF z0)y+Uca5?bV`sfDWa%8E1bV^TXuo;W$5YqP*Vu>ZA&8KG0$jrfN0mYd&bnum1wA&{j(1+_Wr6Qe9>&RKsk%7XF&G*DegKx7n3 zsu5WIpY;i7HppyUZ5yOP10YK=wzkQ+jLTmXHH(1alnBfalnl2VU8UG2-r(rJlB5dp zz6|e6zxO+AGzRceg}o*Hhx0^|%MFU4MdLC+YvLwtZ@p-jw5??bRcY?H$14}o@_tEj zDc^2>5iIGaDPNRIx>OnxRr(yIMWv+Yl@@uDewNbErP8`>O_EFLXDcn5B)wT_5hLm6 zD-9JYy`VINsPx53ixx?5QCdVu`o&6%`bck88nRRRa-~Iiq_0p~BuDz?N<(W(Z&O<2 zM*1qHp);kgRvJ=M`WmH0ZKSVNT4YB02Bk$`q;FJOghl#QN{gaMFG^BKa_Qk_KZuHW z*y#u8M-OlG12m+EUE!PXM#m}x`KSEmHa*BBX9oL6keS^yUyj?QnG?wk)~$9v+N*Xw ziXEpVNvp3J7TQ~0D=fIL5-MGvv7AG#kML~qb#`@(Ti3%91oJcbm2@_sC{->i{N>S> z=U#z$r!o^4=1dn7Ur9(>bmoZW%Bb$fab6wrynEz7)D0%Qp8D8+-KiQj!95i zF|z{(axDHGE^?K?pP~}MP9-B7|HOKK{1dW9pJ3HizY;{94A1&8bQ3#|*S|LYT93_Z z@cijHyYawk-v9L4oLRz6eO(QAjIb;MAgVNMyo+nWMm>ZZ5H zk{ZQnnbItQhdGbF=v1F_{FpY|F)6Yk&gzn}jGDv4;t3AAkd+(f-WXEMdalI_qoenI zF*AR45!&likU=_#18HAO?}Pn`}IWbLH+W)%R2^&q} zbPIlkLBe;FupxvWwag$@h8$pLShw zpn6+3xyv+b;K(&_(5!*0#}G`Y^X>@W2bw=9kom&2&s)H5AfxM$6AS|}O3}BdrluPKT;LdTX7mLOaqOnql{d8t*^NEiGw|D zNA6YkXH3kBU2Ab2;7GgQhveARWBUagMa+muJlk~&1s!9OK? zAQc1LQFxT;J1x&F&(v|3aVRGj_HusZdNRmv<*k2Q;*Z^a0@C%+L{e|lZ99Etq+xzd z7JPFG4RZ>onQWMGUSTAw^+*ℜ~5{|BrZKg3}N$Z^wyu6)G%8R9K9taKnfSaZap8 zg{TRgZLVlB7Z3@iB0(tCB*@waB=|VuT?-N8Bvxx$9q-mdg)8dnl{jl5okZ&fQ1Xpl zI&xI8CXYB-$d@x>$P}?Yr9%rZ$5}>#+`VUv_suJc^GXXKXIHpTN`*ym-hq7^KdEp>%mSJm-2D$t<`Wo`zGwIt_mApSskkySL5PmbRW1E%O##*i7FH5( zl)I210p3%K4O8Ncp%@)h45{+gq}r=Je=PVy)2K8R0Aux$GOkB2Fk;DMcNE7)_FgIP z_mo!!AR`X;W@UgL(zSSuGsXlF1#V9rr^3h_aR|afA}S~mw8;R^s9<7I!M5tvJd$FB zwvobDkB9z>kRop@RB{CSwZrs7f1_>LRHVMdincTrE$H*wPTd^p!cN`9_sgye+sxNM zzRp`M@p_K|*Q#?L>=vP0QnIP_Hb415`CTLd9iI=gdJ-(swR?&>mz zut;%j1LC5q3g$Y&RUpn*sLVFmVNCL{90#*3%wG(lHSg)QW(J84j`c9JRYP@e)+9v7 zXdXtr&xhm#B)P(&oVJ4FFmBsFF15_7GL$+(QY+4?RZ+SI6>KJ)+ri|M(H|xoG3Ipx zO0sceS^**s_5JB!7Siajw#%P_KgFNV(TR@AV*_Jw(crl<>}%8L*xh@0anM6U9C|s! zB_b}?6u4+l_{7C6B=?hC80Bsrn6b|@v> zT=8J+v@3Tj=VDVP6FS~=^}y0@b(s9e(gS^FXAt2GfwvaEC3K7xv^1gkmyb-xOm@nV zd7P!egiL6Kl_)8?wMuM1FkHJ=^TPurzZ`AuwKtRrJ0Xtm7K8VII3Rwqu7Fc_+bo0DA&ONc`k+x2I${B0ztl{H3g zDB+W}ag7o<%eg(nGc>KMPV!4^Fz;}3siYE%`dqj=1ER)x#G~_%yQ)H&asUJu z!DQ@M1I$(t9omcABP1h9)k1D-$c8ON*OS#@rr@_@7Jxz4ZjBkQT?rM?`=n;4suueN z#B7f`SQXN#@VMFa19^C4BMEQ8TX+;pOfm%+wNlw=2-wpq@~97tEsdc?yk0n*_GK0& z^^u|@+)zWGqgR20W0XxtCfx#S=%F8%A<+Q7oR+3UC-$I9fpE0Hy?A{$a9McTNvOB` ze6+9aUn#R+{z((c%P2Kq3suCK1RD?t;}TXKd4d~=Lhz9mlpJ-_iy>qLQS_v(d9w{|8&8;*7$4a#4vHIc zY#Dlxd78$I2lNGQC)G;nZJuCd3$P6?CTUvME%i>6udlkI7QWx4zBz9`q{u7bu!E?X zaGe1XT3SmrqoRGtX{}i|@EBBdL8>7-#pO~vV@3H&x=*of1pmZptgxhdX5v>`6%`L& zocMoH(CfhA?lbdcPnvher-MB)-ab9?dz*flLZ8%;M3m(MOrB2YNfT?mW!k(y{w~Ge zUHYZ8ro0ct^b+YKt^C8S{N zu!+%C3(Evhyd6qU5Z1}vH#^+N2ZGhm{q zgz4zY6;w!yo=8H;i(+}bC1leNNy0AKv4zWI@aO&x_>6m1A7P6M__R5OhIGZK#PT9?lPH@f}%)v=${6Pd2jGxioe!K_OY&2AoPZT4_&%i8;hgHA_6bZt+u{uvl?uTASFH9g;emDIuYnu=w%NpQJF~ zg`6rxNIy7b-DHq}iW%*1)v0C=vO4lthj~LFEhdTM5v#nqkE{tD@H^fTN7Q`QE?Vx$ zBDj4xSA1rUn9VO!i9)cM@wQiAI$nGE&f&B;;k#`xu?j?qj5MXr0+BQHBZwv+Jl@$j zEQ-6QvBkMdhnGCB)3em&S>qgeR*NI0wlKMT)yJ9R#m;OOvmFnf84?{AAoQ`vlpzVn zgfQX?PcMdRtCNY&G*}xZq%>~#j%S)<`b|VRiNBJuDn2?bIV-r=_(`V}huReM^(sbr z#$nmqw#aD9JY=x>fzYU(5+!G;HCqvbDKaB!b_0whQSvG<6T>p9Ut&%E7b5mpKX9bE z;-#6V;`N7a&d-n=sJP-im>I==Iubl7zAa-jDSk(`Vp6<`AKLc`?}|`d#{;u-GKv8g zla>%ERWe%jsMW4Xx%y9s>a~1~HSN18x9xUF)RO*Q@nkFLmTM0{EZqap$?O3Z6Q&Og zHslMSk>h2A_g;y+QsaUX8<$%+3`fXR#9rACmV}FR%MBFK=yc@~-@tDO$&_>fGk+UU z@+aV;_+supgH7RJsQ9YES@cCj+ML8nF0)QvEdgN%SDx#RnHzRHv)JCpSOD$`!Fd?r zT%J`v1;w^3|D6OTR4D(4sIb3+3XS$|q{43P7GeE$=#lA&n94$3q{FYW%v+-*V@dcH z>*2*$Sk82g*qjNYw0mSU;RlNfJ&(=CbQ-rfUf+rG3@G# z#$P!znAlub{4SzMHSDCcoSr1P;=*GB46MDwz|22Zwp_MbX4dSMC2v%LTHYU9UgkHp zyzG{7=bzd#F8#XYQq)23J^cc`+TaWe%9YSnI44VyJh9bS?u9c-ekOsXMvHDFjrc(I zy6^k+3tpD=8=-@zCaM#LM+W0Wg|kFEn2itCL|OV|FEgH9%AdqmV>+bd2`4Aqs8>|D zmCj0VQCf{j&a^?-ov#LYmKg;gI~S1G29Wt_gN%7rgM4FvcxQxou?6w94Zzq5N;8{T z8v(``dQt%6DX#(6s!%}c6c+cBN9q*;!mIfKrQ7(47~R^yhmAoR57{_ErO z5kkS@q}RtdSJenzLeT;rSj}}%vpltW!GQDA#vaww*xMXn+Y(?~7{RuwflYH4X#l*3 z9%_H90X`_yM1b~(l_O0eOuEGvW#Nk^ZI4;DXj0*m;l#^&kl_;mtVt0QUbBuChi(Xv z&GQ3KmLmYM$s>=HYLkZ9-)8_jR4cf|o~Rim#h#l-K*WV!JX&{3&x;B%n}X+jvYada zf(XH^m3ec!kXD7A&MTRBTVlR(ZpP)(@Nwrp<_gq>LD*a=RHpC>+YL7 zxchfJgS+445a@E}2V;yr_Ze80>aa{~^VKKzx*NxdDWCv* zBE*u-T1oISPm_h0d79&NUl}5e4Z5`@tB*PWxmTT>cUJdFAY4(+>| zJ}iCQZna)tI>38&YtK75*Nf0&XI2#;nz0EP7Enq%TmaosxZlp_CoYzvbI@_z%OTIWc zD`>ou@pu3cF0^K4V^XIc_Sk(PvE6%B?7i?U+GsW0YI3!{1$2cmU}THG%e{?uQYR!s zw)izB<=3dYBHX%0VQUt_v=!+T2&Ii!^+VTs2@8{K`+?6eur5q4=VxJuGO*y(v9WQM za|b*@=&gYk3Tt}NK#L7p-7{XFc%Z{T1n9rdfp$+$8EE&dO8QLvn*7!MjL_RIcYt@;>382^gX?0Gwj`EqqfK$hPQ2i0 zks%2ktEC%NY4G90F@o&skRvzGw%E;{Cfq>t)bi}z#lx|uS`4V6SFa5MRcYzKy(2Am z`@WO`aXgRy9!#$cyDUhn)VX|D=ZO05>WOfXt9R9%oeUinl*?2n-)sbUi^*9}T6ajo z3&Fh^DzIizM7nQ+EBh?&^usZjVsV7nL^XXWT8&KNJ=bELO>%m2GT`ztPsr9(hiWy# z`gaKUN*QorR`Ry^7@it=GN$bF6%@A_iYYsN^}H)S%a@_&o$*=D3_UOUS;xVZYl<&G zn9$NqVsNYljoN5MaN}@h%W&OB%m!?wlEhk^urn{w6s)My>!DM^V)bszM%5Oe6>)0v zI*ovcE2kn;s%M+<3ZN%f0FBRk4CqPwsz*R;QV{DzS0TSpBr6n_nMd!CQMIm$%o9hT z;NT1Vcx$yEhHx;d4CBRC3VaCSPT7c$(+!iYFn%m@kg)wgObgRTVp>=}EPjHnB0Wc_ zBE*rg#bY1m6gR*aPOsn`P*`)$26Ikef9UnG;NQdWV-aHutV3$vL3~Q#54u@vJ|%<)*=ldwKBt$_*5;p9QOyal9VbMYcDhhGHdP+Y== z$t7j>g4;g7YtQfBefTjB5z$f@>z_ip)~PMtriy!5Lc%~$?xo=s6xQA1ZAwtJO<|_rHhP(#vD7xr(r7~?o&+9i~x?N{% zCWW}#1Pu5RXc{ANvad_TbUn&ELL53|zB40p3rdu;iC1Kj;;`3j<3YD=QT z#39{K%cE75!1M}vI=w=kPOp%s1m=w?fiY2sFKjfH((WS>C-puOazl`6F~_e}E^n=p zYm2}mtr`%3Bf}yXuuQ7B(~2RHArokA2tkfnlTjv06|2-p-oer%yMu???y&U4*EVK% zKv6aE1nCJt^3edD2C5(l;D{dOXoTQQi+*^$7L(zn$ho#TMCQxt79WYUjR1Gp_LDdg zx8cH*H$9N9n8j`B8dg|=rY0^Y1952uL@$DL^^2OgR+pokeOs>_)N*uOezL$1xGfQi zpb8>%Z7G+FFy$12X9KAjiO;nbpRCMSe0q(Z*YjGdk@&1LHj@JDjri1E8ESoo;6AVa zT7qImXsu*if`XHk5>$9;OHg}))0gOAz=QySC`l7E9`=$2=LGGqajJ+SbfP3>5sDK- zCvmUgXGq{n6rr}#HF30@?4g7d=+d4uLXDneNuxeIp9N zB{Th~jYx&#dhi0s6F@f0Xq|w_e#{vNVbLKwS+_f3M5;~ByM#w^+y%d(I0dI!OBDfu zPbX*6B5q}(q6%Y#rcN`%3Bp8mX8ScxL2>Co1BT%_S{hRLibLUAegJwg z5&QsJ#5%~_eWvyxu!)7YArom!T;GhQhMrBK{bpnds@s}{2b~t&0IG!HQ=W^V5bI(= z9jch!NrI>C1voszf*+GZ=ht2UR+QugU?nhk0jOSvvTlcJFzPWrFnDSlQN_$i)2}Jl zcto`>EY;`{wGXNu9~^t9jL#bI7HSx-l@+iCuC$X>;{(sGIzHfIHH=VEGhUKLLwtw9 z3C3=dby_F?B;|HR()c@I9kwOQ8G9eQGFusBs?5rYwa#}kMXQdb~M6c2h4 zF`x<$DEyz4sVpPj{iWYUZ^C#_;O#)1QFp@2fu=*%Ri>3tiI(${|2?4p$CxUnFRT=j z)VXxyB_xoIFO<1?>Ghtrg?1ar&=$oP18@uvyc5w)HK8Skokgf%;$S7(r2{_@b`~hL zng3%t-Bfw?s5P;a{jJyw6t^7Jj0VbETu|(GnA&b6un%-1d$;-%+`^7WWBc`ZJepj6K6Shm$lxX>*PoQJ{qjhA_6m zq9u$B-IQhJXuHrQ2PkYKm-e@WxnmP)u{C6G4nb)cWFZD3N-1Lo)b?esPO4_vC-R*@ zsI8zhsX{>rc zKrjj6L@fow%xz^<8UZVfK%JF9{rqIMhI9UL`Y(6GUAQ_TVVBNGVtGkvb}^iv?N5<4 z5Il!kNUVC@NYxfdt#kcoRAGdz7I+ae}aq4KEEP_2=8=9H!8yS1)RMW|5mZ1urQ zFuJ1BSB zX(V)){G_sUQmq#j>0-`KeOMON+4d{)L{CiGh7gQoVe(=3?<)Jp$_ z>N2lOTOqhGLxfAu_z#7aI7(LHw$Xf9b-2!|H6Kg!xZ62FMw)N2E1AVAa%h1A@gPPP z2VNg)hW+-$5yozyJD7Xz;aMlO~Y-D~w$2ft4Bl?9C zeQcV-5j>0xNmJU3wLTEgt3jCy0X~BA>$%RNqyo0twVDLLmG^4To z`O#NRgV~y~)d#LmuyW?^gmCuXau>-`ru|)MmJ`&aZc*WK+=$KCfluN=qkr0mJ~C9- zvP#K-lDb+K(J~gr9*4XWueJfASJWsZ5XgI*!h*woz^=S3-VfN3$*J=VWaFe>N>xi1 zOWxt#-++WE4x^rnKVt7ebuYze=8j(fjVb3SbKJ0^cR+ZM?H!sUii3sIM>1*LNmQ|d zO$Mx-fC3%7rETenz(z^`Cw`#o5<5o@I+Eu=E;1Y1FFVfh%Zvlr2GA@DR?XI;nW(cd zFw3ql#--Tx)JG#&#fJO+Mo&`Q-R)O@m2|6naKFX=EM~sF46)9^fn3-C(iw#fVGb0# z!U{Q^QRoiq<~kbJhawW3{28ec#K||8RohE^m@G$2qF{r45-KY(n!x*vwtY>q!|Wa~ zFVm8Co<@E!M2nA4S3CcZP~hUd>De#=3&WT;RL?E++<&CaW7V6Q_wi%23*y74Wa|63 zH1DxmD}re1&!s78N#==rXA6Mg(*@@J2RrGSc#PW=)TrJMIT1}$TtUdxkDrnWdkCiP z~IMqT!^($>IY(3l(I zR)T1-N*k|;$GudbZ}Pp;+PbHr9M-9$pNM0c{Hgx1TYQqa3h0y_AnQ`|A?i?DVwyx> zv4RA)Dd-^6wN>^a0CVa1?L@Yqe_9dYW|@>7cm6ii0vH&jX+f-nDh!##=|H2-ltB*f zH7x>vT6|(!1kEcZ;A$_8Es*nlx1if?n%V(I^ANW@%G5rd0FIg+<^MnIy?eY~Rdw&Z zF3)A}XFWSv*?SWrn^V{GG(E6cJPd%+~`<{;#+E@4HR1zZ6${|~c z8kK59)JUo9M38tTRTOMN!cAkvHXv$5)Szf%MF~nZR!YwIH|ARFS>R{!e66-~)|je0dn}o2#nSW= zro9R@f-C@NY4EEgCf&J67R}0}#*1W-%vmsRPLMQtH*ax}jOdMgYPC>B#hKR*tjhdd zFs~6LV9)0fGf5KvE0`CQ^+EYo9{`$H&_fgphG2+Ix1m*B#{ z&rK_W{C|3{I&R+AJRNW3si|%I;!fmVcLC}nv9a`1>Sfr8OkQ0x)Qg(0Zszrz`P-Y- zFFHioFT6(Kh^35t`!l}=-*uzsvyvTL5xnfmGe=f@313v4tgN$hFSfQ%T;<+(%jNsx ziH|PN-nj1OyiTrp?9$b;4V+jvcbl7TT0X`9&b|2NuEOhON4@q7U#G^#bXR6Sj*)Dd zu9OMJr{7O&cIbjkSwn5}--;_gd%=#u%Wpez^NMRPc-w!wW7VA}PH$dO``7op_r34^ z8cC~4`Bwby3Evui_*U|LGycN6&tCaC<$LKnyO%9I^=>8K`4au_yCkP61>4+|H8;`k zUe~h070-Fb!}EUf*h^nv8Kzf!`JtQ?tPk`qg(bMVRMx81)kX;;=IEDl?^lI^hz z{V1nXGdva{^Ys3qm<&2H*{e;`50JnY@U0rW9#h~@Hs`Fd?vRg|&xfGP$&BnEjdlmF z@8SxZwJD}0zppRt&Z8;*oo&Gibmm7syX2Hqox@v>_uB&bInhFJ$=+cG-CX%u?agqC z==5WvapTe51l#YM!`Xz z$lSc6uG68SJ9ULvuw!`H++N3ZMwNd(uxLkuf5m`V*!uw43_@m;Pud_-4T4_6pE(PW zt0+(a%hG}Z%EhTDAc6w?Xn=Q=BOi`^*vRLerxN*;6Y_cJ2xC6zm~qUVh5R{LtPx|r zJ$pH+n{!XQJ)AlzpeZ^wV`M znN<}mn`R|C=`OvK(cne=1WLRrs!%)l>{2v~IRx(Fylw7kF}<;9TZ%n(gNA{LWInaH z0gL#XItdU2|HZ?}$C|{@_ib}fXO&^3sm3`GS92TQB^SQ@l6FuN@EzF{ajhow%4Ihb zXE5vamS2-@*GBXB3)j4etvjKQVevtE^c}&Qs-);81fe~sdG#nC2&S4I{5*UBx3yh! z8?8sIv)mU_R=4Z`9-srMBhx(g^v-Q0b2ECB5nOQuGnKh!_me z1=P&Qxy?iXe7ZjnwTu*JZU2!jr)c4vUf4KHnP4>M=&fv&F16r*f&R{+GQf@mMUph~#W zeC^eMh!qvUuf+JpKqUah3RsIZ7+5u{8Ox|pmIyLypA>IMp1LZv=*qFCw!5wGVarj> zT8nS%1ha!kiR&02|7MO4qnjJGy`8MKa*Wj*_39D?)8rXCCsx#IL}fM&nFDJJoZGBncileoibD@u+PGk|7vUg?7& ztr{0Vq-^0Hr{fR&Q8QjdL1FdVGZgvbrN`V&@8R3+cjXSR za@f5>OFdYp#Lml3sW-j@i`o5C2Ru+gdOr^8=?V+AZA3m5iNQVC5-WnoIz z8IPv`W?yatHUc&7Z9_I8>*t;7QNNLb4b3j&d77kl94620Nqi+T+XE1GG^3oq1fgUG zImL*>7jR_GAE+=_zg!XKDDyFzr6v;n`Qy#>?UBsaMtFp|fUt>GDv3&xgTnm5!%ckE zg(Ag*!T9f(z{wdG_2?cOmFV!!)JDz{LB9fR>{RklSSTfP(nvJOF7vnQE5c?86^ryT`c+y!+ z!5*2MJwI=iYpy~nuRSkota7`8Rk$QThtOajETmZpE)Vp2r&0TEutjS?Jqc+J#VVr? zZNWIG2ffNeT>U6vDcPe6(o2T>3(?a8X!|b!_AYsu=E*?TN8JD5>rB)jDuY2qZU!pf>kw4lCzBgUDIqugqbW% zels{|bA=o*BFW*B9CM&Di7uuNW#@;|V;XResn`&4`s1OnPz1VWk4(M8V#UB8qySnPd|h$7bYFPcr2MYvFKFNW-RH4nut zd2daPxWNx$D`YqhP$a4*8Y^ z4@RNE1T@@h+QT4OTOtFh%#opX=|xl^Bl5_|*KW9a8Zx-$j!SPmGU^@~ks$-7=Apw# z1$_o@-HUVRYe};ZIb_iPi@x?>)gy$KUr6MHkhd*-zd3Jx{mj-qDfrgECW9NAInlT< zM3A04k$ypQqtf(CJV#-I5My5Cg?hF?@YUY8w!$=ZbjzWLiV^hPy{*j0DhEp28W~eA zgeb)RdIKt`=~V|ICQnIU6(#pkl6np&5*b;~4@^e)_Q>deF(5b$lQG{(O}~x&RwpHc zq5>WeVwA(f&mUE8Ux~JxnOnddgOnC zw-J2$VPdv1S)gQ0OyYT<2cE21Q}ewdv!ZbROfM7kW+4Y`H{8utA^%Yx%i(Z}SnzGm+Cf_VkS{D>Shl*1QNwGCkT!m$8ZjecK zTFF1753>afTzSxfRU$(oHvOjyf?B|rWmI2YpfBffnharjChZSRr1&^!?kZ3dbPm(g zBcR8c!x{$DCDq*o$uk3Wot|iE$`F;5YRqqy2;DpC^Fm5WiqWSy2$JJ%SIQGAOh+RD zE`Of>1SyB_nZ&pfxnb3uCH%ZimU@DC3(ZtWJLK0*b=$t9oxoTT4=6WzmM`#**#%y; z-~7vrB`^ey1EY=$UoDvOqt;Gks*J%1-At@PWGzVI5yI?^h7BbBA^tnm{7s7WAZA6BQ|Z6&WR86`48(?+Z{ z03EE}O|Ctlop$lM^cwAD3J0veY3h3|dE+qOgb=Ah#*W3n(EB}p)vjcV__T6)QfF*` zShAFmR)GYqrvKE!x*8xPtaqP?yVT;s^EE}uVJ8t}3PBCQ?P4PR9J&SuJ*_)5t+NQ$ z|1kTN3xkLP?pXN+pcN9yRfXja?iVR=+;feB$;MEyI0^8hT8>+4fl_=};Fl7E+%2(w zC|!O`@*7m_rq>TG38-%s7BAWmC z+)m0~A3MENSzf8^BX8=pJ5?!5IxkBOx6Ze#mnzFEm3^R6cF&u7eI}ikC5LI?C7qWghr7|YtCuRvE0w*jQg&OV zEa|)~Iow9yu3oAvuT=IbU-q_GT;M{F$%VQ%yrwm+#4a24i}YvNbZ_IYTkGFOtW~xV zjjUD9Z$ceBYYo|flw#HOgqvfp>oD7rmAM$&(xRV-Jv#Vd4wZv9r&(h|Gy88|<_R>% zt;`1ndg3SA)(QcT&ItfCyGuOr=%omNSIJo5wrm*c1QHr<%|yB!t#reNAuM|dcg#sF z>U%kHN$2&E$(Kt1O-zMid{Z$!t$K2}jUR2MYupv2u2L#F&NxA(gVRL^(>sRU74(r( zVzYX$KJp4?rEab-8Z5fG=k30mFZSK!d)ZCWc{j_tN!r(!ZXb4+(Mw9HmwK;Cc$N2ZSJ7V4%WZ$@d-<`*cascdH%aH+B-adR z^3D3GJZgd*Zv6)Z%{xhLvD8jdcUtNJQV&>a52;5j^(d)JSR$@*>)$ryrY&_Dsp~8? zO=^dwK0<1*rEVa#@xv-{JEX)Anv7 zsjZf}iqtksZ6&qCQa6&?WvT6?_E_p3Qd2!j*-*g&=^O`N7RXoDPU?G>x`)({EVYZ& zUQ0bl>U99`)ow4T^_E%(K;L1h4W!;>sVhjm*HT+Z{k5g8Bels=+elq)sXIx1P$>_d zy>IM|gLDp_dxqU3fQQ~{2J5{#&ntoF7j*(k7^lVJgkg!YnI(9ghvWi z#O?r^f6W3vvgDPsh@3tMKp^LTJO}ba1ll_#x&%HWr;v#hJ|p9#ydTLjpW>ZD^ecdw zMc=Xz{hwif*$2_(aV7_Zsn`c8R8wbiY_V*rbjit^T2wZbsR1-1JI$kz_X-duua%;; zOikkTQ?z!p8a=bK03AY`7L28vy7(L&P*WrpZQ;w^Hye^`azp>*U#XaLT-rgXHxA#U zs1HC!d}C#SgHva|Obbds6cd|K4(5bYQ~)wAGa<-fzzc$m0famSu-Mt`$c8+J%7{H8 zU#bDK1IFX3p5rF+qvEK9n$e1>Xh!L>nZ!at#^oEVcd>0xD8QuFSp<=kgAqY8G%ix! zaR}Ar?zU!|nJJpYspuyh0$6K&%;hTgjF#pZWOrKir!GEy} zy@;3fmD_SFdEFF7iPMj9pXP_p#c~m2p+6)+T8E;y2T%_I zjTS-DJeGoL9zI^TPUGQ0cs%iz2(Ep6d@hgV`1ln(T6RyiyVKeMbUJO22TxWbxw~9( z=(u4MU3-UIC*tP~2cagO9tG^~Yf_356rn&=LQ+v-PVvd@B+n!{=wl%BQLzh_QA$xG z113P-?Sxxsyvrui*AM$*ifXW(cdAWL*_Njje?f56d&Ok{$a%LTBL?@)0$47v3se|Q zz->92ThE|IO?*Xv0!%z_2s;?l{S6nI*@wsi6sS%<1_pKW?wgazM-V4JbNSQsi1K9{ zcSJ4XCq9`O529Vmw-2vNInVvf;11ORc04}y@2oL%6P<^v=)AMX=qFK@^pCUx0TX#a zE`jv7hbG-XM5l#JgB7?nIDu+|5niNQH7ZtHt$gXZkUPs-{i~o>-_jF!kUcrv?4XbA z?ZeH^Tqpa`;bzxl-igOzT^@^doo{1`+t$tZTg4{MKP&aam@@&H83o~OO$?^8!kwY} z#N)*Q+okgRV85GlLoN`%uj8J5TYz_V7Q;&n_wH8nxT?Ev*`5vdO01cuD94gOft@*( z<)%W;lDHFBQNDrlGZ)W4t4Bw^*+@}E(YUy)d#G1Qe990O$0b38R8d_R1ncgHm=_tC z+htKAU|-ZeEpM1Mwym>Yg~*9*;V51OrNOK_XpWC60_n z9(*W>gNh&yTr5Q#@D&k9(-0X$AaYp2%w-Nn&5}T(Ha36%b4oNMH1^sDi3Q&DjWAUl zCks!9W?+<)4#v(?)MKqhu$jI_MLk${3+f4~)MFQqdg?i2s3FMkCLgvPk?HknB7bL(Zs-Ly_V~SeTJY8jkS-Q6khQa-*85bKx&rKf;RmerKV!2#6D zdIb0>`>5*5YG_@3jJ17<1|V|nud{tVw0WR9X|SyJkZoe_7k&0uKYTt^cA)BM`=Hey zcJs0{if3q7Lxf`#B1fUdD~TKnHo*+ z%JbaSN`Bra@Yocr2s~7A2|VLsvYHCV@aF|<+=5rbwI`Ad; zL4{qdWriWhbgaw|>t_6fVPF)!@khOpODDJ5Z7$i7nQS*@kis~fY# zoBbeCPg|A!Qja%PsaNShk9(fnW2&o30)JnKBX-IWOJya(It5&J-k)&Y1G;HM3@Z_PozX+C2|a`kxExPA1ec^>YV6~gNK_5$giOXss zPJCYDootF`gO7`M{@{?j^X9s?v-?y%FJX;Jkg<(|;^jLDfRO#q3VSpjzD*M8I zO2BcDt7r%S!^=bFZ!TAvAXT|q(0twIg@%q0o-J23X^M}fgpypPx@%3A=1mtw-(TM> znOd!He?qPLeP(;tt37G6kg(SQ8RxUY2(@);FLVz+b@beK$cRg5-v_c|*MdKhhZM+% zY+BOKr=|#!9@-^a7kz2r_9%M#oCLNQX3MPS% zgTnNE!+en^WpV4DInyDMPL^pfdH#OfJ+iR$a5E5eSR5{54 zNO?CQQ*{I>m_%&I&Ozuv0=VGv0<%L#gB&}cB}P_i>(b$MA!A2)1lWKVhfRjeFuWHg zM~cSFF6mw`j&h3@bV7zdSUDL!qXC`5D_3BQ(o$Vypm0Z86D2ptrI(I^c_5aJCuui87m<1u6PDsUbJEog_8`C&^($N;TVUtp%N0W&jM<8bB=W#pe(O=F4{xe@qyV#5%TFE)pD4imd7%L23LR!3=|_eCn(&_!5K+o>?ALRXgW#X`JpO^-e((?U zTSfy_3J`5$749d3k_3c(QGq9by~ABNsKRWUQH{ssNl0r?2}TqpH3$R3S25X`BJ!%r zu}B?;!U#m<3@OJnWSr+os%S3pTVR{?;!swaid4c{=-U zaT1Sb16urOLPKu$$%Z8o0FRo`3T6i`IjztmM72zF2Ot&Mdkp*vcVpnsNrjgv8-zAg ze~dI*Gf3lYk>aTA{THsNcvK{lzEdZa09??8h&_827~#-n?&gFKg4`eX(PR?OUWhrQ zYfhX%eN^XfASUJ0**zIq7I8-&>v;tk;9>C%<%B7AZwIT9J9ehr*TpGmt3e*jN&z$3 z?tjWg(RlAT)8Ttu>F%LtTh0G-MLz`$JKMcNM@@(sH7Oj-SXe|rPx=2Bo{Apvt zubO1S!H3}6#wa6gI%)brsHcr3zh12YixHqyIq`k-h^>?x&$G%(2xz<|6AR{Ax9edG za-&z`S^y9(pLl^$so-feER$!ifEo9S640})1(O3ewBx&n)zDjygwSfU2o3jD5yxQ? z+9K^x=7d%=nyC_6aA-pFg*>4_fd?hDd?#8VQJ}J=2cxnc)C=hCAL_Qt@sOzTx2iM& z@n}Mb9I+UNr}mQ-44@#ZJdh7Z`pJ}Iawc^_Aev0FRLrC<*H2y6rr9HV)WW+8dD*N~ zMMVdGMdYQGR-4HSSmL<5&Lq9GsOWd~jk7T`rf#qPYzCmI&tfo@%!WHr=B zw_)uB+m34!$vpWRBPNh{&*|bt!LnL66rCdSq6mL5;V4R|ZCLSpv@4M;cWHRId~}ia z14;U06i+hqQfgI)fMtqPH&2fNqRiIqUd?$OVz_pWVww_tf+Hp$AI8U-O4{j%M+@C& zNw6@h@ke@<;!vY@WB5jzSSK3kXL1v}^mul>f2=QkO{wD@MO8<_EbPuPQ*+Cz%;vx& z9OroLoIBbJyNkfz-i&0UXOBU)2`{C#FVdwb1A1_aH(nqxDHpIypsrB~r_W|oqBrxi zqxvdY>MP-)N*1w&qj0?V5zIL$<9eVVBiwJGSf3Jnt#lVW86gEXHiNoC|Kbv1CEPN? zLkdJTDi0udfCmsNzK4znh;Kq2CBPj+S?bt+9h*=qjLR*}e{@H(5gYob_E~L2M`gq6 z{}@j8d0)^Ri76AXFUx&j)xMa%tMD}q#-uofN8!#g+8JSsR&yjL0+EEdCa4CDCVg3# z;{ybW_A4A8`5nO4kZ?K?31z6AE)?lbVfDP!izn%02&i5LG7?Dg9CAFHN|0;tf8b{V80-}x=$<@P3AGlAJ8lMIL7YEpZ-%F+>? zA~`9D$5j~hLKCj2BRo(Yh&TA6)=GI@rlPE*7KRhqE|+n&oLl5Q5ud~LUOmymM%Jhp zjouhlh0SPH(q9nerRYBgE^Sf7Fr?S;|Ma87$tb@7Y4NV6^A5=ge zMoev;2(p6+abgdeO}7x{KQiH;Je4vm_O`weuPk%J5;=PogMF-)oB-tAM=H)-q;sdV zt4RITNc!WJ+d^r6L3qk)K3%+`*E(ZpN1=+KlKJ@xfykf7u=SFTFkl4uc}ufaCoryy zJ3yG;`(qaz@kqB0=jkxLc9@lCkp8sE$UZg4jP(tF6_lOh+cjKAFB}1a$KP-B({#iAjr2;4^m+Ogb)-e%sEM(8ABC z{%PfEMMyv?@>_C|7OS^tB>A#*c>px0E6^mJyT)BP;x+=tJ(n67uOP`!K~!1fCC4j4 z^x2p|abbQlREu}Dv@Ew>31#JjyK0IXiTyiIko-zk&_7O#xMLZo9r@58Y(SikIhKPd zhH`%pMx_N8or00!SHA-td^x@xWWWhUvPkdAU*F!k~%5JM4HV?P`5*wtFd)5u5 z>p71ex*Pm=9&We)uH@e0dwRu)0q92H=?m=e1$el7)>(y0URQqK>A&-EyWe2nmAt+D zzRQ2-;dXkc@8->)3t)P8XPI%2&&UH;P^(DEd&=*7`TjRt$;Zq4%9m5`FmSDZ$B_Hj zP9li_a+2#`XXP*9<13G`HxHC0rhSPm?-*MCF`Tlt)sLemymVWAp{>4<-aJ?q+U5)K zaO?ll>Q-{<4F!<4`|mv5qi?hCO0F-z@9^JwxE&kpyOJBq?>qf>9`1%q?Yoj2%kR7V zcOGuT<@R04ZRPjf{yPtM)nD0nCAXK~_xSHT+{P>HyOKM~?|c1s9`2IAw(m;rEWb~A zs^sCO-e=#H+*N*G@4xeKS6yk}mE2u^-{8OVaNDQtyOMj#?;HJh9`3g|@Y)HYvgJCFO> z72(?>@39g}ZY{Iz@Y#0yZ2WQ?-fP*EyrImt%V*=^HoV`yD>+qC)^7iuhg*M@eYa%s zJ^6a*ZFJK(C3=%DY;&VD3Owv&_d?FHZZ^x?8Fo3E**w@_^I71t5nNr1C6>4@JB?7H zQha3#Ml+PvIG3L3yi_Vqr0^d4+My9N9TvPpkqL8twIze}7M&rMMNe|v+&sBBN1du^ zL7M)Z4(H`!+|&US9%azh^t9Z(I8*l-62Xr_l6nIb(hq5}-2eFQ_n zKM^_gXp5fb%jjOum#O0l4UzZzjiGD^i0cqRX8xtG>?lmVY|q^YE(OdVSTAg5GDW06 zl#|;Z9*$eV0d7L$}0+Sg74NoRpHJI+5QRAg@jG&Wyh@Xdi1yZ|Xb?a=O zO1~)=P$_lw^aOf}dYFEJrI;+dOVZup$`0M*|GpRkh{A!p&;IVTzuV)9^p)KS`0M(l5OWpD*Qts2dFhHixKD7DVPd zSYem1pUyIQn&tyt6x|0p7b*IE8~deM1FwqH*GZMLPO@+ote95mJrUD?Fnv2AwnT3O z`qS1Q16}%Zo_k{LB816zYGERrY#qpPk`X%|&}0oCe-e$WiGFmWz(>kGAcrGA-t_jS zjFJY-X)W6~ddsVut{FTz;otkl?HLB@{9B7}Bs=Udur_=^+Hv~ls!h#<5;ZU6-Dp=& zT8rt8k+*@~$c?ayk-=4_f~T% zh8n)i^aSxu@NHk9W4B~w2NjwB`wCD?gd+E-5!qh*3*|y;q9I66q^8WGKaztaZ?BTt zQeG_b<6ml^X{$xGcYEB8L~4VO4SYw$#p!+{E?yaNp^1y7a{VuPhK#hRoV$CzYikPP zua?8Nb#5f^~g#8m0i*3qb#r9AQT;H=3m%1@h?1rc~9)q z%Cvu6bDn!~ZNl5=76;b?$;H9P!rp|xFkQF5`F{I>=exkG`MynpoB95YD6VrX3aeoQ%kZ+#Is;@U zv8X%P@5w&+AzS#OvtJ+^-$4J@fe*%<(+^7YstHQTe6II4|n})%dLhQrI8aK*7KhOD|$Lmui=FP0L&kk# z`=k!UPWMo)+s$5dz;h2ML_EzQDeARvyZXPid^VteaCUlMB->p-JH0QO$xc1Z&f=vz znP+~^l48z!UP|$jm+tH1rT1xryvj>eL6F~s^N*JP2m1?c=DZZbC#88hZ7FfmD@c`7 z_rRR=ittD{DV0|_sUP{l*(jbA1rOb!?k^7h5o|3E{vqt~&?~~qM6K{po2dKep@L~Y z58dHKbk0Lpdj$`*wN&s3(Io|M0S^V(h{q%L@?9u;22+{>e~6V3vc)EDs)1MhurFe? z>!2!_9%>OVR0Iu>SLkhMf~Gy+6XNF3Q!0tQ!>m*M6Vzp<4s+uBO}n{+Gy!+=e_liW zR!agEWA-6@YmqqR#%9)?n2fr*T>vA&~FP#Xbv3e7gTGV+kzR!&iLWglOQJH6RcI1NB z0c7~MhyYHPlaF{_kA7|rK`k5~HPe%jWh`juW=eS?y4`Bsg}QY~q78t+{bFBZ5nF}9 z^{W1neT}CF{&=GZ)6@v}w^n9~_E2>Xpa6NQwFL~caXZrr`kHiaw%c#{Sa}z{8m-jx zN%#uRCGZ=ODobVP`DPJYHqJ; z@Wv1&-Z>KU#Yh+f=`H-NrPpbIypVBy0y)!burecTiRIT>9=HfyV7LDnvAbq70?7BK z#GV>h#|rQSnXhzNfTUf@12SJ!@M6(y%=cHJG@t{-0x2;zdH8|)BMXF&|3<_CW6%hN zI{g%b2F3(RizCmU@82JPo=81&hNr^KV5b!MHokAh!B0r9&Ewh#^*)nOd<#>{3 z&7!QS09@D9D9@9%5Ay|xM>YV7As*fYz*1gJ60g8A7@TS|wp=$Ulw6Z@o#|qYpdn(F zvZ=K})P1;Y`Tjn(yb*Fa6kA>g&fn$Pvch*&+485u^k(^p!InQgn=RuKgvO`^3SNPt z>ViEB<2ic<2wpIG_WW^U&*~NNJ!tnM`(@7?)mA@yo;D5spzL|W!5HKn6(*ar=i-%T z&zeFapKlNs%QN-^v*)5@l|8@xKc)35d)}S1=jo`zo;LzWv1hLC?6GGLe?aPioU>=} zk+WxErbkC_52JB1ZbWsn)wd4*_^ui3`As6=f;~@#Jzgt}yAo;}1oON0jdl!kgcINZx$ek?>}^o)4y$UeCBDvjB$N>SM^o z9Oz@n0w;5T9v@&1nA@*Sl2S*Rjyyx|c~X0A82qCDg6RBYCMvo(XL=*kSqhSQdm9h# zNbk+}Dj$yr=BK1F_j_PotXfCiykR7N#Wnz3`cor}#!5(TR2B5e(dkFD{d#~-12jJl-|4^gokr?grx#JX%|}$=^lu|tjbXda zywgMp?y^;aSAx%AnK8^W0`M-z?^Wb#oMsy@6wz2-Pr%818a!-kLaoHWug_;X z5{f>6@_wBx(rnrs0xHitAXJ{)!@_=`*)GfBXFC%SpOl^xjoZ}Fr7}A2%7fz!dIh-H z!~%${phoaP(F6jyxs@l3tsKime=TPq2T*lIYo(3mZ$^Hpuhb}ifA4gPeF%C=FHNXP zY__Ncz~gfSsi;C`LYZmpY35agnpY#{NsRkNvaC1acsBj~Fe-;UbG!!!6;~-Grym*3 z9)09Z{>lNH{FD8VoNIK#Xj~{O$O%8DnxN&W?x(T)HCC@K;+1Hx$d%i!MRu7k_hAn$ zC%a!Xy_*fYjZLOM0#{Mv4fpyb!&Fl%Dy-b;%XOrI#vATtj&R`Qg{uocXc5V)twM}^ znEpRMg4IzO5BER$h)vE}7S6BDug`BZ=g*(t;@|u^b5s6~9Hlh>3&JRl=g$x456quG zn9Og_ADW-cpFeMSl)+$*&>XLH;(bYbzJCwHuDt*2q)iZ`3Lk01M}QU*R{rVBJm-U3 zgs9>EpSQf+jVxT&9>vRA+`m%e_K`NaXVdL`j5tV$BCeQoJMuJFu)FPfTKfds^0Yu( zQZbF;8;@X1eH*w~;n7j4ZBM1P-IdyQ9ZqfY)ML12rN^HeX{WQ_es-kIWUouMR`T94 z(w?KY{ZPDZq&=j!EUYVeZyjm3)%TJTZW(DC>zmnuZ6j^$Pn^Zu*Kmu|=XY73W?>0= zN%F-7Fz`DBY^=t$r7m#Zz+zlr7C5)&>HUEd+mZ*Tol&WD>gEw2PGWanSoqqNr`5pD zN&`C%(m;tX&aTX)zR!#(wn%kQ;-1)?xLnk}^yJur$3=hG+v>7;RmO8gq65J*-`+Ih z4S;6q_j1?hTk4jAB$=o`rDQQ)(PHlF2!|$pLz5m&ibcCsZAYjyzr*wjbS~sC6_tmk zPCKlMG)tkQN>zXTM5KePfP*&NLW#T zK;O^$6rihf1?VGS**5R@qX1o-D?rToQUM~?qTlVXlL)2*Ny)$8)F7n}t_i`Iye4$t zf1)N-c4AY%CRDzkKDZ{N9bj8yS2dxD^h>Bg3o2?*S>4yY8npcCdvE&Stq*?T(w}=7 z-N%6qoK3hwUX3)JX)kyN*CW?Vhz>~U-f-BuhDc1JJmLJV&(32d6@=6~I(^`=#h6Q+e4h)P!#0A67YVj*?{>=I0at& z&BOGw1n%)4?JR8iV+Cx|o&X!~XIrA!K?GDU*F3a}YW@?OeQJ{2_DBAQvTjH{A&HIF z?f45b4z3&{BP`T=4ceY1I$)Sws^EQ$WoxldzWmpYi?^_Tmq(?ppt<}pVq3}F@%cKt zAR5P%43LjxT3C>*I>vch?4PEz?I?pILdtycanonYKr5da)T zC$*BOzpA@0BZsQU>3uKd7Bi*M?!l$TI)eEgo4(v(8tzvx-^}ci`b(D<_-5F!&AiL5 zdlaK|*&AFA%dTX;#3EYh%cJG+jgj>OZ#n|EXh#&Th-)H)@UN(`sY_ZT;jl#wWrz2I zhf0T=p28p1P5=Xzp^yXwrY`Y9y-}!FF5+&e9d56b3#2uZbVQ81vBrx$v}2CfDQ_^a z@|ROC{%iXFJezhom0^*nVNrB$j|RBgk0Ioae0@$R55}G*rm8f-_CJBHfjl(v-U>}n zHy?J$-|0@#ghG5a7?IJ05KvPTR)ajiRYnjj3a2jq0@sofjwf>U>>Nfb@&xk$g;?CS zoB%`}5I{2;XDOExKwtan9PNuV^9|@bX|-&CEb3bh9oiW%P!q7CInVw(H8%h8U|N0>n4474m117OBrz!Iw8 z{a6FiH3sl+w&2i_%fP)1_s8zQ!T^LDj^#qf8k0c`5^!jho4=aqAGTxW9c)0dAjLMS zhm=AraCJ7f&l7(u-`Cc9SVYa;!H~RKF>e~6|@ty_&ls=gz$$UN(D((2YA6H^}M`#l&&2VP^UvwuwqdHY8}E(Q)B8j8dah z5T0q|hfMP(FEuC`)wDHykU{ZLeu@Ve)bC;(*R~7XUAqGSf!%;}(&xxVT?onarnx$u zsfDr$OM(zu-kQ87q0(GfVv@xU7AAKc67z@*vHr(_dC-0|_8_`c0A@dE-wI*<`=I{Y zk013j#&{U02dsE#SI5|gd{%3a_O8H>F@U_ETuOkvP07NsSNBmYWyc$!GfsZKW~U{Le?V zBTJGwDx<0$J*ndaue0?jEo*01U+vflWw?tQj|XdzTeTpxb8U>!^6l&B|;gcXPx>uF$Mc>=68nr{4$ahLdJZv?JBDr=% zt<=4=B0T%lsF@ihhGwZz+j8$>G>;=xqwb^^f|T{9Crpovk@Ql$q(=4Sk+?6_s5=SU zJVTArD{6dPYLw~R47gv7;)PeE!u_aGccM`qo*H%a!PF?DfvOrcWqu2VVEyedy3jmz zxp_hUy-=_K9(efDpoEvL|5BISGXSTUlp4c zUE!L1NL7rCxhm$}7-y?uGjkZd^{ZkVaw0kcRSd6e_(-u1DwS}riuHZe+$>cwT)-<@ zv8iHuMOBYS6}v((WPJUq7%x1NG^&}Qid_NK9EK`pBy#{&%qXU+ib1AQS#nkE_8HRa zkgAwu5UN;R`vV|cdafJRnu@GFn$~^l*WXvv zFFy8ZDmgRE)vvo}jN(5*{Q@S3BXg@`nyG#DkLi{fW15Yb8EVAgUeTZ} zJDho7X=xR(3W=noeUs1?|JHDCVG$qN!AQTVir}*1Maln1Sxs=fnik5MhFeyd8pvPx zN7`krfu46PKb7*2Q9XQy(ZW`@z$Y-w?TdWZb`_eEyf$}WT#y>OQ$_}OV*1Mbw5@Ia znr>FTnNz@Hmo^L$SciEW;&hH^hCx6{lI zti5w*DTYbrh|`x|D3D?;r7BP0xF)ssYM1Yr)laQAvU2BiDAl~1L*|*J%8jO**`Z@m zyRBdG(eSuN5n0{NNMDI*<4VF~}!@&s-)i-aFD%F2; z;>tbEdPhHYYCkv9d5ebr(7IPnlCQtr z{oM_WKgGISng_rR!LfkN^22~Z(c5KvsH5Y_ITB}Z9a_Q)@Z8{N9(S;%Fh3rTw8W6< zhssOXvo4@)2EcruqybjACkK01=z8vD7nhq+cFdKY~aqIYX7(){#fLh<)L`>T-~qHj15 zqOYT;WcRbm5UoWZh!%MW(TyC@yA9D$UOvef0A(LHqOUVVQ<+CJr^UJb$0PbWb(vH1 zhUlGwpoWyMNSSr!>to|95UpzRsb`25ITwg#Jz~fsq^8v|6VYvtXhliGWz8d+0mbPD zx%o*r?KLiE)*PojDC{4nyDKeLMbw{ftU&j;Bma`5{-a3hL&>t} zKY*lOH=4XZk1;KgT(Sv7vatz7a+Kbr+j4R~k={mZaDafAwpSR<(_3M0xe$gXbGd-H zErsw*c9HW3#Gq=b@&`%mQV8p;lT-saR+|v+)h4y`~+k355_&{&8`{x5DvUMuUch@HhvE9ep zFa9OcoFL&#lGH)=rc<$(lll;2@3UP&6gu2Nr1@cHQdAY4gYbomYA^&Hc{RP> zw4X>d?Q&30s5cBehfQB^8jlk;y+PsNT)>9V2dXBNDk2a|JN6(h&uI@Nztp3=lk$_n z?YI8BiR3Ni#~}~NwO}|5 zJ7fQw%epMRP{H1*hw#$kHG%>0fEH@r7@Oio3hl7Ku(%yUHbS^&<^Bj@#||JJTaweE9QGL3 zDEqigc5Jc3^{5Qklc?He3Iy$J;Pk8qze^N}~&N%@EC8^DCVK;kpxD z290kPh~B1&xIZI26J@5cg>w6`&5B6tt~bd*G-V$*qO}21cYczQsM==D2D3Q$mLd9^ zLUhk8qEo9C+iZ^L%G5JN_tuO{f+Mlb$|_UZW_yiSmiIj<>>sC0Rk+^_n~a~XGwkh` z{t~DEaX2lEqyNr0y=*ku82iJB2b!n3akMvG_c1eXKSFzGj~cz;^KhBwqw}S z&6If=!8VUN3wwji193L*c#5Iib7@;QJr27@obfn?2lu#*9~Upx(jUcpDSjlV|6ik^oc6Wu=&(a5OADt!l*qa*vlL{wwA%%iSzDf~$|~*(75fpX{_5f#@o0gVt)xG^v(bMax5Z%Pk8XJ(1aUO1+k~ zZ_lo6QNLdeSQFj0MKn0&agY6R^=WA}hx2H<J)pNf2WNR zlsC+h3FdoK)P`MAHXtp5HNW(PvO>DUd%`XmWuwP3eM)L#GusqIyAx>(-^BA*!UJAuOe$&2d-!i>{K*ooKiohB*0Iefe9arlzLD zj5Abk^F`ogLhsyUi#-==D@JGvC8u4Wil? z+d~VvH)7NA@hhq?TD*7}1-@qmc2VGWj&VQZhwnM!BoAg*=s68^HFQ@VOA%u{mZ7Q0 zj%?cD@iC#dv-a_v#I0v|GM&O>K+0$2-hxL^om>ixpG&{cY{~8lzWC@DBG8R>C=a6BQOEL9GtwjJaYEPnoMAF(H1 zG2{2Sz29WNAmgMC6(7$oW^H_hujZkBon|jNP$buO2FoP75oNm5Dv}2*$K;R#*sY5X zVKmF9#53ZT!Ik*+2VDHh<4n{|TRflw+7^M-e%6Zx`zd#?gFPo+-A$*vOalm?9OmHp`l!*_+uaFn7Ak^ig0rGHvQI=@)su6eym{!H+rmclH=AUb>}(e`j%7E$0-t zh&3DHJr~_ml7GC1i-H2(T7!O>F6-7zBhH$~3j@Wj_;U8xS(l2TT#yaq98oV(X*FrV zg{JT;vcclpwrOf^^?os^GE-g;)mtOlrRxORtZUN?(EfCqJ`Ub!$qSByv03U|9gnlr zE9{P8Ivl!7FsVvgpGea=BP|bss@%o z7VUmQEi8&I3Dfrxq>tsS(mi^$6|P>f9E`^OS1y#XZ8e~23$R65q&E1mKnr1e&C*<` zad|3X+)-Tn?5338i!P8@_%TlU~?6#6__@xRlH2k0h z&a50aYj2GdaHc-Rm^Bs#s8a+RM`cb4edyXO{x7q+dVkpQaafAYRXeHixHeY_`E|IP zt6vOrlOeZli-wd9;!nhXdBks7vezV!~q6TUyWBRb8$ZIX{cpq&|-+Sza!f zBq=%5H>g#e)&E42{2uU$#^HzTz@CieuvYo0TKm3Q9b^B{15(r;cb)5(T{u@p5e1?z zYK|1RMa53;uns>^Hx~zo>ZZcG0@WmWPkzRWsJeC3MQJxg)~~r&5r{T|ce|D%(u&hP z7-sDE8k+3)o6&$!RnqnNprqGmppA5$9<}rbVZu1oOUlxBMb3}OZR04KM#GvBIbRO! zc9r2~Jk9&zw`KI8@MFM&pB}T}S8aDD{4R~7!L=bLRspbSg(8Win{qbX=Nr{+_h0PP z{t&Rpbzh=!P=mJ9`LpQp7dHcI+J%iGD`h3Yod9uQzuU#{Rs>9Cgb~ZEjoYNq3%fYJ z$VC~@%0@e7ze&#Ay#A<2r`m;h#2)Cu6q&P z5cQCThtLvYf-3BM2NBrqe!F^dSL6fYRQ7<3KY29RVH42M>_}kak9BV~s^n2N)jeD#hVw zgE}y_c02u`Zd5?cDPM+>{%zb9qzt;W$d&d(y28W2OXKV&Q!S9|5<*9pQi5%X{6Qfa zpz4N2`ZGYmh^XGW^wL1eivpyoz(88pMF7xoExA7SQDE(fQ=DF-r}x% z#ts?gLV;-$sKq!&8h|<|UKbhAV_mHT42ixS8}SYamzqzk7KCxh9cV&l81V2&L^GO3 zLci`cfnU)iVaiNoPhR!JS`tsE8KG*3K5%u4TH%HiFAZuc5mS-) zyKf@^wu%_1bu>VA&RNfZmWBkQ zm=s@9m_#w4`ZG5eF*gAwZP!-sM`ZPDUfO##>Fu*IwkfBInt?a(_uPU?`cvnM#Gk-Vw z9|K-H{Hi@33&s$v@pa&Ai|Xa^9IXLnhCo&2wttJmE@SCen}mf|cNv`vP8Le5wbS1a zB)Y8+ixw58o;!aLLGH4L>&OMS{oy)Q`a9S{?{^m@Pe+$B0Yha*A?+@}VWUWD6{SNh+yT`C_C@JwI_P=qMEYfPFsAjgGf7tVtG@<_I*tHon|!8U!U$z1Boj572i-5YCihB{!)S_4Y0V~|9nv29mX@>w6@w%U@br(c2|YUvJU zXaTt|M^O{?#D&aa^@=HI8?UNQPKc5!0-RSv3~eF>CV?$z+{Q1qY$7xMFx`>Zo(~picCuYS+(Z$#`mdk9yxZzmrdm~Hs!l6|B2u`Ax}vVbbOnVrvl8JejivYq z=F%^jQf%^%F5~(w0SO>5n9zTNg^klDc_SHN3{}{tHz%{--PlZy%L#XZ-)ueBuUJAW zx+r?~yg-*~04i9V_BG+z*4^aKN_N3i?r#d0PgAV@1Wh4FTu1jujtkPy!F-uh{pH#6 z7MVnl2@KtsNAfh9Q=gaKnR$!O+{rd#!Ioh*B_gM5rJPsM7B=k*SXR*G(k{GJvd3tCS*@;dj?l!F-sTy=X#DG#*AvWGxq*!Ou^MB^*A#TH;4P7Oi{=w2 zwPBwIL5Z}Sy$IoGtKFIw0#*#z(wN^CW?Gb`>3+4etsoSMouH2QRFaWO3tg>?LMND zAo)#AZtM{mI=`5ok%}ftEcJ<>dLYsZ^^TdId^(OJyJ9#CZtBL%Ph5XZCzJ|D%p>Z_ zujYuCXX~%&$=eTqcH_F5=2To*XZP(3E?$oHK>ypjFZiG8gNS;?L&yK?W6PiU#__Xr z_mUuAhwfUt*}mU><6nH^8Nd3*ZD)Dki(tizmoE8odg`0DodtUoYmD4&_w9TvJ{4Uy zav#6r)_o*pS6T7c>!0x_Cm;2*6E`y~;IO{WDA!`)@Nv z^8Z%sxau>jUwPc0p0Ihv!;^R4;coi7&rEM#vG|+6cJ0LfoOdG0ci!}w`RCm7r#F*4 z;U)Ut9lYJt4L0Y{2msfn_hbnnHDcUo135*8n4aO#xyz=ho4dRB?RzZt_w`Io zjhhVqG4K|DRT}6^R;-`% zl3PBnxBur=KZu9Fa*w?&hhJ2+;`Nt4^Kb6B;S*H!((o_G&S`v4`L@61rB{6S*Mo7A zr!RTSu}^z$yp3dF|6}a$-<$<>xqOiY?=4Ie*wuTOVXRNMpEh)eZPM)udHHwkXj zlq>Q-AJp(+vp&?O-*0to+O(;xU^?jrmy;)29{i875@dmmYSa6@&F$8@QBuh6$>C8E zs!ZO%;CPM%YTSPla}yhVL0i4ihwgP#Q{T~iKBhXD|7w)BiMd&JTJt1YzV`Ra@&Ek9 z>YU7BVKjK9O_!W{K)`=CDV7v-6OM{lYfaM zPXD;6i*G@1M7yUj0xv`^o><>GgHJED@w zNOY6QNCKoX^1Aoy#aIyOUGZva--+wiohhY5k|58=%Zrx>FO@W39{gVQ_5Y~;pejIF zee;HObVcH7IjvS|dr9?2-h;|#E5`BGEV6|Po5n15g-uU6cXIL7VxN!x%h zV`ct>C>#U>>6t{Z9v4iOjX5yq7a%WdZBW=Zl>;r1_i#c0DL}{7wd+5f$VS0FWD|)|GtK404CCjW5b?iHY*FJ zo^1j!4GDcs>jDYc%wDc)2KjSJw?5VhgwKow%mBRw40x34kkrEAp^0-pkkn& zXY1kGs4Ws@7(8;KG{9>_EEsx4JSm$YhQX~w>-Otoq03XbRb+3qCee(1nLMc@kz#Hw z0Ead;!Juyp)Gbfh3BeOz@)wj0-m|vXLFW*kjUX8P7c;Yn^wjq$J*qQ(BB_{ z4K?r*M^*v_;7otja~kpfHh^Q@h0WBPQkc%dDHcY(Dq)YkojF1;e6P)9o0m4|6%!Sj z?~1_`IpMM1Wb&tFXJD9)S)zXYcV-k%S35r=sxp>?Hab`Bobx)7(M$}Xy1A?P6RvUD zs@3k6V8YM5`uR+VoLiU?mU?8?O@6~xsp%a}JD;mt9c7OY5qUH|TW}I!-PT9iX&aIF z`Fz&}Rvu%j0PM2KK>B9f8AU^8?%RS~2++9$Hn3p(b^-#BbEv~i{f9zfy-J7!?LGSvsIy2-vNCp-31I&@0>Ru63KIcL&Cpk_xSgJ&!FHOqz_r zOiH1W?9zA>h&Gs*o@$H@rA)hbmF6^~__@|BC^BqmU8>xR)%jyd+ZcH08>p z&|}~I6~k5}aG9Kh=n#C0*^cGbdNQdsXY7rqwd4WuTQ3zoC}}_^Kp=SM|G{8pLhflm4&?c9xV7q^0g%d0V{X$`mEW6AwqHav_B(ATHx6zxh@~&IEs*r zjc(7q+Tik6knFzKU(~pW_q+0RMjFfc&}tT1j56jQQsXPYVfn4Ed;QeZ(&Nnhu1vto z!PcRi^eO4z#V|0~wkC^7)&~NR2*)ryTJFHLV8lDObA+Rx;{T^w%g1{;_Gy*JIwYI)Bnk;4f z&?g)bqS3q%?MNc3v6Fcc&OI>OvXMlPY#xb**2aorxs?O7+8ehKaEUMC9L|s&6OCt~ zV4(mf9=E)~c8TtN5A2f}A42#NgIR4!fNl^nFQs^V3tj9xeq1QmswL z^!&sZqh@6@tVw~8LrG>`(x#$jHHK=dYGCps^4_{2OE0{zlaeiGOunn`*JM{G9ikon zx@|h>K3hbQ?-zB{$OCIT-2O2DMiD@LQS6C(kohM zv14;)fdkY=!w3w5Y^Hc9Qo07f#_kW9Wa#e!z6LPhlj*qd)?ud_7YCKo##CJhwhMs= z-0`OmL4ZOrH!^s&J{tG`u^q!5zsEOg&04M2zZ486GS$&>f!v7}IyDHj&w~83km^J}4RBe;RV^ zp0x_!Fr-drj*tMWXL=!n68H7MG&|0&{m5{exbKJs0Z{wLnI*BKOzxa%`gObAY$j#L z70MQn#9JB6At<}>dh#Tsxvi0^s(#8A`G+6r&SNssbx~Z`X6`Gxv7byJKuzZJNc+T0 zc_`Et2s6o4NMo#9ZRrjm}WcPk0Gn2FA4Pgv~7x1E{%gKsK5Z-(>pWMz5YqG2v&o z{@mbqtg+tjixQ3wYFgDyGUhaCRk2OV9w+rl?g70en!3z{?!ZY*Et-)FlFj8I#xHJT z{m2Gn92qd*IT)}qAU-rcQa-63&eZMe00Y6*tQOqU_mhIFSb5wk6%197KiqQTS~ocD|ZJ$>$PN|2$! zKss7`0JrA`WAvS9!VNcu`wWjQ1ggMsDRvhzJ%NuoiL~fLi~efihCZTou=QSYy?qia zy?(O1p~!=Zv&Pns>ha6EF|e(%_>vLB>bBi!96MmLC$SBzQ49)aj8X%_9AU$ZZDfNz zA$Hi~vU*x#ULjsR8lmrMSDmDfw4xiR%6?iWS@$>fg~h5kdm)()w^5)&$x36Ao}Q^U z8D5+izI*kC6(orW#J40p1&9EN>`~-9JE#t;YZ7AOE~SLtFCR0(Z2g9rUDzEyGvnCw z?>Z^_tB0CY(LM>Zdg97jxi*Xc6Dij6EEp=Nw&fU(Wwb~K1`C*)PmyMff2RlkT7D)5 z*&NJ?|HL@Z5N0tORu?CcAv#@i3uSfyt|XndGu$Kn$vIJ|&NQ=O_|KQ>gpl=eKtJ!P zb5cNH;;a0FVOMx>(;D1afBHE%M+hWlCpsvCHj_<$qchozPqMj)y18TeYET)(VZ4P| z1xnp&K3;Q^7f7k~b`?Q^6xym^)N+lLp9T-!DLA^zzQ{L$vGmhO&PEw__n8LYrE@Pt zN%6W}DBaF|66cVBb6VzMB7DDT3aC?D_8dc54Pl|^W%AIql-eFNZHCVb8sPs93goz1RvhiJ=%=> zS$KIjys2}v3p=B3>%HbeRdZ7*&Pw*`6ZXn|>fVO?n|nFigeAB;O3c9djNs_Pc*;iT z#g+7nnIVD8P`O4O>hxSn?c4X-Rq3}FV>UkEye~Wb#XD3XREvO z-2FM*@BP-ISvfn2qdhoZaLSmq1UZ~F(M?pisClc~jJ>VQrb|@@6~kaqfq-G?6zvX~ zm2E(v&HJ;*omHlT;7I@eN-Xttg`$Kh_m#dnI|{{>qBf_o zM`LTv2SAk+QXV&WPG`Wi=!AxXsBO^+K~jK_UuwddqMHclh*W?v;DIwX$@8Crm3ntF zcd{YMv!T2~_nHZjMC_(G4Ah+iRJ*diWkVBg-ODCADb2+wbZy!OA+8DdX_2PS;XS`k zVJ!k#DMCP7?ZTb}f>cmCYGtOI(3rM!v-r=tbF!E^M%Y8i>3Y|R1%Vfdy(eZPR34t+ zZLb{5Kk}}T9mOTCBU$^@vCdOggf>aXe>?v^{@X}~a20Al0K>=)V?ZRL_K|wZ<(;R% zm!xi_bYf((>w{2aPnpibKPH1LL2X;7OJ^~%fMOV7YC?<$G@CLPL`Fuxxo}HuXbjxX zz}W43C)40`1O1Vp%K#?CKo6%|=+m`OG@$Gfu;WE?ux#6$0-g*Jh$o$t@d~eAza3cB znJ2b`&)s-G;u}L15|>w?jo^8`4PcR3FJBt)94^Ku`y^tPwfb6 zbNC_bLy8R`+&b52jZ+7@tQA~}*5Y&38BkxPCkR8#Qq$5DfO)8Qj10PCJp4ONZc)9JMDS;4oxA;GX(wHcYbk zypLwX>FYQwG3i22y5i?B^`+A9hH216<`~F)y$Fi+s<`sFCGHuj|CBMG^QcL6V{{^$ zJAuM$vS@}F(&O{T9El(|xSAO&X3)%rPUkFw@!_WU>Hz&U zY+!5^YPl1X0+2vVy3%?7UKA&^gJ=;v(&V`T_F!=y%|jT~q=cjxAiQ_zMP$!Ls5Nk3 zLPUmq6RQYMp&xDB<<&^p3#dm;!=n$_v~Q*56ys&^lrc5cf~7zqd5i5cq#L@y(-?RI zaTlw(Z5dj~!$qo)faNjl&F44z41~O@JLIKs>=JP6+K2~T`d0AFY`pUnu|AE8*@Q#Oec4(Eyu#h4|mFdOA8DIq%-0M7+D35plt zqfk?%;pngovt$k(ookyOvnPr;3i*UdPtsl8N*wk(n1vNTU*_WUy;@p=-PM|EGIm3% zs)0#+G9(-`%U26YtOc+43QiC(@`{4<$7ANtUU$!AzmqB=T4&HXl!D;p0*==tTLOS8 z&*n_p;wu}TAW0EU;y_7*lkU&{FK=%HW!H7pdESrr>g!dNZb?;ES(4-XuH;0H6Yz8r z~)rh(w3>BfO{5J?D5LlXf3Oef&^{r~&i`(BkKC+Yc+m+Rhl?>*=2v(G;J>+G`+ zx8Hm(Y-(znFQVc@-5TL-)4bNCBVas1+zh*~v?jBgimByTn|1U6^&?!_4q1`uk7Z*Lrq5P09~ZZqZePQ)a;4& z`t)_V?dw0x*=t@r&^{Gwz{&`8<8f_j8PZkV%_JOF=f)81IKvu+5Ao7#n-v}zFAwVw z!Z{USJ^uWtfne@dcp?)EpJgUzMy7Gaku77IPHG)@d)2HxrPi@*QbR&`Y6yct{6dfo z+|bOW8j`jPIeZ7iU(yOu|7qNpWG?w$oyEO9A59b(Y7(<(E&!;|@Y&ZWMyQXqE|4Z3(FO7?0W@(Ota3dBp{?-F{ zJ{VA5Gdw@wC6aJ)fqBQ$TTy*-w9g0A;`BJsFskx?tiKXsVw%VayXm|RZ~OlTnBOPT zX95lO(j}p(Q$(!|QC1NdXc?noVk%P5ZKH_Z=om%0Fjk3N`OW?1;>nq?Fi-so*qZfv zERMCK&C0Q`*GzaUr-{)Q?bqDKjvuW%vTDNR4PwL8&(O;$Qov5+SD5+$4X({$WZOR) z7tmbA!mZwk6;lRBihnDZ^?In4>9^r)DCA1paci7aLpE&$CZa{-!;;_*;7N4;Y8}f5?hN`#gLz09M`~ z@@H1=>b&~9lEJ{NA68$G>Luwwc0K*MQGaUvIb5C8Wj$)vau{7=73I6$_YWD^+4ela z2dO++%=GD<`tydHPo@C!#|ckU9ZGJ%i#zn^bvxd=%O8gR;G5T$N20BbuB~@Hc=UbW z>c$=>YA7{EvKW2)Fo0iMz5_(1VL2C#k)cN~PWkmi+h1>Q?TyjeJ!)-{Ru4^P~=Pq3VF+9*6?gjdgD@yNwZY%c~3KX)xFrBE3cAMa0DT{ z_QwRjhBHRt+@xo)OM!mQpg-ZikNNKh^B9Xq^8k6%%G#)h7tLU*Mz(QwxVn&VWf~zv zwGiXK4;3Dn^Z4oIl3+@<7d|#4vnnWpbZq+gf}7{8Z0^td@6&np5m?5xfkCk=~C z?Kd%t_bZmoG#3;L@4H`G>#Y4pMRfW61i*6wow^Ow)BelhR;oS##9c|vK=UwkI4 zZSW%-tjA9?|6Mp`vT$ANYp5eg#;XX;5{kHjI~z2N?{1b*&_vwg`|Y!e%BgqV%6u$d zd7{BVOJ*31ks62X{xMl(C^}y+9Y1z_tThSvUv8rb4kGq4MVNMQcO*w~AY`NONM5V> zst}V^r+6}I4=D>O7gnpit+@T@=l+I$yr?2`0ChC_Q_fYe|=`FQGT`s_Rc{~f;C3H?^ zEVUyY=IJmybCu1pumZN&-laLFp36t2{VfKBBo|#L=i9%-Gfa7PR^l79C!puM&n<0u zuJ{(Y=Y*zd9Cb?tOk6szNvsNO9)_@rW{u8eyYO;qc`+2T;1Y$E&Rq8eY=V`UfU=&G zyL)OdL=wyfQPR1fbig`?E{1}{ z_?HM2fHe<~N}eUw_=k_2eOt#Id9fX)n2}HFInxk}{@U_s|GnV9&kUb!h% z$k0xJ1*fy^IZ7wy{8+TCFVDGxCx*egK1g}>M{gb*A~Y9S7M2$mcYOi5@js3d2dNxs z2v_0Mg6uV{8PlHy9AHqwJPuh!QFYGIh5N@#@*~+fx=VP1b|^;_89wsEW_K)7=u$r+e5>8jn#wCQ3h@{9Pib2b2wh7 zjthgSI{pmlKB?nj>Y$uHzQB^ywdFHx)Lo#=c{~{D#lyqKqwtPlb4B%LDFRROa=msF z=UwXQK{x7yH0p!#nnc??o)FVF&M=08CqYf6kSz+w&G>6S`=>r=rIbND-ws`X&lOJ& zASJZY=`T;-6#7g1Bv1F?UjX9sKm-kz9R%grkDn~jr4ZEkK>rO51n$oPcwgDmU1eCQ zU1jIoohQ2Pd~gtzJvNBShG+3j$QKYmCeA|f&U?Y0j~JW_697-S&WE}>pGg2-NC3{Z zn^P6^Ks`JGYSR@w+Ewt51k}R-1>Lou*HQwQIu}h&^qXgI@>nvnjG`w>Ua|KchZSEx zc8RZJ=6)~%_!t0+1ULCoqyWB+8<*$uu(NX^lD_iIooCc2zDbpee)om#A(_LO-hDF7GPbii6+R_{?R zEa3eWCEOi7zEsSeoOOhnyjNJ<$#`(os6)y`tYNFo%2tE)Y-Ytxb+V>LdDZ}pN z2t-grklHNUs4&g&KB9owT&r$Apl35OJ@(YgJ*}MkThR)hZpcqsr&H#zXpZ+$b_joJ zI2D(}&9Xk!ZKXf!c(GSRyWIB+?Yjifj1nquYa|F#xit0l9s2XSt~hGEmhBfIv3r#+ zXOWNs-s5WCkH>$P?&*q`(IfcIBO^6~fMZ=QK`8wwdIZCwPFVtEC4z?`J4(>Jtgh&^ zG6(zBLkShc3hqn!2T*&^3HbRY{nYmfvm`_XC}9^T=JL(6-wGWq%jRAtHH??H7!9n~ z3yx?~*a?>F@;1wrhl34dF}juwS2d(Q1the^yIs8niUB+IZMN-O^hfn*Mrl#&LC4jz z%uEyP-9tTG-YAKPd20=~e^4Z5vin>H( zzqN`6fZHrS37UXWDzbt7B0(>(%;A0&s5CWAp)gL95{z?~^fZOao_y84Xlmhy$H50M z?|akD^#jfFdr)@3s}-OE&7pYTw@Ux{Gh!-)Td~-{jo2rnrhdW8!!ZEG!}=2L&KFaf z0SM|f14f9iD0m*d1?lR)PZlw~o+_AMXd1kLZIb&P<)IjHV8Tp$j#65z%1_*yP$YrF zd;#40$cYmT8B6gcIIKj|PG!%z@+V}8fmc5<^#FKXv@qvt5exCBfhoU5U43944xc<35lQ+AQ0D?XzBq0WY$qSrN z<9j43`1pLHk*7@~;FAv$KF>uq(<(3#C83uF z=F;=#&Y;>iu!M@}+7%Lvl#p89K+q$=-lc6SFai{37I^ETJ&jF)oYMM4(Jqtgj0+A4 z+}N_82$xDyr z?6S-b6(rE8j1|jF#dnP!%~=7BbOVQrTUzPua;W+MOgYK9&+INoW^jMF&E$IF?nQbE zC+GHhW&});yO;V-?n?2hQqFbdFkWv6jbhVgGrZ-m;%|K@2O#%dGYSC^Qt=*`E8r z0_DFpe{=&ru}ik0?27h@RcY4s@I<4W&^&nZ0}B{VJQGskJvyd9fV2;zK_O(Te}q@Q z1C3=5TfWE=5LRoC>!xxt58D65U8)sE)t?MP{H0C?(K>>&Q~IEisQjH&zOClK#&uI#}IlgL)4A`UbG&|7^9ba8|;p9ZBhN3*)Lb} z@2TXQqGaI}EAv;C#@-v5Ar!td3~&z10i#Yj720> zzo1=MiqKSyF68Ci%(=VD%qEE-3b=yy2_}wwT*d&KK$v8+$W#!;e_HeMXD^Pg28uQw zMnrQv(psIOU9k1FML}`Sj=hT_zel`U)|PyfO1%;{Q(G$Tip5feF#D8Utng#YCE2pz zW(unI)`Ec=*QnH_kei_wq&0+N%(h=I&0J%}s@AgV(Dt9Xb_sJ4-p&e`?_>9=u(5Qs z`X_5mL`MO8Kt5^*^pO>2W}ODzp}mX)xWW+nC8ADRG|CqO1-rb|zE9 zr0%q^Dn=FZVi)MoWKk3(J!beufD%jx^Ur1)yk5E5zHwJiBh0k`#=mcam8>Ukx-`6>wL)q zu~z6%{22LsbRFy3$VZGzbO>i(P%Km?!x8zH*~FZ=og5~7dz-h|iN=a@L%nB=$pUo# zNvk&U&g5fR;s8d~?tZ%%4pTVDeeGxXkS>gV5H`V)4a(sT(sYrK;YQhab+!a-j$pK0X&`~uo6sAk`(8bSAEGc&OMlUJ>hM9Q@$Q2 z#);8=bV*D~W49Qwq1*vibR&(xNn+kkR;P*I78&)!@F9jl4;T{4XpSJ96(9roYF0?4 z5yGV;vIylNh4V}&P#YY|XdXmEuI#A&JQ-xcZ~G!4Qw)m7%$m=SnAPl`7hbv8YG-Sg z2%qUkKS!uT&*raUyq?WpeXpV`j=%*@zUqYdg*Udl+D|C<*!7C){OE7R-Wf^ik-Tyi zEj28LkrIT>j{bGQHu?6S{`#T_JP(4G5=XZOA&yl8Dbp43A^IK>+I-_euvqBmalq?hzPtmz1;}>|J8(67U&HZ};lEK=*4K#n4!Y(od zE2(&VOg*&g$(@zdO`*l(05dlY3vb=@t#BP1{!RD+n|pc?lrS@Z;V#vXzALSfP@%?X0M<+Qt|1*Q6yN4>MeZ=`rK1=FydhDf zI66aCeQNuFA$tNz%owmtm0Y_I6Lw0i+*mK-rD%_gbSzGAd-5Q|b`l>l zhhb1LnG^GYPsM+JwOj`C;k}WYHRwIBVe}W;2X5QX7+dedeT5T4bPcm%1YSdGXy}~> zqEMFiQfbZBSqcRjd?##b2Ju7g!=2yauJ^>8rA7!ZeT(B(6|36u0?%hOsp&;Qm!rWQ z4}xz@f3Xl%O_vG|(0>G;_z1f|?2tPg1@fAJLZvl@q-CFBg|P2{HFW`Rc$6?)IBypC zqQfP1jf4YoxX9t?;@bwnZ<&D`c2GKqG-`(%xB(WF3=qM6$OQUls@5ZmrNBX z9KOiG zzq92Ag>bxO<9v#|BS~{B?bL3$ynUU_5%`QfIb;X-^llH!mcZYwDVsBh==%NLLb{VJ zE{jcPjuvnlel17}4{n7UT+3!*YRIg@Pbk9LN^UO%?~3X#m2iYn)QA^~*fe_CtmuBFBLdG_o;S0f}dYB0=u06&~Jd@<#ts-Nw?64Hk&q&Q9Mw>X$$#L$o z28Fqf+7BW55gNqE4x^irAwn_66WpnVpnznP1DPyU6B9VB@qne7rdgx6NHs2VB5sT{ zfJL9}@F|yT*?vh~;d<>Wu{l^zhN{aYZC}RUApf25hJX;>a=zB;r$%$XX0}>DUtlWZ zD$^(Wfa(f)g$gNwJ3es_7TLQir$IXxsL|JwvKM~~_5~RmO&JDSnu9@Ce=9!*F0nRy z6{q%453gX_s}Olk)v8sS0iebs?0)7->=dU?NSVhz)n&#ilrbaZVJ(_hKzbS?W)r9C z*hvIXX*%YkS75HTtN3Fwwb-7jxaE6%1_pryTKM+Kcf!F_RKoSGxJgbuJ&T`&$D^N{ z%Xe!wUr#VK@zIN8sIq#?8i@y%vg%JqrA$#_F?n9JXs=SFF` z#TK~`IR>yIt3yzt(_el6T9d&G9{P3Oqb%Zgle2>X)4|$99dCrGn6lh23^xxcBNf?{|!XlTlbL?3KfWx7u8>rZgna5cW}zXxG(UN%6ow~ z-dVuRVqvgy#UpUUPYk{CC#LKczdXbw)(@N4_w$*8X%|}6F$5E*dQ!j zX?Ei+(J*+LY3myG?5rHzOYpa~FyuY$#AEsa07}!2vyV2J@b^a<@Y=7oX|o zTyGWnhIA}0oaCqHqGM`UY!+O+q%cBOz%(m>vw(!8t^~#s+a|%(LO4cQDVAbHc#fv= z0`6VAuM}YGBA^WLLC68M7@Y_ZJ)>$P zjcKUE?C?3gw4SfdqgF6&?P^gvKU_7=hA53zxVFvUT!2ul{d4FSlTyrjoHU@98=Nwu zzI^p82k_;rU13aQqrcpfuP0?-fd}APC}gB=BtmtO?W8FYI@3w14R#4fkP7RA%_9E4 zMq!9Bl?D^3#`VHv%|+0vroluW^VBUk>%QKrOuT1j`xfze7~np4z}eG#VmjV00BcT5aGc8Px#} z!33-K*7NtWc`iL-<$)QezBH)M8Nm@Nsv34>>$$D`ey;s}3-Y<@1bob25B&%<>x)== zb6f0Fgh8u-lz$2^gNP(m15pHHhFZ+xR#B-(?KzSZr4MdJht-K!Ks!|f;}Za?QrZ`X zlnOCbA0Swj2Rp=$oZuoAN^2LZEOQ7#X~(If2_Iiw3(lfMlRFyFtd}`@*zVCR0Apo{ zF=$rAS$8o)&AP-dPKtq7i$s;8R2V?emE5v8$agU)+9q%L8Pdr0&?t0CAwFSPT~QSG zDlr7EnnlFq6;Q=#%PE_LL_-8uk;q6JY;=k#H*C_Z*R9$ZB*oMVBw3lvYiyoDy?m4o z06rAFhsP7}>e=z~h*{CmnwQ3Px{0Qe4jZzQMAnD|is)DG@d--U@4-GCNfr7lBydOl3geLW)bc2OvRw|b|xlK)1P ztIIL^a2u@`NVPCClG97LnvcoNw{uCL6Mh$xnFWH-Cy|NDgmd-%PDMu-kt8w(Nn3;9 z(fn4+KBEi%A{3ifXh)cM#Y*ssbuk|#$8O<==IE6cBE~ttm&Uf=YvLu;@j1Lf#!Wqk z7!MA5oRTYXqqJlzYkWzmNGK|e?3U7 zWS}qnakO*^R-!#!Y9NZB$WRNK8Gu3l)2sxm@RF>A1y}=^SjhlSF2>BZ>V&$1=J`@$ zBmq*-N?@*1(E<+c=-f0b+1Y}e#eEa_Va*YDwDCQu+iGKAG-WT&ZWKltA6AJ`p{n1t zlV-mA1R%R_!1Y{3G(-B#KZ%OyOUdP+VsoyU#|NmB>7oXzzZq!;noI3dYrDluP^CPB zga`t863P}+m_M(vgfKsY zg}K9YJoOW$U;V^Fhoz)``qSyY)@FS%Wi_JYn?UuGenFoMcC%FdXNNMN#t3MEuaC4; zs_N95S`J0_QjG!!yq1qF3e=(~Wi(zAkAR=TIV5USu^5F$OGgau))e0DfG`DH?v;{} z_{VU}6M}}bYy|qRkTSRsPUUL!t82a5H-Ct^KBe}_Grq6bknIS=1*ySBv2SXvx_evH zf==JzEFKwV^42Lv3WaYMj9D|D=fp{f6U?BMNE5{7%EnjNO{ljo?cTcBs^6}LV3)Rp zinPZ6D`1ZG7bO}p{?uHX5%2-W(k6MvZ6?Xl0w7SeJd$VGBbfijpM0itS z?RYoziYXfekIpFX8>0LGiVhYg%TIbMdXmFIlLE&96r~RrB;F6u!Fq3KMpgxJwKH#J z584RCe3m(=9yyXg6*&qFLB86vU@=KZeBo$ksfw{oXf-GsWT+EUIwRx-6-y^r9WO9b z*vdsUM{5HjhBd})4}Fp7h)`CB+LJyCHZu~N5x7hoh}@jgN(CyTQfDR}9}_TD8w##@ zGC_MN!BKIoz^Hl!cE4BD-J**7sNt9)-QRS&D9EU1(Y5H&TD=6L#G#JxS;N1(U|eG< zg7TWFU%+e`Rjp2YAprcL51B`>zu?FcHWl2!*pq!4cK#)>hZ9*|OBwRkLD_Y(CjAEV z@n{`o4!LlJTD`ITz7sVnJ(|H6wJN2wEZAF`rRaQYkHI0Pfj}1~BUbgJIix@pR@FpJ zt9&0C;u27&U!(>TP$C25lDW-pMu9bebz8);D#5q-4wtYhXLyf*vS;PrKgB+&Hh_pl<>OL~WBOaWJQIDjrM6@ALJH7%#WHIFk+=|zw zhKWTGx?e9#TNDM<%b_iDzpAJ}u-Ivfzelv@Uh5YpMoBPrOd7ORAq( z*HnFpb>TC(P1PsX1!iWZm=_vx;=9n8RL19OW4ejlAe%W(wU87>w{VfdNF@G5VeCJF zK&BMNWhsp5GlpncVYGcI7_WbRU`Qd4z**;&h(#ZHwCv2b1g~I!q?ACo+nvswZkCq0##NJl4s7PL% zNk83#>ykG-#MP=F^)9fpOIoY_h`Mnizg68SyApcqK63b!C)V%N8}_&D!k@lFfp9Ii z1Yqj>>Z2kv-5njhw~VFP4J-k=$ErR)2X@M`qJHD?>SZP}G>#iI>KaPk9an{0E!W2#I}i@X9Xk+eFo0VZ$u@wPq3^8v+fn;| zPL#!O1Rr`v8V##lqQ~l8QeNcn&REp=D@>HWk@db2Z)xy02lhR9??CLRp#ez+YQJQ? zOQ~kkeo%8$9;Z8W!;!aA2`qu++sQz%m$py}u-mY{#mBwKq z#m(6(V1~Fyr4vG(noGWD6#?GB!i!l%dk*5QuH)2=5wI4FmjU|k*znPQ;{6Nl)9+t+ zNuITzdjG=9xO~>XZmxget$L{^=ldrQKG0;}7*AMOtRK?-C*O~@b#tYAuFCEDEQgnk zZpqnMq-Zj4{sBk@=9b+aAaD2KC;|ZOpLt&phhC&(-m<$!qqpVE5vhIU2DDbRr+(0L z3X$FZ4wF~C)s*}l`Fi06%o9DtIz0b_GhScxO+jfdISU~gK^Acdovw9drJ4mU8^~D7 zEa)^b* zPge+LN}YT%-EvgKBlwE)*-gPQh9FdAbZ+QyZX^amW?Zzt{Vyd(8oKElAv$(ENqnn{ zr~Ld|2uS1$rseIa2Du8ZyL3q>FPdzQQhmV`{}-JzHr@9WKuW3 z+bF%G?k{w8U%04lZ4S-aXZpJN!gWWHN!|Qzqx6ot-|j76;N)T7OylH$>wbry3nzTx zx}(UXZhoiIJL>+4uI|l?>OSPUAMNYr3)dY*CUx_>jnX^n{+X`s$1bY7cHJNB>*fpB z9YrQ}^Sh1GJL-PsmuF+62&WF;1fy=B-ud9Eoe!Se`QU>)A3V16!P6gD&}jouU3c>( z01{QTUr0Bjw-hOQzu3?ONVBnke@Dc$LVil`nVHN@r{&ji20Q13m_Zbkp_sd4*DUJ$Z@I6iezh|*?6_Lu>+Tm!MpquD*zo+9HeeYw9qa01}$Ky9TJTz%p`<@2f0 zYLAL7!EvRm(FYbIso>S}6r8kg%o{BfDTabqYA1w*{`^rFLk6?oRTaqA=lOyzEXETc z&?ZMsZkskG0>^ezW>q8suQ4=An&Z}=s|kY9*?$0}Lk3Y0Ap)cew@!$%;J&wr2Hv1| zOaU|#0C8F!Z_#0$;>S53GzkVo=_5HHqI z0KNg?q)e266sb#SK-wEgj0W4%34^z|6b0#e5KY|0be~DgFOlE zTzpJw%N*GWRGClLlj@T%aWI7qp^~wnk~d)wve9nz&l0QzzM*@(I4hnTRs+iTN>5NH z#N^xwZsOf`z`(dQiU17c+zV`!H(*RADHc6o5KG=Zm;n1e+Oi{#4|dnTOHD&m%00f+zJav1C^dg>Bbq%es!RF3 zWObN55rfT?)68N5pDV;Q@c>d+c4Y9tEm`_U=$fp#3xDn<;|*K#FsNGEmv$ZCz(S6tCtLNNP1eHI zE;NSCDfG!JD}eV1B>3(TK$2B2dgOz4Z#{R6)c!bW;4!eRL9wB(Mk$){A{IsLJs`4S zG02Iq9B4U7SUR{Nc?ZJNgsB&#|;GDZ@>&H`r^|`I*Y!2p5vaYkIby|e~ zQ&0;XUZKNaqqt8YM3#)7fN?-h%iqgo`9Ah%+)#W%44x5_*<5|E*y|j0ok|_%b-VX_ z3Cfh0+IbS$g4)A){-)Qnff4o!RcK!^7pRL~U5x66<-d&MDKO4v$GZe2ZXm!TOiw2v zo|;1vg?~h&FQMFW_Q2*4Y9azxI+%MtA zA}Qs)R!YHyagIgb13FuERv|cjk9nbS;vGJp^l_GbyJoaE$1APwLhPOE=*)nI+^L86 zf*iikB1Tj^H&2Tq#05pi7HuEIK04(=5b*UKNJ*SvUa1alSe_VzGIT;JOoVw z&v$rKB0%b7X2B4S@_9eknO7RIz8lQIvRm=JXtokH{ngCYp%x}<@*#kI$yBXB%_#?6 z)1mF2*2Kfeb>03dXJk`!$%O9tie_Z+4&c#ryZqz@y9~-?Fo4QojH3x{jOd3Zn}$j$ z&M=aNbSTmMDs{*#hM_sTB?i`a`xRT}blI!M!ZDf$4vZJbRr)gGO* zEQ!u3$VWvx9v<9mXD1N1^`1xIM)UjC=b7uuO&(|_LBArx2q(B?Wyl$0#Lx;O+bYAG zo-)hN;=>$0Uf_4E@$*OQeY^F$pZ^`0+)VZ167j%uw%q7`sC%+4>0Sa~dpU~xrC_4& z-irYR*9&e(wr-NQ)U)5BHDNGR+>a8^8rc0~u{BL9bPRRjex$54-}|&nNAn5!Ep5|n zC|?`D&;V(%DPN18%!6Y(lY;UDx>$$j2ZN3-S#7WhnHfN|U(8LIT3;8i%9=@a6|WWW zOhW1^TC@^|U4NM4QY`o5wMS(HKJ8+_&yMJ)7ugXXYYF6wN}M-Lu@!Tp|0*kJ7QXfN zFVGhpB)>Cj6I)!DM*tC89XlN_kmWPmKl7W?ou4K%`1~XF zd{3>f-+#-8e()r*cZ}K zLAL((SBvU1vG+lp;GUvjP8y9AP1z}4@rER9YFGc)S_JZ;e}>SeV$=#8>o-60uRi-5 z@BCMv{R9pgIqsuC`$S%epz4|97$puO5XpOZ;BU+kvlwEw;T}*Ixr5G#mlPT|W=-gZ z!lL-YP^+gydaE5LR0)ApFWZ-meyA*FPL@)lyKV2$6qHIg`3R?lNKVQ!j?p7=%7>;R zbp`t8WYL*tRM} ze}yK4g1VmzvI#tz3#x6R_?~`l$e_M^KDG3dxBmW*KEB2F0p;~tsJ;_!2R@h;30B#* z1L0F9fWU27b=wl#lp}p{%iSluq+Z;rnN?dfDj$u}kq{6&f=7Rsvx(Ek?lBhj4k_dW z4}nms)&H#eb2geX1D#3IOd!{)=3@1ekTS#}O;5~$`*qQy9ObNq2GQgowv2YMxpkve zDDnfTU`Y@%@6$+&fAh-YQI;F9sWGd65*G40*V%DcvU{vJsYTDxEIa@BCOzy1+$~|( zYQVLQ2n^=BqJmO9MO5kJ)Uw~T<~REEpjhk}C(V1+%PzawHnC0e?FcTdpfHZ=0zDD< z4&Rsjk!}$mgDBh;`rIGH5->q${F2bu?haL@$tWGhbr~Li0tZxWR6^sSr>4e@uaNj` z{t+P95Ey)2v97MzQ2^f#Qket0tb}*)Fu#tNj?#9tx#MWi^y#>z=nNmjX_fz43W!3C zk)Yg?Z%eCf3EV_JYQJF%L(DBmz_W?Z@g33KRg6AStfj>~HOrra79WTi>Bie}AQ%E$ z6h!3Je(|A^>AKAbju9WgaYc-tpR?U24zcpLw4z+fQ6=PowF&Z4C&((U$+6-daTXRo zG!0ieO4;5SSs4vP6`gVIG<)nU3+IBznW~~@uo5+MbcHJ1Z7#9BHu>Vjl%h7B+WC&z zd?js*SvmwMYo<65f+z$1%IF1@2jdml4BA9_V(uarQ(i~g{=&3OchQ>U5SOoB5#F*-tU=efdV;8RI88ZegNIj%& zZ5R{@lPgYZ=lYAt13EYt2-1{$?BAR7txzN{V`z*Bb*M>UQ3(~quoxA)K!q8jXNN8E zX;f&76cbH2po+l+8Hy0`lN8f}5JuYsed$|$*>S80v~j$ZLX+NSz~ z5PXP1RbTV!Z8NahLYD zEEFmcA(jlBsXD!;?Tyyb7&ihB9$M_)!3c|L(-QlEy1Y(@ueeJ6J(X8Kplyj5kl=>c zSXn9amDf#p{UUvHef4kGbi5|PkqRh4X=R!#Ky|r#Vyz+UwM0h{2@$F->C0UWf1!Eq ztg48?A(gA2SVLd}L3YchzU%XMzd5_`I360*p5Ocp{rl46NwQyf9KS!hk~Bf2%1Sr4 za8EI_C?FJL+!!BR@G^Ngc>Y#BpX5T4&or@F+tL7lq!=RzJO_J&<~8wWa;h zk3duf$Cc=yJGqw@+lM~_8F0F1`w%p_2<@0GFRtqSYYKl-Rf<$aWKOs9-ZhOkw0uMH zhPs?yAia~PpJCO~K!HEvp6*aB^|*(ZU)YEV=vy9nr~bXSJJR(0O`u9g0#tuWK(L5K zWUEG!lKTZ$G`Ym62@1K3_wcl|E3I5;Bu0<#}b+GGw ze3khhS^SmVt?Y>Fri8=)<0e(hHrm6S;?fqkLveT3?8dAKYh$>CeVHx)kM^7oYdb$EW={@eU9pK@abHT(1|zJs zZ+5^ApC(<)8Iv3+~#Lt2VZ_Ha9olefkkS+&m*4CWbH-!}qOf`d^#xZboO2E%P;( zZd~Ydkj;edvyLLfWtF)rO-Q7n zgbGc@+#N8&MW_#u9fstqm{&wjWaWkj3hpT7M#ao3MOwXyun@K(8YyyIx{tmi>TalR zE6#2qB)>uzr6Ey2ANZA~WnTM#&NN{5(BEWaolVpJb2n|_MFtAgdvCis+l=nQH&x@c z4kymPg?agrY^63IBRZ6&FdO|!Q7k2caUJ|3^jBp?K{-U~ONZx4CKqHFM3_J`kl&2F z7X*tD0EkgT!y&iRFFVN+6V|0(} z$|K_!>r#)e(Pe#nNSAE9^J{Ra9T;Dw%li0vx~z`(0vf&X>DXM4%jt>caXdi=!4x1rv1eQ(Q%<*0 zjOC#;5LtGYmi+*}M2<3c)#r!JA%x$kzUJajIt}47Xb5$h9KUwc_!?yP`^E?BLrAFS z_oZInRop8tkDtUdkltT-eEj^5iNTGYf4X_$sCsaG-K5zK9;T1yHqKNJ)`!kC*Yu5U zjlU+Q(K^!zE>y1{Z?5LHuCIAy{I$~h>KY7OU3~)y5LW4*G_wVpn_%od;zdW*pK-R8 zW>*JCmO(RYVTxUT8uF$RYG8=p z5;i**8#Q_N%yQ%z#R~B;VH&MD;>-VI4s}+Lm0rpzu`3N73cqKjPRHTEgMMb}S2!ym z>C^SsZqa}jV7Gh}V_c6rDO<|Cju`-$VCa9OWYqV{)hjrPoK5rUU_=uQCz`9WV zyPdEu)K~F2BG8)$MQ|O|yJ~Te`cS=_OLO>ib8UTX{Wb2&gvqEY3th)fZ*9?)Gy3om z${oII|CIi)qeF&U9Rj%;SXMf(qjAG|98(L3K<h25*(^)cQ>eZoJuJ}iP^sawVe(W3S z$t`(;4{1aW)h~ozyQzT5vVVMtA)h_YaYq`?@p#8LH}!S(m}<9-B$jrQCWYUF6eH=^ zX`!fY`0Vn?A^ACr%vcVlKy9d=^~e%FKN-x~$zXmNaFwKCdSn-XQv)}FP`~;?4G0&W z6T)ztsotJbfE*!sLP0|C;rcNB-Q?XivR1+R(7VBZmj2xxd}dM_-<-W|ho%(Cj)pvt z#*M;X5|>P?0hD_|N5dWq)p7|`Un8)tf$t{|;6900jzttLRv*Dzwx4>gsjshJRQ=`v z(X{XV^+BC#dd>KHUcC5jOn%FZdt@%+yMXEb2Bog#lPk5qBqwtQ_bXD^Nd|{Ttf!*P zCgXXQepTCkEh_aB)%m5v@>y6#wVz1~Cvw)q(IlqefB338KJ2rhFve$*0P{EmI<+dc z7b=M&n1yi$YoKU&$|TuYFc2jn$f*_MIMJz6bs)*qRMoeF-)MR3OtZ4Zv|6sY$m=yj z)tt<-RqxuwTf3sWrA=JInBcZ5f{|fz@o7YN0A}*LftGl^RPQ=N8EH06^pKjNdI-}H z;XcI4tO1o6OkA;3Y3d~&CTBtW7oW!;R(-Qh3$VBUfufY|rYNtzAG^eMXa>A!nn``L zGn8{5z(_2bbV^!UvB2Sv(2p6tiRznl|FpyahmC&7ipo;avu8#hUoH=z@hm5eXO{6p zN=V}&FZrFQGhC$caFNEtrPf@L#&b{?$ubJufpD~6N^-~=kAJc8Ei@iq*i<&9@hCv( z(i#u--5BQ|6aT{m;I|c@wd&)uI%yC1d;N!F29y5N-AVr;)~3^ciVZNiT?eZ3*wB~s zAO>D~kSzJ}Iv>-VRUWPrl}FpxWh6kM+VHOhYmIXvp_Rbx!Jb>(m9!H4O*N>Ox^vL# z&V-@#pIk=WImEPl-?*s{qV7zTq)y!_E~oBX)2SJ#JJ+0UULbYnFv25?fAEKG>dqte z!84tXb0vxmldZn;cykrEq;fiowAkPX$3cCSj<*o+LBXl7(EN-e^-M1J?U$0XDkW#7 zYbYCEJGp(~4Gq zuE0qMwt?|L6_%4n&RX!*y+0B?R@FAq;P(zIsY;IC#eD#dDxb^Ca{JhEQT(Zg{pT z1Q~JlsA6_b269f!KL+y4Ku_X3VxlwY7&>oCfZIn zS#Wkz0~nfOduc8tZHEz^PhC@YV#$^{^89YXc>sE^)iwywWdRG`fKsCAR3~jmn)fQ& z4i?Z0>+8-W_*OTzm@L`!>1JYN;mMlwzbAI8lr=5vLTR*-(uBx25t*MC%CA zE`f%dNrIL9_Y$lYp069fK);T_pt;oJu`cW5T9*vgPk}pF>ihZsG;HfOPx?dkdQ#WO zWuO)H9Rd`b!i_>*h*fl00<0WggDSHWokNPs)oKxnQ6>3FxScO66S=7oytLl{%V-^I zmkWLaK%wFt@)Fh;kU$PY_>*>JPh@6NOd_#|95YVu zgNq>mjuZIG63sr4`9R(DHN3uSE@8+=QVW?!baWfke~G#7`9z)s~}Py zv(@9xes0O7!f=eQ0s&Vs6D9ZReHL<@Zcy*XWw4j6<0$oOplP;;a6AU5Or(gl$f$w@ zs}#qQU@ABYNhTg5Q&AawdlCC&TT#b8(PPCvYp=l6b-l&^hhY94Ld^VY@I}0Zq9H68 z?H|y%$&V>PSz%|$)|TB!08hv9{j29%u+RETUGbUu)Hc_1$8M}kckJ`O6wE|a9dNq< z?#qJJ`x-9~7OS(MIaRKmNzqT-{i!8-<_NP(bT6sLP-auu$|Ux7SOUL5U`?gX*>hcCc|hd5W}_XTc_+8+4TY$_6O^=_t#fT zppD1R=f&YL>|wh1@Qi?@B+sU#*OK`5lBAbY{;t)255vVPexFX2U2uxRX^k;h?f^pW{;-QpDA{F52M*M~B- znRLfHuo_q@5WDOh=n%1_A*gx-tQN5D1l3$#H?{?PWQ^%5v3s>H>yo!X0m5xh~U=HwnAyjVOg9LKvW&>+AW*eu$Tu)f`- zoC{iL`iXH@C%GmjWn=Mp^~IlDMm%0^lk$0WgGfBsm-@0I@!*t5Ja}3H@%eS%=tg~T zhd^x3pw_?#L`schBA#*nE_T5Z$~=4}onA!(uIa;i7i^~4&!e*SaM_-0u3)y~_me$! zkl8THIv?iJQ#vwUBinmRvTR%n|9hy#ORMvgAnZe%3KSEQ7VvC7Hu5x4FZ1R&>5Rep z_&~WqjqC}V7?LaXQpah@nJrFRo3bFL&X(-_N?PHOh`b7)o3!4Zz53TmCn_Zzx9Y39 zDU{~>#kM5ynFSEUlDOq0WE~(7`k@v$geJM6$8-Hqj;|I;8P;Yww14@i0g#r%*Ln4( ztUO_b?@VJZa`n5Len_XZ|5O?cK!Ux#`eNXYtBm2LO7F>^vm)JFa)XzkZ(BZ;hHa zuCLj_emip_SOGyYH`Z%>ye7t)*AqL!$>qgqp<@n{C&;&kX`4$#yna{jpOMDxux@G;vw|v_d$A5Fv zEgu`dymDhRN>9r83+7$= zVqRZ>bh}RLnb8Z)FzBsP$bp-da6*Tsf>r57IkUPt!Vr(Xf={uP;?wVb4uR&RFJHMp z>xJGXn7NE-J3T0gcYn}Zc+V5^mmkX7w?92>*$aAHnNC1xuA8}+mrv!~aADZ8)Xni5iVy2Ua_*nghoAO`gyj$(q>9$N8krU!Of^2H5C6^| zavHg7ytX`yc9p9}68b!<4~Jh@ZtBDT`EzQTyzcKrpou zwD$zG3U_*Wd4%tP77A%U>hCs=B{aQ}SpgsqjPV*O>M4+M7_e?Au8-O|KtxfXhq#nb zQ~Tr}d*ic?#3DYnww|bVTMnWz5cJoitx2s+0hr1_Afb=IW?a)2mQ)<(+ zTeRokM!C`1o_7G%Pv#^IQKVEX>Z4S=kuVK*ijvWZ;LBp8`%k?6*z%Aa6j?^xpLCg) zH2^|r;Si`{?aXb}*)>)x_|^VBZLG=J8AF~f_R@-bvVBLKOWzKw4_)Fzzl1|o|9VY4 zOJ7z$%YtL|!;7QQOW3)Ne#W*9F)V|-sA;Lbc}Bvoc+4?+KZXA|)<6FFe6hEW+`;sh zUjY?R(i~SmWy|WHE;joVpRh*U?8}_(TMOab;sk~HaYF>A9U`$_0^`rd8RM-)ZxYW7 zUU=x4)Of$eR)#7ykSGkyj<|c4uowc7o;VIheaOE~tk=i7TTB0?z>Fk0R;U_^L zq;%&$3Zqs3H4%%dYLEOND-fEqA)xOaU^$4(I_f=_RhHN_KR~0_5w$ePZAMRado+~- zo29v<&1xVOR7O%z!rs!rsk==@c2WRx7oi~ec8-qcsAiRlSY${DW))K-pmk1lx2#pI z7EAP4$sjZA`yfC3(nwtDT2NiwZYEMBv{n985(!c*uaeaxqNERk!tu!(C!(o6PTpxr zq@8{%e6<5`F^yOcUJ%HY>IthW8Z#@usU_H>4vN{{wICYBay)0(cz<#4P~i7(){E+# zI;uJ@(^qe0L-X(63j=}=%8ZWpv#8UCqyIujPzmSHuNVRgfgv+QI`rUI^T>;NiS?bfQNcM7!P?a>LJ>GpsBsFdRa5P`HPQ! z@aNwCiFf^?cUlhNjtXP$eWD7y@;Qa#!e`&ztZd)>zOpTI#r1eSKte-Sc)4d_S4HsR zerKS70~tLQ1bqV6K#7S1wh!`QgGBZ7Yub|_9igax&JpTa^-ea(X4Q}QsG*F3VT&Py z%3~d1?NuaDrAInb3pX}G&0K=%c>u4hhiyIqHf=ht$aLiG0i5JqvH~$b|z!Gk<-p>j7t4QoOhGDPBKcfGdN?9~Gt8>SAecW%{JY>Fe+YuaoN)03LNd#hgA zL}tRgHUU+zjm7Roe$0^|7m=gLmD2~rsP;Uv)$CU7i)In*ccQjEj&p{U9j#X%F)R?) zLQhyQyOlGvqvg&-z|6Sd!I}};>!~J)JF%r>#9<^qIU;J z$exAKFXqLZb&_bE3AE*DJsY7b=q2(apa&dBRhhML&@kW#mAhRkp#xKLEvh1|#&St0 zjMXkOm@tAbJEqRkl zQLl26Le}AfVfK{TQ?{E??Ht=0epQ1IhS-jEIX5ocv`Nqabi1~lo2*T76UK|l>Zv4O zn^_qoPmRqiEQWLYR+$32C9OQCGkCo>c+Ua*mIW3x2TanV1Xa~hBPY=YTp`@(726us zIar3=J$Nn|luQG-Cddb4TGDKZ*$oI#ewVU2-KBX0?MKh7>FEay?%3I8@75V56Bna~ z|3-tVxiR^yKQg`&x)AH2a+Ez+&ZJXf*G>vZ$aSq;sacn5>-cBXCIv2FWoFmj*DEOY z)_b=AVXdYqj+mHgYSKWcR&Lepca535OoMK0aBgZSo6F41nC4#dau^f-pcp(2 zZkQ1o2cgD0w`v@QgCHp+cEXC0o$zC(DEdhZ-e_@%2Ob)2GKPn-jTk1A(QFZXWrBRU zgvgX*KQj74@;^4K060_c=^Q}yDm(yJeNYd)B<%xEL*ZEa7zKzuwc&P2ZjHt}dyJTS zty0ba0x0U%eP(&9kQK9XjqapoBtzn*7Y(0Jk3su{vPU19Eml#kK(ePJV|^U6HicSg z-!Kw`2AcJHeXHKPiJo7o8Ei<^F1CH7-rLKB@4)pBl%)_AW$~$}xBnpWicA+za^LK4 z9bN|r%CH^^(j_&b9cq(O7GvrKiJH^@LPGG^TCq0(rJ(dYx8Flov?~2AM z!I~DzwaE-Wh_;;}4j4HbMsWg%-*l!DK%ox_rBIJGqCuw-^|}r!=#w$(Edtk@wlUtT7d)~!3CDFR7NrGLqrfH(%`xqh)X`qY2Lz+2h zx2GKDryuOo+<#^i3eqet>8NjB zr!&sh`(TP;y35lllYY*+(}7Kv?AJwQ>#R?Rt{d*Jgo*CMb-&5x2thBO1SBXGDveLt zuMO~xx+5uJ(?sMcg(t-cucK3$r>1Vv%f0ow#W^Pdq%y3M9<8smcC|}3j+%0o9Sn*+ z{M2Z0W)6k{l!lO^*4=RI0a6rFzFyBIAT;V*nptcSe3Vflsv&?DQMmK>bb|Io^Ad^;ILY zPAh9xDzrNaC5OK&1(O9WAoOEu5tk=u+SrSoIz6S0Yu=+S!3!;ht?-5wm)s&CqoeHP zK7!|(*6cp=)bvC@9A`)H=F>xGH?XqJ&T^lqMjklua74z968lLC^_1iXVw z8ifc^I3)-mf(S4pFM>I_k7Sg}Y>gSIi%(3^#H0_RylGe=ki_wALWnq!4?OJMM-cGE zwKd2-sVoUk(PoD$x2a`3wP|y{Z}ZabqXfYuOo0suA$D{evHoK@fH~B&%6Qy8(ae(R zC`O6V$2n(Wl=GeG2(L}5@&UAbGfaTeL;O18l$=2*cED|ORd7n42;&=6swLju&}3F= zjgs$0R`Oa}X~4$CoYUcl6WTf`fHYn@?h%2i{U9&_>ofa~Hv9Ed=TT2eG-B&I0uh2A zuT4FtDd{MaVE`8zR_$#OikEa2ad@c!hckY9;9+F1?VGr8)3^qxQjX=KkXKoxOvh!W z#Vx)sWv{MLpdjC#>2w&G25(9;rxl5g_gIDtp`*y79z_#VY=I}l$RHG(J zrFp(yJ-=^OmhPd=@u9k@$D8AZZufESzF5w3%r7+#4OzR`f|)Ki9F@1=); z}FkCKm879tat&&5nT(s)$;aHQS;5z2eOOQgyfmMi*#HDu5z?KXeoMSy$@fJCXhMUzWS;pX%~>o<`wm!`kFK5 z=un??x-gFNK&sW8+O;fe4VU+~jdR}652PDn6Rw~Par0VIuFXOO05O1)l)jTMktmz` z0K$A8q4`&TG;FVeAw^Oa7WH6Fq;Gzv$Y;{RNqH!%%W1Kg85W5;IY{|C+sY;_#cHHW zguM$PdtNb%EodT;XRZsA!YxwsgGd@IQ==pN1=tCyMx2SBRUhArUZ4hHnJp*O%a;)i zF;%iQ_AIu!tOV2tPQw<}<*}1dUoryy3r0*6hUJ@2>Q+O*OZ;(*tXN0U7;)BB^cL^z zB77ypN#8qUTwZR#7hHM#QH5;urKX+bG>4<8T!4Rp>xG@JV+IcN&oB%+_N1tuk{OYb zt#BTVF(0Rw)WtOBLy2fgaIT0b@DG}>{Dk>ctHX4jJ|y_0kLZxilKt!`v7Ij;b)AQt zKz48Us1(>B-Zl*QwpYV0(CT;hstaxb`A(|udfRB^QvfKk2q9x{2Z$9#0D)5z`FIsS zi35KFvju&oYK;+l5rjli`y#vyjbNZ_R2hQ;>yoplkkgzcJaw5fin-ZQM*^Wn^@Z?kqb!n_10Dfp&yRv6!%nFB7*ZJtbRa$JMt%NQkAwhdm3xceH z{uQ%Z(Ibkdx}@k~>1(XT{kV1j#7!2FW`n-fJ6|Olyr-jhcmNs)c>fbryU*IWz?+(8MmW zLKcB6n0N{S3Ta|>;@fyhADQHQ$O!$&(!aYEr-3q-9^k1S$<-w`2`STJ5DnN4^=sJv zwMS$)`q6^^6K@t>)#X6wOzW}{q(yP~yT*`Se%a1(*7=qX zMXO(uI)w0tzs(Fpv#!I(z(y$eSU^jh#)q(z@R8T~BX!;*;bMGrMicPR`sOy2 zI1!mtr7k&nLdneN9&h+drcPrg{mgc2XJ*RUkw2s#eFW4vgWW)v04cvbBxffwu5VpK zP{p969e>5>W&NtWg^Q9Cd$EIw2h+gyoK?RM`;Zfup@iHKLD}d!A`Uz>%y|Y#E72h> zl&L5Wy8KIzaxr?6c!NGxX-6aOVGOoUixtJw3sLB#^PzYBhFN*Lh-Kotf^;wG8AxJ&2}wFzj4@XJlt58EySX)qB!^?!4VuxQQv3jRyP!o(A<#+z&Hq`sQD}k?oaO=O=8jTq75s?9;+uiY zP$k8AA29(Td63r~y2xW5f z4PHo=!Yc8iTb%&~gHuDlJF+a+L*X)Ya9#|_xk%uW?mk3MQ#yJ~WDMabku^UUuvi*Z z_NUqEEfPV-0?dq$U{4@|{|Nv987%E!*(IK;rFNahAmALl4Sis6QjF{!E*-c5s%=PN z(RPBALTeAhz^C&)Tn-hOLl|zPWd90KQH<$VLdB>@1(ah{u#AEk9>Q`vD$-Jt$-}x- zPzX`hAjP;5)em>ig01%yX`Z6I2LJC+B*7=oNs$x!GdW5QbptaZOHEKDD`oOp zGjcj&=2Db6p+l|vcF4yi+DQR&tX)KMmA$0cj#DHz!SgnfgYW!*Kyscl+ApB~^<<|7 zEmPlem!?PSCVj7`NX@+#KV{B+g?*i-spU)46m#j~zJA3t^(Q(SGI*R-qjl}Kmxj<& zlsJcU1sV~LGoQn_Lp%nzvN9uH7wS_;4e=Q9So6P}BX}sGfVc(CZm~JbkM6xs8WpAM z5Kp*g-k|oNL6`#?laZ5B&K;T)8zc%NQCNx^i=+nLgoUOGH{ly+1{J<1REE3~wpbMg zlAU-{20Fm&H7wZ~vNz2#eHPHrP)2Vux&fIBQdHw<_C$!27NqEfSC#~}fn|quaD(t$ zI&X)!C@SDB7P16^AZClmG>=1+3fM(Qo?HaBTDchPWaWD(=!7`Pj}P_CL!2_8PyR!6vcLWcA}N@Vn$ z3GqxC1gj%Gl5y(NS=Z;rs7oXpoR*J=GTG3Qk5)e>?LeXnTwuPG8<4e%XcQ!@0s+7m z6M$$3S=(;BQ6wme5SLJWp_QIe(11}mz=NIQQI|Lbh!p_1=Qd z@Ik}5y_qQsr)#1tNvdX1^36s2q_Y}7wA~AIq(9}!g@UrMj)5)H!%orqL4LKXF0FJ&?=5yvn>tm+i<%rS@CSAPsaLY(oQ}$D&ac4jK*S zRCty%afJOp>B$$%ec{5bfHRzgd53tvD&m%b3EY2Tp2%zbh6e_WR zzgYkFazF>0v1I~*+71xDWpzudQn>rP>4)2S9K9Yuq1IT|%}LELb~M>>5l#h;g3)R8 zqK&DgsNGQ}M&JBE>b79>CK&09b~sVf^svNQ4b5vQ!4#FU_NZN@(E$=9gd!aj?l5T@ z%hJidyH+|mmm1QTPdS8B$h0*W2_X}GPr#g8G|(Q8V0hslfyWzqN%qiIW5Q`Px_2gp zz^g2$Ix|x)OR!hcN?`nAcSF8{(gg;rc`Q zKez%4(z2HOT)bv*PxMfD_k za;z2em)#(e3v_}uzHm5_kjUrsc^)oWu;YnP{L zN>L7rio^Y=&e~>Rb15#?pNv;PGsi*?5Y=4{E1ECDDK3o>?99YO(}5EysEhR0$jK6N zG@>{$Q%~498+=RS5PS;^89&?XiCrDvVxw$7`8fF2{V;uXS3(-4G_yR&!7;m-JI#9*PBibijC31X?I)Lt z<>a+lhe=tl)&4AQGL{k;aa{45w2}!OuhN#Q1jGzgYuUtq5u2f!Ke{i@s@gI9q&mt*DgxnHo~% zn%4;}$!^!_40oXdfr!X@$P8u97nOOwV!5&dlip<4h zw0yZSvbVyv;U&k&Hsvnymqp?dfrLmI&fFlFaC(f$dEznZT2ZN~G3uNYJI5%|$Cn?d z&XX!uymO$scVA|p%#rA)=%E`Zdy6ImHG7GHl2A&crAagyrwjq7X*A(lY=`sAn20%~ zoR(G?FKhpJCcs?N^KiCR#Y_;P`pA`qULb^Mn}y3eCy>>_de5|In-wBf9gR#Q(mfM; zgNM&DWURHRyD>J?qRsOaa&|ltN~uJf24fq8wT_SsO;Jzi?mdGw1%ngRR?{vzicTBz z)TXMQhbIOta&QyVs)c6=qBRCZxYh`3StI)5Nm59R5|ZA{5HN2|Sp!akD$L59^{QUE zkdui66wJklapEJ5qnZ(}`>g8u^axnFVB2Z>>Z=@qatz#Q1R|MwjDQ(XnjLYmauFlI zN|f;;{}DW;mu-HU6q9Mxb1acJp?q~{pVaF~*>kKL*4X`QX14%b zq`C8Bxl`N&w%DkDAOx2s3!vIVm7TpSLIG4U>JpsvK%6fmkx{d9Jo?YMwyJ|OcJH<^LTdXCKUdv+;ku*9q;7tv(mU$D@XNE?!YbPHJ0CnlQISh~A>E8# z&dP9GvqS-eB0N+p5nkbnR=t%^z^mxwUn=pyUuPlU>VXT{- zgn21m;rOgFmM(>4HXrJ7tRI3E(0;V~eX$#>b;=CshbRF)^lT~9E5gG?iC&t9d-+u1 zoD13t4(2+?*%+*eEj2iz;fN3c*J!Vw6`a|5w0-9rMR}uR!0$*}fnZYO2HQ9^Mn#21 zjqO%ho%aGiuaAuJ=kPtf5=Vp_N;k-vPtn>`lnxXNg(~&*=u1LYdq7bMVqy4-1fb#) zK(_*+G%9*Xo7Q7x*jIF%=`GtfO>ZTSqW4GvC1ZdgyVp?|Y>3%w;Yb{lS{e>lQ#}fG zIvK7go@jVWMZ?pDRBaZXdEshjt=Xhj)dtY(E}3AXWc6DMO>s-+e;00gJ%x!R_%UHFP>#kedSd&Tk|VH9 zO&1uCF6=SU#m*IT0d_j#F0fYt9HOaTzT!;}cV z&{Apx9co#>^d7lb6l^0zyK9E2+@i`?F@Scc&P z&%E z-CE*0KxPKl<@XGg+RFW&Z5n!yvtQ%}UR3j}s$u_|n%v{hNcy4A2oLVxQ%=ePkk0bOL9=?2s*0dAbZU0T|VE?{V;cY)vrKc=>P8dZk)>eH`s|)&)c25xm5;<8G^pI7i_{Daz7x9bB zOZf!+-$((_d?R$jpx($k=!AzFrCXSzzCeHa#az*a?RA>RyVb%vJEf_bS*<$Pp*cRO z>m}zTgk>cj^h+ga?;~Rm$>ncO$mh_4U{#zL@e?^_srC84&~cU5GLaz ztkRnUB8u15_{2^+)gL2_$5|)$5?q3wf0xsbxOPIEtm^jf?)E$R*&7Bt7@7T9MEm(y zx1}m0bd7^8pxNunjnhpR;Fo2S-Bgl6d;;>9qTsb~uta?IFtjcK2CG5Y!)rJ2Wy00uzZLJrCkppH#11q`e) zMxq#fgH@#J-@rJ9#B=v~1^0nw(io{`(U7>ubE!kjd ziQO_5^Th6e!0{Nu=SBzq& zEJIbCzNjGZXzS%ls|G$K9@ku(!W~-!?VwR{#o_p9h2|=Jb_5>s|RG^Z03~ro+le8!pgIs z#qtDW0nz_W+`E8Vc2#x0>#_HF?Q>48dKak#)?O*RCz7=FwHU%fa~6=KEL#Mc>!tPT zhbACa(hWhhbFYCE8b~1lV-he4ft;#B5?&H9kYJ(YwzR|xLVy6_T|mGfiUlG>1i8Qe zf6TQXRTT*8*Ef~3_u6aCH6LS+_Z)M~HQYEw_={hWdt%uM@&*dK-LEiZaF-VPt1gCM zu&i$Rhq@uYcLQ zKmXO+uKx)3*RJWGs|Eiw2H3PP?5XVrT`^ND#nVnF+L5bM%4a&cT`sAfRabKBv}{H3 zk@*i7wcTr6>^PKA=E>O5>F{24VwY4i+B~IPm74BOR%>`OH10Io{XIt`-&v|LjF^@;=ymnlo@N>lpQ?d9 zr71cA2xm@wmwbaas#I!9lo3s7Ws@O;9$jnVNrJ6g)BJ-fMRliEJCP9xbvF@gR8m~M zqZ8j^OJ0l#r3v0xAa3M|qXzrLs&~m0q6X9YQ{sIsXOuP#t52yH@NbWPX z>I|8{eE)IZUxzny{Z1I0Zehw!FvDBs2ZI&v*TVVGBkj6VQS?l2=Hc2AEQ5W;D7+5k z6o(9{MypTikRi#*MJ>t8|3ae*!s6pZ9Ha_(KP}tYRu`VdPI5m&E#u)P5Sy=4aX9-I zel;c$%*m>EGG`3wS=Gof|&AJ4CD(v@CB8J|C&4xVbenw9~j z?03m<{AgKw>YnP|^2!Q1-IciuJ$Gu3x@id<>7P$gdQ*J>Bx1zvw&%9ne!Y6F(!Tz&1ad8v51l10c?5cO?gGUECCp&HgjERQzW(r}wSy7Ek0?nW_S1Rkd)JQBsxX z!B5>vd=xiY?F-ydX}#@6^>Lz*76{!4%F?m}Xz=KMVRkSN?5Z!ae{ir-Py}vSYeu!F zdc)$e_x?J)@kZtR{nb!j@JWjlSE=X%URNDGf-Qc%&VPnZ(C6wtuc7c56e;DXpiuQ3 zNV@t6^vYFH-L@!>SbYPW?bW_*(JHUl z7j+KE;Nnr|(5&bjP}tc(JZXlGhYjkhh?$R5VbW~z``qjaqCNT?&#(SrGgQs3pYlv-b^#lbsQOlaF!R5W>D&q`A+t z)IcE&x0iHtI(qQJyjxWw@Jq^O?on4?fxe`Kd0aP}*ho+Xd#Uz@S+8H!p9pLcT-Arr zMrCEtC*@+P&b`V5fmLi(s2ZsuZeVj+4Fxt*#We0L4A%Bb_~*+!dl@0IsK$ z76|b+*q@-=B#rJHG20xi0!=s7sQAW8NP0^sD>SFZ8XQ0?yrfl&>OIS;BHan?Q&l2b z+#l}Ed36I|Ibo6_IgtOOig%%qsIxRYXIMpCTXM7vzAXD?wAz#n4dkPjrT*2+PliBX za<`yGff;TbjQ(4O*b8V8@_=X%k2=jS+jd3@$BEKw&n>9x&H4Zafq2 z+TImS3U@KqbU>ZSXN10R_JqFGzrYu&@33woc0Y};)2{}~1|mLyR^SG%GTJGt_afgU zz(pX*hKkdpCDg?v)f!(`a?p?Y1s5Wr0F12q3#U00lTo<(1L|th0F|G=O;*SxKRTKl z!A_@`QI6iyagMKlHc5jK=b#G~%TL2VfkGwqC10uwtXmV`!VU4Y2uzai%ggR!sUhU5 z3p7?uY#x?K?ns*R%&J(@x>3y@IZ9x;Ei>Y$muQ7sGwxwNVGzC7?@nv=b63kKhB zZ3%W(RDX9oUItYBf8CU)WwAY8{lvaTQ=*wUn~N^OD8v_!smQ2d^qZCfC3wkg7(-$m zM?)Rej%Ub#QspcIkk*=u>IEEKE{iZmh?*N*{Mfm$0(Y+zxYpvlx(wSC4WRm}_py6U zVBNQZe*tm6q;y>%QK^1~xIlfG89c%@bhCMvi+M`TVye$zJF!brFQ@6l4IXQx#)C(i zxm~JU@%GR%kkTC8F4~^nxfITg^nXanm$SWZ(t>_4kTuQNj1OBY~M=6f++ZKKGob#(U zFG_<4(*Rd0gzjX|L-iual7Bt4*y@G4R-qoRNMp2Y1EZ)gEJ0&W*4|@kYByESX4cjB z59&?I^ahvbBXsxHG1rIGs$NWy_Pre$ZrW4*zhy(a{4-`%`?QXgRj*~7Y(wVie9Ib< zOTYSgD_6)C@El(7s7wdAA)Mcgd^@_RF*$7&`Y)kCr=0g-rLbA(Bqd8TYQ?F#uix~y zOWL(eaNXZ7xt4t9*fUC#(h+Mq+#(yiTH=ek-dh?|u0y^SOq0ACC4X*(0(Js0I~8qc z8maiKCBpmy`09u{p;8pk{zej%NMdrkC&v}e4<#DWdv=Z_WeUJ`dR1Jq+Z~i0JuL@U zs(-MZossTe%EYN+!eJo%`|NA zR3NVIRG(pKzq+h+O(>-gR2GJ|g=vq{9!7usQj*MF*xLbVd2LUnHzCo!oy>Voj!t{>7L` zpnvs1YteKz);9B`z5)=-e@H8^FbRMC3gOS7es7DPO70)0yorG>j%qBve~nj6)_6?$ zs4<3oSr9?{;kRS16kaQ64`&X(9iGV`F(!AQhb~1Z>Q_8bN%&v@MJtBDUpeVu%sWgLd0D0 zzx-!7+06Y|WodI^pYujYnIZMXc`*N+btK3id_Q;lVDOzpKqFkDr4!r5>e~xjk($z(JZYM$?XX(GEOVPrT zpMHGIt+y^dJ&aE(mVLt)y!Ay8;xS$F9T%fROV*D3Yx*TAMRm>sYB=Uttb#`JVJ6P0 zDO3`7g{!O^n3sOTpk!u;yrl=(;A=k^V01t1mX5`gQJk)Sc3h^fe`m-j4Htl;G}xV8OwC4t=WN`9sY-#IKi7ncA# z=c>2Ph`2yg8>b(glk{ns`uNTAfx&pm?z&VO4toA&`K`EF>L-y8U@JFxL8zFqw+!%r zH6!KSd`Q0DZ=4`M9&a+~r#4Wx0=rQkWTUZezz;7}IFM?*P9S!OS|Zw$@^TgF80i8x zyXAsYW4R!!Ube+GLvN}HD*2XPxNLm4`c67u;LCU#)rl?|p#bwzJ3e?N`h-#ksb|$! z<$m+kyF?8~wd*B{JmitQg=sbFx-DQX3m1b~k8yGE%A}%&V^E!JA5NT<^%KRPSU;d2UKOR0#%Ks^ysQ63RW=SzzfPhfTp8OF^j?A{|LHCP)0Sw7AB2EH!{u{r#+#jWivd3mjf4$I|32 z(y4!C7Viw}Vw8jWnKm!x;pMqGzp$;(R`z9uOTWu}!T9|bHvOmSY5UcOSmo(ecM6X! zII_VHSuYl}b78E>rqC5Df405!nGIH{NebwWI#V2y)PO=~|7D4rA0aKUX4ZtG$-`dY zJqRo=Xa@n6*O}JaieHBfN>0HV!H+-i%7pQM@MPMtDp2iTY;QVjx1;Q|>dFJx&Pb^$LeY1bIe{{ItzWp$c)6=pOx8t-tfhB{8rX8XEYr!q6G(YR)Qw>*<*h*@R2RCAjRnaB1un?~NiH?C?V@0|z2 zImUwev!^-;o{F18H1e#Z!qtzqw;%0)TRZy3;m#pE}-_7 zuPJoPOFtP)KYGBNc=0C+(bod9)eqlzPR#=QM|$Zxuik@$mp8sKt2>O3WuV;4Kt=Fw zt(Um)WgHLJ`8a&zf)n%wQN5eIAeuS);?T=@3Wzqz(cwaNbu9Q=WR=8LZ*X;CPgK%t(Ua-WEaG$K~}wDPWT+v z00yrcWGV~_wpV=Eg8v#ivbpHB$z=}(LN$=tbFPsOPoDGIW@;8_x z=gHqd*W_=g{%67P(+^k&vUBvKg56qqL3B^n!`ffn+uv|ZGyj)sVo%lytDhHP^TV9I z9ITG)%P<5r2k}26{1>@;02;+b-&ys~v(h1?YKtXHCmbA-vd!TCL=#>>cZ6%P@NbS^ zJsv2ouqu#WSltu?U;ZobVpG`P0y4Fq9y$Y$ZaemoWjc@Uz>j;>Th_05bo;T7-XSXC z(VbI|z`oOqyMdG1d~ZJZv@~1;vqzX*`;M+AzFyINg`bG-)WAS z9K?KI`_T{|dt6HfKUGaVYSQ}vU)JO>7ytK@LQhmA=Ryc`H_}dVk42k52X0XQv?skF zsS(XW3aUR|)f=Na;#FA{+KxY}KG$g~8pqLXpv_B>E2-2PoSuUv?t|Fw;C(r(V}uiT z@n`s`#y?B~&IF@%N$_fi%%p9*byP$50{F*0l<68Zk1!TQ<3Q1&0-=p-kahaqsW<$B z5`2>r;g^D{Guh|*Ux=qKeds%Y;>J8z(%^S_;kVQmHJm&6IcMjT9WSGuA)d$m{M_xx zz#+5Qo&M5h=Kw=W;dpX-jOnuHTsU4wi(L+N`GY8;aCm_702R?wlO4^10szRXPb?nK za0bt1Io~;x_sL#atacFY*=UQfC;&D3DVwc&>z1@Ok+N+nM?PF)*lW|iSMdt)oj}y# z47FYYF?>V4(EUhx11<{}dqdvSvW%XfRLeWr6|(bjPU&F=P)K=Nws@A*nn;5QTZ=Yy zYg~EvK2=eXNhT)Si!gAt>T0UhElwNorUE(F3ui|}?O6j`v^rS~ z(kN&Ru8Kfm!PWVmW#9^O{zrENItWk|X}YA{#8veP*$=9k`yim|cV8SZYg`-%N*by_ zD+-9&^BuVpTv-7TyK44XijDDfDaVV%M7mjdXzAryOW4h+@5e=5sD6r z#Vi|$iMzyL@C#uEvH&pl%i!gOoxZ{`lwv*R#=>_ocew#L=g1C(2rK8tbqoL$sosWX zlq(pa#qZ#M4=r+Pc>$bM6)wUnF9*Yaz@>#rE=Pp?1LktmWsl3{_KehxaAz|pI{RJ- zjWJfYd6iM!m#3V-L?MCHmLfcu9v3smE!=SoEnJjyB6q!`(7u2SB=C$;Q$B9kwn#Wa z6c#|Gy)G03CM58Bm4Rxp?tQ5VO8J0f=0^d)WoepDDDHvLgQtwzieXvaGY&Do%$-Vu zNK!R6;b|CZWHiJirITi*^O7Yap%oDoD!sl-u0S?CL85Hwa{6hk|HR_p_X}xbz!a|4 z5JR{q2--m+5=ab!t6*NbH!MuIUN|!5tHD@hS8)M!QJXJRR*|K`dtEywFS?YTK{`Qc zO(KuzXYiB^o>DUVD>DGFp3M226mc zaLNu3o{ERj#^lNys95mi{+8U}OuTTvOKyE&`GA+){>T51OKuMvQATcm6C`0kBAEsB z-gF~p9(MY_FcBs!TI*Rn9Z!BW$hhYD3_0(wO9PJ@`3QnlfP=ENFrGe zp**G}W4|3m(1T}2!KU0sH|7}hEHBFv*~7GIhN}bXBqHKhu3vg~TJ}l|rwb)l0r(#| zMN?kggr}u@;um-loshOM$1bdrTm#Q{wgH&47NS9SxQS!vG_wkRC)Bo?^)^avC}W@D zJIT;)N0dNwkMs|eP$|C=#@8cCOkOj+PE3=^@+GHWgp2j6_u#y)E>#w7`Sn0BLhsUb z8Q0=1$6clT6L_z}&;C`bluZ_?myt-l&JZ)QHUAwpQ4nCTcYFrrGf$s_v#M0*I5`kHdrsB z8oo1I@J{uD87F2Ck5!mSmi{|eX$`;t3^-N+s*hrSn=xx<=orp)ML)srFbkMJY=bpF z=huE&-hR))y21Xc=P0DYaY?q_KL=`D=hbscnwz@+mwJPQtZmgm6wV7~#G3R8A3aq~ zoLc==yr5ZEDG$M7AraNjgo+TWh*~~u$}l3e`~sH1(yNaxo>Jfg&1hBP6TB;`PvHX^ zv%?oK#$boPl{QpFg`sOy?hq%Ffc76RZg(x!aqWAQ!yi7p24~I0IvmxuCfRyaTod$Lw^vCW5S< z?Cix1HEaLn)BWo8C2Kxcr0mjn;=8vt5NmL0CmV0Kh4-eh*(~w`WYtHu6!fEg300hl zItH33S{7R+Lp%XMutpv)nyIcvxtH2x7;(R(=_@{sKaR1nkFG7-+ddte5LE||$0JI; zy!qn};mO+1j#`NpTwB2|e8>R|rlwWLCb6AY^;W+U>0EhmigtYM(riA-Jg{gV<4t1X zZm^8U#G(Moh;|OuaXdw@x_6PE9)rwogZnFs=>6q(qz$eeAE>~z_1eFuXL#bZax){N z!gFMBKU-^i0v%ZSZ0`R}&q4oLTeKou))uw1tk7e~&Rq!?6RSLlB<;PP+t?bPQ`$KoCo&?W3;{yDokQ?2S40fcGODgm~ z=FD{Et+<*rU{)xLhNq6-4&yhc6cP&r-hU0Ozu&Ii>cf_~>`w>5#8yDhZlCT~HgHf$ z{(Llrn|mg_LL~Lwx8>EDRQyG)OtV4v*3r-T=Rjv3BT~~uCk%t9fH+i~9lK;uJ$fj% zqi4q~6jYB6;?aPh$d}woNyyQrqw8XC8t~KtL_-!cFD?u<0M*qv*fH+0O_XBteD%o7 zu#-$Jgwr7=#N2!(mls15b)mayiMvqZ@~R>21_4KR0PK{3~MVqe1Av9OXlAt|sM^d+WpF3i7{UF!rZ zdOJOJf*p7!{XDElo?%Q1a;AeQ_7lst-7R?-fN`0KBC;`Tkg?bF54sY zr)aMz^tqSMUUj)nABHX6S3aU#iOVBg){D>+SxE#HssbuEX>eSUwq&hrKO+E8$yyp9 z9rMs>^O`XfuFz#faqUZ&yuO#q_HgvXpL<;iJuxh)>6G#?eb~uhxV)FkGseSCcka{3 zQo$p-j%Mynmo#&j%QWC49`Iq@_1tu&8m=PfsX@c_##l{cjP-8S5@Wq{T=yO0x^ExX zeW&Zb{iwRF>PFpASQ?n&cw5v=j&bUU(cPqqmq8kRr!lQ@m3n`(TUa})g_UvdYt@g4 z5N4L(rC6bxgp9O@ljS*18Uy)~0~bQZ&DIs69-T~hYm+?L2oe8Mq!P>*8nxC<>Gkq8i~93fOg`}%_p+-0#3X5H9Z#}z2Of}^sYhd7lN z&8TiP4C1_3)kb=p!y+UwiCs|AhRA*z#QEae@biy}bBZ8XS~C10(L1?p@8sq59+eR+ z5&CFfsqsas2#}ZtQzHyeC<@u;=bOsrQ>-Ex*Gz9ryTwadG>BK{AaQ0UYMXu^$a#{Z z_U}{MtWPyj_NLuHWww1Ds@agPn2+1>ugW{#0Lh-gSOG4yuro#tb*_xYUu*cLznx+S zY>1y5af7=}9%c-8iah9iPiWPnQLQH>elJzT1CkN@JSW1ees7+llAKd4bv$dg=j|<; zAey{A0Us>zq|m+F#`ANtE=gMiMzB!qOPJgmmx+1Y%``maj4K*@+Ndpd$7`g74jcwJH75N^3_Sd|!}!1exiZK7F?qD}JfoL= zsIOv`k6S5DGCCZ+2zXMv}Vfit^kB2^X*q)iz8!E1`5A1Wf*=N zm&GwEz(t9IAk}{L6adujR5*)&wfB6gU#)r_Po%8aQmd%aWJy|OG1|;%kx36xj8UOO zmBsobt8nzf+Ud_xC#+LB&B(7N9VYb=(Ilz(*!*HqhX*uM{SD3!^`WREu#~3KCQEGhwX!9z7m3#n~)!mt{yIvL6L%K`ek?3wI$&HGtIN%USA&7C4 zatliC+hr>{9#&Ovjv0>C}}U{x^O)3~^+6>FC?E_Vg>ApTzhCaJt!&a{1Wo$;J?_ z=R9v{4=Xq<<-HK>)3oRILr)bj+=P#v<@RhvaX9~j@Ud9vxI;_2o5E>38u#Fx{d@zuH{>*2udi)G&Q)L& z2jZG9PM(xoGb3p~3`f2JosZ0ZFEEUIoZ`W!oTm&_NlcwN(XkwCgXiIH{3l9$n2}cV zy9`lTK8sb#uaELG_DQx$KUVJhVWwZDA_J&^+?w;`@Pt|GJb^upjsa;F$iQ|2Pn1+Y zqMvor7v0ux@rChMv*3gIx@B=y#DVp$L^9FQ#5$B}p-~E3T3zL264m9Mip@f*tpSTU zu!f3t_zow~bK(x=>&;5}scxbTsR)x!%20biFiiH;%BLJ0h9B4<6cjHdBdg1BepYHA z9!i`CgOaOsk-qXc-qMv`r2D>%ygYPM8b*vL9fHlNP7XG8E>?q=CY6a-xF~Z!!;;YH z8@L}04_CVsC#5O%V~nUf?pH}HGrgrL=E#;3Jp>3%0U5NUdyV*-UM6Nmb%xtM+NcNW z6G@!`5TQG+#8tQ#6Y=_PT+#k8QQGYLt-um6Tj|ql$VFf4;A(P}y)}oY6{`YE4d15$ zgNS@0bb=+2UCyzq$H*rAV!Z`3QN2}qV(44>QMh$tw+s};PE4XfNqJ8U{l#^t+M}yc zr|!2J`R=Gv)mZv@{b=ywB418)2Q)=@JQUqQS@dNH5CzkaTJ@~6GX9tX)5u96c2pu0 zIE|-d6gn_cJmrER2|a~^oJJ{$(SoH;t1HVOXadiZeh6v0JIhA=cu`pqcoDjeQ*C0+ z;sT$Dt4YJ(Mk*#1Y1Y^45O9n;t1I8(*MWLHpU!TXrhRl;H7(B6K9xp+ap^21+vVBd zn{x>iGOi7Z#R*WbpHvg6^UxMFTn&Cf%%mU8gn0&k@^+T>+S(ByVlc%j_el{nTlR~7 zzn|kVHCoUw&d6g?OfUu*f^n|I!n{xd8=#wD(_rlbf8~kPZQz%Vr{fr5`XO3W{Em;d z5u8XU>{C2D>^EnSum@UTx#nw6vd&4j$_uI@VoVAe1qan&kUyX@kYz{sMT0uQ7A01l zgwM-0rv+^iZ)cffh~W1ecNxLz{lO={w`&nKe%${){Rd>xe{U}5sTs9mI41g!!sQu6`=Lad zL81lS-_Z=J*=Ak{Q-E1siBJ3&k`d47Mx;Ee-(xa44<;Br;D(R$LB--h$Dc?si&1) zeaqxd0$>@t3dJsVkrGRv)`F#B>a^Xw`ubv{gdRFIT!#qr#erLtkHwPRKJs-&OlTe^ z1mtGg>YSyb&19QK?LKjl8(s$Ey=K82V_xlYqVp4;L%=0W+c!A`U>As0_@=ZTxoYsR z*kj=Jyvfwd>NYG&jT!C0l%blQvyhjhj`b_g^Sn{4R+x7PQg2J)pe`^9uFTg;on1io zKX;W%L*5fIqCOYu9#o8-Q7iYY85l9qQ?h>v2#T*6`f2GbLK*X;AGtc`O%$yJ$jn~~yXGzi5V_-Zu8pbSc)NzydcOl{gW0J4` zuYmD1L^M=K#pkpK|n4k z(SdgUe$h9em@rl7t2|1_fL7<_{d=Ns=<>&)?=)yRjIaZ(=}CYM-d>2wEQ6YfN6o{c z#knGHy?C@=K+BLvtb=W!^MWQr89KoKV?bQ|U?BciVy`&FF(B6IME{;3z8?-T4dMyx z^&yXwAeOQt5RH``mLiP896WjqSV^ppb|q~Ftv4)$e+`$Qd$@`wSS=VJ{kDlSC@~*) zNyvbwIHl6Tl!^C>1w^7+v02t0$80v)R_@pF*es5URxuq@EH>C71RU}QQS4z&1MuIE zp=Li2>dAO8TS32;C|s=W*`lPBbAyLu7L(Oi7l%kT7!6lQSK!9S?(+waCSuO;9jV&w z+%OC7EZD%CGjfADJhH8nH))8Bw*O=BaA&$`-|^lB>P>rSbf5*XZYZ%fy|V6i?>wfi zckcOv+h=jXEnhqeV;FYXRgRoF91swoNE`)8X2}{NqOrjmQk^&k>g98{59gDE&SwL1 zE8RwU*N(Ui`pSkInZ(Yi2jVU(y>ee?E^LtRu3s-bl2t1V>__5RnQJfmB*z8dev~s0 zdX!IVu6?U-l2G=iSWL9Nrc6tC9w4Rz&Ad)9nCHj?VokU>Z#%{m4vu;e3w!~aZ(+F3 za;}B}>0r_YAg+T0r0z89*EsQ$8aDCjdj1XYe{(9@!Gp~f{1m#gj;%!NxWoULWLxU> zlvrO^%CJFY;ZSf}>p7uu^Ke1hC2h`!N|0YmbhE!MFg9z&2wa9>~>C5lYYOT+KL6#Zu%5u6~r+hrx`Uvft-;iaKlJ z)nkM64u2vA=e;g>Y6+4w;g~rc(!zPm<@XL`YX9yNIPekkJ}iLVAsA#Xq2*4;G_f*b zUAcW9FWg0&M+BmY5wzc$s0od2bkatNTtk~x;qI)BpCFRyLoia|xl zhextvNOFja8H|z;$w(CeOM39VzbQuOaURJTMnA|@^s5o#-vtD>7z>*UM$=xS&@Qj! zftpGS)P*l@v7kCM2|Ml9n?%tyB$s(Z}uh~R5OF>gh zkN&Ry=K?;p0SRT(Hh;xtM16HXz1!ZriDJWYRDv6+NU0*OoEg!=&n+Swjd7GCVf2& z9Q#%bm6#=WxoH2qYqg(RmEV$ev6yCu1!d85Rrj8*bk|aprnzkbHlt)n%+^plrS-z7 zYvh-RjclX*S-A7?&V{KwZpk7_R6_L z*!QbYh=!Rs9TtZ(L9~14QdhaRfM?dFxJL8MB00q1ae1TzJEP7=v@*J=E|QO0TZpAG z6>D{Q!y1?6feFI;rR{^$P_-b)J5oY32>72CWl(Fm;W4~O!eGc>${(RPgFnc-%?(f@ zj6(fs@A-JFMI#bMt&c8hl_8m8lu=Fm`cnL=zC-*!g#Y;KuGN2UKXdH{^{{#esHPP| z;(zci=!$p=0In+nY_xlYE0(TU^QgWpPWR9H_!heqV*kL7*samUb{~C!5oP~naqyd# zHs6Ddj@DKm@NqJK__1+p?e{!R=2dwtK7IrC3p@I)C4apjzVFEikEUHlGLUgf=nGMO9Fq&AqcoSc|tpR^$I(F@*m0f*JH29+krm9Ak}oh&M>EjbQ0Ua%7$kxTdy9CP zRzbdE#f3}_tuENTL2r@)He52pba({M^&T3LQXJD9Ym$>bo%5qr3GZ1abU|(d-IYAA}eNqiwELWKgohoBw zn0LpV(whq9Mi_cyZ|^MiHM!{5}q!Gl~*B4Bjsz zH$W6Dj9&G-bIRq1^i#YIUtp!AAU>*195-ne0SbCO23|M>2$OX2!)T}vu1~7@`^D|U zlhhsU^;vYg)WI)&<>4io1%>GQ$b_xF5WZsi8$M-i-o#^JuMq9%tdL@&eESa{=C~2W zUBvKI&(PUMFwK{Em$I&2HrFgJm58^?KO%wXZ8(3LF0~fb8PDz4xVib*nqJCb)+AS$ zD7f#V{q}@o3tlk;oJZBw%hlW1pYg;lxTt6keiXNaY${Cf_RZAsAf~CH#~L$GX1ts0 z{DQXlua1R-cLA_8+t_PEO~kI)p(eU3?UWVk!$C6Ujp1;(wyEo3%^z-xVK)H@Wkv1MiG}3<5KIOo~U076I9QDY7iYkNj*FUGwFohR44GzP$o)rm35M@ zp4l_pa`e2crg>@q(z8O8Dt-~%E{oOm99+uR4cf?oh&k0=pgUr982b58!GkrZ_}rR4 zJLe$BtZLd2Bh3~D<#-wjKp&6Gvb|?Q3MXCNJox3qhtv-~WbpF74^xyMW!}S>M?{J= zF2uW$a~RT)xEg_(PH0^TPQU&M=3$F5?a&yMrKz+lh<36Jf?GOEqd(_4O|`u_seTA8 z*D3n)(lasMD#%gJ2(S3oC!K-tf<^Bc%0Ti2%p~6}$T;NqaNWeY5I4PXP}Ur0{Qg+8 zzPiRjCj=IS@I!@DNStPp*$){5eC~W?7GoqMpy0=%4=pg6O69tqF~R^fkt_{pB86Pw z8>2kbc-p&u4(obtIKt@EUEcT0IED4{PecNYqrX!E&writg-1PM=)h|q7?ZH5XYd#NM@Tvpef8dpGd z$FJZE#RNlg9Z25cTK&*9x560>KknuepnQD4hC2v42=kbq86PB$r5L zxvsT*@u2oD3$0kbSZEiX1w}8^531hH$&MO418*Mxu*Qb<>}pY@ zXzgU(5bNP`|F!kWk3aOMAN|;8F8;)iuU&hvz4L>MFqw1hxH)U!L)?&osGv*`b&fm& z!$$2)2vwbpy+Q|@M>3)ZwI6o}SxP~wQgT5uy?Ok%U-#7y{`45HBH8CbopGqojoFa(1yb7am-PMQI zB$g&w02372h+n4ug*dr`Vp<(ru9z404ZGt-JJ;tTK7bDIazuM;EA^hCvP zKFG1Di?P+^2Aol{35T)s9RutD3)6aKW4o5~^$;pq%RRQZv6B01c$Qusu#!5j=z)aI9#KN7cI9lcZn5bya7@#n zpP*T?&^C?{Ky!Q&_q9E4sI@H>Y3kTBX7g52M8j>2LE6tUe;Z1+2T(Gg)~pAO>5ww7bz0e(C|%4-VJpIt_ldU7^Pe>A}nyL&6C= zTR&tpkeb-2S+I;QjE5JKo9Jjm`&6tBIQJSXaJhc4zaQMLKo}ahG{gn2=LhONVc~E~ zI7D!pbI{O-MWfxA-xKb9T5PsQ?R-3OrbMDwY17taQ zzXNZU_k`}g9Hjo1rm35&U*0sbtxm3+L;I2D>H|Deq$S>}_Wtb+eV;Z)A}7m+CoAA& zUG(>4+oVK~&>4eRMk&W8OZ#1?eu6kLLC9Vi=!z9sirof{7!PE|6UKpEGKXM5BLM7J zg0s3G#vd^byu7E@78oYpuTyG79I*=^&4g3i3H-FvTGZ^`POUbgL~p^hXsx4%7U^wK zkx0$8MdSE`ToZ_*SI6)0G97&^yQ1{peH_j{-5GiC2w>oKJWKdtsl~k9+b7T=G#s-V zs)g}k_M%^@3MoWAxr}co;qYf#4&5A8oCK*nBXA%0QWPPeOm_q+DU_G8_}wi6tgz7D zsbJR{3f^mvfOWB>8|Y2e2LCk(vIGLu0BR3F;5|^M(cko4{qYiYTI8o)85a5Sc)-Yd zh_QGVAOD`}?MwVZc+1>Zg^Se}EY`L10_ExnU)!P76O0pF=l}+Cw^6)by=ZCpQ1@%> zkD`BD>-C|Jq$w`yt%h^0sbI_}0C!ZF2n`yXHam!H~o%Oho9h)rxm z;;oatemRWZ68$Y#AF5A2*qmI~yas)P1=u?W>TP^FDrW~q(Qrp6@6>Pv?5n^4mawhf z5$`U?izoZ7ger*u11(Mfs(%8&)lg*sc{9I$qT7vZA)rp;t|je^9L`J9#^f1G2^Q`q ze5)pWYg)+?ib%h`P=lPDEC%+_X`60r(#_T<4<8zSELaA|qG_8ADHZBj85aY3`=j*< z{7HeznEYY2ADoOCPB^&*ypu@I$lj?^fjm<8WCtXiOhDK|RqW3bcJW1lT7pA5{ z?nq}PFhwF&>XdEEsP?ee2BJE-IJtq}sgyfV~O|*iPnDD5#^Cz&ooIVz1~P zeF;V)mo-(LPntFW|CEn$y=Fg)MpSaiHt%rVh&`F(5gLqQvgDC9m8yi3`1^ueWdNo@ zCNFI2vr2`4S#L))jY!(~$D~ErIS-}@N01@58Na}xC9T3i=K&m+&AANALKvMmpvOy? z^iks#ct&PzhBB=2%0V*hA~|&vm}`idtw7unKyLM@JN{^EHw`usc-mq(HLL`OG$2pC zT3`%m-6!D)-2m;TF=U=Q%lwJ+=?fn4XSo9cK?h z9=Zqs!Otp8pe$YxAt$usIwQ$5l|>n^HrvAx!GdCKa=gJ0Rh(bMQs)R1>yB4SS4=hO z5kDp$4V;JCT!iUr<1}*7ZA0P{s{@c_O77#^RPEB@vC92&oMQ1@tHYSt2#(9pyaq2W z^La&ynXn)s^##}}-UBuTNytM_NE4raYYJ|$fw>g165<%d%FE(yRD|n}2`oVoZP^s> zw*sv78!pTd@jUplgR)hw>6@wcV0Nkxvn9=51Z(bTQSQDCo6Bg$J(-W5;2H(+XtObE z!RezznrWkj!neH_)?7zMHcDPZ)`29t30+b+kVNo+WB>;w13XfDY2-6tp5cdb%b>*( zS(c@eIdM=%On)o^eJSzwg01NVIbQ~UG{X*9oI8qY7w@*eWEQ|ftb8tz9D$iXBffU} z9+2b--h+bnIhnDfnFb+n`u=yT^m#%MpF}u$muUBJw}v#{P!6UG4WJ@ zW9G#m54G_&sxxnEC%Kz-G>+ew8pco!*@<4Hchni)BZzsrRsB?#RYmu9Y#f&fbyV-A zl1y|-?%KjEkDC2NC%9I>#X?ffBPdiSYItE-3{F>Bh;qZ>xtjf;YC73}ZuPX-gR1xB zoYQ_1VXC-n%4etaCTA#F3$uMnxzl>OMB>BQiwv@?(-17C(79HMopwHjENC#;;mv>@ z&kAL=G-7x)^2dgkC&57J_YkOJD?9jNFMiFJCNWqnmtG=4&1Cg*g=h4I1XarO%vG(Z zx&#e`_`W5ilEaxX{`Pohzu?xd2Wkbw-Sa_rq^W2W=AI^322(F9XlT?I2^HzOJpBA}zN0`^^evu9w2ge=0(pyMqiM zFUY|nL$iddT{8-?suAD?9pajY=(tx_zl}B%l{wwaU*zOH!lMfUnStF3#fdniQ2?J= zhOMr5@bDUZIhOcx0*VMaUV(_mJFU@xTN;gOU=byDfn1wjJlviO9?riW0V_7P_acrw zv5az(2Juet)osQKDBf<3WwPE-%Nqu3m<_&E<^!=2fHFVgA_N%#87GX9rX;QbF$u46 zh0_DAC2)EtS9BI=TWa zUaVz1O-@6L0ci=}Q%fuv$Y-ysy@wB^V|MvlYz@~PuS;OBmXY}CLtnaL15w?_r`oBb z-@lK^d6Xck^Ys!`(Q;&2%@c)B;QcwEBUe?baqkBg(Kuqq4)xVD!jRm(_}5GC!uW zQgmwv4L>sg1Q}_B_mdD4H0%N9qZ~y*OOQ zz3Qb)Qg>nYEA-wBpFxn5l(jTQM$cZFN7|}1lw9Km2uKnqU>N)&CYS;?iM);NC}uxg zhq04lIb$Xgyadc#?+#VxF5}o z_JXfPpP-h4f6TU9m=S9W0v8etb;vHiJETxht!H7Pj0nT`&Q(MJ=^pE1$b~S)KhnVv$YC>sI;homv>*fN0b(pcDob#`d4 zx4TEP)m2NxrleL_;*_*j5ORY)r!JxLs!Om=JmI{!2Ro1-uK^7DsTDnxM;&ZSNJMzy z`~a2ZYE>Z25|zs?l)X_Jo`4pJq6c{JH)>^>-o+5q z=L7Yo15VK6X`QORgKYA!fNwy)tBd4V2`VgUvyYTo_p9W6dyp(>#5EM_xE`iPh$Irk8<+9{(TOQv$g-wmtmbvN#G+Ss zISwEjm;(?~dBHl^s%oW7gUmdo1@)XO(8)0*q$ zwKZmVO?ya1DX?GbfUvogTxs3l&&pzMl*X_xcItj!1kApEWRVkj`DDaSdsTMSi4o-0 zpIr?0=zBjlXl!gt7NTTTFWuUe2xn?yrZD4f?Z%5LvI?4o_Rg=81PvWnW4cZhl~kQ@ zUy31B*L4+k^74oSi-v>ha1KKWPT20HB5l@au?O}z7M8-*3gf2y!RHx!YCap$4<0Ijx6er zu4u~B>YTYRGK6m5ZLx?7P^?P&fxP2ML@TBcq=B`<<1qC=G$DZS_q6Q4x4EL`;e5#Po=g#H5fT;gpo@U5gBR3&2M{Y17N3A}?`(v$We#bpdpaPeFf8kG@cGWZx?6C8+B{q9y^I1!kIYl$K++e*M%nz*KHzxDy`{Bhh` znuNrTG%Z6Zjtc50|D2Q}_DQy{{9wO*6}?BhJbSzR^JTkNgV7dSMU-n&^)3p0Osdpf znm+1Gf>#>=+W%VM?Z7N}XCDsf%%z7zg&IYaweS0Yw+^IEr~L!Wwh#qzX*7ah))ZRB zHxgS;nsmB`m?sg(IHI(4tT>FKTpbgh3<^k3KG+co929d)13@#uk1AY)e_DfzGjcL~ zk^i-k6^bp&kRMj=%?}Kh<%o9yzyeY!D+8Vay*)@j3K0OVyx@70959WiV@&E9hA8EC z*{-JBq{WpyFoa=Mox;+h6IpLebtit>!Q~pc@fzhX6u>ON?ZmQ=HVF)rU8$HP>IoIo zmMSYi{vFC|_h?o#jh4CGbri{|X)yZ_zZm0l%I!RC7zxKW|;{pgW#4^ z5LYjUc<8_yvX=)!q2vceXhw`j$dbtw7&(?PVbok zVLC5 z+7Q}kuSTemVfhVyf-Ub7M|ql8#0#{Y9eZmoO>Lx)g%?)8Hz((QAE$dDAidCqu!mW~ zv!;&qElHHK*M>M8LY)|y+kF9)zLLajqI+Sq0|uUH8FX;vM2@{ zjh*Xql~p{;+TZ<+S&Mz;qgUUij1|kZc#97u}rFyhw ziv0rIhB2ai^ag*KcMA@Yn*pvX5#bDYB2(=ia^8l{{idJ*E#CouRt6TT)4hKmP?h|# zC5`a3IT7JJX&-QKQ4XBdszQpHD=e3NC%8`wahk?U!8GYi;m`s4T7r-wY`=BVY9ls2 zV?170gWN4VwkADpgDO~=`}Amaa4wVg7!NrdI(ehBGq8T zA0r=FuAEq8ZR%$v&lg1ub|=)6!el;KRz=`ypXUZuVj23b?@@ z#|q<|u(NZwN4^vFLM>D2-9jtnu)m+-CFh(+scq!QmGCYx0T>i^qpK~haIF)0p6Ugx z0g5Q6o*5`G*gAEOOLY$))XGHn+JXo++@e%(X!*5c;0B(I=WX!!GvzXlI{8l6?Z;|@ z7sf?0zL3K@t&J(108U@ZF(#cm*;j>79$XBOIcH_I5b=zPGsj02PO*DhG8*Dr17(fM0=0Q^ilL& z5~hf_A}jv5i%N?zK!T@7_3DhH44WIHmwU+;?ha5O`cMlplP$;}fNm~`D097DWeP^O zrr%_wW)ZZmr4bFNWV==x5~^+WP7T~Dk{lUPt#w08UV_X=W53Q$nu7|pJy46GN}9GI zlhtv;3pE%5jXaLU4rUYP`{XD_Dl-AL;Xha(u15xwax4oqP}JLtEZx^%I{{b}C>}y% zvQQYIfI*k)^^RkUxutK&BMlfexqZGw53kIG)g^A6aH>fV1~tUtdKaLK2r9hWHxA&} z>jq;K>&&79`@>n)4NDqDdZpVXM4#Lv&jFU3aaKSZV|n1XI|I*II0|t)ENAs^3~P-e zXSE3xcA6%P<`8vt&n8T8L@NtVgE!<#1utiVos9Gr*HgI)W(rDDXIIZ>=ql?&)Ub!u8(Cks zsu!t)f@oT}k;_Qdx|;8)c|fcsoC>0TS^5@mp(v6J&SvAUj+X zq5;~@$fp^8Fsy^f%@1{rR`}B2zjCHPPYz-FayY8lj|&4#^U_ zuX}z8H?-d1W7L$j{5O2nyvg+EcK!u&qXE(EFwFbbh?I0O<&cVct zy-vgac(3LHgOPfJy~vg9MX5aZ<}^P;N|YHoLszQbMIGSlWlKsVH#cET0C4U=IPHr` zBNZodD6;|wF(XGI$)}$MD&r=fe>#2&yvR;efda8fs}<6M6cUHFP&po<`W*r*1rH!5 zLYDPbJHbZkg_d%vf7z0HBYh>E!to9VC_%&3tG417SHL@g9Ce8vW@v()-0FvNysCL; zyjt6afw5@-66qLNnusm{hZ?V9jWAYIwIEtl*JINJ2a|PSXRKgIdXSxokc6g$nb?1AgZqB-+Hmu@ILhq>6yrYs zZ&@2E*N{h_c9H1^-4G}SY(3d>kP;rhhOX=?nr*gE+l%jso&*?@fb9S}q(Tg#x?yVo zpA;Om6M-8odKJ6m zgp!05Okk!H4NS}N0BncpS{?-_?KNYyh!`6@+YWwb;Xr{aPv`!w3)7QB%_wFnoYknCMyab+<)!kzxvG2 z?|bWg_x!|p)aHB{Yz+i7bdr=jlMsQ;3&q}@|Ktz`2GNPNc~6lVe8_K*g9$%Ea1aHr zYM6i{kPY4gjf&SopOQrAIir<~xHCBwh$RLdN`~Xzxg?v0x6~@+bzO+q{@}Yg>A2d* z!1E9i%I$`=bb9e{@&D6{oqXA3#~~)v>@y#@x{RjgbIwSih##+rbs_5PD}W!X^GpmF zDCZ>etcC4)hK?+2oaP5%Bql&dbywj5*qpSDp1~ddX-U19!<}8iQB$huo zOP-6;9W7Vsl9>mx&UL4nwEXHoL)A*>>< zWjewMjoe*VpTNm;+}BRW1IeM7 zv>h-maUE@uRY!o5nS7&mV6%+35!#aP3~&z{it0$*4SP&B1#lOncw5uH&TH|TMC&;W ziJwuK-nS?UuQ3%h!@8+^SMotDm>ZFH<|}qo*H^vd(BohJksrEu@E_Ly#CiC#+15(O zHpD<{-n~k~Z@$6n7TpSE( zfuIit0(cbY1FLW{sdZFe?QYP@=@f*f;l(Ps82^kp^01ESq;X4ofTm&_jpbw=*7wzQ zedSR7(&ErGoU0AG@`!1duv)#^Gi2U{QxLG>fNe7kSPG%q0PCpkA{K6d2k1c#pR0rlT^VlNkm(Vnrmu=w(^P z2tuprs&*(9G=fnxs&I^|Mk)iN`FTck+p=#gx1Y3CN9v`W2bD_zfACj zw}ckhuPbd7R*-w5B&8RSKh_coZ7j=%!}vOxF=o2~i2Z_!bnuLm?<*z~;OoL`tKDFc z^B1AZT9^08Hpj@MgXy1f1oX#L#z4-}f5V5;Uld!7X;v){Yl;>CMzdqCs7?%p;;<2B zphNZs_zuCX?agpl%ed7Kml`k)D8u+{&%ae~z^`y)-l_t+Tx)))erV0#dClzh;X}m( zYA!lDi78^ftUhcGWD5Q|ES~3uSVqyWhvGx*NEG9yi-Y0G;@MAd|5b1kV=%KG<5#e0 z(5QD6{o-(E&8B4pDYPx!(%0_ouv0|R#9e_~?1=w|b^QyBx<0wyp+6u{8$80e3GmQ_ z!2>YVRs9fnC`COCfpIf+)&l|gCatnbT+L53dOzJ$OuclbqxuKe9`2Cod7NiFC`6uC zwZ<)IKffm0Ow^lo<*VZ5h z*?*NLW#{PamC@U9qSUfB-$ct=Vv3GqFQtxW)Vx#G*ZNQt247bcd#dklwNpcJ*&xvR zdc$+-ts~z4%eG2In6OKUd$1-_B96;E1B{m#T+iPzC1L8aQe?jA?ebY{8;2Y>Q1*ED zkA7cFPC0BgJ^?TTew4fTQE*CO~#;EJnqq=FF3Ox5+2)*Rc7KMC0lBcvCPH&;wC$d)Ti+^SXv|JOpU*n(`5)iJ0qsTz52j z-vo``n`l(Ddj(}g>AK#_bw{p8Cdl=$$yLltJb=%m$@a#rpch!vI(%P;sDg>gj$fXZ zt#Ab%@HTq$g%W_i8JBXqc=2;TM&#lF`5@u)e8lfHO*Y1=^C0Z5IiP0^1U#fa0rkF6Tj!Pk01>?}t z#U#t4YeEo%UN{*56et7a9dK$MR=-aK+d0~UiRdWBVEThy9CP5sPOr?Choo;FvNt#r zY9Utb;Pwx!AAZOMO+F&c3346T8SakDb4O#brW6}@dCt)^xz&&yx6c!CUdc${p!uSW zO-A^Nl%4_eLj@RB(Z-gf?tv{&e4S{_7@0-;kYAUARs7l>DF-NYjGH53Qm7W~ok7@y zeD>wwg*ln}V-+#qkwHlrB8cXjvYk=Z4g49jJvS_hRsBQjAg}dIUY126e-LXu>!iCE z?eA_P_U#2a6^5IC?XY#Noa0K*wWfH3GD`N}k_I6GL2f$snfWz-RpaYi9U~aoWZ8E+q z$WZ9Q6QR@S357WkO4u`cpTeAABuwK;r6*oUs}-ggk}|LMOaCHHq2N511RLg=oZq?N z!b}-(i`vdKr`)zD0z8%pBXM z@3A@~#A4Hr5KDqp3!*3Pu}$fZ>gpN98VyHhfSkG{WO zt#Xwq)M{l>Osf5a?}4A%wQyqfN)u2jpyYv!tSxqvQ%T`(XYrl2cm`G$9b~Q9^29LC z4i+%m6|K{04wa}v$e|!A96RKTZ`M^;vCONGCnS+5vpXfxC6`F!IPqMw6VH_%k(!h+ zXyUo%IG*D!&~wh+ntU$oi03=IL5om4g5v{Hc;3ycKq;P{x0l_i2zufU9axviakoM_ zxgVhfreW`yKaXx-#+6rh0SLrURw-a3?f}oJl zW9d5G7ex6oab4HZlnBTqBN~AVJrJ@H%`a-B+nfZa2!|U+-ky+mE+Ow+Lf&47ye;vj z%6{7GFjqIUW`8OI@s&$U4jO^#0%^JbfRI+#!izR1L?Fhz^xloUUVWvW`H@ zi9Q@dMA6T3vY*ExB<5g>kc{o(MP>~X+$c!s^Y0Uj(bu)-{ra?>k|lX<14QR`l4 zfQrBd$cN-BKjck|c?pg{E$~p5T(vKrFLo|+o&t2QEsR>kKfns%;sK5bT0EHe=#ewm z4otID4jWWx`u!CUNy2jpgEP;CBLvSKj}SHt&P}mzdf6;GpxsX3Uq;VTC#FjLO6Xk9;w>Dkq9(91SN`B!VBOV&Q}^ zkswFn4MRX8R$;E#j(p9rlAJrbkcDd07kp0+K0-P6_tl3K5rX0X`H}qf;%ZrSYoU~3I36FBU5^AO*cr~Fm}mK^CJxd5*zn|!_uKU9@~iAkHPO7{C?QI?Zz zyG`C(wB{N@gf5NF(XpF*-n|@_ZA3W%)*e#Div654X7GVg3=!tSw_+6l_R|VI`-`A$ z6SLf{GAc#C(!TV7t&s$Lol}#*_MG$v2iv6LE;23-pUEd}hC((2Wx{BXGX#ZyE_{ac zM;N8x2ivNSHz$`GUEudNHDL5muDde8p>XgT*sbgVk`!7=g_xuv(UgJIkpi3%!d{=& zcyC5_TJ|JaO8kR8xQl1dsnzov-vLe3X&c=u#d$}+1KfFwrbh1sVBC1L^UR~)F-)i4 zF<=el!Qfq`&ixXqYr_ett2A5q07T|OHZAKa)^aq(qqs}vE=B=4FgI{FM&K#a?>T;t zOtb{;0EcQ5w6UZ{E&>6(5Wu;$t$Q7qQ&cc_(YkA?BwX5MfaF z1NrFl2#~_Badq+L1xLd&=IjBydCbf`;5Uz%zX$N<;48hd&sKu+V*1UjJ;wRFVpd@> z@W`itb7A!X^Tb%P?3ZP-k0qdQw6eiqfH!#QzanHL9{^XXA+^JWvZ~=@EAoD$FUYp3 z!xPS2D4ht@pcaKpPmu|SVd*WX3R%`abT-VmUe@pDh<6BQwdo{wmOY(=yD?!Az6VEl zkDPg~y!Vvcr6(%~o7s*ro_Q|rqwQEm+9blIJf(Ov503Kxa#+%wlp>xVlzrjmy4Tel z##L&ryL-fE67XQ6!LEa&XL6hJ$3e}rG$1u4;UfJ;EXwGb>pG;ir#nP>^^%mzqk%~L zs8Y`Al4ptl6ms4aY^U)~tk%hTeZ(NsXtJ9)trpVl2uiud{wQT!Ij1S?gkXlphYL=f zQfR^9HFOZ#tdey~k=2}7Wj*yGcJplYDy0dd_r>51_$R~<}JBZL7lpMY`yPBRLPp~nMiF%5g1`AvQtImk`j{faW{(qf8U)i(H1|$ z6vJdDL}3zy?7{{~{S28V&V`F7Nj7b<-Jupxwz{p^??x*Y?)r#tYNXC%-V-K2RUiLn zd+!?-s&|0xH3wVnlAFv|DOnizR+W~^_jYQRN>+WmqRX2iW;xsDMb>JGJB06kyx0F z02(a^#9BbVecgZ8a|n9EFEuB>Ad%!j>bzS06`R|IqE(QbxhKQG z=z068zhZ$@rnwo0av>^nLCr;vQzb6qavk5#Mp1pk`-n!8Gt;F9WW}O-%*F0#j4m*o znIAXs3MPodG&nWn?Oe@(_$RbCzQ5nTnO{Y_aQ1dKTs;jKf5(*rY0o4p{kyRv12}?W zAD5XarjHviT!IE5ZE@})N+MnwuC-2x&Lo%pO}Rb90@yjpk(c3vIHTz&KTz*10pT1i zm}EfUEwmYjEUGv?iD2bq2rA?jm-`*g4>a3IOhT%!W z>J}>+Po=k9;lz0&SGZ@nw=1r=hs0~ym&~VDyh^QjU6!YcDJ1Pz``>uy4E=OHJM}gt z?Hpf;sz7b2H~U-_if1WWp(Y@8O1TDzIPhGTS8$2qughz=)NVm8_i>rQcs^cAnDqWb zepB9XbO~^*7tR)!7L*QirY-DJXx}Hp!pE7y(@!s+BBM_-jGpRL!|Jt>tiWIeL}V4u zS)jke`;WIbprtb&0y0IqFrQuys}B0DUUduXP!p~_)%NRH@ALK}%Q+e=ssksAKqj5I z3(PlrYjEO<%4Vt$Z-YUr9zm+ZEBKP3)*t$)Itc2gri#138NyN(_sbP8_h6-c+zCuwSM@fSQUQt}DI7+o ziW?*Wtu?c3(LwCbo+tR@FD12L1P5-M zE)I>WmvTaa7dkqw4_+)fmK%nnHU2qMTZT2k6(VqsE4|DAVoAh-wp`T9yS7ghuSUhU zQ72qpaXb?(hB+htkDI33%L9+1^KzUJ5iAnadfDI~bCz84i`#r?jH6jBbSd|Z6gGw? z)M_tTXB^lT&$js)5lZn~Dy3APZsD&#?fmLbI=`~6Fp567v%h&jg;DiU2ET9N(7!0U za-5>;QZmLN_Cz-L5mutacQU)j`Dk}mk0CdeF#Qaj-`l0S)GW(5(X)<@8v0k7lqR(VV@Sxn?uwn4_O#mOt7X9UH|YDyh~Fa~49- zWP*w@jT)+A$Rz3X6NV16u`Wn4^)B0f$VBr;OPW6_;094rH;`#Qhk)n&>y}sRNJMj} z9Zb(y;%yIci-BMy&AjJngY$$``VCeLU=oUyX5;FH{DZq&$<9aW+F} zvE?D*N4Iptc=^usFjH&GH}lrJyQ3lJbSMg^S}@vSHemMayv~;82O3x{c>d5hl4d_A%8Ko)qi_!lTIvb8z=xX#5 zznBme?HEBmC^H#EU#h>hmoMgJRA2ZfrYwqnV3KIz@#SIz7h<1vz`8bEgiXRmC8y1c zf6^iAU)>(N+Y8J)1Aqi6o)C^Ink|pvJMaJn(J?+pHkAyZXER(8dBau7 z74T3;!@671K*)ij9HT)^p`*jh^fOy`PmHz$XuC@rUBnD1fh1W(YC5K?S;@S1RY}gZ zE5vAQiaElXx>kHI^&}!V3h8Uc*xier;>Bj3(~|@rjo_xeWi`;%9ecAzm<8#m@RP9q zv(lCDP%?pe`08h)j+KYEeXhOya=f$(-WIoBrsdnnv>deSgW7I%=V$pY;wWk5JQAKY z342Un0s=7&m4Pc}%|h*O^y7ydJ>1Ud4nN}_TZr9DT~U1Z@1$;t+JuKt zWG({&BfW^p!Vt7I%kj*|H{Pxmm}=64Wl$&2E|Y?;NjU#@Tk3HwCP}kp`e7C&Mrz;! zCL!iaAvs;f8BzmBNE*lW0g+(%JA1o@N>jL1Y%@cgL>^2SKcwb0{J;fH<%h_Pqv=K( zF1fv1uB^M|d`cTAw+Cgb;!u=(;Tn2IC~X`B0D<)L8G1InKKu;wLMnVrPkhN>N5A|M zU*cU{@Fk^aepR%0lPW3fY5JjBeep=Ezv0_I-}zfMqQB%SS zM3nM8v3{(9{=^|WAft- z3I)Zy0yq-Jax7%0H!}T#t*m;AaA{`$Q;=y-lqEjejiQ;KbO)mqM?uSn)QDMg1^Mxi z6kBVJJ;DOUcZUR>h|`SsHt_McPvWz@{5a&Ge40k~M{%co8@@fw3qBk6oIs4eWbEge zcEqas?1DhEezR5>GEc(m5rg55XW$$ZFj&LdM<@9&u4NMw^dRa%aV5vy_As87`%g;n z8re4~T!%xC2V(IcNB^uCD~i9cpM^~XaUjiw%Wt*iBMPD0JHSd9C)jUBRD*R|-a{0& z`AO*-Yq{7N{bRU6Dj~<3F78QTweURn2;84JNWu-D(xS{+W!&cCyq&P!PK)jw zrtCW5UJEtK!_5>V)F{AZ;V~5Mg!?TTsS|!i5fSOzW08y^*!c4B&G;aPGegb8zkkZ$ zMd1{PMb323r|4%Q%TLZH3_2=E;K(vSGJ2d*w4nesvl8WgC)U@4K|zOEAudPlbk3z zbtXJyg?o5Busk1l#N*O3PzI@J z6?`L;W&NP+P`kWKm%_5Ekdrdm3}0>>h7Zk@^kQfp+V!!P|B+FhjQA({DAu=PSl`o! z^)1IZkc5v}jmwpQPCSbm`S36E7ZcWRHR>eaw#K9=Ke0E6O(?t6#?Ida@s#v%7jes* z#x%lky`=>tl>-;9KcvjzP>mgW1Q6JP&}h&nomfhYi+coEHu4B0;nUVhcs;}ogrH@K zEIsIj=YwiTDgiJ;4o!kfgB)WBYlS9S9WUn)6`zXOQBBO_>#2qzg@vBJt;I%ZmxYd--Zg4%Bxs%Hn`G6P^ zdBi!C$aYj=tBO1TG9PVW%)0#ZF{8BxL`{f$qWg3oS0-w7Twcf430+|&gsE= z;zi8(cygVnpL+T3Pwe~>CvEfcV^DzMmtZMP&StMbzeSRfj&_R`5D~zSVZ#0i+MfML zOyVYdqx1sjbNRJ2UYJaKsW3SH91NCfeap}bX$fJUy7W)-qMM9)Q_BY(5*?cyZN z=re$3UBR{7=EDf!{-0yB^bxE3YA&ZaGq_kW=U?#%JnUszpbU*xEIsZ2Pm6bU+$_^* zVW1+wHl|9n40qp*cVZylVH#HQZo7^YHJz|2@k8D`OD;qnl;`PGvy6@!pgbFE-Ne)KX_irWr4;vn+uM#NrTgM{ z_7TT<;p-EoNFF^Vz&!|&d1?o|?efS^C zkB2vL9CFkl@oee}!LITvbV#`qUDqtF)oR?FOH@%~ULE@Dk5dOn{q@I*-O5+5zZdlS zsR7iH_AssXSKG;uN%?u@JO+)?r}PET|5x+r-SuTiD5OPi0WXl0-&bAa84Q)l#G)R+Cmy^D8s@ts&Es(8+p&`C=c%EjV4L-Qn- z9$6$WI+~~#&~rZu0{e*`in1wWPbscs0@hWJtEY3-311Lbu_b%rk?IkK@rNmyNUY6@Q9{}Q}dw}Q|R5z|6R_b4lh+&hjL00Y1mJNqCOWW_Y zp}_*-)7HTM_MtI#MDPOypdA%!wpvW?^Cj z^43JFJ)dY9L>rh17+jl}^_ZcjH1DFKP>03*ux6O~@F9bmS!=Yq5VufBJ|@W)M!~e% z79kLkkVVtzItL{0l=U3Wfm3vQT2tkJN*};fj?7>*8_Vh0%weQm<)zqBTp5hzR!RM% zYC6+nVR$u0qpPu_;AT{U)Uu!wR?#I3t69}&C3z)@tuD+K&!lHX@%t>Bu%OU3elSVO zf6iG(aIqGidVhRHghW`iFCAj3&4=spKe-^aRVUeBQ?HY%~X=vNRFapPV!O=3C?eU*Fu zj7kjTQ%-CZGAQb0cMrX-v7oCH@{4+|VM`I70bzt<-Y6fdc9J0QWKC~!r9v7o1%A$h z&MvUPIKu|!6=W6pwG|y*4Bhf9T#@=SUi>6gMti(9%-PqqH7{^jr26I!T1H01 zED4f%MB4G3wf>)rhHJRTt_C8^)j80utMbM!K<*<=abY3_?Be3FjO2c&#~x~tf(~cp zg&r`I3s$w144;8m?rB8ns2JT>a7GfYuxS~-<({`>H$2Ern3MeB|Kq8dCoEm(7*oZR zWV=l7n9YoqPdqLOb7Wj>O>|sBT#=@elH<)Bin?pW@f@Fv>XL9@&f`5{sbY{E*L_M;g7j z*SLvbzF_3k0;~`>v(>VS^}v8&W*ady2L>1_8sMK%rs*4-=G3h|&XAbTa@R6blwpK8 zS`v;=@}mfbb8om%?ohDpXKUxbLZw4v|@;s9z zD+{BQ}#iHC>m6`^HZ`gkMQhpXD;tMyPj0qyb5XJ0|c8 zLpCUIv{JXRZbx6)$}u5hGd-0;RF6NEz>=1li7R@fiPoAbLYUAJYlBzq>-)qTr3FE{ zTaAbgt{54g6-eR?@QYNbInb!i&iaYwfnNHEZPGMa#53Q~1DNH0ztf?*Y6wbaBHvt+ z@7ZjF#0D@8VzGk~hnfG(YGIhd7p1Fcfta$bLkPeL(NJnAU{Rzeg`B*Qby)-VK+LHq zQdX1d9dV@3P5AHc`iyr{P~k{jA3dt7f~cIZTNNk;)-qbrY4sk+)etJvA<$J3Gb-T4 zl-L1qX8Iz^46eQhzKuZsBJj?H4v@^6rkj085R{-VBCd{ds*xxXN_-_YlL46KwPRsX9!*JAv5*Qu8UJ?Z~Plsiz%R!GfL~ShtCsF??0ei7SjVd~F*u9aeJ@J+kUS12k)LjDnI!tZal( z6j|cDEpkGQT}GRt9Wr}H|78~jo1(T zq9Gnz5G>^vmX|{WkRX zr#30JG?wJh3SqhE_3j%(Pu$-uA+|4JVN0U%1l`2^a~J^0(A1)Je?R7W;d%m#X_hlC zG#+q1iec3xFoaux(ojKF3AWKgm&f;`bFdVWN!>Kfwy=gY-LOH6Mg8GB3|LAj;PeO~ zif6KVvvQ^7mX7XEGEiu7TzkWYkMx&DpvEd8`O1%1Ej^z!cMU|J)GU;!nu!p>4ZRc0 zO!)&OS+z~lFDuHB1y}}Z)Q384{a5>&-oh)QD1uX7H6jWD$D&Luu@Js8oYs4?l-NP1 zOQhqI>nBJ?5ekWjw=*eU7s8uLO=9Pym!AFJLp&7at!^7OjZ#$R9D3Sd)kj8#-UxFx zA8~YQZs%pty3v2HMW6@@@?bA2-_x<5OBIe{TFGD4dzBYTgf}k74hAYyrwMCdwiaRy zohLV$Q9(aScbvTXU<*u&FUSnWS!D)0hwms>)DCGO1V|)`Ib0v{tUP5F6X4^=``Oe? z30bCiV;JoiBLtzt((x;r=2q*4U3^+9N?jNiqk%1-T2s2ud+HYS?2^I_sgX+8G$YjwVWrxEhgmb-fQGmB;~@ z_=-$>)ImaXJqB-)9Ln#ZHSreA;sbcwoFlW<^W^^ihQ%?sdT(%I z4;z#R{DRhdiqw>6i&PHDqrPqNjCBdu_ULRmWp-P^_p_1p>l|&rYQI5M4UCN`*P^H` z;1#la6|8I_%@fr6{ydF$-_O?f_g~N*hy;V&znWNo5sd1Fo4)>y@1FjxXALge5JjOA zL^Ub&e3d!zGDeh^iVx8(lznN-j`95>-NNv^1y#dsm3oaS_oM>7NU^xCBu*nlkmIcr=2a zsoQ`kiVr+*nW%L6*o8=|qKFt5)E=5evZ2d!BwEDvp8R_P{}fTZ7ypzkeQ&)Nso`40 zhMy-QMOIJrPoC(JPNHOJ0rW$jZ1$HZvWdY>yCbV8wr6&zZe_Lyov|ZJG3R&KU;N!% z5vlO{Z}=P%j%KJ1|N3n^zx&Qj?r+jLU;<=xB z@OeKqy_o3|b$~{_9oa(@m;b}ksE|U(2>nUu%nilU%zbDQi2=??JBB+1fd8-%a95udH@jiJ>f)-B;k_OQg^0Y9iK1i2NgpdxZ&Ots zD>QDN2cByJ%TQQmKJXpTKrX>>+3IyhJi}7>t#|;*yRg*ZFX1z2oT5G!SlBV9+Is0v z@X>^5V}c+dxJd*D2V3c~Ys8UJM8pEOlB93p(UWxCmspGA{b}kWSVhw)Nmzjd^hYDK zj)8tR#6yow^JOg?3bCAY=mo00s95ZA#QG+N(Q)l#j}Ag0v|A7ga*qbWU14WFhTVhj zPX)RWuth@kKMOj|`LxNdj|RK<=XS7Y`8rU>vGl2Om$LolHK8Q^o~=V6CWfP1G1X}g zMK}$_er96HGtlF-%p^mr5P^Qe&}gMLt0m@2gBufWwNSgH!!gp~YeC+c3Kg``!@pos!!60j6oyvCeE8NPZysWt^Wwx5^i> zsl}x~HO1Oz;X)wFOIR-c8LeQrl#vn(X+*eP`^0jC#f{OvR6^^Phzo+5IwrwC6RiGE zh-+N`7N#X7m@@V;1VJD))?rn!O&uWXD>J)1GdVXaK9O;Fsgejm2}KOc*SrdfjUJV* zKDAys_$=2GDB3Iy}GYKxajR?&0+ zNGq?(`wD%9AmwzP<)RNoYVpTw5-bc^OTIWUTH7cI53UJ5NJ$rAW>zb%pks&(5zFc) zg0g;8v^9@J(4*~l)I7}kVAbgl`>tRzH8m?D&E z?>qk>p7{4mi@%h}k;$&XcXm*31E6LKLMPnbDF@{8{d41ccr_wg&Ewo=(mp=TNUYQ4 zdSV5OIb(9=T^_t67so-_w^KDQi}-A|%@8;#KQzfmlJatX${(O&l)uuSd-pCbRlwSx z;a~9GI?;Y$$L2x%k)b--+)xi_)`_7;t88XImnIo95+Z-(5rKoGEW(WWbU4S4fegOn zf$j_i>@%%)|B~PG5+n%oc#zNUVq?gv&{#-428gTdC2pzcI)+F9tTJgwng_FLSjd;Boq4Lp>c=K#H_lQ4hjvmgq_Q15rdL$p6pO~x zA_V)(tx6b~9NDK@p*IsEoG!j^ENtW)L<%|au-=&>?ER6-O-I7R4?p}{?Jwq*>0nlz zX-2c63m#eqi#diE0S39kO*33~#OZ~i>|ZuYEs0gNVq2o54Nd7gxgKdCCKa+IloBLZ z66FJXgJt%FXj4QC2DnWL6@VM^H7)t}E*ivKrANYg7{d+w{~@P*Z5-7wNw9DxS#arK4ewk^mpej7@g3=@)i;ZBM$qKipAP7=AABULFe)`L9;D*21&!* zNmBRpintl3*d7s^DPsU7amig44O|iv1!K0&fg;?9S*WXa0aa!;Xa!Q8D>DX|56`*Y z;stf}3mai6mV`}R-^WW5pLKAmHWfLGv^wi?X^k*P;Usv&>5PCwMo=-11mQFGI}R!K zzTCFARssJfovj+GI?qf_wb2lF)02;kD$Fys+wW~eCM83_x*$%J(V8*Wh8B>4M}`A$ zA|$k{!d5|qgu27Vg)871Tq2NK-(bYnt<<|ESQvDSFgBM0l!+R=^@&g;Hb~nnYE{8t zcx_us2{?+EGCj(hMfshOfKaF*5?HouQwQ4WcMBkElKBuuh&pI6QY6HTaW10WHhmD0 z5O?khyI76ZR;|2x>hXO#@?7g?HglyU7L4_1`R@EdbBaq^^)M}3&7gEMiUm4r2(l8K^P_1X zKHZR5*rMiyDl&S~#LViVCh`Mwiv@s?@QA2=L%dxIr^CXSiUBv8-SPAh+D$Wc?|4q_ zh))ft(D2dYnQMp&Pq>ohjM%zL*Zd5>!RKS&ASGf4Ii4CZ!pB+y z-udWm2-)*Q8GO|6GD>J8AC{z%jeJ`^F3E;nqABF=Q_}%h@*}fO+%Cjn!l00nWs%^8 zZ9BkA0_)<{;EvbwTsDP3o)ukM<-6NN>qt~XBMq=$4 zS-MT_aoZI8O_nR+13XcCPsj?R0C%iq%H@S&*TMp+AuE4Q^gT1=$yqwZdEK;#5@Qe8 z&8pi#@n>ba`L@Mcn!qKnuj zx5m>avGyucYxxne=@eF;PReM;j~EG}phQRtEQSKhMPO4YOo9I+&Go@N`7QKT)EeB@ zz$K2MWoyJ510PWYu~_fex|?}BOpSH zT@;l$vgd2FOK>g80iumFto;dQ=#uOtpUBclZM%6LZ7RyyVu#cYM5I%`1xtbPMC6=W zVM6C%&<8vqZ}|!2X5f^9$8b|aJ&)w6)AD<^D}KQnz!=#lT{ejTQAQubFqyqDRBjH&oY1050(VmZ_ske&5Dwxb1KZol8!$zNjc3UudnTT z%mq$B(XGu;^;nngDf|mlrTJQ>6jMdZ+s&i~Zt}tH5ISZE_?v7C{t$6(c}gs_j-$H2 zE!|WoqCK7aFtlaBg-xJUa$r&}6$%tPtW=TlkQLNaL7!|4LUxAYpkYK9OTy>8pKj>@mbwGkQiEo%nZ@_`cHQ>sj&}P(%J?XPNfy>|6 zwmRk`5e+|*9Dcxsh?%7Pq3vS?WFvPDGm(d+fnNhv)eXRmnngex-D$ege4sHU4K$>N zp1wL3=S}h75#hp(!!Zd$-s|ht5w*KHUNFi{aSDYpTm$8S>=(6SF;xqIwfz=8Oq;GG z%$|&8OxtUO6*T}hUc~ty2vXS_;-WfM2{9|V$Vk8kF|iafTKLWTgR)n!8r6r6Z>z+%9mEnPK43xBzf6sRZ~ber=czt1-_%xwV=SRhiqA4mDqA= zoh;0kmW<>}6Wab?K0i!mR=y**xdPTi#@Y3|_e^WwT_Hh+fpMlv<9Y8b<*Vj(l8 zn~V|D+7%^-0{2C0V9qcTcojTk=crS@6QR!bOw5Z9m{dG;By+XvRNePS)6I$O(|nwB^1 z)bg-)wQSXR%a)xUf#ncjp>@zDc()rFeD~cO4PAEy=pwpAu9Y7DW8wWw6yf@EL|phk{Amk2Y~1k36s=LJr- zUJWe3xXBZj*5q~6=5zvlSd>h(fkF)+6E_X4u?<%_SgHn;G*O^25;5OYbwZskr5`9N z6&GgAJfg1_k#!+V5!et(|GuR{{pnVMpntf@|MR&Hl4QCkOBm4FLTGq_c$S;?f!kdlQ8B#=Xh%*8S; z^;+)ljM37*C|zaF4fwq7b*xOh=aS54q^=si=g^AbJytl04zw%ViBig_Bdaj<3?Vym ziN39`MMbHUNbTdK2XLl^ZkG=rfs58(w4rW}upuG0#fLO?t?W-pCgFpg*Fb!1tby#D zN>|_1(6+ft4d$zIOSR1tSR(wG)Cp0D6uAKmBox46VoS+HQKFY^rx_zi8jbD6dg@A~r%z(%Iu(BfbMMY{5-yB>(7$XJQ9+-s8CIP-VggBQw&j_g?h7jj6&IrfgG=N#t z#$)Z^oOy?>87q={@_5l;ftW7=F_JwXR=%Cn^|;3%dC_ajkzvCC8OxzRNri$STMlyZ zwQ3C1ls#Uk1qd`amV~Q35HMXpVPoGClt(yg@mkzMKt~dQWRO{G5P+&;{lg9PSWklK zP>SfI$TA6@iHd;o<&~^%Nb5-|3UQH8iAciDRGsj!N>5^zl2zoQr0`X})kjGi%to4p zi&3#POWpcXH%*JP!_F*d_9|<3%9=$3R~Nk5ayQLh**1HACihB8rKneYWc^d5>$?8>lZ>nB9eJ`Y_P)YYrq6pZmD z#(pYHs~_9*D7bQ3S&a}^8tTzP?uQqGVN@XUnG4=Vl`T@|I{PzDH? zun}skrN+=Ji6SDI@%#_uxrlrGRw`kL$nP?}G4$Yfncg($p|t*)YTp^xVI{(KZJed^ zcXo4B%YSm^5}<0f&S2Xmiz_aLWpnfK>P2(&b@TMDm4m9i-a5QSrdwL~7RqhC5xI@T z>8IV{HY_*?~!~qdnxrad!9->5uJk65pS2G}oT@+$5>O`StkQxkz5{_srk; zWss4eoyM=1fTmDV??Uyzrwg)h(1(m1Fg9=l0=*l|oqxlha_o!^xK=j6KSlLg$O|xq zg(XMQV|8RxCY>v; zLljk3gdIXmf)$3KH8Z2CxUy`PtZXb=(g8ACq*h{9_Bty;UJ@CwWas*q8Qc`CFl=B* zuAcv1oL;p2oEgTG&2g88|1RBc+)w%7N%KG6u)AhFPtx(RP8YhL=*#eN_-^^mJl<{9 z-MRS`?95-s2MY`9z(jw&ZFgTcFK_nB7Jl2jq}^meyNTK*tg&rZ4~E~Wu-nbmYpUMO zYZL1Anr`h{x#X5;lw|JQYzzs49-?b4HVO|ZVme`$TiR8-Azm$;^X=SK@(Ay6TxfQf zD^XXBz|QMs^c2}85yf+$yrwvtN->ZOkqlz>J+B^N7E)*;wY~2xe2;k)iA3L7If+XW zOL7!rzEkxkrs&>8a}Z9ta!Vgq&KFlm3Tv~LrOUt?@s<~xh~XgsvLl%GhaMOsK*@%K zc#hRWd2vu?j^;{OZ8xiQV+BAzxIlbN=584m_-;A4r{fP&oDBR~zPfy;64+a1ywt0Zk-Mjd9d3k5fC!80zU@=xeVJS#;UT}A zmOv-bPNOQZBLu8xPGG5V8rgw&woz;?O5rjAz6E< zfuoN#P}T+%9bU&mtrWt6Md$yP!TFJ^rxy+NXF82y8KsUyXZLmPND;Cf!m0M|mp|^v zmQ~)(KJ4Wpy<1gP!Ovb!Ww=#g)b*#^RH22ri3NrXMj5NW}oA!HraO(S9vtvrx|tAd7aj zV!$@EIMdi7F<#M=92}zXsWrBpzsv{e0Q0sHLsWEU3_Re?g}hPh4gXAex8mpW5dMHh z-#tO()JmRZ580UmQ5H!~4ebEBKmg4%w9Dq0yPw}EN?|$BSkC$l7b;q_+?JUs1$BwO zbl2-CBdojg^|&o9+pLH_J>98~nAh}=k0l`aEsl0MPLIUGI)r+^+YfPJcQNZPs2 zxj=k1UiHEa_`Aoz3I{%dmdOx;yo|7D&`i6bnqKK)Um=vOpgK!*}OalnuqD5qvLQ81oBATzfKhC!VEzqq~+>~d9=c${6 zObELX*JZRqTptfTyi2lSnK#W&U0@ox$B`xXSL=b6EML}>me)@G%NQ+86AK?DAu6B) z7od|IbK2CPFnfl>L;^-^Mih`0m7Q2Iv$S2!O41P~F&H}AIB*#lF0TqJGBBK>ISo}5 zfS-Mp4Ct?cgiW1f#8h)Nnn-(UK_YD(4>p=Ho1=mUFnv2LEJ~!xugx*S11x{YZ;G6f zK!*Wv7L;YNiPF3oa^Lvl4H}-~FTw(@1T3^S1E?&3iCS04&JY&68!v}WAv`NSK(U$H zz9c#TfBRQa3rjPIw#D?>N_*4Cw9=GplWyYtVy>jiiF^r2S@`OWA|&+s<*^j%q&(Oc zeC^NgEB@1-&pyEdezG?B-$rUunux<}JvLetHs6ha+OhID=y~I1;*QX$Q7X+LNl=*u zF-qT2SH!V_fFqRp4f-IK`ch$XrR~aeVO#F)epdI*X@G53QU)dU0<``|c&=0EoO=Za zO&Om}!!0z(feU?;cw`RjkhKNbYz^T=T!2VN61t#ZA=W}j!Y6MeqM>|N9AUXl7u8D! z*)8Sk#qD!jNX6GpHi~g+5F49^kAGxmibtIpJt=?4U{yq;oWdd=YfntpAxEMIMs@u0 z+Lz6pXg;&%{tDaJ$s^a!^c_MKjsiV{tR&L zVgsL;4`&&hLiwu3=keNNp|dVoJJ=_9T8~-3XyViw6N`1+MkkFz9oN8$;yI#HfWta# z-2>qnrVaRvR3bZ_GlAUdpaTF0@CdKx2jzyD;tQ_I8VNG_DlVT>>yBt7;4)GvgoB7? znv@LmQ<_9p8$_xDz8KqZ@l4P!--qjFwHD>@BP-KnLbXnq;sJ#prUfcDiUSR^0eQ7K zZ7N4P-8^uua z-g3K0Q6D}{@swXm*7No?OonG;q(R60A&$cgGXdnL8XX{x7HTQZV?DnC*Eo}`Lvz3( ztWROB?ij3i@txqXTy;8BGzoX<4im94WA%5qVovl9hjaOuQ(TY;w^2CT3c7ckplxlJ zKdZ|sPPSai%lLS)8AOU=4%NV*ml`$D0wRZ`T_ahrm_T^WK| zh%V}A0x*$$$_OwyiYV9T5lun=B&pOE60=EnQUx;Bsj?#}`h-QyKbV(GJ>uq@dB(rd zXO3i-0S!&OH2^!(sb-mpMRIFt*0epp8asJQA4y;f%-3dolHC?bA3|mJDW;kJl^>Wf z0s<_VbODkdR-WjVhzd$OcUqH$Y*YwgOpLHITDv-s^6k^DEuDjQH95v_SfJ(mXUzPF zu@3)R{FF>+NFED6!qSTzCNyFTmKHG`wQx0mP;)}yjLsba#Z^_KeK7=MPu=1xDSFtS znFe9=5VmiIRrDK00SNzmGe(33DSB8KS~iHDiQnCR!fX{ujM;RkL!E>!QXhZH2NbJkv1djl zbS2e^o>MpOdqf8PNIrO%s1Eldmk#3iivBmRXuZ8unFX)f3YtheR1lYP+)Be!fFlxvA)g2xfHf#)__m zFA8##ngVglpG+6UO+K>=!D8IQT6e8xS6(yBaXW;b_ur`&*v8b;&PYLe)ue`pyJ;Zm z(8xdtbui?Sh*0`KMpMR*K&S2g67ZR9;tG>v9@k+l;!Z@oxMvE1p~sAuFBAeIaGotZ zJPE33XUN&`fTZ&$rlg%>se*XKc@&L}=*iLX&5_?qcPTu87MZ=0m-=<9<5H14?L6o; zr6zRjXs$(x=%p1FBUQt>(6q5Fmqx(vSUCuH8e%o9K~A-&*?&L7cx7bpERjK@ed=G_ z8KT2V6>ZJ&r2K)xD)yGQmU}3nkCTJg1~t~~A6H?B@#s?pJU~$C5*5qcKhm;dXU0b# zjL$RN#!Xqy%@Y-~p`K{R@v_Jh)!8OmO)abARg)5h2kK?>RbqL|S&+fL5_d-^z$CFD ze#R0~`KG>|%8!iCTA|>E;WM8S_R+>i{xSPH)fRC$6i%WdS}DffAGQGR7SgZ6`yh*S_=%xrWY;sTz@8&bX$BM+|(p%E`lexkqg)f7xj z44TOmEwaL|RE`0|1WP1u5@nxvC_Iufj6Q3TAVHE=DcVp!x^f=Go*KC$(F&b1ae^jK zg&&Bfa(M?41WZ?=!xZd+L|uu+YWO*LQ#z%<_0EVD4fO8mt7+vD)&tT(v2?3vs+)%`K zL@s=H=-<8LmS4>N-A`7|vtR|HUbOjc=SeZJ9KYpVI8yYd*GxXfx%MO=Y-(Tu=d@{< zO`D5Eq=q%sy?H}DM+OMjc=<}eFfos~jtnpA0vZ`oXhaS1))G=)Q${EZWO98T)Y4;~ zj%OJ|(6I&5C%uF{y>QE=;fq!*(t1?OhTOX*5M(JCze$JHUuM!RHt|j3C3xbc z>tUhN45i^VtJ)6n2-}QW)ZHpU^oR9nHH91fVdh(}S=4OsLX^$J6;K_qOJO29I7z1M zk$5Ke$w{{FrhQ~sfI$xAD6Y>MgA~^BTsj8x?`##bAZt1;Hz~qg2EDAj+G5jmsE?F5 z%ZZlKuT9o3k$O5J_D_f$*yLY>d*zjljXf5SQB%_j_{tkmH|*kundbAjoyi*Ka~SLu zyQzTgmmi&xs5@jK$AzIi3u^}UEUJEn1wYXr7a1T6Y$FrV^c17ANsEFy@npcwxoya5 zn&jswM1}tz+PVfV(2CFR&6RB7bPb+)Rf30_`c2o|3}#3!0sNXXU2C^!xYe(9YNaGj z<0_hUQ(2{!f=IgNAQzM+uIW7{t?SS&bXx139ez&N#~@*RcZ0u+y!|UHBd#V%`T9D8 z&H{&#pn!l z%TjUD-)&YG$Gqq(p(Rm1D4TQ|kR#UTMh#dC5z7S^Aa`>3UUG^?=ja6Rfswvw`Ww|h ze^KRe6g`5i)T1IiM3-O|svTVf?4eR)ttZuq+^(kOz)vJG7R8BZKN-W9#-m4cjGvyV zW43=rw^N{ws3Z8#U2;-be2R`G{pqxJeKfmZWFu8uTBrn*L1M#Vv$yBPfl0W+23KyL zsl7)6l#rvJ3h**ra&Ol8;;*sY{aF%leQG7rq@sCHc&v~b5YNZ`%zELD zQn#UED^M5@BKb;sY&sG zXbJ)(xXOIazpOcb2@1t6k4eJi0fj6*;hh5*xab&m>MDIGR%?Vb*Iaet0gIYo+Q8$( ztidA5J;z+L*{jdwh!L7_rsQy*1Jo&^W(CAj>{M|uJ$4a$^tPx&G0u`L@8ea3rVG=KPa*RR}&U0eYT3%7pM6OHsXemDzHFA?A-q5y|S zlGVxf){r8sXh$gNnb~V=W~D7LQ&wl44R>rchJ=FIAT$Y=sJ1~|fxHCMQ<@0DL2f8? z13*;UCV20Q zKFYaGdIRZ}UMmcXqnsq0N(^*8K=(*`;=-t+`qBQIF>PcPArm4J<<5p9R9c3F4IC{; z*wwB%jOXDlIul)m4WbgOq36 zy_)uZB06MqOi-8c@|cIdbDkw8r=i7=3v)%Kl{L2YXfP(d1{%Xp`x6psECYSom*my* zINPoYP5zXC+9t8j&Rm?V%^YPKUC%>{0=~w=WL;6XEBty@} zR<9P3zi(U!PXR3i{xYlHM(4Fx#$&@pfB~2AmDyv?!?t^;!WCrt%F4gB({-gfa>%W! zh*t}%VcUR6{H#~A%&V!anysn^=0Z)t-`$r#m&GlW+ic{NG;zjGJ;u>!I0Zajz?h|G z00drv5A+x&9kmV4L(k?+kL)P_*Hc+w9ga~Joz|6(>Q%4vx~#DFAF@okOaZMJ@5T-0|p66{@DtLB+P7aCii zIAUz=Pf{J#RFAV7r4pc;na5d;qG~cWNqKGM7ujMNc$Gwk-apO>B2_e#!7L#) zLcSs0(0BBi4&;5xXJIU=yMi5MSn&)v9K^Ycr_&z^8_VpPOvZhMq)^^w`*J^FKeY1-0n6tTx?~WYWYx#s(1r393bhSA`vM*9jZHV#+<4 zOXxR5iVoW5FE*434^P^%aFJ^3{(@Di1F6POf)`n15&ADS6y7qZCU^RL=dba`3dseU zW-k-jd@%dvA||=iv z_~`AE;19m}`HZwqITQe~*zE?Shc+46#16KGV>i%5!z{Hvdkg4r?Y85}eiW`fInss{ zbIkV(p3D^MC2E)ir~vmnWJKZ@2@^WNSeuQC2Z3e@^nKfmiX}+Z30xqzkS+)|ltJMN zbZLf)qK6AKI#J3RY0 zlJil&!Z+;26q}>VpQMCp!3x8Lv|1juPgsHE&D?7Fm?V5Q;4nBoHQkgR!av~E3wOgj zua)lI3qKrQ-XAaZG4R-oEU8G$v##yJ!28o-tzRsnGjlAI@X$5(Vvn%HFF4B6f;Q0` z4wghwEs`)m?tp_?Bb|z^07zWgdM=?b9vM}B6zQ~Faha~w7T7D~Y2~F{k z9wG)Uc!ME!g1LlPItU#oIwLFBw=FI| zg6*x0hRM_b4@_Q5QCSKF1jj|q9@;a5q6+QGG?)N5i#V+Km@6UB0Pi<8i%~>$RxO)&#C^T`5jNx&qvXPAaIF<jk^p5^-psxj=_Sn~adhx`G1!ee>|n$TVFx=9C?6Sii86PUHD>)5 zfLuoa=6C{sPU?;bvPnDFD#8)y?FNo2u{-c-R!vhQHV2aeD@Xw5%ozpEDt#yLk?N|H zFj_&zrp$Mjv&IZ`G6^u}K#zsN`ssvisp2Pl+M#O43Y#7&vTI$tgM+x;NXI%u$#ElH z8qSseq;t3j_h8mlo~r$mDhcOrPRpmube5Js%Iqo(>{0RF3@E{~#7%pcr{BuNrHwQRuXvmPC2S@`#XB zEqEe!Dt>sVMc-6Oxo2pD7pt88y^svvTLf^d`bFD_@$)bFk>{l`9;k(pXxGs#H1@7MdS>1#}i`oNC{3t2G}VL&(m z5lHIyel+`K#W~XcGAJxl`qcESG%Pv|)62y31b7Py3fM_`&ykU?lzzAqCd+xU)N=G# z45OgC;cM5aXKzfk*uuSb0|sPP1*1vJcaNz;wp%pO7J)O}h0A^f4dZ?HSYakt7=9Cd zPP2r0-EPq*y80CwW_g=#lk%6k{sq=EHy)f~#@djTAIgkJGjfI`oCKkTe@Xc5Ciiq? zlsdiN6bMA|kq(&jXOqucS{n=3ap>`(pvSi~^w&fM^5N6B>aIRI@(2q)p!{$5s6NtPxT z3T>MzudlQnLbLvRRcm#gWy?uaU5s3&OY{%_oQuQ*l)Xp(IfL=fW$iea74J#)l5n;! zOlrZ{#d`NGn`~c;Yq-1&u`pcdeaw*=2tL20n|IB#NlahBOew?*-#f#OU$lebCF6{R ztL2V+D#8t~08>95mRZvWIZ+J+1_|NeJ}Y8Tsakf3Ivih`;qPY;1=hX1Bo1Ir$y%|T zfOv$MHjA=oo86?=9-*zr(uznTt&Fr`M9n(V>vu{t8A8SSX*LIAAy9ibm}~y0T1M`Q z8+iY86+IahRn5GL$b^H? zluZOO$z51gSIgW98CH3P5p7hG^g4G|P8o8jx)KQ2?8?%{NMQARELF`uN9vU<8norw zl5w)aZCL0|aagv2ALVE`GDyMSicLS}QMrv@JWIR5)X{+J#qQx@Cc;u;v-dndm*5rPO=}`hgHYku=YV>;PPsZ>EsX zl~F~;v&kf@w759K&EGqntyR)0g@_99pA}jm)5vNnfd{xC+#tb0A5F-^8OcHBqOfS+ z$VokV09)5~*m`_Dc^T8W5|nsxK_#DI!o zHC1<>I`h%Ojd0_IC$;ks+*K?RZ6PNUaX%m`1z-^8zJi}z;u7kQWGuU@{7&o~8Ax^u zO2X1?OHh>+*XO=si5-zUL;%GT0+7rT!U;X@T|;lMclbhZCV59W>UsK!z zzaIH%hYR0@Oe`6;>SWViE?3`_AT`FA;91f@RY6mx2Srs65;^);2|}+HEOMPQEMwEL!(tEENd;)r#|{NA#stVx?2qk<%T@?pB}m ztiEg>Ky+63U*1LtOmkRT39DQ%q_yasN4jCatjtlsE=f?1#ttKrdW%wHLFc zg0r}DZ9Qd2CTcmdQ*i27!dvao#JrkjcOU7>@mHXwI#{W8_WM9o2#d) z;w6VMIouq|G4srub!Lgn0;ME*DQoEd~%k3r%F&*9b6M zQtfcO8##$h7Kyoo^K+3Khi@4ChH3lMa`q|)U#0>hgQ9B90pFTMH%=m8Fp_bgEwn!d zpADN65dhrN1YVq-r#1Z$CXUj9~Th#OnUtY1;0qJ*6J zK#LOEmh5$Cla<$jwW_tS*cD&V7Pv{(s*=-kna8gw)dq;tfor1|qpE@i<7V0H)Ta3p z+{lWHhP14jGW?fdjeJWYPLr@fi)hxdE3$Uz^tuUcP{>sPs;-b-eDQ9NBSiyv5B~KN z=0$`{*$BxN*Ve*StcAdfVJ)L|cvpnzK4QVlp@6@c`X>c-8ORG=U<431f_sX0=%l+b zSDD_d4RWT$#F(JW?U4^(i-n2ajc5^g4VcD8caU0v_95hp0*%EOCgEDwMZzuDrC}@A z9qkO?S&8^Wqc&JR1VtqoKAB0k~HA^%=P{#z9>5wD?|@O~`F21gpDc0Kgf0 zg1u$sYKI>CeDKY~7#qk>%$$I|+BvMK!9Q?@%};_^fETD~y(Xk^hrNWp3+Je7m7R0R zF!0S#M{5&Fi1|l9tf$uzxt%22sQ0@!AGcK01dc%X3=Rbd?y&W`u;P^U|4#4#egFz- z1JRiCRrS zgyfoWn9&hKHC&z8I>ALKzzWqV2v*EyefP!m9yMAD0RN7xdj=Xy=}(nn?BIz%L(b?x zhp-tcgpWJo{xFfq4<*xU1Sv?~jTt#G_S+>Gjqd>w(a6VT@sg(lT_XD#nJMh;g?hv# zZz1`5tK^%j>z=*E$crdvZ`X1uS(U#7`+KhaU7M~h@9#__TL|%3P;MW9vkW z^T;1fM_=z(w0SC5-pyC|70-_4O1Q0VU|@y<%5}#T?~b;2Mow#}E$>$G#OdxFUE9Gj z?II57uhJ=XA#ds*^XCg=!ul6dz&ynH3&{uoue~GE1Z@Gw@(+6M1q@LJH@+FPn`yJ zL;lU@GB6E^5-O?ev*ClUi^l~T`848L(`Fo2J*JK--~~~Qr!wTkSJfDSF#GbH5fTi{ zHt3dnjBpg=m*oSJx8!wnx|J8FB+%O?ntNBH7XnIa^kTh+Z(a))%R0rVua~)M-8F6o zb`#QrZZv~NAyC{Qd(_5;J4lo)Zp*W2XHj<{NT#e{?O7=r4+Z zwj=kc7An1wiP(F(e59v&J>3jN#$!jgijFN;?}TvnKe7ES@@7-UtD9-7laYAZnvg@P zLD}Iz#Ua~44o8QJ-^K?cR_LCDVjT@*r~PYi$hfDn~<1>ykfrB^rm=e0T|!IrgcH)hU_&}dJ_B+9r7IC z#R<;F$mOKL+0KZemgs{KL#=SO1Mm!O^G8A3Y}9%SPssDRRz^~Hg-a$Yft|9z_GN9d zSb`)VWXTDF$mw1R+lH2eH%V$TYwkI=5X5Dyi~`pvgO==NSe`Q3LSNl3f36i5OEMs} zCfjJFl?jDe_%9X^jV6{FKL;O%3RrmwupN=>InYoKMjUYEAF#Qz%4V|*6_DkZXDj;a z-#o6@MKP8s<77s{TTO*}R&6SQ9=zQjK<1iy#No96COYL6dCSLWnS}L?$pmId>mH{w zZ~&QCL(zRt1}zkE(WEnZvJtzn@Q$nG=>j@0_dG|K10}6Y9Gb-cPIPGn(BU#d^wHjM zzv;zTKc3)&Rhu>7#6>F`%acQ2>D8cz5KiXk7&3F%HN_yXMaW~go_uA{QTN9|*Cadk z!bR$qCwGbvgwiurmOjUTV2ekKmU((PnfQU=Z>}7=V+n(}Lx#vWjvY-XTf$}xEhcK! zE{wIQ<}7Z^z=qTgdqF99d{W+-+ldQYZDn1Thf;%r7+8WbZ+VUQPtH({{(2VUS9)4` zS*Q3|>LKQ7_@Vm9N+>tciSj#3`SU_nU^J4owIFkhII_#Tq4ffF9SPguL$oAre+Py{&Dk;;~u zr0Egl3gKdAdC^^J)J>iYzVc1(5D^UjR_Pd+PXlI|vMR@X-v~x2T0(zkFN5%}3vp3I z0DWYnP8*HJfPqFDY!5#K4JAhIP;(O_YH^2g94TAlL^$;yGwv`9e=FEjcD@UwwJk?2 zs!Rf{9#V^auF4y@>DMZWWpuU#J62_QOMQ5WO&!a_Zp+(QF?{2Q%(<7o7}!XG_dR}* zNsXaUPm>=RgAYpGtZk*i;`K&T$V?(xTSt}lP+N2~SD;Ll^;1ojSCv}BW*DR;`-;jU z=BQ?^Um&aM8(TTvrqyIlXf1ls6$}1D0^OF&~DR*Bh`gfOAFqV>Vif-rDttV4vTw|Fj}o`YqZ^K z44h)@RHS6B#;#Z^0 z&7STQVGOXK6mjk?xOg@Am$AylF|B#~43_uP8G5SnO%P7@N7$!e*fP%YMOC7G#!OQ9 z!j;|f^1NW*fhZ>fPRxmIzZnx}9!%84356{G}O1;3Fmhp9z*${dy zz>CLE@c=KovH&lp&4RM1u{f{e)&$fa856qU{1`IW3m?8xn||0>VIhN^a1$Mhen6W^ z5konoTBhYo?NoXu_YrifJcNJ0n1Q&(SL!3+6V?vd7dz}D&&!9XXHd~+jPf)TzcwqZ zMRbyQ1hSK9uL#~N^N%>{*tChLB4F|g%2u8dZV@B}*Q4aC8(A@cgnpRMk=cWRFkX_E zeM12Ta3k!erqozf5ho@XZQI?p%?16YQ?cK>bPb!fcMkuRcaBiZk?v^&4*mSMY^RPA zP1tmlQGtj=xY0k~WYeKb&UzqGO;61I=5QC#wLNWU-d4F44MVb;#1Q;MWGqa-k0J7%wvvEk<=voa+4_sM1M%XwIC3)5=oGS)8h=Ry6bCC zf7$5U*VAieWqsWlV4H>iZ@2i zbS}m|s9*Tr-BbD}G#6>nv>E&52dIP(v1GNANm#CXdGO1(FS3y}3K9l5q(5F=!2VHZ zbf*eMjIn|i&MUHjU5ts#i=U+I(*6-5#|6XZXN^98|M0n&g*?6~uJBH|Y#b)IZ%h6T{{vFY>Ugla>yZ5e|SYPFX zIvoavS80{T=9A=vrHGL%3Q-e&Dy|?1(55_o@awGuF9EADQgQ~)T!lAbK$U7enPKq( zXKXveWR(uE)lA}pt}-Qxo0zv$xUvgT4qKhLFH`}JOg%m6fz21(!0!BW{hc_$&C*?z zR4T1fZpq+Sotg%0eBkjldSr7@0(K;Z*kyI^1 zF58>}@HlU8gKZo0Q9}HOmV)ES#p!^X(00#71Md_(RQ=`uq=y~BU|=@U-$Rm%_uaHF z0dYdlCaS%t0W{>Yd?i!{bkbb=5n;Kqjmt5~4%+f}Gv!C+Mx?`mT7Y-SIWs)$P?DB_(5<0 z2GrVZJYkkxquS{n>wSy1Rl0?f!_+EUjX2u`SV$}}%M=i>Yoa;@$paHo_mlRpl22s? zyOJm5;oU-Pu#FvZ$q?`hlz*5Z5L+G+<(Sk20vswL=Q&bwHmCpb8W%5^_n)bcpOZY* zD<7?z&I9(sYRnwcq}p##VEl+$&N$fkapt#c|?N>JH?MRE&M5 zQflaAnV(_uqZ zOJ7C)Wpx(0#*Ek{cquZ5cq%fcljmjmWHogLL!!|v>urPLQ(bl)k4gL*AUEW~F(#TY zR8C}5>cr*fNe|kF?@rhb2|*uK{fGsCSjHRu+B2f9)RU3>ropZA10{9i!&wRAAc0oR zm^h2(5*ts~JO}%pB(Hc()YO(^n zJ(joMvA6gTWbNiPj@0J$(Y$`ZUgM03ui46@03qr>$S`azPSIR$nu8rlM9Yl)#AXRJ zF)MnU6Okmsob4ky0H_15x?HOiW8U*)7!d;DNsBsJmL*KLqzGPaL}Y(%+cZcNE>|ty zE?d`2W{#gdK}=Bfz~l*X&4JM}Ut4cWKG|#yyJbHKx4RYqa?$B_)5IO|Y51{U=Z?8fq#-My3`8*2O30 zlqpw(uYgKDjn5UUvv1Xf3&sc5#U_a_ZK)4}Js-8z>m$VGZ* zM<9YuM(!{VH>B^T7e;jHDa-U0V8Eyvh&#vA0`;v z(=*G%bt@icU?W5F>j9x5MO?9!`Kmeh)Lb`8KgK1sSlF!gsmr5dkLBc27VQKuq+0N{ ziANX&zet?*Tt5$#1HveOtF5hT!-qm>C>h=P7fc;JfG zawSwy5+Z)KL#$E#x2HDS)W)O_pAo<#-!&C$wRf>hvJ|XGkT0-|`J-VV%!i}x@1{v1 z)6UgfH+E{0K`DVXlt z;Q)6B2%453Jv!)heuM%BpC$**xueOYSRrQkw&l-iDIcB&8bcF#Rt#c1r}k7JIfc(* z8Q`Dbl^NKDG_2B!juXQFnJZY6a;%%t#U9zViEg-qxofsfJW?eXk%pDPBdH`8A>!CT z1!>tLihH)v4~CXjtUS?xgH&1`!Zjx2PPkj>qBlq3e_`&VB*Beg!;~5|xWdpt16YTO z@YmE8B__r@!3(b*DH+3QVu}1HjRxMsZY%EK(ys z!)a9?hw-;x0-rdOD2fCz<)>Flx-0&^Oo0lsg8OQvF|wannz+`rO5(vVYZmgdduj(1|y-#N0Ctr%hq|akuh=2ikN7ImzHm~ zUbHKNDpFOU&eK(HEf1M5NE~4$Wqm8XdSQo2zWBW+50TTRF^3NNt;%5hGSpg5+av3I=lD3_!nE z&MG`NX>qSC$mm&(efEn`3;r2(jnrb)KKom!#m@FwxWx#m7)~0HfzFRwX~nhnZ8*Gc zs^$i8n;iHC6JIpXjUBhefnibM8}>Tzjlny0kW_!>BB9;z%dE8k6BsZN-J=R|hwaHr z@|Gn?IS2q#HOa;M`tr;rvT<34DSrNmBnSXlV(?D@w=mCFt0Z4L&yUGjC_S)DmHtkz zN8|?#4@J2{rX5Wc?A8~quxh+KV+qekDu2|f=XS2zWC#%q!$N4$8t1FBb-)>RZBYV5 zG+cQECc`FU6Jy+fDC6sVym*-cNnoDneXN((UDVQ7b^TFjs%=XK7R>%Go*=j^b8GT# z@#PF77pe5rlC7<@{FfzKP~|yGNP~R#lJf0Kz}B}dVc2>3&r7sEmAbN1zI6$fw`@Qj zm-*HfvfpZ$~2mUPaC%Zn&yE|5A>KY=p`z#mNgcHE1{o~D-K54 zsuWFT2V>|L%&=n8uD@!h z1bUk7Fl(^&sjv)3Y56vSGu-1C{dySTUkB8}TP}~*w)2{cb$nv3?;TRs#EZ)q;> zZ!X$0Um`W1a&?3^`2t8n`|2Yu`@O`Dsgm)YQDKFy^Fvo%edD?ZzyAL|`vk0-IB4SS z$4}(eQha42kBARsWX*$ToA-}NSy$zX#tdn3Ns8c#GlsfZMZpL+&+DF5zF|FeB=Nr!;F=kVNc-S8CW+;<&RV7p;Lm|ed?I?ui>BbV`6|cUi4~_P zz8n#p*!*-^0v2yHw5bwioV$S|kx74C1IeeK%#I@H6~mrRLBsD}jzvMf<;z%S5VLUM z2ep@~$xU_U2QiZnE*f@x7j)JBb=3(?wVIBNH4*<;sAbFYLC2wi%My(sJgDjs1Hx5i zVT{$csjsYhP=7%S>m;9LbU!mX0Oh<_ic)ToN|nSO?sZUt=&Q(&?iFnk?^E5AU{>K; zAw`B1^s@4DWf;_D?w9_lJ=JB((~ulNuaUIS3;6SDqysLYdxyXJG&fzmIaB;N3p{H5 zEK!+T=qVtnawYPu@_!t@tdSjom755(o>`3Cr#qDzqsz1c0uX_ZV4}Mtpfc=ZCzL7P zNio-Jdtkw6HoDvl7YO&AoPL1Mq)wv&@DBMMj)}eFa7Nud{8jW2jR#Ti@K;H%S6yPO zZRfZf8{U-{FM$RI%_9{_a94A(-<&z7GneJ6XcDAAKKhwl16YJW_4`u&y)y-O7v{6f zNAg(;%g9mUU)*J1eDRNd0qnkiX(S5U{Q|<&D-Wr&1CvBlJzO*J_r`IZe0cFJ zZir>h-54(}YA!Z47oTk|*1j*6`Pb&+6V1gJnu~8V7e8w*+OIzF{`mQ>Uwx%{^(c)# z%IA;L=%aM?uBOrZnu`aTi{CXDXM7;``F(x?L2C2Y;MK6}FbVr##xyHpRgdTgH7%gMw7e_ry+GBA_I~}b)7~>h-&|nA z%?(*244)Xw$`k(O5L4+}ZVeRKLqy7v8c2@~iFJ`aXAy_1HIJ zLMZimTAd zGIv6k{ejYRAjl>y>Q9fhRguYIyG-ro1yj3eWNNu)LNaZ}9+}#&eJD=tO^EbO7l;8fSP&V&)xKf2@f!PHV zUdFFsNVP!H5lsO}z$mmQm0!Wd#gu<~Q-1lv^6(8E-rh<_uK=OKhZ_!cQ@jvSX)scBPrknpgtUthla*|(!0ms=J4QlX4|8c7KO0;HR?L(5vzV!PO4g`3}Btjw4lDoV2jNlF*@ytMrakoyl&N+%VK@jglK$iQ2iy$ zW??`*W*c+!ekx0@1EhggoBxSI8XMopz32X@CN`S2YRbW%HIc5kC_4AV`~?T}_mXA% zc#eNOdl|Z@#_d^nO+om>MVMi2O=^EIgw5Tkj@D5t5n=V$ z!$6oVdXH@@mEhNEAE75=&< zYdIgB82`&x-naaXkKXds=R%2pSxmnCPxt@zxzF=i1*qd_MGG_9aiAd~ozg+1d_%Z8 z(MaVsSj>_lWECEJV9E-VXoqj2109^p_wvBKY{DI}Cee;+8=J%iRBhNnfxuB0IIl*CvgAfrbSUUxvdYki*RzWiz z@i&_iY|%oaASuFD$vU?~PCySM)+=7w%kdJtq#m;oH;MWh5yPsmSOtFxkz_kFd^&bF zI(9eN{{HFQ9VCTkAAB;Mzhkl`BCXsxsY6(~Wd3b2ZJ596$Rk|aOU(H1{)*+Ldr+76n}qDa5^C(@JJ zwE44(@yjF&hwLs^XKJE41q$tHW#lv>uHs_U;7Y@BGfGcg11l3@8M+h+f)hHcXNGH zygtM=v2Aw$F0PkV`@L2>E7e>R!&d$l2}B@XR5O&dXcG1MwBjOxq3zZCc=c*kL&o!K zV|Dj(Z@;SBpQ|Dk5p+#;@6vj_59W()eCt}S=8*OmcqK3NdiQhZ5?(_S@b?gQ7pNAF zeVm?SgVcTf0)HK=Og+`>I|;=;W_hxSVC|*l$;N6+b?h<+L>yI>%Ow3jnrboU_)93_ z-}aU#N7GF>1Y5?0oJ>P1*m8i^Hy*eVVO+kc884LFw&~`l)skN(0s?hYb@TzM-}t5j z%T@Wd>86H(ew2r8>E}|$sy!NIPq~e4IcW`_Rm$)N^@j2@{0b7-p(`t);77)!&WHjJ z8I4r*2YYT#%I&x7MI+?dbmL?bwqPVnWOA$;3949aG^H(BSsh?G95h0}!rUmDWY|v5 z?_^Y^M7cc3C6dZO5fl!loM=w=(k-?AwJSj9p4VD!Qk67ZS811CCB%}W`8lf(C9+fg zc9!p|jF2csQ%iSfoStPuHv1C+rt@i&i4?v+W(akc{+*S8saU~4@5)0Gx=+VstOBlD^5q!O#rt@~^%JDruQ z0t3Ii$-MUL1dBcIM^GaM)cIqCe%>d_u;Avv0{(K zXDuvmQq>rAGd=fy+2JF_9rMj{zN`zTc`WtO*qQciFpmMIcGGOI_1Pi zcup|se4RKRa}lQ4S#|QK7}cA|t(rC=K6s<;pR%YL9 z{=w+NM{RUAg1-6_W=q2J0LaLKAxssA1RMrbW!T!r&ClB<(Q3P+QA#g_g z^k_6o631CcA&H)1;(@8i+{Sn(4@r@6LZ8_>M3k#a6_QO%n z(86t{9Fo`UPxr=DjkE)Cvk}4&1H_DvnjU}%YaS3&AoLFOphgF*CJBLNL?FWCf<0kQ zn5&4OrF3lGJ}^OAM0oO-1;L9D6Gl_^HQ%$?&w9Ni)t-%zUqDhcCeyoRGn4M=f(5p4 zLCKnkHylQ`)7|CG1Fgy{WfGBPn*3-j7fMJM#!$cR)x9O9CrdK*H+rW5DB^jfk>F=~ zUK31BEO9Wz`TlFYk0OaJPc;kFBB|SZCzjDgz!`~!T}DPM!?dp-?S~eX*67xrJOio_ z7b=3rXjF$hu~H?ZkA-yfc-<^VX__RA92hwdU}iXvM#XbkKI-)b(CKJ2R=FcVcdbh$#uO#9m6^vuiAUQIKfQ7ko{-+`n z22NlvPzJfl03Up_Ayq0*qJAQB##~B+osJoZ;E`Hm{%qfWt%9 zAcH|IdV50ioM42Q5K1=T__?~w#G3j;k zC{7paH^b(GT#=NcjIoKm5q%B2^wVA?n zH}o!NwtAT?;%Fy#9}@X-&fY2u2SLZ+^2?a1bxX?6qdtMlaPHptkijun#5IdUQ6)cc ze5NFwG!iX!Ijtqzni_yWOx29a&?v00cqv?P){bvg=zw$ZFu;Kt;y64V=xM@>Kr540>eh+LI9h!nNYaFqC2O2^1poYb+X_Y|R|;e4n|L+Tq+5Iw zlX%dXT(Mf$HIz8Uifswq_~g&~>OTwf7Abb)TXa$UMrJsQDEu)|3N+SW!21u9p*g85 zMpc~&Ut@q6JiLQ^P2i}fhI0avP6CMtz~npSSLy+yXcNMs-i$0TPt1k@TRgjeC zP@(uMp+KUZWZ`VBV`XeTndafN7TtN6-?MmX?mwyh#4l@nu%VS7nNlLHeV0L*!Wfq* zh;U(?ht=PIN#O`CIpBEmo9zFv#4($?G)A&{HK4$XMdnGQEh`;6s)c#rwYujom2VcX zbq3Ri$RO%b3>H;{k!Q|bNbKt*MTS+2uPdK3114dk^GuC1rzRNjRf$o0Sd^5Ilqn=- zI<|iit-Frx|I@qKiX&NrC6#7k?p41EVc)a3wMf#e7>(w7nt;#of0!4Vj~BV@xdj6T ze^vHOCSg*C=BZNh$ZBJfLf@_6K}j`&Db`mAt;}-y;uNPRov>6gkZ{|r^A4>B^f|v5-8TGrfE>B zol~8t2*a+fcA;A>X^|a@rrJSW?ZWxU><6lrifnExw4!po9wq-A>vmt^DvSj5BO80I+Z%X+Avq8BRtZgn2J#wm zbcb=k4;xJz)n_@-Ar>iWW++l%>M3PmQofk28VNnZta(fly&JoL%l%SYg8&l6MK`0)gS8 z5169HL+!|DeR-S-hPft5!l0UjiRSb1GFo6-({=Pvpwet!zJ3woD+xzSzqJy`CC{+m z?5K@N}-xkfQTI52|1SYoj)9RhXqwF=aQlX(-_~ABIghrV= z(WeJV*S%Xk*9uq>v35oZ;V1igplPa2_smrwu@sp1efeJu&Da?nnxN?)4!su59c-M` zMJ+>PVttej2K{8v%b6z#yT~xZ7(BQFyR7l6Qx^Xu{C|5P`eT~lg)1V}IZYcu%hRcB z0?b93q$*!54^hodW^saTzIi$foipy{38~%iaRCC0eEuTwaQ7D{2!7nT;V{X2{Xv=` z*I5OqDa}2!Y%zyv@RW$&!XLq*ihWiXd2hFoB5o|%NmigAo~q}f$$?SucBDb4N_R(l z0f<&CX-+;nfy>~}Yxtv7lA)JtQqdA^ha_MSJQD`7!QyiRi$Q4bGr>h5N^#3u(cag@ z&zOh%$S$rM`jB9?qo807Qbmg6#NLvvLxdL?Nlnr>zVw6?2@Fz)@1mOFty;QbA^8vp zJ2G3-FvNTeNR)lyb&KQ_Q%VQ1B!jIi3W8S7aU4n)%h+o8R5W4hH~{UOYF+~2y0|_? zs}S5qwsaz36hBvLC)~BEz$?F|h_81ymOt~g8|9_=>J2st$k|f^O|ac-dwGu1>gh)L zc^Xj#z)zsPbj)kK0=o;!u?DpM#ObDXAJJcaRqezX1-01jtN$`2uf%Ha9yI9Qy-3UE zWp`ShYA$5dT(7s7+25Bw9B6Jf3Y#S{2J+=GGi;Yp*6`&u%P5+zwOrt0WOFZ$(?))%PFFIG7#7pieW)dIq-c7uMN}{d+k7hQ zavWuHovLoWy-N+dpH?BD@-X6%?)V#tEn4MooFUn{y0?(707A$_WnsQX)@T9I?2g*k z7*(S94lK`ieT~@3a;&$$#vu;JuCI}0joPEShOe>qsP0+-y%2QcYc!Hh>7jR#vF!L7 zql2~eHP&1yW6HQurj%)S>k`ofE4$R1ed>~}7xZepWEutQRzAmifq78XtzJ5p>Wf^c z2#~s4YYQLO2G54foWfF1@f!o!mni@WL_gM_jw4eyC5;qgBP`j>NInf? z6`LJN-q7QAi9q5@0>n1we3XK42RZ`a~5XmSjR-U8` z2omICK(q<3dHGEX;lpfTgDK@Y7HKl$(1ac1m=CuS6gWJv=R%V`Ff`%4vN|HB;_F7` z>eh^2LoLTh1^LN~K<0b^D}E+#wz)yOB3I{&!zRo?@K_I*_=2MgJ`(p2dl|pIL_QIt zG^&omSayOl6iRMaR4GFW*9vVhlO)Qecl9#)G-~V&wJA6eb?u<0Mrkx z(}7#9)Agm>7259Ncev&{UA=;3t5dGgvn)ltN~~LkL^zU3j`XG(S^f>ZX-3wiJd47m zAJ^(+6=_gM-X+uw=yvVdgeh3h@LJUTRd=eLNUBe$27Cx!4P?Z4J~l({F>R@T25CR# zhiOb-HwWg2X}Y_H60J>{UFIXNFg`_(20G)Wm1;>K_1Ai6O2>MSO4XR#l9-vix(Zv& zz>xZo$AS{Q;zNa2Vof>BjOnbZn0-`#Gmczefvo1zcKNoEQ1$Yy+|R=>y$G+^CTXhn z7pE4eoGxr07xN2wZ$pwU=x6b$-rNE+n&HCem`xiO7LG2FA>%GXzX9tiEUdb7rAut! z29+-2H$DVot{?VFrp!Hq37SYbA2NKNDaA1dkaN)v>X*Q21eSUs^z<(}>^AOK) zKFR0vevbzzgI4r3V7EXgb%?-#KqJ%p#&x4Hh>{gxGG{m@oYG}&)d#2ju-O+orRl|j zRee)V()#9O>znSX@RG-KvuiguqBGk9wEj)s_$3~rVtKCzEjetd-6F?mA!*3wLej-f-( zj~z0@JCi*uO|Ob&=eQ;?Z%Bd`w4GP%r*V_e9-6J=-Z}S#OsxqEqTkA;sGvpREP7Am zSqJ&A*K`nPvoJ63l^%(U85f&`cE0~stVl&4vwp-XlU6qv;HCuawK8Hg(Zug?B3857 z1R)Wm*SJbBwXDd1KI##xs4pWsI);nNrbw$JRzK(yjK&zLO|n*o9!|t+MpGt~^G7&h z^*w3g{+nLyzhN2ou>3d59fP-}_1{=Bna`u}!#8Yo7usQG5@)|%g&Dr4Psi@A>C*|f zN4L?eb0?y6xFv$n5{1#m`j2f3en-WOPDRo zQ;zNY+bYafjN2uGPM~S+`)k?rQ46#E<$vKYTgeb3UjAC|qa5w@etiS)h{9|=x^|*K zTRD;be;8)V!humax|0@ZzO)$Ws=xB_(#srH36YbwDLH$dH*)D4(%A-}~++>Nw!)z1HUpxfT!)y~~ z`B)}c((|iEx zHb%N;ZRBjO=`ivFo}#qF|HFutWhP3IKheb?G;7LYC@VTd^qDjUI?5r z<|PuWd5j>omyj}u^MY>`C%rZF$jp-~C=)5z5){RGK0^KY+cP7yI z3Of_%hq@ZQauM1m(C_Q}E*gszleTlm@#=Wyt|~NEYrN+VqzE5gJoD#P2qu{ntK*q< z=tZiyjz>hZt%_&%tUd~)taY&k93$h1XeJ8+YRZcADKd!KSU&b4Qf*a4Gc?C^dv!$f z>^7S=qS<@4UPQC#Z`C%NK@LTlu9SV6?c_Jgj~MIPL^VIaMjO2*q{gUbpZi`+M^THG zbID?wEqcdtE?Gn~r;ey|1mMYdN!|6LeNQo>ndkD!Ul0@P`c4fC z)KNX=X(A?XRcvz%W`-25eBglQ!=cQF63}eQs|`JR@PK9o`8fVfamKx7k3v8*xo}+X z^$*V^`j!MVrylJS?Vl!wsE++L`{z3*nyyHH+F zp__&BM3fd+7e+y_fcJ!Sb4?Cdw4}H!iGe!o^LkMW@@{fX>>&auy zKcq*o$z%4N640y;`3h6EWBQp`H~n_#)!Ylnt4Z&Js#>4ldmyxQs% zM#5{;i`u#Y>T8^%IkB~pt~^Orh{B}y7Fl!8;ghG9*kvP%fXYucOK_!Gsc6iVXdppv-{t^x>@pkdC5IUy7%`9S-eOm*GF@GzR-~zN$SB6$wd>Z>V?Oe5po@Dq)~)yO zpnI@dUXe2cZGxUIB+anrjJDVmCLYgX`5=3iC9U!OWw|CcmO}v?AWRYoc#`@&quw~{ z8=bOLYtj})Wm7e>0zfK6-+=4Kl8A5LWeR~Jg)vxge zZ;tm}Hv1maBKAuuK8r0-+TO|0>WbXrl3RK??^ZHaB@Ei8eV5e@2ozG+?Y}}X9{2NX z|7|&Ka6leK=PwWYZ_!tQ%G^nylI|AT)l&<|nCV7J=34Lt8Y$3w7962(N(B?Lz)Hn7 zUJZ680Z)(-%)adS^sKlh#ob)Q zgwjC?H@nMMF`ZKeW_yV(uB6!o9OiO8rAL50^w2hw(6E*CFEqW=z#C$ z?vSj5=9D8BPG1ayNWhK3k5X>0s)xL5i%-Tpdq#{T7bcXRu_7qSgh@?&pZD6b~3GnV_LjVW;jvcY7&I+?6ak^Lcl#PNK z+nG$;!@#)McHGq{6b>5FWg=!W0Ksol9SiLrdb)MU2Fg_4RE>U5YM_f!WqYvssd0z0 z)6kb`U7>gZ2iZjnKIa0vVAeJvlN)=^ zu#u8NrMu~#s)Q;88r6dW`RP@cI63s_JXo_I62%6n*V!~lA*i53!f2S6Oe`USgnBh9 zei&J9@l2^2A9x-HGCTGNcgp#nN-h~ZV7d;_mzHq{s3hgYsf?j%(qT(r+wOXdwO{OM zcRjhwoItV}`4_#RK9nwv$s|z|(5h|p*aB>$SMEZ~mz8BHETFUk7@utaBrRiji3_e= z8Gq>0_AHLlP__X3kF5a1jCV5@sK;6Am-)OEfKbw=K%^AV4Q-+#Q4Odr1`6aDdRmZ0 zqD=ZPTHtxxWBLq1o4}q&K5K8T{q)$EYx{M@1`-1E0-%P=gf=_;5rmdNh9vLp!zi#v z5>e*q3LP4`om1rl{1#XwLY`S-F!VOu)QrX7f@2QWV?B)rJz$#yr>) zr%y(WZk|OAO|4GuGS#gi2$&?+g}lSOTvMZ#sybhb7noJy=1Jm<9kN0!sU~doKqsHb zQq(~a7-Cgo(esLvr;;_#KKYp0FP34?ios@}z}o@~7JN7eS6)m;N@;&z{w=U5bw)M0Z2sz9HX(U^%HD+=WIg5;5anR*HgMg{cM2HExslWHUN)+OZS zJ;biOXu)m?^Wu@r<_03f7)*Q)*>~Yo^}v(vQcfv&sa7{b6FQuF%y2kyLhYv}9=_{I zW7mliPD2wOoOxVunEK0}1GrA5%LLn_RaL7p?>1R;^A)kbZvcGhd$kX^M6l9104CZM zp=k?EnTSmRqH&I3VWN4PZMUKw#e~2WNNG1I(eeNkYjME}V{K8R4NRDbk1}k`UU>2P~Hob3|Z4dViGmb|O zr47r4iy-bT(0mP(vd}tA0O|p)vNB~5px_~umMZ##U>Zy?hP~pJ%p(q@P`F#i8(``Hmvp!DFAOC9o#jpWG-`ZVp4nl&q3n1h zmQz*VUxBs|^uysONr(NOnPq)tckYq#0}ep-D8V!R1xiUGCN2{8y4?@-r+u*82{-iu zo^r&^Yev~#Vso9nA}54(<)=+0Ng7iby#Xm2r5IaRgrO02AkD5MA+&0?lFX;pwiZae z;+-|dXeql8XPGIs2f|kePriJ%`68s1)-88-e;r4gvxp?6aq*u46p@3d2gTRQIL{7d z+FZO35jE|L;#`dnQY(%GG}9s;k@p#)nJ@wlH)(Es{*t6po&uY6t}6*6+NVw!tvS3h=+e9G z`C5@8ye6d0TlZNFlW5 zsX@C7PBytK0O8l>sRM~*0vVbi;Z{UA*Rh$F%*ONGIp+!eN%1Lig{?6&#PV%jiWYWj zQrM?fa7*5uG#UYcfjx_4JyimHeq=%NGbogN3@m~!;L6LttYeqr_qS@T*;v-B?MOzw ztsv2S*gh5Nd*Ech&1@ReWdFPePR4Kd_~MRrRmqBcE{e_pkIhVS^<30ub`LZcW!N5U zE@}k8(A!*e7GW&pt)7d5;Muw85X-4M7d6^gZ!T)2vF=>dyoL`t7d6`Olf0s6hG5K< zChgfr`--;OL2&hGUGZRJ`f4L@Y7#$aGp(+>B4co#Y3EB2q#$s(68w`Z>7- zQ~+8ZY-Pln0?{R)*|im55c^v>hp8!052WZz!N^8mUls`fzL)@-6BA${nKQFH7q%lf zo$N4EY^o%Jhe*&v2q`8CF|C?B-(q}s`Sc!a2K`TK3fL%KP0hJEvv%a4ETSflX_3K9 zUEcY-6})3AIrj7L)T-$Y^`@1cbzom3!qF4b!wOJqk{A-t2YQgEQG`p6tr^JoFE4)) z6mmvOdNAKMn-42!+UT)aM1x=j@8!r}Pf04p6otI23^Wd79W833%KEwM3dT?qznH;P zL|H#~`74!UN&-P_azn~Ry24BxL#yKcAa}cC8c~*UO<}et#9lDFM;)7y;Wh#E*;5no zr`KJa|8bV(9^$)`b6-wKvYq0!n6P^n6Jcl`lU@P7$rJNK*@5ZcjZaJL=TLYqR6ls9 z_>ChP_P>~wGTx|zegC^>^iC}vxa!~fv^Tv`KYx110gfcMSkrh`FtFG$zB|B+5_Ok< zlS2OY`0I(9PyBqKzlpaVG+B5O{?UsH^eJm(BU~h`=cDDe$vdU`uWDkEz4G{-83%~r z`77Q6lFQSD51g&9;Tv%kJD9EG#t`49;cp@MG`#*TX`xe#R;L`-0rSOmvNc`qQ5C#r zjG+d!h-D1oit=z0!bTNnI;>^NI(`y{RFrmHvNK6*^}9wKD8=j0Q@jpvAcZ!?t6BCl zDPEB(vU!|;%_>R5+Odx2==S8T3CL++Sh?KiRH)MOf_)^9MucHRbNo12sWH`lMohID z68iS_X}LKqPb*v_2Qw~L>q*viFq_4Vdl&(4TCOqVqB0mX9%d^6mo+wA)F)c|(wsEb zA;k`%^1o3@?AN)}6-e|m*Tx;nuof#0v$8;9@iA4ae;s6UKo0Tj)YFAwFCWUsJRJ7; ze1(K_BfHZCoR=(T9?Um1~r}G=< zM#K3WuTN@*!gzD9m@imDou5Cd+%P}CWf99@EbKsrbSy7#Y~vC;chqNEg;enp*M#R5 zxU))6nN(pFWm4@iaLS~5G*@I&-8??pP5Cu5sYaD(Y6Y7D6J5qV{YGVACKw|{C;f_0 zLRojaK#!$pT`M=LS3M)xEjOz3?xs>do6F4`3(JcNMPe91v8Iss%q%w=;WJH89@I!l zksLD3da$_K_h5%+G1=Gw^6k7AiA+QTVRqhwNwnaWHcWz`?7Zic%cQ7QLo3cz5mB;N zj1?O=$+6j?8MuF>e5yQaDbLrIluOkJ!u*R|)@wC``N3$|uCYJrX0qZ#Ff#G|#6Gr3 zSG$w&iszPz)fKuMSxwSa)S=O`H1+Wq5EvjW!i*C;wEho1m8mVYI-bz0BtfcCeQUbn z8+w7oQ*=l(QNSRI62S`1Di1i{ECVVBKB4O%5AL&bVKxJ*8@iqW)mIFBIGt^?G{LY@ zN4#8}0oA{G22^{i&VcF=lL560v8*+zi02#3W^>ElWK9DS_t{osYdYH8U9ckOX*{SA z-WN`1F?J#?cJR6EA%e07nw+O`)~G3{6^-BjK31fnk13W@e0v0uEJMB+R6b-kXn?ib zNDIF*b8c{f#0o!OUdtEM$@gp=C0j8zc)mU34JB)~_@A*{rh1EXA1}S3U%q`2)tBg% zb8v{V=qX~;)AASat%WPiKtY)73(Ggy3GSX;W;xaJG48O$l8kVIV^VyjhZEF8Ugmf> zr_>_^R_LSWAKY|CK8IsC`j^6%^ueSWbumU9$FXnEG^H>W)*K&X0G(6h!be6xIVTH@ zwEQ9gt`)3+KFtJvrW;B4;yaK-+p{ej2L!tyGI@!XvDpM31#P#7UNyffHi@nkDTPv0 zC2O{t|b>S;5e7JEU)(uF*5qR(x z!+mW*pczqE5>YUNdaw#`23q)LThIy#A)GrG;q|VU*OSjC_c792Om__>+?UsV&O+Jb zrxo#mXTy!nmgPy2Hb^Hi4kseY!qKXt*Z|c+tD>8{eA}XbXNu5%54Ycd*=gSoEEa#3 za$=8@=g1}}9zCaqRg)H`=J~vr;D;jLneD7t$*Yj5rzRqQR*$rZ=ppUfv%gX}9R0aR zAs}=b8vVN-E=(q;AbpPxj?_&Y288Nx$BuuO(#Ds}3YRb$i&jHffhZskASCF9etZ1g zpc*PP&liL_bU_blpd~}Guh5m)s_}Sp&Vh7x)L<3wNwKKZ4Qt-L`QA z%qfx-7uy<);WusYiyXTD{`?tsT9cn7z){pJy{}GS9(YLszI&;^cxaWaJ_l#EvL^vq zNVO!pK6ET}hR0rRZU1~fo!5%cJ+JJCd$RHzjQ(VjWIM$Q;pVGthX~uY8TjMQ^W`M& zLuMe=7Hr@&5J}JX6FUu~kot-dh0V730noYKkFDwxiz3b1}90R|NdX1le( z2#Kn`eY=H74T8=g4JlWmL<%d|A*r%mTwiekM;Oav$*auU_ULUZZi=I>M`0HJ?)?cb z^WLgXQ6c1h{x)-r4|i9Cx~3_SvS%em^c~OyM%CX|*DG8KEC*z!?X~;B-KXnN%^(+t z()f@0B+Q$rU9$Ku@MUy4MqnM1-RA)FI+(j|Bt2!GvZ*TZ*;32QfXre03_NylJxm$5-7fJ`3rpck|qnfI8Hyl$UeDx_lDW?fBIm;)+lnw#jyVrfSe~s|?hxhJ z;6Rfzpseg*SeAIymbP*uVN&(|y^<9-m1(k~_<^DLUsL_Uq4`mj;-QGB{`Ux^gIKUD&%L_32xJYG$g3E>HZBCw4@7!d6-=1D7*`9|%;;CiP4@gFrpu@W3eeoZwP1fbgvwy}~>z@Ejt*Gn`+ zLXs`+qtklfR27z6CCv2URO`d%t;O#$B6i4W)+@_X%^Z^8MZR0bXDi;ZcEvkZmwd97 zWY}gwc=GC!PqLC4))`=haGiwaRJ06apr`!>8UMGCV+SZjvTiY-Da^6OJSGkOvOdlw z_QTnsTJ)Nw>_0HfoTf&DUw=>M`g?Wl=+I=Q7f$Isd`hv`sL25YI7W_jK_>-`8n@OV zE3lv2P^Kwi3@g!KV`gBg2i9UF!s0hm3u&0a$$!Sh5*A~#P@oo_RRFOLwJZ*kAqO(r z562PFnygfgbUa6MqCb5l>k9R>fF+#pIm5>jtx+Qh?jei4=V^e#Wi>}sJ*9&UL)986 zG}Njy#YKrhWq4|+9X!cevnP=tbEEEXmq8-8YZ886*F~@|M_SjXR@QZP4VTHuTyC<7 zEf+gH43RO&XAK_t5?T`K2t>iw2*lsAvNqQ>aBtGEQ7blgD|xoLGih44f4IPJ(R7WSXQ{0@wWDbC@29+mneiWEVL6fb z=tknT5xu<~QQl92V_N+(dJZ3IpPO4HeB8iaG2)l40){cisA~x7ftvi7)hK7?I!)f$ z6zEXOo7O=gwuWx$gYyhkn@HMp7T4Lyf z_O7-Jc1G?QE3gyi2FJRrb+Moju6&Y4iIJ=!z~5(8kF>$iT(Q@V+M}ppbQ8myY|7mW z%bUw*$%SQ$(OQ<~Dmguu%PcS7;7;2r)A~1mk{ipv#6&^b;cMkJK6HCYe@3&<5H6cF zQ5%)lsgi3)ni8ym8s~&K;8FY?H262oqGs0$)U@`cogmrTm&sZvxx=d5&JJkFkOv~a zNPKJ7;(B??6b_-0#d@&vm{vB%Wn(nu(uN#h7p-H-1MkNt_M3~_`^qPGo5L+@NFVEB>2b~;3KhB48*4VK2ZcP?#} zNKTO{o+P-*kJ3 zoDXLjq`z*}DvlIMVzx$~;2{$dw59H-TP7({#OKI$1m%6amC`1}Znau!rtTE{y%hy- zvw||nBzrpr|8PaY->`z3hps3n6K2LF_)RM*aqjqgT`CKU9>sAo)1|SnR&qT!i56Ba z!&i;vVWpDtA<}U8^Hoafy#|8{xZG(hsak3rpCDTQ=e2eoeZtKC*ZeB{{Z+b94uRZh z-$oK!tC?CwAr4fs1CtIP)`T8@)mrZrSF{ovTEOS!{KFD+O6v_xc4*l2b3bPfW|w|f zVEnx+F@DR6-kJ_Fqu*#u9CJ9WTVaPF%?Anb-$3~*R=47h>g%*~EmExSi_;z!r2nz& zugP|X&t26o@6UZ1Ckubcx1B5m5J07MH83aB7BgB3J`KNfm95_0@_9BTB;kKu#T=)+ zh)5mx&s0fqQd4^(ZxAb2At}ELH>y^fG!C}kGA;fy<@k0e(nLVCl)tJu=?DA{;>A~~ z0foWWwiP0#5}k3EgnxQfq$F;Q-sJbb_zJrRoj^Tta~MUhy~Zf)D`~S0eRx6wl>yK7 zevWfEhIL@ZQ2TzTbZdl9k3eZHZH@FX=B!a)Vx$BiTidfQvZMs=M=Y8XYcf_3ztNi# zL_xjWQ9Zt4V|(@q2$>0p))lPEJ=6pNT7v^EK~@#MVH!ORaC|A{24>)zOxy%1T!o8A z(Nj0*la}wyLvp?@u1!IUCP1v)-j(m7eJyYe9lO0^zl4B0<&7M%6BZNW0A3~PmGUjBChuqe~+9A}c z+(6?;-`{0OVIb`!3O)p{52p9b0JILO@*uLa=8Wa@+a{@+c;oCXgLytU*m(T?0WV8`^?X;s+gvWEcoz)cceh;)TJ__gTENR-n4IIt6mKA zof+t4>_yUA1z!ciP`$Dh%C`Sm|PKXt))o^zD>+jYWx4@)kM604t_Xss^;Lw*Ds1jhN4oCtyq|m40zote$B@tQ* zXz44`kDg(cvo?--Bq%GoQ-0QV!zblkqe8?OKISU5cWUzTEM!`=!;@4SW01~gTZ8N~ zc3VTihDcY)ch@CV^#{@9wNCxC_wM;Vum@79%yN%jK^OZ0S_v*X-)3vbVNds|bRfzTdOWJwV~+3xaJmD|{M_knuNmENm0 zaTL_5mqjByC`I{1c=2M&i#E)dY?y649IK&g(v3q8NZ6h|+XjrAZUUD#VT%Bs)(W_J z2=UDoFD_YgSYzj4;#qMS_vf5vvSn}{;xjw{vTX}#1r^aVWAx1+1j^KR&4&O%f+Xqm z*Z35$fp|rKB{O^FZHwp?d!c+MHmdStLCI|kn`l8jlw`TqAg8XXcbTu(fLC6Ff#49> zHxHGJ>8$v}DM2)DOj|^urUZtVyRykh%;O!jA=JQ6HUPu5F;BHkbT%N}ipc`T5;@f; z%wo*UqYh#kc272Hu=ShszuF++l4`-D0yW>OAJ?A<4uwru!(Cv=qINudkAW!02y3Ff zfhBA(ZB30PTNiO?Vc+Kya-dA+xw|M?O049fSbKwQ5@gLx!ri2Pud%Ll`Nl zjnIT zrQWeyPk+o~tK;Y9i}AwZhH~TP&1a0ZY&q(vGfzC}r0vu1dh(NYobb3)PJZGOzWXVU zr)vze;k*2ut<(91T|S^pwRRSWtyEus5IaiYNUkguCuyv9T6Qz+w`<{Pj3q+hy^x?I@oDE^`*i_$|V)}Y60$WX~tjKB!eZ<`2hfd2bf#?>`_j;J}ESxz$yTR|x zat9cSg&C6>4OR@LKPbcqArY(Fv*+lIGaQxujRb<71%}&+JJPKhluV3^F@2zprhDZl z**F6|a=V+VF%+pWUQ-v?>S~%Os;x>sDg3Ugm$OkT8{W3acHxbv|B(nxA-@W-s zc|E!LI=|`pYTg*XNZp6!_{G*9-x0sa4iC4)FR1b)+~!}JQ8-l{z6$J}I(|}f^OXAL zDU9QMH4eY~vVQm=|3CS%K1i?5+ol4yW!uV+ZQZr--CZh{h49@%fQ)B#YJ6%_?Gvpw zo`5R;f)cD`0=)S9$qf0Bl(#PKTKKNI@h5sCqVOkX$emL$DmXGyYw!K=DQzy(y)=AU zm-NkMq{aq5ix|she2U-qh+!#ho00Uw$(lMmv{!smpqIR7-b?4r0tst^mZt{7hf!A6 zz@7EQZR+A8$%RzIRq4jU>2G{WgP$i*V;XT{TB*xZ`IB%GfoVye7ps^A zO}cWh^{$2+Z z#}Q^(2Xo_-ntC5!*ZcSgcT}J?umbfsf%=45_S2s^QqV z$FK8x9OPNpn@Vip$0z#4P@qc9Zr|ARFiLduP1*SIP3Mj`es+~u8wO%n4YLR_oKU`! z^QrZgcaf2S_#_rhBwTV@_CpBzw%SHr_T<)_$lgPZ(h4uCWB7)NQ8u2vKEulgCBEpa zWLo$61i@C<_c$))j=kL^_$9j*DApDKnEj9iPmQQLggNHTwd@QV%G)VDS)bH-dLr%$ zGdQUIAZ-gcr}!}vOq|0FRdc*9fb016tAj39jidKR;m3MkEl>+40(NL`e0^o6B$R3_nU|pu8EbDK59#G9BkD41jDkq6x7)OhW(56( zuSsLY>fcgr!K;tS)_`-oMw*DOrx$5XA0$f+vcVU_$>(kJNf=GoxY@Y4iC~xe(~W&l zEp5PFqqD%|_!#Spnmp#gP!lk;tXjcz%y>x~Xtcd3Fgyk!C5;Px)X3|Z^$T7ikl62%MoL^sPizSU z#iLzF<}opS2kqdca%pv4S`}Cje8h3tG~O(Bo7XO>j1TLEa-%xDi(U@dWx@_BAw?u$ zEi+gh0^(iUb|T8D=1rqRDOIt+mI*OW`H`(sj9XU9a~~6vg*GO%D`^RM^|-|R({Y0L zyX+*}q*-!@ls?YAjbqC7G(9QsHVS5DeDh-;4h<7tMAw&dO8m+-GHax{1O3!<)=S(j zAKDbbX?CEQ!D=DTgnGb$+s3JRn}2jzRpiug8FEddiw01djupHnnLtV12CcH|8l)nw zF5Mk$!xLZ$KJ$EN{zNzBnH9Lth9kO&z?-AnESut{gA>?}5grF6aJh$dnt@RyZHffP z19<|Z@9==KGckH|6DFfb;0#A&5sr4MsGKUGk)oOxh0nS3u_zu(^P&gRU}@_|0uh93 zUvBZF#C{~j|85EGke+ftW)#31mB~+~(c{Z?7y}oo527S3JnMG23I`cpq*HKP(K~ww ziqO=G5kdg(E^a5I0t?{2Em$4Km9NN9_fS-nA>1KPJsNp(T6T5j9?)TH+r8)s+&wKjL0@FrQV(83 z!JWxXZf#V)%<~R}h^j8hCabn1swop9#tJDWAup_!o7>h+EOr&KjuU@KH1XwU!rcgpqRT1MRkpg#rzV zxPsQ$)|`^L8Ti2<86)&?G=UX(Zu-+2%Ync>Bx;n3@@?fW7}JmJ$Pz*8K-G22sg&;V zi7aD`*FdJGr2+ylxF?LR|zN$fmD^2-K{0M z2xy{x(@e)vU(Y+rem@h8HnG`)hr|(nT!U~!fe;RukO8;`J`k^&F>wL-C#ryQsZS7V#lvrqjqhD)vy7GFY|XW# zoZvT~_O-65uUZwPiy#X%RWh7>*nDF|hvcP=MSS6~{51j#^aqKu+do;Kw(q!J%lGI3 zi&eTXE|TSC;Sf|N;Bad*C-AC)*Dqy!uY_d$a1QPfdHu;6Cgd;58tO9$Rtc9U8b?X?4tcZ zE)pB(br(SipP?i2K5E*bfRD_=IKUOq+F;mo^Q#~Pkd;-oZK~{^*-pJ$w|Ij^9?W}m z9`_0Rv~`O0VQ?041*Tbs!!Z&Z=x#`@ZqjO7zZl z4QtCgSIw2bKT-&Te~mcJEW8I0g;v+8Ak_eJzl_0Yy`ddk>>3#Bv1~4Pcvbin#1LpJ zF*hY7t-K_4q8*XmSmmhm;tZGw27zFeWh>*IX%4b_yd=AgaRc!R@e$3Zl*`%CO{a?s zVAV>iuUaeaaa@xbgNM@c7Z-c1a!UchZhXIOkpnlGb@u3L_{CcDfIq7Gjm4t43hqwA zFT@Aom$|qvbrw^DTJ`$OR(6uAlM*9L+!AXPw<%ej6B@+umtavn-@~17Fe#rN@9kF= zyoEzYMXu(nKCfb=^m#(OO`ZCBt?H&UQ9w2<2!7YHd`PPCNN4Qal&O^ytq~RftN7ZX z_<48ye7imwjOFrlxy+|n?xp%((S_zeqFs{8Ie9flr}` zX>S@PXAuMC&+k=Zl)FM7XQyA{tBTzhUpr)v&r0^II1(C(WP_!JR=;F8KDRa78SNck z=p^>?1B=$FaMyL%cVDCyGg|Lyqa77q#-O14^m3J=7*JPVO5IRU^Mu`Zzb?&wt!BPX zGby$E(1)^pP)^&4xgM2Yz}^hWB&CS~rh}5Oa>*nvwq>Q&wOsilsy?gSzkUXMrbO7i z-Q}B*OsY>ah$#a^wd8_88z4B!r%kvv-Rf$cukgatB`-^`1fmv8PAU zPxZ2k6f)>_zn;LE#~&?^_?~(;U7D<>X3w&S}bkFKxyxW%HHVl3$N-tSkePF zZd{cjv|CgS=Oe{;Kqy{Wo2-d36RZ3s+ZUZA%q_C;$^;4$k&C>VGdAo?%wF?}i6Rhy(K zd6%RWR$!sU-GV!Oz|vfw2^7fi}PP-HlR!5RXrP$GfNV>2+a z0S1fNk=)X32%JwyWQMTdy7F7c*)686E*obGS{wvgPnfk>ZN-_&{Ujqu5laZ^gA7Ob zG=0y*K{8mJuF_0Y=om7LH55HQWRGvrV;L0Q7fV}|D=X`=%6!SnkRnQDM)o>E&lvbg z_&a-q;h{$eKibk1e7~N(>Q!oazn-aEHB>L;(VOhiy-XiY$Na+ds!`_-2?I0SpV-ll zV1=U{Jv@U{E3bkStTApgN*1+&iBsQB!Mg$Z)e&Gu+WM1(chtAA zMxhsk(3vngTL!GIoqH^`C>H(>mof@BG2)V(S?uXR4-5dFm+<(fU!9i!&hgHWmele& zs|9U%y2u7{E+y9gudvA6iPG z_q_jUiGB|KKRe%cW?u2a-`NYORqOYsUTG}HtHwM=BS2^onVPRc4X*)F3IY$mS&QVF zfj(h33ds)1uC&}gC*JH-1{uF5qA>}7?(c(jB`xFJ)eO~f1#)CZlT}R&2pOJ0|M(EN zFWo{^yvs>uCuDQ}EC4>lL4O<;zSg{E033 zDclO|GMN>oHI0=|3r@-=!aY%f`@+(XPqT0x_2%sRld|SP7JlAtSe{LG3bB-vRz3%m zZG(f>c1<2+hL79|6(7LOH@$5&sE`gX;3pYmIez*Pg)CauULkV~uiz1sG#7~-S7qP@ z|D=H%fpyJYysD=(%RdeMif(dYL(-X8c3IZ!AC($A!xg?RsZ;jMJ1A1oVV zFZ{pB`3y3Dbv7aqFkkPn4=SY=tgaHMVi#<~)*w%P&m#qYmi$cp^1o^S1cl)m$r6?{ zvhvTjGC10(`o#n)0FLn5ucKrFg6jX0rNSdti>LHW*Uaqz*MbAX_0&0_PNv(L7Ouoi zv6^RFMg863tyY%=s8vQwPoT2Fzf1V}KUt2IeO?W)vQ;H>p8fm3iT!M$1Zntl3x!F- zfu@(joQ5k6U*?&J>YetCTC`SF7U8DfAA>`f?R`MU#6S2ZuxV00U%A;J_pum+%u~5Rx)NI%^8fT-J+kmg|C95 zmmYr6=N*307aU$u4Y1^}ldbF`Tr!xe0Ej;?y>((BB8o8pGPo9z9ConS$xCAdv);v| z;e-8awuw&H1b|aKr8t=CMRwqoimtgTofbrU6!g=2sVGyv zjI5W4ZS`r<`ea|0ss+BVf@vWzG-`Lxup(!mOCS}yLujn3lkH{G)-k((cFDb%*l5fV zh5tXc;(P3u=TG}4tZ>7YXH19jS_MA5C_`40VR4(g(m?E<;@Vz1(!}5{WE#2>*kMNZ}LT$=zzR17Kg%%r0yZCTNo<-J*hu z(irtTm@D5#7kMv^PRK6gBye>v4v(=Nt`4f8{gX4a6POd`W!2oSu`^lMfkhe~(a!h} zm??U^Srh`$wvL8FCScxDth0mR9-DiLV9Jjz+Hy*9TAE#fsFs63QeX<}VtR_u3vUlaIT!9hJ|qZA1f)1 zF9Cp&vL+G$Fnn}wr59|g7@?zPO{R z?f^HMN#UT5HLe12rbHY>2e{0f~d}MGL0r z248wi@|~>WNWj?Y0WO0VYB20AQ1?QO#BPQP>?4PJCWo!plz1=dj-BS!VzogFWQ!H< zg3Tz3#XXZPC=Wi43h9Iv=nlniql4(xTC@mt(v3&fNrjY(E2|@`W{M}{Vq2uwlD_5Vs(_{S0bz<27gS_RI5&0GLtD_iea@GPmUV*QZSg6 z(lFMgl#G?c!b4TKeqHJT$zjzL{$r~I?buW@L{H4I)D8Wx22~CH63&27zM|#q;RO>N zQvmh!s-ul=c;N!RD2f?Kot9*!$P}O&(VU`(KAU2(wA6+rCIYm@3Ofnry)xgf05yvG+0`U!97k$o=UqdMsvI+2kJ$ia#5&h`tSy}5mRKX*c8C?i+*}ju z=18pLRm3Vxug?-1SfiAA2V_11GT#DX#IzA2-6f(=h431=vJM9!~fh=x=#JeyZvplgj-VS4JTqq6aYiiTcL&YjR zR9t{<67|qHvi52{^oX*SX~l+No?{Gi_X>vTu=Xs!WYt1>{RZ>aa`oGImqt|v4$SJ3 zr6V0t-bi3@y6@KMG0Rnc>vZXDZ=N1ItH_S+D6%Q%U7As&KT9{FR4Tpk02b*~emA7G zOrm;nMhG z8i+GHd?`uzf(omoj0AiJdcn2*g64_?Y;xJ{A1Ja#x6!Y48y$tJd88*|VM?)OvRF?c zH`12o4$A4A+tmC-&_~}VKM)GS1lsOF87gFM zn+}bL5QgTwVXdO#YP;s2c2%8@<-zF!DQ?R)fN6T0`IR80$?-NK%;YN-bi0Tr`&Nj z5yKLD*U~+sgHdgsE2N?4JOI{`Js!L%Jw?+3UOU|x4J8HIxko-MI-k%eS9D$`pnJHm z0Ck0jYdcril2>CuR=kA?19>p^19`SaIJ3-jsf%2Iw_s!?#Ln26Jf47lUvax_sPxUlS?IMvA^uynn`QFT(1_YDfP)|$?;o_U(N^<4Pkyc6XM-Q zuoV<7h&yFi{2)#xxJ6E+DQfMrxFo~-Uztk9jmm!(7To*9#SPI%6%N+VuTQ6S(w)@6 ze7hCVNmmM*Bic(dO49@YDZj584f_L&lb9bi12|cMTY^4eRvv^jN%X_n8~CFeZ2`&rtR^POF|6T7}f)l!WC$ zhQiDy#^kI72(sd>S(5=sF<<>~-9O;*2flH5|JS685j9Eq*V>JdlpkmJ56u(2Av}hU z(x0UK8OCTVs$`McZ~|g8dxn>(yx7;QWC18Pv3^D2SK61uD`(VMqNv%>fD^DTCZ1vN z>CrB46%;`fnwHRNXIj#I0}r5O4CF&eE5Qwf2HlrGw$%^_nF6g}A!sp2$74|3 zH*%uHwJti@GbOqR0Fv?t+*?W%0T|c^4wTyfpQykt?P~z$a0&~T;ZU`^{4~oAy!Q32 z(?RWVbAWxL`i~{#S8wB4Eq^uvLsm|Da|3)A5qUSwU;`Cu2%qGqq5RDObKj&P@?UQvS{&Qrtx@>!?xzti7aBA{ZzOvieALA*;^-W5FnV-T*Um&n1$g zoN17e&qbwe1z?uoXmVF(s2)&So-L}eiU3Y~!0Dp-`fI)UHPvl8b5P!z!g>rWJuBa7 zs|XqpU3$O%kt4|r{PF@?0l9&(QC`BKRv%y{^@*DkiKM*PZM@kLNxEEy5kmG%)UjN| zI6Spj?{*{*7va}ynY6ada(Q-k<6M8c3#xNWPUSm83X3M#pQfs`nlgbyh%^wCECR5i zq#NZ2gg3MUEBjgTxGs;sMKyGpoYQ|PGv+N(s7bU7*O0aEepqn7>F9KWt*^lw%?;dc;t zA_d9p7cE#1On8&J##G9A{snP9jAhxp>8kLE=29R`QuH#)_4$o+^h+74HT+}Ge`$lXLvho3E&ro+$h zH^xs*?pTNCEp)(x+!r2{+>fk@NYy05lO|h_svk}pax&qvXp!}1MXYGfj^tZgI2=YZ z%#CNT)uYCA-$WTaBL`#b;@?@xy+_Vit4I#%j;=HXR5Mq^;y-diu$xt#!CWo-%!cU@ zgPByaVq{XeEmO-tR)S?7Rf}5TS(IT+#25h7W|caOuZ)R^!Y$nL?F!zv5CB;AAGW+) zL#W83GpGthc9{!9z|0tTHrx`b4@cqGs-`wt8a!x5ARcGJQL=S2h9`x)Y<8d%Ht4_M zuQ5%L6lS7AIDGy=N?ka&C><8%pe; ztwGaXdoNH0g{J-X);5`__Ud%-T*6gdOlrwJe=fmcs4!hVZ<|B?yjWtuR3Vlag<)MH zhef)_K6zlJfr!>p>_*Q^+q7H#TNXg-wqUk0ODoHamY?fY zznJ}JnD2Iyx&>C7Ru}SmlLV5(!=UhN&RvtQhKT;#&B2QN^X*>SA1E6)xSbJ3YEb?nm)mrmbsiST@B{co^s4Eb+=@80{fKpqAJ^QO;!lyMT+2!}(pA2v zfB;0XRK34a!Gv64__5?$)IyS&l2#;;if6>lc+?*f;!Wz}(Md*m(oH~do*bJH{PNWV z!U-PT#jD}9y9cWHlhk)$5*wG|ghA8&Z+~bJwaPUaQ1Ms+Hj*{r+b7&h$Ah|7_Jt3 zD?sHXKoTv>qJL!IVCq)ZgXt1e9EtOxOsEoJsttFrB0EtOT3RYur} zDnkL#J=U?TD!CyLEyHR|WAhUus&Tat#j;ny0*W?20V4}2JFN78;9K567+Igx`4PQ* z7_g{6j{p#M%9xNW6zk8@1K{}qQ1b|ZBOt!zI1%lEi4shF`(VZnhWpmh$+v!B7OTbO zs$7l=n;mnAlMU5|gW>FZ0q;v#^*n>9RtS?tz&d+sVZ+&$CkWfQ7Am$I@S!5 zjl#?zndq2qG=aK3dzzDh2A2R48*|_2h$v_Lrvu+}fOThSV3~2q-JlQMxdcbNV&|Cv zC=|C>S+y+s3V#t-$s>)chfD+_0TgAI2x{_mY^iU6uMSx+BJs`;fun7M(6+%5zO?)Z zQ};tA0wk}L(F_q7u{w3nDI*=binNWMr5)Qk;1fAqn^CFR)kq;6Id+J`hpv-d9FD`R z>W9DjrTK8*H?;~{zAn{4S6ditUk1poEMK#&&^>~iWHVsW%Z7q3v{J%wB@Egh8m~ zSu;uzE4}g++ol7utz5MY1C}LS)&$F!VfU3UuhEexI@lUUImEF>zl10#j_o6ZC^mIVlv2C_MY!?2bJa>X)C zJWoxiiVWdwK$LN}R!N);1r}2#6B1+7r~0^=m&(r*Y%C{4-wep&MP_XSVYt%v-QItH zei4Ruj}ukG$mW5eyj)n?Hci+#&NEUrg`PhdHBUCg2bn+UH4ju9=6T5c4%>ou7ZzUcHU36@QrdO3Mc9p;((32)mERK8}9}Ihn2$!?C5^dMu%XwgRbiv*!yENsPVeg!R>3G0} zSkm@)@@P<4Seb{bX#e#=k8I0)zBMeqk@{gLw`6;!=?RG-<`GTfxdT2$zS8*0)z}yAG2bZNiuiZPTnyaO~7Yms8ChjS~Jp*4_usuByEE z-ha-SIWv1^vhxoD6J?*>6bCdV_evomZ!^mVrP|um*WRY@+xCqTy?g?<4U~HMyrpKu zplLykh#C>~WI{DsZ%vh&Sg08*T5d&+iW-$lQ1J~d)=>X}AiUq-v)0~cpUIG-HOid5 z*Is|0_554Ude*b-NkgWzAFkpEU()D?URh4Ufr_CQXvDfN2?WyRd*Y=$z*n0+!=oXL z6YdIP{oN4Fv;NcrJT?(Se}6b-hM|LTL(;cQY2pwTN_swZxf2dR4Wqt)&yMZg(YTa z%z|w4ci{;|i%_1H3$R+x874JSm9U?f6NX)YGJ66-U}6m`WK`oK$qAc$&L{r|*_HXo z#3dk2>k=J*I_(v*+X9r+{-h*y#Lyp?;0~vAjZoN+EmFT>L@L6CjkmQQ(^hIld}2|cJF z<@TzTz*pk@E0}YbX;A%dq-hCoCg=#ExybG43nS(b{9!Q0q-CQMW-$IFzg}4UMoDLg zPAryQ3t#ofs?Jv_Z3fFOL(&tieBYw^7SWl>URqJFsQ*Jn^1(M>zm_Cu$3&hFSZO{$ z8ZJs*)$C5iXjd1oK^?%hNu7A;4LBuci} zX{^so^%%nJx;&(&{pnNycu<|<;3`@PC34FTLs2T$bYO3+*yRAN1{~46$g=#zBqqfb7 zA4B}_2|40liitw4_5f;^33Z&bH~vVSI;D#Ki(Beh@tC#^A`Y05$>X2+$rUdD6P*yS z;;>F!S9#_Sku6kX=~aY~m@&C-pFi4sa~zv(5(Q1BNz}Z^TFQ6k~kl33h9y#ga; zu|#P_A4WDK&SfAVdY4QwL`OFhrA}GEqjsOjEPtSAleeH0C;oX-U0&63H!nslSG1y; zC5lCqdR=G246XA*`1w%i24ShAc?doW&zp)ZbJTD4i(MxJ` zhSp}~&JGC!`{n)Y%9^cg`PCye_GRucjb3Lb?}4Z|79q$1OayipafuYbt6?X3UZ*^k z`}OwZ@uZBPsJTd`tYvo#S>Iq8RLE!bc(h6Du4YfBMW%jt!x&ZdQf+l?zorT%XkYwR2e_+>_S)Z@<4b)|nAcqs z)2TIzCB=s`(z*0pa42%`uyjZnwBfvKid^J(XX?>-205twPfvHH!c-WZ*85PP@D3@X z_$871s46kU`{&Rj_o}cNRQX}YSlZ#{@5NLmU1Q(KC1nSG^?g{=D>d840*`Wc#AuG4 zauhDu8E$>YvRlMQNglIXu6)W@rA2_N{?5>nbW)g`@JMwo-@;AsIER+xh;?Fp?qy)f1ZiO;XIV#p>!o8gr zZPqm&p<ZhTFkQQ* zBt0uO#eu{=Z}S6nahLFET9v`mb@PJ4rfK6BMQW>eWWAw6_GezZ-@4_>~A39>A6k3arrmx;S$5bpoa z+mK+dDOEZB!Szv?~C9r6yMF`OUBj^3fKm&g^{ zjCANHQtl+JLJu(A*{(GT=@wvE=x!u_New*&{*t@YIktEx!g$SM3*AA=4j9VBL=pGJ zSer7rAkI{lp>j6H#`G#d-{68Dk9i(b7_S6dvjG}pI<&3`gTq+`Xd4k7Wfkq`UbE+9 za}WJcaga#5Gc>IxWtF2ARyTl!p1BzVknZ<1fT__7xOew*{HxV_EgGrLI*{0fP{yAO zRj8_^(ODhphVC{H0jm(!0;$*tTkQj|8aL}9^+=mF4x{!_w&;}NJn~(WPZ2FPmB|-T z)2cw%48^XX*NTQ|#T4{jbELWQ#VZaVY)Tc0*H@&0>#1XRl=9N;2!!f+>oPFGd|)_T zw9tGHT|&Fh)lC%yToFm4RLCx*amwqZLLrb#D1=3l?_Jr6IFK(RM;~=M^oJ@;FA-X6 zDimUupd7qupxPiA0e{s0Vb3N=%%?qdP%xiKGG8Z7a=M)fde^)z)A=E^B*HK%pd~IX zA`&1B1T-PGK-8nH;+3R^X;dh|whpveq&nk@Y1P(6Bw4DTq)^bnN*(@KkO#T6G0OUy zg+pHGmslF|+#M`wIQgMU02bZtw(%0TZp= zfTL#7ZVhVGE^MyRIKW*zTOF|vwAjZ`xCglGdm>dr5rnH#iDvmhMW7?Lx%pJ#;~!v#Q`6fPE8S3ES;Inq;&(cBw)Ta+F_~P1)BTiP*T8hbvG%iK1NE4#P(hl>h7sDR zpDCXGxA_$_=-B=1x2)>Nr8QXH3|SS!ZzXBm_w=1!8X6T`LGhw_%`IH*NB@IrKRLhJ z4fCq~``8YqxtUjM6--yb4gSA3=F;RiUl#(-uC8L$ecZBX;IfSnD8k+~LC3-uF6If} zz7!r*Wmv}7euVcQ_pKk4?|a96>(u3bSXKV8J!F3!H=!-W6SU`{p2w65@mc`~K}eRL zTE7N7W6@qjXT_`F*_S^%UL~E(zIqHrc?(|?`wCXtS3^J8Ac#v+jdgGQ)`D1fZ@<47 zyL^8Kdz_%~JpP8Zxkrj_c5$p$2BB(Gc{q!toVe4b?}?>u-~&s5x}$K)90b&LUTF@Bb!QwR!!wmgOQ)${;dA_ z;DGai0l&dM)|1*9nA7X+<8gDkivcgdN&1X&Y=AMMePss|zroP(A*&6(6wBRcs{j$hr)TgQpuC?5dF8Y5oru zK0bm>@II# z8zc;P=GC^)+)gQ3qnb>~E?KrLjRK*!!G=FL=rsN&O-a|N*+#KBu`z4mAm1q*4J z>#vuAV$x>k0zo*UYpge6E!Tw|r%HkOiPid}mNJ>gMWonOvHKy~d!l;`OdE5v-v;7R zPwvKG#?~8!((D}x@S_(nRE!Aje7G*XQVP5qyGZO#7bA`@puY3D712(-k~wz2z|I3x z&Yd=g z>-r4{?$)b@WKH8S^a(ucR5GRqCIHpv=mPrnD|D6?=&2wiK!w_AUkb&qFf2&rVXbhQ zKq(S44#iveiL!U6@o znWvb$E#y%@tEp*gLRih<>BW?`>xtSnZ=w{^%gp;K7|O^-$a1(an_hmaIS%M81~qs^ zl(>I3Sg={M&7Be2w}W|h4vH&W^H1saj3mFC8g@G=WXrW~>jXxj}tOc47~W}bJx1Hc#r2eQD;LxC&xGz#tU)8WhgWhmLfutY}_ zm5+mMvHuhT`hiy&k3+@LGVUs}w;xhU)nJop_jQBJ1x13nF%rQDd(lrst#<^_VmcAxVO9|v0Wwf<<6C9- zl6Q>MzqW`t6@j5EieVbP;c#MX3HuG+YE0&}n$|3Pm~qDLb@WSGvHIhQLs@nxi%d!6 zc$0F7@wm6>NgPaBuJKt&ep^+AlKr{);+!cQg6*b@E>} zliyG$zo(hJvrc|*Gx>FO@?SNR-&iMqpqYGqoxG=+{H8kjLycqzz`Z?TJ!Bxc(dV(} ztLyw9o|pg4b^aR~`QK9K|H!=jyXyRJZRCGjo&UCZ`QK6Jzp0V`)m8rd-ihpAS_4zh z#tO{fpUitlbNEi>HH7eUcp@~|zEIv8BWk2ND&mOTt7fpUZUB>yy<23FxKFSsd%R^3 zdzWg`nj&@;Y7{UjWWqaAIEgye>u0IZgt|l*b(YzFmTLYiOVQ8ro_>}Jt1L^apJh)! zONC*U1+S61rJMVCDs;0vNk7Z(ewGULEK8@Kd%v1;?C=qB%%2_HznbG@%d!?G*48niQEdImi7qHK6ECBCzhZf zgP!n7&Hd9dZRJGSu5{4K0?bi4q9VeQ>bEbGZh~&L!2ghi8{`CkhK2oeH`B4nD%W>5DrMQJ<*+|wI9?G&72J|dT;6(QA4B2Ju-)Qx3WOOvL=g#QxPK4spFX(3@qW864eg&F-9wsxZA2SEy|c}=^rc)d#EJP zQxp$TBKH5!)aE2Db-b~tNV4~~lh(Far;&P`CcsW0O;W_fIcD^!9WV|ZX-1)%!4FRJ z1}!-utN%cJT<-9;JRBF<86HV}2s+f^B02tJSlN-Bi@zn$L+7T)^h??dX-D+zb-p{o zBlR2#kJNKGJko}%@ljoP{5TN;AZ1?@c?M>KyhSdTFHzKVy$TW}hDY-0TgHK&Gch z-};X5sM!dQnxpWjc?60yzt5nDi!RSI!0?+B01#w^j+kQ}hG@7HE{;+-I<70}SR3N$ojpb;hpAb8kSpaI1-BznsCnLfNKDAGd) zs))AyRXqK_lm>3Q#dSDmVIAf`+hv8YxM|L<@fTeBxnEm1u*N^psPKocR9_eXC@zf1 zzc4wToJu9OQqi8Y`8;csS|_kKyU84#t#BW$=zCsQ9ng=eVG?lRB>#FxQ!8-trillf zQT82~DxiCexvf&pxdqux5|ZvK?K+zoqyl zYlMthXQyNE!R>qVsC$&iGVYrkTW)#pFDRZlM-QQeFWd>`5zV;j9mn*{PO^Y~6DY{O z2^W(aBEP>tW3oKK(th)2DgSJBR=l-~tu{8R51`&1!v`5zqyW^QXvDoZB?czD8AsgE zzM05QEsg$vo0}W$C%@YJn0YE@woDynaU`wSFlCc&EU<)4J^^30*N_m2U<7UhZtrEOLSLbUlmJE_xSiC08X`>i?43R^x_064 z^U0r`-^)#_TzzodH&XPi1ES-x)wvv@da53@D@{4@9H(eSiq_^Ekcm)X|M9cD$hIs4 zLxQ{lIA6u6D}70#kr)CxB!6|=oLo925A&ab&wX4DcEh1sj%xTVMXD{R_B*Opve#;c z>(C8fLKh^cBb3xK#yX-M<~JWw31mi9LI+((=!8P$GduZ5^=k9aBOS_**s=lFI$v=$ zLhH)ezT!1h{P$KdqSGoypYK$6!I%4WN9=X*s0XT85M7AEy${4y zXmu6>AK}sB!z#$VLo?<-7>=Y25!|u#r_&4!?|)ASnsvpo2Z7UR2ovF{LZJU}{ zaTy1RxiTyEW@oam)qz_xw@dMcmACAWVY`mP&#rgARvqK_c0Px)ZHtDEZvs93B;CY% z#I*x#RNxvrY*hq-nSCTpiBtGWySsi4bpr)Y+~RDCVgP3%gS57nj-)l>*NL45<-S`rU96|Fw7szT4%i)2e4LVi5(O12p z%BQ!}>EBXC{A4QnVw<~HD(os-^5=hjp;Kzt|aTS0c;x2dWGoMWM`NyVh% zyvhc<==V&+Hh~zq8+7*@9tABoCtXM4NXN#LX}8mFAfS|>^PnQIJcQ7A4 z$lQqaDSQTNE|j|`KIN933fL?J4rnAu4G{TY;{5_cb+-77bJRz{*C*-#^tLUlqsWc2 zv<6#|Va!0pWv`E@i^!uj;Y200ApeiPC&oqQhQW{+wA?Su00*m3xIulJKaV77(SGDgP4&@df*Fs2)yovGYYsLgjX%+KK&I;aUs5qHebOJz9>zBLfM zS+N8FRGgij-MPb$Ynxv6E3IN|-}I@{o$5h)z2^UuyMmfXOeSZ)jmqPS{A)1`Su(!V zu~}uoH&$Z|Rp=_SrFPR~ zTK@}0w70a4-mpZBWme)>)0*bfoCwt%P?d`KzS$=1iLx^S>#WMz!zDUcYAqlqKqk!| zw{%^E-U+AKEPV|_I3nuBQ4u`{S4Aw$=b}bMVTBRN_6%}y{smQ(8H?P#Jm?TQ^>W=N@ZYpJDw2Av6 zZzKNA&3#1qdi-UMrNh904F#m88VdLwecK9UIzTP0eYmSf3&^2fIixel1Dp0mC5F(i z=xUK=zloerrrqJM*-o$_H1NaJ$tiG4(+&iu+{i$(P*CZ5b-imx-7mOR?jFVB&vfq+j12Y!#%hGRMk*Dw z7ic_+@*i>%S(Y*A8L?I6n=$jcm}J_G5G^V8IvLT(fvJ&Ot2X#YU0}7*#g-?Qx&uzg z3MgR*(1@JEiw`Pgx~a9pq)Yga(}a)J$$A(;X^$Hu6ze**@b(q&51l@HdJpPYl>cqW ze_=^TC2Vq5crP8A;*lgcmU=s_&zPv}rDqpz*=NODDd6B@Tie?RTg#x^U0DdLpl){s ziFo0lMz72~sQ92fRcDo{7gqyXZUbTo!RU&%--Jly!OxJ59u#qdc?IKOfkRj17a9h} z!H$$<*A6Gc+eV?D{ODxK;vPF`g4(UJZD%KCnSFm;l@nOVl#=7V!q8k7zwPhl%oVfF zhy7d-_lcn{=M(50SxV^x-3hJE1pJo&UXBh%!yRoz!$o5;!d)y?+^QHxkuZr}F4|r2 z!u%RrN~`798V7$E5=C;;E>MP-U#lED#!b-lT~={TW@qV)gnL zKhk}8U9USPhB;Ox98>}vvzeoR>7b^q7~5S|Ur(9tkuX}L{za4F@yNm1s>XG_ax{Ng zIliYDuk*cRvgH20@VaVxb~C0W2qWr7#S$UL7~>!BX7hR$YCL6HvoOkCh<*_M9mfJY zgkqIYUW*BW3Bvat^fmM ze+H~mwJCaan0ds&6o|l2!RY=_76&Ghc#jOV%RVHwFe0%cN7g{$L~$>&StUm0M310$ z39r5UcA^h47ZU}711OH8XZ?sMY@U#P7y9!sGTkHc+8;7(m{a~T)kjsM`dwsI5lsf( zLT_J*`Cxuet$S+&yi`?2Ro2Z8HD>g=?yQESIJopD34I<{Ls&I@pC|g&P=!W7P8Vs6 z^$4QpcSXRstwn*Mck)>Pk=>YDDBfh+OX7~f)`WO>gib3c4)$rCp=*_+uB8$2OelJo zW{Wu(B9kt195ODLiC*A~_ATP`My zXE8Bb@U2sFD~EoT__W@;_%tqysVFq@SW6sukHcIu8E{y%yhNkqhWlcCce!Y`S4`~D z=Lpg#od}E}Nt^Rw*yHdOMiWLqGB|o+dzM|DC=$AfZeXtSs0R8r`lJ@w<*;I^A@i{7 zi>i1syS_b5`Smtw1z(w77NU&Y?`wbqy1tTfcEl4o7?$exgp~A0Cm9&iZu=ALsPa4} zBq9kSRId=i&}rDNvZv5KX`y|d)V}E=w%39_BzfaERdmEv2bEh_5Uj`fO`(v1g4U07 zyio!D8MT0J)2;>H!N5ZI+#H&)k5TcDUR#!^L+O6&NIHy8F|HWXJAZjCJSazs5t*kH3JZH)Wu!vI;m%L#mUhcXUUqoyfhZFNPiuSSl9x{sXqFrs zx+m#pMfYUT)(rC970R=MYf96K39p+ilKp$i>OGpSKSk43Ua2;r!GY!f zQt;<@^M4#79@|v5aC92tBcTcW;)3Bb(46bt9u*6jIr5wqb`f zWkls1%-F1{4*{zbQy;<%4xc*Hv*j`%w(O!wP++3a zcLJ8KXntR=biOZ#cP#1k>+GHao0#ToEo^QSHaAq9q(Ci0;z7B7G>q9I?Unq0X>n4q ztZ4PhWp&GYdinoDHf~>qh^G7#gjMjgRJ~Phy1cZJOER&>om#A5v^24N;SOC~=ibEAivG2|z*h!iHZ8TZS&$<0^+@@U z2?mJf3>S1oky*JbxDsMgYngIsAD9f+$Qa(v5nQT=^ExA7a7BXa9k=U0O)uj~^ zdfwgZBKzqBd;#lt#TUF?o7o{=mcqc@hNd8qHCiM(7AJw&XELDMTG%wSxDn(DLPz<>)2oCry6kJ{~=H za(~V2D0m`1INLqNaGooih4Tnp;e0Nn1ZTl{(0x9B?QWp*Ai}2%mRQ&@?cHVC$Tf)Y zD4={BsS)0u0>Y!e3*noE=Og?{P!&y_+(-CkhXxTIQofS$p#5%T<~3yj;TN285S|;# zd?wgC2ye(d&V<8^nMPqhCNL`LV}B)J(E1JG$A$2SERXP=V!~fNP$4`~(GB4d$MgZj z1K}&gTL9rvkGGUa?u8J3cs|0vY3O)_H&l6YxQ<@70t{~;wq~$1Sxq;2I=C!S=`YUc>&X71y40s4is~KZp#QjevLXufPAby%<{}Ca z0wSQnXm``>De4*jKed7GgG8~IaZnDDXcf&|YpJs@1zN=lYGCCXq<}pIqG-V+3BulL zG_kQREGZz8pou0)upH@&r9q+ym$yS3Pm(CO)~+Ionj#eHoM|oGiXbBT6j6cFQ^eW= zidfO02+!xl!j%7*X7bdvZ(YJ^c}u0B3tvj^yNhe zpOe&blO|3+jwX<0KLt&!FhPNY5KVwXqKT!)(L|4C;g;ZguRNuJf`c@{=!CEgu~js4 z&8LZzPe2pU)rn|g8B{?NmG+2Q**gJEAR(?~Jdpa&KokD~86bg!S|lkiwPi?(IY7{x7o3hR42?QDkhC0b${N6>N+xu%7y6e=&*^7Sy0)ltnSg8crkSY(d7 z&x`$p8U9@iR}RkB}>xBtV>Xz&?5R z4P6EFXqJFP-WWNwr{qGv-(J6T;*b8VKAt{Yr|b#$lhg?pc~Lb~C(O!wW@!E6FIE+g zt=m&})^A$fdt>+VJJ!usE24w5NQX|y^KYbYxc{tkzx&BA@brN%-+k?hcO6}~2QB5u zv726T*5qC5%+3a2u+o%l_qJFSw)2;<6(q)>=Rce+M&KVZcd;Ld5h6ilXovFO!rI)( zVxL0kMi$_Ycl)nt8_j~c`6IO$sZ=ePOJms|X{!-9GE0r|*|c@m@BRK;-~Kh%qt($a!XYX8Rs>h4 z*tft5VpH4SyW;$-vFxtiZx^kXNn*ECRzGlQ6;#fSdCpqEwob8v>j4DTwIkS|_nV%t zfaXJblnLn0*O4oKAxBt53FN+*$&;Iglz%xl=*4V@Y}s2TvgF?+;G2k~>Mp}#@-@Z< zy9`syZ^5k6_6{`fi{hxw2XE(OeA$W#`>J9sj>h4`BXvpuO)RXa@DcH&T9oip^^#rG1sU;9wt2Z-e+G6eT z!9D&6)w&)oI)vS|Y|Bh=$=mTJWyHn8_VBp%`3AjngUn79-1(>q;<~Cm{n&l#(a3#~ zBwB4Lhy+;121(F&J@6B+|Q zL3!kCBI7kbQL9JH17@JRbnnGv!`qhI9Dk1|`l-E8#r--b*+|j1Sy6MIp^c}f$5QZ< z-=is5Yu%QKST{d{unH2aml>iA)1vly*75_?*6@SZj_qZN=SJ>hRLP(6v}PAWj?#zMfHy9cZ$@T#>KVkVW3Y_OR36F-cRq8b@+ zcAt8Tj(Omlw|jPDyETkIRQzX#%fTJY#hw^(G%%XC3v}Co+`HIG!RR1##!Bq#$cP;R zBaaA)neYh3=>!3Z5aL#zv;m0`5v<(`<%Se3dP%vG6y>(hGcj*gjeXmp*BvorVwVtA z1Z(^Sx-kC2U-%1ujlVEg40C3Y5SxcPhvcya?550zGlgkE`3hctKSGmF=Ci$KOTM#h zT!4I2`5%k#Jj39A+g(sXWc$=tG5^V#$(rss-3bns2#4|fS__yExo=-5VWIcT!Q;i} zFSAQbpw0Y`anw)*JT_PbK)9Z`1_q?aecD`i;HtX6r{i9KEwKS7O#^e+&CEPBd|4*G zD^9kx%f?OP#BumGBzariZsd5hP^4GwkRgHoK#Ij~Ofc*!J8< z0XSKp#%dQt<|NioR$NMPIpoc$BZK?iBaMCU{pCntvZ}7*rd&~kQYY9g-(O~8*W*!Q z-JwCRg$owEKxnwp4s;D+0YOcX&J*-h_$SCop?FBM%_qE6OsMJ37@kPONkK}k{BIG5 zkFI1&+3vc~yLPqVO(ukNT@}e|HGlTBMkUpi64uo}*dpDDgcaRU;e^-olp`<4Obeon zebvtf^0I?nWYDSVA1y{I@wINYv?%|of@Ct_{^u0OOk3>UhOF_gsrCiowFs>w``0*W zvq~Beu=xC_r%^-BLcIdX!g7{9$4btEoZv4ol$ynp;KeMal3N-)T(*qh17hc>xRQjx zQSBi`4FXDqOh9;3;_@w7cL+4oyviHH>$Ssvu30k-krrM!Fl3+6eqY8H)SKvKm&tQ0 z@e(@9ZjJr=r#^8c?6)d z4#_dI4)x?AnEy*B`&b%}aIZAFzF_E~l2+Joa8{02n@DeHGpNzk+v(GL%GT}@ZTMpE zQnrSylrTQ^EI1mNA)#tNQ~cC5gJ%Tw&y^(Mt1ruTz3^Yp*?TW-;t$I#_mjwMJ{YXw zyi(j+fB3U6J>&Wh+Klbb9(7zVTT)S!!(`qwN`VJN4rso_B<2sDxvjmQ1xANwr5(_x4kJNp_~@TQeA@ z?T6Lc0Yal3g({NE?rSF#o=W}FJ(>2b#IF@BjAyk>kV(TyNLA9n>VStY z2Ki$XiljM%uio}+ZSP@>D8!RFr*saO#1FotAb)^Fy`>&S`IR}KV!Z0<>gZ2!4~_}* zEZDf)zF_*oyRU2I7v+CoNpn8wua$&5%^&+7B~^*r{pSxiO5EX-J~~*!$GxSEyZq-* zHcA}!NuL=k(W=_G(|`U_qr@Sf^z~*54FDx3|H*{Jy4O;U!uJ#@QW<(o?p@f7X^X zMZ^sC%|`5}v8FdV9X%`FE*uVY%Josrbv(+W(J6n?v-unJY)zh)+#HP-r6LrhH0SOP zPpP~GN+kh=&{b8U)Z2|x`7275Cl}U?1t`_y28seLTr7)+3GTH;s+E?P=K$ZjpiQu+ zXeF_!`&9iD-P825p%5&Tp49E;Ai@G$F0VY$9EWlQYTsQ1*Ld{G5+U z#@L$+GAu!7CTDjiAvs|Z5*OppRg;@bxBMTSj6o-R_X5!v` z4eL1Q=baJ;Vxn2+bIklu4?xrgGqiuNUJ| zXf-E~TWmPCB4~ykf__#ACBJrLpx!lgy{z&F>TRLpzC_SnD%|m)?^h*-U+unx7LCS2 zcjz9cSN>0xvkZNB;)M~AkP~1?N57^PQlcy7FOdqw=`?@@bWG0&o3!0cj9fn0_ z8xR)76fh)`I`7^JI;|@^I&7jG-UJ)FA63cZCRwapxFFa6#*};Qsw=lwrd;Ok@hzoE z+@}^95*Sxj6Sqva?U_m9j{E7B`_1t}mkHqNHbr_9%Hgj^0w@Vl6=Ofee{kXr*KN)!WD3(R*WG|lc~v7~e6Z41nD&Ycuv57)u^==WW(sfldgk<=GIMT+alb2JFs@)J{_oF){oE64slYeT8n{m?H7l-;+GGWH8?6_?~ zH}~8_ifB)^*W2%j+y_ahtg!4P){*Kdy-YMWl}x)tr_eCc+@tM4kp#;QjL6cFcsj&Y zZ92WtlII;ex~6K`Q8iP(5x%b4lHb3wY>SpPHwuHv;K(I) z(e3)-h(OxXSXY95EYxK+!2p5S0s=hCVkuo~6{s23__jnB_^}B191U}TvV!u;su4X2 zbAUJp?f*KHqvq;0zZqz2rRyzIoF4NL-)2)V`?sle53R zIy#H~C9+ehJ`7~^6;8u#)4})I(l_+u0vLLhasFwTh!wPQgU%SohYUD1uQzl0+Y z4p$Op=C-T8lKAu}{HyanysnY|;dP`}SuDLOT<5?4 zpwb1hx@}e+Rf8kbS$2ahfD|{2oiXD+?#mXP*(OS`H+~TdXyQQ@5zT$0&lVWA|I}wN z76JH-^l-|K6$Q^okHA#Sl4s@!&s01|c|+hRTyJ9D3F2ljPVTIw(zEqvZT_mU?4~#} z@CKmEJi7qM{hV+aSX#|RiXS%42;2z6aIA3WH{G?6vDAcDX!#@+PG)9z;PtI74EIDi zRgRp8tDG*DSun~Dw39{KY`MlRe<~`{#^U*4p!OCed>9A*`exD8ks`mzqC-Y71|8mo zW|I83j#`TA6c0;_%9C3bu;s;) z8&zChmFK6xca0y`&ia|^E=D4lu;({UK~C%% zks+AhN^o{X9p_U6+D76ODc&I

UHEWrKu+3U-oB?;-5nc*gT^mo*NnU_?kR(+PK- z6N>rLA}$uggNjA|RhE;H7ut1dLeic`Qf*jhEkt{8G=J(-O0dLZF_hgO*YON(S3Lh$ z?w?nrosnL;q!_95ACYiM`V=hcK178C(iW!g`UygqG8GO`q-4xpADf_liT z!jbzCz6H7uLQ<8WMfeCMP!~guv%ibc1#0*Qojjj22MOj3;&As-p;`gv*6@8=4$|;$ ztp?RFU6E2lr^-Z&MY;tGC=!cfV2^RXm!V^#Nj-LxRCW^;_S@r;>SWF#TqKosRQys$ ztO`2B5b~WXHT6mMQmhr`MHGx$k-M?t(eM3wr~BKLl?GS-4+{hu!T>*wA3|88HGUkS2BZtsGhZ_sCP`vf1C$o|Pp z6W65OE9z&=G}W`2Y2rbeiyJhzA8!cUUDB(FL>F#I*6Q8G$B-pV>}{Y(DqZ?8G?z0X|Nc-%Zmo0XkDiZ*l3*!y&uw?Xv*z-63Vz(2wj3}L%1 zQ&^Hm`BnHAwy!`~#1~F-5*^D)4c}Q+CE3D{HudT+uxd6bw0p=8(j1P!s!yw~PFHJ6 zyeG7#l&P;Sl;dYO!VU%2+Pb?+>yW0kF%64g9ZqeTy|yU6~@I$Awj%|nA^H`F9M z?fbC`aJ!mI=6qJ70jOZ1jhJJ0!izRI?0cb9ISeXx)DWqvL2~E&e$&FQx~W18R5}e? z+FEDwq}2n6re!9udo2JH@G2;vYt;QlL%_+|3SHMxUnci|*GP>;~8R2I_^at@E9OewC#DjFM-_B7ouc%3O zVxLoJe1VbkBM!w6_~HJSOg)VL^6p3i&ACHA7?GB2dmQT;oSI;)lCv}eRmNxQ)v_JtG@lr zeU_W|AX{WxiikUgt2GS$!^|t@@+&#}YV?dp+d_Gw-&LNIsA9&WdrPdADI}=T6X##X zqOal)qU;s*WH5hl7)@DG_K(hP#;xSCF!QpqMec9S{3j#0alK9cXQS|2?r#eCq(|ah zo|CMn!g948|&mQ_gbcA zdn|+vRn6iiVCzG8nl*6UgW(wP?1K-D2NP(7=G`k4l* zXKNrIY#^W4K(D)4fuk1}G_+Wo0u|(oX%cFJSi_sy=}+((>@pI+Sk%2-vmB%fhgCSJ zUxQ3D%4o7~F1atLRo{Ldg92pvpD$v4!I1Q@*o+Jn_tE7*V`e92d1>Mez0&qCVy7)9 z(_`~#+n+G&vrtA6%QP6c?4wvqSe%w%)Ks#y9Jli(N8fI z-0g;cW|0?wJydik<8o;f^0P4=pv6a(0K>h3+v4$Br|6@s!cV>)h z3odppy>JrWv~7TxalIQ8@;Y<`OeyaBgk}=tZIiuBczNz5`M=Lk21u3^C->k##$D0D zFV?*%8`t2CiLVNM2de}K5ySZ?+f*5V{%`=fb@wiTrQ+y9?o zwo_g)Oalz$=asb}-s+V!h14}+oZzDB^K6hGjpat}ZUwe-J!A~XYMepgL!W;3wwJ%N zhwDi>CbB?7WO-!jbEWFn&KSqmu|2V94^uEUyL->ORKwQUlJkRG3FTrjWmx|DsnVxL z)ykuZmCBmxxH}nxU26n*?%zZBm@$OCy1Jy$(^g}DSIYfUbUdif_&vYx*&;7-f6JUs zTb&$cR}BP(*@`ZMx7(C1J;Z=5oJ$bmwqr6;afuRLV}(VEGxyixBE~O}N0@B|V(7#N z07Y@~tJGViMTS*sqcK%avjz~L!#OC_DC-4_d=Ka`9+aw59Ho)yAfFv$>*uA&l?8Gg zo>VN~jZx+*ko|Z?Ool-TAM|p-jE;eNvDtiI#dB<4$80R*s~8(|M|1@C5t+L^yQ{ei zMYC?rIay0&ob#3s_3-NG4DANdQX(?s;Hp)wkR%zJiqbBcWS44^gLbr{)z6~@78Z`3 z&6oudPA^&z5&dPT78_dpWVRq0szsyH#%)0ao3sUy1qsqhizc;)YCJK~f{0<+f+%LZ za=R3M5rKxMt(tXqP%o7~1!07QrnQ2Jfyu~~fg10IY~?m?!|o57O=bb4kziD`tWP#X~rNx#=K0M+sodDWvtSJkFCpJ)51GrX+>Le)fa&i9JQd^7;_@-er^FHA6^L( ztPfw3vBySt#e{fedzwyO+~_0@-Gu*cBoJMSXhW5H8%5@M)UMd$%*&_u)Gf_+E8h*W zu^A53Fj5lsWPayPD<-X(S-?)$?d9Ux;#3YHGZiami>LHv*()W?Qn@@o829Fv7htvN zPS**3;ZZ}=xtw4~uW6MwjOl^*#M1JQ24+g%dcTEy5V=)jUXI2XaDpl_sT znR%Xd z)jnNV@Cv*xr0<9o-}g2U5I8lRZGcE@2T`=xk%o;53%Cp=aFQa&(4|G{OA;f?Fd`II zur6jGumer9=L3il@8xCy1bzyWvu(?z-30jHG!8Za9DcTT$NkJG5Rpv|5P9I}x+W;5mg$et_^nrNl!PbCgzG1kIOhGy?%h~pVpOeKVS-Q(YL*!^# zXo$-!>ju^wS!jlJ;@3!FYnRQeim}6&O}S}Hes~!Yz>U>LRR>ujMjzx$$X_i4Lq3gK zA_TL7R_IJZvmUL>Ic3D&&@a{}ToVktNLaJLxX13|1$(A9_-6OozLr++$Nc86z$qtZ zcxiAzw(yWDb z#k8oM5xZ?e-C?jdx3K2e>69Z_b5byeC|!4H&(Uqi6Jh4g(KD0iSEFcd?)tSriCr-c zkB#e>!(;Hk=U{TvzlX5@;_+=U1LyP$Y26W1*>#^2Z09f`{ys(`V5d`ZAH3E4zf-Ns z_mW$`J>~wyXOvrK@_rxVMXEl~KDl>>Tr=T!hjQO%xpm0y_jPu|uD+mtT?-v{yL}@4 zkD~nRI^D+3h>pvp?vtNqZ)5|Nyyx?365AG)pjK(l@X0RPKBQ%eVWG>+7dlfQP9xS0 z0L0lDKXBmC9OgBhm(!+~5&hHgnHPFz8W*+0ZRBo-$0wX;k#ss`baz?HEF6Eo zIjUM404|#o_RW;X7M;n%*_#P-9T#Fwu#MbXJ3=ASWTj>d>Bm!)y(jVwcQErQ>lgDHaErPe!1fNDoJ)X@b=L~>%O+PG0az(05NuSWCl za>Uy$*PX9Wr#7O!dHloeq~jUtPU5<^jiLVN3&%6mnI=OuMgl`!RJ5B6bp{+!47p?S zg<|=tlQG6n+wNFkk?lT1Jwh%q91h^vFYMSeR4#o8EV3OKsu<$j^{~~skau7B)!`gt zt8K^0T3CcmAL!m5W27xo%QMW2tRfiQ#$UV)U5& zJewC!wc9U@sg8@e<2 z>fD5J`F@v-%fp#h(IdDpbZcB*=kVzeOq&k1JRUV!JldXEJTU{r;_+ng7nQ*26-Xd* zuZP9kRV9JN+i)X69v0u8&*GcxJqs+p?RM(^wQTny&Omj-NySk^TY20XVZkmjF(7%w z?D(@{H*w|`-&os{WsR%%!!Od>jTzM+B2Jw+qtqZMNLZr=s69vtd&1L)pq$}gsLs)Z z$X1G909j+m47!wTRon(S&3wX;Bl+sk_-1+{{;cIMoh}zEK@qBv-&i5!PrUC-C~*-d zJ|J?n!r7I=dGkIoQ7I`@(321WVj~XI(ePsXGGAU2g zKuNGBR1HP-Q`L&vFPu`%iW^SNM5y}D)-2$(Rr7?CShKAV!9s_={&Rg+piu>N5~3m} z?bI>d7A(pYgK%BZfNNK-VusQu^7oSa8Qlco2WuMeQL|&mYVPF0OeZ&*D-gdhw(AyI zyGAT0m=kP#wkH~uCvs*B?XDM$6Un^L)A+zSScY>6M2V&jRE zlVy!KeaIpuoD2>|0axQ~g;kosYx-ln`PD7=wByI99Zc-9YSfR>x*EnvPp66{evJLL z=8tts+>fI&>eOPtBA7qkH8x&fg_lPfHH$F8YK{1(mmS}G6)d%q9g6&H5paghP=M-- zvs=UoiXHgb@E_s}hwE+VUJ+o6*&zT1+bx|-J%ZFBX{RN1V|RmpNLU(um{qEjYg-*g zUcvXX?;d?jYo{05*(EzX`iHn)G~1Mr^lbw2(59RF#r&7U4d93z;QXb>QX7iQC+<3W z{C?W9&d4htM*@=Uq3&pYABY}jBXkE(XEdTcBZRy+3&pY2-*m-()#r~_s8MJavQV^| z3iS~bc`4F|^oxb!u$JMnP;i@KDn$&PzOPWvkxRPWf$+Oexn-efxqX&R{wu&Rnm?_jPcO+3?2aFXG zzot?To0USc3oVDAg{%}dMs8n|mEtfBXpo1rs`hq@JM`!c6?1y@YBd*FsacsSZc!?> zihb&m6l(xtT|$#at(3K52$dj+r(mssB4=9kNg7$ha>6V6ms(-X<-5c=e(O?C%@8CM zRhm=&>Ya9mIQ!r461pp0qAS~#ijj7v-=!JrlA=D-9sXmZ;GE=9E&WlZSxOP6?i?Kh z<}~3s2}>;1`ePf6Ev`yx`<7DC+KY6CM@ktO*dPkBY3%3?vxKJZO~Lqhil;OC!J_Js%x+hWs<( zw>F#EwQL}fP*^v{&RgGEBIr2tE8c7dI{IbQ`wa*SSj&Wf)Ky!{o(vua`&fl{G80$! zF-^v;)>hv>W;myn)937it(;DTaW>I9d1Ur6n`RD`YC&lD=Dudt^zCDYK-J=@HGlCW z_r>N+TU;P)&Z$;UvN=P3{=6(ly_kJCp3!g@J(HWe%#x+8PpuGSR(LeN46`UU3U(Z_ z>tlcH2i}hLKACn$zT!DMT0BfWVht^RsJlJQrXo^b9p!2VyDv`7FjD|?_)%G9bn5M2 z9!-Us6wcqsn%X@Y-rco7(TA*RK<+OXTC1wf@{_QXU`$J?(d;0^lo2-TRMa=pcu3}# z-iSGtR<+0oq-S^FJ0tzex6Hn7!kiAwfI^{_gfT_#W_t9=R*5+Z)J?Q@OQtm}S${bQ zj9PXu5g18X3nRo8mZ$T1V#|Z4X=0nLvZveS2v#`BQD69V$gWrm>;LXr&z;0Vg(e8J zda?UO7Mo;b-DR!3@3A!hr`DtvlI;sJHtcMp5t}-qcrHSe8En^U*PsxTr?FF6()mS7 z^K^uBI4s`bIocj#7obqcwN>sRK*4{K%}h7lL&ho(`(pVQ5pUX(%eRmD%C=e_TBDh> zAtB^x{umenjG)^5OPQvTjkJhEj}^eFkB>}`FakwQ?lb0YMIz`eh*Hl73=kl=JpWty zj4g942W?o62Y&*nyvqf1%B&Yj_TgY+0~b@_BK`Q(BPnj0b3=04C;$6b3JIA79q}+O zCD(4=o>8{cVB!21FUsjHg53so_5;ami*bMY#2wdz0rBP{*yz;s|x+i43kLeizH7&DtXq; zaaTzvuiI){S}groTAKaa4BhCqyJtUKc5aoU4kA?Hp~l#fC2i!^5_g?BrD5B>{?^*R z;E)2*AY<#j5tCCk;q~4Kr6iP*glP~Oy}z0xp{HWv`>E?$G1ysSlf-v`rE_og!?()6 zeMTwrTN$?$HbQr(1}P+|^8!*%afd4lU!{;RQlI>*5&w_@l7@GxkH}g?7Q*QqLKX7M zHshRrxrJd*n0nkA!qc*8`tdAXELsi2Hj0pDnwt09){xm5%VBXVZ8=~Bt0lIKV&VY< zg?nlZXz$W55JtpRklbmaQ0Yvm-({Ln(*W*D|Fg9QA3lF@c)-&K-zEwIvkm+JsEsw8 zytEUfIhH15fg$<*B@d>lEj5&Y&MJzVg%7^qw`TwmClJ&N_GR<~!_^NkppCBz3Mer` zQ-gr^WGX1wMUJTyJ`ntML-DAXui_iVo-*l-;+EiYEihrbHxnytRQCXtOf4J&zYGL~ zSQi<)!`?8DE0NARh$VMNUp9 zsA|WnW9SJgobnZJ^c5C%9bo9L=C4_yxKijYOKL!-?O4rg03~1y78L{s5ZYwWrAG*z z(!=6HnjsP~&iV{5G=m2+tyt9xn*}7QRyZ<1?b@xPwoA)Y2X6)1QY z*r_%8>S(JQ(ngF>oo#FYp$+b^nO(U8@@+%^o8S5#a1M;!-@)!HNd=ul4$oJm%p(p8 z;R$=Oma{NvKJcf{k61S-4_`XA02%nw$v%@-F&cZ&mNso#tD{1@QsV#U$Xc_oa+3*F zn;kr0``IN;0!{%3!a#2U)UeQ7%um(_x|Y<;@!XarF1Zyd8w$pilGWgk;iYz0@(WK* zro%$rES~PpAE!?4el6Kx;)g_M=v+?h$6bS1>K??1|9IuEPynA zHJPrXH{TKMmC(CQ{LtBr{LuFe{J=!n$WV{PH@;{c1DOd$Y_SBf|H_p7J9R%1;Lo3Yz(@DV(e|J;e_lDfppx+T@^jw!0yn ziu_Uq41!vI{RL=XQIZpwG3*=g$fdzNEM&q(c?327i22XIlA@(RX;I*{#(CxR0ATc| zh1I0GjSio2&;w+GaeyXzngW@~ZCOKp_WyP586N}p=BY!r?03j;!uCqqQ&@JZc@Sai zHWsM&i`vw!;xiMeLEUBt-c7l}-SHJ|D3ooB_~{i>Qh}x=1O%7IJ<$QhLWdej973|A zMS*yXXBqLZTg`OUd6DEe;seFdS-?VnGUtpqMZIe7!|#JIGu;z>a9PXSPy?s zw(na8vM~Q=#l-z>C(P06=&~|#=Xkeh<_!?JZ~0Ttz^d&gF0-h(+O$s$bmq-KNgPI) zmrKhLEtp4EN57>Rhd1~DyP$wY9f5-|0CbXcnldoST(>h^st`nYI?pdPs#LfVq)W^z z?Ke`0x6MCg{)>Og{F|P1{(>zF;6EH--U9wD|IE;UB@X6dI{6JamTHFq<;#W|<-f%& zx3?5yY%z|zsY`LOmJg>rj4)aIT3f*3IZprHUF?0{5^_P!TUp`iyKIGQ!^bQb7 z2=ovKs^{R`VWOn-jF=yYeLX0>8|HHc-|47_wjs8ES@$|)bwcoLYC-$|NHh}1RH4Gkt5+*9XT4F)e#nVz9Xph zh#swX-64AOzR=Q>?~PcMHMf^)?+8uwc%IW@O^aZWc+|~kqDX;O%gDyy zJVh!x2@pV~)ZPPTsdqjkoRDdSSk!W$3m@lVKK_G!oC8XHWI0%UoYBXB^(FmB;}O2v zX};a?uxdpqx2S&uOh1F^XU6oU#MYqO8TgVgW=D7y)13*=!WcCu{d$+CnHzBoeY|A@ zS~SQgJ%5wVo(r=qHDu5n%}`0jYIpElvEZFNSFBlbU>^=JCb5f%!F=RlX*mCfi}Qb< zfV{2C&8{`OEF`y~5Vl0!RI8!uZ8i(Atog3xubr%Sd6C)8FMqR=-Ewd480pfo97!Ys zRsk-syg)fL>3nZ$zGR|9Cgm5^( z)<@_})s{NlHJ@Aqavs)x?h`hbte{_DVdgjkrS-98)c~0f0qNVyWz((gB%E@=7I&zn z)eVMuvJrE~+m%^cuFB4hAS$JqtsdRTFmja^7n5NO(i(Qs4hI;rF84$7BSsG@HsS6MVdIEUu<0aV&?N2vnB2WZO@e{t?x3P ze@q*)bW0Ib=-e}+HGulxBRPDvxJF*lAkDtoF*?z@L;Cw}laJLKDu(_M?Vy(_)`bRQ zKIpa*#(awrs$L4?iXDu!M^nN-Y6uJfYilp2qaX2RQ#vZo=Z1|C7H0Oi9pQIIxxJAU zdl$L2?5I7_w^Ec_*NU+o6>s8Y1l?p*FBenHTUN!M*r25tAz-BmW1;qBgYrSzuSWdS z&Klf>P72~?mlKV!hoIdKV6GhogYznWnB{`9hd#?Z$mbh0X&4n}{J*1k;cL3svW%E! zCg-y>SQ!^FCW5|xGgL_BJ-m@g;FQC$MqG}rV7wC!l-kull}loQ6ia+Xgyn0CC6S>< z;=f8)DUu5(Gn^M?(9N?vXHZCOIp(vIhGSz3#4AC80 zU2^2t#TY*VLPM}BVyYx2;W9FQryaOw&Oh~XM#7TQoEn@N_0$fHB(_HYLIg13YCHv!V161%LGHQC}A_{u}#{6fJHlC$9g`Bzxv z*kmkYGs%udQfh^Jz4@_d--5f`tJyOZ%}CfRBjFmL6d(?&B;$ z0Zx9dM#p9)l`VPMVnY%<$R;f} zsjQr(Kr_bhd`Y&trmI+HCzU0aMOdYj`}A0)+G5LCpTPRlF^DdKu{*`2Ha>Ud_%%BK@352nB7#eGrFqQ1EGu!R1^Kc4!B4 z9XiC!2}+uPzGXd-LW$}~hv+O&ifBXK0cMORQv05x8QG9WsmiG@ez2-r6f`(kPiEAo z!BT?3HtJT_j;~v(%30T)&1#=HkTOz*uZ{la*K%aTK5o!jyZRWm2KWf~@raKFR3*U` zPZ_F&dGI-H^1yAOaCL$%q+Oy)^RwdjX*Z4HF&4hb{6~n6{D+dEt^5-!vyB+|tZ^A| zp;#fN%xBaHF$wEzax6rqA%}7qw7?Z*Y=NR4Yrq5q68!B^w#z(cd!OfQTjW~TvA|^z zhS;hh8jRW;@HH?&jjB}_rG+a9BU3k-pl#a8gM$8tomZAzQWGwEepe;&o(6u#y3*_& z!`R>QpLE=HMtfAN%T7689})x!)z%U~!q?~P+6?!=VYxH7fBX)f0Oo=so*udH$o1Z< z4(@Y&BX%E*H+EmtGse3_yw;aBxX;1h$l`Y5AweG?HliC-vGxy=X`7NVS{>aKqY?w+ z1NJK{J&MpE;bzKfED(59_o}Md+)!??k@?7l)pH7bfV~jj&jt|e0vszyl}V^Fal7b~ zhd%k`^5#A!Hw5A?rz>K~$hG`TQIR9XU?n{4v|J}c&`PvE#=h7qAG zIyQ^uyiHrGFP#oG;`8YzyrealU8s#gS2NdTesSjXo44>T6G|Al=$c6~hD)W#F;5$? z=t0#E3Hi5_%ybbESHc#fH^s%s7Pgrx=klr_70|6Igl3~Du#2XSV~NK%h2N@3l!!41 z$tm5j$XNxv;pd52YYG$+2C83CGF`O6Nx~9p$sn#^Q=+KYM-`ybf1wi$fp2(lGao?I z4^2cDs7K0=f20pSuhE6^k}yeBBRn^UTIsDSK))@~v(Gf3qx{Ro*n?BdGwoh;yX#Jz zw2W2Mp4Rj6mO8%25E~JApR)+BD`8Qz5I^Ea}!{pEja zA;lb840?=`O!7@heu#U5?n+Qv=JPF&SC(DU(HE#0(lO5$f{l>qZr2db!Bjf_0R^FNJKmSmD9z{TFuo_}hkfXDyx zhq#i&mJKMl|3qp>Lc$8jV_f`HmMqYfR=n7O&;qrP8pz4?6ZCUZS}hig^LRTg#e(19 z@M--A?4V@Xx4BhKYeYQD*kgAdV)^$cy2)UHz{50bjp=4K=Zm;4-jTn$ZCC>PsX)Nc zKR#5lxeE6b2k=;}34)>{7Au}NqO(-IQD`M3KOuJ<;EhtG;hKu$0m;_7eZ>@QoplR6 zty=IT#Fn|Sjap08cvy33L}0U6%*|$8R1hC=(fRo`S`8;Km0Q3KwO=u@ung8BMdkwo zgIGy|z8ioGJ>!M{_6Gu8950B|X@h4CW<_U`JA+`aehMZ1=DSPX-#ma-0{XJAqz=x) zEFW!^?N`8WUSI|6ee|;fE$~27Zs_kGIy`3Dru%;N0A_go({}@=A9R;nHnoKzAjSS}Bi5pxvWsz3@9fvZBFaA+}fQ7f!MY z$>=AJ7-~)cvZb)#rv2DjfArnPq;L)rk-pKf>uh+p#NCLQlbS4xfokE*c0o>6L^ZT; zJQL#5$gK)no=^oM2M94wL)KnUo3HU|^RFvzM)XTDQ82u9H*t?Yo?hmm%K8r|Sj+Tg z#ia<-)sY3Y206})i11QzG&}9C+X5q*d4sDH;~2VezU--g`W}NOnrQSRT1TD|Ue%tQFnM>XmKjJI2YR zv#5Z)g|STzu6a43t0e$!e%xV@mcXIFpRsO!_y`Cn(KV@7w9dl?$*$;%S4Y3cI7J38kaDCN zoNlK`VmiwtPbJ#^VHaQ#0Mc6-$y=M6MVi+)s}JHMc58z$bfYkcfRr75(H7A8!!U7*LZKxZFx%gJ@%`HCM4l zie;Y!HC9@qqC`PCYOGPBjTj|L#G^)wm1|?g8ee(7zcJ=od+#KKcy0fyqKxueqn?u-nQxPHoocaaBPDa~; z8_SO@%+Vk1k$JUsOUyljw!OebDyb|{i8830AKBX*Y?qt#fyn z*FA6wl92dAm65ThK*~9os;CgpJI16uAPlC)aO{591PESxFv4^>}c#M`r9RidCOb9pl4R7C%kE!IQn+JQhR? z*E3U_+Q~uW+eS{#5%iwb|ZpxKsQ}u~WMB~Lvz_s(@ z6^11}^xfxR$J&xh&Waw(up<(gNl@sF678LBfXDZZxhj&izJR5bJgT9bz;}?=3LZIJ zZ;v3YV;q6cjY%MxN{q(?OoGWgC33^jZIztgEVa^Hu9UaJ_h3kMoNI|qe0N1dynXhsLDG4?56nTK5C`6pMoyi(OP`S)}uMvnBg_% zD`{pe#`;xW3pWtrCc8ovde4?tJ=3i6o@qvU&vG!IvUQVvOt`n-A{@l6?pAlhS(sp{eJmEoxisvc)@cq66Xuwc!wEgG_srVPC6d^Kw=uxUSF|fu!SxK)%Vk>! zSx9z=H$v0wDuo*#EVV>3#8T6eA(qNrhH#BNGDN!368&*6iK_e71&0`Ia{x?9^9l?= z0>=E;fw2vY<_l~)>IQ4BakJYg7J3R;fw}?=Uw#%Qr=?3#^Z1#TBBaq;!4HQFV4ryy z8Fmh;@ht8_6GNwhTn*tu4xG^)172tm5^bz!F%D{}>`N>&U$QXPhP6B!__S{&-2m*9i5}%p80Q6XyDrYq)5P`FaQ{4K`5VO1?qU>K|tt7&mTJaHkQwwi2 z*FOHwX|aV?vp*m-_0SVog5w@MMeVZsedwW)?3<|y4L*6HZ&Qe}b4UPrjU!-SgNi&E z@M=FSwGk!)`vn#mEl$z!D9^HAgm3tkA&m2wLJk6lvDF5L3m$!L=+!_>C$nC6ztYuH z338;y|Eicy_baB!BP+HnD(1JWxbOJu-AJgb``8;l)i4pJRDL)rp@zLS1mc z+7xm?S^h<;QR$C8E=#in70fcTQi-k(5^JfvTcyj9c#+XFb2hARkQR(v(>jQ zL!tD~FZLTmL|jrqO#ve<*g>*(R;H8HF1n)9%B_eT%(QF4VD?4Cr@xk4Tp|>Kgp#vd zAivN^g>+K*FY77WhgVs!oGxw+P5R!H!H_koj1coR1TwJ@7sle7HD~%O8&)$pJ&3dW zG;nr07;RnQ>iL-=0+fxC4VFU7)LDp6&10BTG_8{vm~peRj-DPhFbzC_mkoXZbyhnf z-;*qC-i$gw-;!ms=GJM}8}39yH_^+?RD@9syAFk}F*IQ`No!5Rt3bh%oSNA_mbWC) zu;eY-%;(7@&@yui_@|#)b&01hh5aK!b}tn){(&vVMWbU@;}})>OH~?P*7`3`_m|c% zP1%ZSAt652%eftlPbZzCd-eLfvB3(4M~ZiH0>5T2q*bvQsYLV|Up?JVOrDuGR#8f3 zS9`_=z1r#+j2yFCU<(7N;yOiX52RN5HzX(^!F+Hx7{qX`bzOQb>W!C%=__s<{^tfY-55&~8-I}McWj;+_ zUM$>LEW8Yk#`0iF%#PLMZP>c}{v#^6SYJH{e=kukyGBQTsKRhT`y8>rjk&jlkB=(s z^}?yJve$LWb($Z>8I@TFUGY-4S!a2S8%6@z({#Yf|FQ1%273AUOrG4<%l;nG1`?(c zktN+JG4XsE?EpLA0^Q_d;bJVG?8zYGsJOsaWI!UbIST>Mfk8JBBD^O%+mkblprJ^> ziziSQi)oN8d>{tdBC}lso$slE-+bhmq{Kpfz^q#{G~6Bw9XV87l$U8@h3ZsaKK5R! z!PrvOj^t4T0tQAm3}Z435qyw=)7L}Ah6)MkIo4XlQGii)&S4lUJRc8KkSI`PCHG+@ z$R>E{k0kR?V;UA}8dV#!ojt6lkXEm1g~0=2WW=dVmIz+^L0@xxv5rn_r+jBa*bC1wm|W6fSH&oGu@anv<(mz+IrNP>Lh=xK>-DyV%Y` zeCIrObUq_`yq^h3>l>s(NS` zC9JAG=bjXpXbWYZSuQB4L2Oc$k0ElR96~ds^jjb`YoSV{{~!+DQg1`&lB__53TJwk z0A>k1&SXqwv$A1Fel-ywdbbxX4WpB#50X9@(hrg*TpJZWA-*mte#Ks|*b>Qj{f4vo zZT)qc>Ox@ityh3>Z8)*K*6P?;6Z9f`iyt*UJ(70)tw>Ax8uyaP49t7kG2-lwd4rl! z$;R$vLr&uOSjEs}28(IFmHSY>9{{7HlXi3iT-fOiL4!D+rYuN8(Znq9UHMmnDDYxg z`)p|~li3Q2@!fJ>VFD4OjAVOAi#xxIdMl&1^ZC;1C0s^RhAm)_>wM_;g`U9=(hZ7KbT(v>LKXV z$aJpps*GF9wi0tGxm{a?Id9k&48y@z7jM$rwb_L|K4?;V@9aq4GVh)dML&DSTeG`b zB%bt)>u;|vQ`**sHT3v2Pad(1*m3g0MYk`1qW$}kLOel7z6S}M+K!8g52%Y4p6%10 zws1dD@fs5Wbez+Lh=rF&?j9xkZdAN&9;*P*QS{2h?PX$LnfPIuc%z-2&=fU7)A!e7 zm$UD0_jge-8w&X%=P?nU2=WpUr7%+=QD*82b|Z4FM^B0rtc!fTw)IWxN!7Z_EznHK zaS>86j)~VSHODw_^Z27b0y;j5jW>7%Gl%HBs%UH&NEKh7VzdsZw;e?O$^Xa=SViw( z3YYT-x{GyZ`*%~hm9%~yV=a%bOgd!$_&Y-`%Od`W7eS{eZZaqCdf>D+g-~)XnXK31 zT4Et=i*LdlSUeU#r=||6ary34HTkSYr>FTH@SOlM?@*INNw``L8I zy5t4EYy5}vl~%wIV+G&@DiCM0xQqpguJ-goGmH@0Jj$bPj=rGPdX*!QlUR<#Pk%BH z+rBdK^D=SEr|eZ+{KYPCyZ{KVQ$lt9@KX#tqXGfN#a}B|DA=roXv<#PJDuKY?TX>} z73~)BR4m+6j+mMUQ^@#f#kFAXA}r^d_6j$(5^`L=%YT?eZIH}rGg*-ySNBykb} zQ^iO7Z)VFk#`vts(A1~PLLgt%6cwNQ4s#Z2(g2ojG$*rWG4TQNkRI&B;mzs8<-Ye! zs&5#F76;B&787eZT?s|7u>-@RLc4>dc+WTRmgC4+9ZLx@QHq;Lr$Qzt#u%;alcRE~ z2lm^%HgvUOmgGa6Yk@ZdQg-(OEvSAbFB6TkcDY}L3W_pT+~N^2qT=SenSI4QRtLmL z&3M6(S@f&~Ibz}J>^A|3L8vIGN^r%m881a`#-|Ld?|GFzQ));W*7Tn=QCTnUW^E5= zEA|*o*NPufmK#+WbByGQr}dy^VEieaOORW|Pn2mlws>!tt>7IJTg2YVMoB<}^JhbF z?p+qH6}WyG7uOpD*VpJ4@r&a`5Y@Xd3xP>}5 zLy@?6@IIcim)eT5T$CT;)aAlT+PI2}zL*&;&z&Uv8}WY>l>a{DWV-bDQrc>$NTvZZjo=0HOgOo&R+?~G4+~z z9Vis(Q}Lg)id{CL_NiF0gAUDFhr}-kX-3_1dc&9O&nhyGl%GfeYAjK*eY3ckAc=|x zti?fn4Zmm46BJV7Y`$wG1x5m+M^Dkz|8k?a|L*ap|IOWBzu~%{y!M|ygU$o@`I5kh zik~~`)qF2xUH46+TxH!HvfkX!+HP5K@%Db!Eg`Gd&)N~P-qp{#HDuk=&)ONXKG4rP z9J21{XB`MxpX_JNg{-^!SqDSbzJAsNA?y41S%>6&4WAH;9DMV``_k-byup7rl)tZE z#V^ z1Jv=0kQJyySnYmUSWSun0=T)%>ce$i$ogJCYe&fX-~FsxL)K6FSvy14HQ%nr@s5!7 zm;J2SkoDGn)~=AXt)I0!WWB$iwI^iF_OteetS|Jlc7<+#wV$;)lo}xNO(APw8onW9 z&GkRLK4g8bpS2}q{ivUHW5^mHre4Szpqzan>sS2`_lK-Mcg0U5bRcB)Cm#%McJUx% zKQoc(o0EZPe*-5Br6?kAGQ#t^1TtpL9-dadrh2Z7>sQKdybwK%AGyo(BL_^@7;@5Z zcSbB(_H4JpX?;kB46dxxNy(Q1b&XWBb+DE+uCB{+eMo0RS%?sh39}JAT1P;a*fo)U z@o@Qo8w-UF5%ysh2HMkzkl~J>J7O%}Ja3Pu5b>v_y%;+k^@OdBxR_(N7|LX_0ba)qv!x;0QesYT~e?M zVrqKW7GXEVosaP_&7mwjOGRL8006A+Zezt1mZ(r!FjXatx+u)mZRj3SsAv0Pr~z`Z z0}QC)AxODsU&xh`8QDMV9LiYQqlFGZIG}tz=l$0+glW?vM26lxZ_Ma-T6r?@u?rN; zlUSr=oh)MovaSuW0_|HY9oY}K_%nPXqZD8BO@|I@hLnaTT4$=Vsl&tq*dooIt10Vt zjxT6^Zed|4zeR2v-R^b1nL&om_^{JS>29~FgMafcXC1|P5}h%~E-#W-*(npu6`K_- znS480uA9PTI>Wk+MyZ)!;-)!kv!6U&b<2r}fRtv(m;hVPgBc2yoI|=}E^L#XumrrxcUc88QTMN7t$^PiK9#fXm zH`FmR{CbkU43s{jvcy!D9()3eH$M(`4wwF$Ppa$HwZa#v|JsHS-iby{-GTm~XS?FM zu3mvifYlqz1Ou#@K}4{*{myJpYvdHjrwkxQm{-v&%5Y9CL;H0B+X@(rV5bXm9b-~{ov?jYHj$gV>7Uo0+wT)c% z*7keZ)C4K(jnxLV7FWNjEY49dLQRE!1579x0M_vigMs7kQPg6a=|I8(48PwOgLng3 z#>R?$w8~Q;a3ugnAO?YHZ&rAUHz3aPu~P%kQu0ZWzeGFhtFXlKvvR7bWj`Jwq}%K$ zvj{&e?XX2gDJzF?8L>=V`fS_oR?m?&4p*>*vI0pBRTbzmX<awe7KKPpy(Pusn9g zFkkVjYNhPFmRcfO(K&&Jm}f(ru#vrPaeFj-MPA?99`l*5;mcmE3~2*UDj$r| zuKY*X>LV5L?VOowUl-fFF9{ZOiMC;@(M+37L8h0taboi?Jq<2$m8_1~NfO%Q_F?5Ag)cU<@vZjo%I4Bf14x`U* zVwONr2@8GCOmkxN?v_DY}+B6)7-Z!V7lF zX@%d28Q;=JJdUk3e`6I6AE05bwmeEx<=c`+S2avUC?ib!}9um#I~LdG*{m}BXpmh z&F^jd@DUwQO*`0Fe#DMQvl9S3wXHfw5c47(2Xr zI+^S1_bil*<>yQr4sSxI{DFPq=?Z&!w>mbRJW#eXYAuZ7(8Ey;t9zlRs5>KNb?fiJ zqxAH$A%?mTdBUCHbY&}$N^o>+v<2{*dgVBeiWbOQ6RyPDNn z*T!fzzQxBd8~$V#minCpPBXWxOx#)Nwz{jh*G`6Al#>A$Wemx$6cwShhp!`raaTrO zWn4HVk=J@baPurMe~JNr`)=FfLQokYW`AEJ7ReV($SOx^Tj9q=43!_)Z(Aaa1gsS# zf+;z7Mux?>^#m7yu>_zCKi{@DVMgJVYl|`Y&q56b%+7k+!28p-uX-3Rr0hu*fWZ@% zEWVWg*JcIOD`L43Hre1NnYGdoOeKukov$@{_2=XWyr(-&71;=cEGBqmqdPDJ>GTuRE87 zDw^dbR|`AaOul>wC12ZAr=^_=SA*m@h`&d`US8I;;y117R9K4R5A)3P^Dz*HvmbqG z79;8te2rKEu#_UzL4HM&!K<^O#f^4^-)yM29bw|pQrMh?E&K>#)e#B`<5%Kw=BvcF z=?hkgj=0sS31EJ_j7>nKvHyn$z5#bv}0P1R#K7# z&8b8L;6o|-AU&f|Ob+biC#V?x{}`*}lF11a%OtJU8?Di?ktUr^(S)?FS>wwCQmfq- zLW-ru5=e^_%ZO=GtdQg)g+x$Nj%V_gBDsZR?n$}7$z(8%N+h3}cM^174A~X~xE-vO zrZ3J$7Gh4ye}YK$TzM0EK^Tx(C+wLuE&PXP*^!W3;JL9V`*3X>_hW+(=)2Mt9sDai z1^DYc1^8=71@KpTQsA%hq`+V8NrArt$mJuKnm@2QAdg*n^c+agwQ=CmpJw*DQP{Rp z3^BbB4@3jaE*u~2gEiX+YiCFT*N%_`uc0Klk3#s7k=o(Pq0P;V+Ow8mlFc5z6t}T3Q)946XnPvJa(=S*ybGo1D7{2~ z7G5~P5j`BCCuj7SZ_Dml;IgOtlFrrvXRYH%Ae0aBA$ggj0Ok|fU*dWQybj-!2B5NQ z(g4O<_6C*A%!D<`_k!Fi5_b$tu`#mX35f23~M3wpit1i2^%$m|7IWsHc~dO= zSTq%fWi=AiIk;FguC_Y8!Wlx{oFfLxcjgmbT+dRtUNqpb#hBLS@FI)=jW~(pIAQ@g zVLl%SUzXjmd{(sVE;JJk$ZZ7It(-{i0Ei02;X%&$0DR3>_9kq|;dLJA7D~Hm)MJII zBRdm$c)?GfJe5LTcGTJP;rbpvF^6uX&1Ab3qKJ%DkOl{oV=BKz%@9T)E+J6C>B5(h!;1AqQP9JCdISKc zN5Oq*JD+(lE~%aR*k&I`si|p)h9>sfvL6#Kz)48tRItg!|8YtIfYK;X7N$eoM163p z$dk?@cMUx{m2KH=I|505h-~GlC$|(n`c@i8^79JTU^p6RTli&2Rkan-7_N|^o@YQ2 z%Kc@k@09^t4hW4~SEJ^0#7Jfc8P&xi02ZqtA`}iG;cd^W&01$A7J7-5mFl{+U8D3; zhMys(+zQ}{xkv?^3Jp}v?30OyrQmTQ*_=H{6)PCR`YPHPafU9lB zM4lcA6Kr|m!fg76F%M|-uOS4a>` z?`eUA7N6(wkAx6QmbA z95~h58{41L8-k_mXIfh12K>WzQCp*G=`HM@1|l#rgMa`8+mo2Sjt>Mx$+zew zx8);80s)c&YfvErC9hp-7n~~8S=bBJbpt*Er-6Nz)Y?%Uy=akw>&$8<0X2lMTvVe3 zr)v;b0oSsF&jk95qIXtUx2-pN1k$aD8bN_5gPBB8KsTlZS=EiQ_L~$4Nzd9VsD+2|x>Q-t(UH7{UQjgZLRg^l;v6dDE&)LTe}&U)*L@)U3jolLTz<7ARn zygSmZp%dKa+ir#Q;6kR%^L6#n=TsSBpyQw`2c>PEvNcX)%$(#7!Okyn4ej?9exb4! zp?UHVYkucY^W(>8zRdIH$A_tMe1IwmQ$h1u@iO?Fp4%l(ntjcj1W@E-1LKJI@xc3b zLje1b190QrGDf7uf4QuUq)5?!ba)9WU}`p=o^Lw(wRv@V`?yjL)I8WShT)+%pop0& zXzc>Y;vU=&6Z12`Zxvty>pCNP4uc)g6Gc=znZnjEZ)U4WS!q6Irzfzco%tq3skB{|^oC2vzpTmJktH z;Ab)1u6R%RL65ZaA^jQ+^SeF949@SY+&uWj-NUrlUW}6KxKhv(cK-A6p7`q~Jxt~k z7JI6z2XNhM;~21o2i>{Dx|;#&>F(%=*Jy&LrE^KUxy|p4h6O1(3&&xqjQSjHHwS0w z=rN{Andj4Fba0aix&z9(M$!?@9D}q2I(`&P@_PIt1x+IDd-HVl1g|M#-7NR-| z6rm;dTK_9cYJ#D8 zF&WLsvb%vEQ@d)kym+M4Voq)|j9S+pC3U{F=oE1kvpO$u$_DQ0IL&%gF(J8Zz zy%}X4j@!^Nbb7zCG7;_MQ?&w)SglRWNKEc8kK1tVH|xEm^khDa`}3NdQ@%6In@P?| zPL=G6&7p~;;%o9^>9og}|KdGAy!#Jdv~pSCP~^%Mc0}$t6(Tz-zIWlGcIzT)pJdMT zPoI)IcF_inE%~ZXU+Gu7JuF04nmaDX*>kp9vC`*b+uGxt=^RJ!!z$P06CacLI{^pt zdKKkv6&}RcvizjMToAGvd|;#Rq3_-gI{}yp_L`rHVI~1w(jfH;rrcHN#&5=_m6d{^ z8~Ye5l*x~=6deDUHn~0~{U^1(PK>xLNXjH?sFp2%z)vEZjduQHPSeoC@LWaAIC zrp4cw0D(!qw5Um9AwbTNWkj)4V)IBgnbP(+d#m}J)IylHnnx7Lm}~8wZZ%tb%#E_W zQ!Q!j<+S!bYmLe9f7V)}KnU*Y0Tn9=w=H|w?6(TJm%Rkn#i!J2_EM|{3jU*2FVkri zNaSZV2<2yusPS>>I;{d9mtKKw;}EkkZ(zaEFBV^{FED4jq>>}$2q87mwVCt}aUA=C zgjEA7UpuL2?nR)KN%>S1C;#2a38jR*X*ovC8jd3^=(-?V{2lDBLx)#sl2@SG>qrx2 zmln5}*#s|maSdf%(1u@3Yu58<5t!_P;&M{mG7CpgO+y(w(-v!eg*yWT?eD)+D-ml= zE0JDkSrT}A*)*%p$2_};^LS%%W4HU7+WK>C!c-N{s3m<_wqzOhd0c|+0MjRMSvHcD zZD`$O-}AdYZEe&}&Q%qJ#QP2qN?kZaXN8+N(ud#z#)d&mlvpluSY zs$(eQaNK%sxp(t#UoRa_5qlsgYIBX3opn*9KF)0k6D(SaUs15b9Pz9Bl(UKXDwl{1 zD+be}^|lhzJBTbtC*+-my+G@68`N8m$kwu%9^7$6_8p1ocEwNc6=aSL4SJGoSxlfJ zt)jbbJkX34$oh?hr|fN%xI-Qn-eHynG}1afV)cqiA`N>&%#vaEka)m77+{RFDj1*zhvE1Dpj;XNbD;O( z0GKNQxVZ%2U51R(ZeVlKq#(>>smM*>m2WX*9x19&6_*~FXFYru4R9vpPcTbG#fR@@ zg}e*+*pe*h4yL1?cl;y$j{6A`Ar}F&OMp592NI@RS8$SqYheAgWN!9cOTyPTapei; z2rx4hpSU+g4%jh;8$;ITt1RKY;P?hir1%Q0U&L}QA&WyEWQEZ>y%Q3LIIbn5Yw^JM z**h{;sAWw?niOrDt)F{h3tXLaeDx5bLcsjc}Dm-?>-av&#&c9>+k(+$H9j zyw^c@3W>qTnJi>}qt&^9?EVd8Y{6m)nx`n~VYo4JD)>5XgJhd)Y^)D&l#pUG(|lkf z<)E(d_n`gd@I2{#tZJdD(3EP%rI1>3e0mV@!f9RQt`FOPI&5vR+%4LouJ7U|2?8#$ zDrKm65_ScgHVYs%h)RycPJc^01^G>T3hK*AY4p_xg1?xAV82OUz^XyXbaFsLW@q~~ z%yKYZ;TvtFI?|UJ6FG?3sAiWH^DY;q@!?BUrs{|_qZk*sB76f7wF@C z(0Qt%4E#DhkPo3eLCoF!VY@PStgc`iQ>W;PaYev>)BxDlkHrHSWk2X2F$`B1SkEo) z!6_TDKL}qiG5*4V_=_0i?>>~-f}=1fUGGn-&^MxNdM@76@S3~{=)w5gI)1a0@F}n2`)^O z7@{X^Feydf=f^C4hJq0M`J>YLXc?*5aZ?v;sT7e-jD>!?C^TS))lWS2Td;(KICCt^ zzNuztL>6MJyWsQ;Sgkl+NJJ4V?@@fl@h2f&t{`t_>@k}#wfOSU`sIy*i2X#qFH~KF z<5~0xI#BEiK9cgq6KUbN2vN2!O+RKT_$b!S!|2A z;Ov=wkzK@HnIMqG8$WU))km+wGDA|MAdKioqW9h}5&nV#hAJel#i$~947R>N3)Jau zd}2kGpS@u*`28L`HIRymAn8!DFP_J}Dt4!CCqdZz# z=87Fv#VUHMd0`dnSZr7;>{6Aj^wbKU6+5hz-aso_778OEPr=g=3g+;Mizdt#tQEwM z)8CUJ)p@Q4a<|#q(p`poeW!jKp6@8k^bKA+pw3-L8PAh+vc|w`6Fx;Fe6q!oRvP;? z>{qR{iPR>lP;yeq5@YTle^`BSulYks!A2+0uq};Js$7r(3~N42NuY* z=&=KI-KZ_~1<5ALz}u^O(3UMNqY;wb(yC{+UypW@AOx!iYlv#OpZ@5YHIj2A`^eG3 zhMf3quo-lwV3*oNtpQhEB}KF{OG?nSS!k8zz$wAwqAAn*{i^Iu0VH*Qi_#0wg^kEC z_mbBQ?}diVO8ZeRIji{K1ZNd!d<}W3-n>!*ie#iswFc)e)(!s3%={ONbL=x~+wqk50lqW4Y^QBHhut6nYvlcKTT&RclkY}M+cmxjGW%WGQRcIC14RTgI9 z?}az_3$vx>g|~R&@v`vzvT(Owc%&@6$qTb`u}OIK+CS2S)qH0U$WC#9i$DzW)*&fs zmC8g?q#$=5lA>D(FklNSI%zCD*U^2a(}ZDkEKpih0SDBFP8CTBt&WaapARYg7px21 zR9!o)Jfa9PG1^%^PX|r{M??!YXqgEOcA@7NpZ-d!y=R*i4cowD>fy=(8^9Pt4*%C( z2pU@y6Xr7FysjXdH8_eYMl|8qZmY+dv1IXV>cQoK=|+D~&J(c>5ixuN`#V3iHt@+S za2)=jT#o*juPJXeVJSSpxbrhkU-Jq6SWhwY>F5Q|P3xt6+u9>}CYK87_LKBG(tq+F zPxLa$=gD(UUUId(wFr5nQzES*d6uHrv$+Xt;DZtsDhhrWT{wQ74gi;SHpz4CVz|eC ze6DFiLIWkyAmy6mEJiTaG8d7XsGDSgTprxk+GHE^*5eR^>q33eJJPFcd`0RRH zSxaE=3>Yb~UWg%}_at&o#*yAo#a_1)g=s(%+6=WoexW#LBx0fuA}3!~NzV7*(62zT zq8OTyZ6Z0Bt2G@Wmqo5r09uelHaQtypO|&9$42|xIi}0yL~0!6!G~3U??{bAtWCY? z6AdpJd4;$$+-g9#1P-YY-K?~8#Z4h8&9s#Ac&am=-5`G(0|QzwYt(451hCpQTqxUt zNQTD?r&!qR{d!B1M&{x$Vuy^u&hb~Ogi}pGn9wDu>3#J6Za6n@$_-yC&M!cJ7`H(b z`}Bb^rCRdeJKsWhvo`May_C_pbuNpw?2T-o>K6fGzt;no0?E}1ObO#mFKke9H^ep~ zG4AcG#%M0E*a+n(F5dE0ba%$!0kj`6IbuLwmk^=K8MBi;k=R2u+K|{4eo>D2^in(V z;>Fz{M&_EK%-z&LCXr;FI7mZpdn(r`O>RM@r3hR_8VCQwUf!XWL=~2oy#aqa;u4&x z#kS{ci;W}2#e46OdlNyezPm0>63i38TgPk5Sp}CtBHlRTlcR>lhV%{umX3`+yf#?$y+bZR!PB zH6?)-?{2RjFu#0^+V4AV?Q;XQC&#QEyKNXsA4|i>&T<%xT_7R&^--{?>#mQSW-Qz8 z7c2WR8(C}NGj$0U$Gw%u>8xTzvv?r^G69pR`s}~V&M}8 zY@OVMAwe67>YUM9p9$s;e81AJMVYcYX;G^L7%MAP*6s7MFhK*1JB~r!Zz)?uqLkF_ zZM;!8x%)&p$V-X#z>oVhVKd#~Ye60PzC>_d8FZT1n*rcwH_T>Zf5uL)9MA^rkF(Nr9L{poCJw z+D;;A3i2DV*6 z_c%YP&$SN76IkCEC6+CGA%s76i)UiEZUO-?necUazJ_cbSy@>b#+CUVvjVtr`nf1=;A zKDpdb3-z%<8S29wAb=H7A7xb;@W|e(+7bSzg2~o9<1&y!*c3%At8TKyF3A!S^CE1C zwIhf8Bm0NbqyoU;n=_c9#T0QIW-xWtdxI}nS{2uRk_eff1P*rls82qgG_U3546C8q zPnn{az4;nx8icwdcvARli21=>U*l1PtDC_|pmC+@CNFBXW zy5TYPz=;5@bk8b{?pdZy_na8^)|wdb*1D}8D!@=+PK6-cTUrAQn?{q4ffX1WbK7|u zE4=HHa+561X3{B`La+~*(=Fb1m~Ao^|8e%_#d2V#CdzCm#FESe@6C)e@BY_fXaWN~ zOfgS4Fb8B8c6`7tk>wk-oY8CY`LWRI)5+;NsZs!M(KQi0VzrDAdeAOz@!B-kY}LZP zYOZKBm<-gipj_3SXQ#eMuEfnsujXN8P-=qH;pMXJ@bhwPEZiES^Th-0z}L*QP`1^g ztuf}%h@b70$%j5fSVZ04!-MP=P2AFjWLX``)5G2?u+ z!rf^j7`Ryvmgt>1KZrrQcT!HunRZ~ZeZ~uO56qZ#Aoa>dl^_YGl-6Cma5i>yThBJn zB`yCG(W~6QjEC8it;LK_;lSYBW2h_na97@vaOBC|U}}W+J$%;~Gr@#>@r%30Fyz2# zl}n0U1e%GkB_Wz60X5Ppr7!Bm6>HB&PvKFtz0r!=hh8PHthT%yF^A3~ixj$xoNCKc zRJsm~2aZJXi#-9C7ImCb^iMy0gm60|SNdUDnAsq~pu)vxKY@0y$inRXdkr;imyQGQ zW}SpwsVwvvB>OE#dDMEbA2NqyYG?=46{?PkJ$BCQX~Q}TMN5q(d#Y(pU*@z)HpX5XQ3gxm2dUKMQU!a1d!0#b?=EbuZWA&^_rC zTu}qTp3XfGhbCMNF~@G2sMg99_`3oxM2GE(z&mq$|UVn1oKx{$~MsnI}Mu4vbF;xp_C(={orpC>>u z@BRQlvDdg?RD{9tO6d%bPnJ)O@Hr$%6?7#Z;mD~vX}0O`3@wOJ>Ns)WnL4~17^%+g zF7*OBx|<6Wm}G(4uXa1^voGT65v>fZUPh-6qt&Y##A9hf^-6w+*2IlTs@}-zjqMT> z*N_P4!9C7CirHHii(uJF!fgAEdP>l!t1K=iDsT*sj;RLoTf3$n*u%}N^9)*@6QPn= z0$^IL$DDiT5B`8S##=U*srz>nVQs;dxfkJdV84iJ18sTj-M6*Ja=gxG6OJS(aVRD_ z7H3!J3ks29c(R{OK^?x~>LL}{jdPQgJxp1SI`5ielk(it`^ZB5VA9 zyg-B<+0N&Tf_TKkhK+Rn?oQ!g2>lhP=UxSWw$?DNNZU*pA};;bcH7811nyLDxQL%sTo7l{)BTWUYTNs*56%i(=Xdf30>k&Wf~5SvUClZ99+>a z{_HHeag^5WK@PZ$Kj^+e5N)E%r=^@@X>3D<>DKTv(UKM7!bGvbsBO#&c3JAE$YHzQ z2^4Y!L0Q0WnVLf((<^M2uZ~e=)ppZc^_k+}@SU!4>azaT!W#mAqI3-=0k(ewNQyEZ zm(VI;*5pwtuUZj7PhwZETGz$CaK^P3?v{3nL;FU2`B6N$Pg_WuN+yybxeh}(_*R>u zNkij)!j#&3=SY}?Ko(|%sQ&&r$U;sRN5vW0YipE>i`PC)k`!TOt5E=PiS9eD52oeX zw95iMm7?a0Q+^Z&S1S3`h<>z|fn%{?I8zrSi_2Y+r{)^H7foy(X@1uD&uaf!<>glL zbParSokxf0Tw-7G1c%c{OZmB$_o`uk z;=Zx?@*Vig6C_trNMfni;;z|&1{7>8*&K_r*J~3!>4>OzI@2e03(f8_nQYX)gGX(d zSgpILRRMQt;8v1i+SUNuydv!32CAv`(Yhbz-x0`@MzBr*3);JRv>60Frj^#PdH6AUgg(wq7#^& zZ5n9qG=;F%_Kg577euIL?_VsGXd~(zv{N9$t%-ZI-IP>!*TS&L92H+gn|T%GrBnpN z1t11v?114y^hS|sDK7j&Ak6jom!r^_5dnF$9cdi|ch3Yj z+=8=@eaXI)BYk(ako4AX14MvT{sTQPSven{t$oPSv9x#4LPskze;}}1h zLnPjMl+$f7B8vkgw+_bmck^1UYg5kpm`^k&9yAB=5L;YsE(l!$;{VMKLgB0HL13jw zm_Cua{ZD3Z=@ogqJ|nabJeRW7uK3jjXizssQXT2cVBgxqD5c|zI@@~E<>`^x&nuCB ziC%D{n{;6q1lkldS{!majE5tM?MN2W6>|I_XP=~c>^ujGlj@!$AG zDhdUF$lQvy_Mo+9L1!h8bE>}ot}*(pJ3ymiR&BvLo}z*#u&tj__V>Eo0Ars_r)aQl zW2AzJkG{-DCdp;$YP}=&5GUC6rl%TomGdS`EYeP`P^29h{J^&s!NLP>*pm$mDqMCb z3soKqadJS?Ri2q_3_O(B$DABqsAO*8i+z6Zna)v!JbgqntP*=|-YCi#BZPw7Y`vzL zH2pe+Io}>Ky3-EYW|QGziD#dL+lKkLx>uMKc0Y1ZI$2wayGdQV!hhEJ&l>+(ozOpq zm>;xsdIdx;5?4ZV)t`m-@briL-~W(;6O~Utd5BsmI`qs}tDi%AD z&)gN}v1&FpYa=7|5&ktq^hVP7 z8$x;u+p_4-8kOf$HeE8j`pwkO;O$kjb z?@reuLe7e0YthP;uH-C;y84Aj5k5!PcaP{wZ!Ra3BbsPk3x5<*R7x|Cac$vH^!fxs5dZi1$$VI7`l2@h;SXaWMwEpRoc2qNX3=AcIIV!kfZ~#cUt2LosTz#GUq% zV$QUn4LYK$qcf~@W5mRjfx$$OPH}ejYTIztiq%wXrr6pxQ=UVn+4tgh5(*!>QxJ^j z(RpQHe{#x~S|TYJm~2E^!M0ke`u*o%RC`M6Pkot<4yMLCNrzW=eNp;}*6L=Cmflm` z<9S&5EYqxgI{%*CIVtNe=#O;%P+Hi1UxYY<7Dj0pGsd;Ia5_UbObR1Xn)0;up_GGs zRK1teI5ocebDH=kG^-+}wqyJDo$UqE;+ij}#dT_j0ix$-QZ4=e6y@B@)vThGx^bW^ z6zs05sKB5=^U_Ld^jmWCh*Hb5=ivLEfT%BkYt!P21MCDe(~hAEl9u!P8vxt_vTN@S zY}JdmmO1q@=Wmq*@(?@%I=es+Qa4G}J&|bB5Bi61eHP|M>?XL3^u z!}!{BAO*9rh}>F)n>XcHqYNgCU+lF}PBhAy4MPHLqS$K~$P&)k{BfL{o!3xaL!OAm zvf?y^h$+My04{Y@CPIj9Rgwcnp-Dps)jC45<+A@&eN+D}>yf(qBjk?lu08MY+m?Ho=U!%ttk7V&8$EZU*b6Eo&EA+eH=5%{4ee=wTZH6!tCB)w0kI_EW9DHW@=lv>G^OvBb^X+?*{XJ z+EiPs0Z_(Z@l8h-*STZvqh+g;l4cL$h`9hm*ykhE?b_?b%R}I*YKFD4_ z^61vT$T(~-f=7zoVfc%$p-n(a*>@Y}=td{D!gc?Vm660&Excju%{HwG3$WYSWid+~ z>03e{uu5^9M+M->Sf#w2d30qT$1G--(%+`&shYw!Ba5~$(KEJ5Slblu=Xpo$}>wc z!FQT6YqI4e5Fx$j9l{sCH`H1m8{vvMTXyf|C~_8ayKjYwkMFwxt^+QSGoUNx!r->LovA@SVAtx zb0`a#OW+h`cjol^OaG16sOwcO>q)F7%H112+VcAYAI<9ZkAI)nvjZRPQ0|T=l8gPb zs;Z~lYo0_d>l$nSGfx_*3I-7sy(jZ}^T0=4<-Yz*a=Qb$>&X1FGC9Lp)xVm|UnmnX zQf00r^Bd|SJJ3}o?4Wq#QZf;l!ozo$4#2U5j5j@%m$LrwqoK~p`Rd$`QQiWKM=J8WPn$)CN z9jSbjFOJeb$`?{W;0i}5cqqFt9bQPiW8O(RyyvPW~RuvWa zQ4M@xd>byjMMt2F2TH65c5g}wnY+@Rfe+!3IkUX?cK!Rvom*851qQb43XF_4ERIap zF#)Omf{XSMhCCmD`!EvB|X*^Z^NXa9ivieK?$2L-y-(Yb5a2fZeh?S|f z{m8I^`q^)?T7#66INCyQyxr>iZ3@jaheZE15kv?6lTZWdt>zO($`rik$o^X;QcMC0 zh9tOCj!AGQ%AM@Mnh~J&tgyCX2)4(nn4z#!%}flpefhJHI}U@Db~8dIrU#bWd*E6QreJM;LqZSIA#D{V(R^N2?%K2I-N zq|uVg`eP}L+&DWv)}X4;Ba|`1q0HlttY?1`<^!_bXjG)RU)3F_=-;ohq4feQB?v+aJ-0WhuTlg*P_XJe5D%EvB-vhy*o{r<_F-qz*c+1tMNr&oOr*ZXw& zbN_nkuP$5v>Seuc%!^RZLe)d{+Fb1J;r}nFs>uHBT}JpyjT={r@^gROv)@B8l_}$J zteOOaJv^&5q1cYH*iI`J3U$5Erch{eS!fG|dc7X>8_#HR zhvKUZur&_fx&Yo4L(p}s$O*A{Au06`A%TOG1&QDiWHBtU%KXWTC)9gQ%B% zcEQ%xkL&TcjpRc2JImUwZ445)nl|4)5=(T<)>-aH>^4W4t8g#NN0_EtGkmq;8z6&H zqxIO{l&LPQpyyMy@buGVV4|^&uV&iyszh&U6gA-(MMldavpqa1$$O`+@rqNo7MIw^||gA>bF3CT;8yLLPi>i(V1 zwi{*o0=|KqGC9lOsV7N4gTipuhbdf>n;K?l#`EEdq&?;mFc3iY#jHUzIBE6@`j5tt zy?ARrVk8jt@;D#ExoxX$U{ZdCe})&ND!*tEwiUeESpDYs#wFHhJ+G?7O)h(dRi~YcqiFK*o!$4w`Dps@j@CM`oDcd;}jGWJtcEB0!hrlEEHM(q(z zBOoKN<5p^0L1`wp-gVkB@DQe&0uX?{b*_M2x`!ZHP0H06Oe4acg4j9+52EW)P5QWmn02R;!ak#QTe%GQ`)MA08Q?Z+_5v1! z_gWHsUhjQLP~CKVFL@@MmaN52{Qt%}T;=_xWxB6FW-2r+EM#cntur^#zqZC^jTdI& zMweBTlR9*zOB&=T^2-(0(U`L9TC=sJcJ;)SMbi$n2yyykDZ7U4I&nnMJH3W);_5VFw3+X^AXu5_1Spu|)J!NjvRjlHeXL{V=-O*A{be=PNj%C6h~2_xK>B zvaRh=hMHR^^KpV9Z`D1wIH_u|xm=OK)`#<|SkCC+*`5V>x3;K>O?E%Y%ITLI2w$(y z2+^X7#<$J@&xB^S!h!dIksBKVw`+E`aveo@$U427Lh{g^$kxdIH8GWp-!L@+f>Y4N zxgkPY)1d zb=nZs;{#zMuL}vPf=e&A61)iTRRJEoTls)2;Zum|fya9GRk^+SaOpG=cChTLoWpJ1 zlqfcFB=cM@!t$+r7?_qsrm&!qN@0OlO~vHFy=47j^tWYq#%+pl&9l7|M`Dmw)e?Si z?bJVo?uO<8bKomx?!)luxYv$LmfjJo9Vj~5xyaA5*2|AaId-gTpE*mw;xGHU{v6hyGK7FY-$@?hl5Dk2c6u5LL>&r{xg&0!<2vYGTp8-8(tX8* zqFQSL`!rvtm|nlheVB4*oLfAlGMG;&iw}Gp*8Rmp*Cuj2A+vbxYpUd5hGf#Q!#Bkf z%-cre6c1Ct)uMTd3=m; z)q__?Q z>Y||wlwG`t`OAz)$83}sH@hGBA-gQbYYx-pTHclibD=yN`L!2dzHAD*8c~5*1_i~gQ zyNRuz!9iXqL4G`vOEMI--u~Mur&~OtwKO0p_0l5sI7*^{+OsF> zp<=2RQOL}aCT?ayG@c$T8gs9N%K`stRgag%U^dPWt33PE!EDaz;{83HE;_eD)prHgF;wM;Z+{Dg0=V<%+d#^J<_%F(uSc>@>P3kitNxvu>7}J}Zhn zb?RA>^anM3R+Rc(eJVOo)Bj0F${y&*Pb!yo;-QDqOChdTXu3KU2eM2hV*hX;OCut@4rGnX z`NyjpK(NT&D;&xU-w#rWM2uHDRC1x5f<)-XV1RLb@q6cCs(^(l%_X*@&*l&oBwNc? zG8uLnD|{9{(zja5JQI}52Q8dRv^?iccnj;|c$Rw2J{Xog#qcG>XE_nlj#BxE&$H9d zW1bO=2k{Pfa8DIYF}uV-CP<@axd|v~ml%lo|5)=)lkL0-D|A|VMa8)eEvxj4Lt0|@ zIa-wubF=N0D^%-g>ALn#y_E_A{vWx$ zL}Ym!_yxNffF05b{rbP3Td+@XoDL5S*xW<^di()1J~KFAC-4Q+sv59|FrkePjMxc$ z-jv>Rybeg#tgfUF-ijuDR!aIDNzNvEU>8#LzP(sXr5oqcx}0$oJ6s==E2{e)6LAoZ z#UGSyv;aHIg_1=%NQ2F-V)j=f#g|Sl#*6Ed>{_<+g&^(c!|7l)CZ3a$D;T9P?7l)2D(Ir$?lS4lNpu96ycxvH-uSD6UlfuaLd zlyX(y4Q2-gL6r<G zJpz@^NsmCJb6GNv98NfPT+&heuymxQ8o(Yw?aGBp^wZQ}vySIJKDwo#-Uvgb1h##4 z=poj3nlY-%mMJGtDO7&76mqEU^9E4DVKZa`{W_-w&2y{Llr-0TlKI zLJHdi0cfsN|8*9aTclJDP|A|C10~y&J-o|_RgC>uU8Gc~pDnO)tnRW+5&?JScvZ}J z6*E+ER0Vvh)A^W_v|<2}GWXFdEfg9#(PU7xP$;ss8ndJW)FI{9NkmrcdY0ue* z?6hGWPU;~ShfCQL8}T0kX#b$76_Nf^7~X~!A*@QTk4qP2s7~a-`cIaq5_n$$4L$j6$NF9;BGd2#it2wlOw?0{u- zdUIlQ>aIS6bm}f|%nAcjlxYMi+7Tv8sAZCBF@&XJ2{^sB3JDI_HmMFNLb!G`Uo5pk z6NoV>DQA}To(*AS|Evn1RKrt6Hn7RNSdO91?Jp-uP+o; z^`EEkqSJ^<>83REpL^lM5W)qr3l#tdb&;{#&zT87V!|n;YAVwplhw$~apMCz5%yfZ z%4i8XFu?+jQT5sE8#3P$o^+5xO;0OMGxLGMLJ?>ytGE-RA-S5jd`)p7PP5iak|MU% zK#ilk@Y$@-aCidsNBXp*LC$@`nRt?vZYDAQf8X|r!kzHF_IMwITtsKYt_Bu5LQ6D$R>%ei0l%YAZ&ei*)LfS@3u^>PqQ2Zx zD&&Z@uZ4S!0{AAS-oUo3KEi4X#ZcnWC~j`RB0*6bEf7A8Y~^RUgpBa6!>}B*QPH{w zx*ExK$!5SXj*k~om86DGpK@S^k$nVu|Eo>Jl}(CZ3*Bzc?;0Qd;yu5MDFx5EJZ1?LW%p?pW6ngtK^K%YDRg^-pe(0? z6f)OezA})iW`n6_f$&GSGA=GS+GuIaLDM_K+%O>X!Mt6TLV&SzY#eIqx!^+RCoI0w*DJsvon>%L*U!Ox$ zP>HA()&S`*BsC7_8A_7HN1V1{^oPV<9o@9`!^niKx%*vf6=(XMYPAdyRQ4_I4W23$WS>cu{ z%7(xLBJa};6v0t8DEvRJIl?$dJL!2FjOk)HvXFhIT-btOsq@hY(jjvRVI+|e*>_U7 zCVPN0Z91x*I4;0ds&`YnjCW}ph7@j4n0NE?COdd9X-A8u*pK9qgmwhSE`+|QNqk>! z2ppQ~Q8z*RX1M(U9zuq8E)~U(jHHF0&sSw}x*qtlxhU``y&X2))0I#yL1|y*4eEAa zKv&sK?iq=2Vc};9x{mincaI>5_*vSXD0>wI(F3Se0-9!C0{DQ!Qb8R+9+VKVyQ*b@ z#b+d~RfYvq6D3nx#n>iiJG58V-*%VAPy6B|>J5ef%COWLi_S&?E9qmcT9_8(!#@-=KiD-jw1TbZuX4!eVe_O)Hnd7n=sv+_!kSM zV8E8jgVE~PG$kmQtJYCQcT~!N=(G=w>n?FVPZhDv9x5`vWxSX}tU@LG(n2LD38=JG zKqXKJm1>F~M|t$8|we*jA-X&ag zaqG1s={O3JiziozN{KY?atdLP(Lsg-akT)9zahSq|JQO!l(5n$4#WyG&6aC+lRQut z44aJ?3;5e|3Ycj-Fo+3fjKDeM@=TGT97WKLX= z(E=$^U`au?q;MG24?2gwqm$uy6j@p)zd67hTLjdG3^KV#T*c7B5VImz_|@|6qq=TE z5|`!!GzNA6*tV?6qd@Wtk)okc9rZF4*uu^>TX}!T(3dxe&lOkr8bsqD4j%!7tA#;T zwdpsm>SB&C8xqkfvghZcU=7hox9Y`+x`hO4XwM@pbf;CWz$)x_p!-SfL2jR!Jc*z2 zGZSR6bfI(j>0FX?uL6u!AnuJ#ht<24c|%&$1-#&N?h7c1RXgWtp2Ag8S{GTKnMl-g zC)w$!Ki|>t<~nkK^pg@66>sJ>LXoT{LEhPs(Qwy;#~IT(RPZIrvYpvyyy+Q zkeOTTXKz2x!jIu-#X)Zh&s%Sz6fVTEPT9}lR&mbB0h-{*JTjR+pr0qyRwDpdb-pX025N1o+9D@@;Wzrx1zT6k{Yuf_a3bJy?pciT2`IcpHgZj}J#Wo# zn95jpXDu?bj>L%G*0XMcn_v;GQ0O2nBct;zW;;_JT7#t1DS`z70e!Nla^k6V4+cjE z7E)N&2!@tDUY#q9v>HH<@*|m~_1I1wQs~t5ER@?z7)EVz;K3!Z84!}57eT~(qG&-tM>%9?_z&O$s-IZ+69$KX=zNws#cWv z%!yi}Ho!SG_eW8KZvD-TJ>|OOo7RVF5ApP@vjC{U1xny6&|-(62&f|4z--7Y)VA(^xO>-6N>I@Hq-=7tgryWRG#@3 zQ$EI0Ce?r&RoZz1Qt%H(QOMLd%0H4WYDjE*%8S}?sit}foscA-tF--y>VXz2FVN|Sx z5EBL`P=Xx$j`0>FF|a8>&6G~)qyD3&YcZ{yEXt-msIOKujd1gMnvZNq49r3BFJhu# ze*#nDd?piveg4!qDB`9u-M-KO^G5EvljrJuQaE8w$}e#;%-C@iA*-CPb=(q}uMj8# zR_i7fx}ZQbArvdZB8rXm>Pkes0&Uc!^h2hF6?LFA5Y{$j zDY&)F6MF%9TvbrjY4O9fJJ26QII;~QTlbf=+AK+qfgCspTG5n64zkN4N*J5Mz!B7d z)-E2QZpJW6E82#u_{P`K5Hc2&V|`=&t{gL}LDOU|U(#1GejidT`r7mLFyF2PDGNc+ zkR9}nu+|XDSyK-1G30-BKB2Mcce(-P(q;5rrw7p%q)EYYU~%QD29}DAXxJ1Ete6jt z729E-fC;PpQ4)8Jwd237_!n$UZA8m5YGq6pUrvy`wX`IvPJ;H4&zDFwSOY5PS9HF7 zRvM5)!mIIUW7@(fqG2?f&CioGIRVRNW?m59wM~DllFhC&6L4l;#!j+Mm1_< zAkjsw^G(C@A!E_1A)7BUXUf^JW=}IB^TW(DdS%(@Lx;J6PueHxrGZM^zy9c96h3?QnmP-HKumh`7ksHN2GmR3}eRM&=JJWCcwV> zWeYC~3TccNjx_<<;RTtXS5X6Cu*Ng{FUAqJQcOf^a^Wy6{>S&pXu|pw$eccD_?;$7 z*kVCrUBWu$)S@mmw9#BqjJ+UJ6k|M6s6d4apQt#DO!wAI;NNEKeSz##sFe#uaDgmM zH!#9Ct}!9S&2BS+aa;jGr;RFlq8~c#7bQ`KGw<+EX2D! zHup1&ctQYfF(;Rt#3dQBRK|ZeRpdVq4A^MPbLBx_(qZ4{7+JZu~%##`| z718@h4`E}`3N%|}dFZSh#lX_JXk{A!vm9|*pUM$O`T?&#ymB_c(f zK2=RjpnG3F>Wijg-qd4h@`S}`LG zifEkAH6Im+5M0bJ7SWhTNPXr}h)LCy+?O-`Ut0i!Z zT1I$<@))IM6^TVa8rGB9iqo$e)K!y3Vm&5m)Uic(zbpT(us2QG2M?VyqpbUhNLoo+UcM zj=ol&K@5!oSqeliUxFc0O9N1?YZFdavFe%&`&w8S7b5#)XhdGf{z&uuD1In0J;r76 z07iyXDOB>F{>-#TW|l|xk3CJkKv4DcM+a=m7u-9~I#bkre?r$7LU(=VY#!d8iZ!x= zAH4l3Q~Z)$B&%D5qOW-A^r`>or%a zugLw?R;&mBhR`qxSL#a0yAT>64_<940SVXJYYky3fRK7fpOIKFaVwo`rA~iGA*tOG z1dp|HOIYwO91M^LjL$IQ@kTDZqa=z({A$vX_`FMe1LOhYGmLn=F+T5%FKEQyBtWqU zARIj8QAUKw@`PLjAe#VCx*`)V65LfH3e2s`9r7@O&J{ObUn|$*XtPmoUYT2M$14Yi z+z?Ew+F3m~G+b+K4n?bRy|&u%p;kLif

ol*bIZ^Q+}n99;!rRBpB6G746Sqs0uAM^UtfLZV_eq8B}24-ju{xgIw=C!3wP znbteKXmVm|iVXE%wZ5{_P2(d;BWXuP{^_%8dh5iSoo+jhPEu^%%CjL zh*vrSMhBu!(h_jUMbx8m*S08XttOo$8j{-*6B}PayCbC@bk9{HBhxrcCz79WMP%^? zT?NI&cG5@g{rK)reeVwUd0bz@^;KN%`*0{dt_as8E(rYIVJCMoPC2{O|PF*uizDCnPRC=h2sSFbwM!LdO%w3K$2 zYwS*!D$UN&9FhdCwqCC)ES2XPWZz9uiQUm|t5L78>KG;x0AarMA1&agFkF+;HSI2i9b% zS~S&}ZcVkThV_a)l5`tY86dREZB$ZGG?}1Mqx!m`q$L@x3{ecsD1sM7@MGJ4FM~ws zPYJog7X)r?jd+<1%Z+-inM*+QkFc@^0UIxQ&KwOv1r*Z|YE3L$D{S+&Kc^{`+d|=^ zASN2uT(*u2oYr5XCPI2E<%-u#D9m}KWJ8rDrDf~Lqm`uDsjMPF8U~`ZFsA8H9T(l0 z%M0tWqlj9Qe3X-(h@w@z85Rv}OF3N~T4|RnOoCQF77gXge(fe)RX;c9oqLunzY48N z8pxZsa|_eXn@KhHk29O6_Sn$)C!KP=!OT_pU^Ny!AvVWgxMU2r>-fnN(bPm~(Cvy& z#Lc*k8d8mxd*~@b+X8TOINeQ>3-wMT21j%wyP~t`yHXYJ*`$rpLA^8Rj-XSF+k@_8 zv$7h4>{Q&5aB*^SVsa8)F9xp-bWh_*vRIm&bdjVTH>**y5-~UI4{qA|OP@b6tsTDx zvQa>KX>t;M?C|7N;@ro1y1CNS(Xe3OyPO-mW*Za&1Z zv5ott;$qN2l_5V+8zByT>nVO^@LTZ!I@t`fDbI*nYUZ#$uv|vdgn?$4 z4DuDZdBln8RT+Y^StWpRz<)LvLaFA@Wej_1^90Hb zgmJGVNxPZ?Be`JCJP=?9h=C!Ff1LYE4?DMk>xXcyweWuqzyIH?dQ!J$AH~=M*HK*W zz;y=Kd0ZE9E#u-ptuOySt$(e0#o?Oc9macv^Yo<6hIM}LRx0G@2PalKgpM9Z zW#vqdW7LVW=h2wWa6CQ(hTw&9JbKtBrkxzzpj{V!W6>HKf_e*8x3e1Sgh8^X^UnzG z4dTg;LxQNh4Cjat5Z&yqEyrz7)Y-s*7DQ=;;Z(8_jkc3+vl?SElL!-zC{UmXWr=HX zdpA2SGys({+6asqAX1bZLOFk&J@m?;Jn5{~D_6iXh1W!|EK4x6zk2Ioow>jRaV^9gL1~pb=bbo90rU-E?pwa0qCz}`m9V|^u zQtcZURwF$sDDJR)=q_2D8kr@{2An~X`-4TLZ^!TJVvtJBx6vZ4VW?Qgh#IXRm?`TB z*=|B=1QL5{YwT#0&!b7q^x;8>q?6rEmcmg=*iRw7D=4V!73d$?vXnz= z(Q28c6P8q!Cm2(SVHOu*YRthzBZ7o@kE>&Sg(5*}6e3_qPK#Gf;*|CfIIxO&q-IIt zp~#XURoX_oD54cS z|2!OXsmAn(!20yeJ|#arz~-`*fmT$kj`u@d%tGq(cdO&JH2R(;>f>L-6*`UkQ{b zLo}YxHK(4)bXJc`eCl>0b4Z|&NIn-B-O@$#$DTTwf0*`GX#zOZ_uA)!|nwOnv(r)+0Sj4E-PF7I# zqyhWTCbKH+4nUeP6SOx{h3RjQx{o+(;PSH8*7pPr-a0r0E$*<#vlwJwdu+ssN2$aG@B0?` zl`s!V4~Tk0Ek0JAKnuV$eanq(NXv~zXiHQnhB^9gl_7R(V!?Fchdi-zNv{};`!?Cg zSRf|{BGigJCcu&dcDEaa1d6M{1k2L$`6>%pXqV}`aUfPuYxYmfY!-`HeQ3pP%?6u5 z6#>M*R^Du-s~zbJ1ZMZKN@wLwn&pYfF=;tkm_|Y9umhAD%<`?}HjUpZ5p? z35>&rt9vj2JAb@e;1H#Y`8)hSQMrRD4~AcG70j&cMhhWnNH-5Xz{RW042FX4oLgKk zH#;ZF?P@%JG+wLc!-tdP%9-Ux{e76{=E#W7hZ)V2UBJL59Y0L3Uk08;i-{2|99B?f zTc28>59yh_5I5H24%~1qKpH6vZX*?f?by@O9Bhqk*jth3lFh~U)LJep6J@bhZmQ^f z;1pL-wh#!;c?ycm2u{ZvbcS@>z4MjT#_|=->o)AIsLv%x-fbhN1}w_iGM5XR$+(h+ zpeQMXwi4$UXn{5M`QF-c(s1u7w^oj#b6hTWQgx=l-%)R2BqcRu7~To=e{^eLCV z_ibh=U5(3J6=K$~Y1pfPtz;b?ECzS*9n8fIbnmo#2Q;ra-gkM=_SD2)7<#RdESDQg zXdh8xG+|exa+-G6;_6bZytY=B@emeEcA+|pAL1%nux347C84g=V7yU`Y*_~IY;=vQ zEW7GW_=Br(1dHn~oj`bKFvHqH%{II^84Sx*D-AYEC>~mu6!}$0(qVBYsjukW;xQ@| z_Uze%aXu>klJr?p@(P?J?K1M(NZ_L83h+GL?a>(I8*YaN{o)eHk}FG)`s6PAKt5L=j?P@fS=DUay`yt$-)r2lEiRjm{ zt_C)(dTosZr>kh?U&Ab|+g|QAFzkvc^O-=#qKL$o=qt*i`yyV%cy=;s*OrkqW*(d@ zl#mBZ872>1?&HE3pq}}rs4-L)-sm=1vhaIz-kutH(45%s&8W%C=X=I-eA9ei>nnwJ z!1Gy7m@AYOx+~${M=R^FvI+1%QKHqat^UPh8*)@rLYySJkb`E(s7kRo&8yY#QBIy z#T5sSVS4#6HIlZ<800YbbW(}OijEhqmk=S#aBMZr!6A>#?-WBN^TV@3o4>)S8Y;o9 zo+D*zS2~>)S=Jj9^Ws2C+g1G)BpPn~yV)<4!$-}8i|kc2dzcAJKPDMi!!Vgeap!>4 z6@wG9ZXinthq;b`cIKv8#Apr9kia0pniA(in44k{8O4~MLFe5j9Bfs1F3ez92MY1D0)@vAaczl40j_>lnF{G|-o7hf};=b~tv% za6@uK2{6%{CIkM)$K8&f@7iC(P#6OMpL6Dk|ML05N)=H)-+8!CPAt0G-!~f@ZX|ZY zT6@dy>z3Cr-+~;MF^g}fmDQvot6b}KNUP(p+bm7-%T}w#A^vhZX}$((xs`a|z*<-t z&P*|Etkjg-4(lL|N`g%@1nt%?HxOtyS1>||+e*wOG)(udC>KInQwYHUwI1h!?aC@v z`1z#OZMPb+fGImW;l&3M!q};oJp%&`p;raXwWm1*^_DRHz?3qZdfoY#|@(ZAtl|T!acA%2gV$8AI304O%60djHa)zb| z;ih0-oQlchso_MGuYoi!Te`wIGXZ49meMxH`I<4&c~i4lIFyd zsTC6@%rg+rG2dLtz{;k}1P87?)-bK83@!CpiM1A)Wa&Wc_$6^QKP#!iTQxjPFKX&%~aYBP!&c?snuY(O=z!n2E?n;~6eZZ)P=~IG998NaT z=!Hde43;n^!8Tmm6*oM5>bA?=@(N)&SE3R-1O#|ieE-bdg zM_roPOQ&sFmJ}fP{-=}fX=@$uL+mo&!+c?IlJ*?lZ)v^B2r#{gce&|km9V+1@mb#s1Fyj3>kyL}G zJ)CT=pXW;TaapJq50<2foG$59JX8tRhGG3!=RtIJ=WtZVSIe3VrEX_I0W(P0-Oj?R`9M7%fab6$ z2wRjjS6cW^i(ZUsn4-I#J7tSI?mM%JgyKuP3M48kmSnMRkdS2b(&%n%@q*s#=C5nT#^cjT!f0s+T?ah9g=50E5o{CNS6ke$7uCf zd8%W1G2Y}m6bOrTxq|GVjjKX=6?q=ET`)vIR)P<8c4t9tGDCQAD1OpQX=lFrQWU~R z<*KAqWR4m3jYdKf`p$KTQZT6R*u=O~#gK`mfaOq(9M_<6$@ZqMg+@KQZ;JP($6rLA zMzz8)r2#PLrvzhe^?;G$z!S#nNKC z0+Wb4#-M=SUu%Zgo`CtPL+RRc8yJY6PU>44zt8Qw2%8X;)qNnl7!}1>3E=>odzxTd zGWZ4zab9FCn7mAAq7+T+$A1k>=L3850n#YhWhWhrBnVs3lznC*ZyoHDP(;nvRqWN= zRL~n{RDcxwQEsP%1FJw#jA(rFkO{6O*zbUO%}$JkvEzW6M@qhZV}p{le7;>$!R^d9 zcv~Ok+qwQ{1?-rj*Az{E$P)*K(#5duqqP^A7#+GD897wo z=N~mtt{hTX)PPLdZfBMv1{_{|7|Me=rXtO%AEao=M*TK`InTL-D^8Po+b9I`lco#Z zd_k5%O^s-3g}Gt1IhZjV_i#WnTt3(N1~+VBSiS~_hjvMrpUHS1%j+1aW6un>qO`Gx z1>32PV!Fs(RBc!Au`&OnJ5V}~tJqV}mZ5QYT*wX3ux3TgcROJ$K8zg%$j-?8{D>^w zj~qHQg1wC^F*oX9yTYk>9ZQ2)tccg^6?8iVtVPwj=z$vYAWIu|mV0pRYB3~Him~_P&BOUO$FHT)xvshBgibp}z1(H2#Mc6Wg}S&2?;)P8L{1?X^j1(NoTaU8`JQMQQ=5CX<<@t zMb)YOWr$$$#If_yKeFmexE|ufn ztvC!OFvyUya zJRCvgc!MC?^3I}#vzHd@Z+DJYf~$jz@67TgTHfauHrE<{=ib2~tf>wKm&3s!yhS~} zpYJ%*kBPVCu(iLL3@u|yM^vsb9ube#= zA@%6&ONURLJQ59!7Ygs5I#MVcy>K)-|E?35-xUjmW2f=TR5Y~O>9pnwg^i7kiH)g= zq+KhVpepN?v;fiqNfE68cG%cd?NsIMiD$>hqrO*koG&BfHR@1XqVaJQV;+PqGVhkl z-qNwB%%k)Qc-OOvH^8#@f*Asn^?JO43Wvwx?aKh+?FY!ViI*R?7XdD+NoLv8%*o5h zH=``h&dwI(>5yZF84Gu5Kixd`^77RYyc~)*n6a-SMQVTrf@$E5jsmIG__Zy@__>`Fpc5Oj+9NncxM&U<=U#l?%OmLOuAZM!7DV_5f|e#lsCaIhs4pjA%if$ zA=^qLjfl@P+LMDreXou%BCz90t6agxX%Hf&DB>*V4|(^G!-skAHp3PB|E_Zrmn3`#altDv5Lfs+8Sz0h%W)nV^o$N z8l0yf%57BlD!Y0y^#F)9Kl!w0Omq5S>t9tR;&6y-*rklG?73R!d&QO*jXcI}&i`l1y)9Igt4hXO$` zlJEIKKg(Qh%&;5==cBu*iroq_!QH5WTg?jnEzFz+XJ08=P;lH@)$nYbZZ&bbBR6c! zj4o%RZf30Hieocw-WH-ACPx^6^X;;EcC7Yd8V%M(Y!-(rN=xZVQy)3*!PMnZZ207! zPTg?E#WXMS8 zY@JsZGl}xcl7zP{Cd&$?JjvFTxiUwTEx8Hk*BT|jvWO%?DCESJp8aBT-y*Zgtcu+X zvIIxKFVR)&Ys!On#!fI?)7A0(sx#%My2~$?u5>G_X}#=fcsn3nPTGm9ttM$l31#Im zlbfWX@{(U$5|%`yfMJ9=dWAQCK!H_97L z<=?=UZD2h3&IObzo(d6~KxzpJa`j)JkW0&yBB^A9_`axw|ec@n04*iXV;dlgMnE%w^pl| zY(-YX*@A1|`ZL}t>+o|KYgoocD=xbk){;u4oYtFM$1cB$H$3>7vMg+)YsYTX7|Yez zaiPE1@4t*yYN;i9+q!IxNV?-8w}_1;i!6i0XW7H60_9#AiQ+puak;YE>aMH+YIm_& z2@B}5^xaA}U{+!)CM70{%=dKJxt;XNx(gvKb1bA-zd(*byV2#=$hmp}H{|Osj|bbx z>T!zKn6MKm+f0zHmdhG>j20~{lw+j{uFS0PR^@dSTtzLv=^A>5n=OmuLp_}1+)9vS3I?HKI3r9$+5mkdV(S=)?_+(DUbyoI82;LUd~J^of_?|2R1E4%G4#J!`8o0zM#F z={D8>z-ogbBzpJCl~K+Ou~06*0QgO@EnJ zakq@k@mOX*vl5L)BQKsmc`O=P*mVhcQjf@FUS{mVdEkf?;n@JxzUcm}66z+=z-|lE6S;i}d(eA6ts!)hdu3#;a z+bgjWd~CCYkCepiF}#L=`rHgNX?_3LX8>`vOb7866h6g*_|Yij0OvNwa$LF_WlC?u zPU5_DMkYq^7Br={n@%jv0XFt2zzizaLkDMe2c^i0;OHjbUQ!w59w8f$BXm$rDtPIk z*_nVh{TO;+fQNf0tD_p@;^yT{ct}iALd4yf>Lm+gHX-Bw39Pu!KzfSdU^QF(O3B1 zG`!9SNBS$n0oIlIqbJ|R*_SszKMxAuylThjF3?rtZLm5vp_Y4d^(NaWe049#Y)*6N z)S*J}VXG6qizOlPIh?=n3aU5Sn@e+hup+S><1M+mZ13fq!@T>upu^n<`qLU;#tR`= zP)L-}c+A89GRHmBn3H0?h^`pe?;N&t;)U*X9J|`kl_o14%=gyVu;D9S_((?`Q=|1E z`5IS*?|tEYRO~3Qncq!He7gdn!RGfb5^NT&!wWDuhB>5Q=mX}o3*WsMirAQ0I-(Uw zd#lhjKLxXYaJ&s1tj48EbUML+p@89%ATy6$vm)BqseDOTb0fS@D1}Taqvy^^Ko!E7?_!xJkS@D^clu6I%~$PEA&*0l$*<3G zAjBmEmKp937$yILcOsa0mX~!IJdJN)sDrU-ZEi%kj~r-W&?(``kpqr{Df7I|MI*zh zN2$LIIZTZPd8FH|4+F28hRrjF>Y-&q8(~f@^~sQnLVW|W18_dg^Ck4S&DvxTtCf{j zB(FjTh~dHdoQ%h|*6UDcXVsEajKMJ@CCRUwsaz!+;?u~Un%LFv(U(I?UbTbzhyGL| zdS4>nTWxjV_23B5vP5tT24CT0yX2UAd8zKU_9HG9NU@r4W#KBpJA-udMHqj%HGJp< zX~W9!<1jqMet-xrDQS@;36#A6cb+AP5C*j%<_EYC1K-DklR0bB`;rPWQ>lQdCC!v0 zOWGJk9FSv7%e2vz;-8EyF~+5vUfeS>4GI%{&V_AqjoGN5dfM!bv$ouX$u?!NATVB;Z!6`0gox@OhP1UB0}OILNQE$}d>BB*nlJ+HUbG z@}~p=MH^V=D>pFRtoArYDMy$$UO{cc*I}_D%iS+4?PLuOdvT|uYQVLg;ML2;b9^VV zfltPilm?oi(nak05-dPPahll@YPCgvsuH-037a!^Eq09 z9|8?Uc3!!ue8Vq)dV<=-(h^j;X}FIa5h5W4evf$Kn_OYrOgygcYu%a-mLNzPyOH zt%lRf7%s;89G(J<%-K4#m4x>k1l=}%2OVE1uknTQ+HSW9Ay#94rgEu+02dW4fRL7y1tz5?GJgcMRRSz@ceP1MQ}BQ%Q1P!oATwuKpX7qmSjUtqAJspYg-Bu68Ii-L|Q z*vt~94NHOoz^u+;HivEMn4R*Y4qSxbizl)y2`@AH7p(HO;@6UTbqfia5Ex{&iZ_Zy zWOMq)6~3q147<7DNWrIauw8~P<;F{Jhly`?5O0y=oz*O{+^%+hO-DAf$g5|CSHiv# zuKD6~9=5TBp=`?%L)o4sglth25cenP@~;G5i8unqf@u`Jj4yiR0=+Ddt+TRyAC!$Q zgXlgm9^reo|4(O1I}FQ~3(NCZb=P(IIaJQ#pby<<&jecdm27=aw*X+@QQW~BchVi9 zRtt^((p>yLfm;$$O873JtmgL-t?u{dgk4yaXWYN#0wWt`%o06wpG{YgiI(YiHp*q9+ZlKqT`*mYIG69 zEk6@~?6f z^mAyhS3Rqcx521T%|F3AsG+s8f@45~PlL-= z+`$Mfy0tj~yB=%=a1cWQ+sv64Pqt-5)o<*~7_3F>3)ut!y_@Z-l*R!KySxjuO{dCM ze(_0(PkyU&KZ)ySaD58bXK=AXT9v~n55q9ziJBogJHw+Ef0kESRmyb$WwM5N_ z#cJJMjyrfk3j?C+tC*0(LBwjok4>RJT8S_;!=`LP(;KsYKJM zoReWY^v8{C(wU>pg1a7a;_5)1F9PFZKzO4Kt5a|+_+gℑqi%ZZ~jnVPKh{Z-8=j zIK9?CO2ON0_{=s$zkwH>YWRX$1z$+7Rpz2I`1BgIv4%A(9;*O_Zo@TdusXE1_(V6p zjfYkjev}kp?A&NH@ab+DcZ`XhN5fUl?D(HjM-ZFQG05eYyl}_sY`2bf`sk8KfM3+* zo;K{=i%uLB=A-A}`QA<31o-fNJ4QZb9aU;ZfP<+ZCI;BIjqFpbX>#k)+oIcL%*e{5 z^HFb-S?nyuN=k~BeDTBoY~bF{-#g%(%U?SX=0zOucj992<~UoyqLsG|nQKdb$;we{ zV(QG1{p}uOlHJz6ne%iIdllmKA8a8K9bpX2d#BxF7Yhg#eo6Gqz%sTbh7jV@mP&Iv zK!vK|DmGoSHj8Hmk>(jwYJ8R=h&e^Y8VM{2De=1v+)9Pfe~I;<^dwrrS%5t3DU${+42F$W*1{U%ENMe6H<91 z^e|#GArUV#j+zo;R`Fp?{VX)n4mrbyP!R^E85l=n`@ED$8YkLjo+b1b;7&h(B~1ZO-MdDmPQ-FFNam*(R4Qo$AuFtcrR&dDl>z8eZz{UjFb2n z=63GjFg_>PSlNk1g}98Ws3CmyeQm9W4<-z{6WCUPovZi)T8p11#Yg^SXEO%-*!_W-5HsO)tD!Y;~b_~~0rQm+n{pM0QCZiq9rPJ8* zOy7m~@@<+>6h?6sO$=KXwL(F;hrd z7z=Rsov`G=I%Lo8V$hxDD;>+PdA|cpuC^{m@4(8JUgK+un8l)w!1}h3l9G$mofYK- zPZf@rh};D9f&EC3??i1KO%}U1sbKaQDJv<4*8O5J2hlez>&37BE1YGub7sxqBj3&) z!F3wfOSq~%WCP!-<%$c7OkrSkvJS=ad+skub(NMe6}6%Hvi&9EtD;ZSa;00?oiO4y z3=syoG7#xk^F+E7GwL4SZp4-zzQV|!9sULMC0Ibv-#U_a+}Mbkm2GOqctVb`@Gtsd zbcB%zV%F9*U;NbAlDIAT6_#u`C@8i>T-!Kd(v z9Mt3791w>$xx+8IWehk@oIJjtXEnL6fAQ-$d>&_5xnaDoFz)bbi~C2P|CLYklLfjB z++oGdojZB_I6l{a?JP2SsaFy>Eb?aqh)qnArW$ zc+?u;9vv>hk{Z}K)4}MSpQmuPC!5$Pce&Av&3c3!*^_YPw1;1D;-j7M&cE|f=Z+<0u~9XI~u#*G^TdJX=`jYpq+{KlgU-njQ+ z{>ndu-?(#N;H?inapT5QPrUiYjkgdz@Z^8t?~R9U+<2N{x8ocB_r$|}q>ntbE z-q?rh3p}>t@xJiZzymuT+=}|YKRmGGjyvCQ*WLH*9K?aY(D}UxK6v*X_uYTjefK|b z-~CTL{zlAQ?zsDbyB@sfzWX0}bk9Q%?|i5*`EcopNAG{^k%>nhTYR+i=-Au$9DZ`_ z@NwGA5TfmRaOXo04?gtpFFy3}__5=EJaE_79=!W&&+T~V;lkwJ7f+8qe_(#k-s0@R zg~Ht1zj$==(D1$^GvD&I{U=W`zPp1>;J^br?!E7xUC#~gJ#f(7|Ij0Ee&bsn87U1t zG4=HPU3bsC;lYO=d(&?B=x&Ly@A1*MKJA`;e)^foLr;#mH@oPmJ??FD69re?KRXWn zBL8;`pcDfG18xVe9e3atP4U1T19!Xu@W8+hJic=WpWZ=oT%Z6R&HtO8eDcYs-u#xg zy!EY5KmE)zQS|JyLqofsd+zy>;o;Fy>~`6+=WTC$+t}Fn_(Y*FSuB>OruWY5+qZB3 z{{6GFb93&-jjz+pZrpe#y5arkiwge+2JXdS-uFLn%YOq84h%dn@X*7LJo?xJkH7H=(xLDVy!kC} zeOlrO+grwd{Rhv0Bzk?aK8k1iLI{Ypp_jiCHU=xh-!AtoTCg4NjcC!HmA}W`TVP6$ z_5Iz07;iv~9qtK<_l$emy%jNdEXd>T5nOk;yYc&YUo7&_m~X(S_ zdvLu0*IfwTgJfSu(H_S26#kw@pFD)$J?;RmdHlW$zc0B9z~VTn+~0d${tu_a<^I0a zopawB{;<{GRopvq`M;_=>#FWFF8;;t6fXa_;#S-{aOq#oopd;-Q~p-n3vM<1op8t9 zF?ZDMcl+F4H{+(=lqQt^fvdS?i2Rs+^GAT$UsTL7?--g>OSPY1GIlm%yCwJKY^aqg&3c3e;oq;g!>3C z=e|dNKji+R`%Adqk84xn9CB}$Cz=vbf7xAi-|k++-}@Y;J`c5*A?#sLzYm<>@BRYPS^W9mAGr5(1D9ZF)GakiJ!aDSR)foOUxpoJ ze-+Uk^+fubQECj*^IDbPERI4NGsbg`%h;scN_YFPvlO%3dT8-uUmL(7$87)Z9C*XP zU3cF-aMvAoZTsgI|2gQsd*>i#4ELdKK7cmjL6{6H!=r#7Lk%93`u;df=?Rz=>;995 zdCKmOL&o>v?>SVPr=jm>cVa}cwTql%A1v7GB?!6kP9i>*o_<-S%^4wV84zy-w50JKDLED6B84A z3Y^J_Cokl5WKZEH+%UXgsU00u#fw9ihntv}@e64-bm6zjYuJz8gF6BF;(kNCDhcl} zWMM}k!QyhlqtKBdd=wSmoq>|@g>9UX)WQ1(Jo@JwP$VZy;Gw#K7c<2H8WvAo6yrG? zKu$fS-|nFKXO8;pMOVUaZx-0Ij13%{oy;(9XGJIw9G6CmX(Xn8FeQ33`Vwy8t)y|C z7uxO*w8iisd_Zn!a-I7UVBY!fD<4pp;eYo5xA=h%?6`Mez%Bk2-0%JB!hJ@Euw!* z%&c)%9b(JEsH^L3*D%hG_5bOS(EqljQTL+B+g9?{*~`UZ!Qq1j_>T`GRk*Y=Q*d1m`FX8SW{`!iK}7T5(c18-&ji8j^`9l8Gq9L=<8o3NaCdn2175L?NF@F(d-WCjyX# zB4tqurI1grD1}m-Pp>G2Qk+k(D1}m-rKffW)RgBtMN?){YIFiv5!K`bV+B-$14e2z zW2w0b5NIqTXUTS5)NZn;DwJ`xKmRgu#LM$t^nin2PZDn*d zE&(jMnwDTJx*C>XOhsx|z^GLTV1iPc5{#8pElMz!4Yeo1Q1abcQzb6|#VY_A0#L~d zV2@Ptf?=KksN@AO8kM|Y0uA#6j7nYrBUZ@^#)wt&f}s!qsN@B(SSoqJSS*#iU_vYw z85otk02W;(FBprik{66cSIG;8k_VuY7r^+;iirxw_{_4URbt~a%T`t~fsaVO)iucz z5QYRq@~y5(o`5|v$rB@KwYnyG0!Cw!CnnHHep+3VJOLv%$rEG5CV65c^R2E)o`A(N z$rEF-O!CBpSW@Ix*CbECqMPK2vFIjwVl28zo*0o>t80=cV0=vS#26owJTb<{Bu`A> z1IhCp{gQ~@Ah0wD!WT%SZ;*c~@;4lk6i75+kf#$J7%roO76d11Fv!OcMHtS<5LFls z#Suu9VUUk2>M)#-D+)1O78fcJoan?L&qcIiIL}4&VmQx5G-Ei3wANf!8&&|^6o42B zh!hpDM ztmZ*xj-U4jmTU!74Hy^*R11b>2?SJ47#L_(8-~r%GM|D~ofsIRsa^~lqN#2SOF;>! z`Y|wYP#qaIa8NxNHphWN60B;=z`#s3X4t??wPx7BOf_d%>P|q_o`Hd{v_hUB@RgRx zV*_7ljXXBTSGCy-$|R%-5K>k4Qm;uu{;Ag^ahiB9^;#t4>AVh!%ji^tz0@m^kdNWj zN1Tu0l}DTws+W4z5%O`p;)wHcz1oP&;;Pbmsn;1H&&6wuIM2oFi#X54Yl}D)YA^M= zBINmbO%dn$c|8&5`FSl7m+^y+^kWyQr2vC_fT1aaMOOjNXhdHDk6aimIty?{FM133 zJUw)0c+p;fv$&$cfY0KJ76TroHdr(n;Ea!GGvG5mqS1iQ^MO_kFM17d##3|~@EK3h zZ@_0fMaKaTtr#qN4sga_bRF;+f6;fqXZ%Iy0iWkDdT&={uz+2Z03;OxqV9IpbWOk> znU;x>q}x@~F9D-5%@Px6M5pblDU^T_n<|MhVpAe9Qi^uf)JMQ#nc|4CSf(;!LM%~M zyK0&uV9`xS#8`CG4lx$p^g@gXtz9*Z5HLQb3u26qX@MByWAY~^@PXu8Wgb?plidu) zOf&?LMu4G@03)RUL#zQtdI3hs1B_GyoFyz1V8iPaI16AB90FM`inNM=&vH@Zq#)q4 zTogGq2>2`)#X^>g5~txt12`)_0)0=iY?LVc5GBh}i7E*AEK4OSBH*(um8gz@4_T7h zplGQN9t;UdolvaQ3J>N8LPn%+D1p=t4+dJPAs!p@EVV?jQcpY>qDfux*j%(wQmHXY zAa%xrfrHc=j}088?s#kvmDC@_N)7U0U?#Q5V*@j(NgkVH7Q`;~NeQGzc`)#mTII2U zuhcA$4Sc0`d8}v?8xVdVIR;BA0-Ht+&S<2q!(Msvk><`|)2iT2tp;a2O|gcT zybElqH8@L4nnB}l+BKSdT+y%KO~D3de57GCKBi-%$@rL-4KETD*z|00##35L<7uik znvAC@+wggwqHe*Pz75X!ODk&pP31vfSZcgvOXK6_%XgsAKG&raClGSX1i*fls-M}!4&7y)80#QK0WQZfYVk*0OPB6 z1&kV%0QN}DNide68WJ#SMFN-<)P4kGGEmC_M$JY5BUXbEOdz)WtDWGH8i@cFOU*+t z7E2oh!I+TMB!E$S5Wu3VB?!i%s|^SyL^qLXmB%A(-~})~TGIt%e6)@W#`tLM77R7r zt~G7IWDqs2AZ4u(*(*e8E5rm8qIeWy5(+V|3i(9ToQSibk%1hNDCpBub5fj7Pt8ej zK0P%j#rgEqoPbkv62SPXIRT^QB!E3qa}tatsOAKWnv(z~1vMwZm<-gMfKhW2z=+kH z1QUoY|7uQnq~;`m#Zq$;jKxxO5{wC1%?TJaCjl(Fnv-BGx|)+({1Vc@C&A+Dr#VZ&x1fY@^z#ggO1w+XLP{|8mG};#kCeScHz^LQ} zFk)@|1!Kh8>8lCK2@ z23oBNhBb}Yij79o`XB^BFC+*_1l*0<)C##I0PM$AaDqJA~wgtbY*Kf%1mpD zFbf(ZL0}fNMr>dfG)Jt-+}3uKuhtyl8#G9Qz&B`-*uXbvlGq$y(Pq-NX1S{nn`H$> zt%4Lq2qY;9Bx(>y(h*2xA&{gZkWWOLWpcJ=*+4eS3i|Z4Syr4+Pn%`M`Si3|R-8{y zn`Pj%Sr)+fnsFv=Ya9sJBWoOpu>`GgNZQ&ggO4>11Oko8z#507ZDvToL}n&POdz)W zTjP+l&GZOZEHgV|ES8xZF(zbd9Fn#f8v%=MhDMAWhb7}2!3r0{JgbxA2849z7)j7gqAcqCFamlSDC@&t^=Bu|Xw$6Qh*Hpvq( zVv{^EfmkGOE-A(`$rG?xCV65kmPwu%DKdRZVzUIqeh64}lRPmN-6T&;h%S<+Ps#Y0 z9VtGG>oukLd|cHR@m5)ckJp;wGd^B-iqH6X4JuxxN7(C8;Y?Ou zn~Klm;B~6_EN@=3idW?l_WD&g8~Twc<1WUgL_-^M~Hs)#a`>;2uH)ZXl90 z2tqOl$r%Iz8HA(^f^ZB%G6wlXqyZP4HsBtF5gX{!lLp*yK0Rr`4d>I72HbEyJ!!y+ zlLlM?<0}m~F=D_9*du916k`dB(GnvTtAI&CY*jHP1F=$K#6%S^Vlhs|1Y*m-*d!l` zK`LOe#1s`{vBU@!V?q}5BSxAL1uVKWBZ{%;(u^o3L^qL%nemY{BMKNFX+{)de54ss zjPa3XL@}c2TF;x4LSjw=imU|^_5z8t1(E~=67dKmNeCo)704%I<^-HKCk4fv1oY{d zISJ0EXXYe0pPreM;Cy;!PPLwy69MCE=2YvMIT5f&W=_Odf@V&&o|zK?lY*HOF(v~u zr&`ahXU2jPWta6JvZ#^28V)lRPmZ`CcRI89XeN*#eSRgC!Y*MeYVm zVg`$_43;DfmfRbhC2ZAO@Vxv=VP_$(Jz<%zdSuV6^Y zDn7AR^%V>RW`v3j8L=jSSTjWhgY3*46&oaHjRCP{lnRDuW|)f2MGGahhJgfTpb7>K zW~7P@9L!J^8x&^7O01cyf`OTttYQN*Gh4;xm<6$$@shyISHZy7OjxmjubHu8179;` z#hOid_hGx*Ybb2SECJJ8%f=Ac8TQ%S8#SJtaXfW`ZFj!I;hEqS35nWwc<- z1cT&)F`ElgqgflvXu+5X=Awm?24gmNq;jzKmK=gH6AT=JF%ugU7L1t=lOTL+eaS2s zGr_n2DuL;WSZgm;@ku0cf@Wv`G@c z9;pTeL;V3z?FnEssyV>~8s-Za)tLZBtojm+5v#5QLrnotJqcj3R7ZlbSgIevgjg&# zFsc~=EV^n%Fcw`kA{dLV+7JwN0YEh&fbmf+2*&uR1_Wb#RQiGmd?0yz1V`7D6#zp8 zAbA2Jc?Il|NM12Wi-1U80izMgD<;rD^2CVb6)<9vykd-4B(E4`o`6VR0gEM)SB%9H z$txzrg5-%2$tz&dMe>TV=puQ=SagxRVjwXBB6$Ujk4RoI#z!Qt7~><7S4`lelGjyT zJkljy1yu4_s6{JEjI>({gh!ed7G#Y^I$zRw$pZ*9DtWBN8nJY_B=(XAV8mYXz-Z=6 zUh)96$N(%G(khXUmpp(FOC?|Ok_TYXz2t$hM7`vJvFKj%z^KHgbpD0J1VS%opfV*= zGet<*64H_rQpSWdV}vr+s*Nf3W5!u~G)V+thV|)5UuKVedeV;>&Zj4RnBjbS(tim~ zb_;pP7fN>ud8|)Rb_p5M7gcr$8O|3~b_W^G7gcr!8P19-jV)2qZ7N`Fz2QxH!vhc= zSy{c|O?kruU^L$FfU!Jz!<+Jk2f&EE;QVIF&|kdpBc4!|I92u7tCi>ULy;9v=(Hf`Mhau z$e!i%rnMq_md~5k4tu6%8Ui`F$QaLOL`~Mn)NDf_Cp{VK`8aCAMy6&Q0=YP9&f!T; z-fGtNL`^#catzeO!;?M+Ihm-r8=0DX2;{h_>4zsdZdwJxlbrIkD%caP4k3_Zt<@qt z$+6bz5uWt1&Z$nTijiq`34vTXT5ZCUTsm5P!joJ&T8+XJTJL(TkR6Mv!Ti~%is1pN z0m4C#d{bY;a#X5-dS0r6dT6S`_;m9XCEjv~sy)WprU9~Z0yT`6uABBK9IPr&veQ*H zm>scdVSmo52C>Jvp?vUpv?h-|uu~QNV?B0NLw5G626!T;Kz#X!Z>VM=If^wr3nzAF z1o*^RFCXHWof$pPHVq*?qcsHmftmr4JFPXt;d`n0;A1X~6Gp397z5laU}r)G;&38l zhT(@6`%7p?Kjur3ody{qW@kJGR9=bUkXL=0JLy#scHC8~2ZXC(a* zu!>0VeZY>qXrkrzXT`|V>_k`%X2-&6m><0ike=hI!Jxz(X94XD8Kd&K4kyP7-X9+; z0iGON#usQUAqH`ftUi*{WChHbf22cfj zZP0MAas3j3KgTp*KKn+2w*(6YgZ5#wXbH+GrdcNP1}M+_El^Q*I&Cf%jWVl8N~Jh2 zaK(kgYO}cg`Nubh?U6sb)`C31R=~bWXGhuU138&CcRF+qo5@y>pS6>1a}>H}HGhN$c?U7^WN-j!hf_+3Nrm~iEhW(V==Gk?ah z59yJ-8o~$to7U6Xu~mxCSB)*kvZa~c(nQOty~-nZbgv@%YYh+a6}%jjr4Wwz>)@Nf z8qhO+6%OZlOEBNy>k+?#)(@OypdR)s;e72>*xFY*z+|wh00ycGVBAAM2B-?yBbiev z2BT&IG9XpJXk<>Mm_UQ!5-~FPRKSR3PNf(lmN}JTFwi6*gG>c1mdvRXW3gmTrI-*4 zBQauRAgO>wmpPSUEV|686l2k4PNf(O7755eQ32y4b1KCcADL4r#`wsbN-=@YtTMD! z4L&4jObMF&ZB;`FWP;$q9D${5yC9W7CI%i1v@$91Sks8@hg7Ug2Rs;}$yC5&bJ47T zwl`7fP_d#-f>sw541BFVDmL)7I;q&e*XpHWb9_ykw)u_PwC!&mG;P`zIK^7s zByG?pLCb?}g;QFqo1_ieB$%T$ZQ7X#9A@A)eU|S%kC zZQ|Sg_yr|zAmt6Tyn#6Q00IO`j|8;`5yOMi_?&z-)+tbciW#z$fm0cXSeZv50}(Hv z5i!7s8DK{B&W8Xoq9Ga2Kt?kVv1C>zzo2FSl)Qn8H=)S8E`U|9g$E>>pd_Y15?LU` zH^+wfE%<{7_ysY3L5SaJ91US^4gy38CUb5O9YV$aho%1DRDV!;%Un*F@RJfsK~D%# zI`bvur(%S2u8;nprk*|47*pM^C8kR`n)!b(76Be1a$*rE&Uql$w?qZ0H{3Hzvo zeN@64mD32uvsti!eio1qC`UgvR-QhjTzyFSW-|fd5@ySNA!F(v8do1Qwmz8SivhVR zCYyheuhrM!*YN<7fpdq`exzU!m>UGXIoD4P)@Z5DZ#1R_G_nN{-#kTfXU;PJPzHiq zK!aI;!7ISiIM4*=LE&72D;ZSGz)}WIWgueZJWlw|WNwDX%HzHD%9~*Oc;_QeIQa zYf5=dDK90QR$kM}Yg&0tE3auIQC`!^Yg&0tE3awgr4%#DYesp^D6bjiHKV*{j8b{c zD6bjiHKV-r(O%`XS9$GKUVD|-Ugfn{dF{0b%4@Ik+N-=2w@-QPQ(pU&*FNR7PkHTA zUi*~SK8vTk_9-t7>{nj5#u_L7U zQk)oj+!JHRP4gwjj*#X{j2$6OT#Owd&6gN^+|z& zY5_=zUQRLqd244le9jfHgwJN8Q!9_su>RNfGcH$>rW+UclFev29?>1|4H z(>RW9-5*b;07ms#q3~!475jsw{@_%9kSsTvsA^~@aL5~uQe4GpQgEl{1K^l@1ctc~ z_~k-i7hK^1LUfNrTn{3m2Q8Kiz7;FOVR=r-7!WiD1dRbfV-UJ?WfFoGKZK1*2pgvm z-pbC}N68O+Zey=PViH1BA4S6Ph_F^ey(-&o%U+_{) zHucc3PChuDTFb9+Ws6(*O24gZ1qj*nNaWFj$e;(2yQESna!@ zZDaWhGHF?H4(FQV54hnMjPQ$x_(k+&qiWkxw6Zw8fmRkGK`nRC%YB-M8ON|!4I)(K zRpd{JKU4exRamhM5NJFSlpX}V2N|nZZiw*)h_MXGSOzkdfzvqGwpwjqN)109U|IUq zThW3gyHDAjQJPg-Q4Otv2N27;5yUeHF%3f8m?xMv8Uc_9f|3XVNd$oqL6=qa24V?< zRPG>@JINY27z1ak_e27A2fgpB3_uLuLuE}^fI#niEF|GU#PJ{!(oPG#c7QAvyK;*~ z&|(n`vC!4YqAq_B3%`hfU(n(gWVv~C%C`O@bXe*Cwtzx|=;f4~08kA302NB{K~ z7Y=;v&;0f~KeE2?E6vt_dhLT(7ryI6`THOJ=s#X~^*8oC`Qr;8T=?04 z^5G}n`}GelyyYWzecOfq`4_JL$jROR>(_pB*W3T@zq;d-pZf66E!^`9A71=x^$#ul z=c7OP+~ujyUmy7D_w613`S&i|{{zqo2&1B_A4V_TX=Ee)1R9A zE1z9><;v(!J@L!Ge*KPxPn55Z{L;e5Pn82manK?t1&K_xvxXc6`TA zFTC)#<9B{!_xl(A!B75$Km55L{A&wO{OHy5C$4?;`m=BQu`jKC_kX)EmHzq%fA#5~ zy8hA44}Rzm{`fl=>NC&X_=(^DuIvBPXQy6!@AX#~{_3Gm{;h@S&tCtwAOE+XK6B`M zuiw4vZ=4-zYgx%SC#`OBYPc&9rRuXNnEoL!RpIZhZDQsAW) zVf-FtgAP#c=&n)*7ONb6H8pU)yNsGx>EQ4?f4VEIH-ExajrW3g!oBdd+2+!5nw zAaDZuP>yCO$_~54$xM<)#G{fTIUyQH+v7lX%pP$#I1a;Ii(b={&v^tj21#1B3MA3d zaxfz}*oW&}+~wM6w(Ynphjkk`j8iOyVIHt+|0Mt1u9XV^+^(rf{<&T8e*WP;$v-@w z%y#IV>T4KLK*=jk17i{GD6dEk-Nt$D z8#p=(BzAN+DZ0(Ia)+yT(a3H&ODp%R)9yBTRyqzL6KpgxoR0KG8QmJ?NWT(qa>D#X z6uoE%nCX$`5zMSsZ>9?o4{|>zo`rWL%P9(g^V}y&D^VI(Qk)WQ8`J+594Bu8<1 zNWGpg-sRBUAFci({PvNYPFjjoKM}XF*H`K&GUJqK5mk%_Iyh#`pIRQZ zY|P+>t7F5}B^+IMA?cJGQCfd3jt)gd%2JM(63)UnawlI8>K$8=xr#ce&aH9LGAc|rMcY8VbC z!|CblUueBrG#HXEK5d~FccKszqCLrJs+^SGZSlBQHIt#NqU9=)C<22f9662QKo6V6 z?6`QQg|45+)U`N7Wd+4u{Z46l4Idn7CD@dhI&BLY<>k16rSV!5RIFA~Z~|;RfhU8fxCZo`BI*t>-(AT3L@X)X^T(G;UJA6vauUc<&(ot`%;wMho zEa-XY7vOD3$IoGegkd=5mpHc<@7eHFJ$+tutTnI|yWvD{wA_lqLA`T3BMme#GfsgR za~D?Qh>P23;c1V(Yp6|e(0d0Q)fIiq&KThuguNm`Jk>OTv8U zHJoe*mX2r9L2zxfcW6fvm>s-Wl2z>XsN!(S7HHTj;$TEDMt{|0ls2iWtvY6;u*a@M z5EY;)4XqJe8)!Am+*e~6im1J&tHO6nmuIaEaw+-q*_C{2gSe?O5A`Cgqs)C(CcP4G zK(=WIts4ctQs2Z2y)3SX5CuY(RGLW&nZ1gl)mPwSWc5MLlWq%Tlyfa{{2zE!kicsg z@=NX|d1=v+2AW2mKFF3sAy)L8)_aZS%N0V@g<4U*$%j!f|JZ9|4^52qW&?AEYD~v9 zgfD4J!Jrbf#puQ`UqTKl4GhJYDFM(_^bNOOx^R4azdL#U%=rHOGqdAGclhLq@fr6L z4x02m0-FW2F4nOP!_xE3j}3=t`>=VaGQwOdWb$7_jtN zte~vn!xcjK#lPr3I`=%TBCeceXbY}ol=;-}|DJPS!}UkF{xhyW#`Pz--0wTL1J|9n z?!t8su6uDkfa_sgkKuX(*HgIOiYvmk3)l0whN+X>s24_5L&h7mepSt1SUh~{*dezB z`uwDL4Tl=jO@f^#Ne5jx&fqQL6y_-$Og$qf{qDzUycl9)^|V-W*dkDzc33UNN-0)J zu|kT~QLKqB*4Ve%P+L3dFbdVm)+sMHVjTlvloF*JFUwF02G>CwfI~=GxuP81Mjib| z7t?n?@{;NvVfdxhe-P~rn9yva+w#oFUZ3UZgbCnK`*woP69C$^2xFD_Ak77%dz`vU zbLEk**{mRsr7qAa_mf)J&(@lcR7B5Xcyqu#-{|0{#-Cl&GyE;?oy6^ZIKY>osae4h zwW~OF0LMq4U_Wu`n7j0XyL7=_LTer4%-Z%9h=Sv#O`HzQba3D;TX6zRK1I*CiSb?g zAQ0$S*d_oR|4i!PM^S=cNMk!z!DMhzcMe8N}{e+}ZDKk$@NuNU6 z7Yg63#uDyqQh9GEQNyT~m)-EhOl>UuH~}-HK;(~Z5kAq}sF+cpp_!UX zv*?kF^MOi3^svPGiRlPhfRIq0>?TMMmR8Unp^4(fe@Ah!?lD|PaGdUc|J6J0z3~(d z!RV}FP!L@mjPS4UGA1aMRh$T|8N-}mIjY7h`tTKfDB13Nuz9;!y<5b>kd=u?n^7-X z!-2}3L{fPfL5^ob@RfXUGwKUg8hF1+xS-?1vCo6oB)9k^Y=5zCnR6@e_9ERX*99x< zwiy4H6erU16spTLIoTUy##)NSc(EG&kq&{*W=|{Q0gMo8kZo~N{r;$rqlWXU+I~nC3)9CUKGv#u=DQUp{ z!2uohyo?v6@`C^NlKiOk|c*bFU%&AxotC%3JZ_<8_OjaWYO_A+Wm zP7M;r3&&RtIKR-|)j1}XK3tk)>07mLWEXd98a9H~iQb-2Oz9ips3UplSuvSLch4Rg zb1xjsj`P;hQv*_5$hXY)`Ur52Iws2K{BK3M{HpY&npnz$O9vV)FCQEoo|r6QSjgYq zQD11#CCjg}W5AUE;&AnH|I;m@;g-1d{$Z#L?Eg^~%tr_Sz%&?wTrbisX zVDg5E5+Mu>;K~6%l$PKMy)LTBR=NU|jbJdsDmO>)ob{wpUv8J_?<51J)V8M>C}B{v z_35!Q$KBy$Cr+Mr$4(!07tSr7Jaz1xD|FMiy(AgINEG(%hKCQw@L(KGD%~}-3vl&Iev<>gJR}@NF(^M&;cRuEZlM&tzz)rh|L2~PouMt z(Ru82Z*`(-yN;O|3Yv5qRhCss6H^SKpu_lgm?FX$=5T`H6>{$Xqf@5KC3~6^D8?cE zj4)=x`b~?C7sf;N&YaI92E&;0qy24Bt~n}6i`6R~W0ErUMw_kvO&Mb5smDA&QP}A- z=U!YqWmbT^^i!g($vlp50j@-t>Z~&ndS{xb4S>g_-vn@zq@>bAnB}OEplyU-l18yD zowINmz&DtRMA9cN(0@`RN%^Lhm$P!%Il`HJ_$0VUi7)~0U zIu%tCjJx2wed(NnHzS7NzHw?;t_d2q|AW2r4vex$AOEwvDZo-f2Ps)lq$MPPB0Vfg zfG8=FP%R-9B59^jY{^-{%2`qG4o*F>>)lz;LKN&M*s%e2tYAk4_V;<_ec#>9lBjpy zegF8~P4eu#GxJREGtcu3XVSF0x~lr3#gPG96Sl53O|v42=0HkQ7m3OdID=aVv7C3O zEIgtx?MAzn89!KQnt6X{f{q_S6YF~pIqOU)?G;e2WIuynv%q39U`;@4~}4>9ZQNhDyZW0s$@}pc|nbHIAm|oC1NWV^lNr< zrnQ)X&f3>atSl>^Y;E2nJ(@jWi=NC(p$8Y%PT#~pDKL8KrALCjLDcV-cB#g9J1Jzn zWIi=XY-3C}VuMGWNp)5EibWhevCl25<}|p9`vEB`t0`hMH|q&0S+t1#JQ5@Hbj%zT zR?|_~QZKKAa)d9=mI@4u6^p#;l2gi*#)OkvdVhHp`<@C2MHxx;bhxfSqgq_D+~}-{ zEsLrmOQ&{A*uWG@sj}kNX!=GMQ~wp!RnV+)WV3>CO&xR_WPYqf)pB%L!}*@sFWPCh z3{J>;_FrD&m^k_mX2^Uy$;M!%Rj&xlB2O}%%w^iKWIBbzr5x#HiYl&!xS)oOUjd6g z4ufjw=(RK#HPw_A>N2K8YAWe1WR2kgN(3erwKN8hEe8(GYb;#GGPpu?@ng)TOd!?l zJ!+U`s0*$Z!i<$c2acIaDj0dBmNVZ12n>jo7_3y%dRcpN^klU1puN50%XD^r^iT2M zdqI@9?Vb(Rc8p!vQ<$G~=UWYL5EF$N2K1vIIU+?>iz+!GDW+#u@a7gnpkAk#2I|~h z>40p{`9aUk{I>heH~Fdx%6om=_I4yOc0?X@4ZJO&3Gf1n(*fuRbOPdl&OjHSJJ18@3G@Pb1BU>8 zfWAOH-~$E#1A#+{T#rmI;5I06YE{(|E>!3GrgNKBR^*$>_=gSj zX|;*DtR+e%0y(>|yzFGCk*jRIj62}6qHwIVl8Q1Z)}KOU{|fW3E{=bVn47vpgRKd$ zEl7c`VMB*N5jNfRas?LRZ0_~He{C+g&UmYIChSC zMhV5m#YTYyzbwzqjR&D8W?5q$>xE)oWv4HPJXlVV!Gzhi7Fy!L4vtM$$+A>tsrs4~ zxkZc13zyhAw5)vCaa~(TNm8sWqS_^PkXvi^*7YjmJD03E9JaDWsj}j9Oum^|)ve%4 z%&{@00+4hq^ONl#W%&n8>evtC* zo3H(@cG~8Yc{d&T+=Q%Gg8IsH7EqMiQe2s5cgVi;-C(&oc#-8C8P9JuM~3gDBT{$b z*?ht=PsL8!6U>*BzZa|WW1sK+QHrBG_RGD84LRe&_fk&Ue)9PjzrQQ!?!?P35VbQH zo)b^P%h!C^Z~Z4he8;~Nu48U3zDWCX$G-Y_#Svcw<8i`q(&wZnQopg?v_bXm?ZJAT zvElT7V;5}>nw|7I`EbmR?u6%<9o-4X(H;Me*~!0y-13?IRM8MwC`o^;B>i zaNM169X+z1obq?@BX!5!(Ld_9e%Fi<@1$IJ_fdNvD}FV_XeCq)9rG`R6IvJ4DUmwsf+rq`@_wGM)owBWy}HvvnJySh z->}PLXHa)Wbf@MW{7Btu5j#^(cx#$xx%b^*xjJ~3`_^DfbMXINdSnZ5(h;e5IQg~< z-dy}vO0jYHJUCN3GpnOJGmq24oF3rVJGzrUXGP@LJN}#&@7OzfWOz=zj=kgG!FP10 zD7yUc&IpdyVj?|lv15SH6cph=mVflC3QwTpYTtn++G1?eiHQZe#+!jO7qoia?ivq1-Wvwqaeb$`xS@~K1%yf&4UrC&lBW?Pe z{Atjo8$pHyVvWZVBtDpnnzHtRCMh>}%b?IZ>^Vm1=4h_2@NjF67Hba)= z=i6U;EnnN5d!!i!`JiH@!y8NSDtEzT-w|-uLEvTbX-I%93ST9%3bFwWad;($LUaIe zKD2HSnn7Hp7h{PdNBDA-exkb8H!yL!&HFRST$+s>s8wBAQbI|kz;jv&1x%Te-z93K zK9dlOe38Pj2m`}7Gk#lS^%OA@Zy<1iCIQw}$Yh}06UbepN^0sBS0Q{yiC!QTF~3^; zl-z8anqZ(!={L|~ezF@&klPS)D~l4aIrmI6W*&(34ZEnrHRmf@0qGC7*S^F={ng?Q z7IHhoUJ%C0O?fC!o6peEhI4pFSU7lwFgF~}SlCn=4pM|)IFFU!I|AvTkn;1z&^SS2 zrp&(nr1+JF$F#qt7|N>`7l@yiq;Rh*gYroH^%dnZ6_#B| zE#khiTv8X8Nm{|8MI|+oRszqiq{Hu+ZUvTZ0!yd)5m>~WWqLtHMS)~k zs2K(|!$Qq~hfy*V=NMR73uIRl_hxv^#bE7 zX_;+BGuuQn+lpqkouAnn@>PzZts-$E&>_t*qSyc)Nh*H8yDV)o2 zw;2ryzL-WEtrjL+(?VeLSyU&BHIXnT@&mH~*WVmyD}Q8}m8de4s4^G?%B9Ronjsye zwL_1~Z=IBBt5UKM5>Td+#308jmnEi!m22qbRx^V+YZ2dC)JhsABAGy`O7Xs1YdO@)-#S{@*U!&@EXkVTMoD0d%xPc%e+i(&FpCMcwGRMaDZj7dQ% z3n{ZogT_c!StblB3ZxD~xk5qsy!N`vda1JVS!MEBW!jOF5K;wjk?WvnT78w>>Z^<- z5RwV)Y^nZKNR`zQ2wOu$Q}*F1EdnJ;)E|fzb&|xQq^4S`X+N+9S5u7|SVbj7k2(}1 zhlp;&Y^g>G<{v(3VKr7k*3kKC${{4R zO0dS1U~Qq6BTEnMleJoKh?L-Gu_583heF6#QBaCj!AQH|l{-5Jm?~3e$&6VtXO?7SP8SVC9Ol&wn`S*I z5ko^Ja+Ahjf{b(saYUXJ((+0eYv`(BpVXHwBaO9EKACUBK@PiWeMKew?Ll5|O4i83 zph401Y?eJEK>~hgvxI_nQ`z866EO3eEi9t0OrJ$^q;lxWWf9baWyK6f>C^HgWBQCd zxFho5i*Ryg$^RffO3dz`nK3zWUUkGud2$&Kmy}r z%V-lrXclK~2rV^z=FD6>V*SqXr=?|NO&4RI<4@IZXT=jtjHW&{d*a57(=z6zr{!iWNDucieU?8hgEI1GO{eM1NH=BHVtli*=QfLMb~EDF=F%yK z3@RR~4ad}3NE8IzHVKkFJ1Z?cO^DV%v*m>5=FOkkERng{Gc(d8BWq4ZZicpS^QF=k z@(3u+pF0B$Lw2TQ=SW6cnxcfWUuXl?BAatijnBW@tYEb&x52L)hTy5lzzzfoj-#Y?c^Q&LZ zU$nen++RQs{oN7x35<^NSr9Me)&a`d_KbINk|SNELQa)#vIeT$8)f4`p*yj(ruW3h zG9VU;+dBe>13jVZJrunIVEv6ZUq{;JA?UHd1WD(2hHa~u;{WTeDDR^&?*DG(a(kkp zV`AI1ZRc&@p<}1G&Rx28>)xYhuil6B>D#Y=yl=q3Lk}Bt_~0Sd2?ey>M#Z(C?~?eO zHlA3}=l1B?##`1tzFlS@01vqlAkf8ej6^j!UCplvm9Lgjor1AY`85U82kRa^2aZ|niXS^?fY05hPoER} z^f_u=^_UkQ%Z{2jaQeWMfoTH=&Kp=VaA0&y{=#ulPFY8lE;`|)is+cCc@s_!+SN=v zu6A<4G%HjpCdFTv;W$Re$nheM2}1j9DkWEG$057NF)eSlv)ya>U@Nqx>>{tV}#29g_MfN;{u+)P!-9#Q(cJQQmK9!XB5)?Q*$1w&Jsy z!p$u)ma|L1mnicCw?dS7-1v37a#wI{1`9E~C^gENP?@MJBo=_My>JM{Nn3D0brxp7 z#)~DaY+{lvh{P1@&|$-d4Npi&45|@H$sDx?WM*b%WoL`O@vA8BH=T7X+ZWg+-_atKk6|#}5TndE=Z0^= zLjgJ?;~jwmfy*(qh1cPZz(Z!dywe^v9UPH>he6=b@rO+sG^Km$;pu~C^g5<@<{?A+ zX7%fzbL_173(A*N78TDes|_nIh@_27z>?*QIgwOxDv_clI6P}6LWk2nR-r|#G1=^> zdy!n~LH#s5p{!RdHR!02qwQv)1=+KdA-J977Zv5p zqN4G>Y>O}25r9!l8Z5a?lI~PH2S?@vl4+EEd##>XB4xz12bB;=Be1=2XoqMNP9}?O zwuxHU5SI!$WqX3~(*pAZybOY0&yK_7mOUoh8Cup7R$`@9a3}g;JSSG4Nve8=uqycwgI7R;j6waYFB6c4VC110r^3SH2GyQmcoidll+&?l3~8d!Jcja>n;a_oJGLo$9bd%g~Sp?EYzPO z{UNMUAM#Vk07BT6pBAo4_`_|ToYagoD5DGxi@?gN5kB3i81~S)ia5ihNAs%x>ITnc z5#d;d+M&vLiwRMKB(61=5QeD|pJvWvf;b6D*ODf9Ywx4UT}DZs#OB@F4%r4#-Ym{C zv|Wo_H{K<80k;5`0&4)9-`;9h(yVL1;^ZvY%z-WSU*}s!h7wtu=}vP9r-J5iw+<;B zl|zZlUYHrPIURtCFvRCAh?Q}~zQCd=#r2%08ZPSK{!mV;uUuk_Ni4QG%$-z7nZ0V( zvjntfOv)4^gCS%vEGoFu%5wvNhJj1_+1HLAaci@dO2j1@Kdb(Cv`4_c+

d%;F~)c2?fetVaLtdK9tjWEQr}cDB~w0E#Q_ma;%ie zPDSN0cq?l!i(fln%Ehp}sjN`56Lvn}Lv!RU5x#~R9vWxyW%xjZ2S*{n3QA4$=lS)3 zz(`3m6Nm1uIGaJ>nPIexOnNZO@P%58|K^xqkF#Ml=2bvFWUq${-IjDo9dYBKj`X-h zq<<=xCNVPR6!;435&8ksC8tMr$yiCIO=&73s+Te~2XMHSat{F`CZ0Jegg;EPo1eyh ziGv!$M2YuwM1OITX>le~b?`wGZym>Di`a88Eo#!#VBG>Os^`e1vQUqy$UmKBIVWv! zVrw;MYto9rkL998sj_^?6XVvB`sxTxogWIf=Q48h@%PA$_ zkmVKSLw&)r;)E$!Tx{BEd{&XtjS5H<2WRGZ%37Eh(RVF{S4lp@LkusNl!-Jd`rtn z&y}pqyzFDrvm70Z>^y&7Mt0T^IZaq2>OJ51q@-obmW^08dPG&tq9j^E(#Ub+#wG<* zz}n~RXzyR54#pjooSd9QnO4>+KPDfO4#sIAJUH3Q3z;2;95GbV=W#EZPqJra=giMf zOP@M>I_uDM1U7PpuRN68LQVE1FCUaVtb93BOnJR^6Uan#_C)3cU@dSLuoc(=ddcH(rqfG4tdrGN7HPW@d0oG%Nks*%`C=Fo$81 zo|!|7@n_AK94o~4D8BcB4}cGWkAPjk$G|7Rr@&{x=fD@hZeS1aCEybOJu9QV(cRlA zkFb9;-#cC1~H%V(z$m~_2}a6=w(_Ct8C2APK;S$e)-tjO2sGeBLDkm{ z2lktf2J_2Lr=9vWavwjo7d6|8=IEh=UKs85PkAlC$q=fcA#Z=6lN{Kg22}@k@DuP5 zld847`Pq`vC{fd;qv75_7Y^LH0Eu~zCdnFq|LA{cdApdm>X;@6~#eL0^5jd|@4 zfx!O9_46(dTcMrjskuVUCn~e|&O1rm{?8SkX5!#Kr)KamKRM~uUQce&PosA3pd9w^ zHfG}Beu3Z5x-{WWD)Mr!b?3kW$pl?=7n7cObAM|E>5f zodWT1#hU)2Mr;p|m0;Nh;={fJv8IGc`dzD|z1^)4oByVWe`{-Q zoy7kwZcn=xQiaW0TqAjIARvX-T9heuQ#OjE#i=$;ztF-?wSBbS!VUyz1P}I5ys##w zogqLO+KMK&I}n%@@O)ued>u&XAJ{@tzgVkH>hYJ>j%&PY3-$QE)x=&pZ=9UiMB#m5 zHL49cmQ}#B?lG&a9SH2`wBbM?<$zoKw_G0WT@;9SgRu@c z5SScR-SMTNW)N8RuZ+Q8(W|~TW3U;A|9FKx4tE#--F(0DA0LO?{6-c13o0f;#i|nj zrB_9J4|BP`A?x1)-vQqPd+qNZ(0>GeVs2^zwTpcQ%LL_|!is-84pCjYa$4@+!>7A@ z5Ak2TCfYlz*~!+w!_ZUwpAm4vKM__h5`Hxa@9iCMXY{IW)*fr~lAWX*d?A%0uZfZt`Skj;M z7iqwjHZ|S;;D*bnU95%bX1Qb{Vcd{yLHlDZ^S_}Vt@>kVJ+qGQ|8M)zfj>oii+)u< zl6~~2{lEbr00?6mhrZlbF!%vcKr|2o!~$)Awm>_8f$+<uGNsFO$N>ZZSlA0tHyq&bTx~M4eq}oL2u_~GyxU^0*$K6ZIPDvsxBUKo|Y?Vny z;NgfO=V-}#KnU@Z(8)Ps@Qf5ZWAz_Pg(IDjgw!ImMbER0d@w!v;rvFQ(FjUogT94h zFQ@^zYi}LPPQ4L9>3HRk44N0qq_WqH;Mf8c1?gng&ORsyFmGIV9p~-KrsYcB{8W=9vphrdjOfa*A`f zbd_(a7b=KgH3y{-nsM1!&*cwKI`P_xQqd>+^k_4jj#cQ2HtgM_nV5M;md!qf0sLQY(w}shPvC@>^6i zsP>>1p_ap`_F_m2ojbFLl7p%(LexBuj_B=+wm&@=`F|a#eYTMlSQ8qS};ITn}m;aNMh`6s=tmHfvhVTA|&( ztVeXpOL<_!444_YLK9+ZxLw6(^LC=Em7;A`_rJ6(tPEcAH7y>#?fFC z;+rc>JH^%ot7(n)WdM0hQeO#*3! z)?vDJu|TV?shd<=QeH}+hQ5z*5fyD$#qya}Wy-km(7M(_6l$14^sX|&x+Jv*n$xt^ z8^Ze2g0ITZaVf)KP~tB(&(e@=4s0E5{=#ly%TyIdK+6;>4m*9L-ApBm1Nl8##fzHg&c;iq!q($yra-H{1jWyM%VCX zqieY3wytKCoLG;p_@|?DP%2m1=C$Z5QSkwE4ZjJ!J^FTZ^`~Z)w73gh!~GInr7m_k z(K7czSE-8=(WBWA-XHCKbyT)h-}dNXIu#F|1i5B{RG3;_VWK?kW)kkrX_`h7ZLlGk zLwcJklS^vI=(PDVdL6-?w2>COv`TL*%VdtN+oX0DCbz%#12{{oYl}oh&{jjlZK&}O z5aU#zEJguXGxng;1 z7~1cNiUigdS0%O*jD@68T3=S2zs8Rh_b*_Yj;fQjRjK(-DcB>LRZ0*OG@B&aiPk{A zMYbSW=0aEpXnlFbtdnYO3I(Um4VeP<3Y9__c4ZOE8x@GILj-c3wR;9@&o^k1k4~-C zrjMWv;-L|>D1xIVNO$tHk7x4iSY6EuZ8}W5aAoL)WdY+^WulIR?WCO%{Ab_)>TUC& z5u=%7_|dUs(V>hOMg}xa%=HJilDbwN%l$u0=I^F$c1@H={BlZpX)P;BYZPh-bN10HLHSctl4LuSe@vMNo!(ibL4#!S~23kbvie}1dGzJBHC2*)Gtc|R&i#= zwY)&7Q|ny%L(68p3z&#-b?AyB)~HVB4J!&Q1V#`j{)3B@O7ZdHj{Pv0a;d-#Sx4O! zDuIwvcI!M%$2S6e&1yhJzAx5SSVmV4A4wyi2eFa}1rbg`&yO;A<`v>OwgF4`;gxxgCh zDZ&bttGcH!%k*Ypm{Op+aSat(vp$PotB;xf$_}(zxqj#wbtS*L&pL$T%~%v7@>bqz z=JG3{6sdxGjzTkUXo<0F==_Q;&;FlrGEX7ho6RhF533E>? zo1U0jHM8Is5wjTAo!KTbyjjpUF4fp<1lqYu6z6pZi`K_PN?IqG8OXf)YK9_z;9vvR`Y`p)z6FgkX7H(d#T?&q|d{p46Q+De+|s&evCpa}heNr5bEi zEw>$g7AV&+4UcCxtj8xhA*-z;Jv@Azp|lOIuKRVrr%5q%EgF+~5keOlwVY)!+Wynq z8c zmf_NAU-~>?aCB+MIh|4z8X{LAp@bja_=1Q75WHTnd_=gTZl;+=3(QO4occKVWf;@- zpJ=-?Yrxi*Mx;e2127Y*K8vc3CT$v#nGRulvIv^Z{GdA|SXyf{$!(? z^Z(_VFuXR+DC#SP08{tu&4&+Dy;}Uus#cp|i}l*9ZvKBkUgYC+HC*D>pOkO*2HFlyh*VHKQ$@^m;Vqqn(%4rDhhKG$$uF zl{H``4_AV0z49C$STGuW^*R)(MF1X}-*us?Bc;7oZ}FTk>`c%i%AamFNOU({V>hD( zx5g2DCBr&aK%@zK2-al-jnA;R+|?t(N}!p95PXF8ax%hp&;F;|25mI`EZ2213?44w z86J2<{+mZ)g5J#Hh%k_A5em!nZ9Q!YT5{$@@b*EV^Y$eoQ53;?oKVT_&H1eL-kIp& z-(ul3+v+qc%g|<*^DdoYmE75PDp3qi()2N)JD;aBufo({t|wy*#oMs`$v!;+P%$jwTi?(sgQjFZJDn`Ec&nAs);ZN94W__2i{!+M9g=zRTO(wmb!fp& z{AQPBPN}%)GSiTuS#Z zzBgRbwc5p#Cle<@qB~R)^(l4)ApBdR`gbIkM51P#?2_4>hRy-z0`v4_6g36=`Ft+` zjsuPdc&(dd7w_9sYAj>y^EpX1l4cAy(12EOm}!p6s4UX)OpY+WT0Y~6;|BDR=&JNr z<5i{4zo=?cR^V^y7(;k`XQ-YI*k=UIx?!!}SQvp-_DOW);mI*Nq}P`#8w}mM2zexCiz>Ah zj2ZgU9>O>ZiYfFG1jX=>dRgg;(4pvJYGervMsRZI(#2d}a8$Y&R_BrLBdILm?y%5I z|7`3E%8g$;A@;$#c^Qx~P}@*Gr=CT$CdRLPdI==(<%VM|SQ6&wTeq~O!2G@ zm>l)C(E8O0(K>^&4y1H)sAUL4SEpliDmB=t&X-#2OkkC<;ulpZw??It)-W40K3gF< zHDEEhfkPPiCJZ~OsodU{)F#fTud^TR<0%iu?d1+X5t2iOR_0Bi$30ulIuosy48j+`0!Y04eZlCyu#^wu47vgaa*&+?ly zOJ#@T&C0N3d(6UMJy|N#{DeJY{?u8p(BvAleE2X@K}|&_hi#MTpQnr&!6by6{5d(Z zvgg@uGCM0{8gHTITc|Q^_RN{ix2{LD)gXt0rG{N3$IkYr<&*LBd@BtJRwsgU3lU=$ z8Gzoy*0S@4tbpaA4k|vU#|iDKJaMw!YRv#c%hk@1I>I8E^zYdNrFkl>0bfRY58d7+ z>I!Xd_657q8kfT&gI&bXpTFos)J;y9F0WMSO*9Ib)2p zeReRCh3=C-m8MAIC;9S^!S(XNr%%eHQ@@n&$HmH}v(A^FmV6@df6eET`65a7%#l;~ zO_M#hE)m~DTV%{P*T{P}_mdL~elKnMd?@E!T_Wqc<;z7=7E9x{fDEq9l$e;2^30s> z^7Ku$a_YMaWyyt2(tFc%d2Z20X}jw!nSa(WxnSugxv}q+l6L3Y(tGX;@|VfcNC61Q z=rdB}u~EBZP4;$q@bpn~_@s@}f5~oHyZ1ynGJd=?eD#ccd0sy`ZS?>->9Et}mC7F_ zIdPeEpO7l|bbCTJ_Wq;XzUeVZ$n1bmkhLQNQriC{xq5Da-1gISIiq2l3@o`%M(tW9A8uGEyEi>2 z7f^t;`1_@j$t_A}}7 z%nR0?h&RNyKV}?WJsNyE6*cK69tk8(m(j@&)rP5ET$<8s~)Jtbqw>C$iTKjg}?q4LD$+vN6cd9wQ5lVs)Vt0bW& zN1|?cM3%)~E?*~Ci|iXLpPYP?ls=Xr#XBd-Rd1gq*QZ=1sh97U4(DDdBmLXu(s6&3 zx2rFdp7(tuZFWqM?ne!m;~Uq>g2u}vuJfhRY1cL>Z@g393>+h4S9g;6y_QPhU%E@d zvk%IXs~(WJDG$qwUqvCXaj<-P?|1U%zz3yWw_9Y@;Ym__)>3IZVYGC-{17>I{4LV& z`p4wX&+m}q5APxsk7Y{YDSwcrIai4%N)xF<}q^XrI*XwQx{9`qV2Nu!rij?f?2Zf&7(zD3@u5PxpOwi^uTyI>4yiT{*kX`$Ynd^)<$TAF8ofSp6xC_4vdl4 z-|r`r{(ghZ?Q@BYd9JNwP5oH9K5~PMKJ*^hbIT!;U2>DW_~>86o6<>+TmGCJ`omH= z^@1o_)w4#PxG@)6!FOf%ry|!LJx?~hai82$`VU#UWsAJv?k9i!GEpwP`cc_<`!YFq z#vAhe3G3vE#&6`dJxTKRXV*x|@ej$??G>{6$#@y|=Dl+LARg+x^BTE5_cFP6Zj=m7 zyjzZGJVV}yT`x;-=_sep|FiVyGECmOFHwH{V85(-^MI^+WWT(>v|M6t-Y1hAtL2=^ z?y~>9fDD-&i`dE0GOX9RlKJo_^rt)J5=8o4v1pu(+;E(n{n`vk-qAyzOiYzQ1xL!$ z)z3@vv-it}^8IpyTqn`x@5_R>*U5mY=~CF`MS0-(v*AF_kR@|=%GI-6@NXU^{a?9H zMt`|Ux>n}P3CZuvIU{bCet+92e;zeP+T3@8eDYVusP6~JC1vl+U<4?&_cSuDCrb8n z>%{k$tL5+4y(CE|w3EAkm@1v$cven-WUE~J=A&|J&xhri>wYI~PC8yj%{v?Y}%9f*t-6YwY7D(dW zhvc;dYvh|JuaFLz7m08DjdH`>eCd|*S7{u3g>3f0uKM=5^7Qt5Wy8X6C9|ZnxMG*c zg?HU1e{0$*$IhN1{eS8xSJZ5j>tiNJ)0876=B-m@XZmKz8v3KW`pi?Z>ubN9R=i!V zE#4-tKQdBoxN4&;oAhcmLKw>i%(6eH6R(Q5_my%;_5D(IMX?;dV4?E(f_c}# zub;9;{*>1w+2{T!b7J<%2P^K7RRhP!*xLunqRZZr*}HC$GY=mt&wO;P9NXarxq9?p z<>uEqN?G&_Df!zTX;`^lR?fUiet2Pw47l{~a_X5!%bG0%WXjsNixk<<-cWaZ(jW%NAVvjMEO4P7jQd_1|7B z-R68G1HNn{_pqj^IwMp5()(Ds=Z9P6%pI@Fm2VeFk1=lITq|c?_h+g3yh6rZbc&pL z|IM;w)bTQH@Nv9L{JFfyJI?#QnJupQnX>cbM)7Z48RNa&HRY!PKcuj%mBh5V$!Lvh zrtO`GzVO)1%O|M$tUi0jp-=G*Iz^AA8V8>Fp1y7@{k|?cvUiuX3GS4H>D?xcPHxvH zX4*07M|H~RcyUk9lztP-hL4FqI}2l|BYPFs)h|u*w`~~L z`Owr+Q&*jTL3GsNLk4#k*8j*0V-J~eS=Y;1NAFw}r;USTedIVftz(t*T z>{i1xvJ((J41KqzVQCq;$mX`8s?=vojv*TsH$q`O&)a6`yRtR))hcwTb_M(83O!>k z*UVa2*g(?9O$$QDp_^LD-MGoLBQBgHmL-x}Q&n4=Xho+ayi4$3P@HH^x=aqOpe4-~ z!@k0lh9zA%)w;LWGSf1xQ=*~jl9HORqEjKQNUEr>BqFl&%OcmzT(2`a74|U8r0d$PvJqw}$q&HzT&AzoYt*cDMzbF~G)!UFJ zQdhPi3(Mx>2sfR`Z@!VEJtEEi2 z%NbRjo+&pbrCEVE6Amz;N{*F1k`!^dh?D3`2@)tgw zIFfg$Xl@XY8fA~Ap@Oh;OkA8&Tck!#DQK!fmZ=t#nI%H0R8M!U686`kb{fc`){K;(bt zVrV1rZzTSW#J`dFHxmCw;@?R88;O4-@oyyljl{o^_+KLajl{nZM$-r39>9Nl{I|z{ z`t(8D^b(9xlYN$i|BA}KB|InGjuNsK$<$hf%9t*J4sIsD7^N2$-T zoh`wP|3oM$c9L7yI#2O;o|>ALK5hDp46u$qW@csqqW7y~MVc*s#>%2e4cux#J32y0In~ExgQmFV4 zS{y3M7ZoNtq$O{GjR?Vr&k_Gqe~R(m9_=&Uc1#S4rZIjt9OToZ!fhgz5sqPrra@K* zDzM?+px_YXZ&>O8QHH7A@dw@staVPh9U(Oqf-L|iHkn)?#gkr!Ze6|-`hLu+_INDG zD7fto?05&kBL@!Hf=Aw4JKqvK@`WXMWaD|g-3T5@kuNqN)@1+Z?``Pgl8~U1&)-|y zy9q%hZd>q3VB?ehekV<2#uhyC-j03?J&OOCC3r;5Q?>+REOQ|6(T)=uHN1VF1sW)! zpOP9H^TBR!i4AE8#HRSdWRQG@3=&`9Yt4gZN?nW$lK2BETScXd*g14cr{M>6_~=pU zbV^_}?tu+H{SAC?e)VTk!zA-f8++YMM*U&QgA`9cQI!+1;GUS+#j?%}^0qbib;qW1i@ zEF{Q(@n2%RG44iC5&N?aLzlDnB~8wGIPmq(RJ(+^o_Q6AoF*#mDgJijD>k58RjQiRclW9eWBO-3g_4@#_f}B=^Rf7bO^nW?%r^ZTuH13AI#^|&|%Pqyy>|YaWgY4ZI*x!)<=0Q$Y z0Je3ClP?|GjMCx|qVnHyON_T*hm9B1DB6IBiZsJ}Q_z}`X5T&*Be?D+k%7Q{WS780 z!P}^Il{@w{*t>3x@lL}v-omg(R=yhyPN<2bsCy@*AGHvwI;kKff8%X2UT+E_z!;T& zj~y)t8+s=_kA7_Yh7#4}n5*{eCQmdG6nLa+C*JHrR<8=Qh{oGvyzMk_qv%xYu$btW zHNQGe+a*a(aB(?x`6Moua`5}>XzSlY5dAGHVzHCxpctLTvF?r-Z-;P864QiTjDxTf zgVhvua`HFc8RNC2u!9h<=`aPlH$YH0xrnz3{VS`z8Rs45m!BQQ+XJ6ci$-nuXvYpd zPR-wE3e~dwh2Iq1!Pb5Q>_7t=&=fQnb=-oE(s-^s@O`_pKe_UjE5HB##K2F1PG0~{ zS^4--CRSy5RVG$tbXDfoa{%!%X8~@&14IG3c!&Yo0BwPGzz|?4kPjfU+~4%q81FYO zzxWPm5?{QyTuGx`uIOolOH{3zFv zk4CvVY>jfIbc=R%9T}Z`_&V_aj$HHS@W0*V>b%$G8a&YL>b%Y4>M8wQSFG#r%5M|D zw@t73y)i@3#{x6>UW~pHSOeSy+#kQ!{g3#2-A~2e619!*H{$=`-i7{2{A%~!_(u1S z@n^cHxm|7JqFtVa1LEQ&AvtMLf-AZ)!BzBWg3B}IMpt6vjjo;p*Sk85TJM^)V!g|A z#(G!V)#&Tc2LybFkoUjGc;EMA$VgYNG`NyoWwP8Akl(p--DkSaa-Hou$91kN&wZY2 zrE8UIj{AJqT=xa83tbnx-gaH$n(toiI?nxj*QKt@TnpWoyNcXby2{*FxfZ+ExUP2n z!Byq{qpQZf)>ZGm(bec)@4Cr#v+FGPZLZs0ceqx%?{wYe`m5`F_upI>xbJga>b~Fg zfa@XG!>&!PCxFNKd&2dk>uKOA{+@O{iVZJm-7v^jzrK?77(UoaYkH^Pa0c>A)lL*LxoGeDB%o`O))} zXJP+q`~Ru`4w)Z+Z2WQYx$!5&&yLTJpBw*B{NLj@$8U`PEdGP|eeqw%k9U_OOmI(h zPjX-5n(Qu3@VlqFQ{9cOH1{fZy8A-+H=g@FKX|_K?Dw4NIp8^swZQ3~rl>7ZhYxt# zGi<;T89v|x88sklz*z&%9AfYf}iMuG_^nS$&r@Jc>j&)Ziob0Yj$Z=OE%yQQx z)F#v?EKN8gA;sO0Fva~uV2ycg7p`!zi54l`k$(=ioWXIyjx9@z=`rok_?|l4w^$BqZ)K8h>|5rkt+KQ*txVW@9 z_HA)9;&kU`wr+88SqE+1)NPjj{CiaRF7V$IVnir;v*)n8n>Rng+BPnTJMQ=sPRw6e zQ0TZrbM|12H$?~ApHmEtEWnM7E|r0|T+M->cKoD^JhRZd>7f{J?}Xi%y9i@#%s}m+#|DfX0J{om-rm9g7K%o+(yW$i@6V+@!Ma+%r zEOenKFmZxI8eZeeMJT(`JLyi^(_kv_`#=NxkV~G{ZW1;$?WLvOhUL(P21!28Wc8AO z2~`hnVx5{X4yN`A+s}}H~0gY%1I4IEeE`C17 zn`xg@baFyfofh42fFw`@D070=V7ps*R>Q!p32U_al#vTn*ab2=OHC6E@L_T)l zPhHd!)zHfRLc5Eq6w|ZBzhw*ix!@l59g`>x$Wo?EG?~p5rM`M=jQ37gK{*dwz^9;Z z%JRY}7p+AQ%$LJ&u&As~4CTJQUCQmLlGa0xuQy`QFY8-y$iBgTxrM4lfvN+Zx(WJi z^k>j(&^M!(qCbybfW8&I1pP&H<U9FdFhC*+?X$DP>BbliB8)bS@+E+NBl<4v+1hoB*eOOv7` z6B$Ss>A4&Zb=;O^ZAnJB`=pDl{{iR zl&J?Ne`neO%XCUtqV>nx8k;?_F?E(s?Qr+BixpSbwq6F~wlVy8B}Voa| zX&&Zlryg{7?UuG`-Bv^MivLaUTr6ikLho+Y0OqHy`PD@MZdYsrrz2sach}8%l>SIt zE|XCF;qm!6CZ+P-Nia9ZP`S9fBJQtxIfG0Ai znf9N>gOMYoW|{V3X}roUNp%&~3VMf_Z@q>m%Z6JRz1FxT`@w?fMYp}3(kn47@23GD zr(FBp?_TuQ?zYW8q`X^_G_Ya#DHCIl?>74I8-F+P;b-@pvNE>XHvfL&*rLxTztJfp z<-|3oro7SV>6EggZX3CHz`)UWcj`8J@qp__JK@^;h8G8nZaD3A_Y_-ain-)18cCz& z-gb(uH);Br&+MUb=LXBX$2K#Y+A3!2mef!8^FXfuO~U!cJ;ihXyT(y@yUu2oI0tZe z%+BTeJRqFMY$aypF}cT*tme;nie!J}nG z6`Qq|wkaL|VgOxy=+eeHBh)cWyS|P@Iu7Y*qhpN@fI6~t1(bhI21Sx7z7*+Fbm2MU??yQ7!D)=iNFXT2}lM;0;7P@ zz!88>lS-U-6u|0O#sN??%LHH|FbQB&Xx^llg6;>V0;xb6p#5MPFddiy=+^pZ;22;g zkO^b~*+33(EHDeul|~*g8<+#=N@N}|A6Nh!2OJNa0GtTq0}FxwtN2ePuG4_ifinQs z+B?6bDeUPclmRCJOMr5q0;mM4fNJ1mpa!S~ z>VSG+DXfIMX>f;)A{mw!xO7>$}%dmWKcC3 zhYFLPp#7BIs`-{d8RG|Kjvtik8&o}L2A^uDN^!K1w6E&77OL~Dg`sxZKN9V4#dW?F zSKYP$Y5&#l%&>3mZ$3cnO(N`X?Xw|#|JFc^_u(i-YVHt1(trldEDc-52>iHM=!k$? z{3)fD{P&i5UFhI1!y7w}i$ zZ@}MyyMcQERdG-7{uST%0g8V=@Br`+;6dOaK-Cf8JMbe<+q(NF=rm(e=oJx$WP=li_fX3k9|6I8n zoC4n<9?*ne()Q>Zq;0~)rRnk6--Th{8n0vjbKyHUCP4gzHB=M+uWMZXHD||qUu!qz zF_&zjFdqlBpzRgP7-&VIfICv(HLpu25|tz{1l;o1T$rc~+uswmzbDb30-gq*0iFdm z1J41^16zQtzze{OfE~|~MM_Mav5duzvo=aLR?hNGS8vx5m#&0XqpQNZXu4Iu-`3SW zZ=;o$mvGR$ybQboyb8PqYy(~g-T>^_j^fqGlA@(`8AU}SN9N~OsF-fVch-faXOxZN zq=-r)Eu)A_(-eoUiXek&nu(p7RXt^==}jy&O>Y5j1KWWez)s*D;9VdxO=-0UCCbEk z!!N`+ag$XJ?-8cP`9AOg@FDOKunYJY_yjm8&a#%{>_wQW@X}&F@3Q0k6og+H=g2Yn z`MeRz8?E`sB&@G19h)(;V)Uqx1Y2$_($dEBT5Ge1En=p6%i3= zd;ZK0Ke7y#9b5#a-20LSRV|f)9fs3y^7EmHcKXdi{Aqg)#Z%7P0VOJ>!}P1OTXEN3 zq3OJ#xx3wG)VH-m*wjM0oPJ@)IhHdZb3A1t#h-?|w|TfB9F5q<>B~T@X;-xd{Ljh! z7j_-&M&AQ`38=as_pkW=8qhZI4e%}S9iS=?sw=I-?*Vn+3;Y252>b->1NH+4fB>M& zcMb-{4LD^-KJpip&|g&u$~egNm0+CRSH2|*tE#58T^w1m!x%@ib3zH(jyxi0?eui* z=ZBDH?dMVGs`U2=`&;dsC?8dtTxU$0h`WF9#j)OJT|=I-vg{!Xn&l|;XdniN1=;{@ zfp&lwXb*G%Is%bdUe;=sjY~6$Fw~$bCycNxTXm~R-`h%-?zZj2vlK@@{F_(DdUv?u zp0={oi6m;4;?O$-U4X7YH$a)|djLIw@NDqVv|V#mzoF(#D51X9)4h#l{07C&i zCs+Jod=Cc_fJ9&fkOU+Hb~eWAT8wEZi6hxj!9 zb-xh*Y0p`s*K|An8R!|n(ZDglOn{3m$pW&09R0SXaV1wE32B8rjm|7g4jW)cT5itx zW0lGA#HDGPg03pOOzN;xv#LFInvNwdt*=?=xj-H;8<+#k1?ByEW8as)#=yfe7@i&Yy&65}$S`OGryuXDc_99*W zP3ts?o9rak+euuCzU-hR{?=hdH(;g|O+Zd5UPs(oipQfzmf}O2#9e>ZBrblzD#hh? z5?7#~(qa<-mC?m%hRu=~EX8TWtw|L0$RsYr&VS+cvEFmL?zEG5s-48s&`$@>2qkl@ z&6j9o`UM;RXvens`0}tF?M*F2yA3<-hpNWDXcbL^9d9H0?|?H~iq~3knC$rQrz*TZ zJK^T?+(f|&$wXc>T3&rgt?F}2iV?VZfBU`}b!^`uOXC0laSQ)=e`NDq1<{p!heiEXd`^}8iJ4QDZ+ zVL8X1kzwgcy1MDnX{4K`U(>9aal&W`$H^mT&GMz@@VuxwJnfFVlSVa%r$^1wL{6>>C>l<-r&Lj3iM>JcoMTLOw{1=L;|SMpfnH-LxWKN>QjBeH(R7>0JL1R>^1NDt!3!ct>!`Nq|ml+ z2}kSS@uy*G8L09DdRpq#i5~W;a`2rvG!0IX?TjKN93w&JJI@7rDdyr zH9ob|Z#_KJbnCaKK~*-OX;d6-vytvuw!I#uw-!d4?WW;?klMQ9@#9qpuz9;o<5l$*VVz5y=K(8$+`4hi zaCF_h**=eLv&|*BZf?`TJKx}r99dqq2;s4oJPmW+1FnXtYNCyQK?r{oq74?+Ew(*? zqke{fXTq)M5K^km+2nNwZdtk+C|bU}ps;M|NIlW3U0ha?A4E-8Tn%R-xbqIe z=Y+1Pyr8zWxd+8x4er@3;aBT^@nHO>7V$avFi+ATQZ+0|8vY*e-;WGmH)4)3`fv|+ z9(=F2kfu@Laqs|^862B?*7)-9tMRFNnePiJ_ltmwflGkZK(n$Og#cjEQjD+(B%hRr zhp6G*W~W8Rk2QSn1k&il`u!PDWZUoMJLecoZ?ZSTpQd0RcB<|sJ(`Z+15P?F<@++= za^MO;)oT1H-jzT&-c^{_09OOe(@r_ombFy1rY$TcJdIn`XLi`vM1*}U=05;`JSc3I zU`s1n3|z})Q&`yD$fu_JPk@u|wGbMvyEoQ*eRL;ce<{j37izP^N=+PgZ${WDEx>y% z*nQT5-8T_-UGclmwrg+4(G9z(Xe(aFt~++^Td?cif?dA|yB_!*WZT8rarDG)M1-Bv zEgaQ?oxcUUqa*Bk<2To~>t@HHb_*ix4#94rZP&}jYlmH#ZP(YfQ@V?jBkbB^x1t5R zGh47bKf=^syrxxs@$&2DUeig4{gdHtZdbVH}A7Mv7 zk|7axU9cNz+d18+4|d~hyTj}>E18Tx!cNI%GFq^k)q>rE2sJ@8lXR$>Lb#eIA7i+G&xTlU?C~_H zWX*JAQ>-^yTR%k0d&9mje>Bz*Qr?E%R!1;Z&`dssxx0=^s&pjMkw-_6p5p&l{rCv; zu~@HH%g-p^qYRkXxQOjm)uZ72KyNo|iiLpgzj$MW#SK^-dIPD{9PA~fyLMW6xXHGw z#@vQ-^1lz}wXWN3YYlRtU3~XM*lAD?h1m@OPh0a7VRq_Qt8{CGofhBr2s_Q6s%}V`1q{Zb=#d?oX z8eY?G-b2nlpx;W|8*Zn?);YpXi|vpIJO9~F6XIcxEf`zv5JyDVX^7*(?ACy%Ax@95 z^S@7sopqe!kUfBA6s)GJpP?n|z|oiX#ij#gn>rA?LxID9LBQd_ zU|H#MA4Zt(NCg3Gt3-B)RCg6s~_>N~|;Z~W__<{AVttlS7s?+B-39 zID*{6M^_E*ûpT{t<74SdtJlUQ%1uK;5&?+CmZj~$C(zqIrf3X8ln_i4zS{HYQ z+2vrT>i!5jt)E9D>=f_WFgp!T@m`Ct^WU(QTqfX>NICHB8X^9d(K{qzmkf*qMnQ## zUGLF+9|0T*i~)`UEILO2jW5{cv5AjPeVIQI;NWggCBa<^+ysY^WZ!RQ_cZ%> z?|tukZ}<-9H?y<BPEs|%Zla3e#DAlWw6RvO{_lF6#E@(hkd3O z>x}P*`D0VCIoKjB7~6pz!OmgVvAfu7>^+vaD7O+=9;_r*6>Eh3h4sb)ut01f7L0Ac z_FxCG6W9eT9D9yMVxO=$EZI-A8I}dhiRH!a5oaNMDXaok9jlN1j zwZqzDe`6i^=u`efM_8p!m><>|>wxvD))OG^!!Pprr$}Y=anm6@WeQYQu zbtk}q*f#7HR+fvA3)_Sp!6L9oEGZW#rJVy`4r_x2V5>1zegc0VdyAP^N-kzTSTU?D z)&Ogb&BIn=vi)`NPV5+__FHM)fYpUCC-xIo6|0T4z&c^;u&tQX-v>X%-eA#K!t!)w zSU#*gCflk7x4=4JeXx<33tNt@$M#|;up5}H^APspDyrg2kI#cO#oAz9v4PkaED)Q8 zsd{s5zYqTs%UY4^KGp#1jEVLbSk>Qv-;JHY?qF}Rq+G4NG1^H1E)&uK<4Z{Mk@z_jkF18F?i*3jDVxib^>^ycGdy2ioVzFfP z*&bE^D}hzQYGX~XHdr@o5H=p0jjh7AVmq-=>^SDeu3}HHC@dCB(SYj_RuHR*)yMw8 zx?p{=;n+BA1~vy_`>>;!fdyNkWTqOrscxz=GBuq;?ktRPk#D~(mb>SE2Y zKQKS67d9C4$HrsRuzA=DY$LV}JBXdc&SDp_aO@uT0*k^vVli0KMvTs2I&D47Q_4$y z`D^md%a}!>>Z?_%MtAIC(f{;3IQA7+m;Sz1t&4AYNclju5LG(ZE>-J>snT#tlLx3Q zX%vrNugQs7cuhUyTn6et?UxK zZwLixva(+){#FcoT*Q1ItI`~Hsaicsl}?Q0#&ELAl3dsnK46q3o(fOn4j=9?T`eR9 zVl%Lrm};LOOr`v-xr1)S?H;~3Rt~F-)xhdvjj`rfYpgxi3G0FN!3JT**29MHr6{ia zjK!oSFAWd)PJ8ps?yaIA&AP@`t%;1{RAVjQtEzO9U8;g=r%D6fGJd1fihm&&Nbb9l zYJ=ov~d<8^>yUZ>Nu*=jP!YaFLqFtsQ6xZ2hfp%FU z%C^{L^X#(3l$50qPxug8HDqnB-zEbO*rS3V*i(OZB_{oEbA2|oz@Oi^`kz#9I z-;IhdP=1jC3pnEy_$sDSX4Wr`ZROyxEZvu`^zm4NZp{0|Qg!2u_{7ykHL+?^)r6|a zR1>Lm*YI7%a<6-QB$dB!_#VKgi0ICP2lk>npAHK06)pcir=PeVP!Xy}TCK!?kJyXP zNxgG>UA%Pp%GGPvZ-htat$kbX1skDW#VIAl89LrX*%!}6FickL9T1BmM>f3c3%U-E<7!LZ3|Hbp)Iu<0yd1ET} z6xiBWFXIO+5Q`)qg}uSvV(+l`*awUc&h2Po_z0^+4DZQ%afAcD@;vd$DyG~@pK)KX zXzVMu0@O(r1IJ=<7+=IcMwwdwB0jk~V^l&nihRBV|JC*_@LuFw;4MMx^3X+F;P(o*q6?*==6m}X9O%d6JgPr1&huS zSajCG-`x)l{UeiUgutR13XA3$STwJ}qIn+{&6lufeuPESYYd0P@FST4sl`*o3NjD=-e)8L@Oktc3Nn#Md>Vp{>r zb~nPJvkMlTFj#cXz@l>%7M;7W=sbr5*PW<7^Mq-bo8Fufw8$50-VG!?NxhSoSv>me>-GkKf0Xu3-j)eZ$nfRKhcBj)j7OaT^}^?epEix};Ldwj z6j{;MG_t}IQ-6K^`KxKaf<^yFSoBN4qF(_P{Ti_7H-IJn7O?351&e-XSlXmF+{vtI)XZiYL*T#+ z@9)2QZyKZFpxQT=9Jpy3F8J86H4|H|F^wQt+Hf&E^XEr9+>cBn7+z8D#FRN)7q-A> zW-p%TyVx}LIO-pE)IZ~>e+3r(+wk=Vqei6}ZW>Qu*_HPIEcyo(+xjP9(Z2wTemE@p4`6ANf8lFp z!-htE(|8B>y|N_Rl0l{s3#W^Th-jO@G?Fs-u&M2i0ljzd*@vZ0HdyN9bJQsYzqs`5 zS;5JsQQlF%hNFH%NB!R%_1nW$E(ZGr=j8Ja%eDrJeW&N2NE6$ikE7q-mUi>n7#6b02#RmUg=ji~dVk^gqI)?=>x6KP4>s znPAb+1B-r9SoF)mqF)0R{YJ3p{|-z19bwV$1xuR@h2@$%4rYvoWE#^oA0(N^e9aw5 zrm<4c7xz>A%yQk3|2k+1ggp=_n%@2%O=kb&!t(_GmV09#^P~tPtS9o45yzJ8@rkN3ST&N)YGReQkh0WRqhiP z_xi4B{0?Ur%%9dBXBwU0?~cUAPOW4bec)8F5fOE~xF2@ZpX8`N+fjcxEc%<^RMEk~ zWfGdkURbtu9M1ShZ0yAqrg2G?+p*n&WxFq6(fI(2ju$T>L?;z2I$2b?t&I#~2~!lHjzv90e`Z0kqBqW=UI{Wq}a$HJnYoEI_DCK=(BAN~CcurImcEM?;2 zo}Xg82u?pFHg^A5(}`LnfkkF z{01kydE-X$T&B^^QNOFBeqTrZVX)|rg$;AZ4s{+*g=JfF;LL4fW3O^;T?$KVYhl^$ zHdu7_!J=~%7M*jj=v;$E=PoQd&)}rnBO^Q2HH|1(_T>v~nDcpgV;Tu~k(D_efAr)P zVKz3uln*5}}+ zdzO`2#`AADY;^egb-{eocnrrqc=RZ1cG?ZjG(9#pv=@JX09LOY`1xuh8881%6uN$9 zJL8QRVA-w@EZZ##%UEaySYoIROAJk6iQz9;V(11-3o`o(GnAB4CN<2`urvfhC?;SmH^}yF-a5BP{Xch9#b&u*AdPX#a0p zHDK9RBS)Rz9d$Z7>hyvoo}rHV;~ez^9rYJF>IcIT|2A0SIRMMPpM)iz%dl+g4lL_F zhh^X2!J-ofi%xRhrHW1lSafo!cdYh#RR|WHpJ8dkYOrY5hefj`ESl|M(d+?><{(%! zN5i5y6_(>N4;KBEu;_1wMSm|W`p00=zW|H=O<44wz@i@o%W?k-Cv5cfYshAvZFx;B zV;AXRxu4GkOP#`wI%OSoYQSf*J-&PPG0$a=`hPg;cXrh8=cw-wXKoc27ZJ?33M|{2 z3rjpJVTor8EZf=-%ep7wLM8dYb02sG7M**r=)8nQ=MyYC33=@;I%#0h$p&XH^5jW4 z_n!q|(JTdvW>r`;>%*e?8!Va~VA1Rai{>!+Mc&xhoAl=sV9}oii~dqr^f$nwzZ(|) zqp;{-fJOfnEc(x2-g%N3-++7k{BXxZH-Dr6{_fYKItIH6501ErcbWHLz@J z2Q2G`!g+r+&9|JxXJOH~0gKKfSac#`(fJCCPSOSOI_cpo1>U@Q$hnjY7R|!2XqJUV zvj!}hjbYLJ1D4o2!=l*_W)^{dX7Pug#!j2&#dFFexM66=0v)q3uBggyA3vULglQ~+ zpAWoycM$uy7JgFY&6{0}LvDv(GlVuA8uI*W)Pv0!s{um?|PMq=qGi%&^3e2bLI$z|7Fq&t+v`iKiMY z@zjGQp62kg1}|Q$zWCpI?R znBO#JIqENR)L#vY{$^O#-3`mSVX*A)X;@;r49h;=f@QxR!xHCfSlad@EIKAEI?0%J zBRb!yDL8gpWramEFD#lxVA1>;7R@TK9E&=zv`G_K^nZs%^KV%8w>vED-yatJ5wPfw zhedxnEc)|c(O(Wr{Oe)a)(%*=^!pC5Fz5?HKyN62mZ9+F=|l@l1y$ zp82rEvl2d5`{cYG3-?OudMGXnNACmIvk zuZNEMFCF#Y!=fJx%eqOJ_9g44fn|R)!xCF=SoX0HEc;aomN+ZH(zdl=(P;#W&Tp{j zw1Xv{uCQqKg++51ESh6s(VPm)v6!RSJ{C)1(O(OT<~CUNcONY6e-sw|bFk=NgGK+Y zVq5&YDAD&zJR`9`Frcn%*vCwkx z-ee!&cs?@j0WbXV!NJoHOrst=qxXgW>p1_L!P7r&P278{X|!?F@8qc8(@}pAEcyZP z^iNY0wVukg29|Bjgx6+%dhyazp37i~Z51rr-2{uyE?9IzVbM7Si_RrjbZ)|;^9Y`{ zJFHA#m}$I%WnVrh{yZ#UBhLRg_yvE3lnE0?(q-}OmKGNMEU@V3fknSCEc&Hk(XXu7 z)~^kVeq&gUODkCP+ry&Y4Ho@=u;>qmMSq-Tt8J$#{?aNzxmKnz7e19b>eWNWGgrW( zxd|S9aenqdo?-XE7m|JY7|D3%QCN=qd3bujh0f}@N2vN=Cnp%iv+!d_{YXdsXh;3T z%j5Oa!h>RZc=h<*G_t|6t^Ba;ZwXjps|3q->%bCcQ&@EVghi(dEIR#Q(HRMg&Lmjc zEeMuFCw5iD|5d<+$vGrQO0{(LW1|{&iUNAHbsj3KsoOu;?dP5wD*L7X8ey z=;wt+|0h`V%fq5y6Bhl(u(U~Qc)-`%UbV|GCJCqW`1@B(#yt#t)U01rUGIj%89wgV z(JBdZmf-K7-@iXP1M^AXObcUU_jF*+5}dhiT-^O#oHOw13@^iPzT|oVZ!30r`-aP= zu?ybOd}BaA?%TuQgF7cSFEEjJ0kCZMs-yfKEHV5GOAPN}i6IV_7?Q1wk0Bi_{a$uh z;>iz7JjG#&rvjX5|C=`}tC>a(Sk`R-Z?AQ9{xq(AE#U8BpFVBxWg35}`u4tehDEbC zym#UJzbf$=8RDov+EL#Hi+&I+>n?_6-C$VucMB}B?SZA855uxwXJCo*3M_4V8y1}> zu;_ST(fI^RJZk#1XeNh6GaW3N*g;{Aks7r!q;n@J{@$D=Mnhd zyLawnAH>`+Sgsf0@Rfq$H+F`b#sm1V>)yRiT-W}EBcGo?pROg(s*d_Gj{1pL$Jb8{ zi+(2fl{s&oQG>aNuxzU!d@ldZt9yBFDhW$$6=B(KO;~gq!lKg>7M-@R=yZWarw=ST zLt%N}JqDJ2nF7Bu8G)~A8nfY}iNAb$|Apr}SlVq3Ec#nv(ccS;{t;O8&%&aA6&C$F zu;@R9ML!Z2{m-!Idj-eqr+`I2JuLd!VQG_m@LRKUXM^$fpWu*WA0l7#{;>kQHs9?7 z2XFJf9^Tq<+W<9hq$#{B>8H0*T;u+NH)Vf#_Vh#E(JQWSYRQ6ArZG^}30T?f*Okn- zanzsYsK3BbKNuGM?eKxU)0-EV&iyki+d2cUPxtbs>OZf;65B&qw(EgKCmI%=Bx~Yz z(!rvW6BeC9u;`S5H#XZBFk+u+REK3>8o`Ic$Jfg+o_R8GXoA?7ud$}#2TQy4g++fP zEc%mS(Vqj0{t8(1H^ZX84;K9su;^cgMgJ}=`v1bB{}C4b1Z(5aG~L{)=v ziTtpf1I6JvZ`vm=&NEj<_{;6>+cOvDeGQy=<@M|B8ZtHrryBJB{p!)Yzk}11iH*HQ z|Ih)R<`Z@43HM0;47Hx}9O!-`=pqHUyS^91Y8U zxnPMi2$r^842w=MEIM0Y(b)q_JcnV?JOhj76<9QH!=m{FmSf?8rA?nuf+@<>cu@|aaguh9!^*(Cgyk;*IZa)s}GA#b69l# zghj^>7M)(O=nRHMXA~?tli{aF@7yUpmvLrT_GJ+)nycZ|DH*$XXBwMfX}8^q?Ks0= z(LW7~{$*J7Z^5Gf7#984u;_n;Mc-6x>nGbBum2q^`dMMo&kKuw5m@wphEJN^elZw( zuL6HCSFbkmGX@2(*)Y3Anc2*>fD>F~u0;W^-EfLM@8AE!{dO-n!(!&`a1SsH&e@Y^ z*g)QG!4orozW?qs?FLV-@nS;+bM}_P)B9ZNzv+@`Y=Gx34yiSO_x`(K+3rzC`9)Y_ zxC2WJFJOt`11vFkZHbQ|6Eb-riWn2HkvaJuWY|Gddzb$WA z&b>@)5eCaD3_5XI%{|6TR z!LY1529|ZF!Lq;eVL4Y$mSa&0mNuyZi~cXLXf}ssf7`;+{@q~F9{`Jf04(}0SoG(>qQ4xL_&36` zt=+I}>j*5{a>KH%a5z;F&RfP6AHd07F)=gyG7bZKUAcR=DEFG1$+01 ziP=2EG!lm}?`y}`uifgIMrt_r{@Jscb1;7Zmij)h)Gz3$UlJDmig4_+)vMEFG>w|D ztlJPy*(N4tKlcwUVTr9REZgk@i%uU{bcVvBGX@r&DX{3whDB!yobX~~WW^%PNrPoy zw!&Z49K2M_3x!kjSL{FVta=2Nb~_7;{#97?@4%w}6c+tRSoA-`qVKgcUOxpa`srcO z&kl=zK3MdBf^2}&Dzp% z3&->yN1cI=I{uD26X6SESI%q1xXlbl{RNKtD;@PWI_mF)Wp2_TSmHSeOFS20i6;V< zZ9Rl#-Is8ob6nqcW>|D`!=h6NPIEXoxaE($JBCHG5-ggv zV2P~}ESkT;qS+1>&91O$_JyAh`SfWN_awt$(H{$o{#01>=fI-B6c+upu;_1tMSmYG z`bS}Y14KWgorC+T?R*G;hM9 z`3M%xS1=>!B-8i+4{m;C>J`SpO!!LEg9ic*n)LS^(*~T+)X4yE$#?V6KE|$d!iij8 zzXs4h{|EHh-hF!445C%&OXJCopDl9SFgC&N4;e3In z`MMWv1xq|8Eb%1Y8y`=4SmMb6OFRW&iKhfC@l=E*o?5WP(+HMr{RYdn+BxcUb=2wW zs51%ec=o{(&rw+7IS0$OuEDbIU0C-087w+cu;_e& zMJK_&cpYz8bTYuAlLMAE%nyrZF<3Oq!J_F4OKkOE(QF2bW*b;EJHc{XdcvYV2p0VS zSo9~sqCXQB{e`gTuYyH?6D<0>U^(ug@axzmOT4Nxz5#C=z2dLND@@}y9367)T9wA! z3&C;^_8FFYuq6BA@4+&_CE76uZ=Px7fgAhY*>GnS;}x*%X!^jSSrit{3a}iDI`xh29^+@YPk`xfUgbTGDyP0GZvq#}%Fkx-j_(gRQw7s} ze2m}FfURU2ec>!6O!KANG{(d0Sr1Vo5Dq*4aB|^?{8omle`xjULWLOrfircudv_1x z-uvKy&db^^S!Noi;i`O%gNTd>_`92zFL%w!7$fYxg#|o2zk?UddfjpMYvv1u^2{k(Zz3JjdWs_87Vt^)N|3?*KqvV5OVi9Si|;unczsgyvpTQ54>SLnIyczI zjBw6~n>SbcFqQ%nHHmk}a0@fQ2%t`RxZ*`~lS#YPbJS_B>Zo&%82*M|%rVWbA&fVw zI#b;4Hf>B}Bz(jiUEdhZI2&Aum{tARaQ<#lQBS9EzQOA=L_d8R%|60W)QS4QcSYf9 zX3X#yVz{X4bKXXC-adpUReicC{3+wuurVkqO2zDTgkzD*ysvgYEnMiw=;&ykoeRO- z#gNz+xJ5@#peK;;?m5a^!JmII&0UB2yuc~Pn&vW&`(Sv)rR_f3*Ykc8o<1OY!g=Cc z3w;$zsAwzU@ z6#J4ImSdL-Y1pN5%$&(q!nZ_-6{fXXL zvh-%IFWfD;`N3p=W8g$N=}#VT{v6}&8g2D>Cw&y0g?avWH_^`Udd?Y6e4{j+EmLgl z2lmSsF2ug5bEyGbE^J!&X?gi9t2#8#YRWsq-f%5=Abfq;&6~ZiGv5HtU)SS#&c4rv zTXg(7?8t@w27ePYf8UsdhTzT|~<$4hKQ6jwfQU^@Lk zMR@7X2fkftlX~!Xw_UDU>Dezh(d6i8^(@dCPQT#&`&I3DZw_}}@A}F08^=Y}Ps?}( z@y~)&?OwL5X;H@BVR~W`eJ||l@p8iXm&`?kw@i0;Yt3;#2?v!6>>a>4eBHrMU?VY~ z5sp_R+)bTt{wAFp&#enXYLDi#nFh|>{PN`xK6ja6fAtw>AM?OhbA*S7hSQJ1N%oj# zhdS&dJZ#tfYWFX)kE%{Tk7qP7w}i9R{P5xK4!-LO>jq+bJv3Xt-8397#4%Op{6x51 zn0tXb=jX#kYw*2zj>`(T<{x)9-I>Pz!t&kx5LmuDa}ci5;^~p6eAZ6DEjpeUd}0W5 zmf#Ni$L1YdgZb)?`VSoS|8>-V2aA3TEaSI{PsVR6HC*;r=B_hlk_ndBd|=sbL0EK3 z!lF|VmY8e8qSFu-otCiZw1wq6_+4Pxmp-t3$A2hXC<|@KbK)3S+HDFf`m0j95eWgr-fx-vcXH9jZIl(EOU6^LisuF5vEZBmUgQI zi+&wg^qaz>|0gW^U0~7g2aEnlSo9~sq8|i{{!&=<*TbT}6Bhk2SoF`r(k9p8CC^$V z%h8IlYdBwZ-n|~+o&?UmB`)q5_e-DPv>txLCpF)pK0`dJv$$#+so?Cr`R*ZoLT32; zYjJV&Ie+rPX=2WuYmk8Z6G#2>j`}qn^&7*Y-x^N!dH(#;iMR)YWm~=BT>r$yJz~s! z7%Z`khh@7nV9{9wi_RKYbhg8ya}XAtQ?Temlv>n$NxPnpGOmx zc1v+KUOyu&`aZDe7luW@3@rM-u;@2{MgKQg^#6t>{(oT69}J8B7+CbD!J-q)xVUrN zH$H{``|Sc)zCRn|sGsy)eEoE=)XxEn{*UlS^WZ`CuDld1+o}TRoX9ygko!PbVrveI zPFq-Xy1}9|02ZA9Sae*l=*)pdXE~hoYD`R{Ld+G1WnXr~AIxprRBT6J=|kMGv|BhV z`j24I_rRk61s458+!~608d&tR!lIuK7X9L|=vRbAzcwuTzrv#51{VF!u(U~E_^rBM zVqZqU@(eoxmS@-?IMWZ@n{ki2LbJznkNeN9n%(ZOt;`Ws_4Bw~V+Qlv0}TOT+R^UD3fcGJ^&@!3)a-KgYr%63 zEMo%i;W3@fc^}j0516Q@j5DGiEtY(fWZB;`v z#}sa?nPaNj5SB5APKs|K^n+>i*6i^N%uT!LI&QaL4#qkZ+xO=)U>T#B3nyJ?nthqm zz64IP&g1FU#57iGcDw(m#b;LWT9>N|&%Zlh8Phld%b3Pl2VaBpaP zlvB(I(cUzCA6&D?vne(A@S5H3*(tduYIeCgB{Plwu#B;cfMtwjf}=bTmNAwE@PA`0 zu#B)c*X%jq>B74$&F&TM*8Fy&W>-&FW!@veGA3hOihqxmQZvVtpmNB1xu#EYP zgk{XfrMQZDn19B6&7Kes_lj#YyBE6oyzJEM>gr+)=O`>=M3-P0Bf6)!i#b>IX&znf znW~O&tS)yCQO7ssWmU)3RP{gE6x-uV1z{OeDhtb)Qgv9yls?p)*(;YT1?PD`crvljT^Rljo}$@fY$vw)n%%|%Vhh&nGP)4k4p_#l_B;3}EMr#Z z9eh)>C;NCbpK5kz?vLhM&91bK(2Rp+j4Rm{_=0H`FV3@rW{;;x5uP11yWRP@))dt2 za;dq#rC}Kps|L%MSOZwbRhp~%_L$gTu#Aayg=I{vr-S=z_IOTnjt$l9c5i|MG`m~_ z;PJ4Gp#>_wX_|-g@tsZ09#074a>1J2?uGP4+cdjeUAYfD0L%0KVa+PfGrs18B;I{! zw&oIF)y&z$@w%-!JBi=f)0~S$pR74IiSaSbKafo0v*!FH`e)4rN&F7>Rkh8+B<{U6 z|3u>brsm=#&O^% zoCnRdNPGuDa~%@Tcbe;w7)#NdjKus0&DK2F{+b(;=<_vOziBpFb8`~&nKl1LVys*9 z?ME|e3J&FEba|aUVyyg@n=A3A@eh)KDvo(HuQge3_W3!rjlIZs| z_a<@dG+V#J_DJ&p630&SU=qhp^H37UPV)#7$4+x967zhnsbl9)qTkRwn#AWt^EeW} zfvnk@Kb%|hWD>_t^Ar-tPV;mU$4>JM630$+5Q$@_+4>#1`kK>__^n0F)*OabnirAi zb2Kj@@tqpY%SjwN%_~VLGZX6xPk zD$P4dj45f}L*jQiG+T43_iDC&A1_RED2dOV<|8DIo#taCj-BR{B#xct(nlF*)-!xw(aqOxPQO z>JO7?w)(@=nyvmYqh_l=%&yt$5A$la`olt+t^TltW~)Cer`hTct7^9T!`hmy{;;8D zt3Pb6+3F8lYqt8s_L{B!u#0A^KkTL1>JJBMw)(>nnyvnDtY)h}bZNHw!JRg3w)(?Dnyvn@ zgl4NhET`G(536Xl`omh9t^TlqW~)DJrrGKbTWhxZ!}gl3{;-Q?t3T|e+3F7mYPR~r z5t^<3aI9vlKb)-D>JMjVw)(?)nyvnDsb;G`4AyM*hnqB8{b7h^t3TYY+3F9EXtw&p z)0(aR@SJRT|w)(@znyvourDm%?e5={&55H)(`a>f^9XqQ(Osd)H4^wNl z`ooNxt^P2(W~)EUquJ^Y3u?Cd!{VB){;;fOt3Rxw+3F8#X}0>q2AZw@u$gA7KWwep z>JQs%w)(>^u)G`X6#gH7{mQGEbmg6!~f1O&7L9r4g>s> zr-g27xDSC}O>n#01#%Cm>IAu575?Tq3zm1U7ZeAXX18v<3)AfJsC$?vif6msEqH#9 z(&emMfp^5PysJ%clW`9<@)E~i22yOlw@vNfjG8?jwJ+Hfr*^y5zU0;HVi1RSg0Q^j zEe;pxZJHms$0)1W<9W*cNfpJt-0l zqf|LD96ru{f+|l<2;&(8f#p5&I#}K#?{e@lIA2MR=LPowmvy<@eR{QN+=mO4aJeRN z&*p*Uz4K>yay2tF(&QcPEybSg_js;Jt+=XtK^V_9S>Q?4TwTVvcvgkwJ#{fy-cy%% za81pgOX_*Bv1WIOdLC@8*)>!>4|am{@(%6}_jvsk_czT~l#jK`Z&Mzm+3h|=%&RoJ zT%#Ir4Ta^M_-R<)iC=-`ow!SnQ(5oI?@})B#Gk`oc+b0eFJl*~{8x`>1@~ids=SHY zJ!LlYB5o^ox!QK(*#VY!=spfE3VV#uFU9h~bKkneG zu)ME-r1)o(KbOQlYW5tsjDEs9s@%O|C;I8(IX}C4D*e2$yx%Y8;7XeLTyVeli)KC- ze12PM=5xXQd0ZnytAmtKi7J zTelW($2~Co_^fG`=3VU$%^pv2`jGvK&$-=uXu#HVKnR3(d=0|gmqhJ zc2DZUx*c?V*PnG*w+}4y83JIL&kzX9e1;XU%xBmR%Y23-u*_$;0Ly%a2w3JbJaVu{ zGh?}z`HgxwVGhP}d5%bQk9Pq%7|R{TJ9Jp)KV*hw{=*LrE}^)o$8&+_ohq8$?j7t) zea$Y{5S}qx!7^XsPY3(K()V_UWgbO8Rc_Ct7y`>YiZO~0n_*@Zey>KCdvO-pjx;?_!sO4{7%BvxB^6*UWqg_`GJ9t2KNbmU$ZY9sE+W$5V|uA2qw( zWnr)Ts=mvW4^9coypHsWhnwaYo+Gkp_IQTA;4`J!?e5C6RblwraF?sjB;MV?G7rQT zmU$rc6?ZZh@Xu(e%dNRR?KQiHyN5F;L9?s5t2uKpV3{{EPH|0hzZy#k((Ku+`rehA z-E&mmyIt3J`KiA5Ff8*-E+`&hnxi-HE>E+^Gh``qW;DCqU5GhG*C+lznKSbseqPG= zu*^&Gad2TceJzjY>?WSUHM`wg=vRGJomwu}Ao|q?itTwUzrr$)r6v44p4&ZxXYek%+~w-fgE{%I%zNplxTdKZ!Wg32LqjkgsM$?JaId1chKq)v zzlCL<%pCaGov39#Q9Q@Np%=`B#nD*}hh6Z@D1y!=&F&HT(b=il)gmi82UY#`^ZiQA zr_X_9j?D!JU)4-s$N3YXnZ6FbtJ#{T_eillC+D?d27V87AM#l<<8So62_LF*#@`sH zO|6;nx2{~HVVT2|SMhGM?m*)INwcR$PvS4Hc$d3ETjH;&%UuPk5r1P?-YNV6%bcIT z;pEJPn}U8f&CHphU+t^e?e5KaI8?LC)u23M9k9$1nhMJtp*e~-n9WVjt7V!!jXXiz z2WocLa0hTrcho-w%bcQ<4!#7Z`_AKe!WhCW&2IPcQ0@a2r{!L2H1maEnS=CEG4p>$ z*WvoEnRB~3?5b0Vb^T$P6Ez8* zUCunA?h}GEd-kgPgr%xZc{hiWHq_;=9_l*2QEhy(aab~E$*LTnWL3o@glPW zhrlSI+0$kt@mJF9ZX87Xb>LYGU1d5Fe^XfIbhU&tY-LVeW8RTzra%9Maa7IL{I^b; z>CX#ue!?;btQRbEzy>L1zMr}m3efEFsC%JFx{lke?uBM*cDYm=E`(*y*a`=)*X;4M z;r!XI+3jx3`Ljf473>Miytw{~YnkS=eTu{`<@DSn+E()+64xeJ?i)8c%0pne-#Y|LpL_~d(`q;?jSCLGp_zMB z%I|6B9u~uwW0FbjciR zgGOx@+-Jd>q+`@yBOaE($c(8p!OqvU^V9A8U^_qeoBSd>zt l6*KU`E~a4D0}%P zJMS~x+TJcZ-^9-E|0aLj&R-mA)jwxAQOUeA*G#`fu!fH9H?| z=X=|E^;efwdn~i_-gf??olkG)jggjKW;4n+(x_17wogZxH-FAMhoe#J3;dcJEoliE}(tB#> z%h~xzJKx35f3oxQ?0llc*6}=L=hNEx&vrhWo&Rx+rC-?2x3cr)?fgVLU)Rp>vGYys z{Bt}1hn>$n*3#=_=j+<}UUq)4ogZlD*V_3Jc0SzBPavOcTmt?i(ud^UNvBC}naV9s z;AQxzWn0O4&tX|Pa!pi8I3-?*_#@^YlY8f`Lle};8ek2vMp$D^CFQ7hj(T2n3Nd&U z0p-4HKPBf6nA>&8hm+6!3k9OpL@gx!YJ00Le^frXcQWK=gn5kE+u1k=6Q%30W-~mSJ<92SXpT z)-lJT_rggC>8rg;Qp5MEFdgUEnE0?Zz^UyW`>&a9sY2_(vfpYcJK&0?FrjJ)mF&X( zs!(;(I@yIUDa@Z(mHgihNqWO~M;r=Sr*JgY+P1=T3iUBjL2yhKnMACZ=+7xualkQ( z)jBl#)PNK;upbS)5z?hZeGvAhG`@{*%TgNhwY@aHEvJl%Uw0d<4&wnwnH#na<9+D6 z%xqgFN9=*4DOXn_m86_~2&3F9Gx6gkx_5BuBv#e`c7Ej;3X^_QctsV8sx;G>u@ol% zrsfV+_}w>!k5pm0ZwhCPqcHt9g-2CkhHnbrsltrk6s{akVTx}Guc$)rZwkjupfKe( zg*#MXs&5J(sX}$fqLY0#%$i7Hnr{k^s=~D26uwi1-+xoMauS7dprq-psKQL&)EqN8 zg?Gy=s<1AbZi+R-nqw`nmRLRPH%#?0tuU2-$2(8-*5tqKds1+&B3>+r^ZZ~EFXI@d z(jT}s*q_*6R*{j1GruHO74r>orSMLwK43Lf?ijgZjUCICh97zLX;U>+>WLp<*BOWR zjbW{->MT<=CSxj1chpdMrJ_zcsiRbau^pIJIW`3qb+`{xA}S{xHI#~4OC5cwqw+WH zI?wUGQ>L;%>O598d>4@`>~Sm?4Runh8j??t!pl(RdsVHkPNfto_n4e_278%`$@eoQ z71ar(mP?em9W|7q+E;ZxNgWmC&vqT(1JhD?XHzxQxv6TXq-xZHmH9rVMpAX^>0|Pq zoOfe;nT}!N^c3EW)rU>mQYrl9sG;&|3+l5cb<`I6+jZ3Paj;72qo}uYAJu--9V${o zo$sQe)>!>b9knHOrb`{Qr6b>LN!3xGZ&gPnRp*vn$M<$%3h!L1hU!(EHC|IAp|{n} zzGG+5@>!`N$6o1VW~tOrd8L~TFLhMDv|Y#d6biXiiTVgSkA4HYMhCoa6t$A7kF%=b z8!(gB?@IX~Ot*dzB^7fzwgDQG95qy4Z6z1p8OLI~j&C>$I*uH64OwH8T|>taFpD^{ z+ckUxRqg=GmHDnxIUklCRk;vy-e;lfn2zxjB^A~6Otudiw;eT9Ud5=cb5cj;U)yzj zrv!19suFd)R1K9>K3Zz*p+-Wr#P=9fI7v$GqOf9^)Xfbz*Db@c8klbkYb4FXQXT)4 z*(togSD#tA(04?l6Xr+Ntt@<-Ciq7$^$j^=BmOXc2mT0tFFp((hM&RCoWLI^e-3{X ze+7RGAC8~N@;i9G1!X+OuOa^&pWBDWa(oc^4|ry{8ei~y^TjXem=`9<1dh}j$c5&E`A}tF@6!gDV|xT z#_#yWeTlnhn?$e-+;guV!Hm#IK{?aQssISiE{G@4~BDOf&IncFbISFv}O> zm*JP-OZo6sApBbLYw^qR8}aSf-VXdq@_X^TVKGAStH>Y4&%>X_^LEv^i0AF1aUIW_ zY2yxlHOrsic{^wPi(f+iHJ-Oo#(Vr=^uOTeP#%YWKzZUqUdBVbH$DXa9sVgk6aGFv zC;sQ$yk5X>W4$8y{FE2R7vMxHjrYNq!#|*F8eo8WW$aIM8}N9PZG zFy(*a^HAOyUy${>-c~1xAD*M zkMN1ne}PZv!#5G|3GnamJJI=yZ_jeC!d}L1@`>?Ltd|`B5}z8sk^1TJ38|L_Khul$ z#vA1G;SW-;2>t-R6#fvt0=_2eRm1NG{L^?$)vVR-}mRrc#wd=S2+TF(CbiOu+egg=vy zDcShc)O(39kAI8LjQ@{2Kf& z{6>5N%D3T*`*2?4SCc=8Kf!hmx_+#iV!k4Ce zC4LY2b@)s8?fB$A^xyb6>WAWQCoqiT_#5QU;`7iBm++VH*YVMm-@(ry{}BI`{B!&l zd?bD?{vG}@`d{$J@m>s?#!#LFpPBVi;SW)s79UG_Cj4rAHoS@V!S7;uK71-4+8dt| zpNwTPE(;o+x$=jtPT{>g;X7*d@M4SjfAC(#yo{dsWcXhA^!VQRT=+it!uY=U68L`j z^7#Jv8u$VDU-1L+t?+~Jf8x~@sU3a@z7u{Zz8iiRzBhh2ejt7Xegu9bevIv1cz^OU z@d0=h?ez#bwI37l z$H`B^pT$qcyRd2;p(a6$w&EGTc(pc#cY;8USl~Kf8W19I3P@~M3zx!Iz<>99&Z9m< zX{>iFMBgaLX-emp-4K_c2Ml(E_re1cI* zA4siMQ)8`lSxvS10ac6UI*U(iy;kuJ+?v8WdB9w1k&?3_dA;F1KstM5Rd2ji6-(tY J3lgc#{tsnq2txn> literal 0 HcmV?d00001 diff --git a/graphing/index.html b/graphing/index.html index 954e0ff..501995f 100644 --- a/graphing/index.html +++ b/graphing/index.html @@ -20,6 +20,13 @@ + + + + + +

+ diff --git a/graphing/index.min.js b/graphing/index.min.js new file mode 100644 index 0000000..f72fa3d --- /dev/null +++ b/graphing/index.min.js @@ -0,0 +1 @@ +!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((r=r||self)["@hpcc-js/wasm"]={})}(this,(function(r){"use strict";function t(r,t){return r(t={exports:{}},t.exports),t.exports}var e=t((function(r,t){var e,n=(e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(r){var t,n=void 0!==(r=r||{})?r:{},o={};for(t in n)n.hasOwnProperty(t)&&(o[t]=n[t]);var i,a="./this.program",s="";document.currentScript&&(s=document.currentScript.src),e&&(s=e),s=0!==s.indexOf("blob:")?s.substr(0,s.lastIndexOf("/")+1):"",i=function(r){var t=new XMLHttpRequest;return t.open("GET",r,!1),t.send(null),t.responseText};var u,c,f=n.print||console.log.bind(console),l=n.printErr||console.warn.bind(console);for(t in o)o.hasOwnProperty(t)&&(n[t]=o[t]);o=null,n.arguments&&n.arguments,n.thisProgram&&(a=n.thisProgram),n.quit&&n.quit,n.wasmBinary&&(u=n.wasmBinary),n.noExitRuntime&&n.noExitRuntime,"object"!=typeof WebAssembly&&l("no native wasm support detected");var d=new WebAssembly.Table({initial:153,maximum:153,element:"anyfunc"}),p=!1;function m(r,t){r||H("Assertion failed: "+t)}var h,y,v,_,w,g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function E(r,t,e){for(var n=t+e,o=t;r[o]&&!(o>=n);)++o;if(o-t>16&&r.subarray&&g)return g.decode(r.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function k(r,t){return r?E(v,r,t):""}function b(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function D(r){for(var t=0,e=0;e=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function S(r){h=r,n.HEAP8=y=new Int8Array(r),n.HEAP16=new Int16Array(r),n.HEAP32=_=new Int32Array(r),n.HEAPU8=v=new Uint8Array(r),n.HEAPU16=new Uint16Array(r),n.HEAPU32=new Uint32Array(r),n.HEAPF32=new Float32Array(r),n.HEAPF64=w=new Float64Array(r)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var F=n.TOTAL_MEMORY||16777216;function P(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?n.dynCall_v(e):n.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}(c=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:F/65536}))&&(h=c.buffer),F=h.byteLength,S(h),_[2080]=5251360;var x=[],A=[],M=[],C=[],R=!1,O=Math.abs,j=Math.ceil,T=Math.floor,z=Math.min,B=0,N=null;function L(r){B++,n.monitorRunDependencies&&n.monitorRunDependencies(B)}function I(r){if(B--,n.monitorRunDependencies&&n.monitorRunDependencies(B),0==B&&N){var t=N;N=null,t()}}function H(r){throw n.onAbort&&n.onAbort(r),f(r+=""),l(r),p=!0,r="abort("+r+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(r)}function U(r){return String.prototype.startsWith?r.startsWith("data:application/octet-stream;base64,"):0===r.indexOf("data:application/octet-stream;base64,")}n.preloadedImages={},n.preloadedAudios={};var W,q,Y,J="expatlib.wasm";function V(){try{if(u)return new Uint8Array(u);throw"both async and sync fetching of the wasm failed"}catch(r){H(r)}}U(J)||(W=J,J=n.locateFile?n.locateFile(W,s):s+W);var X={1184:function(r){var t=n.getCache(n.CExpatJS)[r];if(!t.hasOwnProperty("startElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::startElement.";t.startElement()},1404:function(r){var t=n.getCache(n.CExpatJS)[r];if(!t.hasOwnProperty("endElement"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::endElement.";t.endElement()},1616:function(r){var t=n.getCache(n.CExpatJS)[r];if(!t.hasOwnProperty("characterData"))throw"a JSImplementation must implement all functions, you forgot CExpatJS::characterData.";t.characterData()}};function G(){var r=function(){var r=new Error;if(!r.stack){try{throw new Error}catch(t){r=t}if(!r.stack)return"(no stack trace available)"}return r.stack.toString()}();return n.extraStackTrace&&(r+="\n"+n.extraStackTrace()),r.replace(/\b_Z[\w\d_]+/g,(function(r){return r==r?r:r+" ["+r+"]"}))}A.push({func:function(){dr()}});var Z=42,K={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=K.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=K.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=r.lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return K.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return K.normalize(r.join("/"))},join2:function(r,t){return K.normalize(r+"/"+t)}};function $(r){return n.___errno_location&&(_[n.___errno_location()>>2]=r),r}var Q={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:er.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=K.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=Q.resolve(r).substr(1),t=Q.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0&&(f(E(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(l(E(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(l(E(r.output,0)),r.output=[])}}},tr={ops_table:null,mount:function(r){return tr.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(er.isBlkdev(e)||er.isFIFO(e))throw new er.ErrnoError(63);tr.ops_table||(tr.ops_table={dir:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr,lookup:tr.node_ops.lookup,mknod:tr.node_ops.mknod,rename:tr.node_ops.rename,unlink:tr.node_ops.unlink,rmdir:tr.node_ops.rmdir,readdir:tr.node_ops.readdir,symlink:tr.node_ops.symlink},stream:{llseek:tr.stream_ops.llseek}},file:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr},stream:{llseek:tr.stream_ops.llseek,read:tr.stream_ops.read,write:tr.stream_ops.write,allocate:tr.stream_ops.allocate,mmap:tr.stream_ops.mmap,msync:tr.stream_ops.msync}},link:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr,readlink:tr.node_ops.readlink},stream:{}},chrdev:{node:{getattr:tr.node_ops.getattr,setattr:tr.node_ops.setattr},stream:er.chrdev_stream_ops}});var o=er.createNode(r,t,e,n);return er.isDir(o.mode)?(o.node_ops=tr.ops_table.dir.node,o.stream_ops=tr.ops_table.dir.stream,o.contents={}):er.isFile(o.mode)?(o.node_ops=tr.ops_table.file.node,o.stream_ops=tr.ops_table.file.stream,o.usedBytes=0,o.contents=null):er.isLink(o.mode)?(o.node_ops=tr.ops_table.link.node,o.stream_ops=tr.ops_table.link.stream):er.isChrdev(o.mode)&&(o.node_ops=tr.ops_table.chrdev.node,o.stream_ops=tr.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o),o},getFileDataAsRegularArray:function(r){if(r.contents&&r.contents.subarray){for(var t=[],e=0;e=t)){t=Math.max(t,e*(e<1048576?2:1.125)|0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t){if(0==t)return r.contents=null,void(r.usedBytes=0);if(!r.contents||r.contents.subarray){var e=r.contents;return r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),void(r.usedBytes=t)}if(r.contents||(r.contents=[]),r.contents.length>t)r.contents.length=t;else for(;r.contents.length=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s0||o+n8)throw new er.ErrnoError(32);for(var o=K.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=er.root,a="/",s=0;s40)throw new er.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(er.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n>>0)%er.nameTable.length},hashAddNode:function(r){var t=er.hashName(r.parent.id,r.name);r.name_next=er.nameTable[t],er.nameTable[t]=r},hashRemoveNode:function(r){var t=er.hashName(r.parent.id,r.name);if(er.nameTable[t]===r)er.nameTable[t]=r.name_next;else for(var e=er.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=er.mayLookup(r);if(e)throw new er.ErrnoError(e,r);for(var n=er.hashName(r.id,t),o=er.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return er.lookup(r,t)},createNode:function(r,t,e,n){er.FSNode||(er.FSNode=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=er.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},er.FSNode.prototype={},Object.defineProperties(er.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(r){r?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(r){r?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return er.isDir(this.mode)}},isDevice:{get:function(){return er.isChrdev(this.mode)}}}));var o=new er.FSNode(r,t,e,n);return er.hashAddNode(o),o},destroyNode:function(r){er.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(r){var t=er.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return er.ignorePermissions||(-1===t.indexOf("r")||292&r.mode)&&(-1===t.indexOf("w")||146&r.mode)&&(-1===t.indexOf("x")||73&r.mode)?0:2},mayLookup:function(r){var t=er.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return er.lookupNode(r,t),20}catch(r){}return er.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=er.lookupNode(r,t)}catch(r){return r.errno}var o=er.nodePermissions(r,"wx");if(o)return o;if(e){if(!er.isDir(n.mode))return 54;if(er.isRoot(n)||er.getPath(n)===er.cwd())return 10}else if(er.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?er.isLink(r.mode)?32:er.isDir(r.mode)&&("r"!==er.flagsToPermissionString(t)||512&t)?31:er.nodePermissions(r,er.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||er.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!er.streams[e])return e;throw new er.ErrnoError(33)},getStream:function(r){return er.streams[r]},createStream:function(r,t,e){er.FSStream||(er.FSStream=function(){},er.FSStream.prototype={},Object.defineProperties(er.FSStream.prototype,{object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var n=new er.FSStream;for(var o in r)n[o]=r[o];r=n;var i=er.nextfd(t,e);return r.fd=i,er.streams[i]=r,r},closeStream:function(r){er.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=er.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new er.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){er.devices[r]={stream_ops:t}},getDevice:function(r){return er.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),er.syncFSRequests++,er.syncFSRequests>1&&l("warning: "+er.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=er.getMounts(er.root.mount),n=0;function o(r){return er.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&er.root)throw new er.ErrnoError(10);if(!o&&!i){var a=er.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,er.isMountpoint(n))throw new er.ErrnoError(10);if(!er.isDir(n.mode))throw new er.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?er.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=er.lookupPath(r,{follow_mount:!1});if(!er.isMountpoint(t.node))throw new er.ErrnoError(28);var e=t.node,n=e.mounted,o=er.getMounts(n);Object.keys(er.nameTable).forEach((function(r){for(var t=er.nameTable[r];t;){var e=t.name_next;-1!==o.indexOf(t.mount)&&er.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=er.lookupPath(r,{parent:!0}).node,o=K.basename(r);if(!o||"."===o||".."===o)throw new er.ErrnoError(28);var i=er.mayCreate(n,o);if(i)throw new er.ErrnoError(i);if(!n.node_ops.mknod)throw new er.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,er.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,er.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;othis.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):ur(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,f("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=er.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){if(!er.forceLoadFile(s))throw new er.ErrnoError(29);return t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){if(!er.forceLoadFile(s))throw new er.ErrnoError(29);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u>2]=n.dev,_[e+4>>2]=0,_[e+8>>2]=n.ino,_[e+12>>2]=n.mode,_[e+16>>2]=n.nlink,_[e+20>>2]=n.uid,_[e+24>>2]=n.gid,_[e+28>>2]=n.rdev,_[e+32>>2]=0,Y=[n.size>>>0,(q=n.size,+O(q)>=1?q>0?(0|z(+T(q/4294967296),4294967295))>>>0:~~+j((q-+(~~q>>>0))/4294967296)>>>0:0)],_[e+40>>2]=Y[0],_[e+44>>2]=Y[1],_[e+48>>2]=4096,_[e+52>>2]=n.blocks,_[e+56>>2]=n.atime.getTime()/1e3|0,_[e+60>>2]=0,_[e+64>>2]=n.mtime.getTime()/1e3|0,_[e+68>>2]=0,_[e+72>>2]=n.ctime.getTime()/1e3|0,_[e+76>>2]=0,Y=[n.ino>>>0,(q=n.ino,+O(q)>=1?q>0?(0|z(+T(q/4294967296),4294967295))>>>0:~~+j((q-+(~~q>>>0))/4294967296)>>>0:0)],_[e+80>>2]=Y[0],_[e+84>>2]=Y[1],0},doMsync:function(r,t,e,n,o){var i=v.slice(r,r+e);er.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=K.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),er.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return er.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=er.readlink(r),o=Math.min(e,D(n)),i=y[t+o];return b(n,v,t,e+1),y[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e;if(!(e=er.lookupPath(r,{follow:!0}).node))return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&er.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=er.getStream(e);return n&&er.close(n),er.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i>2],s=_[t+(8*i+4)>>2],u=er.read(r,y,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=_[t+(8*i+4)>>2],u=er.write(r,y,a,s,n);if(u<0)return-1;o+=u}return o},varargs:0,get:function(r){return nr.varargs+=4,_[nr.varargs-4>>2]},getStr:function(){return k(nr.get())},getStreamFromFD:function(r){void 0===r&&(r=nr.get());var t=er.getStream(r);if(!t)throw new er.ErrnoError(8);return t},get64:function(){var r=nr.get();return nr.get(),r},getZero:function(){nr.get()}};function or(r){try{return c.grow(r-h.byteLength+65535>>16),S(c.buffer),1}catch(r){}}var ir={};function ar(){if(!ar.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var t in ir)r[t]=ir[t];var e=[];for(var t in r)e.push(t+"="+r[t]);ar.strings=e}return ar.strings}function sr(r,t){sr.array||(sr.array=[]);var e,n=sr.array;for(n.length=0;e=v[r++];)100===e||102===e?(t=t+7&-8,n.push(w[t>>3]),t+=8):(t=t+3&-4,n.push(_[t>>2]),t+=4);return n}function ur(r,t,e){var n=e>0?e:D(r)+1,o=new Array(n),i=b(r,o,0,o.length);return t&&(o.length=i),o}er.staticInit();var cr={h:function(r,t){nr.varargs=t;try{return Z}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),-r.errno}},e:function(){H()},a:function(r,t,e){var n=sr(t,e);return X[r].apply(null,n)},c:function(r,t,e){v.set(v.subarray(t,t+e),r)},d:function(r){var t=v.length;if(r>2147418112)return!1;for(var e,n,o=1;o<=4;o*=2){var i=t*(1+.2/o);if(i=Math.min(i,r+100663296),or(Math.min(2147418112,((e=Math.max(16777216,r,i))%(n=65536)>0&&(e+=n-e%n),e))))return!0}return!1},f:function(r,t){var e=ar(),n=0;return e.forEach((function(e,o){var i=t+n;_[r+4*o>>2]=i,function(r,t,e){for(var n=0;n>0]=r.charCodeAt(n);e||(y[t>>0]=0)}(e,i),n+=e.length+1})),0},g:function(r,t){var e=ar();_[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),_[t>>2]=n,0},j:function(r){try{var t=nr.getStreamFromFD(r);return er.close(t),0}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),r.errno}},i:function(r,t,e,n,o){try{var i=nr.getStreamFromFD(r),a=4294967296*e+(t>>>0);return a<=-9007199254740992||a>=9007199254740992?-61:(er.llseek(i,a,n),Y=[i.position>>>0,(q=i.position,+O(q)>=1?q>0?(0|z(+T(q/4294967296),4294967295))>>>0:~~+j((q-+(~~q>>>0))/4294967296)>>>0:0)],_[o>>2]=Y[0],_[o+4>>2]=Y[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),r.errno}},b:function(r,t,e,n){try{var o=nr.getStreamFromFD(r),i=nr.doWritev(o,t,e);return _[n>>2]=i,0}catch(r){return void 0!==er&&r instanceof er.ErrnoError||H(r),r.errno}},k:function(r){var t=Date.now();return _[r>>2]=t/1e3|0,_[r+4>>2]=t%1e3*1e3|0,0},memory:c,table:d},fr=function(){var r={a:cr};function t(r,t){var e=r.exports;n.asm=e,I()}function e(r){t(r.instance)}function o(t){return(u||"function"!=typeof fetch?new Promise((function(r,t){r(V())})):fetch(J,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+J+"'";return r.arrayBuffer()})).catch((function(){return V()}))).then((function(t){return WebAssembly.instantiate(t,r)})).then(t,(function(r){l("failed to asynchronously prepare wasm: "+r),H(r)}))}if(L(),n.instantiateWasm)try{return n.instantiateWasm(r,t)}catch(r){return l("Module.instantiateWasm callback failed with error: "+r),!1}return function(){if(u||"function"!=typeof WebAssembly.instantiateStreaming||U(J)||"function"!=typeof fetch)return o(e);fetch(J,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){l("wasm streaming compile failed: "+r),l("falling back to ArrayBuffer instantiation"),o(e)}))}))}(),{}}();n.asm=fr;var lr,dr=n.___wasm_call_ctors=function(){return(dr=n.___wasm_call_ctors=n.asm.l).apply(null,arguments)},pr=n._emscripten_bind_CExpat_CExpat_0=function(){return(pr=n._emscripten_bind_CExpat_CExpat_0=n.asm.m).apply(null,arguments)},mr=n._emscripten_bind_CExpat_create_0=function(){return(mr=n._emscripten_bind_CExpat_create_0=n.asm.n).apply(null,arguments)},hr=n._emscripten_bind_CExpat_destroy_0=function(){return(hr=n._emscripten_bind_CExpat_destroy_0=n.asm.o).apply(null,arguments)},yr=n._emscripten_bind_CExpat_parse_1=function(){return(yr=n._emscripten_bind_CExpat_parse_1=n.asm.p).apply(null,arguments)},vr=n._emscripten_bind_CExpat_tag_0=function(){return(vr=n._emscripten_bind_CExpat_tag_0=n.asm.q).apply(null,arguments)},_r=n._emscripten_bind_CExpat_attrs_0=function(){return(_r=n._emscripten_bind_CExpat_attrs_0=n.asm.r).apply(null,arguments)},wr=n._emscripten_bind_CExpat_content_0=function(){return(wr=n._emscripten_bind_CExpat_content_0=n.asm.s).apply(null,arguments)},gr=n._emscripten_bind_CExpat_startElement_0=function(){return(gr=n._emscripten_bind_CExpat_startElement_0=n.asm.t).apply(null,arguments)},Er=n._emscripten_bind_CExpat_endElement_0=function(){return(Er=n._emscripten_bind_CExpat_endElement_0=n.asm.u).apply(null,arguments)},kr=n._emscripten_bind_CExpat_characterData_0=function(){return(kr=n._emscripten_bind_CExpat_characterData_0=n.asm.v).apply(null,arguments)},br=n._emscripten_bind_CExpat___destroy___0=function(){return(br=n._emscripten_bind_CExpat___destroy___0=n.asm.w).apply(null,arguments)},Dr=n._emscripten_bind_CExpatJS_CExpatJS_0=function(){return(Dr=n._emscripten_bind_CExpatJS_CExpatJS_0=n.asm.x).apply(null,arguments)},Sr=n._emscripten_bind_CExpatJS_startElement_0=function(){return(Sr=n._emscripten_bind_CExpatJS_startElement_0=n.asm.y).apply(null,arguments)},Fr=n._emscripten_bind_CExpatJS_endElement_0=function(){return(Fr=n._emscripten_bind_CExpatJS_endElement_0=n.asm.z).apply(null,arguments)},Pr=n._emscripten_bind_CExpatJS_characterData_0=function(){return(Pr=n._emscripten_bind_CExpatJS_characterData_0=n.asm.A).apply(null,arguments)},xr=n._emscripten_bind_CExpatJS___destroy___0=function(){return(xr=n._emscripten_bind_CExpatJS___destroy___0=n.asm.B).apply(null,arguments)},Ar=n._emscripten_bind_VoidPtr___destroy___0=function(){return(Ar=n._emscripten_bind_VoidPtr___destroy___0=n.asm.C).apply(null,arguments)},Mr=n._malloc=function(){return(Mr=n._malloc=n.asm.D).apply(null,arguments)};function Cr(r){function t(){lr||(lr=!0,p||(R=!0,n.noFSInit||er.init.initialized||er.init(),rr.init(),P(A),er.ignorePermissions=!1,P(M),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)r=n.postRun.shift(),C.unshift(r);var r;P(C)}()))}B>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)r=n.preRun.shift(),x.unshift(r);var r;P(x)}(),B>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),t()}),1)):t()))}if(n._free=function(){return(n._free=n.asm.E).apply(null,arguments)},n.___errno_location=function(){return(n.___errno_location=n.asm.F).apply(null,arguments)},n.stackAlloc=function(){return(n.stackAlloc=n.asm.G).apply(null,arguments)},n.dynCall_vi=function(){return(n.dynCall_vi=n.asm.H).apply(null,arguments)},n.asm=fr,n.then=function(r){if(lr)r(n);else{var t=n.onRuntimeInitialized;n.onRuntimeInitialized=function(){t&&t(),r(n)}}return n},N=function r(){lr||Cr(),lr||(N=r)},n.run=Cr,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();function Rr(){}function Or(r){return(r||Rr).__cache__}function jr(r,t){var e=Or(t),n=e[r];return n||((n=Object.create((t||Rr).prototype)).ptr=r,e[r]=n)}Cr(),Rr.prototype=Object.create(Rr.prototype),Rr.prototype.constructor=Rr,Rr.prototype.__class__=Rr,Rr.__cache__={},n.WrapperObject=Rr,n.getCache=Or,n.wrapPointer=jr,n.castObject=function(r,t){return jr(r.ptr,t)},n.NULL=jr(0),n.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete Or(r.__class__)[r.ptr]},n.compare=function(r,t){return r.ptr===t.ptr},n.getPointer=function(r){return r.ptr},n.getClass=function(r){return r.__class__};var Tr,zr={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(zr.needed){for(var r=0;r=zr.size?(m(i>0),zr.needed+=i,e=n._malloc(i),zr.temps.push(e)):(e=zr.buffer+zr.pos,zr.pos+=i),e},copy:function(r,t,e){var n=e;switch(t.BYTES_PER_ELEMENT){case 2:n>>=1;break;case 4:n>>=2;break;case 8:n>>=3}for(var o=0;o=n);)++o;if(o-t>16&&r.subarray&&S)return S.decode(r.subarray(t,o));for(var i="";t>10,56320|1023&c)}}else i+=String.fromCharCode((31&a)<<6|s)}else i+=String.fromCharCode(a)}return i}function P(r,t){return r?F(E,r,t):""}function x(r,t,e,n){if(!(n>0))return 0;for(var o=e,i=e+n-1,a=0;a=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&r.charCodeAt(++a)),s<=127){if(e>=i)break;t[e++]=s}else if(s<=2047){if(e+1>=i)break;t[e++]=192|s>>6,t[e++]=128|63&s}else if(s<=65535){if(e+2>=i)break;t[e++]=224|s>>12,t[e++]=128|s>>6&63,t[e++]=128|63&s}else{if(e+3>=i)break;t[e++]=240|s>>18,t[e++]=128|s>>12&63,t[e++]=128|s>>6&63,t[e++]=128|63&s}}return t[e]=0,e-o}function A(r){for(var t=0,e=0;e=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&r.charCodeAt(++e)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}function M(r){w=r,n.HEAP8=g=new Int8Array(r),n.HEAP16=k=new Int16Array(r),n.HEAP32=b=new Int32Array(r),n.HEAPU8=E=new Uint8Array(r),n.HEAPU16=new Uint16Array(r),n.HEAPU32=new Uint32Array(r),n.HEAPF32=new Float32Array(r),n.HEAPF64=D=new Float64Array(r)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var C=n.TOTAL_MEMORY||16777216;function R(r){for(;r.length>0;){var t=r.shift();if("function"!=typeof t){var e=t.func;"number"==typeof e?void 0===t.arg?n.dynCall_v(e):n.dynCall_vi(e,t.arg):e(void 0===t.arg?null:t.arg)}else t()}}(p=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:C/65536}))&&(w=p.buffer),C=w.byteLength,M(w),b[54044]=5459216;var O=[],j=[],T=[],z=[],B=!1,N=Math.abs,L=Math.ceil,I=Math.floor,H=Math.min,U=0,W=null;function q(r){U++,n.monitorRunDependencies&&n.monitorRunDependencies(U)}function Y(r){if(U--,n.monitorRunDependencies&&n.monitorRunDependencies(U),0==U&&W){var t=W;W=null,t()}}function J(r){throw n.onAbort&&n.onAbort(r),c(r+=""),f(r),v=!0,r="abort("+r+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(r)}function V(r){return String.prototype.startsWith?r.startsWith("data:application/octet-stream;base64,"):0===r.indexOf("data:application/octet-stream;base64,")}n.preloadedImages={},n.preloadedAudios={};var X,G,Z,K="graphvizlib.wasm";function $(){try{if(l)return new Uint8Array(l);throw"both async and sync fetching of the wasm failed"}catch(r){J(r)}}V(K)||(X=K,K=n.locateFile?n.locateFile(X,u):u+X);var Q={1088:function(r,t){var e=P(r),n=P(t);sr.createPath("/",nr.dirname(e)),sr.writeFile(nr.join("/",e),n)}};function rr(){var r=function(){var r=new Error;if(!r.stack){try{throw new Error}catch(t){r=t}if(!r.stack)return"(no stack trace available)"}return r.stack.toString()}();return n.extraStackTrace&&(r+="\n"+n.extraStackTrace()),r.replace(/\b_Z[\w\d_]+/g,(function(r){return r==r?r:r+" ["+r+"]"}))}function tr(){J()}function er(r){return n.___errno_location&&(b[n.___errno_location()>>2]=r),r}j.push({func:function(){Fr()}});var nr={splitPath:function(r){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(r).slice(1)},normalizeArray:function(r,t){for(var e=0,n=r.length-1;n>=0;n--){var o=r[n];"."===o?r.splice(n,1):".."===o?(r.splice(n,1),e++):e&&(r.splice(n,1),e--)}if(t)for(;e;e--)r.unshift("..");return r},normalize:function(r){var t="/"===r.charAt(0),e="/"===r.substr(-1);return(r=nr.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||t||(r="."),r&&e&&(r+="/"),(t?"/":"")+r},dirname:function(r){var t=nr.splitPath(r),e=t[0],n=t[1];return e||n?(n&&(n=n.substr(0,n.length-1)),e+n):"."},basename:function(r){if("/"===r)return"/";var t=r.lastIndexOf("/");return-1===t?r:r.substr(t+1)},extname:function(r){return nr.splitPath(r)[3]},join:function(){var r=Array.prototype.slice.call(arguments,0);return nr.normalize(r.join("/"))},join2:function(r,t){return nr.normalize(r+"/"+t)}},or={resolve:function(){for(var r="",t=!1,e=arguments.length-1;e>=-1&&!t;e--){var n=e>=0?arguments[e]:sr.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";r=n+"/"+r,t="/"===n.charAt(0)}return(t?"/":"")+(r=nr.normalizeArray(r.split("/").filter((function(r){return!!r})),!t).join("/"))||"."},relative:function(r,t){function e(r){for(var t=0;t=0&&""===r[e];e--);return t>e?[]:r.slice(t,e-t+1)}r=or.resolve(r).substr(1),t=or.resolve(t).substr(1);for(var n=e(r.split("/")),o=e(t.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s0&&(c(F(r.output,0)),r.output=[])}},default_tty1_ops:{put_char:function(r,t){null===t||10===t?(f(F(r.output,0)),r.output=[]):0!=t&&r.output.push(t)},flush:function(r){r.output&&r.output.length>0&&(f(F(r.output,0)),r.output=[])}}},ar={ops_table:null,mount:function(r){return ar.createNode(null,"/",16895,0)},createNode:function(r,t,e,n){if(sr.isBlkdev(e)||sr.isFIFO(e))throw new sr.ErrnoError(63);ar.ops_table||(ar.ops_table={dir:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr,lookup:ar.node_ops.lookup,mknod:ar.node_ops.mknod,rename:ar.node_ops.rename,unlink:ar.node_ops.unlink,rmdir:ar.node_ops.rmdir,readdir:ar.node_ops.readdir,symlink:ar.node_ops.symlink},stream:{llseek:ar.stream_ops.llseek}},file:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr},stream:{llseek:ar.stream_ops.llseek,read:ar.stream_ops.read,write:ar.stream_ops.write,allocate:ar.stream_ops.allocate,mmap:ar.stream_ops.mmap,msync:ar.stream_ops.msync}},link:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr,readlink:ar.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ar.node_ops.getattr,setattr:ar.node_ops.setattr},stream:sr.chrdev_stream_ops}});var o=sr.createNode(r,t,e,n);return sr.isDir(o.mode)?(o.node_ops=ar.ops_table.dir.node,o.stream_ops=ar.ops_table.dir.stream,o.contents={}):sr.isFile(o.mode)?(o.node_ops=ar.ops_table.file.node,o.stream_ops=ar.ops_table.file.stream,o.usedBytes=0,o.contents=null):sr.isLink(o.mode)?(o.node_ops=ar.ops_table.link.node,o.stream_ops=ar.ops_table.link.stream):sr.isChrdev(o.mode)&&(o.node_ops=ar.ops_table.chrdev.node,o.stream_ops=ar.ops_table.chrdev.stream),o.timestamp=Date.now(),r&&(r.contents[t]=o),o},getFileDataAsRegularArray:function(r){if(r.contents&&r.contents.subarray){for(var t=[],e=0;e=t)){t=Math.max(t,e*(e<1048576?2:1.125)|0),0!=e&&(t=Math.max(t,256));var n=r.contents;r.contents=new Uint8Array(t),r.usedBytes>0&&r.contents.set(n.subarray(0,r.usedBytes),0)}},resizeFileStorage:function(r,t){if(r.usedBytes!=t){if(0==t)return r.contents=null,void(r.usedBytes=0);if(!r.contents||r.contents.subarray){var e=r.contents;return r.contents=new Uint8Array(t),e&&r.contents.set(e.subarray(0,Math.min(t,r.usedBytes))),void(r.usedBytes=t)}if(r.contents||(r.contents=[]),r.contents.length>t)r.contents.length=t;else for(;r.contents.length=r.node.usedBytes)return 0;var a=Math.min(r.node.usedBytes-o,n);if(a>8&&i.subarray)t.set(i.subarray(o,o+a),e);else for(var s=0;s0||o+n8)throw new sr.ErrnoError(32);for(var o=nr.normalizeArray(r.split("/").filter((function(r){return!!r})),!1),i=sr.root,a="/",s=0;s40)throw new sr.ErrnoError(32)}}return{path:a,node:i}},getPath:function(r){for(var t;;){if(sr.isRoot(r)){var e=r.mount.mountpoint;return t?"/"!==e[e.length-1]?e+"/"+t:e+t:e}t=t?r.name+"/"+t:r.name,r=r.parent}},hashName:function(r,t){for(var e=0,n=0;n>>0)%sr.nameTable.length},hashAddNode:function(r){var t=sr.hashName(r.parent.id,r.name);r.name_next=sr.nameTable[t],sr.nameTable[t]=r},hashRemoveNode:function(r){var t=sr.hashName(r.parent.id,r.name);if(sr.nameTable[t]===r)sr.nameTable[t]=r.name_next;else for(var e=sr.nameTable[t];e;){if(e.name_next===r){e.name_next=r.name_next;break}e=e.name_next}},lookupNode:function(r,t){var e=sr.mayLookup(r);if(e)throw new sr.ErrnoError(e,r);for(var n=sr.hashName(r.id,t),o=sr.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===r.id&&i===t)return o}return sr.lookup(r,t)},createNode:function(r,t,e,n){sr.FSNode||(sr.FSNode=function(r,t,e,n){r||(r=this),this.parent=r,this.mount=r.mount,this.mounted=null,this.id=sr.nextInode++,this.name=t,this.mode=e,this.node_ops={},this.stream_ops={},this.rdev=n},sr.FSNode.prototype={},Object.defineProperties(sr.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(r){r?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(r){r?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return sr.isDir(this.mode)}},isDevice:{get:function(){return sr.isChrdev(this.mode)}}}));var o=new sr.FSNode(r,t,e,n);return sr.hashAddNode(o),o},destroyNode:function(r){sr.hashRemoveNode(r)},isRoot:function(r){return r===r.parent},isMountpoint:function(r){return!!r.mounted},isFile:function(r){return 32768==(61440&r)},isDir:function(r){return 16384==(61440&r)},isLink:function(r){return 40960==(61440&r)},isChrdev:function(r){return 8192==(61440&r)},isBlkdev:function(r){return 24576==(61440&r)},isFIFO:function(r){return 4096==(61440&r)},isSocket:function(r){return 49152==(49152&r)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(r){var t=sr.flagModes[r];if(void 0===t)throw new Error("Unknown file open mode: "+r);return t},flagsToPermissionString:function(r){var t=["r","w","rw"][3&r];return 512&r&&(t+="w"),t},nodePermissions:function(r,t){return sr.ignorePermissions||(-1===t.indexOf("r")||292&r.mode)&&(-1===t.indexOf("w")||146&r.mode)&&(-1===t.indexOf("x")||73&r.mode)?0:2},mayLookup:function(r){var t=sr.nodePermissions(r,"x");return t||(r.node_ops.lookup?0:2)},mayCreate:function(r,t){try{return sr.lookupNode(r,t),20}catch(r){}return sr.nodePermissions(r,"wx")},mayDelete:function(r,t,e){var n;try{n=sr.lookupNode(r,t)}catch(r){return r.errno}var o=sr.nodePermissions(r,"wx");if(o)return o;if(e){if(!sr.isDir(n.mode))return 54;if(sr.isRoot(n)||sr.getPath(n)===sr.cwd())return 10}else if(sr.isDir(n.mode))return 31;return 0},mayOpen:function(r,t){return r?sr.isLink(r.mode)?32:sr.isDir(r.mode)&&("r"!==sr.flagsToPermissionString(t)||512&t)?31:sr.nodePermissions(r,sr.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(r,t){r=r||0,t=t||sr.MAX_OPEN_FDS;for(var e=r;e<=t;e++)if(!sr.streams[e])return e;throw new sr.ErrnoError(33)},getStream:function(r){return sr.streams[r]},createStream:function(r,t,e){sr.FSStream||(sr.FSStream=function(){},sr.FSStream.prototype={},Object.defineProperties(sr.FSStream.prototype,{object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var n=new sr.FSStream;for(var o in r)n[o]=r[o];r=n;var i=sr.nextfd(t,e);return r.fd=i,sr.streams[i]=r,r},closeStream:function(r){sr.streams[r]=null},chrdev_stream_ops:{open:function(r){var t=sr.getDevice(r.node.rdev);r.stream_ops=t.stream_ops,r.stream_ops.open&&r.stream_ops.open(r)},llseek:function(){throw new sr.ErrnoError(70)}},major:function(r){return r>>8},minor:function(r){return 255&r},makedev:function(r,t){return r<<8|t},registerDevice:function(r,t){sr.devices[r]={stream_ops:t}},getDevice:function(r){return sr.devices[r]},getMounts:function(r){for(var t=[],e=[r];e.length;){var n=e.pop();t.push(n),e.push.apply(e,n.mounts)}return t},syncfs:function(r,t){"function"==typeof r&&(t=r,r=!1),sr.syncFSRequests++,sr.syncFSRequests>1&&f("warning: "+sr.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var e=sr.getMounts(sr.root.mount),n=0;function o(r){return sr.syncFSRequests--,t(r)}function i(r){if(r)return i.errored?void 0:(i.errored=!0,o(r));++n>=e.length&&o(null)}e.forEach((function(t){if(!t.type.syncfs)return i(null);t.type.syncfs(t,r,i)}))},mount:function(r,t,e){var n,o="/"===e,i=!e;if(o&&sr.root)throw new sr.ErrnoError(10);if(!o&&!i){var a=sr.lookupPath(e,{follow_mount:!1});if(e=a.path,n=a.node,sr.isMountpoint(n))throw new sr.ErrnoError(10);if(!sr.isDir(n.mode))throw new sr.ErrnoError(54)}var s={type:r,opts:t,mountpoint:e,mounts:[]},u=r.mount(s);return u.mount=s,s.root=u,o?sr.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(r){var t=sr.lookupPath(r,{follow_mount:!1});if(!sr.isMountpoint(t.node))throw new sr.ErrnoError(28);var e=t.node,n=e.mounted,o=sr.getMounts(n);Object.keys(sr.nameTable).forEach((function(r){for(var t=sr.nameTable[r];t;){var e=t.name_next;-1!==o.indexOf(t.mount)&&sr.destroyNode(t),t=e}})),e.mounted=null;var i=e.mount.mounts.indexOf(n);e.mount.mounts.splice(i,1)},lookup:function(r,t){return r.node_ops.lookup(r,t)},mknod:function(r,t,e){var n=sr.lookupPath(r,{parent:!0}).node,o=nr.basename(r);if(!o||"."===o||".."===o)throw new sr.ErrnoError(28);var i=sr.mayCreate(n,o);if(i)throw new sr.ErrnoError(i);if(!n.node_ops.mknod)throw new sr.ErrnoError(63);return n.node_ops.mknod(n,o,t,e)},create:function(r,t){return t=void 0!==t?t:438,t&=4095,t|=32768,sr.mknod(r,t,0)},mkdir:function(r,t){return t=void 0!==t?t:511,t&=1023,t|=16384,sr.mknod(r,t,0)},mkdirTree:function(r,t){for(var e=r.split("/"),n="",o=0;othis.length-1||r<0)){var t=r%this.chunkSize,e=r/this.chunkSize|0;return this.getter(e)[t]}},i.prototype.setDataGetter=function(r){this.getter=r},i.prototype.cacheLength=function(){var r=new XMLHttpRequest;if(r.open("HEAD",e,!1),r.send(null),!(r.status>=200&&r.status<300||304===r.status))throw new Error("Couldn't load "+e+". Status: "+r.status);var t,n=Number(r.getResponseHeader("Content-length")),o=(t=r.getResponseHeader("Accept-Ranges"))&&"bytes"===t,i=(t=r.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;o||(a=n);var s=this;s.setDataGetter((function(r){var t=r*a,o=(r+1)*a-1;if(o=Math.min(o,n-1),void 0===s.chunks[r]&&(s.chunks[r]=function(r,t){if(r>t)throw new Error("invalid range ("+r+", "+t+") or no bytes requested!");if(t>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",e,!1),n!==a&&o.setRequestHeader("Range","bytes="+r+"-"+t),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+e+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):kr(o.responseText||"",!0)}(t,o)),void 0===s.chunks[r])throw new Error("doXHR failed!");return s.chunks[r]})),!i&&n||(a=n=1,n=this.getter(0).length,a=n,c("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a={isDevice:!1,url:e},s=sr.createFile(r,t,a,n,o);a.contents?s.contents=a.contents:a.url&&(s.contents=null,s.url=a.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var u={};return Object.keys(s.stream_ops).forEach((function(r){var t=s.stream_ops[r];u[r]=function(){if(!sr.forceLoadFile(s))throw new sr.ErrnoError(29);return t.apply(null,arguments)}})),u.read=function(r,t,e,n,o){if(!sr.forceLoadFile(s))throw new sr.ErrnoError(29);var i=r.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var u=0;u>2]=n.dev,b[e+4>>2]=0,b[e+8>>2]=n.ino,b[e+12>>2]=n.mode,b[e+16>>2]=n.nlink,b[e+20>>2]=n.uid,b[e+24>>2]=n.gid,b[e+28>>2]=n.rdev,b[e+32>>2]=0,Z=[n.size>>>0,(G=n.size,+N(G)>=1?G>0?(0|H(+I(G/4294967296),4294967295))>>>0:~~+L((G-+(~~G>>>0))/4294967296)>>>0:0)],b[e+40>>2]=Z[0],b[e+44>>2]=Z[1],b[e+48>>2]=4096,b[e+52>>2]=n.blocks,b[e+56>>2]=n.atime.getTime()/1e3|0,b[e+60>>2]=0,b[e+64>>2]=n.mtime.getTime()/1e3|0,b[e+68>>2]=0,b[e+72>>2]=n.ctime.getTime()/1e3|0,b[e+76>>2]=0,Z=[n.ino>>>0,(G=n.ino,+N(G)>=1?G>0?(0|H(+I(G/4294967296),4294967295))>>>0:~~+L((G-+(~~G>>>0))/4294967296)>>>0:0)],b[e+80>>2]=Z[0],b[e+84>>2]=Z[1],0},doMsync:function(r,t,e,n,o){var i=E.slice(r,r+e);sr.msync(t,i,o,e,n)},doMkdir:function(r,t){return"/"===(r=nr.normalize(r))[r.length-1]&&(r=r.substr(0,r.length-1)),sr.mkdir(r,t,0),0},doMknod:function(r,t,e){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return sr.mknod(r,t,e),0},doReadlink:function(r,t,e){if(e<=0)return-28;var n=sr.readlink(r),o=Math.min(e,A(n)),i=g[t+o];return x(n,E,t,e+1),g[t+o]=i,o},doAccess:function(r,t){if(-8&t)return-28;var e;if(!(e=sr.lookupPath(r,{follow:!0}).node))return-44;var n="";return 4&t&&(n+="r"),2&t&&(n+="w"),1&t&&(n+="x"),n&&sr.nodePermissions(e,n)?-2:0},doDup:function(r,t,e){var n=sr.getStream(e);return n&&sr.close(n),sr.open(r,t,0,e,e).fd},doReadv:function(r,t,e,n){for(var o=0,i=0;i>2],s=b[t+(8*i+4)>>2],u=sr.read(r,g,a,s,n);if(u<0)return-1;if(o+=u,u>2],s=b[t+(8*i+4)>>2],u=sr.write(r,g,a,s,n);if(u<0)return-1;o+=u}return o},varargs:0,get:function(r){return ur.varargs+=4,b[ur.varargs-4>>2]},getStr:function(){return P(ur.get())},getStreamFromFD:function(r){void 0===r&&(r=ur.get());var t=sr.getStream(r);if(!t)throw new sr.ErrnoError(8);return t},get64:function(){var r=ur.get();return ur.get(),r},getZero:function(){ur.get()}};function cr(r,t,e){t|=0;var n,o=0,i=0,a=0;if(n=(r|=0)+(e|=0)|0,t&=255,(0|e)>=67){for(;0!=(3&r);)g[r>>0]=t,r=r+1|0;for(a=t|t<<8|t<<16|t<<24,i=(o=-4&n|0)-64|0;(0|r)<=(0|i);)b[r>>2]=a,b[r+4>>2]=a,b[r+8>>2]=a,b[r+12>>2]=a,b[r+16>>2]=a,b[r+20>>2]=a,b[r+24>>2]=a,b[r+28>>2]=a,b[r+32>>2]=a,b[r+36>>2]=a,b[r+40>>2]=a,b[r+44>>2]=a,b[r+48>>2]=a,b[r+52>>2]=a,b[r+56>>2]=a,b[r+60>>2]=a,r=r+64|0;for(;(0|r)<(0|o);)b[r>>2]=a,r=r+4|0}for(;(0|r)<(0|n);)g[r>>0]=t,r=r+1|0;return n-e|0}var fr=42,lr=0;function dr(r){try{return p.grow(r-w.byteLength+65535>>16),M(p.buffer),1}catch(r){}}var pr={};function mr(){if(!mr.strings){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var t in pr)r[t]=pr[t];var e=[];for(var t in r)e.push(t+"="+r[t]);mr.strings=e}return mr.strings}function hr(r){return r%4==0&&(r%100!=0||r%400==0)}function yr(r,t){for(var e=0,n=0;n<=t;e+=r[n++]);return e}var vr=[31,29,31,30,31,30,31,31,30,31,30,31],_r=[31,28,31,30,31,30,31,31,30,31,30,31];function wr(r,t){for(var e=new Date(r.getTime());t>0;){var n=hr(e.getFullYear()),o=e.getMonth(),i=(n?vr:_r)[o];if(!(t>i-e.getDate()))return e.setDate(e.getDate()+t),e;t-=i-e.getDate()+1,e.setDate(1),o<11?e.setMonth(o+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1))}return e}function gr(r,t,e,n){var o=b[n+40>>2],i={tm_sec:b[n>>2],tm_min:b[n+4>>2],tm_hour:b[n+8>>2],tm_mday:b[n+12>>2],tm_mon:b[n+16>>2],tm_year:b[n+20>>2],tm_wday:b[n+24>>2],tm_yday:b[n+28>>2],tm_isdst:b[n+32>>2],tm_gmtoff:b[n+36>>2],tm_zone:o?P(o):""},a=P(e),s={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in s)a=a.replace(new RegExp(u,"g"),s[u]);var c=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],f=["January","February","March","April","May","June","July","August","September","October","November","December"];function l(r,t,e){for(var n="number"==typeof r?r.toString():r||"";n.length0?1:0}var n;return 0===(n=e(r.getFullYear()-t.getFullYear()))&&0===(n=e(r.getMonth()-t.getMonth()))&&(n=e(r.getDate()-t.getDate())),n}function m(r){switch(r.getDay()){case 0:return new Date(r.getFullYear()-1,11,29);case 1:return r;case 2:return new Date(r.getFullYear(),0,3);case 3:return new Date(r.getFullYear(),0,2);case 4:return new Date(r.getFullYear(),0,1);case 5:return new Date(r.getFullYear()-1,11,31);case 6:return new Date(r.getFullYear()-1,11,30)}}function h(r){var t=wr(new Date(r.tm_year+1900,0,1),r.tm_yday),e=new Date(t.getFullYear(),0,4),n=new Date(t.getFullYear()+1,0,4),o=m(e),i=m(n);return p(o,t)<=0?p(i,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var y={"%a":function(r){return c[r.tm_wday].substring(0,3)},"%A":function(r){return c[r.tm_wday]},"%b":function(r){return f[r.tm_mon].substring(0,3)},"%B":function(r){return f[r.tm_mon]},"%C":function(r){return d((r.tm_year+1900)/100|0,2)},"%d":function(r){return d(r.tm_mday,2)},"%e":function(r){return l(r.tm_mday,2," ")},"%g":function(r){return h(r).toString().substring(2)},"%G":function(r){return h(r)},"%H":function(r){return d(r.tm_hour,2)},"%I":function(r){var t=r.tm_hour;return 0==t?t=12:t>12&&(t-=12),d(t,2)},"%j":function(r){return d(r.tm_mday+yr(hr(r.tm_year+1900)?vr:_r,r.tm_mon-1),3)},"%m":function(r){return d(r.tm_mon+1,2)},"%M":function(r){return d(r.tm_min,2)},"%n":function(){return"\n"},"%p":function(r){return r.tm_hour>=0&&r.tm_hour<12?"AM":"PM"},"%S":function(r){return d(r.tm_sec,2)},"%t":function(){return"\t"},"%u":function(r){return r.tm_wday||7},"%U":function(r){var t=new Date(r.tm_year+1900,0,1),e=0===t.getDay()?t:wr(t,7-t.getDay()),n=new Date(r.tm_year+1900,r.tm_mon,r.tm_mday);if(p(e,n)<0){var o=yr(hr(n.getFullYear())?vr:_r,n.getMonth()-1)-31,i=31-e.getDate()+o+n.getDate();return d(Math.ceil(i/7),2)}return 0===p(e,t)?"01":"00"},"%V":function(r){var t,e=new Date(r.tm_year+1900,0,4),n=new Date(r.tm_year+1901,0,4),o=m(e),i=m(n),a=wr(new Date(r.tm_year+1900,0,1),r.tm_yday);return p(a,o)<0?"53":p(i,a)<=0?"01":(t=o.getFullYear()=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(e?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(r){return r.tm_zone},"%%":function(){return"%"}};for(var u in y)a.indexOf(u)>=0&&(a=a.replace(new RegExp(u,"g"),y[u](i)));var v=kr(a,!1);return v.length>t?0:(function(r,t){g.set(r,t)}(v,r),v.length-1)}function Er(r,t){Er.array||(Er.array=[]);var e,n=Er.array;for(n.length=0;e=E[r++];)100===e||102===e?(t=t+7&-8,n.push(D[t>>3]),t+=8):(t=t+3&-4,n.push(b[t>>2]),t+=4);return n}function kr(r,t,e){var n=e>0?e:A(r)+1,o=new Array(n),i=x(r,o,0,o.length);return t&&(o.length=i),o}tr=function(){return performance.now()},sr.staticInit();var br={M:function(r,t){return function(r,t){var e;if(0===r)e=Date.now();else{if(1!==r&&4!==r)return er(28),-1;e=tr()}return b[t>>2]=e/1e3|0,b[t+4>>2]=e%1e3*1e3*1e3|0,0}(r,t)},k:function(r){return Rr(r)},j:function(r,t,e){throw"uncaught_exception"in zr?zr.uncaught_exceptions++:zr.uncaught_exceptions=1,r},q:function(){},U:function(r,t){return er(63),-1},P:function(r,t){ur.varargs=t;try{var e=ur.getStr();return sr.unlink(e),0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},R:function(r,t){ur.varargs=t;try{return function(r,t,e,n,o,i){var a;i<<=12;var s=!1;if(0!=(16&n)&&r%16384!=0)return-28;if(0!=(32&n)){if(!(a=Br(16384,t)))return-48;cr(a,0,t),s=!0}else{var u=sr.getStream(o);if(!u)return-8;var c=sr.mmap(u,E,r,t,i,e,n);a=c.ptr,s=c.allocated}return ur.mappings[a]={malloc:a,len:t,allocated:s,fd:o,flags:n,offset:i},a}(ur.get(),ur.get(),ur.get(),ur.get(),ur.get(),ur.get())}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},S:function(r,t){ur.varargs=t;try{var e=ur.getStr(),n=ur.get();return ur.doStat(sr.stat,e,n)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},T:function(r,t){ur.varargs=t;try{var e=ur.getStreamFromFD(),n=ur.get();return ur.doStat(sr.stat,e.path,n)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},L:function(r,t){ur.varargs=t;try{return fr}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},y:function(r,t){ur.varargs=t;try{var e=ur.getStreamFromFD();switch(ur.get()){case 0:return(n=ur.get())<0?-28:sr.open(e.path,e.flags,0,n).fd;case 1:case 2:return 0;case 3:return e.flags;case 4:var n=ur.get();return e.flags|=n,0;case 12:return n=ur.get(),k[n+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return er(28),-1;default:return-28}}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},K:function(r,t){ur.varargs=t;try{var e=ur.getStr(),n=ur.get();return ur.doAccess(e,n)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},z:function(r,t){ur.varargs=t;try{var e=ur.getStr(),n=ur.get(),o=ur.get();return sr.open(e,n,o).fd}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},O:function(r,t){ur.varargs=t;try{var e=ur.getStreamFromFD(),n=ur.get();switch(n){case 21509:case 21505:return e.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return e.tty?0:-59;case 21519:if(!e.tty)return-59;var o=ur.get();return b[o>>2]=0,0;case 21520:return e.tty?-28:-59;case 21531:return o=ur.get(),sr.ioctl(e,n,o);case 21523:case 21524:return e.tty?0:-59;default:J("bad ioctl syscall "+n)}}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},Q:function(r,t){ur.varargs=t;try{return function(r,t){if(-1===r||0===t)return-28;var e=ur.mappings[r];if(!e)return 0;if(t===e.len){var n=sr.getStream(e.fd);ur.doMsync(r,n,t,e.flags,e.offset),sr.munmap(n),ur.mappings[r]=null,e.allocated&&Or(e.malloc)}return 0}(ur.get(),ur.get())}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),-r.errno}},m:function(){},w:function(){J()},C:function(r,t,e){var n=Er(t,e);return Q[r].apply(null,n)},d:function(r,t){!function(r,t){throw Tr(r,t||1),"longjmp"}(r,t)},E:function(r,t,e){E.set(E.subarray(t,t+e),r)},F:function(r){var t=E.length;if(r>2147418112)return!1;for(var e,n,o=1;o<=4;o*=2){var i=t*(1+.2/o);if(i=Math.min(i,r+100663296),dr(Math.min(2147418112,((e=Math.max(16777216,r,i))%(n=65536)>0&&(e+=n-e%n),e))))return!0}return!1},I:function(r,t){var e=mr(),n=0;return e.forEach((function(e,o){var i=t+n;b[r+4*o>>2]=i,function(r,t,e){for(var n=0;n>0]=r.charCodeAt(n);e||(g[t>>0]=0)}(e,i),n+=e.length+1})),0},J:function(r,t){var e=mr();b[r>>2]=e.length;var n=0;return e.forEach((function(r){n+=r.length+1})),b[t>>2]=n,0},l:function(r){!function(r,t){t&&d&&0===r||(d||(v=!0,n.onExit&&n.onExit(r)),s(r,new rt(r)))}(r)},p:function(r){try{var t=ur.getStreamFromFD(r);return sr.close(t),0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},H:function(r,t){try{var e=ur.getStreamFromFD(r),n=e.tty?2:sr.isDir(e.mode)?3:sr.isLink(e.mode)?7:4;return g[t>>0]=n,0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},N:function(r,t,e,n){try{var o=ur.getStreamFromFD(r),i=ur.doReadv(o,t,e);return b[n>>2]=i,0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},D:function(r,t,e,n,o){try{var i=ur.getStreamFromFD(r),a=4294967296*e+(t>>>0);return a<=-9007199254740992||a>=9007199254740992?-61:(sr.llseek(i,a,n),Z=[i.position>>>0,(G=i.position,+N(G)>=1?G>0?(0|H(+I(G/4294967296),4294967295))>>>0:~~+L((G-+(~~G>>>0))/4294967296)>>>0:0)],b[o>>2]=Z[0],b[o+4>>2]=Z[1],i.getdents&&0===a&&0===n&&(i.getdents=null),0)}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},x:function(r,t,e,n){try{var o=ur.getStreamFromFD(r),i=ur.doWritev(o,t,e);return b[n>>2]=i,0}catch(r){return void 0!==sr&&r instanceof sr.ErrnoError||J(r),r.errno}},a:function(){return 0|m},X:function(r){var t=Date.now();return b[r>>2]=t/1e3|0,b[r+4>>2]=t%1e3*1e3|0,0},Y:function(r){var t=$r();try{return Zr(r)}catch(r){if(Qr(t),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},V:function(r,t){var e=$r();try{return Kr(r,t)}catch(r){if(Qr(e),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},v:function(r){var t=$r();try{return qr(r)}catch(r){if(Qr(t),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},f:function(r,t){var e=$r();try{return Yr(r,t)}catch(r){if(Qr(e),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},e:function(r,t,e){var n=$r();try{return Jr(r,t,e)}catch(r){if(Qr(n),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},g:function(r,t,e,n){var o=$r();try{return Vr(r,t,e,n)}catch(r){if(Qr(o),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},n:function(r,t,e,n,o){var i=$r();try{return Xr(r,t,e,n,o)}catch(r){if(Qr(i),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},W:function(r,t,e,n,o,i,a){var s=$r();try{return Gr(r,t,e,n,o,i,a)}catch(r){if(Qr(s),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},s:function(r){var t=$r();try{Nr(r)}catch(r){if(Qr(t),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},h:function(r,t){var e=$r();try{Lr(r,t)}catch(r){if(Qr(e),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},o:function(r,t,e){var n=$r();try{Ir(r,t,e)}catch(r){if(Qr(n),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},u:function(r,t,e,n){var o=$r();try{Hr(r,t,e,n)}catch(r){if(Qr(o),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},t:function(r,t,e,n,o){var i=$r();try{Ur(r,t,e,n,o)}catch(r){if(Qr(i),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},r:function(r,t,e,n,o,i){var a=$r();try{Wr(r,t,e,n,o,i)}catch(r){if(Qr(a),r!==r+0&&"longjmp"!==r)throw r;Tr(1,0)}},memory:p,i:function r(t,e,n,o){e|=0,n|=0,o|=0;var i=0;for(lr=lr+1|0,b[(t|=0)>>2]=lr;(0|i)<(0|o);){if(0==(0|b[n+(i<<3)>>2]))return b[n+(i<<3)>>2]=lr,b[n+(4+(i<<3))>>2]=e,b[n+(8+(i<<3))>>2]=0,h(0|o),0|n;i=i+1|0}return n=0|r(0|t,0|e,0|(n=0|jr(0|n,8*(1+(o=2*o|0)|0)|0)),0|o),h(0|o),0|n},b:function(r){h(0|r)},G:function(r,t,e,n){return gr(r,t,e,n)},table:y,c:function(r,t,e){r|=0,t|=0,e|=0;for(var n=0,o=0;(0|n)<(0|e)&&0!=(0|(o=0|b[t+(n<<3)>>2]));){if((0|o)==(0|r))return 0|b[t+(4+(n<<3))>>2];n=n+1|0}return 0},A:function(r){var t=Date.now()/1e3|0;return r&&(b[r>>2]=t),t},B:function(r){return 0!==r&&cr(r,0,16),0}},Dr=function(){var r={a:br};function t(r,t){var e=r.exports;n.asm=e,Y()}function e(r){t(r.instance)}function o(t){return(l||"function"!=typeof fetch?new Promise((function(r,t){r($())})):fetch(K,{credentials:"same-origin"}).then((function(r){if(!r.ok)throw"failed to load wasm binary file at '"+K+"'";return r.arrayBuffer()})).catch((function(){return $()}))).then((function(t){return WebAssembly.instantiate(t,r)})).then(t,(function(r){f("failed to asynchronously prepare wasm: "+r),J(r)}))}if(q(),n.instantiateWasm)try{return n.instantiateWasm(r,t)}catch(r){return f("Module.instantiateWasm callback failed with error: "+r),!1}return function(){if(l||"function"!=typeof WebAssembly.instantiateStreaming||V(K)||"function"!=typeof fetch)return o(e);fetch(K,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,r).then(e,(function(r){f("wasm streaming compile failed: "+r),f("falling back to ArrayBuffer instantiation"),o(e)}))}))}(),{}}();n.asm=Dr;var Sr,Fr=n.___wasm_call_ctors=function(){return(Fr=n.___wasm_call_ctors=n.asm.Z).apply(null,arguments)},Pr=n._emscripten_bind_VoidPtr___destroy___0=function(){return(Pr=n._emscripten_bind_VoidPtr___destroy___0=n.asm._).apply(null,arguments)},xr=n._emscripten_bind_Main_layout_3=function(){return(xr=n._emscripten_bind_Main_layout_3=n.asm.$).apply(null,arguments)},Ar=n._emscripten_bind_Main_lastError_0=function(){return(Ar=n._emscripten_bind_Main_lastError_0=n.asm.aa).apply(null,arguments)},Mr=n._emscripten_bind_Main_createFile_2=function(){return(Mr=n._emscripten_bind_Main_createFile_2=n.asm.ba).apply(null,arguments)},Cr=n._emscripten_bind_Main___destroy___0=function(){return(Cr=n._emscripten_bind_Main___destroy___0=n.asm.ca).apply(null,arguments)},Rr=n._malloc=function(){return(Rr=n._malloc=n.asm.da).apply(null,arguments)},Or=n._free=function(){return(Or=n._free=n.asm.ea).apply(null,arguments)},jr=n._realloc=function(){return(jr=n._realloc=n.asm.fa).apply(null,arguments)},Tr=(n.___errno_location=function(){return(n.___errno_location=n.asm.ga).apply(null,arguments)},n._setThrew=function(){return(Tr=n._setThrew=n.asm.ha).apply(null,arguments)}),zr=n.__ZSt18uncaught_exceptionv=function(){return(zr=n.__ZSt18uncaught_exceptionv=n.asm.ia).apply(null,arguments)},Br=n._memalign=function(){return(Br=n._memalign=n.asm.ja).apply(null,arguments)},Nr=n.dynCall_v=function(){return(Nr=n.dynCall_v=n.asm.ka).apply(null,arguments)},Lr=n.dynCall_vi=function(){return(Lr=n.dynCall_vi=n.asm.la).apply(null,arguments)},Ir=n.dynCall_vii=function(){return(Ir=n.dynCall_vii=n.asm.ma).apply(null,arguments)},Hr=n.dynCall_viii=function(){return(Hr=n.dynCall_viii=n.asm.na).apply(null,arguments)},Ur=n.dynCall_viiii=function(){return(Ur=n.dynCall_viiii=n.asm.oa).apply(null,arguments)},Wr=n.dynCall_viiiii=function(){return(Wr=n.dynCall_viiiii=n.asm.pa).apply(null,arguments)},qr=n.dynCall_i=function(){return(qr=n.dynCall_i=n.asm.qa).apply(null,arguments)},Yr=n.dynCall_ii=function(){return(Yr=n.dynCall_ii=n.asm.ra).apply(null,arguments)},Jr=n.dynCall_iii=function(){return(Jr=n.dynCall_iii=n.asm.sa).apply(null,arguments)},Vr=n.dynCall_iiii=function(){return(Vr=n.dynCall_iiii=n.asm.ta).apply(null,arguments)},Xr=n.dynCall_iiiii=function(){return(Xr=n.dynCall_iiiii=n.asm.ua).apply(null,arguments)},Gr=n.dynCall_iiiiiii=function(){return(Gr=n.dynCall_iiiiiii=n.asm.va).apply(null,arguments)},Zr=n.dynCall_d=function(){return(Zr=n.dynCall_d=n.asm.wa).apply(null,arguments)},Kr=n.dynCall_di=function(){return(Kr=n.dynCall_di=n.asm.xa).apply(null,arguments)},$r=n.stackSave=function(){return($r=n.stackSave=n.asm.ya).apply(null,arguments)},Qr=(n.stackAlloc=function(){return(n.stackAlloc=n.asm.za).apply(null,arguments)},n.stackRestore=function(){return(Qr=n.stackRestore=n.asm.Aa).apply(null,arguments)});function rt(r){this.name="ExitStatus",this.message="Program terminated with exit("+r+")",this.status=r}function tt(r){function t(){Sr||(Sr=!0,v||(B=!0,n.noFSInit||sr.init.initialized||sr.init(),ir.init(),R(j),sr.ignorePermissions=!1,R(T),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)r=n.postRun.shift(),z.unshift(r);var r;R(z)}()))}U>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)r=n.preRun.shift(),O.unshift(r);var r;R(O)}(),U>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),t()}),1)):t()))}if(n.asm=Dr,n.then=function(r){if(Sr)r(n);else{var t=n.onRuntimeInitialized;n.onRuntimeInitialized=function(){t&&t(),r(n)}}return n},W=function r(){Sr||tt(),Sr||(W=r)},n.run=tt,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();function et(){}function nt(r){return(r||et).__cache__}function ot(r,t){var e=nt(t),n=e[r];return n||((n=Object.create((t||et).prototype)).ptr=r,e[r]=n)}d=!0,tt(),et.prototype=Object.create(et.prototype),et.prototype.constructor=et,et.prototype.__class__=et,et.__cache__={},n.WrapperObject=et,n.getCache=nt,n.wrapPointer=ot,n.castObject=function(r,t){return ot(r.ptr,t)},n.NULL=ot(0),n.destroy=function(r){if(!r.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";r.__destroy__(),delete nt(r.__class__)[r.ptr]},n.compare=function(r,t){return r.ptr===t.ptr},n.getPointer=function(r){return r.ptr},n.getClass=function(r){return r.__class__};var it,at={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(at.needed){for(var r=0;r=at.size?(_(i>0),at.needed+=i,e=n._malloc(i),at.temps.push(e)):(e=at.buffer+at.pos,at.pos+=i),e},copy:function(r,t,e){var n=e;switch(t.BYTES_PER_ELEMENT){case 2:n>>=1;break;case 4:n>>=2;break;case 8:n>>=3}for(var o=0;o\n\n'}}function h(r,t){var e,n=d({images:[],files:[]},t);p(n.files,(e=n.images,e.map(m))).forEach((function(t){return r.Main.prototype.createFile(t.path,t.data)}))}var y={layout:function(r,t,e,n){return void 0===t&&(t="svg"),void 0===e&&(e="dot"),r?a(l).then((function(o){h(o,n);var i=o.Main.prototype.layout(r,t,e);if(!i)throw new Error(o.Main.prototype.lastError());return i})):Promise.resolve("")},circo:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},dot:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},fdp:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},neato:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},osage:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},patchwork:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},twopi:function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)}},v=function(){function r(r){this._wasm=r}return r.prototype.layout=function(r,t,e,n){if(void 0===t&&(t="svg"),void 0===e&&(e="dot"),!r)return"";h(this._wasm,n);var o=this._wasm.Main.prototype.layout(r,t,e);if(!o)throw new Error(this._wasm.Main.prototype.lastError());return o},r.prototype.circo=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"circo",e)},r.prototype.dot=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"dot",e)},r.prototype.fdp=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"fdp",e)},r.prototype.neato=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"neato",e)},r.prototype.osage=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"osage",e)},r.prototype.patchwork=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"patchwork",e)},r.prototype.twopi=function(r,t,e){return void 0===t&&(t="svg"),this.layout(r,t,"twopi",e)},r}();r.StackParser=u,r.graphviz=y,r.graphvizSync=function(){return a(l).then((function(r){return new v(r)}))},r.parse=c,r.wasmFolder=i,Object.defineProperty(r,"__esModule",{value:!0})})); \ No newline at end of file diff --git a/graphing/index.min.js.map b/graphing/index.min.js.map new file mode 100644 index 0000000..abb565e --- /dev/null +++ b/graphing/index.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["dist/index.js"],"names":["global","factory","exports","module","define","amd","self","this","createCommonjsModule","fn","expatlib","_scriptDir","cpp","document","currentScript","src","undefined","key","Module","moduleOverrides","hasOwnProperty","read_","thisProgram","scriptDirectory","indexOf","substr","lastIndexOf","url","xhr","XMLHttpRequest","open","send","responseText","wasmBinary","wasmMemory","out","console","log","bind","err","warn","WebAssembly","wasmTable","Table","initial","maximum","element","ABORT","assert","condition","text","abort","buffer","HEAP8","HEAPU8","HEAP32","HEAPF64","UTF8Decoder","TextDecoder","UTF8ArrayToString","u8Array","idx","maxBytesToRead","endIdx","endPtr","subarray","decode","str","u0","u1","u2","String","fromCharCode","ch","UTF8ToString","ptr","stringToUTF8Array","outU8Array","outIdx","maxBytesToWrite","startIdx","i","length","u","charCodeAt","lengthBytesUTF8","len","updateGlobalBufferAndViews","buf","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","Float32Array","Float64Array","INITIAL_TOTAL_MEMORY","callRuntimeCallbacks","callbacks","callback","shift","func","arg","Memory","byteLength","DYNAMICTOP_PTR","__ATPRERUN__","__ATINIT__","__ATMAIN__","__ATPOSTRUN__","runtimeInitialized","Math_abs","Math","abs","Math_ceil","ceil","Math_floor","floor","Math_min","min","runDependencies","dependenciesFulfilled","addRunDependency","id","removeRunDependency","what","RuntimeError","isDataURI","filename","prototype","startsWith","path","tempDouble","tempI64","wasmBinaryFile","getBinary","ASM_CONSTS","1184","$0","1404","1616","stackTrace","js","Error","stack","e","toString","jsStackTrace","replace","x","push","___wasm_call_ctors","PROCINFO","PATH","splitPath","exec","slice","normalizeArray","parts","allowAboveRoot","up","last","splice","unshift","normalize","isAbsolute","charAt","trailingSlash","split","filter","p","join","dirname","result","root","dir","basename","lastSlash","extname","paths","Array","call","arguments","join2","l","r","___setErrNo","value","PATH_FS","resolve","resolvedPath","resolvedAbsolute","FS","cwd","TypeError","relative","from","to","trim","arr","start","end","fromParts","toParts","samePartsLength","outputParts","concat","TTY","ttys","init","shutdown","register","dev","ops","input","output","registerDevice","stream_ops","stream","tty","node","rdev","ErrnoError","seekable","close","flush","read","offset","pos","get_char","bytesRead","timestamp","Date","now","write","put_char","default_tty_ops","window","prompt","readline","intArrayFromString","val","default_tty1_ops","MEMFS","ops_table","mount","createNode","parent","name","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","file","allocate","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsRegularArray","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","max","oldContents","set","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","size","atime","mtime","ctime","blksize","blocks","genericErrors","old_node","new_dir","new_name","new_node","lookupNode","entries","newname","oldpath","position","canOwn","whence","prot","flags","allocated","fromHeap","_malloc","byteOffset","mmapFlags","mounts","devices","streams","nextInode","nameTable","currentPath","initialized","ignorePermissions","trackingDelegate","tracking","openFlags","READ","WRITE","filesystems","syncFSRequests","handleFSError","errno","lookupPath","opts","defaults","follow_mount","recurse_count","current","current_path","islast","isMountpoint","mounted","follow","count","getPath","isRoot","mountpoint","hashName","parentid","hash","hashAddNode","name_next","hashRemoveNode","errCode","mayLookup","nodeName","FSNode","Object","defineProperties","get","isFolder","isDevice","destroyNode","isSocket","flagModes","rs","r+","w","wx","xw","w+","wx+","xw+","a","ax","xa","a+","ax+","xa+","modeStringToFlags","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","mayOpen","MAX_OPEN_FDS","nextfd","fd_start","fd_end","fd","getStream","createStream","FSStream","object","isRead","isWrite","isAppend","newStream","closeStream","device","getDevice","major","minor","makedev","ma","mi","getMounts","check","m","pop","apply","syncfs","populate","completed","doCallback","done","errored","forEach","type","pseudo","mountRoot","unmount","keys","next","create","mkdir","mkdirTree","dirs","d","mkdev","newpath","old_path","new_path","old_dir","old_dirname","new_dirname","old_name","message","stat","dontFollow","lstat","chmod","lchmod","fchmod","chown","lchown","fchown","truncate","ftruncate","utime","created","ungotten","error","readFiles","trackingFlags","isClosed","getdents","seeking","bytesWritten","munmap","ioctl","cmd","readFile","encoding","ret","writeFile","data","actualNumBytes","ArrayBuffer","isView","chdir","createDefaultDirectories","createDefaultDevices","random_device","crypto","randomBuffer","getRandomValues","createDevice","createSpecialDirectories","createStandardStreams","ensureErrnoError","setErrno","constructor","code","staticInit","quit","fflush","getMode","canRead","canWrite","joinPath","forceRelative","absolutePath","base","standardizePath","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createFolder","createPath","reverse","part","createFile","properties","createDataFile","createLink","target","forceLoadFile","obj","success","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","status","header","datalength","Number","getResponseHeader","hasByteServing","usesGzip","lazyArray","setRequestHeader","responseType","overrideMimeType","response","doXHR","_length","_chunkSize","createPreloadedFile","onload","onerror","dontCreateFile","preFinish","Browser","fullname","processData","byteArray","finish","handled","plugin","asyncLoad","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","DB_NAME","location","pathname","DB_VERSION","DB_STORE_NAME","saveFilesToDB","openRequest","onupgradeneeded","createObjectStore","onsuccess","transaction","files","objectStore","ok","fail","total","putRequest","put","loadFilesFromDB","db","getRequest","SYSCALLS","DEFAULT_POLLMASK","mappings","umask","calculateAt","dirfd","dirstream","doStat","getTime","doMsync","addr","doMkdir","doMknod","doReadlink","bufsize","endChar","doAccess","amode","doDup","suggestFD","suggest","doReadv","iov","iovcnt","curr","doWritev","varargs","getStr","getStreamFromFD","get64","low","getZero","emscripten_realloc_buffer","grow","ENV","_emscripten_get_environ","strings","env","USER","LOGNAME","PWD","HOME","LANG","navigator","languages","_","readAsmConstArgs","sigPtr","array","args","stringy","dontAddNull","u8array","numBytesWritten","asmLibraryArg","h","which","argbuf","c","dest","num","requestedSize","oldSize","multiple","cutDown","overGrownHeapSize","f","__environ","environ_buf","bufSize","string","writeAsciiToMemory","g","penviron_count","penviron_buf_size","j","offset_low","offset_high","newOffset","b","pnum","k","memory","table","asm","info","receiveInstance","instance","receiveInstantiatedSource","instantiateArrayBuffer","receiver","fetch","Promise","reject","credentials","then","catch","binary","instantiate","reason","instantiateStreaming","instantiateAsync","createWasm","calledRun","_emscripten_bind_CExpat_CExpat_0","_emscripten_bind_CExpat_create_0","_emscripten_bind_CExpat_destroy_0","_emscripten_bind_CExpat_parse_1","_emscripten_bind_CExpat_tag_0","_emscripten_bind_CExpat_attrs_0","_emscripten_bind_CExpat_content_0","_emscripten_bind_CExpat_startElement_0","_emscripten_bind_CExpat_endElement_0","_emscripten_bind_CExpat_characterData_0","_emscripten_bind_CExpat___destroy___0","_emscripten_bind_CExpatJS_CExpatJS_0","_emscripten_bind_CExpatJS_startElement_0","_emscripten_bind_CExpatJS_endElement_0","_emscripten_bind_CExpatJS_characterData_0","_emscripten_bind_CExpatJS___destroy___0","_emscripten_bind_VoidPtr___destroy___0","run","doRun","cb","postRun","preRun","setTimeout","old","runCaller","WrapperObject","getCache","__class__","__cache__","wrapPointer","cache","obj1","obj2","ensureCache","temps","needed","prepare","alloc","view","bytes","BYTES_PER_ELEMENT","copy","offsetShifted","CExpat","CExpatJS","VoidPtr","destroy","parse","xml","intArray","ensureString","tag","attrs","content","startElement","endElement","characterData","__destroy__","expatlib$1","freeze","__proto__","default","__moduleExports","_wasmFolder","Function","__hpcc_wasmFolder","wasmFolder","retVal","loadWasm","_wasmLib","wasmLib","__hpcc_promise","locateFile","prefix","StackElement","_content","defineProperty","enumerable","configurable","appendContent","StackParser","_stack","top","parser","sep","sep2","parseAttrs","graphvizlib","quit_","toThrow","noExitRuntime","tempRet0","setTempRet0","HEAP16","1088","$1","_emscripten_get_now","_memset","aligned_end","block_aligned_end","value4","setjmpId","__isLeapYear","year","__arraySum","index","sum","__MONTH_DAYS_LEAP","__MONTH_DAYS_REGULAR","__addDays","date","days","newDate","leap","getFullYear","currentMonth","getMonth","daysInCurrentMonth","getDate","setDate","setMonth","setFullYear","_strftime","s","maxsize","format","tm","tm_zone","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","tm_isdst","tm_gmtoff","pattern","EXPANSION_RULES_1","%c","%D","%F","%h","%r","%R","%T","%x","%X","%Ec","%EC","%Ex","%EX","%Ey","%EY","%Od","%Oe","%OH","%OI","%Om","%OM","%OS","%Ou","%OU","%OV","%Ow","%OW","%Oy","rule","RegExp","WEEKDAYS","MONTHS","leadingSomething","digits","character","leadingNulls","compareByDay","date1","date2","sgn","compare","getFirstWeekStartDate","janFourth","getDay","getWeekBasedYear","thisDate","janFourthThisYear","janFourthNextYear","firstWeekStartThisYear","firstWeekStartNextYear","EXPANSION_RULES_2","%a","substring","%A","%b","%B","%C","%d","%e","%g","%G","%H","%I","twelveHour","%j","%m","%M","%n","%p","%S","%t","%u","%U","janFirst","firstSunday","endDate","februaryFirstUntilEndMonth","%V","daysDifference","%w","%W","firstMonday","%y","%Y","%z","off","ahead","%Z","%%","writeArrayToMemory","performance","M","a0","a1","clk_id","tp","_clock_gettime","destructor","__ZSt18uncaught_exceptionv","uncaught_exceptions","q","U","P","R","_memalign","res","malloc","__emscripten_syscall_mmap2","S","T","L","y","K","z","O","op","argp","Q","_free","__emscripten_syscall_munmap","C","_setThrew","_longjmp","E","F","I","J","implicit","ExitStatus","exit","H","pbuf","N","D","X","Y","sp","stackSave","dynCall_d","stackRestore","V","dynCall_di","v","dynCall_i","dynCall_ii","a2","dynCall_iii","a3","dynCall_iiii","n","a4","dynCall_iiiii","W","a5","a6","dynCall_iiiiiii","dynCall_v","dynCall_vi","o","dynCall_vii","dynCall_viii","t","dynCall_viiii","dynCall_viiiii","_saveSetjmp","label","_realloc","$i","G","A","B","_emscripten_bind_Main_layout_3","_emscripten_bind_Main_lastError_0","_emscripten_bind_Main_createFile_2","_emscripten_bind_Main___destroy___0","Main","layout","dot","engine","lastError","graphvizlib$1","__assign","assign","__spreadArrays","il","jl","imageToFile","image","width","height","createFiles","wasm","_ext","images","ext","map","graphviz","dotSource","outputFormat","layoutEngine","circo","fdp","neato","osage","patchwork","twopi","GraphvizSync","_wasm","graphvizSync"],"mappings":"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"} \ No newline at end of file diff --git a/graphviz.ts b/graphviz.ts index 1601dfa..c286681 100644 --- a/graphviz.ts +++ b/graphviz.ts @@ -16,13 +16,9 @@ export function generateGraphViz(functionMap: Map) { }); }); - console.log(g.to_dot()); + // console.log(g.to_dot()); - try { - g.output("png", "graphing/temp.png"); - } catch (err) { - console.log('GraphViz not installed'); - } + return g.to_dot(); } diff --git a/index.ts b/index.ts index addd993..77e7a9f 100644 --- a/index.ts +++ b/index.ts @@ -61,7 +61,7 @@ function showHelpMessage(): void { function proceed(): void { const functionMap: Map = processFiles(withoutNodeModules); - generateGraphViz(functionMap); + // generateGraphViz(functionMap); startServer(functionMap); } @@ -83,6 +83,10 @@ function startServer(functionMap): void { res.json(convertForD3(functionMap)); }); + app.get('/dot', function (req, res) { + res.json(generateGraphViz(functionMap)); + }); + app.listen(3000) const filePath: string = 'http://localhost:3000'; diff --git a/package-lock.json b/package-lock.json index 31f6849..44faec8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,11 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@hpcc-js/wasm": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-0.3.14.tgz", + "integrity": "sha512-4+Gxy/KrWQcJkr67mPkTz5BgrrbuZJyDJoKGE1RSzsx8dTU+AgyfL/ILLkucyTvmakSNB6tmuvdFM4ua08G14w==" + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -120,6 +125,106 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-ease": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.6.tgz", + "integrity": "sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==" + }, + "d3-format": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz", + "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw==" + }, + "d3-graphviz": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-graphviz/-/d3-graphviz-3.1.0.tgz", + "integrity": "sha512-OcVBBvpj2QR1waw+rhQitZshUrS4I/zScsm+LWXowg96hGccsjWF6YGaU3p9pnZQu45yxpji2Zt9y2Zne4wE9Q==", + "requires": { + "@hpcc-js/wasm": "0.3.13", + "d3-dispatch": "^1.0.6", + "d3-format": "^1.4.3", + "d3-interpolate": "^1.4.0", + "d3-path": "^1.0.9", + "d3-selection": "^1.4.1", + "d3-timer": "^1.0.10", + "d3-transition": "^1.3.2", + "d3-zoom": "1.7.3" + }, + "dependencies": { + "@hpcc-js/wasm": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-0.3.13.tgz", + "integrity": "sha512-cnhBOjxa2RCb/0phDmjy9u1+GEMyDKFtf1uXbtYFlm9XcyLZEDKFOzYjeb9iXM4mF0dDhS0P3iRmy4U9orIasA==" + } + } + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-selection": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.1.tgz", + "integrity": "sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA==" + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-zoom": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.3.tgz", + "integrity": "sha512-xEBSwFx5Z9T3/VrwDkMt+mr0HCzv7XjpGURJ8lWmIC8wxe32L39eWHIasEe/e7Ox8MPU4p1hvH8PKN2olLzIBg==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", diff --git a/package.json b/package.json index 7f179ca..0ac09f2 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ }, "dependencies": { "@types/node": "14.0.11", + "d3-graphviz": "3.1.0", "express": "4.17.1", "graphviz": "0.0.9", "inquirer": "7.1.0", From e409bfeb7ff355c38261fa04ea7b953cdf4818ee Mon Sep 17 00:00:00 2001 From: Boris Yakubchik Date: Mon, 15 Jun 2020 19:53:09 -0400 Subject: [PATCH 10/17] split graphs into pages --- bin/index.js | 3 +- graphing/{ => cascade}/graph.js | 0 graphing/cascade/index.html | 77 +++++++++++++++++++ graphing/{ => cascade}/index.js | 0 graphing/{ => cascade}/runtime.js | 0 graphing/{ => graphviz}/d3-graphviz.js | 0 graphing/{ => graphviz}/d3-graphviz.js.map | 0 graphing/{ => graphviz}/d3.v5.min.js | 0 graphing/{ => graphviz}/graphvizlib.wasm | Bin graphing/graphviz/index.html | 29 +++++++ graphing/{ => graphviz}/index.min.js | 0 graphing/{ => graphviz}/index.min.js.map | 0 graphing/index.html | 85 ++------------------- index.ts | 4 +- package-lock.json | 5 -- 15 files changed, 118 insertions(+), 85 deletions(-) rename graphing/{ => cascade}/graph.js (100%) create mode 100644 graphing/cascade/index.html rename graphing/{ => cascade}/index.js (100%) rename graphing/{ => cascade}/runtime.js (100%) rename graphing/{ => graphviz}/d3-graphviz.js (100%) rename graphing/{ => graphviz}/d3-graphviz.js.map (100%) rename graphing/{ => graphviz}/d3.v5.min.js (100%) rename graphing/{ => graphviz}/graphvizlib.wasm (100%) create mode 100644 graphing/graphviz/index.html rename graphing/{ => graphviz}/index.min.js (100%) rename graphing/{ => graphviz}/index.min.js.map (100%) diff --git a/bin/index.js b/bin/index.js index aa858be..922f871 100755 --- a/bin/index.js +++ b/bin/index.js @@ -50,7 +50,6 @@ function showHelpMessage() { */ function proceed() { var functionMap = extract_1.processFiles(withoutNodeModules); - // generateGraphViz(functionMap); startServer(functionMap); } /** @@ -62,6 +61,8 @@ function startServer(functionMap) { var app = express(); var path = require('path'); app.use(express.static(path.join(__dirname, '..', 'graphing'))); + app.use('/graphviz', express.static(path.join(__dirname, '..', 'graphing/graphviz'))); + app.use('/cascade', express.static(path.join(__dirname, '..', 'graphing/cascade'))); app.get('/hi', function (req, res) { res.json(convert_1.convertForD3(functionMap)); }); diff --git a/graphing/graph.js b/graphing/cascade/graph.js similarity index 100% rename from graphing/graph.js rename to graphing/cascade/graph.js diff --git a/graphing/cascade/index.html b/graphing/cascade/index.html new file mode 100644 index 0000000..fdd9098 --- /dev/null +++ b/graphing/cascade/index.html @@ -0,0 +1,77 @@ + + + + TypeScript Call Graph + + + + + + +
+ + + diff --git a/graphing/index.js b/graphing/cascade/index.js similarity index 100% rename from graphing/index.js rename to graphing/cascade/index.js diff --git a/graphing/runtime.js b/graphing/cascade/runtime.js similarity index 100% rename from graphing/runtime.js rename to graphing/cascade/runtime.js diff --git a/graphing/d3-graphviz.js b/graphing/graphviz/d3-graphviz.js similarity index 100% rename from graphing/d3-graphviz.js rename to graphing/graphviz/d3-graphviz.js diff --git a/graphing/d3-graphviz.js.map b/graphing/graphviz/d3-graphviz.js.map similarity index 100% rename from graphing/d3-graphviz.js.map rename to graphing/graphviz/d3-graphviz.js.map diff --git a/graphing/d3.v5.min.js b/graphing/graphviz/d3.v5.min.js similarity index 100% rename from graphing/d3.v5.min.js rename to graphing/graphviz/d3.v5.min.js diff --git a/graphing/graphvizlib.wasm b/graphing/graphviz/graphvizlib.wasm similarity index 100% rename from graphing/graphvizlib.wasm rename to graphing/graphviz/graphvizlib.wasm diff --git a/graphing/graphviz/index.html b/graphing/graphviz/index.html new file mode 100644 index 0000000..bcf0c96 --- /dev/null +++ b/graphing/graphviz/index.html @@ -0,0 +1,29 @@ + + + + TypeScript Call Graph + + + + + + + + + + +
+ + + diff --git a/graphing/index.min.js b/graphing/graphviz/index.min.js similarity index 100% rename from graphing/index.min.js rename to graphing/graphviz/index.min.js diff --git a/graphing/index.min.js.map b/graphing/graphviz/index.min.js.map similarity index 100% rename from graphing/index.min.js.map rename to graphing/graphviz/index.min.js.map diff --git a/graphing/index.html b/graphing/index.html index 501995f..02dbcd0 100644 --- a/graphing/index.html +++ b/graphing/index.html @@ -1,91 +1,22 @@ + TypeScript Call Graph +

+ WELCOME !!! +

- - - - -
- - diff --git a/index.ts b/index.ts index 77e7a9f..6856e4f 100644 --- a/index.ts +++ b/index.ts @@ -61,8 +61,6 @@ function showHelpMessage(): void { function proceed(): void { const functionMap: Map = processFiles(withoutNodeModules); - // generateGraphViz(functionMap); - startServer(functionMap); } @@ -78,6 +76,8 @@ function startServer(functionMap): void { const path = require('path'); app.use(express.static(path.join(__dirname, '..', 'graphing'))); + app.use('/graphviz', express.static(path.join(__dirname, '..', 'graphing/graphviz'))); + app.use('/cascade', express.static(path.join(__dirname, '..', 'graphing/cascade'))); app.get('/hi', function (req, res) { res.json(convertForD3(functionMap)); diff --git a/package-lock.json b/package-lock.json index 44faec8..0628993 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,11 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@hpcc-js/wasm": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@hpcc-js/wasm/-/wasm-0.3.14.tgz", - "integrity": "sha512-4+Gxy/KrWQcJkr67mPkTz5BgrrbuZJyDJoKGE1RSzsx8dTU+AgyfL/ILLkucyTvmakSNB6tmuvdFM4ua08G14w==" - }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", From 06c660cc437323f7dc5e21cb70e9d17009e670fe Mon Sep 17 00:00:00 2001 From: Boris Yakubchik Date: Tue, 16 Jun 2020 10:22:30 -0400 Subject: [PATCH 11/17] arc diagram --- README.md | 5 +- arc.ts | 33 +++ bin/arc.js | 32 +++ bin/cascade.js | 74 +++++++ bin/convert.js | 6 +- bin/extract.js | 35 ++- bin/graphviz.js | 7 +- bin/helper.js | 35 +++ bin/index.js | 50 ++--- convert.ts => cascade.ts | 8 +- extract.ts | 38 +++- graphing/arc/arc.js | 209 ++++++++++++++++++ graphing/arc/index.html | 28 +++ graphing/cascade/graph.js | 2 +- graphing/cascade/index.html | 4 +- graphing/cascade/index.js | 1 - graphing/graphviz/index.html | 8 +- graphing/index.html | 3 + graphing/{graphviz => vendor}/d3-graphviz.js | 0 graphing/{graphviz => vendor}/d3.v5.min.js | 0 .../{graphviz => vendor}/graphvizlib.wasm | Bin graphing/{graphviz => vendor}/index.min.js | 0 graphing/{cascade => vendor}/runtime.js | 0 graphviz.ts | 4 +- helper.ts | 33 +++ index.ts | 55 ++--- package.json | 2 +- tsconfig.json | 8 +- 28 files changed, 554 insertions(+), 126 deletions(-) create mode 100644 arc.ts create mode 100644 bin/arc.js create mode 100644 bin/cascade.js create mode 100644 bin/helper.js rename convert.ts => cascade.ts (87%) create mode 100644 graphing/arc/arc.js create mode 100644 graphing/arc/index.html delete mode 100644 graphing/cascade/index.js rename graphing/{graphviz => vendor}/d3-graphviz.js (100%) rename graphing/{graphviz => vendor}/d3.v5.min.js (100%) rename graphing/{graphviz => vendor}/graphvizlib.wasm (100%) rename graphing/{graphviz => vendor}/index.min.js (100%) rename graphing/{cascade => vendor}/runtime.js (100%) create mode 100644 helper.ts diff --git a/README.md b/README.md index 39f3b09..7a6d679 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,9 @@ Suggestions or PRs for how to improve this CLI are very welcome ๐Ÿ™‡ ### Thank you -- [Matteo Abrate](https://observablehq.com/@nitaku/tangled-tree-visualization-ii) for graphing code I could use +- [Matteo Abrate](https://observablehq.com/@nitaku/tangled-tree-visualization-ii) for the _tangled tree visualization_ +- [Mike Bostock](https://observablehq.com/@d3/arc-diagram) for the _arc diagram_ +- [GraphViz](https://graphviz.org/), [node-graphviz](https://github.com/glejeune/node-graphviz), and [d3-graphviz](https://github.com/magjac/d3-graphviz) for the simple graph - [Tutorial](https://convincedcoder.com/2019/01/19/Processing-TypeScript-using-TypeScript/) and code for processing TypeScript (AST) - [Tutorial](https://developer.okta.com/blog/2019/06/18/command-line-app-with-nodejs) for creating a *CLI* -- [GraphViz](https://graphviz.org/) and [node-graphviz](https://github.com/glejeune/node-graphviz) - [TS-Call-Graph](https://github.com/Deskbot/TS-Call-Graph) for inspiration diff --git a/arc.ts b/arc.ts new file mode 100644 index 0000000..17cc31d --- /dev/null +++ b/arc.ts @@ -0,0 +1,33 @@ +/** + * Convert the call map to format D3 wants + * @param calledFunctions + */ +export function convertForArc(allFunctions: string[], calledFunctions: Map) { + + const nodes = []; + const links = []; + + allFunctions.forEach((func: string) => { + nodes.push({ + id: func, + group: 1, // later make this tied to an integer representing the file it came from + }) + }); + + calledFunctions.forEach((childArr, key) => { + childArr.forEach((child) => { + links.push({ + source: key, + target: child, + value: 1, // indicates 'strength' of connection -- leave as 1 for now + }); + }); + }); + + const all = { + nodes: nodes, + links: links, + }; + + return all; +} diff --git a/bin/arc.js b/bin/arc.js new file mode 100644 index 0000000..2612f5c --- /dev/null +++ b/bin/arc.js @@ -0,0 +1,32 @@ +"use strict"; +exports.__esModule = true; +exports.convertForArc = void 0; +/** + * Convert the call map to format D3 wants + * @param calledFunctions + */ +function convertForArc(allFunctions, calledFunctions) { + var nodes = []; + var links = []; + allFunctions.forEach(function (func) { + nodes.push({ + id: func, + group: 1 + }); + }); + calledFunctions.forEach(function (childArr, key) { + childArr.forEach(function (child) { + links.push({ + source: key, + target: child, + value: 1 + }); + }); + }); + var all = { + nodes: nodes, + links: links + }; + return all; +} +exports.convertForArc = convertForArc; diff --git a/bin/cascade.js b/bin/cascade.js new file mode 100644 index 0000000..9c92e5b --- /dev/null +++ b/bin/cascade.js @@ -0,0 +1,74 @@ +"use strict"; +var __spreadArrays = (this && this.__spreadArrays) || function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; +exports.__esModule = true; +exports.convertForCascade = void 0; +// Some globals +var myMap; +var final = []; +var calledAlready = []; // to keep track of what has been called; prevent reculsion! +/** + * Take a parent function and return all children in proper format + * @param parent + */ +function generateFromOneParent(parent) { + var newElements = []; + if (myMap.has(parent)) { + var children = myMap.get(parent); + children.forEach(function (element) { + if (!calledAlready.includes(element)) { // PREVENT RECURSION ! + newElements.push({ id: element, parents: [parent] }); + } + }); + } + return newElements; +} +/** + * Recursive function to generate each subsequent level + * @param parents + * @param stackDepth - maximum depth of calls to trace + */ +function generateNextLevel(parents, stackDepth) { + calledAlready.push.apply(calledAlready, parents); + if (stackDepth === 0) { + return; + } + // Generate the NodeForGraphing[] for this 'level' + var thisLevel = []; + parents.forEach(function (parent) { + thisLevel.push.apply(thisLevel, generateFromOneParent(parent)); + }); + if (thisLevel.length) { + final.push(__spreadArrays(thisLevel)); + } + // start building the next `level` + var nextLevel = []; + parents.forEach(function (parent) { + if (myMap.has(parent)) { + nextLevel.push.apply(nextLevel, myMap.get(parent)); + } + }); + if (nextLevel.length) { + generateNextLevel(nextLevel, stackDepth - 1); + } +} +/** + * Convert the call map to format D3 wants + * @param calledFunctions + */ +function convertForCascade(calledFunctions) { + myMap = calledFunctions; + final = []; + calledAlready = []; + // 1st case -- handle manually + final.push([{ id: 'proceed' }]); + // all next cases generate automatically + generateNextLevel(['proceed'], 10); + return final; +} +exports.convertForCascade = convertForCascade; diff --git a/bin/convert.js b/bin/convert.js index 1acd7bd..cdc5ff9 100644 --- a/bin/convert.js +++ b/bin/convert.js @@ -7,7 +7,7 @@ var __spreadArrays = (this && this.__spreadArrays) || function () { return r; }; exports.__esModule = true; -exports.convertForD3 = void 0; +exports.convertForCascade = void 0; // Some globals var myMap; var final = []; @@ -61,7 +61,7 @@ function generateNextLevel(parents, stackDepth) { * Convert the call map to format D3 wants * @param calledFunctions */ -function convertForD3(calledFunctions) { +function convertForCascade(calledFunctions) { myMap = calledFunctions; final = []; calledAlready = []; @@ -76,4 +76,4 @@ function convertForD3(calledFunctions) { console.log(''); return final; } -exports.convertForD3 = convertForD3; +exports.convertForCascade = convertForCascade; diff --git a/bin/extract.js b/bin/extract.js index e68fad8..1f0f73d 100644 --- a/bin/extract.js +++ b/bin/extract.js @@ -3,6 +3,7 @@ exports.__esModule = true; exports.processFiles = void 0; var ts = require("typescript"); var fs = require('fs'); +var _a = require('kleur'), green = _a.green, red = _a.red; var functionsToIgnore = []; // optionally ['require', 'parseInt', 'exec', 'reject', 'resolve']; var allFunctions = []; var calledFunctions = new Map(); @@ -83,15 +84,25 @@ function processFiles(filenames) { // then do recursion for each filenames.forEach(function (filename) { var rootNodes = []; - var codeAsString = fs.readFileSync(filename).toString(); - var sourceFile = ts.createSourceFile(filename, codeAsString, ts.ScriptTarget.Latest); - sourceFile.forEachChild(function (child) { - rootNodes.push(child); - }); - rootNodes.forEach(function (node) { - currentFunction = undefined; - extractFunctionCalls(node, sourceFile, 1); - }); + var codeAsString; + var skipFile = false; + try { + codeAsString = fs.readFileSync(filename).toString(); + } + catch (err) { + console.log('File', green(filename), red('not found!'), ' - skipping'); + skipFile = true; + } + if (!skipFile) { + var sourceFile_1 = ts.createSourceFile(filename, codeAsString, ts.ScriptTarget.Latest); + sourceFile_1.forEachChild(function (child) { + rootNodes.push(child); + }); + rootNodes.forEach(function (node) { + currentFunction = undefined; + extractFunctionCalls(node, sourceFile_1, 1); + }); + } }); calledFunctions["delete"](undefined); // Output @@ -114,6 +125,10 @@ function processFiles(filenames) { } }); console.log(calledFunctions); - return calledFunctions; + var functions = { + all: allFunctions, + called: calledFunctions + }; + return functions; } exports.processFiles = processFiles; diff --git a/bin/graphviz.js b/bin/graphviz.js index 02b20cf..32cfd7d 100644 --- a/bin/graphviz.js +++ b/bin/graphviz.js @@ -1,8 +1,8 @@ "use strict"; exports.__esModule = true; -exports.generateGraphViz = void 0; +exports.convertForGraphViz = void 0; var graphviz = require('graphviz'); -function generateGraphViz(functionMap) { +function convertForGraphViz(functionMap) { var g = graphviz.digraph("G"); g.set("rankdir", "LR"); functionMap.forEach(function (value, key) { @@ -13,7 +13,6 @@ function generateGraphViz(functionMap) { g.addEdge(key, child); }); }); - // console.log(g.to_dot()); return g.to_dot(); } -exports.generateGraphViz = generateGraphViz; +exports.convertForGraphViz = convertForGraphViz; diff --git a/bin/helper.js b/bin/helper.js new file mode 100644 index 0000000..1fe16ce --- /dev/null +++ b/bin/helper.js @@ -0,0 +1,35 @@ +"use strict"; +exports.__esModule = true; +exports.showServerRunning = exports.showHelpMessage = void 0; +var _a = require('kleur'), green = _a.green, bold = _a.bold; +/** + * Shown when user runs `tcg` without arguments + */ +function showHelpMessage() { + console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); + console.log(green('โ”‚ โ”‚')); + console.log(green('โ”‚ ') + bold('Typescript Node Graph') + green(' โ”‚')); + console.log(green('โ”‚ โ”‚')); + console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); + console.log('Please provide a list of input files and/or folders'); + console.log('e.g. `' + + green('myFile.ts') + '`, `' + + green('*') + '`, `' + + green('**/*') + '`, `' + + green('myFolder/*') + '`'); + console.log('or any combination of the above, like `' + green('myFile.ts myFolder/*') + '`'); +} +exports.showHelpMessage = showHelpMessage; +/** + * Console log that server is running + * @param filePath + */ +function showServerRunning(filePath) { + // Helpful message + console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); + console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); + console.log(green('โ”‚ ') + filePath + green(' โ”‚')); + console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); + console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); +} +exports.showServerRunning = showServerRunning; diff --git a/bin/index.js b/bin/index.js index 922f871..42bce84 100755 --- a/bin/index.js +++ b/bin/index.js @@ -2,10 +2,11 @@ "use strict"; exports.__esModule = true; var open = require("open"); -var _a = require('kleur'), green = _a.green, bold = _a.bold; var extract_1 = require("./extract"); -var convert_1 = require("./convert"); +var arc_1 = require("./arc"); +var cascade_1 = require("./cascade"); var graphviz_1 = require("./graphviz"); +var helper_1 = require("./helper"); var myArgs = process.argv.slice(2); var onlyTypescript = myArgs.filter(function (file) { return file.endsWith('ts'); }); var withoutNodeModules = onlyTypescript.filter(function (file) { return !file.includes('node_modules'); }); @@ -26,56 +27,33 @@ if (withoutNodeModules.length) { }); } else { - showHelpMessage(); -} -/** - * Shown when user runs `tcg` without arguments - */ -function showHelpMessage() { - console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); - console.log(green('โ”‚ โ”‚')); - console.log(green('โ”‚ ') + bold('Typescript Node Graph') + green(' โ”‚')); - console.log(green('โ”‚ โ”‚')); - console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); - console.log('Please provide a list of input files and/or folders'); - console.log('e.g. `' - + green('myFile.ts') + '`, `' - + green('*') + '`, `' - + green('**/*') + '`, `' - + green('myFolder/*') + '`'); - console.log('or any combination of the above, like `' + green('myFile.ts myFolder/*') + '`'); + helper_1.showHelpMessage(); } /** * If user confirms the files they want to analyze, proceed */ function proceed() { - var functionMap = extract_1.processFiles(withoutNodeModules); - startServer(functionMap); + var functions = extract_1.processFiles(withoutNodeModules); + startServer(functions.all, functions.called); } /** * Start Express server with static files and API endpoints * @param functionMap */ -function startServer(functionMap) { +function startServer(allFunctions, functionMap) { var express = require('express'); var app = express(); var path = require('path'); app.use(express.static(path.join(__dirname, '..', 'graphing'))); - app.use('/graphviz', express.static(path.join(__dirname, '..', 'graphing/graphviz'))); + app.use('/arc', express.static(path.join(__dirname, '..', 'graphing/arc'))); app.use('/cascade', express.static(path.join(__dirname, '..', 'graphing/cascade'))); - app.get('/hi', function (req, res) { - res.json(convert_1.convertForD3(functionMap)); - }); - app.get('/dot', function (req, res) { - res.json(graphviz_1.generateGraphViz(functionMap)); - }); + app.use('/graphviz', express.static(path.join(__dirname, '..', 'graphing/graphviz'))); + app.use('/vendor', express.static(path.join(__dirname, '..', 'graphing/vendor'))); + app.get('/arcAPI', function (req, res) { res.json(arc_1.convertForArc(allFunctions, functionMap)); }); + app.get('/cascadeAPI', function (req, res) { res.json(cascade_1.convertForCascade(functionMap)); }); + app.get('/graphvizAPI', function (req, res) { res.json(graphviz_1.convertForGraphViz(functionMap)); }); app.listen(3000); var filePath = 'http://localhost:3000'; - // Helpful message - console.log(green('โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ')); - console.log(green('โ”‚ ') + 'Graph visible @ ' + green(' โ”‚')); - console.log(green('โ”‚ ') + filePath + green(' โ”‚')); - console.log(green('โ”‚ ') + 'Ctrl + C to quit ' + green(' โ”‚')); - console.log(green('โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ')); + helper_1.showServerRunning(filePath); open(filePath); } diff --git a/convert.ts b/cascade.ts similarity index 87% rename from convert.ts rename to cascade.ts index e960a91..6b8e26d 100644 --- a/convert.ts +++ b/cascade.ts @@ -70,7 +70,7 @@ function generateNextLevel(parents: string[], stackDepth: number): void { * Convert the call map to format D3 wants * @param calledFunctions */ -export function convertForD3(calledFunctions: Map) { +export function convertForCascade(calledFunctions: Map) { myMap = calledFunctions; final = []; calledAlready = []; @@ -80,11 +80,5 @@ export function convertForD3(calledFunctions: Map) { // all next cases generate automatically generateNextLevel(['proceed'], 10); - console.log('======================================'); - console.log(final); - console.log('--------------------------------------'); - console.log(JSON.stringify(final)); - console.log(''); - return final; } diff --git a/extract.ts b/extract.ts index 5f4abdd..04d6415 100644 --- a/extract.ts +++ b/extract.ts @@ -1,6 +1,8 @@ import * as ts from "typescript"; const fs = require('fs'); +const { green, red } = require('kleur'); + const functionsToIgnore: string[] = []; // optionally ['require', 'parseInt', 'exec', 'reject', 'resolve']; const allFunctions: string[] = []; @@ -96,18 +98,29 @@ export function processFiles(filenames: string[]) { const rootNodes: ts.Node[] = []; - const codeAsString: string = fs.readFileSync(filename).toString(); + let codeAsString: string; - const sourceFile: ts.SourceFile = ts.createSourceFile(filename, codeAsString, ts.ScriptTarget.Latest); + let skipFile: boolean = false; - sourceFile.forEachChild((child: ts.Node) => { - rootNodes.push(child) - }); + try { + codeAsString = fs.readFileSync(filename).toString(); + } catch (err) { + console.log('File', green(filename), red('not found!'), ' - skipping'); + skipFile = true; + } - rootNodes.forEach((node: ts.Node) => { - currentFunction = undefined; - extractFunctionCalls(node, sourceFile, 1); - }); + if (!skipFile) { + const sourceFile: ts.SourceFile = ts.createSourceFile(filename, codeAsString, ts.ScriptTarget.Latest); + + sourceFile.forEachChild((child: ts.Node) => { + rootNodes.push(child) + }); + + rootNodes.forEach((node: ts.Node) => { + currentFunction = undefined; + extractFunctionCalls(node, sourceFile, 1); + }); + } }); @@ -136,5 +149,10 @@ export function processFiles(filenames: string[]) { console.log(calledFunctions); - return calledFunctions; + const functions = { + all: allFunctions, + called: calledFunctions, + } + + return functions; } diff --git a/graphing/arc/arc.js b/graphing/arc/arc.js new file mode 100644 index 0000000..50e5c89 --- /dev/null +++ b/graphing/arc/arc.js @@ -0,0 +1,209 @@ +// https://observablehq.com/@d3/arc-diagram@265 +export default function define(runtime, observer) { + const main = runtime.module(); + const fileAttachments = new Map([["arcData.json", new URL("http://localhost:3000/arcAPI", import.meta.url)]]); + main.builtin("FileAttachment", runtime.fileAttachments(name => fileAttachments.get(name))); + main.variable(observer()).define(["md"], function (md) { + return ( + md`## Arc Diagram` + ) + }); + main.variable(observer("viewof order")).define("viewof order", ["d3", "html"], function (d3, html) { + const options = [ + { name: "Order by name", value: (a, b) => d3.ascending(a.id, b.id) }, + { name: "Order by group", value: (a, b) => a.group - b.group || d3.ascending(a.id, b.id) }, + { name: "Order by degree", value: (a, b) => d3.sum(b.sourceLinks, l => l.value) + d3.sum(b.targetLinks, l => l.value) - d3.sum(a.sourceLinks, l => l.value) - d3.sum(a.targetLinks, l => l.value) || d3.ascending(a.id, b.id) } + ]; + const form = html`