From c27e5fcfaf459826e8370c80b0d64c7c9862d294 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 19 Aug 2025 23:02:30 +0200 Subject: [PATCH 01/10] docs: add an example for the builtin bloom effect --- docs/components/ExampleEditor.vue | 2 +- .../post-processing/builtin-bloom/dots.frag | 31 +++++++++++++++++++ .../post-processing/builtin-bloom/index.md | 12 +++++++ .../post-processing/builtin-bloom/index.ts | 17 ++++++++++ 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 docs/examples/post-processing/builtin-bloom/dots.frag create mode 100644 docs/examples/post-processing/builtin-bloom/index.md create mode 100644 docs/examples/post-processing/builtin-bloom/index.ts diff --git a/docs/components/ExampleEditor.vue b/docs/components/ExampleEditor.vue index 864c33f..79179e5 100644 --- a/docs/components/ExampleEditor.vue +++ b/docs/components/ExampleEditor.vue @@ -7,7 +7,7 @@ ...props, deps: { ...deps, - usegl: '0.6.0', + usegl: '0.7.0', }, }" > diff --git a/docs/examples/post-processing/builtin-bloom/dots.frag b/docs/examples/post-processing/builtin-bloom/dots.frag new file mode 100644 index 0000000..ec05b23 --- /dev/null +++ b/docs/examples/post-processing/builtin-bloom/dots.frag @@ -0,0 +1,31 @@ +in vec2 vUv; +uniform float uTime; + +const vec2 center = vec2(0.5, 0.5); +const float ringRadius = 0.3; +const float dotRadius = 0.05; + +float circle(vec2 uv, vec2 center, float radius) { + float d = length(uv - center); + return 1.0 - smoothstep(radius - 0.003, radius + 0.003, d); +} + +void main() { + vec3 color = vec3(0.0); + float t = - uTime * 0.15; + + float offset = 0.; + for (int i = 0; i < 8; i++) { + vec2 p = center + vec2(cos(t + offset), sin(t + offset)) * ringRadius; + float r = dotRadius * (1.8 - 0.24 * float(i)); + color += vec3(1., vUv) * circle(vUv, p, r); + offset += atan(4. * r, ringRadius); + } + + // important ! + // - the colors need to be in linear space for the bloom calculation to be correct + // - there needs to be a final pass to convert linear RGB back to sRGB + color = pow(color, vec3(2.2)); + + gl_FragColor = vec4(color, 1.0); +} diff --git a/docs/examples/post-processing/builtin-bloom/index.md b/docs/examples/post-processing/builtin-bloom/index.md new file mode 100644 index 0000000..19f906a --- /dev/null +++ b/docs/examples/post-processing/builtin-bloom/index.md @@ -0,0 +1,12 @@ +--- +title: Bloom (builtin) +--- + +::: example-editor {deps=tweakpane@^4.0.5} + +<<< ./index.ts +<<< ./dots.frag +<<< @/snippets/canvas-square/styles.css +<<< @/snippets/default/index.html + +::: diff --git a/docs/examples/post-processing/builtin-bloom/index.ts b/docs/examples/post-processing/builtin-bloom/index.ts new file mode 100644 index 0000000..06e1d64 --- /dev/null +++ b/docs/examples/post-processing/builtin-bloom/index.ts @@ -0,0 +1,17 @@ +import { useWebGLCanvas, bloom, linearToSRGB } from "usegl"; +import { Pane } from "tweakpane"; +import fragment from "./dots.frag?raw"; +import "./styles.css"; + +const bloomEffect = bloom(); + +useWebGLCanvas({ + canvas: "#glCanvas", + fragment, + postEffects: [bloomEffect, linearToSRGB()], +}); + +// You can dynamically update the uniforms of an effect pass, like any other pass +const pane = new Pane({ title: "Uniforms" }); +pane.addBinding(bloomEffect.uniforms, "uRadius", { min: 0, max: 1 }); +pane.addBinding(bloomEffect.uniforms, "uMix", { min: 0, max: 1 }); From f5ba600ee54352e7988960a7f173bda5dc040778 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 19 Aug 2025 23:05:05 +0200 Subject: [PATCH 02/10] fix: bad types for the compositeEffectPass --- lib/src/hooks/useCompositeEffectPass.ts | 4 ++-- lib/src/types.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/hooks/useCompositeEffectPass.ts b/lib/src/hooks/useCompositeEffectPass.ts index d5e1c18..e448b6d 100644 --- a/lib/src/hooks/useCompositeEffectPass.ts +++ b/lib/src/hooks/useCompositeEffectPass.ts @@ -9,8 +9,8 @@ import type { } from "../types"; export function useCompositeEffectPass>( - passes: EffectPass[], - uniforms: U, + passes: EffectPass[], + uniforms: U = {} as U, ): CompositeEffectPass { const outputPass = passes.at(-1)!; diff --git a/lib/src/types.ts b/lib/src/types.ts index 7669d57..cb36d88 100644 --- a/lib/src/types.ts +++ b/lib/src/types.ts @@ -59,7 +59,7 @@ export type EffectPass> = RenderPass< export interface CompositeEffectPass> extends Omit, "fragment" | "vertex"> { - passes: EffectPass[]; + passes: EffectPass[]; } export type DrawMode = From 87c31f3b388e78b9b42d9906c207f6f49c497471 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 19 Aug 2025 23:05:29 +0200 Subject: [PATCH 03/10] docs: improve examples of effect passes --- .../post-processing/multi-pass/blur.frag | 41 +++++--- .../post-processing/multi-pass/circles.frag | 19 ---- .../post-processing/multi-pass/combine.frag | 29 +----- .../post-processing/multi-pass/dots.frag | 25 +++++ .../post-processing/multi-pass/index.md | 7 +- .../post-processing/multi-pass/index.ts | 95 +++++++------------ .../post-processing/multi-pass/mipmap.frag | 41 -------- .../post-processing/multi-pass/styles.css | 19 ---- .../post-processing/single-pass/index.md | 2 +- .../post-processing/single-pass/index.ts | 26 ++--- docs/tsconfig.json | 15 +++ 11 files changed, 123 insertions(+), 196 deletions(-) delete mode 100644 docs/examples/post-processing/multi-pass/circles.frag create mode 100644 docs/examples/post-processing/multi-pass/dots.frag delete mode 100644 docs/examples/post-processing/multi-pass/mipmap.frag delete mode 100644 docs/examples/post-processing/multi-pass/styles.css create mode 100644 docs/tsconfig.json diff --git a/docs/examples/post-processing/multi-pass/blur.frag b/docs/examples/post-processing/multi-pass/blur.frag index f353232..8300322 100644 --- a/docs/examples/post-processing/multi-pass/blur.frag +++ b/docs/examples/post-processing/multi-pass/blur.frag @@ -1,24 +1,39 @@ -uniform sampler2D uImage; +uniform sampler2D uTexture; uniform vec2 uResolution; uniform vec2 uDirection; +uniform float uRadius; + in vec2 vUv; out vec4 outColor; -const float weights[5] = float[](0.19638062, 0.29675293, 0.09442139, 0.01037598, 0.00025940); -const float offsets[5] = float[](0.0, 1.41176471, 3.29411765, 5.17647059, 7.05882353); +/* +* Directional Gaussian Blur +* /!\ Absolutely not optimized, for demonstration purposes only +*/ void main() { - vec3 color = texture(uImage, vUv).rgb * weights[0]; - float weightSum = weights[0]; + float sigma = float(uRadius / 2.); + vec2 sampleOffset = uDirection / uResolution; + + // Build normalized Gaussian weights + float weights[51]; + weights[0] = 1.0; + float sum = weights[0]; + for (int i = 1; i <= int(uRadius); ++i) { + float x = float(i); + float w = exp(-0.5 * (x * x) / (sigma * sigma)); + weights[i] = w; + sum += 2.0 * w; + } + for (int i = 0; i <= int(uRadius); ++i) { + weights[i] /= sum; + } - if (vUv.x < 0.52) { - for(int i = 1; i < 5; i++) { - vec2 offset = (offsets[i] / uResolution) * 0.5 * uDirection; - color += texture(uImage, vUv + offset).rgb * weights[i]; - color += texture(uImage, vUv - offset).rgb * weights[i]; - weightSum += 2.0 * weights[i]; - } - color /= weightSum; + vec3 color = texture(uTexture, vUv).rgb * weights[0]; + for (int i = 1; i <= int(uRadius); ++i) { + float fi = float(i); + color += texture(uTexture, vUv + sampleOffset * fi).rgb * weights[i]; + color += texture(uTexture, vUv - sampleOffset * fi).rgb * weights[i]; } outColor = vec4(color, 1.0); diff --git a/docs/examples/post-processing/multi-pass/circles.frag b/docs/examples/post-processing/multi-pass/circles.frag deleted file mode 100644 index 1f2f710..0000000 --- a/docs/examples/post-processing/multi-pass/circles.frag +++ /dev/null @@ -1,19 +0,0 @@ -uniform float uTime; -in vec2 vUv; -out vec4 outColor; - -float sdCircle(vec2 p, float r) { - return length(p) - r; - } - -vec3 drawCircle(vec2 pos, float radius, vec3 color) { - return smoothstep(radius * 1.01, radius * .99, sdCircle(pos, radius)) * color; -} - -void main() { - vec3 color = vec3(0, 0.07, 0.15); - color += drawCircle(vUv - vec2(.4), .1 * (1. + sin(uTime/2.)/10.), vec3(vUv, 1.)); - color += drawCircle(vUv - vec2(.65, .65), .015 * (1. + sin(uTime/2.-1.5)/4.), vec3(vUv, 1.)); - color += drawCircle(vUv - vec2(.75, .4), .04 * (1. + sin(uTime/2.-1.)/4.), vec3(vUv, 1.)); - outColor = vec4(color, 1.); -} diff --git a/docs/examples/post-processing/multi-pass/combine.frag b/docs/examples/post-processing/multi-pass/combine.frag index a10e272..8ec660b 100644 --- a/docs/examples/post-processing/multi-pass/combine.frag +++ b/docs/examples/post-processing/multi-pass/combine.frag @@ -6,34 +6,9 @@ uniform float uMix; in vec2 vUv; out vec4 outColor; -vec2 offset(float octave) { - vec2 padding = 10.0 / uResolution; - float octaveFloor = min(1.0, floor(octave / 3.0)); - vec2 offset = vec2( - -octaveFloor * (0.25 + padding.x), - -(1.0 - (1.0 / exp2(octave))) - padding.y * octave + octaveFloor * (0.35 + padding.y) - ); - return offset + 0.5 / uResolution; -} - -vec3 blurredMipmapLevel(float octave) { - vec2 offset = offset(octave - 1.0); - return texture(uBloomTexture, vUv / exp2(octave) - offset).rgb; -} - -vec3 bloomColor() { - return blurredMipmapLevel(1.0) * 0.8 - + blurredMipmapLevel(3.0) * 0.5 - + blurredMipmapLevel(4.0) * 1.2; -} - void main() { vec4 baseColor = texture(uBaseImage, vUv); - float baseColorGreyscale = dot(baseColor.rgb, vec3(0.299, 0.587, 0.114)); - float mixFactor = (1.0 - baseColorGreyscale * baseColor.a) * uMix; - - vec4 combinedColor = baseColor; - combinedColor.rgb += bloomColor() * mixFactor; + vec4 bloomColor = texture(uBloomTexture, vUv); - outColor = combinedColor; + outColor = max(baseColor, mix(baseColor, bloomColor, uMix)); } diff --git a/docs/examples/post-processing/multi-pass/dots.frag b/docs/examples/post-processing/multi-pass/dots.frag new file mode 100644 index 0000000..1860188 --- /dev/null +++ b/docs/examples/post-processing/multi-pass/dots.frag @@ -0,0 +1,25 @@ +in vec2 vUv; +out vec4 outColor; + +vec3 drawCircle(vec2 pos, float radius, vec3 color) { + return smoothstep(radius * 1.03, radius * .97, (length(pos) - radius)) * color; +} + +void main() { + vec2 c = vec2(0.5, 0.5); + float R = 0.15; + float s60 = 0.86602540378; // sqrt(3)/2 + + vec2 pTop = c + vec2(0.0, R); + vec2 pBL = c + vec2(-R * s60, -R * 0.5); + vec2 pBR = c + vec2( R * s60, -R * 0.5); + + vec3 color = vec3(0.0); + float r = 0.10; + + color += drawCircle(vUv - pTop, r, vec3(1.0, 0.0, 0.0)); + color += drawCircle(vUv - pBL, r, vec3(0.0, 1.0, 0.0)); + color += drawCircle(vUv - pBR, r, vec3(0.0, 0.0, 1.0)); + + outColor = vec4(color, 1.0); +} diff --git a/docs/examples/post-processing/multi-pass/index.md b/docs/examples/post-processing/multi-pass/index.md index 74df97a..58d87e6 100644 --- a/docs/examples/post-processing/multi-pass/index.md +++ b/docs/examples/post-processing/multi-pass/index.md @@ -1,15 +1,14 @@ --- -title: "Multi pass (bloom)" +title: Multi pass --- ::: example-editor {deps=tweakpane@^4.0.5} <<< ./index.ts -<<< ./circles.frag -<<< ./mipmap.frag +<<< ./dots.frag <<< ./blur.frag <<< ./combine.frag -<<< ./styles.css +<<< @/snippets/canvas-square/styles.css <<< @/snippets/default/index.html ::: diff --git a/docs/examples/post-processing/multi-pass/index.ts b/docs/examples/post-processing/multi-pass/index.ts index e83c5c5..3bd05f6 100644 --- a/docs/examples/post-processing/multi-pass/index.ts +++ b/docs/examples/post-processing/multi-pass/index.ts @@ -1,91 +1,68 @@ import { useEffectPass, useWebGLCanvas, useCompositeEffectPass } from "usegl"; -import fragment from "./circles.frag?raw"; -import mipmapsShader from "./mipmap.frag?raw"; -import blurShader from "./blur.frag?raw"; -import combineShader from "./combine.frag?raw"; +import directionalBlurFragment from "./blur.frag?raw"; +import combineFragment from "./combine.frag?raw"; +import dotsFragment from "./dots.frag?raw"; import { Pane } from "tweakpane"; import "./styles.css"; -const mipmaps = useEffectPass({ - fragment: mipmapsShader, - uniforms: { - uThreshold: 0.2, - }, -}); - const horizontalBlur = useEffectPass({ - fragment: blurShader, + fragment: directionalBlurFragment, uniforms: { + uTexture: ({ inputPass }) => inputPass.target!.texture, // optional, the texture uniform is automatically set uDirection: [1, 0], + uRadius: 30, }, }); const verticalBlur = useEffectPass({ - fragment: blurShader, + fragment: directionalBlurFragment, uniforms: { + uTexture: () => horizontalBlur.target!.texture, // optional, the texture uniform is automatically set uDirection: [0, 1], + uRadius: 30, }, }); const combine = useEffectPass({ - fragment: combineShader, + fragment: combineFragment, uniforms: { uBaseImage: ({ inputPass }) => inputPass.target!.texture, - uBloomTexture: () => verticalBlur.target!.texture, + uBloomTexture: ({ previousPass }) => previousPass.target!.texture, // same as () => verticalBlur.target!.texture uMix: 1, }, }); -const bloomEffect = useCompositeEffectPass({ - mipmaps, - horizontalBlur, - verticalBlur, - combine, -}); - -const vignetteEffect = useEffectPass({ - fragment: /* glsl */ ` - uniform sampler2D uTexture; - uniform float uSize; // (0.0 - 1.0) - uniform float uRoundness; // (0.0 = rectangle, 1.0 = round) - uniform float uStrength; // (0.0 - 1.0) - varying vec2 vUv; - - float vignette() { - vec2 centered = vUv * 2.0 - 1.0; - float circDist = length(centered); - float rectDist = max(abs(centered.x), abs(centered.y)); - float dist = mix(rectDist, circDist, uRoundness); - return 1. - smoothstep(uSize, uSize * 2., dist) * uStrength; - } +const bloomPasses = [horizontalBlur, verticalBlur, combine]; - void main() { - vec4 color = texture(uTexture, vUv); - color.rgb *= vignette(); - gl_FragColor = color; - } - `, - uniforms: { - uStrength: 0.5, - uSize: 0.6, - uRoundness: 0.7, +const bloomUniforms = { + get uRadius() { + return verticalBlur.uniforms.uRadius; }, -}); + set uRadius(value: number) { + verticalBlur.uniforms.uRadius = value; + horizontalBlur.uniforms.uRadius = value; + }, + get uMix() { + return combine.uniforms.uMix; + }, + set uMix(value: number) { + combine.uniforms.uMix = value; + }, +}; + +const bloom = useCompositeEffectPass(bloomPasses, bloomUniforms); useWebGLCanvas({ canvas: "#glCanvas", - fragment: fragment, - postEffects: [vignetteEffect, bloomEffect], + dpr: 1, + fragment: dotsFragment, + postEffects: [bloom], }); const pane = new Pane({ title: "Uniforms" }); -// You can update the uniforms of each individual pass, which will trigger a re-render -const bloom = pane.addFolder({ title: "Bloom" }); -bloom.addBinding(bloomEffect.passes.mipmaps.uniforms, "uThreshold", { min: 0, max: 1 }); -bloom.addBinding(combine.uniforms, "uMix", { min: 0, max: 1 }); - -const vignette = pane.addFolder({ title: "Vignette" }); -vignette.addBinding(vignetteEffect.uniforms, "uStrength", { min: 0, max: 1 }); -vignette.addBinding(vignetteEffect.uniforms, "uSize", { min: 0, max: 1 }); -vignette.addBinding(vignetteEffect.uniforms, "uRoundness", { min: 0, max: 1 }); +// Updating the uniforms of the composite pass will update those of the individual passes, +// which will trigger a re-render +const bloomFolder = pane.addFolder({ title: "Bloom" }); +bloomFolder.addBinding(bloomUniforms, "uMix", { min: 0, max: 1 }); +bloomFolder.addBinding(bloomUniforms, "uRadius", { min: 0, max: 50 }); diff --git a/docs/examples/post-processing/multi-pass/mipmap.frag b/docs/examples/post-processing/multi-pass/mipmap.frag deleted file mode 100644 index 6e4509e..0000000 --- a/docs/examples/post-processing/multi-pass/mipmap.frag +++ /dev/null @@ -1,41 +0,0 @@ -uniform sampler2D uImage; -uniform vec2 uResolution; -uniform float uThreshold; - -in vec2 vUv; -out vec4 outColor; - -vec2 offset(float octave) { - vec2 padding = 10.0 / uResolution; - float octaveFloor = min(1.0, floor(octave / 3.0)); - return vec2( - -octaveFloor * (0.25 + padding.x), - -(1.0 - (1.0 / exp2(octave))) - padding.y * octave + octaveFloor * (0.35 + padding.y) - ); -} - -vec3 mipmapLevel(float octave) { - float scale = exp2(octave); - vec2 coord = (vUv + offset(octave - 1.0)) * scale; - - if (any(lessThan(coord, vec2(0.0))) || any(greaterThan(coord, vec2(1.0)))) { - return vec3(0.0); - } - - vec3 color = vec3(0.0); - int spread = int(scale); - - for (int i = 0; i < spread; i++) { - for (int j = 0; j < spread; j++) { - vec2 offset = (vec2(i, j) / uResolution) * scale / float(spread); - vec3 imageColor = texture(uImage, coord + offset).rgb; - color += max(vec3(0.0), imageColor - vec3(uThreshold)); - } - } - - return color / float(spread * spread); -} - -void main() { - outColor = vec4(mipmapLevel(1.0) + mipmapLevel(3.0) + mipmapLevel(4.0), 1.0); -} diff --git a/docs/examples/post-processing/multi-pass/styles.css b/docs/examples/post-processing/multi-pass/styles.css deleted file mode 100644 index 30a7c83..0000000 --- a/docs/examples/post-processing/multi-pass/styles.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - margin: 0; - background: black; - height: 100svh; - display: grid; - place-items: center; -} - -canvas { - width: min(90svmin, 900px); - aspect-ratio: 1; - display: block; - border-radius: 8px; - border: 1px solid #555; -} - -.tp-dfwv { - width: 260px !important; -} diff --git a/docs/examples/post-processing/single-pass/index.md b/docs/examples/post-processing/single-pass/index.md index 1d99537..00e10e8 100644 --- a/docs/examples/post-processing/single-pass/index.md +++ b/docs/examples/post-processing/single-pass/index.md @@ -1,5 +1,5 @@ --- -title: Single pass (sepia) +title: Single pass --- ::: example-editor {deps=tweakpane@^4.0.5} diff --git a/docs/examples/post-processing/single-pass/index.ts b/docs/examples/post-processing/single-pass/index.ts index edd52a1..e31986c 100644 --- a/docs/examples/post-processing/single-pass/index.ts +++ b/docs/examples/post-processing/single-pass/index.ts @@ -2,20 +2,20 @@ import { useEffectPass, useWebGLCanvas, loadTexture } from "usegl"; import { Pane } from "tweakpane"; import "./styles.css"; -const image = loadTexture("https://picsum.photos/id/323/600/400"); - -const sepiaEffect = useEffectPass({ +const sepia = useEffectPass({ fragment: /* glsl */ ` uniform sampler2D uTexture; // output of the render pass uniform float uStrength; in vec2 vUv; out vec4 fragColor; - #define SEPIA_COLOR vec3(1.2, 1.0, 0.7) - - vec3 sepia(vec3 color) { - float grayScale = dot(color, vec3(0.299, 0.587, 0.114)); - return grayScale * SEPIA_COLOR; + // sepia filter from the CSS specification : https://drafts.fxtf.org/filter-effects/#sepiaEquivalent + vec3 sepia(vec3 c){ + return c * mat3( + 0.393, 0.769, 0.189, + 0.349, 0.686, 0.168, + 0.272, 0.534, 0.131 + ); } void main() { @@ -25,7 +25,7 @@ const sepiaEffect = useEffectPass({ } `, uniforms: { - uStrength: 0.75, + uStrength: 1, }, }); @@ -41,9 +41,9 @@ const { onAfterRender } = useWebGLCanvas({ } `, uniforms: { - uPicture: image, + uPicture: loadTexture("https://picsum.photos/id/323/600/400"), }, - postEffects: [sepiaEffect], + postEffects: [sepia], }); const renderCount = document.querySelector("#renderCount"); @@ -51,6 +51,6 @@ onAfterRender(() => { renderCount.textContent = `${Number(renderCount.textContent) + 1}`; }); -// You can update the uniforms of an effect pass +// You can dynamically update the uniforms of an effect pass, like any other pass const pane = new Pane({ title: "Uniforms" }); -pane.addBinding(sepiaEffect.uniforms, "uStrength", { min: 0, max: 1 }); +pane.addBinding(sepia.uniforms, "uStrength", { min: 0, max: 1 }); diff --git a/docs/tsconfig.json b/docs/tsconfig.json new file mode 100644 index 0000000..c4b3a41 --- /dev/null +++ b/docs/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES2020", + "lib": ["ES2020", "DOM"], + "module": "ESNext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": ["node_modules", "dist"] +} From fbb725a03d75cbfc039c422913e2f24da570cab4 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Mon, 25 Aug 2025 22:47:32 +0200 Subject: [PATCH 04/10] feat(postprocessing): use float textures for all render targets --- lib/src/hooks/useCompositor.ts | 3 ++- lib/src/hooks/useEffectPass.ts | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/src/hooks/useCompositor.ts b/lib/src/hooks/useCompositor.ts index fa0fbde..c367e6e 100644 --- a/lib/src/hooks/useCompositor.ts +++ b/lib/src/hooks/useCompositor.ts @@ -1,6 +1,7 @@ import { createRenderTarget } from "../core/renderTarget"; import { findUniformName } from "../internal/findName"; import type { CompositeEffectPass, EffectPass, RenderPass } from "../types"; +import { floatTargetConfig } from "./useEffectPass"; /** * The compositor handles the combination of the render pass and the effects: @@ -18,7 +19,7 @@ export function useCompositor( gl.getExtension("EXT_color_buffer_float"); if (effects.length > 0 && renderPass.target === null) { - renderPass.setTarget(createRenderTarget(gl)); + renderPass.setTarget(createRenderTarget(gl, floatTargetConfig)); } let previousPass = renderPass; diff --git a/lib/src/hooks/useEffectPass.ts b/lib/src/hooks/useEffectPass.ts index 5837d2c..c7b15c1 100644 --- a/lib/src/hooks/useEffectPass.ts +++ b/lib/src/hooks/useEffectPass.ts @@ -15,15 +15,15 @@ type EffectPassOptions = Omit, "tar target?: RenderTargetParams | null; }; -const effectTargetConfig: RenderTargetParams = { - minFilter: "nearest", - magFilter: "nearest", +export const floatTargetConfig: RenderTargetParams = { + internalFormat: WebGL2RenderingContext.RGBA16F, + type: WebGL2RenderingContext.HALF_FLOAT, }; export function useEffectPass( options: EffectPassOptions, ): EffectPass { - const { target = effectTargetConfig, resolutionScale = 1 } = options; + const { target = floatTargetConfig, resolutionScale = 1 } = options; const renderPass = useQuadRenderPass(undefined, { ...options, target: null }); From a3944c780ed1b6ff70b523fbdec33d8a38ad1f98 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 26 Aug 2025 13:30:12 +0200 Subject: [PATCH 05/10] feat(postprocessing): add tone mapping operators --- .../pages/post-processing/tonemapping.astro | 86 +++++++++++++++++ lib/src/effects/bloom/glsl/upsample.frag | 2 +- lib/src/effects/bloom/index.ts | 10 +- lib/src/effects/toneMapping/glsl/aces.frag | 44 +++++++++ lib/src/effects/toneMapping/glsl/agx.frag | 88 ++++++++++++++++++ lib/src/effects/toneMapping/glsl/cineon.frag | 18 ++++ lib/src/effects/toneMapping/glsl/hable.frag | 32 +++++++ lib/src/effects/toneMapping/glsl/neutral.frag | 32 +++++++ .../effects/toneMapping/glsl/reinhard.frag | 23 +++++ lib/src/effects/toneMapping/index.ts | 46 +++++++++ lib/src/index.ts | 8 ++ .../tonemapping/tonemapping-android.png | Bin 0 -> 38590 bytes .../tonemapping/tonemapping-chromium.png | Bin 0 -> 50926 bytes .../tonemapping/tonemapping-firefox.png | Bin 0 -> 68360 bytes .../tonemapping/tonemapping-iphone.png | Bin 0 -> 39103 bytes .../tonemapping/tonemapping-safari.png | Bin 0 -> 54361 bytes 16 files changed, 379 insertions(+), 10 deletions(-) create mode 100644 lib/playground/src/pages/post-processing/tonemapping.astro create mode 100644 lib/src/effects/toneMapping/glsl/aces.frag create mode 100644 lib/src/effects/toneMapping/glsl/agx.frag create mode 100644 lib/src/effects/toneMapping/glsl/cineon.frag create mode 100644 lib/src/effects/toneMapping/glsl/hable.frag create mode 100644 lib/src/effects/toneMapping/glsl/neutral.frag create mode 100644 lib/src/effects/toneMapping/glsl/reinhard.frag create mode 100644 lib/src/effects/toneMapping/index.ts create mode 100644 lib/tests/__screenshots__/tonemapping/tonemapping-android.png create mode 100644 lib/tests/__screenshots__/tonemapping/tonemapping-chromium.png create mode 100644 lib/tests/__screenshots__/tonemapping/tonemapping-firefox.png create mode 100644 lib/tests/__screenshots__/tonemapping/tonemapping-iphone.png create mode 100644 lib/tests/__screenshots__/tonemapping/tonemapping-safari.png diff --git a/lib/playground/src/pages/post-processing/tonemapping.astro b/lib/playground/src/pages/post-processing/tonemapping.astro new file mode 100644 index 0000000..299381b --- /dev/null +++ b/lib/playground/src/pages/post-processing/tonemapping.astro @@ -0,0 +1,86 @@ +--- +import Layout from "../../layouts/Layout.astro"; +--- + + + + + + diff --git a/lib/src/effects/bloom/glsl/upsample.frag b/lib/src/effects/bloom/glsl/upsample.frag index 7e699ec..e689a41 100644 --- a/lib/src/effects/bloom/glsl/upsample.frag +++ b/lib/src/effects/bloom/glsl/upsample.frag @@ -30,5 +30,5 @@ void main() { vec4 currColor = texture(uCurrentTexture, vUv); - fragColor = max(currColor, mix(currColor, prevColor, uRadius)); + fragColor = mix(currColor, prevColor, uRadius); } diff --git a/lib/src/effects/bloom/index.ts b/lib/src/effects/bloom/index.ts index b5b8d52..f5c7c07 100644 --- a/lib/src/effects/bloom/index.ts +++ b/lib/src/effects/bloom/index.ts @@ -1,7 +1,6 @@ import { useCompositeEffectPass } from "../../hooks/useCompositeEffectPass"; -import { useEffectPass } from "../../hooks/useEffectPass"; +import { floatTargetConfig, useEffectPass } from "../../hooks/useEffectPass"; import type { EffectPass } from "../../types"; -import type { RenderTargetParams } from "../../core/renderTarget"; import downSampleFragment from "./glsl/downsample.frag"; import combineFragment from "./glsl/combine.frag"; import sampleVertex from "./glsl/sample.vert"; @@ -13,13 +12,6 @@ export type BloomParams = { mix?: number; }; -const floatTargetConfig: RenderTargetParams = { - internalFormat: WebGL2RenderingContext.RGBA16F, - type: WebGL2RenderingContext.HALF_FLOAT, - minFilter: "linear", - magFilter: "linear", -}; - export function bloom(params: BloomParams = {}) { const { levels = 8, radius = 0.65, mix = 0.5 } = params; diff --git a/lib/src/effects/toneMapping/glsl/aces.frag b/lib/src/effects/toneMapping/glsl/aces.frag new file mode 100644 index 0000000..5f44076 --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/aces.frag @@ -0,0 +1,44 @@ +uniform sampler2D uTexture; +uniform float uExposure; + +varying vec2 vUv; + +// sRGB => XYZ => D65_2_D60 => AP1 => RRT_SAT +const mat3 ACESInputMat = mat3( + vec3( 0.59719, 0.07600, 0.02840 ), // transposed from source + vec3( 0.35458, 0.90834, 0.13383 ), + vec3( 0.04823, 0.01566, 0.83777 ) +); + +// ODT_SAT => XYZ => D60_2_D65 => sRGB +const mat3 ACESOutputMat = mat3( + vec3( 1.60475, -0.10208, -0.00327 ), // transposed from source + vec3( -0.53108, 1.10813, -0.07276 ), + vec3( -0.07367, -0.00605, 1.07602 ) +); + +// source: https://github.com/selfshadow/ltc_code/blob/master/webgl/shaders/ltc/ltc_blit.fs +vec3 RRTAndODTFit( vec3 v ) { + vec3 a = v * ( v + 0.0245786 ) - 0.000090537; + vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; + return a / b; +} + +// Three.js implementation of ACES Filmic Tone Mapping +// source: https://github.com/mrdoob/three.js/blob/7f848acd7dc54062c50fca749211ecea0af8742b/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js#L46 + +vec3 ACESFilmicToneMapping( vec3 color ) { + color *= uExposure / 0.6; + + color = ACESInputMat * color; + color = RRTAndODTFit( color ); + color = ACESOutputMat * color; + + return color; +} + +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = ACESFilmicToneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/glsl/agx.frag b/lib/src/effects/toneMapping/glsl/agx.frag new file mode 100644 index 0000000..c6cd5c0 --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/agx.frag @@ -0,0 +1,88 @@ +uniform sampler2D uTexture; +uniform float uExposure; + +varying vec2 vUv; + +// Matrices for rec 2020 <> rec 709 color space conversion +// matrix provided in row-major order so it has been transposed +// https://www.itu.int/pub/R-REP-BT.2407-2017 +const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3( + vec3( 1.6605, - 0.1246, - 0.0182 ), + vec3( - 0.5876, 1.1329, - 0.1006 ), + vec3( - 0.0728, - 0.0083, 1.1187 ) +); + +const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3( + vec3( 0.6274, 0.0691, 0.0164 ), + vec3( 0.3293, 0.9195, 0.0880 ), + vec3( 0.0433, 0.0113, 0.8956 ) +); + +// https://iolite-engine.com/blog_posts/minimal_agx_implementation +// Mean error^2: 3.6705141e-06 +vec3 agxDefaultContrastApprox( vec3 x ) { + vec3 x2 = x * x; + vec3 x4 = x2 * x2; + + return + 15.5 * x4 * x2 + - 40.14 * x4 * x + + 31.96 * x4 + - 6.868 * x2 * x + + 0.4298 * x2 + + 0.1191 * x + - 0.00232; +} + +// AgX constants +const mat3 AgXInsetMatrix = mat3( + vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ), + vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ), + vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 ) +); + +// explicit AgXOutsetMatrix generated from Filaments AgXOutsetMatrixInv +const mat3 AgXOutsetMatrix = mat3( + vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ), + vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ), + vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 ) +); + +// LOG2_MIN = -10.0 +// LOG2_MAX = +6.5 +// MIDDLE_GRAY = 0.18 +const float AgxMinEv = - 12.47393; // log2( pow( 2, LOG2_MIN ) * MIDDLE_GRAY ) +const float AgxMaxEv = 4.026069; // log2( pow( 2, LOG2_MAX ) * MIDDLE_GRAY ) + + +// Three.js implementation of AgX Tone Mapping, based on Filament, based on Blender +// source: https://github.com/mrdoob/three.js/blob/c5e5c609904ff38e701f7cafccbd454d363019c7/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js#L113 + +vec3 AgXToneMapping( vec3 color ) { + color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; + color = AgXInsetMatrix * color; + + // Log2 encoding + color = max( color, 1e-10 ); // avoid 0 or negative numbers for log2 + color = log2( color ); + color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv ); + + color = clamp( color, 0.0, 1.0 ); + + // Apply sigmoid + color = agxDefaultContrastApprox( color ); + + color = AgXOutsetMatrix * color; + + // Linearize + color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) ); + + color = LINEAR_REC2020_TO_LINEAR_SRGB * color; + + return color; +} + +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = AgXToneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/glsl/cineon.frag b/lib/src/effects/toneMapping/glsl/cineon.frag new file mode 100644 index 0000000..8380908 --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/cineon.frag @@ -0,0 +1,18 @@ +uniform sampler2D uTexture; +uniform float uExposure; + +varying vec2 vUv; + +// filmic operator by Jim Hejl and Richard Burgess-Dawson +// http://filmicworlds.com/blog/filmic-tonemapping-operators/ + +vec3 CineonToneMapping( vec3 color ) { + color = max( vec3( 0.0 ), color - 0.004 ); + return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); +} + +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = CineonToneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/glsl/hable.frag b/lib/src/effects/toneMapping/glsl/hable.frag new file mode 100644 index 0000000..e5d9dce --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/hable.frag @@ -0,0 +1,32 @@ +uniform sampler2D uTexture; +uniform float uExposure; + +varying vec2 vUv; + +// Uncharted 2 filmic curve by John Hable +// http://filmicworlds.com/blog/filmic-tonemapping-operators/ + +const float A = 0.15; +const float B = 0.50; +const float C = 0.10; +const float D = 0.20; +const float E = 0.02; +const float F = 0.30; +const float W = 11.2; +const float exposureBias = 2.0; + +vec3 uncharted2Tonemap(vec3 x) { + return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F)) - E/F; +} + +vec3 hableToneMapping(vec3 color) { + vec3 mapped = uncharted2Tonemap(exposureBias * color); + vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W)); + return mapped * whiteScale; +} + +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = hableToneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/glsl/neutral.frag b/lib/src/effects/toneMapping/glsl/neutral.frag new file mode 100644 index 0000000..22bbd80 --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/neutral.frag @@ -0,0 +1,32 @@ +uniform sampler2D uTexture; +uniform float uExposure; + +varying vec2 vUv; + +const float startCompression = 0.8 - 0.04; +const float desaturation = 0.15; + +// Khronos PBR Neutral +// https://modelviewer.dev/examples/tone-mapping + +vec3 NeutralToneMapping( vec3 color ) { + float x = min(color.r, min(color.g, color.b)); + float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + float d = 1. - startCompression; + float newPeak = 1. - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1. - 1. / (desaturation * (peak - newPeak) + 1.); + return mix(color, newPeak * vec3(1, 1, 1), g); +} + +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = NeutralToneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/glsl/reinhard.frag b/lib/src/effects/toneMapping/glsl/reinhard.frag new file mode 100644 index 0000000..c579670 --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/reinhard.frag @@ -0,0 +1,23 @@ +uniform sampler2D uTexture; +uniform float uExposure; +uniform float uWhitePoint; + +varying vec2 vUv; + +// Reinhard tonemapping extended with white point + +vec3 ReinhardToneMapping(vec3 color) { + vec3 mapped = color.rgb / (1.0 + color.rgb); + + if (uWhitePoint > 1.0) { + vec3 whiteSq = vec3(uWhitePoint * uWhitePoint); + mapped = (color.rgb * (1.0 + color.rgb / whiteSq)) / (1.0 + color.rgb); + } + return mapped; +} + +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = ReinhardToneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/index.ts b/lib/src/effects/toneMapping/index.ts new file mode 100644 index 0000000..c3b24a0 --- /dev/null +++ b/lib/src/effects/toneMapping/index.ts @@ -0,0 +1,46 @@ +import { useEffectPass } from "../../hooks/useEffectPass"; + +import acesFragment from "./glsl/aces.frag"; +import reinhardFragment from "./glsl/reinhard.frag"; +import hableFragment from "./glsl/hable.frag"; +import neutralFragment from "./glsl/neutral.frag"; +import cineonFragment from "./glsl/cineon.frag"; +import agxFragment from "./glsl/agx.frag"; + +export type ToneMappingParams = { + exposure?: number; +}; + +function createToneMappingPass(fragment: string, params: ToneMappingParams = {}) { + const { exposure = 1 } = params; + return useEffectPass({ + fragment, + uniforms: { + uExposure: exposure, + }, + }); +} + +export function reinhardToneMapping(params: ToneMappingParams = {}) { + return createToneMappingPass(reinhardFragment, params); +} + +export function hableToneMapping(params: ToneMappingParams = {}) { + return createToneMappingPass(hableFragment, params); +} + +export function acesToneMapping(params: ToneMappingParams = {}) { + return createToneMappingPass(acesFragment, params); +} + +export function neutralToneMapping(params: ToneMappingParams = {}) { + return createToneMappingPass(neutralFragment, params); +} + +export function cineonToneMapping(params: ToneMappingParams = {}) { + return createToneMappingPass(cineonFragment, params); +} + +export function agxToneMapping(params: ToneMappingParams = {}) { + return createToneMappingPass(agxFragment, params); +} diff --git a/lib/src/index.ts b/lib/src/index.ts index e90cd80..a73bd85 100644 --- a/lib/src/index.ts +++ b/lib/src/index.ts @@ -21,3 +21,11 @@ export { useTransformFeedback } from "./hooks/useTransformFeedback"; export { bloom } from "./effects/bloom"; export { linearToSRGB } from "./effects/linearToSRGB"; +export { + reinhardToneMapping, + hableToneMapping, + acesToneMapping, + neutralToneMapping, + cineonToneMapping, + agxToneMapping, +} from "./effects/toneMapping"; diff --git a/lib/tests/__screenshots__/tonemapping/tonemapping-android.png b/lib/tests/__screenshots__/tonemapping/tonemapping-android.png new file mode 100644 index 0000000000000000000000000000000000000000..66586f8f51853ca9c11c28320e715d82f772348f GIT binary patch literal 38590 zcmeEN=Qo^RwAT9!LNJWpMX#fm(W6BR(R&xY*AYe?M2X%-iRgq7Mz7H$O4LD+5haKc zT)z+ZpSbJ3U*5Iewaz*FJZGQ%?(^*DB ziz8Vmw)=|YmJO9AU;dwi+Cq@70h%#NVzB*;5f2 z3P{9RM)ALWHTk@w;)j1ft->$9eYc9dqnbHSNRLeY#mBfJcej&TjE{;=L6JJk_w2SL zK3eqOa1#Q(|4vgQWj_78?R~iIz5mrK_v?=gKBVVrJE`|NzxR47um`Fve|MnUdvo|f zNbVN}imqfpV)cp%(M?0G9!>gb|Kw^|DGfaNZ}*+m{n5rfANk$or{24tk@r8V^inx7 zMv5P?otL- z@bC4KJMa+rLlZ;8WCDkoKYH*GucJ5w&I+eFBd!J*@4s2yeY^d8{BX+naGDi7awN8q z9Djd*{BXazaewKQL|Y&wSQX$rX|^iseqVDmaMD|KDbY3i{AgxLF6^{srb8~d*y!J$ zL~rNDu~o$NZt>l6@!jJ}gnj)KVYGQQrW$L-mKl@lCI(PYGkK#vBJ^$Sg%lKSo_Io{>HyO-G_7Chi!rT|0e$*bRWJP|1#1F zI~}4HfuFS$-=V*)pC5SZvr{L=B*b5BeK_wh7OMKYCikx-=*Q+#5~YsWj-1SnVodzl zZvi>dTX-?_-+wUQKZ01!c(*TqkCM04ZtP}2T}|}Y^pDgED?M&7P&^sMB|2?@8! z5vHk54u)*RH<-q4blj)U%X=muvw3CIrTF)UFQn_?-JTxn$B=x>t4uJaloYK#edEo5X#PTqN%?dx^cT+ zcXreION?PO)ytUidkS%S@#?+B@TFb1jr)^*UT5E2zfV@YiJU3CPL5dNj z_DQVqGC`4R1Rj@6w!l#)Wk9REoYB?Q;fIEZe<;St|5{f>*-<4#++94*H=qIJG`f_Q z#AKpF`rw7WV!DEOjCotc`oogtsa%=tci>a9xOu0!$Pu)8OZgY2?neWDnQgF?={BgJ zN6{A8Y*&i+av5Pz56AjQR#z;Q)~9b*VD$ImFe72K=;9$u?XHL^t#mmBdD4_?{P|}c zkyq|Xap3!1gT&=dN43z{Aok6xbJg*m4AqVgxHzNP&heH5nk!FQbqCYk(4%(`P~3?o zuRq@PO@HLDvLIs_*S(04G+#7`_Jr#6XW<9ntD2~S!{h4&cxLf;%aA4$_GUf<;Xz@zsPpo#W zn7zHc@)X2*sfpwpQL62TL!S!Msg&wlTjOH~=JRKt@r$z&Dbi z!Ud-eCn=-yYzvUvE9}~Wr4Q0vvLAd7*wIT-L#UHzYS*=9F|o2)47$RRK1yCv_c!gn zqLjqCOg`@^CQLws_jFIgWN2`~q$-EGnYTymmM6Gc?x1m*qiI)MdFUmC=F`t<#+=)O z3D<(p6t6f!>%C_7RdOQ@WpS=SLC9 z{P;kFn~B51+C+*^RwP89GKX*H7LON2V9D+IBWj3MD)z6gN+Tp%{jK0-)6XrP&ecQ% zN-r?$MJqn{Fss?+eq&5(`eqDvJk!KX{UKit-$gw2cQrD$fGPu8c1hZmBavgs`xgOv zKIf2t`|8!-f$QP9IbD2L9r0L*aP#uvYzNVFQsM4xb?B5nyFAGSeau`7p`19c-7in~ z^lco*<&{x?@M>Hc#xWCXW`q>+z^Bu#VH9L*v_x@Xx5G~vD-}>*ZQt>-e)I*hi7?W1 zN;yV^>V#atQcp-g2!TPB$eLqm!_xY^rH@?A-#YbnPd~Qw=#$klSV@)tEw@1R+ivdy z4Y*Xpz!z%$x7V+hZ$};Mp3>ri`7MPNQ%h!k7^GT{5D(G+VVh=)-5!>;WHQ;0{Ri`u z0Wu1a)2%30oRl7s@9cOFh6}^one9A(euZ)zUI|#v4jvEhhJeeX23ROkFhDF&uxjhT zr96o=p4=~gBG$T+wrG9ao}rFGMEF}9x@GcCrIa++Q(X`d4%T)HU;WG1FIb_&ATh_# zh|!|<4+VXvt5t~?iCBoIX2H#@wB%y#(qZxL%i|f=u}rEo2LvaI`2nLJyOGj5bc{j} z(Kb6TTtizC4i&jv&ylM044mNYcJ~BTamZ3QTvZgWt&<*|!2vR5r+vfN)i|JrIl>?e zs}dYiccd!OtHbo24#V&&ut-fmluq+w`ncI*SW4QDphm&mx_ON<9hlY#-pAp`e*Aj6 znZnttj`Ic!Wo_%P`!iji3-f!q{Y3IKJ!I<4enOaKhyXbo@2m?gfY-iW*wj`jD%gyn z7u+yyQ+(Zf|`!2mvW5)aVj8K_>2&OA=4A_U552dXV+O$~%A79h92o_s~ z^&p#60B6{^Jf>fNNN(T9$OodY zw4$+JuvX{WFD{WZjnJoMR6qKdot;xr|G2Sq&G*E2c&7uMjs0F-s<6I|8yP*G5Tx^ygctV?W7@slCuUgl~b+XnHUE%ckXwGNhzZT)oBnQP}Qb znKFrH0GO?jKp*NW+j*Af7Y^T_fGA4oz8z4czhp+7-OH-^zqte0Ug+ z5$?QxyT4u1>;q6C%H@6oFDVKG7U=Kz4j`s+A^aVxShy@nL$_#KACw+!B=VHx)P~nYBKL z;V!pA{SJ)lWS1EKW;9&kTbkM=~j}eCd zqv`N38Ih2B&uA33jXY&>#rat_1n1HaR&XaA%`%j%uv4o(a29oLG25h9m4c~ber~E_ zh_qIva+9h#O(D?^&@=yGBV2e`2yPN_pRGCT64*U_zO7}X&)!boFs|B=SwJH`h!?BO4{93c zLgBzZfK&-z<~5^~ZoMP48{s4d<1Z|YrvU6Hhm(?7bIKuPzi~iaBok3Wynh(Ai$qzh zsZ2j|h2elf2TX6ybXIIeh?}N|`st+06g?*hh0|iHeGV+!{es(oOtxpr!yj{G$iK|^ zO9{L$`uaj4gWV=Bw??#@)U~liiivZ%EU2$oDj+Nmxh0+aBq&ZQiM3aq*N!D#L_08I zWX~p>GuKby+d;PXNpxU|d)QdusG)e-hiQfECb?WHJ+pW7xFOad-BSy!F|1GTk`YG-FV|H2i%F-zz7W{^` zhgj$gD9C-j$ADM!wrvs-UQ)BgaYZPuR(}vwGKkGb0_y>}$pWQ@=yNF!ARZu>a=PlW z;wXXyJf}^JccQ+4%WhPriJ}0un?#*gObuX}-{Z+~IY8=~)}klkQtndNOV92wV=d}* z3wcE`gwO>*fS&t8&tbf%SG8!FbdR?xn7g?7tRJ2(@j2?B$)Xijru?vv11q4ZO9MZ} zrRWnpXR;k+lIgFD7C!1JVUl(UBka8dgNv0W_?KEp)!#RIrIZ^IqM`Ol4mOn1a{dkH z8CVGF7p$0=j2JA>GE1!gHQxHLxIWp5G-DmKEnjitip8#~_X+Er%yC z7A<$OH{wUym^8xagAha<*T3h~-)5NUyJUb3yp&dP0k`QZny!?3{Q<=R*E>z9c}!p` z?Y>)M4q|Bw+jZ#!vdW!upV z>E%K#&l+bKFQnD$GIR;0<;XV`7H0S;Xx|Lm@h|3H`-7lQD9Ryz znfzbUUJF~nB+#R!r$a^zgL_ZW!C&>IH!=8^F7bb(GJO}CIhf=ht{~Me@))IWf8zKv zp=886%ZM-;g(cuP`|h1!XbkoZ{cXJ(gP3UBoA=y{G2ELG<#maz76&hRHae^s>6U$Z zta3AzrF^=c3$xoBiT))Q=4SiX-%fn1prN$cJy)_$P4iW^{U4B-+eWbGqvu_XVMQbn zvX8WUc##O89(`ca%X!qHib1Za#nx3}hSPW20Nwc(m4{$nT~p5{PQ^B%VTpA#5Uqc|_JpKjHW zrLfUkTB(Fgq+wEKn1_5w z{$ft+BZqJ zD42!-BK!273^SQf#qZB)YSfZRT0uuXrj^CKDqAkiDo;5ZT9ta& zOfoH<=_$&7)y+Rwfn+XYwzrqK-(Lg`WlmDbQS$Bu&ZMNf1yPcK2g3j+Dt#t+1}6|o zUca6EHhAv)MGkC&XN2^>OC$QWqGLW+_(%)ApqNt}htOUq{umSP=$DQonS7|u;ALd@ zVuLP(s5J7l2jDRgb2E1SaAGy%mqAb*k0xW|tpQwEZ)awkF0J}jMqMcNNIPVdauT2) z2|rtds;azzz&3Heq#jRXC!d?r=Kf7v<(Du3Ci&txF|rMkiq{bBRL^F<$M0mSdRf^>#s(m1~{=M*G>v$m|{x_fBV|Rd(sJD!F9i?9%6#BzgS26xuav6=?j%B z*$UZnnV4+9TX;#Kr4psseG}m_z)>JgF8+=$Ohp!vOy9LoH=dF9?wcR)@gYR3XtEt> z@nWcy+vGK34%aIxY3oodZ`H|m5G$RZU_JY5)BOv!WEZY##%mh(2{k;h&!yX^S*^rt z+ENp{2|2bgB|zOgwuyU`of$?zqok6wX4WKx)`Ncw-w7$q-7RI9QU5dQDMXC*mWfDw z1R9OYHU(Pi6i%eAu%4~&A>|w{<Cj)2vy6=3fVuSjR#6wU(gG-Zn5Xz}QSxB2PH{C0Oq%R$ z;&bbwEU||?a7s7_t}AzDEcqzKJjXht5$}DP6mWD(m_?hE(=8UZ;V|IesHa zB-J*t^*P^g9rW8+kYCvh-uLTW8dB-@S6!vq_}Aj%CjXpnH-6v+0e2Zvy~29T$;O*CRYmlM$@AA%+0&WD@I0D|rXHyLs+x0V1Q;1@{Uw95Z^{`!%cLvL zfIo8C_9~%rUs8;YH&tzNmZO_B2>jLmgKQgh;T(>fUae?!DhIqFbadvjaR6<=$1h8~ z%cxij$#Gs>SAQCoqoU~(4iH#CMU{GT`er%+T(NXTtE|Z(=gS{;m?^o>Twe{&nz;rZ zy84Q4>$DtZ#=PJG{wC}FYgdE5fNUgoVK$|p8*;`+i=5Qf$D;FggEed5r&xq-DwX2yD8oC_Wr)XQL zy3)bDtM0NwjN=V`sbq`GgblB^FBHb_Cvz@DbE(qiR>>BT?~8E7gCl%T2r-hy&3 zujwsEhKoO*=3l*YegJ^gm@2kkq2+sewC(<2qRAcy5pTf2#4_o}D_62#IAAFWQf!6M zclpO$QX`2FDmUjOi1X#(HEl~!>#D)Nh)XQN+0Q6y#@OXka*PoYg+!Bvt`#beb4F z)0D`=PU5?5^y9TRVXy&H>#Gpr&O>u4=Mn`f=unfwY>ES{;~5+WPd&4fay`DTJ)x<5 z%_!{H?Z1g+-U?ZlS72PxDKd{4HLiVRJ?zn=ohAZiaZZf0pfBeTnxHS)ZXeQ1U+xDd zd|T1c?tu(&si!4*?b0b$VZ``s!n4&b)hJlD2W$IKji+ry1ZQNsgxR_CKmo7`I11W( zqFOuJi_@q_v}2#d6mOjOIRMgVH=FWFS883l>Fb=K*xTGAf zwd;i3JVMbT^;2%bL3`1xcMIe)u@@&z3kF;BtC7Kpq+jl3PJ-OeMgh5|D2Z?F-RV&H(2T+ z@tTVSZ}!6AeV@$*EeQjDyP7Mh2=|JKg~i0!PXpsngz1x58%yl<4r$AGt96xPZ{xpx zrZF&i4O!>+3QD&HT3vFyHS}Jvrdlwe3hCxdu0piUOUN(m<7i0i3(H-7XIhEcOVKlwFfEJ?D2`; zfTG5w^c1r1tKc@oZ>Xz+%S_cr1KYJgvl2GarzD|QM1qmj8JV&EJ#Jo%qE9kvUij1(zx%c)8J1x-CUlmzq8$1uv>HWMRG~p~Vi^ z4_tCIT3~OhB%~A*&GoSc4H&n@<=1gfAQgWk#lt@<^xe{0kl727b6>1R5df`cMUTu< zJ`sQwD>m6ry{%9?&gjeK9Y0b5*zY=Q@+O{o8K6o=riM+Yq1!-xkC(>cO3L2dU|cfv zCzWyxYt&F_#QC|eNj0hr@tCGN4-ZNKt-(L0(wIXg&B4tAxg)jC*X`QbF%0;*BSI4r z*#J!XX8hFhWhjGjxlq=S5{q_b)Vrp5urLANuYI3Hw&^hs_|1!uKd@asEch@8*xs@E zBa!cxAQ?NBWMCl8Ua~Ry;(x*^l%6LiZ!dV9E5G_|7rmsum;8N`YJn~~YB=Es<+zNzpdPS|)2u+EpAR%%a0~(J0L8H1y zZdXfeAEf5_nn;R_S5CQhf8h7m7uiYPC(p=v)mvkY;{hfAyr+0ZKe|WckXydm)#&&s z>zdOR&GcmQ#i*p!^DOi8%J*@vo^)ckV}sLRYwAxq4%_G6PQCttlZ+Qs>88ymCP(M; z&GeUjWzb>x%nf;nh=OUc1r7cz9XtJNVu(KOxiPDIdk~oruR;moayFFi83fXpN{?dd z4WEGg$Q)vT)M3BRm1^=44T`7#oOQMhS!AfwItmZ%+pZkn<^B0v9&PX$E|88848awd zz7cEmX$?gSzQ&CEX7(k{Fw#N@vExU^JE~lWM-~18i(F%irsP~q`*ggLpv8GqZZu%H zIOSW1;}ziT$mwDu$^&zRq?liJJcv_~W`;0(F9tsVCQ_3U-6&J|&sx6}~N!6ctA4C$%ChOhc}W=#SFu zC?)khl3i8%URmibKDgVo$`&YYo8dVq52&R9*C*F}RU;z9s1mgkU0 zKrD7%iHZR0w1Qao##UT?_qPPx4KlAQN_X{|j)-TiN*4sQU>goZcI9}sv$elV(y9dX zSin^(%ywuQED!?z-U5?2w5;`mKBxawH&S0)`nT?gc)O!!t-YIv_y`=*;$ zJ&OTMf2O~SnTp*oXCh83!p;1lKgo9AFlrbgvqodTIwII9q*q&=HrvF*+w9=U%yOnx zk&*k=HuLSm8*b-r?zz*rC_B~n^XvESPK!}(mR!1JhUqEJ@o|_wv-T>Dn*cA!1S<&4 zES4Y58Ul7{Cpt3DY12b{LFn9pX*`;Lq$e5c{d0H$1xi22D+IB(72f;JaQMZ*C4PEa z+t3WW>|aJUVk8GJ;J;UPc?Y8>6tm5}7R;G3dim;;cwn%x@f*6r1upuzKP`qX>%Gpr zDC6^+a;=JG8;<3Dmk~NxGUzovB$;m_xc3{m+U1ruz#ddjLZU&m4@7aB%^R+?ib)3~ zqjr*gun>LZirY&sPj3(uf&@E!`8@|-kW|6n_&y-El%cKFuy!sL-&wM?GbY`a#8EADswB~#z>3A< z;bo>}kEy0P?qe3D*d?GPfQ3(f=}gI8Ro1Zeb5E$IzcHEBDtd^F82Tld`J2`A+Vfc8 zGx}%P^_)u$Hr~=LtUq|mf%EA-|9Sr6anU!$Uc2Q+%$o5Wi06 zm7@bv<>zqyG2EZD?D)#e(@rCnP)H^@rot7NT{rG-j*UM7xlxOT7PY+iSk>naH!8w2 zFo0&(1geP|L$zkaHr~-r73NjEGI`$3AUCA(c0{$#z7t(#H}WSMyT3weG1az#K;8RH zI$#tw_ny6%by6e;kj|S)@a73S8DSNE%|>5>n{~t=cSKni`SUMF`$GGu3sXEXkBQyX zW0-rh?BrL7RT`WIJYWN7iG>Y)Bu3>RXJ0ZFdX6fMlsYGZmbr1^&Psfq^G!VBsCaWH z!8=s8=Qm}tskUelj3=F^+!lyLtpRd3i3*bLQyvisSV<2a53u6N%=LgvbbEk|%4WN( zs?Cy_##6vEseXIS(FsSNCcc}uDb7x!)6!njocRNl?thYPz9+Lfndn~!7ZCC8NHAgm zwMJa0Jd670tM-2_I3;Je13)t_YVz6j`vvtx{Me&y4n zS2t#_ba3`o4VEziT+Aas64b>_=fs9foLs5Yd+WS+-y<1iCbmG;QV$rgmz~yWKul#8hbC(YiXdlVJAjB9NGJ#pfBnC%+Z((_qv=pSklTlfryMQdp> z$Kc4FJ1u6|9ea;5+q4gq|4H8V_{hCVbz!pZlyOIBPFm?F747~ktujx|@&p<%Ga(vtKV*UazD#FPFKUxn8@||9Y1SSPEH8gGmy@bV zLHz(Q+ll9y|Kz+~5<)lxAjRYt1G&DF^$rLDh16EtEwMZBI5(|5HokZ9E|3*hy6F4S zTtrDB-v4<&{+58w3d-}9ZW9+al=jesB`EG|h~Hi_QW{r{i8J9z;_;*fDogBNEXrJV zhO;VN?&p^GnZ=LmLu9>4FqM~kRYW|5So*b1tfdlQP3;Tmg52th_RdAtPj>Vp2krEq z%NWZ#FNeVw)y%%nd3~e9^kcH^JGdvvhJ{p8#L;mPBQlYdpDEkKG@m|Ja2uk#?Q9LO z(}X(*pR>4x&Zcw)V{1#7h3lKkvrmcCCN*k0QWAej^WMzk4p8nYfbKumS!@{9#y|B} z8-M)WzhxvRroI~598N;(S4VV?zeWLq=fAuGZJzr1E`UG*@Q(|`7#O3=~J*-sKx=tyM$`iB$0>{!b1>UTlD&Ku6Xd0B7eZz_A?!hIcxVjC$J8e*yypS9b-lmFU5#`5?_BsMq4ome{04l zjZ;ednpRl;536Jb3&RNS_KXC9eyqbVfT74ibTuM9fIV>C~W`v5nlU_DBlN{5cLt&$C4Ms!JhDi9abMs zyjhiM9Fxb)N5yZBf|}oso#){B`&b_zi~8Q`-tZfG9;38{9OhceM@BD756}d4ovZsu z8oW&6hO+4C7|S-`H*V8_LMh`a$*l1;T!P;b3RCr1uVhh!grlNhtECR_g{Nt12#LVT zaFv$s65GVG1VrXqHd-Hx{4FW!$+KyLXS$d`cFLO>VNXn69Xx!HYHJjef)I-q+vv<+ zqLaR^^TZa(#xl_$aCG>-DH~v0UA91yr-tHG@td|@S(AeD1=cpf^H+v6@U9ioa*Qb! zdcEh4E<_lQd3XxfI0Y#` ztw%Li+H!$2Txy9&w9c`3$BAS1~-xWX8cDww^b2{sY_2+btK$U2kQ_G?W)Pb$@AS!=Fkx%oA|EgWGs<+h-F zwK}0iSZ>YkZ%gn^fm^XQtM&Ioo;P}FL`6zmcfNwmuH4R{oXFb=P3 zCLc+oZLH18SpHMnk6H3@ouq6QYfPw~2wJTguJ1GdbSSiKcf-w zRo2F`r;==Z9`F@o>nUVzM;2S=g}&~>^QYiRaS-b`MfG3dVx>Fcz(w&gG)!#qLNHt8tRT zVq7I+AjcG59vl0kgGLemut}fqnb@zU0XD+X460_HZHJBkM{wHW?jY}Z<_ogY^c(rc zCt7`R;_t1~9jb$-l35MYBlvNx(W``(Yl`#Oc-i>DN{V2h2M#q6Wz4_lm65u=PfJId zaw}L(8B8{sKK>q)yJ`G1G#2gAtgD!a_Fn3yS-Ewi&JgqqXN^*VUbL z43K2=G*B6vYMrlTlctdjA{O@wRdQFIMGsjR#LE_g(CCPS34GhjMUtMcs#g-RiMF9Vb22cYDn2t$(O^(xeM(Qj5 zI@hpqt^4!diq!3{l25G8p8;Pjic;u;(=Ma`EIeYP6ojPBY;0q45&ijJJ~V)3BJ+ zL!Cr|U)$6rmbz-z**9+@cCoX{6>CKwT)h!Tg|8C)D@$q6Y({g)W$o)uU+8NVjdcx= zeQAuOKn7l6l=Jx$uab1`gEzbM7^s{YQ|*zJWGHGBa^>EU*T8K1CNt!!I4R@?gng@U zD$LO^;jlLfDU&>`)QoB3f%f7PqC9lXthKsH8G#?kc5PZ;UF&Z4&7SYI0g>m z1;4vkgEMV#A0t~o{DxdW5J;0@s~`ImHkw-^Wh`%gVw26#MO)p6c?;3R5}|_lias;Z zNPnyX2&-wNe2WT~8#oM?#8ZlsOLcc2(AuZ@`LrR-k3kn|9bxoc9bOFnLIeIcbZ&GD+?ZWpI&p> zGbBX4g$Er5fN5!F^JIe5#0^ILo_YBw&}A!$^D!L=23s=xW_oRZMVqp;NK8-5sEH~3 zJ&G7LEH%Wp6Tr|oL}(#t@MrU;N-N~vucrA+w^O7jG^#7g2?Ak`hsQamGX(TpZFG}( zG>Sh;L6>(s+L0ckhiVZM00&~wOvm!@Q||ui<&kKpmcd)LBtA@TWd)B}QVd|>k8^$t zOsAF?918t7djrxQL2%F6)FvJ)Dq`|or;P){bBE`K^EU|8ZgJsk48gCX-#-#RIz?k_ zHS^3kl8U}@Xa6BbQNsf71*`4%MSCTL;M6mtJ{dVb zDxKk@5OL&|6WxXg(2A|z9`iPmuKv@<}DE0%0E}BaSKwn^^2*^rKN-eEKhWpBlx9Le#E%l|Ur8W>EJY!oYLNw~snrS3$ceCrTDuUPfr??uBG*|kQ@hOr3g z*H)Oa>6@uI<(X6-rVsdH^iw$3t+I&ChQTL+;B=O*>dBkiJDGT1|_MyN+3qfKGhO~78`8R?st1<>XUABdoAF+POY5_Pe zJtZfFrP_~%+IcjRDueHNV=LY-NfwkfO7+s8zYzuV{ulj|wxE9&AX$X^ zj9{S1##9yjfY>dP6!BrAAC}Ja-fRMqOFPqi_d+sD#m@5{E@soF5KsjoIea{xGr*tB zW)-Sv<-2^(jV%liFAntJgvs;OUS$Q@b3A@druqVeS_zcMG!`{ zsbm@xu)>n!m72SrHo}MM3$t_Su>iBYP6S1OEK8}%_OZ`ts!6FD12U;zDhtD8v@}QrcIYV7X>e$9(;?*CeMJp)x+josrD#sDf;}tB z-nF}0&Nl|WQBCXn_XbUP69+odk(y%=-x|mf&vwU2MYZ1HmA{;sYMgDF@tm`anKzk4 zBv85|OS@xa_-VqJ?9=4&uubA6bIf{r7HnQ!Uh(XRaJXuLJK{%OQR=uw45fv4Bf!e-;4&xX^UP3RqaUQw2jX=IG= z*iSnUk91fF`^2`}QsDG&N=-J(lZAww!85$Dajkk4{I^eL!HMj)eQ3Qln6GblOqc&qcS zCq$TcL#oO8jp(69trqXnTXN;x4=vnlz!s1hsM?Y4QgidJXp9 z@7GZHM)^Rzp#4qGk&SX<`aL`I(0%(;UXY&QdkP9M#}*X>jeUSV+i`bL=VM8Pnff@& zc?qTw#YDhJa#Fg{vo${I!&pJI)$)hf|2R%GgJ;j1%TlY*$4VXqzrB7;#-!UN9C)Xh zo*5G7S}!^n4J&Yv_QaW0?j;k0IL?afz6StSx~~X+`df2-cM7)_@?CWj_GcQ${L<4{ z$iZpTtdap|8}p1r|6^2^HUG9SWLG)mg%0vPqY^0 zU6$ zNPDF!`bd9Y6k}7v@_XWLYf6uV|D-Bp!XaKHTN>K*g`=-5v* z{HZ_gx2WXMrr`04>gY<9frkeCc-DwmG#0vd-QpJX%*b-3AaHSbC?#4O`E`*$iccF% z=9GtVuw=L%!%!MUA0hp@ip>h)|6U)!y+8L(@Y*+q`W-n}Kr5^P)6TF70S$-}&hq>v z>#CO3Vojz%NY8)owJTAE$!WMGY`B(o_r2W7fd&p+4J?N5gwY2-I1T#lp_WQ95cfoN zJA-1v+VS#+K~(m{9#(xx!12}Tl{eu$Ggp4p^+L3#+B&y%vnkhjh4R8l-W>ELdY+GD zV{@`uvjvEDwtm@WFe1sy4N1f!ExNFmbB6QNg(_Ro-pFRhppl@n&N$w%jo%6--a-65 zXGfdyEfG~F=N39%+FqlqD|l^d1&7Y%lddBucNTpnT<>GZA;HigA5lK-E{FKyLEac+ z*DGi^br8`SuQxNXVB`}dvy{L8W-&K{tVfBo`+Z@t% z?HL{(Qb@Hc=(9~?9cX`MiT((%`W^kuQH@NpV5)A6(jFw8I$-$+bb6Cj9{<6+!d-p& z^^}qeTTDh{^lfP8R)F!m;WKY>W~6i|MhjVO*c!7Jw7KaE;v}tNB?ZqP;V~L? zic&t_JqZ&YO34K5ah2gs&eR2^I|Z&UkwJeuLVJF^>M(t;O)tg$biU)Zh0ci7M-3NP z4IYvr@8P2`MC)d9Hisj>z|@bo2Wi48>c+>w^fT94A93D^29*tM}fzdJh<{^EUYf5p+*#7NYLjE{O z?M~puv8URegDI?9qE@dEVamjFf05BryNxR(RU7v74VWogjdt<#O*a6Y-rT4dO5V-D z#~nT{{=Zs)e0rrQDP$JOL|4U*?@h;sb6Bl3VF{3Noqki6zh< z2?Zie900GWc}WEVa^fZxX;*yubV(hEC1~9O>-Fh`$G^=_R+S7dn=hkl71V-}xvg*3TZ#+f@bUSq(a@yKv7if-JxlmAO z`X&El;|Flh*@wmbRwHW1uWmAEH((zF`n+mi27Gk3mmTw|j<3z=H|A!)xa*<@9lb!3 z0X%jvQ9Wlkj!DXknsZpJu&hvFVLVOwXPOIh9It4J%(^QbC_?n1MP~s+qs;UvM(njX z{aIbLnkSc0fW)0kTqy=2f0W??0a+i>vN+x*)?y6u(tyv!`B?gc3q^dn{g-k*m6K2P?&3tFUw0yAY43bGifuytiyFi_jCj6lGqAd;MR;8;+6^l_hpU|fmu1z>l4FMu}9Qf=`utcIk zaZ5BZglnuTHMkxmv*#)z2DiJlUD!9qm}$dff@YhI~!{1$e`Ht`~XMZ;{%1PI=P$i+=Y z*$Qf4p@%~d$)q4~gqf9XB0p)*4m2x5XJ4K;q9SDta?>Am7?QZBJc#gu1|ov#hK};Y zuL{#Jd(sae;@QXO;%=<5cY*>aTY3T!P2cvhgAC;(z%qhJK_`{`Kk88#aI(815!?r) zifjMTy5k4O+wnMJTfK=iTgQ>-4F?dx?;!FI4~&C^S!_^4mny=i6iQYag=lEH6Z<2q zQtjA>hZV0fe8b_zq9H;?1U15hgAI(*1sRZ<<*-;~6RD!_s@-2a4lB!)q4avmn>aE6 zCG=+@pFLR!)W&LO;OKw_AyL9xOz9M4OGA=4sYeHMv}b_ufU-a&$ea^=K%dXP#t4if zt8FX*)07H~jy?C1&&%W3nmn7Ql5(M)RN1^>l0SwQo_!D)9N0#C6@~HE+Td;S)i#tNm*V*YHc)1CIx*j|N?3h5RZYYZl zqm#@uvWimtRzsnI%*!x>AZCZs2V6RObMy0^2eZRaBbI@Y>+{azfQ}wp(cY_;fxKsU~Uox*{c*f?et!`kftv@a>pPxqy#@*%5I> zXWfOh&2`n&D4%S^sdE43uJIk(N=X6_2#mwsYm$W{WbE;U6NudO1%Za(3fVeJb%5&V zN(lP$9BuF$&^z0Xw^al}%h%`t7V2CK?e>%y$01|lwnN)8vND0PNEN(^Na;dDdJrt3 zw?n;#YabvZ+8KeB1R$^j4N$l_&w>;Bmn93tf9BMvzU&f9>Ie z96AttW-&ao&`%cD1<`3U5l7sbA>neaj;S|LwQmO}we6OIT96@91r-e=WNavg<1)+m zAaFg9x|ppOYUL(;=rLXiXoLxvp=0jXr5Jtyrx+pODwxtc1;3MlZXk9vAQvrzh%9L< zw1UYQrCP@UXo5^+cqXDy(suxXEQ5AC&^Frw@<&hqA>iVB3B8@v?Axj1ploV@(Uy%; z=VgH3;a+wCe1t6_am)7GqlB>@0O?p;w;16@fBrQemKX?~ghc3Bg&VQZP!0wzP#jzW zG&}OM?&j90lf;w*5hW2=vZk-z)_HC9ar5Jed9mj2Y4&qr?WCc`=EM1^lI&rA76;pV z+-D^efi3DX4Z~1_H8s1yLS8K>6j=Y#OAySNdLO|MO%h}S8BdL8 zE|0KNE82%+^3{);H*Ert5oCxnP!lMuOQ)71K=x!!^-pAyB=ZrFD!N?8daow-=VryS z9phLg2=I$gFy_qE7O4lJOWHh?IE-Lw&_m7j7!Ea%bgUkeQrK!_45HEHsyb)o(8Uz> zcxWltP_rZv4RcT+)yl{?(AP++B(scg@1%;-jUG6~fGsFtlzoWAuo{qrGL*J#nMm+H z*2%A4hW9w~DABIjsO%$*#m4F{ zgN!Bzca?;)5REjMGh-$tu?$>OqU})QBttgauce9;CPVa#?i0WQ_IEj5fT0bDY!f$# z8s6hTGIA==a3Jz*((#-@ZUGJw=^!l(*E9;r6+U|$$UB0^k&I6YGGxSu+yO-JL#r(c zV4>WdanIq0s?Tc+?+|3eL@2ta9a6AChA_0_vuczAF`-6-hyBYO+rhG&t-S(Nq^)BC zTw`<^M7;^8pBq^-w@AF8H-*pF$#CJAa7~HTBeTFIWKqKCGPXmeLhX`O30Q#Q1#dBf zdx;1aAQHI7I@N>yAv**q6k-E0uZ|;6XB^vbhv5QchHcEk$E9x+9dfELW5*Uv=3A&{ zX;3qYX-O7?Lpenk|8a=@kr(^IGfB~B2vBJoznNQkcsqLzkz-0?hzxZrOcUS?M8KMQ zv$GVtg3C8d)L^V3nTc8dgR)#Ru(Ur91yaywe*xHf94-Ym3^f8Df&L$e!`Ai87?H=b zT!M)E-acazO%Q)3=Qce96ds8u&N=D=7qSB`rUr-JGct>m26VqlVi|ECG&PlCq#TNE zPcv1lFne(JOhJdhK1{;k7TJihrOWFOZ5Rg&^lWWWKHRHx;zpy5!D4M#M)po?=_C1k zqb;zVHKX@Iz0AJqG#?0|~S-Q;wiKWm!(h&?FS_8qOT6;^_50hXalQLd`Bdrry* z*%DOAZu@%oYY;haAvjws|B7wp9fKTI*|CoY`quwRJb`ie>3KAwW9mU9BZxbivVZV9 zGRuhjC`RaXR2@D_2ah&f-TiE1q%WeqdcgErS;C+XvKR`qXJ0h$gB)-;+2Y-oBZ3fY zv;kUU@Ld$cBumY$7r(sOL7nK%bno=O(Y??91TrgfiUVFC&)I@SNRA+bpu{6iV4+Lb zvImz~!7;zn*5j}u^ps?Aqh0W+k+x*i817VzNRbf4fyKGUJf#HeEl3qhi@s=%?gqu% zA?Eaxgf@=!#x^nzFilBeg5cbrucmY01uo6{EEpVvBZwGwGC3R-tH5Lqq<9Hr4*Q4M zt=;-5h(0n-w2w8^Lx=R<@l4=I!UVU( zf)1UuKlvSwq<90Bf;<8D6j3IOi*xd13p!BTVGLzPOaE>YSFrdXEZgCXvBD{~WTv?u zLSfdI1qVdmNq5*><E3xf> zFK*8RxV&0CeONvAdH0lNQu3YzT|M99ArA7S?>csFBP$6VU_d9)x4^85(v3l;{x?hn z*#|jB(4<#)0G(Md7S0|tQ{8t6q(iU+6Fm&CFqm#kckXxodQ7jh{Rzz_+I~;;b*JAE z|DM*Wm7v;ybD^zDJG$YhWpbuTR7vQ@mQwNZgn(saX2C#GIJ1fFJ&QYzRXH$=4J%2& zbd)XEH;^#)<9ckuvn%fTq<9NbWkqHXXVcVe4{cu(YTFex)Xq4`8H@wCF#F$6Z!Acm z=+pEcJXqjsZUt=9L=0YbBnxB5A^bDjUxf@#53!;|ubg+LJOBQF+kXxw;yQL^i~>5f^vXevY<|`mX_r6fAJqeUrCic_Y;_gQ(N^nt%NpZuI}Y`)9wVZ_8*H zU>0M*VMLh#OVI~F=N(Ktae? zZ3MN|81C)Xfr8U2<})Th48no3>o#PONunFkw>q`o5&e>g{@=Ih2Y*7}{$HZ|x{dps ziBDc!51^2^ahNP(?7G$nM8o(0I2K+Wj?liqi$_4=D1XN0DI6e|k?RkoUto=Cx$Icr=J9mpLIm_1M zr4T{pjGyiB%CtL`Hp4<>aELB7`;O=~=v}8aX#AeW?`ZrF5&aL*ZwB>u^d}7rjz)Bs z_n-aW*J+IO5hBQYDlt4p*t$<20t%xO-M8~@IG~AGkc+!ArexF9+JiFc#a}=D=Y$y>*kAXy@Fq4>#s`xWleLO1LTy5BwuD5o9QV zhG2V}4SC^v>I|Ml$Q{h!81~kBz3MRG)(A@@B{0Ik?M}8Rj?C%CXaAdmL|qN)MDGXv ze$bqW=SFJ*1sT~U|r zEwsA^C|*QmJ>o%pI@g%-tdesAx-q=cryvl>U*2aE+gb9Re2}ed2~0$TP*X|Le4I|qEoxmxD)@L z_`ROC3pj{+U(l95Tm2$3e3 zscHm(Kyi*bMV{rkFxdcB(gZSeChr~~BS{rIKcI()dXffhEvq8G*qr{?TC2dbk8nY^ zhwy5OL<$*eHsVhGPTYy!)0nx?IYEcai$TKmHj{y$G1IY(F6|y~G<^H+Kta8X z(bu50A*0tah#-{gj0v%jkWGY!;f4H;8$iLQ{LY9JTO)&f`(%h9NQ|`Q_2X56V_5l+ zZi(DJ7#s;i(0Fs=WhNOsv(WCT%woNv;K=A8Ju-p-SWt8PV(s4{quFUKd^+=*^W3`a zdXE-DXokggas(0S@X8k^SajK^3y9#2;RQDpnq8VQ_2!xtW0q&$rIc#D`LqSz>pIWf zKF$!N-Wq}tJMh*4G89C*ZP8(@w((BtaTq|{_u#U;njt2LzUG!AWHI8NO`zaF2fncW zFZnG70cc1C{o;X!;Jgn6#6Rgf!z;#{@Hm3a84f~9yHMaAM9~2W2CC{B&j2HcpeG_I zLrPn^3}lBkvK4bc^pjzyMF?!bDfGOsaig@LVbKbhX0J*bejHxpjTjtH0S-sL*f-Li91J7yJ{$-H3u#_!Riw!L zcE&84n4lgAREAjQl|98!&7z}BWx-`vVR4hSL+1H(BX^A+x%VK;(6+zDs%)v8@13}L z>e0=6;AUGE*BI32=o+a^C0&C+E4Qt1tqbW;2w?4NvfM0t7vShzaw z!<(bwI0ZRl00BtNYK6`%9zntc7bF8m=bH|lwG+3b+5ASAg-sS%4C=z~hnNKV5M4|M zB6{V8bjwJo7gpIKn9@4+wziM4!I9qAlm|&n-dCMLw(mOgzlJF}~ z4|o4O4)T<-D(&A0m3&fdwD)TJ&PCO?Q8#H7RVw{r5 z&92okQ#E8s6qe6|Q}XG@?4C``6bwQ`7u3)l5HkAko&WASe-{MliZ2Q)=zVw}1b0h4 z|6pC`?Ok1*oX{;o~iM9In267%14`P=L_nsJa;2 z!4W!`&@&Nx)R*YsX3w%bHFQ1Yz$v!V25V|YS4PzjXS6fP5KWr6k`nC3Kr0CN1cYnw%kr&6gQ!8t1jiE*8B*_71{N5{@S0_GpdLH+;o6rC%b487 z6O|ok$39T45LT4xFA}fk2mNwE5V}~$Culgmm!5D62ZX+9sQ3tU!~Xfn@w9a8fGhb( zh!D6*C>Y&MgW?``8G9lCF@R+_wUPj092z627^rWEtI92|?%36I{oK z59p)HL8iwrblqA>8nMh=#=?}kE?^0x={rmUgt;h8-@q?5Bn#AuTBo}o^S)Igh8=Q4 zM?=*|m$s=DQ6>FuY{D4F-R*A@X3IVRM|{T~(my?3P)3kT?8soz;YjV#Bt5j#S8*ip zh=ecbvpx$%UKu!|n()t|_j&eA=>mS!9jH5fGm>{As(V^R;?ilxl3w;P`fUn_jK|vwQnI0PmPp<0R5q`i3^04Br{J1@D zJadg}yx6yQJjl-G3yiqxSpO&Sw8~NV`P`7od92c8S9lDs$Iufz3~y_srmf$F0TI|U zi;3Yg@6qyuGwMjJOa(wGFI<>wUvprAqn}P+9^?7S-?ICSj#s|EH8K+8fg{xL%RwOfboRM?Mo6o@*UE>9*qA#n=LZ2N;r+^HxHN&+*CQpX0lmxSRi6$C!W9hVAaw~mlmNC~d6=u=F zDs0eoTBDmVY`kha#z6)vH0VAIL{ycKR%EmVnR*l);~>E!*`0?%2Kj5@xMm!8lOfLC z@V(u*LvD+&ky%NQHn{)5ecU4$%d+g9>2h2fjjDv`8 zP{*Ng&_uILNn&6z&!GSo{R|eqZJC!&+~_V9<@39-)_{cdZ^b%oGJPq-60yk~oq?2y zFc*u!q2}dqK84c}-psur%Ye4-GqQ^z zs{uq1(c9d!6W?^$SYOE$Yxm`SD2V8G$2dH2gtiKq={np&zu<~SRs!Fa6{1pQPRTK3 zooTnK+U8fWt2K%$&p5Oeqk|zj!Y$N&-l@Mo14r^c@^)(Bs0OG8c# zZ6{Em%ZFRKfoHC51c-t2{rJPYGWB>XbsR!B2uVj+GzV6ZGfUC99R#lFk@a|>A#tRjW+AZ^eM=cSR8p!fB^i)Dc8!7zX&7k7l=^Ia(k zPAP_IAcYSYDU*L8NxZCc6$Yna)vJ|Y?1sI@?U;tvl!`Kx*;fAowxjBa93*)kbWbM` z@(vTm-T}$mUE@&76$;GrLw$FI47X4EgeX;zbUZhnT*raJLk~3;cY)vGw4TQTJm%L{~vk#sTt#ky*go;qN|(c&>*&hn&s|4))BV%R^-r9k%z(GVYd$ zokQU6*Nj7|?pv473LeK?CN9+Mo*9Q)z2{>)ftg=>_(apP>=hCZ0VkKY+1=5 zECvyS;BT4|l-`g$yGSN|3sNrBanCRi^L3P=ptT>g;~A0X=SDN(H0}d1yceVHwk$ z0YNBvPrcLqzHYOP7%?B-4?aluso8OtamJe;3K@sjF9AdXQf$Oaf{YC}IkyLVk}c7& z&$;P0zVTY|`W}Z(qva)uJ47&f&+q`D69w*JLVp*}DG)vws0ZuzoFxHQWhB%{mo59< znPhl+BO?)xO+ZCdW6wS&STq3?DK^E0(hxEx9NbmT$fb|8PdDq|42z8EV)c=6Y{ZxA zYaTdqR%PURif(elZHK4aEb5v%5rDYwn8~o)o83L z3207yYkk21>_dKcU>xFQVB6|S!6DFm?aZ(YspDLU5tx<3%?Tj=!Adsr;%HNB!0Dxi z=ul@A*OyJdkQ}=K{cDp|Ir$o3f^613fIUg)3Vd&wl##p-bz#Sr#USI*S=97I;N02L z_1yX=Jd4F3(R%POam_fQt|9++o1WqEdj}J*%sHNDj^YU!*#~rB?b1j+_#jg3H$q1P z9$E_4GY)-aBNx)(z&;4J@4PdTPQnv7lv%V!y&27DMK?!rW*+7>aCHjVhJ`YSoYByy7t z`$){<O1A+D!keYGDNLV!j6zPRQSMAcqg55!7@U7=XB^pdQbFw&p3wjJ1iZe z6L8#xpz-k7k>J&E1f_vLn=%b~96=o1Cf{U3VGb-~xb6a<7IEaY;<-&PypqwF2 zYpfe_QlI2U>>Z7l+Jx0&!-K_ezg3VY24snr&dV%!DIslA2{wXJ+U&wTJF`x@-PO*} zN%&}a9IW#}>}oe0>439s4s4r^Wu36V)0uAQ!O#31JQ+8>emkMg?uH%*rR~EPxG=Df zJV4HBI@E9t%Rvw{5G>f^LhP0SHSlnF?(j%EpE}M!$%lOh4a5C;PCQqt*fI1brTtLD z=m1g%%n#U8@PofhJ;=Q>8k}K$5SvFG-$Ex0#(Tt$PJ@W=M7Ke=PK_MnxJhcUG5yJH z^;jhuv)nVyW+;{5^3iVFE2QAoO<0Cnv$L%;v)gov03Y)kv%z^h|L4Ozo^1;a!LU?e z@*d;~wCSbW!j9i3c>;`Mg2?*BEdi^e9{!NJWxM?GjO^n~Ita+crtQVv)-*Z3Bm5rm zBKWCG6#|NZeLF}GJ6|#P;pGPH@+sJ{hnG1{U#NA8wy6GlC?p?;hsoG-`hTo9;>jJ_ zpxg98#pCEqx7%8Wk$Eo2YWFx582QU)pxNhUs8qq68U;7m<2w z;aFZ|gzb3ncL3pzP9hZfK0FmrBeu7U_sQ*9OQ3y*H18=q`O5Jq}g!1n#Lj zO<}apU}_-ttbAiw5l1NHz(Xd73Bi$IVs_Fghh!mIE&6uOh2%}#iYNCpQRwAO*Jog< z_~_t?NQd_xvucx#T}qO)O9_{8I8FA(M-UXAYsAwiK*R2Q-|!CKcnaNkmdAms9Uxd> zDYxy3*%r)zXidlVhaJ(Xu+stZDV*s>zR5m)*f6oZuOaQQL^R)J`88d6wGnk*TqF1z z$~!_#LmB3V8<}G@qmGCboMxC%Q)^% zxoop4(-YbF9eq&`zOPj)?I$2fInCKmw&rmr9Sp+=Up_DJqLEN$ODOg@lKIQ_ikV8( zHv7C{JZlCpMne>{6)-`uc5gFBeQ_67c^wUl5nm+0!MbfV%Y{7I@s0tMq)P$8Sl?GJ zbe-uw#R9ooG(>TzuY4TN7rIz%5ZU5Ix<6sZNw#Ejni8yJ<1@ks?e`~g zJBOcyo`D+A@;LBe#Bd!;A`cyu=y(&K6S4m3kFNE3j~CJY%m8r)j*dKKSi!e$SJcCW zs8@IFGSzsa2pleZ0*A-U|3O5ONf~5}gGd?2T&mXAa}kxY5Rr>5X`D1#zA)gl)Hh5gNXx(=vudoA9TP(1cn{m$OX>BNc{!iFb$X?BS@Pa zf`pzwwmW2)NXWA3G5L3Tm3X35i6|1`l%iBYmLXJv^f<#>sKZMe?aAxFqd6MhF>Kd| z*B%Gi#~A(>#8XceAz&ia>g+rYyrIXTfTCkzb&iR9IPD~tqh}ifM(T>QQ>3f{Ft*p< zrc}ajqvtmEO7s_WvJogA&&6OQ2!fcRCFhTL9E=a;gL&epr;%cZR}DPeSHg|MXKL-? z_E?O#FaFqi>FByX+*{$D#i&o&pRkd7)K3uqQjY;LI;8a>b4Af zNWd>>$3Ye#0OPP)XF(0|He}(&JA)so76YEaaJ+6PTjVH&RI4sM*<{VyHXPkhslw96 zd_JN4tD zIoe;6DmJq@S}n2k%l%$SgS+$pTB-~}bCjSxK%tmCIhUeuZjdmcHPi=xJ^Z-3(p5$f z$q8l1FgbIL7a5NNBgmpAo%kUqm;Xik%7&G^ZajB%EQ45k3HV8PH~(BY55#wNBiWliYXeV5=8ya2gG8<{OZX1~|g9WmRp+ZTT9= zIELL@N@YJ*C0KrFk=n&L43o!Y3ep4|1IDnS6>5wlSR3#C_B-@nBBtJGbom5>I>+A- zK;g>i+_I9Mu;bxde3t~kN1~A-Bk7=L#j|Dr!z(kT3`-U%BW-cCJUbXhH_lpfxae$l&^} z1z^B9nm0!u_Bd3VXkQz?_MAkg7>+;_O7Fv0*v z_bcTgf||4nRw(OthC^_iRcypP-J51(VoN;^KePh+N&&B_B2Eqo^jwr;|n+%ai>OfYx8Qp&h9kVyE>5&e!C zR>uKn(!9qZ^9{{WEc#;eM`y7adK`;rc$Hkz**whzupsjnj|QVUd8%c5ivw{cu}we*lp=%!6lpUfkOPj$0>gYg&#qRz%E> zG?CFdhjhyv1uM@sML4Jy9q?)91f@3}mV(YG*c{H_kRd9Xn$15LaB3?y*L%1gV}bd? zjsemmo1^z-h$1vNt|3_!<0CHr+8Yg-j9`#pgcRBIE`58@VA$;dA5u()Tgc~G!nwoY zbsk5AjKn9Fp{GQ^i|08V&n-Dee}TMFsylB)N`eM=2z@cwcAxy?1Z#uf9hr99sh>$082sJM%)*;AfXv5{HtGP+k0To(*k|(DQkB;_Q{h z#ltOm+nkT?=#SyIMcMrGT2QI)IWJ_QfsQ`q9 zeN0D#n&^SCe2qqQlL0C>TI(RRmIX_^mdGj9L4CR8@UY2#PK?8O93oPhycFjGu!qK~ z*wvTP@zLZRP*G>KE*-WoJOw}UPQ188EM|}N zsa;z4`0$#BoG)z=SqOH1QanE$n*rHpQchQU+9?!D`&&OxsnckP`hE1N3>NYf%dBIJ zzJ}U>vTL z1J`7NJ`z2SDMozxIZo}T`PUJo3WCLZQz(cUb5fHLEev!w7OZyaP~U;@(Y@=DK_sb_ z_>|um_jwR3E^lK8C9cyvBc3%Mhjh6pOfZx302IS*L{PZ+O%N3D-`QitcBH$o50-2E zx@1cNWr9WXjAQy5t1&0!5X*zK;EOsOsW#xCC=G`SQLPQV$x)jrm09tnbM`bD3u_e| zB9)rY!hWb!nSDnPBvfAeU(nY(?tvG~wI9j3g z9l`8Ku1CK2bc4fr^jHGr8cpJmto2bWpj4tIH!8+E{qQPg+jALlUm!gKaE4U@9$>)C`F=5h4IIM5v38l^jHLl^A~w|iR<>H|>Ot#Sad0#y6FMvpz+AGMGi}sw86Wxso zA|g*FUd&oA1qc=^(r^UKQBBRx@-W)?9TPhjaA?LvK}6_APacP<6^2|aOx}wVe_;)n z#;%TI_>rE4MqEGqzmMk*a?|z&hjUku9fE-3PGd%1GDIJ~XE04!3{jS% zFYYkxv|C?95LxZ{EDPMsKHUX7n1H^o5YXE!7>p}h=#z^*1-*K+>cpwR)y9Hk} z%t7t&UJYo z0w2!f=te-m@0i~PO$0aZhLmY^8AspzaM+IHQ&6g8)R081&Bu{uIfv7AJHDPg*T7=1 zjX8>QbNKaQN02At|EjMsfIgtd(SeN2-5PaSDOZozOwGDN4>-6^swf9>pT@DE3pTMG z7n4x-!$eKa3IsTR-FSLdMdKo`agFu?EOI{eo3)i$c&WltzQH0of;_=VMAhS9@Hi&Q zaI;r1i$tgQk#xr}%fpz3(2WLkqX`P4A=(C5w5m|%fET9ivQHYkW=eIxQ20GM5iHI` z$}+Tzfl=zH1k7o^84C*tHQ!80M3bJ+>As1t(WNa=V)Lx=TG2a{gmt#YP^ki$+7E|` zeftlvKc0vY+jt971s?`z{UG4j-oAmOK}4D*)l3S2#cIq>uJFN*Wi(+T&9f2)qjYTv z?Pk(uw0Royu7P#{pVlN~yATGRvC$MQ$T865#Tz$Mipu@7=g|0o#o;Mx7Wcnjtz zZrqPyk@huvyEyQVq;H{pn&O%+eGSUnWt2TS9VEVqGdSj+WFiP=ejsp|P3qyP1AQ^0=feBU?<46k!$tDx^U`J9D zE3{-cbQ=j(;cmY>i}&ui=bU@r>nd5Qu9CkWjeYyot3Rr)`_(z$IrqNU9F^g`P6%wO zBK!`U0r)2qmPC>1fs_*Rr%88%ola?m#C`|=)c16BvAm_{Pi37b#F@yNrp8Co94+C0 zdMpjiKW3}GhI8uo&Il*?aVG8+CR0{rE*xdldK~g=-LG4bxk*k@l;OwZBaUiQkMeoB zOG~v)7ru1DRh2vZKO>XjMkewUDI7^>H0;M7|9RF}y(xsldK^y3gsia0Tcu;D^n$!t z6jT#&h?GPoH5@*KbEL;1(v$Eae1)Yj4e4S>kNVb9HRvYd=rt;dEz(UD%? z&YHC(3A0n4kV<5#tVEPu+36^!cloU!j*v)LSVXvU)Z{7B*WmlggBgV`&MZg?Iij5X zh7Y_&TKEPq{ufs3>70!?_)<(PA5^Cu^?$9pQh>DolG_M69a+dSZFv_?f~tojmI*dE zh)mH$CMJBV%~nL`s1gyrf?gKh$FO=OYDic4OC${qUPe+xZY+z5nriHk{xS#=M{{9i zP0@~fG?HQw%LLhogT0Jki+Zuhq*(BjW@j|Iyi(8wGd2pst*FKs4Y5XeNh0(peD&6u zjYa*cdAmwQG?<5N&6BDTt#jikT_15c-AftL6Lv1d`g&g5LdpcC=nos>4(X3_2q2p{ zNdKA|8{sJ1IyjwCD{DFK=t4Uhe2oTuxiR?|fGRAr?&fH+i}c2#x7rIbHQvSlWT|uP zReIQu$h;pRuQK3ImX|6uo(L;cCiVf!d}2a=Vph+XQ^xUB?r*oQN9N~W;Uf{{afn*1 zT^$=49BVd!HP{^710@GMv$*$M?w%#{pjyeWE2UW}{IAl>v@27R1_wtO{&*2}cGT|N z(WBo{*Nf5X_amt{EB$MK8H9)K@ix=CAP*_Fc$A7yZC!chkIaZ~|p~V^Y_WTWMnRWbm!DNmHF3N2#91M8qKtR8fKrnG02SQ9(z2nYJ!Hxw#RC znI-GTAP7hNPTYXgQNItU6$@Qnr@Pv2L*T__E5}O@Ph(%#m-)Esl+pB7Pm<%OWko9BTg(I%Z z@;B%WXh*aUXhJNsh-9&dXhW2wK%{;uAH+q*C+U2Ezs)mYva**E35W7HNSxrc!^uJT zIF&8ug*aQ4U}eM+B`l-|@=qcM{vCHZ;z*Qc{Ru9T3>J&j_OB#lB0U>f1w_wyupyFu zhriW{&?D%A$gFtXN^F!$8HzXZxTUI5_a|8=)?GLx(jvVv?Why#nup4?n1?;ey*H8U z=`a^2&RkFy(p43H4dKesyi%^t*>wq>Ct{j;#CYh&n z5pgu^(M@c2y6EKaNp~X9;0G%FxUN}Kni|&QkZNKYG-T6<3ki#LF=FRJo*+FG7oF4i zx%-emu|F~}41#dPOINz_IGcZBk3%j+(a{9SvIXxU>LY@9wox>wq61f(s*rRpbo9ah z>MXB`J~+y7_GnsJxP()1Ru4+A0`CGn1=q~Bl} ziI^+GvnUvkLsUj6_BC{5p_ZtyY049xt0CgJHZh6xq^pZK!Zgjal!U0kzuMf^6gf9h z^~H?J>mV2f;e(vkh!{kE0-KW*^GAw)jlK}M7tH8IsLATkgOx%aRI|$%3L<a$hepmv&wt|vl% z3s>=`+}Izc_7=`Q%=Tc>;~LPEW6mwQQjZW$b|4soj;*yc0f{pi~3Jl z?I*PE$cOwp-C_nuIFcRcJV?I5GRlxCNisd*QmgSbD2y}N=q<~!CgPCiv&Ru5!Wd3l zLi8bmj#|%wtqpH**u*4da}++1$#|2ajEZt~JzwWK^9q)k_qvzAn18G7o`EbDezl78 zRhQV{Fh514BTd4=wOCj+-T_igpmyyj<$;-WSM`H?t4(q_ZT!#7_1KZiD-|pCBCGK@q`N`#CT(!A zpj2bg9#V+clNm+xv!Z(K{^M+S=W$jw>=wm7;&9@!O?4J&`iEzc*l^V>6{(x3s_G$Y zvBvlm(FgmlrjJ93j&x7$`w<>F`Ks2mHq4P^{dJJ!W1xhCk@kPxRbb;>u=nz9a^DSm z4wqoOFojAAKZr4LrEGbPW8Z`&gIhC5tZsD_&T-_=;Tnqm;XFev(9i})!7+&c+-Ew& z4_A5Oi{bfCfBgQ0g(;%vORZ25>rrY;D*T4k=mq&5%)@teawEUw3YW&f#L3fi=|tXI z$bOT$pWfH4)O|?n+_}MP-(Ut!IFdn!c^Bg=wwWk{PZMcNX3`ezahU#56}{)`F6r`v zNkihX3-h03Wa101rQJ|9cd?x*#*U*85@v^tEV3XITkOR3(&XqL#!OUDDbx=l$&l(yKaiXMj< zC{h)pAa$KrY2k>=t8#Ndk*cs`A{W;eaoJS|I5&`<)cG3n^FDa0F_^+3iB-2Q+LOm4 zA0$gf8I&|ZIaCptXd)4Gr2Gz&!Y9KGjwZCnL0%)cP{P`g34xHlhExg?%8H35rHjYr(n~VFV2f00ht`og1u3MI#C;rc`lWg(jDn0gucKQ>L{ zAjMRdyQ!Y68F364gDD(wX_k+7BODFKO`2oQF->Kq=+r&FY%{GZ1B>1br#%iQ{f>fM zPE=Ha;tH=0<(Y-ji#idhJd5%KACeS~a&c4cH_OXhB_icNDi^zZ=U!j9suHh^SCZj~ z^C~D8-tEY7mn@-Iq~g2dJj1To1Iz;rwC~;*>tj>n!wf;zDv%t8PF7D!1%K~xhosTwI$gZ#Sp zYFuvNkq5mXqZiW7$i06NnWHQptR0zd1B?EJl#AD9U$Q^K=IGkx*w`YK7p@oAmX(qb z%uyen6x}I^^hfPDr5AO^$J(Z;NKaHvw`)=8RV<8T461w#tZ>8$3;!xF1Z{+%R}o=f zBRU>eVVa5&NwF{GuD%d&( zSvVx|`nTj38x4_2a;ZKE-!vAWxY?}k@x|DYSX^Ju#++Q)$H5MW_cdHmMIT|ijiQo| z%)1-G*T|~}ujE5s7}bO)GIMdk^$1NIWu3);Ff%qgge+IDG&KvI8ON<0LNyu|$dah7 zk_j%P)1mhV3lWD)%w#@Zn1gG5$tNdv?S!vy;^;N97~qv`4Gg$&I4u)=P)ym=Y&7Few^m&$(sEdd_C-pd$jWEL!609iitS*2mV#y74=-SY%zCLrD)cB^J)lL+AJ!DE?LZ&BT(aO8MW+H-IG! zQ7<3lo4!gzG?9{IAtlMgAo!qSS)F53gVPg{r^xJzk`aef8liF)?Q0mLRD~gR3gVl= zjM<@b79T_u;-*BB;#H=Ij?|TA)jUtBMp{I4t+zpFnnMry=^kv=7z*KFk`wN{sdyDc|_G|b|r=gFdI_@vmTy7;=_^6G0I;xfpA5Qc2)5=R)2O%<_aTW{z!@rt! z^eRvBCp7hO_~WYOysr0L+odYvh?-5~`Pogi<%X*vH}(^M-Uptc5DrGZqo%LCF77b1 zy&Ipx-$exuUcOw^0YTCoa6T0(m#ghv=Tj5fx6Re7Tt!L*1pz^VG(qrEBm@YGfk+84 zQWYU8Vnk}_o$IBAk{~q-fhfHQ2#6A@(n6D7L+>?oLJ5J#oB90-@6G%2&d0sZ-e>Q1 zKI}7d_RP}Gy_hX&Vvd3k(;94|6sjc$G8hw;`ku@MHy*1@ z_41labW}|jaR`ef3)R@}uqU2m1M>|1W#jqSE*!W>H^omZL7)KfS}2gkaiJb0)S}a7BfVc#`UPfVTA7c*{Rgu+Fv)`v{#KqUrr zIW5}p<|ol$+lRXC7}J2nuy-$jgo=yo6E`iY=DtNI{vf(PqRgQmza*76D9v@xM0TBO zng%3>E(WpZOO!l!jrUb)r`-i&ox|R|5#2iz6UXmb8@hN58e?TPp>B#7iF~{ZM|{5= zCYXz@6T(}+PpZ=+QFxUhX&|8EO=XmhJs}GMPk5W5)EL!kGUbD??IMVx@Kcuw70R+L zABvK(md3G{kS^{MCGz#*=Ug(oz!QRxmpBjNv!m|Mj;D<;HSeURui7-^8~12dt%pht zyL@|0yV@}#M43oy+Ho|7;>kzbUUYduy1#G!%~OG@=%~YOW=W|kU_nmy!Jc)hzw#(*pu7qTJGKvO5k#d*cB=t z>ilLN&owNL1FS&Ne%>=96%8Vh62VXHKvpO8Rp zg+79We`jPres4aH&)JRi$A=n+2tsb5>rYm|7!-$m&-{BiTV$>t-n==e*g9!(3D*?T z$6hV@=z&Ps6+ZL;Vv%5XnYbnc)={2a@X6taOuf0QmWE4DBi&ILd&3Q!c>`Mjo93$< zo8NMuw3V)kGO*uBXi=7yXywLRz33En1Z-Oq!11_6@vl#0L7-M=S?*OVj=>RNmq7iz z@J`p@vS3Pf0|=FJJ07=T94+{B;53E!x^m(BvadWt^~3dV{%L256zCz%yS)a-#mBzj zB|zwR_^iUkIHjd%r8#QUmX)@oXHD`&%}2YBNTVhOKG(e6tDchT#@W~-&_5pI6^o}+ z&5GWOP|ciVIE?u~yiaPxYr`cXA1=9lEs7!fi%g4~8N#0sl*#_re4IN#V;tB!6um|{ zmq^1Lp2!NRAXm21Y;0Y#lJAY|*S;TyaxD$xG&vSN1Z`3sz$VsSAwho+I>gd50#;`W zpFIY~qQX7c6#PfS*Bt_^7J7LI3gw@Jj&2PtmmBE%)q#ll#j0;rCc_z%cLKs>bDO2o z-BgT+6Gld=)2Cc-Xg2rcMkpHnf?dnvvQ&wR)kQ8pPB_Gx4eRA?z3kz+63!na=6DB> zj0};W{h5(dRQh4}a((;8#jyBGOK$wN>7p7hfYNnQ7w^KYObkfeoKQR&Wp(y`qIG=> zL_>56`>OlA(9O4nAt%dRY471@Ui9#cJzevwP9$c&dJ6ke6q9Q#9_gt{EI`xNzv2ab zq%STRH%4WC;_V(0#^1$V@;&hanFKeI0!p4UlP9a^Ylf9#Z6ryn5#)C zGvYKABb)TozG+=o5e^$}B6>>lfu?86tKt>q4RyVRGWeQ_cq__iXnpSA@-FPJv%?jF zFC=Mq!{;N5RnF@ML6!z*+RkXyYE;&cFgOUE#kNBkqxQ>YJq@D^X0T0}QJ~sNK{lghF~EZ+JgF1=*)zSzpjc1bOXx`Wu3eZA4u7UM zC7sr0o}T>R_&q}n_78WH1Ry-^EFZ$wRo*@S0>n*9v~y_-16G5r@Ow!V~m>&+ftbV@R|(lP9xR;o4) zk&*U(J<|R=K!{YEqbz;QnvpSp1hQIha6k^<(-*K@9|TH?pWBMx7U(@O`P(*Ls zxdT3Ycqou-Xk=^tp-&>1|K+g0t8veBA}2-k7KI}?U5);{Q!7i-rSU2Femi98+1H5} zZEJ6tfK#hltd_gt<118)9PqUkLn z;to8YC`))4U7wULfdtY%|4Vo!Z(H?9{9^%sahLeWkP?DcL)y3?ImOof9ca^k`-i>++#)Mc`OSf=Q4s^WI!E7&g}n!5FFhAQ_En4 zef2L(!T4Ox?q~A$`Iii*KDeywoQlrb;$C-y^)IlsEQ$#ycZo$PM4|GUvO*u5S>+b1 zR}_4OIb_+jg`qB%=ygx}D=kRZcRGj(y+&FegtgYOY0Sh`tNdcx zdP#;;WOkc16StwPKn{HsL%p9Sq+f$uIbu(oGrwGOp6`vWBrIg&pL7TnZJ24_m7~-v zGF5EMQMT{~u_!8^eL4H~TSWDy@^pU1h1-wl3o#IW^aJU0B7;vt^&8K)|Dok&?m)x;7XwW8NvwC*3qLRAMAgL7Xd+4-XH2<8qM_&rwC%GK$76r1hI=UscKp%0$hys6Y$CF9 za-c=Pr0K?Vr2OUX>FH@U5x*`nW)-c|HAFqiX-ws=>#SUd!e zO8>dmE1<*C1?b=p$#av8EUAe4FfN|%1Q|0L-D4v4M-j(!qMT(#0PC;`FSuUATnm88 z1AfRLp$D@QC&zm$gGJ~Hw_I}P$a+Wj!NEa)e}88Hqm+ESlg&Kp1B@E-YHx0nPmXp6 z(P&G{6f${zyL8V2OrtYSE6}G8mDsQ!aRMCwDaCX`kN0OX-;y)~Ysk8KEf2}$Xk4LX zC1XC>$#J;EX6E#G6-N@8jJC2`J81(v=chPN)kVtJ>{B(5i|zN4PD9te{SxgQkEM=| zj_&X8W1!m~Z(DqiAL!WH+G=f$aCNk_x(o=?Me*wE>pRu57^m9=ovJnmESwUkMb9Wb z81#dZ4!XJLxc9=C=R~z_Z`Q8=HNYicWMt%e)pke4p91aocCh1E>UHvAUpDlh1sO2S zL*5^vLhmY+K(X9_pqAz3<aHjAuGp=5eYD*m?JbSi2I3Q+S8KCMr z3pcV>v5@Egiw$rkrIBJ(l)ARDUaN_9tp8{V>JT_O` z;Dn>WMou8gj+xH%=k22Z))j!=iI%=K8d%0~T>8X#soiXY{PFIPw!ql&M*FF=K6l8|bUC#u!2=rAImwn_a1_==Eg(&7XZ)9b09; zjWpH$wn8-G#9)0%5Vx&aMa8&p&Ih#lr3sSPG`r~e4_FhL8lCBaM`c-mzKNNood@Vns@+@tm-m-s$hyQt1A^h_ce$N?{U?p0{;aqN@W3gDUr`H}JkE zHdI!vW#?nAb`;?9vm-hW^919zXT+AR0tBKK+DFBc$}wrK!=*!?`#W5=_l_GQ*}r*D z3(H>>i&KN5@oIrk6?n4bcW%w`IZhOYQYxUSXJ^0CAcevl?-Wn0GCK;HdndMT%kNTF zR-T@|G#(a1JU6IJq!Z15GIt3DS|&laMu!K^GC9@Nhe2r^JiTFtRwOlu;`k1Kie?HJ zo2$IbVpTR-C@Fm3mSkrC@X9<`*)9!SG+^xyMmq?Krw#1)9TOMijswpTT+PsHo{$J=;?5;IR z@I5DSkN|V}*ofU>;aTNajq}U()RU^oai5C3lBjiB;Ix)+V;PY~Phiw7)hk+9z%o@U zl$hMLi31D~VU4{)R~b5^|GUK#$X?HQE&>KC2#c1Zgw%7veo;d|&Nz(xwL+5m4FDXT zlKOIm(c-J)+svz@BYBK@xBafsuw8_?HzYQ1ORIB{3iLxx8AA8Qbo&YW=B XZg5y=MGCzA@1VNchOk1d=l}i}@c$MkvoYuMA(P{nGi8KS(l+OEm_sEwkD2o!6%ljFAr(jg1ZJU~lcl#>Uaf z#>Sox=3xCo^Fh*CU+htCc2;cnho!%jS*ZSji#MhFv_|5)@8W*Nf z(=UV)mcZ$~Uk*2ndgr)us_HbIG*3OOxjJGy1i+qBKN%p3E|1dq;~${Y&dZq(vR|e+yQ}Lur|*|P zd2$vB``hdMiQBXXiGP25*oUQc=%O2aVP8CKHi_r)?($e9v}druPget$TZxV>g+eegH&V0Z4pAw2PC z__L5P!(jQbTJ2Sv8jE;2bNoXUeBBSRXD0()-Y$J4T@W+lx7i9`*qd5BGwAbY<6tD+ zZs8YO!t2@Dx$U2FC#o;$-+pUk$k>_;>a_oBS$C%Fc17fBdH%{Dt*bXLPuBchyK1pp zDtEZql{L_xCzrU+TG@}TgCBJ=A2U~v3mdpoC?Qi@{D*7&7CWz8w&D+$yY_$49(=JF zAk&uX7~Kj*)apG+nS6i}EXLeEwt1a1f~lmgAsT*vccd=eB`~cI-_`M*ca#>j1d9Z0 zITr`H9&(5k;tx(p$Up6u*=v8(|K#w8^0~ixp;HMPrC;_pEDoa__(WJoC@*iZ-NT=- z)mjmMxcB97?(oklYkhmGzn@_3x2=luTRARsNQ>hYz6ZWT6i6)0{HjReb%CKL68L1^ zAAY}_0DjLkf3PI`cy)~)U+fkAIh!{+XgU~O$!TVr%vyz_ibie92nMopF!g7PseQOA zcknLp@ZW{I9B#UNiQ5=bmVTSLYUTcU_uU-p3gr&hY#nb=TByyKnDQM)~soOk8eA%SKU2^-`eiRLVX7u^Z#8lM&f(W{e~11d@EP_k4 zrRL2JB2)iiF9%=w99cV)?}B$su6X%{IM-OON(`@07BYP^qex9d(Li@q*)K)glD`Bz zYB;&|SZzuATL~#QnSH{(fIczPqhuYe{qJ|MK_Km-yfBP9Cn`{Ss<%INogh zdfbupBQ96O%O3u&hnN4=kNdv_D#XO%^5keM(|Q`)g41iNoB7WljMzZ(w)TdPn3;<4 zMz2j~p5c$GvP$C3+tXDs_di8Rqwd% ze}!40`L7mPm9n~buzoJ#Pkcr^UFjf=S! z;KdV&dAiN1R<%5&1(-*Wq5*;lC3sJzPAOxR(CJ3Bhzc*kbCxoU2rwY~A-jnEJEb?TAeg9Ahf^U%nJrrA%M|*n?oERid%FbiiuViHgf}X}jK?sWIU1VBC+OPbMzi3focXeBJ z33gsn?If9`! z#I`s2GioQ`Aj!Sc=ilz7#foF5rV9DBt`L})2HVn|&%(NLeEB|mO^5Mf(_UieM1Cnp|xmi%xsXXI&4GJ@^FktsX4kz00kHOosnXspc&r5GoFaHG^uSFQW z=<$h!=UMeaZI3o;?61*Mw^5W9byr{XxoB?B4&c?wKRXW#`IjPkOELOO%|iimbN zFYWtZn9`q^%ckjk{PujG65Mf@8SCW@YJwuxg-Fg>ijzyKjzEA`F6Wu6rx!N%6fz1|N5tSuPOSe|d95H+51dIe~c~Wv6h?G~tFAN4LazVFN%FL(XHb5?RYqk~vy=Ze|+n$pK zCWmQ2@)0fXb;~!84r;~3@l%@m_V-P~$#PCh&FS=JPcew1!RLS+FhZ^@aAR(0 zSJx!Q&NqC?RZ#P@g?0ZE&){5VkkFr}qp~qKl-~-*70O3gl$B7V#F>AgCG1tR*Q=?_ zS_O-Uu5Z5i_D%yeoEQkgYeLiPg|`qbus7`nbZn={TJzj*74;>v0L(6?krpF%E>%j8 zP<-2SX(_A}dzNAM$=N|;i5X%rHJ*k{=Zz-bNgq);Dh}y(8`QeC{qs^$SiX7`p!TS9 zEqVGEit@za(#^k(F)b{#|0X`PC=n68OVI3b;{9v-qnR{4X=gX?TWU8Z4Ek0u3i@AfLAAn+C1bOtS+p(ILo#Ah*HnmM%jkeSxwO_{% zy?RdG4B~ItIG!4N5bCXSCEbL+7EHj{@_$-R+yYrhq5J?ZWe5~xRS9XWkrt%~(7exX z)gMySNLWVLr7J6P{SYsfB=vLr$SPA5T*Hk3vn4C}3U;LAT>vGrYCcDKBz?@PT6eaE zEhZPVRFWg=t%)tYH^01lJvf;-alqx2DQISjhx~e}6mr7zwv3v*zE`V<4 zdF@C|3l)B<{NEh|$n)LR`GbqwDk^>%8E-i{l*o&2f|@?w*Rk^K8WD(zh2R#;3gXYe z5ykY4;k$elz0kHENwGn6kUz;iAV~rdalJs|ry=T%qFV|3LqS1BrGRH8p|hyF3ioAN z!xKa@q^zg8pWh7{_?bWH?NUcQok8ZBaAZX&`68N(REoO~XAW zTipB@E=EvHOO@$L@cIctDrDEsw53PwpSHrpqTjcC9;>)a)}w{kZKWNZHFoV$=%wia z@X7w*w}_xpPU9u1o=KUNKy?Z&#hp{yGmp1Yrcmj!G20R%iK0w0KKS~29LvsXF=GO; zl3`k(0co7Nlz3d3=#Djk0why2A5K2v)@t((frVd=u?q3}&U3<@vc#13*jJlJia)b( z8FZ=aklpBs7`1oDqe_ zClOHf)ZBCvw#w3Tnm7LM#>;2_lxFb>1Eo%pXCtMaShQcOu!g`FoD5ED*QCAODR%8u zrji<322<0^WXC!rC{pJ725h=BMkZ5ys`(Zl^SIvh!1X`mZ zD{W(?;tOM~9GGgv4cl3hrsnquSwX24Zpf~CrzcmtbtHH`)#Vk|F9L-cU8PxICI zZ=tAfkIreh(6U&ic9$!A{K6i`uVlZRmQ(rJjEb0kIq!)bi444|&a^+Lqccq2RMRk( z15=|5{Lay-ZJWxNT~nl!(*~0+0QORZ#H}_I9`+fd)|&^ZO4ety3x##f>es7A{$zb0 zP?u$#C?%^>?e!Y+bc)@qoesn#@yT-=G{vs;pALXcDBqCi?8eom{g?(0 zZNyZM#*bQ)Y&NY#N|u0D>eDDTi!z?LTFdnB>-DX2Ux+|XpU8F^bR(*=r2H>&r5*9Y_VGJ@`T`tz z#p*>FYUuwvk7?r9fB_ZDi=3BC1a-ITsv>5&32W^{Rh{iVMfL3(jN#mPpEH)Rw3*uc zGw6*wj+g}jUIGAs!%Zwf*}@T~?-4si+r(+B z96>d|w$?bBlr}s3WVd&gIxzP0JqslY4JF`-s1aC6t7VdSri70v>q$1Au2ozRmz$K0 z-$HB{#B9u^hzAsIZU~aZ4l(BTrci6PpE2#%%CTwPmVjF1aA=dWm6>tp7;p@ElPpuPIUx zWuJ9#2+7A%rVzH5k4a7{b9#3EW5v<+$KhA1?Q(QK_kW}%D(NCsxvf*(t&$7{ZC}DZ7*edm zDN|rB&v369j@(X_qs0P~zSc$ALCfz8a%mPaFUnW!?D_BTZO9tOB$AS>V81Nizh94h zM_OF*dOy*p0=*#;jjOn7^ikiJ>d$*vGL5^K7M$Mpi}q2nAxBX1ze_UpT(BM!Y^uir zL8%%3$zKEEPe(2b>$2s;q*Yhk)QspV{UNJ3UG(b%ZqYJn)SvdQy`S2}x2QHeHm_SxY}9 z_9MVI$lS5#R6}M^~J}y;|AOWPjXW{>gX3f9L?%`>vC#} z7ea^0yx#)KxRF`V=~0~xB$Gv(hL-R={0J>Ll=>29R;Xq*{XslvluF_PCy~gK7^ERi zc`nIAME01+(s7?Cl6vp_tw9D~Mrc3mRQ0Ssi=Dlr#b^{+eUciEM@ zDxIaEC)*QFob@sg)j`N&^$1BodMbp$>KJf`nCN0?KTp)I+?mK%v}>y!QUXchwUr&9 zF+h-lsuq=3@Ccc~V8cc9Ky?n;<6Zk@*VV4w178rGZ#-d{cV0aj-nFh9Jp+mdpRkHIOXXK1Kd;HGxPm73gtTeE0umR&$X8!4WDDx(geV>QbgZ>;NGiSXkE_>AJMF@0=(vIqJSLw9UUV{uOfv9LR{Yo{d>nA$es)X<$>?W z+(Et&*KG^98n&pQ6@jlc(9q@B~6gH z)L>=9SD80+{&iNilu5V-^>OJl2k((ZB-uoj+a!Q1XZe<(Xd%t&Vm`6dggogq( z^Ha9KI)iP~zBGY{LtXskM+q<4t4=&qggUw*#VcJVN-y{kNEPj>RmmePa0TNlBvV2e z1!TiJYQzl<*;!CTlv##NI_({0X=ci(<3xVR|9JB{crfqrJ&W8sP(IMDp@z8!Yhnr@ z*-`)Ao@3@Qw!y?klJ}N^ZmJ%psD=?*FLVU-fVGCSj>iISy^F>tf36`)F1`1HTcrx$ zrCX~QPS24!jhlevH@>5OS@u<^$>mqO`xDJd8;|>#S}5u8YY+)FWD*a-J6{h=lecNT zEut;;uaVq53gLQ;}J=>qaQgrdTMO^~}7T{bi9 zI$6iel1txfFmM0&l89EosSFb;+~;)C<>C@K*N`+f z(l6jBHm+j#GzIbG&Wt6o0W;|2)$uqQ#x`Qkg4sDFWsdJcQ9+k*J5{=*Uk}X5M{|hx`TXJB3B@2o+d8JM}BWzmI?b}rxPJ3c^?XO_|?0a z$|ms8s;GF)%r>~ajBm{2^h1q;IFG@=YX0T6V{^*|+#ERw2ag%>t)~)A6I3a0B_*$u zLDgf-g`qGDe~^?E8$I|k+p;B_Se)e@zVG}|q-WBK!@{o`GA)$}_^%I}|I>7pDM(;Q z`hi``-&VWCo(%E9th38Gd>1`W+m$i_nZ4t&v}QZ+o5!1eD22f=&iqKz_M+5om7mu^ z82;jp;hCA?Z@$};OkQdc3o?F`i;cY}&sveJIYp&H;^`^;`vNmHqz5EQia!~sVE6zX zy)pRwSQxC?_VX<0=lV4Du)c_p#C6qfzU+Qy)U*HT51Kyvdh*$yLCMz1?8wX{@qGLD z0)l{{+wdrCUOdFtgNJ9tSjsA>9RoS09bICHxlu}qgA~;altH0n_gi08#X%Lx1|=1a$k%Ypyv9zxOBVyAbM+#I*4b%Kz;=SQpMjrK=L8X;n~uQf?$YKAWicO>4~5Ga|MgcD zShh__R0sVdgY9XW+|hCc(79IFX^GBy;x&ZUZxBr=7t-r)Lk8a)8r^V<1P8>uz9wuN z&gf&Y_3fF_6aB?fddbN}?vl}++i$0>w=ynGh}iIWO2UM1TpF+`w<;NUqK~3+ z8pEV#s@zg!?mp>^PGRrex<+nM%;l13XE|vDXqZM5j1zpu0sofsx*RZ-YYY+HGMo0# zCc&J56zmkdR#XxSs?#z*i`x;_ZO)&Wfp@1l2e%{igUAFMh=jV|g#v_VA*QfqO_C<9 z^fJjL9ljb#>_2R=*B7=|^kPpw-Fy9WGZ}PSweY*9SQyCAV1Am&JPmJ2eor`Lp7f&9 z#NVKfDrfC`PZLk2I*2_Ffro<=5cR^X+4&+0|HJIBOV8??aMJv6o$WV1`igOSx*CnL zIua4Dgep0DtY8MwNa6kV-ck*p)p0+aH5 z%u;kj1&4@lAwfEN_fxs}p{Eo&_)jtSg!UAQ0JL>^T+^LSl& zW2d2&PX54plX(bf)bUv>Y;dp{^jwN~7!Tw#@3%mIaI9d7!szWE)@K094PDZ!B;<4v1sp}b2J@oU4@iwm!FDoE+(xfWcK_f$U)auWwxk z8ivRw^a9!GIi3@GpPX_Jk|&0R^91d7FG2B@bn(%P_tTthCZaWKbY^p&g)EDrmZYA& zf=1|azV&&$ZY=}%l@(zdIpXEn`Co9fx$}Y4+lET&L$smH9Ux#H0o^tGibrxHQol_5 zgd}*n)CTOlpGrL3%GpeLxhO98fHN{`% zgWzu`>?4UC+y++Pg?W?5l0>=uIAaR?2ouBY_<&N`MeTOs2BgeAD!#h1Nt_UJs# zdii3aH#XG3JaH}D6Xk+Jc?Y>Mgtf=?Y;hH{7El)Bu=pdQ6=Gw}&r2RyN){5D%Q^P} zJI$6xo?;l8#|}cE=x{L}U}AfXO7`&asp>Hnv3KZ|CxOBqToXoMa3cgsvMGwGnO~X) zN#V}p^NXMH@Rd)W*%hwl=#8Qcfd`>4wglODucH??X1(t4 z0hy8>7;RmQ>{f9M=Q!|CgtsNRCard@c}!f3S6d<0OIZo5`mva=&_VvBq_6@#);f+v zL5LIeb`aZMGS^}9MBk8oaRZ!ZZyj<)QFSFoQY9WXuO!G@6Dw@!J>{oR(nH|-F0`FW zMm+s%Y7npUa_=Z_dY4vNe3`Bdc>&~bCzRnLbzD`;x-oM#mKDIpIKofNH?@_mfY`tj zAtDIfiKy5LEcg|?8DkszGL53fSdQV6F*Wn9CYk;448!UT1QZ(@zETfDN6&a{ZP!`s z{b+&j6LsH>p6wcy1&e7__MDNRE=yRMXgfo;?%cfld98s>%uozECzTz z>c7SXVe&}tDicZ64t!i}yw1&o#9tOs)m=+wkzxOD7C_{|f0R&EU^}q?BeJeL$wD>H zOG1x;Qzt2aDk_VokQ7{@fa|dQ7Rm_Qe!ZL`o?=85K;^H&7L+L5KWD#67g$-W8$C?# zyTOkEG`=^K5JD>LKX>woHZn-Q-t(B$P(8ITxVIxUkOD6XgPp2T*3uJb7Cp%s`fRAS zj@d+u&LFukLD&8y)#-hBV>@)-^hKedh~2+SWlSPep`v2h*O@V?m~WTd=HIeym8O8j~Nxi`uNR$ghP1i7*DpXVGd1`aNs& zaLg;Yq|3Tb-TI$uLUW(^`KTS|AL#4v)!CgQ-Zqlb8}i^cOOX*3O;g9LLUKB-(o0d% zhTG0`|1d&9&C;BXn+0?oih?J1Cpe${a=m%Hr{Iqjh%xhl1G9;Toefl3_^njs-uG#$ zK63iTH}0DB?u`lDC8Ys9@nH57{J048NxEO!D3!o-FFMF2f|R-dN@G>TXy7@C%>P-1 zGl1{K?Nkmxb1%RXw5KqR+uvZBF3L@szs6%FbqdZJpEARsK=bD9*hR+@QJGsm))}w~NnxdYeg+*j^s7zJfLg2j zpd72DV-7ll#yjV(tvP@Oq&=^KkC2TVDtVH9Y^)}+7G!@jn~<=ijPgw$;T-eRfoB?G zCRtIzda>j^At_@pWIkm4{m?0id_kB@%I+&gU80h_#$)G5p$iv~AI>N>lI+q;B>@*e zC2L7+hyW4@jgAFu8C;%t2aieci{kN*jr6ZNr|_M+0G^DA zW*t;bJ6ta?hyk&=c9z^yK*Yn)GbyIK*LEpzA@*eh7rc~)sR{}b%-qNJCw}wQM-6^v z*(O>(znA{h%$oe?IF7nBcG+KNS?qRA5Ve~AEzZX50exX}p_YLYP1l5zNeI=3wI!Gi zuxU9AFmy!2kKETZ2GS1uOgh1S9dt`_Y(zPJJ*~2mHX(_{QJQh_c}+=-B++ziNHNLZ z90fSLguh)m(I3a{6%ZWF@z5alVh_sxD$M7HKxM;E%M#vZ<>=e94joL(D8RY?5GtuF z#>2+O5|h>sT0Ww0K&j;ldkW4#=$i)cfgYf?o2%?oDObpyPmbWLplYWnBhyve|%9s6V?XvMmP0jXSY5F;m zM$DskpE)~YkH=d=@RGfsJ+-*b#Yo({rF|ZCMgmbCVsl3wh5_mUzA6++l?}pRq{niW z>3scNw08jKx&$hJoifhC_)+L$ymwHph~#63lN1W8jIsPfO*7v$kC}61=Lh-2vjFBg zIB>=F=H293E2;D+&?Hm__Y|cAkM6!D_4Mu=u%qtp4XxTr4pvlAOZ(vU{no%v3`!TD z7;sCFru$LDfSd{;_{$3*wf3RqQjrSCGZKP!eoFe(wr)=0a`B+2%8%l$V`(it<-ri* zq#9@1QI%}|*{B#vxDb9!X!k%YmbOsC`G)5d)4!~yJ@f+h1QP^_hz`Sr=^UjDfIDa) zeC^kT?@Fd?mJ0{jGdV$4PNnq$TIjwXBG4Uqxgm@qO8m6r}(!B~@oaidRnx$2%W2W6nZAhv>_L-ICiA zhxHt!r23gM=!>8f#q<>oUOryu!robq9?SEw3{5Wh%#jCjM^H_L!nFqO=zo|K|1-BF zZpN>yWJO4F-57g8?18x^Vr?T7kHS@ej+m7cKTmt<0-3gSr4!`3u?!IhBMji?@$T98 zFXuV*d`8CrnNWknxqbVoeaI)}>4i(jX70@@+~a-dTF9}AB9n2t4>7ksI{mV+dg(8> zI_}-}QCYR=aFhXvMR=s6k0wL%9Qsm+g}*r=KaPzP&xL>=RDY6VlCzL$K8>#l0sm!_ zS^Wm-?C3${0w#m|aBd-k$*115$1S76)lww=o{d?X2FEZhnW`?N3OC~y`5vBVyadPZ zxqxr@hbbPC<*%?!kwT2E-!~!(Q+^4|!3N2)H~oe|=g^gry{B{}VkNC9$gP@*!Yp{_ z*osnN23ODsn+Kh}tl%VoR25bto*zi~;pDb{`@bw{U-w;CH#Aq`S5lO> zt9P+_olgFagqeCsnEnlQX*9i0_=V(nfpvam^Yo09^7~8nbWTa*=Q}NvErn%J3H2af zz*RX*(koa_Kl2FR`rH{oJW$e0|Km0CDIkgk<|^`KL+?mhRanZM#FyOVCZcCD(*OoG zAE#4YC2jL`ts1*$oO82z=NxjMX54%8;*DnP(%PwdUObgXCoA2JRX#_lEF>Ms3+uU4 zSUf4(k5gTrXt<%KTM2!rSJO@`6^SYMt~za4S&By-t&!ll*$BR!hcGrUiGJC^EiS|| z65YNk94hRIOB>)~<>$y*+L@EM>@QEbkUHCA84IkyGM|4_1t@CY)ZMw5=I1S*0a2q) zG(R6cW>m|5SEa5GzlmBsjTInt1ATiQSEY9tfvy&nazv5ZM@)8!i**pXPV1@b75}PZ zJ?RV9n#yNgBu=Qu9q zs+)vNT%r>j3}%qf`4IG3{H3RonFbya3|e^;CyFP|-Rk$XNDGJ2#hWzm-tPf|cW0md zmkwQe85A{np}h-i?>yLgM&{*8J#Q$CMrxWdiNE+VZH(BuH5NfS3HR*CIF>7SC_9OW z@UjlZo8t>hC(z-HOZj=?W~yj!#qui7GXu#-DGQR8wO=n4RCZ(ZIVI|z48(+|A4WWR z_Dr!6;CZ&{bMq6hj1{5XP14IWsHF;)V&%+V+J=n`3UGay_-H|F&Cy-VfhUHn>Vzj@9ru6Y1;VHfzNBXr(82vkkNRZPSZ>jfiUJ-HZZ!J|f@a8mRC?Hdd%GgYIzIQ?m2h*^~PQopKI63Z>@@kerRYP?>@l z#I-_69}|{)V7B(~2J=DB*rB+xk|?T99(am7JPdq7&?$RnQZllZ`C<^=)O^W$cziW2 z;K5Uqa$Gep;}yhYUg>FHT4QdFZQBXC?j`HbjSm z#vvmZHX~8Z4aefv=+xiB31ds;YET2tno6!bu%|0dh9LA!Nl{=yHNc0bJpUkhRatdn zCG+wo5 znLcmRf1C~c{%3q`?T}+}_4#-Rg^$APcMh9lnIsYeP%1=PPSPw|>3C?Py{K$buHtEN&j$K+z z38A7GRUZ+fA9no;Iq0CaBSm9tv;QT#WHJ{`SxHvqp7)}v23N>sI;j0hHp_qqM=;gQ zMkOz6H6?$3Kcl$QJ;b(@|5YjXAi&~Q#|fm4X>{;Ua@K{T{-s%#WR5=2VhB2E$>-|& zxZnB53lHZb+33RJn|iXTe8Y5|y-(KpAf;vk!TaIZG%Yt=eh&m`F?rR~z+0SBW%Jq- z?A)@3E|ljMQTyMJiE-KC`inu9Rk1S5A>w5#Z~gruI7)QKOhSgG#;|OTV1Kg5yIK#K z_vN5y#e#_y-eY>KRc9~(>=Y4-Nd2K@&9`#yY zG7B&25YhTT4iZEoX?Xk*Rh3&JjC3PV#r`7tgkR(c2hDJTaQW{<>!}?CiM(DBm!O5Z zCY&*WlP(Z>Ao(w}!GEF;iFchq)>dHlYB>e{NN4CtJ6T`j^P8y+l7biJ`^umLTo=N` z>&9n6SW%X@E9g=qB5b=DHk2pD@;bugg{4xtt}pq@e95GqIEg0^*zH36v0S7~=$UBY zkWwfVp_RWgdQ9m#0Ii}}_V<&a{psdbJFaPTQ@*l7%HH3%X%oU7{bna<43Eb-Cx|m# zmvaB+?U(LJX1e_^Ycvi5DK9-!)Ss#8yEM=_U_Rjt^p`Ug^_G;;dMF}l!a;xsvgZDX z_mvkwmoJ83Aihq&EkFd4#cdy?QfD5!A87EHK_RUBa!M=)C8r(cqL7-H{@$#g$Z9*y z#z9D{AeDQ=)38fo7e03 zCOBa_wGZUwzZ9%*=QkX4ePk8MivftsF8widvp^YS^bA0Vsyw&e2kTxJcvK=@ zw&Ob5gSD#CHTYreplyopQl7h=_jh=c%qH{riiQy?;+j-9q2$FA}gWxQx>?m$(`A*17zJ~*I^Ugb=(w}AyXzN!Lh-CB)PBT5@Cv$(1X~Vye*UMve z{xJf^CLO@eO_@Z!q(FG%6z*{Kv%9CiBG4iW$;uRFZfj4eynZy8Yg`AzTs*e5(4Q@C zD8Npbz^;Rmla7E)6xO~EwhCY;CM5?;r)xsxOE)9J)ie?6qgG+fT3pvkn~`7r;&mVQ z558v0+PL*$80-)R5)o;~%3n}d&t7Fcd{S({uc{%}>3D+IHy$3?Q_ri>QZhgLwYZOW z6SWtn$84YvWLQJ^AgPsCkQlwF&$4gDIkJfti?ewPs)&Ir16jeW88_N_w*mU(%n?x8 z`)_wDdn!(^()K9?k};nuDk4tpvMKa4U$8;Q;p7j607S!gr~{c0EBUy4vbj(~1Lf^} zP2$G!e3`ME$AiLVCmJLpie9zfAdMUo|WCtLv*FvDBXKg6W?Y0t|Qmtx8 zRlktL4+5vYW!(HnP;>44K));qgjrYbb~>d9DN3NpEcfW9whzNm0{$wqs^!wg&b&ww zY|?$WfjQrAnKz30ve*!87%WoX`-&udC@Ik@Ea~m`V3D1bca)vKSeU?ld$K71`0 zyqxTmy*YRK=d&eurk+;3YC$(KknpXF{O=DaJG{;NssnzYp<_*(pjV5RAV*jS`?-?K zt41A{c4^?^&R2O%OJk+|otUS*(1KFSDZAva&d%uAUZj#$tk;d>GqdkbviZnHAd0uf zT6({QcS|~*#2|D$04=>wzw6=B26#&rlteEIZCOotYY7bP#~kRhQdzrXQ>ar3vlws8 zkP^(P43wgl2ps+i&w?7AaramLHwB`0zXfqq!Y_ySB&E3+tT(Y>8LM*}MZtTRMOa{% z+4*^@PyyW_E!yDF%qfJUOUTJ_doIKNcVe7sN@JU;Z|KDrTtXsZt2#Q$dmG<$y!i~4 zaNuj0KzDH0mr|mH3Y)F6Qh`7U2035~Ef_@avQLVMN@7U-Dg!6bo`i#q&q7j}l4=J3 zra@K)AYq2e+WM&_6sPBi89<$GlTtx+d$T6mGA(^txZ{2~STp}Fq%TyVCbcQ4?*?s% z8k}tIg|ChfTG^{DO%Ay7G&?wvEvl-;wy+fsc$Lf=HXA;ng7Lzxfky3e^6_DWr|`;_ z`to8lPCG{CmfV%mI;49l+Os>8`vJ;Nm3xdORHEBaU2L8q?NRT3zCPX=!&0^}({GO3 zd;>KLA397v^H|^$^Zl1G{a_vf@SgP zwQ-dw?BddTBtpw#!si0dUA|_%S)Ev+yy&G@{{&TlDsVliIwYND&L=k_6`G}^|D64e zie5?OSB8#uW~lbjf~RmBJ+T@GFMB%AP>1Ni)YL#?z5dnOTmrMxwFTwL4G`}n3c>A7~7x64}d zsiO#cH;r*2pNn3{pgUz_&6`%_4FlH9#4TBl9CqdCUI$4Hm5{aI7yL#sH}7Os2R`15 zlgi{>cu^6$Je_^+Z8L|Ws%R`p^q8L>$;G+8eyyE1veH09>q3K#5Z?8xcd8)wap#Z| z2}S~y`a=1iaj9I6Zg8z6v0p%zgj{OM9e=4aLmXbasA%|KR_i_;pm^*(>@fNC;CP6`Dso^sp9h#KcxqK;BDB=8FtQu>ZFh%j28Sb5(0fnxhUj?PHqGo zSI9YMXAF!9&S>oy!O}TM&nD=d?$^E26&iT^Pflk+0m8@mlIW>hz=m|K(2-Wbr{KfL zMZ5SKzQ)#t3Y3@jVY^ocK|zN#4@;jliMx|@vxU% zu#`wq-II>Js6${@Ke-lVMZp@U0Q;=eoDt3 zWyVjCB!#6|%goZB;!Yj`f~o0->{i#ws+vh}^oaVY1kxk4TX{-A6wh_?^&Quyr?@wY zDRHT{U%ygTn&6NygqyW2D}>@D2nTh)H=KNlJz=Ex_Pw0t_HnBJ18rxFDO|r>wIV>} z&Vmb@fZ+_HVWPQD5))g=vwCrDffdT)@F~mrXn=t#@~e{7yUMBZtU{;o3$O{$C_YXe z&hPx`3Pem_q}7ESv^;o1JPF)KRx}8am3bPBI{(Che=)w|3KbhXp`i{p({R$NyAM0t z`kl@(3wmzw)hpzDa@(d36D{A;BSbnO7SKp&GS=mgqN1ElkbH;s{5mFej$jI}B{a<( zm;l(t5HNkbc9s|$am~{VeUqk^8YE{W>6Jg58SW6&YUB;Wc!pXocUq4p@rj&h!!6g! z=xKFIXC;)A(*rKe(&-wdbV1|i7MHtdQ=hJ(>e{Kp+FYKn;tkYrgS@sIT=*F}r?H*b9~7Coy%bP-GinxU#kB2Vm795He%f4vvPXs%!|G%$k-@05+%ZlAr% zn!b>|Rnw!WbO)h!tT{q!ziJzR`S&vVMxBI!bU>J7MIMY;WVCAVm5932Zk?&Ocbb`37xy2@6n> zMl*i8FoD>cdYH0u%KeL1zJ+v4W}YbrUFA+o27|;j)I(JCvpuef7&tJc3u;i#F0=ux z!7YXZuc|^2I3BW*VDWB8NQNwJ@nv)d^xJqsCOa?{=mI!b!?T2MH zgmMmUA>=qg0h~8GzzjrndTA5U~+72azCKdy^x`F}CAd&1{^qq55IX92ne%0d-Z1a!@0= z^aSSC_lyv|Z+CZYmvtveUj8A(!FR6Gl1o_1J%A0nwv^=fB&LO3+nz~Hc2pjuANxcE z%vn`rWK6dswZ`m$8~0$Au31n z#~62_>)1+XhSapbC9}W{vc6nWlM7AW1L-lK zguU)!q}IUO!(tC-bWUx@!XrT%71(ArtSZqopWnc%COETalcYmQlE_?<6jf;7FFdcp zhZ$0Npb}8utrAqv0Q-T&*W50$?=^(6e1Yxi^kI;i52d5$3S!m!quOsPEm5%z2j!)F zpG?B-a#%rwZX5G#F|~PQBj(oGi1L2Y8a1?9xBIAuAj#8h=4+E5QrnL!sQZWO6>oSL z;|be4q47s-CatQdiD2Y#nGJw|eO38GY+cW+M{6KoicRc&tKB)#Gm=a^j1d=7Fod8c4vykUH_nNwxLdP85`8^<2y7SGBbY-x zkO5fz|KaJo!>NA%|IK5aa~%8F=h)dRdmN5ELP->5kFv>%I>$MVV;>n=>DZDADKhHd z2q6azGIEen%FL{MPw&t5`~B;>T-SZw=lQzt=ku{{B+)XmP?qqzhn>@V+=L{c8yoc? zPk;QwldKWCSqQT4wvA}%hecflsxL17miVlvGz)zOW^z!gk@{zqgyQJ9BkIc8*s z*Xe$Q;B32=fbnX4weg8ux0uR`_Ifw$n1z$_If%xDO@*E9&5d zf~}4W*#p@}tX?QYo8%DNx`e-U9ufXq| zLaEEiagJMQZ0Hw{TX~Hy>l?9#4p1`5kaH^c-Nz*Ogx_2)`)=K0z`W<4AS89pnqt6W z1r#)7ic-03R;0y{j8l_ja5*oh2Qy@{u<~Q>rIE4?EGUli4$T-c*)%9FbaA})lfkD^kE3)CrI_ilDi0w= zYit1pp$wN=<=yL{vi0|YOvSW+X|{h$li?SDX?qdr?;efT z$#U1AMVkwS-#x{YNLczLGHc&T8Xle{U&jITOE36it1qXKzO9J>k5zcDvzf6OFxLLH zUHfd5Q>-T;@RALks)~@)p1Si_B9%Rp249$mR#MB(dA&3P@L1!L&jJ<1+?UTtG@D!s z$rwK0PB!!Gu$76eG~YgO!zD|x)Zc|heTPVNJuiaJSAMsD>hI}p17`Te+i>@hD0d#O zoKo=8D6xV*z{`|2e5dhq(>&*0tgD@We4Tw9+2>aO92KCi+bO6vM)7DUaIMIcaZP*& zxr(FjRnySa3pWYA`^;mIzt_CrTCTc1RvdyNX8pVgxp^8Fx!$q5EjZHlm7W^KGvR;7 z2FS#|?~ebj`fMFmrOEW*rm__SrRN4GfS3Ol@8N{&`CMPQxI&Dy+Mq~Cbl@GNH`HZ7 z+m`#P56PNq!Wz15CN9MSPoUhgIzJNsfYJ$h3na0ZP6=Fe$14(|Tx{&@7N~W5zEP-oCgI%K8`>5!&m~l>Q4hcaAuxVf&$R(C<@P+{t2-ApP}K&nJs zO`GcP&02fCX%?o3-a9;P1e!C`6eazQPevkn?vd%jNk#w!J4W)IQ2YQm?G4^B%+ZL| z5Y+Y?^gZM1=ie!DQ5Y6{g<2fiL`J&H&B-er1lM%;`0k|@d=saf&Lf;z=LIx!)f;c* zY5_SQ2?YrEH7+$X0ZMv=lOK+redU(rUCg9##~-nPn>-oAmu<>RNyqr$1i+lW$Y$=t zR0847bbRR$`_yC|SBw4~MlD)6fIQM^Z)=CPz3B0U9Kkt5am8KUvWljqjw9V_CyC!f z?zZ6i9n-OzGm+G=K_WGKgyQbPpdhr|m=O2OEiDb4RRQ1AhC1|puw!Ea>D}W^1M$FO z_BAz&D$sra>#H1pa{hK?p}>p3bDUf9E*`!MV_yRydh~K8MVsMR0D8yvRd&sN?aShL zWh>Fm?HSCMpDXi$7Hl9X?2z~i*?0C*ZfuEGB#=6y+84)86VCBj5@%KKG~84L(|GBN zz6ls@)0IRTg~M>BSB<=~lIrRX)cD@Ro#sE9)BKno$GAJJQYp#y{-T(`odm`#^eiwe zW;jJsz1z;&w=H-nom=K&1hCOZ$MOziaxxrnQD9@1?af=&Jpfx2&uAqkwbgJOn%y6+ z1$q2NGd^9*h>2I&6p191Hu0xY1|U~owfxxax)%N>DCy4M&eX_7oo0cIBU_p^tQc4jV!0+y^bE_gp zKa=RpY{LP143zLOyIxX&ccqSAbO^s&DNR9;o9b^zKV*N7v>}5MdKw;TLeyM~duDfL zv2hManXd$em9_D2X#`u3a#M1VaLaf5c0o8uIxcW(u3tvg0UpjveN4G@mcrMf@@m)} zo6yHA+#-}-AGk>2&V1G~bL;9|89E+56+zl23++v&-~jaAfiF@gc&0ZKXdZQzsk_iA zg%$1EV-AVCH80U`6{L2oj=hw4gtH|*WfNy{NmNiHkY*+9?{W6D365~}@Zx?GY09$a zlkTsOE$X5#bq0ii@``qikkZo3g0?Pw4i5jr@y;G~%B8_8nD1R~T9>)8`>58H=-rnu zVv6kRVTywXfA>*kE}UyO0rF71s}-<`kkHHv+6mq8_t5t;L3g<%3?8+*UZG8c{#BJU zEW{KmLTE75yy!Yd$jnltH62#^q|}!<3U9zW!@kmMkDeJ*B^FE*?qg)Gvf8Bf%;J&fnd`zS3j`+VC;(Xf^FNtMmQ~?|~8;98acGBzNQuy>73leG0Zr zKnqk}`&h7#=r4O>`5U0!4(~jID{pDyu|_yFM@gFJkk@1FR$ifrBf%sO49S(HF}z&H zC!zNY2t)=X+&*nh=a^v3>cNAiD@HYOcAiA9qCcR~%P?6(MgKtJ((-+f$4D?G(3@_R z{>O}YKNIMiwXrogDpwPyXxO}EoUHHSTqEaPkNSt_AZ)_tf^U)Yv8?K5W#yEBzC^5W zue7shAcXajE*g%&F7JzIyPIOTk;^`+GC0S`tpr9**PAGX3#kc=oIm0wsS)B!eNf?5 zRp=Rz(js7c>}fm2C(FdSC4xt@T|BkSe&Q<%$2#QpA48G_1X%*j(sjw2DK=q~k+ zIneEe_d`93t#&|kJ16Mj;~s9z2*a>j5Dn0toQ5%qI#-5g9bt<{JXvn$fTQ+qJhQaO ziFOg9oKBUIAO^aN$)(SQ=74d(fqJe2%Stw|lS(S?BX^+H6Z@NNAX$aIBQVpOpwAb- zXpDP}f_i6SJLMbOr0ybOrMTHb`ZV-k+B!Ld%=@`$zpad-M3YG7>o2cBNJCKqwDNbQ^eH!pwW*P5U;K6Gz&$P@o-a?jt47% z`(=YNGRe2bB!q{7I@fMuu&<4=WfjDyPyOeNEOd#U`~X#zEjLpoy4qX>?jh{=Xh8n}T)^R)U(MLWdfVI_E6=c^j1} zP~)qH&RqQMP3L@}MuP&I;eG5vD_1V;E|q@Zo9`;0gQy>{xOOTub^aFxUvW&eqeW zZmTD?hL~r*oYH_{VgA|d*>h6GDF~8IS%0Wl{2%1q`{3Y)aX`*9YoW3!$Rm!cz;Fxp zXY6^eZQW_1Xg?j9yC=`;Ra0ORmCS`k(lkL<0!&xVnubvO0#Z39-%@~@jpHVbw<5Uv zih8MXI;w7Ic&L;agv?wP&7ICAAXpyn`1lRs8+(PNlY+RW19b$HgTQRW;6bn5$V^v* zT@OWA^cLD4d|+-BfFKU*YBm5i98_n}TFJ&w>tzEYQGSK18ni|=QS(c90WU{0{d1-s zv4B8V3aRE970hnX6;u4!6@hFsK1$U$2~*bYAtP$79%%>n{iIP^YTB+>82PLtn=wlO z446VbW{_jeq zMxbqzDqa;_(0n!%`Jq`h(SOF@x=IAdXH9GGHD}a~vqB|gw(qy~#){cAksT*6F+1U8LFCqF_wp`Eo55h zw}uSe!PsDmqjwIxf3iuM7I}upFa3?ONU7aSdcwP#JyW!i9u9XDYP2OSbM?Z1k2@Jp zE7rG(2-pAcRMJ>5BkaXwikk{DsF*tKn!3=oZb4;hyj4=dsh5c%j$!sq28gOsIh`VG zoxTwtt;wMko)7WH#+O$7rubq^fX}$I#3KmkN)oSdKD_Z8YDPh!E9=}lM>>TrbSr|= z^lKM?{PKaJHl;pntw*%(myeStMEmSnQyTU@zq*zh#QLi3+T_QobH(~mKgUYvy0ygT zM}8hqqk7)s!XDEYf35rqm-?r!!iNfS5>S2L{PMWT zA5OuAZoZK?Yo_T*lCcA#R0U~dV2 zVMHEjkEv7`=9SCU2Um>?T!=5;`ZLYOrBdOwO-KVfHlNwAE@IiDP=Aq0Ag z_h|U%HbgR86cv%U&L_%92)#GH&)qWDnP^3nj^pap-}J~S1`o|^O-Z6q+ERcUj`)AT z850mx{ER+|NAnM(iv#f)t=TrXvAJ>;!n!7BaW90{%8OJ`Bgc>3(G#lR+Nnf=VPIM* zx)FHH=8$C~tUg<^)ckID>MRTWT}EADJ@6YAgjqa$gG(G8^Uu?&M#0`kLV%^)-I6-epGs|>R-4a? z?Q-+*ih7uyH3Iqx4=choO)yOK0i^jXg6J;zVw}w<%@dFVSFkvUHsK2;%vunX0_c{< zy!$;h)-yeFwgGhV!?uRmfph*X>N92_C8Y5~TeQ*RWQIo^^17}8jD04Y6HH}yo0ej) z%`01Z|54$4C@@L!tjjH*!R~51(lg`Z_@2@X2z=gdCgyR$_)&e|s^@0+IgE-hMJmKK zYh$CU4q|;Fv__5p?A}G4c(02rVo&#M23M!*`eI^k@kq)NSxp|zm$`ebq1#Pl^cF&i z^WpR$Rwg=jCQxlij|2(_*I299KMN>Ae1;%1(%@4p$F6v>`QW)>bTz*%)Y*Jx|nzmV#Mo|L$HztQZ z{(@_`S=DO{kCgqsfp`RnEGG1vD9^q^_gY~`3r6L?Qw#D04P?a-YMaa23|M>`5$ahN z=AGqLO7UFt;#v2IX}wuLMLf6=N$0+X=P1e{`kE~VIevg6(ZM1sKlM)$u6FRDM^ohs zpZQ^`tnv!d|I-$GV$;|{;&q7q!}(-j$71L+PHQGyX)ASDj+bKvx`r^(M>1l$$fF9J z>Vc&NBJ=K;&+w~F6Q1VGUy96&7(xMMUxOlGb8elUeM7+3w>N;aKM4x5D>acnfyn>~ z0Jm1_T;55OORtQK@ArvLku~B4lXR;~GNecP?^;tztKlDnC5EU8{wcrteGNB^$NPL!NRWp+X|W=;&97H85jte{3mFz`K})NzUDn9Enp0%q4+UD1 z6o0IBAGE-S;qZ<*+jLecjcvLEgH!g<;N2VH;V9cxqhpP2uHU6j9~cTJ(0Z%mLVAQOxs#cm=J#TDk^ zO%|zBUm-WI3#L3cq$-V|f`iFdO-Fa1v$(q|{!K_0}-}$!RzyBy;n;@OLp# zHUr~S)gnT*B6>{wz=G*k!A&x_>}z@DO{U`US!-pteb) zAE#xSrv76Xxb!d_=ja~ZY1K$@-RiNi-TGt0sJ&V&(*&cW716Z~RItg>gTa?!L4%v6 zTw;--tQ>Nzq7ZQ9tt9yZiTY&8Ji&MUGJEtw#U?p5(g1E@UvN9pqbW+mZit@dFKRfN z<@W9WW6i@Otav$)Fwf{d)oKh8)ai#GkD0%+JmQ=5n-5+vc;7*Cu#&eVS(}7YCfQ`;6Xw zyckIu3rzhabPIBae*7aU522%tNyX*y#jt=Z$CO*pQ>w#qfjAr+yK3S&FH$*$C7+O_ z7M9sL7xFw(W7aMO`zQK-!_6b6Q3!tNkN_n}o95`Jq#(PE~gTO^!z#8y|;+W<7kH34s zG*Z)!cIMdiex7@;2D|1g%&mh!|K?HZkpCM9T<$Qy)(_yv`i0=T{o>mK95V{(peckk z-x7QhDkn37B|@sDBmx-y6zD{cxnZ74>+D8`RK5(rSnx^^!o4Zvcx$q1_UKg~z0tc5 zV?o6%dY++`DPP!is^4q<64F(6MbpbmE+%3p7{ig4%_cM_*GSGMb>ss)A?tevvWp+u zwZfCA5%vuv1~av(-!n_epjBYzuya3ys3}SZ2?AvZPYbAP_etLEvk69lSb4i%dzH|2 z@B@3NX0;y~wx4LJNyy?zLd869BnC|W4$z5iwXBjsI)$;jN6ciH408NeN#O}(ZF@sl zkl5yajWmPFa@-*^#u#ve$H zfZJO0DmZ8UYah6L?%y5c4>(nuh~2*Q<4r(H}uUaazT~ddJH}!L#-kmLtS@@(pehT9tpy};#y59w=K6gYUa5g6g5#iH#l5v z*Fia-k+T%Q#X$LnSXov4yI=2>L=>|KvA#HjlIwM#Vc3F%gKUj0M>qVkvp8eeg{y=A zxz6931^V1CSA8v_d;&46mG(W$ON&)%{{1agVM_2p>DnW;>tM&)i552-y6>oQu_t5z zMN0hxyhFZVHBI~WPV*F#bZV_()#LTFA<&vnkoWtPaV;_|5Bix_Ycp=Qu!=p`FPYGoJI z8J*0q*e}!fA@DAjnzCkT4(sn6Db=+qn3|d)h^Tdw8w!Q(oe-cxiv}r^oNJG44WkcL z0z&cMuFMX*-Br~r^HWIdB;)=`PuWHOdOU!d(@#Jc45Ks@q{1PH%zoNl$%96Pg?a_= zB3&TQ9yRL4)tGFZwX!2{mxaT+Ci&^==nuwx-+C*CY4>`sK zLPZwR&;w?%W8ZpB0LM;KKYmq7hO#mNmXd*wfj7`z@9hIu6}v{%dBsHclmIbvwCNs>ye}|r?mHQ1~Q_(m^xx^-2Rc(CWDY@H=`N%YHOR(lQtijb`jN{)Jm&{n>Qy@a!};ibpsR40_@_hwyaulP>#4aAK&D ztpu8XwAvu-UEH=|wB~T*d~P35UafjiA#nF^Y}gdse&z;_@2LQ7sk}Erw~V0zdx++D zE{G-5n}aE-bTIyMTuK4$yQWBiWRb*S^hySBbLOGiRPOEh62TK1C#CE_JG5|s^FmLE z6`X3sTUqe)LJ6xm#jgY7LwoBvqMsfy2Ol;vg&^IY} z#3}wGeE;iG-Gz#AFAzjp#d(T$_USC@X`9@bvl@GuHZqNvk>xAmmIuv$SIF@X1`VK?<9ir|J?nc+aE2349wLd^tyr95*!r=@RH3GiL8JNv@r( zdA7Scxko(c9Q4PD^VqP>yku=xtxg$jHvMjTuh3Nvgf8v*=txm2dQ3G9+RB(eof^F* z69m5?;OxA0wougQK|v{6Y+iaH=T`Qh=WzNZS{haQ_gQTAV#VX0f$k&mtYyT@G>Cwe z|5i9%8oP&8ENGBPoG1=68Ymg!#iURlr7gsryKZtjY{i>(ZfZ|c=DI^Qj32Gc-2M$34> z6k&A?zZ_j8#zN*s?3eoskL^{#Hn*6@%x$@k5kZL*6=q!Hpy}7txRSxQj?S~RoA_RK zQ)uOwa-@7w7bdBM4bs$2sq9>xHDh6x2#(W*pBHG=h}LCl=u>WN*EFPSXfTscK9+Fv zX}3F1cuh|R_@x-#6=<1W9WXGbxu`<{q!c9y0EVL~;+>wRk+nTDlVy^zDZE?itsL=1Vs`_Lr`{vuIStUV7%NfbTv6ri4XFjyRG` zJf0=v<8_{p6fI)O;XjeiNT>f&0~aHTOKHAF4Fg0R*eYE{sDZg+%TqWgl!3qR!IBP= z{sP~Nko^ZBNe#2g+eH;cQn`%`h6vZ2(1R|)cd(!$pIin8@1g?Uy>B+adTlyG5lVRZ zs*jjgA}nd)wdNvjDi!X>MDxPLG9 z&~rq4juO@Epw+O)y%>hS+A311inKM-!Z01ZBy2RBcDcIKt$!fx7^zQ3KT8VAL;gB{ z>V);@&=>M)y>oQ*At!7&;NgOG1H{Z4o_(rGLM3_`Vk1;B?sE~FF`hu z{!;^GLc5ozB1@pYYoHMQen9Sp+xUVIa!Rd$q$ru%QAn_ZaXu!>pjMv$L$+B8Ix=Oh5w0oo2VjYeK2X$!kRrz69*6ij7fj} z1=!fT%I=|H!+ANFO~dmbCi^6HgwnC6^{y|+GWmLyl}x=R#rfQEt`@zSRc)AQ5Sp8Z zBd|RWhE7t8lhGJ81P(ntc^S`xI~zHFZFrxgG)ljBWIS1wB$UQ%TSKOQS3+p zM9X;j%frMBUmWQbq8H=GEML2I!Auq6cuQEk7eG|4k{nrfQCgH(;MWh>dEFhX!jG_&tfJ124qY+&C^$>hxcKAFO04A zr+mGy&Lwsx+(OjqI#v}u3wcotMcl;y0;~YE!#;i-IG5ul!>CgIS;gE81*MzMhSzT{ z4TfTb-@w;0_WmV}lv1s|NoJVGUDArK>!8j*68-r!2a_-RU{ZzN@->f2^!%cwVYQks zAms|#@zTr2CfcV%b)$l{TQh~52D1?+cXBUNUNSI$bJwnq_P+O`Cr(w7Fv4CMKj_O0 zNC6~wih>T-8o;|THP&+M*x9Drjol#iA|8aB-5^6T?12V}hO=#35wb?Uq3UXUAalV)`C0$Ip0*XfOfae$WD*-zAw=(y$p2WY$ygjxA3*8H#c96qfl z#*oB#G4kj$ZR0AMV@zyf6{6pZX9&z9Dote!utd7WxbWnZ$X5O40(R}EWyBuoT8;e{O=5!Hzu7TlsnlMA`5bJv}<(06e z3p%tAKwFO7-{JPaw<0c{tZ${?p1S6m(NquW&C^nSD|7ED)?0z@2;KzgI%VxhE%v#Hv-p4^95 zGIi_f#;JpjI?dNKcn2g8Mu~H}qi}FigPKT|hV=Ny6W`eGnXF$+G4kEAwEv&Qr_1y4 zj_huB1#S?&1?vdVbJ<;yu?Q^heI&5gokib!d*&JMn-O)hD5M(1jFz)gE~i-E&O`fb znm^a~nYY&*n9B1L>Bma8nTkEBH&K&b+wBnln2XNg>}G@)lpR}p>);n#k=%?Up{N8* z3&Te?@?H}RpuJV~#xr3hH0#=(5vi$EOUCHUr~`1xXW2utV7mQ_n0Fh?Q9Mz+A#vXf zvt43ODvUTxbbCS(;SeDqeljXAIkgeB6sxGQu^WFp1bQ*WeSyycOGF#f-eX8`9pp5u zOr`v;f1q;7E>OR*m3$gJAy&xD`#-QWfGDc2sdZi>U!-dU(jj@D75y5Aeof^TVigUp zdRT#WX2}FQg}U!?t0UmaIqVlF--?9fT0Kz zmJJ-4f!kG9Mm zIz?Lvz2UMpzApx|y6j5CxY%tdTcaN}p&5V5Sa?o7PND?@CQZ?4rGgc8VcHNqgr=(> zzUQZ36(>+^3TL>zjQiMGd}NxE@9|mrhdnQ1-(FKi6NEmQzHK}(^zqlPnf9{%i0@#- zx*O=9C$rxl0;h$?5rmv6QDs*bV$aMV@K&qf1Zmx$?h2!{%t(W9JL*xd9g{T7@#dfq z=Th>IgNNy+DeV8KF;1qHZjaMCBI7et8Px@(p4E?%+p^KHp`LX1L6EbKP7sO0_#A%G ztJc_zif*UxV<0ax)@kC8#YEJIVb5OP;)R1(*6NlisWEe3yW&0=Stnn8iW%8@HFPor z3i+fCCNsaYpE?H7K-4i%)F3CAsS2Yl4XvK)R{%Nd^+?9*Oaypitj}A)RIxmUKf)a# z1Z%JvC+$s|W2;(c=h=S~oY2oJudc`7K4Uh!&|pv+6`)s!C$Iw3xyqqdal|(Um$Zqh zxKo1INbnF`4?DYHG2)~6V?5WQ#-!~54&a>)7b$Y+slb#WKfQX?3L6lfst%bjD!X#9 zbp4aW=D_2jfj_}r!|lhlX6+P{r`NS){qg~}oB}qqIjUqwR|=5BpaG(METD&XEhuN}HC=qMCOVv%Q{oakC)Nd9PP zJNUDADmoK9G4HUtRAJi{8!vF=vOJ?KUYeNySe#5T@r1b}iYsn>05+I)9C!%5M$)Co zS@+DM$W1e&&SCg)uUe^KNwL3%BE)YL5AVv=>_LK?e`7#-$7xwOH_Yr+ z!4Hr5mHx(7o8Gu9otoTT^gLG%I>ol=r=>=Jvq$$wDdG{{Q!giJ`S++0QZ+$ajyitA zE4uSs43?-bg~{hDJ8f3cdh$QPV+Dy8r%4M%2zjywAGDF`#XRhmavv0|G<*kHG4f+x z`$EUMwUZr~H;Wg3^U_FsqK7G(5O9V`G&FWCpn`#DHz{kffHKsz=sDQ`8**ziK&}5^ zxu}SGCD%Cpx5;Pi9YbBbiR^uKvMMgB@qOQ?gD+)U_cbHFnVRuURb5b5m6jqCoO*Ab z`Wz63w~&!~@kq@%(-Bb9SD(gkPA*eMGjm!sq@Xcd6Bpt&kI!sRnf#$>h?jn~+tmIo zU2MohEZekWPW&?9YbB__^vALIp&rvuhp8eSJzeiXLPj6>RUi!(>4Dx_%g|y1G;C@g zO}#quIdQqnbCjF-8~yv-vi44&vbfniP`M~c7!%v}hPfN7#Rl9yapk;KD7+|@oX4JA zE-OcM(rHh`S%wK};~&2n0ZaZG+nnKJKD^WRAE=(LAMt6KR5$2!DseIQw}JiSSMR+a zPR87Q+>+ z;mhs6L0#=q1+u<4X5%^f6vdxip@-|v|HN^Q&FQz(i3-i|6F)bCWz_v6SMK(2A8Fm> zo7a|@Bnv=N{*458)-zu8kc#)sj-vcurM@q7#lw*507Y_io#*Ybv6X?)4q24h(NZjh(x;?jAqxTGdyF=^ag- z4Z`Mc(IKUn1>ii511GjJtj2d4QqphI#_;NhufcIpnT6<=7fwg>oD5X1EttyaW_F+t z?>caJP>)}A0ijUus?trP{y9k=T^5*Sp$tL;R_+@+IlO6=9d5P!&JQx=)QoHphLT zVYT^BMob?dIh9CC)4l4;eLWq!U^&Ruh10>R@U0D+X_|I2r)wmr8&LtA{TH{*Ii*tr zn*(lWxChcK?jDy7@+5t*Yf_A33&}+ldTWCBiVf5%HO`l9R&tp3N#Xi*!WH-F1P+UC znA7t*j@WvMuc`k0QW7i?=JCQP9~)-&S8B(}%qac$!{Lu#Pdw&dtj}qlwA+dgJX z-s>NEl89ZSoCNQMvu3ixIy;S(KPfrse~$->ilIKdN|9&jN^hPQm9X)& zfWus?NWJ^bkyx`&<5wTC9>8I&say9r6{BgPMD_TkiqFHcWp}HcmkQ%|ZvCx|4-NnH zU}L~}G8?L+P0au^*fd2k>?zMQvu>Un`wK$GdF#C0O`rt5@mh0IS0y7RJ$lZ4tI%6j zz0NPXa2sRNE-I6fBk{$?cmRKRNHG?|=34JJCtoGehlV$@||)@~USmj|@6r z3M{8(a?&x>k{0yF#BABhfycKe80YGQkR4Dp^7a`Ou^S1;Ha@Hibl@ka4)In_R)0TL zLn zmrdm~unm}8k?3aO4<_z+D|6^|yP^ZcPhi>54t}G>x(P3Kns2fz?!B_;e&Uy!?g!Ze zQHO>D&kvNvJFV`unW%(}2+gHI0m_;8wCrF$_r?b!=C5SIMchviOy}%e&C&D>$CtkK z{=6D^V7Kt*7at29sG4&_pdAw4_hJ8D1V}u?*DJ#8-yQy@_apI4j3wU+)d9OQD8MNj zV4T_@ILB1cwV7d%)Ac2c5|!Lr6x!>4RQbRfV$Ras(Ur+% zN}49lqINLihAT|zqh}i(d^cNytiN{d9jJvZ>N>v42wv)M`xBherxPkAa1}DrEvJU> zNfDdlWlkV7Rg6$#&pFsRQ2~ZzZ$@xir$?7LXI!T#q?R5sE7o0OA~C;Fnnmm2{z>X} zTBo?f(b_~>mPd<#(49-K!>(T5y20b(=?#6-z2b6Tol*LXrgTMG+Ou3W^0>zQD6g=d zc1HsT3S6zdM)xQmF$?oyH2PaEjEiWV3EB5a{(1n{pwk34d%eo;gqkJVh$Ow8dj;PK zW3pk?0r3gE=bb(v!mAaQ^HFqMb+QaHq};#h!as?m$03To1_H6F4C~d1|5X6}uZ5QM z$k1>W$?~~-nx;Cg!HkRX!;w7H5P6WYp_fo0ylX;LjUmEIhZdyjjfcqUMNcA_P0#)T z12`&Keguz#x%wvI3B_hY?ejI8@)~Oa5$*!VbKFSGr<_!&JIZq*b@!Z`4CN{$l}YVS zLIFr%%z~_o>ku&4d;2i%j>@NSaT$Kaoi(N3+NI(nS*L@&`1F4f&3c7V+V>^7oXz+B z+p53hhBM5*I;LLU`1A`YB7$w3lFk*Zou~NSh~#y|e}Wpw;lGP)BAPuTF_U6o z8;Ao?N3pMKRCJu)!D2vbb(=AZDk4Vojucy0tAC*;bYpsX0SDL|lLK+-g|mwl4=gf- zRylky)b{l5bxM{6RB4)Vo5D08xn;rBvw+{GmXaN@ss>S=A+cMWY?q!2G9)$3{bu`n zHbd;cXazgMV|qOd8$-!-bti{7%gn59bMw>Ra^V!lQUNgu?}eG>s+k3%y}wU7Xel5; z`1SBioL^0r&zI&WUM_}vL0M%x7(8h>9))PGxbgum)KeWc5j#B--xJyaTYcHq+4@J3 z7+6B5O7@&bcmLMZ<8gbI^XB=~OOp-;Qsz$|mYJ$vw2tFiA>1ksKM8T#@zyo?9w40k z-2r$sW<)v7Xw~tCo(gk3X%ic zGk*C_nF=(UH@wB-t+F=~Da zi?^lZu4S)3A)X*MZP%3+2@fGlb7M8k!l-6BllU%rf^EMu*s-dQ; zX1-otX0&89dWa6@Iuw?Rr?T8!1ZWs2=zWzuPG*~Ue#xP>B%XqRojE6vguv1gLXh69SCjJ)Y(q%_>>t+X+=*P zYHzgk1$J-F?mlcg>q{`~4cjyXCA$*BF;Yl)2aCevp&+_dfa-qPHhAj zsvM!rkbexI6=1HcWbFKD%#+2J<<7#Si`3@|9-O1lIGf73vI0qe`;*H!pRIz{t;? za~L$9>Q(DGF?}XN94)N+n22Z+*H%$7tGb2b8e2$dGm(14WUK8U#=xtblKM24zOi*)B8Vc)8SJtVf>DGDa0&cqHftk?64c59bcN z0%0}iGV!IP`=6%SAwQueLPTWXkY|n8>w<_Ww2~FpRZ%&#O)KiGfWM1eUg_XV6NkNs zz5BFk6e|q58cm33HcSi_6enzXMoa%)w(msI)HoH35{{9mcVa7NeiD)IKzl70%u(W7 z(Cc)5s)i90s3-k<*ejZ3&tTBffu2aYz*@L3dmPv153LdQK}8ld*BoDA*$w){;1=sf zP0ieoIAP>V`g$uz^}F$EiaY)yQWa5pSR15PI*rJjjSE8Q-`a{&Sd$X0G#4Hy@CaE1!ov}9 zj_#~6)&WtUSNfaZ#m>np6Vu0WyH3nZms}P6b;>~9+3%-gE|r|SLDNFb%ZfDBZ@sJ1 z=fZqh@GqB`CCPyfSBizVxP|cGY)(~elgZ0|o)NZrTb!|9ny0UNV(&qkSOg^qGV)i| zXwVkf#g4qXyC7w?%j>ZcpNQu@7q(S5w9R?GQh^NG@oHs5U|Bm>>D2~{>=IrzI~t?P zmCVpd?w`4TTKgCI=u9wzH;9@Gyte2ORdCzYz$>)3I)^^`g=ra9c=r}n^k~cu+Kl8( zbO(>MQzKd1gdJdU4$d^5+)r8e(4ro(;o}gTwi5TqAo2Y1gGM^704g)iT=GX(1){Nu zWWPlx{(bgy6yx(-RMQkIS__vl4(-T22-*RlHU5$&A#l^#b%1;!&&Fl|kX=gG3dPZI zrSphFs8s|dJ#;TAMU0C^VV2zby!)AdU=}z-mlDH3uFx); zR_y3rMN^^lqd;148#1gYj6snw_b;1}bP_AJaKHouqp7d_B1b_TwikjRrFV}`XY_AD zJD+@?f0`ucyK+%zFwI3iTVR~oW z3cLKHT>iXHyJxCYV6b#@dynV4S__itEzY!fQH`Y!h;Ag5$7F?G!@kt~TH-?%`!clZS{3*>w&@`d%tPXuW9^pn&S-7Fx@+8I9kz z^*}Mm={UyvLr5YgCg8Hy4L;xFCOzws+YeN{dEhm)9VT#9$VCO+$92O}vPFxiG#am> z9MFjmOi5;(9rTtSWY_$XJi#dVX^LsOK#m1ulFr2?Clc-m1?zZmA!`9hLAq<99C^YP z?l3Kks<4zFm6-Y-%>kN?M7Sej&81CcM5`gqY%D_jawsYPK0G*;koJ{`Q3dvz%V0}ftbk`PDw{J&fPnZV%w=nJOs z1{99(-V312<+FrR3qo&(qbrroUp{Wn(}-=mIzpfrrr;pwLab$2V*HC*@;s#f;wNk6 zmCYd@?V%=i_>1kEW_2>xSN)`-PeB7K)_qo$Jm?9KNV z)VeB0x6E#WTPI=MLUGQ$!R<^sxs%7NV%2N*-j4G~$vP8H`({B!WO**rb8&+N$jWO6 zx~MLeF=N;Fsh$+szjg82AvqGQmF$766|UIiIN*qtTwcV)G^1Ou$#n|q*%UUZ`L0CG zSGti~L^({6>5@u5cQm=`Rg0N;+I|o}oQ=$2&Ngw=iojB2C2gSQX~wXY&O=wg7id_0 zH9vs~FGj>*P1r%8tHG57rg{?7iEn;X+T>RW3MJ2%Swjw18?rqqPT*seppdXJ0_5j- zKT0~=TabZPg>1-Qq|v0>5iiHj%4eMc8k&jt{+2WA_PVXVXF>hJk2Ca2$5AqnYFlU2hZFWpRf&}`H_H^;`y+I`FN0QgRBf+x2 zpiJ6yZ0G6JyyDIwAJ;=Dh<12hf-O6!`;x@CD%AO0rHDwwIY$PVVuB~*)qCT+a@N+c zkP%YhcT$%?$IEri_lNxvMG)Ncg?>x221|@81(E3*C&5dr40=a>6NefdF3^G<*uu!I)~)+;Pj9WS8eKT zN+BXY^`&XP;ce)ln+>8Z&IJAU%_!=7G_rW6Q}f)Zq(b$M_jzlqqEd~YM0L{7{xKIr zHg#{rH7^s#t!%Xhd2k3XC+3;xBVqYqEP*k1mPN=EIYATv^w&;}jaU~FT2MVMQi zE;sAtwcxRp@9NhOfzSCUO%rc-4%+Neox@29(6vPiKArFoKthnXr;O&B3&>!O`}GfL zLxR3q8P2X;e;=LC#r{*%+0k*GV$ zw3%A({5Yo5^J-dU%rKt^{;O1*tDo3xb00m65G^P-llJ(g{tz5>;V5a*`wLt|Ws91= zgM@%>6d5>J;7;~+u&Iu_iWCXy=$8>tM59N1-W+mV8nU6vJ3iR=jea?dz>|Rqx2~WB zP-7X_5$@3Vu6Pwe-d>7h5vGQU&}uI6mspQvd3WS)%uIGe2y-aT1Wsimk{Zx!*A!Ma zb3wCLq3W83(PD$hgq$(|o*I$Q3cTuQ7h9H1a*>%ZS$bC1@?06i9|xlc76?&*Q+O61 zJpLv&`YG=AS7q^BNLx_>UR319>R6neJp)uiL5jt;!tab9b3n z;W-@~UkE+h$m}PwF)wkS7BgCV{=juyPtv>-IAEfnULW^VJ`hle<&qm82&0Pl)p*^B zH~9j;{bNlWSRmUpe)rih`I;}XGv?9*LcQ|>9pfecWZGZuZ_E(MB2PC_!Ow)?>MOlYq-VRWq+KTWoii#juWGwE!TF+>*z!^E4Wcxj;BW$FY| ziOaSqW!A`!g7Hc4{jGMG;Tqqe-Dy3*POg9E^gXD5-tk5c`@6s(WWs&vTcr{&h`Ssb z*z{eg{GyBiWEr)cqi+j&tiKN5eicu!B(bvovht4b{J&nAzsD(?c+qD?o{F z0y%2O$epZEtDN}eKQ|W5La8olbz-Cy_@f`AZ-hRpP`_Nn;F1QnwosP6XJuIaW}gx^ zsebnH?3E68v-rAPF{VL$>(?RE>y#13{wo-u=!vOJ*R@JMcH2#69?SC4&SbF}W;d3b z=*@ii2e`A*)``^9)h<+3S4NhlyCPQNWs{Yu=1T`n(uY{)AL{UaIM?49 znEf=p<1UwKnoGhGo>`tt2KV`#Infs+BHB~X4r91{ym7DuxfmYvK2pa;$=EEJi-n`sc$QevkNOe@ZdLtB=l2$ zy4$HkLe+d6IOr4+%NrXsB=elM5E&t@w7iE2$n}(D8+Mz;-BDo9pbG#Wt zsv_i6=-iLiU%i$$JlfkCY;2ee6^10hth@s&iX1%RPtahDs#;z(M2EwiF?@+eIjn2< zYR?jz_OKsp?6BhjyqCr=$iVUY5(sY0=fK7LBBI;jagK9NGv{ml;u);-NU;B7ULme8 zp)H;9vn)dnSK_-&%7~Y(+|NNi_nNlSi3CGeOVZYu+~SKPxl0w8Lva1X69+wsIev9G zF^Ysu|=S+hl8~WKJ^9965CVGXJZnRA)neqM( zc->EaaV-+o2NUL}!LWG*QURO%GX;+;Og=dngz~KVY9vGdEO?BbeA$eChUzI)#}b|Q z6$K6EWMHwurAL@{luDdZO%MF=fK6HCN`=2^^!qF9P)wPms;q50XY`6mMYa;(X+I-8@@ z!ppG8v?U=a5Cey3`60RYYL1?xM^x8qPj?*CZG+#$BgMU{{41R*K|_jIK*`S*j1rPQ z$8`OHi)ML=snjRKGtgSGA@LGz=kuv2PO-@NKkFHHo9TzcP#zau8_izwiA_FuIfT1W zBGv)x)kL7t3=iQ7uv~-9_a((|Knc-g1SLV%R)MJv`oTLlovqg!oVl@AeVJMQ+y| zdbeX%;4j?xI^8G}n8|pHsM{k&k8^nqoqgg-?(X^{5U?Tl{Kp4dcSrcR2fjpZP-fZZ z6XG1mPmHj9Od5!owQCLad=j!WO(qu>${1u!0{k9YoDi!6%@byam(jBM&&N={=UZNx zjNRCXtM9aRF$+)GL~y9Ey`83a8|&BY{aF&?9wJh9V%!4IdaaLH-#yS5Cl6}cOQ_3H zB;tgBGn|pic*jY2$OsAxVdA`GT}HfRSAI6}!1g8v*Tk9-1Ff|Ph>ON8;o}w z3w&yILXhjid&c~;_+s37qLMQ$a0E3ymZP7J`gOj<>U9(IAhuPB%ze{AY8B5lv{xEQ` zSK0bBaKLUM%$*_I=(hVfrJ!^vhNL8Rrgj{VH#QnW!qvi@8Tb^tuuJJ4=v+8e;K7hp zWx%JOoJm|KeP^<0UGaNNCpe&~kC<7Mv--dc9EqDx$gli`f4O7CnYbLSL;8RdQk{Wp~7gM43u#=C|xNyW@AVw z@{%xZvo+|d!nHtG_$tGw-lz|yFJ-G9jc$J>QtM}!$}C`JtF`2ue1pPDwFcOCq)ZY7 ztird1jK6mQh_iB0^EZNlafbpAAr@<8K8~tv6>SE6d7_!xB6Nn3%Kn9~@`92*?+Iux z8AuxO?frzV9o4+I3b5#l-g?eTuKla9O#_*8LEE~8d zR99MJq`JC;Pv>Hrx%}8i5SHLNC&;I%p{Q^c|3Tq8%S{UnLt@m!rta(-{lB=%@XTeI zW8*QNO)GU=?${&h7duSH-H+vIGj0i7?N??V+W5u#sIdk2%y;W;N&GtG|gRg^Ap%RsBWq3Pk{P~-9KJ~J;AYnP>o`QERe8Sv`aVL$IpDb#Tt&J5rk)^u( zf1cad6 zKTY)q?Bu)P^mXgmn7%&{&R`6&OSM$Fc%L!CZjL?a)i!($QYHWB{OWvo*etxn8en}W zx4&1N{aHnypYkwbb&uCEzfeYm>@i>S-$)j27n(z!HphT~JIk*R<}v;oBHx_fewkl0Bnm@@ zyw?J#Mlw~&3@DahPoz|2I*!3uF`L-TUwiWNj;aRSV@wZf0ZEl#GCv8%6;V6HhL|uj z&-fm~J&xS&2%8lKLZOm8LBXfQ(~3nXgw$0V^5Bw+;tyVi3N>|M;=*@#*6)6lG4&idvDs#X%U7x z_n$}~YFY4v#}167N?Hh^s%TVW?$)EbqHgWP?GyeF<`O#ns;3=q=J@+l-)u=J>O(ng zq#5-*l}afU{`R3?FWaS@L>Mg4Jds;sx9*y#zyY3RBnN*@7XEmbv%|}0%d-dnNIsiQ z-i^=l3hAdhXjS3Gu*7>E{29q$Pdx> zKjR)Uyr)=}MHOFeF-~TcmH4R8n=_1FW8gw#ZR*=9-ZGbK zGPSXsC@dee8Rjgq)ldPMB{Dy6;j7`e*pXntE1`C(G`DW;CFF;3T4&7SE7t9?Hr+`( z9&W{SWLawryTvz~XlpW0-gzI{`bX2b5QDXk&bAg2sUH5sMF+^9NLMx%c>TJWZPJ%B!q@F*q> zdzQGUiM`D87y(S$3 z71i7|sJO$e!I!l>7q(~7DJUU2BiO=bMqcu*L(ynos^44a=)dCoT@)c|Sn3Jw$kd-b z19ig}SHyoRTmN})0uw;=Cz(Lhp2?2BmIPaOVge)-YZy$uW3O-#l%+Y%*-m!ZK`9x?9@d*3C7-|aVd^ZV=mmTS8)5kS@s=wRhIfM?~{OG#x< zP;RVqunGv!)RW#_FRi5P?D-(7Z)leHfyISAI^x_7af=unD~NrN|6b7IXHR9>`vc-x zp_X_Erm0a?FHM7=NfP4aCp^)5hwIS@df3x?`25J(21)QtJ(+R+gXz#c0uRnOIv3iSxY>v(#mUTw=`w< z3EtRJRgZU2M>Ym#^*G(z6L=K&J2#8dutUi&UkektoC+T&^0#uEhgYs=n=OC82rs_n zZ)=H5e3bWBnD;44t8X5B5O^b1D2%rwxzAbGY8(Nhj-1b0Gm>QC2m0*UT~YqRGgR>P z*%*aa!YjJWdnVTV3+6ZL*qgR$5md6v?%G|>4CWtT8(WDhXDx4NgG`wHW|RA@oad~@ zn+N3`d-krW7;N0-E=`u;SNQjmH9I1G*RUu0+81PV>RFJ&c@(WOo_ep6aK*>#zH z@sABS9}fTPuIcm9$aLJ|%8Ro$%gnMhZRJ$@A`Dj~3Jg^E#s^bI4eG)B-jY7UBFt%# zU|nSGbCI4Ft$1uR{rMa4yEO~LZ?=a}i==39} z4Jn}r09Snaob_|9i3_^iJK>Wl<{X`hP-301?0z|I-BN63$z&T_K*Km|55{Lb;cI2& zyO#5V_pGG*U*zs=as>*hS9v|3hS$i{tVU|6tkr^(xzx+3ezzf{{+OC5lT0;9{)#N5kcS%nL= zv~mx{7rUiCDCZMVZhVZw2|tURf<79SX(TzaR@D=K7!Z1dEZq}0=_iWmH)@ zrt-bH>ecg^uedoDlq-=nTR-(tu4F1qZ>{mJHDH!>%48r~J6Ux6-<=jQ(CS+|L2%bc zsh}!A3JTOpuT2I$@I3)o4Fmh*pn77Vs~c+I_w`V_u-IafbV6HLtE+iFXYvFZK=}+V z3A@>JlHZ5)#%E2S^Ef@9XpDa4Qh{Wl-PNQ$)jroh%!NwnfLgkMTId1P-==(Qx_~;^ zN%_u0rQjfR7fru)=#+%INoF< zIo_!f4gSc6_fRqATz05KysUdB*h!D*K>qB9pJfLj4LJ-U!4->K55pVz`fuED(4$__ z7@bYNb*01qk&mm~S?p>Uq^WM~QjOsQXAVbte18@Gl5wVjyWv7{(I!d-K6XFV5XS&h ztORJ_!#(T1xda!?xLVk7WB~$y_LI@~x7p%_c;j^$DnOqc7hH0;dNt;-vi=NG{7;@S zW+K$J++$q9XltYl?`itQFvb@w9iGT2oB{zSrRh?s<6*b`+A= z!cZYET}eehlQm^26)Hq;Anvx|`4O5;ao)?=G~ks;3aY-c;`kxz;*?;poabs^F{S$MFiKfynuvh3VbsP?$X|AHY9g z+4rsK2~aVan3g3u?TnPGoOK_~T|tH2n6!0QK2Y1#&vb)rx%6C4k zfHtXwzGQ~KG4D~qaoBi?@L8=Sx6@i8@56E#zmL?pe7W6;JY90`HvwtD5`Ta6Zh-UM;|5vJeX z=SZ8TpNlKL{NnNXG(cw_7v~W!@UXC8(!+aW1DMv3#&&dCJB!Yv>~HO2t;y4mS^a%~ z{bE;bb+XbBt%l*8ZKXW#;tWDx++|U|fQpN_w{zT8!m;k`oQ6~UrzF#`KgmB0_dk7a3SeFFfa zl(e|ZCRyX+R6b{~DkgmFsjKSon5ldpV#g*AY?ej8MWQ2so|nGXnGUN0VN3Pqw$Eyk zikb67*}-}-nZuw?x7OCqD&rhQ_|tR(tKvkg83fQTrBzCFQ3kF>;4ThbQQp&f>Pf`r z!(a;sVwnb83=A+czla9Ligiv_m$}Z1v&Dc?;I^qso3RQpkC_~#8W#UTQ~MH*>@P?y z+H^9S<+#llJ_okqnFl@bnoO%Svi~xtEslCd-6PzgD!e_{=Z8i==qhEdaUU1H(>5AIuA=ZlXx2<1!P? zWHwvNfwVdh!BU{}EIw-dD3B$)HJ0}~a^2ckcnO87Cq^3Iu+2%oee`$+Y^P-yB-}Zd zgWHO`6j&cOOj*ePB-aai_Pn-Wn37B!xe@3%llF_3iJ&n=WLvTtIOdBfvd%;g8p;^Wn5_-&|6pKymbKQ$q%= zAptVM4~*1?;`5-U+!X&dOD|I;ECXsoRM3 zugP1hKH)_h>u`}>B76D)eLJ+6j!BVy+K-H6X_u6oz<$%jo3TJG&;zHNU#6Q_xY8)d zso$7HvMmPJGyJLm>SO28P84y2vxhcOL!;Hf&iCB`3vpTLc&l-Uz_f}VTs<|mW&8vH?Xhf=ijE~ zVGNRjw(+ucL*I~k^;}_Kq`^1Om2q6Z5put;-g$P z?&04_IH^|Jt|Zoe=i7Nlv_0`1=jqB6epBmN_Q|RAsn458TPb#-TrrX^Pd86lE;nEP z33WNRA5Kmh@K+2KivgQ`I=tMK-2=nu?+qS1PA^ma+%lI3rBovwl%)l1106vbZGhM2 z*UN-%jHR}F5AF)i_Ub4Cqo~Hi0>qs=no`gb{zN6OyiTUIoktj4so!mR3i_MoXK%2d z^7o<_fzd)f;6NW?ZbqbfE>Z~X%|j=9LE}XWTRYD-eyb4sYT=76Fdj0{wez)?lUC^_ zu*Lkx5K$rb2puBfXs!I$yyK=G6$JTeq_Gl7nB5Z37$e@gZ}5SQ#g%y-?pR>B3(fPR zlCAeo&@P-BN7IqUZpPl7Oigl{$1t=(>%(Bwcm9#0AVRJ_fSTV`e1NM^* ztU`0_*}!PjOJwfv*tMv?V5{P~dQfd-iX}1L3B^e`|05~F@{hID;)ZjBDhSnra{NgmzBFu=9gc7Q-yn*R`@{DWrXZ;)tDy^&ihwcg3OAJs&<(g!^6F!^L*b_cA zhG%G*&QUTq@ul*)U$R?+5C|eWrJl3a?iJo{8TEGK6?H$nnPKPT|3h|>Ip^7GUEBk&&STgaF6dsW)Vz`Ww zjW(0@pzl;!s*|9S?QUpu*+}2hQ@6OpF!Y^D>Ncy)W(WZD^$ZUYI4$Yg?)o2a@>piZynZ#S;?4ZH|x3lzLrB>htvWaSHz zMYn;oB=RkBBO|eJrdiS)&~Lm7?BI@q`%TT1xPOw%msL?>hQ5cwz6IUlTDZ!?k9S4> z5$}KB-e0hw0pw%)=r#k^Q+TzP-w2I0Y0p-K}pPc)WE0G@CP3@}&fDBo=zT*3#K zE&*8Z9rSfgN(2IT# zpFWkkbk#J#XTm6yc>kmJ)6AkmyT$8Fqbb%&$`+>J@kAK65rEJNa~x5e{0+sb!gxx} z*rCC+3gnTXCch>QFx}K;^y+DqIh`$j<8^r3c76uwS4}Qz{6?m_f74YGO^FwuLR7to z3tDUOPdzM2_AhQ`^+YRu+Zt@>^8p`B78+wo92W2iOo1X_jOiC5db&p{WfY8(tLwxF z>sj*^qg1SG7)05s-#?DiX&813wq!alPq_`z`A$S>vAJ5;G_NR}6#x9^L}|XoAQ0_M zWBA;^xc!Rl&LKaoYOeUG&7#I|$2(W33{7<*)M90g_f}$?<j6& z^W@Gz(&Lw`35M?;Om?!xd!jw;kU^JYwW=dx?zUS|8 zsNZ2Yt=uzUIhGf2nD=E_)+a%Mp00Z#W7`|ARIH_Ag;Dp+4VJnewtn=M7-=qBYdz#m zUwRHiHkOP-B^Nv87rt@dbSg?R0zFRyttf{*$<99^t&*fsX{=oGT0m3jl6T$-z0aN* z(kfM(ECbLx!ZjixTAn)28&kZ$oS|eC*`|%GbJl6YxigctX2%4?yl7&12{u zPJ0Wd!RdH){Hs_OwcUsx9G3=O^H57u=euxWr^R+f88sZ@@n3%J8iQ1-ESwb{nKF=JOKAc1_Gs*pqvD#0#}u|ZDuyl2t;6O>Ut-J|$HTe2t{VxQqtKDjXBQWY2m1%Cw$IkO>S$80u~uI$IR%fL zDS$2)1jXQ~O}nTRL%Dgye~>pH&wXD_`h0?!Bl=a$Wj&gkx=2#i*;Tlm4)M{WnCY}N z1n;zlY#l;%zUpgxjq%>uQe|4@BDk^MzCub26% z4>%1$_-xHaVh~Y6-{_ti49QLARBfJlj{?ffzUH8a_c*PK$DgSudW|aqngB!t}+X zFk#?k&t1|v56UEeqczJSn2Fy4^GTD$&0!KOnA1!s}xHjQvS(Mdn_Ur=jB0tJIaoY}~I&#YB`I(|_dLIRv=c+WIF zDUy;BYha( zq)Fx2g#AsMI>xWJRRA^fX)EXsnM^u!I*Y=`pJC|$GeIT7`^e16=jZRc z8LFI6T}K4t+tuN`W?s272^kZ#Md5pxk5o0l4|tvo0W-7l`1Q8l(3BNbO?ef=be{dX zIg@DZ19UnK`DRU}ps?m|{=L+c0FrXgW?JV4ht}PI2|+bDk0#Cou!<|{;u@;RW5^+4 zdXb1;OIr|Tlx{sN z_H*p-Mec`HQJC*lwOrIJDSWNEI zMS$sS_%6E+~6w_L`CA;-&Os(?DSh zM+z7x!&IZ;UI0&cYr_<$@p6_ueZpF^`a$-W7!ws~Em~%PMdo4q!&gdY>BprDmt*0~ z%5fmTN?SYG`H8P$LvBP_Wje zj;7WdcFAv?b_+QmJYlZLZhdGXi%qYNe6PW&N*eI&8JQ<^qvSB|Q(U$b5-RzYWrwa~ zk7NyTnAFRW8kcaZwSCHCJIhg+MZj+qFs;^)1Cv{gMj=!H;ym#{sPObTGFAk~dfw6g zcli3nZgyWZr%Wl9m!GS=fgGkuYK;eKtF;0B$WVJm8F15NX3;b{C?+HuMCQHtJny0z zMC-ahNeuWrdlb3dU(n;rlk(QjQKT{cp$-;Tb2djZrS)3k4^;$#hZO2lY9=;YO)n}q zmT&T7(Meh}N&<9-`SX7{dyNvo>LMozvqHR{Q$+|?IcxNDY5(tdP09m26SFP$vROr8 znK$0Z@*x7olQafuj0i6Kb<$H4XCle3^MVSNGF^UBz*c`+t1b`PA2q}%1#xZtF0Yqm zxa!YTaGf=S)|=7)?C#$#l6&le!swtp@2A%IC)u%ZfJB}vfAXD`BQQ0I>&9@QsD^z@ zCcQ)t@rU{FS%3jAq)F+)LJdjSxu@ybCyWN%=IoJhMtQ@}=lw}8Nf)X{nb#2ue56Ng z+V7zbG@KAThv|IWJVZjSO&Xl*hPIBOyd)JNwS}m;tLnM;-}Aaxsbi9kpDsk}uPPF` z)^r{w{PR?ro`#|%MN~{xWYM2M@nBe=1pA^`wJ9mryO)+3$(t_BJD&8;;;F*~vDT^*nC2e;2_xk|df5&-FeIXHS?(wfBn zl86;8>6_Y+&Q>3=4j4IXnTeRMzEo!;c!A${EnG9~I=>`dDdueIaEM zfd06_YuORla&DnEVuM0W<;effglG$N1v9K_7d3P@AAso)Vq`$^s$H}_g&)mXI2<2d_{$?w$p z?_5E;;K$A-@tk6ON^vYHzK#Qa=;Otc3T+(!o0*+>FmTmTQp&c6(lVr=s$;ao zFx!!!LAtJg>5VRU(67poHGK|04pF^GeNa3T_UWn$XF45OBa&a&3V!ERA{q1Ksp~?& z*+&=Kpbha3Z#F-(vq)~KaDvO+MWNrE5<+*6>w~wE9I8;vV$TU`*W+O4=E2vU zKtV?Se;^uQPh$h?#nMyk@Znii4|g!Wg!FvM1tDQeKsjMXw)4IBi?LN2g8 zy*uZEX0szlm|;mu&q{jJCIaEIF&AfJ#vqxrnLH>XS5`N^Q$BbyZoqpchXgUJb)a5L z{24D>!O_QFMx5sUwxUt&G-B$3j@xZHT?DVyOOU~_1;H6@@VJ0r| z04)Bw@1PqW{~veBvZSR-YPkGF#_Nxgn7BEE;fxpfbnmsY#d2Y2`cTVy=7I9$dunSQ z#`R`~3{|7fv06ksC;T-a+kZPu94BnTl>CWMMg2REq%G}+*BL7Gt!j*ALj+BI)GV;LOoSXq?W2TGcxwm%LHVb$*7yLz5y*## z1(!6_7g0W7F{++C8P@V#*$fKxiS^9?lf5u&qbPzzD|J5ien zaL|2y9N3i?!L5O9Q^5j`VyBWW#!ybVT-eo~*Z#u1+js5qpk^no-t>SA6qe_eiK$zw z(z06rh@=*?>#x6ku3VPfRx1>Y$I2L}I#YW&lyQCFc>fMExHp-OJOHD+ zhOVG_h^L`uGU`2yA3KwYMv5Oe88IH{J1lp3?3_xzogMFFQ~cyYoCnt=6zf$D3A@+E zo|WqyT?BW*if=NB2iRPY_{LgLhj#wM#5W6&GNZ7aW9q4xUgY~vnFtG2|KEx1h3F-z zPAux49MQZqFX?$}y?HC}@0B6Hhj!G*%5aXvCU- zlDZ7EMAbl@GA~m#!b{dt{w;k;_4kjA7u$5p!J=43jEC!p3x-928>Kl!M7S(m%PYty)IlwIAJ3!dR47L{UZ}9Bh430GLUi0isdm|c2fek(B}YreOcgyz zZu@qk0v7lW98uj@&yDDBG}ZO4FX>5mH1p(4t{EhGmJuXHa{r<3o;@pPTD)S*4*h;% zp$;UVQio9cR*(Y4Ei>y-Hm%=EnYq6)MnI6i=y%Nh)xYjk1 zNQ1nxKP#O#X;{F~ZZH#6^Pn4VvH0#ON$iG(FEW17-QwE)+z*)UAb-PYD-RhU18A<; z8MLQpvic=!O}CDi4=sI!%vV=eKpGKcmS1DIKB9!y)|d-60=}*dc{0fvvg4Y{lZ7Sg ziKRF~VW;&Q>1B1fV0=in^c{wZ+5|Te*i|~In(dm53ZLk>Jb74ypMY+^XJ~(++U9O= z+V8)UmfPtM&DaTS-*3Zk4P8TxiD(3%BTK~m)!;X=@UH4aBub9)${v&N)xJB*FNL$jyK__iR*Un2YRSxJ7?vNlpe^)(#H3<6e% zvC*!gXhec$Zp!7Kqj6mLmG8O(&t3U7$ui-9ms8@HI%aagLg9RI&Sc_N2MwK-@yP+>;LzId0cvZ zYh|(M`pdE+y}g#>-NT^DO3~Gh1AT+t*{j`Q4^mmrgsdd4M&|?#6dfK+1T=GiVjkT8 zd-UIy?w#{o-TsmCHM9${geV*Ib#9JaTIsDRh(25zbY8n~^`e(wbI@Ve>y!e-;1a|C zeh;-nT%C@9EXi6Giug7kEQCgdFMhgV6%@5M_IM|H@6lT)u{V`X zf1a0FMQ=TN+wy04NBqvVy20V^Pmjc-mcFd(I~{MQt>z zjTmhR{WCPO;C!vVVgI4!`TujgfK@-#XWwsVXaIpKTY~ZCk(hX(j$#-v?Zf`{Ucwd{GoM?{vv8(|)y|vPhcwo8esMk_oAF|%nwf&=J zx90dq&{x0d#?7uK#T!~yMfLv6>kHZ6-cISUfLN8~xkAA=RN}KIh)OzVW zTGw#r)}PIvFH*jW`8n0!KKyoy3G{oaA#`WzQ1802$iaf_^kJ`GVc8kp+2nu6{6*u) zNLSJFlI);kUEtvyqT#Lb^pOZ?suv!yIrAuM z%>Gwp=$}o$m(z98KlTJ_Ki%McO15ayX?0k&U_to z-0St@0_lf^x$O6SzxwT)pYw6S&h`$2=FC*KxxwvK5NJfxs^wL4#Npm4V4px@`i*r# z$9-Mj?|@E+t+GaMJvg-h^vp}76ou%o>+OXn|R|*stspjVH)YOpC>2H;M z2S-ubH{I?qSvoZ~rR}^8{r+3WyU~W?;>UeV|6X)$R44j}^27SD<&mcD2mnW2KT~$U zAuiCyILy^}>&FAH9nm=dK-wWcdRW)N;Z*!U=TXmtO=e#4oasR&@>XPWjO zyd9W&7kGH)?a_v;I0NYS^73lOKV$u_Ui-Ch0LOms^*8^c@&47Kh^5awSm16s+0}W7eP!VLqXsSIm(!E_(d&ZZZ&&9?UV_S#VUc?q zFCun)oef$-w>Dl}vv+oOW{Me%zWwueJR;&o<>b`ZSbb>Fe(L_^0q5OMxI5zFhx6_6 zUT4bQ`b|v!ySMZ!Z*oac*)f6*+l`Tiz(Ffhf+kVH}>)qeG#Ti`TNnTdhzMgE_p?42n-oK<2T=n*{pR+4xQ~hRL zQ$TWC-||9#S6A;fbLUgxt-Re~TC#7&zvGjeG7*UHEyw#U$IE`v`>V%Ct1bJJtDm*b zdC2fvcKrI)n<=Zk_|+-mWFH{m)t|C*iydsgZCTzw0&bkztB-Ta1Eol7l@&qfNFL39bp~9XeAzin6pz}SK0cg|-o6o?;8g?YF0h-?(Z{Pt zE35juGbG^RHaI{p9uybZ(2W5G^5q``i9TA4)<1oEci7-?IO#$hAPG&<#O~}gOy60X zX*)VP0tST>ldXf}Ab<#MBe8NH&7C@$%f9S1HafaXf1I{$Dm4sDDt2%8d)o0VP<-}q zXIh*?31FMYTV8Lbj6Adf#RqR6wJ_U}7`-7Iy)o`pdHA>JSR3>kSithKsE7y%GoY=Y zgr!!#ZQh+rIo?e>-ks01I{I03^pnJ`AGS&VL{>hW@6Du!1k3T?5ysleT0RV0e*G07 zFu#YV1Llkk9$3q5wg-oW?fxt)(!aeSom0kc1N^La6Tpdpo%^u2w`YE;X>-W@RLHfG zmN=~QjjcP!z~XNV7A~)@9xno$@b#SyF#3PG-T$+Xy>~y48B&)E7|0_hn?b;3W^8Hn I5{r-hUsby?hX4Qo literal 0 HcmV?d00001 diff --git a/lib/tests/__screenshots__/tonemapping/tonemapping-firefox.png b/lib/tests/__screenshots__/tonemapping/tonemapping-firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fb0055c28272f0c9965847ffc46de96d7c0452 GIT binary patch literal 68360 zcmdSA_g~U~6fX`aYHllcjx-yRE7JzKDzh?6%Z=blEpg=lcQ`98wQ^+Us?33i3s3>Y z%>fqaolsCiwP}%q6$_w&kba46IqrlkOoX&-=fBXJ>3J*mM{e zQmNFaN88UHOT;`izN)MuF7Z_0Dz6GiBBuB`tr##-OsRNu_y2mP2Le(aLH_5r{`ZeA zh46wx^S773{%86>e*V87@Up)e{J;PDKR#ynO9(Kc<~!t1NdNEU{^$2;@*DrB6;EmR z%#<-3rCR>)oc<5Nlm*f zl2+s9&p~nu%Z%4gk$W~dPtKzPIs}fD>~7`%+al#}m*xxBQ9TOWN4W<^Gry*6!fx7Q zHZ|^!Pwv9`rZ%M|Li+`H*@p8O$-kmG_4%B7QvOzU{=)*!#^Zk*4lg$+HX1iF6@UC) zdZd!3c(vy7MBrdFix})w^9!cHAyj<6<-U?xwT>het-$6UW2c9btbArJN?d;|YyS8Y z=fC`&|48|}!}(qE7Crr|&v&0Z-h9GbI7U1u5jw+NwlRq2j?OY;m^*L(7{%|+;~RJB zsk`5hNuG$=SXOk-VdxW)U%)XtEnMChO zhLdvDT&JX?r=*wn_I4-#?XtA?eriobZ?-5kj_$deNyH$pa=lE>>bWlk#`|hM&1J(Z z`nTD{-Y=uQU#y;gJ3YUeIey=px>Hg>zXWfmo;Lb{=BtC)PsX@Qbt$N=9@IngH9!Om z8zR9?(3$XDs3tM+g}^Zm9lz6#zh8KCE8^cm&)x!yGx={%PhVm5sQ|^C8!nS-omH=q zR~ZoJt@cs;?g-w4ZV_F*Iz!mpkddfU`~8#XWlSE`G7ScQodL0m?2yu^RNATaaqv&o z(X1dtGhE|YMAhD!YFgm&S6xRK~E#IAqUOGV*ii4(+ z`9^=V#QHifCA((ZJVLvKnr%^uZ^=Qqsi7`fRw(`goXHA6rtKI#=C=Y}WOKY;)vz(u z+JCd{@lG45X)C8`Ym+BQ^{K!u6>*w8sSR$XTq@xFZ+mD(Cwe7klEQS4DvE>h2hUV) zJp@%7{_eJhQ=3vOXD(~;Ol^QBRRN(=3zscXhsPBvZK7`LLfe;a7G;Jmot(n2ayG4I z-d?NQ`FgJL<-qtPhdRkAX?ePPjhDz>iY)nQcGXJadO{C(Pmi})+$+kT*xSbc+x{S` zx(-tfI54{&5>>a>4|5*KJ=OTDS`-J)?yl19^bs`E5XQ4b zw3KoL9|_hge4_FLpL?g>-|YhDoGdyk_1|Xd%*gCRUZSquslHG+LIbEB%8#EfnUq`kikNQiGh_+OG_*3B` zopmQ;M7I!4=nB4YiA`wJY?34E>|mUWipM?V(p1#&+^CuC<^i@gJ*82vaZv(+zjeee zg~mNZd{fjK)>-7=B6L!$%_Iw32UUhLYib(fJ=@l4CM2K2{GdD0EtN|pVMH`$q1eKW?hZ4s5 zYQC;BO#JK>{5U&LXI6cG$-|m%bM3|-YNNNmP!SjVArF?)C&$8dATCXkG(qdY*@1Sp z-f592c?I7ElxzWPb9zNC>k`9*i3nfwEYLss&Mt9WIQ7~oM9c%nM&!e^Z7M2PRj`u3 z@w6Y1nl?G`_m*mu3*rj!o<#!q|_o9Y(~=vV3ty` zES>A)R&ktgaF8cE!grR+x2Xt(^WLk!TVu3w2Pa%?%rf@n>Egjan4vfQ{qRYwTCw5c zi;Cx)0h6N!Mgbjv-$m!2Z$oJAFXiz!nc#mUCNvFUL?ah4n?LcFmhdhC7Bv?Xd7R)d zJ3Mx3DE8F7O0{i|;l>{k2UaW6zqwv8R_8(R)y?||{9Xj%SR`!sA^-~@OS~bs7<(?YzEB$jtBE^s-_My?h)oyrvJd2+JWi|9Xh;YHQ zyN5t$;W3L($BHw-3nL+icLoo=JJpy~LWLOTn&8Rh>NIEpm8TJ^)3oT%2=dd&>+1=F z=d;SW9F3J^IK1^GZuO${>cL(~nFW`2UqM|PwArr0#=Y+G*cE{~>T`N$gSL7dCkfB@ z)4dmBmv)MI*e%z*I~`8klQ12Mb&vaUv9KV-6>Sf!SU_SNDs_&;xb*NW+sE5fEO zTsYJ-*YQ&t*>q<=%bn=1%F^B6k}i*(UCyZVdV7+CJ;9}8270*1cr)_bw6YVi*d)_I zGFaX&QtvlvQ}f>5MJ(hv$57Cr%*e_si!F4*cPicF{ju_44`|tvV04xXG{%MOm-l3E z)k&PeEwD>` zf3=ap(|EC_4tByhxuj8OU-?u=u?eG~a#SA|`Jg;dL`v@i?cVd_C4YhZKQAV~YGChwf3@rqF zm}i=V@wm~o5Ltl9UGmwyK2B9qo{}^-qo*cEErh9p{wj|P91NZ+tC+1U`j7~#<=fPc z2N9#7hO;SA;t$Z)h<}@#RU1LeREj_;iX-#-49=>}u3i32X`Le3jX5EVTFdLuKV6_> z4qETn6`8$jg9g@BcV)CQV>OSEPm*w27>z}xzl!5v~ z?IP@4qbENvP&eMCAe7|yPvFJl1p~~+&j`jPn~h7~;8+SX=6FgOMYm2ebZz@Eab-$s z!0EYaoEyb*2}~tdCeu94Gp6(@S8FMT@A_}e!GV5pbh%34O$##EQf~>PeGj9R;4FEC zj(6I?ApTiN(jxx4U(#ob?w2S}l-o4BQ;jcO-=(uk8dL>RqDLwgQzqb6Vc3)ObjI*S zBL2~fPgC%P)dAXkD5H_HVI zHX$=NJcWZh6nXD*W^`N>r_iTQ=<~SpH8=Pw1w?dy4QbaWCwj$Xw#nnW1iHM&7F*P% z?i;Y%cb{I)nd-XdCvxPR<=P0-@H9m~w4DDO&xC5nNVF79eK(WMENR`^>^c)a!CtRe z`W<>3?|#_8(2$!|l^%=y6ga-`-!ktc8ZW+6*$AF~ZBl0UET%=PtYio?2^Uw4L0gA$ zs=@@>0@Z_mdVhUw4$1iT=TvjnUZ6h@zW!7IHF~{Z@Qhk04~Cy0JveNGvg^&sQo@Y! zjoq38gY9B;R$JF3f}aGn8fRX4{#Xz6_gxBXN@9Qa0(Nr=sXB@ucYj6{bQ~SRmeJBj z;osKE&Ua#=ou@^lKI$=~)CQUNwo%5d(G-fzJ=Bcv!QE<>#Je^8r;4qJ7tS#3*!+i* zi1P|Z;vDCvJuEv0@xHn=-vWEF52woS!-eWwC_JC)#IT?BF(C{apkG5c-_sT1318u8 z4+RPl*l1NWCD+8PdNI0Rfv)SM7&wV@9q=FpPM3VAVDkOR$OJbv+Go2G4M7Vf2RpuZ zH`~Vf#Eezp7zdcie-8z;h6X}-qoC%9oxsD#R^`BqGz zHfvp=`6NMKpi@r=bY;`~4qG_!kwgBXcLk!6rvU{Q!iR?q8}f`*IXB^rjHkwdqjIN< zK(I=9SBw6ec__^dOfRZVHtrmB74%6MSChdTlQiuxizgdd=CQz_^g(Bbxfe657yL=~ zGt_;mKOvF2tB^#)8eJzG9GjXik<)p zPjf{q%+=0BoyP^MqWZ1E_zjDv|9*%_0p7Q1b;Rh$Hh%A2^he}cdz&1M({A?<*u86` z^iiMz^fIts92Ev1lcgwHp*N1oH3wAyvT9C7U3*+%NQxCN&nIX-C!o9-5!Nh1I}ZOl z`Xt+tfCiGv-qCMPCHNjaFXjT{u#8y%+!~)W-4sk(BUH}Q9>UOIlBmGU?gekWOcsmh15$%C%@UoDc#1wDcKg zD1B$ZLwpQK^x+xGZPw82+pSH4f-3llOMH|+@-K}`FogF0Ns4q8EVDGIok_>iXkte zVT^Bi4`;rYH^`A+6X3R#lr6L#UZ zou|=I{pF)v@ZL?UY`cwCWvh$*5H)|=AV4N=H>U(f@CKu|=i_TZvAX6h2v81q#4vTH z$9l5W!B@RbVG=sZ(L1+yK~+-$)E{8L#LA59G1lAFAv-LA9Z8$8qRq_FXOLdhut2R8O2ToiTEa1krt!Nl zOE*DULu4=biR+6G+m475X7ktnO!3Q8#&1Fj6~={qz!+J9Ay)E1WE4%x(Ibqh74U!| zn*j%ZEmZ={RCb=02H0|7KnTol#E`_v_BoXLH$y|TXYXAjGwc45F%*}`kgiB77^#4I zc9h{QesiurC5P!acos*?IDo@y;Bwiip7o`b~h7=B|6W82o_jFCs{MKGH zGO%UtJnz%dEr;vp$~4uf)!k;7%>C1dVHX+aJ+I!s>H(J~(#faiYEFKeW@@$fSwqM>=S9|={r9G>{s zH~SZ`7Xezv5ANMJC>XblHof5IU11fQT1FxM12po6R`nDBdH|u)E=BpfS21}Sx&^sQ zZ>8fVyrOO^MZ!%tps8F#a-9q8j3{1_X(+!rK~2zWI^WGv&DqA>!_GofY}nYIw^5!m z`p*=6D+2s{=$W@v8dN4Vtplqan#p%($|IAHir*vuH@_Un7;p}@mW1qL{VocI5^w8P zCghZ=RXQY~_3{h4tP)P`eA)|9*m|p6F!G1F?%50RE{Sy-CIUMKpTyu;5xkxjlRf8} zFDQv&G!rKF6a*n}40hc2Wb^yP9$Wq7P27h8i+va%^3NSXL6x^FM>$8pPEG$r?VT4V z*Q}jj-nTYtc<$JrCwgnxB4x59C5MP;UdWJ{){I`5UhncYnVJfQbIgm0*Di{wRsf$9 zRrQltnV*q|M=2U~(a*Tk_h{--Cum4u7{Ha+k*7>553DXJ?kqqNd7yC^x&j3}Z|kB^ zdonxMefF{G)Ys?UaqYxZeuu zI6K)G2}B>D2z&_{0aX?=Mm`cxZK`~!z{qSj9PrZ3K!J%u;+}x=o9}J5TkC!!MZMV( z`;M0C70z|E+f}U8eMf8iYP8teQ0d*uQWz-UMn{+Kd?w1G{LJmV_Ul17hpoIDoM+c9FNj_08Wrg^zUIO?-< zx({sEhW7jZ344<{-2?FYk zS32IXhGolDs315Wu|dR@z==u)E_IS2?SVsb1i|MWLhqFYvYbs=Ypu>5K~H2o*Aw`z z{~3LS{c|QkdQ@f;l&-IbIuxn_5CcFsK`wR`w1Vx$%S*hWx+S0h;un%?d&L~tH%_~N zQ{KxF?wOMgD{5SQ$j5G6oo@Q~`td4%sTjHBcg3qV-s{O$F1&6|i$EN!hSXDy&u+7` zyFa^YzyZ~0XscxbE5HoVj|%C&Irv#A<<@D1zDwqDHfST^P}$zk=bnF>s3wZAJ<67D zu{>zl0upEmPz&WU11d2!!GVubtPie$0&Z>BvCY>{IXfl3qP z8GU3ajElDhT7Ff7P*cWBrH>JnP!im!or@Hs35FB zM}tU5dZ8So9TMyB-**$o-|z#G;%^TSs9K&7F@uqx+Jx^jsg(hvmk94Zw(|_ZZ$kDx!^!w-~E~f+*liM(#L`3VP-QK ze!541n!58Yy4cQP;g2YnRtYD{b015{bpuhC?Nf`~)ixM==Yzg|Y1 zIM-5b7Or(^K4|-;+mW{LFm7hhN_F*_N|Xrw!ao<{l7($hh<#L_Uq`$fIumCVP&8!g zS1G93jaRnYUXRwLvC^I;RXp$i#5$nwfWs1*0a9&8T_b1nIz+(zN4UAu%XM6>_+VHVpXm?nPa_PT;v zzD5dd)~71kPNCa$>GFzyFHkuU+1;aTOOa&~E{rlOS+gDoebUXaW2D=- z&2s)8>a+j(mT;>458B50@yV&r4=IPU6P@CnD^^E%&ng9bz${2UnS8bS_U3W6XboP- zxZgi?9}nW;x!w*M5vX-pr`(GrdJ}kCJ28qGnUdz)=27Rw7%Xd&3V$ZIpk7~BVG~Z> zx<}5bv@HxOq0rJtOh-HCE6YHCPxo>j^vvx#f1BO9wO>nq!fwUSEMMmeJI$J)GTXqu zF~?~ZJ16Dgr{xqPn04w8k;EKa1Z^fE zd7vQn^a#KBdoRHJRuHKlKKyul)!OBf{_KiyFXwvC+=)nwucv&ubv;_w@;l32g?&=& zZalo}g#8QGbM>9J9&dn^0G!vO-T|3w;CihkmrHjX`*yp5Frk&2$83fH{z=p7vfY>QV^*m@ z=c3YQR@*48ZupIZTv&{#Kltd#Sx_olnX12#a^Ruu0KwR&FhuKFmmS*U@vZ+9usQ(% zMQ&)-I}Ic>jh$;HvgON~8(%?V+4iV%yNA8XNbI=>TKGg~L{(uNzA;Lf@8w(~F>DpVPa~uWt=v$!{_lAQp^%3%tCLsLG-!7F26y8n=vMoKF+jgJ{epbFuhY@s=TS^ucNqXhw!V`hU&kE~`BY;}>!lBV~;S>t|MC}1013$1u%OQPg z0v}%WN`pkf;^5Gm&mAM+ zi>||+qtMfbo=OIoT1suMVx$X*Q3iA{T?-g+?{J-t%Pqduqqj;PEmY z5Bj|*z1i)6^5!w@e^9#+C>_ZqQF`fG{8E84C_W*Ia;jbY|C$BxkT2N_7w>GgjR;3e zBATtK7PnlOP4?9J_>GQC(jS0-qUp|8mp^uF>}g?8qi}o`PBC@!5&vWb269>Bb2%6m z?F27=)bxsQ2$m%xbiG@Xl51OH1?D6|E>1M ze#Hfgp&U&4#83ux1H1KL5VcV_IJ>&@v@lWWUg>K&O10(!Ai(YtVHxQwO84*SrX`B} zNm_j1TFFShfh<`axv!5~R1wI6QaP9zbo9!+%FZA_PdPJ8p^op1aI`;=B89Pe|CWbr z@eJp>c|`fVi7y|AHxX1*^271uwQmIF)7sBiDeXuDO6@!-&IMy_9pStDc0BKHqQR_Q zTkfyGnVU-nhQ+BAulGy;qr zrf=EsZeC$tR{Nv#NF*+};kuN!jqDko|8(zYIm&tVffyog)0=jc$Shb|ZWj*#G71D# zpX>eNa!=c`{w5;F@!-L_i-7Xe2W?n3n9hE<&lNh=eU?g^S#4=#|D^fvQ@@o-@^IT2^6Zgik1-C!2G63@6W(Vj??+$JdA+CHEIp)~`(pzx z-g|(wM7j=U_ecN&{80kHALcF_wIX&~9!Y-SR<&78+K|nIzQ5KO$t4z`I#2L9(;-88 zhAHy$mwIJHac{((o;mZ$3srk7`(kkzo^|ituz|sKj`+dPDi?Kd+JYM++w-_YSgt)0 zG!+GnTbrqv>8U#FvOA%Q!A4OOXC3QWU-kg# zLOC1?*=eA`fLZDkpX?Y%tJv&$WQ^Ug%$xVg#*j7<@v(je58zgY6UJJwnHN(U0wk%5 zs~7mB+tsRl9&y5b@Ch-`~Fqi+~-OL`qSpf@_obA_iY z)LJ}{A$C04Pn`dBti2liDkvh1DiU#(HgSwj*ub3g2TLNXoP@HmG<^X+^Ohg&0Pm{1 zL0!?+7lkUv(_t}=o9XU;#>|){;b?H|oqY8hA|s}AxAMsaIUE(rNZ5yxyQW#j?7QQw zAp-0&IqI!xJzDOPqFA^H;PDspUx>UurALcZJ#EjprOhuVY}Tb85us_}l`xt6M|fjl z2QN)$HCGUIj?|ocYSWylcjYOo?T4fX*(q-E{M)z27w!dGZ4uuQ?>$EIj$4f@NW#TJ zBf`$aFx>MG;Lq-OAFDwe!^5`1@V#N01AekK*)V zZHI!$NUS%K$#62H{+gU_5n6GLN8^O0Qe=0|&{;{P_Rspns z4$DFQj~hQDxy_t9pKO<>C%;L9@HD@X=T#adVaSK)ugobd zh=4v7?1<{~^E3%2%FYY$lt(`B z(6F&E?P>@_V1%{FMav-Tb6WV54cCTu zpB^KoM&34R%hBxqX|UfxP_#;kdZ!SR8lDzz%lD#T`~*31xMHz_vm8$4FreF^Iwlr( zkOVoCtc;U=YTpJ8CnoYE&;(NxnI6$IM~PrhXPQ2A#8Kp*2QfpDf1kE2hjFFl9@$@HF{ahr5F!dp?&#TGatu^a8H)hQd>une2QbW_W z8{xNj4_O}0K;JTi#j!+rVPJG-FY&{Aindeym3XwTLuDg8lSaIkj9&N!p`ZeuiGJ<; zX=#bIm$gkx?hv|$>v(lTsaEIPS<;2{N$p!s&;oXBzMZR{mdl)v2 zcEH7iqTmE+hOJ4tan;IymniLx%En2?$SD*b8T9Sy%eD429m}F9lQjbnNtbzL@0F`0 zf_EI9IFTB9+o&6MI%O5HU(IUSsieeRW2h>AgtuzQr~#Y`I=IDy+B=0OjEpBkSbDDk zP2tN>ndXR2tuy+xgTAA5C@5!bx0}*n`&~g2fdd55348E(k3W-yn~Uc^YG2lVGFE;2 z$wbxNE7x8LQUj6DUP#iz`tjM+YFz-svvRduq_YDGoN)L#axh%tJ{W_0AMvFn8Gux# z$NHJ8xMPsUZ;rpep@dzJec@sgGj+Gu0Q6ZuMq|?E%LF@bFp+D08$?$n;4IhM%~Yj! zC-p!}yUGKN;}vVD;DPqV+op*bKRPlwzKuVzLl?NweXrwCO1ci)l}J z%k&mgIy*W>FA+B0;F`n3%>41c@3LZ-qA#3LLe-;(;>N;moIxU81eb(E z%{s2!L5#Bh3bGv`agm3NOY|_KWqS5(jmg`=&(1)dn?tyg8wo&`Hqqj76+<1ERktCj zlOIG__C2^KE-BLwi?=;}LErk3_=AjHR&2#w{>Gz=GzS|#!S5jo5tQ=_m3JeUkST+L z4FfJtZhcCw2~XWGLd??LmAuRtRIc}QXe1pYoe3Q{ypGwZnNK&h3H`L#-7K}+q)M+C zKsXhTO8!A0e31<0PD%LWFXmQg1jvzeTHv?J!uAB5uinj+9Z3$auc#mO6_yG(gb3@+ zSuCo!+ULv*Xb)$uDa+9n`r#*DcBxa`A}sU98+_+~d87%s+(!O=9~jX)$YB2R{H-U{ zbY3fymrE_2HN>HnWa|*wI+fLn$`tG96Kw3DBtwt!!dt6GpI-R1CtBu?Z6tnXRU^fK zxOH(qP30nY)4aA3Vt0`q#wKw%d5 z`RB*O*(J?0>Bro~$C%u~D01EllhX&JLJ4qSq3xYiVq*LqFbWCOK56yov1F^#Xl$m` zA!k3ooDynRhxscyAHyR<&NIpXqL7p3N^jnPDIb+?rxG}SE^e&c?ec2iVXnFaY8Ie& z2j6pGHd?*($eZBSi-)7{oVYZe2u4(y)BYBI=5QloBmB0}Z}Zcl+kX4;d@f5xG~Se9 zp!g9o={F^I_N;yHJFX6!7?Qz{eDu9wzMpj~;`JD(5p)o#@=9O za8oZ@u+b%?fPj|PebwR=Z+f!N*_hzVPW2^Qo zR0Ej&rCuJh1et3k{oa1()SvH-51+v@QldJd%e|QyCd@P@?C4o~$~qY62z&3to$jRB zxT#r1%Q769v3W{|hEDTJ$Nx}k|9JJyI&<+P`QjssD;2j9=A(^3wje{Wzj_PK2#KVc zZ%Vp=#r#+HR65T<;)=HgSI_h&ct~N!!#r(D#J{;@5s#jfCw~^LZD^d#2v6pmk>Upr z3N88H3uT5;?4l-MM#cWyub#bVy2T|D&VTM2{dqRAZPMW7@g_rhr66-u=Hg*aqw}5V zwWxZjyn2Fb?N$0VSt>Ytxg(NNA{->P^dN*@b@qW!%lUWON)Oz8eZ}=`Y4+F}r(x5K zq1)1}c6$Onh3A;QJ6XL}q5L7|n#*{a?1|;W(v}j}l%)~|Z@AU4&2hr-d3(5QtD&-! zlSE6O@TE%`Yh(HcgDoPC38plemBs!`c$44i(%6QX~yoL z`Vua`FLi4@=|khb*f23F`RtdKMBQ{;I!yNB>cc~EUIs3V2LDIrJzd!;COm$21-N-E zP6P>%3iX)&PZKz)K+i30hsKJf8G zk_Mb8MBzjEvu3E%K^GCvxWmBvJ$J{K&sk%~K&0@r3Y>5WN^sjzPnxOuw0$1Z2>s7H zw*5%F*(hl854U4TO!&S>y9U293d&cMbgDJ6_tz|=fuqS{GB&WDk={cCy$zK!zf9TF z1s!EN0St{YKL<~o=+lQF@}UH28^qmg6JW(LyaEux>!{1hP;Rm&s+}0+UZvQ>_NJX zCG!+Tp!U|9WXQlJRLmdkNy2B%)|8! zSC7)v`i$dgxVwawxhrF0?~)mV=W0Cl#bJE)pjMOv&xq`T=kjB=+nqDt*#!CE>(=!x}F!T3cUtt?l4~kSx3G8jUK9?LJ$xv+<**O7xpm&7=r3%U<$UC$(V&^jqPxQB0HKL zgnH5qMHt);Ww{*IMe=Z4ty(v}D%-v4D1Tzd2{gzc0fL{5lk_!4C1>G0cy%*dlXDQV zHub}*=)9)A+?RZ8WP^=_tsYuqOfDx5Kt#8n5WSPUJ#+&*5BS zIEvkM9+%`wl%t(*8K)>Sr<$NQe2!FxfpU%&uxx#1cY9|b#+Qy)6nY~iov1$XW4Y=g zZeG{(r?qxZhvBl0xktmt|GX$0EF_J}i^mhn$VA=4bd6o{$PUy;!hS%qigTp#GJ^V$8CEYQ>E=WCXolE6p=Vl6&!d#bS=hsULg5M42!eOYZ3 z@;x!UO|V9Pw=$X^12it}YNlbCD_kw{q*^w>KMrmc$;`q4Bbi;H4?&{@?qDwm^^8h& z+|S;uBqRD3f@zZU?BOY1a1h7(y9YR$`wGNKs=k#4gna2)*Sf@=iekW$4YE=jdz3Dp z7F*gRKod>``q@D01baN}=pfi3iwc2t&kYg60E=zjK1U2i~cC9Pzj{ zCrKc#ThQuQJswd80Mvr8-|oZ*fKR$}&KFPfbe-gu3;3rBh>9|>odi#QIj)=+x9s7l}h?eO`<&Yu_?c|IjAo=HKls%f#eg}uu>n6V+(Gba|-{N=W@ zI=2ec3aM9Gy07&(4K+4B-47I@>0p_d^p*yuonf!@gZR?CEIyOOEJ=Am{V9q9;*HIH84ZzJQ!I6sKoh7& z->R#OS{%E|3jG_4p$Wc1Hz+)S!1 zpEat-CQK{pc2f)X7)nCooBmhbraseE6%Z+v<{|bYqhS;$Ea&K@p9msD2l+m6=knn_ zlcUI`6wWM$?2l$lz#W=S678cqbBNKCey;3SgW=FPXGC0kW4LFgCN$Xr#2ZvcY7vBKq8S5=aYifrX(p7hzkH@09xF^A=0!-vOCIj&M}Wu= z9$iPf^Dr(2?bJsP2W@ZexxIKwyTAo?gA?9W-DFe7EB-mFkfC{^Zjl`zjIYrrs^TXq zIc`EToVy)TT;;K;hqKgku$E~-Egrak+JVU*+MhM=g?#^7@Vd`(*n&o`)(c<|24v36 z4k`g1!40#M@a76*yoL7_^EkrAf}-YoXdTxsb3{#=5RGgdW<=|*ESmK*t`MrO*1Y!s zD+jI7x6EJUV^7?jrvARL>!e6h9gR=7yA(+d&U}#^L53sZyNB89+Gsb z_|r|L3Y3(W@k|=3H>$2CCAj*c?QI^O*Lw5hQyWDxa1m@%y7@|0<>-c7Ao|9im->>|SnLBib*yHgEs3XbmzuWFj7A02Z9 zRQ#MO{76tpkltx)cR@TpH|{csXAb?8WL{RdGkc2WAF4lq<1NUqaCm4KA@c3 zCm+w3kGMop%zQ-7j0N1bRu$ADXgirq6(JCRx07Pk*+Rz8wIfeTbg4IlC}!A$>*wsB z?*flz0$D#Qv{x2JJV3wKYZRqx&i;m0Ph^@=DKmz}{>wj}zPQHwj=R~fIPQGd`6ZM2 z2z1e+@kVi=DoYrqt zqHreQF;1f7#`aOH{_Gb$9Cy}KxG^I}dn8|SR|q>l?W2?k0$^~jZ^{|q#n zws8?+bR7JCQk&;v15+m7pE-jQ+SR#%7lHa1OHZL^z>g-lSJ<(Ch1C5k)XJz-dOh$!^Z3TqQyN>wq!djS(Sb!B+EpztP#_0_A84=W83?8T9{6xa=9V6-TgpqyszXa;973cNxe_-Bw{e zVYeq4Ard*y1#WRiu;tHvu^rZU&^o^;D#a^QcRt@lib3icLg|SqzdMY$ z`|M~OzFJGBBx73EPlJ7MK<3rJTYtNLSjj}eX;GUnTebhnf5J?NYt3QVU+=u}OoL)H zW3}#uX!N&Vx~#3& zzC<}ssg#R8AEUKXYjT2HI9mokxqH9nw;phqx1!|ttA`E~h7z&NU=SJjfJt09!_^`6 z0wkSyZHJu`e!yu8k#!+C#PNHNN>in+U5hR!SLe6|gEKb11zns7k%&o6;*w%BQ^R$# zWXvxAoP8Kc`upd%WXAzQkX$^pH>t6#Fr*gx+%nnH$HtKyRcqGy$smWvQHtA94Ivq` zZvD*|p>FrxK`?heZepDC%10Ga`lqICvkFOj!hOXd;G`!#wWoc_mo-8o;otNC?>=-eq(@D& zxzh_*vorP-S3$kR-})cs%ht5N0ao`EI#7%vD!O?4A!W zRO2k94qVdeEmHP5&g#kdR3dY$h&lXf$Ymtr!IDuiNs;sYluE$seP!=hdDVBMsmq2* z!{_nUYeOjxIUm2K4YoPwK22n_TRZ<*8A$qDqP232V2~3>Kk>#3{pT-1wQ4HubHn@p zhpTu0XZnx-|F>b7W6AlD4oaI-j=dT}=|GCu#>Px?oS}pBp^Z?Kdi4sG$RT1g=b5%) zh>DaP=D3-PoUL*wrPufQdcQxPA3opzV2{h5kHh_Tzus>5&dKq}{S^9f7XSqb$I`*Rg8q^&$qP*SK={*=zxA%ZI;Or*$5p*DC<#-4Uw)FuYP{~nE-gZiM6W- z&is)34HFLv@yQ)tzawkBP+e~-rHCP*;Km)*l&Np)rGL~$QN2AQ_XbAnjNfJ5jUju1 zJ;myO8dVT7^-?7b~SDE9B}ghYcEt{cz)sUt=-i1nKpuR3ZcmJ=;QvWUAXeC=+5I)E7Pi*0b9^>(|E<1pt%pxlNwUFyqVoLMhmI#m{`Y>4DRxHRU@$V6ahJ{dVWH9-)7Ny8 zmmULF1KJPo7|1xpmf~IvIZZ0}cqGY@YAZa3@t7>1g{?v6;AxvfMzBaRAM$kh547US z&O|p7VosjCIHs-``ld0>`#a+VU^UJKxsyE!p5r2=+~S~^nGf1jV>P>`%+;!e4&Yuk zknW>4x%_mL7|~}8yh2~{JW$gfy);LZOCEH$9gNtn7+jie+kBGD967n9zt`@6ZlrFX zQ-m+}M>~B!XfUM7n(Celk0Sg;D4+bf10o{Id-o-VO47?-B%IsY(;Ft=;&6B?nvrAA zdBHDTOo(~)*}QUuHjN1tReRvyvk|=X@*O292;s!gIIP1(T0)O$UnAjPvSH~gF6J8; zq9}4XLwdgK9|bL&Elk$)31B)LaxiW%HLsNz)qV&3pYchT39>}r+GK(FiGc%y>kaM8 zJ>9OwFu&$QFF>pk9_y)WEchlyh%}IlYO=2b1*d%^aUIhh>em4$qbDj_^8B)e>+Re$ zj;#SE8YpQ6#R!h1%DLc_x@KLUVgNDbAOD^v*h~68!NCaubbL^a$12O){2Uw z<=eDl>36^ggSUCw6hZjQQKsdt{u4(wWV8y3f=}!`=*jF)?xhn z17|`}ZO*a=K`n-)4Wvi*a#eG)u8+{>?&UR5^x-0wMU2wz%qxhe{pt6z{`iy$b&j0! zAZz|8zxv+l13(@B$?^R(S@pjFxwI41cI zQOIaUd>`*7yV43?H2kHI$T&ZeI_0L#lMds3Gm|U=be=byxh1≫o0w^4(Xn1$<`9cD!k?X?~@e3*HW^= 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 V5!fwnJAr_I_tkaol;5_A{6F8Q`k(*+ literal 0 HcmV?d00001 diff --git a/lib/tests/__screenshots__/tonemapping/tonemapping-iphone.png b/lib/tests/__screenshots__/tonemapping/tonemapping-iphone.png new file mode 100644 index 0000000000000000000000000000000000000000..8871f7c685d22f32006ad2fe98ed22befd5dcaa3 GIT binary patch literal 39103 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 literal 0 HcmV?d00001 diff --git a/lib/tests/__screenshots__/tonemapping/tonemapping-safari.png b/lib/tests/__screenshots__/tonemapping/tonemapping-safari.png new file mode 100644 index 0000000000000000000000000000000000000000..ce9f1cb7a79b4358270f885c84a3c57220feeb15 GIT binary patch literal 54361 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

