From 3a5c65bdc8532b4bebfdadef33636031100599e3 Mon Sep 17 00:00:00 2001 From: kovacsv Date: Tue, 28 Dec 2021 16:44:00 +0100 Subject: [PATCH] Store vertex colors in mesh. --- sandbox/embed_edges.html | 1 + sandbox/embed_filehost.html | 1 + sandbox/embed_selfhost_code.html | 1 + sandbox/embed_selfhost_errors.html | 1 + sandbox/embed_selfhost_externallibs.html | 1 + sandbox/embed_selfhost_fullscreen.html | 1 + sandbox/embed_selfhost_manual.html | 1 + sandbox/embed_selfhost_multiple.html | 1 + sandbox/embed_selfhost_single.html | 1 + sandbox/embed_selfhost_single_scroll.html | 1 + source/geometry/coord4d.js | 15 + source/import/importergltf.js | 37 ++ source/import/importerply.js | 35 +- source/model/material.js | 5 + source/model/mesh.js | 22 ++ source/model/modelfinalization.js | 15 +- source/threejs/threeconverter.js | 30 +- test/testfiles/gltf/BoxVertexColors/README.md | 8 + .../glTF-Binary/BoxVertexColors.glb | Bin 0 -> 2880 bytes .../glTF-Embedded/BoxVertexColors.gltf | 220 +++++++++++ .../BoxVertexColors/glTF/BoxVertexColors.gltf | 220 +++++++++++ .../gltf/BoxVertexColors/glTF/buffer.bin | Bin 0 -> 1224 bytes .../BoxVertexColors/screenshot/screenshot.png | Bin 0 -> 22530 bytes test/testfiles/gltf/VertexColorTest/README.md | 11 + .../glTF-Binary/VertexColorTest.glb | Bin 0 -> 26220 bytes .../glTF-Embedded/VertexColorTest.gltf | 366 ++++++++++++++++++ .../glTF/VertexColorChecks.png | Bin 0 -> 8658 bytes .../VertexColorTest/glTF/VertexColorTest.bin | Bin 0 -> 4332 bytes .../VertexColorTest/glTF/VertexColorTest.gltf | 366 ++++++++++++++++++ .../glTF/VertexColorTestLabels.png | Bin 0 -> 9674 bytes .../VertexColorTest/screenshot/screenshot.png | Bin 0 -> 20357 bytes tools/config.json | 1 + website/embed.html | 1 + website/index.html | 1 + website/o3dv/js/sidebardetailspanel.js | 6 +- 35 files changed, 1326 insertions(+), 43 deletions(-) create mode 100644 source/geometry/coord4d.js create mode 100644 test/testfiles/gltf/BoxVertexColors/README.md create mode 100644 test/testfiles/gltf/BoxVertexColors/glTF-Binary/BoxVertexColors.glb create mode 100644 test/testfiles/gltf/BoxVertexColors/glTF-Embedded/BoxVertexColors.gltf create mode 100644 test/testfiles/gltf/BoxVertexColors/glTF/BoxVertexColors.gltf create mode 100644 test/testfiles/gltf/BoxVertexColors/glTF/buffer.bin create mode 100644 test/testfiles/gltf/BoxVertexColors/screenshot/screenshot.png create mode 100644 test/testfiles/gltf/VertexColorTest/README.md create mode 100644 test/testfiles/gltf/VertexColorTest/glTF-Binary/VertexColorTest.glb create mode 100644 test/testfiles/gltf/VertexColorTest/glTF-Embedded/VertexColorTest.gltf create mode 100644 test/testfiles/gltf/VertexColorTest/glTF/VertexColorChecks.png create mode 100644 test/testfiles/gltf/VertexColorTest/glTF/VertexColorTest.bin create mode 100644 test/testfiles/gltf/VertexColorTest/glTF/VertexColorTest.gltf create mode 100644 test/testfiles/gltf/VertexColorTest/glTF/VertexColorTestLabels.png create mode 100644 test/testfiles/gltf/VertexColorTest/screenshot/screenshot.png diff --git a/sandbox/embed_edges.html b/sandbox/embed_edges.html index 8de44c7..9219791 100644 --- a/sandbox/embed_edges.html +++ b/sandbox/embed_edges.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_filehost.html b/sandbox/embed_filehost.html index e86b533..078d28f 100644 --- a/sandbox/embed_filehost.html +++ b/sandbox/embed_filehost.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_selfhost_code.html b/sandbox/embed_selfhost_code.html index b0a7a79..65c741a 100644 --- a/sandbox/embed_selfhost_code.html +++ b/sandbox/embed_selfhost_code.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_selfhost_errors.html b/sandbox/embed_selfhost_errors.html index fae2cc1..148a2ff 100644 --- a/sandbox/embed_selfhost_errors.html +++ b/sandbox/embed_selfhost_errors.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_selfhost_externallibs.html b/sandbox/embed_selfhost_externallibs.html index 8786cb4..0461ca5 100644 --- a/sandbox/embed_selfhost_externallibs.html +++ b/sandbox/embed_selfhost_externallibs.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_selfhost_fullscreen.html b/sandbox/embed_selfhost_fullscreen.html index d582929..ce3ff17 100644 --- a/sandbox/embed_selfhost_fullscreen.html +++ b/sandbox/embed_selfhost_fullscreen.html @@ -14,6 +14,7 @@ + diff --git a/sandbox/embed_selfhost_manual.html b/sandbox/embed_selfhost_manual.html index ef23b9f..e620a55 100644 --- a/sandbox/embed_selfhost_manual.html +++ b/sandbox/embed_selfhost_manual.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_selfhost_multiple.html b/sandbox/embed_selfhost_multiple.html index a80cbbc..d77b66a 100644 --- a/sandbox/embed_selfhost_multiple.html +++ b/sandbox/embed_selfhost_multiple.html @@ -15,6 +15,7 @@ + diff --git a/sandbox/embed_selfhost_single.html b/sandbox/embed_selfhost_single.html index 2c24360..0024f93 100644 --- a/sandbox/embed_selfhost_single.html +++ b/sandbox/embed_selfhost_single.html @@ -14,6 +14,7 @@ + diff --git a/sandbox/embed_selfhost_single_scroll.html b/sandbox/embed_selfhost_single_scroll.html index 64938f6..5691a6f 100644 --- a/sandbox/embed_selfhost_single_scroll.html +++ b/sandbox/embed_selfhost_single_scroll.html @@ -14,6 +14,7 @@ + diff --git a/source/geometry/coord4d.js b/source/geometry/coord4d.js new file mode 100644 index 0000000..5968dc7 --- /dev/null +++ b/source/geometry/coord4d.js @@ -0,0 +1,15 @@ +OV.Coord4D = class +{ + constructor (x, y, z, w) + { + this.x = x; + this.y = y; + this.z = z; + this.w = w; + } + + Clone () + { + return new OV.Coord4D (this.x, this.y, this.z, this.w); + } +}; diff --git a/source/import/importergltf.js b/source/import/importergltf.js index 97335c3..3202c49 100644 --- a/source/import/importergltf.js +++ b/source/import/importergltf.js @@ -121,6 +121,13 @@ OV.GltfBufferReader = class let z = this.ReadComponent (); this.SkipBytesByStride (3); return new OV.Coord3D (x, y, z); + } else if (this.dataType === OV.GltfDataType.VEC4) { + let x = this.ReadComponent (); + let y = this.ReadComponent (); + let z = this.ReadComponent (); + let w = this.ReadComponent (); + this.SkipBytesByStride (4); + return new OV.Coord4D (x, y, z, w); } return null; } @@ -353,6 +360,15 @@ OV.GltfExtensions = class attributeArray[i + 2] )); } + } else if (numComponents === 4) { + for (let i = 0; i < attributeArray.length; i += 4) { + processor (new OV.Coord4D ( + attributeArray[i + 0], + attributeArray[i + 1], + attributeArray[i + 2], + attributeArray[i + 3] + )); + } } draco._free (attributePtr); } @@ -385,6 +401,7 @@ OV.GltfExtensions = class } let hasVertices = (extensionParams.attributes.POSITION !== undefined); + let hasVertexColors = (extensionParams.attributes.COLOR_0 !== undefined); let hasNormals = (extensionParams.attributes.NORMAL !== undefined); let hasUVs = (extensionParams.attributes.TEXCOORD_0 !== undefined); @@ -400,6 +417,13 @@ OV.GltfExtensions = class mesh.AddVertex (vertex); }); + if (hasVertexColors) { + EnumerateComponents (this.draco, decoder, dracoMesh, extensionParams.attributes.COLOR_0, (vertexColor) => { + let color = new OV.Color (vertexColor.x * 255.0, vertexColor.y * 255.0, vertexColor.z * 255.0); + mesh.AddVertexColor (color); + }); + } + if (hasNormals) { EnumerateComponents (this.draco, decoder, dracoMesh, extensionParams.attributes.NORMAL, (normal) => { mesh.AddNormal (normal); @@ -778,6 +802,7 @@ OV.ImporterGltf = class extends OV.ImporterBase } let hasVertices = (primitive.attributes.POSITION !== undefined); + let hasVertexColors = (primitive.attributes.COLOR_0 !== undefined); let hasNormals = (primitive.attributes.NORMAL !== undefined); let hasUVs = (primitive.attributes.TEXCOORD_0 !== undefined); let hasIndices = (primitive.indices !== undefined); @@ -807,6 +832,18 @@ OV.ImporterGltf = class extends OV.ImporterBase return; } + if (hasVertexColors) { + let accessor = gltf.accessors[primitive.attributes.COLOR_0]; + let reader = this.GetReaderFromAccessor (gltf, accessor); + if (reader === null) { + return; + } + reader.EnumerateData ((data) => { + let color = new OV.Color (data.x * 255.0, data.y * 255.0, data.z * 255.0); + mesh.AddVertexColor (color); + }); + } + if (hasNormals) { let accessor = gltf.accessors[primitive.attributes.NORMAL]; let reader = this.GetReaderFromAccessor (gltf, accessor); diff --git a/source/import/importerply.js b/source/import/importerply.js index df802ec..8da4444 100644 --- a/source/import/importerply.js +++ b/source/import/importerply.js @@ -97,38 +97,9 @@ OV.PlyMaterialHandler = class constructor (model) { this.model = model; - this.vertexColors = []; this.colorToMaterial = {}; } - AddVertexColor (color) - { - this.vertexColors.push (color); - } - - GetTriangleColor (v0, v1, v2) - { - let vertexCount = this.vertexColors.length; - if (v0 >= vertexCount || v1 >= vertexCount || v2 >= vertexCount) { - return null; - } - return this.vertexColors[v0]; - } - - GetTriangleFaceMaterialIndex (color) - { - return this.GetMaterialIndexByColor (color); - } - - GetTriangleVertexMaterialIndex (v0, v1, v2) - { - let color = this.GetTriangleColor (v0, v1, v2); - if (color === null) { - return null; - } - return this.GetMaterialIndexByColor (color); - } - GetMaterialIndexByColor (color) { let materialName = 'Color ' + @@ -397,7 +368,7 @@ OV.ImporterPly = class extends OV.ImporterBase let z = ReadByFormat (reader, element.format[2]); let color = SkipAndGetColor (reader, element.format, 3); if (color !== null) { - materialHandler.AddVertexColor (color); + this.mesh.AddVertexColor (new OV.Color (color[0], color[1], color[2])); } this.mesh.AddVertex (new OV.Coord3D (x, y, z)); } @@ -411,9 +382,7 @@ OV.ImporterPly = class extends OV.ImporterBase let v2 = vertices[i + 2]; let triangle = new OV.Triangle (v0, v1, v2); if (faceColor !== null) { - triangle.mat = materialHandler.GetTriangleFaceMaterialIndex (faceColor); - } else { - triangle.mat = materialHandler.GetTriangleVertexMaterialIndex (v0, v1, v2); + triangle.mat = materialHandler.GetMaterialIndexByColor (faceColor); } this.mesh.AddTriangle (triangle); } diff --git a/source/model/material.js b/source/model/material.js index 7a3a50c..305ffc2 100644 --- a/source/model/material.js +++ b/source/model/material.js @@ -100,6 +100,8 @@ OV.MaterialBase = class this.name = ''; this.color = new OV.Color (0, 0, 0); + + this.vertexColors = false; } IsEqual (rhs) @@ -116,6 +118,9 @@ OV.MaterialBase = class if (!OV.ColorIsEqual (this.color, rhs.color)) { return false; } + if (this.vertexColors !== rhs.vertexColors) { + return false; + } return true; } }; diff --git a/source/model/mesh.js b/source/model/mesh.js index 0d4ce3c..5b54f44 100644 --- a/source/model/mesh.js +++ b/source/model/mesh.js @@ -4,6 +4,7 @@ OV.Mesh = class extends OV.ModelObject3D { super (); this.vertices = []; + this.vertexColors = []; this.normals = []; this.uvs = []; this.triangles = []; @@ -14,6 +15,11 @@ OV.Mesh = class extends OV.ModelObject3D return this.vertices.length; } + VertexColorCount () + { + return this.vertexColors.length; + } + NormalCount () { return this.normals.length; @@ -45,6 +51,22 @@ OV.Mesh = class extends OV.ModelObject3D return this.vertices[index]; } + AddVertexColor (color) + { + this.vertexColors.push (color); + return this.vertexColors.length - 1; + } + + SetVertexColor (index, color) + { + this.vertexColors[index] = color; + } + + GetVertexColor (index) + { + return this.vertexColors[index]; + } + AddNormal (normal) { this.normals.push (normal); diff --git a/source/model/modelfinalization.js b/source/model/modelfinalization.js index 475911a..caecbfe 100644 --- a/source/model/modelfinalization.js +++ b/source/model/modelfinalization.js @@ -1,6 +1,6 @@ OV.FinalizeModel = function (model, getDefaultMaterial) { - function FinalizeMesh (mesh, getDefaultMaterialIndex) + function FinalizeMesh (model, mesh, getDefaultMaterialIndex) { function CalculateCurveNormals (mesh) { @@ -104,6 +104,17 @@ OV.FinalizeModel = function (model, getDefaultMaterial) if (status.calculateCurveNormals) { CalculateCurveNormals (mesh); } + + let hasVertexColors = (mesh.VertexCount () === mesh.VertexColorCount ()); + if (hasVertexColors) { + for (let i = 0; i < mesh.TriangleCount (); i++) { + let triangle = mesh.GetTriangle (i); + if (triangle.mat !== null) { + let material = model.GetMaterial (triangle.mat); + material.vertexColors = true; + } + } + } } let defaultMaterialIndex = null; @@ -123,7 +134,7 @@ OV.FinalizeModel = function (model, getDefaultMaterial) i = i - 1; continue; } - FinalizeMesh (mesh, getDefaultMaterialIndex); + FinalizeMesh (model, mesh, getDefaultMaterialIndex); } let rootNode = model.GetRootNode (); diff --git a/source/threejs/threeconverter.js b/source/threejs/threeconverter.js index 5c4919c..ec4ff47 100644 --- a/source/threejs/threeconverter.js +++ b/source/threejs/threeconverter.js @@ -122,9 +122,13 @@ OV.ConvertModelToThreeObject = function (model, params, output, callbacks) let material = model.GetMaterial (materialIndex); let baseColor = new THREE.Color (material.color.r / 255.0, material.color.g / 255.0, material.color.b / 255.0); + if (material.vertexColors) { + baseColor.setRGB (1.0, 1.0, 1.0); + } let materialParams = { color : baseColor, + vertexColors : material.vertexColors, opacity : material.opacity, transparent : material.transparent, alphaTest : material.alphaTest, @@ -210,9 +214,10 @@ OV.ConvertModelToThreeObject = function (model, params, output, callbacks) let threeGeometry = new THREE.BufferGeometry (); let meshThreeMaterials = []; let meshOriginalMaterials = []; - let modelToThreeMaterials = {}; + let modelToThreeMaterials = new Map (); let vertices = []; + let vertexColors = []; let normals = []; let uvs = []; @@ -222,7 +227,8 @@ OV.ConvertModelToThreeObject = function (model, params, output, callbacks) end : -1 }); - let meshHasUVs = mesh.TextureUVCount () > 0; + let meshHasVertexColors = (mesh.VertexCount () === mesh.VertexColorCount ()); + let meshHasUVs = (mesh.TextureUVCount () > 0); for (let i = 0; i < triangleIndices.length; i++) { let triangleIndex = triangleIndices[i]; let triangle = mesh.GetTriangle (triangleIndex); @@ -232,6 +238,17 @@ OV.ConvertModelToThreeObject = function (model, params, output, callbacks) let v2 = mesh.GetVertex (triangle.v2); vertices.push (v0.x, v0.y, v0.z, v1.x, v1.y, v1.z, v2.x, v2.y, v2.z); + if (meshHasVertexColors) { + let vc0 = mesh.GetVertexColor (triangle.v0); + let vc1 = mesh.GetVertexColor (triangle.v1); + let vc2 = mesh.GetVertexColor (triangle.v2); + vertexColors.push ( + vc0.r / 255.0, vc0.g / 255.0, vc0.b / 255.0, + vc1.r / 255.0, vc1.g / 255.0, vc1.b / 255.0, + vc2.r / 255.0, vc2.g / 255.0, vc2.b / 255.0 + ); + } + let n0 = mesh.GetNormal (triangle.n0); let n1 = mesh.GetNormal (triangle.n1); let n2 = mesh.GetNormal (triangle.n2); @@ -247,10 +264,8 @@ OV.ConvertModelToThreeObject = function (model, params, output, callbacks) } let modelMaterialIndex = triangle.mat; - let materialIndex = modelToThreeMaterials[modelMaterialIndex]; - if (materialIndex === undefined) { - materialIndex = meshThreeMaterials.length; - modelToThreeMaterials[modelMaterialIndex] = materialIndex; + if (!modelToThreeMaterials.has (modelMaterialIndex)) { + modelToThreeMaterials.set (modelMaterialIndex, meshThreeMaterials.length); meshThreeMaterials.push (modelThreeMaterials[modelMaterialIndex]); meshOriginalMaterials.push (modelMaterialIndex); if (i > 0) { @@ -266,6 +281,9 @@ OV.ConvertModelToThreeObject = function (model, params, output, callbacks) groups[groups.length - 1].end = triangleCount - 1; threeGeometry.setAttribute ('position', new THREE.Float32BufferAttribute (vertices, 3)); + if (vertexColors.length !== 0) { + threeGeometry.setAttribute ('color', new THREE.Float32BufferAttribute (vertexColors, 3)); + } threeGeometry.setAttribute ('normal', new THREE.Float32BufferAttribute (normals, 3)); if (uvs.length !== 0) { threeGeometry.setAttribute ('uv', new THREE.Float32BufferAttribute (uvs, 2)); diff --git a/test/testfiles/gltf/BoxVertexColors/README.md b/test/testfiles/gltf/BoxVertexColors/README.md new file mode 100644 index 0000000..af9fccc --- /dev/null +++ b/test/testfiles/gltf/BoxVertexColors/README.md @@ -0,0 +1,8 @@ +# Box Vertex Colors +## Screenshot + +![screenshot](screenshot/screenshot.png) + +## License Information + +Donated by Michael Feldstein for glTF testing. \ No newline at end of file diff --git a/test/testfiles/gltf/BoxVertexColors/glTF-Binary/BoxVertexColors.glb b/test/testfiles/gltf/BoxVertexColors/glTF-Binary/BoxVertexColors.glb new file mode 100644 index 0000000000000000000000000000000000000000..4409cfbbe16270e8e26e24878d61d36fb11bf839 GIT binary patch literal 2880 zcmb_d&2Jk;6d%%H0xcg+OL9O+)*yt0mS{h0*WOy$rf!2${81dMs?=6=y%{?zt#_^6 zacOIXSb(oOL8A8r&HtIuaS{4fe&kv}6X-M0HPKWsyZ1z6YWr?(qu z@_K#GWiD^s=rgM46;+d{h+MBTp^M_%RO9aud11DgQH?N_XJoW)QY# zNW08szR5kG>U90|MYRk4rV_oz{J{30XjEO1A%3FA$)1n;U1e^UZ&UrmWZAgscX1T7 zT&bWPw0FW)Ef&X*g;+^v^>LiF0!-qp-dZtL(LxS#nblhbf zb<+y_2(w?5!#@R5lS^s|Zo+hlf+@rS1eCm@L`brdE6IuiBkGIT2R5ZrWRx!zI+idJ4l|h@~F?_pcbNgDXG&%R}_JAWhq?Jas(R@#aVUcLP(X6disSc$)-`Lz} zZ8Yjshv%Sm_F|>cXr4i{989L|ZrSh}h4Umz7%|=!R1ivw`MAJD=~&ygv*j~<5EMz3 zG*m{lZh9WCqZ6Kzn>@S#mt+ZlSe?K!9Y6#(_yNy-(+!+4yDK=OFZ#K1>2 z#*B;jf27x9*ZII_*|(vi{U^#3OJnx>4!jvqogtPxu;5(@6AyP$e3JuV@8*k0JAsqhh0=#xC|Q7&YH3YnlN$9e*m#rx|j?VgV7{N4DH5Z zGBhGcu$Xa9dr$M`Xx!f9yw5r3dCteZ_XYY8Ap`mm#QC7TW^|&N67P4;}^K6pq=8Hz7)CdZ1$Lw=na)Oc*%9w8y!R#p`TlNyob1+m~nJ zH-+NC>aBA>wezQ6*u0bHnbPS|%#A*HX1%#q()09wTA#w9^YpT3a@!Z~Zu8vH^E9vb z)$bEFPxHE;o=4x*4gRpH)oSbq_sDnKu^GzvWKfww`0VPGUdE QGj^+!{=9GNezxwzFH1rc&j0`b literal 0 HcmV?d00001 diff --git a/test/testfiles/gltf/BoxVertexColors/screenshot/screenshot.png b/test/testfiles/gltf/BoxVertexColors/screenshot/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..70523a2ed2db6ceb36ba4137540c81a223cada99 GIT binary patch literal 22530 zcmZ^~1yCGOw=Oz@YY1*LNP+}+9|ngIEVx5}06~L0g9L&*B)A3l;7&;J;O_1+xWmhT z&VBcus{3A7t?u1>t#4`V+Eu+*hp8&d;bKu>0RRA81$pWB|DK5d5C+=6dpFE<5C8zi zSW8K%Do9Dus5&`(w6?VX0GQ&w#EHv;J`?qJSSCxME6B@8W5^`POn#V-msAt{N};jf zxt#HaS3=Q$Mz;7z4j09zuYvGXO0dM&*n`Jo*4Hondr$8dudkP{m%YV1 zKQmjU?xV!^Q+T-u?HaDkUNpbiMUC-8;bi*iX~*>vGw-OR4Pkaa@#;KY8)i)E7Qwic zIh8ktShLBpWP>qp$so>O+{-8le4Xo9myt5_d3!ik%(TvJ_Geq92Q!UD>zybC-4l%) zBdZ&yf5V5LX{X6Wv4!1=qHG1huRaIQGM0XMd5Sl|^GU*XvZs0d$Dv;2m8q8;jTzP( zET%4OTw$mDe1$kGzvrFX^41qJpJodpd5Q8(RG;2QXb(AYs|LflUNW0{NglG>4t|<+ z+Cqb*=^f*IqXai!rRuG}Xlw_D9H-6SaE%J!8;Ds2vOg$imI{gZE}Vb5_+966-CZQ! zfb=%X%&0cIp&5Prm^y{o=?b^JFSvEJPrbx0NjW~yI@)~5T>KN zt}_6DP52)I0#eh-000n*wT6z1j?z0}GY30%Q*(z87VI8&j{l?q08tO&e?vP97gHJ! zJ6n5aVGl97|B?{?H~!Bw2OZ6SiMZH^(dj6u(nvWtS zmi=Gwe{W)RRxU1%!W;GfP-uZup^)En<|8O|C z*f}}=zhExbAOC+~|Ka>M?7!mrZ*!vmQ6{Wv?O|c7D{XCOVekCUH5d=Cpy+>@`M)^- z$I<_R)cGGsKFf+J8ZYzmiTB+=kb)jHC#Gm z{NpAruf`UhD6LQ{(I4_oACw=q)!PYPK;U|;7Ow@!W>QqWp5-*@N6>y7?aa59k9_@%=S0F70h|7&I88so z&4(|5amx=t(KW%#){qJ9GXf_{(3XM;2W_kP3gX)5w>O9>GR8jgTSr-H;`vUhVST1V zO9$(geQ8}cdp}er_mj0d6eMRD`8eSoRXjL=a7^(Jv+3R z%Fj~<)+1w{d9y1KM$E(;f@}_{MLPy&avcwvLdghV+UFOWik!GZS6taM@H=^D6R36t zf3gw$tNdg&mvkjJ->cs=;*da+B9fOC5jbA_JVWsVC< z-r&K}uPSD@$BNzR2qJ1-p5+n^;Vbpo3whZ#qaLLMu|3*O;@sb7RR*7+vAwdMB3rP= z5=~*Z8(v7MxrHQOQHAHy#(o?Wlp<(c>h^fCSm(4N-_o^6BsSGdP9mLLak|y< zJY?H5wT*vPYk0d#Y=*f3{$lPZ=o{<+#%Gr@OTo&z`!mK11_T=`O z%{80Gha2NfF{tRFo_I4krBsF1tPyjcZ9%4FcxbA)iLxa*|oCuWC2r<*XIiUdKS8^+7@1ZXO<^5OJ@3NXpT}?fKEra;98| zDC~;qtw6Be=HFlH-afxq-%lKJP&({%^5JV6VKJ(+Rf zixsXH(+rB$!2@s4OZT_Jo@+Wy^Cvn2+iRr?730{p?_FGcBHf{shv@hycaK3=@~hB& z6h~3R6dA1RU>}4<6fU@v?Du4Sy}*2Xq{;IckDag0Pqr8$T+n0ny?U<(PGQuHD+T?k z8IfC!bis{WFNF>xog4}{(Tl=3&vVcb&Er#RE|KM2_J%F%@p9rG~31oztI z5+)&)V#S)Ke)=ra)wz6}5LG{qM%x$&b>00n{z6+z=v#c8r?IYT(HkB8?1XyY>;Z^6 zd&(`RmU^(|QZHTwtfS9F(Z>{hEN&0=x#+&yeOx$Nj5;_P`V+w$Z}+<<7R==85!o6w z;GYUB8?g-|Xf)gt#L~f-NTWvT?POqqBXQWa zT>@$I$88SL3T>K-;-W*;_zK4i7|E%3lSD5IrzJT42tm_Zomq{%kLnmhv;Y@GtAsAy zcF143;c{*65Nsng5O4H)7Ebx@v@y}0w+q&+hrlW)9=jPnzRKoU?@>2C>eW)7o625> zNZE$mFEmx+VF9Egj!Y*$fWj6`wHivxnT0~_;4Zes8_Bw1gZwGYno8F{X1XvtUW0u2 zX?OC4bYA#AC@=5(_`OTW5XJ!9?W(pJs@P2f5UytaZq~x3BDQ4@03@^<*lk49aLaLm z3D1Xi+osZ?5O>}IGLH-k9IVbQtG2~GW&s^aRR?|CRfVvRo=`XRo_YPc z4S~-sPAUkhoS?A=r5YV`vbTfAG95;-9Rm#EQrfWOkiO6WqL}%{@{f+W7|uSk^}|PX z&Kyg&Eh9z_5m8ZYP99`Df5UX}k0l6=gtWTIOM9ES@MA3A`YmBNi>-I{dubZl z4cor1zgffg@0%(P0~URH6-!EMLA(jomQ_tjaAFhn8ugB1FWUVmm1B@HXTK9Q-=*N~ z_$&?aWvz;t_dcPnTR5>{d*0QdtXCB^^-+fmTc7ZgQE+H2i3v)aiORx*j7%0dfAe_V z6XCvEaiwjT4>pxa)8W_Ppr?6rXw)%(W$amOXWaB*i;#e~NCEddwu!7xZf;O&r)D?E z=}iJpycp(ybe<9$?ke{(s*8AK$5ZnGu3q#QS~d4F!3~#j5V`dbUk^mGPilkpiu$?twV?NeQ4eV3bu(03Da7&Ss&zlE}H)n zRJP^=O`nVrMFK9}t@j0)hcJ`?tvND&OJ*j%S#s9OyK?c9rLkv|-C>q`>}X9@jhX@K zsMbk-V1sLb?0h?J8P|TU+XUye*=fLvp5+wxsyU|nYrXP`l3X>G!qQ4`0H z%_Sp_Er!D(*RUnn-EMx{{qkq;XF1Tr(Z?4I%1@a5fv*t>W z{2BS3h9OUtxk|u=HY!DG%%F}(d`z~y&V5<8e#Tgwf7PL_&h}&w5KXi%Fq2|usfcjk z3q1!dW-`gdC10b?zDY}lUphiFDbw08^FawN+#!j~LV2Xu4<$gd!`%`1wG%}@r)=%S zR(5C}m~m;|aT2WVJHd zi=%O*m;RKZz#(m|zMYN!f!+0#_WbgW_zZug!Sq?r%ibqIw&#Irk?1D6SFiL`;rUl# zzKmJ9+_OJ59tY(O=`ml4rf2n;c__dsAN0>O%s(@`J^R@-h+7>kxdZR>eXm;vuY#bg z3;GVMt|@H%Dwggl^K(3mcJAm7_^Q=#ej5YEzh|q?Bc`SS)1Q+K#Q!guVT6Y1;fQGs|tHW$Wx^FZNkTs z?W?Yajy7BW2RV?zZKy+5?chjOEjB62%^b$wQnzkLTmW6Zhj%^yJ0{Nz*OoK1*Si%w z4xoy9`WvQ3I_Uu3KoZw6{(UKXAQ?dBIjPbm97D?clGF+0xJfDwP;r`K=%sj2lWPmK z(08oMvsl|)3##`$zpcM^Hnv-6u)nPt3jw_K*a&W_(N&f7;|=^}nNQrPGR|Oz2xSTU zv*3W;B#L$M#^x0SyQit8WxDv z)`_dv7xUCiFguaJZ!6o4A?enC3QX>6@OvV>&t*t`vwX6meBN(l%DlVPHc#d|0<-_JwyT zZh~q)2WF*9dP7OED#;9~6sOL|(d7WT)5%=6b{g+XD@@85UFLpIxkI7MY!u+I(SW>Q z8?-*N%)BdBK8shrw<-*Hjh_c3^9U!gz7(j}^}_M+i2BhZL8&CV=~0pJt_~|mlj7(V z;rv~}&CGoF%I%}u&0lf*7V+yXx9vgWPX~9qb7|5rE6H0R;&QvRPPMeJM7<%hZ30`B z7Yg|1Foe!PdsPfYU)ZfNJF`8@^!(W3dpwnJ732SWe`E=}3>03rqg?1!Qf%om)($0; zkOA2t>FG>fSQBBBhubgn2&2Zyw*<&D2M!bN%K}ubF{JUq`e^a4sGP1qCno>g(0913 z^Lcz{`!Tfu&~No9X_tLKOHjJ6TIRkaiBDcY;%80~y2yh`n?6E2n+EC??@8EQ=(DBB zO}GEj@I#aMgd6Psd;RQEQiAo8jP@_O^!K-rm)zK4-PtlE8Oek(o}DxKuitM>pC+n+ zi+>foQuFtj{bl3s-e%a|xCCi)ZD2F@EH6J=9^L+^oelj$@O4BHG0us0!9rny6Xd-5 zxoP*i+XflVpXpLyFVh7(>iwUoP@;Wqc*U3ZgC0!RyYYZuls>fhV9vjnz=Ew}QF7@k zQ@u^>8<5vW6bg0eFz#r1DWk~Gx*42r1QrdkCF>M zdj-{krg?n8-gJ7^CH{^~wEE_D#S{Y_~Nh^O|!* zV8gpTso1>U%DSTn0hdDi!ty=66pOzmlt|zM!3FI~UZ7RdiL9EBHLo<@%C_d5n)D?< z$yoJA6&>D=eASdB3Yvh(oiC;sktiA5*@8|?G1V6}1@F?BLdO7Jp6)V1oK<7+ST1q} zvaffH^Eywh(OZSP(z$g?h9CEwgXNwduIJY}9<=RtQl5Pl9)J25lsnJ$DZM(vCz+Qn zN&$#EbrQ+J8PfV9iwJ;4c=KcgcMzJA!jBd&YS+SG$LmLj_O)pZZofcVkepVI^4~4Z zlfnMMJFajGz@fx|Dldi{8YSXPnTv$-uWAawErvaI4NO&6&Lm;HD3))~<63sLIhdW? zOxbKgC1Tlz?{RbetR`|}*)iefzm>8utlhCVJ)CLBs7FF_ICN^85u)iJMhD=dm2uu7 zrlN?T4;c6!=oteb65eGmODxuYCD_q1RS`cUcK6rL@DEgUQY;!;|2Jaf&C9Yukvc|I zUqERa(B!oV^G> zH2^=}2Zje&aZ4!X6cbr)W^}vfG*DvM@6oVyBZGIVF1MJx*K^Lvo=`~a?7ChAl**wH!s%k zVRRB(JgDY(&^?yhqKJA6vOapJNVJU@J?n@#-s3 zaXvQmm!$#K?|sv0iTd)1nZx-5SpMYsn7>BY1pC#U3I*!%z8{k#C+jwUHMX3sO$mp3 zY`aP=@J4e51_u?S<^L8<96?|w1*J~9db23F@Qem#(<$Lhm?pxN0y z2W}n+^>kccFRY2*{;fZ6@GrOXf81GE58S<5weBjn;5=+E#o1u8ogzl3-^8zv1cZaz z;@%j%kb9epgE_deG-s<_X;(Y5;$7y8V4&q}Bv|F!siy0C6d=Z|*xyiPLnp@kt-ZVy zkWiKz13FCTc{RHP!xIE$2m**`*nrKW`m@sD6+<|<>FP%T{(~j;K`4_IAYT{}g7vHW%{a6mqx-BuWC5?7P<&C|-8qU_#o^CwM)03i z_5l*9dQpUHZJj^)PLg-p+K`j8m06A1{1hq$yQFW_66p!xvEhEVG}DerTY$$NDVdRl z@-nL$2FlL)B9n`a=qdl}9t?4bljrmX0I zn4H3O9&RGeB@8sLu{Uf+g+VzQVtck>j>Z=P;@ubwLB&_wETdZUCah?Nm$VL_P7IrF z88gSDqK53^jqkpV)!?COYhZ!nSQ9G}EPBv#xn>0~Uf?SJUH_xlJRmd!d2aBpq<(Pd zSgwDL=qP>cGPcDQYaRwOt-jsN+=wtm6>~uOYm&vI2>3`t4x7Gk=}ls3$;H$-VwL*L zWz8aQnl&5^S+v7mjGgZAip-CBMnc55$MzflWW-do#BFV!SN*MfpNEY%OmWP#R?RRJMyYtI+K7NON|_L< zQzP8Jv?OJY>MDlI9@g4Q#6acEnfhg_haxLOZiwH7X-miF$>Bi?T$n6Pro#8{Dtcqu z0UXVY9plSAHRH=ZskT!>f6p+uoh)nAR5J}j%>V6MhennrS~%T4g}^l78XrJ@#<(cZ zYu_^03`b&S2lUA~_s8@-+7C+M2APGi*S91p(4#DZc*}*2gBe#9`V+AEJl7=WKEPN8 z0q{p@A?r!>Y9PLUTCRuTYnYF&-tbn2vN3eOj$?dnPu|t#OWw5|*Z$s>E0X4*d0hpp z@iw(pgb49+kpY-<$TLXmu%0oWccbBUCMz_*z+%a*xK>NKiR;-AH^hY-3%X&%&EJge zArB#G4)=TOAl25I);x<37q`D-f4@Lrr+;5vP7l1%Y1mV)g^qfjt(l6nKkd~|wt)vp zKgyCGl5u=n>)T9vpQebI6J9Ru86BLvdHAyAwpQY!tFn7`*hWnIdYm~NnVLXos2vkS zj0v%=W^CltZTC9J#s$0!=?W&?aa%XdNv1Ge_w zl5$5S;6oa=ER8=gYGje|bRil|XE#g$wziHP zFZ<8dUo{d%hE1;$mrlOwQqSa2fi-)}2}DOPJpDP3royw!u*CRNu$8KRi8}d7*TvyR zYwt~{1QF94_ssl^UxZ^U+vB(;lyCd#qFQ$pm>O9B>UvHn1BD{(@Lb4fj{@;_gFWo> z7LwV44O0Ty4j^GfmZLQ_0{rlS*@s(9_v`(Vx83a_t|8v>S8X$(6;j$C^+SP&xc}o% zM5phEG)hoSE?$#n2mlUTXbK{HV#rVAK>srP2&?U)l1IgH+1>iUX)Hs$hd z*!#uJQ)^C~>7Cw5#&7luz}yi)9(dA%HsKUSrQi$YH&NBbDw7N9!<@q7q$Kcvs81TF(V zF7imdFg`K+#B-`HPKFUO9Tg>d;Bld}+}UW9)+pm~7hS)JXg3{owLx>xHWFzPM6bg2 zp^%(1lT`F2>&444Y?&un6y6pJMCx`6g2cD8X2FrGBWLmxP_q?SUP}PSt~#@8znK9m zkcm9vcmN*8Bx_($saL$NNn?e7@oMj`CxAHAN@hbXf-&5V^`>Hc3U8Wpt&JD6Fp_m~k zVv;S0nb&R}o@8JFhiOif0DPp_1-KpNFQiqgQ;%(TG*7(oie0v-n$y{70Dt+U)yfx> z3GIC}4rKUCQTCl-;PBB&Q8j=Vaj=+iX0G-!L&ozxuf_iR&lF3K3-g4wkcKvFFWK}h z_$6@s8+t6G1beDFQTzP#R(?WgXf@s~LE~pziL7~-_GOj+*HJ&W7u3h-QRJ*v5(^y^ z<@7z8Woz&dAluJnBdUqU`c>m|7i00)6jGwn+Mi;_l36vq@rR6->WuHb>8 zbvyQN@70$(Iuu&!-mcI@kB0$iRd%FKiP?57*JGY!!Q*hzWb(foX*gV)De3ZJ?dzpn z>dKy`zc0}J)A@Ghn<_DpN`RRrwo%u(>FK%R9n4*XB?tfNxC01U>|*E=`KJ~63aW-^ zOM!)LbzlF0`G}0qtfm;ZPLp_*^r2gR zZ7hlWE_jP@JJ&jhc7|2;0P0xdeHWwy6Sf+9_1-5-(?2$w+_uvpym4HvtD2MmbWQ+= zF(ySwTn%g(Zgl3gF} z0T}c2`PrwS67nd-NOyZM#!WUV()NlIvK!taob<-OwR$RgWt!g1|8%bYYRL06`~DUf zQYaJjqzkVOsth5PdCiaUc2gZAa5#O={yuAQwD;E?U4E{I0anOMk-qhx1lgM?Whrx1 zVIgHL+<|p}AKkPBzTMQ?qWGcd1X!y6!uW;VFDG&r&HuWv=eN!;0HaA>MT14U1zEmk z{b5lAu7g3=&kH+HW1AS1CH`8A7)GuR&? zK23^4_dp1&MOjQ9Doweh9pg8dRrowfaPdop@IWWC8NE}$bbIQ%S|%Qo0p_7GY+|^h zW@`CyBWC{YwQdu!Hr6X#3zZ&DZL7iqFVY{&zB~00&MAS9S6qSND8LW4ScE2&5`i|c zyO!Jt_vPWC!CFJ}b86NV!7a=)C6wdAGJgkzpWZm0FadR@d{n`cYEe8wRI`Z6^RfMF7)J zvyT8Z!Ya}mSpzeQL5#)e-nbo(qx$QMJX|j{`Fp{{)Nm!0Qj44lkb%ROh?v^5GaA3m zwQl!D;aQs&@8(F_mqfG5jInVO2RMEdU6DrGgi|9JPW|!eyjbs($z2aUC%5J$4{m#! z+ZV%9urHK^LRLx0QtRA~(FPH~TtpK4=+y3*I+M!kAAzxO_t!_VG{UQc9s}nr58%6a zc^WV$)(9+55$^Xbx80%7hrz+!bjz+DQ$s*4LxH%LUm6YaVrl%kfn#OSVZ~Fsdlc|% z005#V158&LHb`QFO~~c_e47CDjpxJEN6f=_Mp8$ZtJRE(vH)X1JVRA7^f9kwcqOl! zvm$_`Rjt=hkP;=Ea9#lE0^{27#>c7#wN*RMq(Y3aVy$pZHVz>i`$J^E%>?$1aEs=Q zYL<-P3lnmXAZVH_PIl{ZS_e0Pd_A58ummCz70yTJe&t0l)-M4N$K#}R0L!Pctmdgv zn?Wd|ly7K0xc@Ztp>3zDXE@o>6?A|BK5V7SAd;GqjY#39?Rw0Hey7=j5JP{5#|ESR~fH2TzQhy7W%p%8sHtyy-*Y}^%CU4XP7MUAf< zBSh+Sqf#}4#sS(qNl)=(onYR}Kp5QLYvf5-#Y^JugSs$*H@9EbSN zndz*lpTKbiDu_%V{*PVV32~BHV$Cgq%&7zX8qjXuFv00gPCif|DwU zifXGevR7GU<$JK-Xa_=>?4!4gl5IcZ262NpD6B9H%$=Dco{IjQ|5zJb}j zD=MA#sZtc-9;3Z%YHZC4Y)9h^@`I2 z^}_sx={sG16~yq-N1Q5{xi0B$8lWN}E3<3j$og>k$063yR(~9*b^lu(;wSklg!4!i z0)0paFE?t7Y%)%6Aag8)p8|U|X-8zMS-kR*9?JwL?P&K(ZQ;RF%-7Y(-ExbSqCiEC z@az{$azJOCyPOknjvi6^(g#HYjHo~x-eoi2f4lmcy29%XcX zm)s*caPhX3N;U@rIh|`~JabOc;-!HfwBzRuarVzbRNgfKIh#a9$BK0}<;Ma5D|5^C zmd1iS3d}=E=;=N@cF9oVBfGKZ=RD4zBT}y@sQAryW6;&Pnaw0)%RbEu#@B4id zz~aL<58KsPZINpwv8dmbU)T0JyS$V=ER~=$=Kw{Qk(Km;QxMr0Dv7I_)+f#cyx3MO zlR7Sk1?SiqGGPKww4@Oc01yAGsn-{G4st3qKsd5o>pF> zvOrZBS0HyH(j&;ByHjwz%&IC!v6B8V_8i@T0JEOLIO9N;Mu@=LoOQm=xk=WecLMC< zDcs^Fnt^0T)$f0Aj;K&@qxgi~NiD3zF%L*wkPPkdCX?*T^BvU|6Em0f?;>pFk*c~z zSHV98&16>i>6}MEJol$%R%|IpjK^c%S+T|h({@O6tsg$ftG1D!y@CHk2Fqs{0}Uqq z8jF{GnEToQY+#3W=9Y)Z`XJ0h6h{E{0n9|3Ja&){|kOTZ$4lo(cBYKEk(aFRid?gexrg8d3)+*RqXBN@e#chQ15PO=p_shKgMR2 z;)N}Y505aS)zFT>Mjf7){mxBWuFje(@N^cyE~xN;;lFtpM;HmW-qIx8>mpP82!Fk=X$36$7pA4AV_0Takg@~Ch}QuJCn9q5buOLwV=v-_)&E9_aT{{6MspMx&_f-Gv&!s z=xMO2sO*u7OFre?UpPKv$p?3w$8Fv9_u3rwxW0m<-g%PoYSu+)D?&-@OhMWCV%#b3 z2deos7FI2*`6P3M636mI0g0FlbXKq;T<2)QO|QJ-W|<$vpRc zJ_6rz3~IUGZeAhTJ&EstzQsQWkiRwIWP@DV0EhC1D9W8nZ;&VvogoPfM?lOtA)VS4 zAMoK2n20GgilT*+Lnoo|O%B~x8@cbda66d{k@wh)`2sA-g(FC0N6*nnW7kUSGBE-g zx+x)*{?{)&MOQMMN7Pz8nQu0~sVrFFWZE(LfN}v)1m`LyksTJ!mfUD74xGoAJDLgI zmm6<@b|Uix7RY$>v+e$+#YeJ4a=BW8KGX|9bCjf$9Y(&Vmk`2uaHSft(q8eeKf_K` z(%SSz5bf*?dV4!MQ!1{6`u%M8FXH-(oY8vr;cNTDI{eEP3CffUlUxVvjV>^fKl}|? zm>|$GYgq;2m(qV;x-i*)o^<~BW-0d%Ky@>$TU@piyOR)O3uhFgY9B@;d8^O>ruwGr5=2{8G(yMbzTec#uFiS?8C( z^_PcDPdD1+lEx=ri1W(1d7v>mpx>Mj9uDXg7^#82*+g1Zz7Vqmb1q)G{d=;Dj_pBJ zj6gHTp_LL_F8?`wqXVJCLNP=vFv%iiK7_`tqBn8_G7AaYIw=BhgG^vRK*BXP=Oq@R z#GW{R9nwW?#~Ylu(O3QEgs7@irDvj&Bz|N>aP72&rBh@yH)b{A#C6jZvu^}9OSGZ% zSv`9Mkk9-?_7YuC%np-m&lmISNAV|Ld#Yxf330U#&}@zXPYT!9s@?(2F9Ap*a^c<7 zkB8u|7-hHB#~b8~PXh_lJ__69f}v_&V=$APm~5dpAdl@&W~(w8fcN?X1wROA99FsH z-=G_lqfhdpcszz*yX(h!}mB&%0T3o<|G3RjNfVia1+Cc{_z9~?Gcp`cQF|MnRvjF^SMwY>k2KPCpyNgSTUbJSj1zg^#`z;t6GgU5epR^!%sF*-!;!7go{xOB+9}>y3dF zxd9_s^#Fo7N{&AC9U9f?dMlf@6tOd3e=Nsw>Aa5pSacEQ$KkkrYkM3bZ&Ep z*w+3N$iR!=##{4i6AY0SRw=xl?mDDjqXBQOiSz<(f>aHqLph1&|0vP?SQi8th;IAN;#0i4ns~ z%gzkZB^v1;G3x~WB7#0I+QJV?WLJMd0C4j(m$|#m}+xQ^0ID! z^BfI}H?K^?inEya&|Y{05Dm1BW{kK1qzX#A`+eDtF!ga5%KL8;gi$f-$d|ozLHTdU z5qStAwa!_L-vZzOr#3V=j$87eAl2(tVzIkupZ-d&%Nh?ms=m)HWaqQ~{U06>J$ENQ z$wzCLw&=#fe^i;!D{)Z#E=@;5D_9WV$Na-N{T92O#bovf@DQFKu$-1*81v()(rk|= zB9@IlTS6e1%b0FR5xBQL^_K?rRq(#GJ$Vr}etG=blTYLxK;79k2fh)#b&?7&PVqtY zE4!7>4F@p^BXErD;W@VC;Y3pb=qNE^pP4O9a$!9bmqzaaLbpm^W_HX~M;V25IkwzK z*;dMba(EPJ^Zf8t;EY|of2T6tio-;MeTdh(-`~r?kt_LciH1W&d+*3}Iz|^Vn+kRS z7n;7DNXMzVd-o5>$RGVuiP;8nD`29oRYkoY1w71nF1corD5kCvZriP}cyp|IfEzLe zk(nlTyeGoFx_9Q|?GyY2faU=J`~h#v-}L~agcFsF9&H{s0%A~~?Z(Z5#JgUEis377 zlFw!Ji5fS6XXLJqw@IB!J_JHq2hC-}BeTDgEKiIr&d`k4yqY^Imt;6W=Jev)+-+_(r8gWax|ezKGM zuH0&yFLPudSlHIekGRA1q(rnq%`irG&b{qd(2yX*ZIENawdI_z^2PV}gp)t~s0Rt) z+&JM2WECi6stmE(o~t-fN&wmKZnTB)sP_YJO?sQz)1Iu-EIs`^oe`O`YO7{A-%pn9 zV;S3(Nweqyb~i7q9h9D%Gqa9o644*9eds(Mfb)Ckt%b6H139|~iRfu&qt|68#0DxO z)dY*v9V#nN>#j>#e%d3bR%Yv$u!_@^W^R+mXhRqreHQrMtL?66RQ%t!TFqtK<~#bg zH?%60YD{gE;c{t!O2mgMv{;4WmPb0-LidCk{)QTq0EG`t<<@ma)0K){V1ZFC-3>mcmc?CxB-iEZ}+ekM&%S zfgk;QMviMUeo{JBA>F*7_*IeucN1#@+M(@%gr8Qx@bI@v3_sNBvnAl~cv0XXNe-74 zd)|8@BYTW*{ZN#QIP@L@e-N>C4lX@}8>h;ZP_G6c&H9}ZkM$jnbc$=?ZxYCc%f&fFjw-9Ha+Wa z=-{si)Lmg0!wyY6jWor2=h^7{6v%GfKK9O4ydUauS zvYmuK!svs2!8)Tvy&uiH!ifcE?;d6Jo&49J;@DhvWuQR4TXT|*gYe&WEn30c-koi9 z@e<1Y)r#jl&DHR2?7abt=_#I~7Hd&LjrP%*kdcU~U*@s6CB=qZ`t%uV`wl3#jn>^sW+SI?@> zGnN%c>(1POrpjx;EV7r%f+{Jx%o<=yjLMA$Ja6sNK=awZVK-Uj7@QJknjNdu=(xyw zwtTFBc=YbGX?*FDCqySQR05;>&N0|-DeI@NIi4cQtzsBF_ z1mGn>3JAK+zlEA!(7vGT9DNRsK)XV*CoGth_1&baLIA#! zQsm^)@|N+c3Y))zXa^M$QPR&UNXIriqvgrUN@vvADrV1d(;PK%nd`9}7N|CGy$k14 zxw}FwlNnJ`3|=W$wl_0T(DjS?SY-BYg#Tk@orwPp`ccrzZB+f!02{8xSm%NNn~CN8 z`aR9E>ZW+P0k2YRX@riMnVF6c7GM#lMvhwohhcuw>!=Q*mm>4Kug0pvom>i2_m94H zO5Bmx_bcIE*Odc7(}e?1^8Of$8_ra#EZ3SqGqIB9;t^D%JNzg6 zh1r>{RVgvn=2iN2B=1U>nL?ih@WoL%;yaoeL6^mpR$sZ7`R$u*Z(bT%@7DOi?&Bq? zb}Mz1&L2z7htnajAlBIBrl1bGjC}Y?BNtCi z*%^*jM^sb>gNQC$k=pOJ07RrE77HA)sI)()4g_fSs>+-_nU*QPGo^j|g;nnO;(8ef z;=&;BTI-fO3Vdo>i+CRMACLA&hRA;wH$ho4ap_d-M>R+$)FA5kgu@DyD1A{;|DK^o z1C3CzS5-^w5wu#%T2zVW)W?)bW>(){e?gFwg=<76`Q@GotOIzr%aFK0(;6MxH5rwG zaSlk!F**ax*>qSLJx@Ksd9wz@M_)Qh5SZvMuo#1KLtKUlSRaD7SleKgAXD#vG*xc3T`_R)hhq(0L%; zF{*jdh?gWss~AdYUV;JWq3Xx}J-4b|e8=6_U5Tm@(o5voz@){Q6#4nCDF1JallFY| zxfFL$vt(NeKvH}R8TJ|wL{@RG3GD&+VqKdGPEK*hrUa~y8Jaw9;F7=YmRnH~g5mMZ zkhA-ez;oczT~jYo&)=$@OhkKnf2LKLDeS#t>`l89Z{T zG?>_`!1;w_0lh?KMZO5(xXV0X>)19e`~9ivOVmySDZ5q!Bj6k#YIEWcfoyi`t|=Mq zU?;`RzgmDj03oy&2cBDILb0&)!gmlA{Pt#i&H#wX%)CF%<9Sqs)G5?T$~Rx-xdIje z%m#l!l2!EDdXtsqR+SAn+9=6In!NQjK!t}*Z)da>baujPDi4p&s`AF1cXV4$dSsPC8UH{ez2h|9$kC;nLGTJ6RY5x;(#mBIZ`3k1?X z)@5G@1gUly?>G|q8R{HTp}5k+7&fdj)#C<&mNANYVyvJ;pVu)rOeN@umpWg1yJ#?~ zUvN%=StxSDP)2+o500)H+UJ(0~p=$imnru;{WA!7vzK9rHT2J#O5gi-SioMpNtJ0W&96Txq)U02a>2@ed;n36$ za%nV~=Sv-Ig#%LYz1L0RW;(t_DA1TAczw#QSCnCYYne z^><=dZbkS3_R!sq`Zu869fSoS=VDxFtYe4p_f7L`a2i*Ln%rsbnh~O_fpm>I!1E`t zU9hI+Et%{HV`vm=lN!TIsy)lCO8-5@qdSgAClR0L=yu7THlXNB1jC=}ER!#2RZ@oJ zII>+YUu2;JAWjTs#rzhcrh@9wx}Fhu%DcgaxFpf(JDm~VFvdf4jD!h1BZ zaBMXR8X2TI*RNyRaHIjS5EByy@vyJyGwEX(xiZl7ZhphlQX_r+qiy5c!K3aI-$Jp* z!e@f)Nz&SM~FD%MEdmD~tKAu{mkUpn+_BH7^u^f;FPdd87__+#1!Hd$P3;7@6a zfiu4S^sWC-0JauM>DTx8BOe~kgB*Cbmj{g8d5k0SljmmyfG&A_phHSMp`K*`Pxrb{ zDw@kmA0v~Webc|}ef!Zy+dHS70gy-sl`?A%yJAI#L~3%+mAfwNbywp;(!uj;>A>1km?ct(Ko?g;6C7#>?*-0J~T zO5rMi_H`FA_#@00Z$y&_?_Lt*Wj#9BD6$Xo*Y}~+($X71)Qz4|uS0$5 zy!0)VSG{?%-dI$fQbzzYx<*RPs{zwg?DEL#z_$!(cCMlTiONaNMAIlJWaBV`t6%th zyZsBl)L#F8exq$%zbqE^#gdEX^;6B9uU@GajhFkDOasT0!DxX#vc0(gb$FHBftJ!l zA>>cIc)oY)c%SGI_Q|KWtKMEt*}UP=vztO{3%Fqr;qBq|868v?;N$VR>4S!G1H5+p zZ`@mJ?;otUFTZlq{?jiVwXc2QuwA*d)VG2dYdBgcR>MapI!LXLtSEXGtwV8DF>VA= z3J_5we}oql9*kq&!le{Hnnklc5q-TB^k+xM%97msv>1n8|t`CynEq7d*xUD&GwCd@IUd(F#1;~ z+#nK=QgjDgjXe%%>f7d^Ja@tPDAZpNQOKm{FoY)ob{hskyF3H*j1bUhoppGz*Li_a z9$)K!to7mbVHg2)eWMqkXpc7d9$EJvt+jXM@qEbh7ruJZzVi9Q z_UV`O|CaakE2;VfF#i+0Zm?qAnQ7n z3?{(j-JMYuy=2-*2A)n&o+ZYqJqdtJOF)2X@a6RexxD<8C7{4}Dn4K5i?43*IP7Cw z+SFla_a3aZ+d9whFWO)IVryUf;!*p=4gH@%{ro<^`u5R%@X*Mal8(}Sr9qwOBTv;m zjRw761(+GFqhrzmSq4xYc0j4upX&zR$_8CxhA1$rQzvXTKk>6a+wQ#f1O30C*Zq6< z&;m5Z5l~hdrGS|z$TI=4X(U+ZOUm|gLD@zz>;)(%*sjYwh6Whimv;(4HikL)Q@F>= z*$jq3j5mK`8JN7i!hINo3{1cu>Yo0G57*jVdHuC#7VQ_lcGAA^spIzib(x+#oF9LB z@F*~dd;Jkx3j@-^!CV0t*^ZM7E9GkMI>X0@K?zU?(%=WMt3u3^oz(ygSSnwMje^_C z9;65s$6H$PC}XMEw!MF@z5I)Rq5Z-C`af$a(DrLf9w>f;Xn@E^B$!f0#+pc703JL4 zFakP**Ds}0oohUptaW=95CC#mSGu~HBgA`OfMGZf&)hgB&yT$VWxT%j1xp^_)VluR zBOdEoYtLP8?JvK2(mwmi<97KX>sj+xzUw1i* z-aJYuDQr)Q^N8prMm7pH59As|rNbl)UNRt;1GdA*kJ_c1H`|Lp_w((0|L^~;-@DA(x39J-i$EVFO6pe1-Q1Z$$#y_(TYR z9k2U~7M>o4q4`+%?(Yfsjm@?8Q-7+pPrtluH=jRlXZ4?Q zS>GS?11Zc+69oLxi&yoDwxXViPseF|RqHyjcYRj}NkcO-0N8U)p+bWRFLQ;J&09nO z1`%|(LYbhGNAW~m&__e4wi7M-9Xy6zr zG+U%U5VGgH4q)>PbD7G}SB!)*9v>UO^z8C(@mB;ep!WO#eYOP1VCG?7;L9i_Sz(3Ynum7~B-@rQ5GN%WoeBeOgMCdinm|@h{d+Cib`O8wBsl_$NK2_`Okf>eelK`?fo~tum3}&&k6(;lW-)^n0$~54B3EF zs1XUWta`tc#;xKg!xaXkw#xfKP7RV@ED2AafF5`Jqd`=NcfH~^U)6q~P|pVM+=WH^ zg4Xz#p4T^b_N{sT*_p26Wp36-D4+S%G1Jdj!BkEw)0XKEbv;j)(Ba{95*aq@rlBme z1l>yjK=q>22^qw2xrI+>!YrV7&@&99P0z44Sitr(pSFH z?*00EQk;BGKSdkY`G!w2l^S3vpI@J0AHdBZXh{#w1YI=BRZrfVz4ZRsj-Mq!XLs&bHg&CCzoK7E+u`yS(A6blwXVjQlc%mUF_l+o z!51=m8`^1HUEdV-VwOmp$>?>|2A`P*J{bUR6bvx+tQrHZJ3?}G(R+dxLSq2KphTyw z>)qCGF7sx&D+;K}Bi$uDckNoc`K2$nKl<%|s)tGRv2l#T-V3Zu7vFv&0zkJBWIE=v zt}gWemi52FxBn^gumpH_Pg(71=TF-MMGHKBO}qPNuP>UOb#2!!>qoQo&#d^V9)7)x zBY>A?=2MT#;oX3hPLmF8)R8gAsyMhxkmGf+$`~WC664GO+(7JBR1{Y0`<=kC!%%Vv z>p-G*X4QL6>6y5F4$^rT;Z>6^V`X9`q3T^0&yn2c*;ij}AH4H+d*=t=Z5#QqF?s@E zg12&A<78RU@z%P}CNm6zb)FkH ztnZHmJa_K4w4;CN@Bhn!yJ(3@BHw#I^QaH98j%fT6gi* zTbmc1qCd01oO)fsspLxONU^>ckyDo`GqgGZ~g8+*HQqGAs;=v*ZOjZJk&E3)k}cO8VTO7JVU9_ z-#2%vBOg%!BhY21`gOhP9?RQ#Tx)xG(O%H)+H05ft6chNRuqWGvoz2t?{q*P<5573 zH0RAbabv8Vo(5DPRZ9Jsj|TJ^8|2W+5H*Tnr5!RxIpl|{0CT&k2PI|16k~Qz^HzT{ zhoXfJ;|J856e;Bt8d{>5bB+qVi>B`KO~oAOq4opUZry6P-+i~e_1bsa=6*augj_a; zOI=#UGXVjzZ}3p(dM+F-RB8g?3jG=O0b9laouvUD?%)yXq3@qxw9A(k`WUw9Kcv>i zZXA5ZV)Vo?JkQWrpBGa@DdW+3gXnexOV^jgv(i7IsxD8uRh~K80mnX+U+s4+kNLg? zgxB`&k>DvIm%6c0^%ZnV;>}6Scs2Ud+F3AliZ*LfK0VRCPnNv;odIIv6E)DN~ z@P2!!Uq@W*@Xw-{xY~h%jgPAU+9&AHcqt9=^YeW5<-2|2>)P0<8}}bSsug*vB{t}uaO5F(%_1s!NT1Nv)ak4) z_+lI->xs5>lm~TVz4JMZDFRrjYVj1XOBld#i~=dofIp=?4MM<#%V^HAcc487Jka`~ z?4g!|-Mzhb^E01s-}=4Zm0O5IJ8<75Qr^!5=m8Ti4*)-a&jS|T-Ag8(&ShPNeU}CL z0belDM(?8j_c7kie_&r*i_aMj`TCiURJIb25gnugsh;T~1A~Dv4>Bg^YTw&bmC{ZN zp&g4EojMNMF$|2P4uGz_(q5OmRGFr7jn4*9jDUzDje&%#M4L&FOVeAmnE9mcKoJboe;%{dA=2u+Jr7le zUC=HL>wv6ejBP6KdNrzYHgjSrC`w21Ro=uXs4hyyGo~}S;&Zw9H8)h@u5%~Uk+9XYFED2UVP<~?Zex*+x^EM z=_hF72NL4D0c-*RzIOb%=1WS2dOZJ75rguYKAgEIPv1Yg@cntZIo5K+#?G@H0aIlS zL+S`?V9-en@T~!c*$*Tk%k`Gww_Z;s04WKxs$M8vkygG}mJFq(JL+bakPviKFQmv} zbnG!=2}q1xAw^agu+W^9t(yr_oklSYXqx$xb?!ep?Zy<7uR%YxjRxpCwd1N_TW)&u zQ=e|%{Da?Pq6A9=Y1pxuKxJ?-(BCSF9K%!-FPK zmV~m9S<3TFrm4>6b45n>2@(h$~NS~}tg z+2nZ`10!HKF}9pEv{YQQnci3FtL5T^&RMz|>6L$4>b6uC28^dWW*BH)zPk^UX=4i= zLUZ%pKl2Hk`X&&D)xmLZeg>xGf=hi!WT82#8036{)z*XZfK;zW3}>t>;?)0Kj{6xV z@xrZJ?ZXf6w7U=PYCP=xIXPn8uiLzvx_PsuuTyWz%mJ33xrQfoF&cGnvkMpkEOEt> z7-i_w7%9zpHLH=*s(p-;ImqDsSd{9J7C479DDV2gA!%PS zYCPQl#)%a;#pG1dE5z0SL{O)C^JGx+6yj!~ld*YsDgHoWHW1oJA5J1)v`nk!NKs%* zUpBq@%AacA_*cKLjUd~-cy@q0dnei}Z0I%}8$3OJry(+Fh8TU697-PJDt%xZl}bCR z;{Wpv^Bm@Eo)vjTE1izx81sxKdLR;oce*|X>MD;1fq4-1;2GyJ$~6Be<17 z0Y_gv?@z^`2Ll`Y(6h#Trs_>?+$`%XNaTv*H8<$wIfo-#t&#^0HOX;7#0W0vF5z=8 zd_q?U{6{h^0e~*>^%qaj%HY7FWY2_UVN}+v-tEGmpI9enFS=}E^i!I=3Oscm7Yk)qvS~l z!ug|@WFakj(2Bo*7Lc4zBz;h-83zGl^g(AK6kdo z+PD;N<`pgKVxwIQ)Rn9hF|>^SMndt|_?)sQ$bqW3vcgi&ZGCL6l&c z_dK%+S&)77x*{kYWx&sbIaV#+Wd`J<(&&P_dX{4ih6MVuJhfr{M|mZ4CcHPLPLslFbmK0?1}Ads%Ef#%PI(1_30-K^myAkl ze4UN{INb@^C=ik0<>>vn6mQUazd8QX^y&5~M*=M!TJcsNBaJ*qMPFYY$56U{X$J>dsg8?A>Peu$JZhSzr}W4dNA!)>%MN8CJJ{ls|LjcTcy4J2dozjWR6jCVJ zryZz7Ei7xCXwMfz@~kQ1^tu(HjEy7K{m84NzoawqIv{(>MWEfhK5C@w3jZb)I4Lt_ zRNK-|m1#2Ot6XEP^6FTibDRb!Bj-Ra=c+8q(N1Wj8sM|XXFKDRd1U!Wd5DL1+5}2S zbyPxFgAH^wDj^;m9aA5@)3%P1Lw(V!cBFNFmMLhzTqz96N@L*L};kOh;=ar{z9VMg6q_cr# zg(K2nU?pqTUXv>$8D+q0I+GucQN}=y`OsI+$?ct=1k`-!r^euPP;eRVD4Tq>Df$Rx z^floPFXIRYh!&n5V$w3eS$vNko zVdnm$i?!T)t+UTw=e+msz27_YF?4nPRo&Iq)m7E?kEQKBIYbZ$WNQHewPJ%nceT`1 zeHctkP0d|g9GqPkg!FwF9=Taqm^*7*n|m+_aj`L&I@mcn*qhtC-t%%aXAt7!=HZ4T z-RxZ%gn0Sc80<_u0X809Ljbh42S6?Wa{WQepd~G-EUC%h$M%n-{utn&M+JuZZB!oc z^{8AN5I#OIM1WU-hnt&=PmmA7#?Hkd0LTF5<_8OK3qrUdU~V=p4nYVX7cY+hKR*{2 zH#d(U&+ozj=w69n@M@(2pT z7xddQv}L7v|Fj66zf#R#E`kk^@OOc@e(U|Kp?Uw^p}E;09Ke1E@(Kuo1^ETRfQHQ3 z1=zSb_yBEj3j#_Lr z5Pk?huOK&^9{~X_h#(h)n+pu=9k2ylU@k#0 z1k4Kowh;Wgm|Va^E4q~!MB?OEC2!X@PPUGc>sfh@N@q$H=yyK z9K3+qfv5Ze@LhnLBR8-q{J;+IbA!3SU~a)bg#1f$g#6XQ|JZ|HL=c2Vz#RcX8w8aDP0p{_8=wBJ1;J+&xU}=Cdc?9{n_#hC#O>o0^2ExzJ&&w^y z#m&PH=$Pw|jp5?p;o;}z1$+k|gqMdGXaoRq9$w%~LHPN21O$13rNM3W583`~jog3f zKmWsB`9&ds?f=!jP|vqnER_r4`U&kiLfLcmRh+CuwhD>*Z=~YGO+# z?`+~|Wo_!hMyF_R%E3k_EzK^aM+fHMqO)>!b#xKp1UascK=JuAZRzIT-ysu_q@k14Wl3h)lE#X?>1>7L-AK~Ut ztUQ3LXZV#D9>IQP=J{L9@JRLVa`OrR#J^4r*y6v>4LI|E^{GWN*ZztoI;{f<6{vQO^ zb|#kQzn+|*IUL~UfXvL!{NB%;><1O6qrK&yVkca!e@zI?Zf61-{B19ORSevT!WH9eZD$Slxj(gO;_B*b z{m9J~-t}QnRnt_FRAvwYc0*lFOYxqfnks`3u!r{~Rpn(>?*UE@fMs>1)zma)jJX(u z0CR$C5AfIkJD{uUoq{XV@K>dn1Af=@H@&;K{yU;bt0}8#!smbovTM13Oydu^fP?(I zT!7vFDwp7|asheSA98U6asfKBcQE@+0dQ^oko{L(xd4iCc5nq^6Ff%f!xMQRW8@bA zazp{(Ccww@BSiig4UFvSY+~y;R3E3yu5KO*^MNnS1qhx151_Lj z(9cc&Z3e9$&;D3EJi&qUTt`*-7!1D+_;UycH)m7$Xz;E4s|RpxM(Kh;Qi`e|5CS3+ z0topA3Nq>qG;|D1bTlk%94uUHJbVH|d^{pz5>jHKNrI+^vvs}3J8bge7J;o|aJV_u zOWf=?m>Ixd)4=gdhIK#aEn?LhS2`$k=fw-Yy1RWXnkMPPkbLh zV^2QwgXTQvRXv)eq&R%8)_eP+*YG8PzozMg;}anb=K#(5fl_1XeMvDmZ1RNsclZ*( zU(>+x!1WmT1d7A|!J+?w|5*=#;+`L~%0)81@ch)x-|x%qz2q%v(yX}V|GRw=x$KJk z#`E9j|GWJve2Nd>xfsCL^Z(sGQ960We9k!UHUHo3!>y{edGGi2|Ghp46jOdvT-tzE z92s9lTncETfIfVT8$ci4zO3XGgI4OKJxsK z2MP=LAs@Vr{0$G6_n&+e8YcShJ_?TzAMjB`q{L+86l9d-RMa$7wA6I;40Jc?Z!zA! z#l*?aOV}L*f}iV8g96zf#Z>W(ul)hUSDA{+b?+ zzovOiko7z7ij92ZH4Pkp4a4!*^l*7_pveu_^3<3}HD1f}3*2x`1E2RAhR=IV1IJ&( zaQrn5eBNsqKJPUR9DfbN@z*qPJBHf~{2v_pH(|gIu0KCw#BZIyf&<0NU;#Y%6jOX~ z`})sd1Q4hKsLlTH3I7iKQ(n9eBhkel|2p9!q_-+@6OZgY&vpSJdY4h+{N zT>J@@fPd^qAKt?IaQuN7t$4yEfjH5@wAfX%lsLQ(Z{dA7Ueo5jc!DpH_*xF5_?4v0 zk3PJG_u+W3=Aan7ZHTcHgX7_Scnj~t@j-#0-@owl^LP89Pmsm0zyB3}IM1)&|7`wW zY5yzp{b%F<-RJ)-&)@I=a2>zp1J}O)@3z-tT=V^%{(prBK0f>d=l$<}VNic@`1ij% z&VQ9ZLS0oJ8-oG^SPZtJf{Z3m`~W}%5E=^57&zwvued?zjtY7%!1EFK7eR_S)e{7w z11ZW#-t$D*N=F|ey?@pr&p&pHgq~lKzl=d$FiY00HJGlMPWmRs%~)?`O;$oep$Ag( zlX(Vt3C$7wDu{}Bk|Y`-M99z0G$awm5F_~L7bjs?VrRXuzRTs4zDxg|3;u(KgZh=a z3K0*V?Um_^-gM!Ut0^s!e%|BQ7-R*yaOCyH(q1+m^tdKeWGm1pkpf)@&^jBOu?eAn z1(jmQNyGr{V%5H$D?uj0LrS_JD#A>JPN$`c)msusP5cswg104*;ug9s2NVNQ0__5k zos|Po=sFVnvl2kqpa~HA;!6;=L=0<&EE56+s1kvolN*5|kV;1^QWX&lvPHTTX9~1} z#l9rzZ~;*MQGlT={)bU}yYljgis-ErfqXXK6|!rVlJw)>tr_}keI&3vS|5&B82TP~ zv@vp0T(^JMVYxSDI*DDsE?Yj<8x@CYm)~xD@oI@PU{5ZFN>4ws&v_UR(bJ6Rs&?&N z>ZWwtOSg^h#Mp!}u#-lZ;d~UeFuzlpBZcC&L;aEV!FpkdwhfKqAv4MHd?Y7-D#U?= zM4;|u+Q(v|(#~R}*l>BVE1{uI_fm7|)x-QfvIftKeuUI#m@_qQHU}B7OZoBdUMuOO z6Jvd17q;k;?bBJZk)ykb2x&_w;@*c=8501F0{SP@4jgo0$JwT=xq^bY z_~)Yc?t9;V-p7)g_Q=R*i%(+jsZWr|?^$UN{~vi>;^JC+y~7n-%>i-8s;0uhZQ*0{5lv z#OLNNEhM!l!ckOQ``#<*9=&Cz9Z$w0IUB4pl`1U0FbrzbXsl_=zS3~RPb4+p^SdJ* z70(hmC!Uu6CC1j58E@KcZoBS4Rb06vhWg9-(S~e;Wk1bY@9{<;%%AG$0e#Tc8=VrP z<*#p~y;&_64;B;Dx--02Mf)%+U-+tt9^E@Q-zZUXp38L)$D!_>YYE53(mC0lx;o^` z*!3F!VEugUNegkU!*D^OUX5%1+db&T4rS>pVUJ?H2H$EjL{HnPnql9|1zOIpvJ7L= z0$T+N6}pB`4(9#Jp)crFyNJY2CS7v;=B$bMs!_>rL%C|Fa+FA|pLiPTetewR+Je^P z=O=+wnbFqj@HJC1NRCy?N4LuHO$wh)(%Sd;`iluVEukh!2|IxZNVf!gze23PwT`Ud z2Aqa;2AsCgo|ilNZ(oIBQ{M88r4c0v^;mdxxOaKbujCu$-6wL;D?zc^8E`(B(Mr3? z^?bFR6xYYm{C=W^fnk-`zK~ur+2zgUS5s~W9Ac!Z&FcCsoQt&OR5EG(i#I&PD z{xH#CY{&nk_FMaIx_FVmwAbA3nbOtnP~gT`MJ}h7c-o#!NK5M*R?;`32L5MD2-TD* zBkP~{oe%6LD&Lnyx<(lmnF_hB-$Fra**)kNZJRMEFjNfCD7h>A-C zj;7$-Upjpp*J_d;gekS)x;-gK=g~6zz);u7zCmF{c;+nT*2QwFL$_D=3l`#aygteU zDo3u{CXH1WQ?(vSlfYKB5Vwn79S$;1Huzm2&dFHe+Kc_Z2VNO>Q}2rwN<6X@PC7Xp zRP#ATzty7;9CJ>mtvLO@SkdE`mMaLChp!+G93$=oJ;{mAWqudOn!y()tO+~PxT1?D zV=jP?61@PQ*f(Cei%;DmbzjP`#LgMXRiky7uJcmNIyKo8d1f#Xv(=Nuv1t?bR84s6 z1M^N`QNcI1PaKHdySEdN5!J8?O+rtMq5H{8k|8Npb+Lf$=_FN3dCrBBqRg*fly1c# zcp1>d2Z_F*ES~gzp5fo#QY4;cjSFV6qfpGk1H>E-jQG|q`ZS}{ z2Hh&>1KAF#+|REHrMV4G z|Gh{8oSl>6j32uy|H}Tnj^jPdEKXf84w?lU+SOXsNKr;?d-Z!%x1gjYz< zAvQjfP`Krj$BcD($U+UJ(zb6nCw@3tur9KSZv>hMRgbpqj7J+#-^x|4H!F3 z9Cp^PMB|yvVQxX&6X!M%lZ0x_q;8*{qEnqZLvEQiM;S!Oq}nNUr^wM4upYBF#PgX4 z3vO-E;Wln2UT$y6`$A5Zj%eP>>q z+M0xwcWLP;A6%8bFZu3RMjr8290ajU96bp_$Hs}i7y+ag_*$2*TP1TN6 zGW}8h+5f{di%_xa_Fq z-bm=Wbheh^lN5U+G-Us~6C^_W)9wOJCNLoAys{~-mUBmu1J#;XnO!>8bx*@|QfF_I zC8{LsWpBJTc+8h<78<$Xcv|mWrIN}&03zbf+EnNorx3i_5lFnmP`B-jX0I-@{~YVtnpS-^uNy%gH8O!3VmtB3w#ZG%O;!FIl3Vc@p$SK}_(jTd#xCVTo5RcMPD1W1G^ZF z#tIlQ^iYh0dpZPI47G4~rS5L)vG%C-i2LKQZ44e;ipM>8r_xkYF9`MhO(JbzoY_dw7cXQHS`!RxKGd@ z1H#(o6LUwIE;o-n#ijsvCXWC<_4rE&>hWevOcg~3&dC=b>ROgszY{uI5Y!WmClm|? zMy4B|E3JJGHTk43U~3f7H(qY8)L6lgz-`+86gHHvh2(s{$)AS^HdbMI0ToJl`h_>r zE;zpy@n-qEHkWemTTIRvAA`&!-sZ|tZ9byo^*&tfjHz;*lZqIqu~+;k4_aN54T zNmCQ743e><)5ydSHb}Uw(%Y9V%ort1Tk5=Y_c=C|0GE@z;V1j_*0q_&fB^v@ioRE; z)%GnHVq|hIx1%FR-g0XDZ0t6Cp8z?m37Qb+IvqjC^vo6rp|Zj*0`(U=jmGo6DZIH> zX(_yx1wyhdPX?F#%Dr#rPCDJyeh4sApoKwgMv4<3dNN8>9dAvfBBA0u#lrO8TyKyF zZ+j4^S7C9(EM3@xUp|&5Q2{&`oFs~{EB0nY%x^v;s^q@VojXuZ#54bzZ@>Rs$!czfmiLWqoZpC2&*T3pK z3zB%`Ea0Xo72{DRAM$`x2^2(0K!R zXmF1gQxS0hxI1Q5tKUVerUP!Hk&i9t73p39&KXR4SCNhsexud+!gdQ?2DrOEU6x`& zUknBwaulS5-U_k;<{vO%X8aF?JL+a(tXwE>Jl?>j6`Q;m$`xB0^SczO)sOw;v18P~ zjkOnYT99K)n@!!=4LLVS)t z!Tg5lvu^@dVg8`bjHSvuq@A4Aiv(lXWa3>{BaP5u1J?oBcKi9Y@Rnt|(a{CqKE}_g zU9`KTVXdLvnXKG-E0jMDtHy6%X{AGZdggK&GFE*P%M2s2!~3D=y-Ms>N|4ByvHzL* zSmZ(&rG1`lSX94U4}V-bKb`}qw4QVlxCye}cZz>1I;&{Cf(O5En%@iBYMjiqTxgH} z0{Bt06FOVgF!pBPB5eV?gMp`zFyQb{+-N& zQS*rxUmW~zUftL^PRv){a;^71;sLHr-}D7-Y5*Gr14o>6?6s&*t3uQ6>@X5eYSd$0 z(PTn-f{Jh@&iZ?mtojue(R$@(5u2iD;uo?lAAs{h$N42;<lddbjv z+}4K>#TO%EFd#n1wlj@s0t!k~{r<_3ld=yaGHNIk|~LVpG=5~f1i}ipnM`0wY)T}uLY5*%8?uq z!AlyEFHIsVr)hOocY6Z31nA9Ea#W;KqCNfKa^p$g7r-&4*TNbBzg9gts&@(_Z8u0H z>`>vEJexyBl9osGqQ?{NtzU={Hd7EWZI2o)C3*Fv4Pj(E!@G*-gd*c&);1TX)urW0 zNl!!wcqnvm@IoK}yThe4rYqZGPvLMTQ1>D>cb-_sU~Wv!vofZzqyB6;HQsTi!H>{V zT{W#Wf|m|`$QdyLtEtj%q7IeTSADv6Yel%f_@sn{4U>c|&efrAuf26GnUKk89!mjH zkS@-uDw-1nC?oOt9`x$sOO?}tGGKIwPW=K4SS}NGpVn3dXDtOu5?gQs+~WsUndI3{ z%LrYAz@;Rh4OFmiwG*CNdTNpn^~z4zlG_)G4_=3B*kfeIFKc40lhqHSCx6zt2$2nR$rA$ zv6p7DZfZjy0K!(1@QJ>>o2u{|vCvAIi<#nfjoXIVl}OUsc)!zfD5()w0+U*j8&rch z{e#xg>OhNfhS(HPJGh^;_PMI=e7(>D2mjzEPK5=hgfAeH={N}sG#O}bMxLSLY**IIWVp zZuTNZsAKV{UT;TH;+sqIZl3JS7}t61OsgQ_@uab6+e#X$C!5)cs-@lazwwl!8<=QR z*!wW=GIRy8$h=fUl=IGO&s_;1?WYK8O$a2m9tCo)y~+uX`$TNBs4bc8^s{@-DzZ>6 z0iXi5yJ;^;bDLp{WDZE|dg`9vl$T?aB?r>&8^{FM#CG9CmV+#4;@018?NJK5+Xl^` z4iNP4T|L?pa^JN2USiBS?Q^`z9ZAZ`U#L^UKl&OAC-vE53K7!p#3^x#dDyp*80vdy zz~z1zsnhj7J*~9-nCYTEmHGOgig!xpKJU#h5}!?Q;#vS1X8c=f1hPpR&rPa2^B$5t zO0ZQNr%u4@gkfI6r5LSpL>u`Sp&7rEsduXBLeJAxTf!-|xvRq>_i1@8qMqierc`{oZF0xFcrEuci+f03yoTjv!eTw3W0c@h&wMn^@3fUm>UL8 zI6iA*y**N;0UZq%iD>Z+eAnVqe$JTd>s%1uA6U8PIdj?$sUzpL=(N3*B{f8TE-+!T zLww%0d44wxSs~LE@qRfD zXl%X)npD2p4wstdu&fuOP~ZnX{7+yb@Phl76Jitv_v8~2q^CD_i!?OYw|Bo zaNOPqmZRc({K5#O5AM4zfQvLY-3m5f4rj;&DlgX-Q@`BCqe%!{=!k{5cXCLg;L=d- za*{XzrQP`>pzuh^wmsk~elgZh!M3ZB>zp?6$-!ast8rcFY_3MOoWIDaDSK0qUIii# zM64vlO`c}aWI}=mZJd6~**H7E=VbeSS=r8ByI2aQPzDOx3Q$|73<;nK7WO?YEmQLP z@{E{uQRy?^h(Y!M#y3hHv!`V}0d2Iud$KITCtNafbwJu5)5VgU7Ee6B^SrNZZ=vH0 z5OvIfo49?S;7VF&Om1^Fg$@v4zbwRx+fVzQ7_JTJE1A@@ z5LE0XSmc?y)& z?LS-n-WUKga1VZQ=XP?@AXwXa#D(IF$@_-qPW?$8aJBay{Ya|sy7Fc0*>i>i;!O7u z-|?d~IcUUf1nvP;kLDYsFNP5Ngf`fAfK2OnGe*2T9TEl9--YXDV9=A-4Gy7%$jCQ> zqNOvumdSA^f_El9_4{m=b=2|piwwr@zjyHK(XV#SvGhRMKi-+y`I5rhQE`EE4&4q- zEuJz}zs*}F$r6=175TNo2P4Tq?CngIlc~e!C+M%IQaUU2lOl@UQ+d@ON^WjXYm1{| zmP*?%v6tPnON`jPX@y)n;aAR+NaM>aiDAvpBr?T}!I~RFEWDqlgYND)L5-_M-z*z? zOqsiJFK>OC;s1`-8YWM^YsrMkI1SXo;fZqeRgq$itisHm09?U-I& z)-)N#jvC|F012bakmC_MV-aP^J403&bG_304b7LLXNw6a0qch}E6j!kx+LPL55r*= zbDu-AX5f{GC~{t`A`%lIMhNf zM~r+_>WqE&WY^4E!f{Wo^gli}-&|4H3)pQ&^{Z|laV<-p1IiBAhw6<$-b^Np#41_3 zmq(p`>R+r%L9+tHZ*nqP0b#^ApQ8?rHg{KgcutP-Hpe8ZkD!^Rd!X#z_kM9$otej= z3gpJ2&9}D^XVWJQq;ZJ^`~?PlvhOZi&Xcr8mbh4x0(3L(G{izconISZuk`J!+X4s{ zA`Uvlp=FsBw={}@oLf`dcAFfh1n;)Wt9!E^W9G^EpS)JzgkxL+?*N&hl>D~LyMs@G zS7#99jE8Jpbc^P-7dlJPa_eh0T@YhP_CM%Y;Vq)xtw%xeD!>b6Jn^b{h9uU>jnir*W zReWnkXW?!fxy3yu+H9~=vHQNpuMocW4m52cXV~^*x9$1QWJ-nvx7#yGE&9=@9m>=C z-3wbA#W6^Kmus20@KM^_yPa9aFs-qDprXB{=0;*@Kk#NF{^6+o z`(gu@5~(H{CuOmIy%jqdMnK+BpK-a!M5B%Mc`kvx0W=!6q}M{n(_1+aA=BTm;B9=h zu5;z+yw}_;_4I|!OXsVFd3xa5xzS^(I>9Ysg9TQC6+XEj|LSgw9$Vf~{YE;x{RTeF z*^MpvBel7g_|=+PJ-u|8=dq|xx4p4m9T2d5fVZ|ds|I&RC0Z$5wW0#5-3;$kJUY{X zd{!uQ;8kH8Iq3yn6`eWR-Yj3@=5Y$|ssYM%7yjD`B5AQQ<>93UJ3U7uo}K!G7#Vv< zARJ=~1M%pM?%j_FeeB5_#(f``wF+XE%C)H{KH4xH2%l1bEXAW=ar(|-BA_fi85ZDM zDgw+{yRtZ8pZ%v9t4$9?nn$IW3iM{$koodFX^E=Rm{^GielP6^|1CiGp>5+*BrVRJ z!3ytHzf*(a#`cz#G{;xoB}%Wiyn`jkq6_C7D>rauqTak_E$RJjew>YGUTHqt)$&85 zfIkdfy2EHIkWnjq_F zT8Mqx>0Bm{Xkqwtc>mJ5O&w6+B3Xmjjs3o@56&7oQ4>HlDqlL%>+^&%)Wz#6H2h{O9{-osBxH~DcD;7Bk~EPLZjpGRILE0XUQ(rPbPx6gI6 zmfYj4upYc!@vs?DZ#Fno<}_ByZ4Qw*!KTXjijRh*p{f3$Pk1>$_jUaJCy%}Ma4w(6 z`nEcpI(dzE@n#@IH3RQV%w*FWluVNh2Nj$-bUK`MZ*mqbl_vOExyfr-WV3vR~X92aUx$>Y-(dH%zmF%Zznlt)I{#soIW z_AI3^hQ&y9PaI6A@jUTtkx869e|5Gwgz>duhXW3c2s5_IOiIq%V>}LBAeCnwnThu3 zVoX-(2v^lTe+F}Z($>DKeBjh?Z=e%nQ}nbIk)gDC6%mCXWB8qN%A*?hEs7K)0qlB@ z1D5+8ntG-hq_6kM>YLR~s*iz0vG)sP#&$PC$L(|Vi&Fc#SMFQ;vES-n)Nq88i)EWe zW8WU!Q~%ukomsR%Q+usHP&k4AowQdLX5_W#k3G5v~CcYI! zgyx7Ghv;gdh^R*okS4y$q`4J`2vh)xGI^B6JC7$9})jA z(c-E2YdW+z)7>Ou;Kx}YMOjsuVyTD0Akg3VEf=W|2t?|GaH(&=@yl#9z(-(sNRLR(_95jqAp%33d?2F49Xy0c{7jJUrtd3NWM(;@ruim?)uI#A_2Hl$YD*a-+O8xA}(=a|4BJ7UBXib5P&*rOVczGFV|U z1?&dpO}Q&oZe`0UuDsVbw^xcplK~}?-es={YA7hF%bjld_`!sMwg7jj=lzw~hT>I8 zQlZ&n{h_SG&l%PnOLV)J?o9 zqk7IJPCz6VBA|>>8a0$160odHP1{y(o02z0Sfd})K84sEpdzL&6WLU~l2lqiGS-Ci z81*dtJiH?>Er@maE_p$iw%Y9NQ|be^msbfSK?mHz@^$Kz{;m>od%G=+)A6h&%JUDZ zhhS9;G7YC$R%7BYmT$G6MhpiFI*RR(M2pfD0~4PM3Aqs*T^`Wc>ZLtB-<8(z*~CZ5 z8iQ8!lMGL?p=LqZWmO{{W<*i0m?u_sOCkNU=YfN!j9PP6Fbh9+XeSqM_ zcH+WvTj|w^KGMCgK08~Yqtk`v=8Q-}4OX3J6c3iBoIfKooeF0cdvPSx_1I0ww8yaH z2XUjvW#_K5I21snLuU9qqaWP7$iM3CiW+L1+d`?vc9|UVm8*!-TIk*2FV#ndQF|bx zHri}PL$q7^4b}rbqcgxRjH}EmEckko8^8=2saW5R9vGBR#PPVt;6OWQTukY`s~;!k z`5ou?;;*DLVdOWwv!Or2olhb`@RgNV;u)kvQ${=Z;5{B4KDzYaqjp%niCm>yRYAyP zq@cSuf_&4i-D7<>Jvk7L(5XW$yU?kjX|C$~7lpVzYq>Y2SrrF@i|Xzh1sE!xY$tv< z_UITf42eRslJZ|Lbyb7yFAW4`EI4hy94?gIvU$k^JM9Rar418$qLBv<$ZT;h0n|? zW<8>T-=UhZ;zgg@q|sTXA(RE<$g3&sI(ZN=LM9(-IvCPwjYRW0K9Jg?<&ha8@Xd9Z zT-RiJbk@a`)o}cA_1Mr|?@hzkp_!f!Ot10QMm6Mo5CvX;*gM|Ia(^!SSmOzIj+}!! zkx5}+l^s|nw?iRQKC!W`R&?0LYqakI8pQ7 zmrE$ku}})~xuLUfN_T7AqdR7X-nk2L9HHEjFK#BIs_=B8w=!j^^smn=37=$VGJX3} zI>BJlF!HE#4btcoES^6!qxKG35YVL-$QXUV4{n5}oGZtu%fEOykw>vKP)HLE&fYZ< zJA$R0>nT!0-9K8?=CfqZ;fGCm7+0aCx%9QD8r#0Pdc#`NqSdt%kP$IE((nfK;$dkI zM-~bDv&`o^ay2F)dD6ZfJ@4MdAK-$_8MI&*+k}&^2~@6>Y`ZV2GS-=P3OxK!1blHO zb7g0l-ChtjrQf&oa)()(Vs*)5Yr>L(*qzI2sw|p!#vxwL<_x=|rWlIaEGtZ^BF$W< zF8MHrfI_p{t-BkJ6A7QqEwB`0Y_BdNy?5&4>0;iFS!P5C%|D$yDru-$tQ#GIz4l3) z?dXcgg-V(Y-9%Wq6J-?v&SS<%<=Vaya7$C(5imq|O@D;YDG(%eauFLShDElW3|ELXoVYH=s9n8x2UZ1m5X_8S4K%2?y0oift% z95o)OO70K^Yjj1C#iQPE`FL@dNtcj;Vz`h>+!>H488sW1MEYP6(M{6XpR0B0n-VKw zQ0}g+l&Sy?H!qec^=n^E#az{t$mCw~7gT5N0oro!=fCg)L$AG)+GQHsaJYlv z?fBJ}uXc2l`R0jyl#G9PSKHUhqlv`}q{a*?Xc(Y1-)S!lj{|1u%Z#}W|7`0B5vb=$ zc?r(8n^wbHkc<$Xbi+`pgEkxD^L$t|M99O>Z)JpW%?L)|!|=LeB;<)jzTN;sCbk!o z*xkx5{WK>DP>RL`P2F#N<4+&*5;iE`m72I@(2m5^&L#;s~qUL zPXP^Ptm|kBWPay0GyRi6hTU@SY6D~}IS#v|FV5ZPS~A#JCE}Yki8~!nRfeCGW6N%= zx-mD8P$LaY)bOqLm7JvHKs{#ak()El%b;(_mdY?uxUfcxb~=RFTM#DveKbny2v`se zB{(m?YKs{SEuh&oiC zA!F@?=dumegtsylz5X~)Ly{p=3r4&I-P@`@=(9NNr=fY^v9)D~shn=}VJvi=ruU}g zP!2Py9Db#I?4-0Lo$}W!My{iP2eBQT*w9yRp}C)vH#9yk>worpA3)CR_2?_z(TLi4 zI^RJN|L(>>70T;o=1{K2Xp=F|77bmA*ZwuI4T(#Mcg9f7+Kr^ILM_FK->&A~D&$KN z3m4<}K9(9wvK)QHwr8=i?|oQ{_}Y)3Yxg7BlXp;W$Fmem5*dkH=vDB#!xu3T;HN7a zCCE&P6FJ62`!P~#8HHAF!cOfIHg+p!`aJi-Yf7mKzmIAP=mc~)NDX+LBl;q2lsw9S zdaFN9rGW)pY!z#GTPK}29(}*?oP-?YH%98PSoz~sG>D?TJ+lGTzCL`exHg+1R*!en z=)sy>`Z=oD@0JFdic18rUy9m}2NeLdVIK2^j?__UXp z@3F(6N*;s68pTE*zM))KGfnPK*M^k(>O6-Wqc}kBTPUM?x?`@6f zN!gE<`^%1&1Z-KS4Sqcx61SZCa-(IrSL0hQZmF|Z+!ym@Y&Mrnf8vub%DjgS15M#C-R`$!eOp!*E3*Hz(d1^jMF-4_Hhhuhz%ANm zg*r4j2vNh4KAW*3Ojc;K`sJ*LZs=?VELU9d)5Bun%UG2w(IU#F@7c1m^5V~Ijfc%H za4y%Nm!u5HA?BrQkJ}fTJ8G~$YvP`!L=teVWt`uA$342=@zU~wv;a(9GM*&$l^#jU zg(_L58r#7&!SeMPHAVQ`a45>Fqw|G&TY(kFelOV&=n*HQ@J`y8Kv$8;bA<1h$`1(I zZUZIC04OgSy>kE^yE75%TWC%8&c~6og%D^jTEW8pgGu%|wJVaeI4_;C`_mnp$~L*f=MP!^fT#5~#TTFE4eo+}=&p=}H*VZNZt-F#W}xWZ!5H{^a=` zd2`xTTGRGec`c`64pizPwvF%9&lV6VXiFW|G#P8HZJnIu?pk2wchjF5m-Jx@Q1h>P zh{CRR%-=eB^tND}E`Oc(uGebhKW-(Av~||Yq1~&e_E1vp&nDB@2z$Gev|C6+_T;Sa zB`jpj^#Nm{8T0bw*jXcQ*%LqP0!jO3I&$7@=k}TWZPz}f+Yh-Y2w`Ii($O3gXA86{ z@4M?ac6xcQwrlio1VD`_ezuE@9hv4mFE$%|aAM7DACJ_GAI;|?6;(O&M z)9+8T2wr~3iW#C*pKmP)Y>J#c3fQdv_CynQ#fkEadf8HI?D)VaYvC-w^ugLl!UpMc z&whut^OSXE>uDro-}Js>M4;G`*cHdC zX3ss9RMmrR<5%nre5#8m+)AwBM^^vsVMi2ICkahq6gmy5v3l{~Y30K}ou{SS5%RgooF1~beXD8G zi%@CP&QBHV5#GdLxj3%+UtVyCYC4$X=Ha)3*aw@ zH28$4Pjp{d7FOgeAzVV2Qc1d{u+}McX)e9{tz7I43OKNd5Uvovi4~~LyRQv+?bPSu zi=f>|FKbXd>5pkG3G_<#Oj^nhz+09MdzjW4Pk=jz(YA$6`2vg9K1S^;-@2Lc?I?wq zhor`vSaGb?#_O}RVj@pf%rEY0!ZI_{!ClhXB01lS@-JtiZwymcI7od$|HjkEj0j5# zFr~ty$-#b=tJ4>GFnrd>i%=YdIfQr_ezVR*@SWkX|8z+Pf#_Ye#jN<<5kv3{)IG&! zpTV)h$p-~jyWG=>d-Y&CzF$o1ltfohY2P8>wvk7=sa z<)41OV=+&H{o{Rs(Ixp<3vq|t1ZkpV3(z+{@-<>4;nJE)|9>ODf)Mp;k# zZ=31F>#^2qHsZ8TA^7Y@Md47fl~YVk%cSg>J5HG6v-TT9jW)7&j4+n2E z-jp-DW5HvtEZY~&VBC>$DPtu4fa8=lkOoDzI2;&UG81N!2R(U&mz?K5G+(ht*ses| z8`NBKq8)dR`q80?f)$Cu=o`MPs?G5logeJVsN88mv$@d{%_&)LopvY&dW!A}^#$xB zR)oi8FJ3T&05h-I@4T~Se(PqGULVvlI9SAPL zr=Sn^QK9~1tGg|O5h_?2Jl6Lf1-Xd?3v8FoH5tLGW*v6=_w;K%BXKaguxi4{;u)7? zPd6^X5}-S3R|_QxDOFuj^n5qRz{obBLW~Plo1KTn$LAN#C&r$)G86Ly{E(w*WcUUb zir2MZ=cT#JdwK_$Lu_0V-IC`j%@xuzbd@8GWTx996D{gSIkI%+2t5om8|fcn|Gp#suVi6gYtRB|Q; z31l|eK*Wdn3)cMjUx5)ikr*CwBNBlk)71teKsN%Z=nzS6N+6Vuo`KWhkAVW~|1Td0 znc=TKS@*uB&uCLfjYt$YZenBkMLc{AQ(eyD%jLwwuV>8Idc4Z$Y>((s-mf%4X9p~Z zJp3_igfrjLOe~m$EcVQlUOJ=L-Z{-Fjc3f(G*y!4!nD?XJWff`OKs9J!3;gSxk(-o z|A5jbYpX}Y0O4zo3Uh*nQ0Ch){@ks62;H!16$LWzp0WP}VLrOZvsYU1qNBf8$V~0) z2-`r!uSR#ouzJViEk{;#Rpk`T`GGqQ`}4Vsgs^IXchav;msPIngLVvO(1OU)ms8bW zQN^cMy33XJe?e_LAxWsQrDHq7?M7+O=?aj{Z-nel9a&U4Am7NW-_EkG-{wPT-ocP8 zC=a@g{ITm&>Q%7uC%!vJKn}y1nLhjVTD!2*yRP zi<^OcH(^FuGhnNLk$K7uFQ?LxDln;uKP~RO&^UW_kH=|n&l}0vXm&#WYJsrS7F2?&n zI(uwz0zz(7ED3n02@A5`FG3TX`!x@7%`u2ZsXW(kmP3;#0Pc0+5@jh<2fVDQib3k)$^=CH9|$#N`LnyY#FN z%@7BBduR$x=s@bB@BL^Rd3OU)+srK1cTn!XN?OAzeK7Sgq2NTQqE7SitMd%BnPO@3 zK@3{sXcv`be(GHpBE(Jd7cuYAz&1WtS1&&XQ=#YfD&8>m85!Kp4`4cV#ki{^<_dXK z&2%>hN)hIwOmi@d9geq#FB>rCYLCx%? zhs);S2}7dYh*?uV-Um~XX93?GHr9e4JvL^nhnlkHjU1kvcVJ6Rz=G#PHBNeIP3;r3 za<`9+=L$RYb8BCZ83l+N+0E6t8Z0Q_nXx?cf6yD1}fkx3R_}R@>dNw#p;@LPYI#l$^O3YfEVVXkqJ_-nc+$+A zHq$ki^NBl4k}ORbjz)~ksml}}lAy#;e7ZnHSA>W1W#8`h!+z|S-G11A@V0)Tzh^4&xfk3d`{G%E z_pZ0Q1J7AuQ?})sirz3;b$0+kbE7)`QIBUgP?1;fp8Cz~+v~Qf@eFbbE)BkRW#*)4 z-5;!{;(k;c;6txT z9#woT-VZTA@p0g|-vW^n57#*r^Lb!Xo0HD~DjbW?x)3OOYZn4g&7Q!M3=zYu zFN^LR_Y~(4gU~9i#J;cTvevrIRE*d zwK%skOK}?=$z!=QJ=UF(rXi_wQ%0`IceW{UHf0;V`ipVYZhpw%9 z#mF;zDKFKCsQ1e&>o6xRSV=Ht0*svlgbl!zF6K!6*UiKAyX|$pZN)8U=KoYI`d;8=&Miq z2neo>I=mJ<1tEw4A!wj|W>Xd>`8Oaqb5S`5{`_+3!!6hU){Os|l{YZzIbLarGCBi1 J>G;P@$6qQz{<#1E literal 0 HcmV?d00001 diff --git a/test/testfiles/gltf/VertexColorTest/glTF-Embedded/VertexColorTest.gltf b/test/testfiles/gltf/VertexColorTest/glTF-Embedded/VertexColorTest.gltf new file mode 100644 index 0000000..e08fbb5 --- /dev/null +++ b/test/testfiles/gltf/VertexColorTest/glTF-Embedded/VertexColorTest.gltf @@ -0,0 +1,366 @@ +{ + "accessors" : [ + { + "bufferView" : 0, + "componentType" : 5121, + "count" : 36, + "max" : [ + 23 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 1, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.7554783821105957, + -0.8512416481971741, + 0.9750328660011292 + ], + "min" : [ + -0.7045658230781555, + -0.8512417078018188, + -0.9611154794692993 + ], + "type" : "VEC3" + }, + { + "bufferView" : 2, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.0, + 1.0, + -0.0 + ], + "min" : [ + 0.0, + 1.0, + -0.0 + ], + "type" : "VEC3" + }, + { + "bufferView" : 3, + "componentType" : 5126, + "count" : 24, + "max" : [ + 1.0, + 7.121938949694595e-08, + 1.5105192119335697e-07, + 1.0 + ], + "min" : [ + 1.0, + -1.4348813692777185e-07, + -1.1257676391096538e-07, + 1.0 + ], + "type" : "VEC4" + }, + { + "bufferView" : 4, + "componentType" : 5126, + "count" : 24, + "max" : [ + 0.9999998807907104, + 0.8010409474372864 + ], + "min" : [ + 0.0, + 0.05539727210998535 + ], + "type" : "VEC2" + }, + { + "bufferView" : 5, + "componentType" : 5121, + "count" : 72, + "max" : [ + 47 + ], + "min" : [ + 0 + ], + "type" : "SCALAR" + }, + { + "bufferView" : 6, + "componentType" : 5126, + "count" : 48, + "max" : [ + 1.0000004768371582, + 1.0, + 0.48742246627807617 + ], + "min" : [ + -1.0000003576278687, + -1.0, + -0.1718665361404419 + ], + "type" : "VEC3" + }, + { + "bufferView" : 7, + "componentType" : 5126, + "count" : 48, + "max" : [ + 1.0, + 1.0, + 1.0 + ], + "min" : [ + -1.0, + -1.0, + -1.0 + ], + "type" : "VEC3" + }, + { + "bufferView" : 8, + "componentType" : 5126, + "count" : 48, + "max" : [ + 1.0, + 7.940933880509066e-23, + 4.470348358154297e-08, + 1.0 + ], + "min" : [ + 1.0, + -6.617444900424222e-24, + -0.0, + 1.0 + ], + "type" : "VEC4" + }, + { + "bufferView" : 9, + "componentType" : 5126, + "count" : 48, + "max" : [ + 0.8361296057701111, + 0.7666319012641907 + ], + "min" : [ + 0.22613045573234558, + 0.2321176528930664 + ], + "type" : "VEC2" + }, + { + "bufferView" : 10, + "componentType" : 5126, + "count" : 48, + "max" : [ + 1.0, + 1.0, + 1.0, + 1.0 + ], + "min" : [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "type" : "VEC4" + } + ], + "asset" : { + "copyright": "Copyright 2018 Analytical Graphics, Inc., CC-BY 4.0 https://creativecommons.org/licenses/by/4.0/ - Mesh and textures by Ed Mackey.", + "generator" : "Khronos Blender glTF 2.0 exporter", + "version" : "2.0" + }, + "bufferViews" : [ + { + "buffer" : 0, + "byteLength" : 36, + "byteOffset" : 0, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 36, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 288, + "byteOffset" : 324, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 612, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 192, + "byteOffset" : 996, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 72, + "byteOffset" : 1188, + "target" : 34963 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 1260, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 576, + "byteOffset" : 1836, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 768, + "byteOffset" : 2412, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 384, + "byteOffset" : 3180, + "target" : 34962 + }, + { + "buffer" : 0, + "byteLength" : 768, + "byteOffset" : 3564, + "target" : 34962 + } + ], + "buffers" : [ + { + "byteLength" : 4332, + "uri" : "data:application/octet-stream;base64,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52tHv7phQr9Qj/k+ahKivrphQr9Qj/k+52tHvw7+l75wj/k+AAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgL8AAACAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AACAP7H/fzIRGt01AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AQAAswIAALMAAIA/AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AACAvwAAELTXja61AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AABAM/7/fzIAAIC/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrb//38/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AAAAADFlCrYAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAMAaAQAAMwAAgD8AAIA/AADAGgEAADMAAIA/AACAPwAAwBoBAAAzAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAmQAAQDMAAIA/AACAPwAAAJkAAEAzAACAPwAAgD8AAACZAABAMwAAgD8AAIA/AAAAmQAAQDMAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/AACAPwAAAAAAAACAAACAPwAAgD8AAAAAAAAAgAAAgD8AAIA/AAAAAAAAAIAAAIA/CtA4PwK8OD8OwzU/Arw4Pw7DNT8CvDg/CtA4PwK8OD8OwzU/Bq81PwrQOD8GrzU/DsM1PwavNT8K0Dg/Bq81PwrQOD8GrzU/CtA4PwK8OD8K0Dg/Arw4PwrQOD8GrzU/CtA4PwavNT8OwzU/Arw4PwrQOD8CvDg/DsM1PwavNT8OwzU/Bq81Pw7DNT8CvDg/DsM1PwK8OD8OwzU/Bq81Pw7DNT8GrzU/CtA4PwK8OD8OwzU/Arw4PwrQOD8GrzU/OOAfP0CwbT6eNeA+9GLWPjjgHz/0YtY+njXgPkCwbT6XDFY/QLBzPi5HJj/0Ytk+lwxWP/Ri2T4uRyY/QLBzPr6U1D5AsHM+0hNqPvRi2T6+lNQ+9GLZPtITaj5AsHM+8z4fP5P8Ej8U894+/cFCP/M+Hz/9wUI/FPPePpP8Ej9Sa1U/k3wUP+mlJT/9QUQ/UmtVP/1BRD/ppSU/k3wUPzRS0z6TfBQ/vo5nPv1BRD80UtM+/UFEP76OZz6TfBQ/gYAAP4GAAD+BgAA/AACAP4GAAD+BgAA/gYAAPwAAgD+BgAA/gYAAP4GAAD8AAIA/gYAAP4GAAD+BgAA/AACAP4WEBD+FhAQ/hYQEPwAAgD+BgAA/gYAAP4GAAD8AAIA/gYAAP4GAAD+BgAA/AACAP4GAAD+BgAA/gYAAPwAAgD8AAIA/AACAPwAAgD8AAIA/gYAAP4GAAD+BgAA/AACAP4GAAD+BgAA/gYAAPwAAgD8AAIA/AACAPwAAgD8AAIA/gYAAP4GAAD+BgAA/AACAP4GAAD+BgAA/gYAAPwAAgD+BgAA/gYAAP4GAAD8AAIA/gYAAP4GAAD+BgAA/AACAP4GAAD+BgAA/gYAAPwAAgD+BgAA/gYAAP4GAAD8AAIA/gYAAP4GAAD+BgAA/AACAP4GAAD+BgAA/gYAAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AAAAAAAAgD8AAAAAAACAPwAAAAAAAIA/AAAAAAAAgD8AAAAAAACAPwAAAAAAAIA/AAAAAAAAgD8AAAAAAACAPwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAAAAAIA/AACAPwAAAAAAAAAAAACAPwAAgD8AAIA/AAAAAAAAAAAAAIA/AACAPwAAAAAAAAAAAACAPwAAgD8AAAAAAAAAAAAAgD8AAIA/AAAAAAAAAAAAAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAP//+fj///n4/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/" + } + ], + "images" : [ + { + "uri" : "data:image/png;base64,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" + }, + { + "uri" : "data:image/png;base64,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" + } + ], + "materials" : [ + { + "doubleSided" : true, + "name" : "Label_Mat", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 0 + }, + "metallicFactor" : 0.0, + "roughnessFactor" : 0.8999999761581421 + } + }, + { + "name" : "VC_Checks_Mat", + "pbrMetallicRoughness" : { + "baseColorTexture" : { + "index" : 1 + }, + "metallicFactor" : 0.0, + "roughnessFactor" : 0.8999999761581421 + } + } + ], + "meshes" : [ + { + "name" : "LabelMesh", + "primitives" : [ + { + "attributes" : { + "NORMAL" : 2, + "POSITION" : 1, + "TANGENT" : 3, + "TEXCOORD_0" : 4 + }, + "indices" : 0, + "material" : 0 + } + ] + }, + { + "name" : "VertexColorTestMesh", + "primitives" : [ + { + "attributes" : { + "COLOR_0" : 10, + "NORMAL" : 7, + "POSITION" : 6, + "TANGENT" : 8, + "TEXCOORD_0" : 9 + }, + "indices" : 5, + "material" : 1 + } + ] + } + ], + "nodes" : [ + { + "mesh" : 0, + "name" : "Labels", + "rotation" : [ + 0.7071068286895752, + 0.0, + -0.0, + 0.7071068286895752 + ], + "translation" : [ + 0.0, + 0.0, + 0.9126079678535461 + ] + }, + { + "mesh" : 1, + "name" : "VertexColorTest", + "scale" : [ + 1.0, + 1.0, + 0.07413393259048462 + ] + } + ], + "samplers" : [ + {} + ], + "scene" : 0, + "scenes" : [ + { + "name" : "Scene", + "nodes" : [ + 0, + 1 + ] + } + ], + "textures" : [ + { + "sampler" : 0, + "source" : 0 + }, + { + "sampler" : 0, + "source" : 1 + } + ] +} diff --git a/test/testfiles/gltf/VertexColorTest/glTF/VertexColorChecks.png b/test/testfiles/gltf/VertexColorTest/glTF/VertexColorChecks.png new file mode 100644 index 0000000000000000000000000000000000000000..9408cf8c6326550b1e9e1bcf062f522dc3083b0c GIT binary patch literal 8658 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 literal 0 HcmV?d00001 diff --git a/test/testfiles/gltf/VertexColorTest/glTF/VertexColorTest.bin b/test/testfiles/gltf/VertexColorTest/glTF/VertexColorTest.bin new file mode 100644 index 0000000000000000000000000000000000000000..3cebcb4b57b082eec3404f42d37bcd8d95a54fd5 GIT binary patch literal 4332 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 literal 0 HcmV?d00001 diff --git a/tools/config.json b/tools/config.json index 218840a..2ae6fa3 100644 --- a/tools/config.json +++ b/tools/config.json @@ -5,6 +5,7 @@ "source/geometry/geometry.js", "source/geometry/coord2d.js", "source/geometry/coord3d.js", + "source/geometry/coord4d.js", "source/geometry/quaternion.js", "source/geometry/box3d.js", "source/geometry/octree.js", diff --git a/website/embed.html b/website/embed.html index fa7a901..163a71b 100644 --- a/website/embed.html +++ b/website/embed.html @@ -21,6 +21,7 @@ + diff --git a/website/index.html b/website/index.html index 515dcb9..aa4c6ef 100644 --- a/website/index.html +++ b/website/index.html @@ -23,6 +23,7 @@ + diff --git a/website/o3dv/js/sidebardetailspanel.js b/website/o3dv/js/sidebardetailspanel.js index 09c887e..b02a252 100644 --- a/website/o3dv/js/sidebardetailspanel.js +++ b/website/o3dv/js/sidebardetailspanel.js @@ -80,9 +80,11 @@ OV.SidebarDetailsPanel = class extends OV.SidebarPanel this.AddProperty (table, new OV.Property (OV.PropertyType.Text, 'Type', typeString)); this.AddProperty (table, new OV.Property (OV.PropertyType.Color, 'Color', material.color)); if (material.type === OV.MaterialType.Phong) { - this.AddProperty (table, new OV.Property (OV.PropertyType.Color, 'Ambient', material.ambient)); + this.AddProperty (table, new OV.Property (OV.PropertyType.Color, 'Ambient', material.ambient)); this.AddProperty (table, new OV.Property (OV.PropertyType.Color, 'Specular', material.specular)); - } else if (material.type === OV.MaterialType.Physical) { + } + this.AddProperty (table, new OV.Property (OV.PropertyType.Boolean, 'Vertex Colors', material.vertexColors)); + if (material.type === OV.MaterialType.Physical) { this.AddProperty (table, new OV.Property (OV.PropertyType.Percent, 'Metalness', material.metalness)); this.AddProperty (table, new OV.Property (OV.PropertyType.Percent, 'Roughness', material.roughness)); }