mgltools-scenario2-1.5.7~rc1~cvs.20130519/0000755000175000017500000000000012146213413017113 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/setup.py0000644000175000017500000000646611156043014020637 0ustar debiandebian from distutils.core import setup from distutils.command.sdist import sdist from distutils.command.install_data import install_data from distutils.command.build_scripts import build_scripts import os from string import find ######################################################################## # Had to overwrite the prunrefile_list method of sdist to not # remove automatically the RCS/CVS directory from the distribution. ######################################################################## class modified_sdist(sdist): def prune_file_list(self): """ Prune off branches that might slip into the file list as created by 'read_template()', but really don't belong there: * the build tree (typically 'build') * the release tree itself (only an issue if we ran 'sdist previously with --keep-temp, or it aborted) """ build = self.get_finalized_command('build') base_dir = self.distribution.get_fullname() self.filelist.exclude_pattern(None, prefix=build.build_base) self.filelist.exclude_pattern(None, prefix=base_dir) class modified_install_data(install_data): def run(self): install_cmd = self.get_finalized_command('install') self.install_dir = getattr(install_cmd, 'install_lib') return install_data.run(self) ######################################################################## # list of the python packages to be included in this distribution. # sdist doesn't go recursively into subpackages so they need to be # explicitaly listed. # From these packages only the python modules will be taken packages = ['Scenario2', 'Scenario2.Icons', 'Scenario2.gui', 'Scenario2.gui.Tk','Scenario2.Tests', ] # list of the files that are not python packages but are included in the # distribution and need to be installed at the proper place by distutils. # The list in MANIFEST.in lists is needed for including those files in # the distribution, data_files in setup.py is needed to install them # at the right place. data_files = [] def getDataFiles(file_list, directory, names): fs = [] for name in names: ext = os.path.splitext(name)[1] #print directory, name, ext, len(ext) if ext !=".py" and ext !=".pyc": fullname = os.path.join(directory,name) if not os.path.isdir(fullname): fs.append(fullname) if len(fs): file_list.append((directory, fs)) os.path.walk("Scenario2", getDataFiles, data_files) # description of what is going to be included in the distribution and # installed. from version import VERSION setup (name = 'Scenario2', version = VERSION, description = "A package providing functionality for modifying Python objects over the course of time according to a scenario. A scenario is defined as a set of events taking place at specific times./nThis package requires the discrete events simulation Python package SimPy(see http://simpy.sourceforge.net/)", author = 'Molecular Graphics Laboratory', author_email = 'sanner@scripps.edu', download_url = 'http://mgltools.scripps.edu/downloads', packages = packages, data_files = data_files, cmdclass = {'sdist': modified_sdist, 'install_data': modified_install_data, }, ) mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/0000755000175000017500000000000012146213430020737 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/director.py0000644000175000017500000006706011446764467023164 0ustar debiandebian## ## Author Michel F. Sanner May 2007 ## from time import sleep import warnings, weakref, numpy from actor import Actor from Scenario2 import MaxKF try: from DejaVu.scenarioInterface.animations import RedrawActor foundDejaVu = True except ImportError: foundDejaVu = False ## from SimPy.Simulation import Process, initialize, activate, simulate, now, hold from Scenario2.multipleActorsActions import MultipleActorsActions, MAAGroup, ActorProcess ## class Director(MultipleActorsActions): ## """ ## """ ## def __init__(self): ## MultipleActorsActions.__init__(self) ## self.currentFrame = 0 ## self.endFrame = 0 ## self.gui = None # will be set when a gui is created ## self.recordingActors = [] # list of actors with recording flag on ## # i.e. actor.recording!='stopped' ## # FIXME should have a set and delete method to check type etc ## self.afterAnimation = [] # list of functions to be called after ## # play ends ## self.scenarios = {} ## self.autotrackDict = {} ## self.redrawActor = None ## self.moveForward = True ## self.maxFrame = 0 ## self.needsRedraw = False ## def addScenario(self, name, scenario): ## self.scenarios[name] = scenario ## def start(self, setDirector = True, title = None): ## if self.gui is None: ## gui = DirectorGUI(self, title = title) ## gui.root.protocol('WM_DELETE_WINDOW', gui.root.withdraw) ## self.gui = gui ## if setDirector: ## for scenario in self.scenarios.values(): ## scenario.setDirector() ## else: ## if title: ## oldtitle = self.gui.root.title() ## if oldtitle != title: ## self.gui.root.title(title) ## self.gui.root.deiconify() ## ## def deleteActor(self, actor): ## ## # delete this actor and all its actions ## ## name = actor.name ## ## if self.gui: ## ## self.gui.deleteActors() ## ## if actor in self.actors: ## ## self.actors.remove(actor) ## ## if hasattr(actor, "guiVar"): ## ## if actor.guiVar: ## ## actor.guiVar.set(0) ## ## #if hasattr(actor.object, "animatedProperties"): ## ## # del actor.object.animatedProperties[name] ## ## if hasattr(actor.scenario, "animatedProperties"): ## ## del actor.scenario.animatedProperties[name] ## ## if self.gui: ## ## if self.gui.selectedFrames.has_key(name): ## ## self.gui.selectedFrames.pop(name) ## ## if self.gui.autotracking: ## ## if self.autotrackDict.has_key(name): ## ## self.autotrackDict.pop(name) ## ## # this will update the dictioanary with a new "clean" ## ## # version of the deleted actor. ## ## self.autotrackDict.update(actor.scenario.getNewActors()) ## ## self.gui.drawActors() ## ## ####################FIX THIS ########### ## ## if len(actor.kfSetId): ## ## for kf, setId in actor.kfSetId.items(): ## ## kfset = self.gui.kfSets.get(setId) ## ## if kfset: ## ## kfset.removeKeyFrame(name, kf) ## ## if kfset.getNumberOfFrames() == 1: ## ## # remove the set ## ## self.gui.removeKFSet(kfset) ## def getLastFrame(self): ## # returns number of frames in the simulation ## return self.endFrame ## def getLastFrameWithChange(self, actors = None): ## # returns the last frame in which a value changes ## if not actors: ## actors = self.actors ## last = None ## for actor in actors: ## #if actor.isFullRange(): continue ## if actor.visible: ## lastFrame = actor.getLastKeyFrame() ## if last is None: ## last = lastFrame ## else: ## if lastFrame.pos > last.pos: ## last = lastFrame ## return last ## def updateEndFrame(self, end, updateGUI=1): ## if not end: ## return ## if end > self.endFrame: ## self.endFrame = end ## if self.gui and updateGUI: ## self.gui.setDuration(end) ## else: ## last = self.getLastFrameWithChange() ## if last is not None: ## last = last.pos ## else: ## last = 0 ## if end < last+10 : # when recording we want to make sure there are frame to the right ## self.endFrame = last +10 ## else: ## self.endFrame = end ## if self.gui and updateGUI: ## self.gui.setDuration(self.endFrame) ## def run(self, forward=True): ## if len(self.actors)==0: ## #print "no actors" ## return ## initialize() ## redraw = self.redrawActor ## start = 0 ## #end = self.endFrame ## self.maxFrame = 0 ## maxFrame = self.getLastFrameWithChange() ## if maxFrame is not None: ## self.maxFrame = maxFrame.pos ## end = self.maxFrame ## gui = self.gui ## if gui: ## if not (gui.startFrame == 0 and gui.stopFrame == 1): ## start = gui.startFrame ## end = gui.stopFrame ## self.maxFrame = end + start ## self.moveForward = forward ## if redraw: ## redraw.object.stopAutoRedraw() ## proc = RedrawActorProcess(redraw) ## activate(proc, proc.execute(), at=start, prior=True) ## #print 'activated redraw', ## for actor in self.actors: ## if actor.name != "redraw": ## proc = ActorProcess(actor) ## activate(proc, proc.execute(), at=start, prior=True) ## #print 'activated ', actor.name, action ## #print 'simulate', self.endFrame ## simulate(until=end) ## #self.currentFrame = self.endFrame ## if forward: ## #self.currentFrame = self.endFrame ## self.currentFrame = end ## else: ## self.currentFrame = start ## # call callback after animation completes ## for f in self.afterAnimation: ## f() ## if self.redrawActor: ## vi = self.redrawActor.object ## vi.startAutoRedraw() ## def setValuesAt(self, frame, actor = None): ## if actor: ## actors = [actor] ## else: ## actors = self.actors ## for actor in actors: ## actions = actor.actions ## if actor.name != "redraw" and actor.playing: ## if len(actor.valueGenerators): ## value = actions.getValueAt(frame) ## if value != 'Nothing There': ## # if redraw: ## # self.needsRedraw = True ## actor.setValue(value) ## # if redraw: ## # redraw.setValue() ## def gotoFrame(self, frame, set=True): ## if frame<0: ## frame = 0 ## elif frame>self.endFrame: ## frame = self.endFrame ## if frame==self.currentFrame: ## return ## self.currentFrame = frame ## if set: ## self.setValuesAt(frame) ## if self.gui: ## self.gui.placeTimeCursor(frame) ## ## def createActorFromData(self, obj, propname, scenarioInterface,filename, fields, ## ## data, start = 0, end=-1): ## ## # Create a special actor whose valueGenerator returns values from a data ## ## # sequence such as list ar numpy array, This data is read from a file (.adat)-> ## ## # see actor.py/adatFileParser ## ## # obj - animatable object ## ## # propname - the object's animated property name ## ## # scenarioInterface - scenario interface that is n self.scenarios and "knows" how ## ## # to create a regular actor for this object (i.e has createActor() method). ## ## # start - first keyframe of the actor ## ## # end - last keyframe of the actor ( if end == -1, then the number of frames between ## ## # first and last keyframes is len(data)-1, or one data step per each keyframe). ## ## if data is None: ## ## print "createActorFromData: data is None" ## ## return ## ## assert scenarioInterface in self.scenarios.values() ## ## actor = None ## ## if data is not None: ## ## assert type(data).__name__ in ('ndarray', 'list') ## ## nsteps = len(data) ## ## firstVal = data[0] ## ## lastVal = data[nsteps-1] ## ## #print filename, len(data), data[0], propname ## ## # create an actor with ReadDataInterpolator valuegenerator ## ## #try: ## ## # this will create file actor with two keyframes : "0" and "nsteps-1" ## ## actor = scenarioInterface.createActor(obj, propname, check=False, ## ## addToDirector=False, ## ## actorData = (filename, data)) ## ## actor.datafields = fields ## ## #except: ## ## # warnings.warn("Failed to create file actor %s" % propname) ## ## # return None ## ## if actor: ## ## self.addActor(actor) ## ## #print "start=", start, "end=", end, "nsteps=", nsteps ## ## if end == -1: ## ## end = start + nsteps - 1 ## ## if end != nsteps-1: ## ## if self.gui: ## ## #this will move "nsteps-1" keyframe to "end" keyframe ## ## self.gui.selectKeyFrame_cb(actor, nsteps-1, newframe=end) ## ## if start != 0: ## ## if self.gui: ## ## # this will move "0" keyframe to "start" keyframe ## ## self.gui.selectKeyFrame_cb(actor,0,newframe=start) ## ## return actor from mglutil.events import EventHandler from Scenario2.events import AddMAAEvent, RemoveMAAEvent, CurrentFrameEvent,\ PlayerStartEvent, PlayerStopEvent from DejaVu.states import setRendering, setOrientation class MAADirector(EventHandler): """ an MAADirector object contains a list of MultipleActorsActions (MAA) objects and their corresponding positions, i.e. absolute frame number in the animation. the (maas, position) tuples are stored in the .maas attribute attributes: .currentFrame: current frame in the animation .maxFrame: .endFrame: frame after the last frame for which there is a value Methods: bool <- addMAAat(self, maa, position) maa, index <- removeMAA(maa, position) None <- play(self, fromPos=0, toPos=None, forward=True, callback=None) None <- def setValuesAt(self, frame) string <- getMAASourceCode(self, variable, indent=0, showwarning=True) """ def __init__(self): EventHandler.__init__(self) self.maas = [] # will hold the list of [MAA, position] pairs self.currentFrame = 0 self.endFrame = 0 # frame after the last frame for which there is a value self.maxFrame = 0 # these are used internally self.moveForward = True # truwe when palying forward self.needsRedraw = False self.redrawActors = {} # {Viewer Object: RedrawActor} def addMAAat(self, maa, position, check=True): """ adds an MAA object to be played at a given position. bool <- addMAAat(maa, position) the MAA can only be added if none of its actors overlaps with the same actor in an existing MAA. Returns True is maa was added. Event: generates a AddMAA event """ if not isinstance(maa, MultipleActorsActions) and not isinstance(maa, MAAGroup): raise TypeError, "in addMaaat() maa must be an instance of MultipleActorsActions or MAAGroup" #assert isinstance(maa, MultipleActorsActions) assert isinstance(position, int) maxiAll = 0 # check that no actor in maa overlaps with the same actor redrawInd = [] for i, actor in enumerate(maa.actors): actions = actor.actions mini, maxi = actions.boundingFrames(position) if maxi < MaxKF and maxi > maxiAll: maxiAll = maxi if check: for maa1, pos1 in self.maas: #if actor.name[:6]=='redraw': # self.redrawActors[actor.object] = actor # continue # does actor exist in maa1? actor1 = maa1.findActor(actor) if actor1 is None: # actor not in maa1 continue if foundDejaVu and isinstance(actor1, RedrawActor): continue # does actions at position overlap with actor1 at pos1 mini1, maxi1 = actor1.actions.boundingFrames(pos1) if maximaxi1: continue else: return False if mini>maxi1: continue if maxi self.endFrame: self.endFrame = maxiAll + 1 #add maa self.maas.append( [maa, position] ) if not hasattr(maa, "startFlag"): maa.startFlag = "after previous" maa.startOffset = 0 maa._director = weakref.ref(self) if isinstance(maa, MAAGroup): for m in maa.maas: m._director = weakref.ref(self) # create and dispatch event self.dispatchEvent(AddMAAEvent(maa)) return True def stopViewersAutoRedraw(self): """ Stop autoRedraw in all Viewer associates with RedrawActors """ for actor in self.redrawActors.values(): #print "stopped autoredraw" actor.object.stopAutoRedraw() def startViewersAutoRedraw(self): """ Start autoRedraw in all Viewer associates with RedrawActors """ for actor in self.redrawActors.values(): #print "start autoredraw" actor.object.startAutoRedraw() def viewerRedraw(self): """ make sure all Viewers will redraw """ #print 'Viewer Redraw' for actor in self.redrawActors.values(): if self.needsRedraw and actor.playing: actor.setValue() self.needsRedraw = False actor._maa().needsRedraw = False def setOrientation(self, orient): """ make sure all Viewers will redraw """ for actor in self.redrawActors.values(): if actor.playing: vi = actor.object root = vi.rootObject if orient.has_key(root.fullName): # snapshot orient allkeys = orient.keys() ort = {} ort.update(orient[root.fullName]) allkeys.remove(root.fullName) if orient.has_key('fieldOfView'): ort['fieldOfView'] = orient['fieldOfView'] allkeys.remove('fieldOfView') if orient.has_key('lookFrom'): ort['lookFrom'] = orient['lookFrom'] allkeys.remove('lookFrom') setOrientation(root, ort) for name in allkeys: obj = vi.FindObjectByName(name) if obj.fullName == name: setOrientation(obj, orient[name]) else: setOrientation(actor.object.rootObject, orient) def setRendering(self, rendering): """ make sure all Viewers will redraw """ for actor in self.redrawActors.values(): if actor.playing: setRendering( actor.object, rendering ) def play(self, fromPos=0, toPos=None, forward=True, callback=None): """ play through the list of MAAs None <- play(self, fromPos=0, toPos=None, forward=True, callback=None) fromPos: starting frame for play back toPos: ending frame for play back forward: True when playing direction is forward, False when playing direction is backward """ ## SEEMS NOT USED self.dispatchEvent(PlayerStartEvent(fromPos)) if toPos is None: toPos = self.endFrame-1 if len(self.maas)==0: return self.needsRedraw = False self.stopViewersAutoRedraw() for i in xrange(fromPos, toPos+1): self.setValuesAt(i) if callback: callback(i) self.viewerRedraw() self.startViewersAutoRedraw() #self.afterAnimationCb() self.dispatchEvent(PlayerStopEvent(i)) def afterAnimationCb(self): """ Call callback for each MAA to restore the state of objects drive by MAAs """ for maa, off in self.maas: maa.afterAnimation_cb() def setValuesAt(self, frame): """ Goto to a specified frame and issues values for all MAAs None <- def setValuesAt(self, frame): # FIXME this should also issue ending values of MAAs that ended before """ # create and dispatch event for current frame change self.dispatchEvent(CurrentFrameEvent(frame)) #stopAutoRedraw = False needsRedraw = False for maa, pos in self.maas: #print 'setting frame:', frame, maa.name, pos + maa.firstPosition if frame == pos + maa.firstPosition: # first Frame firstFrame = True if hasattr( maa, 'orient') and maa.forceOrient: if not maa.setOrient: self.setOrientation(maa.orient) if hasattr(maa, "geomOrients") and maa.setOrient: #self.stopViewersAutoRedraw() #stopAutoRedraw = True for o, val in maa.geomOrients.items(): setOrientation(o, val) if hasattr( maa, 'rendering') and maa.forceRendering: self.setRendering(maa.rendering) else: firstFrame = False if frame >= pos+ maa.firstPosition and \ frame <= pos + maa.lastPosition: #print "setting values at frame %d , pos: %d for maa " % ( # frame,pos), maa.name maa.setValuesAt(frame, pos) ## if stopAutoRedraw: ## self.startViewersAutoRedraw() ## stopAutoRedraw = False if maa.needsRedraw: needsRedraw = True self.needsRedraw = needsRedraw #elif frame > maa.lastPosition+off: # maa.setValuesAt(maa.lastPosition+off, off) def removeMAA(self, maa, position): """ remove maa from MAADirector. maa, index <- removeMAA(maa, position) arguments: maa: instance of MAA; position: the specified MAA starting position in the MAADirector return value: returns the removed maa and its index in the director's MAA list Event: generates a RemoveMAA event Exceptions: raises a RuntimeError if MAA is not found in self.maas """ # get index if it was not specified index = 0 _maa = None for maa1, pos in self.maas: if maa==maa1 and pos==position: _maa = maa1 break index += 1 if _maa is None: raise RuntimeError("MAA not found") # remove maa rmaa = self.maas.pop(index) # check if self.redrawActors.values() contains a redraw actor from the removed maa: for obj,redrawactor in self.redrawActors.items(): if redrawactor._maa()==maa: del self.redrawActors[redrawactor.object] ## redrawactor = None ## for actor in rmaa[0].actors: ## if foundDejaVu and isinstance(actor, RedrawActor): ## redrawactor = actor ## break ## if redrawactor in self.redrawActors.values(): ## # remove the redraw actor from self.redrawActors dict, check if the rest of maas ## # contain a redraw for the same object: ## del (self.redrawActors[redrawactor.object]) ## obj = redrawactor.object ## for maa in self.maas: ## if self.redrawActors.get(obj): ## break ## for actor in maa: ## if foundDejaVu and isinstance(actor, RedrawActor): ## if actor.object == obj: ## self.redrawActors[actor.object] = actor ## break # create and dispatch event self.dispatchEvent(RemoveMAAEvent(rmaa[0])) # update director's endFrame self.updateEndFrame() return maa1, index def updateEndFrame(self): # update director's endFrame maxi = 0 if len(self.maas)==0: self.endFrame = maxi return for maa, position in self.maas: end = position + maa.lastPosition if end > maxi: maxi = end self.endFrame = maxi + 1 def computePosition(self, maa, startFlag=None, startOffset=None): """ Compute the absolute starting frame of the specified maa position, index <- computePosition(maa, startFlag=None, startOffset=None) arguments: maa - compute new position for this maa startFlag - can be 'with previous' or 'after previous' startOffset - start offset from the position specified by startFlag return values: position - absolute starting frame in animation index - index of the specified maa in the self.maas list. """ index = 0 _maa = None _pos = None for maa1, pos in self.maas: if maa==maa1: _maa = maa1 _pos = pos break index += 1 if _maa is None: raise RuntimeError("MAA not found") if startFlag is None: startFlag = maa.startFlag if startOffset is None: startOffset = maa.startOffset if index == 0: position = startOffset else: # find previous maa in the list of self.maas prevMaa, prevPos = self.maas[index-1] # compute new position mini, maxi = prevMaa.boundingFrames(position = prevPos) if startFlag == "after previous": position = maxi+ 1 + startOffset #if startOffset == 0 : # position = position + 1 elif startFlag == "with previous": position = mini + startOffset else: raise RuntimeError("Wrong starting position: %s" % startFlag) return (position, index) def getMAASourceCode(self, variable, indent = 0, showwarning = True): """ Return python code creating the list of maas string <- getMAASourceCode(self, variable, indent=0, showwarning=True) """ tabs = " "*indent newtabs = tabs + 4*" " # define the showwarning variable that is used in the source code returned by # maa.getSourceCode() lines = tabs + """showwarning = %s\n""" % showwarning if not len (self.maas): return "" i = 0 for maa in self.maas: if hasattr(maa[0], "getSourceCode"): maasrc = maa[0].getSourceCode("maa%d"%i) if len(maasrc): lines += tabs + """maa%d = None\n"""%i lines += tabs + maasrc + """\n""" lines += tabs + """if maa%d is not None and len(maa%d.actors)> 0: \n""" % (i, i) lines += newtabs + """%s.addMAAat(maa%d, offset+%d, check=False)\n""" % (variable, i,maa[1]) i = i+1 return lines ## def checkPosition(self, maa, position): ## """check that no actor in the maa (placed at the specified position) ## will overlap with the same actor of the maas in the list """ ## for maa1, pos1 in self.maas: ## if maa1 == maa: continue ## for actor in maa.actors: ## if actor.name[:6] == 'redraw': ## continue ## actor1 = maa1.findActor(actor) ## if actor1 is None: # actor not in maa1 ## continue ## #same actor found ## mini, maxi = actor.actions.boundingFrames(position = position) ## mini1, maxi1 = actor1.actions.boundingFrames(pos1) ## if maximaxi1: continue ## else: ## position = self.checkPosition(maa, maxi1 + 1) ## return position if __name__=='__main__': from datatypes import FloatType from interpolators import FloatScalarInterpolator class foo: def __init__(self): self.a= 2.0 f = foo() ## # create an actor ## actor = Actor('test', f, 0.5, FloatType, FloatScalarInterpolator) ## assert len(actor.keyframes.values) == 1 ## assert actor.keyframes.values[0] == 0.5 ## # create a director ## d = Director() ## d.addActor(actor) ## # run the animation ## print "Run keyframe 0" ## d.run() ## # add a keyframe ## actor.setKeyframe( 10, 10.5) ## print "Run keyframe 0 and 1" ## d.run() ## # add a keyframe at 15 ## actor.setKeyframe( 20, 10.5) ## actor.setKeyframe( 25, 5.5) ## assert len(actor.valueGenerators)==4 ## assert len(actor.keyframes.kfs)==4 ## print "Run keyframe 0,1,2,3" ## d.run() ## # stop interpolation between keyframe 1 and 2 (i.e interval 1) ## actor.valueGenerators[1].configure(active = False) ## #actor.setValueGenerator( None, segment=1) ## print "Run keyframe 0,1 and 2,3" ## d.run() mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/keyframes.py0000644000175000017500000004104411553672571023322 0ustar debiandebian## ## Author Michel F. Sanner Jan 2009 ## class ValueObject: """Object holding a value associated with a keyframe """ def __init__(self, value=None, cmp=None): """Constructor of ValueObject None <- ValueObject(value=None, cmp=None) arguments: value - a value associated with a keyframe cmp - a function used to compare the value of this ValueObject with the value of another ValueObject. """ self.value = value self.cmp = cmp def getValue(self): """ value <- getValue() returns self.value """ return self.value def setValue(self, value): """ None <- setValue(value) Set the value atttribute """ self.value = value def equal(self, valueObject): """ bool <- equal(valueObject) compare the value stored in self.value with the value of specified ValueObject. Returns True or False """ if self.cmp: return self.cmp(self.value, valueObject.value) else: return self.value == valueObject.value class AutoCurrentValueObject(ValueObject): """ ValueObject class that will get and set it's value autoamtically to the current value of the actor's animated object when it plays. The actor has to be able to retrieve the current value from the object it is driving. """ def __init__(self, actor): """ None <- AutoCurrentValueObject(actor) argument: actor - an Actor instance, has to have getValueFromObject method """ ValueObject.__init__(self) assert actor.getFuncTuple self.actor = actor def getValue(self): """ value <- getValue() Returns the current value of the actor's object associated with this ValueObject """ return self.actor.getValueFromObject() class ValueFromFunctionObject(ValueObject): """ ValueObject object that will get a value from a specified function when it plays. """ def __init__(self, function, *args, **kw): ValueObject.__init__(self) assert callable(function) self.function = function self.args = args self.kw = kw def getValue(self): return self.function(*self.args, **self.kw) class ValueGenerator: """ Object producing interpolating values over an interval. The generator has to be callable and has to return a value for a given input value. This input value is usually a fraction of an interval ranging from 0. at the begining of the interval to 1. at the end of the interval. """ def __init__(self, generator=None): self.generator = None if generator is not None: self.setGenerator(generator) def setGenerator(self, generator): assert callable(generator) self.generator = generator def getValue(self, percentage, interval, **kw): if self.generator is None: raise ValueError("ValueGenerator has no generator set yet") else: return self.generator( *(percentage, interval), **kw) def clone(self): """ This method returns a copy of the ValueGenerator object. If the generator has a .clone() method this method will be used to clone this ValueGenerator. Else the cloned ValueGenerator will be crated by pointing to the same callable as the ValueGenerator beign cloned. """ try: generator = self.generator.clone() except AttributeError: generator = self.generator nvg = self.__class__(generator) return nvg class LinkedList: """This mixin class adds 2 attributes nxtLinked and prvLinked and proviceds support for adding a linked copy using linkedCopy() and retrieving all linked copies """ def __init__(self): self.nxtLinked = None # next linked keyframe self.prvLinked = None # previous linked keyframe def linkedCopy(self, newLinkedObject): """update links to add the linkedObject """ #find last linked keyframe lastkf = self while lastkf.nxtLinked is not None: lastkf = lastkf.nxtLinked # build links between last and linkedObject newLinkedObject.prvLinked = lastkf lastkf.nxtLinked = newLinkedObject def getAllLinked(self): """ return all linked keyframes, self is always first in the returned list """ kf = self linked = [kf,] while kf.nxtLinked is not None: kf = kf.nxtLinked linked.append( kf ) kf = self.prvLinked if kf is None: return linked linked.append( kf ) while kf.prvLinked is not None: kf = kf.prvLinked linked.append( kf ) return linked def isLinked(self): return self.nxtLinked is not None or self.prvLinked is not None class KF(LinkedList): """Keyframe object. This object associates a frame (i.e. time) with a value stored in a ValueObject object. """ def __init__(self, position, value): LinkedList.__init__(self) self.pos = position if isinstance(value, ValueObject): self.valueObject = value else: self.valueObject = ValueObject(value) self.leftInterval = None # interval object before KF self.rightInterval = None # interval object after KF def getValue(self, frame=None, interval=None): return self.valueObject.getValue() def setValue(self, value): self.valueObject.setValue(value) # for this keyframe and all linked ones update valGens for k in self.getAllLinked(): # update value generators for left interval inter = k.leftInterval if inter: if inter.valGen.generator: inter.valGen.generator.configure(lastVal=value) # update value generators for right interval inter = k.rightInterval if inter: if inter.valGen.generator: inter.valGen.generator.configure(firstVal=value) def linkedCopy(self, position): """update links to add the linkedObject """ newkf = KF(position, self.valueObject) LinkedList.linkedCopy(self, newkf) return newkf def copy(self, position): """ create a deep copy of a keyframe """ return self.__class__(position, self.getValue()) def equal(self, kf): """ return True if kf and self have same position and same value """ return self.pos==kf.pos and \ ( (self.valueObject==kf.valueObject) or (self.valueObject.equal(kf.valueObject)) ) class KFAutoCurrentValue(KF): """Keyframe object. This object associates a frame (i.e. time) with a value returned or generated by AutoCurrentValueObject object. """ def __init__(self, position, value): """ Constructor of KFAutoCurrentValue obejct obj <- KFAutoCurrentValue(position, value) position is an integer describing the time for this keyframe value can be a AutoCurrentValueObject instance or an object for which a AutoCurrentValueObject can be created """ LinkedList.__init__(self) self.pos = position if isinstance(value, AutoCurrentValueObject): self.valueObject = value else: self.valueObject = AutoCurrentValueObject(value) self.leftInterval = None # interval object before KF self.rightInterval = None # interval object after KF def getValue(self, value=None): if value is None: value = self.valueObject.getValue() #print "kf: ", self, self.pos, value inter = self.rightInterval if inter: gen = inter.valGen.generator if gen: if hasattr(gen, 'configure'): try: gen.configure(firstVal=value, active = True) inter.active = True except: gen.configure(active = False) inter.active = False inter = self.leftInterval if inter: gen = inter.valGen.generator if gen: if hasattr(gen, 'configure'): try: gen.configure(lastVal=value, active = True) inter.active = True except: gen.configure(active = False) inter.active = False return value def copy(self, position): """ create a deep copy of a keyframe """ return KFAutoCurrentValue(position, self.valueObject.actor) class KFValueFromFunction(KF): """Keyframe object. This object associates a frame (i.e. time) with a value returned or generated by ValueFromFunctionObject object. """ def __init__(self, position, function): """ Constructor of KFAutoCurrentValue obejct obj <- KFValueFromFunction(position, function) position - an integer describing the time for this keyframe function - either a ValueFromFunctionObject instance or a callable function for which a ValueFromFunctionObject can be created """ KF.__init__(self, position, None) if isinstance(function, ValueFromFunctionObject): self.valueObject = function else: self.valueObject = ValueFromFunctionObject(function) def getValue(self): value = self.valueObject.getValue() inter = self.rightInterval if inter: gen = inter.valGen.generator if gen: if hasattr(gen, 'configure'): gen.configure(firstVal=value) inter = self.leftInterval if inter: gen = inter.valGen.generator if gen: if hasattr(gen, 'configure'): gen.configure(lastVal=value) return value def copy(self, position): """ create a deep copy of a keyframe """ return self.__class__(position, self.valueObject.function) class Interval(LinkedList): """Class representing an interval to the right of the keyframe k1 """ def __init__(self, k1=None, k2=None, valGen=None, generator=None, **kw): """ Interval constructor interval <- Interval(k1=None, k2=None, valGen=None, generator=None) If k1 and k2 are specified that has to be instances of KF objects If valGen is specified it has to be an instance of ValueGenerator if valGen is NOT specified and generator is specified, a ValueGenerator object is built and generator is set as the generator for this ValueGenerator """ LinkedList.__init__(self) self.kf1 = None self.kf2 = None self.getValue = self._getValue0KF if valGen is None: self.valGen = ValueGenerator(generator) else: assert isinstance(valGen, ValueGenerator) self.valGen = valGen #self.setKF1(k1) #self.setKF2(k2) self.setKeyFrames(k1, k2) self.active = True # when false this interval deos not set values self.data = kw.copy() # used to propagate data such as rotation angle def setActive(self, value): assert value in [True, False, 0, 1] self.active = bool(value) def setGetValueMethod(self): """ select getValue method depending on the keyframes that are defined """ if self.kf2 is None and self.kf1 is None: self.getValue = self._getValue0KF elif self.kf1 is not None and self.kf2 is None: self.getValue = self._getValue1KF elif self.kf1 is not None and self.kf2 is not None: self.getValue = self._getValue2KF else: self.getValue = self._getValue0KF def setKF1(self, k1): """ set first keyframe """ assert k1 is None or isinstance(k1, KF) self.kf1 = k1 if k1 is not None: k1.rightInterval = self val = k1.getValue() if val is not None: if self.valGen.generator: gen = self.valGen.generator if hasattr(gen, 'configure'): gen.configure(firstVal=val) self.setGetValueMethod() def setKF2(self, k2): """ set second keyframe """ assert k2 is None or isinstance(k2, KF) self.kf2 = k2 if k2 is not None: k2.leftInterval = self val = k2.getValue() if val is not None: if self.valGen.generator: gen = self.valGen.generator if hasattr(gen, 'configure'): gen.configure(lastVal=val) self.setGetValueMethod() def setKeyFrames(self, k1, k2): """set both keyframes """ assert k1 is None or isinstance(k1, KF) assert k2 is None or isinstance(k2, KF) self.kf1 = k1 self.kf2 = k2 if k1 is not None and k2 is not None: k1.rightInterval = self k2.leftInterval = self if self.valGen.generator: gen = self.valGen.generator if hasattr(gen, 'configure'): val1 = k1.getValue() val2 = k2.getValue() if val1 is not None and val2 is not None: gen.configure(firstVal=val1, lastVal=val2) elif val1 is not None: gen.configure(firstVal=val1) elif val2 is not None: gen.configure(lastVal=val2) self.setGetValueMethod() elif k1 is not None: self.setKF1(k1) elif k2 is not None: self.setKF2(k2) def setValGen(self, valGen): """ set the interval's value generator """ assert valGen is None or isinstance(valGen, ValueGenerator) self.valGen = valGen def setValGenGenerator(self, generator): """ set the value generator function in the interval's value generator object """ self.valGen.setGenerator(generator) # set the keyframes to for the generator to be configured if self.kf1: generator.configure(firstVal=self.kf1.getValue()) if self.kf2: generator.configure(lastVal=self.kf2.getValue()) def linkedCopy(self, position): """Returns a linked interval with linked keyframes and pointing to the same calue generator than the original interval. """ oldpos1 = self.kf1.pos k1l = self.kf1.linkedCopy(position) if self.kf2 is not None: k2l = self.kf2.linkedCopy(self.kf2.pos + (position-oldpos1)) else: k2l = None newInt = Interval( k1l, k2l, self.valGen ) LinkedList.linkedCopy(self, newInt) return newInt def _getValue2KF(self, frame): """intervals with 2 keyframes return a value generated by the interval value generator""" if self.active: first = self.kf1.pos nbFrames = float(self.kf2.pos - first) + 1 #print 'AAA', frame, nbFrames if frame==self.kf2.pos: fraction = 1.0 else: fraction = (frame-first)/(nbFrames-1) #try: # return self.valGen.getValue(fraction, h, dy) #except: return self.valGen.getValue( fraction, self ) else: return None def _getValue1KF(self, frame): """open ended intervals return value of starting keyfram""" if self.active: return self.kf1.getValue() else: return None def _getValue0KF(self, frame): """intervals with no keyframes return None""" return None def getValue(self, frame): """ Retuns the value for the given frame. The value is only returned if the interval is active. This frame has to be withing the 2 keyframes of the interval, else we raise a ValueError. If the interval has no second keyframe, we return the value of the first keyframe. """ # this method is overriden when keyframes are set pass mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/datatypes.py0000644000175000017500000002061711143127205023315 0ustar debiandebian## Automatically adapted for numpy.oldnumeric Jul 23, 2007 by ## ## Author Michel F. Sanner May 2007 ## import numpy class DataType: def valide(self, value): return True def cast(self, data): return False, None def isEqual(self, val1, val2): if val1 == val2: return True else: return False class FloatType(DataType): def valide(self, value): return isinstance(value, float) def cast(self, data): try: return True, float(value) except: return False, None def isEqual(self, val1, val2): if abs(val1-val2) < 1.e-5: return True else: return False class IntType(DataType): def valide(self, value): return isinstance(value, int) def cast(self, data): try: return True, int(value) except: return False, None class BoolType(DataType): def valide(self, value): if isinstance(value, bool): return True else: if value == 1 or value == 0: return True else: return False def cast(self, data): try: return True, bool(value) except: return False, None import numpy.oldnumeric as Numeric class IntVectorType(DataType): def valide(self, value): try: len(value) except: return False for v in value: if not isinstance(v, int): return False return True def cast(self, data): try: if isinstance(data, Numeric.ArrayType): newdata = data.astype('i') else: newdata = [] for val in data: newdata.append(int(val)) return True, newdata except: return False, None def isEqual(self, val1, val2): val1 = Numeric.array(val1, 'i') val2 = Numeric.array(val2, 'i') return Numeric.alltrue(val1, val2) class FloatVectorType(DataType): def valide(self, value): try: len(value) except: return False for v in value: if not isinstance(v, float): return False return True def cast(self, data): try: if isinstance(data, Numeric.ArrayType): newdata = data.astype('f') else: newdata = [] for val in data: newdata.append(float(val)) return True, newdata except: return False, None def isEqual(self, val1, val2): val1 = Numeric.array(val1, 'f') val2 = Numeric.array(val2, 'f') d = abs(val1-val2) for i, v in enumerate(d): if v > 1.e-5: #print "value arrays differ: ", i, val1[i], val2[i] return False return True class IntVarType(DataType): def valide(self, value): # valid value can be either a single integer or a sequence of integers try: len(value) except: value = [value] if isinstance(value, Numeric.ArrayType): dt = value.dtype.char if dt not in ('i', Numeric.Int): return False else: for v in value: if not isinstance(v, int): return False return True def cast(self, data): try: len(data) except: data = [data] try: if isinstance(data, Numeric.ArrayType): newdata = data.astype('i') else: newdata = [] for val in data: newdata.append(int(val)) return True, newdata except: return False, None def isEqual(self, val1, val2): try: len(val1) except: val1 = [val1] try: len(val2) except: val2 = [val2] val1 = Numeric.array(val1, 'i') val2 = Numeric.array(val2, 'i') if val1.shape != val2.shape: return False return Numeric.alltrue(val1, val2) class FloatVarType(DataType): def valide(self, value): # valid value can be either a single float or a sequence of floats try: len(value) except: value = [value] if isinstance(value, Numeric.ArrayType): dt = value.dtype.char if dt not in ('f', Numeric.Float): return False else: for v in value: if not isinstance(v, float): return False return True def cast(self, data): try: len(data) except: data = [data] try: if isinstance(data, Numeric.ArrayType): newdata = data.astype('f') else: newdata = [] for val in data: newdata.append(float(val)) return True, newdata except: return False, None def isEqual(self, val1, val2): try: len(val1) except: val1 = [val1] try: len(val2) except: val2 = [val2] val1 = Numeric.array(val1, 'f') val2 = Numeric.array(val2, 'f') if val1.shape != val2.shape: return False d = abs(val1-val2) for i, v in enumerate(d): if v > 1.e-5: #print "value arrays differ: ", i, val1[i], val2[i] return False return True class VarVectorType(DataType): def valide(self, value): #valid value is a 2D sequence if isinstance(value, Numeric.ArrayType): if len(value.shape) != 2: return False else: try: len(value) except: return False try: nelem = len(value[0]) except: return False if len(value) > 1: for v in value[1:]: try: n = len(v) except: return False if n != nelem: return False return True def isEqual(self, val1, val2): val1 = Numeric.array(val1, 'f') val2 = Numeric.array(val2, 'f') if val1.shape != val2.shape: return False d = abs(val1-val2) shape = d.shape for i in range(shape[0]): for j in range(shape[1]): if d[i][j] > 1.e-5: #print "value arrays differ: val1[%d][%d] = %f, val2[%d][%d] = %f"% (i,j, val1[i][j], i, j, val2[i][j]) return False return True if __name__=='__main__': t = IntVectorType() v1 = 3 assert t.valide(v1)==False v2 = [1., 2., 3.] assert t.valide(v2) == False v3 = [1,2,3] assert t.valide(v3) == True assert t.cast(v2)[1] == v3 assert t.cast(v1)[0] == False t = FloatVectorType() v4 = 3.4 assert t.valide(v4)==False assert t.valide(v3) == False assert t.valide(v2) == True assert t.cast(v3)[1] == v2 assert t.cast(v4)[0] == False t = IntVarType() assert t.valide(v4)==False assert t.valide(v1)==True assert t.valide(v3) == True assert t.valide(v2) == False v5 = Numeric.array([1,2,3], 'f') assert t.valide(v5) == False cv = t.cast(v5) assert t.valide(cv[1]) == True assert t.cast(v4)[0] == True v6 = [[1.,2.,3.],[4.,5.,6.]] assert t.cast(v6)[0] == False t = FloatVarType() assert t.valide(v1)==False assert t.valide(v4)==True assert t.valide(v2) == True assert t.valide(v3) == False v7 = Numeric.array([1,2,3], 'i') assert t.valide(v7) == False cv = t.cast(v7) assert t.valide(cv[1]) == True assert t.cast(v1)[0] == True v8 = [[1,2,3],[4,5,6]] assert t.cast(v8)[0] == False t = VarVectorType() assert t.valide(v1) == False assert t.valide(v2) == False assert t.valide (v5) == False assert t.valide(v6) == True assert t.valide([[1,2,3], [1]]) == False assert t.valide([[1,2,3]]) ==True assert t.valide(Numeric.array([[1,2,3],[4,5,6]]) ) == True mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/gui/0000755000175000017500000000000012146213430021523 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/gui/Tk/0000755000175000017500000000000012146213431022102 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/gui/Tk/sequenceAnimator.py0000644000175000017500000005304112064446136025773 0ustar debiandebian## ## Author Michel Sanner Feb 2009 ## ## Copyrights TSRI and M. Sanner ## from Scenario2.events import AddMAAEvent, RemoveMAAEvent, CurrentFrameEvent,\ PlayerStartEvent, PlayerStopEvent from Scenario2.sequenceAnimator import SequenceAnimator import Tkinter, Pmw, os from mglutil.util.callback import CallBackFunction from mglutil.util.packageFilePath import findFilePath from mglutil.gui.BasicWidgets.Tk.thumbwheel import ThumbWheel from Scenario2.playerControls import PlayerControls class SequenceAnimatorGUI: """ class displaying the list of MultipleActorActions stored in a clipboard object and allowing to play them in sequence and to rearrange their order. """ def __init__(self, animator, master=None): """ SequenceAnimatorGUI constructor SequenceAnimatorGUI <- SequenceAnimatorGUI(animator, master=None) animator is an instance of a SequenceAnimator object master is a Tk container object. If master is None a Tkinter.Toplevel object is created This object registers interest in AddMAAToClipBoardEvent and RemoveMAAFromClipBoardEvent events with the standard SequenceAnimator object """ assert isinstance(animator, SequenceAnimator) self.animator = animator self.master = master self.pl = None # will be the PlayerControls object # mpg video frame rate (based on mplayer info) self.fps = 23.976 animator.registerListener(AddMAAEvent, self.addMaaEvent_cb) animator.registerListener(RemoveMAAEvent, self.removeMaaEvent_cb) animator.registerListener(CurrentFrameEvent, self.curFrameEvent_cb) animator.registerListener(PlayerStartEvent, self.playerStart_cb) animator.registerListener(PlayerStopEvent, self.playerStop_cb) self.createGUI() self.refreshGUI() def playerStart_cb(self, event=None): """This function is called when a PlayerStartEvent is created """ # save current active MAA sel = self.MAAContainer.getcurselection() if len(sel): self._currentSel = self.maaList.index(sel[0]) def playerStop_cb(self, event=None): """This function is called when a PlayerStopEvent is created """ # restore current active MAA if hasattr(self, '_currentSel'): self.MAAContainer.select_set(self._currentSel) del self._currentSel def addMaaEvent_cb(self, event=None): """This function is called by the dispatchEvent() in addMAAat() method of MAADirector. It updates the MAA Chooser and the Player""" # update list of MAAs in list self.refreshGUI() # update frame counter in player controls obejct self.pl.update() def removeMaaEvent_cb(self, event=None): """This function is called by the dispatchEvent() in removeMAA() method of SequenceAnimator. It updates the MAA Chooser and the Player.""" self.refreshGUI() self.selectionCommand_cb() self.pl.update() def curFrameEvent_cb(self, event=None): """ call back for current frame change in sequence animator highlight the MAA contianing this frame """ frame = event.frame lb = self.MAAContainer for n, val in enumerate(self.animator.maas): maa, firstFrame = val if frame<=firstFrame or frame>firstFrame+maa.lastPosition: # frame not in this maa lb.itemconfigure(n, selectbackground='') # default grey lb.select_clear(n) else: lb.itemconfigure(n, selectbackground='yellow') # default grey lb.select_set(n) self.pl.update() def createGUI(self): """ Create a ScrolledFrame to hold MAA entries """ if self.master is None: self.master = master = Tkinter.Toplevel() self.ownsMaster = True else: self.ownsMaster = False self.balloon = Pmw.Balloon(self.master) ## ## Action Container ## parent = Pmw.Group(self.master, tag_text='Actions') # create container w = self.MAAContainer = Pmw.ScrolledListBox( parent.interior(), #labelpos='nw', label_text='AnimationClips', listbox_height = 4, selectioncommand = self.selectionCommand_cb, #dblclickcommand=self.defCmd, usehullsize = 0, #hull_width = 300, #hull_height = 200, ) ## ## Action manipulation group ## #w.grid(sticky='nesw', column=0, row=0, rowspan=3) w.pack(fill='both', expand=1, side="left") w._listbox.config(exportselection = False) ICONDIR = findFilePath('icons', 'mglutil.gui.BasicWidgets.Tk') manipGroup = Pmw.Group(parent.interior(), tag_text='Manipulate Actions') master = manipGroup.interior() fr1 = Tkinter.Frame(master) fr1.pack(fill='both', expand=1, side='top') self.gotoStartIcon = im = Tkinter.PhotoImage( file=os.path.join(ICONDIR, 'go_to_start.gif'), master=fr1) w = self.startActionb = Tkinter.Button( fr1, image=im, command=self.gotoActionStart_cb) w.pack(side='left', anchor='n') self.balloon.bind(w, "goto action's start") self.gotoEndIcon = im = Tkinter.PhotoImage( file=os.path.join(ICONDIR, 'go_to_end.gif'), master=fr1) w = self.endActionb = Tkinter.Button( fr1, image=im, command=self.gotoActionEnd_cb) w.pack(side='left', anchor='n') self.balloon.bind(w, "goto action's end") self.moveUpIcon = im = Tkinter.PhotoImage( #file=os.path.join(ICONDIR, 'arrowup.gif'), master=master) file=os.path.join(ICONDIR, 'arrow_up.gif'), master=fr1) w = self.upb = Tkinter.Button(fr1, image=im, command=self.moveUp_cb) w.pack(side='left', anchor='n') self.balloon.bind(w, "Move selected action one position up") self.moveDownIcon = im = Tkinter.PhotoImage( #file=os.path.join(ICONDIR, 'arrowdown.gif'), master=master) file=os.path.join(ICONDIR, 'arrow_down.gif'), master=fr1) w = self.downb = Tkinter.Button( fr1, image=im, command=self.moveDown_cb) w.pack(side='left', anchor='n') self.balloon.bind(w, "Move selected action one position down") #self.deleteIcon = im = Tkinter.PhotoImage( # file=os.path.join(ICONDIR, 'close.gif'), master=master) #w = self.deleteb = Tkinter.Button( # master, image=im, command=self.delete_cb) fr2 = Tkinter.Frame(master) fr2.pack(fill='both', expand=1, side='top') w = self.deleteb = Tkinter.Button( fr2, text='delete', command=self.delete_cb) w.pack(side='top', anchor='nw') self.balloon.bind(w, "Delete selected action") manipGroup.pack(side='top', fill='x') ## ## Action Group ## self.actionGroup = Pmw.Group(parent.interior(), tag_text='force') actionFrame = self.actionGroup.interior() self.forceOrientTk = Tkinter.IntVar() w = self.orientb = Tkinter.Checkbutton( actionFrame, text='Orientation', variable=self.forceOrientTk, command=self.orient_cb) w.pack(side='top', fill='x', anchor='nw') w.configure(state='disabled') self.balloon.bind(w, "Force the original orientation on the first frame of this action") self.forceRenderingTk = Tkinter.IntVar() w = self.renderingb = Tkinter.Checkbutton( actionFrame, text='Rendering', variable=self.forceRenderingTk, command=self.rendering_cb) w.pack(side='top', fill='x', anchor='nw') w.configure(state='disabled') self.balloon.bind(w, "Force the original rendering on the first frame of this action") self.actionGroup.pack(side='top', anchor='n', fill='x') w = self.editb = Tkinter.Button(parent.interior(), text='Edit ...', command=self.edit_cb) w.pack(side='top', fill='x', anchor='n') self.balloon.bind(w, "Edit selected action") ## ## Start Group ## startgroup = Pmw.Group(parent.interior(), tag_text='Start') startframe = startgroup.interior() self.startW = sw = Pmw.RadioSelect( startframe, selectmode='single', orient='vertical', buttontype='radiobutton', command=self.setStartFlag_cb) for text in ['after previous', 'with previous']: sw.add(text) sw.pack(side='top', anchor='n', fill='x') # padx=5, pady=5) self.balloon.bind(sw.button("after previous"), "Start selected item after the previous one") self.balloon.bind(sw.button("with previous"), "Start selected item with the previous one") #sw.setvalue('after previous') self.offsetw = offw = Pmw.Counter( startframe, labelpos = 'w', label_text = 'Offset:', entry_width = 6, entryfield_value = 0, entryfield_command = self.setOffset_cb, datatype = self.setOffset_cb, entryfield_validate = {'validator' : 'integer' } ) self.balloon.bind(offw, "positive or negative offset from starting position") offw.pack(side='top', anchor='n', fill='x') parent.pack(fill='both', expand=1, padx=5, pady=5) startgroup.pack(side='top') # add a thumb wheel for setting video (mpg) duration self.mpgDuration = ThumbWheel(parent.interior(), showLabel=1, width=60, height=16, type=int, value=0, callback=self.setMpgDuration_cb, continuous=False, oneTurn=10, min=0, wheelPad=2, labCfg = {'text':'Video(mpg) duration(sec):', 'side':'top'}) self.mpgDuration.pack(side='top', anchor='n', fill='x', pady=5) self.balloon.bind(self.mpgDuration, "Estimated duration of recorded mpg file") #self.frameCounter = Tkinter.Label(master, text='Frame 000000') #self.frameCounter.pack(side='top') frame = Tkinter.Frame(self.master) self.pl = PlayerControls( self.animator, root=frame, #root=self.master, form2=1, hasSlider=True) frame.pack(side='top') self.selectionCommand_cb() # called to configure the buttons def gotoActionEnd_cb(self, event=None): """ callback for got to end button """ curSel = self.MAAContainer.getcurselection() if len(curSel)==0: return index = self.maaList.index(curSel[0]) maa, pos = self.animator.maas[index] #print 'Going to frame', pos + maa.lastPosition director = self.pl.director director.setValuesAt(pos + maa.lastPosition) director.viewerRedraw() self.MAAContainer.select_set(index) def gotoActionStart_cb(self, event=None): """ callback for got to start button """ curSel = self.MAAContainer.getcurselection() if len(curSel)==0: return index = self.maaList.index(curSel[0]) maa, pos = self.animator.maas[index] #print 'Going to frame', pos director = self.pl.director director.setValuesAt(pos) director.viewerRedraw() self.MAAContainer.select_set(index) def refreshGUI(self, updateMpg=True): """Updates the entries of the MAA Chooser.""" #self.maaList = ["%05d: "%i+ a.name for a,i in self.animator.maas] # save current selection curSel = self.MAAContainer.getcurselection() if len(curSel): indexSel = self.maaList.index(curSel[0]) self.maaList = maas = [] for i, (a,pos) in enumerate(self.animator.maas): if a.startFlag == 'with previous' and i != 0: maas.append(" %05d-%05d: "%(pos, pos+a.lastPosition) + a.name) else: maas.append("%05d-%05d: "%(pos, pos+a.lastPosition)+ a.name) self.MAAContainer.setlist(self.maaList) if len(curSel): self.MAAContainer.select_set(indexSel) if updateMpg: self.mpgDuration.set(round(self.getMpgDuration())) def moveUp_cb(self, event=None): """Callback of the 'Move Up' button. Moves selected MAA entry up one position in the MAA Chooser.""" sel = self.MAAContainer.getcurselection() if not len(sel): return index = self.maaList.index(sel[0]) maa = self.animator.maas[index] self.animator.moveMAA(maa, index-1) self.refreshGUI() #self.MAAContainer.setvalue("%05d: %s"%(maa[1],maa[0].name)) self.MAAContainer.setvalue(self.maaList[index-1]) self.selectionCommand_cb() def moveDown_cb(self, event=None): """Callback of the 'Move Down' button. Moves selected MAA entry down one position in the MAA Chooser.""" sel = self.MAAContainer.getcurselection() if not len(sel):return index = self.maaList.index(sel[0]) maa = self.animator.maas[index] self.animator.moveMAA(maa, index+1) self.refreshGUI() #self.MAAContainer.setvalue("%05d: %s"%(maa[1],maa[0].name)) self.MAAContainer.setvalue(self.maaList[index+1]) self.selectionCommand_cb() def delete_cb(self, event=None): """Callback of the 'Delete' button. Deletes selected MAA from the MAA Chooser and the Sequence Animator's maas list. """ sel = self.MAAContainer.getcurselection() if len(sel) == 0: return index = self.maaList.index(sel[0]) maa, position = self.animator.maas[index] self.animator.removeMAA(maa, position) def orient_cb(self, event=None): """Callback of the 'Orinetation' button. """ sel = self.MAAContainer.getcurselection() if len(sel)==0: return index = self.maaList.index(sel[0]) maa, position = self.animator.maas[index] if hasattr(maa, "interpolateOrient"): maa.interpolateOrient = self.forceOrientTk.get() else: maa.forceOrient = self.forceOrientTk.get() def rendering_cb(self, event=None): """Callback of the 'Rendering' button. """ sel = self.MAAContainer.getcurselection() if len(sel)==0: return index = self.maaList.index(sel[0]) maa, position = self.animator.maas[index] if hasattr(maa, "interpolateRendering"): maa.interpolateRendering = self.forceRenderingTk.get() else: maa.forceRendering = self.forceRenderingTk.get() def sort_cb(self, tag): """Callback of the 'Sort Poly.' radio button. """ curSel = self.MAAContainer.getcurselection() if len(curSel)==0: return index = self.maaList.index(curSel[0]) maa, position = self.animator.maas[index] maa.sortPoly = tag def edit_cb(self, event=None): """Callback of the 'Edit ...' button. displays MAA editor for the currently slected action """ sel = self.MAAContainer.getcurselection() if len(sel) == 0:return index = self.maaList.index(sel[0]) maa, position = self.animator.maas[index] kw = maa.editorKw args = maa.editorArgs kw['master'] = self.master editor = maa.editorClass( *args, **kw) editor.edit(maa) # check if the maa has been added more than once to the sequence animator: for i , _maa in enumerate(self.animator.maas): if _maa[0] == maa and i < index: index = i position = _maa[1] break self.update(index, position) def update(self, index, position, updateMpg=True): self.animator.updatePositions(index, position) self.refreshGUI(updateMpg=updateMpg) self.pl.update() def selectionCommand_cb(self, event=None): """This function is called when an MAA is selected in the MAA Chooser. """ sel = self.MAAContainer.getcurselection() self.upb.configure(state='disabled') # move up button self.downb.configure(state='disabled') # move down button self.deleteb.configure(state='disabled') # delete button if len(sel)==0: return self.deleteb.configure(state='normal') index = self.maaList.index(sel[0]) if index > 0: self.upb.configure(state='normal') if index < len(self.maaList)-1: self.downb.configure(state='normal') maa, pos = self.animator.maas[index] if hasattr(maa, "interpolateOrient"): self.orientb.configure(state='normal') self.forceOrientTk.set(maa.interpolateOrient) self.actionGroup._tag.configure(text = 'interpolate') self.balloon.bind(self.orientb, "Interpolate orientation during playback") elif hasattr(maa, 'forceOrient'): self.orientb.configure(state='normal') self.forceOrientTk.set(maa.forceOrient) self.actionGroup._tag.configure(text = 'force') self.balloon.bind(self.orientb, "Force the original orientation on the first frame of this action") else: self.orientb.configure(state='disabled') if hasattr(maa, "interpolateRendering"): self.renderingb.configure(state='normal') self.forceRenderingTk.set(maa.interpolateRendering) self.balloon.bind(self.renderingb, "Interpolate rendering during playback") elif hasattr(maa, 'forceRendering'): self.renderingb.configure(state='normal') self.forceRenderingTk.set(maa.forceRendering) self.balloon.bind(self.renderingb, "Force the original rendering on the first frame of this action") else: self.renderingb.configure(state='disabled') if maa.editorClass: self.editb.configure(state='normal') else: self.editb.configure(state='disabled') self.startW.setvalue(maa.startFlag) self.offsetw.setvalue(maa.startOffset) startWState = 'normal' if index == 0: startWState = 'disabled' for i in range(2): self.startW.button(i).configure(state=startWState) def setStartFlag_cb(self, startFlag = None): """Callback of the 'Start' radio buttons. Sets a new starting position of the selected maa.""" #print "setStartFlag_cb", startFlag sel = self.MAAContainer.getcurselection() if not len(sel):return index = self.maaList.index(sel[0]) maa, position = self.animator.maas[index] position, index = self.animator.computePosition(maa, startFlag=startFlag) maa.startFlag = startFlag self.animator.updatePositions(index, position-maa.startOffset) self.refreshGUI() #self.MAAContainer.setvalue(self.maaList[index]) # make sure the player end frame is correct self.pl.update() def setOffset_cb(self, text=None, factor=None, increment=None, **kw): # text is current content of entry # factor is 1 for increment and -1 for decrement # increment is value of increment megawidget option """Callback of the 'offset' entry field. Sets maa.startOffset for the currently selected action Has to return the coutner value """ sel = self.MAAContainer.getcurselection() if not len(sel): return 0 if text is not None: # incrment or decrement arrow was used value = int(text)+(factor*increment) else: # return was hit in entry value = int(self.offsetw.get()) index = self.maaList.index(sel[0]) maa, oldpos = self.animator.maas[index] # remove offset form the current position position = oldpos - maa.startOffset maa.startOffset = value self.animator.updatePositions(index, position) self.refreshGUI() # make sure the player end frame is correct self.pl.update() return value def getMpgDuration(self): self.animator.updateEndFrame() nframes = self.animator.endFrame #print "n frames:", nframes return nframes/self.fps def setMpgDuration_cb(self, duration): if len(self.animator.maas) == 0: return curduration=self.getMpgDuration() ratio = duration/curduration nfr = 0 for item in self.animator.maas: maa = item[0] fpos = maa.firstPosition lpos = maa.lastPosition nframes = (lpos - fpos)+1 nfr += nframes nframes1 = int(round(nframes*ratio)) kw = {'kfpos': [fpos, fpos+nframes1]} maa.configure(kfpos=[fpos, fpos+nframes1]) maa.startOffset = int(round(maa.startOffset * ratio)) self.update(0, self.animator.maas[0][1],updateMpg=False) print "duration:", self.getMpgDuration() mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/gui/Tk/clipboard.py0000644000175000017500000000662411227216715024432 0ustar debiandebian## ## Author Michel Sanner Feb 2009 ## ## Copyrights TSRI and M. Sanner ## import Tkinter, Pmw from Scenario2.clipboard import AddMAAToClipBoardEvent, RemoveMAAFromClipBoardEvent from Scenario2.clipboard import Clipboard from mglutil.util.callback import CallBackFunction class ClipboardGUI: """ class displaying the list of MultipleActorActions stored in a clipboard object. This object handles AddMAAToClipBoardEvent and RemoveMAAFromClipBoardEvent events dispatched by the standard scenario event handler """ def __init__(self, clipboard, master=None): """ ClipboardGUI constructor ClipboardGUIObject <- ClipboardGUI(clipboard, master=None) clipboard is an instance of a Clipboard object master is a Tk container object. If master is None a Tkinter.Toplevel object is created This object registers interest in AddMAAToClipBoardEvent and RemoveMAAFromClipBoardEvent events with the Clipboard object """ assert isinstance(clipboard, Clipboard) self.clipboard = clipboard self.master = master clipboard.registerListener(AddMAAToClipBoardEvent, self.addMaaEvent_cb) clipboard.registerListener(RemoveMAAFromClipBoardEvent, self.removeMaaEvent_cb) self.createGUI() self.refreshGUI() def addMaaEvent_cb(self, event=None): self._addMAA(event.object) def removeMaaEvent_cb(self, event=None): self.clearGUI() self.refreshGUI() def createGUI(self): """ Create a ScrolledFrame to old MAA entries """ if self.master is None: self.master = master = Tkinter.Toplevel() self.ownsMaster = True else: self.ownsMaster = False # create container w = self.MAAContainer = Pmw.ScrolledFrame( self.master, labelpos = 'nw', label_text = 'Animations Clipboard', usehullsize = 0, hull_width = 40, hull_height = 200) w.pack(padx = 5, pady = 3, fill = 'both', expand = 1) self.maaw = {} # maa: maa entry widget def showMenu_cb(self, maa, event=None): """ configure callback of menu entried with the current orientation and post menu """ menu = Tkinter.Menu(self.master, title = "Animation") from Scenario2 import addTargetsToMenu addTargetsToMenu(menu, maa) menu.add_command(label = "Delete", command=CallBackFunction(self.clipboard.removeMaa, maa) ) menu.add_command(label="Dismiss") menu.post(event.x_root, event.y_root) def clearGUI(self): for maa, entry in self.maaw.items(): entry.destroy() def _addMAA(self, maa): """ Create an entry for a MAA """ master = self.MAAContainer.interior() self.maaw[maa] = frame = Tkinter.Frame(master) b = Tkinter.Button(master=frame ,compound='left', text=maa.name, command=maa.run, width=25, height=2) b.name = maa.name # create the button menu b.bind('', CallBackFunction( self.showMenu_cb, maa)) b.pack(side='top') frame.pack() def refreshGUI(self): for maa in self.clipboard.maas: self._addMAA(maa) mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/gui/Tk/__init__.py0000644000175000017500000000000011147047152024206 0ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/gui/__init__.py0000644000175000017500000000000011147047427023635 0ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/actor.py0000644000175000017500000003616311231376564022446 0ustar debiandebian## ## Author Michel F. Sanner Jan 2009 ## import types, weakref from Scenario2.actions import Actions from Scenario2.keyframes import KF, Interval from Scenario2.datatypes import DataType from Scenario2.interpolators import Interpolator, BehaviorList class Actor: """ An Actor is an object that will modify an attribute of a Python Object over the course of time. Actions performed by the actor are represented by keyframes (representing a value at a given time), and intervals that can interpolate values between keyframes. Actors are stored in MultipleActorActions objects. An Actor is created with: - a name - a given Python object optionally: - an initial value - a datatype used to validate value for keyframes - default value generator function which defined how the value will modified by default in Intervals When an actor is created its Actions object is empty. Actors can be made active/inactive for playback. Actors that know how to retrieve the value from the Python object can be made active/inactive for recording keyframes. """ _easeInOutDict = {'none':(0,0), 'ease in':(1,0), 'ease out':(0,1), 'ease in and out':(1,1)} def __init__(self, name, object, initialValue=None, datatype=None, interp=None): self.printValuesWhenSetting = False # set to True to debug self.object = object self.name = name # actor name, has to be unique in Director.actors self.interp = interp self.initialValue = initialValue self.hasGetFunction = False # set to true is actor knows how to get the # value from the object self.recording = False # true if this actor will record keyframes self.playing = True #true if the actor will set the values self._maa = None # becomes a weakref to MAA when added to MAA self.easeIn = False self.easeOut = False if datatype is not None: assert issubclass(datatype, DataType) self.datatype = datatype() else: self.datatype = None self.actions = Actions() self.actions.actor = weakref.ref(self) self.nbvar = None # number of variable that are interpolated self.varnames = [] self.activeVars = [] # list of booleans allowing to turn particular # variables on or off self.interpClass = None args = (initialValue, initialValue) kw = {} interpolator = None if interp is not None: try: interpClass, args, kw = interp assert issubclass(interpClass, Interpolator) assert isinstance(args, tuple) assert isinstance(kw, dict) except TypeError: interpClass = interp assert issubclass(interpClass, Interpolator) interpolator = interpClass( *args, **kw) self.interpClass = interpClass self.nbvar = interpClass.nbvar self.varnames = interpClass.varnames if self.nbvar: self.activeVars = [1]*self.nbvar self.behaviorList = bl = BehaviorList( *args, **{'actor':self}) if interpolator: bl.addBehavior(interpolator) bl.configure(active = False) if initialValue is not None: kf0 = KF(0, initialValue) self.actions.addKeyframe(kf0) # FIXME .. check variable below to see if needed self.preStep_cb = None self.postStep_cb = None # GUI variable self.visible = True self.displayFunction = False self.graphHeight = 40 self.valueFormat = None self.scenarioname = None def addIntervals(self, intervals, generator=None, check=True): """ add a list of intervals to the actions. Intervals can be Interval Objects or pairs of KFs that can be specified as KF objects or (position, value) pairs """ maxPos = 0 actions = self.actions for inter in intervals: if isinstance(inter, Interval): if inter.valGen.generator is None: inter.setValGenGenerator(self.behaviorList.clone()) if inter.kf2.pos > maxPos: maxPos = inter.kf2.pos else: kf1, kf2 = inter if not isinstance(kf1, KF): kf1 = KF( *kf1 ) if not isinstance(kf2, KF): kf2 = KF( *kf2 ) if kf2.pos > maxPos: maxPos = kf2.pos if generator is None: generator = self.behaviorList.clone() inter = Interval(kf1, kf2, generator=generator) val = actions.addInterval( inter ) if val is False: return False if self._maa: if self._maa().getLastFrame() <= maxPos: self._maa().updateEndFrame( maxPos ) return True def addKeyframe(self, kf): """ None <- addKeyframe(kf) Adds the keyframe 'kf' to the actor's actions object """ self.actions.addKeyframe(kf) if self._maa: if self._maa().getLastFrame() <= fk.pos: self._maa().updateEndFrame( frame ) def addActionsAt(self, srcActions, position, check=True): """ Add the actions srcActions at the given position to the actor's actions object. This method will add the Actor'; default value generator to any interval that does not have one. None <- actor.addActionsAt(actions, position, check=True) Input: arcAction: Actions object position: an integer specifying at which frame the srcAction will be added Check: boolean Method used to add actions to to an actor. For every interval that has no value generator, this method will set it to the actor's default VG, and then call self.actions.addActions(actions, check) to add the keyframes and intervals in actions to the actor's actions. """ for i in srcActions.intervals: if i.valGen.generator is None: i.setValGenGenerator(self.behaviorList.clone()) else: pass # FIXME check is valgen is ok for this actor self.actions.addActionsAt(srcActions, position, check=check) def getLastKeyFrame(self): """ KF <- actor.getLastKeyFrame() Return the last keyframe ni the actor's actions object """ if len(self.actions.keyframes): return self.actions.keyframes[-1] else: return None def onAddToDirector(self): pass def setValueAt(self, frame, off=0): """ None <- setValueAt(frame, off) argumets: frame - position in time; off - offset value. Set the value at specified frame to the object's animated attribute. """ # is called at each time step if the actor's readMode is active from SimPy.Simulation import now print 'setting ', self.name, 'for', self.name, 'at:', frame def setValue(self, value): """ None <- setValue(value) set the value on the object """ # is called at each time step if the actor's readMode is active from SimPy.Simulation import now print 'setting ', self.name, 'for', self.name, 'at:', now(), 'to', value def setEaseIn(self, val): """ None <- setEaseIn(val) Set easeIn atribute of all value generators in the actions object to the specified value (val). val can be 0, 1, True of False """ assert val in [0, 1, True, False] self.behaviorList.easeIn = val for inter in self.actions.intervals: inter.valGen.generator.easeIn = val def setEaseOut(self, val): """ None <- setEaseOut(val) Set easeOut atribute of all value generators in the actions object to the specified value (val). val can be 0, 1, True of False """ assert val in [0, 1, True, False] self.behaviorList.easeOut = val for inter in self.actions.intervals: inter.valGen.generator.easeOut = val def setEaseInOut(self, val): """ None <- setEaseInOut(val) Set easeIn and easeOut atributes of all value generators in the actions object. val can be : 'none' set easeIn and easeOut to 0, 'ease in' easeIn = True, easeOut = False, 'ease out' easeIn = False, easeOut = True, 'ease in and out' easeIn = True , easeOut = True """ easeIn, easeOut = self._easeInOutDict[val] #print 'setting ease for actor', self.name, easeIn, easeOut self.setEaseIn(easeIn) self.setEaseOut(easeOut) def clone(self): """newActor <- clone() Return a copy of the actor (self). The method calls self.__class__ method. It then clones self.behaviorList and assignes the cloned copy to newActor.behaviorList. """ if self.datatype is not None: dt = self.datatype.__class__ else: dt = None newActor = self.__class__(self.name, self.object, initialValue=self.initialValue, datatype=dt, interp=self.interp) newActor.behaviorList = self.behaviorList.clone() return newActor class CustomActor(Actor): """ Custom actors are actors for which a setMethod or setFunction and a getFunction allowing set and get the value of the atrribute in the Python object that is driven by the actor can be set and gotten """ def __init__(self, name, object, initialValue=None, datatype=None, interp=None, setFunction=None, setMethod=None, getFunction=None): """ Constructor of the Actor object, arguments: object: Python object on which to operate name: Name of this Actor, This name has to be unique among the list of ActorDescriptor in an Director setFunction: function to called at each time step. The function will be called using func(*(actor,value)) setMethod: method of the obect to be called at each time step. The function will be called using obj.method(value) getFunction=None: [optional] function that can be called to get the current value of the attribute managed by this actor The function and its arguments have to be specified as a 3-tuple (func, *args, **kw). It will be called using func(*(object,)+args), **kw) if it is a function or func(*args, **kw) if it is a method interp interpreter class initialValue initial value of the attribute dataType type of the attribute value """ self.getFuncTuple = None self.hasGetFunction = False if setFunction: assert callable(setFunction) self.setFunction = setFunction if setMethod: method = getattr(object, setMethod) assert callable(method) else: method = None self.setMethod = method if getFunction: self.getFuncTuple = self.checkFunction(getFunction) self.object = object if initialValue is None: if self.getFuncTuple: initialValue = self.getValueFromObject() Actor.__init__(self, name, object, datatype=datatype, initialValue=initialValue, interp=interp) if self.getFuncTuple: self.hasGetFunction = True def clone(self): """newActor <- clone() Return a copy of the actor (self). The method calls self.__class__ method. It then clones self.behaviorList and assignes the cloned copy to newActor.behaviorList. """ if self.setMethod is not None: setMethod = self.setMethod.__name__ else: setMethod = None newActor = self.__class__(self.name, self.object, initialValue=self.initialValue, datatype=self.datatype.__class__, interp=self.interp, setFunction=self.setFunction, setMethod=setMethod, getFunction=None) newActor.getFuncTuple = self.getFuncTuple if self.getFuncTuple: newActor.hasGetFunction = True newActor.behaviorList = self.behaviorList.clone() return newActor def checkFunction(self, function): """ Check if the specified 'function' is eather: 1.callable function. Returned value will be a tuple: (function, (), {}). 2.tuple: (function, (args), {kw}), where args is the function's arguments (tuple) , kw - keywords dictionary. Returned value : (function, (args), {kw}). """ # check that functionTuple is of form (func, (), {}) try: f, args, kw = function assert callable(f) assert isinstance(args, tuple) assert isinstance(kw, dict) except TypeError: assert callable(function) f, args, kw = function, (), {} return f, args, kw def getValueFromObject(self): """ value <- getValueFromObject() Get the current value of the animated attribute from the object and return it. """ if not self.getFuncTuple: return None f, args, kw = self.getFuncTuple if type(f) == types.FunctionType or type(f) == types.BuiltinFunctionType: # add object as first argument to functions return f(*(self.object,)+args, **kw) elif type(f) == types.MethodType: return f(*args, **kw) def setValue(self, value): """ None <- setValue(value) Call the self.setFunction() to set the value on the object. If set.selfFunction is None, this method will call self.setMethod() instead (if it is not None). """ if self.setFunction: self.setFunction( *(self, value) ) elif self.setMethod: self.setMethod(value) def setValueAt(self, frame, off): """ None <- setValueAt(frame, off) argumets: frame - position in time; off - offset value. The method first gets a value (at specified frame and offset) from the actions object. It then sets the value on the object with self.setValue() call. """ # call the function to set the value on the object value = self.actions.getValue(frame-off) if value != 'Nothing There': self.setValue(value) mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/sequenceAnimator.py0000644000175000017500000001505711465110057024630 0ustar debiandebian## ## Author Michel Sanner Feb 2009 ## ## Copyrights TSRI and M. Sanner ## from Scenario2 import MaxKF from Scenario2.director import MAADirector from Scenario2.clipboard import Clipboard from Scenario2.events import RemoveMAAEvent class SequenceAnimator(MAADirector): """ class storing a list of MultipleActorActions objects and allowing to play them in sequence and to rearrange their order. """ def __init__(self): """ SequenceAnimator object constructor. SequenceAnimatorObject <- SequenceAnimator() """ MAADirector.__init__(self) self._animNB = None # will become a reference to the notebook widget #of Pmv.customAnimation command def addMaa_cb(self, target, maa): """Callback to add a new maa to the SequeneAnimator. """ self.addMAA(maa) def addMAA(self, maa): """ Add maa at the end of SeqenceAnimator's maas list. val <- addMAA(maa) return value: returns True if maa is added successfully, False otherwise. """ #end = self.endFrame #if end == 0 and len(self.maas)==0: # position = 0 #else: # position = end + 1 import types pos = self.endFrame maa.startOffset = 0 maa.startFlag = "after previous" val = self.addMAAat( maa, pos) return val def addMAAat(self, maa, pos, check=True): MAADirector.addMAAat(self, maa,pos, check) maa._animNB = self._animNB if hasattr(maa, "maas"): for _maa in maa.maas: _maa._animNB = self._animNB def moveMAA(self, maa, toPos): """ Move maa to specified position (toPos). Update the positions of maas in the director's maas list None <- moveMaa( maa, toPos) """ # maa is a (maa, position) tuple fromPos = self.maas.index(maa) # remove it self.maas.remove(maa) self.maas.insert(toPos, maa) # renumber positions pos = 0 ## pos = 0 ## for i in range(len(self.maas)): ## self.maas[i][1] = pos ## pos += self.maas[i][0].lastPosition + 1 self.updatePositions(0, pos) def removeMAA(self, maa, position): """ remove maa from sequence animator and renumber the starting position of all MAA after the removed one. None <- removeMAA(maa, position) arguments: maa: instance of MAA; position: the specified MAA starting position (offset) in the MAADirector. Event: generates a RemoveMAA event """ # remove maa index = self.maas.index([maa, position]) self.maas.pop( index ) # MS: This is done by self.updatePositions # update director's endFrame #self.endFrame -= maa.lastPosition # renumber positions pos = position if index < len(self.maas): nextmaa = self.maas[index] startFlag = nextmaa[0].startFlag if startFlag == "with previous" : if index > 0: pos = self.maas[index-1][1] else: pos = 0 else: # "after previous" if index > 0: if maa.startFlag != "after previous": pos = self.maas[index-1][1] + self.maas[index-1][0].lastPosition + 1 else: pos = 0 ## for i in range(index, len(self.maas)): ## self.maas[i][1] = pos ## pos += self.maas[i][0].lastPosition + 1 self.updatePositions(index, pos) # create and dispatch event self.dispatchEvent(RemoveMAAEvent(maa)) def updatePositions(self, index, position): """Recompute positions of maas. None <- updatePositions(index, position) arguments: index - the maa index (in self.maas list) from which positions should be recomputed position - frame number at which self.maas[index] will start """ nbmaas = len(self.maas) #print "updatePositions", "index:", index, "position" , position if index >= nbmaas: self.updateEndFrame() return # find max end position of the maas upto the specified maa index maxpos = 0 for i in range(index+1): maa, pos = self.maas[i] end = pos + maa.lastPosition if end > maxpos: maxpos = end # move back to first real start if self.maas[index][0].startFlag== 'with previous': while index > 0 and self.maas[index][0].startFlag== 'with previous': index -= 1 # remember which MAA was the last one seen that was nor ith previous lastStart = index # set start position for maa maa, startFrame = self.maas[index] self.maas[index][1] = position + maa.startOffset # set starting position # pos will be the starting position of the next MAA pos = position + maa.startOffset + maa.lastPosition + 1 maxpos = max(maxpos, pos) # loop over remaining MAAs in list for i in range(index+1, nbmaas): maa, startFrame = self.maas[i] startFlag = maa.startFlag if startFlag == "with previous": # set start to stat of lastStart self.maas[i][1] = self.maas[lastStart][1] + maa.startOffset #set pos to the last frame of current maa + 1 pos = self.maas[lastStart][1] + maa.startOffset + \ maa.lastPosition + 1 # set maxpos to the maxinum nbumber of frames covered by MAAs # under this parent maxpos = max( maxpos, pos) elif startFlag == "after previous": # set the starting position to pos self.maas[i][1] = pos + maa.startOffset # increment pos to the next available frame pos += maa.startOffset + maa.lastPosition + 1 maxpos = max( maxpos, pos) # remember that this MAA was not with previous lastStart = i # set the sequenceAnimator endFrame to the the first unused frame if nbmaas > 0: #self.endFrame = pos #self.maas[-1][1]+ self.maas[-1][0].lastPosition self.endFrame = maxpos else: self.endFrame = 0 mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/interpolators.py0000644000175000017500000012406111553672440024235 0ustar debiandebian## Automatically adapted for numpy.oldnumeric Jul 23, 2007 by ## ## Authors: Michel Sanner, Anna Omelchenko May 2007 ## """ This module implements a variety of interpolator objects. An interpolator object has values for the first and last positions (firstVal , lastVal). This object implements the getValue(fraction) which will return the value corresponding to the the position (a fraction of the range 0.0 ... 1.0) """ import numpy.oldnumeric as Numeric from math import acos, sqrt, sin, cos, pi from copy import copy import weakref import types import warnings class BehaviorList: """Class containing a list of behavior objects applied sequentially""" nbvar = None def __init__(self, firstVal, lastVal, actor=None, active=True): self.firstVal = None self.lastVal = None self.behaviors = [] self.configure(firstVal = firstVal, lastVal = lastVal, active = active) self.actor= None if actor: self.actor = weakref.ref(actor) self.valueFormat = None self.active = active self.easeIn = False self.easeOut = False self.constant = False def clone(self): instance = self.__class__(self.firstVal, self.lastVal, active = self.active) instance.easeIn = self.easeIn instance.easeOut = self.easeOut instance.constant = self.constant for b in self.behaviors: instance.addBehavior(b.clone()) return instance def addBehavior(self, behavior = None, behaviorClass = None): if behavior: assert isinstance(behavior, Interpolator) nbvar = behavior.nbvar else: assert issubclass(behaviorClass, Interpolator) nbvar = behaviorClass.nbvar behavior = behaviorClass(self.firstVal, self.lastVal) if behavior: if self.nbvar is not None: if nbvar is not None: if self.nbvar != nbvar: warnings.warn("Cannot add behavior - expected %d number of variables, got %d"%(self.nbvar, nbvar)) return False self.behaviors.append(behavior) if behavior.valueFormat is not None: self.valueFormat = behavior.valueFormat behavior.behaviorList = weakref.ref(self) return True def removeBehavior(self, behavior): try: self.behaviors.remove(behavior) del behavior.behaviorList except ValueError: pass def getValue(self, fraction, interval, **kw): #print "behaviorList,easeIn-Out", self.easeIn , self.easeOut if len(self.behaviors)==0: return None else: value = self.behaviors[0].getValue(fraction, interval) for b in self.behaviors[1:]: value = b.getValue(fraction, interval, value=value) return value ## if len(self.behaviors)==0: ## return None ## else: ## # alter fraction based on easeIn easeOut ## if not self.constant and (self.easeIn or self.easeOut): ## #print 'EASE 1 ', fraction, ## if self.easeIn and self.easeOut : ## #print "easeIn and easeOut" ## fraction = (sin(pi*.5*(fraction*2-1))+1)*.5 ## elif self.easeIn: ## #print "easeIn" ## fraction = 1.0 - cos(pi*.5 * fraction) ## elif self.easeOut: ## #print "easeOut" ## fraction = sin(pi*.5 * fraction) ## #print fraction ## value = self.behaviors[0].getValue(fraction, interval) ## for b in self.behaviors[1:]: ## value = b.getValue(fraction, interval, value=value) ## if not (self.constant and (self.easeIn or self.easeOut)): ## print 'noeaseinout', fraction, value ## #print 'in behavior', fraction, value, len(self.behaviors) ## # for constant interpolation alter value based on easeIn easeOut ## # constant is used for rotation because each time we get here] ## # the value get incremented by the same amount (self.firstVal) ## # the multiplicative factors (2 and 4/3) are comouted so that ## # the integral remians the same (i.e.) if no ease in or out ## # we get self.firstVal * nbFrames to reach the desired rotation ## # if we have ease in we have to accelerate linearly up to the ## # middle of the interval and then stay constant in such a way ## # that the sum of all increments is equal to self.firstVal*nbFrames ## # for some reason we are always short by 0.5*(4/3) on ease in only ## # and long by 0.5*(4/3) on ease out only. So we special case and ## # add .5 to ease in on the last frame and start with .5 on ease out ## if self.constant and (self.easeIn or self.easeOut): ## fv = self.firstVal ## valtype = type(fv) ## if valtype == types.ListType or valtype == types.TupleType: ## fv = Numeric.array(fv) ## if self.easeIn and self.easeOut : ## if fraction<0.5: ## value = 2*fv*2*fraction ## else: ## value = 2*fv*2*(1.-fraction) ## print "easeInOut", fraction, value, fv ## elif self.easeIn: ## #if fraction==1.0: ## # value = 1.5*(4./3.)*fv ## #else: ## if fraction<=0.5: ## #value = 2*(4./3.)*fv*fraction ## value = dy*fraction ## else: ## value = h*fraction ## #value = (4./3.)*fv ## print "easeIn", fraction, value, fv ## elif self.easeOut: ## #if fraction==0.0: ## # value = .5*(4./3.)*fv*(1.- fraction) ## #else: ## if fraction>0.5: ## value = 2*(4./3.)*fv*(1.- fraction) ## else: ## value = (4./3.)*fv ## print "easeOut", fraction, value, fv ## return value def testKW(self, **kw): options = ["firstVal", "lastVal", "active"] for k in kw.keys(): assert k in options def configure(self, **kw): self.testKW(**kw) firstVal = kw.get("firstVal") lastVal = kw.get("lastVal") if firstVal is not None and lastVal is not None: self.firstVal = firstVal self.lastVal = lastVal for b in self.behaviors: if b is not None: b.configure(firstVal=firstVal, lastVal=lastVal) elif firstVal is not None: self.firstVal = firstVal for b in self.behaviors: if b is not None: b.configure(firstVal=firstVal) elif lastVal is not None: self.lastVal = lastVal for b in self.behaviors: if b is not None: b.configure(lastVal=lastVal) try: nbvar1 = len(self.firstVal) except: nbvar1 = 1 try: nbvar2 = len(self.lastVal) except: nbvar2 = 1 self.nbvar = max(nbvar1, nbvar2) active = kw.get("active") if active is not None: self.active = active for b in self.behaviors: if b is not None: b.configure(active=active) def formatValue(self, value): if self.valueFormat: if type(self.valueFormat) == types.MethodType: return self.valueFormat(value) else: return self.valueFormat%value else: return str(value) def __call__(self, fraction, interval, **kw): return self.getValue( *(fraction, interval), **kw) class Interpolator: """ Base class for all interpolators. The getValue method has to be implemented to compute the appropriate value """ nbvar = 1 varnames = ['variable 1'] valueFormat = None def __init__(self, firstVal, lastVal, interpolation = 'linear', active = True): self.action = None # will be a weakref to the action this interpolator # is associated with self.firstVal = None self.lastVal = None self.interpolation = interpolation self.behaviorList = None self.configure(firstVal = firstVal, lastVal = lastVal, interpolation = interpolation, active = active) def clone(self): return self.__class__(self.firstVal, self.lastVal, self.interpolation, active = self.active ) def testKW(self, **kw): options = ["firstVal", "lastVal", "active", "interpolation", "interpolators"] for k in kw.keys(): assert k in options def configure(self, **kw): #print "Interpolator, configure", kw self.testKW(**kw) firstVal = kw.get("firstVal") updateVR = False if firstVal is not None: self.firstVal = self.cast(firstVal) updateVR = True lastVal = kw.get("lastVal") if lastVal is not None: self.lastVal = self.cast(lastVal) updateVR = True interp = kw.get("interpolation") if interp is not None: self.interpolation = interp if updateVR: if self.firstVal is not None and self.lastVal is not None: self.valueRange = self.getValueRange() try: nbvar1 = len(self.firstVal) except: nbvar1 = 1 try: nbvar2 = len(self.lastVal) except: nbvar2 = 1 self.nbvar = max(nbvar1, nbvar2) active = kw.get("active") if active is not None: self.active = active def getValueRange(self): #print "getValueRange of Interp." #return self.lastVal - self.firstVal return None def getValue(self, fraction, interval, **kw): """This method has to return the right value for a fraction ranging between 0.0 and 1.0. For fraction 0.0 or less it should return self.startValue For fraction 1.0 or more it should return self.startValue """ return fraction def cast(self, value): # function used by getValue to return the proper type return value def ease(self, fraction, interval): # computes new fraction for easeIn/easeOut. easeIn = False easeOut = False if self.behaviorList is not None: bl = self.behaviorList() easeIn = bl.easeIn easeOut = bl.easeOut if not easeIn and not easeOut: return fraction # a and b - times to control easeIn and easeOut (in range 0...1) # easeIn occurs from time 0 to time a. # easeOut occurs from time b to time 1. if not interval.data.has_key('easeInEnd'): easeInEnd = interval.data['easeInEnd'] = 0.3 else: easeInEnd = interval.data['easeInEnd'] if not interval.data.has_key('easeOutStart'): easeOutStart = interval.data['easeOutStart'] = 0.7 else: easeOutStart = interval.data['easeOutStart'] if easeIn and easeOut: a = easeInEnd b = easeOutStart #print "easeIn-Out" elif easeIn: a = easeInEnd b = 1.0 #print "easeIn" else : #easeOut #print "easeOut" a = 0.0 b = easeOutStart v0 = 2/(1+b-a) # constant velocity attained if fraction<=a: if a==0: return 0 else: d = v0*fraction*fraction/(2*a); else: d = v0*a/2 if fraction<=b: d += (fraction-a)*v0 else: d += (b-a)*v0 d += (fraction-fraction*fraction/2-b+b*b/2)*v0/(1-b) return d # distance from 0 in range(0, 1) def __call__(self, fraction, interval, **kw): return self.getValue( *(fraction, interval), **kw) ## def formatValue(self, value): ## if self.valueFormat: ## return self.valueFormat%value ## else: ## return str(value) class noise3F(Interpolator): nbvar = 3 def getValue(self, fraction, interval, value=None, **kw): if value is not None: if fraction <= 0.0 or fraction >= 1.0: return value else: from random import random as r return [value[0]+r(), value[1]+r(), value[2]+r()] class speedUp3F(Interpolator): nbvar = 3 def getValue(self, fraction, interval, value=None, **kw): bl = self.behaviorList() v1 = bl.firstVal v2 = bl.lastVal v = [v2[0]-v1[0],v2[1]-v1[1],v2[2]-v1[2]] #print fraction, v1, v2, v return [v1[0]+fraction*v[0], v1[1]+fraction*v[1], v1[2]+fraction*v[2]] class noise(Interpolator): nbvar = None def getValue(self, fraction, interval, value=None, **kw): if value is not None: if fraction <= 0.0 or fraction >= 1.0: return value else: from random import random as r return map(lambda x: x+r(), value) class ScalarInterpolator(Interpolator): """ class for performing linear interpolations on scalar values """ nbvar = None def __init__(self, firstVal, lastVal, interpolation='linear', active=True): Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) def getValueRange(self): #print "getValueRange of Interp." if self.lastVal is not None and self.firstVal is not None: return self.lastVal - self.firstVal else: return None def getValue(self, fraction, interval, **kw): """return the value for a fraction of the range""" if self.firstVal == None or self.lastVal == None: return None if fraction <= 0.0: return self.cast(self.firstVal) elif fraction >= 1.0: return self.cast(self.lastVal) else: if self.interpolation=='linear': fraction = self.ease(fraction, interval) return self.cast(self.firstVal + self.valueRange*fraction) else: print 'spline interpolation not yet implemented' class IntScalarInterpolator(ScalarInterpolator): def cast(self, value): return int(round(value)) class FloatScalarInterpolator(ScalarInterpolator): valueFormat = "%.2f" def cast(self, value): return float(value) class VarScalarInterpolator(Interpolator): """ This class can handle interpolating between a scalar value and a sequence of values . Example : firstVal = v1, lastVal = [ v21, v22, ..., v2n] getValue(fraction) method returns a list containing either 1 or n values for specified fraction. """ nbvar = None def __init__(self, firstVal, lastVal, interpolation='linear', active=True): Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) def getValueRange(self): # compute value range valueRange = [] try: len(self.firstVal) except: self.firstVal = [self.firstVal] if self.behaviorList is not None: self.behaviorList().firstVal = [self.firstVal] try: len(self.lastVal) except: self.lastVal = [self.lastVal] if self.behaviorList is not None: self.behaviorList().lastVal = [self.lastVal] val1 = self.firstVal val2 = self.lastVal if len(val1) == 1 and len(val2) > 1: val1 = list(val1)*len(val2) elif len(val2) == 1 and len(val1) > 1: val2 = list(val2)*len(val1) vlist = [] for v1,v2 in zip(val1, val2): vlist.append( v2 - v1 ) return vlist def getValue(self, fraction, interval, **kw): """return the value for a fraction of the range""" if self.firstVal == None or self.lastVal == None: return None if fraction <= 0.0: return self.cast(self.firstVal) elif fraction >= 1.0: return self.cast(self.lastVal) else: if self.interpolation=='linear': fraction = self.ease(fraction, interval) if len(self.firstVal) == 1 and len(self.valueRange) > 1: firstVal = list(self.firstVal)*len(self.valueRange) else: firstVal = self.firstVal return self.cast(map(lambda v1, v2, s=fraction:\ v2+s*v1, self.valueRange, firstVal)) else: print 'spline interpolation not yet implemented' class IntVarScalarInterpolator(VarScalarInterpolator): def cast(self, value): newval = [] try: len(value) except: value = [value] for v in value: newval.append( int(round(v))) return newval class FloatVarScalarInterpolator(VarScalarInterpolator): valueFormat = "%.2f" def cast(self, value): newval = [] try: len(value) except: value = [value] for v in value: newval.append( float(v) ) return newval class VectorInterpolator(Interpolator): """ class for performing linear interpolations on vectors of arbitrary length Example: firstVal = [v1, v2,....vn], lastVal=[v1, v2,....vn] """ nbvar = None def __init__(self, firstVal, lastVal, interpolation='linear', active=True): Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) def getValueRange(self): # compute value range #print "getValueRange of vector Interp." valueRange = [] for v1,v2 in zip(self.firstVal, self.lastVal): valueRange.append( v2 - v1 ) return valueRange def getValue(self, fraction, interval, **kw): """return the value for a fraction of the range""" if self.firstVal == None or self.lastVal == None: return None if fraction <= 0.0: return self.cast(self.firstVal) elif fraction >= 1.0: return self.cast(self.lastVal) else: if self.interpolation=='linear': fraction = self.ease(fraction, interval) return self.cast(map(lambda x, off, s=fraction:\ off+s*x, self.valueRange, self.firstVal)) else: print 'spline interpolation not yet implemented' class IntVectorInterpolator(VectorInterpolator): """Handles interpolation of vectors of integer type""" def cast(self, value): if isinstance(value, Numeric.ArrayType): newvalue = value.astype('i') else: newvalue = [] for val in value: newvalue.append(int(round(val))) return newvalue class FloatVectorInterpolator(VectorInterpolator): """Handles interpolation of vectors of float type""" valueFormat = "%.2f" def cast(self, value): if isinstance(value, Numeric.ArrayType): newvalue = value.astype('f') else: newvalue = [] for val in value: newvalue.append(float(val)) return newvalue class VarVectorInterpolator(Interpolator): """ class for performing linear interpolations on vector sequences of arbitrary length. This can handle interpoalting between an array with shape (1, n) and an array with shape (N, n). Example : firstVal = [ [v1, v2,..,vn] ], lastVal = [ [v11, v12,..,v1n],...,[vN1, vN2,..,vNn] ] """ nbvar = None valueFormat = "%.2f" def __init__(self, firstVal, lastVal, interpolation='linear', active=True): Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) def getValueRange(self): # compute value range self.firstVal= Numeric.array(self.firstVal, 'f') self.lastVal= Numeric.array(self.lastVal, 'f') return self.lastVal - self.firstVal def getValue(self, fraction, interval, **kw): """return the value for a fraction of the range""" if self.firstVal == None or self.lastVal == None: return None if fraction <= 0.0: return self.cast(self.firstVal) elif fraction >= 1.0: return self.cast(self.lastVal) else: if len(self.firstVal)==1 and len(self.valueRange)>1: # one color at begin and N colors at the end firstVal = Numeric.array( list(self.firstVal)*len(self.valueRange), "f" ) else: firstVal = self.firstVal if self.interpolation=='linear': fraction = self.ease(fraction, interval) return self.cast(firstVal + self.valueRange*fraction) else: print 'spline interpolation not yet implemented' def cast(self, value): if type(value) != Numeric.ArrayType: return Numeric.array(value, "f") return value.astype("f") class BooleanInterpolator(Interpolator): """class for interpolating values between 0 and 1 to boolean values True or False""" valueFormat = lambda self, x: str(x == True) def __init__(self, firstVal, lastVal, interpolation='linear', active=True): Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) def getValueRange(self): if self.firstVal == True: self.firstVal = 1.0 elif self.firstVal == False: self.firstVal = 0.0 if self.lastVal == True: self.lastVal = 1.0 elif self.lastVal == False: self.lastVal = 0.0 return self.lastVal-self.firstVal def getValue(self, fraction, interval, **kw): if self.firstVal == None or self.lastVal == None: return None if self.firstVal: firstVal = 1.0 else: firstVal = 0.0 if self.lastVal: lastVal = 1.0 else: lastVal = 0.0 if fraction <= 0.0: if round(firstVal): return True else: return False elif fraction >= 1.0: if round(lastVal): return True else: return False else: if self.interpolation=='linear': if fraction < 1: return {0: False, 1:True}.get(firstVal) else: return {0: False, 1:True}.get(lastVal) else: print 'spline interpolation not yet implemented' from mglutil.math.rotax import mat_to_quat from mglutil.math.transformation import Transformation class RotationInterpolator(Interpolator): """ class for performing quaternion-based interpolations between rotation matrices described by 4x4 matrices. """ nbvar = 4 varnames = ['q1', 'q2', 'q3', 'q4'] # unit quaternion valueFormat = "%.2f" def __init__(self, firstVal, lastVal, interpolation='linear', active=True): Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) self.invertVal = False ## def cast(self, value): ## t = Transformation(quaternion=value) ## return t.getRotMatrix(shape=(16,), transpose=1) ## def getValueRange(self): ## # compute value ranges over all intervals ## if len(self.firstVal)==16: ## self.firstVal = mat_to_quat( self.firstVal ) ## if len(self.lastVal)==16: ## self.lastVal = mat_to_quat( self.lastVal ) ## v0 = self.firstVal ## v1 = self.lastVal ## return (v1[0]-v0[0], v1[1]-v0[1], v1[2]-v0[2], v1[3]-v0[3]) ## def getValue(self, fraction, interval): ## """return the value for a fraction of the range""" ## if fraction <= 0.0: ## return self.cast(self.firstVal) ## elif fraction >= 1.0: ## return self.cast(self.lastVal) ## x,y,z,q = self.firstVal ## rx,ry,rz,rq = self.valueRange ## return self.cast( (float(x + fraction*rx), float(y + fraction*ry), ## float(z + fraction*rz), float(q + fraction*rq)) ) def configure(self, **kw): self.testKW(**kw) firstVal = kw.get("firstVal") if firstVal is not None: assert len(firstVal) == 4 self.firstVal = firstVal lastVal = kw.get("lastVal") if lastVal is not None: assert len(lastVal) == 4 self.lastVal = lastVal interp = kw.get("interpolation") if interp is not None: self.interpolation = interp if self.behaviorList: self.behaviorList().alterFunction = False active = kw.get("active") if active is not None: self.active = active def getValue(self, fraction, interval, **kw): # quaternion interpolation # http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/index.htm if self.firstVal == None or self.lastVal == None: return None qa = self.firstVal qb = copy(self.lastVal) #qb = self.lastVal self.invertVal = False if self.behaviorList: self.behaviorList().invertVal = False t = self.ease(fraction, interval) cosHalfTheta = qa[0] * qb[0] + qa[1] * qb[1] + qa[2] * qb[2] + qa[3] * qb[3] #print "fraction:", fraction, "cosHalfTheta: ", cosHalfTheta #we need cosHalfTheta to be positive - invert the quaternion if cosHalfTheta < 0: # ???? qb[0] = -qb[0]; qb[1] = -qb[1]; qb[2] = -qb[2]; qb[3] = -qb[3] cosHalfTheata = -cosHalfTheta self.invertVal = True if self.behaviorList: self.behaviorList().invertVal = True if abs(cosHalfTheta) >= 1.0: qm = [qa[0], qa[1], qa[2], qa[3]] return qm #Calculate temporary values. from math import acos, sqrt, fabs, sin, pi halfTheta = acos(cosHalfTheta) sinHalfTheta = sqrt(1.0 - cosHalfTheta*cosHalfTheta) # we could rotate around any axis normal to qa or qb if fabs(sinHalfTheta) < 0.001: #fabs is floating point absolute qm = [(qa[0] * 0.5 + qb[0] * 0.5), (qa[1] * 0.5 + qb[1] * 0.5), (qa[2] * 0.5 + qb[2] * 0.5), (qa[3]* 0.5 + qb[3] * 0.5)] return qm ratioA = sin((1 - t) * halfTheta) / sinHalfTheta ratioB = sin(t * halfTheta) / sinHalfTheta #calculate Quaternion. qm = [(qa[0] * ratioA + qb[0] * ratioB), (qa[1] * ratioA + qb[1] * ratioB), (qa[2] * ratioA + qb[2] * ratioB), (qa[3] * ratioA + qb[3] * ratioB)] return qm class CompositeInterpolator(Interpolator, object): """ class for aggregating multiple interpolators the position vector is the same for all interpolators and stored in the CompositeInterpolator. The values are stored in each interpolator. CompositeInterpolator.values is overwriten by a property object collecting the values form the interpolators. """ nbvar = None varnames = None def getFirstVal(self): val = [] # build list of values for inter in self.interpolators: val.append(inter.firstVal) return val def getLastVal(self): val = [] # build list of values for inter in self.interpolators: val.append(inter.lastVal) return val def setLastVal(self, val): #self.configure(values=values) pass def setFirstVal(self, val): pass firstVal = property(getFirstVal, setFirstVal) lastVal = property(getLastVal, setLastVal) def __init__(self, firstVal, lastVal, interpolation='linear', interpolators=None, active=True): # firstVal - list of values for the first position of each interpolator # lastVal - lists of values for the last position of each interpolator self.interpolators = [] self.interpolation = interpolation self.configure(firstVal = firstVal, lastVal = lastVal, interpolators=interpolators, interpolation = interpolation, active=active) def configure(self, **kw): self.testKW(**kw) interpolators = kw.get("interpolators") firstVal = kw.get("firstVal") lastVal = kw.get("lastVal") if interpolators: ninterp = len(interpolators) if firstVal == None: if not len(self.firstVal): firstVal = [] for i in range(ninterp): firstVal.append(None) else: firstVal = self.firstVal if lastVal == None: if not len(self.lastVal): lastVal = [] for i in range(ninterp): lastVal.append(None) else: lastVal = self.lastVal assert len(firstVal)==len(lastVal)==len(interpolators) self.interpolators = [] self.interpConfig = [] for interpKlass, v1, v2 in zip(interpolators, firstVal, lastVal): interpolation = kw.get("interpolation", self.interpolation) interp = interpKlass(v1,v2,interpolation = interpolation) # replace .configure method with _configure to prevent a user # from accessing the interp and modifying a single one self.interpolators.append(interp) self.interpConfig.append(interp.configure) interp.configure = None else: if lastVal != None and firstVal != None: assert len(firstVal)==len(lastVal)==len(self.interpolators) for i in range(len(self.interpolators)): self.interpConfig[i](firstVal = firstVal[i], lastVal = lastVal[i]) elif firstVal is not None: assert len(firstVal) == len(self.interpolators) for i in range(len(self.interpolators)): self.interpConfig[i](firstVal = firstVal[i]) elif lastVal is not None: assert len(lastVal) == len(self.interpolators) for i in range(len(self.interpolators)): self.interpConfig[i](lastVal = lastVal[i]) interpolation = kw.get("interpolation") if interpolation is not None: for i in range(len(self.interpolators)): self.interpConfig[i](interpolation = interpolation) self.interpolation = interpolation active = kw.get("active") if active is not None: self.active = active def getValue(self, fraction, interval, **kw): result = [] for interp in self.interpolators: result.append(interp.getValue(fraction, interval)) return result class FunctionInterpolator(Interpolator): """ class for performing interpolations using functions """ def __init__(self, firstVal=None, lastVal=None, function=None,interpolation='linear', active=True): """ Constructor for an interpolator object using a function. This object has to implement a getValue(fraction) method which returns a value corresponding to the given fraction. arguments: function: function or method to called at each time step. The function can be a function or a 3-tuple (func, *args, **kw). It will be called using func(*(value,)+args, **kw) firstVal, lastVal: range of x values to be mapped to the range of frames of the action this interpolator is associated with. """ self.valueRange = None Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) self.configure(function = function) def getValueRange(self): #print "getValueRange of Interp." return self.lastVal - self.firstVal def configure(self, **kw): firstVal = kw.get("firstVal") updateVR = False if firstVal is not None: self.firstVal = firstVal updateVR = True lastVal = kw.get("lastVal") if lastVal is not None: self.lastVal = lastVal updateVR = True function = kw.get("function") if function: self.funcTuple = self.checkFunction(function) interp = kw.get("interpolation") if interp is not None: self.interpolation = interp if updateVR: if self.firstVal != None and self.lastVal != None: self.valueRange = self.getValueRange() active = kw.get("active") if active is not None: self.active = active def checkFunction(self, function): # check that functionTuple is of form (func, (), {}) try: f, args, kw = function assert callable(f) assert isinstance(args, tuple) assert isinstance(kw, dict) except TypeError: assert callable(function) f, args, kw = function, (), {} return f, args, kw def getX(self, fraction): if self.valueRange: return self.valueRange*fraction else: return None def getValue(self, fraction, interval, **kw): if self.valueRange: fraction = self.firstVal+self.valueRange*fraction f, args, kw = self.funcTuple return self.cast(f( *(fraction,)+args, **kw)) class ReadDataInterpolator(Interpolator): def __init__(self, firstVal=None, lastVal=None, function=None, nsteps=0, interpolation='linear', active=True): self.valueRange = None self.function = None Interpolator.__init__(self, firstVal, lastVal, interpolation = interpolation, active=active) self.nsteps = nsteps self.configure(function = function) def getValueRange(self): return None def clone(self): return self.__class__(self.firstVal, self.lastVal, self.function, nsteps = self.nsteps, interpolation=self.interpolation, active = self.active ) def configure(self, **kw): # if firstVal or lastVal get reconfigured - we will add those values to the # range of values returned by function(step) #print "ReadDataInterpolator, configure", kw nsteps = kw.get("nsteps") if nsteps is not None: if nsteps != self.nsteps: self.nsteps = nsteps function = kw.get("function") if function is not None: if type(function).__name__ in ('ndarray', 'list'): self.function = function self.firstVal = copy(function[0]) self.lastVal = copy(function[-1]) self.configure(nsteps = len(function)) else: assert callable(function) self.function = function self.firstVal = function(0) self.lastVal = function(self.nsteps-1) firstVal = kw.get("firstVal") if firstVal is not None: self.firstVal = firstVal lastVal = kw.get("lastVal") if lastVal is not None: self.lastVal = lastVal try: nbvar1 = len(self.firstVal) except: nbvar1 = 1 try: nbvar2 = len(self.lastVal) except: nbvar2 = 1 nbvar = max(nbvar1, nbvar2) if self.nbvar != nbvar: self.nbvar = nbvar interp = kw.get("interpolation") if interp is not None: self.interpolation = interp active = kw.get("active") if active is not None: self.active = active def getValue(self, fraction, interval, **kw): if self.function is None: return None nsteps = self.nsteps if fraction == 0: if self.firstVal is not None: #print "fraction:", fraction, "firstVal" return self.firstVal else: step = 0 elif fraction == 1: if self.lastVal is not None: #print "fraction:", fraction, "lastVal" return self.lastVal else: step = nsteps -1 else: step = round((nsteps-1)*fraction) #print "fraction:", fraction, "step:", step if type(self.function).__name__ in ('ndarray', 'list'): return self.function[int(step)] else: return self.function(int(step)) from math import sqrt, cos, sin, acos import numpy def matToQuaternion(mat): # converts rotation matrix to quaternion # http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm trace = 1 + mat[0] + mat[5] + mat[10] if trace > 0.00000001: S = sqrt(trace) * 2 X = ( mat[9] - mat[6] ) / S Y = ( mat[2] - mat[8] ) / S Z = ( mat[4] - mat[1] ) / S W = 0.25 * S else: if mat[0] > mat[5] and mat[0] > mat[10]: S = sqrt( 1.0 + mat[0] - mat[5] - mat[10] ) * 2 X = 0.25 * S Y = (mat[4] + mat[1] ) / S Z = (mat[2] + mat[8] ) / S W = (mat[9] - mat[6] ) / S elif mat[5] > mat[10] : S = sqrt( 1.0 + mat[5] - mat[0] - mat[10] ) * 2 X = (mat[4] + mat[1] ) / S Y = 0.25 * S Z = (mat[9] + mat[6] ) / S W = (mat[2] - mat[8] ) / S else: S = sqrt( 1.0 + mat[10] - mat[0] - mat[5] ) * 2 X = (mat[2] + mat[8] ) / S Y = (mat[9] + mat[6] ) / S Z = 0.25 * S W = (mat[4] - mat[1] ) / S #The quaternion is then defined as: #Q = | X Y Z W | ## #normalize: ## n = sqrt(X*X + Y*Y + Y*Y + W*W); ## X /= n ## Y /= n ## Z /= n ## W /= n return [X, Y, Z, W] def quatToMatrix(q): # converts quaternion to matrix # http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToMatrix/index.htm x, y,z, w = q sqw = w*w sqx = x*x sqy = y*y sqz = z*z #invs (inverse square length) is only required if quaternion is not already normalised invs = 1 / (sqx + sqy + sqz + sqw) m = numpy.zeros((4,4), 'f') m[0][0] = ( sqx - sqy - sqz + sqw)*invs #since sqw + sqx + sqy + sqz =1/invs*invs m[1][1] = (-sqx + sqy - sqz + sqw)*invs m[2][2] = (-sqx - sqy + sqz + sqw)*invs tmp1 = x*y tmp2 = z*w m[1][0] = 2.0 * (tmp1 + tmp2)*invs m[0][1] = 2.0 * (tmp1 - tmp2)*invs tmp1 = x*z tmp2 = y*w m[2][0] = 2.0 * (tmp1 - tmp2)*invs m[0][2] = 2.0 * (tmp1 + tmp2)*invs tmp1 = y*z tmp2 = x*w m[2][1] = 2.0 * (tmp1 + tmp2)*invs m[1][2] = 2.0 * (tmp1 - tmp2)*invs mat = m.flatten() mat[-1] = 1. return mat if __name__=='__main__': ip = IntScalarInterpolator(0,10) print ip.getValue(0.3, None) print ip.getValue(0.34, None) print ip.getValue(0.35, None) print ip.getValue(0.36, None) print "---------------" ip1 = FloatScalarInterpolator(7., 10.) print ip1.getValue(0.3, None) print ip1.getValue(0.34, None) print ip1.getValue(0.35, None) print ip1.getValue(0.36, None) print "---------------" ip2 = FloatVectorInterpolator( [1,1,1], [10,10,10]) print ip2.getValue(0.5, None) print ip2.getValue(0.6, None) print ip2.getValue(0.67, None) print "---------------" ip3 = IntVectorInterpolator( [1,1,1], [10,10,10]) print ip3.getValue(0.5, None) print ip3.getValue(0.6, None) print ip3.getValue(0.67, None) print "---------------" ip4 = VarScalarInterpolator (2, [2,4,6]) print ip4.getValue(0.5, None) print ip4.getValue(0.6, None) print ip4.getValue(0.67, None) print "---------------" #ip5 = VarVectorInterpolator([[1,1,1], ], [[6,6,6], [8,8,8], [10,10,10]] ) ip5 = VarVectorInterpolator( [[6,6,6], [8,8,8], [10,10,10]], [[1,1,1], ] ) print ip5.getValue(0.5, None) print ip5.getValue(0.6, None) print ip5.getValue(0.67, None) print "---------------" #firstVal = Numeric.identity(4).astype('f') #from mglutil.math.rotax import rotax #import math #rot = rotax((0,0,0), (0,1,0), math.pi) #lastVal = Numeric.dot(firstVal, rot) #ip6 = RotationInterpolator(firstVal.ravel(), lastVal.ravel()) #print ip6.getValue(0, None) #print ip6.getValue(0.3, None ) #print ip6.getValue(0.5, None) #print "---------------" ip7 = CompositeInterpolator(interpolators = (FloatVectorInterpolator, FloatScalarInterpolator), firstVal =([1,1,1], 1,), lastVal = ([10,10,10], 10)) print ip7.getValue(0.5, None) print ip7.getValue(0.6, None) print ip7.getValue(0.67, None) mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/actions.py0000644000175000017500000005462511553671754023007 0ustar debiandebian## ## Author Michel F. Sanner Jan 2009 ## import weakref from Scenario2.keyframes import KF, Interval from Scenario2 import MaxKF from Scenario2.keyframes import AutoCurrentValueObject, KFValueFromFunction class Actions: """ container for a list of keyframes and intervals attributes: .keyframes: list of chronologically sorted Scenario2.keyframes.KF objects .intervals: list of chronologically sorted Scenario2.keyframes.Interval obj methods: KF <- addKeyframe(self, kf) None <- deleteKeyframe(self, kf) Bool <- actions.addActionsAt(srcActions, position, check=True) Bool <- addInterval(self, interval): Interval <- getInterval(self, position) value <- getValue(self, frame) Actions <- copyAt(self, position) firstFrame, lastFrame <- boundingFrames(self, position=0) """ def __init__(self, actor=None): if actor: self.actor = weakref.ref(actor) else: self.actor = None self.keyframes = [] # sorted chronologically self.intervals = [] #these have to be sorted chronologically def getStringRepr(self, pos1=0, pos2=None, actorName='ACTOR______NAME'): """Return a string description of action. The description contains a list of position labels, containing all the mutiple of 10 positions, a string representing the time line and a string representing the actions. The full string is a multi line strign that will display all the information. If provided, the name will appear in front of the actStr and use 15 charaters posLabel, posStr, actStr, fullStr <-getStringRepr(pos1=0, pos2=None) if pos2 is None pos2 will be the position of the last keyframe posLabel is a list of all multiple of 10 positions (i.e. 'I' in poStr) The posStr has an '|' at all multiples of 10 and a ":" the multiple of 5 that are not multiple of 10 (e.g. " | : | : ") The actStr string contains: ' ': a blank space for each position where no value 'x': where there is a keyframe '-': where there is an active interval '.': where there is an inactive interval '|' every position that is a multiple of 10 e.g. 'x---------x x x---------x' FullString example: 1 2 3 0 0 0 0 | : | : | : | ACTOR______NAME x.........x x x---------x interval (0,10) is inactive, there is an isolated keyframe at 15 and an active interval from 20 to 30 """ nameLength = 30 posStr = " "*(nameLength+1) sformat = "%0"+"%ds"%nameLength actStr = sformat%actorName[:nameLength] posLabels = [] if len(self.keyframes)==0: return [], posStr, actStr, actStr+"No Keyframes" if pos2 is None: pos2 = self.keyframes[-1].pos nblines = len(str(pos2)) # how many lines we need for labels labelLines = [] for i in range(nblines): labelLines.append( " "*(nameLength+1) ) for i, pos in enumerate(xrange(pos1,pos2+1)): obj = self.getInterval(pos) # build posStr rpos = i+pos1 if rpos%10==0 or i==0: if (rpos%10==0): posStr += '|' else: posStr += ' ' posLabels.append(rpos) elif rpos%5==0: posStr += ':' else: posStr += ' ' # build label lines if (rpos)%10==0 or i==0: lab = str(rpos) nbl = len(lab) for j in range(0,nblines-nbl): labelLines[j] += ' ' for j,k in enumerate(range(nblines-nbl,nblines)): labelLines[k] += lab[j] else: for j in range(nblines): labelLines[j] += ' ' # build actStr if obj is None: actStr += ' ' elif isinstance(obj, KF): actStr += 'x' elif obj.active: # we are on an active interval ## if (rpos%10==0): ## actStr += '+' ## elif rpos%5==0: ## actStr += ':' ## else: ## actStr += '-' actStr += '-' else: # we are on an inactive interval actStr += '.' # build fullStr fullStr = """""" for i in range( nblines): fullStr += labelLines[i]+'\n' fullStr += posStr+'\n' fullStr += actStr return posLabels, posStr, actStr, fullStr def addKeyframe(self, kf): """ add a keyframe kf. Kf can be a KF object or a (position, value) pair. this method returns and existing KF or the one we sent into the method """ if not isinstance(kf, KF): kf = KF( *kf ) # find what is on obj = self.getInterval(kf.pos) if obj is None: # there is nothing at this position # we simply add a copy of this keyframe self._insertKeyframe(kf) return kf elif isinstance(obj, KF): if kf.isLinked(): return None# a linked keyframe cannot be added on top of a keyframe elif kf.__class__ != obj.__class__: # we replace the keyframe kf.leftInterval = obj.leftInterval if kf.leftInterval is not None: kf.leftInterval.kf2 = kf kf.rightInterval = obj.rightInterval if kf.rightInterval is not None: kf.rightInterval.kf1 = kf self.keyframes.remove(obj) self._insertKeyframe(kf) return kf elif kf.valueObject.__class__ == obj.valueObject.__class__: # we over write the value obj.setValue(kf.getValue()) return obj else: # we need to overwrite KF's value object obj.valueObject = kf.valueObject return obj elif isinstance(obj, Interval): # put kf in list of keyframes self._insertKeyframe(kf) if obj.isLinked(): # this is a linked interval off = kf.pos - obj.k1.pos self.splitIntervalWithKF(obj, kf) newInter = kf.rightInterval for inter in linkedInter[1:]: il = newInter.linkedCopy(inter.k1.pos+off) il.setKF2( inter.k2 ) kf1 = il.kf1 self._insertKeyframe(kf1) inter.setKf2( kf1 ) else: # not linked self.splitIntervalWithKF(obj, kf) return kf def deleteKeyframe(self, kf): """ Delete keyframe kf if kf in not in any interval """ try: for i in self.intervals: assert i.kf1!=kf assert i.kf2!=kf except AssertionError: print "could not remove kf, belongs to interval", kf, kf.pos return self.keyframes.remove(kf) def splitIntervalWithKF(self, inter, kf): """ Split the interval inter using keyframe kf. kf is known to be in the interval. """ newInter = Interval(kf, inter.kf2) if inter.valGen.generator: gen = inter.valGen.generator generator = gen.clone() newInter.setValGenGenerator(generator) # set left and right for kf kf.leftInterval = inter kf.rightInterval = newInter # set kf as last of old interval inter.setKF2(kf) self._insertInterval(newInter) ## for i,inter in enumerate(self.intervals): ## if inter==obj: ## break ## self.intervals.insert(i+1, newInter) def _insertInterval(self, inter): """ insert the interval inter into self.intervals respecting the chronolgy. The method does not perform any checks. It is assumed that inter.kf1 and inter.kf2 are in self.keyframes """ p1 = inter.kf1.pos n=0 # needed when len(self.intervals)==0 for n,i in enumerate(self.intervals): if i.kf1.pos > p1: break if len(self.intervals): if p1 > i.kf1.pos: # this happens when we split last interval or add a new interval after the last one n = n+1 self.intervals.insert(n, inter) return def _insertKeyframe(self, kf): """ insert the keyframe fk into self.keyframes respecting the chronolgy """ if len(self.keyframes)==0: self.keyframes.append(kf) return for i,k in enumerate(self.keyframes): if k.pos==kf.pos: raise ValueError("position %d already has a keyframe"%k.pos) if k.pos > kf.pos: self.keyframes.insert(i, kf) return self.keyframes.append(kf) def boundingFrames(self, position=0): """ return first and last frame of an action object """ first = 0 last = MaxKF if len(self.keyframes)>0: first = self.keyframes[0].pos+position last = self.keyframes[-1].pos+position return first, last def isLinked(self): """ Return True if any object in the action is linked """ for k in self.keyframes: if k.isLinked(): return True for i in self.intervals: if i.isLinked(): return True return False def keyframeBetween(self, pos1, pos2): """ return true if there is a keyframe between the 2 positions """ for k in self.keyframes: if k.pos >= pos1: if k.pos <= pos2: return True else: return False def checkAddLinkedActionsAt(self, action, position): """ Determine whether a linked copy of the action can be added to this action object at the specified position. The addition of the action is allowed only if it does not overlap any KF or interval in current action (self) when placed at the specified position. """ if len(actions.keyframes)==0: return False firstPos = actions.keyFrames[0].pos #delta = position - firstPos delta = position # get first and last frame for the action to be added mini, maxi = action.boundingFrames() mini += delta maxi += delta # check that no keyframe of self is withing mini and maxi for k in self.keyframes: if k.pos >= mini and k.pos <= maxi: return False # now we know that no KF is within mini and maxi # we need to check that no interval of self spans the whole action object # this can only happen if there is an interval i in self for which the first # KF is BEFORE mini and the last KF is AFTER maxi for i in self.intervals: k1 = i.kf1 k2 = i.kf2 if k1.pos < mini and k.pos > maxi: return False return True def checkAddActionsAt(self, actions, position): """ Determine whether the physical copy of the keyframes and intervals in action can be added to this action object at the specified position. The following rules are enforced: 1. no KF to be added (at the position) falls onto an interval 2. no inside of an interval to be added overlaps with either a KF or an Interval """ if len(actions.keyframes)==0: return firstPos = actions.keyframes[0].pos #delta = position - firstPos delta = position # no KF to be added falls onto an interval for k in actions.keyframes: # loop over KFs kf to be added # check what is in self at position kf.pos obj = self.getInterval(k.pos+delta) # if it is an Interval we cannot paste actions if isinstance(obj, Interval): return False # no KF from actions to be added is inside of an interval # hence the each KF to be added either falls on nothing or a KF # in self # added overlaps with either a KF or an Interval for i in actions.intervals: # loop over interals to be added # check that self has no KF within interval to be added i if self.keyframeBetween(i.kf1.pos+1+delta, i.kf2.pos-1+delta): return False return True def addLinkedActionsAt(self, actions, position, check=True): """ Creates a linked copy of the actions at specified position and adds it to this actions object. If check is True, the method first checks if linked actions can be added at the position. """ if check: if not self.checkAddLinkedActionsAt(actions, position): return actions1 = actions.linkedCopyAt(position) for sourcekf in actions1.keyframes: destkf = self._insertKeyframe( sourcekf ) # insert interval for inter in actions1.intervals: self._insertInterval(inter) def addActionsAt(self, srcActions, position, check=True): """ Add srcActions at a given position to this actions object Bool <- actions.addActionsAt(srcActions, position, check=True) Creates a physical copy of the actions at specified position and adds it to this actions object. If check is True, the method first checks if actions can be added at the position adn returns False if it can;t be added. If the action is added successfully True is returned. """ if srcActions==self: if position==None: return True if len(self.keyframes)>0 and position==self.keyframes[0].pos: return True if check: if not self.checkAddActionsAt(srcActions, position): return False actions1 = srcActions.copyAt(position) # insert keyframes (after the interval was added, else getInterval() # finds these keywords) lookup = {} for sourcekf in actions1.keyframes: destkf = self.addKeyframe(sourcekf) lookup[sourcekf] = destkf if destkf != sourcekf: li = sourcekf.leftInterval if li: li.kf2 = destkf ri = sourcekf.rightInterval if ri: ri.kf1 = destkf for i, inter in enumerate(actions1.intervals): kf1 = actions1.keyframes[i] kf2 = actions1.keyframes[i+1] if lookup[kf1] != kf1 and lookup[kf2] != kf2: # both keyframes overwrote existing keyframes ==> interval needs to be overwritten # i.e. we copy the valueGenerator of the srcInterval to the existing interval lookup[kf1].rightInterval.valGen = inter.valGen.clone() else: self._insertInterval(inter) inter.kf1.rightInterval = inter inter.kf2.leftInterval = inter return True def addInterval(self, interval): """ add an interval to this Actions objet. The interval can be added if: 1 - both keyframes fall on keyframes AND a - these 2 keyframes belong to the same existing interval in this case, the generator of the destination interval is overwritten with the generator from the source interval b - or these 2 keyframes belong 2 succesive intervals (i.e fill gap between intervals) 2 - if both keyframes fall onto nothing, the interval is addded if there is no existing keyframe inside the interval to be added. 3 - kf1 falls on nothing and kf2 falls on an existing KF we add if there is no existing KF between kf1.pos+1 and kf2.pos-1 4 - kf2 falls on nothing and kf1 falls on an existing KF we add if there is no existing KF between kf1.pos+1 and kf2.pos-1 5 - either kf1 or kf2 fall on an existing Interval the interval cannot be added return True if interval was added and False else """ kf1 = interval.kf1 kf2 = interval.kf2 obj1 = self.getInterval(kf1.pos) obj2 = self.getInterval(kf2.pos) if isinstance(obj1, Interval) or isinstance(obj2, Interval): return False # case 5 # at this point kf1 and kf2 can either fall on nothing or a KF if self.keyframeBetween(kf1.pos+1, kf2.pos-1): return False kf1 = self.addKeyframe(kf1) kf2 = self.addKeyframe(kf2) if obj1 is not None and obj2 is not None: # both fall in KFs ri = obj1.rightInterval li = obj2.leftInterval if ri and ri==li: # case 1.a ri.valGen.generator = interval.valGen.generator return True kf1.rightInterval = interval kf2.leftInterval = interval interval.kf1 = kf1 interval.kf2 = kf2 self._insertInterval(interval) return True def getInterval(self, position): """ return what is at the position passed as an argument. This can be a keyframe, and interval, or None if there is nothing there """ result = None # check if there is a keyframe at this position # cannot be done using intervals because of isolated keyframes for k in self.keyframes: if position == k.pos: return k # check is position falls within an interval for i, inter in enumerate(self.intervals): p1 = None p2 = None kf1 = inter.kf1 if kf1: p1 = kf1.pos else: p1 = 0 kf2 = inter.kf2 if kf2: p2 = kf2.pos else: p2 = MaxKF if p1position: return inter return None def getValue(self, frame): """ return a value for a given frame, If not KF or Interval exists at this position, we return the string 'Nothing There' """ obj = self.getInterval(frame) if obj is None: return 'Nothing There' elif isinstance(obj, KF): ri = obj.rightInterval li = obj.leftInterval # KF--------------AKF # ^ # obj # when playing from left to right we need to configure ri.lastValue if ri: if obj==ri.kf1: # first KF of interval ri ri._lastSetValue = None if isinstance(ri.kf2.valueObject, AutoCurrentValueObject): if frame==0: # update interval generators with a value ri.kf2.getValue(value=self.actor().initialValue) else: ri.kf2.getValue() # getting the value forces generator to update lastVal #print 'Akf2 is set to', ri.valGen.generator.firstVal, self.actor().initialValue elif isinstance(ri.kf2, KFValueFromFunction): ri.kf2.getValue() if ri.valGen.generator is not None: if hasattr(ri.valGen.generator, "constant") and ri.valGen.generator.constant: return ri.getValue(frame) # KF--------------AKF # ^ # obj # when playing from left to right we need to return the value at this AKF # without setting it from the object's current value if li: if isinstance(obj.valueObject, AutoCurrentValueObject): return li.valGen.generator.lastVal if li.valGen.generator is not None: if hasattr(li.valGen.generator, "constant") and li.valGen.generator.constant: return li.getValue(frame) return obj.getValue() else: # we are on an interval if obj.active: #print 'get frame:', frame, obj.getValue(frame) return obj.getValue(frame) def copyAt(self, position): if len(self.keyframes)==0: return None #delta = position - self.keyframes[0].pos delta = position # create Actions object na = self.__class__() lookup = {} # create copies of KFs for k in self.keyframes: nkf = k.copy(k.pos+delta) na.keyframes.append(nkf) lookup[k] = nkf # create copies of intervals for i in self.intervals: ni = i.__class__(lookup[i.kf1], lookup[i.kf2], i.valGen.clone()) if hasattr(i, 'data'): ni.data = i.data.copy() na.intervals.append(ni) return na def linkedCopyAt(self, position): if len(self.keyframes)==0: return None #delta = position - self.keyframes[0].pos delta = position # create Actions object na = self.__class__() lookup = {} # create linked copies of all KFs for k in self.keyframes: nkf = k.linkedCopy(k.pos+delta) na.keyframes.append(nkf) lookup[k] = nkf # create copies of intervals pos = self.keyframes[0].pos for i in self.intervals: ni = i.getLinkedCopy(position) ni.kf1 = lookup[i.kf1] ni.kf2 = lookup[i.kf2] na.intervals.append(ni) return na mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/0000755000175000017500000000000012146213430022012 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/floppy.png0000644000175000017500000000156112073130321024030 0ustar debiandebian‰PNG  IHDRÄ´l;sRGB®ÎébKGDÿÿÿ ½§“ pHYsaaÁ0UútIMEÜ 3 É/çñIDAT8Ë­•ÍŠUǧºº&3=ÓÓ¢ÓAÄ…dwnDE_@Ü7fáF²Ua|èBu‚  ñüX™ñœÉ4èŒCWUWÕ½ç\õ‘þq( uÿçwþuî½<¼È£Ÿbà¥Ñh´7£^qit¹a}]B _Š"‚8|pè'“É'1ÀÕñÕáîî.í-^¿ñן}ŽÃ{Ÿ íé›oóë/?óÕ½»¨*û¿ï3™LˆT•²,±ÁHúÂoÞk¨„šTD¢Hˆ£šÜÌ03ÚNã¶«íáU­…㈠I¼b…ÔAÔŒNU1›!`f~ñÛ7ÎeÅSŸ~©=$n Åu¡¡ÌŒÒyž¼óy×V¨«êWó,Ôn9S¼÷µx°³‰½E¥ôzÑ"Z€@èDC³®RE½íqÖ;UŠÊqôÊ ç²bðí8 xï;À9aº„÷F^)|ù]kíDwÖÌQ[ ùi5í ±©pttÈú`ØZr;ÚBÇ1™<@½¯sËSÑŽÍß|Íò®û¯fر…ŽøÿÄ<†™®NÅ£ˆÍ ßxÔÆ;·nqåñ+ÿ*P•%ìíQàòhÔmíaçÜBÕY1ãýwßÃ9Gš¦ÜþèÃñíí‹DÑõ¾[¯ªóŠ_ÎóW–¨*E1#˲Ul3¤i]½gmm­3¼9ÝV‰³,Ã{ªR•Õ™ÂínSU‚ëDÍiWÃÍyÜ WÞQUEU’¦éŠp^U‰Y@¨OºvBb€ã““?67ã­ÍÍ+ÒiÊß§§X0ò<_.òå¬ÀB îõ˜žž’§Yw¿¼ ÜNúÉîc·7ÚEÏ\»­%‰ÌÏèü•°ÿ¾ª÷ BÔä³,·4Ï>n¿zx è¡ßï³³³s)I’8I’~q}–xïœseYºƒƒƒã,ËܲõÀ÷ÿôTk¸iIEND®B`‚mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/32x32/0000755000175000017500000000000012146213430022573 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/32x32/scenario.gif0000644000175000017500000000357011156026406025077 0ustar debiandebianGIF89a çÿ    "!&""#-"("$%&!$&%+$%,")/%)+',-&-43**B&(-13Y" .5<268.992=>7;=5=C3>I9=@7BCF<<ûrEàÓ0°ƒ™{|á +éœÃMvÓ|’Ç ˆT@ÀáäNhK<ê”Àƒã@¸¨òN:Ø`S %5PÀ°©,@@£F b *ì°s )þ„„P 0 `Máƒ(°€€À$PÀôÑI'×CÉ!…` 8À@DèêÄ (€ ,€@ãð¢`rÈ à2 @ A0 @ 0, $à@·–X2‰(¢t‚I1¨±\€„x@ÑÁd`\`Æ8Ї%ŽL‚I'$O°@ÐËÀpœÂ /¸àBÍ+äì øÑˆ#Ž,âH&‚Dp®:䀃P€§5RkÚŽø! }¢Ç)8E.ø€Å 4¼0CÚjß\³Í"D@‡×z¸QÇqXàþ `* pìñH AÆncÄA‡fœáÆè ‰ü‡xœqh@ÁÇKð€’»±E[\ÑEhÀx@ .°ÂÌ/¬ð )˜P‚ X0Æg ¡„L(¡Ä@PÀÌ3Ç@Á¨»¿@‚õÆŸ1ÆKXq…D€ÃS@ƒH…`pA‚á>pÁ<Ácø‚Æ91dÀ)X Pð‚&Ä '@Á J@(èx%@Á f×…1ŒAw˜ÃÜð4 @€tbé x_öö­pà $™ F¸,€H X@b( N (@ªÀ°@ÎàV¨¢¦pDxÀE. D‚€„ð€ CàÁ„ „ ü€ ‹(+;mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/64x64/0000755000175000017500000000000012146213430022605 5ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/64x64/RotationAxis.gif0000644000175000017500000000315411156026350025726 0ustar debiandebianGIF89a@@çÿåæèéé êêë í ì îèêë!ì#"î&*&Y3Yë/*/_•í22ï43ï59ñ7;CcŽ7fœ>e•ì;9:hží=:@g˜3k¦î>Aï@BDj›@k¨?l£ñAC7n©Glž;n±InŽ;p¬íFB@p Jo¡>q³=r®Br¢Po›>s¯Cs£Er¨ïIJJrðJK9u½KsŸQs™Cu¸Ov¢îPKDxµîQRXx’Fz·Hy¼VxžðRSG{¸A~ÀòUUJ}ºW{®K~»L¼ïYU\~¤M€½h~ƒïZ[ð[\O¿ñ\]QƒÀó]^R„Áw‚qðb^€ƒbd…¬ðdej†¨òefófgñkio‹­ónqˆyðrqñsròtsôutŽ”wöwv—´ ˜Mó|}õ~ö€…œºóƒ€‹ž¶õ…‚ô…ˆõ†‰ö‡Š£¼ó‹‹’¥½öøõ“÷•’ö•˜ö–Ÿó™™·¯‚œ°È³²„÷œœ´Òö¢ Ë·`ù¤¢ø¥¨ª¹Íù§ªõªª­¼Ïú©²û­ø¬­¯¾Òû®¯ËÁ޵ÁÏö±¯ú¶‡ø³±ù´²¹ÄÒêÆ4ºÆÔû¶´ý·µö¹»ûºÃø¼½ü¾¦¿ËÙú½¿ù¾ÅÿÍþ–ÿÍ-ýÏ øÁÁÃÏÝÿÑ"ùÃÂÿÒ$úÄÃßÒ˜ýÆÆþÖ&ùÉÇúË´úËÈûÌÉúÍÐúÏØÒÚâÿÛ[äÛ­þÛbýÛiùÖ¶ùÓÔãÜÇÿÝkúÔÕçÞ°ÿÞlúÞ†ÖßçùÞýámÿâ`ý××ÿãhùÚÙàâßÿâ„ÿæqÿäýÞÜúà×îåÊýçÿèÿæ›ÿç•âèêúãàþê–ýêœÿë‘üåáéëèÿçÐýæâûæèüçêýï™çíïýèëÿí´éîðþéìèðùúìíëðóÿñ¶ûíîüîïÿïêýððïõ÷ÿôÓÿòóÿôçÿöÛóøûüöõú÷üþúÖþø÷ÿùøÿûë÷üÿýüóÿýûüþúÿþõþÿü!þCreated with GIMP,@@þÿ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²äG|íL^Ä·‰OJ•'ñ$æÄn?BѲ ËfD2Q~%cŸO‡•(Èqæ,N‚9Gª³ðC6g~jàUá˜ayÓvÈK‚¢]†JУÍ&qÚ ¡ OÚ‚í(HØ‚GÕ9m›æq@ ÙÝfÜ#–ºnžôté`ÅáªPˆÂæ­uÞN "sÃA?wéYPPËG¼Ú}cEˆM 8K»&€&dôl:ÖN«Ctº¬0}£+¬j`a#ÈS²våd9ÊæþÒëp Â/s …r†$?h¢„xÀ€6Ÿo<¥ Eª8O9´T"È]ÔPÁü`-4`Þlì +ÚÐS/›BGwÐÀ!*ÝCÞ~Q„‡ –Ȓᆜ’GS¬@ƒ |c’4@AX˜a!›Ðâ =çüŠ"|¬ÑÅ !@&ÍâE!ô0…‡tRË7õ”ó‹(Œôáä HpœÀÔÎ1¬ÈÂË,Ÿ² 7ñ°óL,”4Ê,¬x" <‡]cÊ-ÍŒ³Ï;˘RÌeQSJ.‰.ºL)Á@J¤”*Ê(¦iõˆpÜáŽ@œVúi¦Íóˆ>þ*éÃ/L` ª“ªz)«ÿÃEwÀ¤EVp ®Z ê?à ¡ ¢R/Pñ‚Èê ê%TKE[’$P±D áü“ª§»þs‰4P!Å pˆK91,A… iüsM®ì‚JHX¡¶0ÝñRp08©$Ëè(̘ÓDµRˆ0ŒMèäàƒ¼#ˆ‰1Ѥã=Ò¬RHÏZñAG¡¢ò¢Â‘à²M/\¡ÁÇ7qêQ‹dTá ,äp‚ ;H´ CT“(OK´KhME€ÎaÕ¸q Bt͵8ŒÀƒ´š¶¢Æ:äC@dñÇ?К^óJ.Ä£ 4¤‚Œ¦3Ê-%Ÿ¼Ì(Ó >6ºè¹äå#<ýì³æ ‡.ú褗nú騧®:E;mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/__init__.py0000644000175000017500000000000011147047427024124 0ustar debiandebianmgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/Icons/scenario.png0000644000175000017500000067735611147047427024366 0ustar debiandebian‰PNG  IHDRÝ¡› pHYs  šœtIME×# pœ2 IDATxÚd½y°méU¶Ö7î½Ï9÷Þ÷zV·ÔšÀ ©`¹±’HHHaFeD%8Eœ‚ª‡ a-Ú²A$”áSIWÀTÀ.œª¤²&¢–ÔjµZC¿÷îpÎÙÃ7æßÞënÉ·ººî»÷Ü=|ßë·ÖÇÿó{ÿäÆ}ß[kk­Ì¬”RJãXJQJcrÎÓ4i­›¦§Þ{Bhš¦Ö:ŽcÛ¶1ÆRJ×u)%¥TJIkRDZi7ƘZkJ)„°Ùlð™¾ï™¹ë:f†ÁcŒÇ1N¡ifÖZÇs¹f!úã8Žø@-D\KHÞÛ£Ö:çŒçQJ…ðFƘžž¦”‡CÛ¶9g­µ\*ÆXkÝl6WWk­Öz»Ý^^^*£‰(•lŒQJ ÃPJ±V3³"fæZ+V o=ŽcãZ¥TÎÑÓ„5 !(¥´ÖµVçÜÐOÞû”JÎYkŽ1zïµÖJ©ãñØ4MÛ¶]×aaK)Ì<¯3Õý~ß¶-3OÓ„çgf"†Á{¦”¼÷9çš‹µÛ7 ÃÉÉÉ8Ž›Íf†œsÎy·Ûí÷ûÝn—Rš¦É:›c¬ñxÇZ«õ.¥Ô4ÝååeÓ4!ÖjFo^dæÐ÷›Í¦”’sö¾Åòî÷ûÍnc„ Çþää×,)QÓ¸iš°×cHZkã|¡PÕZ«B9gÖ*„àœ«µ¶›FkBÀÛ1s©©”bµñÞ+£qµB×nsÎÆÈF­pŽ1Zk‡aPŠqÓ:"jšfÇZ+Ue­Åúàµ6Æay·Ûí~Ùu]ÎÙ97 Ãf³Áæâ²mÛc†aÀv‡¦kcŒMÓ”RˆˆˆÆq4Ƥ”pGl®s.¥dŒaUµÖ¥””YksÎ!„¶ÙÄ!fÆï=ž¶¤lŒ9Dtã®»SJ—û+眵zÇÝf; ÃéÙîÖ­[Þ:£)]r…v036šˆŽÇãv»=??ÇÛAÙ‡m·Ûãñضmß÷ÐSïýá¸'"< .eŒŠ1Ƙ±æµV­õ4MÎ9k­s.„€}Ç øÌ¼Ùlú¾‡¾{ﱕ žR꺎ˆœsWWWúõ¯ù1"‚0i­‰(ç ùƒñ‚"i­qWïA¼ˆ(„˜¦ V&ç Kå©•pZ+Ai•RxI<½ü|š¦Ó“S"ÂÕŒ1MÓ”ZSJÎù”R©*:M³ÒF—4k{JÉZ뽯µÂfášØx¹>Þ ïs£LDÞû”2ÄZ‰¬µ!FX4¬€R\Ja"lA´ÖÞ{ª”RÒZåœÛ¶I)ávØWú4ï})XƒEH)á¾0»¸ ÖJ)…»„š¶mšúk8M|³Ù`ËÏÏÏOOO!;uÑ\Á¹/¥@¤D‘°GÆjì3Se˜K"Š)j­÷ûC×uÇãñääd ¡mš’³ZŒ©±²HDµÎ‚”sÖf¾&­aO‰H1îË¥çœ1&—jŒ±Î+¥´ÑZk«M)…˜`S˜9Äéêê «±"k­bc 1@VÛ¶eV¥ìÌ7³‚÷bfk­÷®–ÊLðpc¥4V£”â½÷Þ‡™W ªØh», äª[Àó•ZàÕä ‚ ?‡·ÖB扨Ô,†É9mÒZ—\q»œ3ö¢eQJ5M£”:öC)¥i›Z+3VÛ Ã0 £ÖÊ;o´í‡Qkƒe_;Ž£(”o§”òÞc³J)ðF0ÄÞ»¦iðð¥”B­¥Öʬ¼÷OXCˆ>ƒ‡Çñ –õJµ„ÅU·m›Rêû~ö=?ôÆ·äœÛ¶…2K8ñÅZËåœsIøëÀ6ÀÛ´m»ßï­µsŒ¦M)o%;‹cƒiÑ|ü܃ÁZ›k©TñçµRA±j›&åctÎB•Uåœû¾÷Þcï5D™ï ³ A„‰ÄËbùj­1F"‚Á’ß:ïj­¹d=2ÆPJñÎÁÃÈe±Ö¬T%"&bò­1¤œµÑ1¥ÃñØmºó‹óÝîäj¿ï6›ƒÑêœÓZc¡ð€Å!"ë^æþ;2Ž#ö^ܵ6§‹ ‡’à^0°qQ‰È­”ÒÊZ3? ¾”Æ–Ín¬”Bœs)eš&µÈ\)EÔžˆ*UÜQ)嬅¶0³Ñp5çŒX;¦LD•(ÆS !4Îk­µ1Ø©£u¦ë:lhÉÙZˬ¦1䜬µ¾ñDtØ÷)e‰²!!c¬ÄzÌ\ka"¥®…hŽî×Zsžƒ œ³1Û«‡ï%ÐÆ÷ø¾É‹a’ßZkáM±&ÖZQ¥¶mSŠ)%k|ŠÙ7ô£V¦VZ‹™RF)ûXãÆqš¦`­ë6]­ušÃy£µ©…œ³¥”¶éÆa†a»Û…sÎÛíÖ{?MîëœÛï÷ƘÃဠJ)m6ü0¥tvvvqqe×ZÇä­a"´6ÆX(…¸ÉÒ`@$y† Æ‚ˆÞcâb¯º:ç°\úû_ÿ`8s,(ôK,_°bÃÐcÅçLÁZø% ç\ß÷x1¥T)ÊEXÈÌŒààÑ!Cß#þ2ÆLa‚MñÞÃ(Al©6*Óµ¢¶m% Åà»`hÆÂ¢;çð ‹Ìw¬•°¸ˆÃ+‘qÎz›sÎ9i­ßÀL¬ AŒQ)íœ QOû‚ÚH Ê„¸U×ZsŠb>àäÅ”Ëc©ç8‘4>@Dp6»âA÷ðÿq±•0âXO1…âñYµÖ”")5ë¤ØÍ˜Ò4Mˆsw»2ëZ«5Ú;‡d•jÛvQÎ9*TJå2ÝιZª¼—Vp]Æ(¥SVJic´ÖÎ;­u ±”R‰´Öðç¬`UÛ¶ÖØiš`!„ŒKÅÙ^cM°PJ)m­U-Ř9<¯µ6MB´ÖÂ+ mišv• (±Gb¹ðünãÈFÊIŒ¦¤`¨!´a ´QZkg½„p6&+¥Œ±7¸ZÑ ¶Æ7 –Ý9×MÓŽãÀÌZ©³³›S˜œó¢¿X Ä>P^Xa¥,;XÂIìBÁ7^œÐÚzô}È ˜B6,æµó[%p0pÐSIÑŒ1¬1–!d­UÿÀ÷½òÚ4 ¦öemMp3fÂF¦”`ÿdóp§iš BÞûRбn ‘ªä8€«°’Ía6Âϧ5‘"â0‚wÎhS‰j­Z©a‰i³ÝŒÓ”K99=§ÑX[je¥`ÌSNÃ8Zç*Q©Å:—r"&c +&¦cÊ)—¢´RZkŒ5ιãÚ@çœk-Ƙ‹ósÄä²>ÈíSÊÖÚœR*Å:å¨%Œ"m´ÅÂn´]KL1%c6ÆyŸr.µ*­J-Ä\‰r))ç\2+†…Bº‡pR+<'~)1¶MƒË97M[‚³¶†³ù®¬Õ¼/eÑ ddZëîŽß2s-ÅX;…`¬…/9&×Z Uõ¥(Á8 0%µÖJUC•J©Ú:¥ÍìrKAúB¨¹(¥ˆ¡q)%—Œ>1DXêqSHÖ¸a•ÒÀœsœ%áM)—R°b)%kMÉ…hñüUmC"í‹Ã×µ–ZKkUü±R•*vÇy§‰)Å””Ö´ÑUÑg `pÅg×ÔZSHšu¥yGÄÌ1k‰ª$- "mL%:öûRòéé‰2jšFçìñxÐZ]^]:o½kŒ±%—cˆQi•sŠ)æ’™©Ö2N#+ÖF×ZœwDÕX‡åœGÞ ©µfE¥d<yI˜à/áBM÷}ÜvüR'éÒFn˜™xößЬa ùúõ¯ý1,VÓ4¸Ó‚±Ü#ç 5€‡‘°(=çDÌË3 –ì–¨·Xeñö×ELD¥–R1†ˆ%IăÁ¶Æ”´ÖÓ88ç@"Ž€Âl·[ØA¼°ê`XñIXÞ®ë´ÖZÏ‘ d"„P©Šê.‘&3sÛ´Þ{±¹@ÜǣߗCÈÿ‘qÌ1&)@1Fc,"Ä‚,Wžëƒë‹¾ÁçàÙð=T Ž.±ïûív;Žãü%C¦/k޽@ô¥ZÇÑò1¥”±F Ö"ä×dæ0’!¡€ðyßÔZK­Xah)¥˜Ï2Æ Š›¢CTˆ•RÎ{®Tj±Æ²R¥J«®ëf§­Tß÷Xj­4Y”ìCkSI1±RZ)M•k!¥ô4­LßÛÍnƦiK®Îù½TKr×ë„«dc%ÿª…ÈãÁbŒpüÞ;$ƒˆM¹8îÕ8Û÷=¶@k1+©dQK¨ñ`àÖ`›¦·qU« U,,Þå-<<\‚4øáÕÕÕÍ›7ñT]á6ð (¥¥’EÛù.k% Š„3bÂÍÀéŸÅæâí¸ÀV Í}ß·›-–ZsŒE)²Ö•”Ò0•­mëÇñx÷ÝwŸžÞû¯þøï}ï{úé§s®Î¹ï|ùwxï›Æ©œÓ4ÆÝîôp8„¶Û-3SÇí ˆ‘EððX„ãñØuÝ4M ÅH9*µ†…#˜-b žâºÖ𨠀d?µVÅsuH2¿q·Û­~ãëÿžZ¾àLÄ IäAD}ï{d›}<á…p{È„R*/Xâöãñ8ƒ‘)!5mÛ¨^Û¹F)= #ð]¨«H$”ÐZ]k!ªMãEV`õœ†"ª‚±GÕ/‚pù×jj]k-¥®­¾sNi…=‡€™qS­”¤Ï²z1Æ”ç$Tþ(¹êÛÇ(-Eä#ÐUlª …1ƒÜÌð‡ph’ƒ@fîˆbmt? mוZr)JkbÒFsˆQK®TÇi²Îó‚oš)<9Þßã^óZ)ª•‰ðsØJĶÊhm´R¶UòìÎñ°+Î#¤¨´jÚöØá@Æ9CàÎ9ÏVè’ÁJ¢ÞñCh ŽJØfaŒãr†RŠ—m""xH¯ÔùÆR €- >€IäÇ¢! <Ý9·Ûí@}êû ˆV±ÂÎj­cNÖ9¥m©i˜FçM?ôJ³±V™rv¶»ûž›ÍÖÿÑÿáýó?÷‡ÿêÿÈ%W7nž­Ô‹ÿæß8?¿Â$ÅZ›•± Ы$Aø€Ó4U¥•6U1ǨÎyï™TÉ¥–j´ÁÇÖáV‹$²½ÖLôn³Ù„$Ùn·1F cúu¯ùQ8è¤d.[,Ò¿; ÕR%êb³û¥Ì×¶íÉÉÉÅ奀,‚’Èź†ªµNhÌ ©ÅJØ ÌpkMT“Hg µ ‘Ñœ›/„·m[+ ðÛíÆq„FkD4a‚‘–\$YÃ-°úàIuC -ºBèû^aÖØµ=VÁ›$l–Ë%ï(ÀùÚ±ãIð|‰iFD)RWZ/."¨9¬<ÓµlHyÖ!¥¤fóÔÀa „õoZ­µ®L"cÈdcŒã8âFx}`"vzÓ¡x„‹1<-Ê£00s€¨¡løsÅZŠDpo$€ÂQšóÍ¥’›KA>!Rj¢d•2˜…‡ˆ¨ ¿¦ …j)›Í$Œ“ÓS`£wßsóöí[Úª\"+òÞj­šÖݼyæ<ÿÁÿúÏñÿÛ?þã?²N·]c,?üÜg県1ýð‡y䑯{çÊYÆ8­Hˆ@ÏBˆ‘à „€ úŽZD.a©ë,¸‰žÖ ‰!°VØb ¬öÞß8Mò½ø"Ò?ð†7ãQד¨"% OÅåŸëMm„K˜²ßﯮ®NNO„[]’€îTªséйýáPK-á%ä¬ÖZJÂjh­KÊZ)0tâÁJ>%t¬&Ì ž\Â+¼@VÔDPa÷D0QN"Ê9圻¶½æŒÄˆwiÛ6Ɖ©R!&f"&¦ª˜8†ä¬cªZ)ï¼5V)Ê9ñbLÖäBÖFJ˜¥ RXÏuÉO€L„*ø0´+¹fi # S)¥µmšÖûf»ÝuÝF)m­‘X›+)V¢Š‚•Â÷ú¶Asš¦"-0_ÌÉ7Òš‰Â4â±sÎu&&›Êœr.•œor)PÚÙ1SÉE( =]hÞµhÓƒÎÓB6.Âe$"ý}¯ûqá› »Jp5qÔ0½Âÿ²Jõi‘ä ÖÚi¡`怙Cw(þ‘—°]ºÍVpS8'àbèaœ1¬<§Ù¤˜™ËR(]VX#”i×(rL\ !ê·m‹þ^´\ Ö¶"23§˜PÇ :ƈß.ØÜÜ]%ÉQuΫ¥ò8N˾¦wHÍH¨IB2îýº‡Q[Ù)çKt,(¡@þ‚ @‰%J)ŘbÆÎ93Sß÷ÖX)&À÷h­˜yšæ6Z‘ÈÚ¨¥”˜"ˆÑx «Uã}Û5DlÁìe&f Bv¡žÖRÆqŒ)0RÅRRLp¢J©œBxkmÊ3|VJa¥B›n·: à Ϥz11­•1^ÐOì¬3—’%¿^> ´èêê ¤½ï{6LjÆ^šæ>K¥T÷%½šËµÖzïc ã8VÊ…KÛµ€m*µ0³Ñ3Ïóºt©3Hµ!ƘKf¥BJLŒ‡qÖ-O¢I2³1Îhƒ¹`ëyX5—Š|É1‚ði+¥ÆžI¡«”Š”6Äq³éJÍmë­5Ìôœ‡º8Þ~ô±GßöØ£ùèGÎnœ?;;5F…XÕÍf#è0wîܾ¼¼ÔZ·mB8öh–¨T´6Z/.﫟ÿ‚;;p ó$똀Ԣñ>£tB”K™BX­j­ŒÑÎYV¤4+­|ãÊŒñfJ)ù¦%"­MãÛZy ±iZß4ýÐowkªT*å\Ò]wß<ô—>ú«>ö¶O|üã§»-Sm›¦kÛ““MŠÁh}yq±ÛlÎoßÙ_^=ëj.çwîܹsGˆ‡‡Ã!çcVsŒ“eæO?ñ™W}÷kû~ Ré8ç!Îý$@¾kaæ\Ò0 VÛ5/Al%þê?¤¶#¬LÁXe4 $Aü¨\g ˈÈY·¢‚_Áõ÷}ï_óPW=Ékì¦.ÐrJ)—:Ž#èóm¦‰™Ã¼÷Ú̾QžÌZVwß÷¾ñsŸs­×4ñº°œJ)%a6 D÷e³¢$³Öª%’S+ÓKÖ‰úªž…W…ØjžÌYi H€ÒŠ0ta á¨Æ1û”à“-6æaÂF›7Š“ ˆ²°rAéé‘QV_·ãâëð€®Ô4oß¾}óæM0Ëîܹ¤Iè`Òp/Ý3€ÉµÒèŠ1Ö¥«=ô(\xïû¡wÎ¥˜$Ü\E:ú(…HcLŒ©õ Æ^ób5$rœñàJ‚CWZ‡™ â8ŽÂƒ_™ë¾(„´sò[ÊzÊ‚bU+)­ÇqÕÆ97M#‚Ù”R IH¶Ìˆ®§w¬«¢ ȱ ó4­ˆU)uFi$š¦ÉZraÜn»7Ocë=¿ù ÿøçŸ¹óLÛ4MÛl·k-FȦtÝ‚zqq~rròàƒ>õÔSO>ù¤pwEü0MNN)Å_nP"¸}ûü+_ø¢g=ðÐÐÑ sÑJKrj¬UJ¥œ”R3Þš«¯æY !cŒ6²)Ë”.#lXÁ©_ñÄß  ÓŽ7äOÎÙ““ ½(¿,µ "Ý2ú ßû&)¦ÅI¢™VzM`†@3³÷NÀ‹™Ð¥´À™kþ4øÍMUK{QAÏ‘š_VÄaÉR’Vg)ö ±Æb†ÕS’é«’7IiO?8œ¥t]Ñ!LZ›UO/ƒ“ÂL!Lµï·ÛŒ:S¨˜03}.Ūñ>†¨•vÖ–\–yž1¤ÎÏýØ}ßc^+n‰‘?´cðÖדáRÂ"À¬È^à¯¹Ä Xi$–¦™/iWffæ˜bä¹ÙÚ²ŠÅ”Z»®}õàÿ›ÍF†ëK+Lι–Š™ J)ß4ˆ_P ”)ý·Ì´Œýœù±øêBP¥s6Ö0³VzÍ·–aa¬XS@)SRÌ)Fg]NÙÌt‡9Ž"¥0uƒ•*•*Ug6¬4—šK͹¤J¥Ôì¼-%³fëLLA[m½U¬C §§7ˆŸžž”RÃa³ëšÎÝÿ¬ûίn¿ýŸ>ö+oýåO|êqß8çµ1DjnÝlº0…/|þó—ã08k.ÎÏŸúÌSC?P­Ö˜J7 ƒ1º”¢ÍŒKGÅZœ÷~ÓížúÌç^ö²—]^íS.oöû+£MÊ3¯ÁSËI1#w¡BÒÑ%Ýfp<ë!¢k¯)yºLŽ_¯XwnÈÅèà­ð%"ð„9³¾ÿu?!™WZ‘@|Ÿ‹>+¢Ï€fc)¤¤Á¹Ì¤dT½÷aŠB ˆ) k ‘Z/ÒoHsÚ?% øK)0¥Ô,3.`ve{¤OJ µÖ”0U:/3 ÛÕh$/]ÖÈ•6›í4M)!ÑŒR°c‚xI2íÀ.S褈¥I[’\ÄGø0¬zå±ò`fo6Œ†§Z 2žéþk>Šœ=!S®dî’ø40Ú•R˜'ÆTY©Zkí2úÝZë—ð xï/..Ú®K)éë±e´¦ðˆÇ’RìÜÂ¥®÷7’Ðy4#šÃˆÅW£1Hxp2ª @ VÕ@,ã8M¸‹`…Ò-9uÉYx•Š9yZŒQihÆÚy DŒ9³…¹àñä¾Õ›msó®³\ÒéÉ©1óÓ¦¿ð…/”R¾ñ¿ñç~îç6›Í¿ý·ÿæâöm¥uß÷'''Ƙö«Öª’q¦Z]3žB‡Cq~ùÂ|Å ^ðü««+o]Ó´ˆý½ó `â…bŒŠ”„Ïb­0·nÝF&‚-±ÂU$…Ve$^G A šëiÈ)Ëìò& åô÷¿þÍ3·•F3T*EÛc©U±Î¹äR•6¨m…9º.’—¡üŸ1ö $AÔf®C½žÕŸ—VDk-0¬%sVÂ?ªeFC`G ÒÒ $§t ƒÀ-LµD=<‹U^¾¸hkŒ!ç4M#ÆàJ3ƒé‹¼ Æ^¢b1’Z#E7Æ4Þ{ëPF€˜GñK.µ²b¥µÒ:—<ŒƒV &ó àG ÆÈà"ø¡¦fœ¾Á¤g@ZÀðÀs/÷rbÈ̦G,¦ åèL ºø—Kß÷è”Úî¶ |cŽ}Ú´O$Y¾.§,»R†a¥u.¥íZVêp8LÓTKµÆN㤕2ÚЊ÷)A-¾l>É:ÈJ)å”iÕ 2³7—I~óøÃœŒ5 §S¡ZŠbŽ!ZLÖ¦‚¸} ×­3Æ6ÞCŸS©•RÌŠu)U+C•‰•Ò ¼j‰aÂ0/mhs²yøùÏþüçŸ~÷»ßùØÛý/?øMÛœ8o}ׇ~·ÙÆÇã±ñîö­g†¾ÿîW~×[ßúËoùÉ¿ÿ5_ý×^ñòoõ«¾g†ýû_rVLûãáÞ{ïCöÝu†Væ’;o·ÛM·eæÓL” SãÚ‹‹Ë—¼äo[gû½5–‰­Å¤V•Sª¥b"•b=frpïü—õä ™KBa„  #ÕyiÚ&Ù_9:Ùí/6fniòÞë7¾þÍD¤ô|Nd°x2g\¥F¬–¹ äzÈ<œá4Ž›ÍF)–LíxM3O!l¶™ Qy¼ÏÒ˾é6e5‘±Œ 6?´Ös¸ÀÏ‚Au×Ë!l28R<$ÌÐâHA|STØx;‚ è.CÁ×—¿Š1¦)2ó8M2uÚZ‹³ <ëLcŒZ‚ )uk­QÅLðf¬§° ¥“ŠŠ‘,€G”%±ÂÎγ_LTŽ]™åOGâÃÊZ‹‘Iz±¡MÓŽGü­ÖÚ"?Ms&¾#‰ZÏÜ~¸ð¨ÌJ&pÈ(ú´×¿—B:c0`DJÚeü©:eºì›†AšøNɤÆc¤OÒZ³Â\ÃDDÎûcŒéºÑ7—”³"&ªZ[ðQ§ÉƒQyÂUJÅ4ùÆÜ¼yv×]7žxòS>úÖ·¿ýŸ|ê‰O—|VŒΑ«TP¹R¬¯./¿øÅ/¾øÅ/~ÿûßÿÈ#ôÃñÁï!•B÷Üs×Ë^öòW¼âÇãñø E< cÓ¶hi¼¼¼(¥°š—‰0¬¾ïOOOOOϺvsëÖ­‡Ÿûœç<û9%—c¤Âã81ñLîMI[Œ'éE  !ëGÔa¥«Dzr1÷ cd$4–V™ô€°>{t¼t]—SB3/Ž)‘ä†ÿàú¿sήñ2zu{²“Ìë¸?€Ô[kµÚŒãH Ÿ¸ÛírjÛ磱‚W rð„Ñîz ‡VÞ{v¶Û“R F‚åZpß0 šgtÃ7`¤îˆ(‹ÉGwð×™o6Žë³a„O¼Ì q™«µ„|¡ï{cæ–F93ŒJ` /À$-g„ÌIþ‰p&çlYËL•\ :oCÃ4^]¢Š& ãn³EAV¼ö ;tvv†¼,†ØÊdH´[#ô“¾N1˜¸$¦R<†™€M9±â'ÜÄtãÆù¤5SücŒÆYii ):ç¨T)añ…a°œý§Ö“¹½o¥ *8šPUôm·ÛºÌVvÎ@Nd¶žS0,XÁt…ÒŒî}·2T—â†sÓ0¦“J˜usuuµÝuZëqÆÝaPbÁ5]Œ1O¡išþ8h£¶'»óósø‰®köû½m¬ä}ß·­ßl›7wüàßóž÷|èCª5“â{î¹›ˆ¬Õ8«mJ±ëšÛ·o_žŸ{ë¾÷5¯þÎïüÎoù–oñ^£Œòq))‚sN)ú“?ù³÷¼ç=ÿÛÿþ/÷§7oj­KÍ›Íf{‘óós¥L×uã0u]wçÎÅóË{î¹ï¡g=ô®w½{~L©6vs8ôÖ8¬³÷>S^µÃQø‚’žœœLc@ö#¨L €ûAº'> •‘j ¸>Žk“C ¬žwj»ÝÃdé”’þžïú!ÌÏ¡wÞÉ|ïÜ~¿‡ntmwuuÕ´­1ñ¸táæœu°ÊÒ¤[ˤVGÍ#4·ÛíÕÕßçœSÎ[bŒmÓÊ™”04P³´âp­{ òjœ±œÑ(þ`‡Òƒ4”bP1dx)3cÿÃ> 9Õ;«¤+J"Ë•°Êˆ(¼LÓä›F uAv¨Tbâ…¦ Ð èx i‚ËˆÒØšà.¾KÆáC¥×s\…µ´ž²&H6Å0ÆàlHá`‘Z«Zë0LjÉsûÖÅÅå8N¯ú®WýÎ{~ë{^ýê¾ð¹Öªiš'H¼ :éùÏø•¯üîoù/þħ>õÄO `‚:8 Õ“““bß÷÷ßÿ@Ó4·nÝ*%owÛZkã›ç=ïyÏ}Îóïܹb7M¯Þ{eT]ñZ°€Òx´4­þ¬Z¸…cqÝù»„²ø‚¬Ú€C'P/ªP@9©Ë{¯ÿîߢÍLŸ±ÞΠ˴Ƀ±Æ úc4+^æð}Éà]\—R‚ÊÈø]œò&ÝF`6Cª0/iyÐ*u\GÆ?¨/Åt×}’z©ÉÏ“ÏV3ã³HÞ'úè ÿ'¢RæŽHÌ9’*Ƃ֗RjÛv)ef…ÿ@£×Ú _²”ŠqH9tV`áµXg¥†™»ÍF:EqЊÁJ•ZXÍÃàËröìLùuŽ˜AMVZÃÌÕFÛº3~=ê õ±pAŽe“©ÓÀ"'$5j.¶Zk™XÎàÉ«kµÈœã$‡ºÄ¥Úà½9O!XçJ-F›”’fÅÄŠ•be´f"àh bHÃ0bÍÑ»«”ÞïMÓ–R±Ø¾“1ÖZ—s}˜{›˜@•Ó*1övN½›ÎX›KVK‰3å8 ƒ³¶–¬d'Ð:Ð8憒’ìGÛØRs)9—è¼{ð¡g=õÙ§~éW~ñ÷ßÿ»—WçÛÝÖ·&×T©l·›˜Â8 ݦýÌgžbæËó«ýµ½óï|ó›t»Ù­ú~˜&Për ƒ&¾Z¹ÖúàCÏ~ãßøÕ_ýÕ?þøÓŸ{G¨Êñ¥Îùoú¦ozú³OŸŸŸ#€È%í÷—Sˆ‡ýá[ùV£M©µm7ÓІJn Q[-%?™t ƒI™ça8r< jPð 2iGzÅKØ+,sÖso´Ö°¡KP¯É:?úCÿ9l^JÉØ/=ÅYrbÞi­À6M3c)ÅX φì 猓Hf]]áߘ€<æÕ\ç’ËzÂìºGTR_|áûýa/ÃÆ`ûQÿ‹‰É³™U­¥iüÒ ­ÿ! ÃuV:v=bPf– MTFú‰ß^ø÷É;Œ#°!d‘MÓÕäKˆÚ0aØBøc|æ[Õ/é.‚)¼(žÔOÖ½¢Òô'ºD„ é.FÜ„P( £ËÑ>>X·ùQµÖ•ŠüY‰“ÂIÎ8¨_LAã4 Ãn· iRšnÞuöÐC}ñ™Ï?öØÛÞù®ß¸uë‹Þë¶óÝç¼+fjÛn†ãñ8MÓç>÷ôßþ[/yço¼ãþW?ó/xp‹¢RÊe7ÃÌn¬$MN]m©ÖÚ¯ýÚ¯úÁüá¯üʯøèG?ú䟢y²ÝíN>ò‘0Ï£Pw»]¥zÏ=w§”>þñOüÇßø?û¹O=õtã;£ ˜½ZkÓ5MJ…pqøˆTå©õÔ'Â!M})¤µQJ£å°.Z̸ Ð:áX¾†1ÎöÝš‚ÏrþÇ| G©µ^Müù²vÐyêÅ‚÷‰¡ŽÂ<õiÁΤLÌNà›us p+X·e ×õðhà,ó)çÇ#`rç]J ´€™z¶´7ËÐádaŒŒ<]ŸoB@2.|wŒ»3Ö¥R0˜xnÌ_rf2…ÅCÈ©¿2›E0S—õì||Xk%SjY«Jó1ô åâ­§µ1í¦Ë¥ä”+UâªI9±âœ¯–P¤¨’±›Ñ[“XqåJ\˜‹Òµªº=í´á¼ÿ©§Ÿü¥_þïÞõ›ïøÂŸÖ†3]×cAŽñÞ¥”ž~ê©0M·o=óU/zѯ¿íÑÿòg~æ{ïeÅq,Š+3IŬë¬kóéj “£ÌÀnµVÿG_û5ozÓO|Ý×ÝŸÿùŸß¾}Çw]ç}l¤RI9û®íbLçwÎ_òmß¾i·ÇãCB»VÂ!u%çãáˆ#)e̼TEˆXûH)CJk´A&/¢ê-ÇÜ ¦t=Í®ùôA>OÈHQìƒ~Ýk~ìzÀr`‰Ô}æ6¢…0%|%¢*‡ Á"ÀÓNÓ(ü—å›y$€t,.JË5ͪ΃bŒnýA'ç ÑC²Œ´œD¹¤ ˜—xfñÞÞÏ=‰2Uu9ÝÏÈÂõaMB›’^‡­ù_a1Õ5„$QÏ|€U!²Ê]÷I-§¬O¸[7ú)5§„kôGÚ*elƒàîxi±ZŸRáM°ïX1ÄóyF´tµM#Çÿæ…¼žs&èO­Ba›1/f9çQÚ˜ÈL1qÊ™1R§Š¤, si|Ýd¦0«’®,³wd ȇð.ÀDðO9þ¥ƒL´€ÀŒÏìÖ ¢ëD>ïý4 hŒirÎܸëÆv»yòÉ'}Û¯¼ïýï{â‰Ç™ë}÷ß½Ù¶¥$c,3×Bgg§Ï3¶á¡ÄnÈœä|l9™ -A³ßª×뀺í|XÌ|ÿO B¦4¦â©Ãñè›&—2ôýÙÙÙ4NmÛÂ/Z]ÅoCÍ Ö1T(Ë =¯ &OÍy¬RR!M¦©®§5ªeø–t]h­C ã8ÊIÈbG)“¿Ìǘ„Oc!jmð0óKæœ LXñÍœ4!Ç‘`G‹PXgð¸$¥UÊÙ7¾?ö(fá Ó4ÁK3±³N+嬯Aæ^Áô ô#ÄzA©@9†‘¬ÆzÔ̺”¶Ž¶Ä¹Éáq0ë°ƒhi®µj~µä¿ã8š3fçÇÜÒežäzòÏr, ÜÆbN)—ZÑÚ:ŸC×8ó»3I ty\ãjœ_E4r‘>Ì£Ó™Ö“äj­ÚY)tΰi¥”³5z9ÃÍ(Å?ÏÌÐy^E%&N9lw]ÊI¾qãô¾ûîýЇ?øØ?yôýïï§Ÿü$q=»±½ëÞ»”æaìµ5‡ã`]óÌíÛŸøä'ï¿ïÞô~þ×Þú«/ù·õ‹^¤˜s.)ű¬5Þ»¾?Xç0–Æ ¶ ;…€7ç<Ž“ô¡/~îó®iNOOKÉãtLµì/µÒÕÅá…/øÊg?ôðþêH•«b)%„ à½L+“#W…ôƒ› ÷]Œ—ðÝÖ'°ÔÕך٠ñÚb Wƒº–Ac˜rq]ãzýkß$GKDœŽ·ÌÇaV)%´Jä4¿I)|.²aPÆi*9‡0-ƒ¥pÖ©Â?‰TJ±’*%k=“ž@&jš³"g33ÐpÉÄÍÊÊðrlŒuõTˆ5i—…i???GÕ¶-Ø%°§1&c °ˆ¦” S‡ÎK2"Ç/ ‘Dº¢`\–àßã¨XÎ)¨pA*ÍÕpX„dd 6TÔ–RNv'x»ô0 j ÔU"5Á`vŸÉ©"1ó¨&­ûc •iÄ s¡j¹I0ÝÅ©Šû…S]ˆTóZ9ç³uáÕñx,¹ÔZ1Ë×DÖ†6{9‹—BŒ&ƒ¡¥)2–ºí IDAT ´™p‹ù¢ø¹ÌfÐ Ç”SðÖ3•’Kãð[·n]œß©LÎf]3]]îï¹çþ¿õÈ·Æb*ÆØ’ëyÀ,´€RYzQIÉz2½œ *b†"»4§A¤ Ã`ÍmJ‹ŽƒŽ Ϫÿîß"}^MÛ6Ms8öÖ:TнõÓ×\]^yßZk©Ö¶qS˜|ìv»\K% 1Zk½or.ƺJœbÞn··oŸÏC¯Xå\š¦‡)¥œS.¥–\¬uã8±6è{¢cåj¬±ÎMa*5k£›Ö—Z”Ö)gc-†a¥œ³³n§“³–‰§ðð¢fMוZ}Ó„sÊDœRsU¬¡”]Á¼WËGµUz…YÈ»Ñí½‹10SÓx$òÞ:&Š!è…f"Ü19Y L­uNÙYWKU̇ýÁƒzdN9†ˆ@¬kۡñÍf)­Í½À©±`Õ:眱9%£MÛ´…’µ¦Ö¢ô<ªRI9jmÖ‡æ"b£½æb‡!†h9ôÇÍvCÌq9T+ ;Vª5Ä nO1c:QUÞ7¨¥†1äRRŒÞù’³5sžbL9“6(¨%œ"¬*tfæ¯-ë¢t€èi)Ad8ƒcÂШš1\ÄlguJ©–´Ùl0%yú««Ë›7oÄpØò¦Ûä\Çq)OªTrÍ®1»»Ó›O>ñøó ÿøwïwî\ÞfÅ÷Þw1Ü4M˜ÆœŠÑzµ¿º¸ú¡ÖüþÁöOßþØk_û*g]I¹ä¤˜–Q<ª”SÂr•Z)ÅšI•\1@êš„¡u!VÚT"V&åâw<ŽÃ0^\\žœœ¤”Ã49ï˜Z¸‡ahÛæ‘GþæÞðc͇?ò‘0Ekœ³^)=M‘˜¿íÛ_ÚCÓ6ûã^)ÅF+£­³è D,|yy¹nœ¦Ii5Wvµ2Ö`‚X.¹ëÚi+Umt)™˜´VÄ|P)F—þŠã„Ƙ" ÁÎù˜R©•5kcrÉMÛ ã¨Ö¯í›$áL˜¾T*¥T˜&¥TNu·;A¸QÑ?¼’uà2Ûí¶Ôª˜ç? A+åœÛl¶¥Ô¦i”Ò¹ ùÇtPbêºîر…µV0J–ãgT;¥§7WåÑa ö~š¦¼TͤÎbÜn·‡ÃÁZkÒÖúÄãeûus¿´¢GÈ@ý…E0pUPñòØÈFדª¯GÐä<÷â.%¹Èê0±ŒdGjˆ3s5EØ&¥Ô4NÈìP ½žä_éz¢Wa0ÈØçÜ0Œ2£Jˆœ³"–Ñû3#¤dDòšÒƒÙöÖÚ¼ÂþRNHŸAvAÖ¦µ¶Æä”õN®§&H¯‚dåprÏzf7ÊF+žJ•rärîØ4MZ›”£ô®ÕcNY+E•ËpÍkí½¿ï;Óª °AdP1Lwº£˜4úÏúÁç* Cë\2Ù.¥cŒÖ蜓”"¥TU®SιÔue­ÅM½­Rvww'Lvß—RbLÛíÙD:Q²L¥˜R´ÖŒã ´RFõC_×õÉÉINÙZ+•Ä… –˜ØZòÔ*3m•xv6WMO Ì”””l2°Hž\Ø M ÖbL‹†¢ÕRLC2ì ë Î9 —x*ÙBggg4ØB¤[¢OICŠ »Huš:YFlÞ)MB äò6»H„¼°–c‚¡Á±Tª-¥@‹J]epÆsÎÊLªb²-Õ/°7Ð1d¥¤”¬³¸8箪HNZ+}®*Á…÷ÞÌìtb{à< j^ê.‚„šPÔË£ÛÝ} çÈ8yÌ ´@ÞKV€¶CŒs!•6úÆõ£¦^Y[u]ÕY[©Daeô}Hƒuzog½»ù—>ÿÒ—ýÊ»ÿè_üâ6›Í#ñˆ”R×mW«fww÷èðpº«W¯c8/Ï~ö¼úÕ¯úîïþŸ7ëM¡m{zû4Ð|Èi²Q1‹TÑ5€l4&Ð_ìÉÉéG>òáïùžï~üã·ÙTÃ0Âæ2¦€ïcIk›R–BÅ¥œñ§ÿÀ<ûGž[Šøàÿüñýæ_ø§¿øÈoxÔÙé™ÒöŽ˜hïcÑ äÉii%CˆK€Š Z@· mÂ¥³çCÆ”’ŒÜËî>:˜j=ñ:¼÷ò¹Ïù™ó}#F×çJJ眕”d¼=;“RB1 lta07­« ;ogúÂÄÞ(‘‚4Jã8rqîzPLçÖœ/ –ç`(´ÝÃlz.62ñáÔ•Ö0 ¡áR§t™ãÐÌyûRËa!é®Ð³Þ¹"ÏmHŠx…ûûûK¦þ`ü,»ìKáMb;£)0¹œÛYœsHú ˆný4ß„aÔ8v]gœ¡^éƒ&5Æ‘© …NhuBȨæ¤IpÞ_˜ÝC1ÄÕjUXA;’1b ÒgçHt¸B‰Mk¾¼i>‹>:­?}=I2ÑÒM³š…Èš¡XL¤b<çœYáR*ÎYNLpé\íýäA¹^¯½÷ÃØ§´V«u½»»©Vî/ÿê³/}Ù?ûÝß}Õéödµjn¹åÌ !ÛB¸öÀýív«µ¾|ùò ^ðüW¿úÕO{Ú÷Y[¥”qy8ç0ž&•J²–}dÇ1Æ”õ µÊ¥Œã¨µ³Ö>üá—R2–»®1h£À¹“’£v‰1§”89³¾8uíRd›õæñ{BUÕ/ÿõÿÛhwãÆ‘V6ÄlŒQRw]7S¬ò8ŽuUОd’µX–‰Uþ`½Ây¦C†Z¨ÈÚ¶õÞ›†žñÌàÔ_¢H Ü€P`¼`"è•I ™ˆßSæÅ äßc½ïfSkÓu¤G±8ˆé„z®GÁ™àgÇ¥‡Ž>¥ëSkÁSmÛÖ8 V ÖÛ€À®¨F1 ´Öú8!æh×b‹ŠÄ&$kÞûœÉfMp^„`ZKÆt)iòˆÞ•R²V+eB~ J©®íQ"¦(¥cœÔœ“%sïCJ“Ö‚*¥T8+<[«­ÓÒÈÍw|êßü»ýÅ/~aµª¿á‘·«R,UeÇq²e=9=ÂI»å–[~ìÇžó¼ç=owwB1ûàµÖŠ+2h¦Œ–švÎRí Æs.s•“Rb,3&c¸:ê¦J)ô}ß4M)9¦°ÙiÚ¶ïûvJ!$çêq FÛ‘¸±MNlèÙÑõ£ÏýÅ_r.¿ÿ{Ÿöõ¯ÝWJɉù·§§ÎÕÖZ%„©ªªªr~³/~_2™\ss€ éµ.‰;”õþ—îfÂP$ƒÞœY)“üt¿&±ã1xpµ—6SXeR_€¸2Ús||Œ ;,Ƹjša6› jZìÔÍfƒ6Sá <Ì'ñfk3›(¯˜ÔàpâÃ`­&Ǻ”ÎGSÌ)%1#H^Œy&ŸRÀ•KAŠüiIÞlª§fÝLͱLøp"|8@JN®!“Žå‡”rˆ¿MÓàCK¦øK1œ%p á‹>vÅõ”¦#ºË¤È:ù1އÏ93Y‹F$ÃÔeŽC"Üø'*Ç’ ‘˜@UU ~DÐm÷ªªÄ<·=ùøÒR…>/ˆfa(ˆ®¼, é–…Œà¥”!ŒZÛ, õYŸˆÀÓù‘R+U„hªrÁb‰!ŒJ‰ÍÎÊ5îxÿïÞúê¯Üù…º®®Üt¡ZUb*®ŽŽo´ÛžñiP³»»+%ÙË^ò½ßûTÆØ0¤˜‰)%hR±lèP=¸ô]W±XCS¾ö÷÷Îζ` R= ~²†ÈL ž“˜˜$‰]½ztíêõ/|î¯Ö«ÌèÜuƒ’&¤´Ù¬«ªÁFÂVïºÎû¡ª*¶à“›ç’Ð ñEh«-73e…K <Ì¥+}ÎY EPÚo}ߣ¦5œüág>Ÿ¤xšJ¤µVŒ-eJ±r–±ÂXñ>(­cÌÃ8TN%øXrvÖú00^0þ½WZ Î/)Çaì3Ëœ3©DÝT¬p¸u†F?]ÔÖZ¨&x?’á¢Ók會©0Ù=0.¥ýèƒÏ%Ãö9Í [œ^ 0#GgzY Ä“ZRh!: ¨Aõ±`M‹RFéhÉwmKù¡%°úÄLŒv)tGâD]")½`0ÈRN„`PR!½Â}C™#šîß…—e­„©h¡iVD!Ž UdøvòIÆöàœÃ‡:Å|¯1† îC@^’à<§Œ #HšSo"OI‰PŸñ8'€èCüû¤„Žqæ‚•’aV¢×F¥•’)E©DLAJcRJ«¹qpYŒIJ‘2J*…þB.EHéã`),Ç8^º|°³¿ùÀßÿâÿ_ïþ£wÄ4>ìa7oö6ÖÙ³ölô£5fúƒÂZm­±Öt]{çwþ—Ûn{×»ÿ¨ª›'>ñ[á·8Q\ç—¾d/™á$Š0MãB€[Y8+œ1Áç}ßÁî’1¶¿·>::­ª*% uÙjµ !v]Ï ¯ªUŒE+3¥øõN?õÉÏ}þó_<>>ÝÛìs®êj|б!­¸z]0!¹L%µm+[­šÙr˜I¡ ™%„ !J!±˜!Äqô0"’RyüèÅ$9ÇùQþoÝÎ{¦ JÁ8º}a¼du¨ß»®ƒ9ˆ|Áó_Dà˜ÍlmÈ9ûaµZ }?c MÎ¥ä"¤X2ŸIQHJ‡´q­1¨ `:ÏMV&%0­u\ÈÀýðÚ^Zk¥$t~¥”0tœ,CÄgâ?¤_NâX;ô³DÚð´f¹5X€6?I¸…à¼t!Ä‘¦@LƒÔãHXû’|¤@!¶¿4¯]@ó’â@bUx²ªhÊÉ ¨¤ŒŒI(ÁÄ„1ÆívK?Å9c"9|…ibÒ‘Ó*‘“Øì…©µ†üž˜ò C•ʹ œ*á~ifD¯AÙ7Ñn¼÷J‰cL犯ԗ]š[ '*¥Œ ~µÛ|¡J‚Ð?ŽcŒÞ:âxå¦K—.¼ïÏÞ÷’—¼øío«¶êÊM—6›uÈ!¥JnÛ-¬ªãè9çÎY)åv»½ï¾ûNOO×ëõ0ôw}ùËo}ûÛßóž÷<îq“RH©ø\Ë/{:Ôߤ$‹ŽqLyaÓ‰?3\™)%¨ËmÏúÍfszzZUõ0Œñ’ýz½[Š>[«Sb•CÏ>õÉÏ}᯾ÜwÃÞÞ…¦YçÀ´vBH£])Œ6 cUUØc©$­uU90™¥”}79ËcW€‹ñŠ$à1È®ªÊ½Ì°`Ï“ÀÁMJ8gÐq¨4&?„#¢MÓÔRJù£ÏþéóüYJ@@©áWR¦æîœ2c4‘sÎ)Ʀl¢©W!D)Ì„¬@ÄçM8ë Ÿ÷¾F·Ô3&œs Öb]oà!hmhÀ™bšÔœ4¿èÁS±FBæTêRÐ9·ŸÊ™´Hµ°×C±2F§”‰EŒ_]0SÊÎUM=©h¡WÚ¥¹Žb»Ý’R+‰rÐh o·m[ÀêðØø–¦ibJh9˜ ñ3J⪪:;;“B¢‹œs¶•E–yyH©ˆÕãuÐ$‰-n…ÂÓã9G Üœ(?Gï5@VkŒA6:OÄ­ˆï5As½'j7õν÷«ÕŠ&ÖZøÅ£IèrvââKþ ]BÞclÎ õè‡fÕŒ~ä‚+«¥œ3Ì»µVZ«ªÖ{v›uõ™ÏÞñK¿ü ï~÷;sŽ.íïíïxïÛ¡…[=㪜³ÕÚÿ''Çׯ_ÇÝæ½7Z£ ¿ÿþûßð†×Ýqǧ­µü㔑ýè¥V!FƒÒ:•,¤”ZåR¸\ ü žJÆY›Ê"è—rÁ‡ç¦ƒÑ†sÙ÷CÓ¬8Œ‰aðÖÖRê’EðI)­$»víôöÛïøÂ_}¹ëFkkgWÎÖ§'[ž¹’3cBtÂ$×"¾il!çj´Œ(à¢ë²âO ®vÎ'é\Ø7…o•Gd–s,%Oà!gÿ=t-ä,‚4¡´Ú¶“?üÌçŸ Ö @`Mk$mÆ>{ c ™JÞ|ÐF"ƒkÍÓ÷]Ó4ø}âtNóG*$gšÈ”#ÎDÅ û0„o6F£ƒ#%ÖWN~ˆméHì¢Â"Q"cü.“ÙrX:,/:êĽY)Iiª÷aù•K‡5’mé»?‹b iZ)ñ—VÀtI WH¹N;2ÈïâÉcŒF›ÙZfÀ]7Ñ?åä✒CN›psË\°z¸]HK»ü~ì¿ÊU´ÿ¨²BTuEÔåÜg[ç0wèYŸ±ØôHQ©R€ùµ¦”LHjÑc.;Cá½sU±®k(ãw/%…8/9'ç,à‹›f³·ùä§nÿþÍ+^÷ºÿ|ãÆ{ØMëõª°Òu[&yÎ*ãeÎÜEwõ¯»®=<<„%Y„¨à: ÃÅ‹>ó™ÏüÁë_ÿû¯}­1î‰O|"¶b]Ûëב{MŠdí&9…(3¦~T=‘ø’”SÇg»íŒ®šÆå,üK–{»ê«_½ñ|ô¾{¯o·s³MŠ¥‰Ê(#„ŒÓÙI@AsÎÑœs&0™ø˜RJ?žÃ/¨†¥Œ{)â6åSZ‘{\¨†.qXÔžƒâeâ!Ä¥gKÉmÛ‚("Ÿý¬‚7W SÞ¢Z 5ÞÙJB_4F´HJ)©$!¹à\ˆ CQRp#ø *viŒeB£†QhÔZUuMS† zrâaŠs<(]SÔu]]W4&CŽ3Ÿa‰ˆ®f/Rªª *!¥d¹øqäŒÃ`rÉ9\p¶Ií`ÁweKðˆ1šDõð[h=‰/‡€EŒ1Á§j!žLluNmá „-d+ðÎÁ$=Œ©µ¬$Ù™™°IÅï,Asî X8IwØBhehöŠ$tºKŒ† ãR6@çCîƒØ<œsÁXÊYRÄå1mÇÂ1qH.æÄ…èÚ–À´¤ =³š"Åh…às*R(%µ1VpcòcÀ_ZãXáÃ0Ƥ€ÖEÊ%+%ÛöÌZ£µjÖÍèkM.1Æ`©Vnwçο¾ó¥/ý•7¾ñu÷]½÷⥠—._ì‡ît{Äxf¬ŒC/…`è.qålÕnÛûî»'‚s¾^¯sþn6@íö÷÷q±1Æ×›ûï¿úîw¿û¶Ûn»páÂcó˜Røz½Â¸c¶€Ÿ4H€=,!¡Ý#‘ qÆ•Ò}?8W3ÆÇ1¤”«Ê ®Ka'']ɲªô=÷\ûøÇ?÷¥/ÞUW+VT]­êj¥µ.’C”RôlÏ%¯ƒ­lU»˜Rˆ‘ àòR),çijƃ})îD„.¡©©<ý_š'R&AL€ೈ7Ǹ87Å)ÌÃø¤ ct3ýX1 ãÒXl†¦©IJ ‘ À lw<Rˆ>ø¹ ýLȱ9Kqž«’βâçÚ¤ˆDä´ Þ%™D-cUæKdJiI^R×u“C܈þðÞ³9³>Žtññ—”ÅÃÇsIX€0xvαÂifJZKS[šùN~…Jáó â`ÑÆx¸ÃÎÌ2´ü)áÍeA[UŠs‡p Æ ʾtW¤á%ž€h¥0™ü‡Éêçß{¯µá¼„™*âØ}Êñ²»»ÙÛÛY­šÏ|öŽ—¿ü×þÓzÍÉéÑîþfµ®c ¹$¥$ç”,¥džK¾jÖÇÇG÷ÞûõÃÃ#£¤”"çTJÞ… n¾ùæRÊÎfÈt×uF hXJé¶Ûn{Ë[ÞRUÕ-·Ü"„hj; ž¦Û1óÞ—S…áÔ9ëô®Çq !UUU2>Á`³1¥ˆ|äS_ø«/åÌ/^¼,…± ·Åû@œ>°ƒKN!D¥Äć竵°ž.£µbLŒ£§L‡öÉÒ!é\rE†’K´:IP/ˆdüæF&]xGЖFod½^眕’]×Éù¡*©J.%.DŒI*…§J)Å«”Ô1¦¾¤„¼o¦¶dÆýNÅOð݉IkbB%sNãðÉÖÚ’9,:BB()U™MƒX¸“Ó´ÉsZ+ic É* âeŒÁûòœ¿\h*Ù¸@'ˆÀè@óÓ‚ÒÒq!)´Ìø©Þ^hhˆdC–j°H»´’”s-abËY>ÁDÁ.¤n·™ÿCUKHbÚ+Þ{!uÅ¢+G0çÜRa*³É&ƒÓDb dAF×{×u£D`NÐ6W¦Î9%XñÃ8r!”VxdƒŠ–™âôlK\eW9ï=l;—70±üé­-‰îH½áçBÔÚ@h”¤_•—ž§”SÊ9­TL©n\?tB0ceÓTûû»Íªºý“}ùoüúÞðÚíö´Y9¥„uFY›rò!°’fJ9ÄD·ÝÞß½×î»·®«ºªÆ±—R@éðòåˈ‰xSÇGGggg7®][ïì¬×ëqû¾Ô£Eùõv»}ãÞðú7¼a½^ï\888 ÎøUsÎB'.Œ3έ±Ùßkbä)•ÕJ—ÂÚ6}èCŸøô§>çÇtáÂEÎå8Žœ Æ 2PJ†¡Ç€ÕhÅ%+¬(£¤–r¢ òÞ!Å\Ê0Ž!F©TÊ¥† ö±€\,=Æ© L@1+åQ c‹ÿH¿›´$!¸˜RäœÍ€©ÄÁ­@R飫ª’?üÌàÖE^C΃SoƒÆçÖ&/,A¶ ŒNÆëŒ³Ž–0cŒsYJ~ÐZÙ¿^JQRøè²ÆVJ`ÌûÈk¨ ŠwQ€îx ôÎZâ”D¾”¢ç. Ò–”’±%!¾YUæôgüôˆ©¼¢ŠB)MÍQº¾RJ(ñÉKEª¥–•ôHl1£ÁwWÔ‡”mM6 ³ŒZd 8÷8ç\r*ý–βJj¼<2#8ð–Î9X®MñÏTÍ”â¬&¨ÍUÌ·‡¸XÆ”Ó !h£cŒ}×£F J‡©ŸEðzB-ÿ™Ö ÜFdÙ4’2Äqôƒ”ÜZ£”ØÛßmVÕŸýÙÿûk¿öÏßôæ7n·§œsmDÓÔÖYíìv»5Æ*%ýèÇqpÎB«òk_û¦–Ö9ÆXÉ DQ ÏNOOÑ*Å•ƒ'ÙÙÝ¥ÞߥK—NOOÉ;ÆØ¬VmÛ¾ãïøƒ?øƒ£££G>ò‘7]¹ˆ$4¥p/€ KÔ%G)æBN,c²VŸœôïûÓ|ö³ÉŠ88¸¸³³Ó÷£1F+Û4 ”¼fác@ÀÊ)Žã˜R$-ÿ ‚°hVàZšà,Ú,±Ö4û£'$-ɉљÎÞHw”°²Ô£¢r‰³Q€A«7+¸mÛ6MÓ¶mUWŒ1ùCÏxsÕ8zk]Ê‘Š‚qôÎ95'Où’/Rq)¸RRiÅxÉ ì9c´Îzï•Ô}×C¡ÂHMf>˜BæP•‚ÛÙÌh®ƒ=„Ñç¦l"à,y\]yïµ1Ã8"t¢Ü˜ó\œzri´ÄhêR EqÏãýHlªFI„ŸDS¡¢%¤ÞC}êvyF"#ATH§MwƾOßXæ¦Â1†(Ú¢ˆ 9‘ uÜ^µÖÊàn§¡Þ´ 3ÉQk] 1”\@É¢!¦œ©ã1%h ”ù ÷6bιY­Ï‰`;iMªª ž‚IJ”XÎ1îÑ4$CÓ4x~Šq·ïiN IDATS ¼ïêºbœ¥/]ºà*{ûÇ>ö²_}é[ßzÛ0tuS×ÛlšÕªrµ•J†X„UU·më*·ÙÝ }×]wœ¥/ìïWΦ‚µ>D!%~îz½>88@ E~Ô÷ýö¬åŒo6;C?øÑº¾#c;†NNNþüxÕ«_}õÚßú­ßº³³;%4øCN%-QKȵ˜Özo×å,•’þóâãŸÜÛ;ØÝÙç\‘žbQò|>žR„à„ƒs–ñ"¥XÕ5&œ3&¹¢{!EÊ‘±CB·‘qÞõ½’*ø@9þ²¤DWÚ„Žœ„¿ië. V—lˆ¦n1˜ìAè1Á9ä—üÁ¿ÿ°Ð1FÐYa ò¸òl¹”cðAÃy’³"¾c)ÆùéÉ™PSöÓÓëlÊyog‡³Ê ˜Oi­AmA‚Sæ®ÇÂ!¹þ]ŒÙûÏ’ÃEÉ¥ª*©58¬1À`Ó·m‹¼€F-ÇÇÇÚ®cÝÉt$P¤¹ &š”PÂ71(9“æ³¢6Z ™Òdd4_½á'aÿ‡À瀥8'qŽ@¿œ@Ðx™œ“¥¬ «7µBù¬EatŠ9¥èl ©²££#|Î8LC7 "5„qºÖëõÉÉ îC‹eQŠˆ>äc1%¥UL1§|s‰ S£«êããã •2Mz¥¤ùw^t¢[cJY–Òd aðÁ{ %-ÆJI¥dL#Y*¶³·9¸°÷_ÿìOõŸÿê»þø1ÇÍκY5…¥zUqVNÎNKÉÞBªãã“”‚”òÒ¥‹W¯Ýÿ•/YJù°‡ÝŒžÜÙÙÉ0ŒRJWW}ß ©vwwö°‡)¥®^½ °Ò0 )æÕj»áôô”¬jµÑ KãDÆÒzµZ}àýï¿õ5¯¹víÚ7~ã7ðóÌŠÚžR ­„5ZÝýÕ¯—bßÿgúüg¿8†påâÆUŒ™s –g‚ˆ÷Àú€cpvvZ×z¤œ±©=Í&%t•RRh°µJ.‚‹q7›M)‰Åæ:©Q.j\*Zëq¨<Ä®¦l‹FÌ“XÞ”PŸ[íÂç x¦±^¹‹7]0µþðíþÒñâwþÑ;mmëÆ«…Um‡a¨Võv{ÚlÖ>„Ñû~h÷ö6ëMsï}÷|õ®;¯\¹²Ùl‚9—Ó³­ÒʹƇÿóýƒ]ÆÊ×¾vÚ Þ{ ð”¶!¦Ñ©Ôz³VZ3^6;ÈC )ûa8>9É9Wum­]¯V'''/]êûþ#úЫÿø뮻ùÈoøïñðœ3+lè­ŒV¶±ŠeÖž¦7¼îMCç£Ï{•[…1 .—1d¥tÉ 7 ¶÷R¿®Æ™à*¥Ì +©0. &åÇPÕMqÆ\¼jbŒ¾šº™ÝÏDC6c™•”YˆI+•>@#Ƥ„h»Vp¡¬UÚäR”6£aôκàƒàÂUWìjµêÛNp!>@ýÅh[ráJ ©BJ1å’SÎYb–“sð£|úÓž:¢¬"„qGÆJÎÉXG"–©0¡DåŠÂ7`YK9É…‘Ì?ÄLîS¡wž…43 ¶\‚˜—>­÷þÊ•+Èâ}C%³ÓÓÓa÷öö0nÂ8õàà`oog*صÆXöêիLJ‡BʦiªªÚÝݽù曩psÎUu]JùäÇ>öû¯{íGo¿ý–[nyìc­uå´R‚ßu×µ|ø_þò]W.?ìÒÅËÑç”ÊÐJi΄³UžÛ¹Ý9] !Jf  cЂÁL_áNÍÙZ‡Ü¼ª*ÅEJ©¤ÌJaœ1–¥Òk(eæi ‘ãyh´R"O§<€1#^¤èpMòv!4M3 ½”Ò:aKï}šÅNrÎZJt±½÷Œek­|áOþ¥T.;Ç^aŒã\(­¥”Hm„ÎÙà=¨äd€ : ËØƒ¨èw,/ü#꺑RâþásOã*jãs€Ö±dž€”J©vÛV®µ6Öhz )iUš¦ÁдÌrÄ%¤Ç›lì "-RŠ”“"ÆÀ9R(%SN\pcÍ$·(8ÎY磘²“÷*2Mr'DôÄgÍÞÎ.+¥¤ØÔU]UÇGGÁRˆ’ó×îßÛÙ]Õâί|åÎ/|ÁUÕÍ7Ý”cêºg¿*úÝÝ]˜›l·[k­ãÙÙÙåKWœsUU¯V«¯ý!ø•+—›¦‚£[ ´³sî¾ûîgŒkcÑ0…ÒÉÑÑÑöìL±Ù¬JÉGG‡ÎÙõf}zºýÒ—¾üú×ýÁ]_þêcóÍã>üáOÞù•¿nšàj½Þ99:±¶ÚÙÙ-…AÇ5—<ô=glwg'§TröãÝÚ¥…@¸i ßŸRJ1¦¥l–‚À6šqæœÇ&Jic °Ód*Dc°5¥”u®ïûnÒ€Îø´ÃÃCLü±{­µwlšZbêû§⥗ˆÉ‘ ¥”Rä3Ÿþ9g.9à. !`!9zcœG­,çTrø›B8IŒ3Æ _·¤žSƒéÃ0Ó"NF[™ˆfËOÀ¥ H. ¿ÑÆ@}b{”LímÜx«f¥µó esšµ‰ÉÝ&h)&:!ÕŒ4ï L å}3µ0P7è#KR>É¡a˜ ý)šÖQ S0Jš( É—´dˆd,aÄËÁ%¦?9\B|öR>‡•BNH¡M)%­$µá‘‡A6Ô”í.͵H,‰žè`Ä֜ѿFH^2GKEk‹†ÈÜ ÷­ëºB¬›ÕjµÂj Ãàý ¥lšÊUfºýý½Ý½Í;Þñ¶_þgÿçG?úç1Ç£uN)¥µ$ô¼Ò$ôÞ|Ó7}SÓ4wÞyç—¾ô%ïýÃñༀ¥ÆÐ@*ºkb–[È~ô£¥TŒ±¶íÚ¶}ä# ª&iûàç×uƒÙB]×HÙH†®^Ûžž\¾ríÎ…à:E±ª7uµ::ÜJ©kÆ!¬V›î]×5M3]¨œ…QRÓ4ÔÆ]Bj(Û:;;;']ÌõAUUuÝàŸ´Ö‚s|šµnÎYݬJ)3&ë\ HMD¢RJÉ)Cœ¶z¥ƒs{<´Òè“B:ç&G.cPÐcó†1ÆH~î)Á9ÇQþÀÿúcBpm Ðb1FðÞ&ÆæÔV`Ì圴RpN&'•'(ÁèpNÝè…ýTÊ玾Ö:à›RJvƠžû¸ë:²&\¢:’í’*»ªšìàû¾ßÝÝ…ýÙÙYŒÃQ­©³KQ L”ìPý[bR¸Ÿô¹8Q‘—* ÿ?Î3ªˆˆç²SŒ•RV«•=M$ K®3ÔÎÄ"@»bvÇ8 ­–²-„âÁÿƒ°¿RŠ †)ŠTJIÙ(¬Ì´ã‚qÁ +¤C$ý¶’2Èúœ1\ãy–*¤°;Ã}Ýd]³ˆÅS{5$ïãÄþ÷1¥l´‰!*¥ƒZI)„Òz}ß £1ZK!Db‰‰rpq/$ÿž÷¾ûÿø'/úÔ§?éjÃE®j«´:8Ø×Z Îw6«R2Ò‡½ÝMßõñ™Ï|öŽO‡wwwvwvú¾?==%Ï:¤®Hü±·K)W®\ÙßßWJí樂Åpížž]½zU~xxšÚÉɉƒµ&Åì}Øl6Œ±7nŒ£oš•är{¶M1•Â.]º|ñòå¦YŸ Uøžüw^ù¯ÿíóâ…•[•Âm¼O;;û9±íÙvw³+… !Â×Ëhc¬999Á-eÏ[ RR0 s!DžOAÎyFLÒ¡X‹¢ë:ë,TçñûVU•óÄF✫éÒbBˆ’3ãÜ{ïª ù>Æ|ÑŸsoÑŽ˜z“‘uRJ[cJ.0ŽRÉÏ(R 1VÈ0o{ó'¤”…3J%HÝ3†€~ç¼îý°nj)'Ì÷’Q1!ÒM4½¹$”Rú Ã`mE˜x.ÏíE'PèÜþ ³ *¡1J# i£-ÚI)%©Îí$SX¡ªìñññz½Þn·ÆU„ë!»4ô˜p'ÄES óÔQ¥”"ÓVúôïçÔ#>D<IïiBáÃå… 2ƒAeG°K´ uÄ KËU"Ý|QÀ( ”Ê Â¦”€©É%NÐs)K楬?矨¢œ8O!N¦Š¥¤ a;ý¯’Kfx‹ÈSðH ô3&ªª ~zõ3ÿÉ`ì •¤DÛ9S8Ç µÂòC£®^×Öé×½î?¿õm· CW¯jkuL~÷èèH09ŽAý9H¶=æ1†î+_ùÊÐ÷uÓ4«y1Þ;c8cX:\“p~½téJããc4é¼÷hN !ÎÎÎvw÷´Ö.âCú¡EJÎ97ÚÍ©¨˜>9Nn•.\†áÆ1Æõw}×ß{îsŸ÷„ÇÿÍ{¿~µë­ì0xÆ„RŠBrÎI.NNŽš¦ÁÂ1É0_FKäðððàà€jœ’K¢—[f¾†`°2©ëš¥Œ(f­íú¶i.å0 ~¢Íêœ äc–R¦¹J©vèÑ›ƒhõÞf¦º®«Úá99ç9&8cb“÷}/•N) ­H—MMäœRRBj­åýàó¡æ>)ðÎÆë 6çªù2!„ÑJ©i”ŽSøß$0'häŒ;‡U–ˆèdŒœr"ëvb½È Œ¨ÂöŸq[#y@¹à@%…A)“ÚB¹ å†ä†]‹¦xÙBY Rw= ½1z‚áå$Ç,¥˜óÄJ'—Sj´OFj!,µè†aX¯V”ÀS€¦ö?þ‰¾DPILôÔ™…N’ÇP qÎ9/)³Â”¥äœ&;¥Ìk%g<å’R 9Θà\Šœ™ÏÕø¥ׄi2‹E^’è¦ _Á˜È©¬Wë”JÎ%çbŒbB™ Ã&Ç@Ɔ¾Y¹q쇡¯»wq×Õö]ï~Ç/ýÒ/|îóŸ]o¥%cYi‘JI%ݸ~½®jʆ³³ã'þo{éK^üw¿ë)ïûÓ?ùüç>—s~øÃ¶jê¾ëbFk!e]×|NØñL$Úqpp€ø…H„{‹¿³³svv&¥ÜßßG‰}Ï=÷„|„à»»»$f 4´ÔË0ŒívË93ÕŒ{à'GÇέžñÏøÍßø­g>ãY,‹«÷ßÜ”"†!cKfœñº^áÚë‡NH©9kO?ØÊ:cÖ¬0£uNÙÞY»·»›àI¬ä’b*9+)‘‘ý>̦âD'ÜàýÂÅVi­»~à\`Y´6„œŽp{%.ù0ŒÚ2¯ëzœ¨!çî en5®×kÔòhYFº’Ø!€§G]iAö®H£ŒQ}ß—Â¥”,s ìÆ1ŒcPÒ<ÿù?ùÌg>ëÑ|ô=_»÷ääĹ*ø2 Þ¹òóÈ!Ú¶mš5c¹ªª¶ÛÂWÂØ›Í»nqš€““ 2wcLžy#Zë“Yü Ó×u- Ö!ÄêºÞv=k]×­VäÎÞ{-Y­uð#—"§’ù¤J„ëþÎ.ÊÉ”Òfg}rr‚ûØ#ÕR¡ŒN)1ÁÛ¶…@æL)¥¥ V¯Dóý­x{JIê)4PÆÈ™!¸¦FL¡1yIÉ9ƒ[¨m[¢ÂLú“¹,ÆŸeǦªÉ“¹zRüp®& qfE,ü8±3fă¨ˆ‰“VJHÈ­q$±0Œýz½†ºÀT7dŽ‘h}\*2ƒD†Ly ç¼ëºÕjµ”LdìAìb<6ñd½;ŸÞé5x3;,V†v¹4Cº”b”Æ)¤ qRkšæ¾ûîÓZa@”. ´]qxÄ ÷Çc4«ŠÚó€nvöú¾Ÿšt1á¶1ŽcÏ/âœ, 3Æ ]ß4 „­¡fµžH38óÁ“~.)ÖcO² dXÁgcœ€/N~Œ#³™œD±ú¾¿|ù@;é“Ó›Þô®w½k{kmጱb­UJ€£íº.ÆÈr|ò“þæÿþþáSžò?Bì“ÄË”¥°|ä#¿ó;¿óÖ·¾µmÛÝÝÝRJµj°nØ]T¢ )7› ˜ÌÄÖœ¤¯fì1¶à "óêºnooïèè·ìè{«Uˆ£5ê»’ïÇÍÞÁýèó~è™Ï~Ô7<ê¯ÿú«gg­Vð„2SƒJùÎ9?†˜‚µ–ó‚iÀé驵–1û­N÷®sÀ¢P v'Êÿ¶ïq¢»íûªmÛU³ÆÆÛn·¦r˜þ_»vmUWBˆàSuN<À: ½œ[NRðÂYÉ,±©+ÈÞmI&$—tŽtÉ%¥¤¥.¥^ÀZ¡©Úà=ý.°bÈ©h­ù[ÿðöR çbjFjï½Ð ÍfʰXޤgBü8„¤RŠ`x'!q\»®Óv"ßzï9—dø.µ"(”a0׆œ 7ÒeÇÍ#„>âÜbä,fé© § ý¦H,Fj°€Ø\¯×4ï›Þh×Y«—J@„YÚ^Q“2` L šGäÀŽ|6ç¬åyc ÷9T5Р-‹›´‡ð™PY#üÉ’ÞƒR*å‰óŒURJ>ây&ö‰õYJIJ©ÁLŠ)qSÙY5;w嘄nÎ)2c©L¬z­"៙ æèèèÊ•+øºnÐÊÑMÀ6m’’WU5Œ])E™BÜÝß»x°õ«·½ýÍo{Ûmx;]×UµUÚr^ÀæÃy;:=Ùn·ÏzÖ³~é~ñ–‡_J!I)ï¾ûîÍfsp°Û÷Ð,Ì¢Y+ïºëk¯zÕ«^óš×\¿~=s¶Z­Pì Ãppp€Óe¬½ûî»A;…GUU§§§H®W«c ˆvаNOOwvvNOOQþ„RÊÎÙ£Ãk—.]ºvÿ5©u)|o÷ÂÏýÜÏÿÀÓž¡¤ëûñäðÔQk;Ž!§²···mÏ ˆm€GW,b4Åm{fŒaY¢a„±8ñ@1ôÄÝO­1' "ºsRJ?31ú¾/SSÅ…žRû#/YSƒ3‹×7åtã@ºoRp&x»í„V(''ÉFƉXÂx!eÁxŒ/KjImn´Æù&fŒ•‰ÙÂBü­x;Ï*¥äLý„O‘jˆŸ%"ñ k.UbÅs΂û΀FñÞ‡0M"bŒROy i¨/m5Iå’ºl^èŒÂ_Ýq© YàŠ¶Ú ÃPU´ï‚«z`ªñ±DB„n7â&´$ÕD®$}EmH­%B…0‚w‘êžpr–gœÆHñvvvÐE’µt6Æp)H°w#Iøô²R¢¬$!˜÷Ñ9·mÛõzݶ½Rª”sŸË"Š¥TH“Ó*R‰Ë“Áý8Ž,Ÿ+MY@N©dâ—‘¨‚Xç2 4*eâsf…3c71úÓ³ãÕj£ßÛÛcX×õÃ_ÿ†wüÑÛ¶Û“ƒ‹ûHW«U?´];Éš¦Ùn·_¿ç>kí÷}ß÷ýìÏþìßú[ObŒåTRq†'빺ÆÛ„¥&>Ê9yõêá[Þò–—¿ü×xàDùf³Fo˜äÿCŒÖÚ££# ~ ÿc¬*‡E躿/„7´6HÖÆq\­6ãØ­bô}?îïüüÏÿãç<ûÇ·Û¶ÝŽc7ÆXRäŒ ­Œ”ÚûØ÷må4cS:ÐR$_‚¹| H ´Ö)qü•hgøÀ†ˆ7"¥ôsU+„(ó¬ß{o´ÝÎ ×i»EšB(1I)‹@Ÿ÷\sqºõÇ¡ªªaì‘1eV—L "Š0ÆŒ<÷Ë‘JP«GAŒO‡ˆ ‘K‚'£snÛu¸Â‡a¨m…ÈPU•|ö³^À9iJ:”R ÍLº¨9“"+™Îr :ó0ËDyŒs6Ú ‘¶ÖÂài¶Î4õOd ‰O¡€%Æ=]‚²ÙlçN RPŠ4§&ˆ©¦žzÊ羕Kw/BB’[ÁÓѨf1u"K?Dscæ‹e"'“y+,QûÓP/\‰HÊp7Ð`‘æ€(sÉK·ÌHLJ¥äZ HKãÐ⑵Ö!,Gi¶´dÚ9¦ÇÁ œðzçMðwÁaÛE‹@Ê|X(ÄS¼qs.a MSû0öC§”È9öCÛ4çÅT¶n\þÍÿåM/yÙ‹?ú±Ô«jo'Ä1åXÕ.DッëêêÕ«|ÿ÷ßïüû÷“ÏÿɇßrSÉ,'6´mˆ~ggõmlBñº®G6á½—ÒcþößþöŸû¹ø˜Ç<æèèèî»ïƒ_­VÆc¹BŒã8^¼x‘Lzº®§û /Ü+Ϲp.ÇÑïlö…)–¾ëw6{/zÑ?ýÍßxÅãû-÷Þ{õô¤õ>±ÌcÈZ;ÎÄvÛáþF©µbnýˆö%!œÁ)…ƒÔ¶-uV«¦´÷(Ÿ`À!Ð$DŠE‡HLrû!„fµÂ (¥Øä*$3‰|î+žž¦0BŠS™íÝ&“ÁÂp7—R ?9% |bžžOŠJ†p>ç+¿Z­š¦É1¸R>÷GFQXÑZ 1™³ãÜrÎÇàÉjÍÎ ƒ¨;€_`šãÎ#0D÷R ›LŠ4ˆH…Æq Ÿb„\/j?ÄG4¿PZ“ÍìÔ±†RJ]Õ4ƒç3lJL™°Wln„Ú›„M ¦F‘HÏÿQß _ƒ_Í9·´›Çð>ý8yOP÷SpÒøÏq9<áE–fËØOŒŸc°\„ð¤¾é¥KN~ì­s!øªªSJñQö§_!„¢°ÂSRÆëª‡AÍ4ª<¥UÊ)Ä(¤”J €0ÄbÅkB¼Xþs‡õf]×.¥àÃ`kSx¾tåB?t¯}ýï½ü7~ýöÝîêêÊ•ËÎÙ¦Yå”׫ÍÙéÓ¨£×Ç¡Êw~Ç+þÕ¿úÙŸù™‹B²~ÛÕ•f|ÿÎZÝu=„–BGGG›Í¦iÜ0xcL× Œ•Ç>ö±?ñ?þíßþß_¾xéc·ßÞöd´¢Æ±”">=;CW”ꌬµZ›RJIJ©•íûñìäTiû‹¿ð˯|å¿}·<ékw}cR C´åÝU IDAT\µmÏw®šC½!ä³@ÕOáÖb΃¢ *`Œ±ÂeašŒ`©ÆGFFÓOkì0tJ«qìCwvÖ—®\ì‡öß¿úw~ë·~óÓŸþôjgµÞlšUU‹9icná[žôw|þððDëz»í‡Þ‡1)e”ÒZ[¥Ô0Œ}ßA¾¢m·Z+hØ ïŸ)%ÐÆšQr™q‘sv֎㸳³3u„@¾ôvœ0w¥øù5MŸ6wEsÎã0Â…d»ÝÖ«›ª®ë¿¢éNbÔ|ÀÁÈIJéÇ‘ñ"¸Œ9á¬M ž¹ûŒJ(¢œr)elûÕjű”ÁÁ/J©aû¾w®Bw Õ¾ïù;nûDΙÍ5j)…34ö2ç<ó ͤ?RJ–#&¾mÛR¯÷Ü=eÊwP˜YP¸®ëm×R 9„t®‹ &¤(va Òuµiö1’ñãL ñ\×õ¶=CÔC÷Ñ{¯¢Ò9f=¤LT¤0Ć#Ì—”rgg§ïû¾ï¶KhA¢0YÊ-æœ/€ ÐÉS^Ê) Ïð4¤Hhcã÷]ºÅ ãêFªF©ÖúèäR0ˆ¾Õ›$$Åq’>j­}HB& ²ëI‘1ŒJĈƒÇ¥9Œh}È@!LÖxœ¼—Ðòßl6#//LÍ%UUŬӗ/_¼óί¼þM¯}ßûþDjikB8¸¸c>;;®²;”2ÇÇÇœ—§þ½¿û´§ý/OÿûßÏ9ûó i,‰\3Êû@LÌRÊwÞ¹Ùlö÷.!Žs»»õ0䜳6Ó¤ sjçl),±rxxxë­·¾æ5¯¹óK_bŒÙ¦QJ\ºxrrâû¸¢ÁõêµRø8„G<â/yÉ˾ó;Ÿrz²=9i·'ƒ³+¤Ã“úÈ,„6.ï½–ª®ë®ÛÒ¼ítÛzY …¦¸÷^k›s;Ī–Œ…æKç­$0ÁÛgŒ¥˜9çÚšaŠàÞ{[9Áxòs^вøÝ2³ð^àEJ9t­¶F 3Æ ‚MÈÒ9Ã̇‘€8~K),dcW<ÆXx‰1*#­µíÐ+¥XÃ0@Ú3¥RUÕ4% š!Àž`2ª“˜‘€§×uÍKÚn·H ðæÈƒ1fÔÔCz‰+úä䤩ê˜'ÐívÛíîî"¥ªššpçH#±ù0û ¹è‰À­õ¬DÊrÎP,óÞÜ8¼N¥%ypyï+k?Ö® 2x‹ÐG§©á"y<µm[c\J‰N˜%ëRJ9‘ù3ýXι¤\8³ÎÄɰÚZkÃØ“$6bܲ?8•¢ßÝÙïú-gRH|J9XS)-bÈÃØíîìcçÇÈ¥ðÞ»¦f)§´¶ŒMLïy†X ÏK)(É¥”aŒÊèPØ0ŽÎT9g–³Q^Üš#ÃgÎ@Oæ~M‡š\0ârâÉÑ1999qÎåÌbNZªéõd\´³³ƒ[g»=\H)¥´Ø»°÷À×n½õÖ}èŒÇ½}³YÇè·Û-r¢ÌJß~CÛ?ç9ÏùñôÍ91ÎKˆÞHÕ÷“ŸEå\ß÷“YiF–á}ŸÒ–PÒ„8¦X”œÉ\`M¦€µÂsMc4Fµmû‡o¾íÖ[oýøÇ?Ž˜»^¯AOAxñâEÎÅ®ßwßýŒÉÿéï|ç _ðÂ'>éÉÛmwvÖ†¤09Hïƒ(¢ZU@-MRàÄq|&Í•(Á´Ö~èÐÇAp„”xKq/úFÁxÛw93$ü‡mÔ¶íf½ƒªÇ9S8'3\~¾.è® ÃÍj^XÛ¶Êh$‘LéZÊ2ey¾g¤qUÛ ÚYÎKa™çTrä%5MsrtÊŠ0¾^HV@î“Ê9W2oÛnw½ë}TTÑ÷­$.DÊa’QWêl{bŒ¹°·{zzZr†D]×Rè~¬ÕÃØie·íií¥D –ë}ßîíW…0 ©s½•Ñ)Dku©i* ñäd1 ¥”ö®L %‡0ˆÂé†1ôŠgSˆ•”eKвÖ1F‘¸–Ƈ$´|o&ydpØ»ç2Ó³6<+"Ç¢µ†‘q.…ȨU£ÖÕ¶ï{c”ÒB(%ßÝß½~ýÚïýÞüã?þã¦i”†ê†ìº-î¶Õj%$»víN×ÿгžûÜç>ùÉOH‰£/)¡F0]:öÔGc,3&ËœËs²}ðB)fÜ’ød/8—¸Dr΅΂9µ–R§”>øÁ¾â¯xÏ{Þ“‚×UU×µ`üâÅˬð{î¹7 áÛžøäý£}Û¿= þÆÑIŒ¬d>øq³Zû~d¼(®z߃ÊK†˜Ä §ï{[¹0ɖȃ³þ•s.$''œÊ˜Se`™py1f­uŠÓÈ»®ë!x‚Dìííbà€r™úÖÚœÊìãÉ4}’¥JÒ’P‰oÇ×ø0U£‚˶m}Ê„únš¦ïÛ¢sÎhB()ººé‡î!Š`‹L0•™`jÍmo¼ÃìsÿÕ™c¬”J‹0DCK|PUU´q‘8 †&K·Þ3 ‰ZÌ9÷c˜¥¸ã¨e‘›<%dN‡p0yy´ ‹Æ[œó²¢N)±±1F.²óhϳ”£–¥o·{{ÛíV ílíÇc4•½ÎZˤDZĢ• cD¦¶Z­ú±3VŽã¨ŒaŒÓ¯Ï9sÆŒcoŒ‚:Åb眒¦Îg])ÞûUÝ í–þQJ©ÌJß÷r–Ä!v^³ª€\CbϘ˜­VçœKÁðøNJ½¥O!õãÚê•Ò)/Ê‚L\+˹RFõ}ËŹ icÐ,‚DV9ç9±¡÷6»>E<íÙÙY×÷ͪ¶Ö††‡ŒÉ+%.ß|Ó׿~Ï­ÿñÕúȇ¶ÛíÅ‹+k•’Ȭû¾Ebuýúõ®=»å–[žþô§ÿôOÿÔŃ}ÎÙ0œ3%gôn{vÖ“m5–ýåy¦~nPĤXÚ&NÛ’Ëa@OçÿcëMc%M¯û¾sžõ]ªê.½NÏÂE¦lJ¶A€a! b8–†`Z e*Á‰@Jœ@0í8¥F"†K&E+’%C6";ˆm"i‰¤(™#JqRT÷Ìôôt÷]ªê]žíœ|8o=}©d>õô̽·nÕûœç,ÿóûK‰@pI1Uù_MÓ¼ðÂç>ô¡ýìÏýÜ4MO?õt!ŒéÍoþÆ÷¾ç}ßú­ßöÕ?º×u«0§ý~nûUŒ™RŒN »kÕ\ÁW¡Q‹TÈPz s'ûp剥c.©®=ˆÍgáÜxϹ±^ŒZ¸ëºÝvÿ$—WK¶±ßïŽ61F ’>o¥0ID3ÚŠºýÀxbu~u7¶¦W•ñ-§u±y÷¾PžçYÌÁ2C}o6›aDhêDç C,!§Æ:™'2óâ:¡Ÿœ##Fª%Îó¬ÿÊúJ)}À*–ª—®j94ª_C9¬2HØ–8]A½Vd^&ˆ”TÕ5ºNñj‰$ ø+ð–\2¥Q·P©hó -€oõ„Ȫ2 ñ*H äd°F!R€TH+ä\±¤`­ÇÉkŒM…Ô Ñ`!FÂ’(ÇŒ «3feÕX&2ÀH–SBæ§åÄ”€ižFç]×µ9§\¨”¢ôâ£g”APŠUÉd•)© ãbeT˜‰Ø[ŸS1ÊpȦ e³F•çäÄÿDi  Uk‹Z HY€cÀlµÎX­†q(‘r ZŸ2𢵚J–”~½:š§à]CÄã8imÄŽEHL 5€Z¯Öûaï½·Ö¤’xµêh˜YÃôêéÛ¯¼úÊOÿôOýƒð÷¿øâçn\¿vr|Tý¾œsDÙhB˜Æ}Éémo{Û?øÁ¿ô—þ¡–T—V9½ÞÛiš‰Ä/Y5›çsî{?Ïñ°é(Ɖ(+“8S!*$Q‚BºRâÀkAB¶qÎËW)F*|ûæ­ÿð?ú¿ïûÞ}´¹ö©O|úÎç~ìGì=ïù­Ýåžö3zïP©fTæÙ; !FT*—l¬)æRP!"@,TrÉZèQã49ñì™§\еzš§Š9#"X¤Â`­ Ó쬧I¨9gCIL¤ÚÕ‡˜™SŒB¼jÀUJiš¶Ž>+ÿ¯gˆ®2柬šUõR•4 aF+=Žcˆ©ï{ùd,Ó8ç½—‡© ãh­'fêÙçy’ˆDD! ¼´6úû¾÷em¸*È«™{)%šy5W ó$•|EÐɽ!áFùû«C±CO”ë/)í I£°Òeâ ·nõ¬ÔÍ N]!àÚè*°:°  nÕHÂÁ\øàj”«{kû® s\¯7À*+e»n•N±b&ëœqV£2F+`²Î¤•Á)Îh‰4n¼-)7Þ§’åRoûާ9Ì!o6GÚ6…xšƒw>—¬ÐLóä¬)2¨9̾érɹpá€Ú(ÔJiRÆh«3FiíeçÜn¿—ŽFØš4¹sÒÎ8£]ácÒVÀœ²76vʨ˜¡”âC@àÒx7MÓÉÉÉååV Kê5SÆ8"€iž­3LÒl­™¦‘¨0Òz½Bƒ_÷¦7ܽ÷ÇøÀþìÏþ̽{w»¾i;¿Z­¤_J¹¼<_­úyž_{ð ”ô–·¼å'ò'ßþö·ÊüÚÆ×¦²<÷tëº6¥l­Ýíö]×­VþÁƒÇ}ßç…‰"5¨ ˜ †<Bô•ÿ—mâ¦icL!dï«]ŠX;£Ö«æ›¾é/¼õ?{û_ùö·xÛívã°ŸK!M2¹¸Ü‘ón½Z©¯µ;®(‘*s©èž¶mÅÝ€˜d¹¸]äÕ€ÅLVio]ιí$ÜÀz½öC×uËÑÙ«ÖMâƒ%Júk(=Ïâsnªe²èéª!ÈŸ0ˆªSc 5ÿbàœ³BÕupJ+Œ¤”b”€yžÄU–Â…H TöÊ0]é'ŸJY¾Ãv»•ŠCÊ®«`€ÿ_Š—$]ªJ¼”Üêê^25‰A¢/¯ßPæ2-–.>Åñôôtáö“1ÆÚA<@0øO«@ÆQ&¥ŒŒ±Ú:Å95 “ÖºiW©ÂÂœŠ¢b89mªPBÖ¤¬abmMÄL gD.””ÀB©”¹ʬ *'Â.­”­‘2äT2•œ¡ó1B". •¢kuãÛN1„aÏs aêû6ÌI+{q¾5Æí÷£1¶îºÕA¥¡(§’RBJkì4Ì…s¦¤¬7Ýœæk·N^|ñK?ôCÿí¿{þ3ƨÍIï½g&k›ÇJzå½‡Íæþ+¯xoß÷¾÷¼ûÝï¾uëx"¶Yìv»z´¬Õ9/Žž»Ý^<5ÖëõË/¿üðáÃoø†o' áj‒Ë,Q¯T7\83‹=ö“޲Rfæ¦i :J58ë‰àñ£ù7ëwæ9 MôúÉé0î,šÂ$i>"ö«–ˆr ”‹¾²R&í×Eac]êªæÏsŒÞ72p`zÒ­«)R)D.œsV€mÛ8< %©^9k‹½.iJÖ½ú¥ñc [‹ëÒª"ïg%»UÁ]eTøuŠ‘È ”R”"¢>˜Â¨”èªó¹¬ac©*MWJi£dÎóD~!ýYD@4²?AÀUt•&®ºÄÚ“’÷®2+ ·*¹%ŠÉýY§³•ˆR«¹ê½\‘x"vÞÖŸX=WíãëSXÕÕuqº¾ÎÚs‘öD8ެ”²Ú£F@áº2#€3v óÉɵí~ç]c×í4M™ÈXca­r‰Ô›¼bbmLf­¢¯ˆ,E¬”) ‰9 )g"Xý¢K‰¦m• æZÞ¦…E«”J””51K– ÌHP(“ØA6­SH.€J1‚2ZZ„‚Låð«<ÅÒKÌ)1iDç<ÐÆ¤\R¦\©okÛf3ÇPw•JáJ¿gcÉJpÙÎ…ÖéaÜ*²¦~zrÚuÝîåíûßÿ#Ÿþô§÷ãî_÷úR²ÖÚ{;Žã8±ÆÌóüàÁƒk×NÞö¶·þðÿð­[§Ì0M¹.QÚ¹ilŒEÖê¹êûnš"ÃpëÖ­7nÄ7›õ<¥ê•{ôZSïš}ZBùk{[r«ƒ÷mΜ5€û÷Ï¿òå¯Þ½ûrß]CÔÓ4ÁOI•˜R¬Ï¥ì‚ o æ¥Õ¶oÕ5B&¬¢Ñ›I‰W÷xä©O¹´¨¤ÛW‘òº•RÖ8yFkQ)Wµv³ÙTvÇ“´óÊ'f35„Õ­Y \¸½ÌEž£ˆµÊiY³Jç\@«R(†” ebNŒÄ ˜P“òÆX(ˆ‘¼1i⨜›RÔÇaÕú4OÞØ¢ïú  ”QZ+TX¡øå5­¶ZÆyà”,`«WœÀ‚)œ š‚¥2Œ4h£MNY+ç,À ¥LÈ2µ,è(™Xƒ· 2zä Ùš‰É®×0OabIÆ*<ÇØÌLMÓ°DF&¢dŒUY•ÂMÓ‰Eø<Ï®ñã8BA‘¿¤’%G°e.ÎR3¶«¦išW^yéïý½ü7?–r¸uëÖëÞøô0ìÆ0t]w÷åûÞÚ7n »ýn78ç¾ÿûÿËw½ë{_ÿú§//Çq?É!I9±Ö›M7Ï)ÆÐ÷ýv;ˆÕ•ÒRÎÃTµ#Ò<µÖƘ®šÂ>¹Þ¤7{å¼ñâ^EX HAŸ 5©Àº·Û-òŸzíµ×®_¿yzr½ïމ`»ÝÀ4 ·nݧ©i½äJA"†B)å:µ¨BP95^Hn%Ã8§d* ÀY»tý¯¸dJeÀL¨²R å¶m£H"e“÷êIYvàëþœÖÒŠ©c.öU ‹DR1š‘Qãÿ7fÁaù¦’Êe¼(’‹1ÌJ©ããcV˜sž¦iµZY¥ëBœ‡qoµ±Öjm[ÂD çmE)¶Ú¬1æ$OEÝ6Ñßñíß ê°q"¯Uæ’2J$Ñó!ÚÕYrsÅGG¾iEVÖ¢¬kmd4~eÓ¶ín»«zQÄíïI«¾j°Ò'®:2J­3W©½—Å +«0Zkï›1ÌÖhA—£ÚŒ1…µšbè׫a˜sÎÆ;kMÉÆYµÖi 0ÏÄl¼K¬qŠÑ8Wrñ¶”*b¤RröÎ9c€Iú½Z«’"pIÎj.9¥à¼%*ÌTú®-%{gc J¡w¶äÔ6>çä½ãR ¢uNi£ŒbtÎÇÄä •!†B ¨Ôœ’†¢rê½vŠ(Gƒì€[k “6ŠJšó\(¥9H•`Œ¼·ˆébJWýg¥4s1Æ&ŠÓ<õ«öo|Ë/~ñÇ~ì¿øK¿ðüï=ãæµëׯ9§çyrÞ\î.¦y\oV€§É9íÚµ»wïþÕ¿ú_|Û·}kJ¬µ¶‹w:ð΃$ bü'Çf·ÛË+¹wïžÜ¬5?xîf± ÀC´bD…¸°üëÃ Þ E@‚ È[HA­Å’ó¥{?úŸ|á…Ï[Û´mo´?ÚœŽÓ„¨Ú¶9d êy"bbÙª›çi±éfÙ¶`%I#¥nb=ñ%8HÒïs)s˜ÕA¯µVˆ’nc„¶^{F²v&]žœ³ÄÇ“Y²‘Öµ,*żßïû¾¯`áRJã› ×—$«ë:A×ý ‚ §i’]ÉÚ$º¡VuR/‚M)wÛ­1F›e)§B»öðLóJ1fqA®Ya #U¤­¿ï¯ý cLÊIÖñå ­¥i] UfîÚ¦.ŽTcyÓE-¿a•eÕ}:k­ âky\Å>¢d•@Ó÷¼>9!"=x±äkò¾Wa·&™E^»Êk“WRëÿ¦ëRNŒÊ£•b*!%¹´Œó¬TÈ…šÖ£Â¦ÜtÀF€T8ƒƒPRQà»nGƒÆ€6¬Êœúv•BrÚÀ’ÈÎs0J—T”Fk­qºPVŒÓ„Ùx(—LIiÈ%—BÙhå½5F Ãn½îÇqï‰aÒµ5sŠÊÚ¢BDTMÛ`&b¥  26–BÃ<±Jq‡åÄ/N½Vy ñbåÑ–èRr@9Å ´Vl£Âˆ €˜©m›¾ïBœÅ&ç”R4F¡ÑŒ¤´>:Z½îõÏ~þ‹ŸûñÿõÇ~ê§r?ì6G«k×N6›Q‰iÎTÎ.Ÿœœ8gÇq<==i}ÂüèÑÃqžz꩟ø‰¿~qöÍßüï[c¤e#ŸrUoHsºöY$ï>>>ãŒÚÏ®`ÄÂ%å|°©"b&.Fi`"&½¥´¶Ö#3ĘEÅæ4>|pñ±~âå—_ݬ۶k|‡¨˜‘ˆRÎrÁðn·íúB˜ Y Í9có——[k­×k9bGTézBÚª¶u"·îVmÉ©PFMã•B­Ð9BŒ1²Ø¼”'.åâ“4‹³à$½Ä "*L]×l·Û¾ï1¨x˜¦ÕjuëÖ­ßûìg~îCÿðóŸÿC"zæÙ;J©Ýn @ÖéišB˜Ž¯n·[DèºÚ¦ÿ£¿|ýôúãǹçY;sûöí¿ñ_ÿ7ßó=ßszzBhçjµ’'d½^‹·B]êr\ù§^T™Ë•â…žˆˆû¾Ÿ¦ ÝzïÚR 3†œ¼÷1äÍÆM|å+_½ïÁÝ»÷žzêiÝ·«ãÒØ"°ÖÆù`&dŸ¦.Ôê½TÕË*1i‘ãx/ùÁ^¢?„œ4 :@â8çÜ4”{¥Aív;¥”Öˆˆ©ä¶m§)ˆ8VêD>úÒ§WXJI!H ’(/[ÖmÛŽÃ$íyQ‰®¥î‡Ö%-]µ§¼Ú†€rÀUι±®•Æ+àâ%ǬB¥ZU‹ŠÚïëû~Ø댿ò|B)åÛF 7ѳU›O<(Çä/§iZuMýI!yˆå­—Ž„^Ñ~¯Ž__ß”ê“b®mõBËšx×ub0µaS Æ“²®Ì5ÌZ@ÕmI›`y׌ÉÈJ©æÖù8 ´(m"±²¦pæBV+‚œA¡7ÖNqZ­†’s¤\€Ù*VeŽ´Õ†™SœM£&)7¨ IDATÁ•‘‘Yˆ?CœgxÔwЉc¤‚U:†©kLŒÁ(“)[mÇi@P€¼Y5Þ ûq?ìZ×l·—kÒ¸mrÄ<ÍStUÖic†y"à¦íÑhc}fp¾a„˰ßBL7)Çyž¾} 3àv»Ÿw¡éŽ^>Û=÷ï}˶]=Ê4öýÊz'I8*–[ÇXk¬ØvØÀŸý³ßøüóÏðƒüÂ>ÇH·nßrfžç1ç¼Þô"ÂÒZo·Û›7o–Rî¾üRß÷ûË-Mãxýúu¡˜ÖÈuë©§ÞùÎw¾ë]ïzý³ÏUu¥¤ZÕÓA®Ãõz5ÏñO>ÊÑJ ]–¯0|PzUÓ4ãڶˉ«€¨K&"j[óê«çÿöãŸL)­×Çëõ:ÌɹÆZcNq!É«Ã4’ÜÿÇ'×$K’ešÚý ´ˆlAvü•’'YBÒÕc©¥.cß·B‘#x28’;Ø9·Û 5Æ­ûUŒÑ9#Ë9c®û†rL´³u³¨Äí¡•HHÙZëRA‡zˆ«H-`öãE´)µMüš¤ôµçyvZ)¥rIÆÊ¥®ße*mÛ–LJ©œk¥RŠ2 ý¥R*e nÜ/kËÞ{üg¿üi¹¥ëj›DÐ%Ä^AÇÈ• ´´´dô(™N…FW¤\Ý•­°×”’µ^*y)È¥xtν¼;!m”„*A.˜‡ºÛxðd–âYrÀz]Ô€UY…u}!í1›Ö—R,( ìŒÍ93ª˜sÛ÷S©dg×*σ’F¢Rj8?;i}ƒ r@Êç¤KÊJAIÉ9“bp-º$f¦”­µqZcŠÑ­z§u 3–¬QqIÓ¸?^­B˜4ªT²Qºö>sˆÖÚyšæy>Z­SJÎXGùÄ)‡2[ô\€CLÆ»ýb*ÆYeÝn?ž]\œ>÷ÌÓ߂‚qž}ú«¿þë§7oh4q˜ý?ØŽÝÚ¾éÍc»a»ÞŽAkôͲŽÓuMŒÑzÂÄLwîÜY­^xá…ŸøàÿöÉO~òÖ­[]×lŽ”B"Úï·ã8Z'Bß´Zõb-#Ïâ£G†yRJÍÃ(âŸê &+²² &]…¿þ¾øÁüÁ®k§i®'VnЪª«&¡W¯w ¬Š\è”R”òz½Ç8sÓtDæØ4Íf£^ziÿ©OüöB߯V«ÑîÑ£3ï½ìfÀ<ùE¬3aÞKÒ4 Ãj½ž¦I܆æ9Ê±ÖæR¥”’›ô(ž€=Þn•(«éªÕ#Tš¦Rªmû*†µùy‘@º½€ˆp@3оÿЉ$æœ[ï¥B’lCÂÓ8ŽF/$%©øê=±PØ„ ¬õ0 ¢¨@ŽzUHüZŸHŒK)!D”òBTìÐÅA¢dbf„es¶þ‰Ljɼ@…ºfIƒíW?!EÏU¶§4”1òíä=Ê9k\ JÎ9A…Õ¥Ê'ƇúüP ªÃ@#2É¡F{jgI‚Œ‘v–®opÍåüTˆ4 …q>öŸ$®‡½œÚÚ³lfN%›¦‰9{­KJ³!P:¤¤½/L@l5h*e¼¢õ¦›JØ´Ÿ7Û}zõØž;ŠÆ[¹¤²[7ÊãvwÞz‡)!¡Ñ-¢%6Ά”úõªk«æ”‚Ö7ÆêœcIÙjm±ã0¬7›³Ç¥ÍÙ7í~»#"dÎ9­7âØw͸Ýy£ÀµM! ¢9ecíS¿Z£r!T¦é»y —çgeÜk`Û´·¿å[àþƒ{_þâéõ‹èØ<¸ÿðñÀÁ4î[†Õõ`V¬œFfŠruõ}»Ûo»¾wÞœÞ8}þùçæg~êK_ú­¡R…62˜Ófº¼¼Ün·MÓ8çk2åÜÂ#s*fÑÐkÉF%×H)½îu¯{ï{ßûŽw¼ãäh#'\ryjSJ„ªÿÔÈň¿z–À*BD°J`tN#Â~ŸÿíGëþýûÏ>ýœõng­¬Ø£ VËêß„?GÞZ. <ç³lM=–-†WÒ–!—=T‚UBXͽå(Iq‡ˆs%„\¢µÖ8›b‰1¢VZëý4ÊvËz½FÂÝn'ÿêŒFDeDÓk…¹Z½þ)aÂ]Já+S{);dÔFe¡ÈJ%[›¿ò"¥9 "®\åU)< ±¨TRnNDäì×°•rÎJ›jêÝã¬Ö:-1‰‰%`UkKýŽÿüûżPž!‰ŽB&#¢\ŠdOO,nUñ׿º„FyzD5#ß°†yÈ$šHñxø¤ž,dþR…vuc±ÞHÕáJ˜¨UŠU•Õƒ~YŒBuàø¸ 2RJB@@"…à¬C”’c^yÓ è4ØpV^»·ÿÊçæ»_Ü çoI°”ι¦mërK³ÅÄú{ùcÎ9†X•@Êè:O\¦¨‡tO¢’œâ¶mcˆU"ŽW„WË”zĪ"¯N –$Κœ‹±6ÅhŒáexbžxM 犣 ü×ÅF^~âA>)¼Sï½|·%Ë~ûÛþ+A—Vq`%ÀŠÙˆüýï àj6]Á b9% çççÂá_­VRVÿwu…ª³à>–^{¸’!Û ä®ÊÏúÆUGŒ )G³Z–˸Z±Ê$ÞK· @ê ­´U¨޵Ú(mP~Kjµj4”q,g¯†Ïæ˜Þtm}­ÅΗÍõ†0×Vú¨7ζí:„âLßu§Þ®\»ÉÀ¦ó‘Ùõm1Œq]ÆDç»¶_`T¾CÂjU\Ûì§¡]÷±dëÝhZ+£­wÖ;Ó6]ßÛ¾›˜ã[õÐø˜ ¡cízƒ¬AY ¥•Å¢­v3*åéÆÀÆöG«“öÖítq±n:5ìãv§8e¸@}ýÙ7„d¬kµAçìnwÙ÷ý3Ï=ûûðÙ¿ówÞÿó?ÿ¡ý¸¿yëz¿jšÆÓååÅõë×å³0ÆœŸŸ§”nݾc|é¥{¥DØn·Îy”eï®[]\œïBJm×m÷û¶ioܸ!šOTˆ cŠÓ<߸~ã™gž‘Öû¿ü¿ö‘|„¾ù›¿YÂããµìr]M¯ž”„¼,âa@!*.¸Ùt·_ýê«ÿØo¿øâWºnuûÖÓÎ49$cýn·sܬ7¹03¤œ‰€e/˜¡0Ê%+T9£MZl̳¸p†ŒVÌÄ¥«Q)>0²k`­—qË“×&çDDbQȨ43çCëÖZ«Í¥ˆbßµb™ADÞ7âßWq` ž° İmšÚã¯ãåÔÔ(™ŒUcMyý XÅ·5m”]„”2*#Q‚IÀ2KÒ}å@kcŒ²FHž1Î¥,Ò‰ÄꉺUX¡…$·Öêw¼ýÝÆ¡‚HB.¿Œ00áÐf“/pÎ…94Í2i–{²jad¬Ðu¸†T__‰M‚X­C a‡aªÛ<]Ûæ”Œ6¹”yž ¦DÌ\¸k;ÙY͹ô«Þh;…ÅEVf À¬•’]£Žˆ²V˜sÒ´R1*¥mšƒ÷nžgc-S¢<å¶Ä¾ÌmØÒùƒüø%³}ðgŽ›Û-öJóN9^=u]iÀÆåD ÚŒã´Zù®/ŒÚ9vÖtÍDÔ¬W¬µvY­Ð9k)¥­cq¤ÕVvë´³ t&6ÎYßë ³u¾iÚBŒJ1#ª¶MDØwºi"Q!ÌÆ{­”B¥Ñ:Å€€1ň*‡¢}ï}ksÉã= ãnÿøSæœá|Ê{Û>õ§ÞœBôZ­î¸¿9Y£F¢ì‘}ŽGeöí£»Í£»'Óƒ~ÿëo¶ÎQ{ÔCëšãõvwÉ9±VÆÛ”JÉP¬÷`(` `íúbmÓ¯æœM×jç•39gV ´BJ¬€Ò4 €`¬Õ]ïÚ.Ç4‡X YcEÇH€¾íPie,›~m|;ö®qÖi4¨TNI)\Ð蔣o, kÍ1Gï<ï‡ôðÑðÚ«Ê)î¦ñbva; ™Äþ¿õôñsoØ!6§ëÕqûÂç>û·Þÿ#¿òOÿÉ~ÚZo{©N¹ Ã0MÓÉÉ)b"&n›¶_uˆðèÑÃËË‹ý~7ÏËİ®¦£SŠÎ9ïýÍë7ÖýÊæùììl»ÝÖIÆÁª¾qûíö{ßø£ã“”²2æã¿ñÑôáéË_úÓoþú;ÏÜ.œ5Ì18ïpž"Zcµ2óÖ}묺x>÷‹¿õ›ŸyøÚ¥÷ëÆ÷Àš K) ¸ê×—Î{msv7ìŽOŽ|ãçy2Fãá60JCN*Ú¨vÕ¡B㮬€ŸR.Æ:@•RZ­61Gˆ!8kcTг–‰ä_ej ¹ñ^+%7t³êç”SÉãP)Ý4mJÙY %Ëš:ˆþ3ÆÄ¨jcRÎŒRL¥h»Xü<1 ç²ßíŒ6ÖXgxJÈ—§’µ Œµã<µMÃÌ™¡‡}Ó:ßëˆ92Ö2à¢6Ö:— Õ¶’UXrRÒÚΕŠ)Ê+D…ÆšRŠsF+­µÎ±ä\掎uã<;çQ똂oü~اq·ß6MÓu~çwÿõ*•º©^•÷Z­$kµ,/ €¥ÔäsQî”eÁ²ZZY³ö%`ÕVheþ‘Þ1ç”cˆsXe*™´Š)[c ¨’r ÑY«5*­Yú&…©.…H«Ì ‘‰ÙZÛ­z£ÔµÂ4MÎycl)ùìüìììq³¨Ì///%0É^„dRª_¿~M)bP*úo©,*2ôÖ­[¬pµZ…÷)äqňÅ8wýƵßùô§?üáýÖoýæ7|ãŸyÝsÏ/%Ê`­o[¿Ý]ëûÞ>|mú¿öoþà÷?c¹}ë™’ ÑA×õˆ`ŒuÖ…”VÆÚqÅQFúu¥RÌå±' !Öˆ\Y®^é°T@)P01çÃŽZÅ–ÔaYµŒ~²0$…“Ò¨TˆÉY—r€åCˆ)‰ûˆ½÷ê°!Wq)¢ ,…êÔò a‰h³^k\ÜFpña‚”jELâzµÀ¹P•R@)D\­×ò­d>p•祵ΥÈS+•ÃŒˆ‹ÿqIuy[ÔÃÙ¿²Â )$k=ä\¦8 auc´÷>ÆiµZ•”ú¾‡™õ[ßòתUW¶Õ‰¦4)¤;x=$y›¦‘¬aÄ;BŒ¢ImÎRŽey4½oD´Vw¤—`·”Éš +Ffè6SŒ¨P4y@l•.9‚ì¯PÞ‹¶ˆJ¡Ñ¬ +…FƒB…¤çB1äHi°6Æú¶M1λË5”Õk/µ»W7él¥¶ÛŽ×§+tjÊ¥;:±]C<ç䚆cÉÎ5ãßÃ~Æ!¦ýÀÓ4;¦ÒœÃ\ö£ ÏÇÂæµ0ïúö?xÇ[?þùÞóC?ô ÿä§iè¼o¼?Úíw{`ÞïömÓÓhóM£™CÈ¥ì‡a»»†A¶C*!@ž„jXÙ4Íõë×e·fš¦Ç‹ÌXž'“Ë#·ÝnÃ<=|í5gŒBÇ¡”\J¾~ýZß¶9¥ÃÆè¯”kI%žˆsU,Ê…]J™¦(7AŒ1Ä _;MSÛ6…§iR’ñH iªóÇ×èY¾Ö“½®†8ËOÊäUi‰PBòo鶦+t*™ÊU¹Gm½WB)URRFÇŒ·TÈ:m4z£)e0ÆÎó(¾TV»§$p V“Ò¤}AHD˜£GR %B*Ug5&^ó)?¼ ÛóUÚmµ-·GÚ®,(vncÓÑþârÒF9P&râÇÆ+¥/CÐJ+Ðý ¬a4œ€¢1FûV[š¦‰Ým,QÎÈ ”Ò¨‘ 3Š9›F›¶3Ú…iÊ”Œñ@¦hP¨¾}Ç(术_¿†\úÖOÃîììQÛ¶GGkqÓ¹¼¼sJ‘eIÔ:Ú!A×urÇÊ#Ôu´Q®ú Õù²ø¾h­­5óB4µ¯”9„rc¨xÕ…§f­Hí¼·²ôK– zžçÍf=Žãééi)…Q§TJ¡‚~ÇÛß-1Ë4¢Wext%WÇ~¿G„š™²{ IDATOU”¢|ürÁÊP@n‰aä>ˆ?ñê-T#Ó²®è½—žÎãÇ­³ÞÛív{ýúµar!mlÌQ…T @ÙXŸK.À,C¥‘2–è4¯zf £{½Tßkç‡7}zf ŒÚ–þhÕŸl"m-#¶GÇZe¬êVÊ»Ëý¨A+·Y™ÆËêÓ”rvÆO!jc•õ%•˜ 3ÇRŒ4ÅcIÙ¢.1A)%% %—˜°(D9+bk¬2.l÷i ÈÐZgóœÓ8a**ωSÊãhAñ<—y Ã([—%ÌPŠ"Žó\bjŒ-1λ}GމK.wÓnŸB,ÈsJ‰ÔeHƒÖ^AþÂþâ—>öRé¯mlÛÍSðÆYe=>;»8—áï4NûapÎÝõÕ¾ïåS–êVcNáÌÕ‡D$Çõú•£"·«<6Îù*ó a®c¸+”ÒË/¿ìœ—‹0çÒ¶ Þ¾ýÔ<…ý~†éìñå+÷^¾sçÙ÷¼ç½÷úÑçž{ÃÝ?~yžãåÅÐ4}Œ@IéଯùŽ”€²ÖƒÞ{¥€¨tݪÂ)û~±,êºNéêƒ[Ìåί©¢œêÚ}“S k7Pª¸Z2YÄ“Ûz½^ P Ê5W«•Òzñ°6§'¼PA ¼„®øZÊç"U¡„Tyµ5«@ä…qLb[¤áå½/…$Äȱ}âxð3¯»2I¨¥XÝ”ªÎ›Þ{.LDGGG²M%¿`Û¶!Ì[¯-×½½Å¬ë Q—†š¼Ì|öø±ØGµm«ßú–wUJ¼\†µ£4ÏsÛ¶òWmnÛ6Õö¶ºBÈ[)–™"F——e­•Qæò V§¦šŽ)¥¬]T£KËÌêõj•bpÖYcCLÖº¦ï/·»¦[)cc,¾í\ÓÎ)©¾Û§€ )[…F™•÷jÚÁåƒãðПß= gÏ™k­;9nÚµ"K~µžK1Ö×!kbcoÏAèoœr¶s9eÐÞ3q.„JÇ”•sÞ6m\×i@較˜ çÌ9+fÎÅ¢ «.†JÆœ À¼ÛsÊŠTg•ÙhÇS(sÀTheNÓå6“&”)Ãç!Ç€À%§i)%JiÜnÇíÇ)Ï‘SNÃ÷cØO!¥}NÆiÏxj×µ/ÿóßýíÿû…?¼TÜ^0›f R(w_¹ÿôëŸû[ïÿ>ð;wî|æ3Ÿ¹{ïîåååzµòÖe*MÓ°È )@e´snݯöûýjµªóµjÇR]Ú*È_ ù åÎË9’6ª¤Œ€Î59ï`8>>±ÖܸqsµZ?~t æ)_œ_¾þõoøïþû¿ùÿåÇŸ~úÙG/ÎÏ.TN •k|ƒ€LlŒrž„ªJRK)zïÇqPJÅ(ªS=œÅy´äDØ)d¨š<Êá—p–¥öC꺵üj2¯¨«ÝW‹üŸò_«Êa>¬Â b×¶²x+²RyßDæ ‡ý³:%“p#¬º®[ñU•Y¢Q‡y‚ÔÂ9ÉÑj‡^î'¡H´•À!]¼**±º¾Kâ<£¼`ùžÂùŠ1JÜÉ‹ÄÉËæWëõ~”Ö«¶‡(;kº¶µÆ0QŠq}tb§+üçÿôßÉW뇫ëÊRŠ AjÑÝ~Û÷½|´ã8Þ¸qC  òÆ &qAS”Rº®‘ßPk-ëVµÕU¼¨pV ”RШêŒFFPJt$r®aæ[ôÞR޲+ä˜M_ýÜïû´_ãx{c®uÚaA.hÝÑéQá!4¾Ó]?í§BPŽ®ßˆód¬UG°:]<žÓlœeÔÝú˜QÎ)D¡i2f£tõ¯—ü JŽ»VÈ…ë”6P2 Bˆq?¤1ÆjÜív‹¸?·÷——XÈjC15ÖmÏ/¬Òq1ÆÓ£cyVJ)EA) Y13ç"nc9Äý~@†Â~7Ê;c¾˜‡ÐØIkÝmÔ/í÷¿úѽÄÔ­¸q'G§óÙ LÃøÌ³¯{çûÞýŽïþ®¦ñMÓ»Ýô¡Ÿÿðÿø¿tïÞæèHYcŒ‘–ž¬µ»qXw}mÊ©NVâ%NI¹Q»–‚K¯„oÁ¼ÁÿKÖ›Û¶]åacÌv5»9ͽ÷õOH aÉ!@(Œ !$’ÂBÆTˆí  ¡·©8… PÉ!)ŠT¡2v‚¡ŒPcŒ,‚…'€ƒD#…N $!½÷î{÷Ý{î9»YílG~Œ½ç=H÷Ç«Sçí³÷ZkÏ9æßøÆ÷aBœœn6kk£-…NOO÷ûýv{µX,6›nê§—}î+¾ã;¾ó«ÿÓ¯éû¾ßõó<çL9ƒ@#„r3/×C@ámÃÛ¸ì(cÙMŽ…%öýÈ)R‘d)ÊvÜO`Ä–;Ú\çræUDoT¸#¨Ð ÊøóøY—í@\Š‘‡¹-T¯”Òpä !Ìqâ­Ü­syÜ ,4'5Ç|P°7;ÿ /žÅb1Mcñ²:–¢?%š %³Ì½oJn_”&àA£‚s¡Yµ†ŸIFgÄ_Ï™§¥¨dÉì0S¡n*&BñìM]×.„ÂÁ÷ýë?*å+ÿöx0T Ù5} Ü€xTk- àÒCå7dJkŠfÝÒ -#£ìÁ+¥”J(%º®C‚¦iXߺµ5ÚÚaRµ­ È„„ÅaÛø¾?±j¾÷œ¿÷ô“gƸíi+%%²4R(¹X¯a}â7] ˆ>ùÑgÝDk õÔÍ9’-¹AÙGBN©K® #?;þÙ™2·ÿ)ªwFH@ÊÓœbŒÎg´TH™BL)aÊ9GÞ u] ‚ݦB´u3ì;#°],ܾ×R]]]ÕÖúÙí÷ûóósF¸}Hº©¼÷ (ÄìbôÉ9‡(ûyÚÏó”R ì(M)N@y±¸tóÎÇüéG>¾ë3À#ŸýÙ·ï_ê¦ç™fÿÚ/øâïxÓ·¿þë¾j9…¨¥dògÛ6„°ÛíßñŽwüøÿøów_`ê,JëårÉÆ¿…ÇX´€~øá®ë Wð:Z,„ä³PJ©”Ç!Ÿœœ8NOO§qž¦©ÒUÎÀ«VYã½ÿÜ—ÿµïú®ïþò/ûòçŸ{a¿ï¾Ó „Á')­5•›¼÷…xØ´Eà‰õÚ îÁvŪ#ÆxvvƱƒïwé4ME¦­(¯_÷¯;("\“ë+“7×Y æHS(b–E+çÌb$%"¢µ–Ž, 6 ¿Îc&âf›”ó8‰ì’/ãhn*ù»hÛ¶¨×)¥©º£°X^åÓèMom!KgÏB­`òCã…b–3Q­%ß«ïó_Ä3´FÎ9ÂC JJ9£”r½^ï÷{&B §ã%I)å׿þ¿.ª€å0äî:=ohšF],7öheÇfv*e%ékv8Æè¢3ʱüŸŸŸ¼ŒG"sÎ!†º®ˆ‚0¦Ê9K¥ L1ƒ€è]m«em!EQRœºíÒHpcÞÝ_ÄÎßûä#M|l%énž6‰¼´ªZ6YAr]gLBjV+[7jÑxJÕb©¬­êª9;³M“½G ËÝvб®Ú µ¬‘H€À”)D£­’*ŽSö.ÏÞ }š…¦YÆ4\]Ò8ÆÑ©œu"'SžÜÕÝ ™A ”‰`ô!Ï~sÿrÝ.óì‘‘B ‡iwµqó§ Ã0îv{¥´ó!¦œQ€ÔÞSL9Grsœ'?ŒqœÃÕ0Þ¦mL½’[/Äp'† ¢¿óÑ¿øàÇ?ñüètÓ¬ÎomöcÝ.ºqzø±ÇþÉ?ù±ÿù§ÿ§Ï}é+P‹nr¯•b„Õ‡°^/žzêÕozÓ›≫««gžy¦®k>÷Œ1»Ý®x‘ð·¹^¯«ªÚn·¥†:ÐÐŽÌΰÎÏÏ—Ë¥sóéééÃÝšç[ÉR(Ñ÷‚|ñK>û'~ü-ßõß#¥¹¼¸šg¯U…(cÌAxcL”)"ÊuSåBâ‰;E½¬=–íÞï÷‹Åb³Ùðl';…ÿÉÛŒ7çõÕ5ùÓ\Pqè)û­”Éý)µ 'ƒL?¸·ÄÈ,b.9‹sp|s™÷ÆÃð¤:Úù)à0Ä-åÛqÎI%Ël/´R©ÌQ]¿;þîÒ1Û(=S>o¸‡ǹn[Zk!dû˜%ÅïÃP¦Åð’È9I)…dØ^*¥€ˆKãâ¥xÐ7?Jõ!"¾ó_~ ô& ðÆ_[É’ E«®ë«Ýæää„'ºZÊ"¶Ç¡ÍÏŽ¿]cL¢Èñ+¥dLÅlºëß«”ÒèI"å˜ i-£‹B(¡”™ƒWZ‡”ÆœB-QƈÑ/­ !\í;ÓÃ5éñª;›§Gn\^Þ?{ø–iêíÔ·ËÆV¦Û]£¬Ò ˜<,[P2 Î14m•|0•§„Z Ô„B‚™§ “7‡®×Be£÷’0ù}rL)øÊXDšç¹njÐö»ÝýMNÁ*‹e†yœØ€é ;{W›ØìÔ9!DmJi$¡µÆ@l÷Ýv»m—+¶VÔÖ1fÌ”cæœ"˜RìœóVw”îNÃ…7n¾úËaxþrlS)c¬j¢Oó0?þâ}×}ß·üý¿›¦aV$à¾ꦑ Y›œCó<ïv»›7o£R¢·½ím?ò#?r÷îÝÅbÑ4Í~èoÞºÅ$&)%ǯrí½¢Ò'„¸¿Ùh­O–K|ã8ÆrÎ1$kmmêÒÕÕA¼ò•ý{¾çû¾ð‹¿øââ’bž&'…ž&ǬèÂO)¥)CJ(,OÚœcouâÑ·ǃ°Ôq©›ptÙàe\úH<ÒÌ~ ¥«Xª§i3`ÇDáÁ–Š ‰˜p-ÉŸRhC< ~´‰Å2$PÐúZ.džX†ãˆr:+EÒúXŒKμŠÓoøÉM“w\ D¤DœIyï…>è…zïMe‘ÀSK…X¡äŒ=+݉2zŶ,ßRð>cL8*Õ°ˆZ ¦¬9Ì+gœg¶DÒZ㯾çÇ!©œ‡gû‚^÷}PJEÇ¢H%̱B†`ò$§…!ùR3K©Êù Ÿ”‹‡!" ˜üÔ4w1‡¤”)|HÖjmdŠ“—)J?®­©„ØÞ¿×6ÕöîÓ/¹¹hihaÒà r’"*µºq+P6M 9î÷Ûº®Ò 4p󔥫ÓSÀÜo®´QÊHB”Z¹)`„ìH ) % D@ÁäÀûìݸëR åh­…û}·^¶ó8‰LÞ{ÈÃò˜È{ŸxvRª#JÁ+i†Zi¦ý±²­÷Q㬔JÛ~èÇ)‚BIm롟“cœ›BœsîBÚ·Oùþ4ÜÙoïŽýÞ»!Æa±hªÅ2óüíçeƧ^þ×~ø‡þû¯Ã7@#®úž©ÉàBU×.&È‘§(˜Rº¼¼d›[¨*µÛ oûÛßüæ7ß}á…ÕÙ)±Å;7¹þâ׉u]³Àì!ö=ü°÷>j:†!§´X,NOÎîÞ½˜‡ÙûøùO½úÿã~Õ«žºqr~îöe³dÎiUUÞ…LÜ¥â.Rd2 Zkç0²Öh鯂R@p3‹7RŒñ vT€ Ü>â ŦP|8(ˆ¦G#*¥"áN)Y[…OÎø8²£ ¬ ÷9ª¸žsùÍãÄ ¸+R:`ÿņгc¢ÔÜÂURF›Úò ]ÎY¡È9Þ.e眮,GÏqY,ÛŠÃeàˆ+;UüûBÈ*n ¥|.C>¸ÕjÅ_q„år¯³¬Öó{/¤„ÊBŠÐT0 Ù{AÆyî»vµ )' ’›fˆ 2‰˜km4ˆËû­©¬–)z¢ä§ÙÝíöFª#Åäg—bl´U(¦qä{¿ß£ŒF÷}g•õ¦7}Ç—þÇs»Ý?ýÉOH©mJ¨…Ž!ñ²œg¯”Rúà$²d ~¨µôi¥úþ/€RN“kšf†&JKç&ƶxUsÇ“S³¾ï¥”œfrE9Ï3¥Ì­.î—ñ§ð‘ϵg)švvuS~æ79´ðÔ„eTkD\,¥á¢DkBBÄ|H¥„„P `ž(¨N)<•Ò\Ûòîf8ŒÚÕbGËY0`ŒQ¢DD-dAhÅEô4M(ÕG2@á†zi>–QJ6”áë1¢8¼žwmÛ2s±hø8ç!J!€ nTÎ9úPêA¥Í~¿·MB°uø+ïúƒ¢½Ç·WêRƹqpþ˜(³5)R2JSùœhWJY­£™ÐóÁ-Ê,ÕaÆU™’+§¦)R4‡p-‰0z×Ôd_œ»«Ff†ñþ=¿»j~ö“ç'•«­uãCʄƨ٠¹n«i}ˆíúLÕmÎÊ'ü¤VÆZ³‹ãÜK)‹åb LÓ4Q 5«€2ÄÖ0Sš½QÄ]¯€ÀÇO~âc§Ëu[×}¿×êà2M“ ˆ>()%`pžbróÌËB¥Ì¸9•RÐ û¾·u³ÛwWû¤Þ΃ð„ ìÅv±ßâÙçÚõŠY‹…ò†»A[ïîvû)e’*fB%´–šì ðÔk>ÿ¿ûG?øµ_ûµ­qÎS×ÕuM fçBg§§~!ç¬ô0çëeðž2 H$ ssUÕ)E!$["¢1êêjûÏþÅ?ÿ™·¾õÞÝ»'§§Fëaü+M7k-/-î yÎ9«ôÉÉ ¤\^\uÝðÚ×¾öû¿ï_ùŠW ôÝ쯮65«ED©“Bï#ì)%kuA äœJ!„s!çX/ꜹ2’έQv¸A”DT2z!„ósÛŒ­¸UJÂ"ëÆ’#»3’‰Wìr̤SFÓ9qʆR•ú®pVKOœ_cäì£T……˜¨>³á`Ž‡ÂŠK'ŽYŒ&K)™ÙÏÀ3‰HSq9ÌéXôAJ…lܘsÆÜ|Í4)¥rŒ …`뚃%…””Ê?Ï„˜c\,l-qÀ+!sÆÍé_ƒs®i*ÆøY`šo6ç,´Ö‰Ù[MÓdDô选ƒ@|Ï;>(¥ )j­Qʾï×ë5w%~åI":çj[©ª }tiêDŒÔRÛIâ|»¨³ •0p»ÝUm“E"JÖZ?Í1FkÔ8ŽírRO!fB¥4 „d”6ZEç]ŒÖÔ, žSÌ~Ò໋gO*D·3q®0=që|ÜoÚ…5'v×m›v)¥F¢®Á{çF{ëõCÌ9 cµ­CŠÚ˜IJ)26"ÄqôÞ35ÔjC1aNs?H@)pš)À“Ê@㤠irE¿Ù‰L}ß·u“RZ¬ÇqŒ”C<°¢ƒóÑ{J9ÌNK\,-•D™ˆ õ!uC¦ÚMnˆÂIíeuåÓó›þn7|êÞ½WÉ—<ñÒ—ËÊ$Àå²=;]ìc}ßÿñk“wƒóÝ8H£wÝ> u†õ³[,VÃ0¼êU¯ú‡ÿ臾î¿üzeÔ0LF)ï}m«Ïš„(›ÏÅ$¢$JD…PB°+r`ËÂÚÄZÛÑÍÿëÏþóŸú_~úö§ž®—‹¢ wzzª”Ún·ÆZç\Q+ªëæìä´ë†Íf×wã—~éßü¶oýö§žú‚{wï]×í‡ÕjEt}ˆÇVTb¨´p#9ûã(V ©øAJd­.v/Dă8\¶ÙC€ÓÎ 8Sà㙫<.ø;er³F¹Çh7O¹œábåºré÷1ÎUzÄüÅ[yBe·ãQJ·¤«Œ±l6›õzÝãÉjÅqªð¹ŽlG` Ør¹†¡in&°Q"VÆNÓdëJ1n¸üçèÙǧ|Œ¬Øª„”Z!û nšQŠe»˜Ü\Rô³ÓZGï¸eÿ½Bõ(FË\åq‰ÆäMÅ.°:?“â™TÚ5Be ¾û—>À-Rkm7 gÓJÎjk½÷Hˆ²RB$!ŠD„2 ‘`&)€|´Ú¸ A(5¹YkƒD ('wÚÖC·GÈ­œsJJHY¥´DÈ)z¯QaLÉX¥”ÈÉ»î>„aiÁ‚[\V"ͽ™|<ù¬'`Qû±—R÷»ý4¹ÓÓSk"„èbhWë)úf±ˆ9@‚Râ²ß(Bà\”cŒQRŽUÕBŠ@‚æ sð}?÷Œ¤S–!Ï›ý¼ß“ H4 C]µÁÖUŠ9Å “›ÙÔD¡µÎƒT1ÆLÐsr!jk7›Ï lÆ1 ÕÅäÁ¼°ïŸßô—.¾â5_ôÄË^ñ_û_,Ïo^¯LUýò;ßñ¯ÞýŽ|äO^ü¢ÏÚn·WWWƘyX%nÑ.úa¯”2JŸýèþèó÷þn×O«U= ìÒ]w°Øü4¬òß”"" ¡ @pØ"JŸöJ„ˆ@l¾¤c„;wî¼ãïøéŸþéÛ·Ÿ=»y“%±x4OiÍÄ=6¤0Æ\Ýß]]nÿÆßø²ïüßóŠW¼ræ««=i¸¥ÍÉ~JI U˜DE*  ©p.Pz‚¥Ÿ)ñŸh­‰Òµù3Á¥œRŠÉ4™R/G}i¥£O2çŒ~æÝQºû¼„˜-Å«â+SP­Òø/€÷Ër¦Æh­///1¬n²Û튷)Ky{~~ÎÑŸ/¬P¨J‹Ÿ[xI†£ÆÃ…?ûƒ<©Ñ(EJIBàÐÆñ×M·Ý¬µR›DfK”ÓÉB÷? F)#=€çˆ_š˜×ãWau]“Z¢Â¹å€~}É=0¹ø×ïúýcÕÔÁ˜*ÅyQ)û*ÌbÚ®)ÑØUr˜§aO‚Rvu[IFŠ4ŽMÓdÂy7MBaUUgg«õºÎÉÕVEïü<¦§i²Mݮב =9ËÎÍ“o‹˜Rß÷ÆÖ>§“›·†qhoÞHó$+“¨RJ“j[pBH~–Z³Þ;dš†Þ ¢œˆ8͜ʩ¦«]§ $†tqç6z±uˆ| ÊT#¯ãC)ùÇÙEÀ„b Éõ!e)7}ïCrR]øðÌýûÛ~p9?ôø“/úœ—?õE¯ýë_ðv±î£ëú±^.ê¶y÷¯¼ûïüåû÷î%–‹¶ïûívËxm¥ ö±ŸÝë^÷º·üÓ7¿úÕ¯æ,ZHÃCó…ØRŽôëE¨CkÍ\t"ÖÛB¶zÿ47-ö(-ñ¢(©Ý¾}û{ûÏÿäOþ$÷šOOÎNNNîܹ“Rºuë"n6»Ý®ûŠ/ÿªïÿþ|Ñ“/¾¼ÜÞ»{¿®—Î9ÊØØºLØòÕ2{¨´¡K®QD"y3ðË gjv³øªªæyäࢵ>a1eA*QT ÊX/,üœ›L…àd­@3e»råXâÂõ2·%'2SêºÞív ”§Hüqœï0èÈR©ûü.“p¥ýUHÌÛº.!ϸØJ!¥d,°ýÑ ¹ŒÍñ~ça†|/TÅçyGø¬V«q‘ØBIq%Î?{ï™]Å­Œºwdü3Y¤Ð_™ÜÇþE‰Œ¿—œ3¾ë_þŽÖš+d”²ëºóóóÒG88|0)Vi!€rô!¹D $ÔÊ ¶IXÞ'»j‡8ø85ÆŒý\×瘕Œú©•y!ãöùO4i^AÒq û•¨ ®×K©@)±Ûí…)„°íÝ6Õjurã&Ia*)¥º®»®«jk›†I•7zxœ¦ªjÆqœ]XžJ)c"ÛÔ³sv±Æqqë&xVù¾×ÚF¢Ÿk[AH”s˜')eN €$à< ŠdNÁ*‰`vÓÕV¤è‡‰&O³·(]7ŒýàF×OcÝ4íÉÉèÒv¥4…˜ûiœO€QJÒª ´õþÞ®»è§1ÃÝÍvqv–móø+ž:{ìñ×|á>ôÈÃÒZƒóqßwÒèÓó)ÅûßÿþŸùg?³Ý^ÝZ]×Ó0,‹±l]åD èºUm¡eÉRà €¸ÁW&œ8Œ2Wëää„c_¦%”¬¹ÌÞCQÅ(ý üå_ümÛöã°X,º2UÅ´έ U2…Œ’(E2:‘ Ù€ÌÍetDš‡þ¬Y惀µ¤3¿µãUÜïÖ•¬0`žf·¯•âãDöaÚ÷Éùi˜—ëæª¿×ž,LÓ.Ö'`*]Õ P[J…iЋEêfÌûRBãÉ­‡@Ê0ŒÒhÔm 9%Ê€È#àl"4OÓ!­ˆÁHW„)8$«%L„˜æI‚ôÓH9£OiÓäj¡Ã0ùnpÝ QÌýïÇÙ…J6«Õè¼®êÙ¹ÝØBÌ9D‚!†½ [ï¯æ OÏŸøÜWž<þäÍ½äæ“/c|RÑk²­Ìv¿qn)‹Fi*õž÷¼ëßþú¯Ý¾ýìjÑ PRJf 6zH)í÷=o×Ïû¼Ïûáþá׿þõƈ”`§2ƒ(Êô|qÃ6G¡Ïüçc.€ô1…¸xÝIJÌ9ñ9 RJ.â´Äçnßý©Ÿú©w¾óÝ̾yÃÞø·¾á ç7ÙlvÓ4§HB¨”È芦~ÐÚ»ïØý~o+s¨àÙð½¨ktº,僭‰P1FçY-­µ!8~JJ©ir%ìZSyï=Œã•*¯iÞ·\˜t]dž¬Sj"ÞWéhóÇ)C±@ç€Uìì âÆ;‹³ÊyàÒ,%s¾8è”ûåˆÆa«Ì-:‡¿’fr]ÌA– ·;¹?pÝÃõ@燙ý†®kšfFn•VM|$ñ@ÅðºÛ#3Ú ýõÐ*ÕêX‰S±ÂfõÖwaúèb±(S™ü$¯gÖÅ‚¬Äâ’åá¿úåßeE®¥­µñšÄšb nŽWA I Ìd²”€IdBP DJœ?[,dvswѦÞùÄ-OšÂØX¡˜eC3ÐýûWûí.ŒîÖÙùºYø9ØFï]'­ë…®Ý®@€óñТsÛ´Á9-UJ)kÁZ× öôŒ¥¡÷™2¡­+Ÿ¢±–»E*àÐЩj Æ]1¤5`U™äg$È!*Ày4 @s˜¶]öB!gÒ»]ŸRr>’’.e’j3 !f—â®ï2Âèæ9—’'á•êR^<ôØÍ¿ô[þÁwâîå6“ÆÖÕΣkšfv½©Ì#Þô~þÃ?úÐÏþìÏ<óì§R7nžyžÿ@”Çy "ðÌ^õªW½ùÍoþª¯úÊÏñqõÁ¬”RYr"^úeNâ:vPb`㉚>£,q‹R⦡dukÕ<§B¥+"’Ÿ{îîÿøOò›¿ù›oÞ|è…î…)RÎ0Ž3"æËåÊ9éÀ´”GÅ8¥TÊ‘+‹R òU•NÖõÏG,‚0ÆpC½ë:¶ªgƒ”2%z¡0+P<à4qµÂå'7µ9.²>§3” ŽÐLÁOŠ™{) [¨”–ɽ‚òü‹9 G:öp, WᔕÊá!®³*¸S4Ê…]Ç ‡IŽ—ÿDkmØøŽ“ÒZ)©IàuÚ}Iô¶+|ô­VŒåzZ!gÑ‘ÈÎý–Tà@Éß2ó~øJø¯ o¶t-UÌ)Ƹ0‡a(΢,T}>”R(¥¶&çDnN!©mˆüd›Z+“Çh…£·a[÷Ï™ñÞ#§ÖõÛ¨…]ÖÕºM “¿óg¶¹¸ß®–O<òè䧺±£›’r¦^®nEÂ,ä8Æ¥…¥‚'7*‰9¹aܲvG !„è†a³ÙŸ¥Üžž¡2VªLYX…69%P†»G …’ª:;˜=¤1`Ê ]Ù4M’ôãBœÆÁ ”H¾›"僟ö¥,IT«ÅäâäwÎ…í8f©\Žw//Çy!Ú¶•uU‹V¤ ) ¥cÆËMwß}ü/?uš“õéúj˜gw»^ż¨lòÝzeÏo¿÷½ïyÛÏÿÜÕæBhÑ.ëaˆ¨…5¹iRÌ!ŽÝ>¥ôE_ôE?ð?ð•_ù•Ëe»Û ŽŠÓóUŒ°Ûí–Ëåýñ?ñØcmÛ–:HÁ;áz *{æ:'çL”Š/$AfK­ëKDÚØ£ÑZIí\ð>bÆÊV”/îíÿ⣟ü¦7~KmÛýù'ÛåjgçBÓ4g§7º®“F­ÚÅýiRdï]Ó4ˆ8Í#';\ªǼLÑíä¸PBC‘ÑZ¦SH,ÏU _˜”ÍÈ#¸ž„Ä¢V\†Æþª[_*›‚3‘r—-Ê…¹½¦{Ťhƒ2uË…'‡‰bÕÁÏÙZ-h}àl÷}Ïr7<ÏË[šãe>M'Ž\Uqwd,¤ ‚UŠ‹ºç(`µfÐ}¹\öûŽ< )8Å>°æ{€å1¬Vø!p\æS„× wùT`\•sÛâµüi?ÑP~b‡iPVáaZ·¸š(އ*ø}û®KˆUUUB „„HB‚”rCµj} Fé4op¼s’÷†z‰õ‡Ví²Qç§°ÝÝÿ‹_½p¯1öt}^·UµZ¥«³¥òƇY7Ë8& ÔZûLB)LQ)•³„ªª@‰&V(HÈ,rÖ‹Z9"Õí” !F!¥0º²PŒc«Ò€¦)¹™|®¶R¥èÜ4‚›(¦<åƹ¶f]5ÈM³’˜CÇQ£°M­Puûaö>dHZƒ›ËË{Û iísZß¼A ¤‘n™€¤DÒ;/µÙã¿ÿwÿþËþó¯»wç…df½Z6¬M[ýúoüúÛáçž}öé“óU SÈâôÆzöSÎyÜjµúä'>–bxí¾æ{¿÷{_ÿú×sj°ßE#¿mÛ®›Œ1MÓ|üã_¯×,ö™³¸|ˆ]ÇÝ9 ùÀ;G1´•xÇ!22ú+6ËBÊb¶FJ#0i-1<ýô?ûÈGCˆËå²ÛÛMG„nôrÑ Ã PI©XÀï°!k›) ‰ÆjmDJÉû9¥iù`e|g) Fa,l¾˜„—‹ä8Uê&..x'—ÄŠÑuÎz©£‹³ó~ÕQE–ð óÛr˜ã‰É‰×Åjø±ó6¾wïÞjµ*mD¾Bï½1"Ø~¿_.—u]ó~ä[c}>þD‡ à!mN»˜,ZFƒË¸2g!UUq­Íbùü¡€ïø>›Í¦©êÒ™äAÌ9gÁä¹ÛZ(é|é|瀔~˜ÏNN§±óÉ©ÊÆ˜1™|S+îN÷ΠOÝ#ýécç•R-!ÌñÏ~ïC•²<ú˜®›¬TP-QW‰Â~Ú·'‹¹ïÂåþüÖ£nu]‹º[Ð<õUmcð)8)QUÚ£¶õ4†öäFJ µ­p7ôõ¢E%‹¬Ñ:ú ‘Ü4ó Ä1‹˜ÐÇ<Ƭ€(åèçyœ*¥Rs?*~v‹ªÎ9»ÉѰïä8øÑ¹˜p3 —ûn;ôQHe«ˆ”€ö›ýz½Œ1ƒ’>†9Ã~žgõŒÊËêþÈQݾ°íOÎJ"×Kõ¾_û•_ø…·o»ÍjµÜí6‹eÃͯÕjuyq¥•íºÞH“sž†ñ'~ìG¿ýÛ¿­À7D¤ìA½˜¶ÇGSUUJ¡›üõÙŽë?\¤JÌ’Z‡èg^„(Ù‰ÂZ«”Ùív«å:¥$%wî°®,„@ZcJðÌ'ŸûøÇþrÆÓÓó‰}€˜¤=¹Y)%.pTâöÈ9WÆfŠŒ¿ P!$n±šðuåë=D.Ó®Kî•Q!çÜéé)üá‹"pÑ“(•o¡Â±b‹¬Âb±`y¯"cY4¾¯Ë —šb¾®pÝE¢X—þ£6j{–œžç9%b\ŒIÜzK9I™žVü .ÆNÎ@™Ö$¥Ì"e”2³|½÷<¼Ûí®8œsR›2sá–3ÙõzÍw‰,\ VF³Ö9¯+ÆòøiH‹Óºbª4M'\\äyåCÇOJþóøoøVŽSG;³TF1JW’ D$列)ÇÄå÷Ak“*¦¥×~³Ø?k† #Â#ܨ‘”»»÷/ž¾1Þ<;oW­¨ ˆ @)«º–Zϳ«µUÂQU 4HA€‰²²V,Z‘r7ôVY¶>©Û6&$@Þ$¥‹g ª¶5Ue”JÁûyªŒµJkkâ8%D"×÷aœD¢äæa·)RHÙûbt3m0ÃÐ Ù§àBß³ Bêi7N»q¾Øl÷nŽ(Hë1DO…2U•cÎ(¡$-“Th ;ð‘Òf¹xé+^±X.¥þÞïüèý¿ó»¿½ÝoŒ‘)û¦±9Ʀ®sJã~(¹PÍ!œŸœÍÓôþßø·¿õ[¿ùÒ—¾ôÑGå Fp+­ë:„Xàç‚÷™EA@X¶…¾ëëPè &Èð/9®÷€¦iŠ1­–ëœó<û£55‚šçh´Ðÿòw?ðßáù»uÝÖÕ¢²­‘3û(%•QÆÖ çó(º4ÏcΩ®k­%—!¢dmåCdÁ&Þ'\”qßâ¥\ÐY^®×Ý\x ³‹ 'E\•y Kkžç2³Ážœž\G‚X=™›­×?®Èõl›#WŠ©àS|1\=ñ(ò›Gñ©¬” £«.JâŒ?rÞd´9ø€£Ôa(oƒ2—ÃEâ¼û‚!ª£Üye«ÂA€"­Uò)­u?Œ×û3Ū‹K.~Y¢ê1\ŒÅ¦JÊåv‘¢åòá¹Âeã¥[Æ- cƒ_ ”’ßøß–r¦cùs–(°©Œ)8ŸsŽ9K)SLZK%ˆ²7•Í ³$rv:\Ýô÷Vݳ«°=kd»\,Vçl÷Éç¶Û£€­©ÎÕI› ¨J#Ue@P¦¬« }¢Hh«sj¹M¤ÎR‘¶¨4 ÊPÆipRؘi=‘¬oÞ”J€Qˆ„JMã ”»ÝV¤¤¤”J8õ½ú|œ¦49IYÈ”E"ƒ²ßn% Ê%2‚âÐ ³Ÿ½Ÿ£s‘„r!mºñ¹{÷·Ã8„èÇHÊ3Héb"ƒw`ô#iMÚîæù^¿ÛÍsPjç&Q™§¾ø5ïúÕ÷üø[~âý¿ñëó4ÎønWsc‘qi[…( Ã’VªGn=Üo÷ÓÐÏó„ÿìÏ?òÎw¿ûCþðk¾ð‹o=tkž]ù:H*©…@ÒR•-TÖnq+ùÌùÀ¤¢…ÍoçÅb™õ}/„ªªA!¢U „øèŸ?ûý»ß~öéÛm³X¯ÎªªÍ™R"­4‚ Lˆ2g Ý~”R F«ƒ”BkUtŠ Å˜S2FÃ#i”2òN=8•(#ú…ïs•8ÂRñìBD!¥’B˜ÓÆ)Q)Éj·E&Ế0ÿ²Œës )Žª¥~áÚ‡ùî*uPŽWJÅ‹aalð»qU^ºˆH)V¤:$„ÀƒRºõheøX)ÁÚ_„"Š4ó0 |©œÑ +Ä(„`ßCï½2±qJœg±.…P*¦ä¼G!Ÿ7Z­•”R ’BI!¦ÙTÓh}0vωáù|”½çÈ[ÔY‹®?ãYEJ›i|Åö„úшä7¾á[Y§,h)÷¡BÄ­R*ñ=;Wi äS €2%1L0Þ}HÀÎ wkNÏVÖ4it÷?þÌ瞯ÚêÑ=¶:_µ'Ky Þ¬`jCSÊJ™ip $Aèªe”­BiŒPRÖur³ÔJk£´´u#„ ”S D¤¤ðÞK¥cŒmÓHÄzµV)fï0åì£@ЈfÙ%MÎ2‘Ì.º}?í»0Î1‚ û8ÓÔOÁ…ࣟ½$5Ož@‚)¤Ûw/ž¿ÜÜÛnç ^È€bô.ºQb̸ÙíëÅ’”}xþòr3Œº]’±Q ªëßÿ£?üo{Û~÷ƒˆÙÖ¶±õÙéÙ4L§ë“iÚ¦%‚n?t»þ‰'×Zïö»îÜæ)å´X.¤RU[ãø‘?ù“Ÿÿ…ÿ}¿ï^÷º×P!DUÙyv,@DÅõ3¿T7Àë4w"ÊÄ´Á‰ÕqÅ`UUݾoÛ¥Ö‚šFgŒÚïæßü¿?ø¡ýéÕÕæÆùC§§gMÓJ©û¾ÞûÊTÇC›©äd¬išš73 ¼v¹Ûx$O ±x1¢ÀkvÄ\,óÍòž/ ¹¨œŽïÇ–‘àÙôæ­µ)Å”Ò4ÍÞ*L´¢‡UˆT\ÃŒgŽZLe2(S‚;ïºÃÓƒ.X…6U"ç×(K"¥p݇çöŠ0¢àj´¸r)uNä®eiV^—ÜãÈ%„pÞWU%>Zšæ1£áèG™Ãƒ÷Ú5û¯¢„U€|΀ÊÓ8 -µŠÏXQp¿æí¦ U´^ø2J;»8t*Ü<Ïò¾áï !RÎtôRR¦”V«)¦)°|¨R˜qÑ6$¢TIÔZSMÛ³ñ®vw•ÕÙÊÔíxwç™çH‹ÕÙZJTH˜“¶ÚÇ`WK±¨¢T•1íXûÆZ…²],ˆ…”¶ò³rÎJÂ8ô1ù 0 $²m*çC{²†¦Nó$R9ÆÝå•Î9γ$B@p>»yØí`Sß‘÷4¹Ð 4;ƒ¨2‘÷anœ)eÈ#ÅÇaœ{'„š\r®öÝs›O½pw*Ó‡¸w>Âý0f)¤²R¨Ñyu¹Ýu“ #Ê€òîýͽÍî…ûWãìcÎßz˜‡4…Ô1æºnŒ1‹v5‡P7- ÔuõÂÅųÏ=/µq”tSe)åœs?ŒJ›'ž|‘áÿ|ÿûßùîw?ùä“ggg«ÕÊH5 cо¶¶¶6Å”R.•Ëu¦èu*C„xú"e¢D¥@”FÙœhè¦ÓãüøG?õ»ø½E³¼yã!£ícÉ÷KçC‚9º ¦sh+?Ë7ü­ÿöàt¨”b¨ó•ˆHi¥µ–êà&½s€ä£§DÉ…J$1oêùÞ#ØÑö6…aµjuÝî6»í½K7M7¹e[ DëÓUN @x8gÌR†„¥Ô&Ç8ù M,Ú<*%mBTZ ¬j›bJغÉ.„êì,/…ÌDeP£²UÁ¹€Z)uÎä}@q`H1èÆ?¼s)Ô¿²È5x‹7„”¢àÇGÝQ`ÿDî©YäëÞÌŽ­Ã’[ñ†áä䤀hÅa4çLù0îÃhó§¸G“.Q½÷J+Dˆ1TU]zôÞ‡"£¢”.eTÎÄCTüuó0,פŃšo܈!ÆLY æœå1-*³/!F)¥ BNìPG_Åëôc¾x†± UóSNK9ëç'Y×5:¶m‘·¿>BÄïÀ¹aÁ°8,2D(¥”ûo*£ž’%Íà`RÎóÌ.BRJ¤$ ŠF2WèÎóå*\Äîùƈ“õºÑõp¹½ºwÆÜxøæz½ ÞÏ~jÏβIšæÆCÚ49«Åú†25J­— å$µ2­%ˆ@Ñé¦B!ÁH© jíCÐUë}PÒH©CHnÎ…m[È©ëöJ ‘Á£Ÿ¦Jéè<¤HÞ‡yJÎi)Ì$bôýàÇbÌ.¸®O³7(ýìs kk€H8ã~˜®úùÎÕöù«M @U儈†LNÀ W—³ËÉ4ub;N—ó´ñ®Ë Úör?úܳÏo÷rµš ®³Ñ  jíB¨ír½jVíÅå½”¼±ªª«ÍæêÎ盦Î9+!¥9e«õ(B©”Y¬,`ŠQ tÓÆYjaraºÚäyŠ“ŸúÞ3å,s¢²Â;;ßOn ér×_ìºOܹó®C°«UbL© )kíö“»}÷B·m* 9ú؇°‡Œm{Ñõ·ïß¿»ßCU‹¦öhLµX ó$¤h öïÆáég>ùøã)£†ixú“Ÿr1°côÎ D)¤Rò±G].÷/RH„жmÛ¶Á{côjµâ=ƒBܹ{çWßûÞó¾÷Ý|èÖç?õ*rÎRÇV‘'+[ñ3 Î)$€`¬QÄ@ÿïoÿþÿÉG(Árµ^¯Îú¾@ï½Vz·ßûìQñ‘µº6vn&"¥4@6Ê µ£BEƒ˜I•©Ø_ö`A”sJcÐFe^Ü|Ù%¥âªŸâÄAJªù‘(¹FUY†x‰Hk¦kŠ»ÂØ.½Ô2ÈÆ˜¿ŒÇ¼8W*„ì2Yr½ôÖZ×u-…dxËZ˽¾NŒf$«À7uS§­=ŒÚðG°k鹚rág¦1)æxŠ M¡þç2ùhŒI1ÎΉc±Êß~a៱„”R)7NBˆ|ìë•Ñ‚²„8Žðµñ´M¡Œ1c¯ióó)dÀ2.Æ´¬"‹ÌàüYÅ}™Ù$0M“ü¦ÿêïi¡šfÑ ƒ”ªn‘DÔ•rQÓ.%d¨”ÕREÈæežÏRâîß̽œ.óÔŸ4§n·C€L¡nŒY)J¢4zJACVvã°¾y.­qÞ-Nõ¢uÓ`ªJÖµ m%AÍ>ietÕ!6-ÎÓ<ŽSJ©jç¼¶6æ$ªj3Cc¬È¤Œû= ˜ƒO‰¢ °(höä}ç´0d?y"C!S)¥ Œ!ïöÝì³Gõñçî<·žÙ\yI ³h§”<‰1DÒ6îÆéÞÕ&’¶ «Þ‡}H³”ÛàŸ½yûâ]¯×Y€4Z(Ù4µ›]eŒT2ÅØu{!°©ì+?ïUÏß~þÙ§ŸÝmv‹Å¢2v½^‡B )'©d»hµ1ã4Ÿß8#ÊÝ~¼C @”c ÃØ ”Ó4ß À«Íå;ßõ®ÿç·~ëK^÷ݸuS*•Ÿ±ˆ.8©  @©•^J•‰ŒÖD”´±û]ot¥¥Ü^ÿ߇ÿôwþÃïå(ꪅ,µ¶Ä:s@ˆJئRRÌnÖÆ¤œ¶R*Ƴ€ 'BEN PLãh(Œ6}×-‹yš•”œ‘UuE”«ÊJ)ŒÖ(Àh-PR¦R]Õ1¤AS·@à]°¦(½ó9‘TŠè ”{ @s2JU•úž2Å69Q Q ‘bJ1Å€@I™ÓágkŒ’*ÅDJÊ¡ï6tìE|…ªäJ“bˆ]k彫ê RŠJÉvÑÎóbÙI€HB¤À’SÄ(@J¹hÔurR(­bŠ Pjb 1f">vXÿh÷© á+ç¬àQAð IDAT¥Š!JÁÓžˆ¢Ñ:Åì­µ)Fç½âqe@ÊYI©¥ 1@"2Ö¦œSÎJë˜R&’JQÎ|Ìó,¸¡/¥±¶ªk©Ôì¼ÒˆÊìAŒ^J¡¥D!†3æLRHcl Q+3¹Ù¥˜”TUUA ä7Ó·ƒ!¥¤QÚy‡„³sFiŒ!$ï)g¹¹2€Ã®·v¼oº»¢¿”y^/ª()5)'Pˆ ÑÈzµu#”ƒWM¥ê´Z+c Ii ˆRT*ùГ’FJ+„ 1:P)pž¦ƒA€­›œ¢¬*)PH“‹Î‰ $ 1¦ˆ(g­¤"„É«D±`òs×Ñ4¥Á¥É¹Ù ”r y]ð!GŠ@.ÃÍæéû—Ïmv=Ð$¬–•ÉRm‡¡wÁ%¡öÓ|¹ë^¸ÚL!‘ÖAˆ$ÅÓ ›ÍÝí6IY/—¶mÑì\²Ö Ã(¥hÚ†RB¢ÏzÑ“O>þøì݇>ôá®ëøgYêý~=ôУ>JDl©ò9Ÿó9ˆø©O=½\´”“6–{Æ‚þ¶Þ4è¶ô*[ë÷pÎ7Ü{»[Ý’è–©A„ „f¹Hj!@ )! @àŸR¸Ê8)'6›")!TÅdž`c<ˆ Œ4 u·¦n©ûÞ¾ã7sö~ǵòcóÞ£&·TÝ¥¾ß°ÏÖ^ëYÏ ´³G‡¹”9ë¼¶úSŸxâWýׯ?{ó%/yé½÷]"˜¢6`›¾6—s6ÆANE‹ Žüééôgú‘Oê³N{­ìÁòØ ­±€Š™”RÄŒZ¡CLF›Z«Bl¢F¡ìÑ·úÕÖH£´µšTJÒëÚrMÆ7é½@ÚÆKh²¾†4õ}_v$ AšoŒ³nç8h›ŒHm5|?¾1l›5–\-ƒÉ6Ì›Í^óül còí¢Œ“ƒºXe4vk;'mGˆ ÜÈGr [Øk§OjÊç}NÿþOhë»è$lW“uD¸íŤ…ÜJ2•b­4±@ǫ̃”Ø4õL³©PJÉ l‹*EŒ,WS:Jï½Ñª±[µVÌ ÌJik]›[ÊáÖ­``mzOýß¾å•ÁyZy£¨¦¢Ði.0úÞpU” ´ªÚ( 1œÕpÈÁÎçK•Ì1¦ÀŠQ£1µÊT´5~1tËÅfŠ•­Í v*›¬÷¥Ô˜J‘”Ö€Êy7ÏÙXg¬6Êh»A@P(ïºZ²1†j&.Ó¼¡’M®ÆX®D)c8;/ëM:½p•ójcx tš—ZcV•uÑNU‘‰I©«·n?uóÖgn^¿=ÍÔy=èü4M›9ª‘¹*5EÀÈtíäö:§@U9[ž¾þìõÛ·•5hÇmg«´ïºZ)çÒC? Ò0÷‹å[·>üÑÞ¹sb¬=88hŠ9¥Ôóž÷¼ÃÃÃgžyæää¤Ä?ù©O¥Rî»ï¾SJI¨ µBm³ÖM›É(s¾|ù²1¶–ª­3Æþ—~ð×ýÿ¼zõÚ7~ã7.K®Úlƒ–‹¥ÖfžcJ¹ïÇsßÚ¨ë×ïüɇ>ü‘ÿÕÑÁ‘1.†tùÒ=ó‰¸VBTž[㌵!%fÀœ ̱‹µÖ¢Ò´'±nàñ>äߤéRz„F#lFå.—r°ÝvíòÙÛ–³ÉbhGËnÔÖò8å&E–Â$ÜŸ}àI ӽݭ)ؼ-¯»¯l G)L[¹ ¢Œ‡MÊÓ†MáÍïDšwõ­ÛYÚ@ÝÍwÍüg›ë—sc*íñ6šö“™YíYÚµš µÔ»„ÖT"mLÙ3ÛkùFµïœnžéˆÛèɸRBž³v„Øar))Ŷån`)…v/YjmUÊ `[+eQ+?\0¾/ÜÿlôßyÓw[o¨fÅÌ…½í “RŒV)®Q#tÖ2@^jêV·/Ó¦ÏS:»é!X]+äÊéðøØ:«•pQÐZwŒ1~@ëì¥+Ý8êqS2¾³¾CkM×¹a4Vkë*Õ˜’6®_×RsH1æ$eÞvÒJƒJ0+Tk¥‚ÈÔk Ú¢ÖŠ‰T­ t ž²eÈ«5Ïi}r𦹯êÐã¼IëÕ4ÇJ]çzç®]»BЪ8ÇάB\M³²nŠ1VŽñ|Žga> óSÏ>ür1Õúì­›èÌѕˉiÇí{ÏhÑÊÑ=÷Þ»^¯¯\¹Ò÷ýÉùÙ“O>%«cŒ±öää¤ëºûï¿ÿÒ¥K}ß_¿~]îQ!I. ïý/xHaãÈ µR{IqãŬ6ëæî$ä <ðüÏ>ûç>ú›¿ù›ê¯øzD €Z›Õj2ÆkmjÅh˜õ:~àþøcûÄÐ÷ÜsON¥Vv¦+…ä7Êm$\f@…ÂËÜBÈ’¾Ç’ckS[ð Ù²õ/-‚Ežd}¤cj„ ¶¤kÈ‘<$f·ÂÞ²ºñ®^K?QJÅ[„ŒÆ6‡bÏ´Ž– #Eª±@¬µ´[PH¶{“…4ím M¬q¸DW´Ëgä}”`fÞÝ=« ú©‰ V¶Ÿn[§öBŒ„öµõ&f÷e*¹9I4“åö¡D ÙÀ;á»míêwuV¨¡ Lì»NÎ[­Uï4ÏRkI)ñ®‡’³Úüζð¢èšÒó¯wXÛSñ–·}ŸRh´UhÌ8,(WoMN S* ä´Âš,Å!_ gׯp:BRemuŒy¥^:´Î•J\*e¬·ÖÛŠŠ­OÌÖºLÄS*ýb¡œßl&P¡6Ni…J»å‚R™C0Öº®÷¾Ó[(ÙÝqafd@àœÕd¬)):Ø *›É0¨”W7nçÓóùÖ)læp¾¦”iN†•eUB‰±TÔØÕ­>~öñg>õâ¼z} eÂRY;?—:†ÓÍ´ÊyS몔ëgg§óä—s­ëü8öË#oK!4Ö±µ¶纾î¹çÞ›wî<ù¹Ïà0 Ú˜iµR×u_÷u_'¡¤·oß¾yó¦\Ny´$¼O)uíÚ5¹„ë\‰‘{Î4 µµöøèH!Jh<í§wî¼ôá‡ï»÷ž‹óóßû½ßÿßùÝxàÁ_Ô÷Á‡9Ř¯÷7o¬?øÁýÅ£AeŽ.{ÛÇ™Tß/b,ÆZm  ‚ŒˆÚh­µÒš*±ÿiTÎy¦ wõ@Jk%Úfb¦Íf’îFþÈ3#xPC‹[¢²$K3%Ì€¦ïoâm4šGiµ¯×iÝœÛ1¡ËT*£ï;&©t³6š˜ˆÉ:W©3*T»!NŽM¢&Þl´-ìÛ€q/..š%©tgÛ‡v×$*¥j¦6ýh¥…\¡•N)# hmZ?($»†¯oUß»BÓ²¹¶^ÏΉËh[ÌÉ6½ òmï!C·\—­SÍž;Å~x½Ñº™18kQrÑ™æi*9 ^ ©•uNi]‰•±6„ P!k­rÉZõ ÌÀ ò5€ yÛæ˜­Q#Ã&ßù”£¶¶2WÇ©ã4–µ½¸ÕOw\Yw–kÞt½²F×wJÛæ2ç4ÍJ+ë¬GÖÆö ÓÊ9ÖhûÁö^B­Îuˆª–šS©L9—˜¢A]*å\J­¹–*¼¿µ¾F†Z RU ™JÍ‘¹æ2Ç@!)æx¾â”ój3‚Ö¡àœ0N… ¢Öîâbº˜Â ”=-õ‰go¾Ò÷Ëaj­ me·.»wƒ–Ãp°dk<‡„±–­ÖJ+ãlªd/©~@£´÷à0s©«iƒ[“0pÞšÎ[£ÀZgŒïÆ…7ŒÖyD…SŒ2ÛC­ F.@ÕM1qÉ•„ʸ <‡²ÞpHñbU7s™"WžBŒŒa&HÎ…®{òüì#W¯>úùÏÝ!CáÕzVÚ¡±`ì:æ;›Mµætž§J›RÎc|öôä|p*©_çS.€ÊXgP+¥‡aQ+YçŽç9ܸq3ä„Z-ÆåjµVZû®ÓÚô}OÿÄ'îܾ-üàRÊ•+Wæyž¦I¡yž¥>>>–¾ãôôÔ:'œLkwz ɼ ñÒÍh”æJTëù¹Åb±^Oö¡?ýƒÿü‡aJ7®Þ¹urxxéààÈšT˜C)¤µI©Ìa¶F¬;-QÝÂ¥ 8Äsìú¡ämÖ@—¸=2áV\b¥B@Jë’ï æ-upßé©™½ìGN‰=S;'ÍÓ]JFk¸¤Ãjõ¥#KÞf¾KÑÆ@TªJ," ¶‹˜Q)b¶Î¥œÑX[‰hçfÓÈYû RÚƒ×ØR"ÛØØæý´gDIcÞ/‹2¦‰Ñf#d6öSS/ÈÙÆA¿EòlõÛ);ïˆÙz€J딳u. Jµ §Šj!–œ•VµViÃZš·p,î^£-I9%g5UªÌä}×ÂecÊ"Û”ã±ÖêæÅ8 _AÈ2lÊËéÿ×6ÒpÅÑ• 2cJÍ}·ˆ9)£bXÛœû´R·L]™¼vÎl0Ž—Ǿ_ô1GfP Înß.›Ô±òÖ Ã€Þ ÓX9ÏTªÈÝÑáöò(»^kâöKrƒó €¢œ"•’Kôã躮„À5çpçmŽ¡¦¬¬†”0•©DWA­&šæ²Z×0ç”ãfc2×T´rS(kWƒ*¦_<}çΧ¯=ûø3OGß㸰ýp1ÅÍ”{kBF*0Í›uœ«RØwçsØäK¹}q6¥œ‘ûåÓ†*jeÅKZi1ópJRB%¨‡«W¯ZãZÄ“<œôr¹D¢ã}÷ÝÇÌçççZÉÝÐPa‰€·ÖÞ{ï½ëõf÷îëºÎ3oñïýíÛ·K)ëõFPŒÅbÁ•bHýèG/;ç6›¹óÃkßøº·¼ùm_öðËnÞ¼•su¶#‚-¨1 CŒyš&ï:è{_JY¯×¨`ÆêʤhÆø}ņàÁÍ^Ž9çL\vH =GßîÑ­±L×Iß!& uµóááas&iV¿wc;wÜ‚‘[±@Ä9ÌÂii.D”JnÝA¶£sÍ™·¡ìˆ8o6 ‹iž'­ùj“`‘ÄÈ\¢tä+Ås¹íö9qÍbtŸñ$gXxÒ[ÉÈܬ¦Z7·µ7ØÊÍf#¬z­õÁÁÁùéÙ€cô ¸yØKó²Z­¤ºÉ–ãnô7“÷Þ+%?Mpq Řçyë(¿•:±Ü*¥¤’C¥l]Ú…¤àbŒó<+m­wó–‹AJYËÜÞÝ·¦=ßóöŸ(¹§‘BNè#0ÅQçC˜ùöS~}ëùƒ²qΛ´^-”ÖÝÐ3B¿\R¡bXozããÂC®ÉŽý Y Œµ®³ËçµÑš©ÖZ¬ÖL$ÚV¢ ÀTkŠÖëµ3‘*Ê¥¤hwvm!ϳAÅ…°T[*ä DR:_çÓ š¦,öíq ›MðÃÁE)ób¸­ðO<öâcW¯•å.76sFÔÌjžcau1ÇdÍlôõisQóézs²Y}þöÍ h†Áõ#+•‰­óµRïûR*çœæPcZ­×/}ÉÃ'§§7oÞtέ۷K®GGÇ‹ƒ¥ŒQÖÚÕ´a„ZØ:Dß -ÔV^·{ á0„ ”<‘ѧÆqä0O%§Z20¼ðù/¤Z¨ÒáááééùåËWnݺ¬_ùÊWý½¿÷so{ëw!ë““ó0g&•s!aýÈ£Sj†^£´ºX]“óÎyS™b )ÅZ…F„¥RÛai‰~‰QF*AýK)€w>*ïeÛÝ’™e+'[‚}cïyž%0FþVFæÖq´ldyš• î ‘š~c»+TJR<å¾õ (YÌÛ®m½^‹eŠ4zÍK®KJÉï gZƒ3 ƒ¬á›…“üwùÕbV%Ç ½s“æ´P29øíèjýÅÅÅáÑ‘x·ˆé­Nлæã,óàÖ‘bÏÔìhM³ÍÂ1–”Ö¨T.™˜iobwóÖ‰ ˜û¾¯TCÚ&ƒI¡oykÞ{ ²ÆHG¶s‘ gggÃ8 âryІbâ-׳ÙÈË8¦¬²Ú(…âw´íwœ ½ë®èío~—V@T”ÂS!¢ZÓ|qäè²£Ÿøóçùr_¼9¯!( —žwy<³JaÉU± !¦˜ݘs®1i…Õªêô¤ª[.ˆ”®ŒZ30R%.%†Ð-H„Jiçô¶ÖjmS.Ã0HaÕÎÖ­Qqž ‚BNÓ‰ 2Ô×+J3(H…צPÖÓæâBoQX<[oÈtW×Ó_\¿ö{ùð=þÉwöøò p²ž3hsaTgëMB<Ïᙳ“‹š/jºq~¾ á|½9¾tÅCa@­ç”}׉5àÅÅ…Ó&Íó—¾ø‹ú§~*ÌóýñÓ8Ž×¯_ÆñÊ•+ÀPJYo6íÕAÛI•’©Õ%©HªU³ñnRûq%—Á9g¬tU˜™©ä*ë‹ÅòÆ›pxx¸ZmV«iµZ‡9Ó+¾ù~áý<ò])–Ï}îik¼V¶ïGcLε”¢•qÎ2µ†AF›*«LDÞ±y‘µVR:­5Œ A§!„,!õ¼•¥Û"¢RËÎT·H”¹tR-ßTÎŒ<ÏÍpNîÑæ£Ò°-ÑñíïÚF_|dÚ;¹íÑsÎÞùý>h+’]r_‹êjŒÐ&Ük+¿ÃV¼"’ù–fÝ×Ü™›ÕrÃÅ¥alìó-ÿcgÏD† E¡UØZë0 S˜[üâb±hNUûÙìAåC‰zÎÙhSŒ)q3çØ‰~´Ön—B$*Ÿ‚Ñ:•Ì»csYø«u~mr%ç,3 u¦ ïEOÐü û¾wÎ뀉j‰è>ØäЭ]mçG¿ý;¿O‰”õ¹ÔÎÙJŸ7c:;Ÿ¿×„˜§°Y9ïüÐ/ÇîàÀ ƒ.¼>_ÏÓ\J5V‡iz°ºXE½¥ÞGG1Æ’3Q%&ÔšjÕ 2×’-b sŽ¨ä”ŒqfqH1ZgH‰\%®Å"pЍÀ šÎCœ¡V•3L3Æ Ä˜«ÍÜö€HuJ‘S®SákëS­ÿÕ‡þøO®èヨmdŒ™S¡ 8Çrr¾:›Ö” ðy ðE gsPÆæRŽ.]))ë:ªŽ1Ì|~rz0.þë¯ýÚ_þ¥_úß÷¾¯ùú¯ûŽoÓ°\~èOþdµZ=ôÐC÷ëÕ*ætåÊeZÅbÑy_K)Td -7±ôÌò>ŒYVÅrC'''Ó4’±zgWDµ¤C€R"8;;»rùŠRfµZŸžžÏS|Õ·¼ægöç¿ÿû`ZÍמ¹> &V2¥!je´1JÈ’k) UL±ÖBÈÚªJµre`%ïpµ{7#£ÕÚh=t½VÊ{׬T¶8b߯X"껡m¬£•g~¹\J p+d;½ñŒõT«&0”Jq)µMþ‰H6Y-ç†wüOaökLNI"ÖL¤•’ÿ©æq@¥Š3Óv…%üx…Xr¦JZ-JS¥’³ïº'ÑèïÍŸ³â^ÞûõFBÉJ[ÔlMwéM5YJ®”e@dâJ¥”Þ9 À}ß1“5ºRq¾3Z[c`÷bØrD´F¥bJÃ8Î! ã(F=¼cá v©´.µ0°ÚøåÕ¡Q‚02”ÒÍÕg˽¢Š9)[!ñ/*99c˜½sL¬•f1á*¹È…PˆF<Þöï€ÊƒÌ=”LG´)7ž< õ=8È7®>sÿý÷\rÞL!NˆŒ6„\ ¡QýУVE£?XØåP¬a…£#0*Tašç’ UÊ1ÊÔ-Öu\r×¹¬X¨P.\JžVç]ß•y¢ã´ÁRÄ ­¬Vq3qÎeµ®sH!ÖuÈ뉦PS))2±2ÖÐwžéß}ìñìQë9N1‚ëzžs-ìtÄZ4Ÿ¬W§ëUE.µÖÂÎ:­´±&—2Œã<‡ÎyoÝë׸ÿþo~Å7ýʯüÊýè{žÿÀ¹ÑS|Ã+¾ñ½?ú£Ï<óÌ£>zýúuDtßl6·oÝîºd‹_J1ÎÖZaçî´¯}—Ù¤½Þ¥†áÅ/~±s>¦pzzZJéºÞ9‹ •ÒÓ4m6›Å¸œçxq±^]LßòÊWÿ£ôþGÞöŽ¡_Þ¸q+ÎÉZBŠ!ãR*¥È›ßtšrRjË]êû^~Ô[wðåhµm[J©²•¢ÛÆÒ<Ï­ÜìdÉÌl´‘æQž·V>ñ€IþÈgoŒê»;©=“Ôô6ÁÕZEDÒˆÑwóböƒ‹›”W‹‚bÇ/mç¼å 4e •ÚHöÍi 9ùÁà]·ö1µ5¤îüu¯Ñ}땜r×u)'©PÒŠ¶éÏ¥ÒZÛÖ¯ÛÁšî¯ µVªÕXK•R΂·hèf“ –|cmÜ%ɯ´íOf@Dñ{¨ÛŒne¬•Øs¡ÎïêÃ8ÞµT؉™†Î‡i–—´ ñ-fQ„¢2M·ãS p&c{àÒC®g7n|>seu ¹Ìåââì¾ç? œ†ÁX5ÏkŒ&¨¹ÔT T;xÓ{ï·Ž\¾ó°X”µÆ¾hK)ÆÚÎXík­éè{˜"Ð –Tj)eèèÕf¥´ö~PSÌ” 0:ëbŒc×C­Pæ`­ã˜s KU™¡ÔR‘KE…] )k53ªãK|ô?®Ìpp± J)£]&ι²âªˆ((gçgÈè:—C$¢Á/ íl)Å;ç;;9¿½Þ(¥^ý-¯ú™Ÿù™¯ÿú¯€³³õbìw²ƒO9ó¯üÊ?þ¡ú¡w¼ã?ö؃>(C"†9Þ~b0¨JÍÒMÈ¢DÜóÑÑ‘8r@¾ý±Ç“•óÑá%ï½w®”K@TG7oܲÖßxö‚~Í«_û?ðß½üå_yëÎéÙÙêúÕëÖÚÎZéZJ×yñÞÚûæÔ@fÚ ¾Št|¬0„ÔuCι”$L ¥”3Þ9W ±˜(2ÕZ³R¶¥øHº-…6svÆ’-h@Æï½L.ÍuD¾ 8r7—–y×êW[Ïg«Eéµ$ÅØu·©á9 ÔÎm—›J–Î$< »[…Ö¶X*Áe('Sªpc0T¦æM*„ÌÆ°kAÒ‡nýü¨ä’–‹# —šÀy ÀãbØì¶i)ÅaècŒF«}ªÇ]?°ÝB@Ž'çl”v¿ð…h kwÓ- hµO—¿»ßdØmÛ4¬J+S˜BÊÚºBÌ¥2€qŽJY¯×-¯°svš&*¢'æJTˆŠH¶”R!LÎqiWµæ”2™¬ Wr\lCÙ„ÍM Ï—^ÅÍ9(|á _H€G—ŽNïÜ".}ßO›MÚÌ%åq{«Àë@)ÌiGï, @ŒS˜Uו©Àލ(ÆHÄ.h]B2bÆPƒ1ns±®µŽË‚ò*9cÝÑMk  %UNQ+L›IÇÍRJ›5MÑÔKˆ!.E1éT¶WoÜÊËÃÏŸžþåSO­9ÓÒuµrbf†ªÄ¼AfouŽ%§rùøÒý÷?Y=sõY°&ÔBðÖ]:>~Ýë^÷Ö·¾õu¯5U8?[[ç«ÍÆ{F¯¦M·õ®æ—½ìeù—ùË¿üËï{ßûÖ«ÕÑ•Ë9ç®d~i)m8o®&Íq±­ÆïF¦ï;Á¼æi¨Þh 1f­ý»~èGþöë¿õå/ÿÊëÏÞ|ò³Ÿ/Z[kürqXkçTJYŒÄUìc‚!hNî&¿Sñ´s®sÎ êœcŽ%„õb±ØóE@A¬[,s­w!!DTÆ ñs: )[2.ɧ–áNÙÆql¢2Ь)›Æ¥™Æí ëZ?Õ:š}BiCÁÚα5VÏ‘°µ¯ßo©ÚÏÙÞi§V½5‚Kî;¥H%;cé¿Z Fß÷óì¸ÌÊÌ™J)¬ˆ9åb¯5¤¬ç²tæ+_þ/xዞúÜçŸøÌgç9PQpß}÷ÿØ{ÞûÈ#\º|¹š.feM×u…2#€VçÓz<ME`L1*U‹!¦òîw¿ëmo{Û{ßûÞýo7Ìsß÷ó´¡-¥˜RŠÛ¥û<ãØðΦ59??oœõÝzØÆ(¸ ]OÌ1$vª”òº×½áïø¾¯øŠ¿yëæé_<ú‘££K¶ë|JÉ—s€¾d©¼ed©ƒ µBäZ©s>³ÊPµ¶ÊØZ¹Vú…﨔’S»>ë´µÞZ¹Ãò>.^%[1jÕ "¢R›NWyÿKù·àw‹ÅB)uzz*LΖÜ$µ ‡jÃÏ Ôhó R*ÇÔªX›õZzE ÚkmÅ>˜Ý—-0µO4±Qo֣̓%íBZÆ—ì+¦i’·‘T" ÅW”ª4ŠiÛ†ºÝ"UzÒ¾ïy¯ë‘r Äâ)ØòÛwE<ϳ¶U)Uv-X·SXç7ó´8X6Ãùà•©ØÆ""ÞZnÉ%œ©ê¶ß¨µŠÎT#H³¥¤Z³æZP»–>רÛ"B^!âG¸´ïÛß5pÄÕ NÔùõ“†7Óôð—½4Õb´a.%/Rœ3×R³4ÝbkTo+²_Œ• INHLçwN ¢B@¥ …ª” •Ã*¥*PzÁy_kÝl6ΚӓgŒ5fclžæy½éî]i"¼>=ᘠC× ‘B™òBŽLTjM!ªªOÖ3]ù«·þùŸ=º6ÇeEìœ5ÐhæÂ5i S‰b=vþk^þò¯ûªÿÊ(ûgñõ©'B)sÉ Õw}×w½ÿý¿øÚW¿¦ëºœ¢R’ÇíœÒf5Mý0hëB\YÊ›Š1–<.—ozó›¿ú«¿ú3ŸùÌg>ó":<8ÛtÇf{ÆDS®µvâ8Ž/xÁ $5[ëdEX«ø™ÁzµYŸ¯¿á¿ù¦Ÿÿùÿù‘G¾»ïÆ[7OSª -“ÒÚ#¢ê|·kI@~/¡…"ñÍÒq–RCL¾ëäöCw£R*ÌA"ç¬qC×y+^EQë»ÌÕ’‹PÌ„gDD °ÑVeIT*‘ o1ï…Ñ –¸wK…:88اe¶f°y+·]šÖ®ïö¢Öw4:å>$o­%`@PZ½u@‡&é˜ö;—VÂK^ž´}K›žZívFZk´orÐ<šÙV)¥äbŒqÞ5YxÓÍxïcJ"¢L·TÞ]'(ù òAäd¶04A–R%Å1¹¹¹oÃŒ5\IiBTÍŸT’[I´ïR’d·È’ÒÈ䜫ÌF7G³Ú*‘5ºÑÙe—æviµ‚ÍËì/—FNT³ð—3°í%ýWÿ~ur Ã…§ùJ¯=¤°:¹tt4t®[.¡”Ó““RÈ{ 1‡Åá0Ç xqt µ‘òp¸Œë5YeÑwu3ƒ’¬õ½R*Ä¢¬1ÖO!¢ ß²„&R X='BD£”ª\çÙ)­ã›*”lç‹óÍÙ…"֌Θ2Ç:g™r™b˜¦õâ`y~±©äN“úÌ:ÿçÇŸø·ŸýÒèc*ä:Êl8Ô¹Ö?ïy_tÿóxàyŽ{ìO={5àÅñÑ7½òUïÿ_ÿáåË—­µ@l­ ) ó‰ÑZsÑZ§’qÌÕ 1¶ÔQ@ïýf³ùÇïÿÅ¿ûwÿ.ï”ÑÞûL•ré}§ÃcÇ—.Ï1\¾çžóÕ3M1,Ç€Âk­}·!ÍsTh–ËåßøwÞù½?xéÒ•7n2áz=݉ÀФµr~;•¤9hm¥¦HŽ•*ŒD¡ÕLÓä}_hÛô}/ϼð†îš«íXããrq~~º<: ›i±XÌ›Iîc±R‘"¥¤­É9³BpÚ5˜\øeÁ(­e»Aå©+%µxwi߬õÒ¾„9Jµj9: wå&òÌ4MuËnÆü4M÷ÜsOÜ ëh÷Ðr%ÉFœç¹Pmƒ¤¶¦yÃ?gH”×Ô”ý ¥TαÙÔÉñĘ%¨·gU i£D‰%mã4Mbæ!ü†&Qjfòí2?JÈ뾋ŽKšÅ»ßZymRÇ­ØÐû#jcTÆ`ÛKh=ϳë: ò}ß9'=à¾h¦ñE¤.Ë·HÉ–êßÂ&ZG,×]~Îr¹Ül62^ì·M3/•M”Bð£ÿôWkž‘¢áœ§³£ÑõV_:^jÀõzB2Þ ¾#föÞÎeò½w‹%×Rç’º¾7ÞÄÙËP0‡¬Q+¥T?–iBÔ¨uÎUic»>ÛÅXw>8PS¬¹€Òà½ëÆ´ÙpÈ¡Î3Ĩj.Ó:Ï(9Ï¡„Ô¡æÂªr‰+ÕRJÉ닳®ëc7®¸âÖùŸ½E@ùþ‘ïýî÷üÄO<ôÐCª²ÛíYd[!’ôZ È‚•R•€0@+XJ<ç2§¢êyÉ»~pΡ&Þ¶÷ñNDk¶î~ýÆ?ýÔ‰î†û¯¸Û·W§Îr T {.=ôÂ/zðù/8;9ýÃGÿüs×®*€à¬Ç#oûÑŸüÉ—¾ìo¤\­7i癉 fص$Š€¥E¯…]×q.̸sfŽZZh È™«¢ƒÅáoýËßþ÷ÿé?¼ë]ï:9= «ytàÊÈ!„AãùÉ93È«Õ(}ï•ûˆèÙk׌qãxøíßöæoýÖ7¾ä%߸~ëê33ÆîHUÊhŸs–çZ’þ˜ïºâI)‘Æg’»Ð{OÌRÛ\ÓîÅËp×x­¾óµªLµ™êɰ)oò¦­³À)%–tsÎm6¸‚R‰·zkaÚ{»µW!$ç\JAë-ƒHº³ízŽkúíCZMÄ÷œW}HIø_J©³³³Zkç<ÄœRÞFr0`åý Õ~¦­Ìz ;oË{ï{f”a‡HXW¥ÙKøÎ€W[Å_.•k)°-¥µ•o© riš»‹|} “N­}ƶÝ™Q÷åDr„m!¾ƒr¶vïÖ ïAŽGTM=ÓXfMFÞŒ¤¶ÜJ•\£õfÕn€ÍœÜHò· ò3='M R8>^t‡÷}‡P§i".ÃbáSªLÖ ÇZŒ±ÆY£=+df¨ ,z×s­JD"€æÎz…f\.™ 3Õ#¢VJå´ÖïjÍ9æ¹’ÄI×z°< !hmªœ2¥Šµ^œ­FCAJU ¸…¬EËÀ&Ìw.f½¸ôéÛ§xü“'ÚÝœ.ž¼þ, ú΢Rë’®\ºôâ½èxâ‰'>ðÇ´ÙlæTä6üáw¿ë]ïþ‘/}éèm)…JΓR³Pr$"¥€+)g€H#U¢š+€‚ž T>±-,ïƱ”R¯{õkÿøc?÷s?÷‹¿ðKg'g`´»Ä•,Ì”IãØÎ¹i=ç”çõ¼š6÷Üsÿ«^õš÷¾çÇî½÷¾Û·O®>ólÉûXuÝP Õ"‹žºÛ“s&…Y¬Ðvœu”ÅbënšÒeKuaØ_¶{{8…´%UcŒ‚’¡n‰<›Í&„ÐDöÍÌh´µ¶Ä­Ò°U(F þ”ß.ÛÔ&ñol¬özßWÿn¥©{šçV¡žcÚŠiK“.¥Œ}_k!ʹj$)ÜÝ÷»Ñ}´[€K‘6>Q3Bói"϶ u-uß_¡1žƒÇíËeH­¢ þòK×ëu«Ôí*·Ðš¿î'¥¹ƒI•iVûB¿}o‰;6°²|“ˆ¶µ¬üLé¤d¼%*rÓÊh)]¤1FÿÔß~¥Eê _9:ðËñÎõ§KÎÎm-#0 ú¾w ¶ó¨j­´ÑÎ)ÑäœK*E‚j!TFm†>Ç`´vÖcµ’õgž6­0…@T½sÆ9­A+å­+›7&Ìs a°UZÅê@qˆqšSÈ%eCè•…TK,«yò}wqz‡¨Æ e<øð“ÿøØ§?µZ}úöí;ë tʵ qÑ/{øË_üЋž~æêã=~ëöíu S®~ôßðÍßü/û·¾í-ßyÿó_8Ç@UÒŠ´RJ£F@£5ˆ•¢ÄóʓZŒVT«ÑJI¦h¼+ÿ`ql5)e PÚl.6L0öÝ+¿é[¾ýÛÞü䓟{êé§æ”E?ø‹õêà`™BœV³7þâl ¾çïüÿË?|ÃÞX3<ó̵ÕjÒÚ^\¬Œv‹ÅÁ¹ä'4ET‹>ÜÏ^ÚŸŽ÷Ó³›¡ó~2f @’†Qеÿì$ŸlŒÍy« X,ríôÿðÚo8Zv£w%ÏšòéÉmë­6FYƒÊ(kŒ³ŒKV»åx±Ù¸¾3]ZÍëMŠº~ÐF—RJ-Z×õÆZÔFŠê-§ÂD¥eŒ³¾ë•RÆ;ªÔ¢ ¢÷œËÅéÉ(/‰(µ†œ×ÓÅ;P©æ µd*Up.D<å8¥)ÌaJ?Yýßöáܼs;ç €€j¡Åؽì˾ü¡¿ä™k7ì7OnO1ÆZIáëÞðúÿý×þ~ï{ޝ\VÆ3§˜¨V ªälÛÞý 9} Q¥’d¿¦-T”¶…²6 ‰!73Ô P¡*c eã=jÈ¥.ý¼V›{._zË[¿ó¡‡^ôéÏ|êéÏ~rž7r5hÖç+£ü;¿ç¿ð ÿä_ñM«ùú[ç+DílÇïû~4ÆÕ/èÏ·ë*"«µx³þ‚ˆ¾óÛüÇŸ¸Ì\JÅ=¸&ÞÞd€Í¬Rt‹ÅÂwVÊ{O;‹NÑÇJß¡”~¶Ÿè å ”²¸7l9™y—ÔcôÞ1³s¾=Øû|÷c£µ®¥2³uö®ûèÎqtõ\[HWstI) •LÔvòˆ.‹õzs†âO~Ÿ8‘·n«‰äx6¤OtÒ-¦=²xCý[:–ˆTZ½~(Þ²`ÛÆmß¹ÅùÈE”êÖûÈåkNd-]qŸê±¿ý”/“ò'MnóêkiÏ áj,¹v!šX;0èÕþ9խɳZzÛ<ÏRµ¥gÜ͌؎G@¿ïÛ^5="M›u¥lÆq¢qΛk–ˆ +Ķå’¦iVÌÆX¿X¥j¥b¬í†Q)…J°vN{Wb@­ÐYo]‡¨ ï1…y½^×’6HÄ1ããj  ¬ëâJN–`^­ "r ¹Äæ”SΉ¸•7) ‡—¯ÏõO¯^ÿgüÓNa2vU«uúhì¾òo<üàC>}õúG>þÉTjÌ9s1Ö¿é;ÞôOõ×~ø=ï¹çyÏ7ï”k­dóÆ3±ìzŸká­l ”R¨‘˜R.¢½’+Ï”C… ˆ‰UdV• æŠT±€×›¼É”ç´qÞæ”Fª¥²ƯüŠ—=ò–ï®ìc4…<Í ¿xç;¿ÿç~öï¿þußzzººyóĘ®>Î: sX.–Óz^¯V ´Bl",…ÌTVÌ$.ÂÉ–ó4Ïòä4úxf&æÞ÷m†ÁìœÞ¶ÿÄ-icKÉQ æ¤oªâ‰ºÛO5Ï™-.&bÀ])iU£MU²Žl®¾RøRÊÿµÏœ’bclíüX€5*``"­¶Ü½KˆA@ª„€L ÎZª$ÿ,¹ä”„§*î¯Ú@ÜNIˆÐ„>_X­Ú´K™ÆæÍ/L(k0ä”E¨•.µ4¶s5F[k$ݺ®ß³¢ÞŠÄÚe¿Ü4à¿ÊÊ)¥Aª^»vÍA.M;øvþ[™“"Û°M ¸?ÊÈߎ篧[6/ü-w¿ÖöŠj낦K—š(U¾uÜM,Ù÷CJY¸„[ÚÝÏ>òÆ”b©Éu4ç´q©Ðp°¬€1gè»ÎwRP¨¢1 @Yç*±Þ¾3‹Ò†‰ ¦ä»ÞtêF¨EDfÊ•K©±¬/Î׫MN©3æâô¬–rté’ú°ÞÌóÔ[g Y-y0‰ˆâzæ)ŽÆhª9Í¥Ä8OµfdÊ)†HÚë­DÏdúÍ=úDŠ<fo¿øÅ½ä%_r¸NON>ò±OÜ9[ÐSŠ…ËWÕWý_¿ñÏ~ô¿ÿñƒÃCm4"`޹ï:2Ì[¥T©•ö}Ôˆˆ•Be  ±T­«¥jmÅh…Aè‹ÛØãE7ÔœÇÅ‚•R*é­( *ÈÑr~Ãßú[o{ýî\½vÔ/~éÿÉë_û†ZÕÕë7W«Ðù©P)†ØuCŒ QÀ0,ÄcÍnAm*YZIç²\.C çËc ”ª|W”g”Ùò•Öìng)²P_,Ì|rzÒuÝj½¶BÍ¥­äZHŸä‡#¢hWq'^k|w«¡RÒe45¸„×ï½Ù[–¥œe‡Pkí»nßÍYš;Ù64£ÁfjŒ‘uáñv¡Q¤§sÎ¥[S¼Ã˜©1E¥£‘£jÇ)Mtm‚ô·Sqqqaw¶-G¸]JîH¤í"õH6­ò5m>mkÇ&½­˜Öúðð°û ò ‘m†ð-äu¦ÕJù9Â…n0¿à MZÛ´ó<Éýyxx¨úÛ_i{W˜P+Ð ÎL—.mbF¥J©¾ëºÅ‚K¡Z¬ëЙÂd¬WÆ*ÆišºqäZbJÆè˜R©Õ/— XÖœ^»:O¥™Ð(=Ž‹®ër)]ߣR)«•ªµZœqˆ%„Bœb2 -q¾X/¬Ýœž”j qžœÂ’"TÖÖ¬c8|l ¿ö‡ü«õT™˜ê´Y}î©Ï>{ãÖéù*0Öƒq¯~Í«ó_ü‹ûñÑ‹¿x3ÏÌ •.±vÆ#7?øÿ~ðÒѱsn–«ÄL¨Q%ò|BU‰K%TQÅœ‰XRr.̨•¥ÊœÉ‚Q¤TE¯Õ2ç)-‡e˜bIuèÆR*h$›‚U¹ÜyüqZoÚÒ•{ï?_Ï1Ó0ƘsªF[D&âZ¹V´¨Ù¹MÓ$vl!„®só<ÍóÖ„¯‘’Dñ/-€4ÞJ©BUZ0ÉÅ“›Fn;yðd©l­U¨ÚX´¸ˆØƒpJÇa쓆ÍË­ K)bY)¸’¤ÒfçÜjµ’woAžý­b Xn¾u·ð®õj%€Ëùùù¾ooËËiˆ‰<ÀV`([-w1Æ V•ê4MÞiý1¦ìŽ§Í€B>Э¹c7À[+ݪ­ü¡¶î"j¶ž6½#b³l·ÖÊiÏ9K±“{𦣣#!DH[òš‘g^jDãÄ7î~ó”F~o›ËÚ¼Üv,R Å,D>—üíjµjVô²Àis\+vµÖæ¹Øv²MŠÔH!ˆ\J`­•ÖÛå£ÖzµZ5Ä€”ÒµRQÿô›^ù–ÕfZYçM×#+Õ ÒZ(d9…KÎ\­ïŒu6é¬CïÃz5”œ´Ñ¨TŠ1Åà´Î«õ¸\XDͨ@kÔÆ÷¨u Áw=:g”RZ©ÎkÈ©XÐHh´|W§T¦)œžÏg§ŽˆbœVgyšßMë5ÕrÂìýÓ1ýêúÀcç© CLqì;¢’c) h¬qÝâàˆ‘­3ÙÃ_õÕóìâÂ;G€Àh ¥öÞ¯7®ôÀýÈîvy8Ä”dÞe‰>—Žw›sçëΑ֠aªŠ•5š©V.Õ0v¨- J¥Ædyp~½ZŒ‹±ësÊœKïtg” á±?üƒ_ÿû?ÿÿæwÓùJ3Únñâ/ý²„v.Ĩ”SF+bÔZyßɵ¤i»øõ-d`­6“ðÈl1.›Í¦­´SJ©d±º¡¿Í…n[锢]àÅÖÛ@ë£ v¢Ý—ú"oc1·µ1”Z×ëõr±hÐ;NŽ¿ÙŸ É@ÁAdK°OÔ|ŽùAÃqµÒÒIÉE”Ö ñ€ö­¶a_v¿÷ay÷ ¶)‰vÝM­ÕìVmJÚ†\8'}\ƒœäºHjîÏ¥ù÷®­ãæF OrŒ©¡NÍ §cR¥±ÚÇø[rOÃï¤þJQh>«ÍßFÊGcK v&<¸³³3©•’šÑZKY€J­âtÿö¥ìrÒZ ’œv¡†í7e (%ïIAQø-RÊ«Ð2äÅ©òͯ­Œ± 8Ž ´Æ8WˆØùŽˆA#Õª”êúÞ]:Be·I¼FYaŶ›ÔÚ9ËTÓf£@™~DâÕùª–jÓÚNó$+'TÆ1T¢TjÈ)Ä8ͪr<¿à9¹ZhšÒÅ*œŸÑz¶”Š1.•ª/?Ë/þö¿y|͵3³Â\’Öìjmzß/‡q ˆ«õɵkWëwþõGþê¼ýí²ì¬¥Xe¦õÌ‹~ "ëœó&¥8‡˜s¶Ö0ms;˜eÑ¥e>TÌÑ#[hJ™©*ƒ¹7Úkƒ•€A9g׈˜Sè½ óÆ]sG¯süÓÿðûÿÛÿôóøÿü–Ýl^tÏ}•1þd=¿øá—‘ñ‰À€·odc4"”’ó­ûØùˆ•Â6……ˆ˜î¾l·m¶BaÙ´ýpyÐ9?öCï»”²´0M‹×VEJ<–vÔf–DÌ(ÎëÄÒ%íòâ·™Q‚Ú8ïedãJÎZg5ÖhSrI1ÖR¬±µ`0ÚÔR‡~Pˆ)ef¨T÷'#)F»ä˜º›Ù+3)܆&ȯ–gF6tû±Qw×mÌ)§m’˜5-_K†ʼsµ&‡AÆœ»ÒÈíŒ|êF¬o/ŒBΩ֢µ˜ð(­”5J.T‰*)TTA1m¾¶fÇ»¾¹ J@«öYÚkÍׯ.ù2¹”[Ë]ë*ƒy°¤*ÉU;==_xM­ÙRÒý5ü®ÅMn}Y½Þl£ƒ5Æ~’P» ´IÀ¦”ŽååÜnÍÎb4ÖuÄ…QÙΦ2'èû±Ìaš&è½·}—7«Í4¥‹ÓãûïËDTˆàÿ#ë]clÛ²ò°ñ˜µÖ~TÕ9÷Ü{ûq¹ÝôµCã€én%8‘H~à`ņ°Mb'2Vd ‘ð°+±çG,EùãøwŒƒ­Ør F€!ˆW7Ìmºûvß×9§NUí½×c>Æù1w­[ŽÏRé¨j×ÚkÏ5æ˜ßøD5¥Æ˜pž·›G–SJi·æ%åeÎ!;ÉÅt {ö€æ45É8…œÓ8-ã´ßl¡Êt8•Ãh©È8Ðñp·!·ñQ h,å¸ÌþâòýTÿ—Ÿûù߀ÏKUoœHS×û~¸ÈRoOcNÓå¾gf¥øþþßÿÌïþîýàþê;¾øÅ/þ¡¯ùd7ôžùp8lvÛ9§RÔy7Ĩªµ$¢s¸±ª‚˜ Š–CpHež´ÔHìBRÍ£¤ R]ŽÓñéµÌÉ‚2*¡ºEÊn¿Ï›¡Ûî~éÿÉÿ;?vûÎ;/pèw IDAT‡ð‡?þUC­©ÔæÑ)š“†ÂDMDµªNJp÷L™ºŠ‡[OqoÞÂ+Mi¸Oo]³L¥¸-ú¶·Í³/MøòÐê¡üb[¯«÷>•r>rÚ~ž+J✔¶ýœX Öu¿¹Û³´Â+ëp­±ŸS>g/¯|«Ykƒ³Îу÷m‰7©]»à&å}èßð/êŸUVÕ˜l-^íû‡µ²]ÌJþ^ó«×ðçû c¾÷®Õùke–®^.çã¤w+÷ªCWoC*Ûa°}â‡Ã¡1•Ì÷pq…½×Z³ö\kúÙÚl®ÃÁö6ÖÙLÙÚÉqíËä´BàiîíFµzÚ Ö*!Z‡›k¤ÐZ°Zé\Ùs-E¥ÝÌf¸Ôêu;‘fFöŒ]·ÏËܱØDމÑ{·¤ä‚3ÄÍË/m¤L󄞃ˆ!9Wj’œ¶~@&dd ðˆ&’S }¬ÈÜN¥5""§€&*Z)T“%âát¬iÉÓTãKÛý˜s‘šRÒ:ob—–2—JÛݳã´{þÑ/üÂ/|åF¢O©ì»>‘ó >úáÁuÓÝTsA„ív+}Ø_t˲Ü\ß]>~üÖ[oýéïý³?õSÿø¿üËe.%v‘\EcìJ)ÇísŽÙ!‰ˆ‰ 3²*p-` :¨5¿ÿ•Ó‹ç®d:9…`x™…É9ÇE ÒM­óô¬VOlª¿ñÓ?ãž½÷Ñ.~üåÇ>/Pò~»|÷•ãÒûÐ÷}%Ò*EÕ»ØÁÕª§Æ`–ZÛ@;gÜ?ZJ%‚¾ïs®-K† Ìœc¬š$cjh¢Þ‡bøx¯>MfÔ3S©ªjìœ1 "Ö"%ŸQbˆˆˆL*¦¥Ôp?·Z}ÛcȨ́ө½òªï5³vO)1¹cƒoæE‘™<4{i,Ð/^´gµQóÛ_|˜©µN¯Ì ™j© Ž™¨ÖšJ‰}f9ç’2""àt]ðkã³>ökëÑÎk«\FDBìV´nÅìÖž»ÿ·²«ìAMis’V[ÇÚDˆIä ì_ýªÖm¦Úg·XmFÁ÷–ЫYû•–KÔ­‘lð\c<$U¬a«$¼Þû7´¶tm`W¦E»-+v±ª2Çã*u<»Ë{Þl.S*í‚×6öÜuþèwÿ O “HíºNE–e°~BßåœTk•Ìdw‡C×÷KJÞyfv.¨Uð‘sZÒxD"Ô*&ÕÇ.M“¶²äy\Àw½ïz$6„–WK­¹j­žÙŠÆàûËËÁù¨À¥\öƒ•œÒœ–t<ŽÇÓœË1ײù•ÿûóoþƒ_ù§ †èB-uɹßô~·+U‡±¤=YÊóéx³RõOüÁ’s»¹¿ù›¿õ¿þ½7³¯~ã!vÃ6ˆBèü8öÃ&ϳóÁ9‡Dµvìû@&âspd扵ªÎ‹w>„ØÌMعݞ›õ’€CLóŒªižÓáTïF›Tç1I®ªS.ࢄþ™Ô/Îóÿâ/|>)÷»9Kú$åâò”¦Ó²v!F XÀjçýn»ë‡ ·/ž=½»»mŸ4Ý?ûó?÷cÿï}Í'?ùò+¶qšf@ ļ,›a¨Ì ‰ "ä”OÇ|¸»{çíÛwÞ©ãa Ø¢¹šm{öŽi‘\ê˜SFÓ.¸« u±yüxçÞ÷š)Çi»¯þЫ/ Ãáú™AõCw³Ì‰œtÛ7¾þAE‡ÈÎ)‰œc©YU¬”¼“ªµ”¾‹`Z‹4WìbÉ€ƒ¯*ìœÞËèZLSÃã2ž[G³WnѺ{3ñCE…šzÔŒ‘rÎŽÏ…¬™´Ž€™c×9ç\ð͇c]ß+B±.ʆŒ¬àѽƒÍ™xYrA@ïÝêí  Í‡~Ýê[OWîÿ=ìªþÅx×vUjg‘97Ís;"]qrL,¥¢Z袚"_çáãúPúÛjÐùÏ:Ç"•KÉ!øR꽡¨X-¥J“FøèWXº®®ýàjGóP$´ ¿ÝƒŒøõ2Ö{»ÒZß·Bœ+úþèÑ£–gÓˆ­lµ÷¸n¯÷VòV6Æú=†¬jªFéh%» WH«ïûq<5 Ý±FýóÞ?~½vÍg†½¡wžô»þyž»¾Ûl‡a·QS=#¢àþñãi<Îˬ¥Äa£EÔ Ûí«ˆ”ê}@„yšTª¡ÕRÑŒ}<Ž%˰ª ÏË’Rñ>ò8ŽÓáXK•*¨†jX„̦»#VZë<ù"=ÒÝÍsxsss:žnOcF> œ{ÑuÿóOüÄïLš ¦ ±*Ȱݔ\ˆy;ì¼YŠš‚I%DÇ~œÒ4Îf≆¾/RKÉÛíVÕ77?þwÿî?ýíßüÆoüÌ+/¿Ì`¦fR«gÇ`,€±H)Ý<»{÷íåö†µn"‚¯ÙAõÎnOånº~v}s:-Ò†pqAýÀ» ¸z=ñÕŽÏ®wý¶Œhš÷»Þ¼~þŒBœÍ¿XäÕO|òµ¯ù—廬>ˆB®¹Öº¿Ø·æ·ëzf:˜ÖüT]Ñ™3Ë©úã|?“nit+ׇ~hêÖµóOÿül{íÎrÜûzÞ3sÍ*Õ±S“à‚šä\Ø–šEÚ‰ÖæeÒªD`p®z+Ó¢íœí©X‰­?:N¡ λRjsïŠÝ9›ãþì#+é윮ø¸¿z?­DÖÕLù\yEBCßçR¢÷Îû’RË­Ð*f†€¢šs¾¼º²–¤§Ó©½‹UÇ׎KÛíöz‰{f'HɳC"$µ’S¿¬:vÌ€º~ãc4äÐmS­Þ‡a³Å®‡qBLj´œNT$”Ü;)áRlœóñZ‡ÛšóÆ…Óq|1.#’\½ô;Çãßþéüû¤óâãn·3G€h>8ò¾ªN󬢌®škö/%Í‚[–™w›a™&OÔû¨ZCˆŸûÍßø±¿óc»Ýî>õic*¨Ôè™j‚»k{þtyç­|ý©—\}Œ€L¥Dó!,K1€yÉ!ö¢j€"†„ÄìCџƱbJKΩ‹a:bðó<õ}·,s›3.ËÜ"ê cÕ”™¬M!™IU‚s„¼'Dï"xïj- ¦„ƒWQïxYĆ›X)H¤Ú\à7h'7/ ³S5fgU¤E‡ó€HÄ󼄎ÇcŒ-ÆXJ*%·n¥ï»†¯É£ jHÈŽ±6? @¬R÷ó2Ç.ŽÓè¼÷Á#!šï¤ï\É©ëbI)çä™ aè»ZK×Å*5v¡J-"-Dr•7èjØ­°Ô9„UÁûÐÄ•ªæ}XO‘1F$tŽçeöÁ7jØlUAsɆbPPQéúŽ!#2V­€ˆœŠTÕ»yI>Ä\«˜uý0Îs¿Ù!q©"f›íFj6ÓZKÞ9ßÒSJûÝ…©UbGÌ¥ÖR«wM‡¾ŸÇÙÌ Ø9Q¢Ðy4C„|)™ˆsÎŽ0x/µ Àþâbß/)u}_ENãÈmBZëvØÎÓ f§ã©‹1†è˜sJîžýO„‡Ã] CÏ?ü]ߊŒŠ¨`§4‹2uCµ3 ›Í<ŽÔRÛæZ‰}ˆ=:ÒZE‹wŽº8Ý0úÈ¡¤’KÎEDÐù8 ÇãIÍ$¥ùî.v}^ÆÈ¡äERÚ„¨9KÎuIŒª`‡è¥’A”Änãâµá?}÷ÝôË¿úV¶#‚v¹#›IK÷^r®µˆ©ª1Ò~·?ÜÞ9bÏt¼}Ñ9vŒsZ®®5Sà»CÇ }߇ŸüÉŸøÅ_ü¿>ñÕ¯üõ×ú.¸Zõúùñ·^|ù ¼Œ66„Ñ;’òÞ—¾˜b ã)„XîN˜-»þÉK¸’÷¸ºÝ%Å ÅåîøôÝ·ƒUwu1 ýxû"î.„¾÷þ»=öý»w‹íòüë6ìÆ91çØ™fzfó8w~àÁ°9ö11bs•idn]Ù.xz !-q5êm0ùúà­B<ºïü×G´‘új©}×¥s*jó6iÌ饷ãdãÀy¯­J̪֎í\Ù"WW²ûÊkR²c>¥eu_a²‡‡»Uñ×>ÐUÎÖÚ·6¿_÷ùroÚ'"9-k\X­Uª€¿á­ª½û\5jj¤vcªý••Þî^»ªB£z´æq%I=äCÄañ 820qÁ±#Øo}Íóõ­ßöȃwI‘âÿûæ—^ÿºoxí“x1k籨š"€õ]Ç|pìÁŒ°1á Añµ&D@3mœ„ÈèrÊÞµÜ76&NKú­Tiàœ2!‡˜Y«8v%ÂÆêmÒì½?ŽÁ·˜)fç‰Ø¬™/dv]×7«†•£ÌìÌ}ðfÚ¢þ¦yj›ón¿K9•ZÎKkÎÅDyI}×7Æ–©•\û¾ëK.`P‹¨!™šŠ™B“ :ví?™HjEÇŒRk{à6'@¤¦Ñ–¦GĪV«¨ZÎ¥ÙN´¨Uj© " Þ«H3Aª¥´}‹¥ ¿¯EJ©„¤¢!DõÎ3;&&6Q0$¬¥2qpÁ³©ÂÄŽ#›XKÉsä‚ Þ¹Ø³Z%/iTï©ÖdVU‹s#ªhiÎH­ËË9›A3AlÍ‘ˆïK>{xÇ¥”¡ï½óg-²5¡]-ìœh•*"ŠÈ)e04°à=WU»§@"Um1À kÙàÞ¹Ýnww¸]lÕeؘY©å!l·²gˆpð옜ã.½T²™pϧ{Ÿ–åêñ£œsè»d» ¥JÎyqÄfÒº>x˜Ç¦ Š—;ÈUµv}ÔZ´V•2“#ñtØ÷›éxØwƒ¡ÄÈ¥T Ÿë" ’²J©U±z÷ÅÃÍÏ~ö·Ÿ˜'ꇛëÛífÏDbVDÁáÙŠ ÍŠTÉ©óažÇ¯úȇ_ÿªFïº~åÿùõëqï»ÝÎ’.¹ˆ#ÇÀq:Ü@MÎ䱇ïùöoûsêÛ—÷ß./nhè;„:3)š°GžŽ£Ì©»ziyú~N ÀúýNwAw{Ý4t!D0ƒ$=€ªX«êéö e~åòÂ?y|üÊûƒÛ‚Ñf·Kð‚‘^{íµOúÓ§”fvŽ×³\ë¼½7ü(¥DèRJˆ\kí»¡”9¬ø¨èsî³§àƒÑXs@>Nmn0ü²,†€h«Øâ¡Ú¶mŤ³Òr- ,hoò0©a¢Ÿ Jn/ÒÞHëÚÚ@½«²¯]Ã,S#I¯C€•Wõpê·˜4û¤µ3:'¬±=÷½‡Š¶bâc\MQëg¥5­´£r·É@»iM§½ê±×7u¶‚Øì>€ØïðªÚ@®_?cÒzÁn©ÎÛíöîî®­êö–W‹ä†‹-ËÒSo&D‚cÆ6‘T­Þs­åþ97‘ŠhÌX«ìv»ÃáÐpÏF¾[#Úmln­µ¤ÜâÎD›Æ£Í. sU”š'3!Óù“͵¬lÕ’sc™´.ž™=3-Ó|{{{uuÑ~D|òäIÛ»®C¦Õ³¬Ý¨ó fç<1—R‹HUAÄ.FDÄ~»{q}ýèÉ“i<… ¡Vfb «r˜†Ý®ÎS©…cì¯ö}“/Ë4ï6›iû³Êíóg—› ©™€ÓíÝaš±”"ã2PÅoû­L‰P*€wD€޶›÷^<ÿB…êABOè†ý…GžŽ§n¿³¶M¶ ]«ê~¿=NüÛ¾õÏÿGîb»‰GÄü¡ÿâé¯ý“Ýv¯¢KN1ö£ßvÝÍÓwe{‚?ö¯~êG~àû?ýMäúŸ}î sâêJ:èT–>v¬„@ ºyõx~«××ÇÛc? ‡ÓÝ]ÕÇà_rÓÐY­y^tÉ0†R"G€‚R‰¡‹ÛÓ<]íö´éÞ}öÞãË­»asw”×_ÿx×o®k­ÄX ¬š°sÁûxN rÓ4Z.Éùæy4_–›C@€¼oidÆœK£•‚áv³DZëc{žœs"æ\(¥8Ô´šç`jáŒÙs­u³Ù,ËÒì⚈¯«’ÝJÏjb¥ªi^üv j!z‹‰:â4/}ß·gLÔÌÈ¡šl6›‡>–k\““áŸ'ß ŠY“76Š#盫b³¾rÁ«*²cÓªÒF‡KN “N95×ãVg‡öðxÇ,ø˜sNË™æê½'T“ªÌì]hlϕՎ`÷*œ´Ú~®‘ÁPªæT©Bpìw[ß~«Q4BÞHke`Bjæ‹@FgßìóÓœZ-öÎK`ª¦bè\@…æÑJD1öD*"ö±SUˆçá£g èœ3B`*¥4‡2 rìCPDvÎ×Z}p¡‹«ç‡ÞëÍ,7'û{ȹŠ3‰È²äiZŠT;U rˆØug7ÄF…v@dP”³Qô¾ÉC×IÊ›ÝÖT| ¹ç6Áùæ nŒž]  RT5§³Ä¼VYçm*Qæ…EXiáŽcMy¿Ù½²»Ló»Íépw‡ENΨL‹¤,®7ý”úÍ?û{?›d`WïŽìBÊó¦ßœ÷IGªµ”BÑÝõ³gûØÇþÍ?öoü+ŸþÌÕÕ˜Ppÿí_ÿßñÝßëºîæææb·gGyœYóÛ_ürxyã¿ÿ/þ…?ÿ]ß¡ã!þw{Ìï¿k9ÑÐERp.0VV²¢l˜NGUxòÒãÓxÚmö»oü <~jÓé°œ¦ÎhˆLËòÎ;J…µFÇ}7w·0ŽO>üêïþÆ{Ûeè1òÐåùù8OþÑ«¦("sIM6Ä`ÑW¨”Ҍۉ ŸΘw¬ÖüÙe´ëºZueФ”6›ÍétŠ1šB3b¯Eœç•ý¼RŸ™9/iuYh]Ìj(~Ž`¹g34¢P$¯ÊíX}˜ Õ‚cWÇî&F[©•+޶†Ð¬™T«æãÿgz¹*cVáÕÚ|!?¿ŠTX=íVBÓªhYiœ­/ë|×hDëd°ýVcx®”¥ÿjÂÆV²ݬ¾ í!Ö¶*Ï•1„Foÿ³Û<ÔTåœ}pM¶ö˜D®¥ÞŠwÝPk@³sØÍápð.ª*yïO§Sk®@ïy|÷~gÚ:GïPLKçœ"ˆ”Õ©ê^SAªgW(ô¤2ºš {æ5§§ñH µ“-}·Û¦q òY]U‘Â{ï€HE(zO»À°, LÓ}rž¿ ›IErí{•’—T%£JÁ1眥iÖBˆÃ`¢µVŽxº¹#Æy•©¼á¾æÿþ¯þ•7>ü¡éÙÛUV«©h†jàˆZÉÌ¡dÐãm¼Üê¸LÇÛ”òã×¾ªEG°º¡w‡ÛwÞM§ÛP „V+XeÍ&ÒØ³‡ªðòËûÄW_¿ùæÕã—ëtç]¬é†‰ A Ѐ  i]ª1"±+ì]Dd3#ä.ö%סßä’D„ùüÌ3ù]>S=ï—B;z¬”ã4ÎÃ0¨Ê:toåélçØy¯UóÑMC†gSóeY°Úu]ËékØö:ön}¥h5\ùa¨ê*ñm=T[£ñ°^I{BšSšL±LœM¦¤‚‚ᙟgUe5D̵4r#ÜÓ©Zu^“ïÖ·¿Ê¼W¯"š—©³bˆÐJÉ¥6¹ïÙÓÝ@ÙQ­ª”Rϰ>8@ Ñx" èÏ|ËTØ1:ÇKÊtë7"UëÅVréÃÄæÂ<§v(>¶íªä9'1Ãe.!„ív+NrΦЊâ,K ¤ªJÖ,ðE$8ßÂ,Ü=ÁÌŒ£‘ˆ‘wŽÀŒUÏþ3kvaCºcìùÈ…èr&€’R½— ·E8ŠŠÈv¿;ާfñ „¹–¶lZÖÎ:ÙXyyüŸýÉ;Õb08Óº(—Ìì¤Öœ’aš§áâ˜Ó2»¾ÏK25U%dB*9#BÛb×3aÎ¥– žÝóëçCì4×ÈŽÅê’v»}‡É¡ j.yº=xà<.T©–¤XˆTÒâØUö?õÙÏ)ÜŽyØ],ãdV»Þ«)+¢#ðŒŒà˜IL³€è& ßüMßüÒfÿ¹ÏþÖówÞ+ãò+¿ü+¿ôë¿öüÅ5,w7T&¯Õû¾?ûïýOÿÝ}ɺÜ<ë$Ùxäš,%È‹ÛöRŠ ™Gdк̳©æ”°J³5¿~ö¬žÆ!vðáä”YCìªÕy¶i)ÓäÑÐ÷Á0 åÔ³q}Ýù—ŸÜ½ùù>U+¢èo³.Ýöû8ºHŒäiÊ]óS¬E¤©±Z/pŽWÚï÷Ó<Ý7YPkY'€÷Ê2©MµƒH-0b-IÌ伋1ˆv]@$稔ªZ™j•*ªÕ š©€–ÚBd&1vf€)Í1vˆFÄ"¥}Hí{àY–&µiNðM£×jÁÊÒn"mïÙ9 )åRRÑ{n×€"‘˜Ñ9ïœ3„”3 –ZÙ±¨ˆª©©šU‘\²óæeÁ–<\Sjç\Zj{e"0flï·V)в‘ˆ‰ ”ÚÒg£öµYu.K2DÚlzfj¬Q3õÞåœ  eAªH°F4a&喝œÄ”€f iíˆÐc`ÇÆLÁ‡f´VíV弸*`VGìTs?f6Ó–•±,Ëfèçefâ*¥V‚Ë2¡¨ô›^Uº®³y™Û~ֆ¢…çyF3PmZô8p;l1s-¥Aœ@ Š1ÖR‰¨ÔÒB@ÖüàFšk­hûÚªö¹`ýèø'7›mJ¹ÛíÈyÞlÆã‰‰½óĮ‹sžˆµJØíÆ»C³'pgˤClÇu&——”ÒBp6~G³Ív‹¢Tsuè–”$WljÇqrèrž–|;rù¸  jQª€š—*˜uÛ_úÝ7ß¾;ôÛËÛ›Cp>¥¹X^j® 6•ZÀ,°sÀdP«¼ñ‘¯~ç o½x÷ék¯|³þâÏþüÏýÌÏýÆïþö”¦Ë.äqtbßôõûÛó¿ù®oÿÖrýN½»ŽyŠšm™%¥€¨¦¹¦TSð^J®)©Ôœ–fñ¼_–IjÎóØÝ]__\=Âíú˜çä (ŽËxÚmd2•er›NÓâZ®âi>u!ÊÛïE1ÏK¸N` IDATayçfºzý«C/!@œ­,yé@ª"øJv.å„O]jQÐÍv[¥ªiÊ9ÄŽ˜r)Hàƒo_óÿ™—©ë»%-jšòBŒU æ’Ek.ÉÀÔ‰ Ä1³CD¬’c× )ˆ÷~ZNˆ¨VÛ´ æetìÔªT1©ÒQE‘¬–‚7Óü²Ìª’ÒÒÖ7"”’UÀJÉfc`¦|7tKš|)ϱ‹ì(åÔ]•šK„*ÙO Ä4ÍûÐC èDvNT÷HTEDuØlr)€DP$»À¢ d†€ ¹d0b¬"!ú\Jˆ~^–Øï1€Z…–Ùã,ª¥&QæÑ‡¨>øRsJ³ó¼¤Y¤šiˆ~ú6O­-†öêÑ¥sœs4‚™6ª31SãL•’;EUk-Ót•ý~/RãVc §Ó±ÝÀyžÚm Á×Zb—4ŠV@XÒ fÍM—ø""MãD,BHŒì™yÑ9GÌ®ïªÂiÍìæúf>Œ(ŸònØ,ó伛봤y¿Ûtý¦,U\w ø{_~gØ\ä*¢Â‘]çØS à”°e³zQÉ©z _÷u_ÿù7¿ð曟Oi¹½½ù™ŸýéßÿÒçŸ×‘`™Æ'=|ÿü]í‡àc¶Ç÷¾dã+3,c'ÍY‹8çøâÂu>n†Z²'ÖZÁl†gï¿ÇŽÐ1‚T‡¨%A)ÛÇOf¤°¿p-ë1öÝüáöšÐœ'vˆDuQ„Ð":²Ã¡_òñÙ3çø+O_Lº}¨^=–tLιÂÚuÞ‹¨A0D€Ft"€¦òkÜiÏ|Œá~MWõk-µ–R3 9GW.©É(¶U–êƒZ Á‹v$R¡”ä«VPfª’‰Ð{n:hf"DÑ¡sch9Ĺ,Î1 Š”FÛn7€vê‚zï6Ûa»ÝˆÖ= U)f:N£™¦<3c•â<˜h!Â\vd Äh&H€d.†9-ÄXjaGjRj)µ¨‰h5Ð A•Ú¤÷Šhí}µw*R¬ëB{_zþPï])‹šPCòÑD«h©Ä@ŒJŒÂLªU´ï™†¡Ði:©Vf4fÐöÑD 9<Žfâ=Cs\²*Zœ#çH´¨÷L¥&3‰Ñ"¢Ž·Î¢ú³{  *¢²CçÐ@D‹h21kfAè—e2³ƒJ0CSfòžœ#dvCkxSšÉ!’±C@É9§.z"Z–,R¥¨ª:ïj-s^iš&üª‚ -¼Fµ‰¥›÷Vƒ[óÕ¦¨ëiý¡;› Á±CïÂátê ¦4™Ù4›Ð!Ú4ŸÌŒªóÞ».‚ã‹ËËyš4t]-9°ãèÓÝ­#‘»›—û Þn!¥° TPÕÓ¡ˆ¥”`™À(ncÉC¼|ý£ï¾ùEôØÇ‹¸]0£Æ›§×9ÍÑEo½GxýÉKz8öÛ«½sow "ÔÙ‘óEjUb7‡ÛÃ?ü™ÿ3’µò{¿™etʱÖoþ£_÷Wè¾öã-‡gãó§:‚É‚2Š"v>-2Ïó#íû¼,¡Û€x:éîÉ“'‡ñÈÔ`>Ž÷/Å݆R¾yç+Üïú’òx¨€Ãþ Šf6éœʼœ\FnøK)sZú¯úPùÊWˆý|<]^>º¸ºüìï½µ%8MG¼ðΑc›ç“¨c£ÐÅRK‘lfPˆ–²Ü«—£6f´jµh! b , qˆ«sžÑ}–€s®æÊÌ@à{.51³€ ÃZªc§E˜ÈBç=²…™–%ÅÉ!#ÕZ]`äÍ´jaf cOdd>ºœ³©^>º˜¦Éž–Ú#rÎìI¬2Ð’çívœï¹‹1¦4€¯ì½ò„ˆFFž?44mõSn¼Dö‡>nüj’³zÀ¯>œm»îûDÁd @¼ÏàÑÕxMl]Õ×Ô™ÕÀ§ikÚ•4,¬±"š²–ÚdCíç½ôh·Û9çš»F;%­UDüèG»jºz`­\ízÖYDûø¼÷ª•ˆ†½òäIÿ·'¿¡„«&tõ×7$3OÓñx¼¸Ø?yå¥ó$d5ÕS=C{VsÎãœ.¯v±k¤bJ)‘'"ª)Q3e¾»9]쯴˜÷~ÎɇŽÎÃóÞ£hQ"Š><¤›¨jìû\JGp!˜Y©ªÇã±U¨F»YÇÄ.çL*÷ì9çô>‹Q4ÆØò»›á‹ÓRR-Ã0€¨©À8Ý‚}ôH¤µ{/ÆðøêT%ì;ì=«Ôçï½óÆø½~бë†M™O9¥Ívƒwát¼Ûd$P­¥æ<9!$|ûŸþÖ…÷^Žw Ó×>òÑ7>¶»zI»­ ;¼„Ç8 X5󾈭ÔF:os:QµÕjÊ9ç#žCÐìÖ°93løW˜½÷Ë2­¾ÃmJe"m²ÃÌË2¬ ©öx¯nß Zs × º¶a®QC¿mTFïi¢ˆ„Ðßö0FGÔN…œóœjÙlzf`†ö[DÔfk§Óižõp8¬µfÇØwwwGr®éÔVºµÊ4ÆÙ:…”RDŠVY3cÚ;Zýùè>íÙò f}u]‘+¥ëì{‘s­uèB«wë眛̸M<ú¾o•±q&Ïã¿s(ú½³U»ÿ«ýæ}0RÇÑ{·,ËãÇO§Sû6WÇñ¡Û97Î3êSŸzã?8Ïó<Ï/^¼˜ç9¥TRþÀëÕ9G¦©–W_ýpÎÙ€Ì,„ND\tD´éú×^{͹ðèêñ«¯¾|{{XN‰¼#öfÆgs…%çÜùB˜NcŒqMØUUöŽ™S)«ws#m´éáp?8n‡Ä5;Ãyï ÏñaRŠaÈ€U±ë"âù„xŸf1 Ãñöû!–ô¡çO߇Ú1¶[…1UÑM×?ûÒ—^Þ_Øtw;\=ç´I̬©yDE˜– è˜yß [‡p<:ç<ñÝéî÷Þ¿þþÒ_˜¶„{LµX¤ZKï]^Jh\¹6õ{ñâEÛ9ÛjË©®¢Ö¶ïöpTõéÓ§«õð'>ñ‰•qwwL)MÓÔΉ닟)#HæÒôÉ+³£-͸1ŒV`{¢Úê_m'f[¬¾Nm¦¾Êž×„Qïý8Žg¢6oOx[Çóöû}«P1ÆRÓÀXçÜ0 kÄÙêИAMžµÞ½Õ}¥”r<›ÑåñpÎ=¦süêC&ÄÞ³†?·=#¥ÔÇØJäÉÑ&¡§ÓiåØi‰Ó4õ}¿RCWž÷šAî’îooC}àeY—B{Íöü¶k^»c}ß«Àé4ýÖïüÖÙwÔŇùÒ ¦L)™iŒ±ïå\k&ßl?šRÚ¬™³ÕM·Ùï/ô‡ÿÊK_F b¹ÚÒB¹Õ˜ªj•{Å’[ƒÝÈ¡*ŠHè:FJ)-Kj¦Ò¥ÔÛ|hlpçל ·[«%×j§ÓÉŰÆA)`&µZc-9¼Œ»‹!§TkvžrN¨º¿º€*i<‚âéæÐù.:¾yú©8•ç/n=z´ÝüþS;ù8_ß„nßAZ „¸éÇ»c¼Úß½¸y¼¿Ø¿ô.n7Ïž=ûòûïÃþbûÑ_=Ú}ávdݸ¶Ó¢Ó*YkA!RÇØ±ÇºÂxwD+—ä |…ïù®oùá¿ô‡Ó8½ÿ\xwzöt»J*~õˆRB«u)¥«…CŒ1<ÞíŽÏž]¾ô„v§›[3Ù]]\]îß}ë+—ÛÍ"™hVr}¿ò)Ûé.ù­ðñ7¢Áéö–}绞ÄrG¬ 1‡è¡™æi)’·}?/^¼X–Ô½üòo|þs¿þ¹Ïºí«·}ì—’)ài:^\\à³ëç„çøòÖ[ ÃàÜYå[‘RdÍ)1ÓZ+"ÔZû! ðÝîæyº;ܨ ö};·Ù.ˆAUÌÄ KIˆ  ŒÎ@^zéñáx|g LÉúnÓ|ÙÏ216[˜Õ¤*µÎ¢qmV$uÍ%lX­d,ËÒh¨­&ö}躎ï…ií̵V½Uâ×êT‹®ðÞ‡pµš½µ¯ëºyž/.µî¦Õ>ïID™a±Y{µ6‰ÈÕ£}+C­<µþ«ñÅ­ÝU¨5·™>³ÏyaöÌÐ÷›v÷B` ŽÎD ö™8G{Þ2#³¯5ÇØç¼x>·‹i½jk¬V²lùüɪ*QWUÚÉËLº®óžÛõ "!xϪ Z™½ªv›%˜¡5ƒ±XïJ‹™96ík’—R°Ø¹Æ°k. ôÎÛïýê¯þÊ÷|ÏŸ~÷Ëï‹’cöÞƒhι…Ây€qÛa¼½‹¶n`)K C­5•ºZ 6¨«óh©«¶ôìVô#ßómUª€¨úÎÉ?ÓÜ™€CçrJ9§nè¤,µdçÈ!:‡Ž9Í#¸è©J ÎÔŽ‡&ò„ zyy‘Çë÷žnا‡òü®özs¬‡‘]\nnÔ”£?L£‹ñxçqÖ”»Øo/.¶—WbX˜ò¦ÿ•ÏýöMÉ»Û%ÍK ÀÀ QJ.e^Ò4ל¹êÆÑ“¾‡Ãi'ðµ¯nþÖßøËß÷ïçá on¡¤Ëá®÷.x¯YާqØ\аD`DZ 1TÓ*…»axúû_(U‡.€çj:›¡÷ =;2L§™ÀGpþîî®ï‰\?ˆH¿ÙK­.•»éwaž½*–*KZ–%¸ ¢Pk¿Ý¤Û-Å; ö?þÄ?œ‡!†½$-ÊØ÷| m»ö[ï)D !pׇ]­yºØùœ™:GÄ£Gjù+Ñ{÷òËOBh»túЇ>B#14r“´¬jì<€óLˆ]‘‘¶i µ“&"ìö;b4ÐR³šB?tλ\rˆ˜Ðb·HŠä"y^F±J‹äT–~Ó‰ç)åÙVÐù®ãiljŸZK› „àc Ë2·ÁB³”@fr A#xGÌØ÷Q¤8F•‚ ˆ&ƒëû˜kn.øµç¸M-šÚ±E¹¤´´áÆ ¨¦¦VUP»v}>°C&ö‰Ñybç–4W‘®>„®¹çÛLÉ–´šÞ@ÇiT“6|4ÑjÐ~1hÂM4$tÎ#R =1uq`ÇLž˜†~BhñºLÞy—–RJf皊 96C%& eO±÷ÝÙ±¡Z 9øÃÕÕåf3´{⽆¾¤,Rß÷ýoù–‹‰r­*dH¦ªMl€Ú†‰1çÌŽW«ç]©UÅD•˜º¾«÷øzß÷···-Ó¨1oWöÿàðÇ )ÆÈL†è3„ù4^””rR|ʹë<…èTÍh¨Ê²Ì÷|kË9‰TD"F‘zw¸ >ÞÜÜäÜ,·§3`ˆ4Ïsÿ•²€Ù2OL”òâ½/9©iÉ)Ä(µ8v-}bYæü4žrIÀŽ6}hL8N§¼–”DkZæRsÍMªí6°aè›Ëñ>ÆQ‹2N]­·rLcô!€s>¦èŒóÎ9ëRLÖXï¼5Ö£¤rÖzççÁûäÜÔu¹k»vÓ¦bˆí¦µ£B& ¡Þø˜R¿í­s1äq ç|‘R6 #&D¨ Díº~ÿÀZç}B†€¥±%„Z»kN !RÊJiƘ÷sEQ !ʲŒJ¥Rº,(gU]s!Œµ”3ç}LIEʹ¬+²oûå|©¤J! ]j³à±“9eg½5.Xð»¶Ï ¢OΚà|×vB0%eJyµZSªªúš¯þšnÛ…8g”I‰îà™2bä‚£zG‚SrÎ3Ƴ )ÈÁ;9xO !)cF¥‚sÁgÜ{ïcàR¢º —²¬ªœ’í{¥5ž<ŠyƘÐ"™1úpf$]k¥1äv½œÎtIK¥f °#t½3’° ¥ÒÍœi³×ÎtþÝ#}îÑûž÷(tM™õ[=[TJ®Ö'M]Ì´Ûl‹²œ-fÝ`]ÎÊ&–M×v$c¬¬Ôà,DÆ)Ó‚Gc…÷,ÏpeN¾ÿÕßù¯ùžq}»»õXÍééÉzïà`\mŠr!*å²ÙnW\ÖB}°\]¿^¦$¥ÊÎ3¥š¥ntÚ­cŒr„”ûõVÕ¥KÀ”²[{çäøÚ¥+„³Çz€iyå®»¨§ëŽQW§xô©PX ÎÅnY(*R²mK]ê¶ÝÁÝW?õ±¿¹iÌiï>øÇü ój>Ûn†»®ìj9c2!„ ÁJ¼·”"¿!¢ôõ4ò›”³'9ìnJ)‘¨Œ;ûrŸ°/Ó4 npô–ý(¾óÞsÓtl–<ÑÉž`Çd ! à”2vÀ~<þJY–‚+ThRJEÈ.\8<þñã]TUå½åœƒA‚ÞdmÛ"ycÆ)çåà …–ÞEÆ %¼®Š” J‰¥”–³¹Öz½ÞVU¡Šj4=ÔÓ4Í;w–Ë%öÔ°Þ!„,—KBÈb±X­Vu]§”Ʊ¯ëºišIT‡Œëõº(ŠªªðŒ™¤µöö¸ÛíÖz·˜Í·Û­÷þ/xÁÝwß=ùVô}_…Flâ{ÄsvÇ¥”>òÈ#u]Ïë§É8­ÓZ{o·ÛíÁÅK·oß¾yë!¹ª*l×uƘ¦ž—eýéO~ú±ÇëûŽqÂåL|L!†óvgçÍë)#“I­µVžóŽ>ï Ï /ï ì;a´ÖuJ9„0ßß!¢±Î¹‘GšNIqtb½·B2*¹‡(ªK.2F(¥‡OyŠ;9î·­mo6E™¼ã™Dk´*»mëÇA(Qê"Û ¥œïß>¦ª<99ý‹?ù‹+×î¾r-V³ÜXVŠAN¶³n FâÖÆ¨¢¾,÷¿ìÙÏùãý­¾|5Œý8ÆÐY9«’qŒ1}Ã<Ü='?ðªW¾âÛ^¼¬ÔöúÃÙ›ù¬îÇ1+í•{ÀZ˜]J€wPUëÁ,)•eÙÛ°ÞVÅ êj¼sûöõÇ÷—{Ëg>#¬¡ýº].¥ìÚmÚn—‹=™Éöt5«›zÞH)}×Ç̲ˡ;‰I7{ûÖo<5b¶tÛuĵ.OX¶}Wf"ˆ8}èæŸ»³RzUÊk_÷Ÿqñ’(ê÷þʯnnÉAëHS΄ç}ðÞUYU’p“´m‹FOØíæœïííáXm‘šÛ¶›í¶Ã½ª”Z,›Íæààâõë×±)þâ¿ø¹Ï}®¤$&?QŽ' œ‘£ô2-v1¨¨ÏC(¥hÛ¸\.1’B„àgª8<†Ý|zooïýà~üÇûñWîºÚuÝv»í¶ÛáÌŽ8¥$«ë…èÚ¶Ö4N»ÏÔvò#Rn6üW’c×uëõºiš®ÛEñêW÷[Þò–y3#¼G3ÔA§”Žšð¿pšÉÐ2ÆÝÏ+F(…” %$(å1B* „µ&й,I7„²ä7n¿èE/züñÇ10M‚|x,—Ë“““ÓÓScLg xlLά¨wˆ¹$¢+w6«Tb@Bxçž~ソök¿vß}Ïd; ¬¥`“””1H ‚Î!àRÆ[4ïsB¸÷Ihš0Ö‚÷‘ ªù½ßûÃûïÿ¡Ë—®—6ë¾ë:Bh@)?o ‡MtœY±îÞÜ ¬p^]òÌXdçØ„ÇÆÎ¢<.¤ôÁ‹¢„q¸yýzY–³Å’s®¤Âe…Ö@)3$ÆHr’wm[Ïg¶ï9'!8F’]ŸP Íb¦±mßžžòŒÛö4CŒ~½:e4WÔç¡¡«a´™v&~æÁG½qòŒûž9?0¢ºú`ÁËÒÚž)q ËÓ­-H~ÑWÿÿüô™ëºB’n1Þä’¸2¯ùŽWüÓ×|ŒfÜœ¤¶sí oc‚ý+Wðn³)¥°#HÖ¡²®ü«¿zêSùv»²Æ(Æ›½}ÍÅêè$Ý>¦¥æó!Ó”Ûõf6› ÛJ©aPhÞrˆÉXÓuqefŽ6·Ì*:»ë*$eïÜ|äáC]*ÁívÈœ°DrˆwNן¸½>Uú+ÿñ+àÊÅ—]¾¨êù¿ÿý?4­áŒxˆ3. ¼©jT+Ü®7}ßãÈ|r`ÆãËS6”òÆèÜ×¶-ŽÒ•R³Ùl6›yïONNú¾?88ˆ1>ð™‡ü8VóùÛßþöþáïóÄŽŒûö ë@!HJ€Ü[ä,#|2eŒ‚{8Š!Gs¦`E'ªò'…áôtóž÷¼çôè÷ÛÃ?Ü4 Ò÷'OP!DŽïwâ!#Àq “¦o9çÅÞ^Qu]£¤D]×eYbüzÎsžóæ7¿¹iB61.çœCˆSnõ„ãVÎ!°#d'rïG—¦ø ”îªÒD%«u‡q³ï¡Ùç-ëâÑGo½èE/ú»e9ŸÏ¤CpH IDATØ…û0 9ç7n ¼`oo !Jk2ŽGÈÞò|>ŸXГùëR̃÷Ï~öß{Ö³ž )Ç)ïbL<ÅuÞ»($Cų”Rà\HŒ B² œ!§PbC¤ñ„1„š7£ñŸúÔão|ã½÷<òH ðŒgÜ7_4Co­ñœï„1(ù<·žI ˜óöÚÓÜsÒÆ˜¼‚ðÿ“Ásî†._½cØnׄE ˆÎ¥”ÆÍHbŒÉ¢ôÛ Ä” …‡…"ÀŽC !ˆyÃ!s–C7² vÛmMÐRÆàOމ‚ ­ªÅá¥õãËåò´ïo¶ëGþꯞyß½ÿ¹÷ñLºÇïHEA38QÔŠPŸSIó3ŸrùÓÇGervH‡ÄäZ×<÷)/ü†¯ÿo^ö²FŠþäz"Yd'¿pù¸Ý2Æ$åc7P&UY…eN© p @¯^;½~‹dÈ)çDS‚ܸÐõéÑËåБ…ñlÜb¹tÖrÎû“Ó’‰”’ß¶]×) Ëf‘_¯O—‡WVÇwɬ®NoŸÌkѯת¨ƒ³§}»n·ÔÇc›O‹åW}ÇwúýuJþÎæšš½÷=ÿ&dƈ`B‰ñ’Ì`\ Zë`Ù˜œRâÓœ3…Ùy!_וRú0ÏÀb±888À’íÒå ðš×¼æŸÞÿ}1AJ9ätæèüÄîÍ9C˜N¿É„†1ê}€tæOá Ù˜´F1¼<9†alÅÎ…õþåÿíË?ýéO.örŽ”‚1c¤ë:J)<å°Ù®BZH,…8§ˆ¢Rìaä"„(%°N$„Œ£Y­V«ªªªª:==¶Ö–e‰²pï}ï{÷–‹B;ŽMÓd`”Òâ$:|¶‰vnZˆ6ò„Ì¿˜2$Ô®’R@ð-c;ëBSL™Ï£µ¯|åwþ݃ŸÙ»pˆÊÆ”Â0t笛¦QJ0ƶÛmß·˜O^8X»aJ5Õû8JÃï䜛jA»uãñ¿÷ÜçþÂÏý,#Ð=!ŒsÊÁ¬1zÊ{…– €H 1fï!´ªôØÙ~ìœ J‹¦žKÅ­ñýÐïj:Uä3@YkÍyùC?ôCŸ}è!© 7:ÎêŸ K“~Y†<Pta:bwž&gp) ÃpvæÌ‘!?‘º !ùõ|Á¥ìûî œ“â%Ðìó>Ç!c4ç¾ë”>XÅxJÉôM1[[( )JÆGïÍh &öê™çÞ VhV_y—‡a<]µý`#—cr¨±îÿÃ|èÁO½ä…ßpe1·ýHs9š™.ûaŒ.ìU’>ºzáW|ñ|±¸´\þ£~£.ÈÅ {ZÊÕÑ.Á²*†v+µÈÙ9)µa°~ïÂ%ïb.A’J‚”’qszª/_Š.2­­ÛÍf±y~élN·§§’0]誨o]~Þ³Éñ‰Y«b\o £Áy;ŒU=w¦O)6e•­'cõ¬¢B:úÓÍ(†þÎmž™sös'§ý`/ÝsO®æw6­çê¼ðekU¯{+–ÍáᥟxÛOþ?ý1*ø˜¤LŒË>0.e¡ä\K¥0™šª04CÆl Ù (´T×5:cîmŒÁ£RBÂç¿_ù•_ù’—¼äÓŸþÌÍ›7÷÷î¹ûÚ´OPO¿é`œÎÃé„ÄÕ9©Äd€'Ä˧<#WYʶ5ïü™ŸùÓ?ýSˆ±®kü[>Î9Â&3%ι¦i–Ë¥r¤›LhLk-"û'¨éª8çXc§ S­n½þ‘7½éÚµkèý5Ÿ7ãhQsu’Лbô”WNw4éâ3À9ä˜3þʤËNCpu]Ƙ­µT °–ƒýáþáÿòg¦ÎÄR1ß4 F%¼ |2XéÃ0‘W&Ìþ ²ó&Ð,v¸ðKç\3Ÿô£¿yùòe3ŒËeΡËi憄‡ÃÃÃãã£O|âÃ0<ïyÏ»páÂÑÑÉÞb¡ôrò=´6sÁ÷Ê¥µŽsn\ ” µK-ßõ®wýÎïüö¥Ë—Bˆ³»>|+Y|æ¨i2I}MÙñy¿µÉÿy²ïÆ>ìyKÉ%hâ1ÿùC“<~ÕÌ‚÷ØÒ+Ї-48ŸRÈ9»alÊ ¬Îé¥>:Áä쇞’LC"ιnˆÆHšÈáúaÕu£LS¦.Ä㲜-3)K&Ôl¶8:>1ÆÝ:¾ý±O}lØ®î=¼øô»¯•µM!^Ìf-úê• °îÛåÁ?và!1+U@Ê};;ƃ¢e±=9šíï¥@X)p)k¥!Ññæ­õéÍËÏ}®÷)„T0:\¿Óvá`±lOŽj-¹T Dº}çáÏ~æê½OÕûûÐ ýf3F¿\.!§íñ鲞ÅcLwº^,TKkmR}¿(°ýýýêààᇰ.hYÍfB/ÿÓ'?å®\|Ú×~ƒ©†)üò`ï‘¿{è{¾çU6ŒTÑŒs¦ É.H 1§.©U¿ZSÆ'U³Ip®ijâQ†©–"„X×õ$­'„|˜¶Ö¾ô¥/}ë[ßzp°ŸR>==­ëºPr‚_ORyS6ÙÏç_“ïñd,:ùú¢Úòù®òþà^õªW@UU˜PÊœ:çp,€ÎcÈq™ „ÚE1™åஞçœ3ç™FŒ1J‰µÖöý7¾èEïÿû/\Øïº±ª LÍJ¥Çqä\N·3%5S?ûb“|ð®-CÒ®N¤bªw|ŠÈãE2pÓÔÃ0¾÷½ïýñ·½­iÀÆ<î˲Ül6Sjâî ð\.±˜Å¸£ Ä8 ³àÝåœw6±B ×ç­o}ë¾ñŸ­7]!¶ÃðÅ1ÙÄ·ÍÜPɇ1j­ÃйùyËR ¬xk˜32ÆFëæ3ýŸÿìÿþº¯ýÚª®ªªò>бsW®\ýÍ|ôs<>ôAµ³ž„ÝâÁæÀ4( tçÓ?†•ïD»ž4Zñj'¯C®êÚõ=®°q°)K‰1Ä ÍÉ‘à¬ÖšJIS’Ð!¶ý(9ÆQI.¤°›m× Š0Óönè¶ã=Ÿ•R•KÉ'*‰„J«ƒCÆc¢®fÛm·wõ¢Rú ¿üßüõÑ;üûq é©_þeÐhP<ö=Xß=^×µvfõðQÕ49úƒ–R¨Â £Öµ˜Í¼‹™œØ¸é/@WÃ; ¢R…ÐJk 1qEQ<ºZ_ö^ˆšóÛµ 6¨ô£á‹9„dNWšó²¦FëDZÚÛ‹§'ÑùÍɉd<ÅhúÁCØ ”¬6§„ƒzÏDãÁ›À¦ÍÛO¹rwçcVå­Î<|ýqxÚÓŸÿ-ßúh?&;g/^¨ëò—~é—ìЊEé£kià)C1sœ E«¦^Ìæ‚2ÃáûŠý”îœh1˜I)7›íjµ"gþÉ!„èwWëŒyðÁ›¦a ¼{{{ÓaˆQôó…áyóú)Zaž5Ù ãZÄÓ2ÆÛ™ä{ìÆÍïýÞ凜6M£”BÍrÎy8ka¿FQÅy‘?4ÚAôù8Ž:ŸFˆ³ÇªªÝŽéÁÝw¿ë]ï:8Ø7Æ !6›¶(:k­ut>IÄÐ+¬¦Üp Ê(΋åmÂ!xΙ±á‘‚ŸÿL)r!¬õZ)Jaü_ÿõ_ÿÿýë î &Ú¶ÅBµïûªªEÙ4M×uøOmh² ÅThÊtpßÕu}–;‡åryr|üU_ñ‚Ÿû™Ÿ-•4QûO·9e9çâ­;óÜÍ“ÛR1—ÄÀ1yˆar´SĦ¬(ø`Â[Þò–Ï~æ3óý½œ³ÒÂÙ‹ÅNèŠó¡·„„]ʇéR'é”R©QÊ"Nƒ̬‘Ê>i=O’Ö“Kâ{¥¥B ÆÅb;¥¤RÀ)ç4Goƒ·ÎPN"xˆ‰@”2)Bôn07n|¶–šÚPHeÛ!9ßšŽyáž»‰Ðí8î¹û(åBÌB°ý%ÓJ0š6ëÌ¡3›bwt]1^ͪTˆ˜ƒ7=¥À¨,§,Y¯ É(ñÚK]†6å@S†”G ¨‰%8áÄ› ë™?Ú6‹…LjG0Ap]§ª¬-ŠÂ*ÐÀ˜¡(ª’ ·‡õšSp Ùå|qçÆ­ƒåÞvhuY¸a¬æ ¦¹1Æ3*8·í ¸Èœn×-tÉ‹®¶Ã ‰–º\nǘ‡LïtÛGŽ7_öí/‹W¯m"!=QÀ¨à{ËÙñ­›ï}÷¿äM’q~œ75é­¦´æJÒR“QÉ8Ä((C±P<—o5UûØÀš\ˆ ¡ÛíVJ‰Y‰÷‰¦u]¿ï}ï»ë®ËÛmñâÅ3Åd‰æQ~R @”Ðägs¾$œr雸îÛ¶Íf)¥ÍfÓ4MÎù]ïz×­[·®^½ŠkïÂ:WUÕf³)ËÁŸ8;ëºÏ[ürÇù|Þ¶-!_/ ›>“öËÉÉÉr¹DJéÛÞö¶—¼ä%1Ƽ“Zÿ¼I”C}áÇÔ¤›Ag„p’óNÝegFÏ¥ÔûXj,çüæÍ›¯}íkWÇǺªÞ9uô¦÷ívPjfê@Oí*„Åâw0”ìp^Ë%f@h€úðƒ^øùŸÿùù|fíN}ò”Œ1æ˜&;¢]‚L>ï›î kÕóœö†¥”ªã~å}¿òû¿ÿûóý½Åbeµ”2gˆ1.MUU7®ßa´ !bB‡©..¤éeñÖð!`ÃirNŸG×"¬I'ÿJàÑ£ë7P¦ívîI)'ï\Š9D J)pÊg™¤³5Ö™‘Æ(( (É÷>ã™ætmÉ ¹TÊ‘] º|äøøàÒ^Cö«fŒ ë--U '«¾ëÀx'%7ÆÌóËKÓm•HÛ&9Md-çܧÀ+X*ʤ¡§‰ÙÎóT¢gN¦é2K ó0lʦ²«“íz¥vÒ•3×¶<°´]ßQ‚×usûæ­»¯=bðÖ½¡‘óålÇ>Ú±õ+|]êÖdï‚wQNY!äÉÉ |0ƒRS. ±qc!Ë*k?Æu´|1ó& !sŸ WŸ<º#Ÿuß—|Ý×_Û³ÅÚõµ«ßþ–7ŒíªXV”1’|ß û¢&)ûÆã#)%'HÆ£xBëàçÓ\irè:s+ gs||,¥ôÎö}ÿË¿üË/øÊç{–óÊ{ C|*ßrÆ´‚LmJ9@ÊêÕÉ)e€4-ú)Z!½–s9 †1VU çì7~ã£ïxÇO/ö7›. Îù­Û·g³r;l…%!.â©„A%N‡ɉKƒõô°òÒª°Æi­oߺõu_óµ?ú#oÈ!æÏ6'SΙä”èYQ6E±óî^ç=hÏ/Ggdçp‰€÷PתmÝ«_ýšÛ·¯\-K-¥È9b”™ÏçJ)ìR­V«ÉâJß÷˜÷M†i“ãÖÔ,Ê#>•òmo{Û—~éóÆÑBf³¦ï‡ãl†ÐŒ»;žûÐZOCàÝÝQ‚3Çó­FüÓS<ŽáxûÛßžsVJÏçó¡SÊ„°¾šz1A¤ÜùžcÒ¤®uÖAŸJ?̘0·šdEñŠ¢˜TÌ(;ᢹ`ÜzÇ)ƒ”!eçœ.Š'zœÆ§Ñ%È!*É5u% i„)Bðmö›Õv4}2R D©+÷>sÕ÷ã0.%Ë1!uãxu4›-„@*J©KMƒèÏvìZ7ðBÕªà@BAY’3ø”|?Hʸ(cÖxNŠ'Í)çÑz—¢ãšnµ^Ô ‹H‚a„÷›­NE²V*%‹ò¦1ñ±Ï1­EYÂ}ï‡vCb6Ãi¦‚÷ëmÅy!ÕõÇ/öæCl17n܈Î×óY ±w=aÒßÛ±ÒÕézË„i$$Zã(¡›Þd?ÿÒç/¾è‹nyšUÅh,)d'›“ûžùÔÿoüÃÿóÿ¨K•œSš†œ£›¡ST ÅD¡(ã$ÅìCLQ(™³Ã® R—ÑXqØ“¨Ð¼ú~`Œ!Ø mûÊB—eùò—¿³¢qtÓñ~6Îßa&±—Ép IØ1ç[]Sb✫kmLÈ9ò“ŸyÝë^‡»ôðð°ë{c ÊÂŒãxpp°ÙlPÏ{á¼’)ÅÃ%kŒ988ÀÀ´¿¿?¼“ºžÖÚŽ¶ªª[·o^¹zõCúVJIçü¹†:Gžk´O¾ÊÓíŸÿrúý·wþ‰g©%!D)nŒ|ß÷}ß_þå_b‚°Ùlºn'Sƒ,ðɽ½=Qi7ô‹ÅÆ®\¹òÈC>ýÙÏ « %<GiVÍL•ÚÛ1ô}ÁXt¾(Š£““§_8J¢,†¡ÐÚo½Ë‘”e9ÚD• LÚ1BÙ ÍâY_÷Mùâ•S Á$bÃr9ß m?nŸúŒ{nßzÏûÞ£•¤9iÉDZgJ0!y¡ƒOcÄåžÂH·~ˆ9¥d…›Ív OË ãÓ\FJµX,ÐȯªÊ;wîl6›_ÿõ_ŸU5ð)¤”¤ÎÙ¢(bˆ¸$&Çiš>-婃~–•¤sÑjŠbpöˆœ”²ï‡×¼æµÞ‡Ãà .z gšØøÀªa¹\b#¹mÛÝxkBàÊ•+¨ŸÕ¶-¦]ˆzŸ$yÄ›ª¹ñøãÖÚßøð¿=88‚†Á ýzŽ Ì¡ £Dú“2¬'%VSüÂàâ}D#N@°,AŽ01U•xûÛßñ[¿õLðÑ@ó8Žûûûˆn—RbWUfˆtœ‘ë†IÖ™ÒËe)îa,šðù|Ññ›Þô&t².¸é‡I\ì|ˆ"-ªàÉ…0¬œžtêL™&¥ô'~â'~è¡foŸRÎyTJu]»X,„}?Àl6›N;Œ;8¾ÃP8Ž#fÄx§(C„k i¡ò˜Vj×L7öàwL†¡ëHÎÎû]§³ªœ±„C»ÝrN…`Zk9ÆvöŒ„˜‚’wC߇!§«O¹[Í ”F^™‚X(8$Ⱦ]s¡€AH^º·ýv½©ÊrÖ4¼ÔÛ;G”U”Æ ZH*Dr#„Ðrv2€ón^W´’2Äh½ŒA ÅB‚œ¼ç”&—)%±w‡ÕRÎfîx6ëíjÍ8dê`ÆFŒB&u]_wcwûN}á.¡'9®6§ëÛG ÒÅfv|ršãî¶Ý@EüŽ÷^d )G¤V!%Ê9q1÷fôRµÃ‘ žõœ{¾ôù¡“ÒT‹‚øÑö]WÔŠ0à’ýÒ/üüÑ­Û’]UÎö@Qm F¡„ ­tŽ1oñÁ¥¼ó Å!à”*cY„ ç)Yâœw]ç½_¯×u] Ãð-/}é·|Ë·Ãà¼÷eY¢<.¶„Òç£(q£ž·ö;?.L)’?oíŸe1; ÎsÎ?ù“?ùñüðð°Ç¢Ô`G9Û«†p].—K”ýCÚ3²ÝnW«UÓ4ÚB®\ß™$1ÞfÎyl{BÈ›ßüæ¿ø­MÎír“ó™àçÁ¬’‹éŸ¦p<å›çá”Ò|–íÓ?øëï|ç;¥”Jkl¸”e™RÂ`Jéàà³Lþ “q4JýMùÂÔsÌap{¿ûÝï^,Þ¹iŠŠÊèã8Îf3d_b¸Áà…Ñç<¦éü¶& ýôÖ Á?üá¼÷_ÿëÙr9_,Pw ¸1¦ï‡q´œ¨œ³µžš3L.M g ÂOSü{a˜m!qÛü¬dR+Ä·ƒ½õ»¾µ, ÎX†ìœãBpA¹T£4Å@€J”ÖLJªdwrDH­(£)EÈY ¦ M)“Jã˜sJŒ2%a1']&¸2²à< .÷µ,–õ¬ÔÊZ“‚…*ê ³)ÊXb”IP%oÞTDIÎ(MY¤ Á,‘Œ(HÌÛ0ºàr$$Ådîƒpy8ZW\­oÝi×›ªÒ@aÿÞ»íÐŽ«u·^_¿Î€ÎSÎâízSÏÀ…±[Wµ.—ûœRfÎ`Û®,ŠrÞFhÌ;ÜŠ!F]ntÖØDéhíf»¥™Af^ðG†nÜÛ»çk¿~öìçÝöyíá¿|ìoyôÑg=ë¾Ó“£B‰¢ÅÞìãŸø›õ/~žæDJaÀ'N¹’„Ъl2 8 .HÊR ]©ÙÞb1›—e…Î ¢2ÐOVìÓ$wµÖŠ1Ön·w]½ú»¿û»)¥à|Yj)U×u3vå˲DÍÏû’žŽžoëœ}ƒž§ò`4ˆ1Ï{Þ÷Ó?ýÓ;1åRÊ”1€]É0íXL ƒ ….8ãJªåb¹˜/2€”*„h­½q㦵®ëz­ üãhÈ’&˜œäüüç?ÿ}ï{_דq©Ö"… yW žo9SB  ‡;÷9e”áç(B€@†œH¢”dÈèÐ…úûÐw÷«úíæéÏ| æ4MÓumJÙû€M.k]Œ)g0Æxï ¡R*0Ææ ØjTJNª¡“W#n~ ë˜mýâ/þâ7ó SÊRòq4Zë®ë¸”1’+Ç)dd€”sˆ!ø€7>‘<ÓOÂv` ÿä'?õ]ßõª€ÄcE¡Ï¬·¼”ºª*)ô•+W¾é¿záÐ)r&C˜° œÔîq­zï¦6ÖÇ9×-¥ uªÍŸèj­)c$ÆÓã­5OU Î J2%(€›r€0˜­RŠ@rÞ[3䥊 ÂXL@…T 2¥b6 £I”ã8¿xØÝ¹\ÐRA³Ïzoßž¬ÝhT¡sÌÅ|Ï çÜ« Í9÷>F”R½ÙfÁ"MŠ £’³<¯®tgÆI?8šYQÍOú-áDURúNYwäòÕ{þÁ—÷åüÔŬëZÖ_þ‚Kó¦Ù¬×¯ö«Uμ’òoÿÝ8.÷šm6‹ý=!X·ÞT•Ž>pÎ!‰f¥”OCL!øH[o׌ñ‰ÀÍ<±ð‚slE !ªª*Š [kçóù»ßýnDf2ÈmÛ¡c%£tGœ²K©'0á4o:¿¾Ï·xpðÍì'5ÝHUÉ?ù“¿xÛÛÞæ½·g}t.Åf³QJUU…Ñ «9ìk`ç‹s~ëÖ-lNUYÒƒçó9¶o±ë¬µFœ$Ã`­}æÓžþþ÷¿Ÿ1R–¥Ðu¶(ô0XNÙùËûB’íùLê|q4u‚wÓ´à)¥òD]FLÜ·}Û·­V«ûžóœG}£Ìññ±B)Ž °q1!^SElA¢”R ¯'<Á¡Â™¦$«ÕêÿüŸ¿ú»_éC6ãˆH>êÿ IDATí!ï=†cŒ…R¨p?!&³ ¦˜ÍùÄêü{z¾ œn^ÿúןœœ4ó¥ÖÚ‚+ …é|J‰sê½o×C;žMÔ2'ð)Æí²¼I6 |(ºW–%–‡gø¸Œ:ÎççK”RöCÿõ7JTU’ %µ’1d`RB 'qfüäŒã‚·›uNQpÎ'”…BL!F]–@Óʃà2Ç „„dã‡Î,ûv°@¸**;˜!最¥HJÎz’²ärsº.… >@ !:-YpcÉ9SêœÍ9;o†¡/”¶[Óö hw²^Ö‹dÖ…{½\ˆBNùÁb}ýñà§´=YWEÕŸÆMÏbÚ¬VRJ%x!#Y´'Ç{MÍs¤.Ú¾'1õ£)fu¤Œ)3‘Z3Êåãà(•\èÑøM7f.ë¡„óOÛODñÔozéÁ³¿˜í]ì=‰Y$à….»õÚCòŽ1‚\¾ëÒßÿo~ç·~CkH ݺû~F’‰ó>úhµã˜b°Î¤œ£9f$â Fèjµªª3¨ÿ‰vÛíVJa­‘R¬V«aèµ§§§¯~õ«ð€1bŒ%@(e˜Ãg œ ”Ž:\8?,{’nuJ)g;†¼R2ï´:YÎ(íû¿ýÛ{ì±+W¯Í‹œa¶˜yïçóZ[Öu%¥D´!è‘Ç8Ó…Î %ô %‹…° CMFyÜi(2ó»¿ó;OyÊÝŒc Ös)%­%fH1Ř"ZÔaÚ„ÉÊ“LPFÑ'vúüÝÝÿh¥rJY¡ê¬ÿ'ßùOþæGäGY–X­c‘ ŒQì[圌‘b9ÕÔHZ†azJi7R«K/"ø;%,t"gŒ3vtóæßþóÿå/ýÏŒr’d@íW rÆ/§ûùŒx:0”ÎadrŸä‚ãdvtÓ4|]?ù?ýÔ‡>ô]•RÊ”bÊSxt#„@Ô÷´{îùÆo|á8ZF )e€a˜`@)„’L€q–S’RrÊe”1œ`ëjôc^SDAã-°ŸýÑ×ålß)¥Ühb18Î9#Th£ÇÑ£”âBRÆ“9爬+A€H¥Œu2EJDo-*üH´±¨›è#“Š2Á…J‹½Â$º óŠsÆ8#9Æ …À~aN‰0J@TW!e%dSVÃz]HE3a@åÎÙ¼1#e”§Ôýââ%Ûµf¨4“qÛUº¨›z†ÃØõ‹ºœ¥ë“’¡™-L×3ƤV]ßf Œå ý8 ÖИ’aµ]»YQž7PÑ3ýÀíÃ&?ý_ʯÜÓEjÅÌËzN(#„()½·óyS †¡ýÑ7¼Þ:£*)$ŒSB$—$Á%NÍSˆUU"»§ûZkœ‹# YS@Á¦¦s‘Á88ÃŽÏ8 ÷Þ{ï¯þê¯J©OO׋yb>?Ñ;ÆžïUM“¯Ôd0s6”´eYbÁÂ8γsQˆ 䵯ýïþüÏÿ\J™cλ‘ çQM [ìXÓáŒÉ:X-bY„“ʲ,ñŸ0yœzºxbã¸íÆoü‘7¼ô%ÿ¨(„µ!ƈ…pJÉû0AÉ'äÔ“†žÓÇ“j¥'Á””ÄZËK9{î¿ÿþßþíߦ|‡G´="`±& !´m‹ÂdŒþüß=ÿ䋲 !lVklZu]‡ø~ÆØí7î¾û)¿ý[½téÀg†±ÐE†ü$Âãb¬> ÎØígs•*u}6ÐX.š÷ïþãë_ÿúÙ|¦”ÚB­H½1†q"WR !½u÷Þû̯úª¯>ºs ™…CŒ„¥”  rL‘QB(‹"ÆHÆq¤Œbª5©×ã3‘Ï&¢Øn jÛ5c¬,KàÜt½Ö:¥0 CY–À˜*K)¥32cº¾×5É1¥ttýf© Ƙ®?Ž’+.„wnÇa4ØdaR1!‰È$Ó T•ÕzÓ.÷÷Í`tU›ÍÆ{¯8—Z“²VÜ íÆÙžBvÎ)]ä‹¢$Œ‚Rv½îû~1ŸsY4eã×7P¤œRºØžžø‹¢Ú¶[!„ó¶(ŠØu9Ä¢(ÊÙÜl¶„3Ê™÷þâÅ+«“ÊØÉqË9Ÿï_±µ!ôÑó罪©¼àmÛ†D¤ªd!¶›6+8¥"%Jކuª–Ÿkã©eO}Á·>ûàÌç„’IE(a\Û‡è)¡äñÉÉÁþboö¦7¿ñøäŽP"¥„ƒæ ˆ0ygMó`¬~5Ž#îgÁ<ÁÑCY¾6Ñz¶Ûí8Žþð‡÷ö–1¦ ûËv;LÖðO´“3BbN_¸ôÏ‹«u]‡Œ Ì &+ªår´m[–µµñyÿ~ó73İpBjÛ¶®kÆðü§È/Á¢Qû¿0ÎND3|h#†MèɳG ZªnÛ@çý ¾ü+~ìÇ~L‰]ÏFr bc[À ©œ!çO®v§ªpj蜯žð ›¦Wò§~êç>ðþ÷e)´Â‘E<:LÓ[œëaí3§vê&;/™'T‘€±5†0ŸÍ0‘4ý0Ÿ/Þõ®w]»vmè,Ö\çñºO O_Xüž]OÌgüëxg™ú MÓ<ðàßÝÿý“U%ŒR*…B 2-e „` ¨”úàà®B'"ûÄqò³sù}Bs‚êœCëª(¥”ÆY\ESʉÏŸó„ÏÂ_çXN{ïoݺ}tt4+«k×®Q]š®%Z'k !ÎXìÿ-æ Ù¶Û®ë/çc®e]ö'ëP›Ÿ¥”`J—!ìcLɘ(1ŘÚÀ áC`ygñZJÉ)!lçãcd‰’°Ê¥œÛ¾‡˜cE]CJë[·ê¢ŒÎÇLšª)Ÿ._º Œõ›MÛ¶Û9ä±íJ¡¤”b¹ÆÑYk}PR{—”V@麊ªY­OŽoÜ\43ƒ5¦.«³R%2kGÓ™A±u>r¾±éѵÉ9îß÷ÅÏxî—¼6@€ÄbYV„Rç q.æ,… $Wu Ù_¼|áÿýË¿øýÿý£RËù¼ñq׌œ ]•Ï&wJ)ŒžôüwL#k±321ûµÖØ¿À„èøøxu|üú7¼áÞ{ïÅ Ž1ûOjÜP _øž"×ÔÔ@/)äý3Ƨˆ0Z¯·Jë¦i(…}ìÓo|㥔{³ýù|žà´>%$ô‡#~gÚ®ÓÒÄÞ1i+RîºT“pÒ¹äÎy‹°‰þððð#ùÉÙ™2*ç4„„Ú‰è{>ç<!üýüí|Ìb‚2ÆúÞV•úÈ¿ýè;ÞñŽf6ÓZ£?^<8NòOS¨BÖº °^¯'¥VŒ>øÞ¬o3ŽøRÆ3Ž?õS?õ²—}«÷±,Õ0X­UJŸ§äõÿÛœš  Sšëg9%ß ®KIr’’ ƒ}ó›ßÜ÷ý=÷Ü3šs™xï]ðXئ”(­5DcÆ{Á¢. $3 !BŠSK%€\–¥3Ý0c1§IŸoRÝ@Ÿ:|Ó`×5CùÔÅb¡”ª”Ì9ú¾×ZCŽÞÛ”RÝ4EQcýéééñÉÁÞ¾q6[ôÝX-—‚œ—y誫×`³ò.¤ZBXYÔPVÞF ,ÄÌ…2Æ\ºœ—õl†²n!"o°¶Û¬ )bJ”ò‰½s&„ZkçÍœPꇑäìO4F”ä‹f¶]ofûûs]!Æ0v[ïbÓ4CÛ-öö¼IL«Õ*ú°·wÀ• ι8×ʇb26ºÉ¬µ‚NÙéjk< 1§è½w@‰MàÊæ$òÇÖÁª½+_ñ Ïø²<|´ºYÈ.¤´?_c20J9å!Äœw„äñ¸½v×å”ýåÍÀ‰*d7tS[wà4,ÇÅàdÕMÎ]¸âg³~‰¸¤c×u8ûÇ‘6 6Ä¿ú«¿æþÅ; Œ1ˆ‰2öJ0Žì63?k1Ÿ§gÆ£Ly† S˜ŽÆ Ø©TÊûè}¼ut绿÷ÕòBîܹƒ>(ÃàRUU(`;1Qð ŸUxñxÒÎçsTÚCÙNi £lƪª4ëõRúÐ>0«kT(4° Â5Æžw^9?7 ŸŸFÁî‘øä¼A»¤O)¥|@Ï4µ<‘ò‰‹¼œä¸û¾×Ù¶W5‰¢¦>B·H ºDÔÁÁè ú.X[–¥PRÎ&iè—Ë¥¢ÈsU–±ïm×åYQNgåþAê{&Uô>+ÊMÓî]º¼}ЦëUÎÀbÁx„‚³$ãÐõÀÚa‹E5éÛæøø^±Ö:xÇA˜ZH &eºzåÊwÜ¡åܶ=ç\*=™ïƒš““¶Ùxëú¦M>(¥Ž3™¢¸qýú–¼¢óãåuÉcì9Ïzöj³æBÁé²¼¹>•‰ñÄ™‹<Ķî„&D&E;È*ëCÊË“Ž—áÉMÌÏ=ï¹/üÊ;÷²étݺʣˆ—/œË¦³f0ÎÇJ Ê ‹!¤IUHUîç™üü_üÙ‡~å?îî ž2-c{‹¬€°?Bz’¸oq\= Ãd2Á„ «9ŒqXH, Îùùó祔ëõº^.ï»ï‡ÿÁ?xçжÃd’·­Ùâ³”N)ÅQƒc{êŽzXg87ì0$úÎãößóž÷|ä#Y,7n^ϲÌyDØWÖZ´™@ƒLj䓘 R7ú¾§*ùFyž¡k™÷Ž3œKÕ¤d1 7®]û¦òOîûÁŒ¤€°s+ ™Ý­Ø®ÝCóö€E_ŒÑ ·,1@¿á oxøá‡g{‹½½=ÔÙ"-Gw‰v ‚þ ´@*ç¬Tœ^[üS‚«¦éV« —™Ö9Ý^êåaꀰÑù}ÝN&ŽPPÃäh°È@Ü–ÌÌüßTB²àí` ÆB1›„aÁcªI°.gìloÊ"n:Ÿ¢í‡É|šœc€1S7Î9ž ,KÈóÕµyžç³X Œu½)§ÓzµšîíAÈóæø¸Ès1ŸBÓàw Øõñq¡³Õéòàà@L¦Ð÷¦m…Cß¶X¡3cŒ`|³^gYV謩7CÛÄà¦eÅK‘u]§2Í•4ÖgY6ßßÛl6…Ì6› –Ic´)¬7]ä½RˆeV.7)q)«.¥µ Kco¶]„˜Üy÷þ…K J/$ËËÀ¥ !I ’cï™1£†¾šÁ'¡¤ °xþüù”Â]w]þ©sÿ¿þñÓE¶¿¿à8ãÁÙN±»N˜K“ä® UxìŒÙmÔLE@Œ±išË—/?öØcyžüãá ¾ bpü?6ÐZsΜó4šHû£J‰¦é°ýD‹{\ n¿)@Š1n6›{ï½÷É'ŸÄóv É81Úð/8gѱ”†P 6žÐ§¢µÖ;‡Ýh­µŒ”òýÞ—}Ù—†¤dÎE¥¸ IJ†0HpÞIñnMqPié:ŒA X‹Ø%æÜö ïq{3ï· 5ÞûÞ÷½åûÿ%ŠRUUÕ¶-’¶®ˆÎQS÷ †aÀ‚ˆ(rȦ$E 4eQ ”2X÷œç<稪<„[a”s.ÄîÓ…8Öw¦Ókw‰,Ô›ÄÄÜ{/µô! ÁC)àÿ‰sß}÷I)¹EQx”R)!DðQ)å£×Zû`±0O‘I.9×ן:¾ÿ'Þý÷¿üEÇǧãîÞ9’Tn+í¹ÈN2M&co™$‘ªf‘8GhÈö4Ú<ð )%Û ‚¥"ËóéRZŸÞdœO&^íò¸šÍú¦ÑRð“õæèÜ&0Ö¬—Ën³VJƒ<‡®w}¯òbtÖÆ³Ù¬99)ŠBä%dt]Ûö‰Á¤,º®kÛv2™Užbd1À|ëÆ1:kSˆJ0– “jÉ…”Rjš&ùP•…€äiÖ%¥ÜÞÞ^HѧÈ@ôfˆ 6›M•—‚qÅ…bjyó–ë•*ò¶o²²àÆúÄdcb™¹ËK9]TGç÷.ßý§<6=<·Ø?D£J¡´:qÓY.„ˆ!xk9€\H¦218;-+™éY•÷½»qãÆ¥K—þê¯þòÕ¯zÕ0tóù¼ok­µ†¬È›¾³»¦ÌŽõT×P}D”}Ò¨¤§KŠ$Ýü¬oþæo~ç;ßi»žxw#31ê_D*IU0”ÈVCO\FxâQzEyAˆqÓvXñ½å-oùÄ'>1NëºF>`J ÖÓ¦l‚#ƒ W!ê`Ì'tãÌŽèÍÓɤª*cÌr¹Ì¤âœÿ³×ýSœ¾¡~KÓµ¤ÞI5,æV¨½…3uR’Ãô sUœšc@DEôøC‹-l_½qý£ýèf¹Ü?:¿ÑÓ()¥ÝumâNñ™ŠS<ð("_ ï=ê/âÁж­ÞIfYæ3N_ýêWc›µÛëºÆãáÄY¢tx<<ƒ#Û~ñô,þ.Ãûü™Ï|æ‘/~QåùþÁAÛ¶Jé”’5ƒÖ:l:ZkÆ·j)²z]ßuçs¾ç»ÞüÜ{žïlj:+¥r~×.Ø1lbŒÞXÌï¼¾ëôÒr'ÜÆpöiö4áé#!KŸý°zˆIæ #´‚”\tƘõz=›Í ÄIU±ªrmǸ”eÎ%3xïv=æ wó¦’ ¤ }íÚµ½ù~yñ"ô-úŸùnðÞûÕtœ‹1*-±‚1F .¤„ÄM× ²(ÀÓu)¬^­'e•UåêæÍIQb1)AðJJ­µíTžL‰Y\ðRg!"†`º~èL4noïôôTi]w-×2(µéÍÀEqpt<øOýÙ_<|í¸Ü?§ÊYŸRBÊ•Ö[BÆ6 ˆ Å RdxıÃß>ò…ù|º˜Í7M-˜|ôÑG¿øÅ/Þ{ï½_øÂ®>ùäþÁ^ß÷Jl™ŸmßMæÓ®Gôó­l‚&ƒã‘9zÝ®ô‚ð(Îy0f²X„úº.¦Óù|^/WXg‘ 6t:3 "ѹ-ŒßB@²Ö}¯³Ì“幩lñP)1ìò0®²Ìõ=S*9—U•”²]¯³ª"…€30Tb–;ÿ–WÅߥ¨—ï ÌèJµoÅs½\ïqF¹]ñ12%Z bêL©#ŒÅUvö{\ÊèÜÓˆøâ”¤R„î}!p¥äŽpnú^e>&zÒÞÛzêY«´¦Y–9têPã óˆ­!…÷¤ÅŠQÏ æTO»~L‡C@é×´ó_Ûâžbd£âw ÅŠ˜M…À•Âû !jz/ó¦Óéòô4/Ê‚³[Ü c Ãq‚-Þ½,&mÝ¿ô«_ñS÷ÿÛǻڵVeç¢zÒ;uÎeR!õ ÉdƘÈàÖ1Ãøî‘ÒÉráF ƒB™Bhº^K)ƒ)1ó¹–\ °!ÏËÉá¡o!D°Îž,Ë£óÝÉIð¶^­cp…Î2-½uÒXÓõ}ˆ˜í/fs-$,Wׯ?•ç¹±®ë .eJ«ÉÔ4MÓ4UU)URbÞû¸ï†BgÞ{½pN0®„ƃuÓjâœó«b:ð˜*¦ÓÓëW· €étÊ9Ïó21¶iêÄY!$çÒôgB)͸.OVõà£çÍö®œœd‹*,ÊΧÿü±?ð'Ÿ}bc#ÈÌGÎs=¤!ð‰Ab# wcBð"KIpÅ•&­Ñ9¥™ë[ŠäS8çŸøäï àBr¬ bJ½ÖëµÎ³årév*ýÉ¡á.YŒPž…ëxÜF¥p†J»‘yÞ×5nü;ø\𕃳Bĉ+Ÿ èBÀé’+ÁmÈ` UÖm6"Ëʲlšñ5óƒ|ÁX¶eËk¿3;ÀÐI~Ü«¾ñ'¥ô;>æŒ!„nSOg3œZpÎ'ó!zÆ#*ÂyñGUJE½¥»]MG¬lºl2Zç(ÎfE±…/í²üÝ[¶²»/ˆ(Csã|o[<˜oʲ$¹Z ±ì!Oq ÆåACgÀeœóÄÚݶëÇpJ›„@©Ÿ®ë²<Ç ÖJÒÃÈâVÆ:Æè­5ÆXãq¸iºùÞžŽa;Ëî\±Ø–ÅG£µ6Þ-AÂ^9Ò‚{çP¦&»ÁH­ÊÉÔõ=ƕʹðÎi™©œyç†M½Z­¦ÕBlš¦ïMžç:ËsMªEt¾©×Š ÅXëìb:›˜õ:ËsîÍpxx(f³Ðte9áR]»~ý00ï}9™Å”Úu£ŸV34/)Ë<:Ëp¡„’ à<ô}×·Áù2/×ÕtÁH¿Ygyɹì{SUUÝöYVD€<˲̅à\†¡Ù4)1%dÑùhLÏ]|äÊ•0Xµþ”óß~ð“¿öûŸj"X!“²œp©M3ô¶+ –8„6“9ö,SˆÉY!@r`ŒùBLŒƒÌĸ8:ÜÒz0`óéÔ9ç\Èó|yr"´ôÁWUµXÌë®å°•gÂ'D@J"‘P‡_`,#…*ë”RËÓØ¨bË IDATÓlg%PUÕ z4lq‚o»*œ+PY–¹Î?9ô€à\J™WcL¥5Ô‰ E Äø®w²8<Ül6]× ð¿¿¿^¯ ÷4ÖêBðÙŒÆüøÖ¸á)s<ƒo$[­5–u[ùÍ„ålÊpJ …ʲí_à\Hw:å·ù·;Ëm!bJŒs‰À‘] Y”åV`o'6àCÀ>ŽPå Ÿ’Ïi_Б’ú&^‰÷僉Á³½Ã1FΑêS‚”úaÀ@µsÀÆþ#¢=‘²\@b,2D–ò"kãŒzˆ† wƨµÂºØ9'ä-µ£VyQU˜=xï9“BȾïlðq³¼RŠ &¤jÛÆZ«ƒfÛSpLõãNL:êðH£ž`A:´6\,Y„k2výÚÕ¢(T¦­µî¼œ`Õb.@LÁ»à\»ñeQÌööAH0ÃÞÅ;Üéi¿ZO§Sñoþú¯…._’ëõի׎çGGGùdf‡1îÑyk 0®df­ó!)!– 8ßMô!×j6™FŒ1M×Ïwv):“J)Á•”2Ïó`]b€Iͦ©U–§”|LÁ'•Θ”`0®u±6æ$ÂäÎgX)õw~÷ÿ÷‰ @T"d‚e…q°A%Ï39«¦É÷¨š ðäʾåºHѦˆÐ~ÎpàŒ%¾Znò<R DÛß ½`¼7ÝÁÑ‘±¶ÐÚ:·<>>8ž:-\ g cèD`°ø#<¯ød‚™ º"Ð4î\pˆð'ž±_L¡awM‰P’÷)FHBȬ,…”!ør2K)­OndU¥…ô)Öí&+‹±wýÑ7›M&²[²p#TQÏÈöÏ$Õ ØúÅmŒÇ8%ÿø2’è 1b‰aÃVºDï(Çe¶ÍÑ„”À˜Î2Ê¿ðýP6IÁ…! XÊ£ÓªÐÑ@s¼aP‰;úHB¢Z†jcö"•rd‚éç=¢æ¯¿;;Eüß»ÔgPWŒ1ƒYÁ!ÅÄ@))!!xp“E©OÒZ›R”J&¶ ö-cá–7/¶—´KÒcpdóGÿÅO&ÊÈÊ2 !¤(¯—ZìÌ\­µ6ÓE–çGGGmÛ¶MÏ™˜ÍfÆ‘"„m ‰™,ñC1æ:ï·TÐ<ŒysCØpml;\\éê°ŒubZŸs`EQ‹\Š¢R,S:uýl:ƒ¼€¡7u›U…«k6(Š Mæs!Ër™åýj•%V”“èãñO”³y{õFV¾i2]dy Rå:ƒÙ¬¿yÃú¾ÜÛƒ8ÄcY– îœ1vµ ÖE$çS[7yž(Oîüb±0Î7M[NfeYE)€ ©ÚÕ ‘yY:ç…Pš+­Êó$lÊtÒ:N査výþðŸ_9íD©¹®|’LH–ãB* ÉLß……ÒÞG<î €1XR2#ãÉÄ™ó!!"Ü-C`>™líׇAfÛQwYU¸ÜY`dDŽ‹N ·Ø“‘?qc´4ž±X)à §i8©Á³‹”vc°\EÆ€ÄjQ!m ¾a£¶DÜ÷plMˆ38,m·Ü 4­!z=e:ãÖÛ-m¹”Ky{ ¦·&pÖf³ÙöAŒÁÏHÈrBuѱL%ý8âúmwßnL7n‰ˆîœch @i ¯0@㛞QRŒ¯Ç_¤Öe‘¨“c­Ýl6¨?ƒ’›˜õ>5nø4#Û†9äq΀1Î~\{ŽÂ[TçȦp÷߸­£…躽àpùcösÄ3c ž¤Ÿˆ†'žxb6›]'RèããS+Lqi­‘\:çr•él;mØ‚?¥DxM–e’sÔ· ;K îÛLÍZìõ]|ï7~]Î%¯&É:ãl6U•œ7©ª)ÊQ¯Vݪæ×o^_Ÿ®¸óÃ#Î…÷NHœ㼬\ÓZëOONí`ÚM³˜íK¡Œ1Ç×o@ˆ‹ÙlszúÔ#\}òJ¤(”àõé1K‘C‚¬é6›5g¬,K­µ†IU™ÎL¦3?<'³,‹ |ˆeYAâCÓÕëzè»õjå¬éº.qpÖÅÈêÓ ëkÓv6HågÕZg¿ð›{χë‰v0’;Æ'³ýä‰GHÁE‹Œ±àfBs™¶ÿÄ œ'Æ!¦ µ \°!xÆ…RJI‰ÒE™R‚sHAp&GÅ"ˆ)8)))˼pÞWyÁÓ*CqNƸ” ×5ìwq !9!É…’3´ÜH ˜à‚“BBü>gÜY'¸H1aCDJ…k6Æ´ËB„16øÀñ­œfBPJk$Ý"¾ÑicÌ2í½#…bªI•‰Â æ\ر¢ã—ìžð£d3ù³ãv1Ì.€±`ŸsΡï9¶9ŠÂö‘4›Íòô”16›Íf{ѹ”ÒwÞ…\mׯs­!Ϻպ^® ¦sûÓÙÞ´œBL°ˆÖÚ`1]ì_¸ÖBˆ³ýƒÙ…‹Ð¶À`urœeªÌ´( Û¶Z))TUxç€óè¬ÂÆ9ç‡A0®ò¨Ë²uד²Yw….BH‚ñ°ÕŒ;ψ O€Œé¬Ë˜ƒƒ`sk^Id‚ù† ƒqÎÅ ¼BJçB F ÍsQ ª®k!Äl§–ƒ98vßEˆ‹ dê ~QÓ4˜]n¡ $d9xßÔ5ãÜYÛ4Í…sçƒ÷“ÙŠâø±G€ŸNRß³ý9ô½Ùlª»ï†“ã¾íš“åÞbQîÚÓ%·M«§†dpžp­ë7º®[,Ù|¾zâq±k­‹²‚ÉdýÔóÅ87u[ð¼m6¨+ …‚˜ŠÇÊ€ë< $~èÝàx’YLdƒ 6ù,¸`œÍö}ˆÝ$ÿO¿ó;¿ùà'O,xE5 ! vè¤"d®3ç#—ºëº²È'<è, i‡ÏDJä10æqšÇŽißÕáÁD gŒ3€˜RŠÌEÀ­rç<$î}ˆñV~á½G·aJ—RìÖ:z€âšK>8ι<¥¢-N˜–!¹œEŒŸaÆb€#+ð1%„ Ä- m/Ÿóñ@}¼-©Sƒù¦îX,Ó$C–clÄí òw¯p«`ö1.ôÎ ¦§Æ® cLÃX·o|‘g¸“h ®6}AñhÜê&ª Í+Æj|©·s3 JJƒ|ÔP%62v»}‚ɦœ#Dû­¦Á-Œåè"é0ëûž&nøPè³GŒ²6 ŽÔ¿ß²ˆ ¥”t–¥L.\ØÎ¸JÉÓÝÆ+ÇGO%?màwè óÞK©Æ8âÚÑÍ ïb “É?W]ײëºîø8Ï󽋤°}—ÅäÜ9¿ÙÎÛ¶© íAY¸u= Y-÷÷òÙÔ^¿ÆSEVì-ÀØO>1ŸÎãO>r%Sº*²Lå·٤¸yõêÑÑš/¶W®,ŽŽ Ôä ! ׯ;ç6ëõl>÷Þ·M£¸Èuæ½ï7é‡è<ŸLœõ¹Ö‹Ù¬m[Áe¿i8çÀx%³íRJÆE×ûÀ Ì‹ÎtuשżËåÕ~x÷ûáÓ=•™šR(&¸1C®³¼,úÎDHX`krr7Ýi5Ò£¿`‰žBŒ "cŒè­q2îÜ‚à|!¶h/ü¼“ɇ3ÔÐr•>;Ý|¤(‘l$cLfy©t^–eì *›ÍA¿©…ÔÎØ¢šºNO—âô´,' Ôáá>(YŸEqãÆ ÎA°ÕÁÁÁ¹Ë—‡uÍg³g½øÅ°ZõM£„*æ3ßtèævþüEŸ"—b¨ë<Ï×ׯ+¥LÛÎæsãìt¶hÛ&¥„š„ízƒ‚„óél³\YkYoƶ}Y <¸`í1i™ÙÄ7Í&E!9žyTµð“Ég¯>õcÿîƒW`SØ’äÀÁ»ÄY–©èµx–¸@?`HV@‚à˜ 1Æ(X"i!ÆXŠ)¥äSTJ1¾ÿN»’ãšžg΋U€sv\"× «Â1,e;ÕòÞì¼(4àÆØöžcL!F`̇ „c¿üy莣öö¶°B ­µséàࣞàš1ªœc3±~·%š7®Xüø˜Ð!Œã#~42¦KÂà%¥VƘĶ·ÏöVçyâlp¶¨Ja°æü=ÏcÀ(r¿Y3dEÞ ýþáAÛ¶óéÌG/c’™^]¿ÞÔµfâܹsdYÊs 4:܃¶m›¦iÄ×Ìf³z³AƒÌ,Sœ%æü¼œ¡´T§§+ßgm®tLB¬×kH©6ëÙd¼>¬6M^m¾,ª¾‚µåÞÁR³ßþ“?þùÿòÀ ±‘åšI´O,Ó·!$@pÚN"vhëI•uí0™ÌêÎ1!áéðιO‘dz‰ÌÎëêVa §>SIQ“Ž÷3lÓ¡Š ³3‰ØØ±yŒ0Â?‹™È¸ÇAòXV’R[‡¸q2BòäcP Ñž¤O4ö Í,º„>b~‡»‚çˆoÀ|Š"&5Èiœ‡ñ‘„G胛n2å¤åB1·ÙÝJë¸á5NÇm3±wø8“ÅOG-yÊ›0žâÑER[[ãiéLT%µi!Ñͧ4m¼ðØ’Fm8jhŽNô|Çý3²hãLm†aè:¤Iö}¯$K‰ÑœšR`$c† ‘{€MF:À(i¥KÅB¾$˜æRú˜ŠjÂò< +×Zkàb0®ëº¡·“ÉÄG0˵÷b<}ü±££)•”RëÂY[•SÆÄ0ta°{Ó)Ëu‘…ëú'žxbZä¾ë•èSððŸ|öððpÿð€K Mß÷}?ÝßOÞu]·ZmX ³\÷­1ư<Ϥbx›ÞLËêÜáyoÝêô´kÚèb!ŸÍê¾3)x}t2Ó"+–Rüægÿô=¿þÀU€loÊU^Ÿ®E‘«¼¬áŒ ÁXйÖIÈÞ;ƒ3WÊ<óf¨ŠÌÚAëÂÇÄpz`œ3•DBHq+ËÏoÍàÄ„âè»ìë–ºSŒ¿™)í½>ô]'” ­ܱgø÷ˆ3NÇ'-¦îgÎI\(éž^‹1)%w} p-Zc€x¬ÝÊFòsΧÖ"Æ'Riì}à\ĘvÿåㄎbŠ€T‰ ó–2z§Þ͘ÈMÝ@Ä:`†‚¥%&ÇÊ|”ÒŽ pŠøÄq£R)ÿg%û¢à²-‘Cá zjãOC½1ãßÏ$²áÀÄœjê-˜n÷.gÊҢݡ SŒÃeƒ`zúãì›Z·+ˆ±[˜¯˜ç𧜻óI sŽš‰ø§¨Ÿˆã‚#"7¹ãàÃâœ#Ô›hhÍ9ŸL&-YßgY&€€7&+ËrºX@Q²ÓÓm‚*pžç™1½Ì²¡mSJõfstt”«\—7 Έ SE~îÜ9%$¯Û¹ßsÏ=Œ1®õÐ4ÎÔÕ¬OOSJ:ÏÎ_¾ÓÕkƒõ^01i¥P•!€Í•®7›ä¡k%$c"ÏõÉj ,Ö¦_,ƒñë®›]X1ùkøéŸÿèƒYVù(µgU9‚×sÎ"²"S R !L&Ó¾éU®À»²(êºÎòIc —‚ø¸ÛC€Ýò‰$)á‘ßwÚÊ'S€ÈDœ ¦µ¶ÎÄ|pH*àœ3äR‡XgÚ9ãи¶'Má1PGþcB"®ïqE@Rÿ¸ÐiÕÞ®¦„—„!ƒbâ³:¶¥ “)<™Pq…«Du&»1'q« ¯bè^?–¬ÿ#)Å 8ªÇ‰ÃAñ¢T–OpΕEEŸt7|L6@PÛÖûzWRþˆÒ€!„ù|NzjÈlE!lD&à­Ú±è±ï!ÞñÖï‘À´ÎÚ¶“Jë¤àι¢(!%ôó)õà „Ȫ bÚþôøÄ vRM§û,x¡³f½i6M‘™Î—W{L'•’gš¥8Œk–7'Õ¤˜M ô¤Bæu»^·›M²BàLj¡d–uu}`õºÉ³Bp}4ƽµÆ %cÆ'‹©]÷dypþ)çÿýƒ¾÷O†Iò©-"@H‚‡˜XLœÓK–ª¼è»A(¥²¼ïûª(Stb°NIÍ…dJ ÁSðŠ3)xb QèÀ`—½[Á¹Â{;-KÁXŠAe 8)¹€®ë¥J鼵θ¡(Jɾ¸€a0JkÔH¢ƒ‘ò,<^ÆKðå»(p·Ó)M¤Xhô‡k¸¼–LKpܼ2h’Uø,ÞÇ0Q| Ò{Âùà|>§ù ©²àþG>#Âè0@Ð\Ÿ"ªŽŒLTã~¦?‹¿N£î±Ü ¥Ÿ4tÃУµÆ9ú¸ßŒŒ:5TQº‡o X¡@@ý Š­+#è)jÄ•ÃÊoþÉiR7£Ù%†$c@ø:6¨Å Æ{2N£ÆìTRÔ¡à…/lügÇëÒál§KQyß÷³é¬®›á+¿âEwÜñŒÕjSL±ñƒÐPº®ÃN/úqQa•€ë—7Îø¶O/”R›Í!DÓ4âG¾ã[ïƒE£Rªo[ÔTJ))Î„Š«Ÿ3æŒ-ÊbráÂDëÍj¬•ŒÙ®/g3™’ŒâÂtÝþ3žQÎçf³¾ùÔS,\Ùyžóy&¤Òºoë-2u “Œ+)ÚÍ:zçóÞGï£ht(˜pÆz8c\¨,Ï¥”ƒ7Q„ÓåjZÍk§ÀûÏþü½¿÷‰šÃ òR&¬Ë@ž€ƒKq:™(Æ›¦Ñ:ë{ë¼/ªÒšB@á`–˜u!%Æ—bp ¸Î2¥tÜ=QkÖ !„è‚sA >D`,_Ø\@w6(Š"Ë´µ6DŸeY^)é]@0ªP"´ sæõz]Eß÷u]ã,Ÿ4nEÊ•pË Ã€Ç2ѵW‚•³¹. ‰;g-ðÖÅYbÑÓwÎZLKQeyY” XJ`#€Ab}Û§ÄÚ¦à:Ëc„,rÖ÷ƒ3]¦Ëgiÿܯ~òÓ¿ø±wY¡…”Z+-9c!$ïcp)º:Ó}×q.2]¤Ä²,ÏŠ¢ë:„—@„¾7œKÆ…PÒzœc\0.!D&%pn¬ÕºàR8ëPŒÉ/…`À­sJk®ÑŒœ¤øI YcÓÉŒ±í‰ŠAg·g¶'[YVUU­V«ÙlŽ.ÞRª¾ïãÓé,%0Ær.vt1¾ÙÔ³Ù<„8™LXß÷h¶ºÙlÆ•Q÷0æ/DaÓZ¯V+ï=Šð1Æ‹E]×4,£c{ ÈzÃd }©õNÁ”†htÆR¸9ãiJ¹!þtäœÄÆØNbísˆ'LØHšÍý(Bám·œÇÔNšŽNTM ÆcQ ‚³žqK%dÆ´'5õÈmdl&J¼"j™S67N™éÉŽlÜ.<ƒ2¥ £‘ñ²ú˜’E·ç1F<Ï‹®žùÌg¿ð│i:¢m;>œVfÙVe„”xÊ2&âÎw‘ÞÆxÛvȺsÎw]?mÛN¼ãû¿›§TàìÉù¾®q;õmÛwKQH YÆCPZË<¯O—Rð<Ï‹²äBäY6©&1ÆLgBÊLJÁùôà0¢ïûÍéIS7Íjeûmç\žåº(ú¦Ùªñg¹@í;ïí0(ÁSŠÖX–Àt=ç’%°ÖÏ&Ó!ø»¡oí`]°Ái•ŸÎ/ößý+ÿéW?ó§kàÕþ9`28)2ÀpàR‚TBÉ‚Îò¾wÒGJ C—icÈtιr¤ÎA¡eßw‚K)cœ+ŘìúÁÚPVÓˆ•öÎ0)dJK¥HÜØA ­3Xk´Êu¦”Ì8g1€sVÉŒs±ÙÔ4ÜQJ­×k{¢ì ë:4õB aPœWJ¹Ùl¨G‹tª©ƒ•Bß÷{{{ÔßÁÔ ëG4¶@ô68ö÷÷±ÓIl¤ _.š9bw™¢æÎ´ñ0íÚèÓ†ó-!FR¤d?–R |dÌ›¥QçË Lqù´9 u»ÝÆX1‚r:JšÈ3zˆøýqãì ë€JÈq‚I%ýýí z—›ä1hìˆ~Rµ¦gMíKÿQ,g ,ã8E³ÂñX‘z|äò› ¦””Ôœqký³Ÿ}ÏK^ò²““¥”Y]7$X8FT¥”¬5Xcáéˆ'Jžç1&‹`,ÃÏH€çÜb±Àœ=¥$Ýr…N’ÒZÁ‹Òm6y¦2 0.ƒí%Äâè‡a°ÃÐÖs®Ì ÎùÐÔ«Õj>™BJ‚ñ”Òþ¥Kà,â¤#ÏtÛ¶]×O«Ê‹9¯„d,AÓ4“œ"„Ä’L &OOW!&Cžw)øàÏ’*ÿî#ÕL‚¬ IDAT¿õ»ñ…XTój¶°º¶Í¦7ÆØ0HI-,X猺>x/FcãÁ˜3–…(™4ÆpÉ.•kcï|k¦eVɇǻþ‡ñ×½”:× ŸUùÍ“«EQAÜ5#¤$Æk7ëüMÿüÛ¾ó-«u;)«·¿õÍ}þ¦eY×5ýÚ×}ëK^úJ©Ôß>ü×?ôö7¯NNÀT“ÿáõÿãkÿéëŽò¢˜NçMÓœœœ<ôÐC?ûÓ?óØ_|Ž-ö.Ýù[¿ó_¬f³Ù'>ñàw|Çw Æ%Zkî½ízó‚½ä—~é—çóé0ØŸÿùŸûéŸþÙ”Òl6[­Vwß}÷Õ«W/_¾ü‘|—òûÞ÷¾ûï¿ËÃa>üë¿þ¬g=Ës|zzáÂÿÿʯüÊ¿ó åÅg<ãýïÿ|>€«W¯¾á ohÛvèûozíkÿç7¿ WÛ›Þô¦Ï}ö³³ýýoüÆo|ík_{ùòe\1ׯ_ÿßøxàozHîïãb½~åÊÑÅ‹¯yÍk^óš×ÜsÏ=ðÔSO=üðÃûØÇþàþàøø;\ßù]ßõªW½j¹\¦!c¹\~þóŸ¿råÊþá6«Õüà ( d€â0!¥[С1%)ê`|ıטD Çñ&'X&uÙÆ*ø´ÆRYØGS©±ÙǸç8®’h3“ÆQbž†Pzu†HL1nÜÇhªÁǘ‰±ŠÖívd· øÜÞ_+ÙRä"ZÕå3ŠTib›‚‹-D •ü +}­õ€þ¸;Äz’“Y£q‰Ð†c"Š»’¨þo×u›Í”ÛnÅÃLÓ ã›B2s< í%4u}zzZUÕÁÞB –³Ö‹òÜÑQ»©mÓ²˜f³Ùr¹À2­½÷õzÃ9ïê ¤”¼j6íþÞHÎZ%$„(¤©¼sÎÇè-$€Á"ùd[–šqÉ€{1°u×zÆy9KUqìÜ'ÿìÏ>ôñO=.²Ž‰ýÙ‚§cèºæàà 3cœÅÄ9OÀB‚H“ .oŸüùçþòæi}éâŧ›4Ø åÞâàô¤6‘ÿÕÃ…$³f½Îfcã[ßöC/úª—v]wíêñÕ«Wêõò¹Ïû{2+îyÞ îÿ©w¿é»¿ûÚb|ñý7[•ά²m;ßß‹1z‹Ó¬Jô|±ÿèOäy^Vó®iÄtÒ÷ýl69==ÕZ_»víÁ|Ý?ûÖÍfóoüž÷ð—NoCpß÷¯þÕK^öò¾íÚþÚ»Þõ®}èCm?0ƾòÅ/aE‘:ó²{_ñÕ/{éÕ«×µÖwÝu×wÜñÐCq!¾þþá=Ïÿ{ιÓ7{ì‰ùÑù_üà¾ê¥_ 1•ªSdϾçK^ô²{¿µü±w¾ëß¿ï"ðæôôË_üUïÿûï¸ã޶m1ÿò¾ðädùÆ7½ù3ŸùÌ·~ë·§Ä^üU/}Å×|m]×øšmtpŽ ñÐCýÀüÀ§>õ)àµ!Æàœ%…Ï3 G:ÃñÇC•K©YCµQsÆ —q*íò<ã0D¨´3H%ì˜PEÍ#êúá&ÄŒû,”˜œÑÚ§–SºE;忯^$£qøÀ> ¾›î¸WÏáÐŒ˜ ³ã´èLåx¦‰N 9þ OA¹'•áY–¡íš½÷Á:Ƙ·ÁóBH©çóùzõTŒ¬ª*txFÁ2ÄyaD3¦§ÛÂCOÖ,ËúÞ þ®ª*Dkb‚O7nX1ÆxÛl\ßfE¦•à,IÁfÓjZUçÎqή<ñx×Ô“²8:ØŸ”E ѵýæø4Ön× ™ÒÑáh<+ËÉ|>Ÿ-{ó…퇮Þ()ÕTqµ7]ØÖ §Msº¹ùÔÍɪ^×›M}|óæúø49ËŒuëMlzÞ‡aÕõ#«›~Ýö7×õª66Ôžµ¼øÂ²ûìú¾_üÕŸüا®è’—“r1ó)8–cª(ÛÁÄÄ|Š"×\ ©%O©Ð™dÜûWå^9ÝL1™3®Õta¼ï Lä  ã’„àù ÏxñW½òÏÿêÉÓÚ?ðÀÇßþ¦7þØÛßöc?|ŸòÑ+'ó£Ëÿð½z;w/¦M×O\=•EkT *…\Ë¡k9°7ONÖu= Ú1ŒAôƒú2ÏÐüïû‘åzÓùÀtùÝoþ>`êÜ=Ï{ý·}ç¦7¢(~èïøÌŸüñÿû¹Ï3.›Á>ï/,æÀÔË_ùõ7—µ ©iûÄø+¾æ•“PúÞW~]í‚ùGŸþÓõ²ý–×ÿ‹¯xÙ+~êzãÓÿú¿Ýÿß~Í7¼öuÿü/¿øÈµu3pùŽýñ;.?«©›|±÷?ù“—ï¾ûÊõëƒ÷o¿ïG^þµ_wÿ¿ýYÐù“×®½ðÅ/þ×÷ߟœƒ‹ÃÓºm]L\½åûßöÚ×}ËÿÇz–ëæÒw¿÷ý˜ïú˜|„®k…d™–Ƙ”åbLBHüBëL‰[ÞZ‡ÿkŒ%Z,ñìʼn5ÎÏðþHý ¥i(u €¯ÇQ="3P!4cØ:áÇ ¿„êƒÝ)­.±µ|aODª1éÓ¼ˆ—ŽÊy¤3mR…EQ†¸\Xˆu]G©(‰Õàhe[èãc»s¬]å6ÞæihàHå*ç\i—ãë‡Á‡$¤îÚy†¾¯ÊÒ3©*Œ>e5­&³~°>¤~°Ý`C„~°xO&“ v·É‘‡KÓéó5”Ò—Rò½½=¥µD”cš¦FßÇÙlvéÒ%ü>¶Œ1™Ò…Îr¥°®n®]yêúõëˆîI>tm{ãÚµõé] ÚM}zºZ¯ê¡ëû¦?88Ð2+²’.ÙÖ uç;´Ãr½Yoš®7MÓv­©7íéɦíñ|Ý…ãOnú§úø·k“]zæ½ßøÍU­!‹Õ<&`1¢BnL)G¬-ZMÆ]¿W†s||òÉ+dé|r)¹ºe\M Rmš!2Ré¢4í ³ÒE¡òéÁ¹;žxü p‘—E½ÞžWÅädµl­»v¨{{Ꮋ³jÎTÉ€KÎDHÁ[7Nq͹À’Àõd¾àBp΄ä™TŒƒu¦,sS¯ßú?pñÒ¥Øßü½“‹—Þò/ß6Y쩼øðG~íãý˜ï†OúÓU5&TV]¾ó™Ù¹ó/û_[w6DÐEÑöþ»W‰¼|ösž{þ¹åf“„ü¿ôˆôêײj6¸øüÒÿóÇú»¿óÑ¿ú뇹Î6½­&ÕåËw©¼Î^ðå/_ìuCyUB Æô$}‹Ù±:¨Ku²ˆá‰ÚUøÏð–)ùÝ?!DUU$o£½ÛÔ¤ãLSZ|B ãÆ)²¶k´ch£ïŒi€„ÆÜãr!Ç­´ñ/bA„k79©Lx`dGPÉ9&ø–22|kŒûÔnC!f:Uçñ-ôîi*0¥´Z­2p‡í¸y°Æ{ÏâÖ8uJI–ê\™i¥Td0Ö)ù ]iúLYaÛ¶mÛnÛëõz2™!&³pÆ$ˆ}סM+¸8ÄtU¢‹¢@Zç¹RJ¦4 CŠBó6(!oܸ½7Þ™®o7u.T&$8Ïúd“3<õ>z`2†Á{güb6áÎÕëtx^{~­ó|¾ÿ‚—¿b~ñb*3cü,L]'Éùh²s†’JÙø¶_Àæìàè¼”RfšKñß¿úOÔ×Kf»vàùìÿ§ë̓mϪ2ÁµÇßxÎ=÷Þ7f¾œ'H†$!,ÀlD£P"C„n»mK-Z« ËšŒŠŠ¦´+l#ÔRÑ@ Ú‚f¨¶À Ä!UD1“1Ì|ùÞ»Ó9ç7í¹ÿXç®·ó<êA¼xyï9¿aïµ×úÖ·¾ïÖ{ï?:>Þ™µW®$˜à«®3ƤȤRà|Tò‰ºl¬µiš‚.•ÖLÀ`KM­5¾ä"!SJ‘C°V)¥‹¤ü¯ï{ßÞÿþ¼ðÅG¿ð ¿pÛm·¥”®\û‰Ÿø Q×ÑšÿòÞ÷¼ñMoÚ¹~æýÏr>\¼x¾[­?ó©Ï]¼xñÜÙý»î½÷Ìùó<ÿùýdÛ¶µfüÛ¿ý[­õÅ‹sãÔ·‹½\;Ÿu«5:±ÎŧžzÊ{Ëm·'¯^Û?wî‘Gç (VË¥ÂZÀ~¹‚RmÜœŒºšÍf‡m›RzôÑGzè¡®ëî¸ã¹sç{ìóB!!Ú ¥NÀš1¢)È0&º?5àhâVÇD)Ÿ²¦Æ}eF¸Ù(,â5ãfÀx”CÚÄóÂdЉðJˆ5J< bìAN‘Íá3Üäøu˜Â䓯4„¼%·@Ë›°¿\û!oæãY9Û>¯‰°Fu1•äÔFȵ ñú•R\pl¿cù)Tfž©B+–烛6°”R‚‹ÀAØÒÆÈ'´i% ‰½ªªÅb!¾=wñ"¤dÆñÊåË{;‹¾ïws)ål6+ˤäÀHÛ°\"åO.6$ãÕñIŒ±Ðš%¦iŠ!@ˆ)BÙ”³y© g „”“‰ùÑI®$/Ì8XðQ© åèc2ˆ´šÜd,¨Ò²â‹ë›î}Á‹øê—=¹\_™Ò™ywvÒ¥!’9 ²Õ÷%È€3kÍ—Ÿ†a¹\jÁ_þò—Ÿß“¥Š}?NAFƒ–ZJ‹&g‘+lŒY­Öi²|§¥Ê%¦ä½oçóÑØõ¯~ê÷ÿà&ãî½ç­%¤ðãÿìÇÆƒkÅ|'(ùè#Ÿîû¾*›¾÷÷ßÿb±Hu;û•wüú?~Å+¾á¾î¦›oºý®û¾ê¥/Gìì£ùÈz½†”>ýéO?¸÷,§óbØír^k]<Ƙ¦©ï{­Õl6SJíîî2­`ww-6CW®\ÎÁû¾ïCØxÙ‡c?\ºtioo¯ÆNÛX‚§BаiÏ9 ßçÄâœÇÇ‘zHOÍ*s%õÜb‡‰s„›tˆøCÌ:áŸ"<žFahS³?9Ü¢ä¦;TæÒÄÛ¢Ml!ëy®D- „«óæý×%ÌÉëù|ž¨æÝ\Ÿ ?¶‰æZëþdIÊeëõZë2E3Õ¤^‹Ž'H*$Ø‘Z%Dó$ÉBÚ3vcú¾_¯×².ênÙ9gÚ¶URb¢¤”:9:)Š‚1èVëMžœ`ê‡JèŽíIч÷ÞN1„ã48ï}[ÕUY&º® >ðå¸N>¬OV‹jîÆÉz"Æ1‰ ·)Îî–1«$å ¯ÇbvÓ}<÷ÙýÉn<2¼Tr |qæücO|v¡*dCDü§>7>»Æfâ©ï{¥Å¹ý=%ä;ßùÎOýýŸòdó²ÜyÍë߸î–”R×uLJ?M\ŠÄ lÊÅÞ¢lZàÒúp|²²Þ…ŠÉ;ç †”ÎEzoëº%‹¢`&ëDQ§Á;šÆ®ôªW¿ö©§žzðÁŸÿÐ ñ…–󷯪êë¿ñ×½}Ík¿õî{ï[­û²,þà¿}È›A…{qw>ëúU.±’Õué¼YŽMÛ4¨ë¡»®7ƨqÒB¦ibeytt´\.£ó£±ZkP Œ™7mUU‡'Ç¥l°áÐMÓlg>YÓ¶í4Å®ëP›F €agíj?ànG0…Rž-§h|•D5ʧI(+¡?øëø$ÙŒƒþèOÕ%&2¸$Hw‰6Sø²Hž‰fiZ o檜j@¡@}ª=s›œ‹ÑyËEñºR #Mh¶H”Oå<ÞÔ–mnõšÏäÓæù§¡D²”’s§sòMÓtÑEÑ÷m™B’1¹±Å1]Œ§mJ­媶ԴÅT4dÂk[,gS×k‡E)ç<†Ð4Þhžxï½Rò\0)y¿îRJŒ¥²Ô,¥1Æèƒ”Ò[Ç—Œ ÔÉ Qr1ŒÃ4M’IÎØÔv2ÇÓqßuuQ CÇ@D¥À1gCä “¸zp$Ëúp=™pæ™ÜýÀ «ý›O |ö`ÉT¸æ²¬g³ÞÝ´6&ç#çOnØ‚*¶(sã™3{)…qè.Þ~ûßüõÃÇ_ü h&„ îÚ•ËOž;Ó4M{{»É{P2F£O)^;¸"µ€à+®øáÁµ~½<¿¿0Ó°¥ñ¡Ö{{{'ëc°65….‹q4À…áܺVª.ʙքèÖCÝ”BoD"ƒ”<5Õýá‡ßö¶·%Ÿ¤ä_üÂçõl&sÆ.vfWúþ7ó7_ÿ¯?8’wÜq.©ø‡G{ì1½¼zõàÕ¯~5$&¯ªòo?þ7ªªœs{{{Œ1k ‹ 9«öøHrQH¥¥*µÖ’‡~¨ö÷û®kšf±X`2•¼—u-¥” ‡`”;;{{{ˆ¹ÅÞM7Ýôɇÿ RºvíÚ)ÊÄ¢(œs x©J!’nDÞÞ¢nE‹ÁµNsÈH¡ø²²÷yP£Ð€%XN˜¢\žqäØYÎZÊÉb46”Ç…M©ñtñåzß*Íò+ÜÒ€§vÁÖŸ¼nʧ‹IÐâF­>ZùTÊá¿ç²|9'‹öù(8õ.ó€Îøæ^P!y‚Æ”0æüº7±"B88¡N5ÈrÂ*g¤bJÊ‘8tݶ-Ò ¬µÜŒSp^pžbœÏf{çÏKÆûåŠ'ÐBV³ùb6—\Œ]¿^®6•‚Ó’KΧaû.Ï 2ˆ‚%-¹’<„`†ÑN†s¾···¿Ø/„,¸d1œÝ]4muñæ B®ëXŠ’bŠ`"å‰I>q(ÎÞò¬—£]\øäµÕI’}âIÈy[/™tY.“Ò\IiX&¿òí•T”,J½7o»õIôSUHàP–:ÆÁßzé&ÉÒÙÝ~½oOuUÎÚJ$¿»hKÀbè–>Ø çö ÉgUáíJ@pe¡ÎžÙ—J C NNNŽNVý8®»ÎX¦ 5H´vÁ÷ã µêÆIѯVÓ4áà‹RÊLÃÉÑa]V•.ìj•Bœ5uô®lªÏ<úèÐm]q)†¶Q?üp:Y~é _øÌg?µ··èº•u&¥ð×õð'?ùwMSƒw)EÁ`úyÛèBã)2žÌÐ×UaÌôÔSOçJ‰)Ä4œ3ðs!/¤Š10_xì1°ÖŒÃ“O:8`,I]^»úÔŸ}ô£Ï¸ÿ9J ëãÐM¿ý®w²¶Žëã?úð‡îý¾»DožUý“?öë5Û-˜ÖŒ‚mä/]ºô‰¿|x~öÌÍ.Dï ¥Æq4fÎlä™Ö«ÕÞÞž¬kßuÏxðÁ¶m¯^½²··×u¬Kßõ·ß~»µ“làðØg? ÆÜvï½/^,‹ÂX×÷ýSO]vÞ,æ³É ÖZ©8š• ÀÊGÈŒ™}Vè ! ‰TÔçÁCš ßQÃW<~2¶–„³Ù 7*%#Hë'ô*— "Ú:I›â«!邜•玹Ú'FI²˜'ëy ˆyÀ%±öܺ™ž &>ÄV%z®“kOcŒÎá9¤tær=[#„y}MSîO·áIÎ9gCJ`ŒùÒ—¾ôÂ¯àÆ˜B«ºn3\“’²6ŒŒíû3a~öì™/}é±À|Ó4Þ»À#+ÝÜJ_Œs.:[*vß=w|î³ÝqéìÅs»W¾ô÷‹Ö˜R`ÉÜ~Ë%ä'?±V‚·³æèêSÿþßþÔýø¿ØÛÛ ·]øÇ/ù›.^X.—6gòÝïú‡ÿü£Å¬1«®­ô¥Ûné&sáy÷¿æk?ÔT"&¦”v>•%ûú¯û¦«W¯–…ZÌgUÛ~ÇëÿÉ›¾ëõ;­èFÓV…iÇûï{†RjÕ÷ÖÚ¦­J¥æM“RZ­VEY†óYL!¥ÔŸ ñç}å+¿ö‰§®h,ÚÏ}ê‘J ?›ýñ‡?ü¦7~_Sè Rò£òÇÀ (U‚ð³?ûã%¿yÓ¹³Ã0|àïûØG>ú¬ç>§¬+—â|>ÿOÿçÏ.—ÇUÛ\}âKïý/¿÷mßþº““Õ+¿ök?ðþ÷]¹rå«¿ú«­™.œ?ï{×o¼3…œ{oJ2÷;¿ó;Þ¹ç=ï¹»»»ã8îíïþâ/þ瓃ú­Pw¡Ñ*#¾³³CB¹‚ QŸÑ.´ï7ÁICÔ¿?%£ÆÜÖ0o“S!‰E%}&Òåçó9¹À£žÉf î”i]–%þJnü [¸óóÌÜê†p/÷ IDAT6‘¿Š¸0I÷Õu%‰ýçÓ¿¨ŸAtÊÔxÚá&ž f!;7e–ËDCEÙ©œpKMœf§‚X ä¡½/åLJ!97ÏzÖ³0Ä#Y”¸fdm‰+v30;FÑP%?]<‡Ê²4Æìîî"t…D9$aI)åÐõEU&5§¥ˆŒ `c×6†%‹ÅB-v“úÕÒ›I²ªP:„À8ÆÑðÞºRé3‹Ý²ªŽ§É®VÓ0Z6»»ã0Ž}ïcö±Çù¤(‹ùÞÞµÕú½ÿÏoß~ï3….Ú¦’a”,z#°®…ŸùÔ£ÇÇÇ¿óîw×óÅÕ£åάÝkÔÑÁµf^×u=tÝ0 H—Œ×UáÌtíàÊñÑ’³ä­1ë墽¢ç)ð»¿÷ß>øïú®ïÁy—÷½ç÷–‡uSEgÿò/þôäø ×J]½|ùï?ññùÞ^×u³Ùì#ü'ßô¯úáù§_ù•íì¯xÅhqösŸýÌúÙÿë=ïþ-UZKWUoyó›?ÿùÏ¿éMorÎ=ðÀøTÇqü³?û³÷ïþÍ_ÿéÇêÅ|JÁ9wöì¢ïm]è3‹¹bÖȃ£þÉ'Ÿüå_þåŸÿÙŸáU«”zê©§n»õfoì0v…y;Œ^Š”"c]8çGGGUURAF,hE•×Í'7 ¤?]×áñž[@“€' +ãoµm‹­têZæZÃùð †Qd!}Yý™\O™22BîoôLËÛ[㊹‘ÈQ™œb©îÛbÆã·ÓhQŽßcóš$!1`a©Hy+)ð„è¼÷œm ¨sçΡTºCÙ`1bj­í8áïj­µøè¤q1äêÔíÅ[xâ‰'pN­ 1u]ÇÌï¿k´&X·¡±ãœëBr·uW…Tª[®ðtòÎÍêªïVJ)k§¦¬ún­„œ¦ =aõ³¶5“óÞã³ù4Ù±ì3ôëè|¡ô8çSÑ´Ž‰Õh,—'ÃøäÑÑÏûªù½/xÝ­WE¡&k€3¡ ®µõÁ«¥,Jvçm7½ùû¿ûá¿üS¥…ªj{š!çþzøÐ‰mHyVÙÔÇGÇœWuÕtË“¢’‚­¥1NÈb0 ”Ž>ÛÏgš‹ÈE˜X.AJp¢‡yQÆæ;;v8ƒº®WëÎ%ž€ƒ¶ç’ƒ dš,°¤ É97Àz%x ÑqÍ#pðpÀ8K»û{UÙ\=<´ýœÔ` ¤¸þìz¹:áܰ^)¥O–Î𤮸væÌ™ÕjÅëNVÀ9H)·íÞbÞ´ëõº¨«õzm¦‘ Y颮[ë½snXž°›o½õôl‡a˜†Õ n¹ëž½3ûØT~òÉ'û“eÕÖm]#/ù¦K—vöήúnV7…–,Řü•§®ùiRU¥ËŠsØ™·W¯RµMe]$Þ½ Í!º&)Û¤œv„ۉʨ­î!‘†h—bžB½stâCˆ?“h¥d†b#E=lbn•+v%bK$+wÓÈñæ­Þ_N¡ èÜ@/€à¿Üæ8ºG£Ž”iÞ¨o•3žò2X 8Ô‰y%îú¼Xæœû`½÷…®œó'×V¿ô+¿^è¹™g…÷1„MwU)…,yâ¾c””˜ýáñ@Cd£MU†6¼TY,}ßË"„ÈTEBHÁyg€³nXE!ïN–]×µmÛÖ5c¿îì4ycƒó,Dg¬®„c¬”‘¹ÉØÑ !’DY–ÇÇÇÀ™,J§ÑEš%°A®Œ›xqlÂIR÷¾äåïyàškOÖSÝÎÆ©O"-;‡‡Çµš `ŠÇdúéèàðèèÈy³³Ø l›G·åC·Õ:qÞÔM]*$ãóZòŒ Á,KJɹÖÖzÇ¢® ÎçÜ™)«Û*—sUåz¹ªêBú®)¹lÕB±¼”‚qómâœ'76u}x².çóÙîþññqÍ“sÆúØÎöy€äì¤¥šÆ±­*µ»;&ƒº*µdŒÍæí8öØLY, ×¹( ­¤5SYh{»£™šÙŽõ޳ dƒÂXZ뺮“Þûõzé#(¥öÎ_`)u]'%‚{ïç󶪪aš®>ù䓨#ÆXÚÙ[ oÛÖUU][ö½sn¥´3Sôâ¥`Ål^5µb2ƒ3V Y•z!õ–‘: 9ñSy[ÊʲôÞáÎ!E„x·5óFa·"0y D¡ ‡Ò·"ð›¦ys•…ܪz‹ÖDóô!÷£ò–lu ["3¹:ЭaË 2O-·$wò_É[™¹˜6éh'KráÎ…·ˆ-RÃÐÔ{ctJ‹AÊ‚ ?ü„að0 {Ï•3ˆuE ¥”€w]‡€BC§šÝvæ­›Œ†qK]XcÆn-„°f䜗JÏêjèÖãjÕ4Mp®Ô@ºˆÑR³Ñykm˜l1„4FJB !Œ}·»/„P‚+çœ ‰Á„žXL8¡1¡ž=ô5_g´~ìxºªŠÊØÁ¦ µ^ }Ù6Ó8Õe«"(!t9;³ØÏç\ˆÞLeÝäŠ?4`™—ù멸ÁÚ¡* c.¢s©(ŠiëF)Îʺ* Ñ'Œq%„w±¨UolôÜ nœæI &…R{à¸3V•U ±PšC 1…‚,Ô4¬vÚšIµ<: v*3Á“Ö`­U\ }·;ŸMÖrÎÇa4È{ÔcÚ™Ñ9W•EJ‘1.„8<>®ªŠñ ZQ–åÐwmUÃàbhš—sgÆùìÊÁµÅb1«ÔºŠœÍfmß÷»M»Ñç‚sBLø³˜¯ÖkïC[×.¤íi­—Ëe¡TJ¡ª ¥äÑáá|¾c]pIq.‹¢Ð`ƒ×ºðÑqÃ0ÆwwwOŽ)¯É%.i'ãÙN` âVŒ,d”ÏÇæõUL[U†lüO$‰‰(¾:U×Áª°( }¦&Å©œØI‰]IÇl¹é伊ªD_زƒ&w¬\‹&ìè‡q‡“€)öå|ú\rëË2æ§Š,×êÊ¥J¯ç€N5×%"€øŒ11BS—Þ9H ÿN“PL €ÁyŒ )ñs×8¼}:ÈyóÇ*ÿÑÑv^Rˆ’ !DÛT1Ýr…2ZÇ˲,‘½jÆ1ú¸ðÎÆŒÞ9Я»ªª†© !b£µJuYMƒ9:8tÎ9뻡IèºXöÉÃ+ÊUäw?ð‚swÝ· ÉFé/µ²ÃdŒ©ÚZ—úÚµk³Fº¶ãÄ%f2ëµG“¸(ë&øëTš¼&Ïõ4®·W9žœs‚ -D¿^3ž”V§2Æ0)ú!&!DU•Éú +•ÇÇÇgöö5‡º®»õ²ª[ÆØ4NÆ…ÅÞn?N×ÀUIAKÅ Jº*ÎN x]ÇG‡³º‰•.ìdö÷÷®µm;MSY(ç#C9!…½PJXRJ‘AY–º(êºAic&¹Q©×ä8Ž1¥ª¨}òeYŒã¸··'„xâ‰'æó¹à|½Z!¨ŒBWJÈà&_R"ÓoÉT‘OGÞÈÞ Ù[d ÏõsnTþ#9Ò>%š>aC9Ç-çŽæÑõ<ñ×1CÄD¶¹§F1¡µŽq$y‰¡ŸÊ²¦ïÅ'Œ‰õ%ˆÿAãSêÔ˜’ ½ñ'Ñ”¤ïû¶mbÃY ©$‡´.¸’!„n½ŒÎ@Y(kF)øÙý]d OÓœ¯ëÖëÌ¥œ‡˜Ê²Œ¥_-—bŠÜ9ǹ,ËÚLîñ/<~îܹÁL X0Vò"ïm¸ÚcQg.¾èy/¹îD½²¶ªöÖË%HvÖV>€ÃbvÎ{Ÿ8ªHnòÑë‚ïìììíîkÕô­ë’󘧗t¼Ü(Æç@a^….¼uRq¥„ÖÚ…”@ã%êU‚ç’ãè†IÅ…JŒ Y¡"°È0#èqAwã4›Íw¤^­VuUoKͽ5R°È¤”2˜É¸ R`\Um(˲`É;÷Þ—º°Ö¢7D]בqš&QmìUŠ¢°Ö„lHMÓÔ•Š†aªÛ9Dc ûÕ²,#ã!Æaª¶rÖrÃØÕu=ßi§¡¯‹í•TY`Ù,éBc}ßWe¹XÌÇÑxç°_£ …ІRš'ðÞÍÚV 1Mƒ.*ë­`œ¥@À·”RŸ¦‘@k­µ@ÜÈže€¾8,Wñí ŽbIX¢æ0PN­ÌϤ-vÒ–¢*ä½J/ÒrÁ͉`þBCNË-±FZ¹¾ a^ù!šWg[†¬9³+œ‘Ð{>-K(xžÒ. U‰ºÚR¼ÊÉØýÜ¢ãç¿õ4ezÎcœIü±ÙlvšNb¦¿æ R&¨LO;BGwÈ4|Èèc ÎàA‚E:"Y’ù,Y;œ,€ Ρm[)„1&:+TaÆ©ë:)ļ¬'aQ·Ô[§%o‹êäè8ÖÍz½jëfšL†É÷æDUïÌŽW+HÜ…xx²–õ¼óáÄ¥I—÷=ô•û·Þ¹Žüdp£Oq0‹Å"ù^—ʹ‰»É•À!¡ˆj!UòaZuë“õʇ4›×i³URNíÍEþI €1!5u‹¬ë:­Eaµ¹”œK©ŠÙ¬Š1Fï$c\ ¾**ƘÒåáÉR•|6k¦i‚uãPj%¹ͤuÕ÷}Œkà28ï­"XkkÆ8¤àœ“)Õeœy¢÷'GGû;3ÆO<¤è½) Í}‰+Y–:¥¤‹‚ÔEô¬*= ã‚s>W@ôœsë¬.kŸ°$Ë’'š¦Y­OJ]¹Ép&µ.#ƒè}UU“ÛÀÌ€Z(Îayr²ªëVk-„€È‚1¦k(„x–ËeJe‘°¼’›ó|FÆåb6_vk¥Ka¹\Κš £v[¾…08âæÄ[Fo.ÎÿxD#mgKøF¢ùVÂBZ4a“þâvE^hÔÀÉ k·¦pTA~ i›åjÈ[…êÓÌß3±šÜ¾$ï‘î@¡„2)”ÒÏ]Z±þBV}fžñmµÎs÷ zþxï䀙‹‚ Ép L“ Ah]2ƦÉbL‰1†”dؘh`uoŒ§™ `#‘;x£'öeyxxÔuÝ÷=’`6 Ý?üÊ—®Í4R(!9KfÌ8ZqÁ’v£³ÑXÓÞ¸j¾¨ÚÖLÆNS·Z±4É3NÖ!åÑjéb²) Áûã˜(û(c½xbm;9“çn{Þ+^•fg 7¬°ÀB„º-C´)Ú£sÑ:罃”êºd)qÆcLº(ú¡)œ¿pîÿðCO\þBJ›vrjH¨—L𥒚‡ä"h©!¥£ws¡ŠBYU ŠDÇàDÆGAt`ŒñLkÍ–°¯-¸Lœ%@-zN2ÿ1x,$àBq&$‚—BVUíCò!1! ­ËBÇ”¸½R*Ê2ÆdœåBÚ ³†{ëXÂ#‘§ÍüOP§xð|ÖÊÓ€c!¤Ädý‡âÆDƒ ü™SŒÉZ§%Îèç‡ZRª¢u !r.””‚qŒÃÆíYH‰`Äf“ QS)€…Nu÷Î¥BH0f&[–EÓ4«ÕêT|=2ö´é¶S”wc4­”Ž‘ $=²ªªãR*tÆÇe­+ M^³„èÓ0- ÇáÎÔZc…øpNq_lÃyú{YVì3öä+A¶@á4¦c*Gwß…ÉÙ©å%^^+„„GEÎr@µ¿-ýõÓlNžŠ”&Ò±ÁWŒï½sž˜‰8ÖGžÒDˆG†)Afœs¡Ê4c‚!·“3àEQp)‹Wÿ¯q;—€IÁeÓ¶BpdN9ïñ`+«Š¼#cŒ’ g­bš&%ùØw,¥YÓpgŒT2†¡·ÖEá¼gxh-¹ƒR‚‰B U„ ˜´Þõë!„ 8/¸R7‰¢(¯]½ZVMŒ±ÐU>vë“u×-WeYŽÆ !)2ÄÔ÷½ ,&}ù¸;™ÜÚ³êÌÅ^ü²öìMÇ“wL™Î@ŒÖ2çBŒJéÈx]oLІ~¯ë:%pè(Ða¼·º(°ÖEú,…p²¥Rùú4VJ ƒ”`o¼*ùÆ|þ4'—á´@i­xê})¥à0Ø«œ;ýˆëµI¹ßSgàSDæTÁùº2A’B¥‚KÁÜÆ¨*h±°¢~0Í©30%Hl³–éóOûSñú·|9Ù\¢’zñ òa´œFÀSJã÷‘~@^’Sm… HŠP•UŠÌCwDB£Äê¤9"jçâ'”)H@®1pš”q2’">•~$;ƒªEQæÓËù áVãŸÊÆ\9Î(-ÊÍ,¨ðÌQ6RsΙåd¢ÊYØëÀ× æŒu*GSæªJTSï@ІdMó•§®ÀŽ®œþ€?…ÿó÷BH ¤”.‚s!D'„\;çpœSu@oMdfÀz½®ªŠÄEÉøl6㜇èéîp±!RF/eC4›bœ¦Aê‘+Å%¯Ú&º8VJÉ€¯­ 6¤c„°<ýèGCHZóÄ@h¦…Þ &ªb²q˜Üh:)µ±Ñ01(~ytgoºô‚ûŸ»wáVÃäÁ0ö.2™˜P)Z Rbj& ….Fër¹þ|Ÿ!l0”I¬!ѯ- uL>±ÉšM®sçÃõ€‚3Ršl˜6Å!R`ÊLÙDdÀKì´ý„®S˜ÉFjV„Ÿæõ´Ü#¦˜hH‰<1˜pàϤMæ´ùŸR’FÓñ…E™7¤ðsPDÁèHœVJÑÏàwÅÞ»-³†¼‹¿¥#Ž;!Æ@±/¯Ë딓‰HpŽÆ\HwÇý‘b¾•}h]lÙUÐMå˜ÉP‚“[i‘?+ÅÓ|öe‹I@X5!VÒÇ•’9C•8e¶²ó#ä¼Å´Àó2Ÿ¼Écrö)E@𑼱¸Æ“ªrÞÐ$‘å|>oœsèñzè‚7#‡ ®«)ħՒÆXg¡(Šåj9 .O/øi:ÑÄÞ Y‚+¥¬›¦iRZN£ñÞ ­ …ëÖg[´£Œ1J|—ÜdlðÎùåzÍB¥”¢‹ „fŒù˜˜­sÎc¦)Ef|E8¨Û£ lå#„:{þ+^üìs7ÝÒYwe°69EÙ¶Ã0B¥$g"ÅcU*¹w›'‹ÚRJÁ ¡>lr ÌPï,/ïs›¶-\“n;o'Qɰ¥”ÏnbÀBH~D Óo‹Iœ{æÊMùæ³È¢”o¼Ç¥Éê\u ¯‰nT @œÿ#1h7 ›cÆ9¼•†äȱº‰@Ê–Zë®ë(+¡œ(¿ì-ÊbnŽ@lÃ\a.‡~r9vçÜÎΆKR À²ˆ`,ʵsК.ƒ’&R_Èý¶UùqK`ù»È…÷hž—RRª£-—Z¦o§a ²MÍ5°°â£ážÌ+°ŠcIølÑu|Ë2g³€op*ÌímBHœóÁ9Çu‰öœÍðSnˆ¤*”ÙÀ»«ë:øT·Ä@ѲÝÓ•Àò›J)IëÅTL&DïcðÁÏ£7ûûgOÖ+kœ*J8éWµ3Áœµfrœ{n=.iëäâÚzÏýÕÕ”„¸xûÝÏzÖ³õî9ÃåçNÖÎGE;ߺÑ%©¸,ÅxcŠ1&{ë¢`u]nFºcd¯«¾öJʲÌýæòcTr°€&ÂNíÞS](—¸åœs¶‰jg 2ó8!$Hà4„ajåSÀ$( J½)mbØ”o)ùà ©ò€E·ÏÄníŠ|e‹Å“7¼óc“Â~ ¢¡9‚›KÍåÓy–NŠ”¹þRÎZ${¨\’ Oô+Ä@C² ç# šÔÕZ‡óäˆÊ"—oÅPLjr;{*‚ò'¼bˆ@_÷›GvzM§¶¼pò0Ѝ5òw”Ÿ.[–ÑXêâÜb²¤'q£½àé[¸>H˜_FNæÊç–¬5$Lî¶8 •#$ì\¼®ñ ®yAʤµfƘaÜ õƈAJEÞ‰P ÔÓ¶íjµÂþFÓ4œ³aš8çBH¬R@˜Ï)1.6]rZ{²FƦM®‰1Æ™à‡Ç'£™|`,Ê îBœœç&9½gÀ qf=31®Í°²¾÷éÜ­·?ó9¿å¶$äѺŸÖ&ð(õ¬Ý©ŽŽlÆåd68ŽP’,2–lL>Ū©»aBWQ!„÷Ñ{_–uŒÈ 4Ž¿QjN×åóXC›‡æ67;ê4ï Á3Fê—©( <„ð„Hœ Î9Ú…ñ§§ù:ØjúŠÄÒi’Ÿçü[Bhù%‘zWž%å›;ä‹>G©·*Ž­(–'ù? `æ[†wTSl}~n¸E!Ùƒ<#§Pyÿ+WYÙbrçÚXyˆÉC›äZàôÉ”|ÿˆÔÙOíÄ–‚Ulõør¡á¤ÄK ¢)4® kmQJ©ØÚ±„)䤕Mæ%eLÞ»à£ãLJÅWŒ§à#&% D– "c…ÖeŸS˜Šñ”È»Ùl)E|¬  ¿ßQý'SÔ„c y y]C™ â 7n`š,ÃuLA™Ä3Éû„ìRrÌ…ž®9•™æT·ò86¦ÌbK§ÉÚëXéõÊ]š¹C²#ˆí!˜t°{…‰µÌBÔüÊiV”ÓQAŒvcLUU[c.§ûŸo9€ÜFÈצ_&DJiÊŒòYå<ñ̇œsí—-T~äŒsš"ŽBnI¿Eã D«oUÃòø{ ØmêP*¨É.ˆâ{®M¨«òúéŒÏFvb¿nÛvƒ5¾h!2í(—§%YGÌ"ÇÑ0ƬõÓdC@ ¤ÄBŒÖ9~ªÔL i"³ÖI¶9 ¹’\H¥øáÉR¸˜˜0!`)%Çd,ÚÓƒ5Ý4ÖÊY{îÒíϼtÛîù Íb·›ìÕÑs¡õ|ß®§Èd—ºI1 Ëõ¬ªc ÓQ ™R \ð)%Å…gL ¹ZvB4ƒÅÁΔù¯áìÂ& ážë{ä"Š4J)LŒÑË9’±(©BL€¶Ð‘3S×·%c!±ÅdûÆh3²Îp.†Y'Ž ¢;Rg—v•~¹HiÑm+ODòñ +¹°é¹± 8ýêômuˆÙ!–#®†œ^H>+¤=’ŸÀ9·0Çr˜-<<1’¢ƒæl6#lnËú”ö6–<9"žÛj¦K¢ÃÓ䪪Bp—æñ-cãS²^aÊ›’©±fÉ# ‰vQÌ¥ª‡tzøf¿¬,*u s¶:•±øÐ¶a¼ÒݪR©˜Í‡4‰&–3*BÈk#šU.ÎC;(Ç‚·4³(Cô>à\**¯k]¤¸ù̺.qH£ 7âm"tÕ÷=¾µ¢(Äi-9MNÔPÏï‘ylŒ1FŸUÝà\àJ2.;cë\‚l´ÆùE Íâöç ºk¼6›¦©æœh›D s„ s¢õzÍäé}<88À®ßòdP²‘R²¦iBæ* øê1£fz­ë®kšÆ‡P7÷~Ç|¯]NI'“s,õvµZmŒÑ³Æ3Á#IȺmwöÏìíîí,Íî>ovƒÐRÊn—ÃÄ$ >Y´ªçÑGž˜`º(*–ø). ‚¥R+)xŒ¼ ,ñv2)‚ÖZ0i !i)=¸p P}dŒRP½M„i2 ÈûÊ„ÎÒùBpvªëRë2¥Ñ9|4‰±è}ÔZ ¡´–Ã0 !”*ÇÏçGGG"†Ña¤R1D)e€š Žd2&ðÅ` ƒó%hU„ #NY–MÓ  ÆVZˆø‹ìpNe:ðÇý†G4¾H”‘³kÇiš‹…##Ù£e1I`¼Àë¡tjàî—ËåÎÎÎîî. Œ¡m½^cgmww§P'F-cÂÚÚ¶íºŽ@·Í£ržZ mÁpB$‹læ ’=Z:¥q†¼JåpN³Ê믔 ç1Q¦zœòü: I´Û)%!®2Í9æRÝ9§œÚö[t Â:sY7rÍ Ü*çPÚ˜{½#oCöDC¸AÞ §ûÂgkƒÇZ 3þﺮKæääćM ?M‡ÈXÊñú1ÏBÖ$.Îù|ŽLÄ rˆ vò(¥”ë›ñ³Zçp‹.ªjg±WÏZ.$H%¤ŽBXçmðk)ûÞixrëõÈfµBT’÷ÝÀX,uÓ†â’/ta½Bøä¹.X`)¦ÀÎ D-ž| ¤Øèœ–’ .„ð!!\ë=bÞšZªqs~ÍÖð­<©¨Ãà5›/Œ—«®¬´.*.EtVkm ºu_ÕEŒRÐJáZ'› ÓEÅbŒ£u\éÉ9 1ÁZÎ%ãrMJ b,Šòäx¹X,¬µ ¸VÅz½nêÓæZÎúq˜´ÖŒqÆxŒ‰1‚G㿦i§ Óϯ*,'<<ëºÁ›ò>pÎg³ùññqY–×®Ôu½¿3¯¶aéiŒBj­¥Ü”oÆØ¢(†aTJI©ØzÝáJBÔ6À¸‰qcßÎÎN×uœóÕjUUcL)‰1«<ÜÓ4åBš[üì-Š[[÷tS=mzŽÂZ„Å使œ[”CQäñ´­ÓÚ™†Úð'i^d«Ï€é)8cTÊ ìÜoiÕoÉàäÆTþÜ8ÛLÕqß÷yn•Ùn *]sˬœ$ü4Z€”TsÀ„ ò–†}vflø.ÑyÂò˜RJɺ( ?à<#–GAFA ¯ÔGñ¤Ä‹©“ª( “OÀ+ËJÊ +Uܸž=8žûâ¯3vĸ®U9Yƒ5ÑrÕ%ÎRäÁñ`“µÁ…Xj¢d 9gUÕâ Š§RÈIJ&ï­0²J-˜.ÅdF ”71À¡œ}ñÎ;ʲT²ðΗZÀd¦£uN)ÅDÃÞÛº®9ßÐ……TBxz/lKDÖp¥º¹,€ÇøhÆZÔ‘±n0œóD3Ÿ‡d!RJ²(¼÷Œóz6«ªj¹\¢<ËÆí.ãœq.¤âœÖZkwÚÙ8Ž2Ŷm—';³¹ÔjGë]ìãÎîÂN&BÒZgcÖ;rŽÊÛšä¾;MÓr¹D{y#GHç\Ó4Œ±år9›ÍÈ}ã±`ÄQjJrO 9”ÐÎÁ†¬™SÕc\¯×Tºâ:ÆÐ†w8ZÎÍgòñº¼ë·5ˆ›o`$ún¥]„å[1¿5j*!؇9ižŒ¢/¥DÐb©ßmqrâ1ÕY<‘Xî¶¥è²eÒ•Ó»¶†¶ñvˆB0NAOšxmùÌæ«øÒs'ÄœsO ’Šú\sg•f³YUUëniŒ˜9²D‰©–šŒi>>:̶&cˆ,r:)ÓDœkÃ2E$äðÊRH¦5›¦©ªpc˜Æ$Æ}t1¦Ä€¨¥®e#˜OŒAˆLI¤Š….êbG.±˜ HÉ f@‰(žžN®…œ‹ÐÁ,¦à!HÁÙ)PåF¾™#„˜lðÞ—eB¨çó~8¡öÐ&µÎt¯ ÌÎed)Tƒ!‚1ÑnØ8y“0“kÛÒ°62–Æq”r !Ä઺>88šï쬺!%¦ué#X”Ód×}‡õ`~¼îfM+”ž†A¨b˜Œõblç‹¡ë–랥$ ô³»;t]ÓÌNI‰Îû€Í¬Õj­µ>9YEQ–’sÞunûõºošF)QUÁ{W×í0ŒMÓ Ã4›Í„Pœó®ë1¬÷ýˆàÚihHJ)!TsyxxBhÛ¶,ktmŠÑ !†aØÝÝ !à8~Jigg§ï{ÊGN!$#£ã8âÌjÎÎÍkŸ\à‰¶î‡õ‚SJB\W4Îçhà¬Ô8çǶ’5"[oѯrŽíXZEy¢·Å ¥^5és2Qþ{$[RÚÌCpþ-7^'©nåZÆ1F¥ôl•œ•PbŒE|êQb¾ƒ ̳H Ba¼ËO¢¼VUí\Àª­(ŠDŠ$†Á)Væ¨d¿8é:<¥TørE™¦I«ª:ÆÍÓéor÷‘EQs….\™µÓ•ö.ÁP? €;pà“7^I)9„ÄŒ›bdU¥’à)ãRRJØ8OºÒBˆÁZ‘4pÉ¥dByo—!yÁõd'Á¡PJ0c´vJ)Õu,ºÉ¹„­ÖZj]ã¨s‘Rb›Ñ¾ÈbäO?–·rìüµq!–ëá™Ï~ö™3gHÆ3äòåËŸýÄ'€sVU÷ÜsÏÝwß=M“Ö {=œó/~ñ‹Ÿ}ôS’q±®ënráxuéÎ;¿ò%ÿ\ «Õê¯þòÏ.?JÌfsãì·Ý>Lc¿îF31!VëU¡´99–eefM{x| ÏxÆ30<þøãø†òŸ¦Éãlw·,ËÃÃÃh-סÆår9up>ÛÙ)ËòèèÈ{?tÄ(Š"X+´6}BTu=®×øúu][c FœÎ˜ÏçeY>õä“ 0–¸RñÔ–}ßsrtÄ¥<98ÆÂêÆ\ºå–Ç¼ë …1ªªŠ1^¼x½jpóÝ÷é PT[b&þ•¶Ø¡9øEea¹ýaÛćºq„‡œi‡ÌŸ;9çv§((H7E±€†“sÒSÌåa4'ˆäégÝ$§˜á­‘´é)¥>àsÆ8—Q¾QÐ56Ü*-q#äÎŒ[bB¡7˜=~fßÖÚišœK1¤B]ê”®s2ð!“ÑõˆU3Œ#²á±« ”‚û¾çÈrÛœ1­µÔmÛu™l¢¨ko˜w1!u àÀ\LUzp£÷Žs‘4ã,ÅRÞ;Á¸ÀRÒJLC0)E!¤ãy⌉’”*‚ãJG>Aâ  ’H1F 8ôÚsÊJxŸR²Öaݶ­1“<ýC§DÊÔȈÌÏf¼ˆ1¾åúÁW½êUGGGmÛ"Üжí8Ž>úèýÐ}îŸø—?õ¯zè!Ì«g³Ù4 eY®V«Gyäo|ãáå§V!Þwß}ÿümÿâ¥/})œöààààƒï{ÏOÿôO\½¶»¿÷GòÃÑÁáîþž'.E¿îŽNŽÿæ¯þúmÿò'OVë¢(^øÐ ~íWÕ3~äG~äï|gŒñž{îùà?8Žã0 ïxÇ;þãøCQ¼îu¯{Ë[ÞröìÙº®Ïœ9spppxxøðoûÛŸxüñ;ïºë]ïz×b±X.—M³QÅtúää¤išOúÓßó=ßó-ßò-o}ë[±‚xûÛßþîw¿ûäøøù=ô†7¼áe/{™Rбtttd­ý¥_ú¥÷¿ÿýW¯^M)ýØ[ßúíßþíØäöÞ¿ë]ïúùŸû¹ÃÃCÎù¯ýÚ;îºë®”Ò£>úƒ?øƒëõ'0r;¿l.d‰r§[¢P ì\ÆξQÏ„jF„BrÌSù‘;ÑãÏä½BêÃl).P®D|ÎÜâ4?ñúI†œœoH3>ïÁå=‡¼à½Ñ‚¦¾· x¤ ½5¢´5éu#E†>ät èÔ§v–µÙ¹š3†•õÐL2ŽvA”û´m[UÀ ©°§èqO ”øhØï#»³åJˆUÙÐKÁ•ã†Aœ>%:6¸ûɪ“’«²†a=›TL)ùëäúÓ‹6•Mu´œ4°º®QX’¥¤„ÔÑ܉Š @Ù£nœ„Œ Ö¸Àƒ‹²ÙØ´I)€1cLL^)•„ʪL‰ƒ«q(Ëâøø¤iʃ«ÇM[8¬õ˜¶É‡0ˆš”“t®s“cŽ–'ŸùÜc×Ο?ÿÈ#Xk|ðÁýÎþ™_yǯí×½òãÿÈÝÏxÖûâ-·^zÿÿ¿¢T_ùâtxxtë]÷þæ»ÞýªoøÆÙlö‹ïøfÖö“7vü‡O|\(ùÀƒ-ûáë_ýšgÜÿœòº×Õe3w´ïܹsÞ:&å4™º®hÒZ‹8‚K¶¦·b·|¶æˆDü5Ìð—RäSî¾…?O…™úÑöÆÝKÜjæ|ÆØ8ÔtÏñøJ'öÀ—•ÝÒhÏç°D€”àÜ̽×uã½Ãd µw6ˆɺGìô¡AJÉEÏ"ø„aƒ&8ÔOBŒãH8&Þö¸Ÿ&òÁ¯sЬu4Ò¼ £À ²ÔE Aˆä‚1q½^ã¯^;†ø_½÷Ë媪b1Pvc„r©Bq]*!XU¢›L°Ž‹ÎCˆWª,uòÁO¶Š'ð“ñ£ºÞŒ£Çq4ãh´.×ë>øä}L‰±˜ª²„˜”Š ÅY]èny"hÁY ÎŒR0o`|ÆôSŸëú1%6Ž£–àL_j±^×u«dác’º4fjæóžÈ4X›Î!ñWOJ cê¶ÑEÉUýÏ~ümÿÛ›ÿçwÿÖoÏæ‹nè÷Îì_¼éRQVÝèg‹ !¨ŸüÉŸ|Ëÿø}ïýý?dõn?…‹7ßÒ´Õw¼á;oºãÒ+ÝÌ~ôGô ¯ý¦×ë«ûw«]ì÷î¾g?øÜg?¯TeH| ¬·ñwßóÿ~ý×¼ò%_ñ¢Ÿÿ¹ÿ»™ÏW£ÓÍÎüÀ›¸®›å8!@k®4è²JŒ'Æ]ˆ\kãÙ[oýžïÿþå8Þ?úéÏ<ï½à…/ú¾ïSbbÕ í|þoyËÁÕ«ÏþóŸ÷ü‡žqÿ³ÿó¯üZµ³sÜ c¯~Íkï¸ý®ÿŸ­7¶,­ê÷þ¦3Ü齈Ȍ„bµ@p¬–E\¨e)- ¢²jíŒÚ–‚êÚ,Ô²ÂBmË¡S¬¢[ºE»ªèDIÈÌÈŒŒá½;œá›û}î~_Ü +ñâ½wï=ç;{ü _øä/ú޾o}ÄëaÜ vÝÇ1âñ#óK¯}ýºwWNwQªïøî—|ÕWÍoýΊ ï½ïÒ?ý‚/|ñ÷þKy½z7ÝhCnæ«ïý—/¡3*Y/w6GiP˜ÂZ+SôÞ(²¢žµ>EU;¡Þ „HÊwRª”ò0Œ´©Ìè‹BLUJi¥$ÝUbh ¤f!¥ˆ1 ‚µ£R2ODY­5`ŠÉ;?j#CtôEr<§îI)mLcŠ1I)rNR B¡ ‚÷.Æ0ŽCŒŠ¤à]ð!KM]#€V r®Œá3Ç5þUUEÈ›nÇ0”“AŠ¥/CJ©®©«˜ÑÇœ@d”!UµmHA(TJ(#É(mð)¥CJ1çr‰BK˜ŒaZJ-@¢®T„”VU…(hLGÿ‹1!ж9çCˆ9Ã0Œ)å¦i•šúhL9:O„@£t¥ WRõ>:眥½íwýÖ4u7B›ay|®mR× ÕVUUÍf3LÙù Š P é†1ÆlL-¥F”9£”:Äì|ZKïýf³¡-ý%ÜÐêó´/„à­…˜d£´–²©ªªªš¦Y­V<ùWJ)!sÎËåŠõ¡Ç~‡AIYCðnt£¥éMš‰OäcÈ(…”šæ)¥ÑöJqu UÕÔ EH‘Ö…”X ‘QEôçF{îl³.d”ËÕ±Ò¸p顇ONNB>†¶mˆín´›ÅÊ>¶Ë£,«ÓÍv]°®ªšËׯÙò¨ýµk×TÓH!>ò‘dÀë›.‚Œ!+eLÕÄóÕ¹ùòœÖæáüõ_ÿÍ âòµë.¤G=êÑàœQW5 °>|úþû@WR™]ßY2ˆÑ…‡¾ª+S7í`6Õ?ð·=ôJñÞ÷¾÷ïýTÆ4ŽãjµB)­µ'''Þßh©j]7¦ª}LÝ8¤(Äôà•+Äòøœ0Ò´³Û.Þ©c}ÔMûî÷üßo½çÍú»¿û÷ÿá?ؤ1›nxò]wAUmû•œ›-—`Û÷/ûñ—=áIOBS_9Ù >…˜cc 98p§F÷…oÍž7«È2“Ét´xˆ£–oƯӜøL)¦ Íz¨Ë›îûiúÕ›‚•!"_ÿ?ðvÎÑb‹Û+r» mxFí–ÓýrWBpö=`v~Œ1R¡”ÒTJ* !dˆ˜ CÌ9 IkÊiÉh­õ£=SL&Í#L¤„ˆ 2ŠœRæzàHF“ ®Ô(†òŸôQJÇOª°¸¤ÏŽªÊ ƘÑÙ“,Zßr_OÈêÓÓSÖ€e¹öy£˜NE:óT×umÛ.—K*­É–Ž]Ék=sRY‘BBúÑJ)s!eß MÝÃ|$«•ÁŽ×®]«tM›ïªÖL7ADcjï}ÓÔ„ñ!=¶q´‹ÕRë̶t9O<¨hè06c &EðâÉrÖÌ£œ¯ÚVnº‡zèÎ;ï|Ücý­ßòÍãÐ-ûÝ–7W«ÕvðW¯^ýú¯ÿ†ÏùÜÇÅ—~Ùf×?úÑ~Õϼ|wõº’F‚ìºáösK*gˆÖÝrþVž(£Q Ð[«úFËs®ŸœÎ—«• ƒ×Û-€hš™1Òû«ª†”û~X-©ÐPJ[ër‚œ±ë†ÆT«åõ+W¾üË¿1צ¢›2I¿÷›šÆ”«(PŠŽ×µkWµÖÞ‹y‹Ñ[Ha³Ù€ÖÀTMÝÔ§ë- ¼ôàep…Š ¬ mF!µuáä´ûþø¡ÿå{^BRVã°½|õʰYËÕBIYUUJ€ sL SÊPdûV‹#Ú¶»])Û–Ò^„Í온D”!„µ=?MÓ¤JJŸ|ÉEg“ô½dp:èR9á15åÌ^ ê ˆ¨´¦MVé'xX §xÞBÐ$¨BqDºMUi)uJ!g”rZªRi¤ÆáeŠ9'@1#bÊ„·FD‘„ȨUËë¿ @¢@åœñ, CN)‰½¤e(ß âññ1ýža´Y4Mãâ`ŒÄ UU ƒ¥lDqCi!2t]GïtÏ‘8”–,¥œ™òÍÛIEåÍfC© ³ª¸Êe“%¥L9 bpž2 ñ¼™/Jš¹3=™v4M£¥¡~¾¤,qÄC>~Ó{_Øo…Ï*&­+)EJѺŸjÌcÈ5BAŒZk½Ýn/^|ä½ùr 1ØœÀü÷ÜsßG?|ùòåzÖ>pùÓ|Äí?ýS/?ùàÕOßwÿ÷üìOÝ÷ÑÉû¥‚”²mæ[Ï_p.ÇœLÓÆSÂ[Ö³˜ªí£ûØ®ëgç²­ªªz†¾'D•”B¢1æää”W`óùœvz‹Å¢mçÇ玳÷öÜ-ç'ìxô»ÝîüùóÎ9u]Xo溮 ­&…ÐUEÎò}ß3ÁCH³ÙlZÐ(ÕÌfôŠú›¦­IW›îõÞð†W¼â'xà¡ç>÷¹OzÆ3._¾¼X,ÚÆ, ¨ªÅÑQö¾ë:cê {dÞ0*V)I^:>`ÓK 3ê¼øÎR€&|P„x³õwY¾`»ËÕX9Õ*yÔXJ>{Œó*©|ŒðŒ1j!9§`2ø€¤À¹˜µôÑB\?²TFN9CÆ ™\äèÍ’ÿ±R0 D>ó)‘ÐlN ¦œ (-wÂ8øCU B"å0ˆŒD»n`«›¶U&F´R¢œmq!&„)¤”ZË’]PÊŸ–§â€0±ëˆ™Áv’eú*d´Dq#ËÓd¨¤‚eò¶ï꺆!愈Þî FßuÛ”€˜­ê}D”!$¥ÌÞ$®“B+e¨@M) B)ÙÁªÓ!™XTåúùf—§³j\šë'§ÝnX,Þû¿ú‹¿D1Ø{ÿño{Ûè¯ßª¶nˆÑk­«Ê¼öWå–[nyÞ·½ø‘oË›ÿèWÿík~ç7~­ë:%P {ýúi× ÊÔDØôCJ©ëºÍn;Œ¾nfU;“RB!ÅÅjeꦮ”2Ak¯\¹|J ¼÷óù\™fÖ©ÇÁ)ièÁ^ä†%ú‡aðÁ¶uC@!&„”×'§1„JQ]íCt9G­åhín·EÌ·œ;Î!‹ ³º‚bpFÏSô`Ý0 ‹Å ¤ÔÎ…Ùl è¿J™¦™ýÉŸü×g=ëkžøÄ'zâ'~â1yLÓ4Æ)%8×u]%%¢$OF¥¦$…™ÔY'ß'†¶S~.éS²SB˜žÌ0cŠI CTR…$ʘƒ6&Æ(¤ðîL•¥Xösqè<³œ&ÇGÞLñÄç÷@ó¢)t¢€ié–„´Ñæ_ ˆBH"ñÑ€™â•ApÏç%dtgû‡€@ Uʤ ‡ EB€˜RJ•6!Èc†Q*©¼÷"ƒ‰‘.~J™ C¥×%%"lºbàRæDÂ+] 4{Š~m]"ÿ'¬©‘ 2(‚>Mæ=¯°ÖMð×3 Ä–“–ʘôï&‚nßúŽ …¨{>€­—f·4¿à¦L yàÖÇOÊp bÐZç¬3f6äÑL‘½n¨˜bŒMSs±s sÊm&߀ϤХV¼j,Õþ¦1Ù÷°oŽ¥#Þô¦åãoz3 ©x@€$bN Sr1SvC!dFÌ!§œ2J‘r(ç=œ¢€°–âÎT%•š"gð‘à•R"C N)ÅX:Å{Ÿ¥Šqª¼R D¶¯ÔÙìJ£”2¸ÀëT‚þ1\‹o{² !•ôÌ\ÝŸËšp\¥ Ït2@ʼ¢öÞÇœÀ;{}}ªµ&]k­L©©jb~ð Ö9g­§2¥}Õ‚”BK)PJRŒáèc–JÅH ?ÒôËr2>€&ó1-‡\t¯`´ývï»Íçîçia¦ÛºÕ¸²al´8±öüÑJ$?¯M]Io€4lOyñ¶þô¤ßmªÚÔFi™ÛF_»º©!뇔’·Ã¢®€ÜùãUet .»àG 9ƒ÷{ÜãäœÂùs‹ë×¯ÂØÅè»­Åœ†®¿víŒÖMÎ1g­=¾p~´½D0çó¶2êû>ÁF…ço9ÿ®w½ëöÛoUïø³÷ü‹oþç4õÌ!\¼xqÞ4Ã0tÝŽ2<@ ÁAŽç/cJ»íæâ·!d;F«Æˆb„¾ƒj¶]Ÿž;2›ÓÆÛxùÁKÓ¬©äJ«ãØwÿáÿã'>~çwîú^*Cw¤ÛliRki²®Í!!.eÀ‰“AI‹ü\g•ÈÆ.4nãxžMG‘•B3æöLÀ\JƒùtÔDAbùå~‰+t¬J#¼÷’fB¤”ª¦.¾'•0Ë’ÿLf)`¡î” IDATæÂŠK›0é—Ü ¥MÜA`̘FH ÈBLRÄœ¨íCLJFˆ “R •ÌiŠ1ŪªbŠ3@ŽPŠThµq¨âv¤ U¥{+Õ.ÓŸ*Œ=yk'ÊdÛ¶9)’µ¶­UÎY‚™õÝbÎè\BH¤u!kÁßì_]–Jg6HÇÇÇ$¯Á3,:F„¸/yaeü¢gƒ¶$<ÀŸÍf4ïÜl65hëI K×uäîKôQVª£áÈTX‡ióB_çž¶tõàCV:Lú^{CŠ£º³!‚gÇ[ÎÝñb&s9ä`[ml·3óæú•£úþDaºxÇ#@d…IBÊÉi…m]½ï}ï7$§¤øùŸ峞õ¬}ï÷~ûó¿5E7«Ìõ+W¶ë“œSôCŠ!GÇm·}Á]Où–oþ+~ê_Go­1Âß~ðoÀ˜/Ý_WEžÍ›ï|á õùŸwÛm·¾ä%ß[×Õn·­\½zåÓŸùÔõkוijŸ}÷Sîzê-·ÜòÌg>³®ëûï¿Ô î¾ûî !Äè3DÈpáÜy"^-–‹Å‚öeƪ6•@„•uФèiÍéÀK‘‡¼%vw* nÄÁ1ê@l‹:\ŽDgÉ#þìe¥L*@t%»®£ÉÛdÞ´RÉL™1†{¾R‘eš¯Ù•úÄ&£@3 ùðP ÞR\#=R>©ªj³Ùð:y?{S,¬NºE1f)i6)i¨Z®ëšR.€` éõ}oŒVª Ñi-„P‚D,¥”qº.Šaþã8RÀ¥ƒÎRâD¡$­=ðÈGܺš×yäÅyc&Q$‘œ•J¢·ÝÜyû­çV³Ùl¦% ˆÃÅ;nYÍÕ¹ãÕùóÇóþ÷ýÆ~õû~ð‡bôÏxú?çî{BÈÛÁ)mî»ïÁþ¡ï»ü™O?·¨+ýÈGÜ B}ë·|ã ¿íyZËa°äjµxÓ›îyË›ïèþî¿}ð—_óšø¨´xîsžýÍßøõJÀ0„œóã>çÑ¿õûÿËÈŸ}Å+~åW~E¹œ›¿ù›÷u£•RZï.\8ï§>õêWÿoBˆJ›”’Á5Mµë:Ù¹Ñ{+¥!’1J)áì ¤àÞùö·½ãOÿôÙÏ~ön·ùÒg<ýo?ðAcd×9ïýÏàúíÿø[²©o¹p!WF#äË=9ÝûŸ¼çÞôâï~ñ¶3)DS՚؋ׯ]Í9kSõ›lfBìû”’D‘s)Ò”šG ¥Lɧ#ð ÌÛnG¡¤mÛ¢btÖsÂ3B‚l½‹9Um3 CˆBHkI}¥†w5JHoݤӢú×abLZk|UW”bcŒ«Õj»é´6 èKkmEK mHQŽG(ÔØ2,‹S>ó“ö®EÈhi|b ®®tL) ðÞÕu™€5 )¥HðCÓÄ!Д eV(3†”0FQø¬µB©\ð9f”ÙÅ‘Š;¶ö¢‰3=¶4™¡è0›Íº®Z ! Ÿ™P¤­µÔ‘#Ù”3TclÛ¹wcŠQ“Jr]ÓOÑ3› ëÊ4¹M)mv[vq^a‰D vRˆ¸CÝô0 Šèˆ”jú¾ç¤GT^9“JÚëü9ç–Ë¥÷þÖ[oÝl6'''<-†ôSü†ªª!H«ÖA©—®ëšf6aåé v]gŒêºÎT*„꺥»ÎÙO+AÙŠ5ÖðäLNrt!´ðþ¿û;úÛ$%ðÚ•Ë“ÈIÌÁkS5uý†ÿÚ÷¼ç=½óµQ?t©ž·¯ýå×¼÷Ïÿ¯¦2€éÓŸùTrã«á•oþ£?|ê=å žðùC¿›Ífý`ÿû‡>ü§o{;¯}íêå7þîo›ªÕUS¥U6Z^»zò÷~úöž¿ûÐÿ¨k½¼åÜfÛ½æá­oû?ï¾û«¿þëžsá–svô>Ø¿øó¿ü³w½ã¯þâ¯Úå"Çô‡¿÷[ŸøäÇîþêÿéßö­×ëŠTŠFgï¹çž7ß󇟹÷Þål霓RKmþÇûÛ'=éI(Å•‡ª må„B„”ºôàɵëMÓ\½zuèziÌ·Û¿xÎ7|ÃË_þòóçÏÏÛÙØãv»µÃðÓ/ÿwòÖ·^}øa@¼üàýÝúúè\·ÆÅ¬>wnµÞn_ýªóô§?­Y¬Pˆ`åæt]urr/xÁ þÕK¿ÿøÀ^ÞívÂ8Ž´YöфڨÌaUO†eñ˜!Q<âlš†¸Ö¼¤¦¸@_™øÕi ÑIüÀúñ눆’¨RÁ{TZ‡œ¶ë5Aé°iš¡·R3oØU[Sy6§P2^¥”¤ÏU˜K³ûC ~H9xŸ&í@Liì‡cкÊ{ý[òïED‘²V:Zâ~åsÎB)3äsÊ’@Y1ÍÛ™õŽÕÜy\C%Õ5„zç™{…L”&º…ˆ\íòÐ0…X2¥»ïÄÅv»¥×¥;x³©ÝeV¬ä§B_÷º·Þo¿¤ëKáp°¦@„˜\ Ã0ð§ªk6³“{K¢œó¢Þ¥”°ØD8ç꺥 Á-!UX¼Bh]…@TÒ˜s4•Ê ioeŒšÍÕÿóßÿò•?ÿò ·¬R„’è@£kz·L¿,¦¿¥>9Y#榭ºÍ¦ÕJÈJK™1„PUMÌéáë'¦ª{çëJCŒ‹Åâúz*m¬`ytd]½Ãƒs£®*? MÓÌçóV«téÒ%H 2`Õä± £Ð5JB·uµ˜™]·Y¬Î¬OƒOnì eÈ „J 1:„xîÂy;Œ p³ÞåèÀÈY¶Mt¢R˜aµZidI²^¯w›5 È¢­R?.V˦)¥NO7!×÷ôè@ÎóÕ*¥Ôo· ¦ý™Ô¦ªª~½­jSµóÙÐõ.øSŠ…$« sÎoNפ;BNhtö¶nêœó»Þõ®'?婻ݮjf)%jyë€%wƒGÑÖˆódŒ‚„J'®r©E ,žZl7?'1yZqô)„`‡‘ô0SJ!úÂh-={±Šä÷:-]×I¡¥”»¾#¹Kç\оï{г¤·CMÐy­³ÖÃ0œ)gV=æÏ‚YŽsö®d_Zçb ì„R* ~ZY:k1 Â*J!Ë¥ALQ ) Çœ ©+‰"AF­v}1‚”ÔŽÐìº.… «ªiª ÇqœÏ绡#XÃÙä‹0(ÇÑýÓ'<ùU¯|̓—®Ú1Öˆ¨ ;?Á–j ¬"ïU4œsÄ訫¶ë:!e3ʵ);°|˜"KÚç‹kRñÅ%Æ„ˆ¨äÅ‹×ë5‰òD@I¹\. €Ú÷}B QÔ0 UUÑKêiIeÈ9k-‡q`Hö{j•ðÞ+I¿:==]ÝÞ÷ýÄüBÅb:7<Ïb¡²Bb14Æ,f$°…¸hg³YôÁ(mÇ1Æl­RßqÛíÝ8h­êºÞç”έV½iMBÈ1ÎÚª ût$•¶íññ¹n³uÃ.k¼óÎ;œÍ ¢ô~.1£Ûõz3kW)‡¾Û.—ËÑŽ…i´Ñ2çT8WÓ¤c4;îhòI ] !EcL[7ÖÚ"k—èJÞäêøœG èT~SƒO%Ma±œ™JÑÓµœÍ×ëÓ¶irŠóùœhGÇ«““UW«Õj³ÙÌçsêñŽWý0fiªãers°xáÍZ¹½š5ÑýÉ€¦«„4¦ËBr+üW‚Lg@!À´þŸxֱʰgÉì!ø4U±!P2ïû^«ŠØœ¹%Š˜<ãKÇæ”’Èp£¿!¦”K I)%ßrºZŽÃ)8KE­Éõ„BJæR‚~œ È§§§ë«×cò¥b×tæH”–Åð¦U¦˜Œ(¯w]wåÊšÞ´m{rròú׿Þ9·Z­H¤jkvÞœòÅD¶×‹1*¥)0H%e’°¯xF̤eÔ[ǽ§²¬­JUUŽé‚¡¯(špÓ;¦Â’—§PÅsûÂj6†Á c'·¥Ù$Õh$õ¬#L6":”Î!$)S©m5¹œí«­ÚZÛ¶5cPµÖ‹ùr,á-V«•µŠl­Õº²Ö.—KŸùq ”âÐC…ù® ˜¦|KÜ8ôJJ˜r¨Ú&ƈRŒ>mjø5³µR,\¼Ÿ7íämÑ4¤…BÀ Þv¥ôöäDI½\.w»ÓÍæ´m޼÷C¿;:^&ŒÖ¹l­10E´ÖÛõ©©f˜²RÂTu^¦´D%@bö>f£MŒQkÕ £’BJÙõ}»˜×Rt]×§¬µÖ•ˆ1¦à³@@8]_¡˜z*RD-•–“=„–RJl*7RUm{rrÒu;¥”áèøØ9‡BHDë\Ó¶UUu}ß´- Æ÷¤rJ{¥”n´§§§ÑÙ7¾ô¥/)»*ÓTM=)IŒ1ˆ|æ¼ÂÞôå>—bÍSJÊÔROÀ%²&iÛ¶i/¤^†D ‰žFs}xÆ­In‰ãI¢/'å׸ßâÚ§®kgCe©Uι13ï}Œ¡iª‚Ñͤ `íSJ9µBrjQÀ¤‚TÚÓïu¬4ÃâyÕHž¨(µÖ•K(µºB$çg•ÑÎI)ª&xŠËÇÛõñr¢›¸>™,WüÞƒ˜ÆjÒH1Qô¡Ñ ÏçóÙn×5MséÒ¥7¾ñä+Aó£Ik­…d±cI0ÀŒ%BBŠ)t(¡c k€ 0%z‚¢wÑ ¡Œ’**)J­”’,OZj½“¤ÃBYxCÍçsÚÙ•¼‚wRƦ F;*|rÎóù|Ge´sN*EžÖCd.ptt$„HÁO*„óâ—g7£?&r™ÊûHÆZ}ßçgí"ÆÔ¶í0t·Üz«÷Þ4RJIÍÛårÆÏ¯Å8=d å ´²Ö"ȪªFÛÏš"€‘r·ë”!‡qIјj÷8­xÓ|>·n8>·²ãäªPï…cßg¨…B$‡µ†àS–1%˜ÍÛ±‚‹u];ßø…ÅŒRšÊ­=Écœßé#c$Š”ãb±ð)vÛm;ŸIιˆˆm]{o#äå|Q5õééiFAÙqëŠÀŽmHúqDÄÅbN¢4T°P;@ ÆK)·Ûíb± „ÏÛÛÝÐ+i¨Ý«ŒVY6ƒ³ÿåÿøÏu˜2ÆPˆlݶˆ˜C: 7°¬eÙ7M3dH€{)j,.)AŒµ·€ˆR뤟Sè)Ý^Õ”<㈴pgP!ù_°‹FÙ4²ªµª&~He¤œ<>œ÷Rj:ÆUÛh­“wmSç1‹ùœX•šæn@ß”!´ÐRµÊh!K%hZÛ‘ÆlÉo#ð§4‡©IµUL«ƒ­M BGær›O7w†Ùl1 ƒ”zG@y Ìq@- -”œ„ŠŠ…¦iÊ®ŠB >ÐÇ Ç&¥!.—˾ïW«ÕÕ“ëËår×uËåòá‡>::"1_?Ú}Æ Ù# Œ©BÞGR¿Ü;Y¹¦©†a RK)%$Xk•2!Pk½ÏÛ $¼¯ú¾Èëõšò•”M ð/EK÷JJG¬E+P¡ %„ȈÂT> o­’R ‰Zë@ªG²NsM;«ëfÛwÎùìóöt-…®ŒÙnwmÛ*¥0åj±Xï6(“4z·ë¤Ôu]nÈÑk=©ÖvlÛíΟ?lŠ>äÅl)ǾëêºN!ÇŒ2Zj¬8®iªè½6ÆïC¨ªZk3t]]×Åééi¾išüfsÚ¦Ùjµº‘Ô‹Åv³«ëš¼pÈÔ¤šì-)jÇ•©•RËÙr½^Þµ‹ù0Ž1Ʀmºq0•€Œ¨*ÓuÝ|¾°£'EÓ‚TÒ[×õ|¹ð.©ÊXFg›Ú¤”jêã4x5—ÆŸ‡²yUS@nö°á&¢”3žxgı+^§Ç†X*gx „듈bd/ÂÑ{çÜ0Ø®ëj;Æ×ëm!æ$„HÁ³Ö$”š2ÏšÁ3;õƒ¤ò*™u|Ö–æ\~1¥”œ%ùÒ€’RBSç€z[â ˆ h®§4"FïI X1Ƙc¤`J Ž¤Ø ö—TqáÂ…Ë—.]¸í6j9«ªŠ¼÷É~Ï)FçœÑÓð‹Ñ!Bš’;•sŽ9CÁ0B€@ï}ÊÈÙÿUê_SbƒwzÃÞû3KNæ|Pªa ¡Ùl6Ç‘VŒ»Ýn»Ý§KÑ£¨ŽV‹\o=3¹µÖ•VCoAÄq—Ë%bã8Rmï½WJo·[)uß÷UÕÄè…„˜sß÷Ëåá5h¡0ô6gÔÊø0VU•3J)sÂÁ Üýœ‚–ƒ4ȧq,Õd—TÏZ!Ähíf³™/oSU9GD”Jv˜Íf£³ÖËårÆC¥•T:Å0 ~¹ZÒ(ÇÙÁùȈ’ÍútÑÎ’Ï!甌‘Rࢠ¾«ªêÊ•«ËÙ³†a¹8 !ÄH˜t‡èXkVǤãÞ4Í0XçBôNj ó¦Ý =µÒιa±\¦g1çÎ]%»Ò¦ªˆŒÕ÷ýl6Ûl×4تªŠX¢´ä¾zõ*{Iëk”R›ÓµD¬ªÊŽÙ©ìßR¤aª³´RÁ7McGŸrH´)ƼV•6RLvtJ ÌXWÚÙ •@Î)‚T˜87Nq¦˜öÂêdeP×uo­Öz¹\n·Ûºj]𘵬¥±Ö΋œsôÁÔ•·“PSÎ Ê{%{)±ï;ªIKÊýáW¬}LÜ-ÙÇŒ6t>Ðã) ígaι”@)”ƒé±e Ôn·«k£…ýˆ U¥*]H‘yò4h¦f™H¯×¯_¿íŽ;¨ÜžüÍr,•—iíFE¢šO9¡õÞ@,™›ùÎ9xO F(e e­µ·a6Ÿ{”}oÙ»Œ•cŒGGG¥uK8Èoüç/igsBÌ9Ä4Z7™+¥¤‡ÉŸB¬«›&稌Z®–Ru ˆrpNíùÀUeÁ†à½¯ªÚ;WWfè;„l´“J7`Ì`ê*gÑÌZ’©+;Å–‰‘<8EŒ!¦€ 0Å,¥¬kÝ÷Ûw¿ûum𦥠µŸØe­µŽ¤HîGIc BÂlÖBN²ÌXWF@ÖZ¤RŽ1¥•TØw;SU"眣˜r‚ ã0HÄœBÁÔ&ç„(¤R‹“ÒƒJ*4Z…‚wJɱŒÖjr¦³)&"¦¤´š/æ!FÂ:gªŠ”ï0å,¤ 1Æ›¶FJé£T2ƨ+|Ȉ€(¤DcÊ)ƒ2ˆ}¥™rF€€wuSë"²¾pÌR*ïœB+•b”(¢€JH)„mމþª„L1¦sNdq”2(mœ“)õ) ÄÆ˜œ’›ÜX1Æ@#˺®´ÖÞ»”RÛ61­UJÑ9Û4u ¡ï{)D AI!…È)Y;­ò8ô9§|]W9Ec4伇&¸åt˜µ"³5!]©dÞ»@ÂB+Z)J}MUïC # ÔZ kG„,¤²’rBÈrÊ)B&Ê^¦ LU•”¨nj_¨ eˆCŒ…Œ)")ÌHiR )0¼•1FK€¬µR„Bô2`¦ÓB'RJ7E ú©³§”ÊÙi1íßSˆ1¤º®åþ_iE‡œ`ÌB)Í5Ê‹V’Jü¯Ô¬n¼÷ZÈ1eˆ b"X}7Ñûºi¼÷1%¢1„èG§P˜J‚³nB )è‘·”¤²À5½´žŒÆJZ¬ÖÄwM#!£:¥ B]7(e”ÔRM%CÊ!„ µ)õCÇÀ`3¾…{$}ÊŒ©È5×9/„À‰¸OϼPJî3p´!`Œäk 4ÊYá}H)I(¥@*@dêü"¤cÎ9B’˜é»h;Bï5ÆèS@¤2m‹”Rä¥L M†Ÿx•T1F£5å4¥EL1¥$©ÄâØ•Ï“ÀÌYi ”¸(=yÇ‚ÔÔñ±Þë“0#ý ÃÈ?±Ð'€R0ïEI² æfªï{n²øe9ls8tí¯­f/xþbùöXn˜Ë ‚ïjVš«E.OJ™›ìÈÎ:q^ÏÓcùY]KE=Î7ÛA r%Èå$s?JŒ. NñÀ/]¹Œ+mŠXk3çCRVÚ ZiBÆÙ~0R¡ÔÞ¹q+­åOH2R"@Ly¨2µa FJ¬ÝÊ vT€éî*„”XiAKë§RáÁ9‡JWÆLwH¡ÈC†=çë,#d³ êÞîÞëžßçYŠ»$£CÄœÄt^SH)ì¨ø@ŠÌ9°t¦-LnøS.Ñ["Ø=®¥wOŠ0å…¾õ z•$¶›!çL,*­UyvÒ‰¥qfe2>(¼Ö,­Y"–›ÜǦ²É?˨EïPÚyr±PâÔJGrî>Êæ¥È1ú@"±TF§D:-¶¼gùóRº€HõZ.K®òJq¤¡÷ó}Ð@•nf¥èÛAHâ]Šø9¼JyÝʹ3ÛÖf¢¦Žã¨¥Z­V“Ó=(I»§½ç›6rCPŠ.ðCWZíRz €UVy|å…ÊÛ@ÂUUŽK"©"Ê,‚‹•ô)&„Zk9: ZË„àœ´Ö H& RÎ2J‰ÆÛe³MÑ€Wr¢’ HOÊeL´º"wb©$á'¤Ô)¥ CH„L“R ÔÔ*óC2I›ï#¯É§B¢ˆ~©kÒfÔ(îä˜HÈ:ç •R „B„œ% ÁäT!‘!¦,2@"Çë$ €„)‹ b†˜¤qò:G`¤*S£Èbžb 3èš=ËŸÎ÷ƒüàM|Ï¢ºY+î ƒ8zx¬—ÿŸµèÊ*€°¤pÄgîffJ¡¥7Å)ÖbGåQ§q¿O6 ãˆL™•é&倆?,½Cn÷èmy–ã˜ëG·ƒ5hxÂ…·Ÿœ&K:da<.nî˸8=°&ôÞ#Š#‚òǹD:¸§eò¸¹Å+­4J /Î åTá€Ð(ÓÐkÑD;DÄÉŠ×VI ‰£Tm ¹B'$S êæ¨G¾3ÝØ•äðqòJE¼RCqª‡ çšHo…l¨×%Íošœ­7;!dÎÉZ/¥Ò"'ï½ÒêpþWXû2ƒš±©BLüE:µ1¥Œw#‘¢kYyï…Ðd&,…QZ–ʨ)O}>ïžh Áå. Vðô‘u:4ÓåÝ»¨³t/5 láMÑ– ©h"Ÿ©Þ`QZï…Š£OÙ¢ò|Š‘®J©¶m s†HÚ×bTQ¨Ï:GŸ…ÿéL§pè˲¨œµqMqà$ÌÍÚ›íN© ç˜' ȸ¨ä3@ÿJ™’hØ…”.,Çbò7§ØMR¡"¨9-5-Ë#G¯ÈVì¢WöÂôyiÍÏŽ>ôB\¸•f‚)ÖÓ«Ðg)ÅrK%xγ§²æ_xPº²3­\¸Ê('è)Å›ç!¬’x nʶ=,Ürt3=5 œK)i3ocŒ¨ôÕ+§—.]Ú‹ùùÙ)ÇPÜáa}jbó ’Zºr¹Aòa´g,‘kSqú Ïý.JûÖ:!UJYkåœKÚïÆ”3`?ö)i^†µÖ9%)E ¡®ëq´BHÀŒˆ¦nGëhmTò<§+•¡iša›¦ {i¤³ù(ä"LÚ1¦XUÆÚQjñ¤u£”y·ïxçۚƹ-ç™.¥nnnâ`öÁ›Ê)RN€¦2¦2Î;çÝç}þç®O©ø ue`»Ù4uCˆ!xïêªB„cS×1ç䛵-a¦g‘†Jtƒ·› =uU@e K¦XÕÑ!&0nié)¢U·ETÐ×gm 1£µuNkMe†ÞÇ_~üø©+›µrVÅQ¾D¢pƒP†îŒÊ¦‰‚ï1X“ûÆ¥‡äÊ—N*µ„¼;ãýQ9úárƒ7z¼_#…[~ÌÊÑ>õ׼ʤ«G4iJ–‚¥ˆVU‰ òwr¤£†—€ÝÞ‡2úÓ;©ªjÇÅbABTiî­tðÀ›¾,ÁµKW‰Rã^5r–¥Wa[-ŽÅœxIÊ#KV[-ñel×| ²ÊU!•™¬›8Áh4D;Dò‹GCG÷èòØ»îú⇯œäŒUÕìÇ&y<ñ$Ì9CIØäØy×¶-Vœä¨ª¥›È+ QÊ»Ÿõ|¦’l~ÎY)YUÕè,/Œõä–µ6¤áo­E)¤6*§HL@²’—Rvý@G0„0Ÿ/JUFºi!ÚîÑÊ.îÔ ©šÈB 1Z@2ÎQZ.Ízsõï|Ûb9Ë ø±at‚nPËÞ75tÏ((ÐÝ%N5%%"¯Ó*½ž:OG“  ' =çUzžï©. ]Ãù|N®3\÷–À«‰¬»¹1ÆõzM¥Í)¹ƒfÿwnèÞÓ! z}"zÚK„u:÷óùœ¯ÌD(-tþ¹/çSÂxjÆ…a¹(,gŒ¨*Çdô$s,ã‰2»Â”å[¹ç-ií< åÒ€:ÁÒ¥¹l¸Øf‚£*ßwú=ܽ²Mm½Ëßv“ôÍY§ÉB•¥8{&’ÖÁê>>½CZäÓ QÀâpOŸfjPX•^—;t^1HKÀënžíò-.|Îtè«JC _°Ïš"Æ|zÚÓžñ”/zêÐ{aítSŠtþéÉbÐ<%žrNe~N¼„e+:óå ‘ ŠÄV1¥]ßÑ(Tkm½](«z1gdBRJW•QJaï}ðžøˆht휫µ8%Ûè|ò ªÞ÷¨°LOkí‚×THöY:¥9N+k=Þ¶»Sï+zóÖÚÊ´¥eÎÿëÍ®Jœ9CËår³ÙÀÎõëשנ4kŒÙív‹Å÷å^è#Pb$ŠRÓ4mÛ&¼ZȱëQªÅ|¹Ýìf³YŠÉèªï†ã£s›ÍA() ®ú…vtR˽k캎$mHÃl6;==]¯×ä”;zï&—àS&àeS7uÓZ7I)™Fûqt1J)gu½Ùl.^¼xíÚµ”Òr¹¼rå IÇô}¥„.oZËiPxX[ÒVËÀÍ!V)[E¸éÏÍ &ºÑx蓾¿¿Üû³|%%í‰Ø±ŸUñdŠf¬TrRaÎÿ-Ã7C"¤Tåh¿ü\4M›FÆPÎãëysÌbÙUžZœ!ž L)ýBÊŽ !.×8sôrmRj¶ðæÀ ±Ì »'ƒ/öq öJvÓínf-]+TÚHU5MŠ»®£KAö%|kiHoƒ¾AŠIi–'|Òø3²¸EÎY1R‰RzÞ+̧X‘+Ïýå&¤e<§~¤éW ­¸$¼ì+%jñ(»F²)ç(e`DR¥È9#B]×Ã`sêèåú¾÷ÖVçnžÂpÙ|ã{æM™¬*3 ãr¹\¯7óù,g¨ë:¥< ƒs¾ªªœÁ97Ÿ/Q¹^Ÿæ MS;盦N!e­Lƒj×mJ¡d]7>&D$¤hÌ)Å(”¬´¹vr}Ö´Ö;%¤ >8ßÌÚº® OK7•.2ÝcÚÆf³¡!Za³Ùd!èì’5 8h¦C i+R QJ¹qÌ9ßwß}u]7MsrrRÎefêò{ÉS•VÊq.:8N•ðÒE9–E¸KbxÁÍOõ é@é퀖H™¹  \Š2ˆU´¸óå>·’<ð•q™_·œ²ÓÉ/Áî囿÷p€=Ó˜Ü_On޼£·ÁBW¥y+ˆ–SÔrÛ[b Jp/ÿáFòÌxbÒÒâK11™‰Õ‘h/CÎYJkíb± lJa¡\¯Ó)bKWÞ'R I a®ø¸1š°Ê–甿ès !¼‹üc@í±”JJ¥Ð{ïË9·Um¤B…BBŠ^ ã$qUUÕ8:j ¶Û-#貎ã8›-(ŠQöÛ’õ0¸”BJ9¥,$œŽ¤¶H µÙvã8Îf³ªžYk©Êäp•ì*q7ôW®_Ë 3Dj7ôŠ|::^šº)S¡µ éÚ׳‹²ÖM=ëÆq{º…èšùjØ­Ah€˜j­å0öv .ø‚PÊ[k꺩ªn*­«¦¬³ÞGßûgM3ºÂH ÐÙl6ŽvǦiú~†QkÝ÷ƒRÚûPN.–Ë¥ )&­'5.)eˆm“›¦éÇ‘p!ÊèͶ‡NLR?)!â|>§„Ž ÃRâƒÇí%jä`GN_?pÙ¤^à`p#öUv99f…ž­ܯ²^c< †2†òK؉®8ÍÝxËÎ|=ú+Cœ>ë>®Ä4ð„‘êîâ´…×S,{Iõ;µ,D“äÔÓ»,öxš|3Jž:G&–ÎÙY dãr˜KÎrY°:Ø–S„BÈ)k­A I°ÀévRô!¢ÈEN˜óˆ¸Ùl¨Ì$é*ê)©Lzm¸§Ê†7K¤ÊƒaŒ9(ò&È{¿ÛíR>c*p™ö‰l¯e !™ü;•RT,P"5æLõ¥¼ˆt!ʰÊè[­åþ|ä”rœC‘r0ºGÙO$'ÑŽãñ¹yÎ7HA ŠJÓmú';ú×K¾ò+¿òúõë1ÆÓÓSØn·Ÿüä'w»Ý{ßûÞõUûˆG=*ÆBúÎ~7É~}ðo>`­ý¾ïÿažIý`êêãÿð±}ìc>ø wîË¿ôËæ«¥ÖRWfì‡Y ©+óÿÑ|ôïÁºG=þs>ïñŸ;[Ì J1öÇ?üá{?öQZá?ñ‰O¼óÎ;¥”×®];::b¸×¹ï|ç;mðÁúÅññW}ÕW¥” ”òýï{ßéÉÉrµ:99q!<ó™Ï$'ï}ݘõÉéõ+W>ñ‰OP]½\.K†ÍÍÏêg_å“VÂDJ;µÒj°¬vRHY•ÊÇrÙΔ«üL2’ðÀÌ’"O3¹EâËx »TÂKÃ~Nøô–„ nèÿì½Ô€#UÊ%Û© (¥E(ý²ãeÉY#¸$6í7Ú7´ ž:y¬eÂ¾Ä 0/ç`œB{ ÞØq©i‚9޶®¥«b Î.û…ƒ6~ÿuŒ1ëóÿç§>õ©$8³Z¨ °ë’RBJøó?ßË^ö²üãZëç>÷¹¿þ†×n»$xÕ¿ùùË—/ÿÌÏüÄÃWvGGóœ¡2píúp˹f½ ¯yÍk~ñÕ¯~ÅÏþÜ?ûg_²íJ1¯E€RÀÿþ[¿ÿ²ûÑý3?÷âïùî;n=Zw~ÖènðEJáÝïzç~ß÷_yðÁ7¼á _ô”/ða"9+¥ŒQÎ¥”V°ÞôwÝu—Oñ•¯ú…¯}Î×ÍšV)RwçÜ»ßýî_üÅ_üà_ÿõ“îºë­o}«©Õ8z]i% »îþûïÿÍßüÍ׿þõôD‘Ìñýzi WΕ©4àV‌V^|.O(–£.Îl RNÍøøD½ü}`L.,LZf ‹P8`½Þlò_éûiœGð7¦ŽÝ@5Û?Ï{aÈŠÁÏôø±Ù*5Þ̆ŒÑœÊõb¹¤uÏ‹KÓiz3Œç7ã@úýe¿É#¿ºÅ°²’ixøâB¦j¥rΪ¡Áÿ„@RÒ„”ñÂ… ´]õà^¡„” Eq–u“˜eÍŽ„1ÆÝnÇþIìêH]Z©ÜφŠYyÍD«_¥`‚8•»%‚‹†1F5›siBŠÖÚv6£"«ëºÅb‘ãu`ŠšÕš:GV_çÇn¤”ÆÔJ‘U(5á YõV5Nþ ¡®«q´üü0SP°&ñî'×O¯Ÿnk3üèË^yë-žô…Oþšç|íévóôg<ó‡èG~ø‡~Pž®7§]ºråÊb¹¼zrbcÜôyôþòÕÓ÷ÿÕû>ýéO?ïyÏ8o­ýéWü䟼ííÃh/]ÞúB¿ûŽwTJ óùüíú__ô¢ýÈþÈÉÉé§ï¿öÐåKïÿû—Ëå7}Ó7^¿v÷ÝwÿÆoüÆóŸÿü·½ím—.]J Î?ú±¥TùÀl·[Çm»á/þò½ù¨Ýn7:ÿé¸×9wñâÅœó³¿î9_ö_y÷Ýw¯·;]©O~ê>X­VùÈG>÷s·X,n¿xñß¼êU×NOßô;¿sþÖ[ùà–ÐFf°½Þ}ƒ¿Kñ¼ñ‘bºXv)é}ØËéÉÁSza+gêK x¦%òd„&»<â@@q§¤”bðüÜ2ª€Kô¯ÖZï½ žLOSJ¨$)ÅmðFª,ÿuß+L¬/!$éE²Ž¦sžä‰rNJi¥´©¼nå|±Zå9І?(ŠY“ãÀÝôY… æ”—¥Té ò ¿i&pÂIuc°¶2f»ÝŽc/E-¥ªÉÁGóùœ` »ÝnöÙãihÞ:Ž#¥´„gZ hÚÃd?Í@Ý8Îf³¾ïW¤LcJ¡©tŒq臶m¯^~èèèÈ{¯„0Z…¬Œ©»®;:Zt]—Rª¥ôεuR„”„YHiŒŠÉ§(”V“,rNˆ˜Ó4ÃRJuÛ-e7ŽZk…¢^Ά®óÞ Þ!p½î‹Ù଩DBÈ"{Wƒ·1V¦xJ[6κ| i5 ÞUU„ms|´üË÷þŽÿðQÔÕoÞóO{ÆÓ¯žž|ã7=ï×^ûËÿøÇ#dP" 9_5Bên<Í€£õçÏ¿ÿƒøµ_ú¥ÿï#~Ýë^×C?†Ç~ÎãPŠYHsõêõÿõ'~*ô;Naoùã?]T¦]÷íßñÂKŸø$hqñw|ù—>3åðÅOÚòøè•¿ðóip€âÛ¾ãEÿößýŠ©õë^ÿ†?úýß#ñk¾ökï|Ô£®lš¦ýý7½éÇ~ìÇÀÚ—ýäOþøÿøý=|Ûm·~õ³¿îíoû¦‹Õ9DüÐÿûÿÓõîÁ–eg}Ø÷Xkí½Ïëv÷ôô4£‘4 2o'ƒ‘qˆÁB)CQP¢Àå$E@²S•Š_;8Ø) Ʋcl ”€ÀÅL‚y# šž~ÜÇyì½×ãûòǷϺ»O“ÖÔ­«sÏ=÷œ½×úÖ÷ø=þíõå_þÎw¾ó=ïyO8Ü<ã/ûò¯ü'ïý§à°Ýv‹D½c"*ÕÒ ¾[J´²@,šXg3g\y9ç RoÞŸE5^Íb‘sÖãá9!fÝܶæî„%çòxOÄ9—ǧHZYι¦ •Ϭ Å: ˆfà”bÌ1›³žs™ˆ:7áÚ‡‘¨(@*e¹\àNJÒ9GÞ§”Ä€ÍM“Rê– -sòM@¦>ŽÈsjä’¥(BÎ wCŠÎ9ÉÊÁ«`ÊÉqH’»~è ]Ó¶R —˜ŠÈÞûá(a9VL U˜Q¬ÏM„¾m&f«H1ò"0Ç6‹oÛ)^‘ÉM@‰€È‘ÚV¥Ú PDAÈ%ëгù8— Œ9ÒÕ~ožíÞ{Tìâ8:‡)f8I¹ÿèá7v»]·ZF+“AÑqVqMs„!€L32ç”s´Ž»íb“ZNilÛ6ÆÑäB]×~“‰ÊupJÕ?²¬ªÈ{¿ïf<˜TŠ© bNF£™Kj­aå¤ðæ˜@{Bι€²÷(tô–Â"S(¥bL© ÀŒ¢ªÁ?–r׳¨ê¥=Þ ÅzýÊý{‡˜v‡aå™oܸ¹í/ýþïö[ßw²kòEuH%Æx8”ç†a¾ïÇCߺçŸþÑËaì_ýìÍ—^z‰™A ú˜s†”B€aˆ1ý£Gžzê©qŒn¹”’þáÿñÝ—T¥ïûû÷îmnÜXü¡pœsáÆ™ÄTe ¸ E¡ha@öE³J`Li„EÄ!©ªCRD(R@P IAÌa  q¾ j.2)Øsœ{ Ì}¢ù}F©ËÒÞÛ°nV»•;ÃF>F„œ÷ã«—JÅ»Ûï2`õµ÷D(â ä ˆuF¥Ç*‰™PUTPU¤LÂð)2³älŸ‚W‘ÇÆBÌPTQT!i)EFOŒ¦'^ 4‘Êd‰ÅŒ¨ÇéX¨1ÇzS&4.œ,Êdq†¢J$×*š.ƒ ª j)B ê‰ è ?ñuîWAj|ˆãÌg«5!i}J¬ò@*B¸rZNÝi´‹¶X´ªºßï+•Ýû ËZ¡Ž×˜7É5Q¿ººjš&Æ„ÈóŠ×L–*J-ç¼ßï ¤‹ˆ!øJœÈ®Ûá§ê¬ô¨u-;S»FãZ.—š1•L@9ç¦ ûaß6혢s>ÆØ_§æDœË5™®•.{‰?ì÷Ì|cÝí÷{ïý7Î_~¥ä¼^¯­Þ6Í/AX­V̼^11( }”¤šµ[/¿æk¾öí_ô%/¾øÂz}Ö4Í_ý«÷·þÍotÝRU·/¾øâûÞ÷>ÐRb\,ßñßaѳë:³SËûýòæÙ¿ü±û‰ùc"ÏnÞrÎõûâí^zé%vFÂB>Ö76G¦›ØvË¢°X­uˆ@Ô.V@°\ŸíY‘ÛŪ]¸n¹SyÍó/üÏßþ·ßúyoË9ß¾ýÔ£Gçß÷}ßW&Ú³AIŽàL6Ÿƒ˜äœ3yï˜RNªŠÞ£*“m,¥ QŽ‘‰¤¨¡†””DTr¶:‡œÉ‡)Š)#3‹æYT²¡‰(ØDÿI:.›zœ#æ NŒÞ»c½`-0uÎ }ÏlM`Fç=;çö“a°Š”qÌ9§É’/¸œ ªóA£*˜¬‰Ã3€"‚0 ¦È“H8&`¥ ŠG6-:Šg¨¨ÙMª¢wlôôcÉ*‚à4#B%BU-* Z ø#HŠæÓ$EBPUBó‡%B çŽ\4|ŒWÈÈŠ*¨€Q¥TUcD›ø"×’À™/!hÀ™;÷n­Å–svU¸¸x4¾H±VmáÈœHsÁUC†ª\ñtœv–Z×ÉK¥¶Wx¤ _+¸ÖRk ™ÆP73g›_XujÕ¾•ÜSs*ÆZšUÞÃ>sl©dd,¥¸q¹Ú8›º}Π½®Å)%…ë®@íúIyò±I-³gçJ–ý>šILß÷Û+@8„κÑbSÜœQa¿ï‹åÙÙÍ}ìc! âÞð†ÿ”Oúøû÷÷)¥w¿û/¿÷€šf»Ý®V«~ŒÁÑ?á­V-Ñ;wî8çÒjµººº*%߸s'¥~µZ­V‹XÌ¡»t]WrL)=÷ÜsÌ@DÃPD„Ú&¥Æñµ¯}­­of"P€Ífã=0sÛº~ô£»ÝîpC-†¾ò+¿r·Û•œôGÿÙ_~Ï»½|o¹^î¶@ñw‹ÑH$Mfƒ>•{V¾ ÑzÏ1^ËKéDµ5î­}Ìü d¬E9A'V(3ùçóSÊr]®TÏ]ë¿Î;âGz&Õƒê˜qKOæl§ù¤RrT¤’G‡TL`…„…T TÍDž¤ 0£²#@Ñ\¢Lªóæ_€ªGõ4ƒË–œ10 JAÐÀNsA-@V€L Ž”‹RP( ˆ2‰ÙJ)j $&vÆ ÖÉœµ²Kñ8µˆ¤( S0³¢ ªbCzdŠ"ØÃ•­Ñ_î>úѾøú7Lv¹„àúq4°Î¼S^ Ruï[›ÛýöýÜy»ÝZ\êºÆ 8 j}ßW[í’s¬ÐþŠ`:¦d’b0Îo‰1>)^QûµU—îI1Æ9úÈê1fD¶ˆ_UôfS$.E¦H_‡£u [‡Dsñ³ëáwe½:ÿàáÃû¬7›Ðuã8.Z²SbGð®ë:DÈ9·-,‹œ¥m`³¾!þùþäŸûs_ÿÒK"¢ïüÎoÿå÷ÿê§ïªà0D"¸¼¼üÂ/üÂOûäOÿ¼·}Þþúÿà°Ã¦ Ã~oˆêívk1åÁƒ>4¯àI1¥|à)‰)…7M=3 ~äÿïã³^\]‚w¦[>ަ3)¥6Ïtþða×4iÿß_ûµõ² ì¾ð ¿ð»¿û»_õš×X(oÛ¶)¢2Í@JÎ%–\‘âa\ íê)?‡Q)©””sLiÌ9æl0:C¨@))Æ!ç¨Z¬!æœCÇä?ÿ7êRŒ9Õ@Î94®i½ýlj|`@ARb`‡Î“ód?:Ñ#™>¢Õ••¤f󥜳÷ û†| Ðy ‡Î#{A*Šðä+"ƒ’}ÍY†>ŽcJ±9)R‘DŽÉP΂ÎÛ»Ì öߘ˘K,’D³BýöIb‘¢¨ÄŠ,HìØ7c.1KVÈItLÓ+(a­ÿ%)±äXrÍ*ódzJVÉ%É¢EAL_DsÑ\H…A‚c3•BRÀãÁ3±²Lƒ„–]‡ÎOU¹”1¥>Ž}«®º!ª&sÉ ñØTúÈ ƒ”F«-0YÇÝXñ9‹ÙÙè£m[7wˆãcÃÕ¡ÍD*‚V1xo’¥”å²3c´¤”,yï „""šË“vc¥”¦éæ$ÏcÏõ¨ñì½·yKÊ1ø  Þû’•˜bÉ’Ur–à“†šWÈ'“”Ù8 T•½úž˜7›Íb±Ø_\ÅÃþù×¾öÁƒ«W^yå©^÷ʃûPÊÝ»ws¶½ ö1/.ôòòòÆ?÷s?÷Sÿâ_<|xÿ½ï}Oø„×<ûì³¥Fíš< IDATvøòøü=nšRÊfµ~øðaÛ¶ij•«‹Ë7¿ùOýù?ÿçcIðîw¿çâââÆÙ-D50š÷>w~~%†¸iÎÏÏ­«ˆ¨ã8BI ˆ 9C.ñpÈ‹6ìv;"ðìïÞ÷S?ÿ¾îkßô¹où‘ù‘q8|Îg}ö»¿íÛÞõµ_sëÆM@Écœ_PU‘½S@vT­›kw®XAgi¬Ø MB„@‰À)* )" ƒRF§ÖƒZãÓ!?7ιֵl0–¡K)© 1:‘R²ŠŒÌs’"E Äñˆ«˜l§Ÿ†#¤ó¤w–r¥"ZÇh2æŸäMå€ ‘3õ3E"ב¨"ƒª ¹fˆ)„À~R‹+ Éàà ÓŒLE™Y‘|ð–nˆ¨óŒDqŒÌNUIE ©j. €jHtˆ€`åÚÑaµÌ\ô ŸÏÂlÆZOqA­~h¥˜ó+€šý‰µê°êRLÕ=¿ï{-ÅpÈÞû’áììì(‡/³Óbº†Œ©b¿ukWÀN,KµÚ¶µñ¢í‚¦iLKjþÆÕLOѱŽcBÇëg»Ý®YtÄœcÐ,J £5ÚŸ¤³—Rì3^!9†“ÔzŠ•P‚ïû±bI|…á‘zâÚ ;Q. DÞûýa\¸söκÊÌz"¤;÷ŸRÌ©áîÝ»† yôðaß÷‡ýîŸú©ŸôIŸ¢ÿÂëSKI@´^­zF-Ú÷ܳw»/Îó¢ƒÕ²ƒ½çͦÝíàÐËgn#©ˆl·Û1ö°}å¾_,™±Œƒ¹œ‡þp@Dé{püÍßüÍŸõYŸ¥‡Ãá¯ü•ÿÉÂë^û<ª”’bŒ÷^þó§ï””Aʳw?DVÝ‚P™´€ P2jYuíjᘠk!GŽàÖ 0¿òò½E†ÝvrNvn·Ûã¸hÃì¬bUUAbè㨈¨K±>†æ’D<10©:—SVB-L¤ @L¤ VKnw{`tÈèHM|5K,i±X\wU@•PD@Í8Mõ‰ U °ÉK‘*CàR2»£X˜éŽ-¼œ…HJ))KÎ¥’¨K)9UBtNˆ¹qHÄÄFp«xªj%j%Pf*€¹i6*µ38"êôÄ@¤ªc‡äDµ(0`ÐÆyåIâÆÊ X4"¢ÁQ‘bb&Q[D$e8Ê‘31"M  DÈÌ ‚¸³)ú«¨* ´>Xó~ò›Ÿæ¼Vr€´>"¤\NZ&ÍÌÈl6_ˆØ÷DoLþœÅ›×‹ˆÑrçêþõب–¶þÇq´¦{Õ,RÕ”rÓ05MçªVY%ôõ}oïûòr2­3ßê#5![¶FDçç¼÷–ç[beà)…ZÛÛHÛê6‡2Ÿ<Ô<Û¶9lÁ7r¼E9G@&¢‡ntÆuH%WŽŠ?´Ø\‹šÇdy=ߺu3Ç1çüôÓOÿàþ gzáÅW×f•ͺùžðƒ<(/¿ü±Ã6.-€ JŽ£*xÏçç»õz ‡ñS¾¸|ôÚçžÍ9öý^µtîÙg¾ýoþõR’gw8>ðüóö#o~ó›cŒ·oßþ©ÿó'~é_ýâb±xË[ÞrqqÑuíK/½ôàÁã^ }¿Z­q»Ý.—ËW¿úÕ¿ø‹¿¸\vËåò}ï{ß·½çÝm†Ãþ=ßö-o|Ë‹¶{ÛÛÞÇâkS?þë_þåû2Ž%qn­‰ µlw»£:GÄËËKf>ï÷jÕ43‘³ó—™ó8Rë  Hep2(c ÍÀÊçß+(£(¨A@R{H@HPPÆ1ÚxÝ8¬7cß[ZmÓ yp„w£÷ŒÈ)ªfíÆ±·($b=Ji\v‹˜FBÎ%©@J ÈÚ¬Ëa ¨ç\ðÞg#9ƒVmµœÒb¹œë¸×„¥b ªÙ½)ÒTt»iþT/†I;%ÆÐ6–nX½3w”0’Ý\;Ä^¤öt*!¹kæ0w[Þ]וKVÀ„À€"ŠãP˜AI1¸(*û)!*"¢šd302L ¢Àää¬ÓvPµ"¬”rvv–Ê®äÉ»,ÆèYô°¶£[V{Í›B,¤Øõ1ÔÈv»]í9Úí˜(4ö·÷û½9…˜u³¡CM@Î &kÂbä›*- ªÎQU/‰1W¢ÅbaݸªŸkySu(©­ÊÉBT«W71æ” r`ï}âØ4Mß÷g«†)Z99‰`õ+긠NN¨ÑÌüʽ{oüä7Ž#,|ú§:H!ÇQè£/}è;þÑ÷÷ßÿ.„Ì(º^…&Ü\.iµh×ËÎÒ–Å‚=”²Y.{ñuϦÏ¿ö5]ÛܺµF„¾Ïï|ç—2Àöj8Û´|é>åÓþÄí;Ï|Ã7|Ãj¹yñÅ?ù_Üíbn½^½ÿýï×»ÞÅ€žø0@z÷îïñµ¯~®ëB|ù•÷›¿ñÛ¿ó;yºõ&„°Ü¬_yå•W?÷ÚÏüÌÏ´Âä×~í×>øÁ:çžzê©«íÅþòòU¯{þ­o}ë'¼á/WÝ8¤÷ïýÖoþÎ/þ«Ÿ/±ŒûígŸû’/ùâÆ·¥¤|य़ý¹ÿ œÿНøŠÍæÆjµxù?öÃ?üÃãöò'æg>óMo²6¿% D´ï{].×YÊÜðÙNxÃ=UOo››"¨mæzÙó-û˜¸OÆ6G ÊŠœÌºgs¥J-nš&޹B·«ØÞQ›‡!×=ï=§T‚ç”R*<ˆJÖJñëãØu]ÓàáEÀ{.%Íå=ì]5KIª9PL9C)¢x}ò¡y¬8Wk¨„)KbP81súœß:SÚÂ8ž¢Ø…bÖV5Æ´+º[˜ÅœšgxU]®W–£Ù}Œ1zϪ ¢!„·¿ýíFQ°ú$ô…ðˆ| r—ûoÿ[ßé›ÅaŸøêòpûöíË‹Gs&мI]íµl1Ø8ÚL‰´Ž}«íH¥Ršÿ9þµ¿ù#Þû¾`=grÎ!|ªJ蘙VEfìûÞLÞ­^]­6‡ÃÁä纷GÞS¨seÂÇz„•y%©¢UE‡@Œ‚R4;(Ed³ ìã_üƯ]®üúlc÷ÉnƒÝƒ¹~f…AÛtMØïF$ODûÕ#l»0ŽãzsûòjÛŠˆŒQsç(¥‘ˆÖëõùùy)%8Ï `Ö„ f@›RÇ‘†”G¨  ¥”åj½\Ÿ}øÃ~êé;}ßÎ-n¬ÓaTvþé§Ÿ6 H•UlšfGkÞ¾}ÛrR;ã iP F¢ÍæŒÛЊ–ÝvŸKÊcг³1gpþp8È!¸Š¡ýñÿñ?öâ ö‡š¦qMpΕ¬ä¸ïǦmK¹.C¬01 Mf2Ÿ!çXD½Ç”‹µ]Í *ÆTUV,_­:f8&JÈbù{…à•RB`³,·¥HõX}’(g5”©Nî÷{ÖX@4vk·[QfGH,Ù z+U0çœr)Ì¡]Ô­U)ĶO¬¡aïýj³¾Ü^5Ç3³ÙØŸØlV»Ý¡²¬­t±Ž}Õ>®Üs“…ºJm'›[ UK.+#,rU"ho8µÊÄ®ÜO9Z4Xþh›ºóNr¶—²ef%ÑpØ{ïßô¦7‡’òf³1M«¾ï‰Íš C–R‡¸ÙÜøÃÜûëóï°o¥¸C\×´*Ù„§æÎ¶Cëö,G¤nåc™Ú¥s¡Îú Seÿ1á*•]¿™CæA ÅC3Õ#g *ÙU³WA¤U“hj¹Á©ÕÇTu²—IÔøt”©Ž)ç¢ ¥°o¦óÓÎðjW[O¿zÚÌaÆqó¾Y.6)%¦5±äœ‹E¿ß­– ÏÔ[ç‘™!‡*íz½Û^ê­›gWWW‹E'"ISçZU±4®mï"5¡Ûï÷ëe'RRŒÓø#çíååf³)¥t]³Y½:jåìì,¦¼ÛíDÄvÛ¶5µÆÍfc‡‡í»m]×m6ëq{lOƽ =Ò8ŽcãÝz¹°·XtÒôöíÛv&[ô¹¸¸ø¢/ú¢2€ÙD²ºÕr¹\¶Í¢išÃ0Þ|ê–#ŸJãû6t¡õùðGï>ûLº—_ù>ýÌm> {G¬öµkÚ¢’c mœâXR^mÖÁù1ÅÆ«è=Ó1»Qç¨eÆZ‘ÌÀE“÷ Ýr¹ÜívuVc…XX=óÌ3»ÝΪúâ‹/‡qûaØE’@RÇÁÈO=õ”ˆ\\\ŒcÚlVÏ>û\·\<¸ÜÞº}NJɺZ|î¹çª2ßn·»¼¼¼ºº‘ûç+êÐtúcŒëõúæÍ›¶w,Œƒ=¥´Z,½\›$5ΣU*šÊPÝ5u·;çLiÃŽÆ”Òf³ÙlVR¢hvr‰Á·¹DÇA¡Ü¼ñ”]É"‰ÐÅ4 0””ŠCãÀìKIΑüÔÍ[€Ò¶íöê¢iºË«sÇÁ†z€ÖÅCÛ©V)ïv»Ð4úЇþø'}êÅùÁlÕcNãpXv­ &Òk7ÎÎã¹D„w;l,놩ͷX, ÈY#RUÅp5'-%‰Àœ·}=l6 hÎ9¦l «*-­¾»Çp(Õ¸< “ç–™ªZ¤<©€!"¡mTâÓwÇž%8ç,g)e´y¬¼üÚ‰¬T†AX"ÚlÖ1¦1’rÓ0"ÅÔ¯k&)E’ª´mw8 E`µÜ ‡h9[­‡ýÁ9·ê9å¦iüÑ’@$;"mœW¢ív»X, R¿^,cÉ&&ŽHD‚óæ[aIá†Áv:„௮®ŽdTBô«Õ*„°Ýn‡½I÷̯9æ2ÌlÚØÀä( ã!Eïýb¹ÜíöcŸ½÷@pØ]Ýý¸;WWW¼¼e'ÇýƒþÑ£GÌ,Œ+gS=,š X 8òùƒ—]h½çðû¿ÿ{9–Õf9z<*¤’1{7ö9f¤¢¢EBÛàGÏŽÇ réç±°C +%«Ñ JIqˆ.„¹2rà ¤ KDÁÕú)Oþ0¨[œå1 Êfµ"O(8æ øÆ“h⻦qèì§ì Œy<»±6¢.3 :8ÇÓ¬°ãR²*hç¹ëJn¿·•iSBÓGsŽbÌM㯮v«Õ€öûír¹¾¸xä}ã½sÎÛ ºiÜf³1ÔNŒÑeÉšKìÚ¥#ÈÃAÁ7'r}¿ p¶²y¢÷MJ£=î} Ä^43y@I± “W(%«Ìäs‰9 ;dòÄS‚R¨œœ'ýØjR53® “Šwódj 7RÇ!ùÀÁ·6 ìû~Ù­EDKIÌ^µØ×RQs–¦ñã˜,ŸEOQ‹ïB“éî.]Œ‰rÎëe÷àþ#b8;»yyuÎJ¢SBÁLÌ$EŽo•oÝÕÕUh—»Ã¸X-¯ö»Æù”bp\;×ÖÊ0;UÛ†‹Å¢z¬9ç>ö±ÙVµ9Ø ·š@ÎRåz\â–RìDGœ™”M °kN±~žA±L%gfk¸X?ïªVg„j´kЦ'퉹™IñOðBD§bP¨ªæý)¥vÑTùÔ¹Dɉ¹'"ðM`‚”ò¼†ÁS·\,‚s1ö»ÝU×-IIrñ¾‡C?œA£%å64ÖÔPÕqQ±”Ü4M0ÝŸq½c›Ñ2³'Œ91À䟸ì:fú3ß¹sÇbŠ©SÖ¦iJi±XœŸŸ[÷¡m›8Žš‹ "ĘBÝbi¹w·X&)ޏĔÑ{&6»É˜ÕÉá@·Û«¦¹]µ:+KUAsDF;£DrQT?•Þ¤ä1K–Ð-*9ƒb`Ž): ʲDRc¯£¢"ˆˆ¨š"ƒèÄÑ¢ŠÄÀäGVV(Cß眺®c&PĉÌ8 #C^.»”""­VËRò;OÇS¥ˆóÄäEóƉU0a˜{@¹ÜíçUÑ… Ž¼¤T7ŠPJÊص¾]„åzÓá°3¸½p JnRµB DŽÐå䈠ªRðÎ9ETÌ@%#f"@§èÁ8©˜wAÄ¡q„®hS}ð­­_.åªEÒj¹én´C?haGE3;(€*Ï ”I¹óŠàvŽW—U²D(%åQ²#n//6ëe)éÑÃûD <“cf$BÃt›>Œ©xŸ]\îBh=;É9YâRK)Åê¾z´WâÄf³©$¿£øŠˆµü-È–sòå«¿™èUÑ~)0?©"ãJäº\. «e¡¡rÙꪊ7ÛèˆlJ8/ÙìOÄ”,„[¢¢Sö.Å" >´ªE¤ hÛ¶mÇ.°ǹa²U'66Ún¯VËeJ£ª.ºnLcÎyÙ­ROx8ì p`ÀÃn¿Zm†áà½_­ãØѾß3»¦kDÔy„r45²SÂüSJ©Ï9t-ˆAÆ‘4§Å²E…Ãaß6ª*ꈳkK™/› &x‚SDKL.«Ô¤Ì®:-6Õåf]J‰9·]wØnË6ÅRçÏ>ûì~¿ßl6Öà´×ÇÑ{eÒ @ï<3§ª*EºE+"E2¸àˆh„QE°ÄLDC"@°Iû—Ì>c/—R$@at|S%[fª¢’ !!MM+ó²”Ä:è–ãÛœçHÂϦDœs:vs§vuÊ£ íjµ² eILÎQDÚ–¼÷ LLìýv¿Ÿ(¤Eq+CàüòÒ²Ñv±Š1@\˜ÉÞ7ìeÇx´P*ŠJ@L”$‚–¤Y * J×. äKÖDÊÈqVŒ9‰@?Ä4¡ñmÛ-A0öä}ƒB¥hß÷¡qD¨T|9gvn¢^†)‰9[«È{Ÿ$ûÀLÄ åœ}`Dl<‰ g—ÀŒÌP0å,ZÐ9TPE$%ÌZ¼÷—®‹PóèüÉC‘>öÁsE¢U¡ÙG:jîžm½Åb15…j+aõœñj†¡ŸºœoùÜ/ѳ‹1…ÐÔzêp8!Æ4¦c žO<@Æ"…˜ö‡}ðADbLÞû”²bŒÝb5Žûa\´‹”òj¹NGb(%§lü&•¶mBðã02;e&rœrbvÎDŽq\tA5þôOÿDJ=»ÉŽpn»Vó8ˆÚ×i¤ÆD‘¦ ¥;‡û”"1!¢w¾ñ.0;‘â<ç’cNÄ„„èQ²¤1¦¬Éy¯ZJÎêÜÔp5fg°ê RJǶm ”œg†Ï¦:@DL”l¦£Ú6>Å‘™ò8çˆ"(  cçsì4WQ4ÛjSª’LŽäpï}É™‘T„‰QNIEšP§4y<‚æ†qdçQŽ@A#æR¬ë<׆#¦dÂYoŽ66ívçœó¤‡‘€<{Ç9F$âRDÕ ß´º*Ô 5WI¶7VRK)L“╈6¡Ñ¢%e)‚ ¨ E@Mz\³J•Ç®mTŠwL*EJFPB0¡…úû]×6ãÐÛóTJN„À„Á;ïØ4ÆdN@QµHqˆÌäUERRPOä;"abôÌΓ#R(àCÑL ¢%°sžPT%³±”‹ØÝãh}uÄhëÁ³c"ddТäÈ1²Z¦Kì‚W%$Q dRL9:Ç^UÉA‘‚HýßüæÏG! Ž3!‚–lQɤDmu̪ª!Úør®ŒX Ã0X̱_)™cK1] šß*áÐjN[vuö\õžs»ýþÚDà(?T“ £q3ûêƒX¡çÕÀ®¢iN¶mYúã©a*ªšbJ%ª€ ª³èš¦iBÓ8â,¥#ªJoÅRTõ¾I‘†]…›N‹¢utZ5Kž¼CRJˆê<Èh˜ÇÞwªªPLª"¿*â¬òÊqS·V {ï«ÊsÎy²,ªãCƒPwD9£Ò\{2a ~n?ev&T}"¬^Å@ªgÄü.L^a!Tª€ÍŪØyÕ/¯òá•ÑZɹ}Üԙs!±$Ý•±ÖQ«’ÇQ%-‹è4I8Sªï'Ú¯Î%VSغ©,Ö¹£I¥ÌßÞ\Úø(Ô÷˜Òqõ7©ÛÜ¢ðÍ#`íñÍ¥uçN¶Jí¾†ÑÌd—窧ÌEÿ ë©òj'æ‡ÃÁØ3UÄýÄ^h.¯l3ñùe?¡¸žà˪Ö`Uˆ«¶ó3~nX›óµñêùÉ2xÒò —CwzŒÏ k ­zG)•*ß\ƒ¬#æÆœsÏAÛÞÖߨ–¨s+ùZ)×|ªv6æþ»ó£e¾þëxjî½X3ýšgÍ¡6u“×Ó±ž^'F­FŸ†˜91d›¾Yzåk¯7en¦=ß#5(×Ü卿€5"Mâ̪c*ã8 S×4*¦4ö}߆¦–¢vñíãÔÞþP½†UØo¦Î|7دæøï“jt® ?º¬m”ºcö®ò–+Á«Æå¹wÞ‰k†­";{ª<žƒÌñŒ'É”¹-Ì h¿øG[œÖ#¡FÀcªUNlÖæñk +fž†ŸÈOÈí×Ò¦RÑ~Žˆà\×u*~ŒÅ¸\MÓ€NBûµ¾±?d)RÕó3>À±å}­EcéUu¡¯9¦­Ýn炟Œ¡‹ÌGO$f¶‘"«(1yfŠ)ÃØ"¥ˆ­†jÕ¥Z˜…àr¶Á¨¢sN4ÄS/dJJ@ª60­]áTJ!fE˜9ß`‘”sV!@0ý¿‚h0¤† ¼kl®U½Ý! çSú j¢ý €„¤H§?)h.2±#¬ßlý©š-Û±_wµ÷$¡i$¡ ª¨¨ä$ ŽJ)Œ %Û÷ˆ‡:nœGd™dÔÑPc¨„”ÑުŅÚ_x¼gTÓ¢©Ç @ rœ{TïH»Dµie—«¢`æI™Ý&S)°!´¹Zä*¥|f®ŠQ À9TeÎô²^ø‰mWMIæµyMCì„3*R­n, ŸDy¨„µ*‡2¸Ì£Þ‰â<✤?óŒ²â¢·Û­u÷fXÅëËÀ=Or!OJøyµ^{¯µvž›K×h~bmûdÁX›qu83‡óÓ¢ŽÈNĪ,™²^9H}¾÷¾i´išq0Eviß4MŽiî;S•­ªÓB…7YHªmG#9Õ,û±Zaö©§íy«ìèpG@ǵG“u(œóYoá°ê7˜¡÷=n'€5žæ}µ:¯%DÔcÆN„Æ¿~9¶ÜÒ&"§˜ª˜¤}ûóëRÏdë.ש /ôhLby])Mp1—ÒµmÊÙ'×õ¶^ƒ-çÖ,F¿¸d 9v¤ªÄèÁ‡Æ§˜gIÂŽRJ>8Íê½%’ED([» m§Ø‘uâjÂs!º€&ÐÐãŠ:¶^넨Î\BËåÒ6j©eWŽ› a¯­åZÕt}®G<ÏUmñÕÑpÝÆnJh­ïæ_íÁ×@f*ÕÖò¯ɺ”+ã·*I.Ç€xöµ^zŬu{¼\“õa2Ô~ysYŽlK®~5û3¬œ}ÞêÛTy¿ó2âÄynïX/HÓ´¦Ig Dû‹FQ®Eb}GŠßµPxMýjBj¸ªÆU·í¼uxÒÕºÞª\ÉÅ\/ áôqLd]Å{o"Þ:Ž£IÚ¥«`½°Õz¾FÕÚÕ²2ß.ûµnê±B2§{fæ·¼õ bƒX)’sI ‚H¦”+Ĉ¢%猄Õ?Ý\›¦RåhFÄÌÖ$>:Dب Co9 "]«y™C´4‘ˆYD&¹[Ðaè ì=±“’ Å9ý¿î§ûaš&gÀ]§ô5ïÁÙzj›0 ƒCJ9v1%Ì%Ç~h»6°K95γc(â¼vܽa8š¦9ìw–•" ˆˆó ›¶)RÐ&æ”ÇÅb9ÄÞ9¤D¬PŠHÑÜ4íaØ;ç›.¤1®V6¹7iÊ9·o›ÆahÛf†é2#☓ó^@‰Ù‡„m×ɬWmc&»u~R1[I&êdËÔZ$õêU5«|経%V†¢¬ÌóùV©½¡Ú­Ÿ»“ž¸·žÔ°'í™ w]M1*_ÕuH_×÷Iº4ÿàsðš?¦”š&T«9u¿6ËjvV}Ãæª vN†1ÇA˜šÚ2«½ÚJ·+9/Üê`§»ÅÓzÐÚé[/{Õ{!äœ,š×þôŒÑ’k X«i+Öj[Ó@*õSÔK=Í[@ÐÑ«‚”L„Î3íwïšÏÿü?““ƘÇ1N’§¢sñ‰zbÕbîÊ\{‹&´gK«ªQͧ„uÍ=ûpž»ÖåõdÖ:÷®Wd>©w¼éŸI̺F§¼¯¤œ¼÷¹dç|Š14D|ãØS H „@8×®v¾ö'êA7ï¤æœc?l–+» ]×í÷{òÅ({1«Þ:»Q¹2¢¢s–?¶m{ïÞ½[7o'1„€D&foÝœ”RÓzë;pÃx0Ñá0ñ ÜÂõ}oˆÐ¸qW«…Ú7› Q€Ü8ŽDÉ~ÅÞçn·»uëÖ¡ïç´zrŒãhX0£¹6¥Âj%8ר ;µT¿ ¹f÷pÍàê¢7ç%ý›ÏøOÒ‡ãÐù”`ž?Î÷s]*õÿVÓv»ÅfŸ3¯.…žÌG±u¯Ú®ù…E.fÎ9… l}dn`5«+|Þ\;ÉDæö—ó´±n¶-y{¹j[}¦ªîv{ƒÍÙ»†&±Ka9ÁÑæZökŽêxQ7²›ñ®k"f/Uç8ˆhŒÙ·MÎYTtRKîC„÷~b½ÑçHŽªÊ0Ǧœ¤uu=÷‘©)v½hSÀªèÊZ žtûæÝw+ñTÕŒÆy2,H9úcܱÕÉ̦·¢Î)‚ˆ)õª:©ú£äœôøi¥ˆIMù|hœí Sݲ©XWÂ~×ÿºß*;g&·f.K`\âÅbñèÑù7‡aèºÅÕÕUÛ¶‡Ãa·Û3;¹uëÖ+øÆÇ’ÑqNÉa‡qtαsñÈ2KbêVK(bà{Ç<Žcsm³èºîÞ½{O?ýtÉÊg››9g¾ÿþf¹j}Ø^\*aÛ¶†ekšîÑ£‹gžyÆtAoݺõàÁƒÐ46\Žq ûý¡m[ç|J©ˆ8çSÊfzžR²{xÒ-²G¬¹nƒj·[Vë×t£önj¦PÃÊ|IÕXCäIz?K'3¯¹£ý¬#öØ~›K§Í‡nö†íõëMŸw£öû}m¦<Þâ¡Z_×Xcò¯kè82Ç—UïÏèì|Í7­˜=Små-W²¯¶€ç™=hlÇ(Ã5A«Â¿sÆ“eiý¦ºçÍ›w' °)9Ò ív”Rú~Xt¦‡>¤$m»pއ*È$ ?9Y¨Yf*’ ®æºUZeÑŽH€0ǯ̗–ˆLÀÑyøŸ§T'×ZÕ¼kÕ*èù \ãÞÉM:B]¥i=ql\=ÿÝM+ÖyZöw¡PÈÙ˜ý e>«®­ÊšqTó‹*8SÉȼïûÅjem‚‡ççªJ¦™)ró©§¶Û­cvÎ]n·!„(eì‡xôè|±è¬¤õ>¨æ®[ìú} 6M{8ì»Ð:Ç——W]×n6g»ÝVááÃG·oßGÓüˆ‚¿}ûÎ+¯¼|ss“ƒ_,V.®‘9çüªçž{ðÊEuÎ[:†’-'ª.#>´x}yyiÈ’FÎ}‰ìÚZ³Àò ‘†´Þö|eÏcÜü‚ÏgÿuΙ¡'fnYbмg\×Éü\¬/Þ¶ÍÑ…Dë¨ú¤íR‹¦RŠ÷á–i¯i s5ôãÛ9¢z~¡æŸq^ºž@pëº=A{̃È<÷œ+öUäZ-|Æ1Îûë¼]Óê ?»5èT}Î9Be¾¯çóÖ“zyÞŸµK4™EN3BÒé".—K#¹;çŠ í$—R¼ uª6?®ªc½5“˜,ß#ÝZ?îÙ> a\)¦xo±3? ;<Õ Û•:…ÌNÇ—”{zF7Ó±×Z/”’l9±±‡P•¬~¡RJ¥›Äx¾UqŽš3Ÿ Í«*À¯Âœ 1—rè¯./ŸÔ>Uõr»í÷{{wŸ{.¥$)w]÷Êýûe Ðþü <µíêÁ½{w_õçœsa»Ý^\lÆ $n±Îý¦õ«åæb»>ò1·ló~PÚm¯:ÔtNeÌ ùsÓáêŽ@çÝùÖ-yŒïß``p¡Ëixêö3cJyŒÎ¹|ø#3óùË÷—7o–¬‹nUJÑTš¦‘ÚR’½çvÊ'>9l€‰ô~l<Ù]6Dò Y ð9ìvn‹R‹/|âß|‚~wæEý p^Jؾ« ×÷3o>œTm–ÎÔH=Ê]ðr-·ëìÒv~Õj†›­ÃyL9ùø–ÕÖ'Ûrc2æ0±êd^ö]³¿Z[ÕAá“Ä9 d^äÚ«=‰l`àùEÖ£S 3Ÿ?º”ñòÞ½{ A•†apŽÚ¶%|L´Öû'³ ù„· ê&£dO®¤«íÒ9Áê¤Åp¢&jðëÿÿ=v{æ°:9Ž·æî[uu–R€A³h)æŸ^TDshÛÕ*ÐyÒ^3²Ú\?™ÂÔöÇýпþ…×ÿƒø=/<ÿº{Õ³gëÍÅÕåpè_úÐïÿ½ÿí»~â'¢ Íj³¢Ròßþ{ÿ ¾à ìe/Ï/~à~à»þÎÿzãÖ­^öŽÛÏþœ?ùßù.øI‘ªi¾õ[þÇŸù™÷IŽÃŸý/þËoýÖoiÛ¢¹RÒ7|Ã7Þ½{ç[¾å[íí,—Ýn·óIiÌã;¾øK¿ëïÿ½?öâǧ’Ó} §õ«¿ú«ßÿ~àWùWº®3[„ßð†ïýÞïíšÖ¬@Þÿþ÷Ó7}SJi½^[íPcs®”<ןÖÃmòþ³iìã0å`Ô<(Ô$¢Þây;©VIO¢ÀNl“lÏÛ´¨>¿n¶Ãd1ÿب´‚³æàƒc÷´›qÒ2«¡ª²=æfSsNèü™u/ÍóÍ“žI}μ<¯¶ê”À”oë¼rÎÕqâ<ÙÕ¨ôšº‡ç49^²‰sþìIšÖ˜+8_Ë‹3™áæÑ|ºJ7oÞõ·oß¾ºÆhuœ‡®mNЧöþ«×¼¬žÃDêHq~šž˜Hšp¨¥KzTD²OòXeWy¡XfÔ\J!òD”-õ£ÀϤ 7LÊŸ9‰M Í(ôqf2”’‹>ŠÁ—R8LE»Ê5RDKÉÑ$uÆq캅}¼Ú¶àkUOM¼mMd•ÝaÿYŸóæòß{ãÖYŽ¥¨yþ…×ß|êv?gë 2å$ðüë^ÿίz绾îè‡~èf³é/î}õ»ßý)Ÿò)÷ïßæãîÆaüНøŠïû¾ïûõ_ÿõõzÝu;Þ Ú´ž£¢Ž¥ÇØ4MEÉÚZ4’ã ¤¶.¬J­"úsÐv=ØO¸/ó!ÌÉV?dôbë{RÏΡäsÐãñ§îä­k+æWãÏÚZª¤Ü¹ðd X5Ì!ZOžÊ'í”hؼÍRS¡9C – öx6ÖÌ®¦Zõ¤”k…XcYÝ'UØœ3§6 > (ÖOS^ÑdÞ:Žã¢k½÷1^¥$‹ÅŠl2¿>'ùÑ<ʳH©ÇC]Šó–Âé¢RÕ,%¥sšnóÊn^sUÜ]=«kºTh €ì‡Æ™©™IYfn}“ëwƒÎ;JžXµ8œ㔲’7ÖxpÜ8ïœ .¸&„ÐÔ(^o›]”®ë*Ÿñº™Uþ̽}½9{ùc~çwÿýW}ÕWýÉÏþ¬Oû´Oû¥_ú¥4Ƈ/ÿ›ÿú«^ó "²Ýmßø‰Ÿ|÷ÙW?x´mëÕúÆn?¼ú5¯úì?õ9ö½MLùÐGAÚõÃóÝ›>ã3—Ëõ~¿Gäw¼ã}?ö}oÞMÄþââââr› ¤,1¥ïùžï}ÇÛ¿äO|Ú›>çsÞü¹Ÿû¶««+Uu¾Ùïú—ïÝëç}þ—}ù—?8?ÿèË/o·ã»¾ñ»Õòj·moÞzÛòùWÛ!¦}? 1!»?ûÅï@vûýÞ,RRû~_IMÓX?¢¦E°²æèÅÝL(GÇ̘0«”"cNDŒŽí‘œKV!bÓÀµ•ËY!Qs¿¢2K® (N8<û¾”"ÿ]on[RÕ ®µ"bï}ö9wx™/ç ü’)IÀRH›‚R[Jl[Leø¤ÁªR±K Ëí–¯ª°lí.lÅ¡Êi§êñq(‡,e’¢D±dJH2ɉÌ÷ÞÎÙCD¬µúµOÜýΣn¾ï~7ïp†½#V¬á7˜N¤#È:ušš¦±À:¯7w\gæ'ð[ThK-.P¶[ìú˜&Ri Ùņ¡ôw&QË Aˆöõ}?æÄÌYeߦù¦•<éÿ˜µ€Z„‰1攈¨®ªÂ|^9Ù²älz³Èæ«`Äì­Í•v Þm'fí\·R]Y¾¨qL4_—ø>G®X,¶+SåëRÝÏÿwÎmœ÷(Špn9‹”È|Ð_Ž("ïA@É;_tÄ*1'EeeÃg)HUUœ²dŽÃ¨,*âã‡~“sÇ^$c*OÍJ†STÎ9Žž@,ˆ‚tU5$Yz7lªWïpŒkrÂ’*_;¬8eŽcŽcФÄÎ[î… Yê U=99) Çù°Àßtóm'›No¾õI÷Ýwßã<òèÃ}ðýï»öª'‰÷Ïuë"¿þ ÿp íþ'?óÀ‡?òQF:Ý ßþß•”1âëÐ3Ü÷ÀÃÿö·Þ aqÛ“oÊS¿DS~ö]Ï98\†ª~ðó‘ócLè1eîÆ1‰Øn¾ï3Ÿù÷òïîûäßþõ_~äÓÿÛ4ŽS§y¹\÷ýçxðô'ŸüÔ§ªºct¶“‡ø’¯ýºÛŸzG¬û=zaïªk×cú†ozyÝ´YÊ©Àu@Å9—D`H)«‚sCJJd¯aHIÑ×5Dæ1çÄ<ÄœEb_U¬Ø´m?¦~HÐEò}ŒÙgÄ!¥$ÎsuÛ*‘ ö1&‘Ð4öDè‚eQdE[aHÞ¾fE@䑼%á‚~šK5Ì Ò;QÒ8;(Û?æ*lpÙµ8ÔucE†ÁʬUWúÍÎÆ† ¤й1ç!FÈ"Yµj Á$"}U)«&‘1ç¡ï  !jfðH„ÈðŠ¼¯}@ŽièûÍfM„Þ;“ß°wVUÁ)EïpÒûéÌ(ñ« ø/]JÂ|ä<æDÁ»*Dž&ÈÎyû—RN)/­}3p°ë:`iëUó‹ XF+b¬ 81ü î¯îì0Ø!œî'"ŽqH9†ÊjLãñɬö–.8œ¯ü˜FÓ#qÁ±2M‰ÂÄA°y§97å’K’<ÿpÛbq6Ú@eÉ&=.’ lQL+·çZ³žˆí¯¿á¦ÿòk¿vðïüÍ,Z558üöoÿv~L1EF$$ꇡªª¶®IÕOdŤ9]ׄ`Ѥ !¡Š¢àÄa²Ïsù5DÔ¨ÜKî%wÊHT‰ Ì9 'PeᤒísN£}ÊŽ "tª¤JªöŒÀ,)qŒ~"?*©:hßÙÛÛ+êW–7ÅÍahgÃØ~X.—¶Ê³µ4psÌT®—–¬âжX,šÅ‡™‡apžÈ#’…iD`ŽÃ@ª¨ê‚s•söýœ8J*#ç Ê4 'F°B¨ŽÔx§ŽvZl%VΧ~óÞ\©þÊ[žÂhæ<Æøô§?ýÁ}ÙË^ö/þÅ¿àMwÍ5×Õ5 _X7¡úͧ>ù‰«¿ìËo¸éæ/Áó¿ìËî|â‰î/þâ/?û¹ûë:¨®ÖkÇñYÏzVÓÀb±tÎ}ì?}òôâ*.Ô?úع«Î/V+j–-”H›R]-Úvuzròº7¼Þ9¸páÂþþþ¿þ…1Þ{ï½/|á yø w>ç¹wÜùìOâ'ëÍ¢®»nSöm ŽaN@+ídDEÁì>"*zU2uUO àPU½#Óþe‡^ «"ò,I3x‚ÊÕæòÂÌÞÏÁâ†SQ…É]º9Þ{@É1±Áåì,´ž®YÍ!šsQÃ’Ù*/Þ½–cÎq^…'[ ŠA‘-Ù1("9q™AÕ$Òl•"9g3 ›(sFP&>PÌIUÉQEDre ¥óùÆ|"QÈ—Y…ÎàsP~Áp•ae¬y_¼ìA›¥”ìÉjšÌ;™ÁÒIgëÅ 4çÙºfafêÉ/ƲÌÊ”³âmBˆqœÓK zV·`ŽyÛND¼p:c —rÇ¿gÐaPTÍs༽,#îÛ•mš†9Ù½+¯f–dEfôÞÛhr6>0o¨†œ@…3ÍÜb;h\>0í 2F÷em[x‹­Èqᡇ|ú3îH1b»899±?Ülúg<ãÎ…®ëþúcs÷ ÿ‹ƒs‡Ý8œ¿êÜÐm~á¿t¸¿ºãŽ;Tµ].ÛÿÚ—~Ý{~ë·P¡ß¤ýÕ² rüó÷½÷+_ü‚1¯~ôÇ~ìÂ¥q¹×~ðCjš¦ëbQ)Ûl6›¶m=S³‰ IDAT»XÔ?÷s?÷«ïø  ÏyþÝUU]¼tì«æ‰'.¾îõßyûí·¿õ­o½ùæ[¿ë»þáÓŸþÌ׿þu÷|ã7þÁÇœsëõúõ¯ýr¹<<<ôÞGDïý«^õª7ÿðCåçMÞyæ,œr4pŽ NDc±!8ÇlBƒuß 2k ª¢è½ç\ìo ½ÛJçl AUÀ9E ÎÅ”m¸È+º”Œ)ÀmÛ²\× @ çÛ–Z`]%ÈÆïºÞö’‘Tú¾7ÉÖ­¬¼aBž¶-W8wæ ²#XX‚¦ˆä¬9§²CD΀;¨³Å™ 8PA%P&$r¤Ê*’…AQT +çChFζ\͘CÄ* _ SÍï¦dÁa?n+B$“®UÕ¢d<¹,õ|·£µÍ¿¸»£T{ÇU•ÑÍdmœÃÒ(dÛVÍÍ¡¡e2ÇyÍÄ H趦HèAðU6R‡½¨‚º÷WR+vx¤;‡XÉâK)NýúC|¿ênºÓÕj5Œ]áÞ?þîë* Œœ²HÞ[âg¿´\\¿hkXTU„&¸Ñ¶­ õáááç>÷¹û?óÙ4ƱëºÊùç?ÿùuí²‰}lÚößóÚààèDC@É©_oî¹çžÿãÇ\85Msrt|Õá¾s„ UÕ™ ´³ÅlƒKUTeUa}U뤿8AŠ|Uñ8 ‹¨sd Q$Q ô€ €ä¼¢²óuL½Iû‹’0Ç$!TuãÄÒg˜è£%pt›5ȬX ŽÑxÎÃ0˜ã¦•ùe¥•Q½=Îz½.nïVª”4j‡¯3ïÙ—T¥4°JOg®k–RÞ‘ z$D”ÌÙVšs¦—„ŽЬ$"gNLÉÞ¤¥<9a³ BDrsú+bë‘™-Q¦pfËÉm`…º®ËÖ¨ªªï‡¤æbðÜ-â”GÇQT¼÷Ρ3s‡æípÚ.’U…™!„šœEØœs¶š½ðC .SÊI»°“Fûåóß9€kD2©•ÌCl‰‚E¶b:Áf”±ªó”@,ƒ)O<›¹&çBÁFÄšód:Æ-T…‚l°•a«±Îœ9³©ÈO·zJbóœ2ºƒõ(B}v™L[Ã2U¬Ã|îºëöb7›Í¿ü—oyË?ÿçO½ý)wß}÷O\À““"zîsŸ{ttt°Zþù?ð¶·½mÇSÊù~à¾ôËŸÿ… ¿ò+¿úŽg<ëÒÑDávµl¼ÿ|ÿÇþú¯Ÿ|ûí㘼§ÏÞ÷©O|ü?Ýù¬»ÆìÑk¯;¸¿ª‚ë7RçΟ;÷¤Ûn •Cp.T?qáøøØ»ªëº¶])gOÔ­O ¢qté·¼êU¨r鉋û«ƒÿá¿û§«ÕªZ4'—Ž^üâß}÷Ý}·¾å–›¿æ%_ý;¿ýn‡Ë¶i¶Ç #’¨:¤ª^äÌ!xfQuvà! &I‘#)±°¨¨¨Zs¬Lz¦š€„è1+9QBÊ Èa¨t¢Ô€ 9W7†&@ÙWõ¢¨©hδíÅä4¦ÞȧdÀ‹’ÜÉlY¶m[´Š ƒÈçß/­úrn…©ÈÿOóuaN[@–w5™UŠ ƒ&QD‡jVÔ>ÍÂT9ÆÚW•¢¨9á¤Ï(À¬D¤@ ¢‘!q¾R°Ø^^!ÜÍ3£qŒ;X ûþ¢nÔM¡STl嘫¦.€¤é¾9M½œSÐÁ¢ß‡&’e¯-_:!:eQU(V6^+Ⱦy¨)bGÓ’˜ Jò™žJÉBŠ¥¼ˆøŒÕSln72‡Âo¯ÎY&iE¯áeMï‚™Cpã8_Y@µö§Eâù‚;ãpå<"*9qÂG‡`¿ S­j |.Ë® ªw  s½ t8ñþjïm?ýÓw¿à_úeÏK)½ô¥/}å7ÿ×)B""’?ò#?òò—¿üüùóëMx¸xãwÿäŸüîïVûûqLó>ð¿ø+›¦©kÿM÷¼ìCøàáA“Ç8*ýG>üág>ó*|x¸ÿ¯æg´ïë@«…»æêÃåb³>^ÖõjI<Ü]¼ðÄ›þÉ÷¿ùþAfðb†W¼êÕÀì¼^{չǿÐx—s®ƒ?\-Çq|æÓïhÛ6ÝÍ×_ÿ+¿ò+¿öŽ·¤Þ?øÀg¿ñë¿îqÉšâ·ý7¯þ­ßø ?B8>¼÷‘såªÈÑ£©]$‰’’’ 8˜þ4cÄц+E—l³Y9æŒhlduŽB¨qRÕÔ…ü•R’ÙèÆ$L­gh&ÓH¹’¨Xšó¼j!¦Ù¨d.§U84ó]W¸xó.Á™‚ëvoÛy¶Ùllƒ5Mc¶dsyònÇŠ© UÎ,™ÉÒ4PPBGi²c`fOÎ…3œåC×OÐ0˜”aQ”§â¼ø(ƒ¶y¶UÔèv€i…šf¿o'·‰vØoÎ)}±Bˆ1ÄÖ±¹Æ.¥4R…¦®|ðì]t€÷^QD¤ ^Uû¾¯ªÊ”DÔuA®l…ÌÈ]“2N)Õh1 [˦¹Zוu¼L-€³+í̬[œHf6ÃWò·mߊ۶h­tÅЕ%çqJòwfëºmþñ¬ðFQ®ªºï7•×”ÌS³Š£ÖuíW•aDxµ\ö}_Â"™•áEKw`춘ˆ<êÅ'¿çž—}ó+^þ²—½ìƯ_µËõz=öñÞ{ïýƒ?øÃÿø‘¿øWo}ëûÞ÷^ªO~êþç¨÷V{«%/áÒÑÉo¾ë_õU_µ\. ñüùóιü3˜óã_x´®€üñýþßù²ç…}ÿ÷Þœ„ÓGÿ¿¿ñÞ?ú€ðC>ð·óI":=>ºôø£ˆºhêÍf³h—GO<ö©ÿÍSžò%ëÓ£øíéOpM»89:Eû«ƒ~ì÷ÏÅ<‚ ¢knªÅÅ£ ýUW~î¾Ï|î³÷}þÁ‡eÙîJsÊãj¹éè¡Í *×wcä¨ Þû¦i†a˜»çnmÙ']«°–ËeŒÃ\Õ`.g¦XMn¸©è8³J!ÿ–ða¹[JiµZPÂPV•°©ƒ±,{yÖÄhš&Ƭ(ö\ÅØT€ ÷hn×V´l¾Qº‡å­•V¦Š"ÝŽoüþ·wâ½±”Su‘òšv{I瀕ÏF­ónú–‰[yå¸EÙ»"bSjã‚$Øa-aHiD0€zBãÆÒ:§v±8<×ü_oÛÅKVÎ…É¢0WÔÈ®$rWU““\8º$ 9Gˆ#øÌ ä›&„ ¨Ääñ†›núêJ‘¿p  ëÀ9ð†êJÒèåq¼æúë/ž³ €C»×,ªÓ Gà|TQ${_¥4B–ªm„sGWU# ‘óž³óÞÕW÷ë^dXª½jû®½ù¦a34˦öõƒ÷ß JU]UaX¯«ÅâÃþГžü”u7†º±më£ÀÓ–Ë¥ <,—Ë¢ָ཯ªàä|æ´U@Ûånå$0°÷ŽYœ£­R’ÏYš†ú~Bô”Æ0"úÅlq§É¸Èœˆ¢EŒÐf;0›Í5-GH)žž€yÖíí홲‰7›Í… Œõyxx¸Z­þê¯þÒJÑ#朗Ë%­ûNUÍ’úrj¡CbeqÁ›WsŽ)qVEÑ,ÓNIcÏÌÊÂ*œrâ ¢Šp|éÈ~“U$ó˜bc̉ˆöööV«ÕG?úѧ<å)?üpJi³ÙX¶réÒ%f>þü0 .\ðUåüVú Îzí¶ûrÎÊRøÛSÄï»rœ—¾’•ÀŸÿüçW«ÕYš’³s¤ÀˆlLHýo¼á¶×}ç÷]xâTÁ‰€ ä½ç1ÙS[þkÕ÷»œœKÈÎu8È»9á±dŽÞt¦lÖgHæDÌyÒUEwÐpHˆ:Ù”m•a ¶uº­(Hjæˆi&” ê¶AÝ¡Me3$¤iþ ,É‘cIÛþ(ÌdU˜ÙUµ-…iUîÁ•ÄlU=9:®ÍUWfá95¡©ê££#98¸jL‘¼cÕ£fo·ÍœÝ®>wÐuÝÁµ·ö}ïšæº“£KËŹʻn½Æþºóç/_wÓ-GG—Tao¯q¡^Ô¨xº>Ù[í§»MÕ¹}ae"ªëprrB{ËårÏÃýƒCÉ|²>½öš«É»ãKGèhÕ.7ýÕíïï swzºjWpz|tÍõ׫s œãÞ5ç/]ºÔ®e[ÿ¯VSâÙ4ÍŽ2”í„)3urnLÝPJ H1 ðZ­P'%î'¾tŠ®×ëÕjå­×ýbAªšN‡É>€!¥Il/猎þs#ª¹éÄ¡Ó,c_‘–¬Ä³0wî¯sn¿èó–r‰ˆàððð†n(u3¿ô¥/µ¤€™ëºqÎ1(3çt†xÌb‰F°¤O‘•ËÖÝÈÌŽhGGä¼U$òÎeIž¨€ yçÁ! hùþ–¢9&ž¶Ü§išœsÓÔ9s©ëÚ©BŒŒˆMCݘTµò¡\Ïœ³Ð"€¹+«‡R!Ù½xÅ+^ñ¾÷½OU7›Íb±X.—''ÇucGœ±QñÌmpB„‚õ—™­1Í’½÷ âÃÖý pÛ1Ý~ÕPùm ÕÔH.§= •7ÅVLʆ”ÉÀhæ!"z6+ÞA¯Í Nfp-+¶y;#Ç+‘#_” ©*ÎSæbçÉlžÈ1*"åœ9ÇqœÜÊ–Í¢ø;ÍMvôÊšÞÛÛëºr"SY8==‘ƺ®ƒsãØ/‹!ŽD‚sa±>>©ÛÖêG²l«¾;ñÞ;Tд\Ô}¿Ñª®ª°×î[›c³YŸ;wîôä¤ïºœ3E4ÌW?tÞûýƒ½q‘”Æq ÁUU³¿¿¿^¯í¼xá ›éd‡ÍP×59Ì9‚J»\ikoo†U½Ê•f€ WyîÜ5'''àè-oyË 7ß’•†˜öö×ݦòÁ?öƒ¯fa´át³&ÀÕáþòà0Ômu[Ð}ßo6›¶m¯¹æû¦½ÈÕjå½ðÁ‡®¾júþz½¾xñâááá¹sçŒg²ßã8Üxã†cÞÙ¨–}Ô¡RT@GÁy¼²Höµ.žæÖz·+PRû9-îèèÈ•mxƒ8%ЙýÈ*Ä‚³š¨ëºBV©ëÚDEˆÕ{O¤9çºi‡aÄeÛˆLBTm "¨cã=Á8šÄ¤ìcÎè@I9gA„ŒÀÌ Î”Tͬ4›Ö¢é7½€²Ëº®ß:'èº8±ÿ@O»8Ñž…%si“÷›®H`W>œ‰Rm;çóq¤ÇÇÇ]×;wn.Ð|¦¥5ù‡Še [|†#"Ñâ,Ïn›|”6Yé©ï˜—ÞYâ•É Íìêw*$¯œT 4kV@UEpE`«Ü šAæð?šÙÀT±TÑ\^ÑM¾Ë8=Ôöt—•˜sF²†À޽dŽ&*ƒ[%¹ÊŽôà<Ÿƒ™“*7õ‚A-q žV«ýõñÉr±Úœ®Exì7USŸnÖUU±¨s^sNãxppЃ]šsLIDÚvÁ̾j.^¸TÕÁDVOONš¦éûÞÄ—÷ö÷/^¼è½Æ·£‰Åbˆ™µF–#Dc¬ëºY,¬Qˆ‹e£‚ä@h«‚d@¤¢ª !Ô¶PŽOEtµwpwÓuM³ìú¾ Uë† @%çP×11KÎàCãØ[Ƭڎöcß×m;Ž#ˆˆ¸`¨¶x“c6xƒNX4É™B0/r"R£þÚÂu¶© XÒn'ûšÈ{É«ºŽÃ0=>"™v³-t¨›MÕ¶qÑöÿÄRʈœi!€ªªaGmš†A‹…wÕ0 @¶ÍpµZÒ¸‡c]×{{{þl^f ¸Ís‹K63/–KtdÀ›²‚àôôôøøØFþÆñÎ?ñèc7Þxã7Þøè£¶m{ttT×µõ°,†ªêjµ²º¯®K"ç †b°[ m‡û!°Z¬/_Øgë1•jzè!Ó®hÛVDÖëõþþÞ¦;¼æ Õj£¹–FJI”а…2ÏÚÓD@¬‡¼=JÀ*à”!€A˜€ˆÆÏØQÂ<¡pÔ#ÚÐg*ËÕÖÖTÓÁ™Á†wgèóMÛ‚ŠÚŠ…ƒa|¦8…»JÞŽ.×6SfÆ,fî`î‡gæt¢Âàœ3ŒZQ›3ØWÁv±” »BìÊ* 9§n246g޽Õ2Æè+ïQ5ÇT·-€ÚBä4:¤Eí4'@H)Va’ßBã`šÎÑÑÑ™ÿJ]Ÿœœ˜¸íÔmQÉ9+ bÛ¶Ö·.%ÌÔå¨ªÃØÛŠt~" ~2„Ðu]Û¶ÖfžòU3iÛe³h±®*…Ú{ ëî´M?vÁ­Bí%+k–¬M[KÖ”Æë®>cÌ1Y¦£œrûû.ø4FVñ䬨a±…Pc¯ŠÎa΂ÑlØûJ•Ç1©²s!7¡ª&FV±üX%Ñr½Ä9ǤÁyrAÑ+ÒVô‘m¿ñjUúÁe@nk/ÆÁVWÛ¶F¬±¶Ôééi™ÏÖnŒÑZS¶m["×4Ífè“õ£˜U&Ûà”ÒÉÉÉ8Ž¡®5¥ttt1g±¹NŽC½XHU5ª< qz¿6ªÚ¶S ÅÕÈÕ9gav[¢kΙSrÎìc³}´X,¬Ý^f…¢”sÎü9õd¶Â„9ç“÷ÞÀb%y)¨ñò¿eýß¶mÍ(ÐFÌLðÌçÔ9rBëM ´m^3s›œy~´#ñhûqîª=€~Q;8O­†€”FSOÑK ([¬y=x™ä6ÄÈ6£É“´ašPÝrb›1zÄí$8`ÎY+æd$L&‚Œ°PdàEr¥¾-—Ksa`fô.`ï™y/Åè]dž1-êJ–íf³ Þ"çXù@ ýеu«ˆêü¢©6Ý`ñ®mÛ®ëòÀιÕÞ¾ªúPm6›(R5MµXXÑQ7ÍÇÐ41§¦i/í-W§ÝÆ{/‚!„ãããýý½Ónc…d³lQRRĘ‘S»æ ¢0Œ1„H,cj–í0  Yªâ0:Â@NT”“wTyFm›*rR溩”ÄÙdܹ£õyï”PTXÕ9‚ài““sÄ6 ^EƒsNº¤ŠAXÁ׋1G"H¢ND™*Duõ¢­ÃÉÉ ØøÕ# :ˆ’Ñ7â=*±wz²m“h¦ X´tçÚ¤…†‚ˆ‹E]aáèÚŸX[tl‹ŽCß¶­Ôu=Ž8…µi_ÕgÒõõ¢Éqô…”Aë&úaìrç=!áª] )(‰Á™hß…ØM.¥’vœ|X,.­öVªàðªs6fÍ™ÛÕÒ{o«è`qØukç\’äà ºEf›´·ÇÌ“'9‹åã:0—Ç*£ª’t]clÛÖ9²*DѱNÉѼ#4…`“ Û6"¡HÖÊNeW>ÏÊÊ¥PU§r¥É#xH1;šæšÆgæ ¦l0ãjûBƒTž¸`óÚŒ¨, P˜“²yÕ:—Ùž> ›\²aêrN¬ŠN™³s”òX7+ñ  ‚Þûàë¨)Mâþ2Ÿ>”’ЉîÄy¢ª9zzÚ.‰YD¼¯‚Ø !¢Ì¼j—ëÍiÛ¶š  V²×u}zº !øP™z‰í ›Øy¸X-7›V‹ÅÂfó@ØTµDÁùbp„ˆëã“ýý}+¬V‹ÖW•ä8¦è‘@(åT×ÞªKÙNNN¬÷™RªU Ëå2Žy•VUØ }Α‚·vDÎI·€óœú‰ªY-RQ@r¤¢™™<ÅÄ‹ºAPÎLèX™È9"Šy¡Ž}ŸÆtî\ "ä=3Çœ½÷MrΛ¾?Ýl”€u‚hÌ)8ŸsRtäÉ¡£˜sìc[7Αàd‡Ç̺¶U6w¸2“1[SóC²”Ó„+ìrÙÐÊ$Y,Ã:88 ¢£ãc;›CŽ0ƨ¢Þ{Ž)‚ :p.xOèIEE“Cbà4FĤ,ŽÀ¡ñsÔ9D@–¬"DZ¶œ¨(ˆä¸ÍH%ÛÑê û~³jz|é¢uf‡8VUå {+ÎmS«j¿Y«G Þ;›Œ§”À9“B`îyœÜF, Í£gqXkhµår¹]nÝêÉ©de–âË‹&‘%ZyO€Ô¹%¤î•ÝêFÍŽµOιnê"T*3qÏý²¿W/¢ €MÛÐÖjÑôùuÝ ˜9gêïlsUaI,É{R¾95·kãªqÿxîDÖ_3Qyæì=)dæìœsäD2úAAsJ9Uím}ß}Ÿ~â‰Ç‘=c1)"!s,EÛ;ïXØÀlÁûÊO– afV"gCŠ-ª†B)§v¹L9bLL.:rY@‘Èi]“K9©ÚŒÒÎGu•÷u ’S²n‘¥éq A…QÕ!ªH¼wNE‚÷:ý¾óäá,Q¢31ܪ vØ8çLaƒUTÌÕQRÊ@BªŠYÄ(·Þ;ç1„JUÁWDSD‚@¤ %{B$aû>KF•I›¡ Îz‡Á“JÞ¥8¦8¨dG`ËA&aG¤šròHH˜ÇÑ/)#¡¤¬ PUI!ňX:¸vŽ’÷§-çd׃9a]W&e†m঩™³…§êQµåm®´“{y™ÛXÓ´®!pN>8e&’Y$ *ÐÔäPfTλbNà¼s)g“#Sç(Æ1Æ1Ø™áITDPQDUê:¨0çäzO ‚ 6¸OiÌ)nu\2ÔuÌœSfGT…Êx$yŒUc*v“F²±}m°lD£–ÅmÞš››ñÌ]° Ãm |FذG6Tâ$\p¶Æ9³•&-Ì­}”d©|•rÊœ]ðDÎNÊ;$È(—SA4Oóq™¶©sDäÔt'ûôí.ˆqœ¿‹¢]U¼„‹æêÖ!)—8UšDóYaÁLHˆ) 9Sõ†¿K›9©³\ÌÌ3h¨¥.DóX¬Õ¶Ð^ÚÆ IDATr R‘–cŠœÝ sº•© ¢iuEèÞ9šapöºãžT^Åf«:—²Ü!©Š(3W•+ Çö§XÌDhg:'ÌL„E~«³q†Žœ\IûØ1-Ð[K²J_cÇOÁ^ð˜ãe>‰Ìª:æ„—ó.m<ç 'n®)¾£m4¿˜Eni;Êñ²##éœÉãÂN[°dˆ%`ÙwŠ]sYe:q¥ï^é¡–'µ¯¯$ÖÎã£÷ÁäÏJ"kkÑŽtÃE‘…icO¤”ˆ­ð/ [ý(,µmTµˆ3·P†"»¶]†Ö¢}^ò¬B<œhŠâÝç6®sýµ¹Ê]ÉP¬÷OD¾ EuoÇ ¹œ”UUo[71åéæ>æ;ž¬…h]þvn”°cž2÷ì,¹Fy–Îgêå g "l;]%S}’¬|™/©š~ SœN…>yﺣâÄ™žf®6¤y }4]¿YLœN‚rCmÒ˹¿Cùßùv˜“ÏKµcÇ}¶qpÍIËõ/âÛV˜3© ¢¨#sבËÀ¢g+€DÅ2/ÃW•+lCç31a„Ó9op[ÌÛ|×-ÂÍOƒíÛ›¹×áY:À™gvS=h#Þ+í'¯D6ì\Øó”?ë™úµ½°ËÌoçÂÕsSÏyéj‹Ì>*çJ·Kƒ×{ïí 2³›±©¯”=Âyεãšw¥”"‚¨s.®(‚°%-*Êæ§óqïŽzÁÚ•gô>ÌÕ…æ´¾¹f vÃ0AR-Á1 dŽì 5ÏvKpæ¾]‘E³iG‚­™K©^Þ`yÞ»ªy°.·£Ì: ¡ÂÞbä9w²˜s`çF°öà65³ÞsÁ|6MÓ=ÌÔ–JúSà`ó>#J–¹>AJi FÕËË{”sš'ÔgŽÇÞÏWÝ|=ÏÝÉŠêqaM6¨=‚¥Es ÿ‚êÚ¹)ÛŽL¥K D[*gësî?;//S(ÛžrsÈÑ 1Ù#qÅ-,œRKm— ¢—½÷ÀšSV3@Ä„ÈDÿTLœ¬ˆ#O`e´ŒTA·ˆm’‚NÀQ°Æ"<ãèØN.T2&G¥Ù_Ämˆ&¸rš¥:gï°æÉ­5­ ;º¬Å ç{îcATI-\2*›®G"…<ó îͶ¹˜¶*tÞ;"âIÙf+UUPU<‚ˆ rÎdÍrPCÓ¨ˆ‚ÛÛé#ìàkv¬Oç5B‘´Þ)œç’x;¦{;®–6YÔ‹™n‘*¢Ó=UU9$¥3]‘²! {=G*Í÷Žê|¿£:YNiK¥m£ÎÜHyà¾xfaC'›6Z°6˜º&žþÖì¥@ÂSÛØÐÛF@Ú¦9H"„?0$Ûªf Jˆè æQTt;ÑÙn˜¥KÚXVs‰«ÕjUÂtÉ¡ÊE("ÈåRØåÚé‡ÀB?5³8‘ÐB»ADçÌ‘„·tq€-HDq¢1ÀÛSJm·m®»¢%k•¢u||æœÉ]¦£:[å´ëí¬s—J!V©X¶rf–Üîµ6m)²Ðe›Í·VYÓ0Î}5ÞzT檊4 æÚ’)\³ÞÙ]% ±_Û²ó§bªðËç¦K))ðØVŽGë1ÊÐE4Ç´m×M£eé#‚ 9TÌ €¦<í:O1n*CW³5:çÔB+», [¿|®a²õ§’bÇPÀÒÖ±*±À´Œ,,`îßw–DQCz©…¢,¬¡òι~èꪱqþvþÌ~.Ä^@Ѷ> ð9—uŸn(aéKÎͬã6§õ•¸o/xnÜ=7µžSqU••H%ÅH„F=..–4r ŠMâb ZÚŠ;Í  Û´Åqn³ ‘3\ ôÛ:›ƒ›:•(ª],ç0ÆÁ\' ¡'f?K&‡ÛõÊDSÞn…•GÌ›P—Ë¥¡um{(° 9(°óh ڹljÃYdË«$&Y*ˆ®ëÌc}Çúq"¾ÅX²û‘}LÚ)•S½°^MÙ§,;W™™›ªF¥Ê×qH½Š¬OOƒ àÉržœfÎKf3dôÁ9‡™€°dgH*OÃØc9Ç1ºiêPßÔA…«àrŠqì½#PúŽPMí 禮MË® ØôÊì˜J +iHIÊ"ž×/¶ʆ£‚§”êº>==µ‡5/û¢ómdFiÛ6TUÌ#yŠyD‡@š%)yJ³äzQiDCª& C¿hkn€Ž±wŽœGÃçœT„Cå˜39H)*0sÍDX7¡ªB?l‹&sÌ9ù0u|ŠòmI¯ ã¤iš3·7€åri$>#ëØÂ°Kd+Ä´}×ëµiÑMð.çâ8ªˆ#2kVè»Î@s)FaV‘¾ë,›H9 ° ÎWÇnèÐA–¬(Dè<¨½þœÓ‡zQ+jÕT‹åÈ“¯|¨Câ$ ä)K¶o¶«Ö”ù,‚Ì«Ë"Íj$Ê"´Óu™û’Ù>*×ǦðdÇûr,bªjDtë«”¢U4;¡råÅHPÎQ•Ë ˆ ÑÆ)çRSÕu¨öö'iQ‡”c2Ã:TîÙw}…÷>¥hõ‘z³g'³Ek˜ÍSx~È—œÜDé§D” ˆ•V®½\UE â¦S¨ˆÎ9K†íw Id *ä¡iš‡~èñÇ«B°ìzîFqâéò§vzðs§£­ EXŠŽ¸½©Õj…€ÆGí65u}rrrxxhRˆ›Íêº:== ÁÇ™Íë-Ñf³vÎ…à»®³==5 ¢”£=»÷ œ¿lB=¯;vÔ‡JöQ2+KjYvi™lÿ–ŸX õÊ®ëºPÿÊÝa"´;Ó¸··g°;\J)TþääD„÷öö Ÿ­21 HÐΆÅbaëÖRf{1&Þ¶mq´ÄðJ:^)¥ PqGõwnSxY¡ Ö:w* œMÙœˆÖëîæ›n{ò“ï8::A²ÚÓ XT’ŒR~æœÃ´&/c2λœæJ3O Ë-0ÜÂÔ+¼ë¹_QÀÄÌÉ Ñ¢ðÏœ­}®äH¶Ÿí3Í…ÍæþxF暀dR®Ñe“¸I’ÁŠ|g£n"2Ø„˜wÈÖÇ)!âjÕ>ðÀç}ôáeÛáN×¹$Ÿvk‹‘wiÏ[òeÃ@ÝÜ.ŒÈ©"œœ’s^Esæq 9WW•ˇqŒqL™UÁù3×uÓ,Ú~ ò €Î‡½ýƒœ9eޤă*ÔuÃ,1&Dªë&gΙSÊm»ÑqŒ‡‡ç,´šnK÷vÎ5gçã òU©) Ö¦”Ûga¨ëºýýM)7Mã}PÕƒƒÃ““SÓŸ8>>1ÜyÛ.ʉm»ËÂ\×u&_iý óšÜÛÛ;99)Éš}a[Ýâãœ^g7Åœ|²°Ä”ÑWaŒÑyß,cŒ,’™mÛõ=*Χ`e4O9çÖöÖ µÐòËôwšÓSÈËŒ€Îùœ9Åę몇‘0§ìÀ¾šºéûn¹\nú¡ªL™3Kf…àBß‹¦].WuÕlÖ]S½ö±€XJ+) ¾·ã5M³^¯íR[Ùk‡}–õlñWjœÎ+ÙÂg>kì(÷cêb#†à«ªâ,O~ÒSïxÚ§§rž9ÄÔ_œá‡¼óÞ!¹XŸ‰[]1|¼YªŠ Uo³33»ö"b©¨{æ_^DÑì”+03 ØÎ9 X¶ùçu‹sÜÀVëvZu]§)¢;穜lg`Åy¿ÓnU™=o‘î$¢Î…œ¹ª‚a—ËÅg?û™Ç|oe½Œ¹\É¡ì‰,TÙç2NžŸÀ“2oxMxï23’geç #¡ó^˜«ªºttäˆÌÍåàà ¦´ÚÛ†Ñ<×’sÔuýr¹\¯7!ø““SËUOOO˜¥ªB×)¥à«aÆ!†* ݰX¶iLÝÐ윮OSÌšcF:Ã(ô€}6¤²áøçi¿sþ²æã包ùD¦<”QðŠ±®¼­ëlÑÊzºÖ†QU…~è8kÛ. /š“*(ùàNŽ×Ušº½téâj¹Ÿrܬ{ç©Û ¢œ“°äà릩ûnT•à뺩rU! D˜“úZ Bß{û+Îꧬœ³¯Bб‡8Ʀ]ÔU5¦´î;" ¡J)ڽș«ªJ1yï»®7Z˜÷þàà0Æq;[‡q {¨Ì¼X´ Z.—›Mç½#r.\8þ¼½G;f¬(Œ­ùy&hYꕺTó¶ïÜÆ•Œ“…Š4s#½tñ覛n»ýö§œ¬‰¬,?û¶—qêtË•ð®3ë® º1Ÿ͇§\¯ÖØõÛÅj@ó3ÐIXp;RÉ"®LÚdp«C¨ˆºÍ$]qvÛPºåÖuvwÌ/·C@°Ḏª–b¶Tß4 6¤ù|º<‡§™êrc {qòžz‹èhÉÎÊ5¤¸¹täBàþ"8%ÈÑÔB\cÊUÌ™‡½÷'''Ý8ÆÓH]ÝòÅ ®Y&áv±:^ŸýÈ œUÆ| y¤º•4œ^:W-N‡N"wi††œÜ¢eÎ!lrNDîÁû4ñm#x×]:5ïå¹CWÕó¶ôk¶€Jûb' Û¯Y€.,«òýqL˽½K/ö§§à=l:`†‚÷§Ç‚©z1÷ÃxëúꫯîÆÍzAd@WÇWË}ˆ|Óðø#™ˆ6€bX6‹féB¸páP ²_6'ë¾YT›Ó€H†°Z<üÀõrc,Φŋ³Ìµì„+ æÜÀe>ú¢î3fÁ("`ó]6¹4SÈ™wLUÅ9‡ÛÉœA|˹¸å0Mv¬ó‘ÑlèïŠDUÎ6ár;ü¶²MExL$ÍÜò~战9mK¡œžØBl©û,A˹ ú°¸!¢Í¾ˆœ$ˆÞœ[t„ÍìÏÄãm4Í4ÏFàyÇ‘mGÂÞKafØn/h†3ÿ±¢ VL¢"ßóŠW~ß?þÇMÓTU·2Á_øÂ£Ÿüä'ÿŸ_ÿ·ï}ߟžä“½½=eY.—1§£KÇ÷¼üåo~ó?‹qX,–1ï~÷{Þüæÿu¤$ ?ý³?ÿâÿÝœQs–¶mr–~ìu ¤¿øÒÿêkïüÒgÿäO½›¶F¥!ö•¯] 4æïùžô±þ•µ„Š¿ƒ½‹Â+ ÔæÅ|aî[3W)êºn¹\>òàƒO{Ö³^óš×¼èE/²m÷ßÿ;ßùÎßüÍß|ä‘G®»îºGydµ·÷¯ýÎo~ù=×^s=9à¬HúéO}æWí—çÝ¿{,'UhtŒoÿõÿ÷¹Ï»Ë~Š‚ãØ×õB•ï÷þà‡~ðŸì]wð®w½ë†nZ¯OÚvu||éoüoï»ïSÇ.½öõ¯ûÁúïO×ÇÞUÿê­ÿû¯þʯ·íòÿüÉŸ¾ë9wúMwº¿wh²ŽHúÁ|è{ßøÝµ;H±9_rn°T8Ök·ÎÍKÓ½feÙ׋« sÏyÁóýWíÒñQåCÕÔC×WM]ù0¦(™}þãøð÷¼ñ{×Ýæ†nøùßzOÓT)1¢þÞ{~ÿ'~âÇ”„Pw›áy/øŠŸÿùŸuàáÞ{ï}Ó›Þ”âÿÇÿé‡_úÒ—¶m»Ùl^óš×Üÿý¯|Õ·|×w}— !„££‹Á!=òÈ#o|ãË|ðàà`nÔZˆkó¶QiÑ”bb‡ÊbY|ŸzQ2å-@ûû°X\wÝu¦zèÀrÖ–œ3 m ¥ÎTù³‘q¦Îr©‡J3®LH3ç¹U=lÙ|—|œCUpÞ{æ3LÀ„–š1’ìNÏ÷ÆÔ2Ÿêÿ©f$ Æ4²Ø¹å-9˜ƒ}¬®Dq.¨ Mùàš·Á͈æìd(]žIõm›zdJ¹‹óƒe×ÍEñ®çÞùðÃïïïÇa¬ë°¨ë'Ý~Ó³Ÿs×·}Û·¼ý—ÞñC?øOÇœöÚ%+·m{tÒ}çw¾á¦›nY¯Or–ÕjõþÁ?úÅ_üÅGy,Æ|ppîüùkû~DÔ¶]]¼øÄþáA®»vµ×´K_Õ_rÇÓÒ˜7ýzo¹O%« „оªÑ;¿µü´n‘½Îõzm‰’M¬c\.W_Ô:ÔÆ‚EO®¸E\uÕþýŸþô·¾öµ?ú£?jXÓfaæ›nºé/xÁÞð†{î¹çÑÏþüõ׿ûÝï~Ƴž% §§›Õª D}ê—Üñ5ÿ%ïxÇ/¿éM?pºÞ´ç®¾ó®ç¬ööcÌçör€@äà©OùìþáUáÂ3žñ¬y”n¹å–ÿå‡äïù†ºÝ»xñèšk®[,W_}þšó×É7)ÝrËm×^s}× ·Þz«¹,[ÿ?[onÛUÕ‰Ž1f³ÖÚk7§¹7!!H‘„hè¢$ˆZUQ‹ H#1…BIÄO¥JGY6²Ázh•€¯,, PKžJa6‘ i-1$„$7÷Þsï9g·k­Ù÷ÇØ{žuO¼_¾|çž»Ï>k¯5瘣ù5çö“_ƒúú>|4&r3XDre·Ñ`0{’)k´7Φã­m[V‡³ùΉ“¾âÒå*†—ó…agkû`zxщ“¤áìÙsMÓ‚s?øÓ?óÄ'=åüþG°Vÿè¿æïü]çCpš1Fn[wÅÙß?œL&—^z$¥^ôâÿûŸú‰ƒÃŽ™ögöS±óÃñäIOyÊt:QÐ퉴†S§ÎXk›¦ÙÝÝ1¬ÕSʼÑ>c©ßÏʘÇöÑ:вqE"zçd Œ"BPZ+ïxˆÇh ’[åºlÝtJ>¥¤5qŠº=³ù)XËr “F˜är>nŸæ&»:÷M¤W²DË™¦bä¬Os(çº ¦26DòÒŒ]Øhªu͇–A[²nl¡û¦r")™ƒÎ1 hvñÍíÿ\ä©eOsãȯ¬?SSF?øàƒ­ƒÅj•~ÿ½ðÍ7Þôíÿü;Þû¾,—ÍÙs·}ßKþåsn !0añÌ™3—\rÉ7>ñI«¦u!šÂF­õó_ø¢¶mÔË_þò+¯zܵ×^{Ûm/ADc ­õ/ý›ûØÇ>ýÆ›žñŒ§œzh±˜!£ó~X÷=ï¹æë¯½îºëû˜+¿ñºëþêÃ2¤òò’ “uu²peÛ¶2KF}ãâ íý¬~¿&Âæóé`<üÉŸüIYŸøÄ'n¾ùæë¯¿þ]ïz—Ø\ý7üàþ Üzë­OxÂ:snïÜá‡>ô‘o|ú7ÞøWùèìp:;œ~ß‹¿÷ºkŸ0W«¶ë|=ÜŠ ¦‹›o¾ù¦›nzâ“®ÿ–oyÆËð¥³éÜVåál8íÌš¿k4%bÔ«ÖÙ²†²m"'F*ªÒ…ø½·~ßÓŸñ­×?ñiO|Òßÿýß?3v4·ó¤‹¼–lìJ®!K±išÌ=Ê"î¹ïžoL&“àºårþÕ/å‰O|âc®¼æ®ÿÆ~ô£eUÀbÙ¼ìe/»î¿áꫯyþóŸ+ÆÛßõ/o9œÏCB] :Ç1ñ+_ñªÙþ¾QÖ*ËAÛ¶Œbj½?µw@]}í7¼ñ?þâ鳋AU¼þuÿ×;ÞñïÜøäÉÙl¶˜¯Ú¦›Îæ·ÿð«ýu×|ý5×^}Ížò”§H %­LQÑé³¾“ÔqÀýZtVÑëÓ?Žœ a½¿S¾1°Òv<žˆð1§¸É^×Þ€¹§|̺-ï¬ì°-1$Ç“œò E†Ô=‚ hD.KÑ·/Ú¶-ŠŠ™±Þ{c ”^—tìk…Û¡´¶›|µ¶ÞGkËYÄÅ3΀ˆ”FJ£Ž1jm2E.ÓM¥A#@Ò~£HÌ®ªJN$©ºeÓÊw²j’Dƪªˆ`ggWk3›Î¼ïþï»ÿm¿öëßþôogׯ+õuÄ1Ym¼ ¯ü¡Wic‰ô?ÜûÅüã¯xÅ+VMûÂ}ï¯ýÚ¯Uƒw-.›0&cT©Tj[ A§¤´6[“R+H©mNi6ž½ÿTÄÁÍ5ÕEA’§"‡ E~EDc¢µdŠXx±¦bìƒÈ!çÇZ] (ŠÙr1ÙÙ:ùˆ“mÛVTœ={úî»?Û5ͯ¿õ-W_õتªþñÞ/º¶¤Ç>æÊà“±iû‡ôÇ_øìÝdÍÇ?z×?{ÆMòÜ¿þqýÛ¿ùµ\5óeë lñ•¯þã™ÓZStÍJ׃ÁdèRHÅh4¶E×uç¦S[Þð3?÷§ù¡½Ã(µê ֤4tŒiCL¤‹í¢øâ—¿üÕÏ}NʰXnŸÜ%‚ÍyÞ‹‡®l?ÔÚÈ ¹ë\F WÕ@æq™ì“w¹™±FÿÇÑÖTå–wq1›w]×ÎûSç¼¼µ3:î`ïìy­Tômõ=/|᥼äôÙCçàìù½'ND6Ïø¶oÿÕ7ÿŠ!¥¢ëÄÇ@eÒŃçxä»ßó{ÃQhãO¾î ïz÷;ëª<¹ûˆS>8™ŒH¡2z¼½uvÿàÌéÓ¶0‰mQ!¢\VvµZ© °õÖ ‰Sà® ƒÁ@)íœK‰7v^Q†€}C ³q»ƒa!f "`R¨‘ˆÎgËá`—9nàMŠH×µ®É`W‰J«ÕjT׸AÒȾ^ÏÖ]‰1„CkŒIÁ[­ƒï"€Û4°5ˆh”Y;ÜK‘€×7±è l`Ç@ð²ŽKæ!\sS3‹m]Í’:†q7F#"‡Œ#q|b5ž¢ ‚ÓZ—•=FæÌ9TæŽôa’•ärº/6’ùœý©Šµv¹lD”6F†¨ ¢ ª3gΖ¶ˆ‘9aŒ¼Z,¶wvžõì›QiçÃG?þÉ?ûÀ^ýê³Z…K.¹ä©7ÜðÑ~t²5²ÖÎ[×cÛƒq= 1£°ÑäÖ*‚ë+»ìòË_üßrkëÌéS³Ãý}ì£}‰î¾vÊ1½ü<)“º&# Ö>àkÊ”Yf¹©WUÕC÷ÝwÇw<ó™ÏlšæÙßõþð]ÿù?ÿÊ{ßû¾gÝülˆœ€)uÑE5M@ã­2„ÌUUý꯾ùÎ;þœsŸÿ‡/–eQŸÑìp_i2Jk«ÎLí :yñ%O~ÚMÑ-5á™3gî¿ÿþ­m­µs]Q!øžg¨4Š{Äy>ƒõúÕbîÙÉñfŒ!ÒfˆÌ$|þŒb"H H) ¼÷)ò±"+V–ëºÄËZµƒ`£V…}¨jÊ€û IKÆÃKÿå IDATÄœ¤ C‹1’J6‡AB£¼ô÷IF|üÓnƒ}¡P¸©ŸûúÐëü•R*p­l.»Ö13§0TMÛ¤Töô.pµ“·Ê§bÿ·ô…\ú ¤ÜºîSä‹ápXו÷~8,ƒA¾¥Þ‡Á` "ñÝryÑÅ'ö÷÷_ü¼ïyüã¯ÜŸ®ÆãÁ'?õñ¿þôß<ðÐ^emUÙÛo¿ý#wÜ1ÅtâÄ [U)%œF‚Utl”ƒd ë;n’÷È] „üœ|÷s¾ç»1Be`Õ¸¿é›zèt¡(×Â’Ø÷?ÔÃ?].uû9×’„=`üäâ‹oÿáyík_ûªW½*¦ô˜Ç>î-oûÿíO¼þíoÿ÷þÞ{fSc<õЙÀI[»Xøûᅧ¢,ËfÙÝ{hàS´Öj[ìíOzè¡«¯=¹wþàäöø¿ÿÿQ(ì:7¨íüÅ7ÿÜÏÿ¼L{–ËeJð¥{ïýÓüùüÀ¿nÛø¢¼ð­o}kŒ€ `9›l´è÷¶·½M+¨-À;þûoýÈß~ÌÉ.™>‘ÃP»×vÌ<=ß™ ŽÞWLÐ[ÁC A4DbX(Ëå\>íiO»êª«<}î‘—ŸøØ'>þgög¯íë×uaø‚}ïçï¹;1›²DEdôÁt:ÚÞyæ³þÅcséþÞ|~xð[ïz7·m¹³Ý¶íd4ê6=byôïzÇéÔB€|àOo½õVÀÔ´Ë­­-)z‹úàÇLéG)»ò²é˜Àš±,0º a´5¼çóÿø„'\YU…@@­µ>F[Mhl1[¬À9D\.çÛ“Ñb±øÔGÿF8çªzôЙ³É‡å¢ !Žê±µe¸ì²W¼âßsË÷TÃÁ7>áº7¼îõÀl­„¶m!åœ#Àº¬Búg®ŮݞŒ?ùÉËP¿ÏUÈ^¾¯7õ¹k)õ`Æ åU—Yñý€%ÞÔDT–4MçÛ(]×1aUU•µÝrNHóýƒ—¼ä¶¶mIÁ½÷Þÿ»¿û?WgÎþõ_ò†§>µmÛ›o¾ù×ßú–ƒÃ}2¶i;E`Œ1Ö|äÎ;?ü¿ù•¯¸­®ÌÛó7^pË-®mªª’ù¯ >E¨ªªmÛwþÉû}ÛÆju×]wÉ2¨ªj>Ÿ{ïoÕÖëƒJé>]Ò¨œNæâ£·@$3SŠBfÖdúäâ#áCÒÇ\Jót‹™uO¨#×4ǰø}íöõ%]h%s°ŽÖÏ*wÇäJYÑôöǪ3y™4²¼  ûLB”.rˆÇd?ƒè:Eˆ1­›¦&f,ŠRf:ÇҨ̄êóøóÉ´¦¾ F>sÖ–V)U°=žÚx×ú®D[h¥Ô²Y%.ŠªÔ…m\wÕÕW?í¦cŒu]k­þðß—|ÇmËD4ž à¥/ù©×¾¶ ¬V»Û[ÖÚÃÃÚF.”BĘ ÄÑ ¾ëÎÿüÞ@U‘VK4jw{G™µzoö•멇oÔœCeÅ ²™Š$1zý #TU½¿þ¢KéœSÚþûŸúé·¼õןóœç¼úÕ¯ÞÝÝÝÞÙý¯¿ñö[g«ßñ‡ÓÙ¢qW\qÅr™˜Ùw]Cˆì¯¾êqk Õ½ÿø¥Ñd{9_>úJ-Ñÿ•¯ü¡ƒs{£Ô@HjÝZÐ£ÕÆwÝÿÑûn½íÖÒÉ'º®9‚ȦeDÈíjùÚŸü‰ýÓ§Á;3¨¢ïFÃ:M38¶Î)RÖf9¦’˜—P¬×÷)Eï½s^k-b £ã5®«ë5êäñð;¾ã;2ûg~ú§Ož<¹{bGkÅÞ]ñ˜G=óÙÏz÷»ß€•5«6Ô£!"|åË_þíw¿ëÆo~Êã®|Ì·ÜxÓÿóæ7ÿÄ¿} @Ò¶¬ë:˜B¿üË¿üµ/||gëë:½‘!I)•e)J¤)k^  }LÕ2k(ç³A2âfnCb:Ç,ò³ÐS ï½6dŒáÄÇÐú5J¥X <ˆ~7C´(Öˆü¾YNÿ|E‘ïqµ…ýØ÷P’y,½º@.çB1¼þ†Yc^øH ¯Ìîc‘ûõM¼ ü†òñ²/v¾Îáp(«œÉËŸM¿yÍ–nEÖóîÃ¬Ž•NrÚäpÀÌØuÝlêd*ú DtÙe— TïÒGL¦Óið¾].Ÿÿüçom Û¶ë‹/Þ}ÚÓžöìg~Ëu×]ç½ÉÏf³ç>÷¹Åh$W[UUYÚ¢(Á¢âû)Qdiy8¯´ºü—BQTÅ`ûäÉÉ`ŒÌ®í2 ±?âÌ’}~VŽY¡÷§?3ÎðÚ¬á³Z­žù¬ïüüç>wß}_ºçž¿{Õ«^õà}÷ýú¯üÊ/üÂ/N§³ýÃÁ ¸ñé71«®- »XΜoѨ°YΟ÷‚çê¯?ö©O}êo?ó×/xÁ Î= ÑÇŒ¦¢0‹Å¢s‹ÑX"Ëh4 Î}è´ÕäœÛKk~î§fv8 ]«®V«½Æ$.­ !¸¶«ëz2™ ·Æ]~¹ïVƒ²ÊÁèáƒãLƒ¸>|T²uife-°>7³Ï3ÖµvæÄî®|g±X„說:ûÀ/éË&“IŒa2]óø+nû¾<ë;¾í†§\«0¶íjµj^ü}·jkˆH‘‘µ¼ëîÜÙW¾üe«åB¾ð…Ïñ‹_4ÝÛÛÛÛ[L§âÀ NÚzäeP£'´Ö;»»UU­Ýð6KâU€©¦ÎêY¶dí²Bf냼s ÉtÔ¬²›õÎ.6ÜHPô š5ê —Øö3ÁcƒË>.G?\sòü4#YÖñO›,y(™adßÀ¬ú‘k.¦”Reða]$Ì…n_Òè"$ÔB^Z Ct]C]×5šN§Íj5 Dz¥¯&#—Ÿýav?ÏìX¿ÑÖ›òýAQV¥m3ŸÍŒ1ßúÏÿùSŸôä—¾ô¥F+EåÙsË;î¸ëñøyÏ{þ¹s‡£q}ׇï|Ó›Þ$IµÖú_ý«õ²—½¬kÚÑÉÁßüMwþå_Úª‡)A Q$9¦äƒB«²4¤.½èâÕ¢mWÍcsåÀÁó…/|®‹´Ê4ú¼ëòRèóKòijO'”Ý{ä Þûq”Õý_ûj³\0BQÏzæ¿øÐwîííÝxãÓ.»lçÔ©f¸çž»Á»v¹$†º,­µ·¾øÅz€€o»í¶‡NïUUµX¦O|â£Éd>›_rÉ%Ìì½ Ñ=íÆoÎËC9œMÿæcloÃuOÞYcÏž>}·8wð?ù£ïÿ×·=pê!¥2 "Ri{2ÖEa³éE»'ŒB«ÍîΘ"éï•Éo?kîóˆ¨,Ë<Ô_c™û"v™ÆØ·¥È7° ÞÃ!yï•â¶mSŒu]9ßFM§SÑϰÃÁsŸûÜÕbVWÅÿùÛO¿ímo‡çÏí#À«^õªozÊS÷öÎ^ý¸«®¾úqŸýÛ¿Õ†ŠÂh…Zqô TöËŸýì«èßüþïÿ^ôôóo|ã—¾øÅÿóéOÀÉ“'Ü»X,¶&“B±ë¸¬ìþ™Sƒ­­Éd2›Í”Rv£åß;ìïë>ý(Orú2‡›º 3O ”RÈ$Ími’¤ä•9ò )òf3Š]?EfÜ´ƒržK€±¯S†¸¶5í»³2 R+ƒ ²ƒŽàúõQîd©‡á•Žhw¸²!Upå¶‘ 'úœ™d&¥.fŽ1 Åb\áÇã!Ë)7¨kA±k–÷XÔŸ <2_|6ŽÎL«Œ†Ï¬`D´”RÛÛÃÛoÅýÈ+Bç’ÑÔ4Ý[Þò–{î¹RzîsŸ{Ý{pØJûž÷¼ç“ûØ`4"¢Åáát:}ùË_†µý±û±»îº+O÷ƒjEJ‘VSUVܬêáÐVz6kmY¼ôå/yޤ ˆ¬†7¾ñ—~á—~iíÃÞu+#yÁ1^k_Â8ÛUæ ë˜òæDeNáó÷Üýöÿú·ÿÈíч§}Ó7ßõá1Ba6m/¾hû·ÿç{>ø— ç·û_¿äûÿõ×úÐ=ïy·ÜvÛóBÛ)‘~ë·~ëK_úÒd{ ó©Uj{»^­ê?øƒÿ¯² |¡N¿á†§hm'“Ñb±*ŠâÄÉݪ,šýÅ_xãÍÏþŽG\|¢Yµ ØšLicŒ»Û;¥-H)uÇï7 R­àô©3×_½-ÊþP¨¯Þ‘•?s!ƒ­òãÎVÒ}EÙ~WÁX£”ê:/ÛR„ÂX«Í`X‹ØÞjzø’—¾ôŠ+®˜/VÑ}ëù‹÷½O×5‘v³ÙîdôÌöm„ÉZû]ßùìÏ~êSíîZC[ãZ!Ö@³Ü½ôÒ~ðŽÿô¦7½æ5¯1J½ãïxÎ-·|éÞ{/½ôÒÂê“;;õpø¡;ïÐ $kèðpúÔ§>u±X,—Ë¢(B…Ö9"àÍno•E™$dmŒ±®‡1Š­úfu1‰áHÖ¢1DZëÄ(’$JaŸ'“{ÖGýëüô?9¦ËWx¬ž£ ^Z‹Ì[Æû öLÒÅ®ëʲÌ.¹g–cs¿GЇÏf&aBŠÄ‚€×ËòH˱ªjÁ[ |NkݵÖ5):¬“vòÞ¶’)2¢Öã¶uEÙ£òñØ'š÷‡D¹Û*å˜Ø¢dUå>›_`8"Ú[×õý_ûêïþö”e¹¦…w饗;wöÓŸþôwÞù…Ï}¾›ÏËñ¸(Š÷à7MóЙSö÷GCQ’áÑðî¿ûÌîg¯ºò±ˆ8_LË´m{ßW¿üžßýñd;þý?_Ô°záWËМÙ?û{ÿë'ãíÖ;"‡‹Ùaa´"¸ãΆ«¢œÏç;;;«ÕJî¿ïœØš‡Œµóù¼ªª“1B1qôA|¤Û¶%R)&¥T Ñjã×JÅ‘µª´úg~ê øGðÒ—¾ü†n EUu]wÿý÷¿ãïü“üq׸ÑÖ¤kÜs¾û»žóœ[n»íÖG]v9×v]wúôCï~÷»ï÷~kk‹Œ1wß}·¶F‘Y,óÙa]•1òööä+_¹o9ŸmoïÞýÙ¿ÇZÓÝwßíÚåpPì=pß›ÿÓ/½ò‡^Õ¶N+³¿·wê¢OþžÏýýbµTÊ(£å€ñM£ ýÍ'?¹X,jX7VòÂUƒ|Võ¥Ü²éMñ©ôösصIDQ,—Ë5—!Fï\óþ÷ÿñ3¾í[cŒ_øÂº®¥žüä'Ÿ>}jÙ¬˜ðþ¯}µžŒElr™ªÿýÁ?ÿÄÇï:yâââ5×|}9=øÀ×¾ð¹Ï9çƒòÁû¾¬ª’€ «ßô‹?ÿèËyÍ5O(Ëò_ö²×½þõŸùÌg®½öÚUÓéŠì­w+„ôÐCÍçsi×euppÐø F½ilÀl6‹­S‚s¶¸f©4ÕuÝ4w( >"€Xv¨Âšº®c:JØ%`ÉY½vÇë1äûnWÇ€ }"^ôּ̄fÒZ»¶ óåjvp «*4+;!b·j8JDŒœb˜lm+Fi8sê” ݪ©¶&Ͳ-ë­ö€´ïëím¥TQ‡ç÷×:œ!(­«ªZLç ÖB   p –ƒ)Þº®ƒÁìàðĉBš1Fgt•àÎ+Û·ÌÉ‹Ç{/õr_5l8{߉pBâ ”2ÊãÙ½ék~ü'¬©W«–t‰kƒaI”ެ›”RŽü\Ö9éü•‡u$†ÊÌUj>N2ìIÇMQn4°0v=¦Eò1©˜BˆòX™¡ÏÆêO1³nasnn=Œu©‰¨ªŒRj±Xô‡8Þ{E&¥Pòy ¤WGˆ !qoÀ!!ûžI}$Ÿ-“ã$³•òPz®u]K´’X™¹à}ËzVBtù£=ÏF'Oĸ6:ﺮ¬lŠ`Œqm»ZÌŠ¢˜Œê¸¬)¤ v’V¸=MFu~ODŒ˲$ÀùrA¶@D·j˪P€ËÙ¼ÐÊ袮†¤×Ê¢FÑJëÐu;;»Èض­¼ÿh4’È—["TN‡·¶¶š¦éº®iš²,å´qαóÍI)MFÃÙì·FÃ8X0«®Lƨ•5i .„®3JMFµ ‡ƒ§”Ôx´&oÙbµZ9çêa5›.ÆÃZoMŒ1kæóÙîî çºrgwµZbIÖšªÌç39'f³Ù`0ØÞÞJ‰c"kíìpzâäÉÂèe³¬ªjkwgÿüáxwG>~UZq1Ÿ!ŠñÑ8EŽëœþ÷WN_ÐîáFp}ã‘?‚P Ú®ÝÙÙ‰>´m»³³¥5%_F¨ë:ÕUè\a&9–e|£ƒ+¾îѳŠG£„8Nœs!ºG\v);çlQÑr¹LÞÇサ¥¨€TU…J f^µÖ6ÆŠS0f=É1¤*[ðh$‚±Î9Ñ–" R¤³ªõFtìØÐ?Ÿå"8d_lš*¤Ÿ¼”„í”'­)qNÍ2™™ŒÙ«þÌm2»‘ ÉÈx*’ù™Q:ç€òJõ„oøf¨ä™šäcYñ.ç>ý<ù¸!c¦û˜Ùoîa`·Mß>o}š%À©'{('¡FD1¦@„¢0‹ùìÞ/}±2dí#’û–_)…tÖº•‡*YÆÆÁüHu£Ü\×…UÎûàœ¶j<¬;ï¢wl­XǾ–M³Ð —‹Åh8ä˜RJ„(¹nY–)¥AY¹®+‹¢mZ­uŠ ªÂ&ï£w“Qª.+N‘WËÆ(Í1D×M†Ãº°®mBŠ8åygÚ`ÞyÚ Áh±XHë½ßW–ê@nŽPçÖñ™SjÛF)ý'ædŒ” ʪu-o(im׊ÜkŠ©, ­µÒÔ§Ç[k1ÁûA5`Ž1$/rZDBp]W–¥ ì$Û•Ú­®k‘4’aN»j·'£\˜ S À°–e)‚yÑ»üÖÖsŒéºh^®}ƒÂþz–;sŠÜL‘•ÜŸä‘Ò:¥T”…RªY­µ\­Œ1’àÄ£²9Kc÷Jë®kÅž\ׯ”|ˆ¤LHQ˜CÈ 1Åî)Ò9·½½w]'LcÚ¤ UU̧u]Ê>-¤PUZz8¢DzÔ€“y=¥žvc^3’a•XzXö÷÷±G¦°E5&†hLùô§?C)Ë J[DTÚ+]ö˜»L²´bŒÂl9æZ”R*¬•òPÎÚ#J&ÁÌ„”˯ÂZ¥ÔšÜ¿ñï½À~æá^,ÙM«¹r´êÛ±dNcî AºO”—’-„ Èêž.6ÖÔëw]Œ&£gDB @Bü‰ä¾‹„T¸‚Í¡*—<‡‡‡ò‘ÏŸ?/‘ZŠðcKyƒ.bŒ‡Ë•2D€çÏN—Eb,‹b> eY9×v]cmÙu]Ó,­Ñûçyh­-¬q]»˜ÏB À¢(]clW+YíbÎ1+ÍW PiFRˆósçbŒ©ÍÖZÙb¶˜5M³X,$UÌûMΛÑh$ Œ¦i¤ß4ÍÞޞ܇\*Šè`·Zíœ<)M™år9žŒV!ˆñá|&ð”– ‘ªªZ-ƒÁÀ9?|ë’_ Ÿ6Ág?t •ô`5;ïήVÌl•Ž1ZmΞ>;™L¤sZ–å¹ù9aÞ ‡Ãù|®µN«.%hW‹á j–‹z< ÑïŸÝ·å 2ˬ*¸–Ö‹Å p é—6Ò”9šÍ‰Fî]æå-ÇX¶¸n]³jš&5«ÉhSLu]‡è;×1¡sÝš…®LÓ4çç Ò:y¡UÝj…:E¨\h»®Ž·¦ˆ¬§É¸sïâÎö¤m" Îϧ Ölª­­­éô`Ñ,µÖƒñp ½@ó›vX òÀW¥”BçÔ”RŠƒ'­ú"Vy&-<éy °C¶ºNÂH`@ÐZeSäóû‹BŠìœ‚‚Ò–di–c- È)r¢š$ctó,[™µ—Õ‘© B‚#If^Ãp²kV•ÿpe¯c`÷cnz£I>åfð™ú¸Ø>î^ÂJ¾kD$‰€GÐGR™}½ikm>ƒD=iºÃye—­×–Î’û·ÜrË`°öò‘'$¸o…”1‡‹Ù2¥ ”*«‚ˆæó¹ˆ‹†¦Óéªi”RxÄ#áĵ"Ñu‘&«÷^: ¥±ãñXƒ¶m@/þ¬I¹®!Eª– WM;oÅm¡9Ƙ¼&DTHÕu-MVA nooKªµZ­vww%çšÍfˆ¸Z­vvv$Å›N§Ù¥îìÙ³ãñøòË/¿çž{®ºê*9Ì¿ð…/œôÈ.¾øPþj¾ŒikkkoïÜh4Z.—³ÙÌ}âÄŽRFD­µ ðôéÓJ©íímùÕçΛN§Ò$}ê7Ýð™¿ÿìb:;<<¼ìÒGj­ùÈG~úÓŸ6ƈ`¼÷þÌÞY¥”)*y|—\rÉá¹½­íÉtÿ`6›··Œ1!¦'.ÚÚÙyðÁçÓƒª*»v5_O½/0¸ÜŒ ûê#멟1ÇDÁú× ‹Yo‡ËAÕ4MÓ4ZëâÞÞ^=(¢¦m™ÖÂT–e!) \,–äCZ6Ö”ÉLç  B·šŸ:uj8;¥¦Ó¹¤™«ÕJ¬{‰èôéÓÌq04ÍjµZj­}ÛÚª|n–K™¼îo„˜=rÖÄR£½skß±j¶œ¬³Ùlgg'ëU¬V«²,•2ЊÁW›Í¤™‘ÑH†Å £@•3ýœï÷ýèŽÑÅ2ùF+ݰˮ }± µ‚RΛ²ã˜¤ˆ™”×›ª®ûf>J¡¼›0!r» ïØ/'‹¢ ÔŠÖÍ6)˜×Ôè¥I:åþ’^.Ø“{Xù^dÆo6¼«Z­Vüãßþö·[«g³u£=‹:\¯ßÈàT…ñbGqœ•×»ʲ?jÂ#ûR«É9̹³(t 댗ˆŠÂÊði1'­TŒ>D®ª ™™ -g‹zPZMóù|0œÄ°ÖP•Y•|@IÖ¤!7SòY:¹±•³÷º€oóD&Á:EµÖVu.6M+ô̦’¥lˆÚ®«Š"qX« &tµ!S˜¦é ¥á°j[GDE¡g‹6¤X×µk½µFíCçÆã:%è:GF{P Bï£ÖÊ9_jÕ¹vX ’sµ$眶E×¹º²ZÁ|¾¨ª*&|¸Hanîö¡Fby“r2µžõž`¿‡„Öj×úÂÖ°ò~-«¯qÎ åáÆ¤Œm"—ë‡0†BbL<]¶»'.*ŠB)\LÏïs÷Õj•vvN ‡Ã¶éB Df‘W«U= ²( 1÷^gpxxhŒ}fîš6(yî‹Õ²/žÛ¾ï|ç;çw~G 1A ,—Kç\Q¨M‡Ó¡dJHD>ˆÝ•DÁL ]wy7Æ9sÎ8²¢0I\Ô0!(R€ 8øT&7ú(Í>-¥qµls³L~]YV« Ï(áZ6ŒéB§uaÜpQ”eY…à'¡ßI•ð,óûˆóLà¾ûdT³E«mÉHóec­ÌÂ2ÏRߨŒØœNçµ–ÈÚ¶s@0(«UÛ"™Î‰/4µÎK|\'ª¤Ú{ Ø¶óFIñ’-›VRKÒº¾½Õå IDATª1Ä.&Í@¤Ñà¬ë [´Î€%b­"ª… ¦:¿6&A¤820#-ÚN)‘fÓ…´ç†ÕÀC „·êB, ëc"­B⨌UƆ”ˆ¦.FÔ@JÀ²mGÆ[RJmˆD”BXµË;£®KÞ%e¬K©i[B¥µ ì|dÄnÕi­AÁlå‚ Áš†Ãz±h”RÝ&×c­’…CŠØEŸbÓ4[[“Õª!H+¥Ôá|†ˆ†TÛ¬ÊjRjš‰‹%ÖzC\sŽÍ²ûTVi—¬»–éH¦Mì¼ÖSfC2É•5ž ¦˜ WeèÜbÙï%M^­V™ œ@YÓv™²k¼¸¹+RƒQég‹‹vvf³•÷ž–eùu_÷uŠ‘•51®‹•ÝmÛ–ƒj±X!²µÚ¶µ… Á]|ñňÈ@yäGDW\q…œ—¡‚[T2¡ !˜ÂöÕz7¹'|ìc뺮®k‰_òš²,¥Ñ"yjLžˆŒ¶Š´d­!N´QLdfA{2Kês$ ²–u…#웤óéT(GÖÚÃÙT˜ðY‡RÝC¦ßhbâÀÄ„°îu‰¶´4’+[qbZ)ÅÄ.E&q@…DÀŒ>xdКŒ)BpÒo#Ò°±‰‘9‰&€äbQT!‘æô¿sH‡BEQÅÀŠ4)´¥Y­¤ŒsÙƦ蛦«ë*8‚V Û¶-Š"·*$vd´äQ» hÕvϼù»G£‘¼xooïüùó[[[™Ü“¿Èyœà¦7>œ‡äµ²2{!Ìçó5.„y2ÎçóµØj•Ѫ8rL”Y¥\‰T(1FkÊ\ØÊ‚«ªŠ!"¢ÑE×uI|½…k¥ˆ”"cæóù·~Û·½öµ¯ïº‰þÝüÛû¸/¥ÀRød¿Eï½øtõ]E$M[uíÚpÐQ2.•d(¡sÅ ZÍu]Kb´N)(µñûC4Z¢ %ú+¢cŠQ)4Æ@â¾nD–*¾€)l5æˆûù2jkú#é¾NìÚ\K”'œ“LSnl>Jú¨@ëïüîç<ò‘—1óCgOÿ¯ÿõ^hCÈì‚çȨHff:­µ!uÌw:·SúÀFfF­¬µ¾íªªÌ§&3Ç>1ˆÀÆ8/¥#iÏž}¯d+½†Ì‘(¦ÐuEÛºî‘Nœü«@œDg"£”ä\œÍG>ò©B²óˆÌMY(mÖÆZŒ£j\-W‹Å •5ÆÄÊèÎ5kÙ˜!ú„@A¡FDN\ÚÊ•›ñëMjÕª[)2MÓŒêa¡0–™ƒók x\?Ð#Ĩs‹§ÏbÉõgö’ÉÉQQ¡9R X7´¶Ìñn'éÕ†], Ú¦Ap¤3m­%Òk0¶!•H­Ñ–…q­çîºÝÃ"­OUUA,¢èf)èc¾ÇÇhJ)¥ñÓ÷LàSàta mÏž?‡ "$bÉ1BR@ 0tjTL@Œ "û 2j*´ Cç™ÀF„sçLÛ®´¶)(eœkµ¶a¹PÊhï(FO¤Yö¦?œfËŒŒ ÎÒ×ÒŒÈ.^¹‘ ºÇ>a€Ö9ðáªÇ_3Ö!AY þþsŸÿ‡ø|U¨„¬‘|ŠÉ‡¬C õ v1pˆ 'L̤TŠÑØ‚»Î'¥ €$¥´Ö*„(%~ŠÁŠ&$CŽÎƒ"C*!pˆº° 0p‚˜|ŠÄ µFHÇD¨3g­¯5´!mpiuîhd˜|nÿÍÝM+CꆬߟY“}Øw"Õ¹ø·<ÏØ²,ËþÕÇßü¦7R=©ÛÕRiIŒ"È ÝqàÌŸï³8³dkÞ5 r†üuN!¦ A&« Q‘!)‚]Y œoEí|[ØÊ‡N.F!EN)DÒJ!…!±¶| )D“"H÷Ƶ¥Ê…òùlÍ1­¡uª•BŸv Lsì|Ê_g}ŸÝÝ÷û’{†nÙN&!0]~ùå€8ÞÞFˆÃáiÍ““ŽRJŠ“dj©È:n9X䀵éN¬§¥¹¥(UOßí©/Lìœ?¦;˜ƒW}ÊN6ÆÔu-²—RPËØ= éäY›ü8®U6¹m¶€•FÐÎÎN¦ ä›,îJÒ†‡˲T„U¥ÏíMÛ¶í| !©³m\åù˜DÂFµB„ÝÚ…Á§”TìI²ôMS%—¤Ër »#¥ )%,@–"@’Í.ívÒFáûÊZ[€D$lÈÛOš) f…ûŠÑD|$¥"lü¬CBbD–OH¬(¥”¶X…aEJá*{÷ˆK¹~ðNîû³!Ž‹ÙT!pt¾Kš¸k·ZYkŒBRF`ÀcÖ8§8AbT¤Hˆ „!øƒRÌ Rô¨2+]׫šfi í}'mHñ$NS$ƨ"„˜¨”‚bˆ5j FBÔ µbˆÀ”Œ"m˜¢ïR$  ˜âáÁ¤0®ëºP NóiÓ6Kæ@côœ0ÙCòL‰U‚À@1³J1mÜ®™£è„ 'O¨!Œ‘TPÌV±jÛVYÒªP”A)&†!EæÄ!h’ ˆ$t+Ó· ïW‹D”Qóó•‚]šMÇêÊþúã½=š:…¤êzµZm¶êº~ðÁcRf- ÙgƵù9får‰\ÖÚ ÄígL1Fñ‘ʘÄìu$VEèCçúƒÿ>ïUâT.Ÿ×ÆÎ“'Èóмóåg7!Lõ°d$¬@éùzïÇãq7´Î9ç”"D$¥ˆÈu~ÃM÷¸ÿ !¥ÿÉä÷¨èÁMû¢Ì}ú'3Ë6§ŠÔ­H8Æ"ɬ”Tr(Á Q1GfH̘%Þ7ìÈH–ŠDT– xS "˜§je6&æZ)PJÇÈ I+„ÚuÁš2qŠÞ…ÄÁƒ`Bˆ˜ ,ËЕ1Hsj—µ4í²âJVºÕUBh—«.ºÑ fPÑùª´É„Ä)òZ‡ŒB&âàA‘B)/F&H‘9…H #pDÆÄ,¢€Bà˜ˆ‰ AŒ¨•J 1§„r Åîv ׈‘r"$`@N„òK9q)$F6Úh"fHÀ ˆ€ uíœö«årg{ ïlMöÏŸ-­FÌ)BHkâ“BF$2˜9¤”ö0Gù(fÁbÆ¥ž`5A š ¸6Æh5¢B1\JY 3¤€ÈF¡B ‘s7c]D$$DLœÇÈý92ǽó¦ãìˤ« óËúæR(=\*3Æ1ÕÕàÜÙ½+õ(SUmÛ^4Ù]̦Hë`8HÖID¸¹’ì—ãl&÷æMØgêåí—m¯ú²‹YHJŽË¹8è0ú"™X#Õ¨ÔžÇlV2Ö9'PÕüO¹.Ë:é='ÅZYŽ´67ÂÜ̼»»»³³s0]xu'€Ó¦ÕÇ3e|ø&j³R”tßÝ^„6ûbvG¦œ „„Ú¨³ÆqFàG`”b‚W²^âLC3$NkU3NÀ°ÎÅ@] zün̳¬®±ï ‚VZcE )i„À Œ®kû]D$„”RYØ,ëœ[“ÔP L9B%;bb†”¬ŸBJ)ê¼"!çÇdpóf>Púª }µ#…² í»sì=Ù 8V3®Ï¶”º®[.—'Ož¼óƒôóyµ5$-`TȈ‘cL¤µV¸6"ÍJOy vä–¼©a³æA¾ÎlÈ,%Rn­æBìgˆ¹­,GŽá|EáýZ#C^ó5d0GŽ2øë_žÔ€Ä#`£¦i&“‰¼§^wâ 'i%§´žú5M#+k¬¾ö”´Œ)ûÓÉMòHù¯ýp¡e e9À•2ÖjïcŒž”2šÖY¢z_s;ïÄ v½zr¶ecå@\SR | ¢2šÍQ!¿5¢ãU£R]ŒÀbRJ "c°¶°Eå\VEi1Éâ#k‹èó‘=}¶Ÿ8¶@団aM½†—´ý€µR}æµj×&¿¿@jJö¿¸F÷øý1m•6¤4ƓҨ4ʤYi$¦”@– 0aZ€9Ó-Íík§5m+Œb`‰œÖýÑùLú²ÂB?<< !”v¢ÏÞ|rñ1„ü¹$ʪÍ™“"•g^ë¾u ²B Á9L‘N1‚hxlÛG2°b,°Ñ—,½Ë”zˆë$_÷Í!ÑÚ"c€¼§ð‚®eßTLyWdD´Ì:ûº1Bt†a]sŒ Q!€±“Ѹmˆ˜b ¢ÒbDHɧ ô:¹›ÉÒ1¨WJ1ÇÊŒ-ȧižJ÷·Î}¥¾ª—¥RË㼦i¼wyšIï9uZ«Yx/ëÇÓ¶]ÿ—–gÞ{A gFáªk‰(Æ0 ©ë:BÓ4]UŽ7Î&”Xeï¾¾Åú&îôõù@) ¥4s»“Ò”+Y­V€ÄJ)R$· ô&ß!"-²SJR2wP²¶ú˜¬A5̾¯/šR8R7ÇÃ>'+ws ÕÏ™“vï#‘F­¤œvÆX眨¯VÕz4ˉ¼ \YUˆØ¶í`d¹×ÄÍ)÷ò\Ió^)Õµ- 뚺¶%¥’÷œ°Ì!Fˆ)cP²³¥£•ÄBLÉ#ŽT¶1%ï""v­W›UW«ˆb`¢Ä cŠÀ˜8¡Rë²\Cä·(¥dŽ 4ï [”ˆS¢ ·F‚¾X{“F ÌÁ;f®ëQ8qµF 8Ĩ•B"Á¶i¢£5&nH= $²1ŠÒûŽˆ'ç\”¬FbÂÂd´µ6CL.9.¢ÒctÞËÕ¦•Y‰é̹âë·®ú:Î}5…üÈ '¿Ì×òغŸ ÀêO½óæ”Å»ZD¤”©*¸üòËÛe çÏŸ‚ÃÃòEé¸9˜¥ª ,’õ¦ófãËcÄ[æ”YÖ2ÈV?mì‰JY+äÁh6ÖêH.¥ñ_–¥tФ]%ÝÛ¬8"qD®V79 K “»*3ñÑm!œº”R‹Å<¥)†•6&‰T¡sNnKŸdò°,Iå,/[7ô…±Ï…Î%§xÙ&}#¥‰“ ¢ò>"*kK­­1…ÖV¼Q½ÎDeL¡”iš.2RÊ,—4”R„Zië|L bd¥ 3z”VVþ#ÒJ™Á`X–f”Ú°ªêÑhL¤ÄÜ€†Ã¡¶¶d†a=–_ãš;&?U×µÐ_2& K•‹„˜Âu­ªABŒ‰•µó¨µ±(b ̉!Òº(”‹Z*c 2†ç”6ÊZRº ºbbc,‘"PV[H¸5ÞŠ>ùÎC  i2štJ¬6ïàbdÀ²®IiS–!&Ÿ f$%_G£Èµ¢Ò@ “,¤UQÎæ.ÄélÑ:¿X®CH€ZkcåÓù”š¶‹ËUãSÒÆ¶ÞûɘÄÀ>[T‹¦õ!™²2¶ô‰‹rÀ¤c`X®ZŸ¸s!*$%÷ª !Ä„Z“ÒrWQkbèœ!&Ü @БӓޛôV+Ì…µZ©ÂZù¾ìUåhÕh—Þ° ðDíSf^bL™E$²d6eÆ%ÊÆˆÑ3ÇG=êQÐu“É$§lš"nÊX Ç ²6IVJÉFD9å‹mŸ¬›ž‘ß}ã†Éd’›Sòziç¡§p­Šbíý!ésIR,©œ„Œ#ÐÜÑ×t”ø%ót™6æ|\èVò©% %kÍËa–›/[/ϯ…ÂÕW¬Ê¥C¾Ú,Ÿi­ÕÚf¬¢ÄSaÂæR:ë2H'^çqic9ð÷%Í3&*Ô³ “$—+'!0o|R¡gë ²Rf9ç¼Ùu¶ÏÁÖZǨRJ1E[T)­ÇŽj¸ÿ³¹ÏÏ~ Yì Ê‚h½CD]XùÕ±å5èƒ1%B`œiÐ>E©}„Š)©ˆÖ:!pâ 8ÆØ¡¸la¬ðu¼÷ZÑâX;…`„$•0&QRn]iJ)EïCäIÙõ‰ 20{Ž0%H˜„NÌÀ Á(9¡R°!Nj­…¨•âºs„6Æè6b眀o!FcŒÞÈN¦”œ÷Îûº®Q²‰yþ9A)»¹Õ!„ä‚Ö"$ˆF³øh= z_n<ÏòÖí‡ú¹†¬Ø\Rõ˾üžì¥¾ÌdÎÚdm¦$LøãjµBD( ‰bÁµœY¼­ ¨ìý‘K6¹€ ¯Í©Ü&ÝHÇL3³²~nÉea‘DF‡sn±XHºÿÎ9 q­,$q-—‡}7ïÜÒnÛVkÓïôõ•<³ÍpvegfS} S†#TUeŒÖ?\%!çJ›(A}Y±>r%„`ÌŒyŒ Ë!öÁ+D¤µ)Öp’äI1¬á$)zެÖ>©ëÄáG¬Iic7s““V«1Æ „•"ƒdmô^ŒÖrrº^uÉEa )@J"i 9Söæ-Ë1†Qw]7,˾X}îYô{ý¢:E BBM¨0ŠU¢"TÈÌ)Š ISÆh³iùCëþ0! ¡Ö µÖ„z3)¨4Ç„Š:ªª±Fd`ÞP)ä!SY# "æeq+2kOæ ÓŽž7§uC0 JocâBŸÊr€ sJ¬µ•²òáökY9—™*B¥sìºõ¡U–Zk'z»ÌA¥„¢bS¡È!”Kï,!m9f˜9ö¤o¡7¯ŽR0IA•ÿßÏŒ2¹?w¯û6H·jèó6ëy¬9§Ñu]¯ey™»®CÔ2 $”¹¶,‘u% a¶çýÖ¿½=<Íc²;äž÷ôr.#Ú![[[mÛVU%g>§ó¼;»øHª"çY[©ß½Í„³Ù­áñs<]'D„GjkÅpBÊÅiŒ x¤x¡zÔe19ž¥Þ&º%æ„ÈS&Oj-ø“ï—üÿ?[ï¶3I²¬ ÙÁÝ#"UŸöÍhϬ .ฉ7€7àx%WÀ§÷‰ 4 ÁbÏìY{­ÕÝõ2#ÂÝÍŒ ‹´ß;{·Z¥ª¿²2##ÜÍíð€ˆ0óó‰{åÚƒ‘RnÛ« ]Õ”’£Þ½ð>:ÙÇ=ÍÌì­²‘É5’èc°6IÌa ®Ùø|ÀGCÆiÈH^ÉF”àp`F†þaÿâÇ›„:ÍÈxpJçè­öYœšS£MÈÓþqÄqjÒ}ÇÐ`Œ{ždòU« €døÀ ‘Oprέ@¡išîëû ŽK3øóÞÇYæy4†8´KD\—nDâ<ù'ް1cú½™SH¬Œÿ*Ššìf“Ö~ùå—¯×/G!:ŸÏ½o4ļX<^CÅÊ÷÷Œ±ÏHž}jlü¡¸Î(BÁî½ðu]G@(˜¦§ô3*M¬¿íŽ1ÕÚ~ï"-š}!àZÌ¿T¤~|Çau=fMg06ˆF„0ßY!cŽ¢£1(ôü2Šl”Bw)¯P†‹ý&Þ@ˆQ=x–Í£CcD5¥"ûxã±y®IæãËàý~w’N)ÔÔ¡Òª)eUðž<؃åL祙-Óôk¦y.mß ³¥Dû¾_Ï3™ÑЙv”°Ëi÷Ö@Äs™„(yžÇí¿ŸÑÆŽ*»Eê½ù¯>öédll‡ ldOë$‰1,eÈ~›À;“ éA6P«mËœ¾ûr%¢­ßoï÷m_3hcÇ[áº]¥g{ãöííØ žäëØ_y>Ÿï¶ p` ýQÆ ¨QÛÛ͹Œ]Œ˜Ç<²€ÞónTnú­'°¦ñP oÁCö§”àl~"<©oª_¿~5³*=OTo·÷œÐõHѽK€1á %ÛPâŽ<¾ø£5ÜÇU1˲ãzðk^×-âo,ì1cfùØú9YŸ÷y‡~D®äñÆ…].—Qá>zX”S”–|¬äOCâ@þŒm¦°7öÜ3TËæŒOѺñàH´2¥¡€X)Ô]¢ãõd8šÎ<ŸU˜™ãúC',Æ)%1Ï,“sD0@&5;.ü173óbDÛÑOue"Ø[ ŸWœKJˆ”ó]Š$6z¢Oш%HL¦Þ°¦äÁÈéG }p\3¨v¦„h½73Ad±žRafÃÏ_™Ì”™[«¾T"CBG‡šG7 víÚû#B©£¨ À Õ”’SC@e@ydåûº›öe™J¢»ÚÏ?ÿåöþv=/ªý=ÌAÁ™A™À´·ºõ†”xž§Þ»¶Ö¸ÊÓùœ‰¤w£¹•lBdDæ´­+3æÄ9•£ÂéUúÁs“yÊî&½çTFhøÈ-3£fÅ![4²þÐä»Zá·p¤ï…¾(3ŸÏçûÇÝ{@@Ä9Q"ÑîŒJDPD'Éôí‘ùQÞúûDâ6’=žd/G¹›1 Ç_òdñEÜÈjT‹í}»Ý–e‹Ðœ³g!ãùç'Pc³/L°Ãïzƒîj¡ª–’€ç¡® À}ÆìmW‡Ú©Ÿâ-ÎGµçõ=’j£Õ_áXûº9aUÑF ¯ P”>r×ÁdˆÈAƒöð¶$ÈÑÒU³#Z»yªû¬jG&Æ’3%êMZ¯ˆÆÌdÈœA™¥·Þ´ nëʤ"0OYÁ?ö7ŠǵÑ&8šÁ½õÞ]x¯”ôÀæ}‚ƒUMDÍ?0J`"Põ¶h9ÈÝ~¶Ï\]Ê9?ªÔ`½ µ'~€BQµîSD4põ1cA`äG+Áy3xˆ’˜Y&~o­5Ãi>!v•xLóèå=اµöÓi.ÅEÁËé„DÇ$Þa¨~÷ÜðbÛ¶Ñ é©´'¢¤Ú=hä<1cï  ˆ>Ë—ÖöÞuž“h{"*?¹pG×c,"óBχ×~”z;ö¼çì­œIºÞ¾óO§KNà>MÓ/¿ü­¥”Öõ6•@H@ĺ˜Ëåì÷Ä)Á‘òx‡$d mN­zâ‹ÇÎ|bJö.///ëºÞn·~øÁ?Åe¯ÇÐ)ز,¾×â'Q¯Äô?bý¶mó¼ü£\ Ña™ 6¿j"òJ}tÆ~JÛõúèß÷!_–£²«ÃуöUó꣙£êòt4ÎaŸìø¢w Sí_j­ˆž®;N–ýÙkc¦”‘8bö»mwf"æûºq.s.¸×²Î1}ß“ 踄¦ç¬ñœ}Y?¼×®ñŸ¾u9'Ï™)çä%‰™MSÙ÷}šŠ»C{+#«È¶m—ËEU°¤º­È€ŽsÞÖý0IîÇBò0á5wÓÂÝ>0¢j%~ ֭֜cϹ8Îèz½ºC×étr=²HOUa­õt:©*sòr;Ú;±†z„rnÍù|¹Ýn~rÏóì¶ïïï§Ó)&fÈx(e©m]ï._û¾«Ðßüôòi¬Ý+323©´T¸öSNÈ©kãÄÛ¶‹y_Bã‰%í¿±%÷»ªª½)aò*IE!§Ü{MÓ4™¨ûŒJäQC¥”8g/G#Ìû~ó˜=‚\#«àê¶§”–óåãýƒ™Ë2ûú«µ 6W˜Þom9™Ï\®×/½v÷¤Pë÷õ}š²?‰eš½,"eâT GÑê`YoÊÄü1ð/¾=‹‰<‹tx1¢Æ±àí­”’ƒV¢ 9Úä*A®6¹j¨V¤Ø`¡lƒÅ`ÛGîËâ‘0; \>åß;ÏãîÒT¦²p.€[Û`ß6D¼œ¿l{£T¾½¾^.?®TÑ[ª:MË(½äŒ±\Îc’ø$¥­7G*†Cš ¤øØÛÌDüõôÙ a „Wˆþ}ÇÁ®÷èHŒt…¸ÏÁã+‹q‚ì ÑŠ=fJ‡¶µišsrç¹ßnæÏÒ1ï×ãÆŽ9—ØÛŸ*ŒHAÀ ããF4Ù(]¹X¼ rاÞ(DáËæÓŇÙK¹±¯%XÈ–Œ#ÝPz\ûM1ôYÛ;\$¥UÙ·­U¹^_¦r¦óŸ#øÞ;˜®ÎŸàuwKê½ÆœAD[æbF¿'¥{ 6"œnJÎQò1­k*;LÜÝP¢¿…‚CúW=dÌ*÷q_޵bífÀ$`.Ð’ Mzp¼oë#@pk ÉýSÁ}ßSÆZ'ÿ¸ÉѪ¥?‘iWŠÓÛѤ_ü¨!×”Ô(ˆF kŒ ~?Ý»§cû|ŒwãÈ2ªÔ@BŽÖ£‰Q¼Þ•jOeÒišj—Þ[æC éåååíþò—¿üå|.7µZëÇÛÛüãw®r?QoˆøJt ¬CÆvlß±ïûÔ‘,¾5²}?xÆ&ÅhŸå׳<4ùVŒæƒ×t¡½C€ñSF·ý'+ûñ¤ž8@£Øƒúûû»¯~¢‡Ô#8Ò2Væétš¦é~_#Ròè­øI?ž1~©£Å”ïÒè£MÀÇ¢òI9'p[#¦iÄŒ5]T£‘sE¦­=ïŽ9[(¦öO­·ÖZ­ô€Äp>Ÿ[µÁ¾ï¸ ®¦–[¿ˆ¢Þk#"‘Ïaåµ ÌÝîZŸ‰9•ÂaÁ‡ˆµnŸ#˜iš^ßoþwN)ŠJ{|… U@‚*á[îÈJÔá‘Â÷Ïív‹Ø9&±žâ¦”–ùüöö¶Ì3§3Y–¡šçLÊ)%‰U~8¶·6ϳ ò‡ÙÑnÒÁehÜHq’GÏßÍcÁS02&ûí´{œ[ÇÖ1¬ƒV¿¥qrø|}}hŒ·kë?Äã+ýóþÏ×µ»m22¬ýWÒÉŠ(âÙ±7BWóÉ@7Z¼cf ×úPa>ñ¡‡0€ÓýK‰gbžÑ÷),qWcþ;ÆÐàŽ<Éfh2IãÁýùÏÖNU½Ì‹âÈ3,ç>evÑÛ…žîϨÆÃÄ8¨F‘‰'oªØó‘ç>aÇø”ùFh‹¸cŠ'|é¨ 6‚%§iªuoöÒý~ÿó?üòõ럃ìß)ÇŽÓyÿÏK{GZÅþl±Ìßt¢cøÅ|¦8ç™ù4"l"~ùtô1UC”Þí‘ù{Áéżª¦}1˜‡€ëyy}}].g3Ó£ÒS!?”˜ù¾®‡lsï†Ð»JÞ÷=ej½ö^ELºI3ߨ¹LþeN§`µè£úÀq¸¸wL²IžšÊ1AL±È¢$Œ¬Á?Ý5×Ã?í‘pY¤œj­œr"í)û­Uýá‡F§gľ:=x²Ù{÷G¦ˆ#O¶ŒñŸŽú€:b‘>)9?yƒGˆ a|}§ >á?#ü:-‘£lþÇQúÔMG¿ÇGôÌu™™ýõW|| >”ÔÛÀí‡È‘^4ÊÃ>ê/ :’ð{·.¾æÓVx7Nð# E°bÁÍa¥£wìétrè–¯Š€Ý åsëû}]o‰‹¯´²¸œ™ªë|>aýGç.´"‚ÈñJÊãPuüýƒ8µ<1ç#Eò ãW¹Õ? 5¦”<ÐxMç§IàHgרDð·õá¹€ß, ½÷0 L9ŸN—·GÐqÂmŸçYÄ]9MÓ^ïDDœrÎoooÓÌ> ÇÚÀ7x¹³¤°›Ž­8â€FÞÆ¨g4vÆíñ$ß3êFŽÙ(ãtÜ XΉfþxü‰|:ÈfTï+Im@Ìx´Ÿ\~}­µNSÚîuš&Ý6oax/Ï#u­õr¹D:<6Ý¢…€€©OÅqPhð"1Âßï4˧@]…œÛ˜\Ä6ˆ&Kl{ßÌãÐ=ÂÙ˜:ÅYr—ývKe—ßïò¸Kö§"{æ‹ûX–…™÷½FAñ%º ¿ÇHL q”æ‘"° £Øü ê,Ž–X$>-¬|-­±˜Ë. âÅ gÑ~t.½áw¤^‰Lš º{Ûý3bËößÓ–cnòð‹jÜÓV{žVÂÄ ?>>®×Óºo€]Dºn@f§‡G©ÒE­µ)#Û¦óµÖ¿ùñ»\¼Ò®Á qÒIìI_ô׎ÎHĈHû}펬é0Ú©­>çÑÕq@"˜±…Â)>Οش~aÑexê¿P[•rÎæÓOU3e<öÌívË¥üðÃ+¾¿¿ó²DzåqÜkˆÔ£œS¬È¨¯ÇLdÌÆÙ„Q !î^øã>…¹öòÈžÞ À”_a”“#Ý"V4(F#^³O•ô@÷ŒXܱ«Ø{?_¿"b«í~¿ÿå/‰+”^Þä_Êc½ªæ\oø ã¦ñp3BmŸ¤å=Qxb(ü'Íûñ‡qàÅúyJó›6âÝâùŽ£§j+a¬à4ϳÊAÞöÁ‘ç‹€dæ’Úxhmm"xj·¤èhÐVp CÎ$"uo*Î`ID”bûÅ—ñÉ1Púøøó‹#߶Ƚ[%•lÏeBCÚ_9Ïs)åv»]¯×CÅAzÌûœŒÝD‰™¶mC2¯¢/——ºß¢‘ÉÌËRŽú.OÁðö¼Ï7k‚óåk.X áeâOÅ'†¡ÞõðÙ£cáá?È+þŸt¸£q3âãQ=„5Ò¨LâhòH/ipü¦åR»€JI´o7§•|»­úÓŸþãeÑ~sÎ)åÈæÂ¬eì©J{äÜE%½¼§<Ë¿——GŠòvœgI¨¯1ŸGûÍ6ßò5ªÜ¨îèÅDäzüQŸrá±JŒûhÄ›sÍqfxÁ‘èxÑ~òÔØ¹x‘G(|è…ö'WìDݻɱ AV7‰Ø12¦+Ç[(.¹ßeä÷EÊ6¯ý¦ySÅ¿¯7”Ê5îRô”€jÜ÷}^FDØŽ DdTÇôD¢‘Þëߺí~÷ßØÉšçà82[Óã|pýyøãß×h÷ëŽ~3§Ä­ÕÛícš €õÞˆP¤ç\¿cª6Mó¶í§ÓÙs–××WWŒöž§iaºw¹\¼Vò/Ëòòòis)‡“m0iäkèâ»úbÔ8Dâ{Åî?©µú 4æqž-…ÕËULÆnñLÍ»?~ñ!WähéÑ À#id[þb¯µƒžê?ôÅž+1Á L†¿Þ›,âýyEûü~¿ÿüóÏëºöÞÿþïÿ^Eœh6Ïs (¼6÷èm È®¬­%¿½ßðÀµ„Ñtïý|>û]ÃÀ¯6ðåžbçÇ–ð›©ªŽŠògê ÖÑŸjì{Õ Nä­þ‰1çòçoë÷Ó±à‘é¼½½…êùÿøÇˆAĶï”ç¡~ Œp PXFan¿“QÐy´ò“2,ùœè»ÑP !8ÃbØ'"·Û-ìÓ#Ÿ |“î8wv)Ñu]Ïç³ÿê÷ð»ï¾szVäþ#õ'ÚX~çc¼»xÌÊ£³Þ{mm÷ª wÇ=°kí-Ë™9«ºR1DfÎÓ´Ìó)¥€½ !3çÖÄóñ”ÊétIÞ? Qj_â÷ûÝXû-ñUëëÕ£‰÷§B[£×ŠßeO[¢Þô€â³çûý>Ÿ–' f¾\.b}]×¶·(¸ö]´”Y¥‚B,#‘ô[ €8ýœéã1Né‚зµÖHøÛæØwæý~¿^¯ÃdNÍãqòíw< šžú‘1% `w:Ÿ°àˆÀè‰[òŸs6>ùr¹\.Ì<åâ¢ß„H #éµVbæ;ŽM#VFy]˜P§ˆn`øA„Ž"Ñÿ­£öFV;*…ÇIìÛ»<*ýÇ ©ÛŠ=”-Æã¸Ì¢%‹êÓ÷‘ ŒðÝ¢¶|œ6޽­ø¬ƒ»VŠŸ:‘=…+ý¨*VÂ<ÏñÄýŒñç8J³½ˆZНù›$.fv»Ý.—Kt0ÝŸ)Õº!@ïÇfqÞh4é¢ñ7NÕ=½Ø÷=¥4ÁÐôÃ]D>>>rž¾ûî»4•”Ø3:Rà gø¦Ysf äÇÔ¶m[Ý?qU`Tk­¤2bÏ<zª2a™§K¹ú²ˆ®“™Ý·uß÷e™Ì€r¦G»Z˜-€ß(=ÛŸ+=ïQ0„½ŸDøãìýÔqÒZŸ„Žƒ!Á‘ñ FgéÐûÇÈÆ!#አÀT¸ØŽ¡Íß°Ö L¢¢–LÀÑÛ¾ÿÝßý'Œ£¸G̰£[„¾¸žÑîeDÛŽP€@`DK>©ìGòÇ|#g.XÓØQ€ÜíôiÇs#öm丌¹@Z£N\ gGPˆª~ùò%礪ïïï¿üò‹ñeY@»Ïò}óøQÝ{àÝÒØ“ãcŠÍf…û¾ÏóéÌ81ô|-nrh?‰#ý£¥ÓÓ€"ì9F玱®ôû2Ê^›Cƒhl=À‰‡Å4MnOéY¤+IˆaÜ´q–z©!ŽA”¤‰ô‡êíµnóìóÈ‚ˆÄîµC˲ÀCè+B@”O¸íA¨ë7âÓ#Àj|Aø¾=‚=EnâZE›F§œ±Ù9ö_Ÿlò²û'÷}„Œ“Ç:l.vª®;ø°TBÄe™ñývD.açËÎWÿx?Á—Æs/|¿Rƒûâ›-p§3¾ÐŠÙ…ÃúBJØwˆÿ<$cjlÐA"¾+%Hy¿…Yà°a¨ž†ÄÜ~3ïÜÏú¨Üá7¯rÔÕ“ÞÀÒÊO£8#GÒ8YÆ5€WOÃqJ8Hâ¤yÇÇkâP‰-kÏ3©'vÊØæ‹p{6ô‰¡?Ð þþ#/’™½ÿ&ØWÑj"¦Þ;1%ßk(}ý„¾žo®u]“GÜÇ[XN“Úç&÷¹)IËŒ½njz(“D¡>ÞGxyyñJЛÛ¶žÏç<))ûbõ®ªÃÌlÝ·V[Wê Þ{oK)Ó”»hïußwÓCœ€´fµbk-3Œ‡Ì½#ºQ2)zR‘ÁÓõ|ó,Ë~'£ ÂètðÔ§Œ…2ªQ?F5êÆ·‡M!W8B[‡EÄ¢bfÄ„* ú*¦úÇ?þqÛ6/ ¥w§’Œ±rD]ÑglôsÄÙ?©Œ‚sã7Š[­¨hÛûûxðò¼ÌÛLÁˋǟ¾™Ÿl&ÆÀxh?²¶é©zѼOïÔ–”Rkõ`A´ÊÌûêê#êÝ×OÎ9 Ÿd^ž¼ËF-ÃàºÅMˆ"ÑÛvNQ zÓSÁû„t˜Õ(Óä˜õ­Æàò©ÏÆB1„ñŽð÷Ÿ pÞ&bæu½[w}¯Û-ÈÀIÅâa™=4’C/Éå›À 3ç”J¤½Ñá Ç&ïZnÛF—Ë)…®±×ÛµV0`æ@œG "&­Ï§Å÷˜g¹Ç@šÒ“y‰§Ó]%LØïSúë½"Ú<Ï®†úññÁI—e ÞÔÝï¯LX ¤”˜~ƒ/Ü8lfǃy²2£í“cíØÖh†GÕ\„'OCl,d"F0.뺆ø§_äï‘MO37<¢øÛ z^–¿ýÛ¿u¹Ð/_¾,§ÓØ•$|<„Gñ©'᪱Á7*ÏÅÝ»-ÑôíÓØhÛylŠ+a¼éFùy:ü~ŽýøW(G·÷§Ld4OÀÈèƉu»Ýî÷û²L‡¡C÷°…@þÆG1Øñ÷OÌ1p¸<ä´‚ÿ¤•6ÒH¢¢žW{B«ŒˆÖHF­OAFBžW»cml™åœÖà)¥ùtÙä˜Ñrý7Š@þìBüËÿKtm¨QIm40õ¯éƒ)_HÉ;S¿ÎBD±°Wò^Ým[Á$&ŽaïœÏï÷»oŇ}+8®=¼OrÎÎÅ731Uµe*Ž9ض-%2ƒ”Soªª·Ûmš ±*€»]$Pƒ”Ó2;¾aH¯ Âûn1¶bH<¹KH(Ï@C¶ÑŸñ8 öé¨p2î_(‘½G¢œç¨4=¸Œ­–'}g·JÎ90ZJ‰ÆÔÆ}§ßßß×u2•2E/?$a£iâ¨Rí¥SØCØŸ¸·QpE¡IΊ÷ÞŸ+Ä. ñßè8ôd$ñŽMô§ÆâˆÅO”H!kݟΆ1[|®9ŸÇ⺮ӣÑ÷±Z8P¯AWŠóï÷Ž #Nx¬Çc*¤Zßþ€|b§Ù˜uFÜ÷e9H¿ú>¥¨c¡úD·øÕyÛV—NeæV%€‡¥Ä5ún®‹‡àXv+͸ü[»Õmí3 2F)Åâëº&yqüÞN'¤HþÃHæQíz½~Üo÷Û4MÚED°¤ìjYW«ˆ§õööêGk4}Tõ×_õ‹KÄ †"ÂH©"¨µ‹È¶¯×Ë—ú’îÛ R*”ø(6ENçë4-Ûý•hûQØ7ê5¿¿a÷ô |êÔŽx¿¾ÂbYœN'‡×›!„UýŵV3ï…¡Ëõù³#¢Þ[k]¤#31'"t N¯ÛÞæÓŒ†¥ä^»¢ºñ0¨©[æTèDÉ@úÞ ”ˆÕcó¶m§óÔê6_¯ÿþïÿçt½^™S­;¶VÍ8gw3'ÿ®Þùq /v¼@{Þ±ù£3ÍO!éGÓ*‚ŽŸs!Xº`p»}¤”—eî]˜ižç}ßr.^”ùÔÎÏxÒ¹U(ÁúÕ>L0˜ÜRû¸ÏÑÆ{ú‘iÝo• ™I5:>–sÕ[kÕ£¼‹zò8*^G:ÆX1­ó'w>-­5Sqñ/BØ·LŒˆz«LHÈV²O”“ZG„.5qi}/eB²m½3#!¤’z×Ĩ*j¶muY&ëSΦݘ˜ÝYL¤303  €@“Ú›æœÙç})M%õ&}ˬíííÛ4M뚉˜ ¥ÂS®µ­}O© (‚õ¶/óÄŒ„NpÕÄt¿}œÏg/ÏM%Mž™Ú¾mþÃõ~#¢º÷œs«;1»PÏåâ˜;«õàBìûæj«—Ëùããcš&ËsÙo[oŠdSY¶ýž¬ðÄÀC·¦ E‰›µ)Mjæ*^É@i€{@’!0’‰ôZ%M…oÛ1­_×}š&Lìò¶§2GÌõcø—×o[ý¤‚ŠW&Ë4›(IL©%¨mc´Þ»¢-Ë1÷,¥¸ÝÖTòØKòeÉ%RßÅü Œß÷M€É·V˜T€ó$ÝT›ߺw5™KJ”EÄT‰ørº~6%àhŠ—e2ÊÜMövLó™¹Öæ¤Z$ô†O“.*DÔë§®|J‰9¹qTmÕÁb½?„FˆÈ™@ªÓ|úþûï×ue„Zû<ÏÛ~ó¤Ä˜ÃÆØ!ÉÓ”Ù7•˜ÙûŒ—Ëåýý†ÀMÜü4çmÛJ.9ÏÓ4½½}Ë<¹¢Ôí¶–SÎ)yeÛ¶yž0ç|»­¿þú«ÇÅÚÚ—/_zן~úiÛ¶p=‘¹¤Ÿßß—ez»ÝJIó|Z–©” ëº‹4¿CŒ v”0Ž)^ÛjÎY»¤”PáÝ[CÅårUÕ½ufّȺ•2å<½¼|ùåç×\`›Õ§SÀÐ#ERÕû}µ±c嘗ÊqÚ8|,¢71_tTµ¹T®b7@EC`3Å” ªXÊL()³tåD½§B‰¬×iZÄD@jëÒ„•T˜‹4éÒ)婵^raDLH\%Þ›˜j}ÿXï{"f¤ëõºír:]JB"DC̉ÄÄ q“º7pwCômÅËìòiR÷æ"ú$"çÓ¥µæœÊ!¤Õz «ú 3Ä¢Õ ˆØµÍ ‹‚!S2f6@#|rJÿЩ‡€ÈÑÕv5$E "$#—î4Ï~ütNĆ6Í'¯ÁÕ$_Ï4ck pDÌÄÆt‚pô×B©9Ç?g`øå—_ó¢Ü{G5ë’3;zß÷œ§”¸çÛÉ—uôvL…LÙÍz„œØ‡Ö¬*9-l (ª"xSî"`YÅK'&¹GDETEi}WEÌ(üv0`3#1C:ðN­'ÃÅúÑœB"bà„4ŽíÜifœÀ<Â1Sk=Þ*CѪw˜‘9*¸Ç‰;šÑüÖTqœ Dã[DDv:²`³T¦Ä3ä”8åt$§Ó€–eqeÐ’gßøA5²ýþøßê7‡øøÉÑ·®­ñõë×}ßS¢÷÷×iZJ)‰ùr>||\//ßוöº.§é~¿;gò\–‘P¦‡iµV{&œ7×®Ÿr,š<—›Èéå¥Öš˜ 3@…Ì©n{Έ×û=¥„`ÒÅT«ì A{ËŒË4µÖ&e¢3#U«µ—2«ŠýGÇà'Ð@ÌSG¡ß 4íŒL‰މ¡iï&®È® îSÏI(“"™õªÈ€È]ªHQ”ÞUÌ´›`çD¥€dÄÖ»Õ;K%D%¤*ÒUÄ¡, ²Ö-ŸÑMUˆÕ:¥le& Ø~ùõ~úáGÀv}™—…Û¶ š‰©5ƒŽ”™€!Šwƒ8i.Ìœk[)“¡•)íÛ,U[N³I­U‰RÎ,fØ;#`S³’=›¦Z¥KOÙˆ…˜D›š¨AÅeYzWÓÍTæÓ… kÝ‚Åò¤ØÓZC$`æzUHf Hjf^“"™[iï÷f"˜’¶F)MóL“²·†`¦B‰)þÿ£ÿI__þ¿ÿŸÿS´â¼\)©e*fvÎî  ËµôÞÅQ|ž“rJhÖ0äÒ¬˜ºq4&2—Ñ<ì É€ ’&N‰ÓÁèDÌœ»)›¡˜K˜3‚‘ʃ›>‰;ìQڶljúV>+[þƒ3#ØUu±ù@ÿ…BÉaÔ*€3„à`lµoµ§inUr*~bÂbb™sâôõë÷G9¬PÊtšÏSž™yžNïïïó<ÏKé½ÏsñùÌ—Ëuš&y÷,OZ_ow×¾œN‡ZCJéííÍ#×õzýøø˜çÙ­àv»ùxÕñ~)S n\ùÔp¤œJÕÓÁÿt¶gJÉ ƒÿì¡4ØOÓ4Ý·Ì´­+å"% éF œŠ™–”o÷ºïûív›¦ÉŠ£l‹·E¢d°ãö$÷QŸ›Ž$|¸¢r9ž_4à1„ _%ÃTÛ˜ÉLRb&0 @ef· ääÝ'Ë•9¡öVrî½½~ûµî+"RΦZÅ€äx"@ÀyÊêâÖ}Ê#"Œ÷}“e.—ó¨ õ~ÿXæ”sz|wxH¯¸úóúH)™ØÞúD“¡Nsˆ¦L)³™ª1!‚*¢1£j7cUAdU‡z ½›Hcæy.'E"¨uÓÇ;¸2ÜÃ?|–Z«ˆx’äÞ±§Ò‚OœD¨¿U%ŽæzHJ¿]D@ôz½N)ÿõ‡Ó|ΩüÍO?~ûå×ÓyfÊ)驜ö~0–¥”X­*cBV7Xòæ4‚qJ"Š"ÊH >m(CÐ*Z¥!Gòÿˆlªb`Ç{ºm.0€!2‘°ÛЙ‰Œë L®ÕZ;uT=Y)8¦œ)çòh Zô½a`ŽÇyÚ½ùh¸¥C]wÄmjÎEUBºµ–}ã=fs¡,X8Myþïþ›ÿöøïÿÇûÛ[šÊË应"µ™ê41=Z·Fœï·^ÅÄÐȺ4Î$ª½ d"$5Ón(HJHŒÒÍLYÇyeT‹æ)3×z_×€ßÒô@صcЧ ÖMÈPÑLtß»ãÑj­>÷{ÌÔÍe™ý÷­õ´Œ!ÀCDÍÖz@´¼»ÂÌîFð)æ\–<-oo?|ߘùtš pžDüúõûDL”–eùúõ«ˆ”’ÌP¤Ñ—/×û}[–iÛöZÝAn/shžgÓ^J¹ßï>î»^¯Ûý棜óétÚ¶-QN¯¯¯///"r™O"rkÝëíLœ>îëõzõ “÷&)0m¦v¹^?ÞïÄ´­Õ UÀ ¦,"Ò$çd®IÒ#"èi™Ê—ùã㣤ÜöŠøéGשȹ¼½½œò”ö}iŒ–o÷›'e¥t6è EÆQ¸gÛ¶i™TÕ9wSž¤‹¨äœ×}æåýýÝ•íÈÌh@𿥵FH÷usSNy]×Ó¼$J½w•£@˜Ë¼ïûÞvfN”<.÷Þsb­’Io­îžöÏSiÛ> ¬uÏ9£)¨pâÞj.ET¬émÛ¦y&&2k½çÌDÏóœœDÚ*'J   L€ËiÙ¥—)ý›ÿãÿ×ÿêM\Á\–érÚ÷N祉hï½ví=O“[Ý›‚M™ïÛ&½/çs¢Ù´+KBJ”çËi»¯—åb¢”ØÛ‹½7—Ù÷º,‹*äœO'÷Uò¡‡Îó©µÖš,‹ûZJŶ”ʾ×ËåòÓ‘Ðó5úØÌü™„}ߦiJÉ먵‡ø»ª SrÎ¥LÞŠž¦ÙÖûÁš’î°.¥˜HÎüÃ27‘éÇ/Sffnûnf§yªõž‰­‚YÝ·y¢”Òí†S*{Û®§KÛkáœ)Ý·m™¦Þ[á\·ZJ11íz¾^Öu5"o`Cð J™Tõãã6M³ªÞn÷eYN§×í–rÙÔÐÜEXâ¶5"2¢~¸äòù|®µö®D˜R1“Ö¤µ~:][§j.€§ ~x·ÄSÎ>[ÐiZ|€v»­ß}÷ݺº£U~}{gæ<ÏÛ¾ž–EĤ£ªý“?üÓ}oÎûî»ï~úé§Ó‰™ç2%<œÄv4É\ªšõ&З’[Ý´ub04½ßÞ/—KNôþö-„®×«“¥öõ^Jùöí½¾¾.Ë’Ü»Ñ?À­x< òΗ/_‚¨ÜZ+er‰‰Z-çÔ›€ ÈT0š§Ó¶mf(ààà~¿ßæyvWÎiš¾}û6MÓºîª Ð¤[˜!æœ×õ~¹œ{¯///[ݽè½\.þë/µÖ”è~¿—Ì€à¶c!³íR0//Ìœ<ŸD$‘îK™9¹¥³*ä|´½D$¥’ÒÁZÊybæeqÞ–O!¯uÛ=à9T¨ª"§Ä…WUQUzdÂŽºè{ÑÖ®‡K –“ˆ¢è—Ëõ~¿çerYñ½¶”’u€ü`GJ—û¶3`&vÿtrÕy‘ÖjÎ%甉·–3¥œ˜ {ݧœ·mݶÍL™ÓœS °”²ª`ÎæÎL˜fÐ#,Ïó 4áè!jª T•DñéH:‰©…7ÆQ—3FCÃ6$ÕbVÂ[¡cåg¯w=\)ÐÑ˾ñes¿ß½ :hIÖ[s”“×D‚‡wwñçÙÖ·ooÖ…ršXM€UÅišöº‘Áj(íû*M9!§‚ˆ«ëO¥òþú6ÏóýãÖZûòåËëû›[Ì!âÖÝ{÷¯y{ÿØj{¢#¢ˆ½¾¾ûæœg5³mÛ{WDK‰kÛÀH­÷¦­µVeÛ6ÅÏ©Ñù|v"Šª}èÍô72ž»}ûõÍoÝý¶é•™õË—/Ërn­}ûö¶Þn)Ï×ëõ×_þL )SüøøÈ9×½¼;mþxßßß¶º÷iY®—ïDô|:ÿôÓ¾ÿî§óõ%4Öûº«õ}W!fö9©?zµÎÌóâôû¶ïÛ2/á/mÇiš<\X$"Á»tFÅý~ß÷—Úª€•Þµ·Ý‹»y/¿½½=&¡VkÍœ–e!´v»ýò§?s»”RÞn·B»|ó<ÏÀôëë·\ ºQ5颊)wm`D ™KJdÝÖûG™uvÅѧêš9ˆ¡”@·­¦D)•u]SÊ­µëõâ‹·Ûm”| ¶“™!sëÍñižGù„¿þ¬wz0¢BA_Ä"i­OÒæ"╬ Rνµ_þú×40H‚Ìè`ŽÇø(%SåeB’TDÚ¾#’#нwv"î]µ?$3dJè Ët™T¥wAÀ)O§ù2ÁØÿÃOl¤®GkÅýå»ÂùòâN¡9õ8Q•o«ïFDµmSY ÜÏ×ò<¹Ž@¨}~ùòåýý½”RkŸÊ’>£ÀÙèSÐBf~{=ŸÏ*æßÉž¡$‘ó´®«Ÿ>Ž(9;Â@µÏ§¥îýŸý³¿¦åtù²Þ›šÂºîûºQbm)y÷*?TjwU]×»÷U¦iòÖÞ! Ъ¼•F®XW•R²Ù!^Ä97‘ÚZ 'ØÈ§òï@poiy¦MD{ï> 1¬N»‹×/y{{c>F¾à~ýõ×išö½†DN­‡uŠh{}çùúõ‹è~¹ž>>>¶m{{{›Ng_“_¿~íýòÇ?þ‹ói^ÎÿÅ¿ú×ÿË_þS)åÇüù矼æót:¹œù­:-U%J­íïômL”š3{ò F\×Õ%^Cãí‡~øöí[ñ=rÝî÷ËËùèÎÔš9¥’Uµ‹`bÎÉ‹ÙÛû‡/¼ÖŒ¸ði:)êvÛÖº~¹|1²9ÏF&UŒŒŒîûöãw?î­eæ½5àœMÄÛ- à³%Pu•ICäœüúÍçܬÕÇB’ „M|œ2!ûåhò0;p©R'9:Bp´Ø 1DÌiòAÛ'óÁï;FÉ¢¿ñN(")Ìð„{üS¯FÄòƒÌ/"÷u=—}«ó2¡a×>—yÝW4¤DĉZí€vZÎ{ojH”F †Í{LW(Ä‘B#?ñˆH9©|REär¹Ün·°íˆÔ#Zu!âÌm£HæéêÇÇÓ~rÙ°F÷¾•'8Û¶¡!žÏç_~ùyZf"z{{ëÍê®ëº#|J¶*Øzûør½xË<ÜË]@ÜøÞ› |?"&NQ&‡†—G•']ƒcÿ?ÿOÿÛ'5¿õËåâù 9dö~¿¿¼¼¸`fm=MsÊC<$˜ânßâÚÍËùôq{÷`áÚõa±-üC¢„|é慠‰‰à¶Þ—eâÞ5ç£ùºm÷Âi9•iÊ)Ó<—<çðã[?â|3ŒÞųøùLéf¸,Óý¾1#snm/e&‚”S¿}ߥ6.¹pªÒQm:-mÛÓTP­JÏÄŠ ­wS2h*sž÷}%Jf‚FÈpšÏ·õöížó ó|Rí{«îìI¾§‡n4ëöÌ즳jÝ÷už&í½g>Öh“ž¦²º=.óœÖu½ï[Ê9Q2i*Ö—éTæüúë[*ŒF ’(wm½ %.)ñ¾nÈ„]¥¤Ü¤;M‘œ¬^{Ó.búåËWr²Dh•ø7 bGð]·Ú}9úÁND÷ûÝ×R¬OÆwHQßT1‰N>YƒÁ»×U̦9GÑÍÌ )Æ‹cà@DUK×ë¡à¶Ý×Óéä5æ‹+ŠPøXjbdû¾Îói]o SYŠTÉsî{¯R§ii­IÎn¨'{«\>Q¦#—þÉ2GU8S޽³µúp'PWó=Ÿš¥ªš29ò6tSFy¸êÏöÖÚׯ/.Iìµq_¯×ÀÙ3˜ëõÊHmÛ—eùöú˶éëׯ"öå凛ˆ€Q7]–…o·;aèÁîöB™O§³gÓñp=zÌóÒi!mø0ñ>$Ãvo‡Ä½×ƒÌ ¢ëº®ëúòòr_oÞ Ã÷mÛ8‘õ†É¡XÎe!3,%Ýn+¢å<›9ßró1È_þúçï¿ÿÞóÏZëÏ?ÿì¢HažÖX(V¾ßï9å”xoÌ̆„(×ëõv»ù3øîËËûÇë¾ïÓ”¿½¹µO"‚÷÷Ûù¼0çûý£59ŸDPjmgÎ"-ª›P¡r|Ùº®Ë²,ËT$¯Ì0ålª­wBÕÞZ9ŸN¹”Vkm­ä ˆ½5,)ï­'bï„Ú×íí0ñiš[kçsn­½¾¾Þn·&J…ÅTZ_wM)•2ÕÞÌô~ïÛf̺÷–s¶JˆÅ'N¬‰s­•ÓdL%¥”Ó åŒ‡ÂWNùÓùÍ„(1ÂC’Œ¦ð`ΟNh„¬ª(©²µª`HD`àUf#ÿߥSoØ;,Ë‹i–ÞÁ91ͽi«þ^·y>©ê·oßÞß6"JÄëÏï§ó5ñŒhšõõÛír¹üÃ?üÙŽ9±©ô^EP{ÿúõ«[Tð-Œˆ|› ì)%ŸÓÓkÆÐ¤¹”€çÿì?ýÏ=šÜïwÐgÐZË%#¢ "S)Q.S­;Ò+nFЉÐ?Õ±$½·e™A¤§Ä?þðÃûû»+[¥”¾~ýê©„·rúå`)ýÿMÉŽãH D¹æ"»z–ÿ›O˜ïª²”+9º5 øà“!NK F¼` @ZÊyïÜxûé.;aesSa"þüº¤]Ëkù@âó¹TáD$V©k[)OÍ€lŽ{KB’¹ÌúX¢9^Ä ÈcîÖ§p!I{AË YRÒ’ÊA(ÔÛÚŽ*ـܨÔGJEs.¥Š&faѵö\;—¢)Ë뺈¥õaŽ8Û`æÙ¦ªúòRk{µ×y~9çš*‹øò>¦œÝ]’2 ‹: ‰ô¹q̵öfb^kϵڢʬ,<Æþ>_f°l2›! «fÜæÛ|®Ä€d€´¶­mHc.$¾ßûöÖ:!ïm»ŸˆÏm'bºc}ˆÔûÐôîõ[¿œâ7Öî÷zú÷#FkIôlÄà¿ã0úÞ6q˜¹ÏÝûZÓ8§ZËCSÍ,ym@'æd†ís8 Àòa¾Ì—$Z{ yÊB sõµ;2¨"’¬mö}½R®€ôüøñx~´1r­ßçyÔ#¥ŒÄñe{ùn}º¡;Ù†5mŽ=G¨ 3éZ•îÄÌíl{Œèæoˆ®ªÆá¤ÀN…ô±÷®å9‡­é„*œ‰QˆAĈÔ6)«¤¸3g¦ô|üÑÛbN­Mwr§µiM˹¬eD<çF¤vRêšfÛÇóñxºýŸ¶ÿxþxOpüüùeÛÁññx¦”k9æ6Db‘”²¦dækowØf{ÛÚ¦š4å1f3¥ÜÇXk_­Íµ[)gªõs©&Õ´ÍŸÏÌ©Ç#©å(¥´³‰ˆo¯µ–TÆnIRÎYE1’½Ù3wpp!Adí=ÖL9×Rǘ³II5˘1""¨)àÚËDçš9Q=¯KEbv¸y‡·ÊN´û¦»š£Ô½wði¯ã½ Ùï­_)5§PjbZŒŸÖï,½3"aúz½~= self.endFrame: self.updateEndFrame(lastFrame) newActor.onAddToDirector() return newActor def addMultipleActorsActionsAt(self, maa, position=None): """ add MultipleActorsActions object to a director at a given position Bool <- addMultipleActorsActionsAt(maa, position=None) if position is None the maa is added at its current position, else position can be an absolute frame at which the first keyframe of the maa will be placed. The boolean retrun True of the maa was successfully added """ mini, maxi = maa.boundingFrames() # check if this MAA can be added # it can be added if no existing actor has anything between mini and maxi if position is None: position = mini for actor in maa.actors: objAnim = self.findActor(actor) if objAnim is None: continue # there will be no problem adding this actions if objAnim.actions.keyframeBetween(position, position + maxi - mini): return False for actor in maa.actors: actions = actor.actions actor = self.addActor(actor) poskf0 = actions.boundingFrames()[0] delta = poskf0 - mini val = actor.addActionsAt(actions, position+delta ) if val is False: raise RuntimeError ("failed to add MAA") self.computeFirstAndLastPosition() return True def getStringRepr(self, pos1=0, pos2=None): """Return a string description of all actions. names, posLabel, posStr, actStr, fullStr <-getStringRepr(pos1=0, pos2=None) names is the list of actor names See Action.getStringRepr for the description of hte other returned values """ allActionsStr = """""" names = [] nokfnames = [] nokfStr = """""" for actor in self.actors: actions = actor.actions posLab, posStr, actStr, fullStr = actions.getStringRepr( pos1, pos2, actor.name) if fullStr.find("No Keyframes")> 0: nokfnames.append(actor.name) nokfStr += fullStr+'\n' else: names.append(actor.name) if len(allActionsStr)==0: allActionsStr += fullStr+'\n' else: allActionsStr += actStr+'\n' if len(nokfStr): allActionsStr += nokfStr names.extend(nokfnames) return names, posLab, posStr, actStr, allActionsStr def afterAnimation_cb(self): # subclass this pass def computeFirstAndLastPosition(self): mini, maxi = self.boundingFrames() self.firstPosition = mini self.lastPosition = maxi def boundingFrames(self, position=0): """ return first and last KF positions for the object """ mini = MaxKF maxi = 0 for actor in self.actors: action = actor.actions minia, maxia = action.boundingFrames(position) if maxia == MaxKF: continue # for example , in 'redraw' actor case if minia < mini: mini = minia if maxia > maxi and maxia < MaxKF: maxi = maxia #if maxi==0: # maxi = MaxKF return mini, maxi def addScenario(self, name, scenario): self.scenarios[name] = scenario def start(self, setDirector = True, title = None): if self.gui is None: gui = DirectorGUI(self, title = title) gui.root.protocol('WM_DELETE_WINDOW', gui.root.withdraw) self.gui = gui if setDirector: for scenario in self.scenarios.values(): scenario.setDirector() else: if title: oldtitle = self.gui.root.title() if oldtitle != title: self.gui.root.title(title) self.gui.root.deiconify() def __repr__(self): return self.name ## def deleteActor(self, actor): ## # delete this actor and all its actions ## name = actor.name ## if self.gui: ## self.gui.deleteActors() ## if actor in self.actors: ## self.actors.remove(actor) ## if hasattr(actor, "guiVar"): ## if actor.guiVar: ## actor.guiVar.set(0) ## #if hasattr(actor.object, "animatedProperties"): ## # del actor.object.animatedProperties[name] ## if hasattr(actor.scenario, "animatedProperties"): ## del actor.scenario.animatedProperties[name] ## if self.gui: ## if self.gui.selectedFrames.has_key(name): ## self.gui.selectedFrames.pop(name) ## if self.gui.autotracking: ## if self.autotrackDict.has_key(name): ## self.autotrackDict.pop(name) ## # this will update the dictioanary with a new "clean" ## # version of the deleted actor. ## self.autotrackDict.update(actor.scenario.getNewActors()) ## self.gui.drawActors() ## ####################FIX THIS ########### ## if len(actor.kfSetId): ## for kf, setId in actor.kfSetId.items(): ## kfset = self.gui.kfSets.get(setId) ## if kfset: ## kfset.removeKeyFrame(name, kf) ## if kfset.getNumberOfFrames() == 1: ## # remove the set ## self.gui.removeKFSet(kfset) def getLastFrame(self): # returns number of frames in the simulation return self.endFrame def getLastFrameWithChange(self, actors = None): # returns the last frame in which a value changes if not actors: actors = self.actors last = None for actor in actors: #if actor.isFullRange(): continue if actor.visible: lastFrame = actor.getLastKeyFrame() if last is None: last = lastFrame else: if lastFrame.pos > last.pos: last = lastFrame return last def updateEndFrame(self, end, updateGUI=1): if not end: return if end > self.endFrame: self.endFrame = end if self.gui and updateGUI: self.gui.setDuration(end) else: last = self.getLastFrameWithChange() if last is not None: last = last.pos else: last = 0 if end < last+10 : # when recording we want to make sure there are frame to the right self.endFrame = last +10 else: self.endFrame = end if self.gui and updateGUI: self.gui.setDuration(self.endFrame) def run(self, forward=True): """ used in DejaVu/scenarioInterface/animationPanels.py AnimationPanel.runMAA """ if len(self.actors)==0: #print "no actors" return initialize() redraw = self.redrawActor start = 0 #end = self.endFrame self.maxFrame = 0 maxFrame = self.getLastFrameWithChange() if maxFrame is not None: self.maxFrame = maxFrame.pos end = self.maxFrame gui = self.gui if gui: if not (gui.startFrame == 0 and gui.stopFrame == 1): start = gui.startFrame end = gui.stopFrame self.maxFrame = end + start self.moveForward = forward if redraw: redraw.object.stopAutoRedraw() proc = RedrawActorProcess(redraw) activate(proc, proc.execute(), at=start, prior=True) #print 'activated redraw', for actor in self.actors: if actor.name != "redraw": proc = ActorProcess(actor) activate(proc, proc.execute(), at=start, prior=True) #print 'activated ', actor.name, action #print 'simulate', self.endFrame simulate(until=end) #self.currentFrame = self.endFrame if forward: #self.currentFrame = self.endFrame self.currentFrame = end else: self.currentFrame = start # call callback after animation completes for f in self.afterAnimation: f() #self.afterAnimation_cb() if self.redrawActor: vi = self.redrawActor.object vi.startAutoRedraw() def _timedDraw(self, director, at): director.setValuesAt(at) director.viewerRedraw() dtime = time() - self._timeStart fraction = min(1.0, dtime/self._duration) frameT = int(fraction*self._nbFrames) self.frameCounter += 1 at = max(frameT, self.frameCounter) #print 'AT', at, director.endFrame #print dtime, frameT, self.frameCounter, director.endFrame if at < self._nbFrames: self._afterFunc(1, self._timedDraw(director, at)) def runIn(self, duration, afterFunc): """ used in DejaVu/scenarioInterface/animationPanels.py AnimationPanel.runMAA """ from Scenario2.director import MAADirector director = MAADirector() director.addMAAat(self, 0) self.needsRedraw = False director.stopViewersAutoRedraw() self._nbFrames = director.endFrame-1 self._duration = float(duration) self._afterFunc = afterFunc self.frameCounter = 0 self._timeStart = time() self._timedDraw(director, 0) del self._nbFrames del self._duration del self._timeStart del self._afterFunc director.startViewersAutoRedraw() def findOpacityGeoms(self): """a helper function used in setValuesAt(). Finds all opacity actors and returns a list of their objects(geometries) and a dictionary of the parents of the 'opacity' geometries""" # find all opacity actors and the parents of the geometry opacityGeoms = [] parents = {} for a in self.actors: if a.name[-7:]=='opacity': obj = a.object opacityGeoms.append(obj) if parents.has_key(obj.parent): parents[obj.parent].append(obj) else: parents[obj.parent] = [obj] return opacityGeoms, parents def reorderTransparentChildren(self, parents): """a helper function used in setValuesAt(). Reorder children of same parent from back to front""" import numpy for parent, objs in parents.items(): allobjs = [] for o in parent.children: if o.visible: allobjs.append(o) zmin = [] for obj in allobjs: mat = obj.GetMatrix() p1, p2 = obj.ComputeBB() p = [ (p1[0], p1[1], p1[2], 1.), (p2[0], p2[1], p2[2], 1.)] tp = numpy.dot(p, mat.transpose()) # save closest Z value for this geom zmin.append( max(tp[0][2], tp[1][2]) ) # remove child from parent's list parent.children.remove(obj) # sort by increasing z sortedl = numpy.argsort(zmin) # append the children to parent's children list # ordered from furthest z to closest for i in sortedl:# parent.children.append(allobjs[i]) def setValuesAt(self, frame, off=0, actor=None): #print "setValuesAt:", frame, self.name firstFrame = False if frame == off + self.firstPosition: # first Frame firstFrame = True if actor: actors = [actor] else: actors = self.actors self.needsRedraw = False for actor in actors: actions = actor.actions if actor.playing: actor.setValueAt(frame, off) if hasattr( self, 'sortPoly'): if self.sortPoly == 'Once' and firstFrame: #print "maa.name:", self.name, "sortPoly once" opacityGeoms, parents = self.findOpacityGeoms() for obj in opacityGeoms: #print "'Once, opacity geom:", obj.name order = {'+Zsort':1, '-Zsort':-1}.get(self.sortOrder) obj.sortPoly(order=order) self.reorderTransparentChildren(parents) elif self.sortPoly == 'Always': #print "maa.name:", self.name, "sortPoly always" opacityGeoms, parents = self.findOpacityGeoms() for obj in opacityGeoms: #print "Always, opacity geom:", obj.name order = {'+Zsort':1, '-Zsort':-1}.get(self.sortOrder) obj.sortPoly(order=order) self.reorderTransparentChildren(parents) def getAllGeoms(self): """Returns a list of all geometries driven by maa's actors""" geoms = [] from DejaVu.Geom import Geom from DejaVu.scenarioInterface.actor import DejaVuTransformationActor for actor in self.actors: if isinstance(actor, DejaVuTransformationActor): continue obj = actor.object if isinstance(obj, Geom) and obj not in geoms: geoms.append(obj) return geoms def gotoFrame(self, frame, set=True): if frame<0: frame = 0 elif frame>self.endFrame: frame = self.endFrame if frame==self.currentFrame: return self.currentFrame = frame if set: self.setValuesAt(frame) if self.gui: self.gui.placeTimeCursor(frame) def configure(self, **kw): """ should be implemented by a class the inherits from MultipleActorsActions""" pass ## def createActorFromData(self, obj, propname, scenarioInterface,filename, fields, ## data, start = 0, end=-1): ## # Create a special actor whose valueGenerator returns values from a data ## # sequence such as list or numpy array, This data is read from a file (.adat)-> ## # see actor.py/adatFileParser ## # obj - animatable object ## # propname - the object's animated property name ## # scenarioInterface - scenario interface that is n self.scenarios and "knows" how ## # to create a regular actor for this object (i.e has createActor() method). ## # start - first keyframe of the actor ## # end - last keyframe of the actor ( if end == -1, then the number of frames between ## # first and last keyframes is len(data)-1, or one data step per each keyframe). ## if data is None: ## print "createActorFromData: data is None" ## return ## assert scenarioInterface in self.scenarios.values() ## actor = None ## if data is not None: ## assert type(data).__name__ in ('ndarray', 'list') ## nsteps = len(data) ## firstVal = data[0] ## lastVal = data[nsteps-1] ## #print filename, len(data), data[0], propname ## # create an actor with ReadDataInterpolator valuegenerator ## #try: ## # this will create file actor with two keyframes : "0" and "nsteps-1" ## actor = scenarioInterface.createActor(obj, propname, check=False, ## addToDirector=False, ## actorData = (filename, data)) ## actor.datafields = fields ## #except: ## # warnings.warn("Failed to create file actor %s" % propname) ## # return None ## if actor: ## self.addActor(actor) ## #print "start=", start, "end=", end, "nsteps=", nsteps ## if end == -1: ## end = start + nsteps - 1 ## if end != nsteps-1: ## if self.gui: ## #this will move "nsteps-1" keyframe to "end" keyframe ## self.gui.selectKeyFrame_cb(actor, nsteps-1, newframe=end) ## if start != 0: ## if self.gui: ## # this will move "0" keyframe to "start" keyframe ## self.gui.selectKeyFrame_cb(actor,0,newframe=start) ## return actor class MAAGroup: def __init__(self, name='MAAGroup', maalist=[], startFlag="after previous"): """ MAAGroup constructor MAAGroup <- MAAGroup(name='MAAGroup', maalist=[], startFlag='after previous') """ self.maas = [] self.actors = [] self.firstPosition = 0 self.lastPosition = 0 self.currentFrame = 0 self.redrawActor = None self.afterAnimation = [] for maa in maalist: self.AddMaa(maa) self.name = name self._director = None # becomes a weakref to MAADirector self.gui = None # will be set when a gui is created self.scenarios = {} self.maxFrame = 0 # These are the attributes used by the sequence animator for computing # time position of this maa in the list of all maas. self.startFlag = startFlag self.startOffset = 0 self.editorClass = None self.setOrient = False self.needsRedraw = False self.sortPoly = 'Once' self.sortOrder = "-Zsort" def AddMaa(self, maa): mini, maxi = maa.boundingFrames() if mini < self.firstPosition: self.firstPosition=mini if maxi > self.lastPosition: self.lastPosition = maxi self.maas.append(maa) maa._maaGroup = weakref.ref(self) for actor in maa.actors: if actor.name.startswith('redraw'): if not self.redrawActor: self.actors.insert(0, actor) self.redrawActor = actor else: self.actors.append(actor) self.afterAnimation.extend(maa.afterAnimation) def findActor(self, actor): """ find an actor if is exists in the director actor <- findActor(actor1) actor1 is an instance of an actor if there is an actor in the director withthe same name we return this actor else we return None """ for maa in self.maas: _actor = maa.findActor(actor) if _actor is not None: return _actor return None def makeActorList(self, maas = None, reverse = False): self.actors = [] self.redrawActor = None if maas == None: maas = self.maas for maa in maas: actors = maa.actors if reverse: # In the maa.run() method the actors are played (by simulate()) in the reversed order # from the one they had beed activated. So, if we want to play actors in # the original order , we need to reverse the list of actors before activating each actor. actors = maa.actors[:] actors.reverse() for actor in actors: if actor.name.startswith('redraw'): if not self.redrawActor: self.actors.insert(0, actor) self.redrawActor = actor else: self.actors.append(actor) def getAllGeoms(self): geoms = [] for maa in self.maas: _geoms = maa.getAllGeoms() for obj in _geoms: if obj not in geoms: geoms.append(obj) return geoms def getStringRepr(self, pos1=0, pos2=None): """Return a string description of all actions. names, posLabel, posStr, actStr, fullStr <-getStringRepr(pos1=0, pos2=None) names is the list of actor names See Action.getStringRepr for the description of hte other returned values """ allActionsStr = """""" names = [] for maa in self.maas: _names, _posLab, _posStr, _actStr, _allActionsStr=maa.getStringRepr(pos1, pos2) names.extend(_names) allActionsStr += _allActionsStr return names, allActionsStr def afterAnimation_cb(self): # subclass this pass def computeFirstAndLastPosition(self): self.firstPosition = 0 self.lastPosition = 0 for maa in self.maas: mini, maxi = maa.boundingFrames() if mini < self.firstPosition: self.firstPosition=mini if maxi > self.lastPosition: self.lastPosition = maxi def boundingFrames(self, position=0): """ return first and last KF positions for the object """ self.computeFirstAndLastPosition() return self.firstPosition+position, self.lastPosition+position def addScenario(self, name, scenario): self.scenarios[name] = scenario def run(self, forward=True): """ used in DejaVu/scenarioInterface/animationGUI.py animClip.makeAndRunMAA """ if len(self.maas)==0: #print "no actors" return initialize() redraw = self.redrawActor actors = self.actors afterAnimation = self.afterAnimation start = self.firstPosition end = self.lastPosition if redraw: redraw.object.stopAutoRedraw() proc = RedrawActorProcess(redraw) activate(proc, proc.execute(), at=start, prior=True) #print 'activated redraw', for actor in actors: if actor == redraw:continue proc = ActorProcess(actor) activate(proc, proc.execute(), at=start, prior=True) simulate(until=end) #self.currentFrame = self.endFrame if forward: #self.currentFrame = self.endFrame self.currentFrame = end else: self.currentFrame = start # call callback after animation completes for f in afterAnimation: f() #self.afterAnimation_cb() if redraw: redraw.object.startAutoRedraw() def setValuesAt(self, frame, off=0, actor=None): for maa in self.maas: maa.setValuesAt(frame, off, actor) def getSourceCode(self, varname, indent = 0): tabs = " "*indent lines = tabs + """from Scenario2.multipleActorsActions import MAAGroup\n""" lines += tabs +"""%s = MAAGroup(name='%s', startFlag='%s')\n""" %(varname, self.name, self.startFlag) for i, maa in enumerate(self.maas): lines +=maa.getSourceCode("_maa%d"%i, indent=indent) lines += tabs + """%s.AddMaa(_maa%d)\n""" % (varname, i) return lines def configure(self, **kw): pass mgltools-scenario2-1.5.7~rc1~cvs.20130519/Scenario2/playerControls.py0000644000175000017500000004235611565321117024351 0ustar debiandebianfrom mglutil.gui.BasicWidgets.Tk.player import Player from Scenario2.events import PlayerStartEvent, PlayerStopEvent from Scenario2.director import MAADirector from mglutil.util.callback import CallbackFunction import Tkinter, Pmw import sys, os import tkFileDialog from time import strftime import shutil, tarfile class PlayerControls(Player): """Subclasses Player widget. Plays and records animations of the specified director object. PlayerControlsObject <- PlayerControls (director, kw) """ def __init__(self, director, **kw): ## master=None, root=None, ## height=80,width=200, ## currentFrameIndex=0, ## startFrame=0, ## endFrame=0, ## maxFrame=0, ## stepSize=1, ## playMode=0, ## ##afterDelay=50, ## titleStr='Player', ## gotoStartfile = 'go_to_start.gif', ## gotoEndfile = 'go_to_end.gif', ## ff_revfile = 'ff_rev.gif', ## ff_fwdfile = 'ff_fwd.gif', ## stopfile = 'stop.gif', ## playfile = 'play_fwd.gif', ## playRevfile = 'play_rev.gif', ## chmodfile = 'chmod.gif', ## closefile = 'close.gif', ## iconpath = None, ## counter = 1, ## form2=1, gui=1,framerate=15., hasSlider=False): assert isinstance(director, MAADirector) self.director = director kw['gui'] = 1 kw['form2'] = 1 kw['startFrame'] = 0 kw['maxFrame'] = kw['endFrame'] = director.endFrame kw['buttonMask'] = {'setanimB':False, 'closeB':False} kw['currentFrameIndex'] = -1 Player.__init__(self, **kw) if self.hasSlider: slider = self.form.descr.entryByName['slider']['widget'] sliderkw = {'from': self.startFrame-1, 'to': self.maxFrame+1} slider.configure(sliderkw) slider.set(self.currentFrameIndex) self.form.ent2.delete(0,'end') self.form.ent2.insert(0, 'start') self.recording = False if sys.platform == 'darwin': self.codecType = 'mpeg1video' else: self.codecType = 'mpeg2video' self.filename = 'movie.mpg' self.imagefilename = "" self.cameraSize=Tkinter.StringVar() self.cameraSize.set("current") root = self.root screenw, screenh = root.winfo_screenwidth(), root.winfo_screenheight() res = [(320, 240), (640, 480), (1280, 720), (1920, 1080)] self.resolutions = {} for w,h in res: if w <= screenw and h <=screenh: self.resolutions["%dx%d"%(w,h)] = (w, h) nb = self.director._animNB if nb: self.vf=nb().pmv else: self.vf=None self.recordImages = False self.recordDialog = self.createRecordDialog() def createRecordDialog(self): self.balloon = Pmw.Balloon(self.master) dialog = Pmw.Dialog( self.master, buttons=['Record', 'Cancel'], defaultbutton='Record', title="Record Options") dialog.withdraw() # create a frame to hold group to force setting orient and rendering frame = Tkinter.Frame(dialog.interior()) bn = Tkinter.Button(frame, text="Save As:", command = self.browseFile_cb, width= 0, height=0) self.balloon.bind(bn, "Opens file browser") bn.grid(row=0, column=0,sticky='ew') filename = 'movie_'+strftime("%m-%d-%Y_%H:%M")+'.mpg' self.filenamew = fn = Pmw.EntryField(frame, command = self.getFileName_cb, entry_width = 35, value = filename) fn.grid( row=0, column = 1,sticky ='w') #columnspan=2) self.balloon.bind(fn, "type filename" ) self.codecw = Pmw.RadioSelect(frame, labelpos='w', label_text="Codec:", selectmode='single', orient='horizontal', buttontype='radiobutton', command=self.setCodec_cb) for text in ['mpeg1video', 'mpeg2video']: self.codecw.add(text) self.codecw.grid( row=1, column=0, columnspan=2, sticky='ew') self.cameraSizeMenub = None row = 1 if self.vf: listitems = self.resolutions.keys() ## csize = Pmw.ComboBox(frame, labelpos = 'w', ## label_text = 'Camera Size:', ## #entryfield_validate = self.entryValidate, ## entryfield_value="current", ## scrolledlist_items=listitems, ## #fliparrow=1, ## history=False, ## selectioncommand=self.setCameraSize_cb) ## csize.grid( row=2, column=0, columnspan=2, sticky='ew') self.cameraSizeMenub = mb= Tkinter.Menubutton(frame, text='Select camera size...', underline=0, relief='raised') #mb('', toggleMenu, '+') row = row+1 mb.grid( row=row, column=0, columnspan=2, sticky='ew') mb.menu = Tkinter.Menu(mb) for s in self.resolutions.keys(): mb.menu.add_radiobutton(label=s, var=self.cameraSize, value = s, command = self.setCameraSize_cb) mb.menu.add_radiobutton(label="current", var=self.cameraSize, value="current", command = self.setCameraSize_cb) mb['menu'] = mb.menu self.balloon.bind(mb, "Left-Click to select camera size") bn = Tkinter.Button(frame, text="Save frames\nas image files:", command = CallbackFunction(self.browseFile_cb, "IMG"), width= 0, height=0) self.balloon.bind(bn, "Opens file browser") row = row+1 bn.grid(row=row, column=0,sticky='ew') self.imagefilew = fn = Pmw.EntryField(frame, entry_width = 35, value = "") fn.grid( row=row, column = 1,sticky ='w') #columnspan=2) self.balloon.bind(fn, "a name of tarfile that will contain frame images(.img)\nIf name is not specified-images will not be saved." ) frame.pack( fill='x', expand=1) return dialog def browseFile_cb(self, filetype = "MPG"): """callback of the 'Save as' button of the record dialog. Opens a file browser.""" fileDir = os.getcwd() if filetype == "MPG": filename = self.filename filenamew = self.filenamew filetypes = [("MPG", ".mpg")] elif filetype == "IMG": self.imagename = "" filename = self.imagefilename filenamew = self.imagefilew filetypes =[("Image file", ".img")] else: return if filename: if os.path.exists(filename): fileDir = os.path.dirname(os.path.realpath(filename)) else: fileDir = os.getcwd() file = tkFileDialog.asksaveasfilename( filetypes=filetypes, initialdir=fileDir, initialfile=None, title="Save file") if file: if filename != file: filename = file filenamew.setentry(file) def getFileName_cb(self): """ Get file name from the record dialog's entry field.""" name = self.filenamew.get() if name: self.filename = name def getImageFileName_cb(self): """ Get file name from the record dialog's entry field.""" name = self.imagefilew.get() if name: self.imagename = name def setCodec_cb(self, val): """callback of the radioselect widget of the record dialog """ self.codecType = val def setCameraSize_cb(self, object=None): val=self.cameraSize.get() #print "setCameraSize:", val if self.cameraSizeMenub: self.cameraSizeMenub.configure(text = "Camera size: %s" % val) if val != "current": if not self.vf.GUI.isCameraFloating(): self.vf.GUI.floatCamera() if object is not None: camera = object.currentCamera else: camera = self.vf.GUI.VIEWER.currentCamera w, h = self.resolutions[val] if camera.width != w or camera.height != h: camera.Set(width=w, height=h) camera.Redraw() camera.lift() def startRecording_cb(self, event=None): """Callback of the 'record' (red dot) check button """ ifd = self.form.ifd cbVar = ifd.entryByName['recordB']['wcfg']['variable'] entry = ifd.entryByName['recordB']['widget'] recording = cbVar.get() self.recording = recording if recording: # activate and place the dialog just below the button that was clicked: self.codecw.invoke(self.codecType) if event: x = event.x_root y = event.y_root if y + self.master.winfo_height() > self.master.winfo_screenheight(): y = self.master.winfo_screenheight() - self.master.winfo_height() exitStatus = self.recordDialog.activate(geometry = '+%d+%d' % (x, y )) else: exitStatus = self.recordDialog.activate(geometry = '+%d+%d' % (100, 100 )) if exitStatus=='Cancel': self.recording = False ifd = self.form.ifd cbVar = ifd.entryByName['recordB']['wcfg']['variable'] cbVar.set(0) return for viActor in self.director.redrawActors.values(): cam = viActor.object.currentCamera self.setCameraSize_cb(viActor.object) self.getFileName_cb() imagefilename = self.imagefilew.get() if imagefilename: name, ext = os.path.splitext(imagefilename) if ext != ".img": imagefilename = name+".img" self.makeImageDir(imagefilename) self.recordImages = True else: self.recordImages = False self.imagefilename=imagefilename #cam.setVideoOutputFile('movie_'+cam.uniqID+'.mpg') cam.setVideoOutputFile(self.filename) cam.setVideoParameters(outCodec=self.codecType) cam.nbRecordedframes = 0 self.Play_cb() #print 'Recording', self.recording, self.stop def stopRecording_cb(self, event=None): """Stops camera recording. """ if not self.recording: return self.recording = False for viActor in self.director.redrawActors.values(): cam = viActor.object.currentCamera cam.stop() print 'Recorded', cam.nbRecordedframes ifd = self.form.ifd cbVar = ifd.entryByName['recordB']['wcfg']['variable'] cbVar.set(0) if self.recordImages: self.recordImages = False cwd = os.getcwd() if os.path.exists(self.imageFolder): bname = os.path.basename(self.imageFolder) tar = tarfile.open(self.imagefilename, "w:gz") folder = os.path.dirname(self.imageFolder) os.chdir(folder) tar.add(bname) tar.close() os.chdir(cwd) shutil.rmtree(folder) #print 'Recording', self.recording def play(self, framerate=None,event=None): """this method is called by Play_cb()-the callback of the 'play' buttons """ self.director.stopViewersAutoRedraw() self.director.dispatchEvent(PlayerStartEvent(0)) #print 'in play() Recording', self.recording, self.stop ## for i, viActor in enumerate(self.director.redrawActors.values()): ## cam = viActor.object.currentCamera ## if self.recording: ## #cam.setVideoOutputFile('movie_'+cam.uniqID+'.mpg') ## from time import strftime ## cam.setVideoOutputFile('movie_'+strftime("%m-%d-%Y_%H:%M")+'.mpg') ## cam.setVideoParameters() ## # don;t set recording else viewer redraw will record frames ## # the frames are recorded explicitely in nextFrame() ## #cam.videoRecordingStatus = 'recording' ## cam.nbRecordedframes = 0 Player.play(self, framerate, event) for i, viActor in enumerate(self.director.redrawActors.values()): cam = viActor.object.currentCamera if self.recording: self.stopRecording_cb() self.director.dispatchEvent(PlayerStopEvent(-1)) self.director.startViewersAutoRedraw() if self.currentFrameIndex == self.maxFrame: #self.director.afterAnimationCb() self.GoToEnd_cb() elif self.currentFrameIndex == self.startFrame: self.GoToStart_cb() def nextFrame(self, id): """Overrides Player.nextFrame() method. Actually displays the next frame and upades the slider widget of the player """ try: # id can be a string 'start' or 'end' id = int(id) except: return if id == self.currentFrameIndex: return if self.hasCounter and self.gui: self.form.ent2.delete(0,'end') if id < 0: self.form.ent2.insert(0, 'start') else: self.form.ent2.insert(0, str(id)) if self.hasSlider: self.form.ifd.entryByName['slider']['widget'].set(id) self.currentFrameIndex = id if id < 0: return self.director.setValuesAt(id) self.currentFrameIndex = id self.director.viewerRedraw() if self.recording: for i, viActor in enumerate(self.director.redrawActors.values()): cam = viActor.object.currentCamera imfile = None if self.recordImages: nn = len(str(self.director.endFrame))+1 fstr = "%"+"0%dd.png" % (nn,) imfilename = fstr%(id+1,) imfile = os.path.join(self.imageFolder, imfilename) cam.recordFrame(force=True, imageFile=imfile) def update(self): """call in response to addMaaEvents inplemented in gui.Tk.sequenceAnimator.py """ #print "update" self.startFrame = 0 self.maxFrame = self.endFrame = self.targetFrame = self.director.endFrame-1 if self.hasSlider: sliderWidget = self.form.ifd.entryByName['slider']['widget'] sliderWidget.configure(to=self.maxFrame+1) def GoToStart_cb(self, event=None): """Callback of '|<<' button . Sets the player to 'start' frame.""" #print "GoToStart_cb", self.startFrame, self.currentFrameIndex self.currentFrameIndex = self.startFrame-1 self.oneDirection = 0 if self.hasCounter and self.gui: self.form.ent2.delete(0,'end') self.form.ent2.insert(0, 'start') if self.hasSlider: self.form.ifd.entryByName['slider']['widget'].set(self.startFrame-1) def GoToEnd_cb(self, event=None): """Callback of '>>|' button. Sets the player to 'end' frame. """ #print 'GoToEnd' id = self.currentFrameIndex = self.maxFrame+1 self.oneDirection = 0 if self.hasCounter and self.gui: self.form.ent2.delete(0,'end') self.form.ent2.insert(0, 'end') if self.hasSlider: self.form.ifd.entryByName['slider']['widget'].set(id) def makeImageDir(self, filename): import tempfile folder = tempfile.mktemp() basename = os.path.basename(filename) name, ext = os.path.splitext(basename) imageFolder = os.path.join(folder, name) print 'creating folder', imageFolder os.mkdir(folder) os.mkdir(imageFolder) #self.recordImages = True self.imageFolder=imageFolder def getImageFiles(self, filename): if not os.path.exists(filename): print "File %s does not exist" % filename return import tempfile basename = os.path.basename(filename) name, ext = os.path.splitext(basename) folder = tempfile.mktemp() tar = tarfile.open(filename) tar.extractall(path=folder) return os.path.join(folder, name) mgltools-scenario2-1.5.7~rc1~cvs.20130519/version.py0000644000175000017500000000002011475262450021153 0ustar debiandebianVERSION="1.5.6" mgltools-scenario2-1.5.7~rc1~cvs.20130519/MANIFEST.in0000644000175000017500000000047611450734304020664 0ustar debiandebianinclude MANIFEST.in include version.py include Scenario2/CVS/* include Scenario2/gui/CVS/* include Scenario2/gui/Tk/CVS/* include Scenario2/Icons/32x32/* include Scenario2/Icons/32x32/CVS/* include Scenario2/Icons/64x64/* include Scenario2/Icons/64x64/CVS/* include Scenario2/Icons/CVS/* include Scenario2/Icons/*