From cc0f1431cd9b015da9af1002ee8639139a845013 Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Mon, 20 Jul 2009 08:05:18 +0000 Subject: [PATCH] Detour: Optimized new cost code to removed redundant edge midpoint calculations. Detour: FIxed broken raycast code on TileNavmesh. Detour: Added more comments to public API. --- Detour/Include/DetourCommon.h | 22 + Detour/Include/DetourDebugDraw.h | 2 +- Detour/Include/DetourStatNavMesh.h | 7 +- Detour/Include/DetourTileNavMesh.h | 35 +- Detour/Source/DetourDebugDraw.cpp | 4 +- Detour/Source/DetourStatNavMesh.cpp | 80 +- Detour/Source/DetourStatNavMeshBuilder.cpp | 2 +- Detour/Source/DetourTileNavMesh.cpp | 105 +- Detour/Source/DetourTileNavMeshBuilder.cpp | 1 - Recast/Include/Recast.h | 122 +- .../Bin/Recast.app/Contents/MacOS/Recast | Bin 463812 -> 467960 bytes .../Xcode/Recast.xcodeproj/memon.pbxuser | 2958 +++++------------ .../Recast.xcodeproj/memon.perspectivev3 | 129 +- RecastDemo/Source/Sample_StatMesh.cpp | 2 +- RecastDemo/Source/Sample_StatMeshSimple.cpp | 37 +- RecastDemo/Source/Sample_StatMeshTiled.cpp | 2 +- 16 files changed, 1105 insertions(+), 2403 deletions(-) diff --git a/Detour/Include/DetourCommon.h b/Detour/Include/DetourCommon.h index ca325a5..3bd2c09 100644 --- a/Detour/Include/DetourCommon.h +++ b/Detour/Include/DetourCommon.h @@ -40,6 +40,20 @@ inline float vdot(const float* v1, const float* v2) return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; } +inline void vmad(float* dest, const float* v1, const float* v2, const float s) +{ + dest[0] = v1[0]+v2[0]*s; + dest[1] = v1[1]+v2[1]*s; + dest[2] = v1[2]+v2[2]*s; +} + +inline void vadd(float* dest, const float* v1, const float* v2) +{ + dest[0] = v1[0]+v2[0]; + dest[1] = v1[1]+v2[1]; + dest[2] = v1[2]+v2[2]; +} + inline void vsub(float* dest, const float* v1, const float* v2) { dest[0] = v1[0]-v2[0]; @@ -68,6 +82,14 @@ inline void vcopy(float* dest, const float* a) dest[2] = a[2]; } +inline float vdist(const float* v1, const float* v2) +{ + float dx = v2[0] - v1[0]; + float dy = v2[1] - v1[1]; + float dz = v2[2] - v1[2]; + return sqrtf(dx*dx + dy*dy + dz*dz); +} + inline float vdistSqr(const float* v1, const float* v2) { float dx = v2[0] - v1[0]; diff --git a/Detour/Include/DetourDebugDraw.h b/Detour/Include/DetourDebugDraw.h index 66d591f..8e1cfe4 100755 --- a/Detour/Include/DetourDebugDraw.h +++ b/Detour/Include/DetourDebugDraw.h @@ -24,7 +24,7 @@ void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtStatPolyRef ref, const float* col); void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh); -void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh); +void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh, bool drawClosedList = false); void dtDebugDrawTiledNavMesh(const dtTiledNavMesh* mesh); void dtDebugDrawTiledNavMeshPoly(const dtTiledNavMesh* mesh, dtTilePolyRef ref, const float* col); diff --git a/Detour/Include/DetourStatNavMesh.h b/Detour/Include/DetourStatNavMesh.h index d3ed74d..a84eb6a 100755 --- a/Detour/Include/DetourStatNavMesh.h +++ b/Detour/Include/DetourStatNavMesh.h @@ -171,7 +171,7 @@ public: // Returns pointer to specified vertex. inline const float* getVertex(int i) const { return &m_header->verts[i*3]; } - bool isInOpenList(dtStatPolyRef ref) const; + bool isInClosedList(dtStatPolyRef ref) const; int getMemUsed() const; @@ -183,11 +183,6 @@ public: private: - float getCost(dtStatPolyRef prev, dtStatPolyRef from, dtStatPolyRef to) const; - float getFirstCost(const float* pos, dtStatPolyRef from, dtStatPolyRef to) const; - float getLastCost(dtStatPolyRef from, dtStatPolyRef to, const float* pos) const; - float getHeuristic(const float* from, const float* to) const; - // Copies the locations of vertices of a polygon to an array. int getPolyVerts(dtStatPolyRef ref, float* verts) const; // Returns portal points between two polygons. diff --git a/Detour/Include/DetourTileNavMesh.h b/Detour/Include/DetourTileNavMesh.h index 895ebbf..6b330e6 100644 --- a/Detour/Include/DetourTileNavMesh.h +++ b/Detour/Include/DetourTileNavMesh.h @@ -62,28 +62,27 @@ struct dtTileLink struct dtTileHeader { - int magic; - int version; - int npolys; - int nverts; - int nlinks; - int maxlinks; - float cs; - float bmin[3], bmax[3]; - dtTilePoly* polys; - float* verts; - dtTileLink* links; + int magic; // Magic number, used to identify the data. + int version; // Data version number. + int npolys; // Number of polygons in the tile. + int nverts; // Number of vertices in the tile. + int nlinks; // Number of links in the tile (will be updated when tile is added). + int maxlinks; // Number of allocated links. + float bmin[3], bmax[3]; // Bounding box of the tile. + dtTilePoly* polys; // Pointer to the polygons (will be updated when tile is added). + float* verts; // Pointer to the vertices (will be updated when tile added). + dtTileLink* links; // Pointer to the links (will be updated when tile added). }; struct dtTile { - int salt; - int x,y; - dtTileHeader* header; - unsigned char* data; - int dataSize; - bool ownsData; - dtTile* next; + int salt; // Counter describing modifications to the tile. + int x,y; // Grid location of the tile. + dtTileHeader* header; // Pointer to tile header. + unsigned char* data; // Pointer to tile data. + int dataSize; // Size of the tile data. + bool ownsData; // Flag indicating of the navmesh should release the data. + dtTile* next; // Next free tile or, next tile in spatial grid. }; // Encodes a tile id. diff --git a/Detour/Source/DetourDebugDraw.cpp b/Detour/Source/DetourDebugDraw.cpp index 77becfa..1c0f380 100755 --- a/Detour/Source/DetourDebugDraw.cpp +++ b/Detour/Source/DetourDebugDraw.cpp @@ -103,14 +103,14 @@ void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh) glEnd(); } -void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh) +void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh, bool drawClosedList) { glBegin(GL_TRIANGLES); for (int i = 0; i < mesh->getPolyCount(); ++i) { const dtStatPoly* p = mesh->getPoly(i); - if (mesh->isInOpenList(i+1)) + if (drawClosedList && mesh->isInClosedList(i+1)) glColor4ub(255,196,0,64); else glColor4ub(0,196,255,64); diff --git a/Detour/Source/DetourStatNavMesh.cpp b/Detour/Source/DetourStatNavMesh.cpp index e4c2dd3..25c98d9 100755 --- a/Detour/Source/DetourStatNavMesh.cpp +++ b/Detour/Source/DetourStatNavMesh.cpp @@ -85,36 +85,6 @@ const dtStatPoly* dtStatNavMesh::getPolyByRef(dtStatPolyRef ref) const return &m_header->polys[ref-1]; } -float dtStatNavMesh::getCost(dtStatPolyRef prev, dtStatPolyRef from, dtStatPolyRef to) const -{ - float midFrom[3], midTo[3]; - if (!getEdgeMidPoint(prev,from,midFrom) || !getEdgeMidPoint(from,to,midTo)) - return FLT_MAX; - return sqrtf(vdistSqr(midFrom,midTo)); -} - -float dtStatNavMesh::getFirstCost(const float* pos, dtStatPolyRef from, dtStatPolyRef to) const -{ - float mid[3]; - if (!getEdgeMidPoint(from,to,mid)) - return FLT_MAX; - return sqrtf(vdistSqr(pos,mid)); -} - -float dtStatNavMesh::getLastCost(dtStatPolyRef from, dtStatPolyRef to, const float* pos) const -{ - float mid[3]; - if (!getEdgeMidPoint(from,to,mid)) - return FLT_MAX; - return sqrtf(vdistSqr(mid,pos)); -} - -float dtStatNavMesh::getHeuristic(const float* from, const float* to) const -{ - return sqrtf(vdistSqr(from,to)) * 1.1f; -} - - int dtStatNavMesh::findPath(dtStatPolyRef startRef, dtStatPolyRef endRef, const float* startPos, const float* endPos, dtStatPolyRef* path, const int maxPathSize) @@ -136,10 +106,12 @@ int dtStatNavMesh::findPath(dtStatPolyRef startRef, dtStatPolyRef endRef, m_nodePool->clear(); m_openList->clear(); + static const float H_SCALE = 1.1f; // Heuristic scale. + dtNode* startNode = m_nodePool->getNode(startRef); startNode->pidx = 0; startNode->cost = 0; - startNode->total = getHeuristic(startPos, endPos); + startNode->total = vdist(startPos, endPos) * H_SCALE; startNode->id = startRef; startNode->flags = DT_NODE_OPEN; m_openList->push(startNode); @@ -171,22 +143,22 @@ int dtStatNavMesh::findPath(dtStatPolyRef startRef, dtStatPolyRef endRef, newNode.pidx = m_nodePool->getNodeIdx(parent); newNode.id = neighbour; - newNode.cost = parent->cost; + // Calculate cost. + float p0[3], p1[3]; if (!parent->pidx) - newNode.cost += getFirstCost(startPos,parent->id,newNode.id); + vcopy(p0, startPos); else - newNode.cost += getCost(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, newNode.id); + getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); + getEdgeMidPoint(parent->id, newNode.id, p1); + newNode.cost = parent->cost + vdist(p0,p1); // Special case for last node. if (newNode.id == endRef) - newNode.cost += getLastCost(parent->id,newNode.id,endPos); - - float ec[3]; - if (!getEdgeMidPoint(parent->id,newNode.id,ec)) - continue; - const float h = getHeuristic(ec, endPos); - + newNode.cost += vdist(p1, endPos); + + // Heuristic + const float h = vdist(p1,endPos)*H_SCALE; newNode.total = newNode.cost + h; - + dtNode* actualNode = m_nodePool->getNode(newNode.id); if (!actualNode) continue; @@ -568,11 +540,14 @@ float dtStatNavMesh::findDistanceToWall(dtStatPolyRef centerRef, const float* ce newNode.pidx = m_nodePool->getNodeIdx(parent); newNode.id = neighbour; - newNode.cost = parent->total; + // Cost + float p0[3], p1[3]; if (!parent->pidx) - newNode.cost += getFirstCost(centerPos,parent->id,newNode.id); + vcopy(p0, centerPos); else - newNode.cost += getCost(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, newNode.id); + getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); + getEdgeMidPoint(parent->id, newNode.id, p1); + newNode.total = parent->total + vdist(p0,p1); dtNode* actualNode = m_nodePool->getNode(newNode.id); if (!actualNode) @@ -667,11 +642,14 @@ int dtStatNavMesh::findPolysAround(dtStatPolyRef centerRef, const float* centerP newNode.pidx = m_nodePool->getNodeIdx(parent); newNode.id = neighbour; - newNode.cost = parent->total; + // Cost + float p0[3], p1[3]; if (!parent->pidx) - newNode.cost += getFirstCost(centerPos,parent->id,newNode.id); + vcopy(p0, centerPos); else - newNode.cost += getCost(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, newNode.id); + getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); + getEdgeMidPoint(parent->id, newNode.id, p1); + newNode.total = parent->total + vdist(p0,p1); dtNode* actualNode = m_nodePool->getNode(newNode.id); if (!actualNode) @@ -817,7 +795,6 @@ bool dtStatNavMesh::getPortalPoints(dtStatPolyRef from, dtStatPolyRef to, float* return false; } -// Returns edge mid point between two polygons. bool dtStatNavMesh::getEdgeMidPoint(dtStatPolyRef from, dtStatPolyRef to, float* mid) const { float left[3], right[3]; @@ -828,10 +805,11 @@ bool dtStatNavMesh::getEdgeMidPoint(dtStatPolyRef from, dtStatPolyRef to, float* return true; } -bool dtStatNavMesh::isInOpenList(dtStatPolyRef ref) const +bool dtStatNavMesh::isInClosedList(dtStatPolyRef ref) const { if (!m_nodePool) return false; - return m_nodePool->findNode(ref) != 0; + const dtNode* node = m_nodePool->findNode(ref); + return node && node->flags & DT_NODE_CLOSED; } int dtStatNavMesh::getMemUsed() const diff --git a/Detour/Source/DetourStatNavMeshBuilder.cpp b/Detour/Source/DetourStatNavMeshBuilder.cpp index d13d02a..39065a9 100755 --- a/Detour/Source/DetourStatNavMeshBuilder.cpp +++ b/Detour/Source/DetourStatNavMeshBuilder.cpp @@ -211,7 +211,7 @@ bool dtCreateNavMeshData(const unsigned short* verts, const int nverts, const float* bmin, const float* bmax, float cs, float ch, unsigned char** outData, int* outDataSize) { - if (nvp != DT_STAT_VERTS_PER_POLYGON) + if (nvp > DT_STAT_VERTS_PER_POLYGON) return false; if (nverts >= 0xffff) return false; diff --git a/Detour/Source/DetourTileNavMesh.cpp b/Detour/Source/DetourTileNavMesh.cpp index 93abe79..0eed897 100644 --- a/Detour/Source/DetourTileNavMesh.cpp +++ b/Detour/Source/DetourTileNavMesh.cpp @@ -372,7 +372,8 @@ bool dtTiledNavMesh::addTileAt(int x, int y, unsigned char* data, int dataSize, tile->x = x; tile->y = y; tile->data = data; - tile->dataSize = ownsData ? -dataSize : dataSize; + tile->dataSize = dataSize; + tile->ownsData = ownsData; buildIntLinks(tile); @@ -458,7 +459,7 @@ bool dtTiledNavMesh::removeTileAt(int x, int y, unsigned char** data, int* dataS // Reset tile. - if (tile->dataSize < 0) + if (tile->ownsData) { // Owns data delete [] tile->data; @@ -614,35 +615,6 @@ int dtTiledNavMesh::queryPolygons(const float* center, const float* extents, return n; } -float dtTiledNavMesh::getCost(dtTilePolyRef prev, dtTilePolyRef from, dtTilePolyRef to) const -{ - float midFrom[3], midTo[3]; - if (!getEdgeMidPoint(prev,from,midFrom) || !getEdgeMidPoint(from,to,midTo)) - return FLT_MAX; - return sqrtf(vdistSqr(midFrom,midTo)); -} - -float dtTiledNavMesh::getFirstCost(const float* pos, dtTilePolyRef from, dtTilePolyRef to) const -{ - float mid[3]; - if (!getEdgeMidPoint(from,to,mid)) - return FLT_MAX; - return sqrtf(vdistSqr(pos,mid)); -} - -float dtTiledNavMesh::getLastCost(dtTilePolyRef from, dtTilePolyRef to, const float* pos) const -{ - float mid[3]; - if (!getEdgeMidPoint(from,to,mid)) - return FLT_MAX; - return sqrtf(vdistSqr(mid,pos)); -} - -float dtTiledNavMesh::getHeuristic(const float* from, const float* to) const -{ - return sqrtf(vdistSqr(from,to)) * 1.1f; -} - int dtTiledNavMesh::findPath(dtTilePolyRef startRef, dtTilePolyRef endRef, const float* startPos, const float* endPos, dtTilePolyRef* path, const int maxPathSize) @@ -668,10 +640,12 @@ int dtTiledNavMesh::findPath(dtTilePolyRef startRef, dtTilePolyRef endRef, m_nodePool->clear(); m_openList->clear(); + static const float H_SCALE = 1.1f; // Heuristic scale. + dtNode* startNode = m_nodePool->getNode(startRef); startNode->pidx = 0; startNode->cost = 0; - startNode->total = getHeuristic(startPos, endPos); + startNode->total = vdist(startPos, endPos) * H_SCALE; startNode->id = startRef; startNode->flags = DT_NODE_OPEN; m_openList->push(startNode); @@ -708,21 +682,21 @@ int dtTiledNavMesh::findPath(dtTilePolyRef startRef, dtTilePolyRef endRef, dtNode newNode; newNode.pidx = m_nodePool->getNodeIdx(parent); newNode.id = neighbour; - - newNode.cost = parent->cost; + + // Calculate cost. + float p0[3], p1[3]; if (!parent->pidx) - newNode.cost += getFirstCost(startPos,parent->id,newNode.id); + vcopy(p0, startPos); else - newNode.cost += getCost(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, newNode.id); + getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); + getEdgeMidPoint(parent->id, newNode.id, p1); + newNode.cost = parent->cost + vdist(p0,p1); // Special case for last node. if (newNode.id == endRef) - newNode.cost += getLastCost(parent->id,newNode.id,endPos); - - float ec[3]; - if (!getEdgeMidPoint(parent->id,newNode.id,ec)) - continue; - const float h = getHeuristic(ec, endPos); - + newNode.cost += vdist(p1, endPos); + + // Heuristic + const float h = vdist(p1,endPos)*H_SCALE; newNode.total = newNode.cost + h; dtNode* actualNode = m_nodePool->getNode(newNode.id); @@ -1061,13 +1035,25 @@ int dtTiledNavMesh::raycast(dtTilePolyRef centerRef, const float* startPos, cons nextRef = link->ref; break; } + // If the link is at tile boundary, - // Check that the intersection lies inside the portal. + const int v0 = poly->v[link->e]; + const int v1 = poly->v[(link->e+1) % poly->nv]; + const float* left = &h->verts[v0*3]; + const float* right = &h->verts[v1*3]; + + // Check that the intersection lies inside the link portal. if (link->side == 0 || link->side == 2) { + // Calculate link size. + const float smin = min(left[2],right[2]); + const float smax = max(left[2],right[2]); + const float s = (smax-smin) / 255.0f; + const float lmin = smin + link->bmin*s; + const float lmax = smin + link->bmax*s; // Find Z intersection. float z = startPos[2] + (endPos[2]-startPos[2])*tmax; - if (z >= link->bmin && z <= link->bmax) + if (z >= lmin && z <= lmax) { nextRef = link->ref; break; @@ -1075,9 +1061,15 @@ int dtTiledNavMesh::raycast(dtTilePolyRef centerRef, const float* startPos, cons } else if (link->side == 1 || link->side == 3) { + // Calculate link size. + const float smin = min(left[0],right[0]); + const float smax = max(left[0],right[0]); + const float s = (smax-smin) / 255.0f; + const float lmin = smin + link->bmin*s; + const float lmax = smin + link->bmax*s; // Find X intersection. float x = startPos[0] + (endPos[0]-startPos[0])*tmax; - if (x >= link->bmin && x <= link->bmax) + if (x >= lmin && x <= lmax) { nextRef = link->ref; break; @@ -1167,12 +1159,15 @@ int dtTiledNavMesh::findPolysAround(dtTilePolyRef centerRef, const float* center dtNode newNode; newNode.pidx = m_nodePool->getNodeIdx(parent); newNode.id = neighbour; - - newNode.cost = parent->total; + + // Cost + float p0[3], p1[3]; if (!parent->pidx) - newNode.cost += getFirstCost(centerPos,parent->id,newNode.id); + vcopy(p0, centerPos); else - newNode.cost += getCost(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, newNode.id); + getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); + getEdgeMidPoint(parent->id, newNode.id, p1); + newNode.total = parent->total + vdist(p0,p1); dtNode* actualNode = m_nodePool->getNode(newNode.id); if (!actualNode) @@ -1310,12 +1305,14 @@ float dtTiledNavMesh::findDistanceToWall(dtTilePolyRef centerRef, const float* c dtNode newNode; newNode.pidx = m_nodePool->getNodeIdx(parent); newNode.id = neighbour; - - newNode.cost = parent->total; + + float p0[3], p1[3]; if (!parent->pidx) - newNode.cost += getFirstCost(centerPos,parent->id,newNode.id); + vcopy(p0, centerPos); else - newNode.cost += getCost(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, newNode.id); + getEdgeMidPoint(m_nodePool->getNodeAtIdx(parent->pidx)->id, parent->id, p0); + getEdgeMidPoint(parent->id, newNode.id, p1); + newNode.total = parent->total + vdist(p0,p1); dtNode* actualNode = m_nodePool->getNode(newNode.id); if (!actualNode) diff --git a/Detour/Source/DetourTileNavMeshBuilder.cpp b/Detour/Source/DetourTileNavMeshBuilder.cpp index 273ec90..d746870 100644 --- a/Detour/Source/DetourTileNavMeshBuilder.cpp +++ b/Detour/Source/DetourTileNavMeshBuilder.cpp @@ -86,7 +86,6 @@ bool dtCreateNavMeshTileData(const unsigned short* verts, const int nverts, header->npolys = npolys; header->nverts = nverts; header->maxlinks = nedges + nportals*2; - header->cs = cs; header->bmin[0] = bmin[0]; header->bmin[1] = bmin[1]; header->bmin[2] = bmin[2]; diff --git a/Recast/Include/Recast.h b/Recast/Include/Recast.h index 6af0d7b..f02a700 100644 --- a/Recast/Include/Recast.h +++ b/Recast/Include/Recast.h @@ -37,28 +37,33 @@ struct rcConfig int maxVertsPerPoly; // Max number of vertices per polygon. }; +// Heightfield span. struct rcSpan { unsigned int smin : 15; // Span min height. unsigned int smax : 15; // Span max height. unsigned int flags : 2; // Span flags. - rcSpan* next; + rcSpan* next; // Next span in column. }; static const int RC_SPANS_PER_POOL = 2048; +// Memory pool used for quick span allocation. struct rcSpanPool { - rcSpanPool* next; - rcSpan items[1]; + rcSpanPool* next; // Pointer to next pool. + rcSpan items[1]; // Array of spans (size RC_SPANS_PER_POOL). }; +// Dynamic span-heightfield. struct rcHeightfield { inline rcHeightfield() : width(0), height(0), spans(0), pools(0), freelist(0) {} inline ~rcHeightfield() { + // Delete span array. delete [] spans; + // Delete span pools. while (pools) { rcSpanPool* next = pools->next; @@ -66,77 +71,90 @@ struct rcHeightfield pools = next; } } - int width, height; - float bmin[3], bmax[3]; - float cs, ch; - rcSpan** spans; - rcSpanPool* pools; - rcSpan* freelist; + int width, height; // Dimension of the heightfield. + float bmin[3], bmax[3]; // Bounding box of the heightfield + float cs, ch; // Cell size and height. + rcSpan** spans; // Heightfield of spans (width*height). + rcSpanPool* pools; // Linked list of span pools. + rcSpan* freelist; // Pointer to next free span. }; struct rcCompactCell { - unsigned int index : 24; - unsigned int count : 8; + unsigned int index : 24; // Index to first span in column. + unsigned int count : 8; // Number of spans in this column. }; struct rcCompactSpan { - unsigned short y; - unsigned short reg; - unsigned short dist; - unsigned short con; - unsigned char h; - unsigned char flags; + unsigned short y; // Bottom coordinate of the span. + unsigned short reg; // Region ID + unsigned short dist; // Distance to border + unsigned short con; // Connections to neighbour cells. + unsigned char h; // Height of the span. + unsigned char flags; // Flags. }; +// Compact static heightfield. struct rcCompactHeightfield { inline rcCompactHeightfield() : maxDistance(0), maxRegions(0), cells(0), spans(0) {} inline ~rcCompactHeightfield() { delete [] cells; delete [] spans; } - int width, height; - int spanCount; - int walkableHeight, walkableClimb; - unsigned short maxDistance; - unsigned short maxRegions; - float bmin[3], bmax[3]; - float cs, ch; - rcCompactCell* cells; - rcCompactSpan* spans; + int width, height; // Width and height of the heighfield. + int spanCount; // Number of spans in the heightfield. + int walkableHeight, walkableClimb; // Agent properties. + unsigned short maxDistance; // Maximum distance value stored in heightfield. + unsigned short maxRegions; // Maximum Region Id stored in heightfield. + float bmin[3], bmax[3]; // Bounding box of the heightfield. + float cs, ch; // Cell size and height. + rcCompactCell* cells; // Pointer to width*height cells. + rcCompactSpan* spans; // Pointer to spans. }; struct rcContour { inline rcContour() : verts(0), nverts(0), rverts(0), nrverts(0) { } inline ~rcContour() { delete [] verts; delete [] rverts; } - int* verts; - int nverts; - int* rverts; - int nrverts; - unsigned short reg; + int* verts; // Vertex coordinates, each vertex contains 4 components. + int nverts; // Number of vertices. + int* rverts; // Raw vertex coordinates, each vertex contains 4 components. + int nrverts; // Number of raw vertices. + unsigned short reg; // Region ID of the contour. }; struct rcContourSet { inline rcContourSet() : conts(0), nconts(0) {} inline ~rcContourSet() { delete [] conts; } - rcContour* conts; - int nconts; + rcContour* conts; // Pointer to all contours. + int nconts; // Number of contours. }; +// Polymesh store a connected mesh of polygons. +// The polygons are store in an array where each polygons takes +// 'nvp*2' elements. The first 'nvp' elements are indices to vertices +// and the second 'nvp' elements are indices to neighbour polygons. +// If a polygona has less than 'bvp' vertices, the remaining indices +// are set os 0xffff. If an polygon edge does not have a neighbour +// the neighbour index is set to 0xffff. +// Vertices can be transformed into world space as follows: +// x = bmin[0] + verts[i*3+0]*cs; +// y = bmin[1] + verts[i*3+1]*ch; +// z = bmin[2] + verts[i*3+2]*cs; struct rcPolyMesh { inline rcPolyMesh() : verts(0), polys(0), nverts(0), npolys(0), nvp(3) {} inline ~rcPolyMesh() { delete [] verts; delete [] polys; } - unsigned short* verts; - unsigned short* polys; - int nverts; - int npolys; - int nvp; - float bmin[3], bmax[3]; - float cs, ch; + unsigned short* verts; // Vertices of the mesh, 3 elements per vertex. + unsigned short* polys; // Polygons of the mesh, nvp*2 elements per polygon. + int nverts; // Number of vertices. + int npolys; // Number of polygons. + int nvp; // Max number of vertices per polygon. + float bmin[3], bmax[3]; // Bounding box of the mesh. + float cs, ch; // Cell size and height. }; +// Simple dynamic array ints. class rcIntArray { int* m_data; @@ -159,7 +177,7 @@ enum rcSpanFlags RC_REACHABLE = 0x02, }; -// Comppact span neighbour helpers. +// Compact span neighbour helpers. inline int rcGetCon(const rcCompactSpan& s, int dir) { return (s.con >> (dir*4)) & 0xf; @@ -198,6 +216,20 @@ inline float vdot(const float* v1, const float* v2) return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; } +inline void vmad(float* dest, const float* v1, const float* v2, const float s) +{ + dest[0] = v1[0]+v2[0]*s; + dest[1] = v1[1]+v2[1]*s; + dest[2] = v1[2]+v2[2]*s; +} + +inline void vadd(float* dest, const float* v1, const float* v2) +{ + dest[0] = v1[0]+v2[0]; + dest[1] = v1[1]+v2[1]; + dest[2] = v1[2]+v2[2]; +} + inline void vsub(float* dest, const float* v1, const float* v2) { dest[0] = v1[0]-v2[0]; @@ -226,6 +258,14 @@ inline void vcopy(float* dest, const float* v) dest[2] = v[2]; } +inline float vdist(const float* v1, const float* v2) +{ + float dx = v2[0] - v1[0]; + float dy = v2[1] - v1[1]; + float dz = v2[2] - v1[2]; + return sqrtf(dx*dx + dy*dy + dz*dz); +} + inline float vdistSqr(const float* v1, const float* v2) { float dx = v2[0] - v1[0]; diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index e228644b6b4ec6ff4034c2bc8840fcebc1917b13..fd3456bf106785ee0984b966df1ced790f12eff8 100755 GIT binary patch delta 120137 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 C0!8B zqrj?)Q2Xmg<9*2?3!*;SR{~*${9|bbzuops8}n*GD-K&_QYH7oeB|J2W=A=+dC? z#9XCcV3$#0=-@4otd?{|Kk0OCc!etJ|9~jkpn5N`4!LI8H&l9W4v(ampe`0?2t&Elh^ccBV}@ALe9!tlJ2gGN?lrAkvvS&$+vN94h6#&K(xIXMlEHByIX_9t$oAw zstd5Kmsn52w+=PQ>38LqD$-*Zbhx%RjegDW1AaPpc8#8+3;+yw?UqITI{c7iq zqwbS>5=*}}H9oS9;04rot8ECBC3_0huNy$`exxSb{F@dvaPjYC^44|30T-&8H`u1P zCXw~87Q+TQrBhS@o2T@T8s3hg_8hkbuEsIPYK(V`Cf6GP+%cw?8Y7P0F}5p__ld^* z%I7MjQ7sVe3W4AD z6nKK~1Y2K-cgL6}@Qock|3(bu)#$F$q8g$$ngw9dhvWUWG76>xp!_0HV`rq@WiOTpo4?;qgWC2(Nan0rZQa|{`K~siwi9`RFb{RJw;>fU48opH1a`PE6W~JYmkw6 zio7%0pwS>&&F5@Msu+;WCuOJ;N=ZGJ6D*t0v5Rp>a(rYziUV;Mln=Z6D8ssXc%TE8 zBaISbPR&)G>pI|}J{;)Un^h{cT_YcYN5@3B1fiy+dHw%ML3uF)(Ut$k^c#&fwXVoL zNzCQuD_Up1G1+F_v}RpRY+R;wf_j#_@CrIoRo{^adq*zhgveP{Hhp(=#Fsjv{Ht4N zfMEB1)=LS^$xS|?1qThGvb9_5honB!E$<%%`Oah;d()Z@K`Q>=1WAV=q4k0kb`Lc` zA&01Sq00;1BOYqq5Ss{Pq{OB;X|Cr#Y3^`r+rfy0a?E`CY@SJ z4y^oa+e&<%G)8<4uWGJ&)r9NDj#rIKF)!<^x7!{mnEIU(6&EN~4O9ljMUuV}VG~yK zjhq&?BqO>IBzr=awz#$w3yt~fNQ369V4HHI?JYboQwaZqLzTh@$$;R4uEGazpa35v znCwS|xFeZkg#VQgI($#y89TZP-!m@ogq)rvr*TY4O_TaU#A!qWB__T}XLRz8aV)$y z^0d|D?2Pl0Y`%yvUrV+njtB!s#Jloxd=ymsUVM;~$_aitzBl0B2@ktwd_uGjn$cyp zE1>w9Uy|8E_MGyavM3>vRDd}9P;}L183a$u%}C9H9gb->$jxa=vyEwFO}%Oxaob_q zWY?)xn&p;$W3tAOBg4$&E;QIzPLNIS=H!)Mkclhu=K(egvE)iakUwdui+I%g?q z1h3sDEY@srG5cDZPXUV64|dxP4t>L-HrbXfnlo9{U@drT%LCwV<_>#^z1uSl0Vt(c zfFHW8b>78V``f8fHIx*hyxgmeH=2$!8*-Y)nQvrkVWFs30Q*ik+G}>}_pd?5KJFM{ zvC`Tsih2}1t!8&ix$o1*s$adPOzhoH8gfn9(L1!M^-B=AIPiT4f26_MMRrkUB{o%R zdnZVrTvcKc!@U2fXC*jWt|}Rcy*(K`PHJ+E}@AK~eQf9nh7rT%T5AqT%u z3i`K5A)Ha+COOsJ)?<;_1)$GpMO_3f%jS!scNmz0)%KPO*3t{wN+*QWi_jhz=&faH z{yD`sAXHk|O^F)Nap2AKWHJV!BiXw$QL{-?r7Lxg7U&hOYw4{fQOGx5+HOA5N z4?rD#%vuI=WygT#LxHI)AO+actAvWS+NH>*X8dMSiKKvB{{n=juuOu{0B*FSj-Uz* z(wwtOlY#AXlFmxH3@oi%5v-TJ;QuJu-E$ZrJvN$hppZcD+-c`|0hJFn{}~|Q7<~nJ z?gjJhLZ}}AtR6grI*9l_o;mp?)+3qC3VeYUjU z6{?Z_qNv!FeAHy8Gl&j$b)cODT0yM6RIr_1(9@3qB?}>4^l+eVC)6C#fYxL-H3>;o zS+tc%h+11KG#MXiYcetD`ydwSaHGb@P*5*bykIy0s8mnee@BmV!idR`1}4-kLMnWO z$*&l$N4r)D7OuLiQWp&|J<5su~skP}gK)P(N}GHD(FwQCc^| z06w{F}wM6B?djoiVMaAEC*O~?0()%uoh#3!Emr~C1^mw zBw|7F%^r4sJPqk46Hs(quU@MM*c&=QfO`2ImbV{J+0Sly?pI0P9J}RhL>0`fp2X4R zJV7!AZK12Cn;@aVxo20J>_^Igg^|E&8u5TcWe?g}62O|YcHyE3U~ef$UvH#AqN#t< zu8`I)?5$IOtKCZgLtCU-ho&kBzi!{WkK+JL0>l=VSpx5Q~0K4e(2vD!2^;+lE zXNcbe(Qg<*0!Ru?8QFwMuGLLc6y!Q&YzJ5?Vmg^1_EwtI13-d39l7xRlS=x~Wa+8@ zDg{H^netA8eye?#i{N z+Dbz|-{U^AkhvoZ>k^zlbK0K6qso{MN{-Z&rOHLt=jTpSUK_oE7ABp>43p-3rsR%k zAr0uRY#S3LWmhQY$MiLIt3WsEmtiI4d)lTY>7`{Q%GB{=rN|Pca(qi^W_P7#{I_hH zays1ypWmkcD205YoS)EA`s3q0zfbs#d81{k?dpAGE>aG=81lDHQ%+8r1k|W!Lhw24 znZ8c|LpC3F(QiWC=4Y}3P-gq0Kw;edF+EtVi+sh8GwS1wHLD}AwBX+EuKeA5qslv>)|c#a_Uv#G}nvv%$)WEla6**#?Safx=^SD&-_I4EL5(} zY%cw{OZjtVjAV#aI?oy@J-bU;HtV-;FTRHX^PxeSh&OEEFd;RoX>BbNui6UOj2fCy zW9bRZnD>;uvm^YUAOf*YZde%q_O5b!cC^&}J*D-WQ181ilYH#y(uV4>J@c#`sHDzm z<8x0l9(cYn0-HT#@&+j@=Y)>@{9W*K!D7^=Uq;P5E%@sj0E4s!EoFuVSU12d<{K_p z)?h7fT+s(f5leaG(-S5ht1f)^wan&`&NeGAbf>LJ@YC3fqJ>*Kk!ne=!URdCs`|XE z49slRgrqihG*>}x>?noUi!z(${EgURPYXK-H$%9k!k~T(hR$6`p)U1t>Ov0zaDSi+ z5r8>&;c2HXYz9N53$cq-{IjB^#GT5|bAu;*04VtwcEaW=1WB|HDOCRV;9LS{KZ5<@ z--Dmpsa($rmbz*Wf6<^+yF)R~3y!+HqoLia4egfwJ-Bd(k~`N=S|=Wj77oj z%JF#-(zEX=j<MO5EMFq<9*)4-s6u^G|G#T?V zz<6;vWom`_KT)6*WDl06Z&iNG9w^P(s>Cf!l}>C?RxcbSRcuja<|Im8wy|%Q6#~=gP0*q}R$>_l{Msd0lC?Y=l=B>Kq~G>vhV4Wgkmd*C}z!W2LxtO3nXT2K}~H zAmF^Mw;H)lybF_ff3326d4+UupmOTf5NXj`g@{iWsKTg(a%D6@~rO(#r-Y z+7M*J6vgw^QU_UUMY;8AY{-(=uo?R``U;SAy4>FCI+VqGVxqd~HKm{2(kt8n!kB%x zMwu%o+Ih6>i5fX|d%|q@?DcBp8c>?C4$tjvDbE&`SF=W`m7nzbfNF?8c$Wo?NXQwsrCNa+Oy6VHG6A z3FOKMuVDazi;&WPmC|qJ*rziAN|<2C-la0U{eMciVP%7q&#qMdSUJ{E0+7Z(WhJEa z4cG+3IYde&QBzP$&#^0&S66ijI%#vzC#rglml)}Mn{r{5D%Gq|N>{h^y1&AKrBh#8 zq5QnMXBVMQ5rxc%M<#Q*v-VIhnQ6uoY9|dJRU=j?&#VcH;9!MZQNk>}am5@&86lYJ z11L$=(f*8Ip}f1MuQW|oep+*=(Y05xvIytV3t5HQ^2k2g29{SKkr?79(;ZS;YqB~DhpMS>*G zkID^oinQSwX}CpsenU)4fw(%gfH1^~qBtqtw%!3>|J|O$8=AUG^JDj1*y<}u+hdjg zy%i|kd|7eZ_M~(oR*BlyQBq!3CT$xi?OLGh+7{v?FMu95g+qg--$;ne}vWW9;7-cRN$G23ILs5oWn_6R9`zViC^HccnTNxJH3unb#pj!nM_UL+P| zA@h~<+uKNM!ircg9?a!HXckUh>bL*wo zXDcPU*0i`k3j*!)g+OwC6@{wQLVI>dB#geArOYl|9slhN5<3!DB=ZF-?Teri0^Tty z$*}2`KI@0C_UZ}Z?Oiz{1U7AfDwTgM`OM-ZThDvB`!@y`=C#%DKIx>|r}CNM2VCp^Xt| zjbr>0rz^eo35-SiQd`o=!GcD{B?g>08auw7NodRJ(7G`Kc76mW3(7D15+uV5O6UE( zr0p5X?EUFd%Zxpz_fM6m$=)CRL2L7bgVF2>n458TC@gOHbYxC>dY?D17GxDkL%eqNm|=q znRq@$@=e(D!TC+hTM#yK$sdJI3F(ya7mj)fC^kan8mRNdr-_R!xU9Qatv9~d8>Zca z&WB+*<9qM1U7OCNn?04kzDzQ`+moy+5|U8mhMs$del?LbiSK~`(^THHoZzs_c0H6& zs{)&t0H&e~J)w4852d;)-2ZX{cs#UQsYp;-T^}t~_E28A9@d=P9QQO*Z(s{#fE#WF zKwSqevgg+Clmpk>MiGWcPhi7!PHeaWz?E_sDg?(LS|Bu;Vtu9cJ?ryM{jHclD#U8}}E2p0(I zsi&0TH~f^4Z{4IHV}V`I_gE|h(MnJh;@2!N%!yTA$75WqU>_3;L0U_sY zx+&+sYsI=MLzV>^toJGA;ZL2_O=c~auW4)CKw@R0ov)vVqo9w zro8ffhad?l2f+ZVrKZ}um<->HQI34y8f~cG_hLPiC)H_EZCB-WHTs|UM?S>Ab&PUL zjr3aC)y_XGQGL6sSY0J*AkmD}RT)=J&E!`1{eR^g(N+0hbwud8E)TB3cA_kLg7s2S z7m4R~U@gXWcL1TE-#f$NqvVwB*312{g>)GaD<`{CehfNF7CLh3gE-L11+{G6o-osp zeN^>uu)=yTri=2y4_!kx|4%1E^C@Fq2?ef9+F4mu6C(W;t?aIeWD}LEHSN7#iEbe4AFcS^Onrpxjc6tNX2@g{Fztpz zS9QdJ=~P@vvYK}~+T9d|HEwEErI{{jV6l0W9@f;2)zx^)DMwufL>Y_Ch1Qf4iN@j* zN{z``J85!SfLmNRl4`-%%wfJt;{TqIYC>UiVcsd=C}*7z9j%!xr=C#K{};|SDuZu^ zc6_*dGk|OPQ=j!|e@le~RO9~Sz_`lnHFf4fi}|Q>@_&AAbqGP~e>>6YecXyp_ECgA zmTK?9P?GTuv214aqlh|CX)dRSJQQ8sTD_iLQ_EdOL|Ic$8TZc)v|fllW6j!IGdIJM zW6;^gu}o#wPd;p~lK)f82&ZutzAy>QE%#lrO3(r^ylknI5>oeO=hvBwEavi{=#uIEOxVAF8w1^&ce-sD(l7H79KVh>qmb={Bg8f z(+K>*4m%0C@4xT$la&fJ@Y#oZHX3p~+OxydvjY}$iF3~m*n4)c!-IbHACw(_b-sh< zS6<^CKv;T62W9ZB=DnSo7S6L1D01pf_*nEAWJg`(;fA;`vP;w_iPW*%td_%i}i%GHQ7Wyk(-S9@j1&(j7B zMjg#5bfQKp3c4|At)QvwmnRs;#6AC4>r6wIzGi$)J9LZY95q0ral(DtQ(?D#J-%&+ zISUP+ZKs6Zp5H9MSX@f}LGx%cPX^yNt}8L_FTrI6<&)bza)!W<49Johi&IU;;w)br zre(Uqr)pe`#Yf~}?gL&r6=W=~81Pa_kUTcZ=Ig`CI` z{_b+39idMk7Djf2Q-rV<2sA%Ac5u(^v|;1BvCv_)_y(zUf3$a zsK$swSo2MMq~MB+DfKRiSw&(BsZ~C-5o>0GsNUvtm(1rZ<%v&EI98_IzTJ_Qk}dCK zGyB4Iyb5yrb+$Cx)$F}n%A}EAd*=N*nkge{`$|!R6ka=0+V7^^tUcmU{yW`BGr2|$ z+IHY~iJehC`m?>hjZvrLl%v}n&d=x>*p|vyaLSD8TrSIYma2)*BRHA zxF0d*+W?czfmFSOs^fmo!XdNoA@b)8t4Fn!>QkWqJI3NVIY}&m&-_JU&0S75RVKoY zwJAnU7IiA5<@3Z`1iky+!6Lek!8*siHNsYJPaq{)`xq`g zt>i;&{Ueidem5a9O-x$ zm$(77#{5)NRKE#)Yi)a%(ptT3IFrpc7Jr?ikyd3?nvd&rts!_x<5LKHvbhLu)m$E9 zh%Qi!Wg>24RKEU>Ss~r0TVw>*_A0pFn5bXp2Fe z-D@oFFO~qX_~T;cg94$o+qdfKa%6KAbWhMr>DxhN#z&f&w%U|VNi&0!xA_2lT(u8L zB(jHCuaz0|PS9WsH&}6PCS)he((jZq=@KS3aUJ{UjmzFgwWaDWP5jcTkj6)>BMqY0 z)J-u`jbGAW7p*RW5bgBQ(_0C$>nG;Yr7rUc$C&+g1ayg+k)+@OCX5bd!RRwJ?lMaV zUY+TloRE4d`%X;)x~-jO8p3PZT2D1t1YhaKns-n$f7j{i5EablB$|@q%;m-vO)xpz z*(Tvuk1>A_?#tkGhckCJl=<@E?kplB(72@}?^M?Dn&9XwHG$B(JQfad9D%>inEwt4 zs(0bTQa;ssQN$a%K`fRk*5D+u%QR zN@878sp}uS&YeXjh1Zfj1(Ok+&e_a_Eg&l>j+3LH>< z7TmGO$gpH58*r886Drzi%jKuKVs=i_*4|e0Uj9{M=GSts^O0sF_|v6y7>qCjbK$&y z$-wjXV55D@1&~as(71m{y011lbEn}I{Q`{`IfhNCw*MB5BOWZ!I^S|H|-`(|BW~8)Vygms{h8D&=Hbe z^Cog8%}Yqt)KDM&1O9@=n6tl>X#NuLIETqm-F`vX`V$M={unTAWoulK^svYLd=I@& zHOVP~n!!q#^cW&Q@xb}hMW=}mr}G4;SH;uOiwYkMX>%1tA2zwzTJcZjP#Rehb?N*aE_fMjR&00N>|H1;a3_9^1$wI?k`3%UrR% z>1R-;*EP%W{~4lW9kAX`wx%8+6Ntm~yX0q@zO+7!bS( zHhBP1ePq2;!PVeo`Z)l=Rqer^HU#j_iFe7*uzuC1=)Ga{EY)SAu_8dQK_(@L|(Dc5E(z}^H1@5?tB<8PZ+Hu@8@j6cy&P>JOUJN%x`ssLA6AO#Uz`lmI zH^@P1`38M>O>;T*l$>>yGHA=4t4WvG#-B8DtBEaakuSrG7h|&x>tB_FcTCQC^T@MP zeQC`$l|Sjt!pz&r>a3nx(s`#bFF|1JL>@$Jr>I?cG(=DuHzq1~meDSK;@EBXhbAA4={ z0{PxL7L~I%&{7$MO)jpuV%W3y+pm9w8z6G3$-W!6rXIDHS<0|fIE<;j`UUt*ow)={ zj+7GXV0U@pQ5b`mblohajWF66`edX@GOT?h{JV!8y1cMl!22dkmP)LWPXP|&EFWY! zf&_gYO81dr!IqHbhhkaxNo*(JSj`x$l~_j-T{lK{*DIiKByFq16eb zK{_4k{RG|Dz+@9?UY}uglT%I^i@j-uYSL8Q?l>r1|B3n%f}*_e)TQ*b#9%ELATwe@ z3J24bZ(M4LafOZMy_BM4&3!QCAFedtfVl{J84~UueM}wv2RYwi*!vUm!o%XYg4kkF zpSshUj2SZ0>J39HF7#!;vV@I|G+U=HW!m(MX@6W3CRXLb){i(<(;9>BNa>f5^=@j+ zulchpQg1hYFn|S1E!_CU0M=ZR+=_n-V4+O9;94BmlnrEUvKnqmRqEUyDIvXZta_TB zFAHL0q>ypEDu@k`7Cpz?HDhhuh9Y~d_V?psnz0DC@l@#L&zCl1?F|`JF!rQ^D1be+sm~tyK7enB@2fChrkoix00O zx(})FrY~>ToV5)srNX}m)ki};M}RIq{H5k-?;9$#^W|?gXYJkYP@&d`pJ>in8zkiT z)e|65vzqX~nzJP=i|2;0h1z2t&kAJ$PkeG#J7t(q$2bpVtx$O=lm!j;sY6BwF=`$e zMtZF^%UzuHHv$-21k24pYt}s^C9LVSm5rugcnJ4-EMIDx;5HxLdxMU`<>&Vq4+~?P z!huuSXFODj$0T}GSc)iCR#-k1ArrWx`4cTzyTCWVhV~(p_=u9z-Q|(vDGCJxwpTntHT6-#A=y>Ef9h)ZXxSz zmZ>NJ%hzUEj$Yu+-Db(g8@L1tF1WD%5GS82e11zdiQVOwS~4>pp{-aa-;^()FTor0 zRO(%0N52~b`LnH9G7#Qwh56<#Ki-OQ>7DERxp20#$?R_(_?Gf0%EzqcVXaxTo?%JL zzna1P+q^P~vV%kW;FNEzNFJ*jOm%fg8yoEdK*Mu{uW8MEb6UYv99S3}1|}e+#7r@7#v9 zlA{01$FyM!kYnO!+c5K>^{!B>{Y0g#mg#;iV+dCL#poQYtgHLAOsX%p{1}_sZ}i5z zF(8ur3(I&3l2Ip0rt=w3vOx3l3awK`)6w_h{uyGhHFncbC9k4^&OeqFf^;OvwhFX9 zQ~EjKnJf5-Cs}gPh2Ibl?KeUU5Do9tBh~gBUlYNa4ecrdzc}KtOd^YcLHPj>haCyU zQ(-RI73xOtu>KkStKfr^jNJ~Nxru7A;~hN1HJ;u7j%Ok8oOo9ELzgYJ%$Ps&!M=C! z{R|ykMlIt|utoI_Nc&HHtS;vfZCP~CieDT0SgO5?J|_SA&wV@&JSTb75hy$Nak7Ia z`Z(3`jy_)cMeuz3@A~-6Lp;@A>~cY8KB%kCht*nYC1XBa6Ve7;4De*9f%~+KKh=(P zZh|qz6b%10MjXLv#xHgdf4v=x>iYd~5tFfJN>oQ_4Xg&PDrxUvtW%HOMQU}~M(7Y8 z>k7(0+OZI6)Gs`!J!_lZ7MSWGpg6|!4Bo5L#DKUM^M{da!k80DA?jY#QhM23Zo};} z^vbMx@ z&LUZm^u%4>Jd$;1)A`|rtepg@7e}(FzcAM|+z(S=hxA`eNjf+r6EAgAOr0Fq; z-|xTzB4X?PgQ}2(PD5%ApMXAhR4vg z2cOxAHFGhuI=-?Kdsfw)@sd;MFwIvyRxVw?STOPkyR}nSca`#XT)4sR2vyO*Ev)%2>`@%*;u#qtC zH~$al?g-Y0CVT62da#)76yu}xyf&JJdz}D*BktdK;q5vDcFqZQ!iA3~*w;?5H(mHj zg57e0O>yBR1j}`5qniuAO)$ya(1zZHhj#(2i4*LM#77e>$O*Pp;>!uP+=<_Gi5~>a zxZVlYL#pHd>%v+gebUf~2Y{hn0W5UFyodoBLBNAfz;^(&0NAUS6L}^R8uqBPkmhjM zpv(U?GXx4O2c}r8P*nTIDZv$3e{tDqr25MM{&>_$S>l zYSVEL>*$4>%5QaN&GjlWIXt>Mi|`6?sxA7S_m5?*ytd+UI4Fcpa=zDEN*vq3rT6#z zKr9mBVc;S!HK3!^lQmkD78-Aan%qysx-YX6Jkz&oI**TI!8|06HAA?=`^)}^ZfJ{A zx9{+zFJ1D-VgTmF3fW8OJfj2edmgmBm6hEMe^S}ATZkEp!G22DB?l5%e{W?a3zR z+{RWUuOzFJIs%m><5%PkeF+mXPPTIpOF_u^+C=0+KL&=}-bg_A6?0AF?wfiJ6- z`h=a!8-z2_SN#(N#AqWJ(J@lZheYX1TRNdNHwuXA%CC9LUaYee>&r*u+5B#HU0v>{ z6iank!Lr~D9})?^%~kyEUYI0*O5>+{F@LXL#)v*8QlHYRxVoH$aG&0+W7uGf5jqyC z7EaJQ7ViO+EhvyY=X&yIdb2jMpMC`cT1HMvfATW&Wa`)pi|o`x?bKKCgFb4Kom$_E zf7+YH#om<#RvYyf_&OwPuHM88@sI7L4X#6R@dVe4FIcNBzv5Aetb3SSh`o)ag4&qp zOKrSt=P1~dOk!=M3)lFpB<9QV`O+lzubj-2cA~%F<}~m!F3hX9$mc;+4*9Eh&~8B=P6-7y z`Wj4ITnzZR2>8ER=Z()wcI+!Xs1kNxdzF?rxYMSM)sHBuo9*l)iTxTo`y0LZjAYiL zZ{UYQh>lJ~n~7+so#<*K5GC1(^mJ>l7V9h3rGQ+k#F|>JhCj{EC9^ieE^igb)}DRE zs)cf46OLj9k#Y{+v1%_Yi3-cr^Wy|s%5qxMoTHxNi%|7$h~*FRKodOSNI&;sLGiyM z+7bPMdiuqW(1$}R@DXnOF#X$h`lI#q9Uh_Y`xyEWcKQ?b^p^z0tTM(7$V^zgSNn{Rn;GW9U=u^jGWYuL+2={HGs7&+PP7_4L+9=zn?){rd1~hD4}J{&hnST~{#*6*agWeX zeGGlNo&Ih;{kH<*EdLvip>J%bKU`10<`Mb>kD=d}s>xqcPv7$q`iqaDf5uKRuN7}1pp~gRwD!sfW!3|H zi6`xg#+BTrZIQUr^3_Of(Q<_^9mv|{*zsKfQ9GYwKQ-`)vGZw5e2{dsf5#{UV9+0{F0Mm0}0Cn&HEoaIXi>%Drcj-d@$ zuiCNZpDnH!j6FJjn~2{X!tP_udMAbTG*+Jy>z=Yqy1Tt6iT57L0$$nxAk74U+B}V^ zOQ$Zg!{|B^Q1Pi#=R61#E9Hp~!YIe54t@|O5U6?ie@WL^1;Jc z^sx7UP?^61sY~K!&G!XH!3O|Z#SQ&}e~Z^(g61yS5U(IQt`P-OX}{|Ul$Pg*pkT`n#V4)ER-+rXb=!}j zv~KEAd}53B1%8xGwo!?%nMAj1hBLj_+7z*B>5CPpy5%H)b~tN`#f~;Ktc}pi^HfJL z{K^Jy2|^ps5hM)|TvG{4LUNdZlL^=dKwJKN>J1bNXa+$$6GMHtiQWUW_b_^Y0`G{} z`Gq9mrgD7B`8$ttj}gp2dH_5azYF970EHEk=WqZj^Y@}e8a`cX&0j8RBC&cgxegh` zM~q;{*bLt6DON=p*T0@(&yXcf8p*aujXvjW6gw%!9Oq|7u_WpCG47YjHZ&QfEr3oT zhk{r%)~|LTKa$F#L)sq`H!$vc-<5*j&i5&NE%_w_K&LcHDP}4#Cu4sDxDPa)a;;Dv}Gu=*?Ob=={4FYJ* zj331R8ppnr!pr%!r&-I;Kg${v`jhsqDHPPIsho$5XB~ZFP@vHwgoR)DKbzUB+kSx}3PgoLqGtrsc1way&| zfw6X{kOuDElli`MY@3H(Xq=TE%CCrn^5UeOvpWzy6UXL!K`<|}=FnHNuB zQ7y)mFkQcdeH6s9Z!`omupdwCi%YrtM0EOGDUY7Wd_126@Lpwp9$I)VnU9#r5<<+S zBF3(yIpf<;F_En!W|lwLqE-ba6Mt_avJ{O<`O%3u1;e!eBc5HRfDOr;2sJ>5a2dFb zW9C+iAd|c<+un=sPTj9l7oXzhNvyZq5)#Vi5|<~j7&krDgkI*AlUVz}<*2c!9#E7? z&fiY7q_QPna*tVBhhT&$93&1;`z~fVKqEy=!7@YC)7&a)5Mr$af|Z zbLLagb<5Wg*r8kedH@aihA(*OGc44@7u~g#xgUs}$$xl;Eo(jpgPi+uKa7{onCAvR zmPMEYweL=?Wz&N#AHT|vJj-IF=g#xrpJhFzGavKV=UA}mUtiv@llKjvfybic#vwlW zITjxK?8m|+#cuO3t_@l91qK8vLJ#DRsgz%r6;SgpYlU22xBL(Y0NgcH~!)DzvCidGN_1 zkWvm>Ez&R$l4%V_ft$bdJfg(J^L*L!tcTlH8n+{t`0?jiThm|1@7KZR`d)&~eXo9V zj=N;A(QexbCGrxVlz}KR{v3ZbgJt=z_(;U$JY2OG-l*G}sQP|H`Fele{sm^}zZ>HP zk;HOf7T%+O#pF_P+c+)-vEAFY7Am2DJVnUm_^A}9um2A~m()fF_@WnB+xV$khsYq) z?4;hdSi%T`9G5nQ;}yNjw?9P{DPrm%e*FdJANv9Xz|9F?V?OFj2(TK-S^>DPoVRI3Eu}29B*SD7_et2Kxj5O=P~!F=PNFkTbV-e;kGxJ8 z7sAL}7kS8wtlJa2A#5U<|Bw6l#21m`%`WB(USzGqhoi!A@@=Bib+qBL4>FciHj0>w zU;XPhp7F95*+ygK((Qh5FZ>bCw>{z%i$xY;&2(4#Bn6wmBN8BZ@VbOXa$af zY?+DzWreI%Qf5-=OlFR4PcGhQEr8}9JdwBT1SaY4^~FRId!!3w>vFG0(K%6>f0t7fo}R!L6h--#9X5hXL5R9fnX5@UCQ zx0uNSS~(xvH+ldO{Sdo~*9g(437x7tpWdJNjOWfo>Mc!FKPjQw`Jnza3|m8^cW^y|;)zv5oASXkt2G9tecF^lHWdt>c=7rp=WsW>V*g7;(9 zw?5_LX0c|?tS<_Mnya+i8Hk&I&og^4Wgsp+pqC%I(lMU`4)_O>?D#EJ-0CRGgZSBH z>PE0>xYO~WgK2J}`jO)uOxy6?3s|VX^K}OY&t30u^<~xuTQlPVoVWPT;T;#SrYN46 zk5xg{Y(9Ab&KEP^Zjkm}?OjOQ?rmPQfQ1bEJI=d-hi;R!|F%op1)v6L2RN8Q+To6O zNc-`2!8GRYm?jg`2USq9-7Xs@@1M8xnXj6*0W zxNM-lf@>KEakPzr(CIKJPikyO0arc0O*DaV*Qp!vE-zgT^~2`qTE>uUY~G&S&ZlOx zwgc{=R$Zx~i#rQ% zuVrK29x{{HX0x$TAH7ArUXNf#R;TI>b#?e6Gp?JuC;VH?Oe=6!rAZDYoOp{bUWn;& zM*STObs>xLI{269oan?a1-#87*2<55?!mZJ0?cNvx{c*vExOCMbYgA!vPCRSI#s~0 zFJfJqTtSS5VEQl!NCCYH^f?HC+dkwYbFgE)+lMdCVL@Iew+KZ=;A*q_pDp~|92Vlg z4KSivqt&_6QovNeujL@XhV|v4xuA>I>coP%(-z)8mv!s1nAg=|u`04W?bKDxu}q<_ zlZL8!cqJ{xf)fcvmPqb#CYTrHvI$b*W^P)Hz1p(PJZ3RF?RVy1;@iwdr<0i>n|QM& zY$RL6XDmUSzPyp!mariH(-P(`9ooo0MB%BAap#NV<{P2>&4(g3)~!<}K*ap5f8ul9c6_Q9KxwJ-5!zShqCmVK zKAkNOK$zNc6ex0WIU%Ol5lhS>mFuej0gLkok7L1SnwFU5T6N z4LXi(!&fY2eWSj{4gy)aPHGY`NU}DRDCtV*Wakf^$u9AKeHruZ^z?e#OIVi`fn8Qx z^*4Ww^eVn&A}=c>xzkMQbwG*7#-6;-GR(=nU*j8=u^H0Q_1v%=nw)=}$I~;u3!kza z8_Scg^YzPFyEb9C7AP;<3oaspi!Vfw^|bL4T}VWQy7F~8eI1gMtw|rMUh~yNI6?=n zr%<4l&q4ZXj=W56&Ujr`xV(j!I!66^iDo@_*1;o0bEt&)WI@#2hOYKA%O!T!FA(c2 zJ8M0iS@z(2tSlxvBH51F){f~#n89{TI-RZlh7w_V?MOC#9dG(7j%1V13C)M9r8pKR z&A)?LMBR&m(0ngG^Ht zsP9aZX6ln^4?2ao)tWS_#~g!~)|sUC9#>U$WLM{YI0o~o~%>M;kOzR%jJ zvg@gSFlrJ$=D0J!U87o+hf$~}wAl$CbIuvC3vK`*S1orYjIt9x=72L`sGV?yGvQe; z5;ef@pAR;rpFR1SRm?}4D^UIYA9IKqu+~!(Zmn}0P3?sLaC-USYpj`{oo>A|-C-WR zk_Grb=FrmrGA3G5#ztqli5lHw4lDf^+Ud4B(@7fLV-6{O!!){KQ|gCor$HO*#~e-i zRy?8E)zo^bp?0dr97y_1wNuTkr@G50Vyyfha|-F-L?c?Y-MM32qkGKhW1oE$>po{VqC}ax zQfs)3Q2y`7kQI#uu~!oiW86#Z2cUNqHdh)h^QmjG$BU4Q*REx*jP>Sku4C=J{x?d* zGIz?*t+n#A>)1r(C%U}OGNrQR{N2~FZQQb)|L1kqfz9QAzK*ywY&mbvSzvO^a-4D5 z&+=r87KZ}>qm0WdC_5c*dI0>$@n*zaK994oUT2rl0)^&9#M^LMvc%w>o*$vc(Sp(5 z0wzi4gU?!ip0gHRXAqBve&*?Ez%2CtHqfs`INc}xV>wjrvV1OYx1P=Q@&aGX7b4v= zWj+63y(8W8^c(#8dZc@X9}wxD&2)2x(mho)7FxO|h@0PFfgN{{ND%iMj;z}vd=Lh$ z{EYjT?g16p*WXVq-N@xPSZK3dSp12_FyAOL4sN;o#f4S1H81|`4Hm|<%c|{O7nfD9 z0hKPRe!4U2(aWkmHgMAhTq|_Gtm?6WClk#1vg*Y*c_zV}FRQ-uCVz)u&X-j)-{cnw zmWwpLgoZ1arQu`sEvZI>DSTs}{b&w-U_xvg(32_!)vZUsfIP z2G?%_%=xaW{~Np;!JMzE-dNA45X||e>c7|XHv#MId{H%bz0j;j7m*iZ2d<)ikvvPUMt=N9_#s3z! z73=plxqRAI*2evQ4%5Z`meYfe*vfqP2V0q&bTx@bg=didkFaDB zw~Y;v4&CI-wy}_~%xtj2KKdZBG8ps8(ZLR%IP+CUXYM9(d7rEqmhGH zJ|0&!`pC??{16?W~g& z{1f+m8@l**0q^!UBv_%zE6rQLw*wxNxUaZtw-SV zzT0Q;-`_?u;&UGM4swh$c+5K}t>WX~!LO3^1PT2IU)^37)}_PY_9dKnt4{%*PrrSd za_dq$uHa8dxtlox{{h*2EE?w+7KkH8agwYD(v?k%sli2NxpRw&&Iwu-cuG;Tim(IZ%gvpig@NAwrh_~Fqo@rv7 zr^WN9=WEYqFBh-d!A3CY_FS&+WG!=a^Pm9ni;wnSffQe@)vNy^xcFU2mrY%XZ@7nt9#M z5~V{h;_h09S$W)J_(`O--K5 z%in`X{*}*ve-B&W&+~cvT`XP79mHSV#ac^GWbzMpv2N0?IlOuo>lpA>re+Tt<}lqs z@&@8M*vvZ?vQABQpc3PeKNW4#4gxvA8HH>dT{-x?5I^?w%N*|gKI^Ri&~hIaF7QRo zk=tfB=;C?2WBwQV1s7YU;6mqTSS;Zi-#^*wNzZ@?xGCR`h0Wbb)T=XR^MmhWF;LBe zK0t;DdFS{KSTm2&TEBfW%zWYp2qA#m2>zlSemI8ULHxuAEV0RaXC-0$)mc1bHx?m9 zi+R7@_&(x91M z-@>NUy6!GM)z|F!x6xTO-;V!qrsb@vh0^un-dvG8#zP%z#}!xMIorp4nr|UA%1P6J z$!U5yN^N7uI<2K-Jf{*$3T5u;YJ7`*tb=qy<-_-}mXTlEZG^%*Wfty#kBbJv7^w?b zozl;|i_`Gvm-uF)-2Ni}&psR=2dl5|$M?Kkz?)F-fl)R6kDKae9eDfw?9XugCL1m# z>98)R-#O?u1%dWg{2&_)W&mpF*>VaWRLllS=4bi3Voa}xUf_p{+2knY4O%-G^G}d^ ze#C(v={5=DpZyPIRjO^L)}l_GIJ}+lB1y)mQDTu2JnmV)c-s zqWbea2U&v0e^){M@Q}>Oy!IgL>y`^wQs0l@eGcIY$jS&l^$^SGraVVcmqrh1Q-67r z7)KCgtkj6-quw!|uM!M;nEV`fKg{}sZ+lXR*%g9V*YzL+$dARR>J6Go00Az0J(LCV z-lfcyuQ<$lOJ~35|2fRM7qgXW7(iD9G#jQghkDgWae0=OaF0(*_i768JsUk#_ud>1#0k9>L#=UrNTA zuF2W^m%@6gUncw?!g-@lah|t7ocH~d*^HYfVxB6|q>kqh*W;;am3->HC9cLR}Zu5uh8_5e)1d0Ar^MGU_}ff(LElCB27)o}v_1I(48 zEbWXyELIOMMhS5`sUO&>Z&S{&z)r2VXK@@+^`}esgX*eJ5z5FgvJiI~xOE1ylj)cF z2W2=F3`B*tlNNcoAImU-p9|$}%2{&g>QG0W;~t*4Sd?G%I~c6H#Fv$`mQDH%(3S~8 zT6DbfB0p4)gDOP9%jLK%)A|zsjqse4e59Z;7kT^7G`vBd0dL<${=#R#b583K-uD;y z20PwC!ZTmw7YNTekw>M9+40z6IHNyMtESK$g?-5?=IbKP4&S^BlTXvTJX~zpX4!m#A^6tlh z=bSbpynwU(rQ=$=uM%F?S-yktoD*e)x8n@IV#oV~@LX~E?{nZer^X1c`x!p?bB*7> zJ_p{qGkh80IcLKNuktiMWXHQqc&*Ry-w4k+`$c$TPV@FBG=76l0B_%E{=x~?vY&Hu zi}1e3)i^Qt({c=r})VexF%nRBantP6>UH? z2f9cL6g`;WL@%ET#Dub6+J$>(R(+{??f0g7{vX!f1g@&${~JGN&H({|3y25^2)KrZ zfMy7&h=PbqYT$~BYwkOS2HxvdB5G*LWSOB~H8V9d^{TmmqGD;Gsi~P_lHr<`mJ4#9 z_vf6saI^38`u(5(^YC&!?|IKY^O@y*X3ktpO?1VTbjKIxl~%1pFQnD~kSshgGd$}} zXN+@}YCKj030XYjwA_S#?UbB9yIymA{i{9*g2C=H1R=Noz;2_=`Uv#Dlv#^JJVR~b z886})O7Ya3)lUYE@Zzk#|97%)hu)cbip}9OX9#Y0(yxu3Bxp~KRzcUJeBF5m`AM(D zVH4!)86xX>4$e%igZ%iiEuzn53Yt@+ea*TWwmn+JdM4AO}bM)lKtZ;}R80?*Z9sDbwlRPzoNWf)v9awb0IPyx<4<1Y3~A zXPuK%k^Y5qIN-4WZ?!oyBhB)897J+zo!tXB6UjM!B6*Jsa=XAt{2&z8g-iWDq=i|< z+w(}2suyW%=kYBUbk1ckT{qPkWiQ25gOIeM3Z-$G1+}~+OrT7F7xEiss zP5o>koUwXN!My<54FGOEpejgBDZ_v9<@m2h1zr>Xw^!!c+)E3|`$v)fhr$?Z3i*Fh znjb^{YiUGb_Q93PL52D6cj}@rg)k@od$j$x)-4GwOn-CH|5=ZY-ISVuS+{<$PG4TsKjBWFE-gq`Z&*-CW$59J3P>q4gu2h9 z*Lqw(WojEAIL8eKnzj7+WqZzz&5k!AMqk_vhM#xUUaGQJL8W84wOWe;dF$ex(>rFV zO1Fe9^_vILvyaw3u}Gg~*wd|+>8T~XHvPI@`m9^;8WCmz-3@Gd%Ago_I5NWnKl6-R zw2%?H@6j#E;ZA_*sjT@>bRTrx9Ii5hqYML2sU=7Q&jGl!i$048!L_g@(_BD0>XxGE zxj3^+$_T@fLHHkiU8~_+UA%BwQ#1n#JGYpc62le0c1do`C!Lj>bK}qQ2z34%KjQ>; z47a`Yh{HI&;ukv|bbX%@h4@bGBx$TqtcI;_bxC40p z92FPde8zvjjr{nu=3aN?;QE$U7{t&4=F#9z>epNXbgNV+{^lJyvTN-4o(=)oef6Jc zcz0>9*rlBvVzc|U&Q6HI4;E%mbIzWPd(+&qr@7(cO!Te4FPgHhNrukx-q~@UG}2M* z=voczhJWINx?pe%Gk?ZMxAq9lu-dw(u`VAZ|z`5j8A)f%QH*3tbEP z2SLnRI8LdpaqjB<{3oL6np5i?!xim>OA%b6)7{cN;H<4J=!d7>ZXMU6bjX>jO|FGT z!-CbsEZ1gKR2tn^NC~`0Ya&vNkb~_-*z+hL`B)7fb6>g&n>vi1N8CL}p3YWK;s4uJ z*vK+c<&XcC>vgFZh*wZZCcYf7UWlE71FX0kILAFPCn6h9b)GieLRvBJ(cDup6Jc`t zI#KaZFh6Q6O=@bXtUYN6(3aiM`8Mw}O5a?TL;5qw2bJ=?NXt{oIZ+2GM ziFi`DNHw?jic7P75qJ36#t;I!GrLUOu-OOKBcIa77yVbeMRm>n4b_$6aA`0;ymGUr zH*xBvyKtK)B#=s-gZrnk?5KDb*IeM$k=h+r+q<%jyC}#-j8O52r24XKt-Yy5icoDh z;d8>U;4F3h|8iX^?#u3i>q@_Z^ZYWV7f`=1yC3Erlo$@xH~bQHF}oJBt6j_8MeR(G z?#nLK@5?U5HRhC$LUCVqOX{PGNUF3ev(Jh9Ok?ybv(MoQ;P%;>y!{`tcegIM?wEvx z{8ry=OZTkfT3hOo3RDD^cp8*_+v2gr8G~$1?E1~wbV!J9&K~syTL7Ni`~-`4adUQw zxH%hAuC+7Hxcy~Vn2!LrHsZgUo3pKbG!uOkUKYGVJ*K8FHiwMUoI8?e>N0xQGAwwL zh{amZLJyADdsetbsaWj7tNz6P%^DY;^HdIZdJlRF?TX&5{Py0xW^aVn#t=ugLY?7Z65UuCv0~qQy}cxDWY3-Nq`6Ap7jI>``(;4 zF-OKOb)J_aqup^I@q#}{;;mQX8WwnH-nILy=WFtgPJAGmZm@m=kGG1+w@n>cwCi`P zdw_m*wXs9a-~)|GFdT6SdNvk*gRkUt5%xUia5xBtH`tZrN*Qgp|=^#Wep@!nZnz>6ap zUKm|)0q@qV@%jb4&e+ka-AoAKok`*+WbTZ@#pQ-QUF~!FN77}VJyvGZ<@s1}C)AJ2 zF2a?f&l>#w6e9}mOYNJJvXY0tko}Cz`5*V=78u@}ih=0XX6h99Eg1dB537H}CKHQG z%smTQV;_O!Tj+cnmh1BEPqeLkI}@=&lW)u%Rl0mv&^H>?Z|6300mY&&J#o|KYrTs0p9;3N&Y5Y)UDJ#;j=WSmo8q;&{G|5S)E1$h{ z`l3(B)Ga)*Zj7^Udo0N#)@n105FWnaWXwm@4N)9=_+VTcO<>z0{h zwTGS+nYSn#LDXq{9W$`y3dy;>)|1eaT*$Qf;epQkZe2Q#|x zHGXsTTs3&FK9rNj5uJ1JX4~$HIofuL()#LVy~a_xSS*nC(y)_HB8O>NdjZrHm=zm- zuI{nqtQs#3#^u8OE)FO;!6}W}kfhe)&8&|DSbNN(%SO zx5UhEJHhxU|^ z$MPRi>W*8H-4gK9l1jhu8)R{k1OL>-Whf2{+(fv zBg39S_Bn~@zxB%XzT2h#(l_Po_$7Mx&04~}|CAf{OMCB z0I~|J7g+egILxvYPB^xJRTS=+j^#gA$w6raSrNWZ`P*f*g$N zodU@v3%5=?(ACVH8esy%EzJ0V>7>}~xMuWeXj}^njrd|dF3jA{B7e*<5;m$>+5pNB z1wtrmd7DGlPTDte(;ILLekc&6$iN*)rL>~@RYXPti&XM zL@?6UToO^iO$@)d77%FO%b2q)Z{x=l){4#Y=g$;Y-?xvyj9=HJFX>2bXx4SqZXk~G z=PgzCC%s5DvSS~_y` zWEm9vPe*o~zI!-8%(J*}av> zS2(k=aw)HLW|QgbaLJ1!Hzqr%mb8We|(kqGXXrQA$!HoJ*- z{iS;f-Wdnjt<;W6&^JuMo_vi9^R4}1HB-rpTv!V$ftmOif8xT%_&*Uzw){8LyJl})eW3}lWx*M3rWs~_kby-^SZM@4o#0BZ-%YF;X zVM}P6Ui|jQIk=?!B7G+7)|kHOI$ZdhcE;qjHK?wAW$*@U^q=_xlrQXHD}XZG_h73rF*)@8P`4kg z=z|ABx?{DHy>KN)Y4dm;3?bUtU{A|wsu zkElw0SRB5Duj7k8fwo9LV`z3Bp?DI0z0rk;Z?!nSmVV<)eOauh9$%Suq{%&yI$QBg ze%+VVrTjecWm6Nx$AJq=kceI$I^|mZ8Q{WGIuB8VUg>a0ERd~kA?UnxXGSVcLGdr^ zGv5f2ZG^Y}^fBq9QX%M6Ecd1O0D;ob;?m>c&k?S<2v@RH%SBDBTBwECIE9jrrZh?@ z){hOPN?qs2f_v(f=PoiCM-ih@;wY0MQSFBVaM(wy*MDRN`y9v&HG;Lk+})q~dRQ}4 zlMUVue8|6fo9rd2`!S`VkXjz+`m+wrA$C;ed?Z8T-yXP+#?=bxO|qZumF{DVxrF@` zswoT_cl=p^e4jf7u=XvB709UCNV`Ae46r85f}n*=#XGtOj9OB~D22a`Z_V5gAM#66 zK8-qV3f~^UTFTe>)c_XmqC4I|TK@S-+^+%iWq3w5V69y9F<2mA8RY}qtOl&TypQi~ zfU#~HzlaB$#rV?(EPzd9+$Rvvwv4x>Cw~5K06m||d>`B$@5%c4ssditfYo!{r&~7` z<^{5P6jva{CG)2UQ)eO^yBPM=qVpjAuzaXsG7kx24dsixXApbE{So#t?$GT+)b%Pp zmSnyth&5BD0DKk1POx@e&6&Zhw(K8^cBLWw1;!7XiKiLpii>lC`GUdf&AGy!n2mz* zB<2w+V&9go+}M((urIrsFSKNVGQ$lwPr}%%PP+7I$JSbgvyN`M9S6|S zR$pZQGn{?K!XEH75iDN5W&S0CO_2?=?$Hv=6K^n(k_q?tu-0sk{1x|pjalk8ll8i! zNzZyd=mc-khP~!J?hY;2$|%rKf+>YGDJI|Hv)Zt`Z1inh%F5ng0e8%MUuSkQJK2>V zj%3~eKcINjI_K^FQPI0VS1hXFk0aT4MhsAIhW|AGZujhq2J;X20g6s~fBe@kP}ptI zMD^eIK*V3H$o~y1(*SfnQZP{msHgxjM8#Y)|9N2g1}vfQktzDl3H$~tm0}SB(EGW8 z$3-!p7U{6k95xM4$}nm`lMH%-&pux9Ci!UHs3N|CzZb=VoB4|nGKHX{x2ja(f<(1Q z7gXut1Eu@?OcYBDvYCN=5#V1v`U@Tv&ARwMx~V6xUF3w^%FVRMwUOXwzBZcGZ(IZ~ zcbq7%4urgE&aCHd^{TjTK&>3Q?jXqGLr5x?@W?bry}Vm{rDeWb`o_?V6?kbT^h zFQz9%cxy-YJ8joW$L)&r#}Rs*uq(y`Z{(H}b|uy56gg4B>`JTAxoUJ#pyPH|2pzZk zS$|xm#|gVK;e5ibyc$(#2)mFc?Cw^R53124ppja7PpY}fndZb!Y(+i(%Rttb#|&bj zo(ab!$<5hLT|~7d1;UhGd{p(q;=y|lX7#u!l{wfgsSJJ%{^HwHS%}@;zg}2Y zQQQr9*lece4Q8rc0KC7Z2M-*K;9)g(M5o%*Ck}B{yeED@-LB8y7!UNkEgsB#?E{{? zuteMO&>^foKQ@>J)H{6y#nVeJNt8OIP)haTlP0oY?l%O{AAj+}QqDV0WIp`RU{;H7 zo671qE`hJRNH>fRp2nIw9w4jbg{3JUHi|XnVQ(|FcDY<-`O*tAtu*9AGgwQ{Jw-3q zr-WMT`1jZ&AQM2;H}eTg5ofyqw;r!ZJcVVVW- zLql1FU2G5z+v*;+c+LtWjVzk4uim49>zS_=rDet0ysoeSsK(N#AAme^~zRNme+N1?^sr+ z4sKifr(nL@23Hs%bj<5j5QFMU(rYfEZI$J3ovawbJUsIbT7y%r17SwT@X!$~vR+cP z3uTjBF2`0`2J2zhj9?D-&Ye(ZS0O7Sn7_|=Xy$+B! z{2KD zX<}FJHV$#?iP5RUK$r-`ny=^Qqj#8V-e~6QnOE)0S{-vtJajbbxp+a9C6Z4aCWKM1 z=TfYuA5s(zHQ~(5uCm$9xNGEnbHL&h`L zI+5_&A7&o-yLhS(efhOi6v*@z^R^rFewC#qmq)SsE>uU<#WsK{)FarA*0pP$TV>f! z_J*$H#ScP#1fS2;lC^5og5gMqG;mdwB|z(_PMNSK;@c$$nO_~xym|XE%+--J@cTcb z?xpqeNnjeOhHn=kiq4ifI&caLE9d z_@64vMl6R^s)+`i1hC$-J=WT{*6RwS)Ik@su%Q@VHho@Y*};p3(r`M2`FXxu9fJCK zAk3p}{OVZr^ZYNXESIz)K#$w0+NU+{aXYI=0u0SgJaZfpxB~JtC0LiQ9mg88rMva! zDBMFGNGmcm2k$kVsrbn-)FB)a@l>1C<1MGN#)c)ZTmTtMq?<+t@d@J*_dqlCnH|$v zLlf%UI06oO-`uTz1VYMmzn)>c~H z>`lm9)HU9IB8ID;*JyALu`58F!>DgH*zH}V`&-4 zSY$}OrjbG18J&Z*-J!S2h3D0sr0+1aO4?*pb0tV0tuNFeK{vsq;^=HFo@$Re{Nu^c zmQ1h`iFNq5L}XftPIdTmA}*jpJnJJ!`#Svlsmz}zPC-?^_|m2-NswryY4(c65dBPd#VxM?cJI;!xM;7;q}SUt}=(VZ|&n8i}dxn^W^$_H76Pmi1G5>bc7wNv1p zxmqlwD_4JZr*WhnkDJCk>{V2GGdDhP8Vj*+4LsU|FD5(^IG`clKaI6<%m-GXBj2VK zsSb6#Qc&|iWdf_JyViWJD$4f_$QeZ5=b_UvSX1lOJGu40RAQ4ReEW1LEoL_1m#0JW z-fhaAX5hK3Igi5A?oca>n<9rCj{+G6=gw{L~r=@IPf{1Ht7Ka|dz zIE@})(dG0Qzn{)RYR`r}mdg00D-~Q9(Rz+sYzj%0PR+SyAfGgowW(b&*kWlxIqT@k zznsY$+rV*DV!5b~ z>HNUkC{Fn#i{%fB$EO||M4E5+uKJ!ra<~<~H{tV{OVm%B^1uv4)(b~=8f)t^NBmZy zbQxceb*>q>9q}=#bRP#79c;J>;Eo$DmfboRHja7mWf|!6VGAslsoKP*jllc@k&SQ$ zy=Fb^#GPkR7PBpu)*QE{)YoQi5|{_sy!|W|XLn@>-&{6@xt1Ue%2;#COr-gv z`7B9R5~A7iaQ`l4Gnf?PEK5l+X)vQUg1sDO8nBa#EIk6g4P*O9X}P2OAdcnX zK3!tdkv$JtnggXjMRn6lk7|FAEENF%Pf^7pD#SrilZve@ifTQc)~Kd5 zk)^vK_$fIU&ldmAl{cY(&7=a zv|_R>eF(gtCL5bSD&L~c)=afbLsZiaqZ$s$(tSipnF`IR$<*lgWvS1n$S4Nn#C7tH z@ZOFep@OazP%%yUdm=U|S)?1$L}^9hU*W(-UQ z;^~ZMBuq<~AQ&GQJDA6CdjNA4<_t_ROd-tfR;<4?3?Lt7KFmTSv<&7`n4e+J!h8#J z5a#8-SXq&_gD1cAN43*kLpTW{E6c-!aL1G)<-wVvq(AbaY6#05%}Z@^7O_ArY5&Ud zSZ9qB!35_5m5b7Q%fhs_ASAk2=iM$)a);!o?A$a$fpNX|^z5x&o*w)a#fxxqLOl9z|SYL3lkrwpMFq9sjv zLg6~bp!rb1#sPzpsF?$AL4r220W(f&=E3 zYb?m%4br)t9vE07U4ub}2r@XBKcg7ifQu1a8^I-k>m|6PU_NjM{PhJlN^pIH`C@Q} znc$3q1LoImvmnwl=nL;!Us2(q^^PsZq9EKHxASE5W$UW!M(l$XKE=)Zwt=U zk|z+i7F>?t*0$s`!5Q7cCFwtcBTUUeOOUkygnQyY!pGsK36rEN;SdplX=Jb80lWdi zi=Ny_VCiipwX)(9*di1-5V()PX;7~Y?;yRU1s(~@OyMvFc)q|BfZrE*3UI!_Gk~`V zoB@1L;7s6C0-Jz;5_rK)K4%y64gC%Fkth`X#m4?y_O|28h~wZ%_O?gxL!NMQc{UC7E6kja9)(u(idjbtWaHqR2= zq}KfAZWa-`26k(9?*YHuRj5l(jMG#6HIgUnfpAiHT`V|Y{>D`jPW0!kg51)UZ-Pfx z>hGroH#Lf1AdZI9zXkVo6t_3C;NgFxzeaS@6Co^1z%V^AZ4xE{Ash)mO%$xiFfb$% zhEOa*8>9-n1bBqNxxnKDUMbpU7VOr-o(F!punEXla%Vjs332=^^5%LR+$6yrkK=4F z3wHNJ*kytvT*P17%bL4x0rZR4gKz1?C&8<$2fV#5IFHVJt;WGV)XK&4?}+P}BuSeE z*AqX}NL(7YLxM{a+%$0K1UD^-57`HQo5B4exXpsQ3hsg6t|swA`VYoJD=w(0LfV5*%aHlt=#H@tXt(Tf+=jmPbWC<_#CSE&63GU_$K9IQMGcnK$?)Xf;7@VOz0~>^b z1LlT1sQtaOu)IT4QG|PEX@xT!pDjrZ1qZB8C(l5>F34xIdD0=Ia>0mUUT_zTd^U0G z=StEN!L6Umw-7gFK15S+Q|9x_#N{rOq`w50yO28_Mo%eu54{%RK$#(&$lD!e4f|{b z)kMXb1G`#R1oi}eOc)JafQI&j#1Jk8ju5y4c)Y+*fIk!1VUjKkH(<94LwwJF3&Ze5 z&;x*{>37Q$)EFzxr!vBnIB{DO0Jc=LY#i~>(P2o<{ErXA!V#}WA4Iqc*L4p<)u9L`J9$AWY?&lewuv~Po* zq`eoUeZRnIy0o`E0lT#pn)Um4t@lEFTftMU1M4f~fgno+Iq*EKxqY2}ft|!FUl*xx z=l(SjPX(sxJ=~yX-Tn-5JOxh?6K=uRonXxk6E4#Rj!pyfp=B5bH(bTMEXWP`F^v+` zNZvK5D+HH!jYoltm{%rAuMX4$6Gqh9+T)Q@v-Ti75Pqmarid;-3U+HHoC2o2F5jP8 z{f;rS9Q!GQ^mu2M>+8IHaFYa=uXBcPz`ZLtVE+DPblXP1qR$8tSg*lQkb49f`m2_E zSKpgh4hYWornVd~^aA%(aKM~DK#V4k0jYX+fc1vo1+t?ccirTFd;6J*34eZq~piwY84)Lkth*Jt2X z3hvom-sf91koSE_Di)mgeLZa8?^wwQF7S806aI{Q{zRff^n?j_0bYQHqd#i{R@gM4 z71PV#+P|S|6k!Ql{m)cu8r+J>zh@<#rqI(O4621DA+%*gfoXMW#S~z_1uuw0^#H)! zc#8Qr`hy5`hHt*SnALCD8rG4NTl}pDCg~}(k@N)ETczo70P~z3s9EyVO^{d`H93tM zTLf-|;1&sP3%GX#w?*Rb!e7(dOqMnZjxc4s5zG#oLI88)F6I+@4j!$!dv%zeJKJGy zjlC>=1)loh8hh^b9WrtR+_!=|V$T!68E%8SAvj>(VJ}HyEm?9Lt_KF@gASr-X^yhg zRgh_p`~t-og=3C$1Q%7C+kcM%xBzx*&e({5=j+U8?L8J5xc6a0UXIXIEH{ikrM;Lk6WMU4Ugh{XocZ8on1pt3N z3A^fe&?r6!>9rgK4#{bMM}bLBZHK}{XcoJT*3$;&L-(N~NZmL^kaOJmZDh!B9Nc2T z0rNW~^`x7mw*snKdk?*YZr~0H&dr10FGJut;L5BKddU3sKN0u}$Y+AQq6hA96PzdB z04PGjRMbW=-=K(usn}Lb{h5@Yk-|T)o_*3H4zot$#mAjP9iOTvOYaKqR6RcKN7k^N zw=8WH)Cyp0TKny4(z0Sot9yVfl?wme1NbwFc4Q#RAh?l%Jmfq$(x^5cqnBZS5FdD+ z`S$G#yS14n0@G||!t|XXa4ztCf%AcP2wVVsRp3Hkm$8UPG;yP`S`&vxgR?gA8enST zOF=a=^8@53WSpL#2SMET0`k}gn%^YB^$FG+ju*0BmEV z2r?js?}ta%;ov3+Zg>oLy@u1nb78l(-dbR4y;8Ks4+56~J58)T?FEG`7u{bn$TtL;+>U!)X2Ah# zJ78EA9N|U43$(tE?lg(_y$r45&Vh(*vZ$Sbd>O*ILPIMh3(k2EKXjS-22X^&i38?X z?BQe(Hb4u4ca1!Ox9SVSAv4 zf`Ze&MU>!X4%cMfZ~)v0!2$Dne_*hpO^wBZTs(rWpun`rQ6RV#llc*F?zG`?LvVy0 z_~R>3KLt*crL<{!+JVz}=+6jF`z7xRZozaugt$_0I|Nrcoi8J98P1uV5!|vF{19<7 z7s`@Fa5ES3`^3@SOT+1+eDCQEOM5Wg1^3~5yeD-J+P8U6a0!d}9O90ETPL_9i}-fp zXpiS>!L`ZOyH+f?^MZ@b)_OKhexENR?l{MnAA&p1`61$HLu$3))_TkjI`IPqr=Z?F6rIv5&c_Ez4=U#`1V1G;cO3;bx_qb9OO=8H)&~RHM5~`6>fx~7R+-?U1ebYOANQ|<8zQ)?hxwLYFuE;--P(TZ zfN6AFiS{@z@CM-8vufI==`4M8>jci)Hd}yS9^D!h%2MmudY*uFE%|7WJp>6X-jG3# z7UbqazUc;vo=_x9M!_W%X|3qd3*3i-BV0I}JC$Qdn+@FL9X+MlMLez?;g=l2*e&NMQcs9{79&@~$9(`EU0zFa#cxCFe{% z?Z9Jv_^(KN3%I6&+j5Mr0B1-#fiemXm|L!}AY(y^EaeN5uyqJKi($+vrp3>do6N)Ilq`8?=>XMX<{b__TJv2Bv=xjiq-nJAtPvBy5ds zs?GEWtVP!HS9r8W7C%>y>=hg3S=<9zDgjTC0rSJR&>vQSyeCLt{yUM*4`s<~p6(M^ z-|_kgWD7xl^iZGEH-L*19I!qT+yvQAkT-?L2jC_M4p>{d85;e8k2eJgtf|)xPeA4i z5?J@y0$+mf5hSoqrhz;qNMQacwDX1xkiQ5LSSNEqJ`p4^#}8tLx2!wArn=q+rlHTa zx}G6WC3vbXU_KPveug8DWU0Xdodniu#?b4rEX4>Cm>(vel}|BN2ojk8ewX<;<$)l* z{E{S1pB`}v_L1oK^w)Tyo`(-?7MDrSW$6p>ln26JFXTh+VXzzy?D4M74}Y$|N@suz z5?sb}U1_iuT$te23a%Jjd%+by*WOeOag~_D1P9FfVN^6Eft)NzV2yO`19F)l`&8;u zkP7Zo!2xSys$tO!=oSSD%SOy8s&z(1U2yROq>|F?MOC8>qxY3?W znk~4|o_x-2aGSy932w6|-vfV!fV$Wa7aXuY{*D1zBFHgyxz`^E+{OzVIf85B#S_38 zynONYf{hju6kz=wx;w~*g6!_gH&NjG;Mxf8zAwK(fh+1W=?%dF^YO<}HIpzmOc3NG zKi=j~csvDezTklQXE)GNgyKAo z;8uk43kYn?4Z{j6N6$22G=%mh(;a|tPy9!?A^gxDJAJ<1Q(*e8JXc`)K)g&~`qI#D ziSD01Abdq&`o^s%VZ6@KN4kz`37t55Pk@O$_7)$`L zDNvH?3%n9I6xbE~df-IC#|7a~k-)COl7xkn7SfDA2L9G=nO}^z;t%Q1WYwS=QQ3GI3W&uI07FBE)uI1r}e2M0B5(iDuPf~OM$e+o<|1$^vv|8zp2mB4f| zpqs#SB4Db(bP`~Nz;ps&r@+NVSjvTkw)}l+>5F;<(jtkj|ogW`afFz z;ML@gz_fwy;h@Ju8~3pSub+z-Re@=vehaXXN=!TScQpr-wi{n5JkgX8?x;sZ+u?%* zrfu-|1g0%)x-^L5p{?tU0@IfDE`e#Q`l!IPMSW9XY)2cVXTm~T(hg2~M6?s#LSWi} zjsvFB)827E!PB1cOu^G$agN|=k9ecNv^RXs>SqHsvIVBS-jLdq7OICfd53BiNILKe zfoaorH!vkko3%FtPn)!!&N@$W|qLTx4Bhd+S0rsFl}XeyXqO5SB5SsFl{>y7MQjh z(*-utKI2khq3y+u0@JSIQGsbUu|iOb3B!8)ksOwEHq$$3|_dg$oDTQYjRec2a%?ruL&9l-gc; z0<>MyQefH^86Yrihb$JDwn26aOj{7=1*WZs#{$!qL&JJv{HMK!KK1kjXpdozz_hnu z7MS)Fo(N2P2?5@^f7(OnDlqLGj1`#n46+5Lt%A=rY?5e;ph)1`Mp(*(g|-C#7MQjI zoPG2JNLAlZVA9aH6_~z&ND`Pd^0Ndc?fZNUBQa>)R|`y<_MO5HX~RzeYvVtuy>AK! zQg^%h>Isu(J3?U6VD}T4G}k6zY8uj5e`K1ttY*od$ZOq~L5J@Mz$8fj0vW5t!7NZwpK+ z%TEO+mF0H=8%bCBTv$j)=^LmgK&r_ofk`7dN?=k%E(E5UApK*$)erDBfl1%!6QsvO zs>Nu5No_b>U{VP#4-(^l+9`B1;XpdS>jIN*&pB9+h*Wy*1SVD9P=QH>mn$%-?hXn} zD!V%Zld8_Up&k!u=z0k3dBup4$m(!amevYPDz+m6llts0fk`zM(nybp6k9_DCLPrR zfk`#BO<>YU9Tk`qQI`ZJ1=M}QNM9nwlhRm^loU>W0+XKUb%9B})I(s>Dvc1Blu5G$ zCLPlI0+Z@!tH7iY`d(mC1l<*w^gl+gCVIl8_el_#R5pDDCY8-7fk{;}Lts+T%mXGl zAl1x=f+v;CR|1nJ=B&V^fVm<3lj22bs)aR5q;QGSEfVQji~^H-Wi2obAf#0(5O^SP zvG7AmlxKn`MuD)9>f!`2RVk?~ zZU~+<6_r*D1%-2n?uQf;9f2ufQbIW- zV0b1lDHc4N>j{uPAsm=8M|y-e1W!7Hw}@x@2O1v=Odn_*Ago};`x?HDApgMlP))id zFupc3N)LpEz89k}OUaXWCw$Q%u=dFoFhxYlhw%cF@?o36q(+*yE zxE?3%;JroI0X2>7{As`e&L-{StekKf|6!r8wbqk^D?WIc0Vx$&N=L2*js^Zf;56Xd z0_OwQiqOLr0yh#^!dF4j0tW*35jYKalE9{!MkXzW#nqsHM)ZNe^cm55D?Wh_?*yjL zh>8TJ&xp~pr!7+jrcYZk1YQaJp1^cUd%3`CfIk#CAJ}+ASm<~~nZR3tD+MM! zUG3JQhJK?@6m?8$x@H2Cnl4;mQq#2sMsL;r-U2q%LG6NhPhd$_q1>Y5@8HPu~=|i1I7-MBc)cQ`g8~oe` zv$k3bX?>%%4feIcO>JKiu4W4X+O*VL$j^nh- z`N+oMGaLMs4L)pxPubv${JJa3@yLdfqHD_Js$)&aylilY4Q_9P6Krr#8{AjNwMfuM z+VC@VOdmVq3lSTKc{VuP2CuNeAKTz{Huwv^&VVv~Z9^Tk!Qa~8b2j*j4gS>z)5QH% zEyRou!#7s|`i0MfaFFm_s0N;mas{S-OPY^_=crFpoHR8EdJP(NHDe=4_o_EEw zQalf$`u?L;p=3gJX=XL-AHjSKL%Q@&VAjHXS_>m^KEOJd^)MS?Hp1X9b`zeT!EA>4 z9A*p57cg64w!v(N`4Xl8W(N#~*@@?Fm_0CNn7uIjVZMer0CNcDFias#5e!X~vAn=t z@#d%S9}Qozyxd($H6=&+=ICf^E=D~n1?W06qyL^ z_XM`5FwbC~!&Jh&fYE#uz(ziHft7l zpP;nnpRBh(!GnU7eU1@hr+1z7#*|T$_`^T!L$U2??^gTuw?@tAG}`(&kF z-V{Z3P8^j!ZS3?JV@D7>_mO>F-ttd-A8y)U{{e5m(S8}XY_xab9-Hjj@?Rg>hjEW- zil;esll?V=b9H><#*O3GTPgM2B9KB&ggTpGPRdnkv%I7BE^ORb-g}pQ-MoGF4SC8g zdv`vhjndHEaG!ltEwfL1r8lbz>yB3jv)Uq9 zIFjLWeQWhMUzn)$k^e6$&Wwt4k!vbVp22&2*XquPKDKYh3m&7$)(Wi4mv>g`@SX#d zPUeDX$_oeAe;06>xof8K!pZf&6p*8U6F8h}b7P5pAP;q}b%uwHQS5lPEXBY}TPk+u z7mJjK_WzGsD3H(dt<}#w7Z=NGL6V+ zw?txdmkf5u%2qaIIxE7Sdbg)Z4XpM*M)%)tJp7JNy~1+~l-bN%=FU5mQ08^U9J52o zW6b3#Klhcgi6vL?%w0+VOD^YYb}1n&rGl62Qg(W!R7}8#n%hyj7!!+Xkfkd{!{Ik~ zHzI-G!re+RbG>CQ->vw{zHX-znahBfe2GQkjjvL22#6deMMiFnDd65_MD9L{N1742 zds{xztgK~D-ez^L;%kpoI$(2bZZ|2`6!-Vuc4?i$io6kf>qE+L%30WKJ8xcaNZC)> zns8W|Mr7GxB_cSv{BG?r&0gdWnpBDQc#$^lex`qEub9|QVJBCoR21z^E;qL>RIc0A zkzedK86}67^RYp{R&q#`Uu@+0S$6)4{9*ww%(C<2BabTsV0)Dp9#?!lC^W@gl%6+2Jz6nqe0QlbQVRJJ2~)PQP-uB@OO_FmMBjZ*&_1; zCzbW=={=tIjj}BC$bHIJzEH z>i4a3T9GS@_}y=n#q4i8o^eVEY5#a%^g1arQGUEU(^x+vG7T>Z<&^WsMaa2q+;}G= zvQX7>5AL8Sb!+2)?!eFAOL^HTrG8LYP{*)J&Dt+xA zb_9Oa9C$|YRoVR=Jmx%_>yK@wIkw_*e=whNp1R0go_`)0y9a+4lyU4~I^TRjxg3)G zfLbN1ey0p{DTkFomfXy1tumq^BKOuwjS7R4AKiUbnwBWvy>8z6qjFUy!C!Jo>C0|A z^72bcQ~wsIoX!o5l9Mt1hYS+0METwe2A+HkUAbZv&$y<|QbF0#g!1lvnn1sdJ)y=CNs*1S$8Lk~u1Ec~M3&YU!N{!1}1 zxe-r(f-d~cEv`OQF8H2&_`%P}=?h6Uy<^*UCol0wPnBrYU)VD=;mL_S?U{1Osbm|f z+%His*~ptcSAtzj=ITOTG8SAq@BbWieS9;IJ)^!-OD=hZMjJlmjOwGvB@R670Yv}O zb0vr!JI^Z-Jouyw6~A2|s^CcSlcTqiE3576Q>3HWDJqYxRFYW9L%yU^325_85q7!M zWF@dovg8((ndaRqbB?cPqWsP0;2omZpv3=nL)WZSA|{=5pjm<9KRnD*oS9WWqrqE} z0x8g>Fi|dE4GA=59&VnIc@89w*8uj~`sOoXTq04N`nGi+8V5 z0*og*RtA>lR>oH3R;E2c`X$#Z10UGh&%9(Ws1{!fJc(m+T#D>{$V=?enwBA z+P$bIL6kr~v7^SF56N%I~hdWyKQs>4vnU)pR zEhB5tn;9L-B$g-_tyOht}gE{s{yPqpJ(71S{Sr4sH*haBPkV@K!;os!Ky;HT#MwLdlWyXWJwFmttxAl zYl#iZ#fb8V7t3lJ*CWeIv8<>Jq)IrxkUKE7O+fP9-(94L-^anUfaxYhK-306yyZms z$Qh37x+7TeX`ai};NarVD+5ufv3t?-Wr(AAHN~adACNtppJQs2M{$pr_;x%{QRBRh z?A2;*ou!!K&uT|veW*9DR8X#>Rs2ImP4Ybwsri{}DTJR|fjP53)_TKIG4eyZA& z6&3Ias_M%QcI1mxH6WyLAx5KflZTt67zv9VGgeTA66;{<6o$2042IfBsw33b1751C z-_iV$Z>J`VE^JNd9a?8unK?_F>1#z5;tKb!hcyUbyLKl^SXeduG2^$4;`xvL~o0&w(qX7SCIQgzSlvGqx32r)SjUSO0_zb zEsLlQXt;|G#M}4qQ%-uG-D<0S z+5TO8Ol`;>%CM%kdWfE>&Zsj?)S1p|7uk&$JFD&4u47zvQQJg(J(Xq-$`)o>hqh?1 zLdWFFlfn9=N^Y5s%BFT$2N$sv@1m}VW`c`4r^&v#nOT2e^xZeB<)>2J*tM2&^z||m z)*xR)OzHh1QQqai-CU9Mo)H&zdCMF-wsE1 zH@m85nfW@;G@uxJCh`J<>KnTIA^C~Q$C~ zqMDx=R41A38NgL{H7aSBwsa-=>{rJjh9W@(fl+g5HMTn(kw}pyDGZ}gY-FKy1sU(5 zNBq_9e?`2=og&_KlCSho+xPscYcwM5kl!h+Fgm$Bx{Ov&Uu~p7NT3n$NfEiWXxAg( zxtq8|d8dDM#9*s1zO!C%3prY7u1En9XiF&`b4gl3cEjjRjrB zb1HX?ge9c1Ew}ZC$JVFR2Uv+wc9;|F%!K z$y@cRF2lBadOo(-wF>n9>z1v089q4REyu_Y>ftV*;){E$wmjqqeAR#^TbFBf zyhdvaj0azYAAM@A-!E3_dHdpEUVU`=O|y9C`ly=EcVozjtsZhPg!4u9)p@?3uS3zj zDLII@RRT?k^5?60BR@4EVvEhtL&M{i>or4*We_es;}4QLDptQ z6|K~(XhS7;^H)dIZPpI8a1v5Sr7UtxE-wmBX<=UEuR5u0{Q$l)2z@&)-&_);R>>^i z&Ro(^jgZ-fj^@fn>TNp~cg|c9q8?`MbQC|*Z;qrSk8p@dl=EKWdtX(X%FTG$tC0Ow z_wqv31mD%?P3e$ddb>19mPC2=F?~h7YAH_(RU7)GcEfGi#$TU{_nXz(k!i8$fvfNe z9;!BBotE%odajcBT|7NH6?U^!ooeu0Qu^JXH{X>fd83wU6W>k`z^^nuy>y{p8QzQ) zh2FVR;hxP$wp1I|^@DT&eu33a{o#ZpTB@(h-OcA(syKm?ch4LauC7Bde!U^-ti5$`K_`&lvy z&qO@&e)ziT>$_xFW@i0a9p|w{et3uJm+uf`yuuLAlCI_ruS2|?vVYd=B>Oyn(pHU@ zGkNPMjI(%2a)?%$%oY}zonzF$WCrO`+pD3j$rY$fgm534r&MCjjY`}r~{D(-`qisVhe8Z@(!4L7PRG!V$~sR z{#f&ZSoMg^jOTb_95M+d%gQ*_OD3?jlX_WZb4Kw+@oI=y=lpJ#tLGsLolUbO2VEBC zH0CAoY7^Ja=is(lub!+k=E`{Wti99B7g;ynL4D19Y`)lC-J`I#v&^}@)I&0x`U&sV zM{OxPa8n=Ei%m`8ANEn3<0tNm`>0V(rre`9&B!!2$j6lHz>84Nr>Os!b|K-7Bo8y5 znj5{Te&@j6ddeRSQjPKy^Ndv0!@+fEe4@n4vqlU;!b97dSB_NkWHxvmZ!ua;a2h-S zF_k3BgL|7ZN2A7FQ+uF1fgl$p%BdaslDE`g*HnMKl~V1%x$^^WsY&*Oj^P#1S-b)c z+CZ;>o;+p@mdQiM@EK!Ju|wPOf-!0nuR)_QhhcV9DiY;E1JF6sGUqqU$SYAi^Tw+7 ztp7poFjh@)9i&Z%(eKPDqxq7jj#Y0O2aT-^yohB8y^PS3bg&~0H8u9sr!U!W)!0kn zKlRc}_LDX7Y3}=8vVUGDP30KI%r22!*22&?V0Ub2s^v1S*f$75Y?9!0JBeR!xGG;X#*b+$q69Cu`g_`@Wj^HT&l^ z@t4|BfYrQsJi5m~Z>~;IU-yrUnx5jPt$6xiu@aurXwLlqWX##{MMk3Z)91YZ1iZ}j z*A^)Aeo1K!QQ8dsU28Gg7ef#%k%dxhv45(twVL8Pi<9OEd(`JCYKK zIj04s$VX08-$3`-H4$CC-!|?x37spF$4Oo^zNFdf*GO$|GeTQJIz+|ZQkEU+d+#A1Qp9VuPMdJ3De5?qg zf05*tCN1I#nL}?}04H&`$*La@oS{0}`Im&w9g81uQ5$)`*|_B=$m~H$MP^GVLgO#b zGor8ZaWm8walO}R$s?QA&VXzLBKfDt#!K%Fz3b{(>y`EYDQmH7rT-yoeSH4+SqtI$ z>8gEVujT)g|6baQ67q=G4=q10^?_b8riH&6Y^=cu~m2YyaMB zuf6wLYp*L>3^SK-^KZq7=q!J%9&VZi>Y)R|w2x|)mX9tfZQ3?3tAy8`@C&1V7QXcl z;voFihj`xle(74h=(V5=r-<$@nt^wL%?N zc-!;hE4|HjK^&7X2|wpz7-;4dg<^rrxq9%5Bjrk~buFMssL!U-wAG-_)rulN$xLCz zEYxaL6cXTv!Rf)8w^)LF6a{UI4ssnf1eNS$pjh!B#Vt7uD&L8%=zMHe5C`yb51h2s z7O|Ata!_#;vt3)yVgbvzw%#v%^tCRJd1wQVSs{`-uR42$7_DyO3SSV@1;gZw>Y5kDzJkH;V0E2S ztQ5G(CH?}7MuAIA@?+j*ywW9p+~@W%qDg353PG1C)g`j{G%{)Ctwo4@kk4I>L&JTO zdFg5ta$hj_tQO;Fb6GlHn$M@N5l0#NN}h}97gLj`#zD0Ik2g{6LgVdL+5 z|7zi*tIgv}=dl2X^8Mwa31GpD2~aAS=v-4bfr(lEJwDhtf&XcP7}E2`m1E#p*lpT* z^Y6rH*Z09iDa1TaQndnHuR$Ni3>G>iTm2O!8SNsnEsACdu7+tr>n4Ikf4qY@Lc`lo zae&F7xx#4>NkF!ZCF2;eFFU>EgQ6!`0EvWj1|1~B9x*%JGS-=H2ufO@w8*_srrZSO z+IB+;GFvZCW6YV}kmXDtT3}6Qf(#mm2FI3VL(>q3dNP36C?@G}Xd7siVcCY34}Puy z%)OSk8d=X-hp}2w7oodoUOAK-ue)nl&tvVlxwDv`WJ0+pIl_tPik3;oqfO8`Aa$^u?Fn0q`_lqvRRKGm9i%MjA4%tN*zdsI)3sI zy4t|T(>G>^wGJA3+cp-U$W5gyfBSeL&)gu!aC?au$^UDE*qd)&Dh2bs8^rL$>-*P@ zXCcWiVztA{mt!%ey52;`mU+X9Rxz{e09|3Fvu*FFTJ^BFRgao>SfdCM$I0Os*M%TGm~~k{WCl5$|MB-?r0XrE z1&xbMx3L&xLBe9{=@1&mk!6T#Q%gto9mT}n(OT1AX;!Gxx^XS4KsQR+_c>Vo=fvut z*JsN<%$A$Uot!aiWxq*$U9H<72VT zy0MZz3MnzWep8->Da5o{QHsT1ex9aE%Mg|Fzhb6MZ-bl`gC+a10E9(~FJnqMC-p0| zicFw1c6LoY&TM**1)A_rB%NekKWe$*0zds<;y~9an971uop0IW5&Ne67&8@(Ll35d zx%;yO?1w{L21C%gLd=TDV}&^jjH!e}*HvUs#c6)((I7WW?ujX&WhGAkqw%PTiMHd` zT4pWBUJz_IG19^UB9~zHz5Z>G>vKHCUlqDefN<^X#ztkk36#L>D-SluI|nt#lkf{G zg0-3D$2PNHj;{-bV7Ughhak=eCIV&x%;W!jAc@7hDmVnaUu#>zn+d5TI zs1dX&z>KUx16*ng-hQiVo|mBq^m#6{tMhyo<~hdU=cZwj0rT9X&vWnyWIA``Yarcm zphp|=4HhI%rDxolJ%1yt|n7bia@J{U3;Q zFt=BIbqEyOED&*!&X%S%rnC)1d5yRKQW~OeGq$mvG?{%Svi*~*+C(m}fl@G;F*P!g ziJ50Dm1g^alz78$rBK&Zf3-i4{-E{eztNw0=+Euy%(WFEfzQkh^Uyf$!?axZW+5%y zXWzs3evDg?Hg0u+D&B;6CKdk|SRN}`vq{Kr7sjszQKdN7`4Er<3UVLetJaAjq2Ha? z$VAD5B*}y+TBS}=Oi5n)Jh;q~wPL_RtQ^kmSi&$VNs;Qj)ip8mR`#D%xY7#EPtK!V z6BNr>hQ5rYs7q8HPD>bNgT@ss7AdyRvQM z7T)J2F>=svK`vlV$VLDOm^LAN{mUNTW7d^ohb;}Ab7dnfKUm1_o@kda(P;T;zf+hK z-8s<=3E2)zG{=uYZ{u(}@(m&@gBj^Nmm{l6reKpvHf-Y?UJ-*`>7dJ=M3;4#l?Lzu zp^o-}>dJ{o-E`SCCZz0VXy_W}ZaWS^W2R<)XnrOMA zWsCNX>ISbGOIH1Z>XNlG0ZM#T&ENuD|uZuQ%+x*(&MZ90d zD)tg}v|lrPUj;-?VWHVaV-uZW{|us?&-k}k%Br^^h7m^03xe_!8w$VUL{h7E5pdKB zZr&5sU65@LsGg>`Zysxql=TyIU@;<~NpyGkTl}|rj=r&>PloN;~hF4*4 zR`L+yVcS(6%L29{oMd7K+%OdO#$n=2V}^95)LC~S&tfK^BB8Eg4=oyHvtaPCs{N3w zFxdu|qYaZ1?7{=;>Du{QbSKV4r2fSOE1}f}T_#~1nDt9$q|L~tCqaKlU^((7Gvwif zVpUkrBv@)B&1D96n7Z*au1q$>@5M5S$LO95SUS?Ce@4ryp(;{+Ozye3gyVw{fuN_S z8!e;SyX07EsWS{c;*LbOCijhZKF z!mus8?oDyvptp!OgK;8j%r8}wRy3c9e+9Kyi)G?d_@TyJL@JPUHt3lp`&Ob!j1{uCe&z36p~*LRSnk2z6tQ1o4#ZLz+p}e6{?GOi1C6U zW^eUAH-vgFmI4y4^J57fLr$I^&P6y;4<}-?)uxB7fM@986ol=1*oJVX9?n2GOAp%- z&ep@323DaT{Gvm3Fu5fHB?8K(lAEEf@6)4Dg69$TH=LWSe-FaBBQ*o^b@8@nc+>Y=T?%630N?U4OIK_m| zWyo@vmi?3$^z4&(*e-EU@Ni@?(4q7>t7l~-Wc6XfXu-J1>-DKM5Gt$%nU zKetQ#m5|3X-Vq0DBm^d8+Bldoos|ARA|GZ+vGq|61N>+zg0BAmP$#E}zxD@lc+a{s znrJF~H$VLckaze99$NvOX83S!uYejL>)C0R9b-WK0Un1y@M^%wvH^qg;~-&yi2f+La3ulBN=wp?Wg1&EKi*ZZsG}3-1)`K(48*evQIjLPr8lwq}zvd zf={|VBgdf!uso?(5q%QQz9(S~68iZhe2!=DK^x4Z)(hdDI#J@U?-2tHr=xh~9`Oy` zy0vySIwb2);)}y%b#owueEJ(S07seth&!O)J~0g6hVJh}XI}d=G=j&j5!$_-J*6_R zU9JR&a_m!{@@GiWj_u+Fe-_8P2B_y}O=28Uj_hHxJV50#U|5h5u`tg(agk?&NGq%0 zSt;gg+M2u+-_dfuyb2XQ`V6nA65}HJt6DFu!UI-l749EMg;0jPrAiE)5)!Uf zPC@0iVO+`-y>k6exV}W?+?|yhFr>S31Ey+~3*LKIUJ(Nh-?8RiN zUCgWYVyZcL-Ci-&HFKVxEp{0F=W8nbV5%w<7eO~XPnfrQQq7w^tITCuUk>Q)i2&>g zh=)7jHZwGG{cqX@tvV2}pfBmC>jV-{`q{P%>gqfZecsii=_E&d#FewuyQzg!h2$9&xds_U(jNn z{hl~_yg3*Pc_~Rm6gi|+X)xoY92Bl~Aeq<%?e$E+c+F$#g6>-PRiS4k-9kWq9^~hG z_!&Je>JhZeDx=OAU#kb&EY#mF^xL3yeBYathng4CH>WqmqTYdb!RAt@2X(0V>1C>A zUCNQKdwYD}oZb}IJkdmPR03A>dYCdrhG1IF*Z<8%tC3RGNc+{y35U#7xGRJbZ~F;+ zl?q>r%BJy(eITg5u(8;OonBBHx9%6CjX7=B52w`ey#2s=&-0S~SR(rE^}*Hi7T}ED z$#f#)wn}jTfAD?LB4qHYAgRCM`~7_B`{FNxFUmX22YeVHb{~doyy<;p+mXo4)uJ-f z?C`cvmv;m%g;|PS+crED0=6Y~vn`=q=aY1T5=$cySBr1eayKUxAlD~wCcr+7nO){B1fC19)SWlm&n*W5UIehw2fUVN5qLSkJ$%4W4-nW1 zu*nBJgjXGeY1%`jfctmBy~<7Apu%a9=;;GL!OefA__PT0@_}#RHWhvx@Bkn9VqT!a z&jH@s2R??oRd@s7eSF{&uLC^#p=O8o_Ujl=XUSiC>Zff(P*BAW4A*j7!lvR`6TqiKw*>aYF zw-rx{Lzx=IgKETN*K94@Uh`#FV1Pc}*)ql&?4t*c>md#$^O_INs^d(~1%nDT{ET(- zlSm7(HxI)UU{gqgaWV)o;sh}Vi$T|_DK+{ zCom#Gn2tZM#h(V-P&NL3#4+pq?zA4i7viUAebIBRXJTNi=gGj~)*XQfNNe`2%Em5! z&Sh&4m0R}&lR7L$kL{V(8IcZK9%ptlMMlJOU$_R#4cB@OKgd*hSd579zt$P2vk-@( znm=GQ@IT9&4vRzMp17h_$iFMU&bV5I=FZdd^e^Jp4?ukWG%DEX%&gVnGkN|8;!Dxr zjL-#B=V>pfN?vGt4h1J|&mGE@)7*RndNboZo^k{x8pf$S?+CV?#$jAm-~QZ9Z|Ms6 z91#ZzFjGDvrcZn7wnhMba6)L)b`}tVO)!qthFuh|)D;N(0*2$*!kb#UUTp|pk-x+- z-mM-ksXH$KhBdy|1zbG}qHeGY#x0;8JGPOc+z)aVBnXfd7E}}&C_0qjQ@r39%=zUF zd_CTA!i`Nw0!8^qpb6xWDenl(!a6PBt$sU{$BE2rc0st!>yC+|hxT8rHz)=L`|A}8 za3~8px+^s`h{qlm<6J_{CM_S}SD)!lw?MZd=~;zzIV5rFcuQKuM;Ngl>z zkwf_}we!#+D0jg#TDinf7R>iak8z&A5%o3M1$NuY&mI?}hDPo6DOeR`q;2mRhJ?L+ z67J+7C&aiuY%wYvpp76~!Lv??sYCNW?M^>`rB<-NjDnW=q_5-qPKd(-nQ{sln87t@ z#{@3JzdIpLP1@F-L*98U2U9(G*{SXvrinOfRG?%S*(mc#?d(wY?&Sp^iUY?nC0yMQ zGB4ddvuhcUBFlRdnW!hJwCyI)YTja>3}bMeRO~-(?+v~1#Cy{2M*JaqWk8&H1AWqB z9PYF^l($DXw_^T4tLIRjyv;3t6C)mZTiR5_+(h(C7s~9TOPawh>>hVQfU+FhCw5X` z?snD|+s;@Bwl^5BCwJkLSc7yGluj>4z<#XQx@+1ZUivrjkMa{-h7Sk;k4w z`ni`u_vOGh0AJUQcbNEk6<-AW1mGKiulK#x?oj4_3Vajr4L^|M)@R zp98)b_$D9xQhq?i=KvoFd<*a`KKS*xIg9jjZeT9%0lpRZHXnQ?msR`*;HLuLwy6k< zvc@35-yElTqlzC!YZUP9z?*#V?c9DE`OiK9d=c=+fj4*KGedZ#iU&WP6At`I;6r@y zR&G9n^tl}lW%fbfPXll9!DsX3Djw3G**TaQ4ER_d{BmBe;>S3Y+#5)L0r&(T{AQl= zu{iCKS!aRYfXzWC^F!M*_sN&Q+m14<_p|l_{|sH)C84-#E&<6Y6b+!=H;a&`wKGqm zTckb5>pvF9_MA19)*y%SSrHHUhq$2cr;;|;{-fR`hV=I#H0`SZK(LdBuWILNg_oaLzuhS#X*CMCHb?!<0}b{Vff3=?5mtrQ2yf8C0>VXl*nseJdf3n2gS9LH-~`V;2TPU~jlq3@RWT2% z;=<`x^#2AFrkyNg1Qt%uMf^{7{31KMJYQ#uVLEI%(#%GjE!I40Oc0b8EviHVh0@_L z-uWxsSxcXhh{No6$!>UYF+c$Z%~TP;c}^VFzqOV)n{~eMXFb6(M7HCGwm3Gr^*MR| zIP7k+Hf$;%Te7KqK!)}`vj{uR3>cYA=9|xp@iV@MF<`I7R(U8|{{2)nzr0=x$xZ^_ z1NHAkkXV$EoE0z_kM?@X3a*MUj6r*u(d%dNw%~n=oBt&ajmT~~^_Iq=SFt_?P9|(l zvM^yhMh(KgOrHHOkX_DtF8>P`y)yX8f5BYT9>&H07XL~DHP3$o4b!M*`fkQKvtE43 zaP=Th_!MW!t1EcHr!bwu&d2;2?$&A7aoa(69q#;)X0~a3oiJ`ViYeu`&&1HN-+rO> zdHZ_mB0KwbL-wj3UbVYW9el4WfGsQuq!xOZAv?mD3fKx>`Wc;NTWZ(k6!Qb0i4m^v zmQhzsut0e8mUgesvm|FTggdMq1~=_C6S}5(f;BGt|9#V5C#GE zzKHj3;FjUN*P1r~U49Msey)vq7CXF67sq<24399*+AhnbrNY?boeSMZy;eVFBIL>F z#~9E1T;S&sT6z38g?2vx zc-!adO+DKM@RVyq_@WEA*w=i9*IW?erhRjx#E(5s^-}8uAupY7uD!`dV>cC`);B#z zy{Pfs(f7tfDAA-qp$uhnfY-xNM;1n%T?@4cPxwNN9u4UYXx^8c-#VP zQlOkx(=}-6C=P_njl3A?aC-DjN4V?km|7n9d;u{t;?*PGg1h5U{?{!ZY5Bjd<*!)o z&cAsedE)p;^~9lAo_*HNzTORD@>97F%0WH1`jlP9=l)xK)^MdaKmBiUXlm1WjS!kZ zBt!^Tp2IVLf@M;|uM9FfIq@+w5k+a**v5@fV;iX6AczYH*PkTfPxw;oAN_5hMgv!d zA#L!g!LJmq%GjhC^Fa0Q@P2ZN=YJ`V8jH=Oa;hJNyl7VjZS zvl490P4OJw3lOR_VD2|A;RzST=x3+b*;!LLcB{nbw@!4!P~hxTOwqt(g*?Hj*x=(&h< zX46#Oa8aDnKc|UE1NE|5cTI1glNp`Lc*-U5i9X+)p?-FF&tAc^jaOU}M;oWNJG`Gk zKyyhfP)?&ucK3a{du1hr4GQp3fXSW{PowJiCHi@Gj z`Qir7Gx^tRZ@oaPuF?RzZFcdC<}?N0u+U-+%V18{j}#ra46qaB%+%^ZT#vCMJsZxFF{pYg$ows~rVShT@NaQmhaE2VbY$C3)Rc_AgOG!6ir}1n=r-Er zmt=wA{1H}xrxH&Uo_!l93i)^+z*B?Av+0PCh{p=}BD|O4DZsOQ(-HsTO-F)D@KiuG zSqkb9h()L>$w;UuCq4;!#o&NMD(WJI5QkE&l2Ot`Arl$UliR7QOmYdin|8yDY&Uob zR-Rox)c;;1cP}202JPbAT_|}Cp_Bp&KuTTjDOG5G1Z9)jt3{?aJ zz6JzbN$LlO_tX{cz6$lk)orzhg%DEe)A4~sOQhTfX@Tp^ILRBX;&$}Eb5xO&_vA7j z)+{=NTAtr54$j$D>JpaAPX<>&nn}h=P@4*gx?mA%Q^Bf-7s)$>f=;!mjE?G7n+nA^ zKU8$8P3_DX&RbwXKS0%!3SrhGLTpl`e+lVH?d;drc-S@ZccD+6BFZRr`4@vaGCQ@T zSl6+kyG9yPJ6ki1&;1S>($BF)_zpaE)fRr?J27?2jCzZxYec<&KdciNDJXS~XmABA zxFmT;a0T_Cwhm3%3}JM)X4CukwLI^-IAHdfd!ms{yjzdy{rhyE?EQ!iN+T)z_AU3M zBbj-(T;KcmU^wd$2Sm-gCmN|qyY&s;Q(tgXi>m5{nlyF%j3$ToxNa0NqYdG3wE+ts zwjdlx1VrDO#Qb6Fnu|)iD*W^wYt;{JEx5kCFiBtO>WRe2TG!5=isCIT;_vR!x`y-e z8)A~->Z10!}3w~GKgUVNKnWog7EC@d=a;Q4?~r{`+4d2a39jR zn_NW5Y0P@+uh?On`(8|s`vkj8@G@CFju20?+1a^gXg(tEhF`g5OdYu6p!l{Q#PreU zeOy%#pE|#*-9p=AaucC`<7#;4H|}n;^J`xVm->%C|4jE4ZWTPw^=1Ps-B`>$(I?*% zZw${0$JrId$FyQ?{A4%JYK7F$&o3Vo%YeK7c^l0E3;L(Jcz9BUFwYZ$ z#j{F?IffhVu(XOr^PcmC0~QC^d^H}$M_lMaDcrtuxPP+b7A#WF!69=;Ha)B8;{dvHDpx}P-Jh%Nv z93OF3SAOCS7dv|qjlemlZUu2QRl)7Kg%x|P91&cCHR5jlHak0_OBqbccXoCIB?BWg zBfOVr4q2(E&#tV5Aw1|7)a);u!dpYSdx*q-uP8!?#7D5p^B+=7sWht7>*um&SA3uyn52!sWJZHG9u( z-BtWYxwcY#OjQLbemu(aL~yAmHF&*eRq$q2&Ccqkdm;c+)$BT))a zj|IAPNgFqZ(to;o8B$@Q9N}NAn5TNH@jown$d`6S4gZw@lVnkf2JHvuz?uhp)}nC2Rns}9@=(*$|KPeR$u5j zeiR=c7-CIhS&;VF+N0R$_H;Z8;n0YEe1aeUQ5-B}^QIp`8UL8a!|sUVjR(m$hKKH^ zh47Yhej*P$A_nqxcf<&xfLGwv=hO{iz&&_s1%&f} zc5!Un!*05;vc}6QRcn5j(P*cQ0k^gHsT{Nmn`QV=TiPz(Kk5waHi!*jA%;pNZY?cp zI$MG=AnrMJa>=Bjdia1t8HR3c7k_OywTxRkKt`va^y&bI279aMfPzjFJWw9ksE}de zKI$Tb$&gXxjUD3i163^!mf#==-mRS+(9ZrghA;QxYVvYk=LMtua1U?y!nUqMtM`Ym zbBiJl@K4e|S8yABuFyYc^E~?0Tr;o_lenyi3qtRotYvRTOYZN~ZK=98-mYNZck0tE z7Aekf;@Xx>dev?zq}P@$JEhO4MY140HRog?b+$tpGTEWz&vR~p+#g3yd=JyBUW0JB z-b(_lTTnjDbto~As}GT&V>%8UlaE~84t+$-2s~G~%^-yuN!D*K;dut>i9UlNdSQvl zZkp7`a0)j_qh058@enD>V#2jD16mOd>>e5WPKPo$4T`c0xHnlTFJRzNM>kSj*rrxt zWD|hDsHep!4n9xue9~Wltk~>Oq9IES*y@RdOVJ~&F}ao%SoumnDPB0kEB&Nj8%})6 zEus`^INzJ6(0k%po-0bxakV30`&tD>+dgc|+Mr--cPL>K@K(Pa${;$S+3c)#4C%_E z`G=xp9(ulT6DL$A9L;dRHF9qoQ1hjR=lJ4T8cI)Y(zKYuBlOE&TvEG_zB&CvP z4Bsh9(L)=q`6N`&>Cl^D>O@WTNw||YOVZ%r`C7e?l+!tY#@5b`?B_8?DRpRUaCbJA zgIf9ir4Gfi$0wUQUSgC6`w!8xk@!BN^vCpPeKc>8`fk*;*`Y-4?M_O1vpa6^t-0z^ z?mbP|xv5rcs(mZx0C)G0BKj=Y=qv*{!_psV=ke2k^E4}92R;8y_e1l~u@G7WAsRs3w=gMlvw-bc*>HC1d+ zq#p#8VAx*ZOMv%Lvp5p?dKJGB`02o}2i`}`;>hAHDjrjI&=ufIf$vh8K#jDNXZJ$> zp{Iaf3;br_ZTdKnnrS^hpyC$;9|inY;O##6N*)$K=>>-pdKmaJ;In-2r@2h{f!lze z4ZIupTpxTpZ&dL~4rSm?;PZjc>&8P(W$%sjA?JbL2>epu^L_AEUa8`j0Y3ux0^kdL z@Y!%ZM(KMyl#o-v?*zWk2fv&zC;Wijz%K?~2442TZ|3#DKQaL9GeiK}@%Z3;)Kmk8 zIFtbw$tee!%&F>}m%b{bn}JZT-9(-xo$0#NRLk#^#v1w`=9TwJp*`npK%COrze3Vg zcc1hp!~3wpFiS%X?+d)bEIm73SI0&Q{ zi+danvjU~n@i`;t#ECPmRlP<-w-HglBrKkG_Q(c(DhJSc*UsMC{aRn?7s3Ue-&cCU z@R#$vv9A2>e}kvzT4s5j)SYYM%~c3k=Md0tq$+opYnkI z(%^6r!Mz%bgmx*?d>|jimEw(L{?(cNrI&>vu(d0DUEYzf?|*A+=Pkd++XhIHu5Ob$ zZ+Wert$Kl}G!n_REHbpM)kAmN+Ih>>RTY~TitpzWKShs!w-KJVe7;Zqs50g6QtN2b z6Wnc{=Pe)Qlfd9pK&Br5Zo55ix!@CD@`pnZug=JT7fzc;HwqC$; z2n@PS{k(2%oSh1jFUkreQUxOUvtIRPm;OfKz=P$ z@;6lM=53+U*q)X8X{~Z2w+;g1`)Ui%!~3yIqab6=n`ptwi{Y`6T%{6fK-yzg4#5cy z0t04Aiefeowql+S;6mfyY`7Oy3eq?H@^@8p7zc3*CMe$s@N|_U>sHBCS2%1mnSz+lPmUU(VCWM z(Q@=?WI4H%dPa-)bDp=-_nphsTKuR(l+@Gk&dTok-NyA)GPE^gu9qRnyMZf>NPgcw*&M+!iejb>)~Nb(acw;Yb7d|qJy^rTlpQ!llyx~zz}cUz*KslT;M#yIAROh1 zv>`fP%S%;}K;St}%{aS}knI*$`tXGxR--`mP7O8$ZTG+}dSUrIY_Q}AJfR&Ii=WZn zYoFtVgQaPP9p|f$50(r9ohwhqNa;_NcUaxbV)bAx&BI$JZPi;V=#Dy z58qJ3s>iaoFRO91@TW*a^Nl=CDacRtG6fjsJoR|_>%3qHZsxzejndP`1^I4-2MZC` zI!P~6hqyBlm*y*ZtfKVF#JouftIFO++;V7u;kj@gJR~&Gh?b9e_NdIBZGb5NJn-SE zhos{|DSpV9`hZLUPL;Eh&>)e1wpaxw4+{4mDovmE)?U}P7KVbM^Hi#k*+y(6 z)SW6_)~wu2DHdN`t~2-VJBCd#KdE&xZZPe13Hb z#&(;~smF&(kB!dp!0!*vlXs%Xhe>m?2@N#y@UOl7z!FbAGmou z^M2{UV4&Vog>*+RWjAT#32!-@@0Xr7ytU%BSSc=IeHv;=7B5U6GIYm|*;+SmujTew z$avl5JRfhPy9l^v_<5ifgUWaAyjA7C%;n{ZPrjhOmaEn@vT3GiskYfCIMZ9?!NbF4*G{;HN@o&ys z;|(-#`T(|;pkPq0DgtsS?_AV`C2vjuPW?#-hq5w}Nip>u3_RUb)Y0T^P6&{d?K^VwAZPhVSz{<^kz}fg4D0 zhtjs7=9(Qd+{^&Ik>@`Emh%QYlsy1u{6-N!puTf>;{(#y@mNdTx(zdAFm|?0wfA&* zf1K%1CMhaSIV z&@xCZPllNi`u^uEIjB&_U_Q&Yvo~P6gtUe&9sKl2DPr`k30g&ip!mKu3VjyP*+9L| zPOEYv?|&fG4RSh^@nd*cg7gycw4Djkv(Y;Q;!Sq8c^i4jQ7KQo*}G%1b}-t!mM4yq z#v2O!dBG@5n9Wmp=_qMz+&i7JkSZ)!ImvRT1k&Kd_hhPrdINITOcQSzB|Q?s_j{t) zR{2dPx?YBBm{@qgI|Q=|unLFwohv+VG|m`-d$<$t{@;y(n6Zp3gdE;$be+IvXPZXw z%F$B%0xT-pz$Q4nt@<`pSc>o%pE5J8kbbWE+j~g=!#vPQrmECbf>aw}5Cx`7tEBat zfP8+q?US~Ir#vWyj<&4T%R$^9PH1si3&IC|;+}-ywixw;sOi<2yyQVCV(5FlebPOr zr*k9SlJ0bmFn;<$=|O+ZDID9lmzxs7ulDS6C}Rh%*^m1nFM$r>`)AdnHw#xy+JtF1 zR^nNSQtIf919h(%K{RYI2YpT(zKwx*58s;ywc#th%{__I_`YLubWin(bdA8yO3(0s zF;c4G_6VLiMtXS2L5+cz20N6*-8kcRRYCpf7}fGL5qGo4NUs?lyv=jRO4Ek!+1TCE zmK9n{d)GU>EzhVe{TkZvU5}*jlVhbhse1zTxQPz$_1k*fT!huz6fP}pf$JgIi(ur4 za)E<3tGCsmjK0D1#$kUq`Y_)*PWq!^!&;tUl^%=!PCde>ZSQpf`;{UplhQ)Hy$I#* z1m*1EHCE}LhV`J>Bs8^kH?K>Q(nGJQlnVjiBE<3UOoucLeE4{2lK*^-<-U@}3&%?- zaN@|{A1_UHUG8pebGX(5f6!gCk4$%(h|NkF@gh6>-ELYuz@KgtN8faZ%>~`rfe#{s zc&&)vK{e(d0$R`1@*_I>U7Evt^{}3Q0K&R}5Wn>R19B{SFoS`D8BSL+>C}vs4N|BH zDic5fu}GjFZA^6t`=|n@WjMUw?t)Fy0f!R5*0~K726uXhqn~U{P8rNu24f}-jyf@w z`1vHcA!%gFByc5g+7yUvtni4TuDB3OE!yW=gEU$w0)N}4Mz11DUeoO znSevgZQxG=pQ{fWm@A}}854kS`V{yrz}Ew>?omJvgm?1_75^OYqkz8veCNVKcn=Rq zrSyRgZ_^pz8-Vwbra@X+K=^O=0KWwICg2OZ%ZIe`oQj_cyaaqR@Ujm+fmQZ;|-YR?Ezi{zRCyR&ao%~zXABE$p19( z2fFbPR<^46VGeKOW#H?8_xRwgJU1Qbzd8YY5%A}LKk0+d<~1sQKJeiv-voS}4}Lkf zOhWog9S-kT2a&!J_);lMG~R8IlNDapWE z>B{C68Pd4Gy&7|s_tMP8RikoE5GYr1(`0F!|4bb{vs2)=FoEYymL8m`tH$K;HD0*S zyK7_kN|eSzWC1u)$Hi#*|86SIX;~_lARTC}qWLXl@HDPE7lnbo$lE7N3k)thLEbT} zD(9w$q_}CTo?GKJTYO8hvoS-ol2$DNF2=VcI~yn5RT5lvYNx_gDct#x^t_PBTOYy< zPvIeUi3g^HVO^2mG>06TuVANE6w5t!9OL1e5K`JmmRK!L#ZeQn6Q)T|^mQ$IAvusrkQzRdUd8lS|bRHcwMG+KkC|+iP~5_aE|5~owKMqWxDjJASD*P2v5nIXGo6@ zvC{2t`0^DZ>DoU$pVH~f;Vs=oZ{WaSOKuPKEDLgxkso7r`Q=RFdK`V!a2Ensw1agijT3{B}tTT&L8r)zd%5(92#H`L@lz6x= zc{LqmXCv3j7nrr=FdNiaI$+B@g6eB^)XzCv?Q&^)mq%0f0(rYFAaAB2uI$yQ)^0q- zTD7td8&f;0|36kyubv#n5~+IBId&F*_NP^hKde{r=W00Ye^bR3_~kpz>8eZwjXve4 zAC_iKNTjWDQXXTqhMeORPJRcjnEnQDhwBVMw1uA7FezbO3=1VcP%DSQK?^e^x-;Mu zaxiYP$N zO9Aep0-T1-cxO7?nTPSQ+0t;Au(Q+L0_L!G>qYp&#sw;p6egv?D*}rjs8vgF*3M@s zo)E?qIhRB+rn80MUR&TobsIBps)o=CUe(6mVq(dYEVKibRvi$(B-wEKx(F9?aI;13 zxUjRfxFgY>tKccEry(fZ1uu}!sdIu#49w_~t#tlsN4N)0o(jT2&ULx*x{u5jG^tHL zk&>|q_E~K11V{&J--NSX16<|^Y%3j)YX8bipuw_hd-7th?OE_6L={`xS(dutP&VK< z*uVH;HPUWI8h;lOxhWA6>_kM|-OGwaL3D$WJoQmQa2~<(^@5mQP=#I)rK?m6dUxRq zNMF&;?DrNloC-oY>e&tP_aR=D9&dPvS|e5Xq=dk4mypi9ji`W`_FGU)w-5#3Cv6yn zJKV7r0%7-K(nEaYG%1j`J%+1UO9yiEELFy!()QQPaP(5nac-X_!QhhT&r-SR`dQMu zpj>M%v`9a^&YihXS;3g4X0|kz$Iq5R=)*o6%6|B8r) zDQ8PvH6$+h#TUF~p5zjq;{{Jhj~Nyn=O>?#CJHIlrYEJx1oDTRmxqO`1)`Wd=~wV0 zpEzF{iP%2wkT(hYdG10fo47+cA01l&%Ck z+#I6k=v*_~teU8NDGsFv2_1*n=^e* z5GJLq6hBE&`Z!D3^a3XF3-BBJ851|XL9Wi=!tfTWd-X>aG%;_(I}=%be^tB)yR3yT zzBg$hOrVn8ICLqO4)e0b(j$SN{>#~`_Fv@jFFPGwk^XnCES5$;Kq5(`p`Vk{P6#b~ ztY6@$PsaX)oBT;(_J=(_fG6TDeC|_HlpngfT7C+e)nUsZ4E9TgH+=LWoFOo^7r}X~ zP->dH&p-2qaC5%24!#Ymi2JG>mz-5&aO`Z(I{eOSAxY!XR*PoMwpcW2j;Te|{@b%! zMt-d>KU|np9kqO`AEx{oTs!KCBdLz7H{sR*t`;;+tcSK{74|%;g3Yf6&Te98FkHA= z0D))UFXSi8F_;Rf^J>kbwb^24{dyDozssRDRN$q4fKkEwd>vYUU8}m~WIyN78nY4k z|J1Fo*|kOYah+ZC062yLF0K|nPKRT-j5d#7a|LEXU0!|7wM7#lN_o>xtqX9q(sE%K zo)dkwHD{PHl`8K{KdP-O(PmK|h-GCr9FeYMpVq9$~mL%F@9-w4P(kD{RN0OOZDTdr{yj$3%#7~w0eQauKk|CL9A2*rmPtSHdVPMG z6h5}kOzK7m$Th#YWhkV~8&tFkW7_TUdgrQbZx_5Ed4S=H~wfjMvey!UJ3S`^7@Bkt58tF}>5y7z0EV&t`s zJyuHl)eq(?HDHS?y4;Dr$5VeJ4NS^fnf<8hcml3I^Bl_8su32ZNA|>nm^&-G=1v9} znL2lXv)WmoZM+nobPat@kVoCoV!(=#oB7wjk&@twjeO)j7Vr#qIHqg^wwsK$n|}`q zW7ztvHj70mAW?GF?jjP!mhDN9XbMR5@oo}bX_yxDGrn>Yc-eAkqzg3H=@D0JJP9^6 zdi}rS5m$y29r**$D^6c3t*RojhMCkKa#0^&PtCo<`GuG9qf>U?_MG$t|7{6ew>|w^ zsdT9S32I<6xuYeg%Wo3#bet?&c^C2Ia|^s5_geU->TbJeE_lA}d1-Xt-urb&w8a?H z1K1x|@#5#DDE@lBWd6l_x_jiCSkVHpJ;f^T{I$wBv%olEx_)V%&hXk(U&SCU?;6Br zIjCz88|fX|=i-OiPo0Y&hG!}eV7GH|{?gM@Y@*fiB z-i==hNaUB0(k0Y^>NNl0iT6_7J^sOK@A1Rj<&*q>_QR}F-TRgdjKPFPo!X>y^`yP6_(p;S@l8bWw0r%l?jZcpDD~%b^1A&Q zx9Oh0TXcWMP1Rzd)Jq7osqSXkjBr@2;jX9QG`FmPSFKMv7=D~+g%mm6c4{4b6^EdU zamGo?#X@!UPN8)kvrVu}N}w}ST{z6m4lwcTVP?U%3EwfbI5Xip)-!;K_#TdL6TTC8 zgE+vFF$`1Z4&T^TwEzV3Cn46mr(utm6GU3d)3Xd^avTSHObP)z87&k zMbcA*k6kVOh29rdL!ym$*cyp`?3-_1104X zrEdhBcEy*mYaW$iEq>H){qRw@olVq*;xI9$(Lffuo?Sf)Omx!-<<#*-B~bb0RPoXh zsG#uPS0eqk=c5O#-#lthTL0*|>cn-@8>+s%?srtbMs9vZitC>ZX^#z;1cZIRvdC=X zMMLhXKSBSL^@`NL=c5hDFFtBdo|Db03toZl7T5ei2LV(IIAM_^pThb*9zt(?e{|`w z5Z<;ynnB7d`|nYM?B?pFznA{$*I%eg2!MHm=Dak0TH_~;aFQm)poibf-^fGtvW zxIErX`e8*!FM9X~XkDKj^S)bpQ0V%M&BR;AR-AS|z*`zL9k0N0G3KT87!(qgfNgq*Z>EnS7(9+b4! zUD@k-%bz9qJ%B}Whw6Ao#|P>7GH$8D=`?#Mw^pH;?8@rWD(MNF$J%+zUP3fioBksG zjw)2W`90||KMFLzPsS7N?bR*S5`H%}=K^m(AidBhdtcIZkjux}r<3+%*Yo0o(1Rm( z-9hOyp>K|A$BZ9@ZAeybwP6rjdCegl_)-pVOO3SJkkeSbvqsvElACzO2NHfB`9ihz zh?FiGv)3mlWiPLmk4Z_<f#u?%KT3B%>1b=iyAwt=JB_?j zcq!r=zGvJ+?;jX%X_9948#dFdSA`0&DBfTvFTDdZ^aOlnBCmQbUy(-lyn{RqvIroz zT}KBr7>zynmsg~Iy}VY&`tJm0*o(a5iZm-IHnpp9DO#RECwcz2nAX9^dBwM6$GeX= zd@GGMgyiD3D%j6JnP**vNMcYd-+UGLK?VG@`u1?K8Matqtvs_CgB_8@x6*gyao#}R zgG2c6YtmR_4AslVExnAveC0JM&=3>CORq^Y`j0LFq7D!Jp)!7zig#ExZ@q@fJW$LN zzeAxT%6Q>-=#i22yy83b$Qxa?*9O%)dN>cbjtCE$c*=Do7?Z%|>xkGrhB3$;T{jNq z+1I6nkmzo@fOB@jq?|T}V7I#J=KixvST;`S= zXk1P{;5F3iLA>CGG_-F==ZM+01hWEo#SQev3Y#`^L`7Q_?+WNYzQ+uEvW8o~ht)?O zHpzx_yz+(=$6x(k3hA|=g0bKRbe-i6-~YXo-S2l@Rnc2sSjEGBkgP$GKN-P?iD#D80*q^7iN`Z9R70eJnqON|;1P|c}|B=K#{_v55 zdYb#Vg}}5`eANwUz<}_Zoh^&iTDF#&Qo;jnOObswdi1VcP8lL;WH^udLF&(yR;k}3 zFRe$!6v|M|HK30TnbH?E#I1N=rf^j^euuE#u+6Wl4h4E_Eq)#1%e>*H6gjXHL9Jkl z_Z504QZ_V{QGDJ_skc!`QM?=A5a1^C^2-(P@2So$+-5XJ@iRB2J`zZ7hnn33(gmQ) zxcNU)a^DOL1_3Ftk>~zL8fkC~{KogvfS^H!uE9-2Tok<{h0nbujqHt@ z5IvU5$QJiEZsEZC!7cEuTi;88L7`7|C9@$OlD)H!x8K4nsL1BFHfch?e|ANP(IVg{ zt4rHplUixx2im06zO(Nc)G8A<-In5dRnds%q3NL?@(H)4A-$^d0LUf4KK={q4{9iT{JC}RzNJEV*OY#0|sXC2%6Ae1?iL6+$N`w9c zssN~sV#FB^HSn4{U<@@OyqUghY&@hLrF#(1uS%`zfbOcIIAOiwJywZKtW@0KzTikg zjp98nGj?A-8b09FEoY74{O|3Uou5=79(B)vmHb*ey62O60H}Kg{E~-vND2Ldh0dPU zTXGH8XF5=y??hhOA@%Qd-i8!eNYVc$-`gRD_d1{731}lgXrBY{KnZfvBHiJF7m@ze zh6E-`<>kY?(u%%&I*Xy^TNI`LIcom>eKHkqvj?D7iu*?%*d#?u=&)-g+^k>?{LV_$ zsP+P%r+_K9)bIj@maYa~reF{DeIoZDqTz=i-l9n9#yd82M*`0hj03|wT{KPIh8fvT z$mJ+0cqR|LBSp~qWWbc{DBiN!ILc390b5QQry0$eh}O2{G_e`M7;5O7%`*jKe6PL@ zsOVNC4_ZXT7ImLrh@$kf16WGHN3OVl`cPN)J zbf<7ZQPP_b-rPlC29u&p%Hj=v$n}1#JR)j;zZ;W6L`4G|h)X2$6{2xquQaq(rI5fg ze4A(-(ksmg08vQbA$~?Qj_TXBw(HGF$1kZ$#`rl?zygE>iZ~Ddn2Fe77vss&r&bIw zPM93J@%B(Om9+--DbSc_nW)F3ymu-}Cc1_l(1<>)PbcHd0PvimJlufMa`OVoXo=}8 z2+4`PsTJrW8xWCE?}jPLW9Rq*$vCceuA=1T15`tCw0&2I(HJSY6=n7Xo?|US>27=#5zg)~Y<=#=Dq%jK&DstpuwqH&0O(v>^T>wL#RG;X^ws^b?kA zM+Oy&@{0f@2;x;ejAQ$E@mln~p;b|yJ_p=Bt#HdNsh2t61N{CvWggZ?jmvj@Ed{@3 zGWL_g5Hnw20ZqnK<8N9KYrVEJRdMxn6A(wxA*WoWF6f5XRg5jrZea>1ljYuyDDj@d1JH%AO#;*W37op2mqlhV?SW z8Qsk&52wc7#s}2NgP+DMkL7YNQ0uNTzOR=tSt#Z$z0{&p0+23`I|Gd4Bom6v)#_ar zfEt;(*xNYP@aH<7(i>0WpI*TXnT^n6wc*{)gh`Oc zO*ix5W@ChFF#6*E;p6&$Svbme{XcCz8|?bO)BWVbwDZrfx`i25H!+t_)(U8~Pgm<>#8bQ;lPIsfr2x&f!7R`hkj(fe<7zVSpJ= z5W*%r`w+I^2~pEfhK4CJqqLoWhL>8HFz^DN7%iXh^;$mnCo&;?(NFSGdq~UZ0y3gz zYk!89twZ zLGqZ(geRMsFh7L}ze0X%Lh_if0Ga<1nXW;2=^`~7HKT`{@2Sv9CcKXf_Pd$zl0~b~ z%lPiB&?^m0czq{)F4~#!W*IYN?_-8X?R!W4(8DD_xDvn&bT~@0F~h{oc-G@V-%VVO zXDOb!cnD`AVR%qRs)#rs(FqNB z>hPRqhOrYo2rR-=fu{t89KdrNPdzi(kkDqvW5RbE^9w|HViVzbjRo9vA~KkGoHtvH zLwl-W4Hp*G`K{qIql_b|ZYdawi3xfy`k}bt8q7v@%0w7LY-0#hbr4N$_f8aXfFFo5 zMi^}M)%8)vv3*9Q{Mb1bj7@Mn#h5Vd@rYqaA;hZ_W$;qKPsV6r{$DeU(f6^KM8Ga- zu$V-?G{G3%C#DIoJ36e1m#MH;{Ek_$4r|q5Ly&dqgBolI*8^6o z!G^BqnSk|;15Zi)T!X3M7A}uA#`PJIi%zs@@DaKE0Hu#d+=-89u=sl3M6d+(*Ti3F zu!N;NHD6tPkRQkV%b_=lGoo}mr`g(v=F zC}g)7Ww0CgjMc(!gky&GC3p$gifx1*UW9Op7Oto8!+JO$;m5V`tqO#HnWukL;=`qf zs}NqVhxZ}8RSzFPc()#|LHK<=>_PZLJ&cOl&gKuqGY0Q-`6fbb}7_@S3NMQTMSV%!%|c4VVPE3JrY{$TfYe4ol=E zV*neE9!j69!Nv!1o0VXVfUVVGjYJM`+B()aV8qVu3a8)HD;$Rw=u?E|;iTnSx`_!I z31YsnNgH+8TwXX9`P-0W(t8@r#(0^7U@d^1(_t;VWhONO%!^I(YQQubZ=PU`UXYGD zWF%=Y3U`u*1iEB`Mj8~(m^f4f#9%|EGW4OoRfq6GeI(8y{Inhh{bnrF!xy-mXbg?d zkh>e3ap9+peF&pHd5%_(hidq_acG1cNha$ZU|+;VbY@>W%ABmzw;KK%w@oxg_wVeq zscy!mL~Hp>#ZI0EU|I@b6ExVg6z(RNV<}*ZH5l9_)DbMJ05E+nXBE7bM4)1Tj%(4f ziZ#$yfIibfTX~)utpzZhjdHWR;i*h7Ooo5{_O8bkX`4b>~#2HgF8ZnAOk zh{W!?PJR8Sb$zyyv1t}Pn@V0uS^o-cou=3IS5WZ~Y?&Fb|JB;L$5mBrdwlMPd!xYS zsRAPM6jVe+G%T-Sl9^JXky?^sVfjEsMMX0=CO%3lN^@d)igS*Yl@%2Rrq#Bn=tRXi zN6Vuf+m)R(@l~i)nD;l<7_is<_{aU@-u-E|zx%hwnrpu2Tw|_kuJSFTep*4 z85-R9Ouk0hew~WW;97|+jhD2nEYjZls4Q2-LVS@8SHJc3 z(K0K!Jx1?xl^=(e%y#9+b@WKstx1G-9cyb6buMY^8=&3I+WH2)inNC?yyRB0_E4tY zP1>ePXz#POsZxJU+9U1Ieq-&Cb{&A;5c(Ldd&>yc49=xqk}#*HFRePQxBKC+R~RGK zEx&U0u8vUZ)(Byg?XAOv^S}#*3&Af7mw15GBi$2~?Chiy%T_7d9>cMMY2W?~+si1WUb>sN!n*EE}4x3z0;5!Ja4fcOoII-o<0hImHAXq`I>snuu*6EBN4LbL*r&F5CGA_*o-NipM>~cL?Bz>Ce#O;kcm=229>k}-Qmi-6q%^$hftbYNs~(-1 zgShvgjBb}{VNbL!BJC}d`R$Lf-CHAc`E<;uH9441-}hZ~a^lq&eXC8W$-CsdHlAYY zs-b<#T3xmF8ii4x4)IqO>(h1qjku@>l{%$AYn}orHBT!du$Ks&_keD;BM9X;qy~;L2Wv-aXzazwM}r|ouy_>zzIhP_ z!X?3)}3 zgE#u3yW=!R*XMxhY(__s{5vI|2EU;9--HG2F|?#=43Wc8Ydf}NwJ@7bs=?;@2#;6zJwW zM_iaXjhsxEDa_zOx^x_h`z%__beSd2*67{iki&DR>FISG!8z2lF^!!sgXm@Pe3=fQ zRpQUZO3iSw_H!}M$G>caHj=epw(@GSwF25))>5sWvr6#zQvceyPuanoa#$k z;8dmV8NhJ`PUUL`BA$DA8nNKth&Iv@xC`1evD>99aeM7@l|Wm=nyZBF4C7tFDA;>= z0c8o!*XKwJMWeWf*R7V&VjVjH!+DA?Sw$x*E&dx)8;V6Y!yf%Y(OEf#Q3cg0TT{Lu*S$`GH zkE$N$)enD4G!YFU`RmFXG$%wZVM$&pCnw7fmI43QlS$pY{aOSDmU0I7vq*(=81+)aw zDs;A?VI-T)_epR9Zp(Kh1bU%N5i75*CaWllZ3Syli8`Q=v?^%4e6U1S8HF@5Y6rAe z#17oi?yZf)-0qpV-@(18X8)b-dlzv#hSyNd=Cv(6h`KT#*NWMx)SNzS7qe4)ppERa z8yb6hEW{nxvN!pz#mv`AEQ7r?ro=KGdpqJyIt)$nkaSq*kp}0Wnj`%_+34d@ljofE zRn}YwR~Gp}=Y|NQ5zUo_usaq!PV{u}a^Y<7^S;WR`wmrZeA?WDC*XKDBT*(be74u{P=PNe?IA2vUPhD`t>Smnk zf)iF1&)`#2Q@2fl1fQ%b-o(E%91I~paYIId~=bn6h6w#Y7dD^Y4u zMBlE6$Xbp8ZBc^UGn@mD5^m)=XwhB1{4T2JHkfcd&XhJdtx&1O*UNPZX(168WGTSK z7vI5RK|VJdxa-woUIf8)PyVsE>n(R>L42AGi933#wU$^$1%tV#!r!kJOG(aX(U}FP zT=@UhVj1IRj?hJhhI5wivePoNR#(r09kvG4628U9Hi2#+J8TuGC457HZ3A5byHMIT zSn>#`$>2BeniooW{$XrHc4K}1VO@9^&d0ukDwS@u5F?VIHA0iwc3~s;g_5n%?&ot$ zw&Im9oVz9#8ha8fYcTXrhqg8X+GlLHHbUnaS|PNHqQM_c8umZb(!s1%;C{!@kmsc` zO;+GhHPY7QKx4la_D#4V)}iGsb@RFF#_H@Dj$Sjj`#QtY8fhfuFxw|w3I0g98hlZ> zMyX{(spq}UXQFU-_P3m zXwCw5Y}E3jqQ&ZBnshcyRjSO7wGC7C4$?Mxp$%hglUFy9wgt_sY$j`4vbbqrmq(Q? zWNj;Me5mNQBF|;7iB_o#WwPz+;3pS0^iii00 zr+4T!I(<(yv^QDXQ_aKGTgd&2f3Wrz7BV!1VPi_II4{~%&hlFYO05hQt$u%wufFatm%;8yikrJ* zU9nQDWGPWsOg?FJ{<d%XUqO)4h-F znyTr3GT!ysL1-5WirQ-k<8ljxIr#V?6^8kZB=UR(;U~Stvm>vYJuhvtwpEKMT;+lbdsf(LUJa>yIRQX zifAo7RNX67f{L@Hj7C7v~HU3 z7!Vi${F&v80ouL*Nf?3Wfh{79V5t~VkVwV4h^$b48*bcUqSd zp~>3)aw0dE%PG)g%(!gq7@<#I*#&VTU*yUzol}B*cvL2a9PCi5sSpurWk$`SPlq=ID*9i z!L+i4IM5H`WEKbd>HMX*40`M4MIx2c(+;p3q##Q38KiVA*_A>1GusU+lVqo(32f%6 z(VD(Phc82QXLzA~&4w9XOv6#`&8@ssecK479_b^DL_ac97^gh)I&*#i_)FnJ@NdGk zN~?u**MY0UJ-%A@koLwf{xJnL7o!1)I2e=l=H8cz-ezt2pMl~{gY&e{lnh~ z*ok}2NMR3n2=j0>f9oy6C<*HlW_p6cx;*`=(zWrC|_|Oi1mqgZSAx?VrJUj_LIg%+uD9D(94ygEo{GbwxK=au7jCruej?pX4)6-x`BC{8z*;_ z7E61%U7zCvIvQLnj8u31K)3+>A7}f2k(g!}Q<7 z_Oy5D|2^B#mSuo+b!=6-@qQ^Epe@RP>3jlhO$MwLZU-M=8`_BsI0r6Qigq9at<1FX z7#Pkrw0jtsE<6@IP8jC~$~Zw=e}TJ6NB(KgFHllPdws45K7qFNTsJb)_MGc3;Y9FK z;cW0D!i``lIof`6NtMyIo9hJI&~{r;pm09eEh(k_wV;W7fVS0wmNU~1TF_2r+CdBY zl$mzUf?Anr!z?(SnKsITCo$6oS@3FR+87IdgPAtLf)6pfFWd3b0yi9E$13DH94J@# zQasZ8`yW}j=3%;Ip+RNxJ7o$Cl?mP)uXz!xCW*gd< z=+1KlJ;kiL|G-5}`w%_+*@pHUdJJNwy#;pF-I6F zjd+N8lpXvc7!8x0?GZE{5Ep^H!VTa{%;Z#$3;?5a$?F{{2_%N;q6$A8P{ zD*RZ%2gsEjNsSQ~Aoq3Tc4l&0M{*akOe+L8u|0W|BY8-s2ftMmPsfG>IVyu~$T=J} zg_)efQRQ4UGu^fL@d6(pFL2an%;f#;rI^Xn+bfBgJiWcfGn0q6m$d4IjbNTfEacJc z)xb7uV!=H4;3;&xL=(dLT4W$PH^vzM>5+96eJ>xVK!T#nnaM>PO)VKEL9W?oo{%i$ z3yuCK+mH`5`e$KWthe+O@_F{Yh4oEda2e;Ae4M>`fkRKQyH)Rx_y9RId-GgQkGHFs zXg--dmodBsq{rP=%skfjRD-3#lBY6;+6U^JJd`nwU?iG6lQAvA=kSVa7~7C@uum$n zTNzHlK0MA_>KbrhIvbG>u+MT~6m_3xg+1WUnfDU^&ipnwHcA+MJ@#5*FL)L+Ir3uH zafZo(7wfL(1LV1j{f7Cy9HrtSnaNcbM?*4lMqatNyP4l7o5z{S>lP>7>_bEv_buz> zNsA8K_$v?=Ye+i>5 z6VEW8hE0-97`ac9c0=x>q-$6wH&K!#`V2CVbPwxi$71|Vl73GPp`^#;z-;htVLCy^ zZF1}+QG-HtkVB_$59U_ntnV0R^2qd^ER2NqmAbze04`w^?-H&$|aq&&|$xjItbWhNI#$`N5y zU&?uAa%l7mFyeF@j*Nc8`2aaE`tePLH8K-?AM50+=(m!YTonDbFq3DZALq<)Nc8)d z6H0!Fe&4eVxgYxRk{rGUrTX)Qt#P^FQEoOOM??Qb%t@=j4>FTuq5pPf@+b6vjhWmC z{XbzQ??HbaxU2)wCi+W>lDA+0FG{V0%D{s;apWBsFoDm_aC`AXa+x_Bynqj6;$j1q zy7yn^408E-79)C}ecsE*WI zU3RoTWhDnh>I#nZHe5J$pRiY{f&R?ofEbuATnNq=t_81fbv~^-@I~Qp=WKS%6V*3~um@rE4mfZr2t1~&TuI0d&b={L8{z%-B4xRFHA;H#L!bc#(Q@e&kCb`Wb76un-7>bz%b*8FsdozlJHoi zhJ*{3g9iv#f^Ud%8yDEnh#%ACz+v!8SLbUyL)HoxL4ShzF!6K3v%#-3(`!6K4hZiC z9}=zse75TAWsmuUj4>(%50X#q$3C+A#xCuN)xEXw>@ImlQVPqzA zwlKP4=5k>#cnuiWw_ZAq9~uc^ z|INhTnz+Ts*Yq%PmPK`yYh5!L_n)0VicMVZyYMv{DK(O*)HTnT^g6t5*%48biM=L1 z@8c{Oci3lj7pDAYC72EjHSzT(zSYEcnfN{vuQ2gui|QhY%i3X4s3GH%^?`{`WBp-Y zBL^9|{ZWh((eQy5<&X;uzYaDXoM+-$;12uyeF+-AzVqBEYB*Bb8POIK zKV{-qO#G&a_nP>Ci5qq9BaQ_3F_U!M#HURBvqjlD(*C=TuSKKn(68-j;#d=>nRvK~ z(VXdAqj6u00_lvXz{Imnywt=SOuW^^&zkr}6W5ry-oytiJ$)Dc#B|`Wu6)$d(~S!6 zNY`~}mz^AHVpC?XLxp$RpbvHOXcJE~G5T?*O^J!or%5*o=embY2hh(tPxz~e(b+ro z{U*j=`|i{aniw_Rsh>0PAHG^2;lQ15N2?nVWjcT=?bL^vc%+HPn0Ts*r<=IQ#PdvC z+QH};BOcJvm1w5upPkp-ZQ@!JBjcSm4JQ7~#D`3L%)~!-GEL>q_wtMv&Yd27W0T1$%FR--$vMnfLYr44#K+#2N3W;yz>Ku2853g zK1OJ)i+;k9W^wy23h=6(8c?IE3uod5D5Kbes zA^d{yC3F|Mn4bebsC21lK0}}qrjn-Oe*po->W4L$^HY3d&E-6V@OOm62wx#!IyZ_J zMeT=a--$(!A65X)f8yJTfRc4KBT(^ERs0PaZU+3&y#3rLYUj@gXA!4B=l0RIgva4s~R-4{8R|B&Z6VH3+ZbII7k83BqgTN~w+ztBO_>7tL5w zy7cZDch9Lyd(tsH(7IxU4k@-}>OcL(@v)AJv+eDgF=xrm3nrAzT7W<0X3!Dp4&=n_JFaomM)&Nq;$?bq^@bjU&9;piz8B(?{sX@BcF3T zs;@lf2-Km^JBI5YS{>;+bg?bGuHbpcH$efN@y(q(SARRi)-yN*SMWv1>X^E5l{SCt zwhtVE*12=^#9Bx9ZF?OF`u18!h@L*omQa_l*Rj2;c0@Zf>TdtQanxeV8a_miYIh`s z-?OkdZE!}`HCbv#2M(?){t$mM#+9DgAr48;9IXHB?@ZCJjJ7S%KaIA<*X4Zd*lR_x z)Lr?+u{V**r)G>Tl7vHN90gW?i7%b5v?j_qRew3(wnks+>FkC-famz=|4@8&D84|8 zujuecS0_d|bM=f1juc&U0U7To#_sy@99x*a^$y!;U9;G>qx16qb$u>5=J~n)XTCM^ z{iwcqmF=>=65tHe>HTevy21x+$82>`U7S&l|D{BJ^LGaN{XbP%tbQ=cIYm$3V%u1U IGP~se-#hmy8vpPBXSmartGroupTreeModuleOutlineStateSelectionKey - 7 + 10 3 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 2}, {282, 628}} + {{0, 33}, {282, 628}} PBXTopSmartGroupGIDs @@ -321,7 +321,7 @@ PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - DetourTileNavMesh.cpp + DetourTileNavMesh.h PBXSplitModuleInNavigatorKey Split0 @@ -329,11 +329,11 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - DetourTileNavMesh.cpp + DetourTileNavMesh.h _historyCapacity 0 bookmark - 6B996062100F42AF00D7BF5A + 6BD4DBDB10145C42003FF199 history 6B7707F00FBD90F100D21BAE @@ -348,7 +348,6 @@ 6B2AECED0FFB8B41005BE9CC 6B092B4F0FFCA0A20088D3A5 6B092B500FFCA0A20088D3A5 - 6B092C5F0FFCFF790088D3A5 6B092CC10FFE40160088D3A5 6B0249BE1003793900CF7107 6B024BD31006059C00CF7107 @@ -356,9 +355,7 @@ 6B024C1110060C7600CF7107 6B1186211006945C0018F96F 6B1186D1100699A00018F96F - 6B1186E610069E200018F96F 6B7EBB69100721310066EF8C - 6B555D23100B136A00247EA3 6B555D24100B136A00247EA3 6B555D30100B143200247EA3 6B555E01100B285300247EA3 @@ -369,35 +366,34 @@ 6B555F0D100B473F00247EA3 6B555F0E100B473F00247EA3 6B555F0F100B473F00247EA3 - 6B555F42100B4C5800247EA3 6B92CE68100E0577003DA304 6B92CE69100E0577003DA304 6B92CE6A100E0577003DA304 - 6B92CE6B100E0577003DA304 6B92CE6F100E0577003DA304 6B92CE70100E0577003DA304 - 6B92CE71100E0577003DA304 6B92CE72100E0577003DA304 - 6B92CE74100E0577003DA304 - 6B92CE89100E0739003DA304 6B92CE8A100E0739003DA304 6B995F9F100F336B00D7BF5A 6B995FA2100F336B00D7BF5A - 6B995FA4100F336B00D7BF5A - 6B995FDE100F387200D7BF5A 6B995FDF100F387200D7BF5A - 6B995FF4100F39EA00D7BF5A - 6B996047100F41DB00D7BF5A - 6B996049100F41DB00D7BF5A 6B996059100F42AF00D7BF5A - 6B99605A100F42AF00D7BF5A - 6B99605B100F42AF00D7BF5A - 6B99605C100F42AF00D7BF5A - 6B99605D100F42AF00D7BF5A - - nextStack - - 6B996061100F42AF00D7BF5A + 6B8AE8DA10121C6000FF1D07 + 6B8AE8FA10123B5700FF1D07 + 6B8AE8FB10123B5700FF1D07 + 6B8AE8FC10123B5700FF1D07 + 6B8AE8FE10123B5700FF1D07 + 6B8AE90010123B5700FF1D07 + 6B8AE90210123B5700FF1D07 + 6B8AE90310123B5700FF1D07 + 6B8AE90410123B5700FF1D07 + 6B8AE90510123B5700FF1D07 + 6B8AE90610123B5700FF1D07 + 6B8AE90710123B5700FF1D07 + 6BD4DBB910145A50003FF199 + 6BD4DBBA10145A50003FF199 + 6BD4DBC710145C42003FF199 + 6BD4DBC810145C42003FF199 + 6BD4DBC910145C42003FF199 prevStack @@ -426,7 +422,6 @@ 6B25B6250FFA63C8004F1BC4 6B2AEC740FFB8AB0005BE9CC 6B2AEC750FFB8AB0005BE9CC - 6B2AECB50FFB8AB0005BE9CC 6B2AED930FFBA45B005BE9CC 6B092B1A0FFC98FF0088D3A5 6B092B530FFCA0A20088D3A5 @@ -441,34 +436,40 @@ 6B11862D1006945C0018F96F 6B1186301006945C0018F96F 6B1186311006945C0018F96F - 6B1186401006945C0018F96F 6B1186411006945C0018F96F 6B555D26100B136A00247EA3 6B555DC9100B236A00247EA3 - 6B555E12100B285300247EA3 6B555E13100B285300247EA3 6B555EE0100B39A600247EA3 6B555EF9100B42E600247EA3 6B555FB4100B595C00247EA3 - 6B995FA9100F336B00D7BF5A - 6B995FB4100F336B00D7BF5A - 6B995FB5100F336B00D7BF5A - 6B995FBE100F336B00D7BF5A - 6B995FC1100F336B00D7BF5A - 6B995FCF100F345100D7BF5A - 6B995FE3100F387200D7BF5A - 6B995FE4100F387200D7BF5A - 6B995FF7100F39EA00D7BF5A - 6B99604D100F41DB00D7BF5A - 6B99604E100F41DB00D7BF5A - 6B99604F100F41DB00D7BF5A - 6B996050100F41DB00D7BF5A - 6B996051100F41DB00D7BF5A - 6B996053100F41DB00D7BF5A - 6B996055100F41DB00D7BF5A - 6B99605E100F42AF00D7BF5A - 6B99605F100F42AF00D7BF5A - 6B996060100F42AF00D7BF5A + 6B8AE8DF10121C6000FF1D07 + 6B8AE90D10123B5700FF1D07 + 6B8AE90E10123B5700FF1D07 + 6B8AE90F10123B5700FF1D07 + 6B8AE91010123B5700FF1D07 + 6B8AE91810123B5700FF1D07 + 6B8AE91910123B5700FF1D07 + 6BD4DBBD10145A50003FF199 + 6BD4DBBE10145A50003FF199 + 6BD4DBBF10145A50003FF199 + 6BD4DBCA10145C42003FF199 + 6BD4DBCB10145C42003FF199 + 6BD4DBCC10145C42003FF199 + 6BD4DBCD10145C42003FF199 + 6BD4DBCE10145C42003FF199 + 6BD4DBCF10145C42003FF199 + 6BD4DBD010145C42003FF199 + 6BD4DBD110145C42003FF199 + 6BD4DBD210145C42003FF199 + 6BD4DBD310145C42003FF199 + 6BD4DBD410145C42003FF199 + 6BD4DBD510145C42003FF199 + 6BD4DBD610145C42003FF199 + 6BD4DBD710145C42003FF199 + 6BD4DBD810145C42003FF199 + 6BD4DBD910145C42003FF199 + 6BD4DBDA10145C42003FF199 SplitCount @@ -482,18 +483,18 @@ GeometryConfiguration Frame - {{0, 0}, {976, 548}} + {{0, 0}, {976, 449}} RubberWindowFrame 0 91 1280 687 0 0 1280 778 Module PBXNavigatorGroup Proportion - 548pt + 449pt Proportion - 93pt + 192pt Tabs @@ -507,7 +508,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 68}} + {{10, 27}, {976, -27}} Module XCDetailModule @@ -523,7 +524,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 196}} + {{10, 27}, {976, -27}} Module PBXProjectFindModule @@ -561,7 +562,7 @@ GeometryConfiguration Frame - {{10, 27}, {976, 66}} + {{10, 27}, {976, 165}} RubberWindowFrame 0 91 1280 687 0 0 1280 778 @@ -591,11 +592,11 @@ TableOfContents - 6B995F7A100F14BB00D7BF5A + 6BD4DBB6101456DE003FF199 1CA23ED40692098700951B8B - 6B995F7B100F14BB00D7BF5A + 6BD4DBB7101456DE003FF199 6B8632A30F78115100E2684A - 6B995F7C100F14BB00D7BF5A + 6BD4DBB8101456DE003FF199 1CA23EDF0692099D00951B8B 1CA23EE00692099D00951B8B 1CA23EE10692099D00951B8B @@ -742,14 +743,14 @@ TableOfContents - 6B995FC4100F336D00D7BF5A + 6B8AE8E410121C6000FF1D07 1CCC7628064C1048000F2A68 1CCC7629064C1048000F2A68 - 6B995FC5100F336D00D7BF5A - 6B995FC6100F336D00D7BF5A - 6B995FC7100F336D00D7BF5A - 6B995FC8100F336D00D7BF5A - 6B8632A30F78115100E2684A + 6B8AE8E510121C6000FF1D07 + 6B8AE8E610121C6000FF1D07 + 6B8AE8E710121C6000FF1D07 + 6B8AE8E810121C6000FF1D07 + 6B8AE8E910121C6000FF1D07 ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -779,8 +780,6 @@ 5 WindowOrderList - 6B996027100F3E4200D7BF5A - 6B996028100F3E4200D7BF5A /Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj WindowString diff --git a/RecastDemo/Source/Sample_StatMesh.cpp b/RecastDemo/Source/Sample_StatMesh.cpp index 8c4c267..a2c875f 100644 --- a/RecastDemo/Source/Sample_StatMesh.cpp +++ b/RecastDemo/Source/Sample_StatMesh.cpp @@ -200,7 +200,7 @@ void Sample_StatMesh::toolRender(int flags) glDepthMask(GL_FALSE); if (flags & NAVMESH_POLYS) - dtDebugDrawStatNavMesh(m_navMesh); + dtDebugDrawStatNavMesh(m_navMesh, m_toolMode == TOOLMODE_PATHFIND); if (flags & NAVMESH_BVTREE) dtDebugDrawStatNavMeshBVTree(m_navMesh); diff --git a/RecastDemo/Source/Sample_StatMeshSimple.cpp b/RecastDemo/Source/Sample_StatMeshSimple.cpp index 9decb0a..4b13c88 100644 --- a/RecastDemo/Source/Sample_StatMeshSimple.cpp +++ b/RecastDemo/Source/Sample_StatMeshSimple.cpp @@ -18,6 +18,7 @@ # define snprintf _snprintf #endif + Sample_StatMeshSimple::Sample_StatMeshSimple() : m_keepInterResults(false), m_triflags(0), @@ -263,6 +264,10 @@ bool Sample_StatMeshSimple::handleBuild() cleanup(); toolCleanup(); + // + // Step 1. Initialize build config. + // + // Init build configuration from GUI memset(&m_cfg, 0, sizeof(m_cfg)); m_cfg.cs = m_cellSize; @@ -298,6 +303,10 @@ bool Sample_StatMeshSimple::handleBuild() rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", m_nverts/1000.0f, m_ntris/1000.0f); } + // + // Step 2. Rasterize input polygon soup. + // + // Allocate voxel heighfield where we rasterize our input data to. m_solid = new rcHeightfield; if (!m_solid) @@ -324,7 +333,6 @@ bool Sample_StatMeshSimple::handleBuild() return false; } - // Find triangles which are walkable based on their slope and rasterize them. // If your input data is multiple meshes, you can transform them here, calculate // the flags for each of the meshes and rasterize them. @@ -338,12 +346,20 @@ bool Sample_StatMeshSimple::handleBuild() m_triflags = 0; } + // + // Step 3. Filter walkables surfaces. + // + // Once all geoemtry is rasterized, we do initial pass of filtering to // remove unwanted overhangs caused by the conservative rasterization // as well as filter spans where the character cannot possibly stand. rcFilterLedgeSpans(m_cfg.walkableHeight, m_cfg.walkableClimb, *m_solid); rcFilterWalkableLowHeightSpans(m_cfg.walkableHeight, *m_solid); + // + // Step 4. Partition walkable surface to simple regions. + // + // Compact the heightfield so that it is faster to handle from now on. // This will result more cache coherent data as well as the neighbours // between walkable cells will be calculated. @@ -382,6 +398,10 @@ bool Sample_StatMeshSimple::handleBuild() rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Could not build regions."); } + // + // Step 5. Trace and simplify region contours. + // + // Create contours. m_cset = new rcContourSet; if (!m_cset) @@ -403,6 +423,10 @@ bool Sample_StatMeshSimple::handleBuild() m_chf = 0; } + // + // Step 6. Build polygons mesh from contours. + // + // Build polygon navmesh from the contours. m_polyMesh = new rcPolyMesh; if (!m_polyMesh) @@ -423,8 +447,17 @@ bool Sample_StatMeshSimple::handleBuild() delete m_cset; m_cset = 0; } + + // At this point the navigation mesh data is ready, you can access it from m_polyMesh. + // See rcDebugDrawPolyMesh or dtCreateNavMeshData as examples how to access the data. - if (m_cfg.maxVertsPerPoly == DT_STAT_VERTS_PER_POLYGON) + // + // (Optional) Step 7. Create Detour data from detour poly mesh. + // + + // The GUI may allow more max points per polygon than Detour can handle. + // Only build the detour navmesh if we do not exceed the limit. + if (m_cfg.maxVertsPerPoly <= DT_STAT_VERTS_PER_POLYGON) { unsigned char* navData = 0; int navDataSize = 0; diff --git a/RecastDemo/Source/Sample_StatMeshTiled.cpp b/RecastDemo/Source/Sample_StatMeshTiled.cpp index 4a37f92..40f5f74 100644 --- a/RecastDemo/Source/Sample_StatMeshTiled.cpp +++ b/RecastDemo/Source/Sample_StatMeshTiled.cpp @@ -898,7 +898,7 @@ bool Sample_StatMeshTiled::handleBuild() } } - if (m_cfg.maxVertsPerPoly == DT_STAT_VERTS_PER_POLYGON) + if (m_cfg.maxVertsPerPoly <= DT_STAT_VERTS_PER_POLYGON) { unsigned char* navData = 0; int navDataSize = 0;