PK YN meta.xmltxuanjianXMindR3.7.8.201807240049231483#FFFFFFPK PK YN content.xmlBB刷新应用上下文
AbstractApplicationContext.refresh()准备刷新阶段
AbstractApplicationContext.prepareRefresh()记录容器启动时间,设置active/closed状态,获取Environment并验证需要的属性等验证需要的属性,
PropertySourcesPropertyResolver.validateRequiredProperties()占位符替换方法,
PropertyPlaceholderHelper.replacePlaceholders(String, PlaceholderResolver )刷新内部的BeanFactory,
AbstractApplicationContext.obtainFreshBeanFactory()刷新BeanFactory,
AbstractRefreshableApplicationContext.refreshBeanFactory()如果之前存在BeanFactory,则销毁原BeanFactory中的所有单例缓存
AbstractApplicationContext.destroyBeans()
DefaultListableBeanFactory.destroySingletons()创建BeanFactory(DefaultListableBeanFactory)
AbstractRefreshableApplicationContext.createBeanFactory()自定义BeanFactory的配置(是否允许BeanDefinition的覆盖,允许循环引用)
AbstractRefreshableApplicationContext.customizeBeanFactory()从xml等Resource处加载BeanDefinitions,并注册到BeanFactory。
AbstractXmlApplicationContext.loadBeanDefinitions(DefaultListableBeanFactory)使用XmlBeanDefinitionReader加载BeanDefinitions
AbstractXmlApplicationContext.loadBeanDefinitions(XmlBeanDefinitionReader)从指定的Resource(xml资源)处加载BeanDefinitions
XmlBeanDefinitionReader.loadBeanDefinitions(Resource)真正地从指定的xml文件处加载BeanDefinitions
XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource, Resource)注册包含在Docuemnt对象中的BeanDefinitions
XmlBeanDefinitionReader.registerBeanDefinitions(Document, Resource)根据"spring-beans" xsd文件,解析BeanDefinitions
DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(Document, XmlReaderContext )注册在给定root元素内的BeanDefinitions
DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(Element root)root节点"beans"下的子节点可以分为①默认命名空间的节点,即"import", "alias", "bean", "beans"等,由parseDefaultElement(Element, BeanDefinitionParserDelegate)解析;②自定义命名空间的节点,比如"aop", "context", "mvc"等,由BeanDefinitionParserDelegate.parseCustomElement(Element)解析。
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(Element, BeanDefinitionParserDelegate)BeanDefinitionParserDelegate.parseCustomElement(Element),参见NamespaceHandler、NamespaceHandlerResolver。处理"import", "alias", "bean", "beans"四个节点的解析
DefaultBeanDefinitionDocumentReader.parseDefaultElement(Element, BeanDefinitionParserDelegate)由BeanDefinitionParserDelegate执行真正的"bean"节点解析工作,得到BeanDefinition后注册到BeanDefinitionRegistry(DefaultListableBeanFactory实现了此接口)
DefaultBeanDefinitionDocumentReader.processBeanDefinition(Element, BeanDefinitionParserDelegate )①解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element)解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, BeanDefinition)将<bean>元素解析成BeanDefinition(GenericBeanDefinition)
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, String, BeanDefinition)解析<meta/>子元素解析<lookup-method/>子元素解析<replaced-method>子元素解析<constructor-arg>子元素解析<property/>子元素解析<qualifier/>子元素②注册BeanDefinition到BeanFactory
DefaultListableBeanFactory.registerBeanDefinition(String beanName, BeanDefinition beanDefinition)检查是否存在相同beanName的BeanDefinition将BeanDefinition存入Map<String, BeanDefinition> beanDefinitionMap注册别名
SimpleAliasRegistry.registerAlias(String name, String alias)③发送BeanDefinition注册事件
ReaderContext.fireComponentRegistered(ComponentDefinition)获取BeanFactory,
AbstractRefreshableApplicationContext.getBeanFactory()finishBeanFactoryInitializationpreInstantiateSingletonsAbstractBeanFactory.getBean(String name)AbstractBeanFactory.doGetBean(String name, Class<T> requiredType, Object[] args, boolean typeCheckOnly)DefaultSingletonBeanRegistry.getSingleton(String beanName)isSingletonCurrentlyInCreationgetObjectForBeanInstanceDefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory<?>)AbstractAutowireCapableBeanFactory.createBean(String beanName, RootBeanDefinition mbd, Object[] args)resolveBeanClassRootBeanDefinition.prepareMethodOverridesdoCreateBean1.createBeanInstance实例化BeaninstantiateUsingFactoryMethod 通过工厂方法实例化BeanautowireConstructor通过构造器注入实例化BeaninstantiateBean通过无参构造器实例化BeanInstantiationStrategy.instantiate(RootBeanDefinition, java.lang.String, BeanFactory)BeanUtils.instantiateClass(constructorToUse);instantiateWithMethodInjection(bd, beanName, owner) CGLib实例化对象,创建代理2.populateBean 填充属性applyPropertyValuesresolveValueIfNecessary3.initializeBean 初始化Bean(应用BeanPostprocessors/InitializingBean/init method)等ClassPathXmlApplicationContext3画布 1初始化举例说明<bean>元素的解析,其他见importBeanDefinitionResource()、
processAliasRegistration()、doRegisterBeanDefinitions()PKBQB B PK YN
styles.xmlUPKgβ PK YN 0 extensions/org.xmind.ui.presentation.stories.xml CPKK[] PK YN 2 Revisions/39p6g3aqtporact2dqjt2cni76/revisions.xml"PK* PK YN = Revisions/39p6g3aqtporact2dqjt2cni76/rev-68-1560068489228.xmlCT刷新应用上下文
AbstractApplicationContext.refresh()准备刷新阶段
AbstractApplicationContext.prepareRefresh()记录容器启动时间,设置active/closed状态,获取Environment并验证需要的属性等验证需要的属性,
PropertySourcesPropertyResolver.validateRequiredProperties()占位符替换方法,
PropertyPlaceholderHelper.replacePlaceholders(String, PlaceholderResolver )刷新内部的BeanFactory,
AbstractApplicationContext.obtainFreshBeanFactory()刷新BeanFactory,
AbstractRefreshableApplicationContext.refreshBeanFactory()如果之前存在BeanFactory,则销毁原BeanFactory中的所有单例缓存
AbstractApplicationContext.destroyBeans()
DefaultListableBeanFactory.destroySingletons()创建BeanFactory(DefaultListableBeanFactory)
AbstractRefreshableApplicationContext.createBeanFactory()自定义BeanFactory的配置(是否允许BeanDefinition的覆盖,允许循环引用)
AbstractRefreshableApplicationContext.customizeBeanFactory()从xml等Resource处加载BeanDefinitions,并注册到BeanFactory。
AbstractXmlApplicationContext.loadBeanDefinitions(DefaultListableBeanFactory)使用XmlBeanDefinitionReader加载BeanDefinitions
AbstractXmlApplicationContext.loadBeanDefinitions(XmlBeanDefinitionReader)从指定的Resource(xml资源)处加载BeanDefinitions
XmlBeanDefinitionReader.loadBeanDefinitions(Resource)真正地从指定的xml文件处加载BeanDefinitions
XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource, Resource)注册包含在Docuemnt对象中的BeanDefinitions
XmlBeanDefinitionReader.registerBeanDefinitions(Document, Resource)根据"spring-beans" xsd文件,解析BeanDefinitions
DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(Document, XmlReaderContext )注册在给定root元素内的BeanDefinitions
DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(Element root)root节点"beans"下的子节点可以分为①默认命名空间的节点,即"import", "alias", "bean", "beans"等,由parseDefaultElement(Element, BeanDefinitionParserDelegate)解析;②自定义命名空间的节点,比如"aop", "context", "mvc"等,由BeanDefinitionParserDelegate.parseCustomElement(Element)解析。
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(Element, BeanDefinitionParserDelegate)BeanDefinitionParserDelegate.parseCustomElement(Element),参见NamespaceHandler、NamespaceHandlerResolver。处理"import", "alias", "bean", "beans"四个节点的解析
DefaultBeanDefinitionDocumentReader.parseDefaultElement(Element, BeanDefinitionParserDelegate)由BeanDefinitionParserDelegate执行真正的"bean"节点解析工作,得到BeanDefinition后注册到BeanDefinitionRegistry(DefaultListableBeanFactory实现了此接口)
DefaultBeanDefinitionDocumentReader.processBeanDefinition(Element, BeanDefinitionParserDelegate )①解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element)解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, BeanDefinition)将<bean>元素解析成BeanDefinition(GenericBeanDefinition)
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, String, BeanDefinition)解析<meta/>子元素解析<lookup-method/>子元素解析<replaced-method>子元素解析<constructor-arg>子元素解析<property/>子元素解析<qualifier/>子元素②注册BeanDefinition到BeanFactory
DefaultListableBeanFactory.registerBeanDefinition(String beanName, BeanDefinition beanDefinition)检查是否存在相同beanName的BeanDefinition将BeanDefinition存入Map<String, BeanDefinition> beanDefinitionMap注册别名
SimpleAliasRegistry.registerAlias(String name, String alias)③发送BeanDefinition注册事件
ReaderContext.fireComponentRegistered(ComponentDefinition)获取BeanFactory,
AbstractRefreshableApplicationContext.getBeanFactory()finishBeanFactoryInitializationpreInstantiateSingletonsAbstractBeanFactory.getBean(String name)AbstractBeanFactory.doGetBean(String name, Class<T> requiredType, Object[] args, boolean typeCheckOnly)DefaultSingletonBeanRegistry.getSingleton(String beanName)isSingletonCurrentlyInCreationgetObjectForBeanInstanceDefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory<?>)AbstractAutowireCapableBeanFactory.createBean(String beanName, RootBeanDefinition mbd, Object[] args)resolveBeanClassRootBeanDefinition.prepareMethodOverridesdoCreateBeancreateBeanInstanceinstantiateUsingFactoryMethod通过工厂方法实例化BeanautowireConstructor通过构造器注入实例化BeaninstantiateBean通过无参构造器实例化BeanInstantiationStrategy.instantiate(RootBeanDefinition, java.lang.String, BeanFactory)BeanUtils.instantiateClass(constructorToUse);instantiateWithMethodInjection(bd, beanName, owner) CGLib实例化对象,创建代理populateBeaninitializeBeanClassPathXmlApplicationContext3画布 1初始化举例说明<bean>元素的解析,其他见importBeanDefinitionResource()、
processAliasRegistration()、doRegisterBeanDefinitions()PKһC C PK YN = Revisions/39p6g3aqtporact2dqjt2cni76/rev-78-1560381894009.xmlCI刷新应用上下文
AbstractApplicationContext.refresh()准备刷新阶段
AbstractApplicationContext.prepareRefresh()记录容器启动时间,设置active/closed状态,获取Environment并验证需要的属性等验证需要的属性,
PropertySourcesPropertyResolver.validateRequiredProperties()占位符替换方法,
PropertyPlaceholderHelper.replacePlaceholders(String, PlaceholderResolver )刷新内部的BeanFactory,
AbstractApplicationContext.obtainFreshBeanFactory()刷新BeanFactory,
AbstractRefreshableApplicationContext.refreshBeanFactory()如果之前存在BeanFactory,则销毁原BeanFactory中的所有单例缓存
AbstractApplicationContext.destroyBeans()
DefaultListableBeanFactory.destroySingletons()创建BeanFactory(DefaultListableBeanFactory)
AbstractRefreshableApplicationContext.createBeanFactory()自定义BeanFactory的配置(是否允许BeanDefinition的覆盖,允许循环引用)
AbstractRefreshableApplicationContext.customizeBeanFactory()从xml等Resource处加载BeanDefinitions,并注册到BeanFactory。
AbstractXmlApplicationContext.loadBeanDefinitions(DefaultListableBeanFactory)使用XmlBeanDefinitionReader加载BeanDefinitions
AbstractXmlApplicationContext.loadBeanDefinitions(XmlBeanDefinitionReader)从指定的Resource(xml资源)处加载BeanDefinitions
XmlBeanDefinitionReader.loadBeanDefinitions(Resource)真正地从指定的xml文件处加载BeanDefinitions
XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource, Resource)注册包含在Docuemnt对象中的BeanDefinitions
XmlBeanDefinitionReader.registerBeanDefinitions(Document, Resource)根据"spring-beans" xsd文件,解析BeanDefinitions
DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(Document, XmlReaderContext )注册在给定root元素内的BeanDefinitions
DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(Element root)root节点"beans"下的子节点可以分为①默认命名空间的节点,即"import", "alias", "bean", "beans"等,由parseDefaultElement(Element, BeanDefinitionParserDelegate)解析;②自定义命名空间的节点,比如"aop", "context", "mvc"等,由BeanDefinitionParserDelegate.parseCustomElement(Element)解析。
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(Element, BeanDefinitionParserDelegate)BeanDefinitionParserDelegate.parseCustomElement(Element),参见NamespaceHandler、NamespaceHandlerResolver。处理"import", "alias", "bean", "beans"四个节点的解析
DefaultBeanDefinitionDocumentReader.parseDefaultElement(Element, BeanDefinitionParserDelegate)由BeanDefinitionParserDelegate执行真正的"bean"节点解析工作,得到BeanDefinition后注册到BeanDefinitionRegistry(DefaultListableBeanFactory实现了此接口)
DefaultBeanDefinitionDocumentReader.processBeanDefinition(Element, BeanDefinitionParserDelegate )①解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element)解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, BeanDefinition)将<bean>元素解析成BeanDefinition(GenericBeanDefinition)
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, String, BeanDefinition)解析<meta/>子元素解析<lookup-method/>子元素解析<replaced-method>子元素解析<constructor-arg>子元素解析<property/>子元素解析<qualifier/>子元素②注册BeanDefinition到BeanFactory
DefaultListableBeanFactory.registerBeanDefinition(String beanName, BeanDefinition beanDefinition)检查是否存在相同beanName的BeanDefinition将BeanDefinition存入Map<String, BeanDefinition> beanDefinitionMap注册别名
SimpleAliasRegistry.registerAlias(String name, String alias)③发送BeanDefinition注册事件
ReaderContext.fireComponentRegistered(ComponentDefinition)获取BeanFactory,
AbstractRefreshableApplicationContext.getBeanFactory()finishBeanFactoryInitializationpreInstantiateSingletonsAbstractBeanFactory.getBean(String name)AbstractBeanFactory.doGetBean(String name, Class<T> requiredType, Object[] args, boolean typeCheckOnly)DefaultSingletonBeanRegistry.getSingleton(String beanName)isSingletonCurrentlyInCreationgetObjectForBeanInstanceDefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory<?>)AbstractAutowireCapableBeanFactory.createBean(String beanName, RootBeanDefinition mbd, Object[] args)resolveBeanClassRootBeanDefinition.prepareMethodOverridesdoCreateBean1.createBeanInstance实例化BeaninstantiateUsingFactoryMethod 通过工厂方法实例化BeanautowireConstructor通过构造器注入实例化BeaninstantiateBean通过无参构造器实例化BeanInstantiationStrategy.instantiate(RootBeanDefinition, java.lang.String, BeanFactory)BeanUtils.instantiateClass(constructorToUse);instantiateWithMethodInjection(bd, beanName, owner) CGLib实例化对象,创建代理2.populateBean 填充属性applyPropertyValuesresolveValueIfNecessary3.initializeBean 初始化BeanClassPathXmlApplicationContext3画布 1初始化举例说明<bean>元素的解析,其他见importBeanDefinitionResource()、
processAliasRegistration()、doRegisterBeanDefinitions()PK+kC C PK YN = Revisions/39p6g3aqtporact2dqjt2cni76/rev-85-1560694250284.xmlhB刷新应用上下文
AbstractApplicationContext.refresh()准备刷新阶段
AbstractApplicationContext.prepareRefresh()记录容器启动时间,设置active/closed状态,获取Environment并验证需要的属性等验证需要的属性,
PropertySourcesPropertyResolver.validateRequiredProperties()占位符替换方法,
PropertyPlaceholderHelper.replacePlaceholders(String, PlaceholderResolver )刷新内部的BeanFactory,
AbstractApplicationContext.obtainFreshBeanFactory()刷新BeanFactory,
AbstractRefreshableApplicationContext.refreshBeanFactory()如果之前存在BeanFactory,则销毁原BeanFactory中的所有单例缓存
AbstractApplicationContext.destroyBeans()
DefaultListableBeanFactory.destroySingletons()创建BeanFactory(DefaultListableBeanFactory)
AbstractRefreshableApplicationContext.createBeanFactory()自定义BeanFactory的配置(是否允许BeanDefinition的覆盖,允许循环引用)
AbstractRefreshableApplicationContext.customizeBeanFactory()从xml等Resource处加载BeanDefinitions,并注册到BeanFactory。
AbstractXmlApplicationContext.loadBeanDefinitions(DefaultListableBeanFactory)使用XmlBeanDefinitionReader加载BeanDefinitions
AbstractXmlApplicationContext.loadBeanDefinitions(XmlBeanDefinitionReader)从指定的Resource(xml资源)处加载BeanDefinitions
XmlBeanDefinitionReader.loadBeanDefinitions(Resource)真正地从指定的xml文件处加载BeanDefinitions
XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource, Resource)注册包含在Docuemnt对象中的BeanDefinitions
XmlBeanDefinitionReader.registerBeanDefinitions(Document, Resource)根据"spring-beans" xsd文件,解析BeanDefinitions
DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(Document, XmlReaderContext )注册在给定root元素内的BeanDefinitions
DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(Element root)root节点"beans"下的子节点可以分为①默认命名空间的节点,即"import", "alias", "bean", "beans"等,由parseDefaultElement(Element, BeanDefinitionParserDelegate)解析;②自定义命名空间的节点,比如"aop", "context", "mvc"等,由BeanDefinitionParserDelegate.parseCustomElement(Element)解析。
DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(Element, BeanDefinitionParserDelegate)BeanDefinitionParserDelegate.parseCustomElement(Element),参见NamespaceHandler、NamespaceHandlerResolver。处理"import", "alias", "bean", "beans"四个节点的解析
DefaultBeanDefinitionDocumentReader.parseDefaultElement(Element, BeanDefinitionParserDelegate)由BeanDefinitionParserDelegate执行真正的"bean"节点解析工作,得到BeanDefinition后注册到BeanDefinitionRegistry(DefaultListableBeanFactory实现了此接口)
DefaultBeanDefinitionDocumentReader.processBeanDefinition(Element, BeanDefinitionParserDelegate )①解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element)解析<bean>元素为BeanDefinition,并包装为BeanDefinitionHolder
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, BeanDefinition)将<bean>元素解析成BeanDefinition(GenericBeanDefinition)
BeanDefinitionParserDelegate.parseBeanDefinitionElement(Element, String, BeanDefinition)解析<meta/>子元素解析<lookup-method/>子元素解析<replaced-method>子元素解析<constructor-arg>子元素解析<property/>子元素解析<qualifier/>子元素②注册BeanDefinition到BeanFactory
DefaultListableBeanFactory.registerBeanDefinition(String beanName, BeanDefinition beanDefinition)检查是否存在相同beanName的BeanDefinition将BeanDefinition存入Map<String, BeanDefinition> beanDefinitionMap注册别名
SimpleAliasRegistry.registerAlias(String name, String alias)③发送BeanDefinition注册事件
ReaderContext.fireComponentRegistered(ComponentDefinition)获取BeanFactory,
AbstractRefreshableApplicationContext.getBeanFactory()finishBeanFactoryInitializationpreInstantiateSingletonsAbstractBeanFactory.getBean(String name)AbstractBeanFactory.doGetBean(String name, Class<T> requiredType, Object[] args, boolean typeCheckOnly)DefaultSingletonBeanRegistry.getSingleton(String beanName)isSingletonCurrentlyInCreationgetObjectForBeanInstanceDefaultSingletonBeanRegistry.getSingleton(String, ObjectFactory<?>)AbstractAutowireCapableBeanFactory.createBean(String beanName, RootBeanDefinition mbd, Object[] args)resolveBeanClassRootBeanDefinition.prepareMethodOverridesdoCreateBean1.createBeanInstance实例化BeaninstantiateUsingFactoryMethod 通过工厂方法实例化BeanautowireConstructor通过构造器注入实例化BeaninstantiateBean通过无参构造器实例化BeanInstantiationStrategy.instantiate(RootBeanDefinition, java.lang.String, BeanFactory)BeanUtils.instantiateClass(constructorToUse);instantiateWithMethodInjection(bd, beanName, owner) CGLib实例化对象,创建代理2.populateBean 填充属性applyPropertyValuesresolveValueIfNecessary3.initializeBean 初始化Bean(应用BeanPostprocessors/InitializingBean/init method)等ClassPathXmlApplicationContext3画布 1初始化举例说明<bean>元素的解析,其他见importBeanDefinitionResource()、
processAliasRegistration()、doRegisterBeanDefinitions()PKYmmB hB PK YN Thumbnails/thumbnail.png PNG
IHDR jng 0+IDATxgsTYuռFLO?wzk !G{{ ym{ܼ5U@8qν^"X?v 8 _ ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E( *B P
v P T " ` ; @E(,??tt4hl$ywppG]]]rm)ő쾾PXX(庨H%888::LdgffeFVvF]%t}}}YYD%𭭭7Y]@^^2U, 'A dmmmUUU{;%۷ogddH433Ey7~$Ǜ
Hcss3''ϯvff?Ñ#G^077788[h4}}}œKKKCZV(/絵N%\ˊFGG>}s}}}+++ Sw111rsVMMMKKKoݺ%^x |}}:::$IR\i٭'vuu.FFF g%֖L|Qŋ==="iTTTIX'''rϟ?1%q$s碢b]&N%'O^~ٳ555rˣ'ɓ'@Y< Kfjjw-Hwww}}}==]wܱrvv...NOO?wdeeMOO~rss~T777//W:::KKwww``Di[2Ӄ&''oo#IwޕϟK0114^zu}vWDDtƀ+W\|Jsss!!!sxxX133khhIV={ɓ/^<|Dwpp(,,,mmm~!cO8!6''ԩSFFFF]E)=z$7V۷Ϝ9#wLKDϗ!wO"d/^{%YfK\WWW[XX\ܕ$cfJd.
?\pryyx x7
v %S*h.]:rȽ{###/\x٤$ccc}}PVbaa|ӳ,+++!!;d:(}$tqq1%'Nܸq@uٵdeeegggkk$S_FMMM
HʊΜ9#iGEE߿WÃ%sVFޗ/_}{kkK)Y[[w333J7KKK,)ɭ[[[sppP%
Mn0ή[nI2
{t.7A&urryhv}(ʓ(ÇJJJ?S/%ݚ);YiHH< 2\455]z5##C%|$ |Ɋݓ###kkk322ùsϜ9#9997nppp
>>>VVVJܿ?++W.$tQrۏ?ޛ"ֶROOO$088KOOϱ1IRI
IUbJKMM[]]꺴TZZ*9Ȋd겲2 (k "$L4??ܜ"ky䉥eHHHOOnoͮDR 9..N.ï]&˗SSS$V-//W$[W^566ʅL$Iʅܺϟ˪ufH(YL'7P(\Dd\K&QQQ111d%7''t6662\ckkܓ y~~~2JR!~G//iKw%_ }( k{{wkOsTR P
v P/NvluϢqT?ǧ=l |](062-nGy t(l9, ; 8*&: A 흄u Z p\(hۿʊr/--o[^^֝
;+6\ۻqW}CSkrjQ7o\__ohh
xbJJJppsSN