e}Nw_`dQTC$At3^#_*|*`%T5ST@JA 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 Aga7~l literal 0 HcmV?d00001 From 2cb04b1e4850b8425e35864454c00da397b75ce4 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 26 Aug 2025 13:39:08 +0200 Subject: [PATCH 06/10] mutualize shader parts --- lib/src/effects/toneMapping/glsl/_common.glsl | 4 ++++ lib/src/effects/toneMapping/glsl/_main.glsl | 5 +++++ lib/src/effects/toneMapping/glsl/aces.frag | 15 ++++----------- lib/src/effects/toneMapping/glsl/agx.frag | 13 +++---------- lib/src/effects/toneMapping/glsl/cineon.frag | 13 +++---------- lib/src/effects/toneMapping/glsl/hable.frag | 13 +++---------- lib/src/effects/toneMapping/glsl/neutral.frag | 13 +++---------- lib/src/effects/toneMapping/glsl/reinhard.frag | 14 ++++---------- lib/src/effects/toneMapping/index.ts | 11 +++++++++-- 9 files changed, 38 insertions(+), 63 deletions(-) create mode 100644 lib/src/effects/toneMapping/glsl/_common.glsl create mode 100644 lib/src/effects/toneMapping/glsl/_main.glsl diff --git a/lib/src/effects/toneMapping/glsl/_common.glsl b/lib/src/effects/toneMapping/glsl/_common.glsl new file mode 100644 index 0000000..e706227 --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/_common.glsl @@ -0,0 +1,4 @@ +uniform sampler2D uTexture; +uniform float uExposure; + +varying vec2 vUv; diff --git a/lib/src/effects/toneMapping/glsl/_main.glsl b/lib/src/effects/toneMapping/glsl/_main.glsl new file mode 100644 index 0000000..4fe2cbc --- /dev/null +++ b/lib/src/effects/toneMapping/glsl/_main.glsl @@ -0,0 +1,5 @@ +void main() { + vec4 color = texture(uTexture, vUv) * uExposure; + color.rgb = toneMapping(color.rgb); + gl_FragColor = clamp(color, 0.0, 1.0); +} diff --git a/lib/src/effects/toneMapping/glsl/aces.frag b/lib/src/effects/toneMapping/glsl/aces.frag index 5f44076..4ca423b 100644 --- a/lib/src/effects/toneMapping/glsl/aces.frag +++ b/lib/src/effects/toneMapping/glsl/aces.frag @@ -1,7 +1,4 @@ -uniform sampler2D uTexture; -uniform float uExposure; - -varying vec2 vUv; +#include "./_common.glsl" // sRGB => XYZ => D65_2_D60 => AP1 => RRT_SAT const mat3 ACESInputMat = mat3( @@ -27,8 +24,8 @@ vec3 RRTAndODTFit( vec3 v ) { // Three.js implementation of ACES Filmic Tone Mapping // source: https://github.com/mrdoob/three.js/blob/7f848acd7dc54062c50fca749211ecea0af8742b/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js#L46 -vec3 ACESFilmicToneMapping( vec3 color ) { - color *= uExposure / 0.6; +vec3 toneMapping( vec3 color ) { + color /= 0.6; color = ACESInputMat * color; color = RRTAndODTFit( color ); @@ -37,8 +34,4 @@ vec3 ACESFilmicToneMapping( vec3 color ) { return color; } -void main() { - vec4 color = texture(uTexture, vUv) * uExposure; - color.rgb = ACESFilmicToneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); -} +#include "./_main.glsl" diff --git a/lib/src/effects/toneMapping/glsl/agx.frag b/lib/src/effects/toneMapping/glsl/agx.frag index c6cd5c0..8add6a4 100644 --- a/lib/src/effects/toneMapping/glsl/agx.frag +++ b/lib/src/effects/toneMapping/glsl/agx.frag @@ -1,7 +1,4 @@ -uniform sampler2D uTexture; -uniform float uExposure; - -varying vec2 vUv; +#include "./_common.glsl" // Matrices for rec 2020 <> rec 709 color space conversion // matrix provided in row-major order so it has been transposed @@ -57,7 +54,7 @@ const float AgxMaxEv = 4.026069; // log2( pow( 2, LOG2_MAX ) * MIDDLE_GRAY ) // Three.js implementation of AgX Tone Mapping, based on Filament, based on Blender // source: https://github.com/mrdoob/three.js/blob/c5e5c609904ff38e701f7cafccbd454d363019c7/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js#L113 -vec3 AgXToneMapping( vec3 color ) { +vec3 toneMapping( vec3 color ) { color = LINEAR_SRGB_TO_LINEAR_REC2020 * color; color = AgXInsetMatrix * color; @@ -81,8 +78,4 @@ vec3 AgXToneMapping( vec3 color ) { return color; } -void main() { - vec4 color = texture(uTexture, vUv) * uExposure; - color.rgb = AgXToneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); -} +#include "./_main.glsl" diff --git a/lib/src/effects/toneMapping/glsl/cineon.frag b/lib/src/effects/toneMapping/glsl/cineon.frag index 8380908..79ec2be 100644 --- a/lib/src/effects/toneMapping/glsl/cineon.frag +++ b/lib/src/effects/toneMapping/glsl/cineon.frag @@ -1,18 +1,11 @@ -uniform sampler2D uTexture; -uniform float uExposure; - -varying vec2 vUv; +#include "./_common.glsl" // filmic operator by Jim Hejl and Richard Burgess-Dawson // http://filmicworlds.com/blog/filmic-tonemapping-operators/ -vec3 CineonToneMapping( vec3 color ) { +vec3 toneMapping( vec3 color ) { color = max( vec3( 0.0 ), color - 0.004 ); return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); } -void main() { - vec4 color = texture(uTexture, vUv) * uExposure; - color.rgb = CineonToneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); -} +#include "./_main.glsl" diff --git a/lib/src/effects/toneMapping/glsl/hable.frag b/lib/src/effects/toneMapping/glsl/hable.frag index e5d9dce..2ae3fb3 100644 --- a/lib/src/effects/toneMapping/glsl/hable.frag +++ b/lib/src/effects/toneMapping/glsl/hable.frag @@ -1,7 +1,4 @@ -uniform sampler2D uTexture; -uniform float uExposure; - -varying vec2 vUv; +#include "./_common.glsl" // Uncharted 2 filmic curve by John Hable // http://filmicworlds.com/blog/filmic-tonemapping-operators/ @@ -19,14 +16,10 @@ vec3 uncharted2Tonemap(vec3 x) { return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F)) - E/F; } -vec3 hableToneMapping(vec3 color) { +vec3 toneMapping(vec3 color) { vec3 mapped = uncharted2Tonemap(exposureBias * color); vec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W)); return mapped * whiteScale; } -void main() { - vec4 color = texture(uTexture, vUv) * uExposure; - color.rgb = hableToneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); -} +#include "./_main.glsl" diff --git a/lib/src/effects/toneMapping/glsl/neutral.frag b/lib/src/effects/toneMapping/glsl/neutral.frag index 22bbd80..023372d 100644 --- a/lib/src/effects/toneMapping/glsl/neutral.frag +++ b/lib/src/effects/toneMapping/glsl/neutral.frag @@ -1,7 +1,4 @@ -uniform sampler2D uTexture; -uniform float uExposure; - -varying vec2 vUv; +#include "./_common.glsl" const float startCompression = 0.8 - 0.04; const float desaturation = 0.15; @@ -9,7 +6,7 @@ const float desaturation = 0.15; // Khronos PBR Neutral // https://modelviewer.dev/examples/tone-mapping -vec3 NeutralToneMapping( vec3 color ) { +vec3 toneMapping( vec3 color ) { float x = min(color.r, min(color.g, color.b)); float offset = x < 0.08 ? x - 6.25 * x * x : 0.04; color -= offset; @@ -25,8 +22,4 @@ vec3 NeutralToneMapping( vec3 color ) { return mix(color, newPeak * vec3(1, 1, 1), g); } -void main() { - vec4 color = texture(uTexture, vUv) * uExposure; - color.rgb = NeutralToneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); -} +#include "./_main.glsl" diff --git a/lib/src/effects/toneMapping/glsl/reinhard.frag b/lib/src/effects/toneMapping/glsl/reinhard.frag index c579670..da24581 100644 --- a/lib/src/effects/toneMapping/glsl/reinhard.frag +++ b/lib/src/effects/toneMapping/glsl/reinhard.frag @@ -1,12 +1,10 @@ -uniform sampler2D uTexture; -uniform float uExposure; -uniform float uWhitePoint; +#include "./_common.glsl" -varying vec2 vUv; +uniform float uWhitePoint; // Reinhard tonemapping extended with white point -vec3 ReinhardToneMapping(vec3 color) { +vec3 toneMapping(vec3 color) { vec3 mapped = color.rgb / (1.0 + color.rgb); if (uWhitePoint > 1.0) { @@ -16,8 +14,4 @@ vec3 ReinhardToneMapping(vec3 color) { return mapped; } -void main() { - vec4 color = texture(uTexture, vUv) * uExposure; - color.rgb = ReinhardToneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); -} +#include "./_main.glsl" diff --git a/lib/src/effects/toneMapping/index.ts b/lib/src/effects/toneMapping/index.ts index c3b24a0..850a935 100644 --- a/lib/src/effects/toneMapping/index.ts +++ b/lib/src/effects/toneMapping/index.ts @@ -21,8 +21,15 @@ function createToneMappingPass(fragment: string, params: ToneMappingParams = {}) }); } -export function reinhardToneMapping(params: ToneMappingParams = {}) { - return createToneMappingPass(reinhardFragment, params); +export function reinhardToneMapping(params: ToneMappingParams & { whitePoint?: number } = {}) { + const { exposure = 1, whitePoint = 1 } = params; + return useEffectPass({ + fragment: reinhardFragment, + uniforms: { + uExposure: exposure, + uWhitePoint: whitePoint, + }, + }); } export function hableToneMapping(params: ToneMappingParams = {}) { From cd9d9f928edb1bf7f179977e739dbf7ccc5d5343 Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 26 Aug 2025 20:14:51 +0200 Subject: [PATCH 07/10] feat: add support for boolean uniforms --- lib/src/internal/useUniforms.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/src/internal/useUniforms.ts b/lib/src/internal/useUniforms.ts index b45afbb..7d7f216 100644 --- a/lib/src/internal/useUniforms.ts +++ b/lib/src/internal/useUniforms.ts @@ -56,6 +56,7 @@ export function useUniforms(uniforms: U) { if (uniformLocation === -1) return -1; if (typeof value === "number") return _gl.uniform1f(uniformLocation, value); + if (typeof value === "boolean") return _gl.uniform1i(uniformLocation, value ? 1 : 0); if (value instanceof WebGLTexture) { if (!textureUnits.has(name)) { From 8a1a5dce3cef62f50094b662d406e77611a8770a Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 26 Aug 2025 20:29:20 +0200 Subject: [PATCH 08/10] feat(postprocessing): include linear to srgb conversion in the tone mapping passes --- .../pages/post-processing/tonemapping.astro | 1 - lib/src/effects/toneMapping/glsl/_common.glsl | 12 +++++++++ lib/src/effects/toneMapping/glsl/_main.glsl | 8 +++++- lib/src/effects/toneMapping/index.ts | 27 ++++++++++++++++--- 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/lib/playground/src/pages/post-processing/tonemapping.astro b/lib/playground/src/pages/post-processing/tonemapping.astro index 299381b..5d72970 100644 --- a/lib/playground/src/pages/post-processing/tonemapping.astro +++ b/lib/playground/src/pages/post-processing/tonemapping.astro @@ -74,7 +74,6 @@ void main() { // neutralToneMapping(), // agxToneMapping(), hableToneMapping(), - linearToSRGB(), ], }); diff --git a/lib/src/effects/toneMapping/glsl/_common.glsl b/lib/src/effects/toneMapping/glsl/_common.glsl index e706227..b88d273 100644 --- a/lib/src/effects/toneMapping/glsl/_common.glsl +++ b/lib/src/effects/toneMapping/glsl/_common.glsl @@ -1,4 +1,16 @@ uniform sampler2D uTexture; uniform float uExposure; +uniform bool uConvertToSRGB; varying vec2 vUv; + +vec4 linearToSRGB(vec4 color) { + return vec4( + mix( + color.rgb * 12.92, + pow(color.rgb, vec3(1.0 / 2.4)) * 1.055 - 0.055, + step(vec3(0.0031308), color.rgb) + ), + color.a + ); +} diff --git a/lib/src/effects/toneMapping/glsl/_main.glsl b/lib/src/effects/toneMapping/glsl/_main.glsl index 4fe2cbc..cff4e76 100644 --- a/lib/src/effects/toneMapping/glsl/_main.glsl +++ b/lib/src/effects/toneMapping/glsl/_main.glsl @@ -1,5 +1,11 @@ void main() { vec4 color = texture(uTexture, vUv) * uExposure; color.rgb = toneMapping(color.rgb); - gl_FragColor = clamp(color, 0.0, 1.0); + color = clamp(color, 0.0, 1.0); + + if (uConvertToSRGB) { + color = linearToSRGB(color); + } + + gl_FragColor = color; } diff --git a/lib/src/effects/toneMapping/index.ts b/lib/src/effects/toneMapping/index.ts index 850a935..17c4f12 100644 --- a/lib/src/effects/toneMapping/index.ts +++ b/lib/src/effects/toneMapping/index.ts @@ -8,25 +8,46 @@ import cineonFragment from "./glsl/cineon.frag"; import agxFragment from "./glsl/agx.frag"; export type ToneMappingParams = { + /** + * The exposure level to apply to the image before the tone mapping. + * @default 1 + */ exposure?: number; + /** + * The color space to output the final image in. + * @default "sRGB" + */ + outputColorSpace?: "sRGB" | "linear"; }; function createToneMappingPass(fragment: string, params: ToneMappingParams = {}) { - const { exposure = 1 } = params; + const { exposure = 1, outputColorSpace = "sRGB" } = params; return useEffectPass({ fragment, uniforms: { uExposure: exposure, + uConvertToSRGB: outputColorSpace === "sRGB", }, }); } -export function reinhardToneMapping(params: ToneMappingParams & { whitePoint?: number } = {}) { - const { exposure = 1, whitePoint = 1 } = params; +type ReinhardToneMappingParams = ToneMappingParams & { + /** + * The white point to use for extended Reinhard tone mapping. + * A value of 1 disables the extended tone mapping. + * + * @default 1 + */ + whitePoint?: number; +}; + +export function reinhardToneMapping(params: ReinhardToneMappingParams = {}) { + const { exposure = 1, outputColorSpace = "sRGB", whitePoint = 1 } = params; return useEffectPass({ fragment: reinhardFragment, uniforms: { uExposure: exposure, + uConvertToSRGB: outputColorSpace === "sRGB", uWhitePoint: whitePoint, }, }); From d80c96b7540111915d7076e09f5192b6142857ec Mon Sep 17 00:00:00 2001 From: Julien Sulpis Date: Tue, 26 Aug 2025 20:38:38 +0200 Subject: [PATCH 09/10] feat(postprocessing)!: replace linearToSRGB with linearToneMapping --- .../src/pages/post-processing/bloom.astro | 4 ++-- .../src/pages/post-processing/tonemapping.astro | 5 +++-- lib/src/effects/linearToSRGB/index.ts | 8 -------- lib/src/effects/linearToSRGB/linearToSRGB.frag | 14 -------------- lib/src/effects/toneMapping/glsl/linear.frag | 7 +++++++ lib/src/effects/toneMapping/index.ts | 5 +++++ lib/src/index.ts | 2 +- 7 files changed, 18 insertions(+), 27 deletions(-) delete mode 100644 lib/src/effects/linearToSRGB/index.ts delete mode 100644 lib/src/effects/linearToSRGB/linearToSRGB.frag create mode 100644 lib/src/effects/toneMapping/glsl/linear.frag diff --git a/lib/playground/src/pages/post-processing/bloom.astro b/lib/playground/src/pages/post-processing/bloom.astro index 1d9adc2..e9fd9ce 100644 --- a/lib/playground/src/pages/post-processing/bloom.astro +++ b/lib/playground/src/pages/post-processing/bloom.astro @@ -3,7 +3,7 @@ import Layout from "../../layouts/Layout.astro"; --- diff --git a/lib/playground/src/pages/gpgpu/boids.astro b/lib/playground/src/pages/gpgpu/boids.astro index ec1ff48..53315b4 100644 --- a/lib/playground/src/pages/gpgpu/boids.astro +++ b/lib/playground/src/pages/gpgpu/boids.astro @@ -72,16 +72,14 @@ import Layout from "../../layouts/Layout.astro"; renderPass.onAfterRender(incrementRenderCount); - renderPass.onCanvasReady(() => { - useLoop(({ deltaTime }) => { - velocities.uniforms.uDeltaTime = deltaTime / 500; - velocities.render(); + useLoop(({ deltaTime }) => { + velocities.uniforms.uDeltaTime = deltaTime / 500; + velocities.render(); - positions.uniforms.uDeltaTime = deltaTime / 500; - positions.render(); + positions.uniforms.uDeltaTime = deltaTime / 500; + positions.render(); - renderPass.render(); - }); + renderPass.render(); }); diff --git a/lib/playground/src/pages/gpgpu/particles - FBO (static).astro b/lib/playground/src/pages/gpgpu/particles - FBO (static).astro index 6c6c736..b706a71 100644 --- a/lib/playground/src/pages/gpgpu/particles - FBO (static).astro +++ b/lib/playground/src/pages/gpgpu/particles - FBO (static).astro @@ -90,9 +90,11 @@ import Layout from "../../layouts/Layout.astro"; positions.render(); renderPass.render(); - positions.uniforms.uDeltaTime = 1; - positions.render(); - renderPass.render(); + requestAnimationFrame(() => { + positions.uniforms.uDeltaTime = 1; + positions.render(); + renderPass.render(); + }); }); diff --git a/lib/playground/src/pages/gpgpu/particles - FBO.astro b/lib/playground/src/pages/gpgpu/particles - FBO.astro index af2bf74..0e87392 100644 --- a/lib/playground/src/pages/gpgpu/particles - FBO.astro +++ b/lib/playground/src/pages/gpgpu/particles - FBO.astro @@ -93,12 +93,10 @@ import Layout from "../../layouts/Layout.astro"; renderPass.onAfterRender(incrementRenderCount); - renderPass.onCanvasReady(() => { - useLoop(({ deltaTime }) => { - positions.uniforms.uDeltaTime = deltaTime / 500; - positions.render(); - renderPass.render(); - }); + useLoop(({ deltaTime }) => { + positions.uniforms.uDeltaTime = deltaTime / 500; + positions.render(); + renderPass.render(); }); diff --git a/lib/src/hooks/useWebGLCanvas.ts b/lib/src/hooks/useWebGLCanvas.ts index b8a29be..a86cd64 100644 --- a/lib/src/hooks/useWebGLCanvas.ts +++ b/lib/src/hooks/useWebGLCanvas.ts @@ -41,8 +41,13 @@ export const useWebGLCanvas = (props: Props) => { const renderPass = useQuadRenderPass(gl, props); const compositor = useCompositor(gl, renderPass, postEffects); + // don't render before the first resize of the canvas to avoid a glitch + let isCanvasResized = false; + function render() { - compositor.render(); + if (isCanvasResized) { + compositor.render(); + } } let requestedRender = false; @@ -107,13 +112,12 @@ export const useWebGLCanvas = (props: Props) => { let resizeObserver: ReturnType | null = null; const [canvasReadyCallbacks, onCanvasReady] = useLifeCycleCallback(); - let isFirstResize = true; function resizeCanvas(width: number, height: number) { setSize({ width: width * dpr, height: height * dpr }); - if (isFirstResize) { + if (!isCanvasResized) { for (const callback of canvasReadyCallbacks) callback(); - isFirstResize = false; + isCanvasResized = true; } } diff --git a/lib/tests/screenshots.spec.ts b/lib/tests/screenshots.spec.ts index b5319ff..1cfdb0d 100644 --- a/lib/tests/screenshots.spec.ts +++ b/lib/tests/screenshots.spec.ts @@ -9,8 +9,8 @@ const routesToTest = routes.filter(({ route }) => !ignoreRoutes.has(route)); const expectedRendersByDemo = { scissor: "2", video: "2", - "particles - FBO (static)": "3", - "boids (static)": "4", + "particles - FBO (static)": "2", + "boids (static)": "3", mipmap: /[1-3]/, texture: /1|2/, sepia: /1|2/,