From b7276be79b61b94c57dfc30d4421157e49a3f7c0 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 18 Jul 2008 11:20:04 +0000 Subject: [PATCH] Revert broken attempt at potlatch_010 merge. --- app/controllers/amf_controller.rb | 568 +++++++++++++++++++----------- app/controllers/api_controller.rb | 6 +- app/models/node.rb | 6 - app/models/old_way_node.rb | 2 - app/models/relation.rb | 18 - app/models/way.rb | 20 +- config/environment.rb | 5 + config/initializers/potlatch.rb | 6 - lib/geo_record.rb | 9 + public/potlatch/potlatch.swf | Bin 148876 -> 140596 bytes 10 files changed, 387 insertions(+), 253 deletions(-) delete mode 100644 config/initializers/potlatch.rb diff --git a/app/controllers/amf_controller.rb b/app/controllers/amf_controller.rb index ef55ced62..11ddc3f7c 100644 --- a/app/controllers/amf_controller.rb +++ b/app/controllers/amf_controller.rb @@ -112,30 +112,22 @@ class AmfController < ApplicationController basey = args[5] masterscale = args[6] - def whichways(xmin, ymin, xmax, ymax) #:doc: - xmin -= 0.01; ymin -= 0.01 - xmax += 0.01; ymax += 0.01 - - if POTLATCH_USE_SQL then - way_ids = sql_find_way_ids_in_area(xmin, ymin, xmax, ymax) - points = sql_find_pois_in_area(xmin, ymin, xmax, ymax) - relation_ids = sql_find_relations_in_area_and_ways(xmin, ymin, xmax, ymax, way_ids) - else - # find the way ids in an area - nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => "current_nodes.visible = 1", :include => :ways) - way_ids = nodes_in_area.collect { |node| node.way_ids }.flatten.uniq + RAILS_DEFAULT_LOGGER.info(" Message: whichways, bbox=#{xmin},#{ymin},#{xmax},#{ymax}") + + # find the way ids in an area + nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => "current_nodes.visible = 1", :include => :ways) + way_ids = nodes_in_area.collect { |node| node.way_ids }.flatten.uniq # find the node ids in an area that aren't part of ways nodes_not_used_in_area = nodes_in_area.select { |node| node.ways.empty? } points = nodes_not_used_in_area.collect { |n| [n.id, n.lon_potlatch(baselong,masterscale), n.lat_potlatch(basey,masterscale), n.tags_as_hash] } - # find the relations used by those nodes and ways - relations = Relation.find_for_nodes(nodes_in_area.collect { |n| n.id }, :conditions => "visible = 1") + - Relation.find_for_ways(way_ids, :conditions => "visible = 1") - relation_ids = relations.collect { |relation| relation.id }.uniq - end + # find the relations used by those nodes and ways + relations = nodes_in_area.collect { |node| node.containing_relations.visible }.flatten + + way_ids.collect { |id| Way.find(id).containing_relations.visible }.flatten + relation_ids = relations.collect { |relation| relation.id }.uniq - [way_ids, points, relation_ids] + [way_ids,points,relation_ids] end # ----- whichways_deleted @@ -152,14 +144,18 @@ class AmfController < ApplicationController basey = args[5] masterscale = args[6] - def whichways_deleted(xmin, ymin, xmax, ymax) #:doc: - xmin -= 0.01; ymin -= 0.01 - xmax += 0.01; ymax += 0.01 - - nodes_in_area = Node.find_by_area(ymin, xmin, ymax, xmax, :conditions => "current_nodes.visible = 0 AND current_ways.visible = 0", :include => :ways_via_history) - way_ids = nodes_in_area.collect { |node| node.ways_via_history_ids }.flatten.uniq - - [way_ids] + sql=<<-EOF + SELECT DISTINCT current_ways.id + FROM current_nodes,way_nodes,current_ways + WHERE #{OSM.sql_for_area(ymin, xmin, ymax, xmax, "current_nodes.")} + AND way_nodes.node_id=current_nodes.id + AND way_nodes.id=current_ways.id + AND current_nodes.visible=0 + AND current_ways.visible=0 + EOF + waylist = ActiveRecord::Base.connection.select_all(sql) + ways = waylist.collect {|a| a['id'].to_i } + [ways] end # ----- getway @@ -180,22 +176,29 @@ class AmfController < ApplicationController wayid,baselong,basey,masterscale = args wayid = wayid.to_i - def getway(wayid) #:doc: - if POTLATCH_USE_SQL then - points = sql_get_nodes_in_way(wayid) - tags = sql_get_tags_in_way(wayid) - else - # Ideally we would do ":include => :nodes" here but if we do that - # then rails only seems to return the first copy of a node when a - # way includes a node more than once - way = Way.find(wayid) - points = way.nodes.collect do |node| - [node.lon, node.lat, node.id, nil, node.tags_as_hash] - end - tags = way.tags - end - - [wayid, points, tags] + RAILS_DEFAULT_LOGGER.info(" Message: getway, id=#{wayid}") + + # Ideally we would do ":include => :nodes" here but if we do that + # then rails only seems to return the first copy of a node when a + # way includes a node more than once + way = Way.find(wayid) + + long_array = [] + lat_array = [] + points = [] + + way.nodes.each do |node| + projected_longitude = node.lon_potlatch(baselong,masterscale) # do projection for potlatch + projected_latitude = node.lat_potlatch(basey,masterscale) + id = node.id + tags_hash = node.tags_as_hash + + points << [projected_longitude, projected_latitude, id, nil, tags_hash] + long_array << projected_longitude + lat_array << projected_latitude + end + + [wayid,points,way.tags,long_array.min,long_array.max,lat_array.min,lat_array.max] end # ----- getway_old @@ -216,39 +219,78 @@ class AmfController < ApplicationController RAILS_DEFAULT_LOGGER.info(" Message: getway_old (server is #{SERVER_URL})") # if SERVER_URL=="www.openstreetmap.org" then return -1,"Revert is not currently enabled on the OpenStreetMap server." end - def getway_old(id, version) #:doc: - if version < 0 - old_way = OldWay.find(:first, :conditions => ['visible = 1 AND id = ?', id], :order => 'version DESC') - points = old_way.get_nodes_undelete - else - old_way = OldWay.find(:first, :conditions => ['id = ? AND version = ?', id, version]) - points = old_way.get_nodes_revert - end + wayid,version,baselong,basey,masterscale=args + wayid = wayid.to_i + version = version.to_i + xmin = ymin = 999999 + xmax = ymax = -999999 + points=[] + if version<0 + historic=false + version=getlastversion(wayid,version) + else + historic=true + end + readwayquery_old(wayid,version,historic).each { |row| + points<<[long2coord(row['longitude'].to_f,baselong,masterscale),lat2coord(row['latitude'].to_f,basey,masterscale),row['id'].to_i,row['visible'].to_i,tag2array(row['tags'].to_s)] + xmin=[xmin,row['longitude'].to_f].min + xmax=[xmax,row['longitude'].to_f].max + ymin=[ymin,row['latitude' ].to_f].min + ymax=[ymax,row['latitude' ].to_f].max + } - old_way.tags['history'] = "Retrieved from v#{old_way.version}" + # get tags from this version + attributes={} + attrlist=ActiveRecord::Base.connection.select_all "SELECT k,v FROM way_tags WHERE id=#{wayid} AND version=#{version}" + attrlist.each {|a| attributes[a['k'].gsub(':','|')]=a['v'] } + attributes['history']="Retrieved from v"+version.to_s - [0, id, points, old_way.tags, old_way.version] + [0,wayid,points,attributes,xmin,xmax,ymin,ymax,version] end - def getway_history(wayid) #:doc: - history = Way.find(wayid).old_ways.collect do |old_way| - user = old_way.user.data_public? ? old_way.user.display_name : 'anonymous' - [old_way.version, old_way.timestamp.strftime("%d %b %Y, %H:%M"), old_way.visible ? 1 : 0, user] - end - - [history] + # ----- getway_history + # find history of a way + # in: [0] way id + # does: finds history of a way + # out: [0] array of previous versions (where each is + # [0] version, [1] db timestamp (string), + # [2] visible 0 or 1, + # [3] username or 'anonymous' (string)) + def getway_history(args) #:doc: + wayid=args[0] + history=[] + sql=<<-EOF + SELECT version,timestamp,visible,display_name,data_public + FROM ways,users + WHERE ways.id=#{wayid} + AND ways.user_id=users.id + AND ways.visible=1 + ORDER BY version DESC + EOF + histlist=ActiveRecord::Base.connection.select_all(sql) + histlist.each { |row| + if row['data_public'].to_i==1 then user=row['display_name'] else user='anonymous' end + history<<[row['version'],row['timestamp'],row['visible'],user] + } + [history] end - # Get a relation with all tags and members. - # Returns: - # 0. relation id, - # 1. hash of tags, - # 2. list of members. - - def getrelation(relid) #:doc: - rel = Relation.find(relid) + # ----- getrelation + # Get a relation with all of it's tags, and member IDs + # The input is an array with the following components, in order: + # 0. relid - the ID of the relation to get + # + # The output is an array which contains: + # [0] relation id, [1] hash of tags, [2] list of members + def getrelation(args) #:doc: + relid = args[0] + relid = relid.to_i + + RAILS_DEFAULT_LOGGER.info(" Message: getrel, id=#{relid}") + + rel = Relation.find(relid) - [relid, rel.tags, rel.members] + [relid,rel.tags,rel.members]#nodes,ways] end # ----- getrelation @@ -264,11 +306,7 @@ class AmfController < ApplicationController uid=getuserid(usertoken) if !uid then return -1,"You are not logged in, so the point could not be saved." end - def putrelation(renumberednodes, renumberedways, usertoken, relid, tags, members, visible) #:doc: - uid = getuserid(usertoken) - if !uid then return -1,"You are not logged in, so the relation could not be saved." end - - relid = relid.to_i + relid = relid.to_i visible = visible.to_i # create a new relation, or find the existing one @@ -308,7 +346,7 @@ class AmfController < ApplicationController rel.save_with_history! #end - [0, relid, rel.id] + [0,relid,rel.id] end # ----- putway @@ -331,84 +369,55 @@ class AmfController < ApplicationController uid=getuserid(usertoken) if !uid then return -1,"You are not logged in, so the way could not be saved." end - def putway(renumberednodes, usertoken, originalway, points, attributes) #:doc: - - # -- Initialise and carry out checks - - uid = getuserid(usertoken) - if !uid then return -1,"You are not logged in, so the way could not be saved." end + RAILS_DEFAULT_LOGGER.info(" putway authenticated happily") + db_uqn='unin'+(rand*100).to_i.to_s+uid.to_s+originalway.to_i.abs.to_s+Time.new.to_i.to_s # temp uniquenodes table name, typically 51 chars + db_now='@now'+(rand*100).to_i.to_s+uid.to_s+originalway.to_i.abs.to_s+Time.new.to_i.to_s # 'now' variable name, typically 51 chars + ActiveRecord::Base.connection.execute("SET #{db_now}=NOW()") + originalway=originalway.to_i + oldversion=oldversion.to_i - originalway = originalway.to_i + RAILS_DEFAULT_LOGGER.info(" Message: putway, id=#{originalway}") - points.each do |a| - if a[2] == 0 or a[2].nil? then return -2,"Server error - node with id 0 found in way #{originalway}." end - if a[1] == 90 then return -2,"Server error - node with lat -90 found in way #{originalway}." end - end + # -- Check for null IDs, short ways or lats=90 - if points.length < 2 then return -2,"Server error - way is only #{points.length} points long." end + points.each do |a| + if a[2]==0 or a[2].nil? then return -2,"Server error - node with id 0 found in way #{originalway}." end + if coord2lat(a[1],masterscale,basey)==90 then return -2,"Server error - node with lat -90 found in way #{originalway}." end + end + + if points.length<2 then return -2,"Server error - way is only #{points.length} points long." end # -- 3. read original way into memory - if originalway < 0 - way = Way.new - uniques = [] - else - way = Way.find(originalway) - uniques = way.unshared_node_ids - end + xc={}; yc={}; tagc={}; vc={} + if originalway>0 + way=originalway + if oldversion==0 then r=readwayquery(way,false) + else r=readwayquery_old(way,oldversion,true) end + r.each { |row| + id=row['id'].to_i + if (id>0) then + xc[id]=row['longitude'].to_f + yc[id]=row['latitude' ].to_f + tagc[id]=row['tags'] + vc[id]=row['visible'].to_i + end + } + ActiveRecord::Base.connection.update("UPDATE current_ways SET timestamp=#{db_now},user_id=#{uid},visible=1 WHERE id=#{way}") + else + way=ActiveRecord::Base.connection.insert("INSERT INTO current_ways (user_id,timestamp,visible) VALUES (#{uid},#{db_now},1)") + end # -- 4. get version by inserting new row into ways - nodes = [] - - points.each do |n| - lon = n[0].to_f - lat = n[1].to_f - id = n[2].to_i - savenode = false - - if renumberednodes[id] - id = renumberednodes[id] - elsif id < 0 - # Create new node - node = Node.new - savenode = true - else - node = Node.find(id) - if !fpcomp(lat, node.lat) or !fpcomp(lon, node.lon) or - Tags.join(n[4]) != node.tags or !node.visible? - savenode = true - end - end - - if savenode - node.user_id = uid - node.lat = lat - node.lon = lon - node.tags = Tags.join(n[4]) - node.visible = true - node.save_with_history! - - if id != node.id - renumberednodes[id] = node.id - id = node.id - end - end - - uniques = uniques - [id] - nodes.push(id) - end - - # -- Delete any unique nodes - - uniques.each do |n| - deleteitemrelations(n, 'node') - - node = Node.find(n) - node.user_id = uid - node.visible = false - node.save_with_history! - end + version=ActiveRecord::Base.connection.insert("INSERT INTO ways (id,user_id,timestamp,visible) VALUES (#{way},#{uid},#{db_now},1)") + + # -- 5. compare nodes and update xmin,xmax,ymin,ymax + + xmin=ymin= 999999 + xmax=ymax=-999999 + insertsql='' + nodelist=[] points.each_index do |i| xs=coord2long(points[i][0],masterscale,baselong) @@ -422,13 +431,88 @@ class AmfController < ApplicationController long=(xs * 10000000).round tile=QuadTile.tile_for_point(ys, xs) - way.tags = attributes - way.nds = nodes - way.user_id = uid - way.visible = true - way.save_with_history! + # compare node + if node<0 + # new node - create + if renumberednodes[node.to_s].nil? + newnode=ActiveRecord::Base.connection.insert("INSERT INTO current_nodes ( latitude,longitude,timestamp,user_id,visible,tags,tile) VALUES ( #{lat},#{long},#{db_now},#{uid},1,#{tagsql},#{tile})") + ActiveRecord::Base.connection.insert("INSERT INTO nodes (id,latitude,longitude,timestamp,user_id,visible,tags,tile) VALUES (#{newnode},#{lat},#{long},#{db_now},#{uid},1,#{tagsql},#{tile})") + points[i][2]=newnode + nodelist.push(newnode) + renumberednodes[node.to_s]=newnode.to_s + else + points[i][2]=renumberednodes[node.to_s].to_i + end + + elsif xc.has_key?(node) + nodelist.push(node) + # old node from original way - update + if ((xs/0.0000001).round!=(xc[node]/0.0000001).round or (ys/0.0000001).round!=(yc[node]/0.0000001).round or tagstr!=tagc[node] or vc[node]==0) + ActiveRecord::Base.connection.insert("INSERT INTO nodes (id,latitude,longitude,timestamp,user_id,visible,tags,tile) VALUES (#{node},#{lat},#{long},#{db_now},#{uid},1,#{tagsql},#{tile})") + ActiveRecord::Base.connection.update("UPDATE current_nodes SET latitude=#{lat},longitude=#{long},timestamp=#{db_now},user_id=#{uid},tags=#{tagsql},visible=1,tile=#{tile} WHERE id=#{node}") + end + else + # old node, created in another way and now added to this way + end + end + + # -- 6a. delete any nodes not in modified way + + createuniquenodes(way,db_uqn,nodelist) # nodes which appear in this way but no other + + sql=<<-EOF + INSERT INTO nodes (id,latitude,longitude,timestamp,user_id,visible,tile) + SELECT DISTINCT cn.id,cn.latitude,cn.longitude,#{db_now},#{uid},0,cn.tile + FROM current_nodes AS cn,#{db_uqn} + WHERE cn.id=node_id + EOF + ActiveRecord::Base.connection.insert(sql) + + sql=<<-EOF + UPDATE current_nodes AS cn, #{db_uqn} + SET cn.timestamp=#{db_now},cn.visible=0,cn.user_id=#{uid} + WHERE cn.id=node_id + EOF + ActiveRecord::Base.connection.update(sql) + + deleteuniquenoderelations(db_uqn,uid,db_now) + ActiveRecord::Base.connection.execute("DROP TEMPORARY TABLE #{db_uqn}") + + # 6b. insert new version of route into way_nodes + + insertsql ='' + currentsql='' + sequence =1 + points.each do |p| + if insertsql !='' then insertsql +=',' end + if currentsql!='' then currentsql+=',' end + insertsql +="(#{way},#{p[2]},#{sequence},#{version})" + currentsql+="(#{way},#{p[2]},#{sequence})" + sequence +=1 + end + + ActiveRecord::Base.connection.execute("DELETE FROM current_way_nodes WHERE id=#{way}"); + ActiveRecord::Base.connection.insert( "INSERT INTO way_nodes (id,node_id,sequence_id,version) VALUES #{insertsql}"); + ActiveRecord::Base.connection.insert( "INSERT INTO current_way_nodes (id,node_id,sequence_id ) VALUES #{currentsql}"); - [0, originalway, way.id, renumberednodes] + # -- 7. insert new way tags + + insertsql ='' + currentsql='' + attributes.each do |k,v| + if v=='' or v.nil? then next end + if v[0,6]=='(type ' then next end + if insertsql !='' then insertsql +=',' end + if currentsql!='' then currentsql+=',' end + insertsql +="(#{way},'"+sqlescape(k.gsub('|',':'))+"','"+sqlescape(v)+"',#{version})" + currentsql+="(#{way},'"+sqlescape(k.gsub('|',':'))+"','"+sqlescape(v)+"')" + end + + ActiveRecord::Base.connection.execute("DELETE FROM current_way_tags WHERE id=#{way}") + if (insertsql !='') then ActiveRecord::Base.connection.insert("INSERT INTO way_tags (id,k,v,version) VALUES #{insertsql}" ) end + if (currentsql!='') then ActiveRecord::Base.connection.insert("INSERT INTO current_way_tags (id,k,v) VALUES #{currentsql}") end + + [0,originalway,way,renumberednodes,xmin,xmax,ymin,ymax] end # ----- putpoi @@ -447,32 +531,34 @@ class AmfController < ApplicationController uid=getuserid(usertoken) if !uid then return -1,"You are not logged in, so the point could not be saved." end - def putpoi(usertoken, id, lon, lat, tags, visible) #:doc: - uid = getuserid(usertoken) - if !uid then return -1,"You are not logged in, so the point could not be saved." end + db_now='@now'+(rand*100).to_i.to_s+uid.to_s+id.to_i.abs.to_s+Time.new.to_i.to_s # 'now' variable name, typically 51 chars + ActiveRecord::Base.connection.execute("SET #{db_now}=NOW()") - id = id.to_i - visible = (visible.to_i == 1) - - if id > 0 then - node = Node.find(id) - - if !visible then - unless node.ways.empty? then return -1,"The point has since become part of a way, so you cannot save it as a POI." end - deleteitemrelations(id, 'node') - end - else - node = Node.new - end - - node.user_id = uid - node.lat = lat - node.lon = lon - node.tags = Tags.join(tags) - node.visible = visible - node.save_with_history! + id=id.to_i + visible=visible.to_i + if visible==0 then + # if deleting, check node hasn't become part of a way + inway=ActiveRecord::Base.connection.select_one("SELECT cw.id FROM current_ways cw,current_way_nodes cwn WHERE cw.id=cwn.id AND cw.visible=1 AND cwn.node_id=#{id} LIMIT 1") + unless inway.nil? then return -1,"The point has since become part of a way, so you cannot save it as a POI." end + deleteitemrelations(id,'node',uid,db_now) + end - [0, id, node.id] + x=coord2long(x.to_f,masterscale,baselong) + y=coord2lat(y.to_f,masterscale,basey) + tagsql="'"+sqlescape(array2tag(tags))+"'" + lat=(y * 10000000).round + long=(x * 10000000).round + tile=QuadTile.tile_for_point(y, x) + + if (id>0) then + ActiveRecord::Base.connection.insert("INSERT INTO nodes (id,latitude,longitude,timestamp,user_id,visible,tags,tile) VALUES (#{id},#{lat},#{long},#{db_now},#{uid},#{visible},#{tagsql},#{tile})"); + ActiveRecord::Base.connection.update("UPDATE current_nodes SET latitude=#{lat},longitude=#{long},timestamp=#{db_now},user_id=#{uid},visible=#{visible},tags=#{tagsql},tile=#{tile} WHERE id=#{id}"); + newid=id + else + newid=ActiveRecord::Base.connection.insert("INSERT INTO current_nodes (latitude,longitude,timestamp,user_id,visible,tags,tile) VALUES (#{lat},#{long},#{db_now},#{uid},#{visible},#{tagsql},#{tile})"); + ActiveRecord::Base.connection.update("INSERT INTO nodes (id,latitude,longitude,timestamp,user_id,visible,tags,tile) VALUES (#{newid},#{lat},#{long},#{db_now},#{uid},#{visible},#{tagsql},#{tile})"); + end + [0,id,newid] end # ----- getpoi @@ -493,32 +579,112 @@ class AmfController < ApplicationController end end - def getpoi(id) #:doc: - n = Node.find(id) + # ----- deleteway + # delete way and constituent nodes from database + # in: [0] user token (string), [1] way id + # does: deletes way from db and any constituent nodes not used elsewhere + # also removes ways/nodes from any relations they're in + # out: [0] 0 (success), [1] way id (unchanged) + + def deleteway(args) #:doc: + usertoken,way_id=args + RAILS_DEFAULT_LOGGER.info(" Message: deleteway, id=#{way_id}") + uid=getuserid(usertoken) + if !uid then return -1,"You are not logged in, so the way could not be deleted." end + + # FIXME + # the next bit removes the way from any relations + # the delete_with_relations_and_nodes_and_history method should do this, + # but at present it just throws a 'precondition failed' + way=way.to_i + db_now='@now'+(rand*100).to_i.to_s+uid.to_s+way.abs.to_s+Time.new.to_i.to_s + db_uqn='unin'+(rand*100).to_i.to_s+uid.to_s+way.abs.to_s+Time.new.to_i.to_s + ActiveRecord::Base.connection.execute("SET #{db_now}=NOW()") + createuniquenodes(way,db_uqn,[]) + deleteuniquenoderelations(db_uqn,uid,db_now) + deleteitemrelations(way_id,'way',uid,db_now) + ActiveRecord::Base.connection.execute("DROP TEMPORARY TABLE #{db_uqn}") + # end of FIXME + + # now delete the way + user = User.find(uid) + way = Way.find(way_id) + way.delete_with_relations_and_nodes_and_history(user) + return [0,way_id] + end + + + def readwayquery(id,insistonvisible) #:doc: + sql=<<-EOF + SELECT latitude*0.0000001 AS latitude,longitude*0.0000001 AS longitude,current_nodes.id,tags,visible + FROM current_way_nodes,current_nodes + WHERE current_way_nodes.id=#{id} + AND current_way_nodes.node_id=current_nodes.id + EOF + if insistonvisible then sql+=" AND current_nodes.visible=1 " end + sql+=" ORDER BY sequence_id" + ActiveRecord::Base.connection.select_all(sql) + end - if n - return [n.id, n.lon, n.lat, n.tags_as_hash] - else - return [nil, nil, nil, ''] - end + # Get the latest version id of a way + def getlastversion(id,version) #:doc: + old_way = OldWay.find(:first, :conditions => ['visible=1 AND id=?' , id], :order => 'version DESC') + old_way.version end + def readwayquery_old(id,version,historic) #:doc: + # Node handling on undelete (historic=false): + # - always use the node specified, even if it's moved - def deleteway(usertoken, way_id) #:doc: - uid = getuserid(usertoken) - if !uid then return -1,"You are not logged in, so the way could not be deleted." end + # Node handling on revert (historic=true): + # - if it's a visible node, use a new node id (i.e. not mucking up the old one) + # which means the SWF needs to allocate new ids + # - if it's an invisible node, we can reuse the old node id - # FIXME: would be good not to make two history entries when removing - # two nodes from the same relation - user = User.find(uid) - way = Way.find(way_id) - way.unshared_node_ids.each do |n| - deleteitemrelations(n, 'node') - end + # ----- get node list from specified version of way, + # and the _current_ lat/long/tags of each node - way.delete_with_relations_and_nodes_and_history(user) + row=ActiveRecord::Base.connection.select_one("SELECT timestamp FROM ways WHERE version=#{version} AND id=#{id}") + waytime=row['timestamp'] - [0, way_id] + sql=<<-EOF + SELECT cn.id,visible,latitude*0.0000001 AS latitude,longitude*0.0000001 AS longitude,tags + FROM way_nodes wn,current_nodes cn + WHERE wn.version=#{version} + AND wn.id=#{id} + AND wn.node_id=cn.id + ORDER BY sequence_id + EOF + rows=ActiveRecord::Base.connection.select_all(sql) + + # ----- if historic (full revert), get the old version of each node + # - if it's in another way now, generate a new id + # - if it's not in another way, use the old ID + + if historic then + rows.each_index do |i| + sql=<<-EOF + SELECT latitude*0.0000001 AS latitude,longitude*0.0000001 AS longitude,tags,cwn.id AS currentway + FROM nodes n + LEFT JOIN current_way_nodes cwn + ON cwn.node_id=n.id AND cwn.id!=#{id} + WHERE n.id=#{rows[i]['id']} + AND n.timestamp<="#{waytime}" + ORDER BY n.timestamp DESC + LIMIT 1 + EOF + row=ActiveRecord::Base.connection.select_one(sql) + nx=row['longitude'].to_f + ny=row['latitude'].to_f + if (!row.nil?) + if (row['currentway'] && (nx!=rows[i]['longitude'].to_f or ny!=rows[i]['latitude'].to_f or row['tags']!=rows[i]['tags'])) then rows[i]['id']=-1 end + end + rows[i]['longitude']=nx + rows[i]['latitude' ]=ny + rows[i]['tags' ]=row['tags'] + end + end + rows end def createuniquenodes(way,uqn_name,nodelist) #:doc: @@ -555,15 +721,10 @@ class AmfController < ApplicationController AND cr.visible=1 EOF - def deleteitemrelations(objid, type) #:doc: - relations = RelationMember.find(:all, - :conditions => ['member_type = ? and member_id = ?', type, objid], - :include => :relation).collect { |rm| rm.relation }.uniq - - relations.each do |rel| - rel.members.delete_if { |x| x[0] == type and x[1] == objid } - rel.save_with_history! - end + relnodes=ActiveRecord::Base.connection.select_all(sql) + relnodes.each do |a| + removefromrelation(a['node_id'],'node',a['id'],uid,db_now) + end end def deleteitemrelations(objid,type,uid,db_now) #:doc: @@ -663,8 +824,3 @@ class AmfController < ApplicationController end end - -# Local Variables: -# indent-tabs-mode: t -# tab-width: 4 -# End: diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 6b36b41ae..8b735600d 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -176,15 +176,15 @@ class ApiController < ApplicationController end end - relations = Relation.find_for_nodes(visible_nodes.keys, :conditions => "visible = 1") + - Relation.find_for_ways(way_ids, :conditions => "visible = 1") + relations = visible_nodes.values.collect { |node| node.containing_relations.visible }.flatten + + way_ids.collect { |id| Way.find(id).containing_relations.visible }.flatten # we do not normally return the "other" partners referenced by an relation, # e.g. if we return a way A that is referenced by relation X, and there's # another way B also referenced, that is not returned. But we do make # an exception for cases where an relation references another *relation*; # in that case we return that as well (but we don't go recursive here) - relations += Relation.find_for_relations(relations.collect { |r| r.id }, :conditions => "visible = 1") + relations += relations.collect { |relation| relation.containing_relations.visible }.flatten # this "uniq" may be slightly inefficient; it may be better to first collect and output # all node-related relations, then find the *not yet covered* way-related ones etc. diff --git a/app/models/node.rb b/app/models/node.rb index cac611163..abfa44d67 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -17,12 +17,6 @@ class Node < ActiveRecord::Base has_many :way_nodes has_many :ways, :through => :way_nodes - has_many :old_way_nodes - has_many :ways_via_history, :class_name=> "Way", :through => :old_way_nodes, :source => :way - - has_many :old_way_nodes - has_many :ways_via_history, :class_name=> "Way", :through => :old_way_nodes, :source => :way - has_many :containing_relation_members, :class_name => "RelationMember", :as => :member has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation, :extend => ObjectFinder diff --git a/app/models/old_way_node.rb b/app/models/old_way_node.rb index 7420b5cfc..85a6f3c1c 100644 --- a/app/models/old_way_node.rb +++ b/app/models/old_way_node.rb @@ -2,6 +2,4 @@ class OldWayNode < ActiveRecord::Base set_table_name 'way_nodes' set_primary_keys :id, :version, :sequence_id - - belongs_to :way, :foreign_key=> :id end diff --git a/app/models/relation.rb b/app/models/relation.rb index 5d7092908..9ee118f6e 100644 --- a/app/models/relation.rb +++ b/app/models/relation.rb @@ -105,24 +105,6 @@ class Relation < ActiveRecord::Base return el1 end - def self.find_for_nodes(ids, options = {}) - self.with_scope(:find => { :joins => "INNER JOIN current_relation_members ON current_relation_members.id = current_relations.id", :conditions => "current_relation_members.member_type = 'node' AND current_relation_members.member_id IN (#{ids.join(',')})" }) do - return self.find(:all, options) - end - end - - def self.find_for_ways(ids, options = {}) - self.with_scope(:find => { :joins => "INNER JOIN current_relation_members ON current_relation_members.id = current_relations.id", :conditions => "current_relation_members.member_type = 'way' AND current_relation_members.member_id IN (#{ids.join(',')})" }) do - return self.find(:all, options) - end - end - - def self.find_for_relations(ids, options = {}) - self.with_scope(:find => { :joins => "INNER JOIN current_relation_members ON current_relation_members.id = current_relations.id", :conditions => "current_relation_members.member_type = 'relation' AND current_relation_members.member_id IN (#{ids.join(',')})" }) do - return self.find(:all, options) - end - end - # FIXME is this really needed? def members unless @members diff --git a/app/models/way.rb b/app/models/way.rb index 45789dabe..64b11cf67 100644 --- a/app/models/way.rb +++ b/app/models/way.rb @@ -235,10 +235,17 @@ class Way < ActiveRecord::Base # delete a way and it's nodes that aren't part of other ways, with history def delete_with_relations_and_nodes_and_history(user) + + node_ids = self.nodes.collect {|node| node.id } + node_ids_not_to_delete = [] + way_nodes = WayNode.find(:all, :conditions => "node_id in (#{node_ids.join(',')}) and id != #{self.id}") + + node_ids_not_to_delete = way_nodes.collect {|way_node| way_node.node_id} + node_ids_to_delete = node_ids - node_ids_not_to_delete # delete the nodes not used by other ways - self.unshared_node_ids.each do |node_id| + node_ids_to_delete.each do |node_id| n = Node.find(node_id) n.user_id = user.id n.visible = false @@ -248,18 +255,7 @@ class Way < ActiveRecord::Base self.user_id = user.id self.delete_with_relations_and_history(user) - end - - # Find nodes that belong to this way only - def unshared_node_ids - node_ids = self.nodes.collect { |node| node.id } - - unless node_ids.empty? - way_nodes = WayNode.find(:all, :conditions => "node_id in (#{node_ids.join(',')}) and id != #{self.id}") - node_ids = node_ids - way_nodes.collect { |way_node| way_node.node_id } - end - return node_ids end # Temporary method to match interface to nodes diff --git a/config/environment.rb b/config/environment.rb index e6af619eb..495f94d80 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -74,3 +74,8 @@ Rails::Initializer.run do |config| # Make Active Record use UTC-base instead of local time # config.active_record.default_timezone = :utc end + +# This has to be after the above block for some reason (doesnt pull in /lib/osm.rb?) +POTLATCH_PRESETS = Potlatch::Potlatch.get_presets() + + diff --git a/config/initializers/potlatch.rb b/config/initializers/potlatch.rb deleted file mode 100644 index b98d60e1a..000000000 --- a/config/initializers/potlatch.rb +++ /dev/null @@ -1,6 +0,0 @@ -# Load presets -POTLATCH_PRESETS = Potlatch::Potlatch.get_presets() - -# Use SQL (faster) or Rails (more elegant) for common Potlatch reads -# getway speedup is approximately x2, whichways approximately x7 -POTLATCH_USE_SQL = false diff --git a/lib/geo_record.rb b/lib/geo_record.rb index f1a923c42..025bbe4a8 100644 --- a/lib/geo_record.rb +++ b/lib/geo_record.rb @@ -37,6 +37,15 @@ module GeoRecord return self.longitude.to_f / 10000000 end + # Potlatch projections + def lon_potlatch(baselong,masterscale) + (self.lon-baselong)*masterscale + end + + def lat_potlatch(basey,masterscale) + -(lat2y(self.lat)-basey)*masterscale + end + private def lat2y(a) diff --git a/public/potlatch/potlatch.swf b/public/potlatch/potlatch.swf index 17d7106cb08becf53cf919b23d74e36562e6eec5..721840fe4ec4d006d7b62d134313f7e90fffee54 100755 GIT binary patch literal 140596 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 C(O_Eu literal 148876 zcmdqKcVLu7{y#ojLUsd4N5B9}34|7kbSVi0k^m`$&}?y&-6RW}-LShMi8XfYfK<^_ zK@mH8ieioB6i+>SZ+NF?zw=JdF8RLR@0od?XE#OEkH0^D+?nTj=9ziVd*1WzGtcb& zsse;A1T-T{*cm8;RFDS&@)1i#&-Bgxo=-^= zJ0HCuuxqdVI5B#~mM_NjPP2LEU9jw(BJpzL@ZL*BO3zLEyQ0=EZ(iM2sx>*dwctzC zI%)S)xt|nK|3~QlyXgLRqPuQl(P@tjtZ5XTCUEBy#7#Hd)I34#*s%kDFS_U={5|#5 zQ}H(#4C3zzC!B!4`T6@civI$cpVBgJ-G*&);h?CAR<9cs9GA zfZgmW#!0WE8(Dq%KX@T_7*y-CL-dGyb_%#RvUVo5PZGW2o;!%%anH%($hc>h=o9zs z7JcKMQ$)YG=Z@m2xaUqH)qECWhHHSBx8REj&%+hmAuPUEZ}?t4M~sMg;Csz~bmPCr zlJ6CKBjc)r@Vy?%-?-t$YsmNMuYI2Z1XYNsE{~Y^XxfY8q-&{txrqk{N7C&V=5A~n z;YnF>-R88Dy01vul2@C#($jl{@1o-w)<6x*BViro8Z2g>+q)-8K zz$b?Lgy?a}8&5h9E-36+@b^Z57_LF2OAxbNbAZZ7QMkX?pXT8m{x#c%@TFT?@|M0m zZS#hXYwWo`X>@Txr@ijc_NRxw)Hr&5$DVi2nOJ0-vv$Db6DJRzTn5M^G~|&Qasj}M z7Rwhr*PQ>crf083FCBSx*0E3IfB42JnSlo9>z4-4>v;YfcNhPZJVcEC{^%ly|Ih_R z?nco&6Bs(DifzKy(_WG(-n)3pyJEC!j99+!?hc5J0kxKMk({i#h!pIz&_GPCa{d(YE9sBB6XGhJgv z(WjN`^N1mN(tC|Q_qMF}FH8S$&z9pINw=SK&4)sqvfp*8zpUqJXFfVkY&fU<`fl|F z?(EX!m&M2KQF`Q~1&NnkjNz+8WboA~#!8Azca0Z|-rq3Qhx%unaRy<3bYq8_q>q1m zcJuI_2Zt{ZN$Wmw)g<2_2JJ1M7V2`R{gjg&H%2bMK&%r3ToXj$Q?}DPm?J+T>%oJc zUHaqtV@|f&g~xTYC=gFwnF-j6GSeSVK4HO**Lq&Ex_9`x3~|ssPUAUV;R#&@d>!Iw zjo+l-jNeGtWRd&HkaPQ*{U?`fU->8TX=bnYXIACp9^aHVF6okYpV)D==i|i{C2QyYGdd80nfS@}GXI{yXz^?>koBabV{9+FhN~FHE^BcgtT-x&6bZ zhIT)@vA=7YC|nU(`JP!fweIJerXE+dZ}NG62B_(xpyaICh34z-H|_7b^77qT!{)sE z+GEZ?KlA)kX>V1YzP&fFI!5HbcT<-WGYBwTrmMF|T!AfH1l%MbZ?zrXqCVx*Po+Aof?^;RR`P2Plk3D<$!^0kY_thNd zEsOR(HTbx`r*B;btmcZ`2m4t`{MlRI+#am{y5g-9G>Kc zZ<^mUX#BOFVB_#>@2sjlIPd-07nC)9d3n*)`2)Us>83_Rxw!z7BMPz~3FMn#em?l^ z6}`Hp*mLa=#*tLNK=>-s-BTx>hbH+X%r5|C`X z#%$QcJf0Ohh$(eU4qu%Dl;PRS<7)@8fUn77p`N|`-#mK*Tm|i7I2&9qM4`z4-!ai# z;HhT!r!Q+S^-lU`=C?DRdi%ULr~feKs-lq}9l84-lkOgU=?!0aj&3|+$OliAynWQk z-dp;eehu{KB0a`@#@!CZE5}%<$FTS}k72BBGRKgv0= z`vdb=KQv)w_PgixdE(ABr#4)djd@=p3Rdj8e<6@kM#cTmwx^E$D){cpwI3b%@cONn zU9@=epL@)|v-|x|_FgXrxk|*GQ_?!$YgA8JI`xOMFP+$_{^I&4%bz>B5mlCotes1D z7a3JLe7o(3bB<6|ocK?Aqqync8$fj zrMz*~%inxBcJ21PUtRa+J)?Kr*7?Z}pFf>n4cYTzl2?j?N4mvEnM6##=x@h$yzTZa z|L7F_`#+w%+@E2e;W+)m`$x|D_qNOK{lGi$lNk?m8IttMx>q*ahuYKEU9fZL@Qa`8 zlh#4p{mFuN``R`yF-_4vz+?>r!0cOR>fIZh#S zyhh^0UqAvpEK0@lewTkb_&Z@6z(Qe5>v8#?lD?`9JTfQrl5N4+({AqJy?p7xbl>jH znf7zjGP3O#WTwAfe8PvHi!Du^cci`aK+*-7D@NQ|JROt%y88r;%!vw_QjLtaU1UbM z%0#|z?DA=7uY8yp3m!gw>HfP@N3H06#j9t&nzHQWGamfm4I$E9u)Z zr~Tv{c6ZiYXC2z|$g9a6?mnaLtJ^(dgv%!ukGpyG*_tTy9fUJ^nG*S$(^Jz2M<9@*+rR}({jE#1sv*35Nv>}qTP|q#@q{0DV9BR`@aV@ z8XZqQbC~avi5p$-uHCZKvH1H{h?MSU`%iCxCoJANboN94ZhmF)wX>cdIu6X^M_H9v_WY&i>^jNlAot@7w%pb) zt3rs|`dzqS!Lfrs32ymY^T6x2-gnMcaeUgY3G-KM*g9m{_Wga{Szloj#r-b09u2mxI=m)MkV7zs{cv{I@Dbx4u8`U(xwOSN5tz7t+Fi@PGa>H@MR=#pt zw6gNP%ntZX0cP@Xm@`nYpe>h3aU_>n2wD;4UnI_C5mN{Hco^@i`_pj`AZ^`Vv?H|YG zj<|fz1&^f_kL!4ER!Y~#^&LicFIq9>i;bTRK6L!RZ#HiYjH{{}@?uiwZ}LuC-<;9q z#|2Mq`1$_b@BZ`quKjLUfAYKoVw5W?asvy4AD9S@JaN9`z-^!Iez57C|6SI9>ow1u z?WjuG@^w)x}R95t( ze|^30i0ZqZJ#+@WT`OkoeL2H?`@iV(lWtSBD7m z)hV!$g!f5e4PQHm2w#&$l&>xko4aXO_ElBqHxKUedE=ue z3?18NWA+c-Jt?^phkTd4XO2Cy*WPWPA9twh*o$WWb!>iBlhZy}te7~+xo6I!UDGdo z?1_;L_g3TXBIopR;>dN=<~vW&!J2);ohgu{B+!D6B^$g-1PAo z{XCtwojzdf+uz;%&$9b}JjeTYECO{eLRx3N=wTmjPv0IW|E^|)urI!@udtsxai~b9 zxVqk+DNc1CbJwhEr+(acSEw@ROb$jDXR9WHfDvHW;FTD4_ zRkzJPJN=@rMPOc7d2zB>T)gGSvrNe!-PmEAW8?YnU$_0m_cpD{9^_xtXLnw=T{rIh z;mxh*b-a4llV7Iqt-1E`J((kI?hYl9vWfn6wj+99xbBJD@Q$(D+anw z6*EHp4m9d^JzpQPNu)Flo$md5Lr>=lpgadCpC)oLe=dSfP{75cmBRk*pwIR=%HPcF z^L$zFInVTUUGkUr#ndxhgKLghcYTJ(dEf;5I7j57o9{ev*#n;=sc^c;{A%F$Feeg5 z&*#RkKkBk?vQHiQN&Zb&{eARLAAfQC0VJi)fVz19Es_D%SFf_|(8`Ux?v1JG3(%iZYe@_C+iv;UH+$k=Hm|>R^@lIt z_r!>CFa6Lo!gaP-F!P_*n(6<&EpycDm0g}4@2?nD{C#c49TzT|Xx|H3!xI+gh-Le3 zsGhUl0GxN(vzO$JIGAT> zIo${M`0M{m_|*)o;$W5y>5?xK!fYv%!=&uI_|mj$-$|I zE*1|T?6mQ3v4=9n-*Qj;Vf0Pg8b|JYrpvmSpQhb;V{XCD6Q}hVd$AZYc*-?fo*%Q? z_r~nYFM6+d%!IrS^9Gd7>U8nIpLYJ(`JDe;*JWPDwr)eZ9vbK9aN(wu!bivSSuiZi zm7D&2|B#qA{i|n&I$rtw+?PHad*x~0UwFx58-|>|`1K~|+R0zey7-u@4>nyaZg~H( zbw7y{#k83>U*T{5wt78W!3#9GF680cF(MxR6xStU(ZQ#tPQZJe3cGaeNv_J%8@l{Y z49^ty^S^t1?}U?*_iWfczKa;%BxY{w^K(%VOv|OB;HyXKx|=lluKWKoLNDLlJ#=$p zf7fLq|Luhjn6Y~==RH@I?ASc!xE&WBgwuYp#^(}+&!v2Ih|45ilU*A`_EA^PZ8Fdj z-TIb@qMaqHGt)QOFG@+pAq)q`>nx=l}G{{awXy*A_9a+e0-g3?BN=4YhA4rQZ`4!C{{{O3VJbu<6n7&iGCY zb8Qs`&#YPX6fjkqpm)u*-q(LQxyRjSExyCQ`<`rV==s})|? zNW5l4?+I}o;=3~8PM3p&^20wUzqya*eDF-u!0RX9x$UOjzH4{AW6Rh(VA-Zw!M4oo_~)S_02yg2A5-sZV-i^+tZc_fjvZLopn~TEzOfu zy7t=*JN6uZj_BjsBbHZ<7<{0KUeow&X(#L)`*r~u-YAxD>o?@W?_@c$?pZshy}s>@ zxvy8f@gRb}>orol6%B7tG~B~ir?^ogd-LHVdrSMs-r6Rzx3!0?$920XI^g##ME1p@ zMmcxz3vWI(HRZhQ9;=6VkeIni59ekzoLkgzZdJp%jju`Kc0H^+4u4p8wm+;tw>hl4 z+8fpY*WIG%^W%negx)rW_2~FFd`WZ8I&<#<3~H|))E#P2cd9}CSqHqM zdaoRIrOns4;`)u-6l2ON91^CAJGNi$Dvi7w?WuN#2@s=0^yKwh}Hgv zwccQ@UpT3>+FxDfkBB5u6A9PU1wy`Xo#=oEf7BnV_J?W_3Gu}x%B%e4tINXm!Yv|R zUmz?}gts;p79B-(*yjz3PO`W(Tu~v8(Dxy%$=6i{B0K*p9iX@p~~`RJjVJ_40O?sPcw<;(Afz4~d)T zZ@t({mzrR0RP3X>uy}wj(Xg29c&VRVtozGkS5ijCSZ_^W?6{0cW4+ZC0{69;BTH$t zu3~H~;w@i|`3l9NL@}yS6^qqOA3IjWssd3_N+n}Ov?dsc39juQi;DGBEMkG6p9mbN z7h`L}F|c2G)!2q=Z_R`Zz!nYOsxSzQ_CAa%qrN&wEu*y+)L==>Tj>|ks&HLCv7k2? zs0@jcMVLr$(4Qan`9&zagziC=Xy9c3qChm}4}pyf%U1czV~Os8|sULqJFz@Rl$E!^zjRHK3b+E?)Zp8yr+n%YqD&(^H6ugnNCh@Z-MR9~Dcg zFc6=jQ>8z)C=5D^Sa>y1sg3$0@(#!b{2~^CmVml2s1^<_^fzRO>q1mo1lmXaK7k_9 zP#5q4-3CR`29jYB1iJFBtg;?j0n`&^l@02S86XIG0SLZFmoa@Gp^2fHm9GSF_D1=y zBp_IYlotzslAaV_+ z9m)nw6b=Rp*MhB3X56b{=p|i>TNL_(K+$hBp9iT7hw{Vdgb7BygJ_r%CR!BL%VWzi zQ-mcyVC+)X^b_W>JX{N%h?{7{zoyoY>4$pZr*eN_Egmp*SqC?kI`T=?0aOL2Do|c! z0VE$)t!%IpPZ`v8c@=fSPg1~yFXF8v3Bk3FvE-Ktcdpn8U{S2c&G-3D;5s= zBd{udQ5LB5`zrmVLE|oB+?5%3F%k6=6{BDSvTRElK;ddp?yd2b1)$Ud;F6#>R9Q>v zh;BrY(qx`-8RN%^DD)B;1-~FACd$A7L2m;X24)7DF9guOKy?|kXk`R5>BCr~v2e8- zAt})iX^SYt6-v|_t?Np%ZxEr%_r^e-XB2nA$V zy+EmPTNjnudO4`Sgw(bNQ{?f+JembPjGHHY#R!nMrj%7Xs)#@dEDq_v`5-rD2S&>8 zjpzr%4hKqofe09zJPoK-Wt~gc2BLv7XzNmMu%^n3S%pwV{e(oeuI>p}FfL;}@JBl zVCd|41WNf5fnFh|5Cvgkfl3-IzaWx_h*84qp#)0FPa*!!DOv)}9j^1>#=~Yg>PgR$ zb3}EZR^Z75O68U8N?{F6LUg$_eM|f?55$W~Jn3+{;9z)SReldd+GDb(gs19}{Ia(Z zDAjjL5=kl`u>MGazb*^@NT941sw2zi^LRa|>Vfg*IfK2WTNFVZ0XcPJ_BS^igyJ=y z#gg2-`6VI{WsNBv9-{-Of1j@;T&x{g>JN1Df=!fbOVmRh4##3gyj)w;h`H|FVN89i87ekpg&ZJOE~BwIU-q$ zg~Og;SaTA|!t|6HHb@>8VGmSlI0X(>1h7dmqJq5bQnaIH)NKiFK|!!v`D*AblJ5}d zUnqPSwaDtZT%c7KR1NeEyGx`Q<_BPcMRhG85X*}?xFyRYuoq>xfwqwNdr1edUJrz7 zNMDinQXPgt1{=WDVZ|a_NY+qgdD-X+?r@bi5P|PRo`!NXpfm#^R!xjWID*gsV2Q2R zd#DJ*e3nAJLqw?Rl4>s;HNGuo-;W&)Sx^!P!5UMo6KmKH3jzn& z^C(}}K!?Xb;aZqEVoF$PLT0T$yOy3X`Q*t_fnpc26p9cCfoP->G4P;2=4TERKEJ>XoJop$xPidmr_rdVq>Fi#`Ek9hTlP{0;V&VI^rs%Y_%q=aQR!rDY8w zipT`$#o$Clro&_O`RfZSL>7muMdY3cgZK*N<>ZIK`vJFMx-f!RxF#E-LnH^rh!v{I z6-2-wuRI{xBfaK3If|mfJmF;vT57&uRU48W zqMnxM$eLk!w3CyD=7$g^0U2B*IM`(@28TYe^NAnlMOKB%@%M z7dZC(Aj!@q2$qOjrTD_NP;qkDV~hRp3_~ffQ9#zRa#c zuBaC|HVI4P915Tdsf}di!U_#Q)nB6H!7z+fAmk0!3w_sMay7v>nA)O46iZ_+l<+T6 zsSM}_(ys}sRSX>uP0H;{31k%MrjS@ew<@0EK_jl>M`goHWAYJU0h#pDhg6zTKb~{7ijq)j05K!SOWQu z-$q3>{?8F|k=CrnXbA&wIM z9^6c%%|)GHgQOKx&?0P#92zdkpBg%R?TEmn894?-EU;n}vrtsQoL0(dZo?3*hJ%qE z@CL&OU@!}Mpwwb6)D=)Imlw3>*aw0WAC90iBoZkifqSbN3duf5loV-?7g0hzbTe5Z zT|*m`Sa`Gtp@MV)RA8m+WY9new!~H!i@FH>Ru-VS?3pJtQyz{{od=8oQI`}9A});j zLmnx26ig+6XLaqXBOi~~0+iQCK_#XT^E+n_W*ah16M=XNN`n0g-N{DpKU0H}q zsu2-N1=^wwry)5Qp>UHtCv<6uEGak=csQpNF3_W771H$_AuyVzt4EK^@gGgCWFc?@ zQb%xgq({Orq?h9y@GJxa2~fdd97YExnZiuC&qz5&5!Y8MgUx!hSSu!pjFCv=8x^ov z&@tX4BP7?9m>x=mcsRs7XaUX-Bcx(_(Wqb^X=afgQ3EsTQEr23LIW{9Nz%kI9%3Uz zTOt}M2fx&Yq?ZILVk|*+Lg@xM2D)JG1u>5-r#pHqE5h&?tOhs@E+bSDn1inY>^7GIDAoqNWFIAYqHB;rp_vA= zGA0XO0er4l;}e`6tsoD!y`JbAaKPDJaxHQBU81Y1>$`Cd*F%Xh3cIW=!84MvJ%Ypv7y!A#&| znqYex%oeIZ6jKJ4{A9jJ=UA1=3!5RBCvPMeK$O5~a*tBO)3vIQ&9!n?S4KhI!%jzq z2fmt^Yvvr)JL*9Kz#V*q8l>p(DyCj5-1L(&1{!}JB4)-MnK5XUCh&=+dBwa;Ep0u* zLXw3B`r`{1hURjvoMb~rv}#N-O29~?n@cWFC1uxmxtp>%>IR%DSHPF%&DD$IGRaV( z<8){>io4LJv<5mCc96n8X*bCyTAG&+j}IRxXjfk7v@0cVk#31$H3PUT=WG{QY8mgr zz*oz=Qh8y?fPW$vQ2@msV#r+1cgETjmI$I)43lv+zhXj=h)Dr6u;<1lAhs+gai>-M z@~S1!2r>~-sxoj$7kYyw;hbQ&3@OWM&SN5%his-?bCM;HOd7*{Dkqh>j5i>#cBEltWepqStv)=9G4U-jHq?mL{QzL#w5)DT%>ur$UVHk+Vc1f&a=i zTbhL|C>}5Y?$p$iuO~1mVXWp>3CS;ExsqJQ3=!nN{(8<1a!zjvtxckiVjH={h)I_> zMc_*;71IpY=-mJ`e#A70CGjc`Iv5;YLDU2$;Tmka2nj6H;SX{y+){4RfFFhW6!}E8 z5RqPoULk;_VPp-N&W7oMh^;RPgQv zMpOxJ9df=N_MnVjqwG*%MHe{%9~3OR9RwzWC0c@F`-xjo!vS0kR`AdZ{u1#Z9c)CI zBl1FOVLA)xQzk;J0w|NQr|S5RA%NLAKaP|zFDp@!6>baGwm7SZ)!Z0)n35;wQbdZ6 zCF<%0l7UneT8UAhd)8Jpa3nYc1CG*=7c1cKfeY)U;=lrPIq8?E(j)Q` zjg~{7$~;{*WmQ#H7dNzQ%(##@;gj4KUMTYkroJ2`T%fA%w*bBg45nCb~=^GkgJ|7AcUhqU1{|JX(0GT z6X+J=k7w{7T@cn&y38z(a6M>SESO{S2xr@P@tj;Ms9BDyz>Xm_tdv_oKuM@vRuwC0 z>kup826Dq_;@JNY4d_Nc5+n*iqevZuL)?TWk`^~89FVCW-ghGBns2q~XvoLX70E7X z`BmPvUec;HvFVcO5iYEbrsL!eT6f110-K={40Lg=ACdtoOA^W2i>NkGVS9sww%Q3G z$0NPEI%!6Uqwtjs!nFSi z1do#PQuiWj2^gQ08SFo_bbi)~Me~-;TO<$zP~F0Ct-427#IsZu4lRwKfWL`xycr8R+iYE{n*3N`NQH|!%J~=TgHq%Sl z1Goz^XU*fMbP2hJ=+NB7Lr((xQ;5e%^4S2PtXOUsiYhROt2t8#`(OnC!+~g*U`WqJ z!7U-69Cy$ityE)-#f!jdUf*0wno@zxm&-d)S8WZX=L~W~y?z+UAowC99H|^j#nG|j zGsb0%8yoj_%(QXirj0*(tjJhZgJpENzt8{z_36h(R0Tw2)PQEXj<<^YiLX+^{c!u5 zs+zHfQyI`9(y@%V`c<$m{sSaCF2`5hl5tt} z@B$@lB-={L8wP^D0?yH}WRGWKQ~)ANNuPk=WVO6Knr@?hgxaJ6Cejo9SGbE&e-S4Z z>+o2I#1!&+98S+A*bGnFUW6(l+E9%;NR&2IW7!@VGjKmWOFx-6#2{0L2xOJC@_Kuh zz}{z4k&J$QIWiu!&{~4M!YG_y8w{>QWK8$DycmF+{6GlH6>vexgL~hqBLDM`w?VGzq-M8YqXQ@DDx6$)z7F_pOkd#6%(WPT4MciPUu{9P^aF-$Qv>YTK*rJQfr&s`&%L`wqF-(+l?$Ek=*)A}CDnd2dZ-ohGwMcbA2eq+AwZ?u|_ULlu zPGja?NE_{cKqR~bi3ViT>g3)58H}=FSAD8#a6YJ-+G0R?lR~Ih7!YX2d~eMlGP|@I zpy22*(d&_sET$RRX=(;P(xcW=GCX+|G}|7z>^po3Ej|w)?GeNQ!631QswqP{?27R~ zF?nSE4OwICXW|S>)KeR+dGfQ z%}@b|b9v(AU&5n?*$|5d@nkSpjJOeyZGbJHKbpF_?U*)Zh9e#WjGh$i!wS}jT>3K~ znFSA)Y(2yVU^eV_@o05A8WTmM0-cDf!Vv=yw^uf@F0eY#iW%kYH*B0WI6+&fkokd{ zrHr9K0v?)ku6&aC8~Y>)m2|nMZ3N3FR33Ic$Q4Bc4a1_9gh`EIMF1hxJXwj*7ODZ= zLg3XK(4OK6NyBpNrldr&BuzPdF+AV{2XZ{=LIDX|Y&-+R95WOMhvtzVKOX_KU$F4V zThbv#tYBbPcma#_JX}29kWK+9Erl#8%9=Zm_czEui7gd5`)YR#`~7m$5xIx?7=beJ zxaFu8nQDC-L-sQkv+T&M1%(4az0X%}&@RW0WPet4PJsL}q~vH{6ZS5`8e!@wuP~Q} zj%yb79R~!ZtB`Gta4BL-wR(j+nQ9hAIY@^TNYpkz5(NSlryxC8mcxKN6#z|(f?2T5*ujm+ z(x3$EEa@*m&q_s*lCnHp8}u={!N6)@2-xV8Rn%m{^lwH&Ey0d7N-2L}_}5E=R5$0Mq!eK1y+cjL!pTSc%*nC%K^J#|u*yr>iu4sYL_|Xp7aD!~G|+IP3xO z8HGW#9*zgFa43MYe)ypOI`dIgVj$V<}E_zrZzSvTrq}> z5{Kk*FKJ#&5I~T)Sk_z2q0l73b!6>dflv}|MunJ<8;@B>6M)`ZN`aoNzLa;4!yBLy zq<>=`$d88;9tbtrqb`NASKl>IZD7SdA+0h=2M}Spt{V42MAVvVS&J?FO6Dlph7h?P z?!3SjHhAllHs8@p?nQOR?N;@QEq38bO5M^yxQE;D|I|XWAl-&4))r95bS8rA_*k(eSt6n;3@D(!&$jX4bQ>-^)mD7u zVOKsKm3MTpZectO++BiF!9wiOgG>>aVjh_5)J#2Cr*M6dWYbTWvCA=^`VlWbH=pow zlZ`m6hj4GUbr7O&CcukiAO5KEW-viIqoCuKP9m8;^yNRUu}rVCi#yYpsaTavC?=kv z{+yx^Lj<{zdgSb&5Fs0Nwg3ODs~P6ZVPY_U%L?LH7So3@-p4F!%(1RX6L}x8sU(A( z%oZ;pe4A}RIn^>O@Zh#)v+Ifi;?a$Q2;?FHbtQ60c%WZAea16uw@c8Ln4+XY%F|E_ z;~BV`uZI+nd^^y;`_HzSM?${MC3hkIZ6jUsfX#hBWLN8f>uob|%nI*>9^dtfJ7fk2xE#lf*Esy|h z9D_NF3 z)DDAkSeK#It-#@J{+TilVmUp@YBpF zo$ZiEV(2W%-F)e6Pi37tDUS$nq}T!<=v&vM{sd*X&Glg_xs>H%5jF9`FGZzss?tn*Z%_r%r}+y#CxO(_9jczJ3bS*I@2Iw}2tLh3zeA zPfz=fPB;WfZR8Q38AXgtkY?nW>@UVxj52F*5*1s1-W9k(p_ zUG4m$8_^5Ry4%U)*NoB4o|+3ZdfBKg9#DfhhLQV$xvYoXRiCK<%!8x15Cdz@i-CD3RxqSQ%IV8YBD}_<|b8>tMoD*BFT* z^8{ax;3(d8kE6*{f+UA-YtK?>xZg>Ry!i0t5#bx)lOozne4A3eHKhXG4x4S)+cxsT?;s%p&l%=R=t^Jc(dlt{;NHv=y zF`J!f8r?s~%_L~4<`8}K#9X7&k#=_%y9@<(&!mFhc6Tqc0KJo6GG|LSk$f?3l1GCS z$xd^^f{{T$tq9UTldK*TBh*Q{; z5$}*}uxb9Uq?Qs70r7ym^s_0)K-6~k zw*!GL@O#_??d}0)ZHNXTh`5nSdsr66^sP)~k-(ZyAad8Bi&@nu3W< zZjU6ao(a+mDRHFfBJ6heV7q&ei9L7^(2taQDS4qL97kVzYLt#6M%vMl++gxpgt$_B zz;5CCC+js!?A)pYjOqJDkC&tYUNsU8A2UoHZv)^E=@?mhfm#>}jce*Bw8ZSC*@0;< znbj?j-^D7A+K*gzP_dG+gRgj0oy(^4haOCbgTgBGB} zq?UTO#1L@qjOxl@OTK83(I{-8*0EDt=-XE6!_PJvSarAw6m*zIqTgn(JR26;8DP+o z(lW|ev7+RZjD!R#)G8{NityhcQg`JJonmvJY%{bMM#VXe&k#fRA{S(y{#I5^$!aHh za^GlooyPh@VzIM@gHT&gAYBq!0qG@UVAjeXneiS)K_i(*;b7|7OaPCeo&#oq4JiEO znk0a#SJ19jY5z8QFQgm>rN5+P82zHhDfVKHs0Ujk$G_^!3q3T4aXF9}rw^(vOCD$EaDXV1#eByKgcL z6JF4JD_@~UWoZrGJ~fjdOqYN%B-34MXWq9s!1pm)vw#-TIM!1bg!pSB*(6b0OG}?& z5}$P-2{&6FM#`8bU@QZhkC3S%kMS7REb_f1lfm06Qzhwac`%SjOW>0hWCksXjog<~ zj&%}L;G`W0#tG+kpL}F7CpD8|$vyJ?{cSltLmKB6aY7FbG7LGrev);Jk8Pxt3C^#LuQLw3&U~ZF|7jHQw*^%Mg zVh5;HM*h}zo8hfYlv3yll77g-fVLK3w@P3j(0hmQXX_z_4b9;xOfqX9R4S1`J78sz zI!Lh|nUxVGc>sgSbUUdZRI}(ME6H^=QXNQ#^S3{|F+zxAJ19Yg3lx#<*JQG6d<|+U zE~}E6+sB80*;B)+JGwciMMQ5QTp{!*@y!*lv@_1+37}NfT!{CBE!e)))>+4wcrx zzXZ2Uu(_`Qw`muvKb8I2uFHr63%Kkqql{ED%7DX!_~hR!934~gkK>|Ac+b?Kd=-19 z2@?(^CZ)<8)@GKM1VJk)-ot~Jpyfwv+%tK-FEb)4)3 z<6j0@cKX08k*tbQo0<#{rfS3kG@n@ws+9UBeTJ0I-6}~kL~4?qhBT8acrI}n>Y|D6 z2c_q!QgmS{JztfgFH7kk|AAFKdZ5{SVm4 z>8*gE5ow=7u8zLdVhz>eOrUlS+)O5eGUFo+BLw1G?Iwdo&3Tpvz~VU6N9n_o*{zb> zq95rePzQ(80R3>-NF5}ota!-tB|=zzHalpy!EQ?fa|E>3-EK4VV|IWM{9*(2!%onW zcKo?`ZyEi=sRnE!wsrm2G(Eij3)2IIFtHV<9}wcHL(4d%eWA02yB1Ce8uDWBhM(1N z|IdX14m=&NAkP4{(H16byO5-XyYANuH6LoRA+zxzr~RQ;;@nn?wCyBm0}v}q!u2hn zEhTm4=1C#uI*5S#;ys*wt$H|bvjioiw(qgGm)gD$fLdg-QLx|czSoTUFb<+JQhb!$ zJ{GshJutAA$?bb2D{^vsh}>tB`~y{Y(;u2N8O$z`s!Y*9CdO6UW~l%vVGTSUu)FU! z@sLEv-xe)Eq9y1%E-MVJ|DchZ)Lu6VA2JFH(ZGFKV!U%%i+G3DWYL4wH>A0vP!a-n z1-txlFHxBnCgDj+hXVx<+jCj~vD9NL%r%-&Q3vA>%8BM+9F-rEkFDWj0R=L{phGam zHBn|8(vweX+<5+jMCC543TB4;omHu)z9sV%|} zbeIrUJZSNcpk{teSaBN9v#P--pEVX973B;Iba(~yG{F( zx}(j4$@pO}r32Ft_o9?KlYdw<4zrX_pjTWvT$XmDg4RnJjI}No#Fv8KsKAvDXrMIk zC5P`=+5?GSKjdXW{GyR1t<5^eo#c>`PxUcRY6Xy<03^v#fI;Um+hG|n$suziU7+Z+ z>S=vx4++U3$z#x+`(1l#M+)x<`_3E!caS|{ODw6y(}jT^uLDwIE_pH`N-f;U?V*?K zAg|Nya?l`wE(VYS`z=g_sx!rQSin80wnmECTC#E5 z%nf>@Z$g#xBV7m)(u4-@q5>7RT>-sO1&h#-cvzSlAqAcD!C%;*BDQ1qQk~9sFiT4e zrb{}{a}*O>yNYR;Ie5Tjl!I26`q5qhyA%Rd`4|U>oRdugm{54uUIBdppqJzhltn&PC+@_>?K{|s-VYT?xM*@pQ=tj8SBNj7zKP# zrPX)w(6BX#WP-d1_b>;t&VvmUjiXu|^f{6IFlaS)gngoRMwRNAo2@9<4|2FQGG#flrnb10z?PQ zPkWG56%!?Fr$XR?&64=k49o{-46K!JCv}l$w=j*lRUw{r;@Lwpo0_2bs%JXX0>HnR zBjR7i!vULFxuuG^Wu4;}R*A80frSeUah;S0#Vzq20gLID&^V5+eQn&U+JGi|y}%I{ zLK)M_9bItv9VIf6IR(3{TrtC_@h`7#~qm(U<>YO8)9o*LUfI9Vbx-@p$igf zfP>C-fQeG+^B8P-RY%IOV(Up-qeLGvZpSw>Wnz{kv zf%&6vtV{!i5e;D*l8YYoiy}$-UXHv@IXuy-DZa*vZ;Hq zbiP?Y`^avU{yur@j3JQe$Xi*>)hrZUzzAUk%t0OVI$_W#wu1X>+u&NM{d~K%u|-D? z&N#&1MyE!#;MHpt6pl4`2(ZMMI2aOq23NI6{ul{;3717aiu+Q@7R(a~AH(581(9oU3^q(X|1ZHwZU3*}Lu_c|0QsJ$kB2D3*yUj=FUq0xGW z%PJBaUszsm(65`B_^FmCMAyPpK&$ie&lb`x#?;8tq3*4TrSR%E*?8)Kb84sfCV08I zm6t&E!T7};DFhVgbRvcYq|Qb-b*<^(K=d{`;yy;Y++lb>fci+=P$5zrJ#C_E9ENM>0NDMh1$I{hJDwdJ6%e7ru7ODy zD_t~B@N%4b1SU#&W-5Y9qxOpmJWkWmWU9md=r9elJ1}BmcZ&0Wb9ayu>P~)#tIprV zm%iExVT{*UqWW**_N^@9eUK-a0sFP&E`tUbG!*epEoM+P5G4*&cf~2Z>vRo>wytqK z)kqOZ>YMM~CP)DGkP2{rp%;zdlpx+1stlfC(auL#WP|XDu}Lo3^nJTw9WCz?oEvJS z(s0P};Y$HxD49MfhfRNpyQ!lu74iNOFA~5@2)k zZ97@=SuKZ++3N%EPlLo`U;SwH5#9!%j;*%70dvo-jp}j`fJCowK`N9kaM{`4ru7QL zn^Uy_pv4rCB=)w}1>6zwd+rvq5A}-v08k2&T)KJ%d6R7Fc8`M>8u0xJXb*7Oi8QNG ztwZpc;e1_d`6ye4t?)RENs%Q(c!7d6gKMI}%h);;mC&&P48npSkI%f|Q!|CwuRTe0 zbtA|DkeXaL-T+b45F@}sjhn1B43?EiUwjlK@d1Th-YIat%$BageXI0rrN}}c*;l&FkwdaT zRF*Fw%f<_Xj2Q*SDjZSq3Wy@s80Y{|{Gz82FX<7Y0hFTAY>ZqCyo)E&vUTqF?5}g; zlO`oy#&j#g!VV^sH`_!>DP#VvRiJP!RiqXtJ;t_|w1WF~$`*DqewmaLug0iGTSk~6 zN4SbU21<%|^uUIgB%qT+V!>v~q>ONF2)#n-{=_u}g6 z#5z-V?^UUeJ0uU$C|y^}>_?{bA!g&Exr>AYU7->-*icLT@Mr78T?*#i4*tx{vP*KG zwc0&+z$e7=5R@hAS6#7us?V3b-;zQBIY5Yer4Y%P%K(#upD71nh>t77je+QAOh|j} ztjP&0Q;sg6gg8EmH74{bQV%N1rOYQBrxx$}f+m)ZtpLZg0Jyy!fcl*kAXL#g){O&l z>f4D7J2NWN*>Bju?6`#zImpnb&MwX& za$v`^BnP5n1yvsML92>tuhVV1j+_+yP1x&%jVw@qwAX0{^+J8eNwH-|3mVIB^B=OP z_7B-BnVx78b~59X(z3xXevP1+`83*q&PlyF<|$^huD^l@VNex%W+NQ}Vt%uQS76iq zrosi=>ydu;s|9ScH0T*`y6I^#btC3B5W$?)Nuxp-dea3xn@iv z39?#^#|(8v5*39+R4xRu(af+F@nVEGrr4-gfYHa!Fi1}^j1?B~)S_q=DU^Xgw*q~u zK%x{R7!pSlbSR65#ufiQUs8?_f|HZn9Vn~8W)v81N^8S3sj`sSX_$ph((Ua+sX?ok z3d+D+1h6A4PI^HBEMTUB1`;k*XYWXg!zTrYv#K?w0Bl2h)&Xs=rO&fibmOO2`V2Vt zLyi#8&q`nblOIbETIb4~@7AYGGl*u{`@yn6HHi)sp*5F&;NJMN$ZbNN!~L1& z5)822kb+jf^+)bVzLu!utCc{?pLxJh%q!<5(!5;2>o0g9{jrB*1oXAj0sjeCRsJA{ z9C*Ht$|dFSH`ijRbFiKR9L~{%MdgPLdm|xAzplU4uWPba0dQHxg(_(Bh{O;X0ZlkU zM;p^thW4mja>W{0yb8==Ev6b0m_$W%Khd<=-8SK>0aC4NI%?lDL5$AIB} z+=9zLj8qz?I#&rxjzKC=wy6~gqWEE5Oax~>XzgTmA*>5GEl`UetT`xyY5#(uK_e%g zeJ4aOC*|aK*xgTHFc|fdaylf419(8$Q}XgxdBK-e^sP5U7?crqwB9gmH;V9A4u{pnv%jtj^z=6emdTL?ru+h(-hP~&Rvw;nBQMta$kba<@PS4JbK;FQPEaHmCdng!sC{arE)Ln4|S1|$DN za_|Sgnvp+r;D{LE;2!~?9|XW*mdgV8Jxu!j(lD!3ISc=kkUv6H3B*69$OhL>pG-zaC89z?J?@suu^q3ydcmS5KxHIbDr!!B62Ym820vMCz9G~X)4JB=W-Nx&4?6L$5}@YK0uHORIrloOkp&zK zjE(kJ!Dd`$bB#_VO2|(o6SfYc-WWY<`PJzJMKE2OU_njiMRozeH|W3sl>b3$8Ey5U zcmAjJjyfI@b{N(E+oIZ6EvljI_bm$1_D9v$$g602Jj@@E{@U?Q(JlzaV-8O90r_Hv zH>kGd{vKVol_vs44np^HrkluH;O3mmjLJz*Pa}> zqnKL&Pgl}h{F8KAk8TF7K0QQCL^~A~A^z)-i5g3?;%AD>dP9+{sm1A_G^NIJEk0NU zspso_jvN@)N2yCJo)T>K(&!)+6j>L8l&I>>>0e2ym%d;efdI!!AV4Q=N7*|Z2aD)ySO7 zs!)}yiQkx5f0L}wTnga$9tTi~`VtSiw9T2=W2KD`kx_G$noH7);HeK(sKdLiests$ z$R8aAMdyPqg`k;}ncmV7@qC-QOrm9|O@sSQfzUN@RYbDN0`=315FElNhnE-4-EY@Cn zi)p+W$2O_Y8~GVB%*Q$X*O9NaJqGqash$WZp4y&c#iOY6gNhy1^b+?IJ|xi-NzwAB zQ`i24PZumdAtc1bze(9I(*bfK)ye3`onkqh;nPve{S$nY94RAoLb6WP6P7rZna4cI zj&J|r)mWSrOACyQ1lL?wwzdK_ECOgbFu)>ymQsuGSxOT`4JD5WaLVfPpo-}Udop$CL;Pn-S|x$c-!GzV&M|Jk!|ZDHIR zSsZqw!wNXeFAaX%@VZ)l1`B>Oe!Y*zQV6Cpv{75s>Z~bi47=kj$O}z|+UXDz53&*6 zZ!>9RXeJBQWRJX2z%Y`nPEcp$LNP^&8x=YUe9CojHYSd&V`5lGyAsd?y#Oo7of(#S z#w*n57&rGQqn!)1H-LsiKO1Hj^p#90e@PghtmBj^aSi8|vZZI!iFv~Ao%9q6C|P`-eFL4|)0K z|6jwz{B*YteO6mTN0eav9GA`bF}stJ=>ybWPIphIWEvdGX;4mXpXlL~{vhTDowfKt zSk^`)+}p_+RDFaYh>!T=NLgrczj{k>M><*cf^q4K=t3h+@RmAW&pLOD4X^ho;XVt; zjLY?}=4Q18fxqaAn{BiJu5STlptm2q4{xWh(@4$qLFahkl1Cu*b;h|>`FwP6s*@HT zksUuuj=AQ{Il3F- zM4xe$bk8}7-*)H32mXMoT*M)9J(qLOR3>ZioKVkr9O|Ssbq_~$t=AaoWaPfHQD%6Q zg*XT&)12;vMjF>V`B}Po?pB`VL|u9Amil@pEe_Z5yl6yaKn^vmxIQC4M8ZySyc>lo zz~C7hkcg{1S`KWCQ?4^5yj8=_kb{Z?mErtNpvJZWYTR!FHNF*46WRj>HM*0}>mq7^ zC<&9XNJdzD>`cYhUp|OBaI92T#E_kV5+G$m&`Bz1W&iJI`*EJi)~9HgBnD1^#WW9Z zK?TidYS+KXXtcSXd`6C)IFF0{{Y0GM7!qVniDNc*O=Wn68dgS2mtAA0iE5^+Xw5Rh z$;+&lQO2qZ{i*p0fBy3$)gKtI#k?x`q~H*}ThD~T<0+|&`CGkHa6}Zu>(`zQ#SnNo ze+c^Jp|EDb@JXSY3yp0Y4P~|;n%JJmXSQ$SWGK}h6NH195)hzB%~+>IMQQ%!mrSRC z+(?&x9=H15N(K6$QEF+XQi#KSo>(fyQBI)x2F@7LaFykWvzBynIMurTdt?kPKjLcB zKfgNBNt1^74r&lQfuZcNyN{N%H06hv%5F$}0omzK5<{K4CrX|W39qAeNY03k|^29#;JXgnsjj@;akHYt%)b2KvV$ z_XJsi8;3a=;FQ~fJrCOjo$h-lYdA|b5|)7aZrg`br{vPPdVqH%Y^_$c^4Xf;Ys14t zyH&KKQ|#wqMb`~eJEiK4zz=UHz$;cgxOU# z4aZy?Q?1BHwb5ucn530gtZtauGM##(32WN;lgbm0S@}K3kYkKF_T<@fx@g5tXi3eF zjfA+Tv&vCvo;~@I2fs9qSZTe|{KJ8?TSKC*%~cq=#M!zB-72L}sK~rco$bbyI$56S zezL*%sCOEVc1`a{z%`sza2;0!B?2j~2ocNk# zMI9Vvi#~ac3s2VA&a8%@Cr5wLkvKDiFuY0G77r$uG2nPKwK9>J+VRCY_(bbOxaf0U zJAKlzcE6?13BS2*F~^DB`(T>6=3^&%&X&*f)a&`?qx>pV`R}-N>ddR1IZiiVQBzvXOn}Ha zFZ774Gu)zFryFoBRa-zu@2CnOIkFxuj8(3D#06Mr(s!bOEZ)kPIRZ4<5u*FJEZQ`@i`j{oo>~@cxixy8w*-3a=NKEkfKg0C4z^n z2j1ly?-nA}LJiG#1;#twj^%>e6&mk!JM-P84uIwU7OAPXJn|eA%GU+zwdJw3IpOq7 zkt84AFV^=Mz-2ZXl^$`M5|kBW+Dx||6^R8)McuvTNk zSm+%_Ox!_KbQe42kK-+tuht|S+I@LycIM%MojJ4^K{aMaKxDy6VdR zGd-Ye7Tl+$Azzq(B^!-li@~hehXyWQBIk@gg|hw*xe!zN{O^SGAbU95JP*=^Qy^MDu7yLPCDxflg^v-2{k&D*fo^*q0;ibyWFXCb!*LAWQhUNrxKt_ zRrn;=C7j`RvvwsRI{x^B#I+g6n^cEBMv{fW@}{@(hDc}R0nlc=aojkO$@*rR@rL{w z;|(@36zXm$nloMiSccIJtvy-aykj6uTws0kp7Dm}*ZSsN;|+Z`X?^2&Y78iZHQr## z2eac-0Y9Afe;N4-;&kI%PyP8J$t8c>sR^Yj@r2UQ3b){#QRctL@WkvZ|0MFCYN%Ka z7wI)pk9dVy2h)t;ZwGO7Tb0vYX{;)+Tqi>=wT$w~czSbSK-DwB0k&GRGRx3KfcdhI zjgDR8Uv$C}t%@D3$F99b!yx2cbf%#Gbm>JZhyzD_3aI+CRsIx}j4n5&lhs-oA~jeg z15lzJ8|gm?G7vXMqRv4?mx-m?ccQZmTUP@>ndS(iF(qG>;R0coa{eq}C-8{*dT287 zVC%1;59AT;@j#(hapnij)AnM#y_${V{SX$!u4skk$a%(U< zJy?4$HaTiFfsnufBZIbHpd)7F{uK1yVDBKB@-l%9lo{BNZY=3DbZ%X%-ztyPx1bm# z__|#+9(X9E$6(1ql7rpW^HTANFn)VJTD7D+;`h^Mukuuv1X~hr&z2i@SDX%4KrDv`OZLa#xL&9N zI>Qg(LENz!7n)N3WF0Z^E-z(1L1qySkXpe~nwP9!pf9i^=QS}!#rC`n9!n{W^#t!UET6FFg2 zm#1L}74Z>{WQO!9n7=R$Zg@&gcf{$AVyPEnj>$`{ysX7V>ntqaLfKz9T!^E&Wgww1>gs9{e_3yEX@RK3L~3q?CsRY`!@HzC zSZh+P-LiGT=<-El=Z==Cv9^xcG3bfqn19KO6<1?M{~!(U3q#M|iC2?M^BvjaHM;6| zI(#9M8EC2o`Y-JbUQ(h@!Har>7ncRB5z=HM*YHnZz1s$Y0dxNWbN{(R5>hZQHe$MVp zn2YVzlcIigZ}8d@Q&2y)H+W510P4q1g!-$ehPtYisB=CUSHah5Ni6Tb8skZ6=67vQ z_6bAcn&r#RA8q~ICT%efT+Yoe5wCgDMdfqy5<))1(#xtY$D=GtHu?Az4WfpbE#pDc z;+mce4PKUmXKS&tOP)cS&CF{>o1+BWmvd%_(Xp*HctdaS`sM~inc|yTH9miAocPa0 zXTkg>F`$?6ep64TkML6${r#fzTe9%x9u~@wZ)>}JwmmJmAB5CCBt?S?<>o3bFazV- zE?txsQAjjJN{LDv(hxdjwE5?rGEr$rjcl?=B_FTr^1ZmPP3?c{a+NkMczah_rIIH9 z-sMs)1t?l*4FA{~Tgw&!4uulu_t%uikpGg}T9zfk@rCBMgneXUnY~rU828P{$a2); zW#h|MEM<#7zGgL|w|ab4>m6;W+k-)dbTz)*yJSei#+{Gu7bXZBFGBWjNhKXC)eTr^ zvt1xlroX`y;ze*cgayPYqwRMdQQhw#NcV1p^;uX<7|yqtV>ZC&N0~}T3$$%9W@jDJ z6ZumBHM2-CBlJirZ2`X09Mfj#`|xx-Wlr{1t7-oPh+r3K{}gAt(pE=9L)H%EIySUy z)oD2+Z^wxxlyvWsm&U2e-UZhSw*(iAEnhy5m*uHeWYmG(_>H0Q3?77(V2MT_EE6mr zA0;)SPRR58ww@gazuk{*6JgPFf+9n~y+Plsv1ic872)H`zqczp#@6PeIz42;ehKZ+ z0Jb#tr}<!g(dg>c$1PlWwh%Or)Xv0reqax<)@Y*bzX2OD`+4J%{=$T={z_Vz1vk8MJBM?r|49e z6b7+|rH^rj;i-Oia7~kTiLTC1SUH#E7F3&Q#GT+hy+>Z#$PPan*>i!#gU(D3%Rmm6(2%g_$| zCp6v^{ws>FkHsg3m$HV7G9+FU*#m;xrepqUzXjLNhBnmjp?yuLp%HY6G8p=u3Y8KB z3CW3z6~gxE(6Ncxu_i0A%VR45A(4DUi9E)N1#b3@EO^w6SUq((kOz%EnFP>5M=W2q z=p1y&pK3a)m~EyJofDuI#V=8r@6-AkctwpUi%E_5CpAo@3IlCDL;y8T?G^E|=?TRf zYAPO!#Zh3Wjcz!#P&pC7Tw%B(mL6R?D)+#d7EhWgD(W8+j5$EUh8LGY;Ob*<;)HQ+ ztZt9k8yrCKTQ9I83v)TOJ$KqMvxV$=5!n^)b@K%Zf-=oSd(t6TgH^G?SlR$m8ynE@ zJl9wXu)s>tdbo){MD`d~2EMOq`p!%`)<5UX<=U92dGdYW?N_&Lufmh8x`L{EC>z_a zEnS0&Qpa=X0A8dN7BNGPb_j*sNqWgCd4+) z)-OJSc5Yz6@gV0#5u>J}i_Jt9qX$Xk1G?5M#b>&4uuZvyy+5T?uRFq{Nj^V0sLg*2 z0Wi7#dh#`ahoYDVqBh|*aARq8C|+ zZlQlbn;J@VA^{y{I{73GR-`4{XV>sV4fqE${ZP6j0q{XPkl3MJvB!hujva1?EOP&u z%{{@Hg?Q;pk8JLQxdCy0gpBxpEsZWTFUth(GO}S)Mn-l}QT_NJ!Qoseah{rmPeR+} zqYGEXacZ?@MR^NEqC2-~_lqs9Gk6DVVzzcib1*y3#(=AbjBfg%!e8ZxZdvdsyD!Gp zc3&GawsC&iX%j=wn?O9d6jde{0t%jJ=EG8D*)wC&56{-w&VXINZKs^Iq2^{{zRtgS z-L3vriXsIsEn*{RxAu#To9teaiqYOOz*3{EXvVS53X@*aT3{P`p*cr@M$F$znk~x{ zPfh*J(>r~Lr2?rk`t>(gNHh%U1Z1`inY8#>q-u-?4nS=b1>Nj|dJ?WEcFm^gU3zJ$aqhffJ%k0p#w| zBb&@9{{X0!y5t`9$VYu!@^OX5QiH*^dOI-0+y;14Z+7el4;P|YDD#UJTq zLFSG}GJ4Tk@dmm4%;O?lSTGALBs^mc*nX_U7N^1sgq(6Mo-=yUe3Ch@Hk)TfUzSq1 z8q+`0_KctCVR%q_RIs1C^j}pv5u9+>GxZ|3h_ySch-XJVtYPCe_v)O@$i(kwo30*l<{T;Mb{@Ix~qnGh856^ zieV!i1cbpNJ2)ihnhzx007@R@y|cshVfFK@Z~CMR2VSgQfO{?SCZmKTZMnn@Z*mg? zLnySYptB;TU~r84iv$pOe&;7(rBnu1nwZc>`c9f8#sPb}Pu3+t%`L*6obcO?AC%Iw_^kXG(7Pllru5RHdziOUFg(jf7=LA-7HfU{xj+wu zVge$?S4+GoYluF!^)}Eiz-2(0Ir{Wct(qhU=Oe zdY)i$^Ad}-2IptIQ&rUZOug1WTdmKewLTka@xBxR5TbD8mHMafw-lIUPLV82u{SKfGOn^B4X5>Hhsc{X4-X)#a9{jsW_4aI;~&i#PdF4dj;{ z1KMB;}rWiL^Zn&eB!0SFzP@CyKY0}oIw}2&m0)_|Vrl%G6;C2K=IQiJo(R!xmRinOf z>>E8#%dk!RI6bC@fp{eEv5$|komxD$aQX7qbxAmb`BR?M)gWlI8J0OeCfTg5;=1eL z54OO5vuE~%hEA57@9&mon{397IRL(I_l0JkQZO$u;~||V+#D&!SuY@}-5zo;cqzN< zrG`tirzu!tI9E@B5fYl5VgN1`fVei9_Y(~eaVBpBYtvxa5xzDOY_4QlwT56~N#vsx$q5A(r(1l$+|FQb=`^FQX)>qJ<*;~YQ{!dtisn5u)DqzYurqPP z`|GXNFO%(ZY23-DKo+qaAd4l%zpf6z5-UD0;oXu#TrBSY_zfng7|{wX+D|*1zTF#q zs|=%fh}iTt*hCNW4eyD1a2;g4kAo;fw!$~B6@Z>GDKmxvtuSMr3HEh;|sYvrThq_SX;hEdEM*a$FBZ|WJpgOb1 zo9a7g&}#e^;bdQ(f#CQWLzkZBITtHPMX`U{Q^& z@M~==oGaT}J;1)l_0sB?iI~2<+JZc*qvLmrr5~!`x4=aA7F~n`;86UMY7^p@)JyRr zY5y`)Gd)b&*0RM~arV+bd$+!8lYL%$@Z;WeQwHIx*^e0&b3tWKT#fov!yHYP_kWrj zAJPD~dGXY9SXJ{S(%-F!IO^>uJf!j z#2u=Xf-#YXsg(dGq^;nI0W;H84dBWU%;?`ib}6Wp`JmmhzEIzE=OVjxN1^g4juJ3+ z(b21T<(!&->}o@s869p@g?Axt4=&@vZ%0Rj-qAvM*|zTcq8!ecoj1Fj&m|leUv@~p z=vCe(@V6=M=;dO4j!io~g={f3!c2iU)1Pt zlb*OJc8N3+MU$sbp-Eu_*prIUI{1yOgNd03MS3Hn9Jx#5w9DIFYO3U~GPWJDZmWN3 zM=vkN(eEpm3&FM9B*=%cQS4XfLj<;@$^}1FyaUkSjp5Yc-Ol`g_ z(IIDtS5>mtq{os9E2&_^Q5SJh5R_GTx20akr-57`33hji>CPkmEi^p8zu)H0P5?HF z*v?XTq|uGvOmv(1?`-QDJrzUfqs(mlyY!MBmLxV zXCBY%Enar6VzFASFU7_MrWl+^>HCBA1onVElWkXCNOcy4S{XSSYGrI-tZV{0oqwnm znHLB@*Uy8gbvX>t`1F!{VNGT8IHVj~Il5xrN|^+!i+4$HGgn2$Ncv%Cn2qS+bX%5t zABG(I?O84aJ+U66)wF%1?fAov@y%?<7&bf~+NuWQUA_9KX95nNOzg6-Jx4d0J`JZ0n zRiC_Fa@7Z~Wr_pGhFAMlpQsFDsA!7j)wTn$zAZ)6g8$9D#P%GivRJ&zy=z` zMdjdu^+fzBHN>we?kKq@VE0lt=!L~dke)%zXomi4jG)#=gLN4}v!_bX0|`MeqNicI zd;JEYe&_0S1wAS6UuURxHX5`ya^EWMFuJsPB7vQd_mIj-IU^v}TO`@4bB-WlWCdQz zg{}P)wf1sfgWbP)i0*RWrNa*EZY0}D&S8Ib6uraKqni;7v>JEkqVdD`K1!BJ$pJZ-_(N@&lTmCCqqf(?(wD?GL8ymBfNG79=juUA;qw@Od> zuQQwAw=OD|B+?U??=0~v-bwZ(+8IV)Ki$Nd5=z?{QWgLbDwA`oR+lzm+jmW3la?N~ zfU_R$DJXIvrGK#Ok2s;G{>rMMyF!z!VVzhzqjlD@rDrYY|M3&fTeEQ0sJ1s3wpL%% zTD`jUA)5!Ln9rQ@Jb+6)@6g+*xb)*}qIX#oe4I7dNFU>@ZxvVcT_~Y2)TQALEKU5i zvA+hTAJ_=ma@iS(BtA%L)=KH%@>XzWSmlt3ErT5zZ&<6TV3>3o`kHF1+8EPbjD=Y{ zp%fp1DjQvS#MsJ<(1{nf-e%`aM~7po@V?Ad?M$%Qp(5DYd(9Tt!m*XMP4;^B$VPJH zvC#5O`%ZrFtx{9F7fxU&s#4gfoLi{+b8UwT#Dirjw)^zX&u+h?{Y3v^{a$~>l>&nf zaT^oU zsmqp)?aI}?5PPV6JaA~N8{qxzhc-sx(b-HxIqoZI?8UQeFJ|-09Czh~_f+X?Vle~h zC;XF457(!fM6t#vr%|m|Lqbfq)6Jhcg(}urBb3~6RH`b2v(&Lm}b*$CWwqVDdN6+sSYvZf+FyYu{*=;WC({@uMC z`r_<4>IpB{%Qn77XL&(j8kaIRUjF${9QwdHpMRt}cX`vDN4nU*zi$b4zk^JMpWHtn zF9XDZ{R3U55AGi{-H15EN)NR-xlMi5u%eCHn!@ZUseA~|eMn=sWq)uA zfb<{c*aYc6%)lI8ll~)u^z%JRKl?ji1?fMkWb)DFuXD^mHj<9%&jC?b?2jDVul~HT zeSX?Tt^=MPe&RK;sU%qaxzzz?Yq5Y=1FBuWf15;V`$Bj%bKsi(CnWwtfmi5_B1cbgTZ@Nb}@@GMj~9$PgK@v z<=q^I}7JscS|AN)rfipBbcEEl; zKeWUnb^%Kkm|tjQ*{>Iszg}$d2UhyrPzv}<9K04}z&}4MUoX&4bFtZv#lYq3Whw>! z3(Mx~`MSF`e~INcwO?OqSxoKM%gfR$LMiCIEJN?*VLtv-{}ndfUumNDs=0>URsAbx zYiQF=9`0gFLS*Zs@|`Y(yv9Vm=7D2dUbf=wF9ix4t_}{-v?F$t6E%5VLlgGO6E(pU zsv$<6kBOSRUQIUhQ^NkW{WlB^{k}F$nkK6{T>tQ2>B1N2YpuKbOeXx%`gxob%bWXe z8rsjBhxDV+%Vh8J<{|wMK$#d76*mNQZm0g=+J8&hzc0vHpt~2nHN{0{O`usXEG4+a z%3^e&ytw;8(eNm_1k)5o&~T5{t;YU4`fqpTimxFqT<^+=OqUGXlTR|36bA(3=h?a0e0i#r}UxiNG(W1RgdCfnOX#;D0s{=yfv!zuf=QlnC^u z!wG!62>eR_#wii_m6X7bFd4!Ko@umJM(`^}U@)>xhq`H&PB4!|Cq}zArrtUu`Ro0! zO^IZ0I-KO)MDjQK|1~9&zaf$ddpDs?NR~P<>c2U1!wt9aD~rLmv=~;n@QsuUCzxsI zJI{uTMC^2vs{;RRahF^>sKz|_66vfXh`+`9Q)v)`nt45@#H#v zUT3`#NY3x1tha!&>FLpkSNLTSpe&!)xe3yIui@!sh8n%Wu4q9!Fa>|pT{?ghpzOPi zU-y4ilOryW%#*7UgP$Wz|Lj2Js@guBe_o}qf~V-87lMdoT<+hK#tM|V#X#yFjr5-8 z#`}X*CbU^lFF*ej{=PT-ys!V~a@NqB9SmD<_K)?pwP^p#(BA&C;k|7kV!o_@6i4gX zO}QV!1@ea8{;Fu@{fsJG2$)dc9J%YRbw2HlFpBt>91uRIR1^xmR0&6FUh^}2RUu220?*Ff@jUe`dDrJ=5YEK36p2C^(wUG5{b{McyF zZXaqpp6N*yo zRFr|4Rsl1u0CU9^S2&nZl!8%F24<5A7|*br@hTJn=HZbj6_sG%l?pf-+_W7=^5GS* z4==Ej>===uD8)`i8CVshU>{Kd`-lQ;!MjkDf>lulRs|{8%_?9wE5H`mhN2X#iZZY& zNWpGi0lRqtw!k(NrC?Q*fmJ~Yc8dzwElRMFx1lHntD+373R19JR={pqf{k(+ic+vD z%D}3i083EZRu0zAOA(ZH?+m0+9SHad^yXSZ0t0q&$0$9sXp1~n>8|^ zW1y$Zi+C5ovfkTba;sL$-38(??S|EaH5L%$>_Mv&j|&A#A7jeQb%iPEfu(<84Y@bH z_)?_))Y}N|+K{7m@>%AO3todo2qL_g+^l8B>z0VzqU?Vfotn-JWL}HWM+G<0>UPPAA+VtLwHZ( z+xM44Jn6k(DbIs=N7V;FLj+ZfWE_PDb9J{mNr3zWk{c7ZwPN&w3-!-Mtz}DBjIA2I zfc$2jUYf4Kh?iXtX?s|f7w{hJp(;Rb4rBJzL^ul*+R9#P^_x*lizoTCm<>&Fij=Qc z?NxgMeEp`#aSvjOu=98HG(RP_=SHzj)8J?dLH6P8kk4nYsmc|6JglvWEzm!m-bNa_l{6PiPMvN4r zTVxvC=)h!~8s$A3y#KO=p%}b}T&LBY1KbJ#+e88K7eZjAM~dsr?BW&!k{8i#Y!wLC zoSmu8&ZSPu(uhiMsfJTKL*8%w&&M+U!P`_mAut-7W4vRZY@=HYM(be>txfa&*^a2+s z6sARm^Qj=F?m`U&MCj}Cni!(HI7Ph+{IT87uoIMaJv2@=*pX&SjqVUfzOD=0twMI@0z=RhUihp)wO1$oUvqAWvJF7RymClf_R9)kg-U$Z zN;|=gkdxbkXJlz4(j~lXAB>a3g?^qB;v^)7VN8WFR7?lDw6qDZxR3+LUf3QyyCfSikQZZMq3&EglPYv^U(`NG zHs8YRE_jNI#i#?kf+fgnu_%kdW1^^b_o)vo^JqvYHCV=rW+je56pnp!`~gjxiXXwK zJuMiuFHa_W%&VN-L-MJ2jtz}-1Q0R1a;@IEu^z-Rp*&AA&1zE2N6(gAe3Z;KjQ%+R zP44S?_e19fnDVVY5gLG=8-R8<3P7PL((YTtAR&=Z6@v01b{V)pnOQko#fRp_P-13( zs@Pev&oj#>OgK7RF(h*`Raco!R8}S9a$}O^^~m^4hvzZ=;QnHg^C-FAX6R^2SLLO1 zytJsR#YIxIsW(beHyfz*vlM^do3Cywly!+EP4;n_*}uekcd5TFS-@PvSVsJ^D<+1i zx;UIuY=)TlGmDIWgDZWY;P*dn?HI!vE&0q zF)ACLg0&p6beADga0#&riBGf^FK-WCHnhbns`Tfyg!6vxP{c(-S1*lGdBw2Zd{=2Pr=#*qPfAJL z8Ulg5xwx?NiBPrl6v_bqINY1MzU(Onid7D%9mHIU@&2GWwO4zql%zc1bKEM34_oiJ~F@(taYZ_(! znr2y7agcR>91t|gm(6B?Udl9OnbQaOcIEXNS?5Lg7Mu(rg>p!2?d;+HGMwC}&dDY2 zIZ5PD`M(^lQl}kb>5$$Kuu-%OoxQ)u3FU&P)D9 z@yGJF6y-D)|D#^;#c9vP4|1@{hFF8X_?Na{<4@k_HNnUS`E7x%Uoa-WJ!kUU8<~7+ zVnYrk8#Ta{S#cTuiN2DccW_xUOb95Q5W=hoK?77mc;^%$u=m-ecxhY{6QjOqcYV#@ zdv_g%*ml_ZG}I39wlhM1sL!Ktbuf(OrE{TtFri3ZTw!tC7hvKdaN!`KiGkyf3Jc zA#?dsIgtBH1S}7{11ruR1vuoFO>wr(%~1)i+gnXF05=}vh`8ybG7g{Xh_WW2?YR|5 zt*Z|J$Xn}q))IM8`ZIHf2DR!d(4Bcj3nXu!t6gsv zZnq?w-i!~L)^o;lq81lr^U}sYYR?^Mv?bPoorynmQa?1S-0Kq5e1})AxZv!6RENkv z@Gt8{QAukANan{WHc!GATW%(E7C1asFL;p*4u3^g-zO638oHhP2f6wJ^$7R}>_o~~ z66X%3AB?55f?F^r=^=6p=0Kxc@aKvB6!|o4--QroCpe()FRMWiD<$05PLe;E=ln6u z=|?kvU#)0{7qM*i|Dyv?`s~^$anbY8FypeITe)&R(jI)c+#*u!DNKj$Y6O9Jl9<0#t*foApk zpD6r8Z63UyoEwwqUh2`A;FmCSFAJuk9^aTIFR8xxHr?&q7cJN{OmcWv@sXhIY{CC% zv2W1i5MRo@iW^rH=Y#aI_F68|`>V-U+RlKdjK$7>Z4W*X%tG#17Gfg}On0V2<>&Jc zb(D$*!h-RYHV)Z(4|JnN9tF_(xPLdH8!A+2g$0cpxi9(}TRkpTF|b1y{}}}Femk-! zT&!GKsPv__CmgvCzvJwjP>8tCc5OHtm~!{!tI&OOZ6~&k0wYw@y8Lo`4go~PpEp{X z22v&${15}_^(N0XOB@-0L=fd7=QS+t=OKyu42^H}#=K)OtT8q8t-vOO{FOpc%=<&=gY2~MnhzTFAvd{ zmZJtRDb+d3FWb`kM@q?3jt@FYh&T8GLz}fO{s^mdE=_!OY4rW9#s$gxLEAFrr+$|J zG~Lf8;|-X*Jm%z}9w%~cJNz&#=OD&+U6~@n@3OX~?Xf6;A4Qe^A9i?y;}N0MWkJM@ zOh^2oo2FLvsHUpxxLi?GZC$aBszff`m+nx%A;&1toH_Jkd3qO^#=iw(`E(!S#*g?! zAdyiB5YHc$pDiExWh6*18d%AX+Jm1YB@m~xw!x1mL%fdiAK|FYPSzZWANmOCP>tHR zM#304i^}|Ih|q+vhZ&kb#rT+SX2?$+r2i5lr&815r~_gb zgvTVc6nn|+Faz9q|1;NNo)mIH^b^GZJ{E2Dj{tVR1?=@b?y&{q($=fput zyN3<5mtqWThwa#f@v!!w!Zro};=1_^F zootueEtodp?kY-yucmu15SMi$h5Uo`w6jm5tJ>42>Cc^#KV!pe3X8K@Gc!mhZ5Faf zmc3P)&8Y}&7{^+(3X&VxtbA%Zqb;7i=VS5nHmNGvN*38i_1GaY;Z0Gm;>VdGPI#l1 zABp;Rl-}VY@{%{FyvgG2JxB?TiQ-e&2LT|DwI1$x8i2 zdo7Z{o8cF&9MyXlH{15^x`3%ETl%~M(~`L{iOvPd>ug%a3(R^q)mmF=$e87ULR92S zO%LBU-Bspxu88wmrq|SrC~@0ra3z_g;f}VtO`w?>sQ~sTvuHt+8w)UO&_KH56Z)NwZW1?~KDCwA0S*4~;NRG9FFhmHxym;~I}C;>tA zj@`nX5ILhHA_z{-s3)1Y#GxYLc930{IL%)i8)!l~Xbx|%C#e@ND&1KeFw=@z-{7U> zL-UmWZF?%wq0LwF`=gf*FQFo&L7)rxer;YpmP_lI_Jn` ztHv*C-B{N`z`ZWJ_3{pr{hwN9V|~nY;07v{r`rja6s>e~vA{ZPyD^9S{mF&<;WmvY z5^m(?xF+RuZ!VR?7p*@u^XwiM|zB+AW zrW+&v0wehLb8rzu#Mxj;rQUlzBctH#cnK$MRUSmlu*sFS`Ai|ukMo7hRqf+uXgA#Ic+})N_ys|_Fw9r|#gA4;x0KmXa?XC=U^*E+ zV0`L-ww+sx%5fR9Ys<7u?-RH6_y=8eIzBXA{cR{zaOwFAl-4`AXj5I{(lcDHYKd)& zMNgSTdI#W9YPYY;OcWuHgq2<)7Mp~HoD(+-LUU;eA=ItFRcVx{oth{iRrps28~GC_ zkrri(3$#GlSH;#xD(I3#aT=wNOK5xhl?n&~oZh&Dh})(ij1EUm2+&B!atF`5X6x{d zi>-^_3=XrhD*c)C)L6~q3^#_vV9og5DEye8RGjIeq=O$WaD(tHdpyeqK6G`X*+C24 zMZ%jF$O5%ph>TbXmZbtKIpA%wWJg1@fK^*H=Q%1iSDdxL3mfb_K=cV6^Z!)OT2xFI z;jAS(fSYv)J&cXUC@h$ULekXm$&S8$O{;fhE=5Y4yeRN4TIh>Ok!yV3f zrC%7uhnHKXW{O474!pZ8(Py78(b6`-{YTp8yZ=c0dupa!6@_7se^*;J6t|7D@5ZXc zsbronZXge1JTouq|a!pmDFgs@mc`-w)-a#ad=!F zb=Y7{DuDpj-HCt)f9>xi?b&=sArW($SR4^siTyFpeat!*$GULJjpJ%l2oF$S$WW z*N!|G?G~>6VVz-VjBH_GkH`mOS^R{U{850jWypiq_HHlEv4(Wz-C2kCd z*T7)?g8Fe+zszjimwY%t1cKooZt+q_S>UTU@#`K|sYh*s0*wUHBo}Gv4 z%tD5N?c;&De#al?FLeCx6lRCp(cxZ*1{Ap@gy5RJJ9AaxJ9Y}#RAC>lK%N>XZ>sPl zukdH>bvO&P%#XG+cTu1fT^ZjhvhYuZEZEmzvmQeXjs=E?_gyn=B@rTFTB!3ReA8@p zVYsjDZdcZufJAtxdB2VaLVFe(&|SH5rJ2x+*9rgiJlAD_@ZVP24P%lRcp0jN+1YqV zJY`@Sl7|eK1Yiol$iI`4Y1`U$6Vs#c-vc^sbNP_$-{Fj&rV3@})AVB$w61Z6Gfy5O zoQ;o!dbuRdT)<3tWDKJls-#DKD2`tQ|r%q3#4Ta`kCC4Eft*S}vclAikTf>rX#7Sc_$Da}&Fm{N0bZi=i z7a_{B08CDmnD3$>GVKT+Ci^QvOIpsVj!@bX`iHb+CS4t)Z&HYCbY4fUu+H?-&Xz5= z_yIA)QJ29)+_fJ>4~n?!#JT{5{ewY7EDf@c&XalHqIJ5wM2{f*<8-sLjrG4H^*Ym1Z|?Ea+N3RTU}9b zXs0S66ENOHOLLYwm3bA1Ay(mqFQ6Z`-q4%pWCooo_No}T7rR2t8%Wy1SH{EAa*DT0 zRx3Y;xjtm*WUq+)9qDVXR@%W)o$zQFzaO3a9(;$25o+=s)|h77)ML#CJlYrP3d1TB zQ6uuXsi<+<0nnv=SEu)=NjqT7455=v%8zs}ng(c2ZGcj|Xl9e)=m~2v9umsGC+t@} zAf57IGmRLoa>M3R`IydvV{97Eu*KZRn8%M$o$u>^m_rbTC;jw^;?ovVUtdTpqe4FD z@4X`*(`qeof-91?s9M-3QgV359>!E91tC*%L}%`%n@rOzdm@Frd{F5axx-!aelr@H zJ__NGHZH|Ckdi$};D`oFJo{&wk0;~7gbf>T9D+u~UU8_Nd?nXB$8^>*LhaVst+$$! z=*sqBjyrC&x%N4$B@p&V-`i=$8wpAf%0HbDd=g|pEXp%^@V)=V#9NVr;!C5`=2Yw}4pWB!LjU=@O*;U+_ zFT!WckWGsN)!v007l3|R?ks+q&+&@0_!AFJ)V-0QPQ%HNNSIPW3HS1*t%jZ8<#iIP zPAo)g)x2BItb=X27V$X6pFSmD)^UMxds%krqbxp*g(Puf+4QWqE)L1frAtgt7jrii z&tNwXtO4N7*YHs@c#g6}aL+Zfz7jhzuQM!m!eb>Doi(;>(P)ccUHV!8z1;CTzB8B~ zJXh~L$Rv!2P0HtX_|JEy$@_}Vus$NIB__?RpHud1%+e?2h6Ja8v?97b5=Jg_6QC9p%Xuh0zeIH@x@vBZON zC#%*1E}cN%Yyb`Z41zA0I^5)2fBv}A5NFKYnyZ|673MHIFrU&@m~FZb@d?f}ypzzY zq(uDqzW+!Pv$HR#T$-_ixOB>SL)4V?)bZg;m)M>jO{NX9OEcE1*$-(I-$f~+tVm_y zgH>oa+NBN5e^bA)<462iMQwFzH+Hr+QF{=nFYE#kI4PnhsvO5S107Re++L&D<{+1- z0zV>*QFk?@#Jgh5?iGpKL#iYp1rUB!ariFLZgjdYGv)J)POmjvtlF{@`D`tO-!nKl zH9fZ_x+EfciBY6as&a&M0Y6p4TWCZN@Vm-NPQrwG*}7t-9fCV8?U0o|z;-B!RMR4z zDE{@!7hQRrsa8aB^wHo5lctoK+D(ER;ZMhe_Ed@TQx(6=Uo|?ZV03o9(f(VJ2Ca5htE!KVum%tesbMv9i zWAVv8=8BnMl($?LkO%Fs(N_g0h_ZBz-tQolyD<3b94?-n5<=~glcoRxYyG!u8XC0g zQ^Q*Q&!ykahi@jjoo>RwzCfXmadd(kM>RmrvS(5Aq~OCn2_LRA-)|dOz^h|hs5+|4 znKfKuZA5?)9wK;7?fi*v@owf{!`{q1$jkEZsAaW_m^occhvy+??rUDD|%Fv z31$&75`J0HX1I@#sx^#gny}zqrYS?hf>S$#X9c%nk+1*~m;zBI%X|f}w>oL4>T{-& zTfxg|5M(q8Iwc39=J^pK-=2xQFye_kRI+0v>pnn3>>lyVSr7c-!gM?KvFW5O*(m^5 z`^E5S&D@aXy{Wh<>7=KFJT1hJzQi@}t}UfUB|qNFw#1T>UJrtQq0~0ka9Y1Q5TF^t z2;K7@ac1$~+O`a*=bhCu8Pz8ToIJy)TybeQ=UB*ev~`cU8Uv2!hKv_O6Db-CA6sm; z!Z@Z}PPb!DMv}=FdS27j2u<9l$=<`H@H-{dI9Hv_Hy?tatt#c_k*8!~#&pJWiJJ3Zl7PK9vDkgLb3ILt5vwQK@s0thS{%c~lSeq*ApcgLZmEGD3; z!C3D^T?_#$*CIvtX>k0{#kP>~CuH(x z<;x(nJ{7MUj$u&w2d2@Y-y-4t(B$}qbM7afn=Q{g!PecsCDXCH7 zG)prkZ_dYT%}|=QCQQn*CX+v=ojW8xmjKu}>xZVD19MkQ8EFrO-E6sM+Po~WZTju+ z!Bx7RHPx;e1o#u=Zj+ka)y6}^pK_`uL{jvLF}Wnw{d7k2RO@^9W~Ja)Th`+ zG1&lA=!_0P$jlCQr;wT(?MpjTH`-|&Q`)_HA~VcV+7)cN-3&CR6Jx=TX&;r^i%W`p z4zA6T9Lttt)2X2MbeCMZgc$9mBYH15iV_7&Z20vUr;@#2(PZEk2s(E$y>}?qXva2r zwkLGXeWrZ}XO|;{?$%HbdA7$c<0spp?Gsbg{J8}R#g}L|xP(zm#}mEU6PzB(E8MXD zpBXMTp50Lhr#5aVL>JCNguy|fR&*>D2GL$>8?0AaXvR5saClaAc35GkPsUjky`Qo1 zm5+QydhIab}!lOM!Qf+ZnFSbIy9{Nrj}rt=(% zdOjwM)9xjaoIZmZFIB*X3A21qD`kilR*IH-kf`tdhky69WUL( z-4}aZ4OT;4n~Me9Q@pMom2ar4NZk_dZeACS=5-%so79MJUblso#d*E5Gg#pha;)Pg z=jZvKEBR5IB=97}Z$GH5@W8^SnF~^3;fJuGzeFXv?gbAM!VmzLil2Q7lgcf)2__uV zDXsxfk-$y>Oeq|0Ch|E=P8v|s&=1uJlAE*|*53h|Iv|UR3rJ2%!M-%HN)vD* z9HHXY1@=&C*cGkn4F8P$n@fFl=TMu~TQQgnpKWZ1!i0)d*cAL2_s!}TJ#A64sRO0A ztwn%4t(9ZTR*dU;*M;Nbt6HzM_mGpj5pip@uua&rCipA_8p!-Dx(d$mdlE0=RfokF z2+S_#(F%^=i`>z0kvkevFE?N>3MqARk>vx&PyAaI*y6)Q2sESnixS7kOnk65csJ@r zv&M_M)~%hb>=FYoE52GqEX~Y^HtU&jrRj}G3BMI#jIy307X6N2|E!$RKfgGmug7WU z!%lymB9epvQF3k6Z}WFKVO*1DX>Rjd_c)E4t4o6$rOX#KUbsL*tA8^b43T2&5eLgq zK@%!Op$NAv1&d`pO-J7X&YdS@8WJ5e;T$L7kkOzr&UN+ACp zIh!LWsA?|C+?Z>W{{VaI!p`7=(iRgynl8kG+Ub_S zWNhWw>ekr!S);4$S>{z^=c?e}>>xjx#tC)c!gE0i)Z8j@eO$!4;9oR5V`eO5_u}Ln zj|z8i;0oQ(?+h*}=?0> zC&?LWy)SYz=RiR)qG=x5_3HI4>qIce=_Tt8enqW(#_~@44L05um61};$)s&S&Gble z_Xy4s_yyW!FOdim7R=j#+e|Np3O~~5SuF%&1J17NR5=l z!!B)%8v$x&5PTB`FNG_w%5ie2_gcqUP|0PTI;ZB&nPbaNm0(Z#Nh*;PV(8^S?LPK< zARpo>tRi22@T zwrWDTvB`^@_s0u6;R%A#<*mC9U-+Kbz4rZz^gD=MZc$1s zr7ugC(h?#cUY>lY0_5{6lFz_x8g;4eiFMGX}U6IvWkd}pd zoOoK2IR@65NgpEJB^Ux^wVKO8JfY9xnV))V&T^HMc1%}Phdq^Bfg*KdA?iM(*UaVO zL7e2pjDze~N(tp3QY+OtC^t@8iFRgx(kB&~l^15&m7T#qm1db&rYqBgO;+ctCNQq5 zd<2Ch9Z!&W;o@aWmb5Oie|I#^6HHAV;B!KFRT6PF5yp8m+C-L;L*d^zZZ=-;wN>s@ z<=uUWCMHA(Cv;KO**n8`u??SdR|^TST-C+1dASN{{+iBoI||P~%1g+{SL-7TH8VY_ z0kDv3_o|{(dSJz1dRV&fnN8tU`v>RnXN`_5c$;beT8?#RtJjJtcX_e4E1u70j)*pn z@Pc*9s=$thvQq2Yg2b$k`%;-;kZ9|4Dz~;VbF?hG={dGEzqa}M+jBY|@vY2~R$UONN22XBnGR33yt77Vpp{Y%8f?Q7^UbUzb&m{nksHJEY?`%MZ-Y0KX*G2&k8)y_U3F<&))2K zzo|2Q(>NZMiQ06jvt%WH77)9Zi~w37E;qa3jdrasHUSm`cx?wNjEG6VS?xCr<8Vp3 zx=q-hlDr-R%#7D8j}p=#Tu~3W6X-n&@p-div=UqimV(*?IOpbUi^EHQ^IK_bm>aceE5%qYq$G{|E!*HmurdZ@Aq^dxr zfn}`c4_hY>*xNdT>q=7#!~#gMH%^--lk2S$m|V59awq0Gvpp;%Hi}k3B^@Wnhy0}w z!v@ps?VYvLbSu=|{cIN@;T_zw4`ReqV5Rsir*LczgLJaYU$tN#-#dbR;cn0*%pG&nwQ=p z%v*-G7LhmP!qg67o<232TbLkR;szHi2rjJO0pXe&(hNQOSKp{~RIK#Q&d6i_wr*Wg zsbSD|>Z~QREN@SYtytPxzHq$tnOc8vehw1Fk9WD!GH$u@-3wLV6c#;G@2Fwb_fD&G z+1xpMv{!%k#L(XvtG{ztb)Xj%mQN()*ej`?+ z@GG^#UTg5xPG_FEN52F;#FtkS$*LG0g>d?tI{s3DUiMfi*ZTPQ=!N5oP&KwbT~)u_ z;XNw*>8DrDwHslBv)-$y1}Q-!di?d3h8iTwOKJdFW`uIp*p9>@hfB17q)r zxo0cV*EyRoR_DYJH^hoYw)ocW>6UE_1KQ1ASvK;HXPFhMMA$|{*3LW3jiAi}#IT3b z3P4mL*3MXG@QqFYWf;AdQZ)GU6HEFC3POKVtTz!e zhexQ&kN=i4qY$LBeudTHgL6D)wOdzvqbpbZf^EW{Gxxv4fIKNO4m7xfOS-De1z+ zi^fM6x5idVqF1-Z$HtbAFI(AKw0vxJDd_gs_*u(Vx6U11vF3thi^tDu-7w70W~5LAx-Od+LZvcB#`Gl|*rqLlV@cE=R7mSV=C`uY@bn`Qp5Gj~f(PzQ zST?UI&a^IY?Y=QTZ*j^?UPh$&`D1V-R`I5r?mpyeH{Em-vGS}b9EM`O+!F1J3fO8B z@&3gRXdGdOrhMVY0>0Y95Dh0RAXl)Efzhh#!xK_e|0L|_{UQ(*DTvV+w7j)rxmH6< z+`N>1-z3NfRWOUeQRrC3;bhP^TA+*H3J4etIgErvHw{)_Qg=B4959T>{VG8){p-Tox%)FF4A!Uipp)! z%F&7o3ty5kOnD!BM=nB*F#3WNrBAFWUq=fG64MH@t;z}-b?{VVYJ{N5wF)VOybD1{ zvE+AYt)O-o&}$y!Cnu(zrvpfh(9bNbB-zPv{tYWuBu3@J){CoeT@RD=@VIU4UlIsX=2tkKoyIJyoyRJaT2 z6puDHAz5d7Q~Ye+d9j6TYNT1$LYN6nlc@S zmsPVk*UoFCVgpW%UNX5TTs;?B$$r7Uhi- z`A-_HID%>oFb;k^U_0crE{jXXv$%Vmt&^b9P*EDd{PlXp8F*!J**?rP_sL2jxOKm? zEhqd^9U~6ydsi;=aw6&hJ1eusvJ4+M#SmL*WU zIod;i?aZAG|B~d`W z=9lidJqO|4F8a%1B&+FPI&xoruv~wmn?NEi&6sQy>l;k%4&xBG5eFd@m}F{SXZ>2Y z6MfzQH-Zg;z(atj3UZg(O8R6Yof=TSFDKE7x%k>$EE98gcl29a!XgvQS8~G*H%!We z*l>uS1U!d)S%1Oyz}`kRMAdU<+m zHV;2EYKiCEU)t|V7X0~M@8uLv8YIf50`}hp-Gu=c`I?5Q>ufLMQRET z=IJgnkLmi=s<2qCGR-}&JxD*(Ez6fFgQVXQ%ea*kmPGm@8;|X3qZn0_3rhn;ZF`<+ zL4wdoV-gR=Ih1rH0;%YCUZ~hae^gwh;57`>W?`7_Pm0K7XTQlv_v2HH2(U!3qX@ytRQ`?}$I5y0Y3k%z}HWLaV42^;(1x65kv0ZoY zxUTD8qA%j8Cq9+3vk6=)`Apk3@L;B;4VdE_e-p??L0vDqCmmr33nIlm0Psw|MR_WS zX9}31jM0s(%(1ju%pH?*^Xy)poYJCqD!`Py++iNV-X`a^>7cZuf{)p(WUf^{Na`A7 z=+Rxj2C#C~XzSe;&bNJcFm)aCc&3|O0hrk(WrU%eJGj!CRZel+gYC;6tbV~O!A8uqM*J*qcribHD2LRfMX6H*1}Ivs z!_wb_Cv+{9s>M3*Uv=Pw`nuTCOv@SiQjB8)9vrXXAXK_1$-L$fL)Y0vB#fsRNY>eh zhbfh>vpeSN?2ZuAu)k3;9crBgm%G;5GCRJc^}~^X8{)fDm;cg*lBJXawaaZ<{))>d z&2}zoVJ9c$yAhAuE-Cdhzvo&A8cj+n$8Zeb8_~i!3FEj?UAQt~Zyd7fO$mD9YVC;b+ z@XCfg7q|^@R50ZR=7~O};eydib+gki8%&CM6RyNFVJl3At2U8!93N{q>Kju{>n2RL zdI2}QrO~7fANG{Vfb8t;vJ;!_)n!jc@jhL?$mX-5a((rrqD(y$f=2CqyMrfrZJlV= z-7>;h{W|YaRJNhm!wSmyGb-)NNQXWrlQLkrK!i5J$wgYZkwb?OfBlWzPX;r39QF(P zfez@V^eX^mKeGV-rm^bJgiUe3A^IUq^p|+~`yzJ0He@qGN}fqKBXOT*yO&}sR_{!l zQ(tprL9JJ18U-x0$&3BvrEz%)uZh8$uPmXq@s!%hi=dHVQ31dWo$7LvSE7@lY%tPNcN}CsxX39P4RzOsSRlfL3JaCG_G}-Hs5{{vXX`UL9tX$Iuq@X z=aXh!D=6ika)0_8yW)GaizaAIhUsX(ULB`;YQEWi;i# zCGsRf5T1jg@Nfb$C!EU)BkOBRD9EQpb1M)@4z^)WeoVpVl5Lz;6#dYV^|M7|Kh9>a zA9`ru!2ZEr`n)Y%2S;*-B5KA7gzpq<4|A$5^KOeipx*iF8PHU-c>3PJ+PAkc;479_$zFm1% zRmCuvHU~JfDCUKZxX^ymapmnGS7bw!9UACv@<#!|yE`IucTO|ZB=VQlaH9Up3tN-* zztZzpDG$~Gno^G1!=agejT8JxAD*2Y&SN8-T1-Q57?T65kTHzJV;W8LV}r=0 znMpV8pt8-NI+pQnu-H}1kOj}!U&D1uH@Ey+C|{o{Su93ugb^$Lc$zCCCsErOh>q?k zTE+~4d`F0%+O<}WO z?+p)+RqZH$p+~Ed{lx15ZijBT{Fv_6{Q9n!ES>9~IZ}T_L}_+>H|$t^dsk^tXox}Q zAT8!MBZ6S8JtDZWYNXwJH-5p$U*2AVpNs0X9+#A=Cjfq)&(VDi?!irP!LJF_?IkEO zJPF6W9LH}uj@#B?0cB%EF94%~a>f&m%F>~j+$VxdH0vY1!)nipwQa*Al_`V3Wz+*a?MLd!p+k(PeTr zuX~)vXM=ciE(jLkHrZRH)fMbBnCzU;11lWdD2_?*{U}%+p+0p+* z->MYbHkj!$iHQp;ViB?#Jev2I-|v*J74x+)J$G}I&&L=H)FIrYx&h)pWIj`^(7Y0uo4sV$1kVH#gN;PNT{oC{~gme zXpd?3n_&CS`HZPIGUb^lW=tS6O?}xLw{wbx-NCbiEy6iPp~K~VjyfhhYUAj!F2WGo z#x~vjJkvPri%3Ba6X#&|VodKDZ5yg!Pms-xlaj^V!J_rSU}?fE$Hr{BCTyNFF*a9b z=Ed_2o2A{slJ&u+YJW_`oY9HViH3A8Sto?;%(B+Gwrk$WPgshPLRjm5J97o@T(5bE zZQHm}R>-%s8aK}L_ver?i*M2B9`1oyIWB(-mkbwj>8F$x6h(HnQTjs@*^@R2>Q+Cc zB(Qa#(N*4nWF}UsX^AeYAwbu7qLl^u*3cf)*SBk2rBzhG@&uUiZr-kk6 zI?H2=G@-4RMWZbfq_9?)iy+y}H_l2^`e#Ql+MTAePU{EnHy0v$ocS1enlJ9lvtSr1 z2Q{p#BX!SjxG$n=gR^~YH>EAlVbMjp&}rDFRxuv)7x3!6SN)Skj}WEt5xa89emt8D zr2d>t>cyg>>9VdXI_q{1v+4F?+ktvm-Zji2;GFLCO(F~VaBlHod3U?!nsTl+NJ||QC@VswYdgka8!GQ`)e%)6K)akU6O?K>qoDF~8clE;HQF@t9Xs11ndXD)Cw8oCBgP;c5qvn& z`|+~NGm^64NY|vppqi;Mrt!>#$)U!%8coDshW{qz5QMKQy4-n)%K`vAYrgZg1Q43} z_lG;>fYd|^!Zl{on+nCSs7<)^Q^Zt}IpFLzX-*?oyz)x5H7Uqfo0~oN)#9=7g-chr ze$o>ILn^BshyviR<7>eH`ATGV81;e~w8pk~sY8Wt=Q-O`2g%E91zkuaW^^Z5o+)>! zOxC2(ym&wqVf4|=_Bk%1;5M80bd3jU;!a8WfqmImB@c;8J%CoSeX6;Yd2|i3J~a^F zfQyeQT; zxJ=4BH(_rXkWAIW&`vHuMWPlYq@(p`-WkgJoz z3FBX86aV^*Xn-4%?A~rJpA>FLq06K|R-XSrK3G9+wEY|&SX0q=3h%5G6}f5?4G8En z!e*DlbWnF~8T?(a)K499$1;s7V|!Q}+kyoSN1{fNGkvMMj`;&YIxlW~ud|!Q&(DU6 zLyn@AbF=|mWv?dh?E&drAwYg|Al`fPUTvEY3cGaG*qW8C@0o_$-q(bg{^RlfW3~Sn z=LZJG0Wr$}Cd=ci5osa7btTtjg*aq%#VV_lsXdzv}ZY`=X# zN1Rcut4-SxsL-@Ej$y<^x-v>Gd=GaAP%Vm-a#2&nQ|Ghm^f0^L5LZqI2J>dCRb|CP zN5W$HhQn85Sn0)7IM@>#d6hamfm;R(iuN>Lc^EceTE6m2%Plwt`$mm7j@H1+h66nn z(^VPjPV_^kbS5Q+Y>nuZo{^*VkEGb`SxGidgCY+GJkDYa*jr+7uhdZ| zi7RwdpbQycR&heTiz0roN$>0b*@W-mEc?-Lu}}jLOUv52T>}m0cLx`^r0ipk{0qBt zG}RslLi?ndAHYDgT@-eX`0R6YGMKH}a0V^IsmNu}RM@$+4nQsrKswP5kBBBwEO5Xh z`@|%VpLz=8Ofl*bP>S3s{?HqGpriF8d_Km})tNt)!_&AmrOnB|fcRPAtf(I0;-x{v z16Ab@Gupv`I*Q0CnBYi-UhTNKkv%0Kq2)6K1bhkv?mV|!#BT0sDmFxD3RxOGkEltL zV6ztUZQj^rv-8v85A9-NlZH=iT{sJ1;`pqWTcco!DJ8IUhA;3jDpfi207c|vO*m^= z-ipUJd~AFGgX91>?#6wn{OW6gXQQ~ul!FFsV5Vq@mO@Rt^-&Tcu|yaGUJz{#IG8Hf zFy@I0c~zkc;v`mhQYi{kl|nF<&KN3&Q&4w4KMPX8l{IZNtZBL+T&`&hW?aZNZdl0D zvh`ia#GnqoAduSc10jOxuXQ za7YLZ1Mx!R+{HFuOwEaTzWN1!n-CWN^aWnb??N=7~WSoeCe4kC|{s zS$v4*TiH|SaOyK3qFnC{Hz?c(mz$247BPMYm<8|>Hd4jB$(2!M-$}3!e0s@xL@!B) z5kqJ`lDB1>&b=ZmNTB!1_EPPFizPN+obEO;ryLV+jhmw0U?1-<1Q%_Ww4iPoR+OR` zyksvy7lG4jJ#?PvU*^|Kx`UT?&G_Z3Z(?$`o)zrQtIdV8Y1E-5LuUsr19_(5yQy3B z;gE$gR(s7Ny@alLzramWw8!L4WRA=AZkJY}?`bB}zNsaXJCNnsons#AXsN=%%MDEj zPaQ!Rav*wnaluq>e|iYm(~;fAzufh=S;_H$VTSeqm%DAk&(am|74{}=ehElyuvjNm zjGWLf<%vS*QeO46rd3EF;Q+S;6`?xba{0sQNdx8wmxgA35$ff9Y}j_Gn5N~nYZKit zUNyS>OdfBzqZh^$R{kZr7hROySN94w-KKSI4>qaR{cWjrue$20TG?z&2j8q; zn@bIhkzduiF`1_6d*SO=bV&E9CL^o$k2Mb6TLgYt8kD}(eP?6cvQ%|rtmi9h%Te6Q zo-Zi2wD60Y@99>Sk$EN3fB|Mwin58=8tfNmYZAT)NiN9gn8?qH?|HJX}xuJ$k^2S@3}(PTs{GTSJ`Rf{Cftq@ zGl)RAaUf4ZGz$^I&|PB0BW#qX_ID<8zmd3@`pi|~FM_L$i%&G4x)Fi%y0UbGYW0L6 z?gX-#%E^RWiRWZ?#7+?$rw0?Y+BY>HkaEZ2_92ZpIZ#*YXAk83`AxgE?`S9L|W6i!!F|QGx2b8`^kw%DY`E zZJmYnww$p97B&datAerAV2wBP0n>AG>dm>6QGXx83-zNJ^*b1>Ve%51?48n#@ksB( zgymlEM8XoawwtBf+b~t0E=;5Zv+}I2StSTXurSV&w}3xY4b4GNxv@64RUYrl$vs^q z;qSD@mn|P{jjmcXw(1BTm1=!F@XC%re{aT;8-jxSdt#~e^AB#<{Ly~|rt1uiZy&%- z%a8Dl!Z`;foBBWb5;^sj0aV;Y-76OXe=xg>KE7*f5)}hw_jT8Djj!#LF$egv-Uv5z zYm^@d^WbcF-+*Ueic(sHQ8>80_A&ON1RBIZ->MO zSH}y9MCF~>D(yxUYj8p3@5J#ffGL`yu5}lthL)$s(k@aTqP9zU50<&cNS<7cP0_ z{Tn80pM<|Oo~BrZC2_bZ@Cki`5f;oXcA_v+4G70Qxi@%5&xf`laY?EafWc|Y`z@wP zXQ`)5+zVITr?vW@>wng@!4!eZMyk;ZwwH#bdkgE-MhH|uh4NyuR`01=;%;x{fC#e z!e4qDEY4>iVSgzreBM#X-w>TAu*)!ZSWcs3li~LLBJaKXXAAza2YBN#g1kCq5wmY4w|AghQ5Z3-=y0ux>Ha0ml48)D#p%fxCD1N>m`cSk!iNVX5|$dJVb(n-C-A;T0wHH% zE<>}OP!WBhO(3U(%>%geB$jCk^BkvwW=kwJ8<-GCF8Jc}mzl-~y&V?8hI;=9){N$? zx!xpvLBR)RN>Ho|+NMd4Fxlmg#^DEXeTt+<@l#nz6CrmD^s{?|Gkdk=Wr_knY@nZ# ztJfdcUU6aXutqJ*fbZCjN*29oOGCNNgo#Y8a-A_vGF!Cl2uaac3TjwW`x%L%b-k>L z)DP-8IGKlP_5c~inOx~fL!_W(Os}kIH`c=6DdU=xS0MYc<9P7okR~>81wsX0XYSpaIjsk;)J&!FKqQ^dz zkNy`XlVvWyz&Ht~xp%`PwsAKl628oe>xPYf@g;KLA1>re^F`?gjoJ*J?Q0Wu%!o`C zl#D3z`-}RN=<)-jDq^MOsk1}|P#kF2f&cGx`Kxm3UpO)KykL?e{(*nYiu3VY6i>CN zzM5K%qGMvuh^3Q=Yw|9fdNO;qsg;wb&$npplaDiJu*6ea_O|Z;Dvbfh@ue$|p`e=t zf5OVuxiGvkQ@u3F%;L%djA-b(sH9W$YG!NItq>D9Q7kOkE3OR-{xfqSxm0IlHH);$ z{gVQFPlCOmfS}v!h_-W1@j)B%Ih+mGKkSQ+YS1SYq8v!5I|*0Ix=l=-2=FiB{MKrM zqbJUVW~_mf&gX75_Y<_K$8mOhqd~jcJI!C?L%iP z3P2mt{#O<6m<*n8rn6y-4l`W!+gj+x%#jr|4d?oJWcU?wcwuaY0=_Ku_h?(04JU;Q zu7u<^1J(*t0*+$1L~CFCV`;h&Zj*etu6NL*THhGF6=&5;H{Q72x~|na6mYNJ_z7)Z T!)%?418MbnYZj6