From 68c43ab486ca71352ae621b8a455edf004a1ee10 Mon Sep 17 00:00:00 2001 From: Wilson Lin Date: Thu, 9 Jan 2020 22:40:04 +1100 Subject: [PATCH] Also bench hyperbuild Rust; improve graphs; remove default values for html-minifier config --- bench/.gitignore | 2 + bench/bench.js | 163 +++++++++++------------------ bench/fetch.js | 1 + bench/graph.js | 86 +++++++++++++++ bench/hyperbuild-bench/Cargo.toml | 12 +++ bench/hyperbuild-bench/src/main.rs | 34 ++++++ bench/install.sh | 9 ++ bench/minification.json | 40 +++---- bench/minification.png | Bin 38754 -> 38707 bytes bench/minifiers.js | 19 +--- bench/package.json | 3 + bench/speed.json | 82 +++++++++++++-- bench/speed.png | Bin 9715 -> 38519 bytes bench/tests.js | 6 +- fuzz/Cargo.toml | 1 + src/err.rs | 2 + 16 files changed, 307 insertions(+), 153 deletions(-) create mode 100644 bench/graph.js create mode 100644 bench/hyperbuild-bench/Cargo.toml create mode 100644 bench/hyperbuild-bench/src/main.rs create mode 100755 bench/install.sh diff --git a/bench/.gitignore b/bench/.gitignore index e9dc357..bafe521 100644 --- a/bench/.gitignore +++ b/bench/.gitignore @@ -1,2 +1,4 @@ node_modules/ min/ +hyperbuild-bench/Cargo.lock +hyperbuild-bench/target/ diff --git a/bench/bench.js b/bench/bench.js index a59d7e9..beb0c3a 100644 --- a/bench/bench.js +++ b/bench/bench.js @@ -1,65 +1,39 @@ -"use strict"; - const benchmark = require('benchmark'); -const chartjs = require('chartjs-node'); +const childProcess = require('child_process'); const fs = require('fs'); const path = require('path'); const programs = require('./minifiers'); const tests = require('./tests'); -const colours = [ - { - backgroundColor: '#9ad0f5', - borderColor: '#47aaec', - }, - { - backgroundColor: '#ffb0c1', - borderColor: '#ff87a1', - }, - { - backgroundColor: '#a4dfdf', - borderColor: '#4bc0c0', - }, -]; -const chartOptions = (title, displayLegend, yTick = t => t) => ({ - options: { - title: { - display: true, - text: title, - }, - scales: { - xAxes: [{ - barPercentage: 0.5, - gridLines: { - color: '#ccc', - }, - ticks: { - fontColor: '#222', - }, - }], - yAxes: [{ - gridLines: { - color: '#666', - }, - ticks: { - callback: yTick, - fontColor: '#222', - }, - }], - }, - legend: { - display: displayLegend, - labels: { - fontFamily: 'Ubuntu, sans-serif', - fontColor: '#000', - }, - }, - }, -}); -const renderChart = async (file, cfg) => { - const chart = new chartjs(435, 320); - await chart.drawChart(cfg); - await chart.writeImageToFile('image/png', path.join(__dirname, `${file}.png`)); +const cmd = (command, ...args) => { + const throwErr = msg => { + throw new Error(`${msg}\n ${command} ${args.join(' ')}`); + }; + + const {status, signal, error, stdout, stderr} = childProcess.spawnSync(command, args.map(String), { + stdio: ['ignore', 'pipe', 'pipe'], + encoding: 'utf8', + }); + if (error) { + throwErr(error.message); + } + if (signal) { + throwErr(`Command exited with signal ${signal}`); + } + if (status !== 0) { + throwErr(`Command exited with status ${status}`); + } + if (stderr) { + throwErr(`stderr: ${stderr}`); + } + return stdout; +}; + +const fromEntries = entries => { + if (Object.fromEntries) return Object.fromEntries(entries); + const obj = {}; + for (const [prop, val] of entries) obj[prop] = val; + return obj; }; const sizes = {}; @@ -91,52 +65,37 @@ for (const t of tests) { } } } +fs.writeFileSync(path.join(__dirname, 'minification.json'), JSON.stringify(sizes, null, 2)); -const suite = new benchmark.Suite(); -for (const p of Object.keys(programs)) { - suite.add(p, () => { - for (const t of tests) { - programs[p](t.content); - } - }); -} -suite - .on('cycle', event => { - console.info(event.target.toString()); - }) - .on('complete', async function () { - const speedResults = this.map(b => ({ - name: b.name, - ops: b.hz, - })); - fs.writeFileSync(path.join(__dirname, "speed.json"), JSON.stringify(speedResults, null, 2)); - await renderChart('speed', { - type: 'bar', - data: { - labels: speedResults.map(r => r.name), - datasets: [{ - ...colours[0], - data: speedResults.map(r => r.ops), - }], - }, - ...chartOptions('Operations per second (higher is better)', false), +const runTest = test => new Promise((resolve, reject) => { + // Run JS libraries. + const suite = new benchmark.Suite(); + for (const p of Object.keys(programs)) { + suite.add(p, () => { + programs[p](test.content); }); + } + suite + .on('cycle', event => console.info(test.name, event.target.toString())) + .on('complete', () => resolve(fromEntries(suite.map(b => [b.name, b.hz])))) + .on('error', reject) + .run({'async': true}); +}); - const testNames = Object.keys(sizes); - const programNames = Object.keys(programs); - fs.writeFileSync(path.join(__dirname, "minification.json"), JSON.stringify(sizes, null, 2)); - await renderChart('minification', { - type: 'bar', - scaleFontColor: 'red', - data: { - labels: testNames, - datasets: programNames.map((program, i) => ({ - label: program, - ...colours[i], - data: testNames.map(test => sizes[test][program].relative * 100), - })), - }, - ...chartOptions('Relative minified HTML file size (lower is better)', true, tick => `${tick}%`), - }); - }) - .run({'async': true}); +(async () => { + const results = {}; + + // Run Rust library. + for (const [testName, testOps] of JSON.parse(cmd( + path.join(__dirname, 'hyperbuild-bench', 'target', 'release', 'hyperbuild-bench'), + '--iterations', 100, + '--tests', path.join(__dirname, 'tests'), + ))) { + results[testName] = {hyperbuild: testOps}; + } + + for (const t of tests) { + Object.assign(results[t.name], await runTest(t)); + } + fs.writeFileSync(path.join(__dirname, 'speed.json'), JSON.stringify(results, null, 2)); +})(); diff --git a/bench/fetch.js b/bench/fetch.js index e7f711a..0bb1147 100644 --- a/bench/fetch.js +++ b/bench/fetch.js @@ -9,6 +9,7 @@ const tests = { "Bootstrap": "https://getbootstrap.com/docs/3.4/css/", "Bing": "https://www.bing.com/", "Coding Horror": "https://blog.codinghorror.com/", + "ECMA-262": "https://www.ecma-international.org/ecma-262/10.0/index.html", "Google": "https://www.google.com/", "Hacker News": "https://news.ycombinator.com/", "NY Times": "https://www.nytimes.com/", diff --git a/bench/graph.js b/bench/graph.js new file mode 100644 index 0000000..977b2e2 --- /dev/null +++ b/bench/graph.js @@ -0,0 +1,86 @@ +const chartjs = require('chartjs-node'); +const fs = require('fs'); +const path = require('path'); +const tests = require('./tests'); + +const colours = { + 'hyperbuild': '#041f60', + 'hyperbuild-nodejs': '#0476d0', + 'minimize': '#3cacae', + 'html-minifier': '#5d6c89', +}; + +const chartOptions = (title, displayLegend, yTick = t => t) => ({ + options: { + title: { + display: true, + text: title, + }, + scales: { + xAxes: [{ + barPercentage: 0.75, + gridLines: { + color: '#ccc', + }, + ticks: { + fontColor: '#222', + }, + }], + yAxes: [{ + gridLines: { + color: '#666', + }, + ticks: { + callback: yTick, + fontColor: '#222', + }, + }], + }, + legend: { + display: displayLegend, + labels: { + fontFamily: 'Ubuntu, sans-serif', + fontColor: '#000', + }, + }, + }, +}); + +const renderChart = async (file, cfg) => { + const chart = new chartjs(435, 320); + await chart.drawChart(cfg); + await chart.writeImageToFile('image/png', path.join(__dirname, `${file}.png`)); +}; + +(async () => { + const testNames = tests.map(t => t.name).sort(); + + const speedResults = JSON.parse(fs.readFileSync(path.join(__dirname, 'speed.json'), 'utf8')); + await renderChart('speed', { + type: 'bar', + data: { + labels: testNames, + datasets: ['hyperbuild', 'hyperbuild-nodejs', 'minimize', 'html-minifier'].map(program => ({ + label: program, + backgroundColor: colours[program], + data: testNames.map(test => speedResults[test][program] / speedResults[test]['hyperbuild'] * 100), + })), + }, + ...chartOptions('Relative operations per second (higher is better)', true, tick => `${tick}%`), + }); + + const sizes = JSON.parse(fs.readFileSync(path.join(__dirname, 'minification.json'), 'utf8')); + await renderChart('minification', { + type: 'bar', + scaleFontColor: 'red', + data: { + labels: testNames, + datasets: ['hyperbuild-nodejs', 'html-minifier', 'minimize'].map(program => ({ + label: program, + backgroundColor: colours[program], + data: testNames.map(test => sizes[test][program].relative * 100), + })), + }, + ...chartOptions('Relative minified HTML file size (lower is better)', true, tick => `${tick}%`), + }); +})(); diff --git a/bench/hyperbuild-bench/Cargo.toml b/bench/hyperbuild-bench/Cargo.toml new file mode 100644 index 0000000..76b466d --- /dev/null +++ b/bench/hyperbuild-bench/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "hyperbuild-bench" +publish = false +version = "0.0.1" +authors = ["Wilson Lin "] +edition = "2018" + +[dependencies] +hyperbuild = { path = "../.." } +structopt = "0.3.5" +serde = { version = "1.0.104", features = ["derive"] } +serde_json = "1.0.44" diff --git a/bench/hyperbuild-bench/src/main.rs b/bench/hyperbuild-bench/src/main.rs new file mode 100644 index 0000000..a81ba11 --- /dev/null +++ b/bench/hyperbuild-bench/src/main.rs @@ -0,0 +1,34 @@ +use hyperbuild::hyperbuild; +use std::fs; +use std::io::{stdout}; +use std::time::Instant; +use structopt::StructOpt; + +#[derive(StructOpt)] +struct Args { + #[structopt(long, parse(from_os_str))] + tests: std::path::PathBuf, + #[structopt(long)] + iterations: usize, +} + +fn main() { + let args = Args::from_args(); + let tests = fs::read_dir(args.tests).unwrap().map(|d| d.unwrap()); + + let mut results: Vec<(String, f64)> = Vec::new(); + + for t in tests { + let source = fs::read(t.path()).unwrap(); + let start = Instant::now(); + for _ in 0..args.iterations { + let mut data = source.to_vec(); + hyperbuild(&mut data).unwrap(); + }; + let elapsed = start.elapsed().as_secs_f64(); + let ops = args.iterations as f64 / elapsed; + results.push((t.file_name().to_str().unwrap().to_string(), ops)); + }; + + serde_json::to_writer(stdout(), &results).unwrap(); +} diff --git a/bench/install.sh b/bench/install.sh new file mode 100755 index 0000000..08f8a54 --- /dev/null +++ b/bench/install.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -e + +rm -rf node_modules +HYPERBUILD_NODEJS_SKIP_BIN_DOWNLOAD=1 npm i +pushd hyperbuild-bench +cargo build --release +popd diff --git a/bench/minification.json b/bench/minification.json index ce1b201..67cebe6 100644 --- a/bench/minification.json +++ b/bench/minification.json @@ -9,8 +9,8 @@ "relative": 0.6330862904281787 }, "html-minifier": { - "absolute": 488839, - "relative": 0.8534572912574746 + "absolute": 488822, + "relative": 0.8534276111911309 }, "minimize": { "absolute": 495105, @@ -45,8 +45,8 @@ "relative": 0.6222239353466829 }, "html-minifier": { - "absolute": 137061, - "relative": 0.8805095688708154 + "absolute": 137026, + "relative": 0.8802847212853573 }, "minimize": { "absolute": 137358, @@ -63,8 +63,8 @@ "relative": 0.7342292960872684 }, "html-minifier": { - "absolute": 270621, - "relative": 0.7325266961711803 + "absolute": 270604, + "relative": 0.732480679957232 }, "minimize": { "absolute": 279252, @@ -99,8 +99,8 @@ "relative": 0.5906241489629755 }, "html-minifier": { - "absolute": 383586, - "relative": 0.9762867679809012 + "absolute": 383578, + "relative": 0.9762664067212518 }, "minimize": { "absolute": 384579, @@ -117,8 +117,8 @@ "relative": 0.5157900380676639 }, "html-minifier": { - "absolute": 28464, - "relative": 0.5087126695619538 + "absolute": 28448, + "relative": 0.5084267152788948 }, "minimize": { "absolute": 30643, @@ -135,8 +135,8 @@ "relative": 0.6978107321127253 }, "html-minifier": { - "absolute": 1888047, - "relative": 0.9521424184017114 + "absolute": 1887947, + "relative": 0.9520919883849586 }, "minimize": { "absolute": 1888704, @@ -153,8 +153,8 @@ "relative": 0.5387307214917895 }, "html-minifier": { - "absolute": 1115700, - "relative": 0.7231445803045672 + "absolute": 1115617, + "relative": 0.7230907835848708 }, "minimize": { "absolute": 1117526, @@ -171,8 +171,8 @@ "relative": 0.5613076908178878 }, "html-minifier": { - "absolute": 89329, - "relative": 0.5766919089212971 + "absolute": 89321, + "relative": 0.5766402623645085 }, "minimize": { "absolute": 91363, @@ -189,8 +189,8 @@ "relative": 0.9003600363028295 }, "html-minifier": { - "absolute": 273191, - "relative": 0.9082057027356775 + "absolute": 273174, + "relative": 0.9081491873418815 }, "minimize": { "absolute": 273887, @@ -207,8 +207,8 @@ "relative": 0.5520822745589214 }, "html-minifier": { - "absolute": 1307604, - "relative": 0.5359190926945385 + "absolute": 1307563, + "relative": 0.5359022889200009 }, "minimize": { "absolute": 1368203, diff --git a/bench/minification.png b/bench/minification.png index 9a7223df15e0ba039b651841276d2aafdc4c8024..5f925854bd15b758d2ff1a17d4d012ce43d7e0fd 100644 GIT binary patch literal 38707 zcmb5W2UJsC+bz07S2`%Y2?`?JP^F3y6$BKeR|SIfE*;{FLQoKq8oD4LC7|?95Co9` zQVboUNSEHE1kU39{{M_~&bW8ndo(~uve#aFt*6X6pJx+wPwy7}S+27X1kvBQjWB>9 zSOxgfprHb<$S=Q@20y4C>)b*>C#V0jn+oC~NC3Knxc<;T{m*28|HB{q)az?O$g6iu zo*`#r}5`%i5)fk1!0 zs>*R)K#mm)}Uj1Wirz?=djM-?@rm(tNwOr4sNqs84Ax9lod6J7M2TOLO5l zlji@`Hy_KPDf$H$Z5^Gp3puQ;-FORqL=qtoX>UIp)RQPBCf1~8JdWxZZwGqbT6%n1dNCT~a_inJR%E-x=1htiGi-)~p5FzMto||rsE;5uFLN6eY$I|D{TE3~Aq((0U;Ttc5UlL0* zeNva!GN=540)sAHx}^Rl9@*{7~nW84{@1soj-(Vu)TUU_PDf?o`V@~EKQ!}$bg!e2)NdwWA+HDLDY<*^Pu~oqH*v$PbTxLCd7qqw9@Y)mW zYmMY9O<3y2k57_pWxOA4s*!)3l2E6^?dRp?O+v&09jP8l>3&Ohc_aO6x;qMkAyZ^Q ze@r;kLmMN}t7IQ5%F8#WUB44ts%m3Lt5tWJlIEI{W%lGsgmM}>V)@q`9RvCm-Gdae zD~ig>)ctzXm8zh7V7hF~s+7cAkeaBJl(F-0sf6tuJPIAPkoofEOJjo?8T)SuN4&~U zEqd@GVtLihSpE+sB}YMb?sP389{xlIVM|K>XhOH1U|ZB32j1W3i=Agc9*0~$7svpe zZolo^&ol*hJ~_LuZ~TRQlarFBdhp?}qbPJKY8Bvr<|N$Gw-#fWF%4U1fD#fDCG6(1gxA1|l)r#JLv%0i#H8m$iL0Fx;0{`O7N%-MInl{#6T5b=J- zU6R?7>Ff)=JB5M9{AmFa16BKWc|%oraN=2T4t|B*!1v9=+S=M|EdBdYvtZV=jMo;j z!>Zo%<5l9(d~1^pdyLRg)2F8|lj7hNO(-;jcUT!Us>*rTiqb}yxrtif8(u0QDTy!D z%E595he1HS;vlZDj{-h{|l9IB9tTq~*#B$#qsn%3DJT<=+BPt=mYi(wB%}UhwuJ_@U zn{>D^^g^fGp+5CT3XNBi5^}@Sc9_+y^z`&Y^b3f$STA7&m zpFw5dRb+aQQ?_$w-rZY}L^ktllnyVe<^#+1&Kv54aQN7sbR}=y9F5E8#y;cA$Q7}T zjTUtdtg0})^PNe23CyRvtE(<>FkjdB^L{5E;|on=)_xxa^YE~aC@-kgqi=!@;@C`^ zK0*#(!rZ%DY358yN;}B|(KD>TCBIPqHTlPKaI#;(U%MbR{jK^-hqR~ym`V?xT`pcB z@gKOrNxP*QFHYU8HsVWuNyn5jRzzP_F+Yg6pX6-{7`aP(Kk zY&}s!!rMUf6Gc>?LvMPWs;+q%#m6FW7WQ}dKJehe@xg-Wws{2J@2@F8()VuoSvWct z!m?55DaU+zc@!U{t@-YIrLa|5v^8xqJ1!3#l#X#A`0 zU{%Nj$g*2!J>yh4@ngMhcpkEkyc#?Cx@nHuvYZgxxElHQ7i4UJWkGj}Gmk7yPk1G~fZXbib$XN-&Tj z<1jHY+O>ru>$_cZE*;)-Cf$Naz&+T{opT}cuf(Y zUvH&^?paxt!d$36vT1xJ?N=ErHUHiOIYY^#w19EbU&WZIzvR@t*`apV@nh!nikHTG z0l(v1F@%igll+iPUPAB3GY#LE@4s?;V*kB^*P~Z9<7LXBd{q-Lj96q}W|Q6SpHZEZ zx}r<2FcdkX%K8n+nyi)*m%Qqg_N42$u%slob$N#mkI%&fFu?Uc6c;;tSTBF3m6A=_ z4;4HJ0%z27 zBVQ`l?^|;{72F}MW`E6URf>(vRv94t1TBPqV*8&(d3AUlu>*OfjyHczr$f5p=eJ%! zB~%_Wr$L<@f=m75EfFG$I)M~3Fn&Q-zb)_VQhtAhDfaU6QnQ;|tG5rTZ<$$LvlZ4$ zuN@yX16BwTB?MC`h)jZk*W!}yOs-%t@}V>~?eFizHv=>hD9)TQl;rApV%qd4^M2zW zNrg9QY05?K-~XnL%A%F5#bxP+VE$xnZh9FS8C46gy_)m@@xMhAQ3H*nq`Dvd-QXLq zp8vdWk;yveHL@nZ$*w&rtT0ypZDu z`wL6|ihso)xbQ9!swPv6oh(!P6J;wiIQ;o0MBE9KYFNm5#XzyH1IblYRq3QT=`00F z^mx5GY{gT0P+k8N`PGKdF|qb;;%s(S-+TibR7o&~nao<{oFP~IHnZ{PDZl+394{>tKoI@>x zYpbX$JdHU9$>w8>dvQnC5tWUXLeA^Px4JOC>YRB{Nf0^;Jt>v?&c?>p+iw_-L8QmyG4K`&2)pC!;g;%s`5aeIuWi#!01x3Xo-gXkz4q0kYKB7S+t>em$G z_)4_sWa#Z7&e%?CH%WIDzO2vqnbVNAW?zGqY9R4b6N`SA7phy8`RRG_p5n!35!x4; zi~&tk$N1pdv^Df-g~P4*n)&8A`mv;}EdH)azCBSqsi?R(R?l@AoU-}s3(efepG?AH zJ8dI0-{pXeQv=xm+?X~gVti}DyH8aPB5wFg4w%J$C@c(Uu4~TcyH)sh5aigm01Cwr z4%+Ws-sXm`$94`%0em-ZVQw((T-YtK5_yQbv)6v(`s2PgoEp!WVy;L?tWaljY1m&r zS6|sQKFA3iLFKpATL~}sGiX(fUOf1W*U6|FWMfdh2m4YZSxY2SXC|ehSCgN)^u0YD zL$|1~uue%qVed}fQ17mrj>yLc&LNtXmKhULtp9i9<^PlEj3|7cD*f)g)0x}K(NweC z!|~{y>dc21G4FS&??E~$|N(?xb7aVf9jx}p9<@lQX`~}onXHCOuz3Q=EcFF9LNhAs>$Kiqkxb z?Wqra{xZ}1#O1`Hk=d?AYImr5@61$_<%Lgt4EMUGN)>GJ&M?`hC|$}o)Wm_N;p|C^ z40{qIv<^$5AZkLM?@t`$DRIxBF|QLlvs+$i6`FV3>Rb;8uCyntd?HMe_OHBhO8d_g zF3xYk{Hbstjp8`(4MQn3M0e~HotY6nhOy+6;St@Hle_j6QoGw=0zo0ttSi6zAeEI# zG}{u|b;^8|a-9;j`LsxVFeE;GjU9Rk+ot?T36ZDJ5yPvW*s#CtX&xCIpAz|Mla#>+ zEkW%Qvu@BX^~Wos`ZA~;$Z2wR3aY+95)G1sGAf(wnux(~b(?wO$>#-%b=%G)UV^>}Tn56`I^gSgpO?>vtJ-^0^Lg0nJ~Xd0cb1JgJ%eT0`{+`>0C; zM+2jaIn3p@nVVC~%K4(EE2}u+&!chUFclgHhrLK|{^I1c0^@;AJ4I@|aLvSB#pGCM zKI^39edT!kQXS5+hPk(3{W<(6-OF)Eg?>JZ7n-0VZoUt$fbM#nG*jVv91q@76Yu+( zkHgZZ5iMmNho6-4)=*pT7WCbMYGD2x8lhCavOi9K%V*8bnbH$=D%+Z-o?d09kF9!c zpqPBt+9NrBuTLIgY^{^33WN^qcE?tTmr&!aoR<}F_dAJw^>P*vS zn3}J?a;YZyDITugP;jqnXf7mG8+X|dy!u-A&v{)$S(7PJYMf8k&zSbx;$bAh6&;Y& zSC+fE!UoHE!IIA`hJtwp}Bez2Lq8uF@!q((4YXOh<6>l50yIQGh{CwiyW$=rayDm zGTxYTh~u@ax0QHAm0pqlZgumzhng%Cs^5bO)%`O##h(SYW>7sjqUP2m&tlJ|ENNg^ z@2YlL*GzuxMQ@43-c9*&wR64Ahf3)cH4T$HnC8fF01YH+IC~4X&qD5Gier{1Jn0p} zkRm6p_>R5P#B?|D$X2b}QjHuZ$xDXFXUTpYQ?Cu}r((U(hKTe)IDXd)| zAq{9b43B&wq|_cB8Y*^vMJgs=o`?O_)1KPwG!n^$aYeId-=iG`wjWgl!Jyfk1!xMd16 za&|tdvweEfU;sYa+2d-fUkQI#1s1XtEM)$8GjFdaT)}Zttz!DOjbp~|Zc8z!k#Rn5 z=@?>@GeAnG-+KG=*b15-dn*6By(a5T^D}Q7dqGd$$$z{ZiTepY+|z2e2U31Fn|nx} zT&mv6c>h$+i26;y$#82O-k%y(^V6cm{ZE^wL*h~3@aMXt6vyL-QELoUcKi-k#&vMm z5GkLhu60sZyA*hE0UlHHUAq{PaQJAZuM~>?r^;_;eX}q@)JgbO;55bjrT~P0dU8zF zOD;r(+JAE3*z{PDn()rU?X#Zma0_hy&pN*c)tlp(glRhBLq%(gP^R935?@H|>9T%E zy*Mjyo*||Puy;sB5(4gPH+JF)33{m6cYOEdgBR(kPa^vzAi=4*30396LSt0(zOE-u_%`>9S25B3derU&*k9cmQz zZhDWeo|%WmKJ#eaW>DnM)cL+0I$pecAY!pr8T$>Uy_fP=?Vm9AmYIc3Hnt_&`S?`? z)J9ByacLrIH$(1y?jqHE$(ASN*BXFV7h{#g-0xj%dHYdcfan*i>fsv@RFhl5rL>0e z`mT1=60z_1sxwx?eGTcu78G_(Y}S+pJ1n17k#V{2?HpWAnx$8LD(~-ZgXI~^jR*G5 zbg*@HMg5z3nLn#(M4R4JIb^94ZjX-gI14@~Vbgq+HF@&=;-U5bnY2H3${xz*I;J{Y z-MXJ-pD0qsNEM#%I^H6Xvud_HUtCml{KLXbngee?*Nv$&*VF5@6f-Irk&}yg#GxRT zw|XYB&3w=11n8bVFkM~R-)AVu_GGr!q83ViKi3fOKoJg9p#a2oo`KUNX$~HOMJnOI z3A-Z<@wY$zv>3I*86gvap|uwP$RjRBi@!&G`}>Wc&c~nVJ(@Wbl$B!8!dJJ%`k!oT zLDFLhB4+AibeKF(GqXFsYaVY!a$B*2oWp8h9?lgWqaD7hQ8|$8&2qjF8kL891Y>B)x`y-b0D>fS;R?fV%q0HNhgl!?=;DbI)z0FHd)| zXwvixn)ayaAzo+~#zfg;cc_q(F5oC%aW>_zvOUM(Y94V!N^fIP^UP3H-DOJaI?kwcTdY?Xh;r$+zqKRN{Dg+`872hIFDB!)~?)P$PfhkC|lg$9Ua;dcA44o z$@ne|;d4)b=>xQGD9hFKDLdQdxFd$UfGZ-7M%A<2b-WYOc;I-ZuC8wQs`r=8+3pq? zB$!G~e5oO@enasmIT#KdE$7?kQekjKrg*CxK>?XVHeGKo0l6}V)yvykANGd*)fY+2 zrof&2xd96V;-o^{*;qX9_QlPYj;ZD_o+qY8_2_nhOA)zTy!ayU4|>j}Q&w793R|y9 z%7@u>muKF#7ii_`GS-&Lc0rmg%r^1E)fJQ!mk*V4kn+*@7&cd5yI_b#--PZKVAl zEAmWz!waDo)CA4azxLtfAS12_nIufuSsQNwCPjI!7&RKG)n;89d2D%+Maj3%M+XdN z{Pu^9k+rq87Qz~l+Yg7~q@(xEmaWNaV=+Oj{mQ`P{>a|!qxP76&8tj!x;91fg&4_z zck*F(?4T93;bd@CuSJT3klKYpu*O6a;hcShPkqA(EiUQTuV1L?HTCKbA1*4vwAK_eFC=HnH>bAeQO;YP$Z;6<1Y`~zST(}2HC+oaBYzI}0E0WYM9 z?p=94pC$Dk2%5f4!ehr%DKgeox6<01W6MQ7$+L2pbA*=A3);}P@{(Mz2~42O z11y3P1tJhFbIeEa<<5vlcVQpZ;qDi6)F2hawmQ@XYfMN^-qX_6?V--qim8A23lr7* z)kyW;nyP@SS!l^w8}5GF*c-ZKR`dfwVfSM`+h)%ZU-5aZH9J#{OdEXcB z_o*UVKYZJ2nedaSujaNa{F32)W#u^`t!M#(?p8Vo5azuE0|(d$od6lpqPsjaJ+)7^ z=O_NC(cbhXq!RHc0s3k?rvRJaj?ubBN%qVE=mZGCIDPsy6Gu}*Hl6b4clRzYt5p&J z&;A<4ZUFomzEP~R%E7okxHu53q!hy6JpVFAq}O^Kmisd~A0vG@`N>w>?7>N9f-Y&^ z@)}8`efx2}tS-lT@?lvi-#-4In>Oha($uP-{3kH;)%nM&cb43z4<3xa`C;F2J)CN% z!Zql|MV2};5L{{_G3?|T!0P&DHXcT{{k#cfSIMKFV9kesd9wlY-hb&j{s59@UZHri zJQo)U=%r@mZKH5g5Gte5d!CoRGp$jm(yA*DU!n98eIy z0gujuG!Sd#ij!-5K`_Ak!oVOt*G*M>IAXM>sia3^E{9Msld_A7mUI+cB~haIqcDW* zSzO*~y{2v%PdiM!JR!Ogdzqpy>{*U$@+oL`?a<%DENySH+XG2Dr_li*WFPFcC% zizw&9Cm5*P%+>w$`0ETw>u$lIdB|T+bjKU={`}LUD(z_&;lK-GbjF4Qg~~9=-c?%H zTL9vS@T5SsNpz={-wM3=oJkP7C7C6Y;xdsc*;CwPd>k;B=&X?f5$6jRDFQh)=DF~d zgu9jFc3tKvqie^i5Y9V_LhyhGr?IzY5)#tHj*7&%Dpu@H7gsfZk&bSG7QWzHUTNj> z+YL&BMTprN8PX5$EYNusv?Bo#{>%!m$e8L*^V3jtu=ZokmLF_xZaxMwZy4o0J5z!m zNNqPneXSLFLivCta?lWMyUWj#J;Q}Sz~9Rf43ed{#1KBRC<&+th_z{*GXYLRAMOw9 zsKEO<@2J3|90*BIi&j7Wbo@BgE%V!(UUv4K7dY|YxQgI75V6CfD1gws)(ML7uX_*EXHy>vkODYr*C zJROTw(@6D4roDWLZ1LZ>&k)Gu9O!_LFN!_=g&|GHo<8@w_mfr1GVoJ7+&L$7tupTw zEd5Ptati;e$$;(sd26rEGbq+lF+)qY4QB5X*_}bwIVu0w0~W}MDfg4)8}GjBrxt~| zi%CdKp1&$SUcgypZ(0M@QbJ(m3=!L$khFIKno8sGI5q*$YQ_!nd(rk2 z8}Y~=eY@c%S7^y;9Xs{S%3ySE)Pfge+hpZF?XMCVWw3NtVc!!OI=Z%J{5eWf^`@w= zpI5*hGf7CiyMDm3iUpSqGP@JRUGe7?a4yL!#ZtO^i-Ys$Aw$UM%gja%>@H(u8$S$n zngeQeM615eY>1Pu>s@5I(_Es74~{i(x;n9z2c$Ppjn>TS+iN5o2%kb$i8ntmqi-+i zJcfkp)agx<0KEy~7VS;4CrJl<`Iacw0KL$g-MH40R~V1}?YNQ!Z@8o%JS=s8Ltr*IfclRHUOr2AdkgRckqpgXuh))WOV=?d&YLoILx_uP+_09 z&rA$6_bXSsmR-tOgoMdZk2qK{`)MJM1jr#lJmj4^s`x_!0_aB*9dg$woD-f!MWpO5 zx1s{M^4_}yE_$LT)C8F%**7KSFUV~8A58(Yh*hA=Wr3&|cuXMTucM?U;KjhyuH4Wd2 zPEAeShFp(^x=wbBi6UHvkrV2DR?eG!~21If{Gh^XY$;G1{@L;SX#yOFYQ3U#9w zdNl;Ts{{0d!y8t+vZv)^`tZf!t;Bx33z-R-4F^gg>Ioal`p>&#x%J{#1t(?yb~aoM%YZdj#~X^L0)&-L2xLQvxfITb4GQKa{wTyMH8d!zZ!@QEp7g`!?0W#M zEd^5@OpRn9I?k)_fxw>ubY)8EujM7q^lkpvMSWcrd908eS|jBpHW9pzo*unhl65m) zWCdvybx&8xjpxa6U-xN?V6r1KbQ7BZ5;yRFs(xy7roP@XSBn24lqZ zR3gQEF!DNh2K@^%Skfz^4&Y~c3%Sqqp2%EhmJk9Ahrv_HBj@~q+FB)A9_r5<+ zBna360It-)g5qx9(wb?YJ|kQ0=$zjL};dFSfFrxv?ry}i8L`pxvMTS7?;&^>L{ zZ}=Lwsm9R(Gxe!4z0-7W2GS@%4yF$u%C^sM@#-P!AW4wF%pn1msOP{iY@iz$rP73h zi#!a&my(Cg)Oi6yxg&l{FmCUkR+~aXy}m3LNdd$lG~3resy9nZOI#N%)$SS@8XD3P zvtkl;`M$D%Y)qkXaeNm9wS{^+H!a{t|1a3%)JbXjf7+8|XNaxgK^>1j@n5Y-#!TzI z)Q$N3`LkO3^Du;E+@_@|KobCaTVh>F_AwY0@FXb?Ta8Ci<9h`6*-?fK?=VoU!7;O^mP1U^zkFyg}>1?i| zK7rto0~!{p%$EIN6K6F<^Hv3OqJrMvI>lh=F7wFBsLM$v1hZkLxToxqR88GRutMqc z!u;)cYZ3dCvl{OX_aaQhjhN`DY|WM>!l~$&*ke0&&pKxA`^`Xh?vzz+jjs4 zWRL%`O?sw5ganHyK0d?Lu=Y!1cM`#Nom{1xS%Wl_>{ZDjFvL|*ZBm!$UUKK?aEEyG z5ow?(CvY1f<%rc6$tj?w<5=Ha`ca(xnoDj;695nSiTZQ% zck-Xe2C_mFWY4mg`+bw_L;9qn)mi)1h2m~g5-Bz-T@PEI$X=rZSm&=Od>+2#ls815 zWFI51yA>c<-y7qwTW4!R z4m>63rQj!1`ty4N0 z1|7$T_yNQ4x%nT!&hCWmyy^|%WbnbxfJB^!KL1=d!tQK9)zaRK$m7-`!{X!Qhv_N% zM9^il7PAda;QGrN{u#$N-^kPB^52Q2iw zZ~*`#?&95Jzmj?;t6kIlNC!L0Z@2!Ej>%yzrQqy6`MRg(R_byCclXto$F?lp+J!2} zDHtg7Bx+r%{>5*}_ z?XI8-qh>)Q5)mw)_%a0@v&Cq2<|WzAbs=PX=C`oe;^H($0hwFlbdW-q=_x63u_NUz zQnX3GhCG}=-$Ejkov_q{H;3-szklD#*Vk89Pzuf-)HLOLs&aKmM~6c=*&f!Ex@3D( zshVnu9B;+ljpV)V3oCalttjZ%<2%0!ZK_VOx zkM@I`r2yV;s;yOI-g+d0n)ulkIS+jxC-$37pCL-NNgum$bT|V?sU%e2@o`ZKs9L*F z6KcDpA8Pq$ch@bA>GAYX(c)ovYj$B(C>E$h_Z~}wa0Eg~t$vo;dDWoZ-#?0t)z3QA z7g=*gcycpiQLG=g?m}6o6k!sxFN8dfG+0W!pR1*t=#O;G6>5jS;!$VuRSlFinReK@ z!c%(`=BVw%^BV?BoT;JxVM0M2^n(g}rGw{13VvzWjUx4|Jh*QPc&;x5t(K6Di%}^~ZPrr47|( zKcqJB*CoRWdO_z*Jl6iq-CG^MVlF(r+fBJ}|vFVwQ%GRr6Kd zs=0m#^S85oyp+~H8@T;mDse*VgxyZyK7CCkyVo#V*) z9_4Pg8R4@Ru3g~7w_D9AF%Vz+h)ybnGh#J|1-933s$R^a`5AST$6x5^GeUnA!{ z5s<^2b9GwYjr!AN|8G9EGIBryVTJs!wAcexGM6#?X9Uf<@ij0-T1eh)!k?2_BJSB~IFbjb z0z|=KsF@1&jGUScpkQk!tUd%G)u?em5wao!_|BdB-dURqaQ-fQ3m{0RPQn4vaY$#s zLHG9d^(9{(1Z!VDuoQ#@^xYVi0>q+W(7Qv8e&Q%-=}eMA-I%ypX7Cb*LMNCX>p?BW zSnMf|#@k4n42{YEi*3wyWNm?a#9~AOo2GK#8u4o&%vop=m1kC?neazS%)E~|w4{&> z)ZwiUQbuWUcE~cqfege5T8Lsw>%;l zQIOiQY95iWjJ^B6Ls{?V*2|fwm+Ve+m>s&06p1V~(UYHC8kTBRQg-v`1VUoB7_b%-t!Y@}w({;1A~w;XaNXaVI5TKJa%;eS64orWcb3qAm}!Y6eH` zX@oq)1YiLjCU3}eNp~_e^7^QHmCp7oiU&{tFh>>CvQXUDf`~`YCA!ZdN8%XR)3+L5 z6c>-^S*_5E*wPq^AELvPf z%LAeBX2vZ2J=%o@Q47yp#sMGBasGAydt=oUxCnZ3_*tV6)$j9xbiI6PvrPA=K;|ao zU1UXZ0_gJAggHj*#F?XG@sml(VXB-n0XZ&w>N5`r;s0Uj22wJs<$*g(9dj}>zn_V> zmX}CCTy)W=5ybodFX|O7NdIM7f$UMj|8bbR2~e9WL<5Rbg!+q0Qt*~@0DHrTGITS+ z$kn+G|0``jJuC%d9aEEKwsKb=#GIa~qg)Mc4oVAyQ11mn;hat&4fnxt)hli21qVp} zQYiWZ+o>*cPH>6Zh8BKu;S&}J#$0fIG4lT;VQ$9*knVkODA+AYv&zd>78WY%j^<4% z0YJrv8+0@GJ3^u678Z?eKZ*<=KsI0BTxbUCJPqns@bc9cr&vY;U~a(!W_Zg-WKSw9 zkUYQe#dfA`-&~l2oao#B=7H&gP5XW4R?zJ4-+wGBpWIJJ*OO}iQTjY|ytK8?0HC7} zlxehc8(dCu{12NB{0m46zGbRiNCuq%pswy69|Yqdx1oTuJ7d`!;Pc_==90p~#ju5U zk-L=ZRgS6TPm{p!CscuYBS6mV2EGU>`kXVpO>A9-c=pyl7W1ifsBkCSfzZ;}wac4pP)EB+SK z{Zr1;*dL=oudreQHK_FhP5b2c+?*tAoqD{wpgusJY@}~8GsCjxbd3y8AuXsQ$m)8( zdc;8+^+XhYl7#N11f6Yyf`L=g(LzKzJy3v-tkwY=b`A>DeI9us=Y`qwD}do8;Zjb9 zv8Tf*jfVC`pZ1fYM5+kOm4pHmQ0fU%2P8PL>e^%kAK+X z(ee_9lzm6!6v*F_-SrB1K>BJgZ6c0)O~-u3gP z!M;cL#>CDlO@5pf^0R2dV#hB(AK3!fIzv|qqNFFVC@7krtSsdUH;I@W25?AGlwbQaVaKvYK*3>6X6^Bs5h4oRm?e_VJHD;*VB z8^w!NuR)=K*8&tXZ}$Kz%=Q^)29ryT-#OK{^6*F2c@J;8xw(z3?eQ-O2LNPht{_EG;dkza5`4>wiGbJ*~#!gR#TQ zyl$q1Pk5C?G{dQq(h0l#t*=jAoGXTbd_Asnrj7wjsC9E;zC%KoN1W%#Y_xvZymsZ zU(f+PPym31E?jAfy}oJEd0Dy{PsrUQY3H`VSZ<>vtCnnj;Mdu|p3(^0=$SGtPI>b86WmIo-zYmb*&tCrJ$KxCHpO<{- zQ8}{q?lIFc+xd5qP@F#!1HKM_FHhUgVC;8P;Ycejgo8+u>-cIx!q`GS3EXM~`GcPS zB#b&Gw5K+c!gL3Nb)1{d;N+lQT}k)UxkY@V5=&I$eCfd(%&h~`F&9*9*3W-oEOD(U zmeD~s#Xzppj9d%C$CW0o86@cqSWf53l|C!1Qslk*)*q3(Y^Y|4qD4CGbzl>3;jst#&gn zeH=aYkMc#<8bV1^ZVwzToR--BTzYx`tA=BJWxC=dr3O`n_>0O+hF z(7qj(*@^*qz7;ue7rR3Ty-zr}p~!R02%TeNd)nRIeW;AeGE1tuG~RpaZMV7_Cc}e<(JdnzsR-v}-XUWGL5vx`#z;&AVTK#D6+43_ z7hJWg*q_j{RX%7o;t`(WyRoR@YOmzK1&)j3@CrG^whVll)}i!EB)BDT4Q4U=kPD>` ziYeci_@Q!V^b%S zeAnVkWJ6m{z^zs;-Q^69S0tEd&WYt+0W`oto@A<)wRQq*lMmc11P46k76@)Q6fdfINZlrP=;QJ?4EvBCAfd=F35qbK%-E5F^!sQK7+V9dz!{mISxWn)%IJCT}YL?%+f2ryW$pS{&bWaQHKw?7sQ& zPr>_}?vMZzP5NyFBM6Qk3M+rRf~aVoVDKaE_C-66j*2_2O6vLwm-8#6sOGoz%Q#BCbuMTD|7dQj@B1X)8;WP`qPTu^DeVD{dAfhhxwt zadcHmDptXD%!d;dX7`2)6nf!b@dcn=-~og}3z|9Gt`l2}AAcGli2n=dUwwNj-9U+( zk&}~Kc5-r(Mcp)8=DvEH9CXvGdaS;41R8l{fR#Z`m)ZEFKgVC#@lLPKv6qh`&ud6A6o6kPAk{k` z3KHqxmD^qonX0IG6B;Kr{_;4Kd!&>F)DRNe-@Hd(q{70?70 zds=14v^0LsG*z4|3EA2#1(K=rHOwsdz^7^YMeTx+@+s&Dn7_ov4MZ_y0~i5l4y&mm z$U$l%IRPNYHbBI!{n86LSD-SnynGRPPyy^E`>s!Q^@3TH3s`K+I!=Y*O+_TSdalpyD(R+T<`)1FSTRc;cX0>(dDm~6Nb?zZVf*nb)L|qi_ z$B!R9zP4Fl?2rBy^p`wt z*2|Wa2JoR8_Yjc@EA|~$kREbQ5gyix*9XWP2JRac5F9&iKUTfso}$F;{q7putMees zk;6(r1tF59{}betXfOkN18xHRD98IRKm8N8&J4m5wyOCWfL?IAnVW*C+);>3G6+B+ zn15S&iQu5@EtxHP$O*I0oHuk)u%1x8(yhv;e-rcoOw0E4>8b7vmAlMf3}-orvXe{B z?zqrETG?4t;iHnPsGt4H5H!BG#)##5y;Y}NE#wz8ShHg^%kkZDY0Wk)+$s>B;+36N z7-rrQYNOv4KR3av{H7tq9KLh-?x&+k%M{vbH(z)u(p=p(s3jB}w6`+xtkG3>xaC?W zqp~iEa#w4ckcRvHLXXv5qVAZNbkM42exmo=)%n_o@>zZRE<)4q>Sjo6X2-Kk+C zQ#DeR3I&fya>{WvRhWY&a^`{v`=I5X%O6`D>rWcVZ8~17g*=*v9#_^o4qjsos#-7bkzEX4Gg6qii zaZ%Sn;?$XcI(ny?nEPC7>D?`P>*dVDE;tP~Hmhzw{o`In{gu3-f4GIphFdvkM@vOY zm$c)%Q0=&P5I=)iVUBnd4SE;lPQmHfHfdpzfxCk|_8cARtli{PbeCo6Y;8b`48Tq& z6??PKTptb(&#QHnpC2?4B6obyNeF@~!YU%0#2?W*e{QZ$z@B^JsN*PlNYLyi7-atm zI>Yph`RqMZd0b10z6YBS~X*nZdkIN3r`8ySE*3)p2M#!E}9|`4hhJFR;jRCjUPE8U!1{zEVIB5)5)-Ow6vf(WA7GnVFd|5cf$2qH^ao_;5h$#8RJl zhlG&o5ZeXULy)Xd3&z@odoY#F^Lvi;1e?>xaqKTK$_fFRDQ7n~K5&Oqi)}O~B92zAp>g6U*-54K$2AKW;D3z;OUmK^6Sp3UwkK-aMzmGPTC$W{nx}y z!oyyasq~c;7mHD>x3f1P=ijQHTsrw?wj5+Uv2b|2T~;sU{E_PPu^z_l+{iin?=%QR z=h%}6t@y3RA5M!E5n(%Bu`E-Hu(uo@*Rz0c}JRJSx&a? zXy&#UnYAlnM2Hzg#87%UO&i?(;Iz2X4UoC@-Fj&HYUxtPfB-viU-zP+tFofnk zyz$B8sMuf$4c;LTs*OIG1Q$Pc`&cC7GV<}@@u$DwpxPg;SzUHZ(K2OM^7PDjk22?f zaM@bDHOMT#_V-pSpQUZIqp>zA*mpga6E5r)jrmo-T2}OBBTP8O5!(*RS(BQkpRP+Id4=#i?P(NBgSyMn=^19nrAHqJ8f= zi!2!=xNCC0epTOCE=)dc#bHi0Y60IGQd@j>ut1+5`pAwNe4j91;&i;byDJD^YsHI* z=Jl3Qbq=eh^c?9QD<*e0;qcT<{k-=n&LNLu-L#*c>kY*Ro1cTts?QFawcJI_FyGhM z*WVAB4ogHorS>oc?})AIvupmjgJ_8r%swhO8g;v2WRGg{~#%#kkkk?AT zL~Wk$J@M1Y8{oLmK3ckbY-hMN?^TECNU==WH@;7iQ08$|0sWyPvj6*>6lNDa`V9RV zj2ir6W{pBR0uyVbZFwMd^6u>6x;kvw_f}11WeFpcIUfUhte#r#p$xyQ1xz6`=UpLi z_wP!g!7C&CZ#vp_QOot*V~=YCqWxIK zOtcE;J85flzGXhZ6%0ZJVeTRyy zi&jxW{+Tt;44mA~!B(bU7!(PFI;AFinMdBZVy z0`z@gKrqqZdX>>_>*oZ5QDT=}HB7_c8=GjJRNj$q0?$cH)Z~ePOXgp_3+=H6h3A~H zYkGMGWn{GqiQ0?7YA4s__FXfN_>gL&p6MxsgVm0Xj^vd6Oz@*rnr^yGxW!=UqF^cw zvHjr{!{Vw;qN1KMDu|~Olh!vsT`b&^u<0)t2;mrcI|~{AA)X#x2p#`X?EMT5E);HA zuAg?8yMyr2yq2N2-+VG35fR}KwNU!-N+PIwhG9=fzl{uy#>D#ZIAjRWtUl#&xXL`a zsMtFIjxRkOp6Nn+JU+N&MzL*WfA1oEI#sWL`m=O!Zt79#GM@(c^8h?Eih32Kqbw%P ziC>Bg;4N(Gk#=DSOof{Gq|;NS(^GhRZ%>_!7})9Q)FvHVcY5IJ8JjE2A?k_RG1|iM ztOtjO{4AOlX?g`M%n?70H{X%`-X(xPVlp1JaJkb{KDu*;HCl#|toEB{dezqcQF7J& zn`C`k9Uz*rM=b;uK6HvV5tqMCv%wA-E53%S(6trbUk{!fj6RWMK+f$vXX0k*@7FHW z2^a8>LU;TRn!W@a%Jq%=9eWfr$dY|3SxOjNcA8R?ia|snQ)3HdP1YFoN zrSS5hK}p0uSX4_A-3m#$5D@v6ZUiiHEIS*UHi=$bJTscsJ^|AWMxv&_xZQ zT+3^u(vmQeTd}3jQ6?YCRd9q;GW%Jqk_|cmn+>0`_T|9rVe;re?(l`QeG;-UN=AHL zYM_>8wm&XAp+hy6Zl{xwjk?F#NHi%%X$TDY0$9&x#WX8R%f7wwt*wa02cHqILVCzy zOsrCi3ZJQ&o!uBSREu6z|3f6Y5+Ogjpu;0(U=NthTt!IYZXJd0TzRMXoo(RKeffRjYJnF+@U8=o`hdgSl-pv zszs3Xaa4Pf?i@2frQ9xfb2LX3J|BD2r?s`)bL(4qU@1NvDgX<7K=o zf2{J&+eAn$ie7&Ffn67;wo?oU)%!6c1bn>m;%VgLCu=(oJCT!kGn95-Me%*}UZ0V< z)YVSQ<*vHwOwK_B>4lB1X<6zF%=B{;k6 z<1|T*b46?rPM-*qqz8gDP)&QSXU0(aUS8#V@vWJxztw3z7S9JOb(dK}*AH*^g41BA zZ{PL7nf+tSg;)y@XXlH00?|6m-JGvH=M!V05 z1e3nnlgkfI9q=tfsd@(I^xULtb2t64p21O^032;tsH zgtW9j8wcwL;c*__B}>T9L|v0tA<=))H@sC>+y<9`XSQ?=lE!(kk4F&R*tyn6P?i*1 z0-uTvwJpHeq_loxN4jZ_M%i%)tMZ!E#=e7u}X>Nj;9blwF})ZZ7A> zJdV!kVb#Bw+vxq{a}c5(Ltz@=Yz@gmf4zaN0SsLL=fP}WH&Y|X+%#P6m9m#JGRRF# z^`U;{+dqKW?gzaA?cYUTJ$tEO!Va`o?Ym+BRv%98Srnsa;h>={Fu zu#Y<+ILK$DKVRQ167ze?@!po2>05_)H~)whJZf8c>(AGVm^s74RO3pmxW$LxG=?~( zpjE9xM%$+rO8`z^{o#FE88`MzarD{gpCe|ma;mz2AYXr9pBFCu`3{NQT--Aq|=21Lb7L_}oFThx(@ zT#ULQ97??+)KGf$!^6n9Z`!EwNprb_vyPtypZ>o4@Wc1=xNmePC#U`xiVFo4+Y%Ft zt5c9Xv!Oz0MTSjeSB~1&z19Q27yiHatIDg!$B#FUiM9@K={!m zAIj|18|&`Iq3?bf%l>*^Ix#+vn17u_`gTeRzXxY`8ZUA0%8IvcrrqcM{uM=>-K54j zGoia?y6dy$4oMsE4%DP`c~j53o#Ux|G7{SxP$~WQ^YYsF`43kY-k8g&Li)N!c>&QFsvn8X+44@^^EpHw-mVi+Bbe)EX4b(Ya}c^azcu5x zRkb>QKChe0EWZbsR58qDl%&MnFV6#Y8()=`{V^cx_T5Z73*X8GzH<&`b^de?F;i7d zEtpHceqtL+jC*etXNA?S_cOn9_%jP@+I2-p_ZWD#anVJA$(l6=kcl0{u zP_d|K0qkJw@}}kN*!B1HPN+F9YiVgct4UzCDi(UoVIQSLUcaT?um?Bh93!0BK4FWr z<>x{8kEAa5SR46DF;8r~R+>a1XCl#BaI8BhPD~iF@%1eg-UnM!vzaU*IhHzaTpyex0Zn-+TdR1kI`YwtfCTdZ@7Rf=bthNaTtlwy>h-+~Eb znM`dDzeC#5#)$n`-zqd+7<%<95#hwEu<7G)=N%@Wg-PDpLEn!cxk`&SlfAHVSCy$} zBhj6Rj4;VpD%&S&S_x@|31>`?@0QAsQ*^ZvfTvCRMIM!Te>tBY&75N}`K;8XY+ zBeC~~1+vnV3z$ElS>Aj@;_N5cbCPPACvwk9;ca^E?3R&eoG7_AnZ#I=CF@2|q-%<6 z1>war_ZnUo@{ufG;hzw>n4Oy|eT{kg4kCR@wiTuC=;$aJ(Xa7SpABhA4bcc5Th1GZ zUi(PUBcWN+%dD=KzhD+d{`>YP5{bE-{2U%p0%Zwx!z(9K=}Ct#msBN1^8uUv zVp|^C%^0OVi#6dXn8jkrQRV|5X@{%AV&zaTR9l{VRS%0GE!GvkmhVhVM9yV%UqvAA z2t3uc(s)CUbNe*5r|BB8?b{ts|EIaR#=t( z-j&MDB4WQD$iKc`0+H` z2(p5(_+kibVYdqw;dMG&;j@2!AxV}+gnZV*Y=cqpZH@Jyd50>u+@v*ci(7_+-^K!d z|8wtPnzUphRIJj%ylzgQJ}=g(<@D59T#+J|G+v(l6VKcxPtNHXCe+tGUa4WwS+0M9 z&+Vs~-oUt-COx)11o2ZfnXs2KT?x_RgCQk8R;e5b#J!#Dnb?5#G#>tRhL~?2%~)H7 zSa(u0-L{SH_nesTh@xW*>DX)!h?ives`(?3ihO=}4~i){{P#*2N3KgIT>;7?`y6WC~GXoqV)x>-iE`90D zPNNE}^~a+*!&2$z>^z>B=5;()ohgCz!K(Q5>C-PKNHOQ}IMi#5S}V8i)|_Z-HT+x^ zrb}gP*-=GJ%~yG`J~lS?C|{QmLPq^wSlu{dy6C7(rFH-K8yolSI#Dh;cha-kult9$ zKvPh@`Okka8w;R<0mQmlF~;SD#>&Rf+nZ@35QxclvQUKmOXl zNV;S~P^z)?n6Qx0$|;VrD?)coY46!Xw%nE$$D*itE;L6q6_q-Lh}TCU1@?@M>FEeW zUyG6Ib6qOCHCE}{w?DV)l_rIeJ|+#`CZo7-qDnz)e^Emm0j!}|jF^ap z%hQUAe?#vaZoWi2Yy&PJXlP8DbWL4VL@q=2JND|?vuE~~j~25jHqj5k=}D1U0k}aO zVlGPKeXfO_{iG`jfP6j@{Y~|y;?5e|OFUV~_#uGhvd63Zx2Iy2*qNux{TEzOvz_#4 zXi2$e0hF>Ji0v9DBb#{d$MfrcC*F80{yNGb#cforyDE*dI~38MLe-m}nHdWCHC)|( zsZS?{>cRX;>$Q97OA~@Bax043*hHckTdxV#GX6p7cY8opc0E&CJR>0d&+&A;ulb4nX}yR=`LTZ~B`@ zM6IZyp<&AcX%*yTO+R&Dl=%i1E?z2|CA7YRaVCkl4uf>;g>iPK&RiES!ok&)`ftXN zk{GKbflMPexI*VpD*Vy!bYN#0%1&5eZ=)x~+w?9B8eR|ptPj#H=pgc-Mo1qW9pym{ zpTpbW7B!>r4zmyp1$V+YPA_a>IV33O$kl6C-no|ulY&iU_(y?xU4KBGhrS$XI1A+l_HRCU$~r-txksdI$QT%V_hBM+fF{WkS6y%zA<4yu3Z z{CdLa-zdP$G8Gq($;eATt!QW)z50v&lgTcb%D%ZF>zVflRvvA`XxKfWXOJFe+R<`# zY5*#*9CCq&h>05N6A=@NXSE5hHs-jA31u5wK3b_xt)*5+QkFhjA1$*@%Ye72K#&Or z7kP^rmw6sP<3c-Hy5Wa7skY1}v`;K#OjRg(6$U+si5bf^hWTR(q0+Q}1Be45{|VK< zd~k4ZWCwngN&FDQYj{1YB7^_n4mO3Y5pKGO|Gw4`qKQc5)PW=oV>tV$gDfbMV@>t{ zCdq+yy@RwZ+0z5HFzFxYGp@ArtoooAGgVs{>1E^Z6e_=nX5l&U!9yYm%qX~2f6`E+ z5h1^j;&i>tYPh1j+{+f`BJ2|q>VLanG(ScFa3W{MY@r;X9*@aeDSxX5r6K==}7`LJr96$v^@&R z#I5X?G#c%QR8AnCu)0xtrTJ&!hms`Ci?S8wvOXuT4MFqhnndK0&9N0d=J{Q{;Dd*2 zcqWAQjVM2Qs?tr_3B2q?p)aeYYX9K4qkL*bOA?VUiRb}`#9VbXnK))a2+B>`SNAmv z{5B?p`VrVC{}ERu!wYc+uIQl&4cHd&1Pr(PsuqZ-4^lN?GgT{pX85q`hM)saX z;uwSNcur5O{O|29pAjCQB^oTwZV}u*`Ha|H=-&#+=_%?}qWqh&#vRwq43SMgCx}W* zA>@cd8x*a(y|H))WDM+J=tw}YbNer1plSK4aZUnfSGqLls#gXzIcsLn(#4x|6@9@E zs60{c9LikwP2at;avQp>H0n`L(W!jJ-FlbnZryYSZ8i^_=S?UeA6^kUS0WGs@7R4a z?H&H_6Tmhl^L@F?yE>e}t;#Uhfso2wwnFk#ouYNiJ(>~4k` z$Q?LB{%JTbB*3yYF$|7vz3+>w!qB#f?XXh&Jw#yd? zfgVCLuKNT&<$3oH!MBQO%%PCpRgwvAMtJuK)taMUw{0}j8HmCT(hIM6u6_IUHw_zb zZ2fCiy#Burz1?&(Z2(d56`hJz+zpb<&Z$i3>-LjJ55L_vuzgQ)w_`3bp9i_L^C@&P zJJ)^JyP=7Bj&_)FVNf8+Ubhk1i2bH956hG=kvXdo$7?tXz1DY^KTs!_LNlj@|2tzY z*PGBeF%~qs* zGy2WYEa$%97PY?xB zbFF2a69PzX6450gJ>^x~l|9ML7F}C^4sNgyCG{y3hBtl=&Q2Pn?VE=)aQ<>%5Ufw9 z&*k|uE6pxdnf;5iM~Z%DEnGt#B;3mA0~yksU`J^A+|e&TQ|)<@_P$$MiN7Sau{ZF@ zC&BvSiUv$m2@0=vy?aqRg))kmT%BYFEygpur7Gw^K=zZgH`2l&-@FEp zxufP07js5SVw5a|mwxzX6eiX5Kr{|EJ@T<;*M_!0w8hNIu4~QXVyOdmf8GI3&vxU! zg~mzlKA%3H%gd>IFGz&1Zoj4LU7aitg?VeYFUt0+-eT3JY#U%T8A4uGsw;E$9fHY3 zFS$*xaF}2Fu$?bt|I9V7%YGwm%m;9K9rP#6D=Omgo!i)868%d{YQfUyi-!_y`+T;q zTus<(CB~HH^6Ytxk|me%cLga&Gh>v_WvRte^7U3+lz7JDpr zWd)kCD>e&xp+Zx_Bv&}XlbjiM0_|x3ntR8qeof6IuOq0LJYka225l;ZUquB~8!K7| zxtgGsJq+^7E?+|mALQA3bDun0;81=YH(%T$niQ z%1jj@#$bv5a1odSc54_DPxTVmL6yr5k|tE~+vQzENl2{7F$jP{|Yx0lvQ zUpEgQ`>KpIGOQ(bK9yGJ9*Cd|yJ0u)yLO1*eBuoRa+Mb2U18%Fus^}*UXZl*;w52z ze%>yg+WL&p=LrD!mQ1`{jgmn0KNvqxBm}{!+K*Vja!PQ`e82yThl>m0jI27mfDY~7 z1Y&y$u$!prOTSoY|4i}UMMxPPSC#WCD=YD6mKjXfR&PO94}+lqZ4z%6mDpwpO8%zJ zDEwCk#L3y&Svs4Ut+vI8wUB$%fH3f|ePS&F&5leLmz0FOa(cd*_5Za152Z{AswfQ@ zJ$eMAs)uk$1)sY>_wAW#l_4D##y_CH4fnQma5G6z$~8+cx+h`)dG6=riI);%ZTv{#ve<2 z4=a$kP{SX`ohBUHHL=xDaIt5HgH)Q_Mc#^_45qFoKpCCL8-)*}NaMVUtE*RE$T*q~ zc+Hs8{#BP2^5pcaBjB=p}%)gu99~yjX`?2McsQUpY`u90AjQQX=zOTtgS0d?ADw)6Y=@<auVyqCPQ`iD8f5fS&g`qb& ze358D?w=x8uxmKXoYh%(5^iH^emb%0-&h92SZlP6;atJ;*bF~(Rh%eZXk zVr2)pTns>dLBz2?iG!Yi{^->fuh$V>_S^6kUzuEkE^1FC`eM?a z*z+&gswNtDH{oHr8vHVeJnAv<@|xbv^t22VEyq*+zr4KGt`POm3(78WdvYU8&?=+R z+>X?)Izo5Q4Ug#KHS%X`iL-b={z#b0<8-Gua#l^KUL>-ihY1pzSe7%>P@1cCdzCC?3FpzTVz?_n2em9Dg369p+>Xy&K%u zfuavX{t})@?w5#iN<)8r4Zk848ioH`>?2MQt>o@D!jCNkZJXIw$M)DDFkyGBdq))l zPJoaev)dqmVf>t%3*v3cgN}R$uYC-yMM{*@sq^PMoe(G)x4A;qD;R<&KGb8Ah@HG$ ze93#WXm&A@*<*@c@r*Tle4TQYYIZB4!fbVaA>!}QoeB9q3<7~CdwzZ0sKdkZKwfrQ zjUCUmfT9$)IZwGz*9u0;i4Us>DY7}i9OF#nt!T6ZFK!G3K9ax#CKG24CVue8&|*%( zWg1>yi+i~Q4x^zDWbO0O17@QYI4VCNLBAoB@T|L|-+he(pJpp;9J^9`gUkFI44vs( z1N1Owl1L`%Iy9-Z#3$y24z?RF8MhzL)O6w&gRN%{%D0Oh+$y|4W;h44VS?^af^97= zmvf12-PSPr*bFcQOUPidD$<5 z=&}wQ!x!-|-~YfrL!H0L9D5(70rkr|kQoaAX0Ve-U%&$|FD`Z$z%|}|IYo7Lak)SH zqaR8jY94OU0Li#*Zm?=e$TWt^#7&oS(CN%XrGWW^PPQ9D!NftoJ+ zrqLMtP{c~1F~dC|iUqeFLG8?ceHum#ZX(0Y^m*VB_nSoWm!rR`ksHpqrZe483AJI% zr!2GHIEo26g}-;QL+|$A>Bk@|5Y~@JJDf)ZnQmz(ewgKFd2?8VYfzk_^8Z+7KPO3*j`RM5FXwH%%jCb=gd`pl!W(J0M`p4LDGVCYVs<2}u?d z9fcLT4WK_jG$fG0p`mEgKM>!7!zsb;;XX~ooBlHd9cOULjGY@4)Cllk9yuLIZ zd4Sr!CXdVMQNcb2?Nx`&R7(kRLmv=V&z-=SOte(?a%NTSu)G`e+3isFu7-KL>z0>8 zSbswf9YV%ye(}&|gIPi!P>SJ*R8jg}=?uzARKKBXP^HCb-8OpW#l^4LGc_PAP$Jt( zM!>W$500?$^QLp*Gc^!umB5n%1qpew3fVa68iay-V-!vdjNcL*Tb{zda~-SQJMrXN zIAe`T>(sw%Sk1BJP1jkMIcMxzw2mGY{M@YA+n<*=+vlo(%e0Z(*d5CUp!4XX<>$*< z6rQv{rl&t33NG1A`u#I^ooR)-Z~qH!sR#1*oNlH%JlFHgD_JHoX_w8+y7^fQp2unK zbl}RMg*^+B3D>5DqW{*dXAaDU7tGY$!!6SADx=Gr&LEgDv$3gl0@p;QQT5RaM^@Ny zjXU$|*H}YO?4Te;H~-zGZx~?2x&oemhPxkAdiHm7@59jB0xkVgCRCJuqlRwtc$zKVBzjH%tj9he+JL(!xT^14o^ zt6VZ61Y6GU88Rvbb3EJMNF<@;OWw*KW=DB%+b>;;su7 zmeorc$nP@7?bXAT@Hhp(`0M-T;F>GNMtJNkvDPQ?_W%)qx^ELE46=uOJS&~Zj+b3S z+NSIvrCy_Ji#FLJ?ytTo13;8c8RU$7+b>hH>|$S$C!CWc!b1?zh8)8lGImrtI|@+~ z|9donB@vVpK^xZ3&N|VhD21B58(IsfC zF^p1tAiEn7S{Wo&%kS4q!>5WFl&>wRxY=Moc7xK(=68%`dnI!MeZId>7*lK!O(*1x z8pGbmD!QN@MR8{@RS2bP&J=aSqEzF(3Fe0?lgAoQ;{Eu#BJtiX?;f9lt4q)h{J8D^ zgcjj2OHni)phA@gCb49i%fa@`7Hy;u!#a)-m2;11$2C?#|1+DtpDgF zWDVpnpJ8CTP&p=a83o=ky$wN+#bgKyH2`=OUGV|vjuSJ2WOXiY@}Zgt+xs))GJuLa zlpRj>4m_AFn@0fZF2y#aRpX~gwUuV^L4rQH;8ZmcHKS!}-K|GlFV_N+rb{(-4TBbB?L*{rGcTtu3EX z|BQbhs@;+WCMJrZu0#A#dD5XPm!sWZiD;k1ACFZ!E-#kyuV6&frm`mJB;jcg6j{0R6@(CJj>vH9F-hSQ3U_{MBUPG-&yI4*R zvOO%|#{%<^@P62YRGzFeu41S4;-~y8if1wo zpi-Ybj=SWK)oP84I<^mqQ97iE16la=2f*i`ytJYLhdRAVu9YO&}{%#gJL&7=IYWPF)3d^WudHzbvK6z?`1U=SeoF zWlPB9k%56@@^Zmo#n(F=pRbKnj>s6Mu`O1>wwZ`;CiJV)mZ#JeI9K}IxJ9o z6j-Mw5S_B7R4&)lS( z+|ui@)%QotkhIIrY!ZJDT(A_ro}aXa!NdZIer8Wx3L24j@WP?uD#JZVXq+)b#Z#dv<-2j7KAbbW=CfDbh? zbq4sV)rOFai4g86N ztM_6BL@q`SCd%Z^>$$kQkJi-J*E`Y5q?u0r`};RW?v=3#b| zubpk%glDGt6$xys%NdXx8?hNEwr>UIp}(2}75+4hZRO%qlh;ZGB9!`DnO7#&i-`A< ziEt&8xB*&}U8HDdXza?t&?#zlSz}{JCisAhz0I=fZyaL2W$C&}Lav+1viJYpS5;AQ z5b$|TTw|bg_~56W%K`xdLxn+ zQt+<;wF(IT{F4L{6ZoqCV^Fc7EST8BzZXxk1~lkIzSOK`YXSkT-`ufn#ZV8_C*&lk zt-36XX-07t>12LlTLQz(ZT0hIjxQo4{vwM#xOnvzys*Y|9 z;01!u4vEfK^IOWlK60)7(VWN$N#;;+71$szK?|4?zKXg&TjO2@l5vO&ae#8%Lz`N` z*ySIy@t0;ljgHzL$S#vnKRLEPM-)=~I%FJ2vTi$LwjeAwH}@)ZEQN-Y1pKS_LW>V( zYEpK@B=6~3%o-g&BX8UU6D0I7m)XYMX#dD@-(J%<6maKpE%bS4ePSqEEaMr5Pj6g( zYO=zG87X@S^@Y!qJ@zm}MjCv7p9oHpKx0<{GdcLC7-!1zvg?^q->X-z-nY#IGlk5y z(ffc@c7V>IOQ<~Z$V&81c2`kXmjI5|YqHHV1f$*QT40P4G)zOrujlmGSFKASaTW5B z@1G{!CUD$zJ1k%$(X>R!7XhK}{s^Jtc%%M(w=KFrWv3H54=D)x107r@vwZ>4r5)(^ zkfMrF1K0Zh$xfgf3fXNR1p{*?Cnql;V`#$-U5>C-zzVcb8e&b&hLj_X=kDybihM&? z6YG@BZv3~jv~`wn?B&8foMY7cMB*r7UoXSF3lSoHWKjfPi7(O2%M&sW(2!71eYcz5Vszraj1HKzxOuf3pf0WGa zMZb+I4G-wk!r3$$^znayoff7a2JIeZ$K)ZIeHL}V@{tD`FLaj#J@~?66t(l~f=2Q; z#D1sSV`F23OZz}FZi7%j)9TPu@9q0~@+t`|8qCaI&y!L>a0ins5pu%?*?$j`Jh2Gy zzj@hmN6kM0BJwC{fgNE0h8<5XA7F(Z!4k2N%W+={+WrQ@Gq$E&=$!T*R4?6FDRFXh zvsfBkIzyuOGL&a8AdZTQ-G%njUnc3=dqRKw{8_WFiI+tGLu`|H1yD}~gU6XxQlb$O zm|ofzCX73e+$eFQfa`W{?`iE6M{}_=co9ZV&n%x$@o3x6)_tVAgIoFcP@)$z^^T{=&eW3(gcq*nGK)aRgNEOFX5GYH@74pV$d$~P!cPx`NRzEGO69N+ zYWG{e@t{Ig^GD*T^ACvU94GmpiUf#}Q~pdpgYgJ3he61BhXwr8%8=X(>K*r()pEw|Z{W945r|H2 zrr&!ytmSxU<1-PhlM zRQ}Ga|6&78VM)cIdP9954qY`k`5{b~doQnhFI z?hS8Paj*SZ*qK8!&a{+xN6*X44rF&!DNBy2AgmlhveGt`mG#AENNFy+2M}cZ=`*~<6K(>wbACRkw$Sn8x5!%0V zFTQFdasrCU_&GBZz=S}MTbi4j(@CMWa&s&6M)(Na+O40Cc91&;2Fr+0PLBYR0hhm8o*tJh;`N&{d|J9?k4Yx})F3ycQI>kF8!zv2q6cUni&sBRc+LxvDoK-$$ZS@{mH|}7>=Rto zk7es0T0}Qo>uw{07)WVSk-T*R(tiZC?@;!$tqH9l)}Ef8v<^B~1>=betjdBi~t@pY(z{)&L;Cs!l zvod3^@PJd6us1r*+{sf~{0_3DioI9n==9DL?@E$t=uogIkp)R~5kh`FN>V&Nvy*-g z>Bmuxf9ZgqF#~3UqcJBYf0kiEtDu8$vy?_qemx|P9*me~E!D#K6Y_VN^87O=Tt1E0 zJD42}-YZ9NdtNV0o82i%i|HHk*c#m@9SwpkZ~Txnlfwcf@tzW)o{#Nhd)w$DP^fr7 zKR&wTtqU=#@eX6{1r+s1Fq_64N^3LX??dH^>6iM_V-`GXg!MzT#U&g&&Uhgo9Vclh zNscg5K?TqD?j1%BPE9+k(TQZ;6pJW;mW=QzTv7_fC+{1`_QrT7Y;z#-PP9(s(eeW~ zws9x&Xk}iW;}eQY614NlN|P;b+;YLkls)Im)PZE>o1LRCeFCGM~7T*e66M|Li0P`QbIml%WLUcUq3Oz0e8xRyx=x+ z3t~s#PN^l@rF;0^|ExOVPLNu9p$dJqz9dGXyMragBcSk?{baXXxQC?xm@Z7Vg12{% z_qC+{N&b@WJ3ilwOd?i59>?5%@dAv8B>I1s6jHWBKzWwN-`l$!GPQJgH=puloE+O- zYQvN-5*{VfB~(@VUy#A@S(QJeBqNDuT|%liqYk)?I$bhx7*4eO7S_TVesYh(>+eeY zqGaqty+?i~>^h0LZEoK}{SlC%SF_JXyhor|mb|yX4H;x8`u*OI)u0x7 z{0Ad2q=C%CoU`gLXSwLZSZs)N_L-uJMErMysbQ}#e+4Dq>bKCrXOrPLIq;5zS4p9q zJ52j%PS~`@`^L8YGP*(wGL-ds?)6KYoB@J?>|Vy;Jz9mMm22bIv@=>$zR|DaXRBbq z!uk;jD zAks&bT0%Kx%NQ(-nl^{IE+jf0`5mCcg?~ZYcYpt_*^H3n z@QrGd#+_&XeHOEN8j!qWi636Yi|f?n!{D1e7@hniYboql8KVK1&lF073r**M+`7a) zC9)-kdJx+RHthAp?GxXZj3Rz~%nKaT+jZ^MKAtDP?6TkDpNNF|EN*TwjgOgsY6`$6 zekh_0F0H|lHY51sy)(RiNyuDfsf7D4sjonVmTaxNT4stM0c*3$_D2gK@UM)B^q;g01hnYoHsPTIdHcW<4EW|WY~=NeW=NFc}>k) z){EIlQppl)sVkbL976Cq@XmLkpwT;zw*=46=86AMPF(Avjc`3Tr7d_@n~>K{nbI2W zvE^+;d}7q}SOMF*ytH&1jvzA2F$}#wA07fDkL4q&2M1p<4&6QYKiWUj7>rQRkp>`n=&s9f84gAC6h4v7 zS~42o$HOH0vv;|T!2RvHG6|(R?u^<+3%K6v;+mBMLJkHab|{)j%F-y#a8F@Km{aPsaxwkJa&VGN*Eg zcBDy5P^!C``+|J^5k0Lr2j&Okn4@R}nDwcpFruix4SLoJhXxFAG zF7BlV?lmzv?>Kpn>R+KmcK=a&w*iU*AzY*2zh>jpH4Pd`4p&wlrmkv|ZS7+Q(&URE_5oJANO0SEdmdJ~X;K=l;ojHG7&AFows$`q!i_KsYFY|iE*ly(Af-gp% zw77&GILt+_EAXz-#Ywc$r;tby8Qj$UHKz$f*ZM=a?I9trQsN9{;;k?K(pIV%7eP6nzi&?!gwqY7)Spm^JGRSO^yQ@>1E!>C2@6BxkZ$ne-NEo z?JcP&Od=~TX2aj9nmowZ)fivvHvaI5cILr}tQaNSE5=mp&OyDU$PspskpBl+0!EpO zziqq^RNk4CqM-G;s;U*r%)9F>uy7_fD-7^@Y&UvupSQDlT8gm~NL^iuzx@@0v@#-y zqSUd}aA4|xrrD%a?r!~aiIe|vE3$i^iqof;p8X17WD><3JByc2`Dj0kBv`uNfA1yp z{PP+sW3ctaRXe1+f{~Zhd{>Dqin9|WhkxWLT&jb9`XF7K27I&;o-C8orfj!R4z8)9 z7ji~m4Hf~mh7$%>VLbs-int+aEiR$07&X71hgvBo{=9-*rPWI`DSfP7lG&K{2>i+P zz*}<@tQj83L>|ifExfk`=Iqf&Hqc}z5r4`ejpdB34L$|IMd4lddd{&c?rm~GEUjIS za;x8RL|)&c;PFf5ggL9b9m^~@308XvPar2hmz&)z;$H=1l~AMQ9cL{!A0$ zV=*|kgwn%(8Jm#8Y6jE?b;rIHTC~G1oI%vHO)e=99IHAKdK^UULr{%&vX)AO7NXKF zSy)uK9wThapRl^VSZlKH)GLOaR5r|^kHjkP)z`t)W3h{-FHCP$!zzwi*S>mNoRWS% zeaWiArFR`{8nM`g3y@dJK2~F}$|H+)9x5s-hug{JTsoZr`uJkdkJUVT_HETuqoEoH zICwM?LnO@M@ge*P&KXld9oAY$sK%o_p;1oP;8mg~ob))B4=f2Jj3G{kvgH8@c?-P% z_F~QtP_5XIe2t7+XW%{OF@JNTEDF*Ol2eG;hx(fJwB*#;rpOp1>v z;;JpFsvj@5% z=kVub%vKj|@!mTXQ(trSJzSKN4RlzU>K?YBY|+QA`2d-sW}2@Dy@%Y=fj9}hhJyO~ zATUmjWl$>FfrxXZRp>>(y$}+)V~R*={`>D9n9PskpAlNKlTY&$JG`o_{0S;I6Hd?5 z`=h3RI(!Q-PcU387YJ8^@K54Mtm@&TVGS7 ziD7@~bSkfV2)B4FCz2ccm9Ojh*BNL%z#w}PpCD%zvYQK;wF|_syvan-c@xHjNlQQW zOE93~8n#|Pfw?j@ELc=go3bCsQKE|$_I4RC0EyHPef&4@kQ7;0{M0&rkDJC5X739U zqtq8n7eU=GkYE{|{M2je;~Yo|qr)U$k5~uf!u){H#J&LAIgj5xWvav_(_;c@WOd`-*A#1Q3{*?s3mz+vckLs)g!Ixe$%DuSYL2(H}mJ(wNT zEZP96TzqV~l_%n&-6jgS$TY7IrqX9#zXl+*sw3zwAn)QJ2tTaiIUyXa0~W7-hsab) z8nj2YC7nOSFvrf|-J@T!Y??_LpkF1QnM|jau!Mq9EQVsdE1Kur{_H5Kac(;0oCvf} zGFc`Y{K+G~rG1$&9q018?d-M#r4uhEbxs{ZcP*#-Tbui?OO@Pz|9wyTi{fJ2JBGRW zyxa3_C*_g{hlFt1D>VQc6A|#p+=Ok9|9${NrB#eJTh}I0T9~aaDczHQ@5oJN42Ce> zN}{+&5sA8!%x|69T9<)jDQAdFV__CeFbt|3OhH7CU>kd_JFiaKMZf<6AfxrMz$=qK z2>DZdQ4y*wqJooO;@QCIW7kd>WYWmW%bVin&ox#_X^wA*pf1~$Jg7)U~R%%Qg=O-9?z7U zyLGVtMMDZ;X(7B_6>xa_Xx0@4*O^J`Mli1z-4zML;_SG>?2jQpExaM*hwF3>fra8( zn%6RK*KP!;LQ4>ooi;$%iI>TPRhq}|7_rQSv@84gV=k3ZIPK-iimCX_VIX!*rP)d7;^Y!bq z2eXAUro@=WVHigOWAHkEORN$fuuW3{dNOFQV1|%1)wsbB@23uCwf?TIKToT}sxP@u zthKW7!mMEWPC!KcUI*799$1LCV!r)P4<(!uMcHeH&I3~OVtd;%3I5U-amL;Tu8n+> zL?V5(*4keUf?|biX;-;0b@e88?HO>%_%9~LcO0Ub zF&)4TK8ND17dD9YX*>#Zc_K|qpedMP9Zp$?SvT#_+I;EM!y8Cn4b~{&{NcTJ=3{j$ z>e2;%-`zH>zt|PiDBKG{jYajBgA88WQ{&Q)C;l{<8kV3;ryP8n4K1#_C=>}VpqXbi z%@Jsh-8zUo;xnzFXz$0K*PIgffW!JWYQqoHW!eCj>qT~KapJ11T=n>&g8BCLXZ_Kq zS!|zjlQfkQKhS9r@e_BcQ|PXFu*w$_@`VwX6W^t=kHsrTu2-Upl47~Z)-yUuL{~5Y z3q~GSl0e6a-{x&9M}(TNu5+@;0ehk-Ep7 zQ`=x`l87Dzwdo6!Q;RZ~KWIWLHRwYdGcLo+cL)o6V1mVCXmv+yg+VS<>ukh=}d#xppoSh%mZ>VSdN5L{XfJn9^N^V>LMrPmw0@P>uTOZa(n-96Tpvry*8gei zT;ri!*D(G%lT$B+abB~^+DsApp*A`6$~mp1GHRt{R?HaI9*om4naV3R+d_>Wi7bhl z2t&%DRI;qej%*4ei;R&RYO*yOW8c27_v?I`cjkGX`@Wv*`rrQFSZhjK-o&RBKw1Zs zht942XR9I?xY{`9orMQ%%Vf)CMYaPn)pcdo`%Nf$j)RMteXR$<`1Z!L=mOgMooa@k zFI{}IacF^1H7`@NZ@K(5JZ<*#lH|RbIU!AUAOzhO%(=l(@w%fSw6PRc$Mvz!ST5hg z*K%+XNCq}hAeP)~%47LB{kH0hR33T#J&hh2NpNH?jE(mu4{iLddLYjK()q@B>AL+e zv-fI`+VtCMG`|ILzEha|*1*1hW!)e4utehi{9>C;Y<{w?jGP*{&1*h|YQ3gnVMvm#pR2#)kqd`50pQ!^Os*j*3rpGL-x zL29(uKtev#)AJQh_jLG<*2In7#7eo;RvvGDZ?7l5CxV5Q`TL60(r1`)rdR?$UNhjG5QPTPxX1$kvx~mqiIz~YuX{SbCSAvr%-#E zcr2nr+06unB6TCKPpCd|7qk|N^vg6A+Cm3j8QWcoru_gPmc0 z4PRqEu*)shcB@!hjeWmj79r9@2}X)f%}Af3K7ibe#ns}w?%lsH15AeB_#5(>04xX> z(~!mN9?d^Zr`d-k!5OjX{|%`c{KlsaQ?kRKSn&f1jgdOlgz&59!6$sIg2#u}JI3?F z0SNsLjSQ=tGgq(nIb}_3$--x6XOjS2v-6-&5u=n*oz(*htL~KBafbxrt!les0kul9 z3y>3?lS$(!a$L*QIkAx>pCyfhH)nvbhmwCF0=GOD1fd_1J>8|E(oqk~WrzqXG$?Y5 z^{se)G7oq?eBJyf|_HsO%KDj zqwx^xpjQGsO6fsAELgreH_6A(FZ;xIOqIQ`SN;>ic`At2w%oQd+%!5m`adw*Dw0?m zutR6jTXe@Am>4b-g$sLK65Dga04BbDys=>~LoKfUu zA&Ines-}5UCt?6nh9t)>zOLJEiw%lOOLY6%a!x3sx>^X=3sY&^kge81rfH0m;qhf0 zOh3;I3KIGNdnFwj=?oru&ke|Qdgb&4m?Rvq(f}junsJ&R)=cU+33_7`x~~||tz&1i zeBs&zHdndVuZ6;OZ2ygM9R&N}ffi4frg&m9vq?8SHE_I*UgG4-xj{iQFCSL3xGIUF zQZp6amf`!0jt1_L(6Oe7t%{B>F76V&(NSrX)38qmD&CGkS3|P%Prk7XIvJIFXHyo8JO^=}mh{ zIHXk~iH~fGd^L6QGqLlAs0oI}BV~H|Lee}#aNDPpVqCsQqA$0WhnIqBynXJbHfd$S z(>-k26NRRa!Q(TRTN|fg7W^y30-}~#6{)>@ks!F#v=|y5?kxFZdO^NE8j7*!VBgqX zcki)+F6Ds9lVGH;Y3L_41U#;|*lTFy#zCJ7-ObE{&F)uuS<=0P%=b<`aQzQWv3m#06MhD;5X!nFZ9y*o4&73&{=^TlUUH5(3tnHa{2I$o z41zVp(er~Z+RA{$hQw9YYiny;Vj>uWHvgOLOs7Ha%Xh}+l#a6Eo#63^R+yQJOTl0U zGk>VVRs^W{l}s%Y@)>71#9rD`Pr#6RZKIE~H4}L@7TK9I0}yw|n%@umMdg zG`pwLx5fooyBi~{RXxXZ38Aic9Q|k-F8FO(w5qA9*_?);{q4vmC*|WLKz53@%=cK2=yMVGBLbh0HXB7J^l#=xBWNh4&7t73mf3iU?xa~+eh}K~hnKL~!hY}?Ou2Pp&(bJ+;8E^Y?y@x@#HM1{X**(_1ibe3gG_Wf#t4E3) zlIL!j7zS~_GkLLnr55A?QFf2ied}6BLs_>5q@*0!YDFnOBTl}U2oV!+v5-^Iy!QI8 zgVvEdSS^~7n)(= zSj`6sL@!=f9GrtkA37~iY-$H&&o!JU!}N4@gN`4{GZhXBg)Du9%5$mN{KS7!{$E@! zx8aGv%bpR+WVQribtkETHBEuG3fCX*b+xd#y(_Vdxd^j%QfI~*U~6==nh*50dyQfVN>M=|R0RSeO8otrK(0NQa(=g9d^i`kT5469|G; zg1?$)sK7h&ORuHDKUDYibr8_W>7Ta^1&I*E2i-(myAzzTJP{InXK;^teJu7B{S`pTD^*88EfuS~7@tD|wF08Dbd_UHvpfZ&UQ< zIW3K%pOB^#^O^LQC{lfs2C3WWT&2O4hcAB}sT%Vr?qvD(DEX}sv30}{82@7?tuy~G zKQPBHLTh0Wh7TSra3lO(1-gjzh+k}u$UArMHV)t3tEi|*kCV~(P+Y9~KDrpZ8JN*C zm+m)g8#EY{V^gDFvpNut!{NwN_q?EOGrb9FhaQ75dvF;XohvFTdL>WNc==gcT3WPA zPu9dVDU)tG)R9;Xy-nJWa36Of)xgjg24_;jqvmO>$aq6Krm=_U7u`H9STfk3w!J?- zaZp-UV{T&d#}79U(3)DAWYV@h;FBzxs2=z;;K8~%_3PK}s#(|+*~%}(De29gnE9^0zP<<*(Hmjx%bOQk`C6Inre%S#a&}>hb@=uJg`RTDjg%w^l(?|7Jm)pf+M^kx)vh{4VoWGWB#-?g@C9LCJYC9gGfZ-0r< z;1p2KFOh%Vo!IQbxv>{6rmwH>uBWfxMCq-D9u8NZa$H?BfwHNhoBup|^k@n;(n0LE z8YPAi!`-CW>f^9$WG`2?LK%y}$?A!0orR<~HC%|P<*K*&*yuc+NW(BLGvI4KDr2re z$e?^rq&!6Bc3Hg3I&IIa@c{w>V8PA_Tr-i}?JC>3c??DOV!5P?|RX#6$nhn_A z$&bIi(D6h&DzAU)&Vvm7hsL5;u7@7$pf6BYFo6wpA2;_g_w zEb`}UK#gfKj;%E%Ra^HVeeh}IMLMcZ*pDy7X9AJM1E0yqu0isbA`g#%yWb)ICX`d7 z;(DEqpa}^AgRcm*E32}nO<^T`Zg%*Xfpvk{US(%%yeq+1g_i-4P_PbJ3;4j>?BIO~ zEsb8Y;bFysJs%H2W22!)%3BR!M^5UNO6wLoJ3B9;1)#8`3caEz;eCq2{c ztIS6^0L93mC|}mOyxTj8P@rYC+aLwpefA--+nvKaUkNld-HqCWC52777sPqpU( zRh5|}8=dm%NfQj6k&#g^Hx?&1_K7;po@CuOxs923a3oTI7o?Ea|MZSt;T$YhTukhM z9WCP-nm$iFmT5htBuMHN?f|PFCjaF2{q42JA-pw+P@?Gb*uCcmt95IeMm*Hlf3AMH zJLV>{d9I~rpqcmrrYUljjPML0mxW<~t*gVE+++71st|mxU;h&JpsKmpzUlZyyj@Lq zJqvW7l9E#YN1(Fip_`VFUBZyvGlTtd4niq6%0ADSsuGn4&@2sjiWp{|5uyR}=%GOW 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

Jn6LL$>Q-*jX9@sW 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 diff --git a/bench/minifiers.js b/bench/minifiers.js index 941ccca..7561f4f 100644 --- a/bench/minifiers.js +++ b/bench/minifiers.js @@ -3,39 +3,24 @@ const hyperbuild = require("hyperbuild"); const minimize = require("minimize"); module.exports = { - 'hyperbuild-nodejs': content => hyperbuild.minify(Buffer.from(content)), + 'hyperbuild-nodejs': content => hyperbuild.minify(content), 'html-minifier': content => htmlMinifier.minify(content, { - caseSensitive: false, collapseBooleanAttributes: true, collapseInlineTagWhitespace: true, collapseWhitespace: true, - conservativeWhitespace: false, customEventAttributes: [], decodeEntities: true, - html5: true, ignoreCustomComments: [], ignoreCustomFragments: [/<\?[\s\S]*?\?>/], - includeAutoGeneratedTags: true, - keepClosingSlash: false, - minifyCSS: false, - minifyJS: false, - minifyURLs: false, - preserveLineBreaks: false, - preventAttributesEscaping: false, processConditionalComments: true, - processScripts: [], removeAttributeQuotes: true, removeComments: true, - removeEmptyAttributes: false, - removeEmptyElements: false, + removeEmptyAttributes: true, removeOptionalTags: true, removeRedundantAttributes: true, removeScriptTypeAttributes: true, removeStyleLinkTypeAttributes: true, removeTagWhitespace: true, - sortAttributes: false, - sortClassName: false, - trimCustomFragments: false, useShortDoctype: true, }), 'minimize': content => new minimize().parse(content), diff --git a/bench/package.json b/bench/package.json index 0d10df1..07de493 100644 --- a/bench/package.json +++ b/bench/package.json @@ -12,6 +12,9 @@ "request": "^2.88.0", "request-promise-native": "^1.0.8" }, + "engines": { + "node": "10.x" + }, "scripts": { "start": "node bench.js" } diff --git a/bench/speed.json b/bench/speed.json index 9937937..a5f26d4 100644 --- a/bench/speed.json +++ b/bench/speed.json @@ -1,14 +1,74 @@ -[ - { - "name": "hyperbuild-nodejs", - "ops": 10.158435796714862 +{ + "Amazon.html": { + "hyperbuild": 245.46705260338564, + "hyperbuild-nodejs": 145.21435374237635, + "html-minifier": 16.19830761009811, + "minimize": 95.71966364576267 }, - { - "name": "html-minifier", - "ops": 0.9598865156998558 + "BBC.html": { + "hyperbuild": 429.2291873495222, + "hyperbuild-nodejs": 251.3721939160052, + "html-minifier": 18.333446052847226, + "minimize": 108.38902861455512 }, - { - "name": "minimize", - "ops": 3.6888006698975837 + "Bootstrap.html": { + "hyperbuild": 235.08368235051825, + "hyperbuild-nodejs": 156.19542771462898, + "html-minifier": 8.557266916672539, + "minimize": 22.359774537863895 + }, + "Bing.html": { + "hyperbuild": 1008.1262435363229, + "hyperbuild-nodejs": 585.3489088472239, + "html-minifier": 79.35385186294975, + "minimize": 435.31581246812584 + }, + "Coding Horror.html": { + "hyperbuild": 1146.867798530376, + "hyperbuild-nodejs": 680.2295027510518, + "html-minifier": 45.63362214760677, + "minimize": 164.51899348138494 + }, + "Google.html": { + "hyperbuild": 344.0346646025321, + "hyperbuild-nodejs": 317.3708534283478, + "html-minifier": 29.36827883130167, + "minimize": 365.1698468973524 + }, + "Hacker News.html": { + "hyperbuild": 1804.5683188361834, + "hyperbuild-nodejs": 1259.6432378637871, + "html-minifier": 66.43984413610241, + "minimize": 255.30928557346104 + }, + "NY Times.html": { + "hyperbuild": 123.84742876588177, + "hyperbuild-nodejs": 51.83081525871115, + "html-minifier": 7.334756953956464, + "minimize": 59.400301132747934 + }, + "Reddit.html": { + "hyperbuild": 109.45057921629598, + "hyperbuild-nodejs": 66.80243904185947, + "html-minifier": 6.3323721760167695, + "minimize": 44.528247219895 + }, + "Stack Overflow.html": { + "hyperbuild": 763.6540095978328, + "hyperbuild-nodejs": 496.21357271825997, + "html-minifier": 39.39722290667494, + "minimize": 148.07292819104936 + }, + "Twitter.html": { + "hyperbuild": 376.9341764747767, + "hyperbuild-nodejs": 208.2611701306221, + "html-minifier": 42.264558908660206, + "minimize": 136.3651156178245 + }, + "Wikipedia.html": { + "hyperbuild": 52.02792034641937, + "hyperbuild-nodejs": 32.045431164840046, + "html-minifier": 2.35238631274572, + "minimize": 7.878943786969402 } -] \ No newline at end of file +} \ No newline at end of file diff --git a/bench/speed.png b/bench/speed.png index 0463a3d2224337b217673cfd5d42e7488985df7c..80e8deea9f5f1935d8b79f2b4d68e97c8ade5463 100644 GIT binary patch literal 38519 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 ({ name, - content: fs.readFileSync(path.join(testsDir, name), "utf8"), -})); + content: fs.readFileSync(path.join(testsDir, name), 'utf8'), +})).sort((a, b) => a.name.localeCompare(b.name)); diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 0d9e6fc..427d7d1 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -1,5 +1,6 @@ [package] name = "hyperbuild-fuzz-target" +publish = false version = "0.0.1" authors = ["Wilson Lin "] edition = "2018" diff --git a/src/err.rs b/src/err.rs index 92de9cd..12b8a8b 100644 --- a/src/err.rs +++ b/src/err.rs @@ -1,3 +1,5 @@ +// Implement debug to allow .unwrap(). +#[derive(Debug)] pub enum ErrorType { EntityFollowingMalformedEntity, NoSpaceBeforeAttr,